<?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>236697</bug_id>
          
          <creation_ts>2022-02-16 01:57:45 -0800</creation_ts>
          <short_desc>[WebGPU] Integrate Metal-cpp</short_desc>
          <delta_ts>2022-05-20 18:05:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</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>ap</cc>
    
    <cc>dino</cc>
    
    <cc>emw</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>rmorisset</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1842186</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-16 01:57:45 -0800</bug_when>
    <thetext>[WebGPU] Integrate Metal-cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842187</commentid>
    <comment_count>1</comment_count>
      <attachid>452163</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-16 02:00:02 -0800</bug_when>
    <thetext>Created attachment 452163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842645</commentid>
    <comment_count>2</comment_count>
      <attachid>452284</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-16 18:26:24 -0800</bug_when>
    <thetext>Created attachment 452284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842674</commentid>
    <comment_count>3</comment_count>
      <attachid>452297</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-16 20:15:43 -0800</bug_when>
    <thetext>Created attachment 452297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842824</commentid>
    <comment_count>4</comment_count>
      <attachid>452297</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-17 04:48:01 -0800</bug_when>
    <thetext>Comment on attachment 452297
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843180</commentid>
    <comment_count>5</comment_count>
      <attachid>452446</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-17 16:54:46 -0800</bug_when>
    <thetext>Created attachment 452446
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843184</commentid>
    <comment_count>6</comment_count>
      <attachid>452447</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-17 17:00:41 -0800</bug_when>
    <thetext>Created attachment 452447
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843216</commentid>
    <comment_count>7</comment_count>
      <attachid>452458</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-17 17:50:05 -0800</bug_when>
    <thetext>Created attachment 452458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843227</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-17 18:28:50 -0800</bug_when>
    <thetext>Oh. Metal-cpp isn&apos;t supported on armv7k. WebKit does support armv7k, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843262</commentid>
    <comment_count>9</comment_count>
      <attachid>452475</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-17 20:06:43 -0800</bug_when>
    <thetext>Created attachment 452475
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843454</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-18 09:27:10 -0800</bug_when>
    <thetext>1. TAPI is giving errors about how there aren&apos;t actually any symbols for armv7k. I can fix this by adding a dummy symbol.
2. If I add a dummy symbol, I have to have the set of symbols in the headers match the set of symbols in the dylib. This means I have to add __ARM_ARCH checks in the headers.
3. Not only do I have to add checks in the headers, but I have to add the check in _every_ header, because TAPI looks at _all_ the headers, not just the umbrella header. This means I&apos;d have to modify the wgpu shared header, which is something I&apos;d rather not do (e.g. every time it gets updated I&apos;d have to re-apply the local modifications)

So, the fact that I&apos;d need
- To modify the wgpu shared header
- A source file and a dummy header that includes a dummy symbol which is unused
- Custom EXCLUDED_SOURCE_FILE_NAMES Xcode variables, specialized for different architectures
I think is a bridge too far. I don&apos;t think I should commit this until there&apos;s some better way of doing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845054</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-23 01:58:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/89344870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851657</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-15 22:39:36 -0700</bug_when>
    <thetext>This patch is on hold because WebKit builds on armv7k but Metal-cpp doesn&apos;t support 32-bit platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865778</commentid>
    <comment_count>13</comment_count>
      <attachid>458665</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-05-02 00:18:33 -0700</bug_when>
    <thetext>Created attachment 458665
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870434</commentid>
    <comment_count>14</comment_count>
      <attachid>458665</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2022-05-19 10:12:07 -0700</bug_when>
    <thetext>Comment on attachment 458665
Rebased

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

&gt; Source/WebGPU/WebGPU.xcodeproj/project.pbxproj:1005
&gt; +			shellScript = &quot;mkdir -p ${BUILT_PRODUCTS_DIR}/DerivedSources/WebGPU/metal-cpp/Metal\n\ncd WebGPU/metal-cpp\npython3 ./SingleHeader/MakeSingleHeader.py -o ${BUILT_PRODUCTS_DIR}/DerivedSources/WebGPU/metal-cpp/Metal/Metal.hpp Foundation/Foundation.hpp QuartzCore/QuartzCore.hpp Metal/Metal.hpp\n&quot;;

You can (probably should) use ${SCRIPT_INPUT_FILE_0} and ${SCRIPT_OUTPUT_FILE_0} here.

How long does this script take? It may be useful to skip it for installhdrs and installsrc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870466</commentid>
    <comment_count>15</comment_count>
      <attachid>458665</attachid>
    <who name="Elliott Williams">emw</who>
    <bug_when>2022-05-19 11:13:39 -0700</bug_when>
    <thetext>Comment on attachment 458665
Rebased

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

&gt; Source/WebGPU/Configurations/WebGPU.xcconfig:96
&gt; +HEADERMAP_INCLUDES_PROJECT_HEADERS = NO;

I believe this setting in meaningless in the new build system. Can you remove it and see if it still builds, now that we have migrated over?

&gt;&gt; Source/WebGPU/WebGPU.xcodeproj/project.pbxproj:1005
&gt;&gt; +			shellScript = &quot;mkdir -p ${BUILT_PRODUCTS_DIR}/DerivedSources/WebGPU/metal-cpp/Metal\n\ncd WebGPU/metal-cpp\npython3 ./SingleHeader/MakeSingleHeader.py -o ${BUILT_PRODUCTS_DIR}/DerivedSources/WebGPU/metal-cpp/Metal/Metal.hpp Foundation/Foundation.hpp QuartzCore/QuartzCore.hpp Metal/Metal.hpp\n&quot;;
&gt; 
&gt; You can (probably should) use ${SCRIPT_INPUT_FILE_0} and ${SCRIPT_OUTPUT_FILE_0} here.
&gt; 
&gt; How long does this script take? It may be useful to skip it for installhdrs and installsrc.

I think it would be better to set USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES=YES for this target, and then have an input on the whole `$(SRCROOT)/WebGPU/metal-cpp` directory. Listing every file here is begging for it to get out of sync.

nit: mkdir -p is unnecessary. The build system creates directories for any output path ahead of time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870844</commentid>
    <comment_count>16</comment_count>
      <attachid>458665</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-05-20 15:23:33 -0700</bug_when>
    <thetext>Comment on attachment 458665
Rebased

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

&gt;&gt;&gt; Source/WebGPU/WebGPU.xcodeproj/project.pbxproj:1005
&gt;&gt;&gt; +			shellScript = &quot;mkdir -p ${BUILT_PRODUCTS_DIR}/DerivedSources/WebGPU/metal-cpp/Metal\n\ncd WebGPU/metal-cpp\npython3 ./SingleHeader/MakeSingleHeader.py -o ${BUILT_PRODUCTS_DIR}/DerivedSources/WebGPU/metal-cpp/Metal/Metal.hpp Foundation/Foundation.hpp QuartzCore/QuartzCore.hpp Metal/Metal.hpp\n&quot;;
&gt;&gt; 
&gt;&gt; You can (probably should) use ${SCRIPT_INPUT_FILE_0} and ${SCRIPT_OUTPUT_FILE_0} here.
&gt;&gt; 
&gt;&gt; How long does this script take? It may be useful to skip it for installhdrs and installsrc.
&gt; 
&gt; I think it would be better to set USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES=YES for this target, and then have an input on the whole `$(SRCROOT)/WebGPU/metal-cpp` directory. Listing every file here is begging for it to get out of sync.
&gt; 
&gt; nit: mkdir -p is unnecessary. The build system creates directories for any output path ahead of time.

All good ideas.

The script is pretty much instantaneous:

python3 ./SingleHeader/MakeSingleHeader.py -o ~/tmp/Metal.hpp     0.15s user 0.08s system 76% cpu 0.304 total</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870866</commentid>
    <comment_count>17</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-05-20 16:35:36 -0700</bug_when>
    <thetext>*** Bug 240746 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870885</commentid>
    <comment_count>18</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-05-20 18:05:04 -0700</bug_when>
    <thetext>https://commits.webkit.org/250827@main</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452163</attachid>
            <date>2022-02-16 02:00:02 -0800</date>
            <delta_ts>2022-02-16 18:26:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236697-20220216020000.patch</filename>
            <type>text/plain</type>
            <size>1247957</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDgxZTMwMTUzMzEzNWEwZTM3
NzUzN2EyMDRkNmVmMzBlODY2MjY0MmUuLmMyZDc1MzM1MWViNDk0Y2Q4YTJjYzA1YzExMWIwN2Ni
NjNjMzVkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc3IEBACisyMDIyLTAyLTE2ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW50
ZWdyYXRlIE1ldGFsLWNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2Njk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWV0YWwtY3BwIGlzIEMrKyBiaW5kaW5ncyB0byBNZXRhbCwgY3JlYXRlZCBieSBB
cHBsZS4KKyAgICAgICAgRm9yIG1vcmUgZGV0YWlscywgc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFw
cGxlLmNvbS9tZXRhbC9jcHAvCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJHUFUueGNj
b25maWc6CisgICAgICAgICogV0dTTFVuaXRUZXN0cy9XR1NMTGV4ZXJUZXN0cy5tbToKKyAgICAg
ICAgKiBXZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJHUFUv
QWRhcHRlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1t
LgorICAgICAgICAoV2ViR1BVOjpBZGFwdGVyOjpBZGFwdGVyKToKKyAgICAgICAgKiBXZWJHUFUv
QWRhcHRlci5oOgorICAgICAgICAoV2ViR1BVOjpBZGFwdGVyOjpjcmVhdGUpOgorICAgICAgICAq
IFdlYkdQVS9CaW5kR3JvdXAuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUv
QmluZEdyb3VwLm1tLgorICAgICAgICAqIFdlYkdQVS9CaW5kR3JvdXAuaDoKKyAgICAgICAgKiBX
ZWJHUFUvQmluZEdyb3VwTGF5b3V0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2Vi
R1BVL0JpbmRHcm91cExheW91dC5tbS4KKyAgICAgICAgKiBXZWJHUFUvQmluZEdyb3VwTGF5b3V0
Lmg6CisgICAgICAgICogV2ViR1BVL0J1ZmZlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
R1BVL1dlYkdQVS9CdWZmZXIubW0uCisgICAgICAgICogV2ViR1BVL0J1ZmZlci5oOgorICAgICAg
ICAqIFdlYkdQVS9Db21tYW5kQnVmZmVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbW1hbmRCdWZmZXIubW0uCisgICAgICAgICogV2ViR1BVL0NvbW1hbmRCdWZmZXIu
aDoKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0uCisgICAgICAgICogV2ViR1BVL0Nv
bW1hbmRFbmNvZGVyLmg6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0u
CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5oOgorICAgICAgICAqIFdlYkdQ
VS9Db21wdXRlUGlwZWxpbmUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUv
Q29tcHV0ZVBpcGVsaW5lLm1tLgorICAgICAgICAqIFdlYkdQVS9Db21wdXRlUGlwZWxpbmUuaDoK
KyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJHUFUv
V2ViR1BVL0RldmljZS5tbS4KKyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLmg6CisgICAgICAgICog
V2ViR1BVL0V4cG9ydE1hY3Jvcy5oOgorICAgICAgICAqIFdlYkdQVS9JbnN0YW5jZS5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbS4KKyAgICAgICAgKFdl
YkdQVTo6SW5zdGFuY2U6OnJlcXVlc3RBZGFwdGVyKToKKyAgICAgICAgKHdncHVJbnN0YW5jZVJl
cXVlc3RBZGFwdGVyKToKKyAgICAgICAgKiBXZWJHUFUvSW5zdGFuY2UuaDoKKyAgICAgICAgKiBX
ZWJHUFUvTWV0YWwtY3BwLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUvU2Ft
cGxlci5tbS4KKyAgICAgICAgKiBXZWJHUFUvUGlwZWxpbmVMYXlvdXQuY3BwOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQubW0uCisgICAgICAgICogV2Vi
R1BVL1BpcGVsaW5lTGF5b3V0Lmg6CisgICAgICAgICogV2ViR1BVL1F1ZXJ5U2V0LmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0Lm1tLgorICAgICAgICAqIFdl
YkdQVS9RdWVyeVNldC5oOgorICAgICAgICAqIFdlYkdQVS9RdWV1ZS5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbS4KKyAgICAgICAgKiBXZWJHUFUvUXVldWUu
aDoKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyQnVuZGxlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5tbS4KKyAgICAgICAgKiBXZWJHUFUvUmVuZGVy
QnVuZGxlLmg6CisgICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuY3BwOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbS4KKyAg
ICAgICAgKiBXZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oOgorICAgICAgICAqIFdlYkdQVS9S
ZW5kZXJQYXNzRW5jb2Rlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9S
ZW5kZXJQYXNzRW5jb2Rlci5tbS4KKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIu
aDoKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyUGlwZWxpbmUuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0uCisgICAgICAgICogV2ViR1BVL1Jl
bmRlclBpcGVsaW5lLmg6CisgICAgICAgICogV2ViR1BVL1NhbXBsZXIuY3BwOiBSZW5hbWVkIGZy
b20gU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbS4KKyAgICAgICAgKiBXZWJHUFUvU2Ft
cGxlci5oOgorICAgICAgICAqIFdlYkdQVS9TaGFkZXJNb2R1bGUuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLm1tLgorICAgICAgICAqIFdlYkdQVS9T
aGFkZXJNb2R1bGUuaDoKKyAgICAgICAgKiBXZWJHUFUvU3VyZmFjZS5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLm1tLgorICAgICAgICAqIFdlYkdQVS9TdXJm
YWNlLmg6CisgICAgICAgICogV2ViR1BVL1N3YXBDaGFpbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hhaW4ubW0uCisgICAgICAgICogV2ViR1BVL1N3YXBDaGFp
bi5oOgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJHUFUvV2ViR1BVL1RleHR1cmUubW0uCisgICAgICAgICogV2ViR1BVL1RleHR1cmUuaDoKKyAg
ICAgICAgKiBXZWJHUFUvVGV4dHVyZVZpZXcuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZVZpZXcubW0uCisgICAgICAgICogV2ViR1BVL1RleHR1cmVWaWV3Lmg6
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNBcnJheS5ocHA6
IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0F1dG9yZWxl
YXNlUG9vbC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU0J1bmRsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU0RhdGEuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNEYXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3Vu
ZGF0aW9uL05TRGVmaW5lcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAv
Rm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90aWZpY2F0aW9uLmhwcDogQWRkZWQuCisg
ICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTnVtYmVyLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqQ1J1bnRpbWUuaHBw
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNPYmplY3Qu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQcml2
YXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
UHJvY2Vzc0luZm8uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNSYW5nZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9OU1N0cmluZy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAv
Rm91bmRhdGlvbi9OU1R5cGVzLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TVVJMLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9MSUNFTlNFLnR4dDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcDog
QWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVUeXBlcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMQXJndW1lbnQuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEFyZ3VtZW50RW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQmluYXJ5QXJjaGl2ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAg
ICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFzcy5ocHA6IEFkZGVkLgorICAg
ICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhwcDogQWRkZWQuCisgICAg
ICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlTWFuYWdlci5ocHA6IEFkZGVk
LgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZVNjb3BlLmhwcDog
QWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kQnVmZmVy
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5k
RW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
Q29tbWFuZFF1ZXVlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvdW50ZXJzLmhwcDogQWRkZWQuCisgICAg
ICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhwcDogQWRkZWQuCisgICAg
ICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERldmljZS5ocHA6IEFkZGVkLgor
ICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHJhd2FibGUuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFtaWNMaWJyYXJ5LmhwcDog
QWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExFdmVudC5ocHA6IEFk
ZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRmVuY2UuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uQ29uc3RhbnRW
YWx1ZXMuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1
bmN0aW9uRGVzY3JpcHRvci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvblN0aXRjaGluZy5ocHA6IEFkZGVkLgorICAgICAg
ICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJpZGdlLmhwcDogQWRkZWQuCisg
ICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFwLmhwcDogQWRkZWQuCisgICAg
ICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBw
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29t
bWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTExpYnJhcnkuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHA6IEFkZGVkLgorICAgICAg
ICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rl
ci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGlwZWxp
bmUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBpeGVs
Rm9ybWF0LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQ
cml2YXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExS
YXN0ZXJpemF0aW9uUmF0ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBhc3MuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhwcDogQWRkZWQuCisgICAg
ICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZS5ocHA6IEFkZGVkLgorICAg
ICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNv
ZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNv
dXJjZVN0YXRlUGFzcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMU2FtcGxlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFRleHR1cmUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcDogQWRkZWQuCisgICAg
ICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHA6
IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTWV0YWwuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FEZWZpbmVzLmhwcDog
QWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBTWV0YWxEcmF3
YWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9D
QVByaXZhdGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNv
cmUvUXVhcnR6Q29yZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvUkVB
RE1FLm1kOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL1NpbmdsZUhlYWRlci9N
YWtlU2luZ2xlSGVhZGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEhlYWRlclByZWZpeCk6CisgICAg
ICAgIChIZWFkZXJQcmVmaXguX19pbml0X18pOgorICAgICAgICAoSGVhZGVyUHJlZml4Ll9fc3Ry
X18pOgorICAgICAgICAoSGVhZGVyUHJlZml4Ll9fZ2V0X2NvbW1pdF9oYXNoKToKKyAgICAgICAg
KEhlYWRlclByZWZpeC5fX2dldF9jb21taXRfc3RyaW5nKToKKyAgICAgICAgKEhlYWRlclByZWZp
eC5fX2dldF9kYXRlX3N0cmluZyk6CisgICAgICAgIChfX21ldGFfZGF0YV9zdHJpbmcpOgorICAg
ICAgICAoU2luZ2xlSGVhZGVyKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX2luaXRfXyk6Cisg
ICAgICAgIChTaW5nbGVIZWFkZXIuX19zdHJfXyk6CisgICAgICAgIChTaW5nbGVIZWFkZXIuYXBw
ZW5kKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5wcm9jZXNzKToKKyAgICAgICAgKFNpbmdsZUhl
YWRlci5fX3JlYWRfaGVhZGVyKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX3ByYWdt
YV9vbmNlKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX2NvbW1lbnRzKToKKyAgICAg
ICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX2VtcHR5X2xpbmVzKToKKyAgICAgICAgKFNpbmdsZUhl
YWRlci5fX3N1YnN0aXR1dGVfaW5jbHVkZV9kaXJlY3RpdmUpOgorICAgICAgICAoU2luZ2xlSGVh
ZGVyLl9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2ZXMpOgorICAgICAgICAoU2luZ2xlSGVhZGVy
Ll9fcHJvY2Vzc19mb3VuZGF0aW9uX2RpcmVjdGl2ZXMpOgorICAgICAgICAoU2luZ2xlSGVhZGVy
Ll9fcHJvY2Vzc19oZWFkZXIpOgorICAgICAgICAoY3JlYXRlX2FyZ3VtZW50X3BhcnNlcik6Cisg
ICAgICAgIChwYXJzZV9hcmd1bWVudHMpOgorICAgICAgICAobWFrZV9oZWFkZXIpOgorICAgICAg
ICAobWFrZV9kaXIpOgorICAgICAgICAod3JpdGVfaGVhZGVyKToKKwogMjAyMi0wMi0xNSAgUm9i
aW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXR1NMXSBJbXBs
ZW1lbnQgZW5vdWdoIG9mIHRoZSBsZXhlciBmb3IgdGhlIHNpbXBsZXN0IHNoYWRlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnIGIvU291
cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9XZWJHUFUueGNjb25maWcKaW5kZXggZDQ1NTllZTk4
YjI2NDFiNTdlZDNiMDZlZjNjZTI2YjZiMjNkY2NiYy4uZjk0NmU2ZmZhNjBlNzYzNjQ2N2RmNjRi
NWY5ZTAwODkzNWIwOGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9u
cy9XZWJHUFUueGNjb25maWcKKysrIGIvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9XZWJH
UFUueGNjb25maWcKQEAgLTIzLDcgKzIzLDEwIEBACiAKICNpbmNsdWRlICJWZXJzaW9uLnhjY29u
ZmlnIgogCitXQVJOSU5HX0NGTEFHUyA9IC1XYWxsIC1XZXh0cmEgLVdjYXN0LXF1YWwgLVdjaGFy
LXN1YnNjcmlwdHMgLVdjb25kaXRpb25hbC11bmluaXRpYWxpemVkIC1XZXh0cmEtdG9rZW5zIC1X
Zm9ybWF0PTIgLVdpbml0LXNlbGYgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5n
LW5vcmV0dXJuIC1XcG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3dyaXRlLXN0cmlu
Z3MgLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMgLVd0YXV0b2xvZ2ljYWwtY29tcGFyZSAtV2ltcGxp
Y2l0LWZhbGx0aHJvdWdoIC1XdmxhIC1XbGl0ZXJhbC1jb252ZXJzaW9uIC1XdGhyZWFkLXNhZmV0
eSAtV25vLXR5cGVkZWYtcmVkZWZpbml0aW9uIC1Xbm8taWdub3JlZC1xdWFsaWZpZXJzOworCiBI
RUFERVJfU0VBUkNIX1BBVEhTID0gIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5j
bHVkZSIgJChpbmhlcml0ZWQpOworU1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViR1BVL21ldGFsLWNwcCAkKGluaGVyaXRl
ZCk7CiAKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIApAQCAtNjksMyArNzIsNyBAQCBN
T0RVTEVNQVBfRklMRSA9IFdlYkdQVS9XZWJHUFUubW9kdWxlbWFwOwogCiBTVVBQT1JUU19URVhU
X0JBU0VEX0FQSSA9IFlFUzsKIFRBUElfVkVSSUZZX01PREUgPSBQZWRhbnRpYzsKKworT1RIRVJf
TERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtWGxpbmtlciAtbm9fd2Fybl9pbml0czsKKworSEVBREVS
TUFQX0lOQ0xVREVTX1BST0pFQ1RfSEVBREVSUyA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XR1NMVW5pdFRlc3RzL1dHU0xMZXhlclRlc3RzLm1tIGIvU291cmNlL1dlYkdQVS9XR1NM
VW5pdFRlc3RzL1dHU0xMZXhlclRlc3RzLm1tCmluZGV4IDhjNDg2ZDFkODE5OTk2MGM5ODFjYmJj
NTk0ZmE3YTU3MTAzNTE4ZmYuLmQxMWY5ZDgwMmZkZjUzOTUwZjlhY2RmZjhmZDYxOTc2NDI2NWQ1
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV0dTTFVuaXRUZXN0cy9XR1NMTGV4ZXJUZXN0
cy5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dHU0xVbml0VGVzdHMvV0dTTExleGVyVGVzdHMubW0K
QEAgLTIzLDEwICsyMywxMCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIkxleGVyLmgiCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TGV4ZXIuaCIKIAotI2ltcG9ydCA8WENUZXN0L1hDVGVzdC5oPgorI2luY2x1ZGUgPFhDVGVzdC9Y
Q1Rlc3QuaD4KIAogQGludGVyZmFjZSBXR1NMTGV4ZXJUZXN0cyA6IFhDVGVzdENhc2UKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2Y0
MGM2MzhiZTgzZmQ1NzI1M2UzMTBjY2Y1NmMwYzZhNDkwMTZlMS4uNTFhYWM1MjMyMTcyMmFiOWMx
MmI0ZTI4ODJhMGU4Yzc1ZTFjMTg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMSwzMSArMTEsMzQgQEAKIAkJMUMwMjNENDAyNzQ0
OTA3MDAwMURCNzM0IC8qIGxpYndnc2wuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDRUJEN0YyMjcxNkIyQ0MwMEE1MjU0RCAvKiBsaWJ3Z3NsLmEg
Ki87IH07CiAJCTFDMDIzRDRCMjc0NDk1QjkwMDFEQjczNCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzAyM0Q0QTI3NDQ5NUI5MDAxREI3MzQgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9
OwogCQkxQzJDRURFRTI3MUU4QTczMDBFREMxNkYgLyogTWV0YWwuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyQ0VERUQyNzFFOEE3
MzAwRURDMTZGIC8qIE1ldGFsLmZyYW1ld29yayAqLzsgfTsKLQkJMUM1QUNBOTQyNzNBNDFDMjAw
OTVGOEQ1IC8qIEluc3RhbmNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUM1QUNBOTIyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tICovOyB9
OwotCQkxQzVBQ0FCNjI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyUGlwZWxpbmUubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0E5ODI3M0E0MjZE
MDA5NUY4RDUgLyogUmVuZGVyUGlwZWxpbmUubW0gKi87IH07Ci0JCTFDNUFDQUJCMjczQTQyNkQw
MDk1RjhENSAvKiBCdWZmZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzVBQ0E5RDI3M0E0MjZEMDA5NUY4RDUgLyogQnVmZmVyLm1tICovOyB9Owot
CQkxQzVBQ0FCRDI3M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0E5RjI3M0E0MjZEMDA5NUY4RDUg
LyogUXVlcnlTZXQubW0gKi87IH07Ci0JCTFDNUFDQUJGMjczQTQyNkQwMDk1RjhENSAvKiBTd2Fw
Q2hhaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzVBQ0FBMTI3M0E0MjZEMDA5NUY4RDUgLyogU3dhcENoYWluLm1tICovOyB9OwotCQkxQzVBQ0FD
MDI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBpcGVsaW5lLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBQTIyNzNBNDI2RDAwOTVGOEQ1IC8q
IENvbXB1dGVQaXBlbGluZS5tbSAqLzsgfTsKLQkJMUM1QUNBQzEyNzNBNDI2RDAwOTVGOEQ1IC8q
IERldmljZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDNUFDQUEzMjczQTQyNkQwMDk1RjhENSAvKiBEZXZpY2UubW0gKi87IH07Ci0JCTFDNUFDQUMy
MjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQYXNzRW5jb2Rlci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUE0MjczQTQyNkQwMDk1RjhENSAv
KiBSZW5kZXJQYXNzRW5jb2Rlci5tbSAqLzsgfTsKLQkJMUM1QUNBQzYyNzNBNDI2RDAwOTVGOEQ1
IC8qIENvbXB1dGVQYXNzRW5jb2Rlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDNUFDQUE4MjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGFzc0Vu
Y29kZXIubW0gKi87IH07Ci0JCTFDNUFDQUM3MjczQTQyNkQwMDk1RjhENSAvKiBBZGFwdGVyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBQTky
NzNBNDI2RDAwOTVGOEQ1IC8qIEFkYXB0ZXIubW0gKi87IH07Ci0JCTFDNUFDQUM5MjczQTQyNkUw
MDk1RjhENSAvKiBDb21tYW5kRW5jb2Rlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUFCMjczQTQyNkQwMDk1RjhENSAvKiBDb21tYW5kRW5j
b2Rlci5tbSAqLzsgfTsKLQkJMUM1QUNBQ0IyNzNBNDI2RTAwOTVGOEQ1IC8qIFF1ZXVlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBQUQyNzNB
NDI2RDAwOTVGOEQ1IC8qIFF1ZXVlLm1tICovOyB9OwotCQkxQzVBQ0FDQzI3M0E0MjZFMDA5NUY4
RDUgLyogUmVuZGVyQnVuZGxlRW5jb2Rlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUFFMjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJCdW5k
bGVFbmNvZGVyLm1tICovOyB9OwotCQkxQzVBQ0FDRTI3M0E0MjZFMDA5NUY4RDUgLyogU2hhZGVy
TW9kdWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM1QUNBQjAyNzNBNDI2RDAwOTVGOEQ1IC8qIFNoYWRlck1vZHVsZS5tbSAqLzsgfTsKLQkJMUM1
QUNBQ0YyNzNBNDI2RTAwOTVGOEQ1IC8qIFRleHR1cmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FCMTI3M0E0MjZEMDA5NUY4RDUgLyogVGV4
dHVyZS5tbSAqLzsgfTsKLQkJMUM1QUNBRDEyNzNBNDI2RTAwOTVGOEQ1IC8qIFN1cmZhY2UubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FCMzI3
M0E0MjZEMDA5NUY4RDUgLyogU3VyZmFjZS5tbSAqLzsgfTsKKwkJMUM1MzREMjgyN0JDRTAzNjAw
MzM3QzdCIC8qIE1ldGFsLWNwcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzUzNEQyNzI3QkNFMDM2MDAzMzdDN0IgLyogTWV0YWwtY3BwLmNwcCAq
LzsgfTsKKwkJMUM1MzREMkMyN0JDRUVFMzAwMzM3QzdCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFQkQ4
MkQyNzE2Q0IxNjAwQTUyNTREIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OworCQkxQzUz
NEQyRTI3QkNFRUVFMDAzMzdDN0IgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUzNEQyRDI3QkNFRUVFMDAz
MzdDN0IgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi87IHBsYXRmb3JtRmlsdGVyID0gbWFjY2F0
YWx5c3Q7IH07CisJCTFDNUFDQTk0MjczQTQxQzIwMDk1RjhENSAvKiBJbnN0YW5jZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0E5MjI3M0E0
MUMyMDA5NUY4RDUgLyogSW5zdGFuY2UuY3BwICovOyB9OworCQkxQzVBQ0FCNjI3M0E0MjZEMDA5
NUY4RDUgLyogUmVuZGVyUGlwZWxpbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBOTgyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBpcGVs
aW5lLmNwcCAqLzsgfTsKKwkJMUM1QUNBQkIyNzNBNDI2RDAwOTVGOEQ1IC8qIEJ1ZmZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0E5RDI3
M0E0MjZEMDA5NUY4RDUgLyogQnVmZmVyLmNwcCAqLzsgfTsKKwkJMUM1QUNBQkQyNzNBNDI2RDAw
OTVGOEQ1IC8qIFF1ZXJ5U2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDNUFDQTlGMjczQTQyNkQwMDk1RjhENSAvKiBRdWVyeVNldC5jcHAgKi87
IH07CisJCTFDNUFDQUJGMjczQTQyNkQwMDk1RjhENSAvKiBTd2FwQ2hhaW4uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBQTEyNzNBNDI2RDAw
OTVGOEQ1IC8qIFN3YXBDaGFpbi5jcHAgKi87IH07CisJCTFDNUFDQUMwMjczQTQyNkQwMDk1RjhE
NSAvKiBDb21wdXRlUGlwZWxpbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUM1QUNBQTIyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbXB1dGVQaXBlbGlu
ZS5jcHAgKi87IH07CisJCTFDNUFDQUMxMjczQTQyNkQwMDk1RjhENSAvKiBEZXZpY2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBQTMyNzNB
NDI2RDAwOTVGOEQ1IC8qIERldmljZS5jcHAgKi87IH07CisJCTFDNUFDQUMyMjczQTQyNkQwMDk1
RjhENSAvKiBSZW5kZXJQYXNzRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FBNDI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyUGFz
c0VuY29kZXIuY3BwICovOyB9OworCQkxQzVBQ0FDNjI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0
ZVBhc3NFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDNUFDQUE4MjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGFzc0VuY29kZXIuY3Bw
ICovOyB9OworCQkxQzVBQ0FDNzI3M0E0MjZEMDA5NUY4RDUgLyogQWRhcHRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FBOTI3M0E0MjZE
MDA5NUY4RDUgLyogQWRhcHRlci5jcHAgKi87IH07CisJCTFDNUFDQUM5MjczQTQyNkUwMDk1RjhE
NSAvKiBDb21tYW5kRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzVBQ0FBQjI3M0E0MjZEMDA5NUY4RDUgLyogQ29tbWFuZEVuY29kZXIu
Y3BwICovOyB9OworCQkxQzVBQ0FDQjI3M0E0MjZFMDA5NUY4RDUgLyogUXVldWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBQUQyNzNBNDI2
RDAwOTVGOEQ1IC8qIFF1ZXVlLmNwcCAqLzsgfTsKKwkJMUM1QUNBQ0MyNzNBNDI2RTAwOTVGOEQ1
IC8qIFJlbmRlckJ1bmRsZUVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBQUUyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlckJ1bmRs
ZUVuY29kZXIuY3BwICovOyB9OworCQkxQzVBQ0FDRTI3M0E0MjZFMDA5NUY4RDUgLyogU2hhZGVy
TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDNUFDQUIwMjczQTQyNkQwMDk1RjhENSAvKiBTaGFkZXJNb2R1bGUuY3BwICovOyB9OworCQkx
QzVBQ0FDRjI3M0E0MjZFMDA5NUY4RDUgLyogVGV4dHVyZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FCMTI3M0E0MjZEMDA5NUY4RDUgLyog
VGV4dHVyZS5jcHAgKi87IH07CisJCTFDNUFDQUQxMjczQTQyNkUwMDk1RjhENSAvKiBTdXJmYWNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFD
QUIzMjczQTQyNkQwMDk1RjhENSAvKiBTdXJmYWNlLmNwcCAqLzsgfTsKIAkJMUM1QUNBRDMyNzNB
NEM4NjAwOTVGOEQ1IC8qIFdlYkdQVUV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBRDIyNzNBNEM4NjAwOTVGOEQ1IC8qIFdlYkdQVUV4dC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJMUM1QUNB
RDcyNzNBNEQ3MDAwOTVGOEQ1IC8qIEJpbmRHcm91cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBRDUyNzNBNEQ3MDAwOTVGOEQ1IC8qIEJpbmRH
cm91cC5oICovOyB9OwotCQkxQzVBQ0FERjI3M0E1NUFGMDA5NUY4RDUgLyogQmluZEdyb3VwLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBREUy
NzNBNTVBRjAwOTVGOEQ1IC8qIEJpbmRHcm91cC5tbSAqLzsgfTsKLQkJMUM1QUNBRTEyNzNBNTVD
MTAwOTVGOEQ1IC8qIEJpbmRHcm91cExheW91dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUUwMjczQTU1QzEwMDk1RjhENSAvKiBCaW5kR3Jv
dXBMYXlvdXQubW0gKi87IH07Ci0JCTFDNUFDQUUzMjczQTU1Q0QwMDk1RjhENSAvKiBDb21tYW5k
QnVmZmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM1QUNBRTIyNzNBNTVDRDAwOTVGOEQ1IC8qIENvbW1hbmRCdWZmZXIubW0gKi87IH07Ci0JCTFD
NUFDQUU1MjczQTU1REQwMDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQUU0MjczQTU1REQwMDk1RjhE
NSAvKiBQaXBlbGluZUxheW91dC5tbSAqLzsgfTsKLQkJMUM1QUNBRTcyNzNBNTVFRjAwOTVGOEQ1
IC8qIFJlbmRlckJ1bmRsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDNUFDQUU2MjczQTU1RUYwMDk1RjhENSAvKiBSZW5kZXJCdW5kbGUubW0gKi87
IH07Ci0JCTFDNUFDQUU5MjczQTU1RkQwMDk1RjhENSAvKiBTYW1wbGVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBRTgyNzNBNTVGRDAwOTVG
OEQ1IC8qIFNhbXBsZXIubW0gKi87IH07Ci0JCTFDNUFDQUVCMjczQTU2MEQwMDk1RjhENSAvKiBU
ZXh0dXJlVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDNUFDQUVBMjczQTU2MEQwMDk1RjhENSAvKiBUZXh0dXJlVmlldy5tbSAqLzsgfTsKKwkJ
MUM1QUNBREYyNzNBNTVBRjAwOTVGOEQ1IC8qIEJpbmRHcm91cC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0FERTI3M0E1NUFGMDA5NUY4RDUg
LyogQmluZEdyb3VwLmNwcCAqLzsgfTsKKwkJMUM1QUNBRTEyNzNBNTVDMTAwOTVGOEQ1IC8qIEJp
bmRHcm91cExheW91dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzVBQ0FFMDI3M0E1NUMxMDA5NUY4RDUgLyogQmluZEdyb3VwTGF5b3V0LmNwcCAq
LzsgfTsKKwkJMUM1QUNBRTMyNzNBNTVDRDAwOTVGOEQ1IC8qIENvbW1hbmRCdWZmZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBRTIyNzNB
NTVDRDAwOTVGOEQ1IC8qIENvbW1hbmRCdWZmZXIuY3BwICovOyB9OworCQkxQzVBQ0FFNTI3M0E1
NUREMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBRTQyNzNBNTVERDAwOTVGOEQ1IC8qIFBpcGVs
aW5lTGF5b3V0LmNwcCAqLzsgfTsKKwkJMUM1QUNBRTcyNzNBNTVFRjAwOTVGOEQ1IC8qIFJlbmRl
ckJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzVBQ0FFNjI3M0E1NUVGMDA5NUY4RDUgLyogUmVuZGVyQnVuZGxlLmNwcCAqLzsgfTsKKwkJ
MUM1QUNBRTkyNzNBNTVGRDAwOTVGOEQ1IC8qIFNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBRTgyNzNBNTVGRDAwOTVGOEQ1IC8q
IFNhbXBsZXIuY3BwICovOyB9OworCQkxQzVBQ0FFQjI3M0E1NjBEMDA5NUY4RDUgLyogVGV4dHVy
ZVZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM1QUNBRUEyNzNBNTYwRDAwOTVGOEQ1IC8qIFRleHR1cmVWaWV3LmNwcCAqLzsgfTsKIAkJMUNC
QUIwOTIyNzE4Q0NBMDAwNjA4MEJCIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkFCMDkxMjcxOEND
QTAwMDYwODBCQiAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CiAJCTFDRUJEN0U3
MjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDRUJEN0U2MjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTFDRUJEN0Y4
MjcxNkIzNDQwMEE1MjU0RCAvKiBXR1NMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQ0VCRDdGNzI3MTZCMzQ0MDBBNTI1NEQgLyogV0dTTC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTcxLDM3ICs3NCwx
MjMgQEAKIAkJMUMwMjNENDcyNzQ0OTE2RDAwMURCNzM0IC8qIFdHU0xVbml0VGVzdHMueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBwYXRoID0gV0dTTFVuaXRUZXN0cy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUMwMjNENEEyNzQ0OTVCOTAwMURCNzM0IC8qIEphdmFTY3JpcHRDb3Jl
LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzJDRURFRDI3MUU4QTczMDBF
REMxNkYgLyogTWV0YWwuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBNZXRhbC5mcmFtZXdv
cms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL01ldGFsLmZyYW1ld29yazsgc291
cmNlVHJlZSA9IFNES1JPT1Q7IH07Ci0JCTFDNUFDQTkyMjczQTQxQzIwMDk1RjhENSAvKiBJbnN0
YW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluc3RhbmNlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzUzNENEMTI3QkNERUREMDAzMzdDN0IgLyogTVRMVHlwZXMuaHBw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuaDsgcGF0aCA9IE1UTFR5cGVzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzRDRDIyN0JDREVERDAwMzM3QzdCIC8qIE1UTFJlc291cmNlU3RhdGVDb21tYW5k
RW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNv
ZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRDRDMyN0JDREVERDAw
MzM3QzdCIC8qIE1UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9
IE1UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzNENENDI3QkNERUREMDAzMzdDN0IgLyogTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmg7IHBhdGggPSBNVExDb21wdXRlUGlwZWxpbmUuaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzUzNENENTI3QkNERUREMDAzMzdDN0IgLyogTVRMRnVuY3Rpb25IYW5k
bGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEZ1bmN0aW9uSGFuZGxlLmhwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRDRDYyN0JDREVERDAwMzM3QzdCIC8qIE1UTERyYXdh
YmxlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExEcmF3YWJsZS5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTM0Q0Q3MjdCQ0RFREQwMDMzN0M3QiAvKiBNVExEeW5hbWljTGli
cmFyeS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRHluYW1pY0xpYnJhcnkuaHBwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNENEODI3QkNERUREMDAzMzdDN0IgLyogTVRMQ29t
cHV0ZVBhc3MuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTENvbXB1dGVQYXNzLmhwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRDRDkyN0JDREVERDAwMzM3QzdCIC8qIE1UTEZ1
bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEZ1bmN0aW9uQ29u
c3RhbnRWYWx1ZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNENEQTI3
QkNERUREMDAzMzdDN0IgLyogTVRMUGlwZWxpbmUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFBp
cGVsaW5lLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRDREIyN0JDREVE
RDAwMzM3QzdCIC8qIE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBNVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNTM0Q0RDMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExCbGl0Q29tbWFuZEVuY29kZXIuaHBw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuaDsgcGF0aCA9IE1UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTM0Q0REMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExDYXB0dXJl
TWFuYWdlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ2FwdHVyZU1hbmFnZXIuaHBwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNENERTI3QkNERUREMDAzMzdDN0IgLyogTVRM
Q29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTENvbW1hbmRFbmNvZGVyLmhw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRDREYyN0JDREVERDAwMzM3QzdC
IC8qIE1ldGFsLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNZXRhbC5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTM0Q0UwMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMU3RhZ2VJbnB1dE91dHB1
dERlc2NyaXB0b3IuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNENFMTI3
QkNERUREMDAzMzdDN0IgLyogTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRDRTIyN0JDREVERDAwMzM3QzdCIC8qIE1UTFBhcmFs
bGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFBhcmFsbGVs
UmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzUzNENFMzI3QkNERUREMDAzMzdDN0IgLyogTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE1UTFJhc3Rlcml6YXRpb25SYXRlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1MzRDRTQyN0JDREVERDAwMzM3QzdCIC8qIE1UTExpbmtlZEZ1bmN0aW9u
cy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMTGlua2VkRnVuY3Rpb25zLmhwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRDRTUyN0JDREVERDAwMzM3QzdCIC8qIE1UTFRleHR1
cmUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFRleHR1cmUuaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzUzNENFNjI3QkNERUREMDAzMzdDN0IgLyogTVRMU2FtcGxlci5ocHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5oOyBwYXRoID0gTVRMU2FtcGxlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNTM0Q0U3MjdCQ0RFREQwMDMzN0M3QiAvKiBNVExEZXB0aFN0ZW5jaWwuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE1UTERlcHRoU3RlbmNpbC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDNTM0Q0U4MjdCQ0RFREQwMDMzN0M3QiAvKiBNVExBcmd1bWVudEVuY29kZXIu
aHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEFyZ3VtZW50RW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTM0Q0U5MjdCQ0RFREQwMDMzN0M3QiAvKiBNVExJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRDRUEy
N0JDREVERDAwMzM3QzdCIC8qIE1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBNVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDNTM0Q0VCMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExQcml2YXRlLmhwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmg7IHBhdGggPSBNVExQcml2YXRlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1MzRDRUMyN0JDREVERDAwMzM3QzdCIC8qIE1UTFJlc291cmNlLmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBNVExSZXNvdXJjZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NTM0Q0VEMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTM0Q0VFMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExEZXZpY2Uu
aHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTERldmljZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDNTM0Q0VGMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExBcmd1bWVudC5ocHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5oOyBwYXRoID0gTVRMQXJndW1lbnQuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzNENGMDI3QkNERUREMDAzMzdDN0IgLyogTVRMRnVuY3Rpb25Mb2cuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE1UTEZ1bmN0aW9uTG9nLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzRDRjEyN0JDREVERDAwMzM3QzdCIC8qIE1UTEJ1ZmZlci5ocHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBwYXRoID0gTVRMQnVmZmVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzRDRjIyN0JDREVERDAwMzM3QzdCIC8qIE1UTFJlbmRlclBhc3MuaHBwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0
aCA9IE1UTFJlbmRlclBhc3MuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
NENGMzI3QkNERUREMDAzMzdDN0IgLyogTVRMSGVhcC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRM
SGVhcC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTM0Q0Y0MjdCQ0RFREQw
MDMzN0M3QiAvKiBNVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExW
ZXJ0ZXhEZXNjcmlwdG9yLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRD
RjUyN0JDREVERDAwMzM3QzdCIC8qIE1UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBNVExGdW5jdGlvblN0aXRjaGluZy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNTM0Q0Y2MjdCQ0RFREQwMDMzN0M3QiAvKiBNVExMaWJyYXJ5LmhwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lmg7IHBhdGggPSBNVExMaWJyYXJ5LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzRDRjcyN0JDREVERDAwMzM3QzdCIC8qIE1UTFBpeGVsRm9ybWF0LmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBNVExQaXhlbEZvcm1hdC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNTM0Q0Y4MjdCQ0RFREQwMDMzN0M3QiAvKiBNVExGZW5jZS5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTVRMRmVuY2UuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNENGOTI3
QkNERUREMDAzMzdDN0IgLyogTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzUzNENGQTI3QkNERUREMDAzMzdDN0IgLyogTVRMUmVuZGVyUGlwZWxpbmUu
aHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFJlbmRlclBpcGVsaW5lLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRDRkIyN0JDREVERDAwMzM3QzdCIC8qIE1UTENvbW1hbmRR
dWV1ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ29tbWFuZFF1ZXVlLmhwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRDRkMyN0JDREVERDAwMzM3QzdCIC8qIE1UTEZ1bmN0
aW9uRGVzY3JpcHRvci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRnVuY3Rpb25EZXNjcmlwdG9y
LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRDRkQyN0JDREVERDAwMzM3
QzdCIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lmg7IHBhdGggPSBNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlci5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTM0Q0ZFMjdCQ0RFREQwMDMzN0M3QiAvKiBN
VExCbGl0UGFzcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQmxpdFBhc3MuaHBwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNENGRjI3QkNERUREMDAzMzdDN0IgLyogTVRMRXZl
bnQuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEV2ZW50LmhwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1MzREMDAyN0JDREVERDAwMzM3QzdCIC8qIE1UTEJpbmFyeUFyY2hpdmUu
aHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEJpbmFyeUFyY2hpdmUuaHBwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzUzNEQwMTI3QkNERUREMDAzMzdDN0IgLyogTVRMQ2FwdHVyZVNj
b3BlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDYXB0dXJlU2NvcGUuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzNEQwMjI3QkNERUREMDAzMzdDN0IgLyogTVRMQ29tcHV0
ZUNvbW1hbmRFbmNvZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDb21wdXRlQ29tbWFuZEVu
Y29kZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNEQwMzI3QkNERURE
MDAzMzdDN0IgLyogTVRMSGVhZGVyQnJpZGdlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExIZWFk
ZXJCcmlkZ2UuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNEQwNDI3QkNE
RUREMDAzMzdDN0IgLyogTVRMQ291bnRlcnMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTENvdW50
ZXJzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzREMDUyN0JDREVERDAw
MzM3QzdCIC8qIE1UTERlZmluZXMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTERlZmluZXMuaHBw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNEQwNjI3QkNERUREMDAzMzdDN0Ig
LyogTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFJlc291cmNl
U3RhdGVQYXNzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzREMDcyN0JD
REVERDAwMzM3QzdCIC8qIE1UTENvbW1hbmRCdWZmZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1U
TENvbW1hbmRCdWZmZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNEQw
OTI3QkNERUREMDAzMzdDN0IgLyogTlNTdHJpbmcuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TU3Ry
aW5nLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzREMEEyN0JDREVERDAw
MzM3QzdCIC8qIE5TRGljdGlvbmFyeS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNEaWN0aW9uYXJ5
LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzREMEIyN0JDREVERDAwMzM3
QzdCIC8qIE5TTG9jay5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNMb2NrLmhwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzREMEMyN0JDREVERDAwMzM3QzdCIC8qIE5TUHJvY2Vz
c0luZm8uaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TUHJvY2Vzc0luZm8uaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzNEQwRDI3QkNERUREMDAzMzdDN0IgLyogTlNFcnJvci5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNFcnJvci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNTM0RDBFMjdCQ0RFREQwMDMzN0M3QiAvKiBOU09iakNSdW50aW1lLmhwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmg7IHBhdGggPSBOU09iakNSdW50aW1lLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzREMEYyN0JDREVERDAwMzM3QzdCIC8qIE5TT2JqZWN0LmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBOU09iamVjdC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTM0
RDEwMjdCQ0RFREQwMDMzN0M3QiAvKiBOU05vdGlmaWNhdGlvbi5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTlNOb3RpZmljYXRpb24uaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
NEQxMTI3QkNERUREMDAzMzdDN0IgLyogTlNQcml2YXRlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBO
U1ByaXZhdGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNEQxMjI3QkNE
RUREMDAzMzdDN0IgLyogTlNVUkwuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TVVJMLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzREMTMyN0JDREVERDAwMzM3QzdCIC8qIE5T
QXV0b3JlbGVhc2VQb29sLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0F1dG9yZWxlYXNlUG9vbC5o
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTM0RDE0MjdCQ0RFREQwMDMzN0M3
QiAvKiBOU1JhbmdlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU1JhbmdlLmhwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzREMTUyN0JDREVERDAwMzM3QzdCIC8qIE5TVHlwZXMu
aHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TVHlwZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzUzNEQxNjI3QkNERUREMDAzMzdDN0IgLyogTlNEYXRhLmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBOU0RhdGEuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNEQx
NzI3QkNERUREMDAzMzdDN0IgLyogTlNOdW1iZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TTnVt
YmVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzREMTgyN0JDREVERDAw
MzM3QzdCIC8qIEZvdW5kYXRpb24uaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IEZvdW5kYXRpb24uaHBw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNEQxOTI3QkNERUREMDAzMzdDN0Ig
LyogTlNEYXRlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0RhdGUuaHBwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzUzNEQxQTI3QkNERUREMDAzMzdDN0IgLyogTlNEZWZpbmVzLmhw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmg7IHBhdGggPSBOU0RlZmluZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzUzNEQxQjI3QkNERUREMDAzMzdDN0IgLyogTlNCdW5kbGUuaHBwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
aDsgcGF0aCA9IE5TQnVuZGxlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzREMUMyN0JDREVERDAwMzM3QzdCIC8qIE5TRW51bWVyYXRvci5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTlNFbnVtZXJhdG9yLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzRE
MUQyN0JDREVERDAwMzM3QzdCIC8qIE5TQXJyYXkuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TQXJy
YXkuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNEQxRTI3QkNERUREMDAz
MzdDN0IgLyogUkVBRE1FLm1kICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gbmV0LmRhcmluZ2ZpcmViYWxsLm1hcmtkb3duOyBwYXRoID0gUkVBRE1FLm1k
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNEQyMDI3QkNERUREMDAzMzdDN0Ig
LyogUXVhcnR6Q29yZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gUXVhcnR6Q29yZS5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTM0RDIxMjdCQ0RFREQwMDMzN0M3QiAvKiBDQVBy
aXZhdGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IENBUHJpdmF0ZS5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTM0RDIyMjdCQ0RFREQwMDMzN0M3QiAvKiBDQU1ldGFsRHJhd2Fi
bGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgcGF0aCA9IENBTWV0YWxEcmF3YWJsZS5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTM0RDIzMjdCQ0RFREQwMDMzN0M3QiAvKiBDQURlZmluZXMu
aHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuaDsgcGF0aCA9IENBRGVmaW5lcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDNTM0RDI0MjdCQ0RFREQwMDMzN0M3QiAvKiBMSUNFTlNFLnR4dCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBM
SUNFTlNFLnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzREMjYyN0JDREVE
RDAwMzM3QzdCIC8qIE1ha2VTaW5nbGVIZWFkZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBNYWtl
U2luZ2xlSGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzNEQyNzI3
QkNFMDM2MDAzMzdDN0IgLyogTWV0YWwtY3BwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9ICJNZXRh
bC1jcHAuY3BwIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzREMkIyN0JDRURG
QTAwMzM3QzdCIC8qIE1ldGFsLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNZXRhbC5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTM0RDJEMjdCQ0VFRUUwMDMzN0M3QiAvKiBRdWFy
dHpDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUXVhcnR6Q29yZS5mcmFtZXdvcms7
IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJMUM1QUNBOTIyNzNBNDFDMjAwOTVGOEQ1IC8qIElu
c3RhbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3RhbmNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUM1QUNBOTYyNzNBNDI2RDAwOTVGOEQ1IC8qIFN1cmZhY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VyZmFjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzVBQ0E5NzI3M0E0MjZEMDA5NUY4RDUgLyogU3dhcENoYWluLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN3YXBDaGFpbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQzVBQ0E5ODI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyUGlw
ZWxpbmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW5kZXJQ
aXBlbGluZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNBOTgyNzNBNDI2
RDAwOTVGOEQ1IC8qIFJlbmRlclBpcGVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbmRlclBpcGVsaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUM1QUNBOTkyNzNBNDI2RDAwOTVGOEQ1IC8qIFRleHR1cmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzVBQ0E5QTI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyUGFzc0VuY29kZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyUGFzc0VuY29kZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1QUNBOUIyNzNBNDI2RDAwOTVGOEQ1IC8qIERldmlj
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1QUNBOUMyNzNBNDI2RDAwOTVGOEQ1IC8qIFF1ZXVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFDNUFDQTlEMjczQTQyNkQwMDk1RjhENSAvKiBCdWZmZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCdWZmZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQTlEMjczQTQyNkQwMDk1RjhENSAvKiBCdWZmZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVmZmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1QUNBOUUyNzNBNDI2RDAwOTVGOEQ1IC8qIENv
bW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRF
bmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNUFDQTlGMjczQTQyNkQw
MDk1RjhENSAvKiBRdWVyeVNldC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFF1ZXJ5U2V0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0E5
RjI3M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUXVlcnlTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzVBQ0FBMDI3M0E0MjZEMDA5NUY4RDUgLyogSW5zdGFuY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zdGFuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUM1QUNBQTEyNzNBNDI2RDAwOTVGOEQ1IC8qIFN3YXBDaGFpbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN3YXBDaGFpbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUM1QUNBQTIyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbXB1dGVQaXBlbGlu
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbXB1dGVQaXBl
bGluZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM1QUNBQTMyNzNBNDI2RDAw
OTVGOEQ1IC8qIERldmljZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERldmljZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM1QUNBQTQyNzNB
NDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBhc3NFbmNvZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUmVuZGVyUGFzc0VuY29kZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNUFDQUExMjczQTQyNkQwMDk1RjhENSAvKiBTd2FwQ2hhaW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3dhcENoYWluLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1QUNBQTIyNzNBNDI2RDAwOTVGOEQ1IC8qIENv
bXB1dGVQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
b21wdXRlUGlwZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FB
MzI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NUFDQUE0MjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQYXNzRW5jb2Rlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJQYXNzRW5jb2Rlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNUFDQUE1MjczQTQyNkQwMDk1RjhENSAvKiBCdWZm
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVmZmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNUFDQUE2MjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJC
dW5kbGVFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckJ1
bmRsZUVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1QUNBQTcyNzNB
NDI2RDAwOTVGOEQ1IC8qIENvbXB1dGVQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb21wdXRlUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUM1QUNBQTgyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbXB1dGVQYXNzRW5jb2Rlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbXB1dGVQYXNzRW5jb2Rlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM1QUNBQTkyNzNBNDI2RDAwOTVGOEQ1
IC8qIEFkYXB0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
ZGFwdGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FBODI3M0E0MjZE
MDA5NUY4RDUgLyogQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvbXB1dGVQYXNzRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNUFDQUE5MjczQTQyNkQwMDk1RjhENSAvKiBBZGFwdGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFkYXB0ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzVBQ0FBQTI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBh
c3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXB1dGVQYXNz
RW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzVBQ0FBQjI3M0E0MjZE
MDA5NUY4RDUgLyogQ29tbWFuZEVuY29kZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBDb21tYW5kRW5jb2Rlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1QUNBQUIyNzNBNDI2RDAwOTVGOEQ1IC8qIENvbW1hbmRFbmNvZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1hbmRFbmNvZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1QUNBQUMyNzNBNDI2RDAwOTVGOEQ1IC8qIFF1
ZXJ5U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1ZXJ5U2V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNUFDQUFEMjczQTQyNkQwMDk1RjhENSAvKiBR
dWV1ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFF1ZXVlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzVBQ0FBRTI3M0E0MjZEMDA5NUY4RDUg
LyogUmVuZGVyQnVuZGxlRW5jb2Rlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJlbmRlckJ1bmRsZUVuY29kZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNUFDQUFEMjczQTQyNkQwMDk1RjhENSAvKiBRdWV1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDNUFDQUFFMjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJCdW5kbGVFbmNvZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckJ1bmRsZUVu
Y29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzVBQ0FBRjI3M0E0MjZE
MDA5NUY4RDUgLyogUmVuZGVyUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM1
QUNBQjAyNzNBNDI2RDAwOTVGOEQ1IC8qIFNoYWRlck1vZHVsZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYWRlck1vZHVsZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUM1QUNBQjEyNzNBNDI2RDAwOTVGOEQ1IC8qIFRleHR1cmUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0dXJlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzVBQ0FCMDI3M0E0MjZEMDA5NUY4RDUgLyogU2hhZGVy
TW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRlck1v
ZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFDQUIxMjczQTQyNkQw
MDk1RjhENSAvKiBUZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRleHR1cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzVBQ0FCMjI3
M0E0MjZEMDA5NUY4RDUgLyogQWRhcHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBZGFwdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDNUFDQUIzMjcz
QTQyNkQwMDk1RjhENSAvKiBTdXJmYWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU3VyZmFjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
QUNBQjMyNzNBNDI2RDAwOTVGOEQ1IC8qIFN1cmZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3VyZmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDNUFDQUQyMjczQTRDODYwMDk1RjhENSAvKiBXZWJHUFVFeHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViR1BVRXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNUFDQUQ1Mjcz
QTRENzAwMDk1RjhENSAvKiBCaW5kR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmluZEdyb3VwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNUFDQUQ4MjczQTREQzEwMDk1RjhENSAv
KiBCaW5kR3JvdXBMYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmluZEdyb3VwTGF5b3V0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTAsMTMgKzE5OSwxMyBAQAogCQkxQzVBQ0FE
QjI3M0E0RUI4MDA5NUY4RDUgLyogUmVuZGVyQnVuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
ckJ1bmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzVBQ0FEQzI3M0E0RUZD
MDA5NUY4RDUgLyogU2FtcGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNUFDQUREMjczQTRGM0QwMDk1RjhENSAvKiBUZXh0dXJl
Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0dXJlVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQzVBQ0FERTI3M0E1NUFGMDA5NUY4RDUgLyogQmluZEdyb3VwLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQmluZEdyb3VwLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQzVBQ0FFMDI3M0E1NUMxMDA5NUY4RDUgLyogQmluZEdyb3VwTGF5b3V0Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQmluZEdyb3VwTGF5b3V0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQzVBQ0FFMjI3M0E1NUNEMDA5NUY4RDUgLyogQ29tbWFuZEJ1ZmZlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbW1hbmRCdWZmZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDNUFDQUU0MjczQTU1REQwMDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBpcGVsaW5lTGF5b3V0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQzVBQ0FFNjI3M0E1NUVGMDA5NUY4RDUgLyogUmVuZGVyQnVuZGxl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVuZGVyQnVuZGxlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQzVBQ0FFODI3M0E1NUZEMDA5NUY4RDUgLyogU2FtcGxlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNhbXBsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTFDNUFDQUVBMjczQTU2MEQwMDk1RjhENSAvKiBUZXh0dXJlVmlldy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFRleHR1cmVWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzVBQ0FERTI3M0E1NUFGMDA5NUY4RDUgLyogQmluZEdyb3VwLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJpbmRHcm91cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NUFDQUUwMjczQTU1QzEwMDk1RjhENSAvKiBCaW5kR3JvdXBMYXlvdXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQmluZEdyb3VwTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1QUNBRTIyNzNBNTVDRDAwOTVGOEQ1IC8qIENvbW1hbmRCdWZmZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNUFDQUU0MjczQTU1REQwMDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQaXBlbGluZUxheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNUFDQUU2MjczQTU1RUYwMDk1RjhENSAvKiBSZW5kZXJCdW5kbGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1QUNBRTgyNzNBNTVGRDAwOTVGOEQ1IC8qIFNhbXBsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2FtcGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNUFD
QUVBMjczQTU2MEQwMDk1RjhENSAvKiBUZXh0dXJlVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUZXh0dXJlVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQkFCMDkx
MjcxOENDQTAwMDYwODBCQiAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsg
cGF0aCA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMUNDMEM4QzkyNzNBN0Q4OTAwRDBCNDgxIC8qIFdlYkdQVS5tb2R1bGVt
YXAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAic291
cmNlY29kZS5tb2R1bGUtbWFwIjsgcGF0aCA9IFdlYkdQVS5tb2R1bGVtYXA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDQzBDOENBMjczQTgxOTEwMEQwQjQ4MSAvKiBWZXJzaW9uLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjEsOSArMjUwLDExIEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
KwkJCQkxQzUzNEQyQzI3QkNFRUUzMDAzMzdDN0IgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLywKIAkJCQkxQ0JBQjA5MjI3MThDQ0EwMDA2MDgwQkIgLyogSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMUNFQkQ4MjYyNzE2Q0FDQzAw
QTUyNTREIC8qIGxpYndnc2wuYSBpbiBGcmFtZXdvcmtzICovLAogCQkJCTFDMkNFREVFMjcxRThB
NzMwMEVEQzE2RiAvKiBNZXRhbC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQkxQzUz
NEQyRTI3QkNFRUVFMDAzMzdDN0IgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTE4NSw2ICsyNzYsMTUzIEBACiAJCQlwYXRoID0gV0dTTFVuaXRUZXN0czsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTFDNTM0QzFFMjdCQ0RDOTgwMDMzN0M3
QiAvKiBEZXJpdmVkU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUM1MzRDMjIyN0JDREQ1MTAwMzM3QzdCIC8qIG1ldGFsLWNwcCAqLywKKwkJ
CSk7CisJCQluYW1lID0gRGVyaXZlZFNvdXJjZXM7CisJCQlwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViR1BVOworCQkJc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsKKwkJfTsKKwkJMUM1
MzRDMjIyN0JDREQ1MTAwMzM3QzdCIC8qIG1ldGFsLWNwcCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUM1MzREMkEyN0JDRUNFNjAwMzM3QzdCIC8qIE1l
dGFsICovLAorCQkJKTsKKwkJCXBhdGggPSAibWV0YWwtY3BwIjsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisJCTFDNTM0Q0NGMjdCQ0RFREQwMDMzN0M3QiAvKiBtZXRhbC1jcHAg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTM0RDA4
MjdCQ0RFREQwMDMzN0M3QiAvKiBGb3VuZGF0aW9uICovLAorCQkJCTFDNTM0Q0QwMjdCQ0RFREQw
MDMzN0M3QiAvKiBNZXRhbCAqLywKKwkJCQkxQzUzNEQxRjI3QkNERUREMDAzMzdDN0IgLyogUXVh
cnR6Q29yZSAqLywKKwkJCQkxQzUzNEQyNTI3QkNERUREMDAzMzdDN0IgLyogU2luZ2xlSGVhZGVy
ICovLAorCQkJCTFDNTM0RDI0MjdCQ0RFREQwMDMzN0M3QiAvKiBMSUNFTlNFLnR4dCAqLywKKwkJ
CQkxQzUzNEQxRTI3QkNERUREMDAzMzdDN0IgLyogUkVBRE1FLm1kICovLAorCQkJKTsKKwkJCXBh
dGggPSAibWV0YWwtY3BwIjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFD
NTM0Q0QwMjdCQ0RFREQwMDMzN0M3QiAvKiBNZXRhbCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUM1MzRDREYyN0JDREVERDAwMzM3QzdCIC8qIE1ldGFs
LmhwcCAqLywKKwkJCQkxQzUzNENFRDI3QkNERUREMDAzMzdDN0IgLyogTVRMQWNjZWxlcmF0aW9u
U3RydWN0dXJlLmhwcCAqLywKKwkJCQkxQzUzNENGRDI3QkNERUREMDAzMzdDN0IgLyogTVRMQWNj
ZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwICovLAorCQkJCTFDNTM0Q0UxMjdC
Q0RFREQwMDMzN0M3QiAvKiBNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAgKi8sCisJ
CQkJMUM1MzRDRUYyN0JDREVERDAwMzM3QzdCIC8qIE1UTEFyZ3VtZW50LmhwcCAqLywKKwkJCQkx
QzUzNENFODI3QkNERUREMDAzMzdDN0IgLyogTVRMQXJndW1lbnRFbmNvZGVyLmhwcCAqLywKKwkJ
CQkxQzUzNEQwMDI3QkNERUREMDAzMzdDN0IgLyogTVRMQmluYXJ5QXJjaGl2ZS5ocHAgKi8sCisJ
CQkJMUM1MzRDREMyN0JDREVERDAwMzM3QzdCIC8qIE1UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHAg
Ki8sCisJCQkJMUM1MzRDRkUyN0JDREVERDAwMzM3QzdCIC8qIE1UTEJsaXRQYXNzLmhwcCAqLywK
KwkJCQkxQzUzNENGMTI3QkNERUREMDAzMzdDN0IgLyogTVRMQnVmZmVyLmhwcCAqLywKKwkJCQkx
QzUzNENERDI3QkNERUREMDAzMzdDN0IgLyogTVRMQ2FwdHVyZU1hbmFnZXIuaHBwICovLAorCQkJ
CTFDNTM0RDAxMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExDYXB0dXJlU2NvcGUuaHBwICovLAorCQkJ
CTFDNTM0RDA3MjdCQ0RFREQwMDMzN0M3QiAvKiBNVExDb21tYW5kQnVmZmVyLmhwcCAqLywKKwkJ
CQkxQzUzNENERTI3QkNERUREMDAzMzdDN0IgLyogTVRMQ29tbWFuZEVuY29kZXIuaHBwICovLAor
CQkJCTFDNTM0Q0ZCMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExDb21tYW5kUXVldWUuaHBwICovLAor
CQkJCTFDNTM0RDAyMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExDb21wdXRlQ29tbWFuZEVuY29kZXIu
aHBwICovLAorCQkJCTFDNTM0Q0Q4MjdCQ0RFREQwMDMzN0M3QiAvKiBNVExDb21wdXRlUGFzcy5o
cHAgKi8sCisJCQkJMUM1MzRDRDQyN0JDREVERDAwMzM3QzdCIC8qIE1UTENvbXB1dGVQaXBlbGlu
ZS5ocHAgKi8sCisJCQkJMUM1MzREMDQyN0JDREVERDAwMzM3QzdCIC8qIE1UTENvdW50ZXJzLmhw
cCAqLywKKwkJCQkxQzUzNEQwNTI3QkNERUREMDAzMzdDN0IgLyogTVRMRGVmaW5lcy5ocHAgKi8s
CisJCQkJMUM1MzRDRTcyN0JDREVERDAwMzM3QzdCIC8qIE1UTERlcHRoU3RlbmNpbC5ocHAgKi8s
CisJCQkJMUM1MzRDRUUyN0JDREVERDAwMzM3QzdCIC8qIE1UTERldmljZS5ocHAgKi8sCisJCQkJ
MUM1MzRDRDYyN0JDREVERDAwMzM3QzdCIC8qIE1UTERyYXdhYmxlLmhwcCAqLywKKwkJCQkxQzUz
NENENzI3QkNERUREMDAzMzdDN0IgLyogTVRMRHluYW1pY0xpYnJhcnkuaHBwICovLAorCQkJCTFD
NTM0Q0ZGMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExFdmVudC5ocHAgKi8sCisJCQkJMUM1MzRDRjgy
N0JDREVERDAwMzM3QzdCIC8qIE1UTEZlbmNlLmhwcCAqLywKKwkJCQkxQzUzNENEOTI3QkNERURE
MDAzMzdDN0IgLyogTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAgKi8sCisJCQkJMUM1MzRD
RkMyN0JDREVERDAwMzM3QzdCIC8qIE1UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAgKi8sCisJCQkJ
MUM1MzRDRDUyN0JDREVERDAwMzM3QzdCIC8qIE1UTEZ1bmN0aW9uSGFuZGxlLmhwcCAqLywKKwkJ
CQkxQzUzNENGMDI3QkNERUREMDAzMzdDN0IgLyogTVRMRnVuY3Rpb25Mb2cuaHBwICovLAorCQkJ
CTFDNTM0Q0Y1MjdCQ0RFREQwMDMzN0M3QiAvKiBNVExGdW5jdGlvblN0aXRjaGluZy5ocHAgKi8s
CisJCQkJMUM1MzREMDMyN0JDREVERDAwMzM3QzdCIC8qIE1UTEhlYWRlckJyaWRnZS5ocHAgKi8s
CisJCQkJMUM1MzRDRjMyN0JDREVERDAwMzM3QzdCIC8qIE1UTEhlYXAuaHBwICovLAorCQkJCTFD
NTM0Q0Y5MjdCQ0RFREQwMDMzN0M3QiAvKiBNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwICov
LAorCQkJCTFDNTM0Q0QzMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExJbmRpcmVjdENvbW1hbmRFbmNv
ZGVyLmhwcCAqLywKKwkJCQkxQzUzNENFOTI3QkNERUREMDAzMzdDN0IgLyogTVRMSW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZS5ocHAgKi8sCisJCQkJMUM1MzRDRjYyN0JDREVERDAwMzM3QzdCIC8q
IE1UTExpYnJhcnkuaHBwICovLAorCQkJCTFDNTM0Q0U0MjdCQ0RFREQwMDMzN0M3QiAvKiBNVExM
aW5rZWRGdW5jdGlvbnMuaHBwICovLAorCQkJCTFDNTM0Q0UyMjdCQ0RFREQwMDMzN0M3QiAvKiBN
VExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzNENEQTI3QkNE
RUREMDAzMzdDN0IgLyogTVRMUGlwZWxpbmUuaHBwICovLAorCQkJCTFDNTM0Q0Y3MjdCQ0RFREQw
MDMzN0M3QiAvKiBNVExQaXhlbEZvcm1hdC5ocHAgKi8sCisJCQkJMUM1MzRDRUIyN0JDREVERDAw
MzM3QzdCIC8qIE1UTFByaXZhdGUuaHBwICovLAorCQkJCTFDNTM0Q0UzMjdCQ0RFREQwMDMzN0M3
QiAvKiBNVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAgKi8sCisJCQkJMUM1MzRDREIyN0JDREVERDAw
MzM3QzdCIC8qIE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzNENGMjI3
QkNERUREMDAzMzdDN0IgLyogTVRMUmVuZGVyUGFzcy5ocHAgKi8sCisJCQkJMUM1MzRDRkEyN0JD
REVERDAwMzM3QzdCIC8qIE1UTFJlbmRlclBpcGVsaW5lLmhwcCAqLywKKwkJCQkxQzUzNENFQzI3
QkNERUREMDAzMzdDN0IgLyogTVRMUmVzb3VyY2UuaHBwICovLAorCQkJCTFDNTM0Q0QyMjdCQ0RF
REQwMDMzN0M3QiAvKiBNVExSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwICovLAorCQkJ
CTFDNTM0RDA2MjdCQ0RFREQwMDMzN0M3QiAvKiBNVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAgKi8s
CisJCQkJMUM1MzRDRTYyN0JDREVERDAwMzM3QzdCIC8qIE1UTFNhbXBsZXIuaHBwICovLAorCQkJ
CTFDNTM0Q0UwMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRv
ci5ocHAgKi8sCisJCQkJMUM1MzRDRTUyN0JDREVERDAwMzM3QzdCIC8qIE1UTFRleHR1cmUuaHBw
ICovLAorCQkJCTFDNTM0Q0QxMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExUeXBlcy5ocHAgKi8sCisJ
CQkJMUM1MzRDRjQyN0JDREVERDAwMzM3QzdCIC8qIE1UTFZlcnRleERlc2NyaXB0b3IuaHBwICov
LAorCQkJCTFDNTM0Q0VBMjdCQ0RFREQwMDMzN0M3QiAvKiBNVExWaXNpYmxlRnVuY3Rpb25UYWJs
ZS5ocHAgKi8sCisJCQkpOworCQkJcGF0aCA9IE1ldGFsOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKKwkJMUM1MzREMDgyN0JDREVERDAwMzM3QzdCIC8qIEZvdW5kYXRpb24gKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTM0RDE4MjdC
Q0RFREQwMDMzN0M3QiAvKiBGb3VuZGF0aW9uLmhwcCAqLywKKwkJCQkxQzUzNEQxRDI3QkNERURE
MDAzMzdDN0IgLyogTlNBcnJheS5ocHAgKi8sCisJCQkJMUM1MzREMTMyN0JDREVERDAwMzM3QzdC
IC8qIE5TQXV0b3JlbGVhc2VQb29sLmhwcCAqLywKKwkJCQkxQzUzNEQxQjI3QkNERUREMDAzMzdD
N0IgLyogTlNCdW5kbGUuaHBwICovLAorCQkJCTFDNTM0RDE2MjdCQ0RFREQwMDMzN0M3QiAvKiBO
U0RhdGEuaHBwICovLAorCQkJCTFDNTM0RDE5MjdCQ0RFREQwMDMzN0M3QiAvKiBOU0RhdGUuaHBw
ICovLAorCQkJCTFDNTM0RDFBMjdCQ0RFREQwMDMzN0M3QiAvKiBOU0RlZmluZXMuaHBwICovLAor
CQkJCTFDNTM0RDBBMjdCQ0RFREQwMDMzN0M3QiAvKiBOU0RpY3Rpb25hcnkuaHBwICovLAorCQkJ
CTFDNTM0RDFDMjdCQ0RFREQwMDMzN0M3QiAvKiBOU0VudW1lcmF0b3IuaHBwICovLAorCQkJCTFD
NTM0RDBEMjdCQ0RFREQwMDMzN0M3QiAvKiBOU0Vycm9yLmhwcCAqLywKKwkJCQkxQzUzNEQwQjI3
QkNERUREMDAzMzdDN0IgLyogTlNMb2NrLmhwcCAqLywKKwkJCQkxQzUzNEQxMDI3QkNERUREMDAz
MzdDN0IgLyogTlNOb3RpZmljYXRpb24uaHBwICovLAorCQkJCTFDNTM0RDE3MjdCQ0RFREQwMDMz
N0M3QiAvKiBOU051bWJlci5ocHAgKi8sCisJCQkJMUM1MzREMEUyN0JDREVERDAwMzM3QzdCIC8q
IE5TT2JqQ1J1bnRpbWUuaHBwICovLAorCQkJCTFDNTM0RDBGMjdCQ0RFREQwMDMzN0M3QiAvKiBO
U09iamVjdC5ocHAgKi8sCisJCQkJMUM1MzREMTEyN0JDREVERDAwMzM3QzdCIC8qIE5TUHJpdmF0
ZS5ocHAgKi8sCisJCQkJMUM1MzREMEMyN0JDREVERDAwMzM3QzdCIC8qIE5TUHJvY2Vzc0luZm8u
aHBwICovLAorCQkJCTFDNTM0RDE0MjdCQ0RFREQwMDMzN0M3QiAvKiBOU1JhbmdlLmhwcCAqLywK
KwkJCQkxQzUzNEQwOTI3QkNERUREMDAzMzdDN0IgLyogTlNTdHJpbmcuaHBwICovLAorCQkJCTFD
NTM0RDE1MjdCQ0RFREQwMDMzN0M3QiAvKiBOU1R5cGVzLmhwcCAqLywKKwkJCQkxQzUzNEQxMjI3
QkNERUREMDAzMzdDN0IgLyogTlNVUkwuaHBwICovLAorCQkJKTsKKwkJCXBhdGggPSBGb3VuZGF0
aW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUM1MzREMUYyN0JDREVE
RDAwMzM3QzdCIC8qIFF1YXJ0ekNvcmUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTFDNTM0RDIzMjdCQ0RFREQwMDMzN0M3QiAvKiBDQURlZmluZXMuaHBw
ICovLAorCQkJCTFDNTM0RDIyMjdCQ0RFREQwMDMzN0M3QiAvKiBDQU1ldGFsRHJhd2FibGUuaHBw
ICovLAorCQkJCTFDNTM0RDIxMjdCQ0RFREQwMDMzN0M3QiAvKiBDQVByaXZhdGUuaHBwICovLAor
CQkJCTFDNTM0RDIwMjdCQ0RFREQwMDMzN0M3QiAvKiBRdWFydHpDb3JlLmhwcCAqLywKKwkJCSk7
CisJCQlwYXRoID0gUXVhcnR6Q29yZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CisJCTFDNTM0RDI1MjdCQ0RFREQwMDMzN0M3QiAvKiBTaW5nbGVIZWFkZXIgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTM0RDI2MjdCQ0RFREQwMDMz
N0M3QiAvKiBNYWtlU2luZ2xlSGVhZGVyLnB5ICovLAorCQkJKTsKKwkJCXBhdGggPSBTaW5nbGVI
ZWFkZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzUzNEQyQTI3QkNF
Q0U2MDAzMzdDN0IgLyogTWV0YWwgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTFDNTM0RDJCMjdCQ0VERkEwMDMzN0M3QiAvKiBNZXRhbC5ocHAgKi8sCisJ
CQkpOworCQkJcGF0aCA9IE1ldGFsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
IAkJMUNFQkQ3RDkyNzE2QUZCQTAwQTUyNTREID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTE5Miw2ICs0MzAsNyBAQAogCQkJCTFDRUJEN0Y5MjcxNkIzODYwMEE1
MjU0RCAvKiBDb25maWd1cmF0aW9ucyAqLywKIAkJCQkxQ0VCRDdGNjI3MTZCMzMxMDBBNTI1NEQg
LyogV0dTTCAqLywKIAkJCQkxQ0VCRDdFNTI3MTZBRkJBMDBBNTI1NEQgLyogV2ViR1BVICovLAor
CQkJCTFDNTM0QzFFMjdCQ0RDOTgwMDMzN0M3QiAvKiBEZXJpdmVkU291cmNlcyAqLywKIAkJCQkx
QzAyM0QzRDI3NDQ5MDcwMDAxREI3MzQgLyogV0dTTFVuaXRUZXN0cyAqLywKIAkJCQkxQ0VCRDdF
NDI3MTZBRkJBMDBBNTI1NEQgLyogUHJvZHVjdHMgKi8sCiAJCQkJMUNFQkQ4MjUyNzE2Q0FDQzAw
QTUyNTREIC8qIEZyYW1ld29ya3MgKi8sCkBAIC0yMTEsNTQgKzQ1MCw1NiBAQAogCQkxQ0VCRDdF
NTI3MTZBRkJBMDBBNTI1NEQgLyogV2ViR1BVICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzNENDRjI3QkNERUREMDAzMzdDN0IgLyogbWV0YWwtY3Bw
ICovLAorCQkJCTFDNUFDQUE5MjczQTQyNkQwMDk1RjhENSAvKiBBZGFwdGVyLmNwcCAqLywKIAkJ
CQkxQzVBQ0FCMjI3M0E0MjZEMDA5NUY4RDUgLyogQWRhcHRlci5oICovLAotCQkJCTFDNUFDQUE5
MjczQTQyNkQwMDk1RjhENSAvKiBBZGFwdGVyLm1tICovLAorCQkJCTFDNUFDQURFMjczQTU1QUYw
MDk1RjhENSAvKiBCaW5kR3JvdXAuY3BwICovLAogCQkJCTFDNUFDQUQ1MjczQTRENzAwMDk1RjhE
NSAvKiBCaW5kR3JvdXAuaCAqLywKLQkJCQkxQzVBQ0FERTI3M0E1NUFGMDA5NUY4RDUgLyogQmlu
ZEdyb3VwLm1tICovLAorCQkJCTFDNUFDQUUwMjczQTU1QzEwMDk1RjhENSAvKiBCaW5kR3JvdXBM
YXlvdXQuY3BwICovLAogCQkJCTFDNUFDQUQ4MjczQTREQzEwMDk1RjhENSAvKiBCaW5kR3JvdXBM
YXlvdXQuaCAqLywKLQkJCQkxQzVBQ0FFMDI3M0E1NUMxMDA5NUY4RDUgLyogQmluZEdyb3VwTGF5
b3V0Lm1tICovLAorCQkJCTFDNUFDQTlEMjczQTQyNkQwMDk1RjhENSAvKiBCdWZmZXIuY3BwICov
LAogCQkJCTFDNUFDQUE1MjczQTQyNkQwMDk1RjhENSAvKiBCdWZmZXIuaCAqLywKLQkJCQkxQzVB
Q0E5RDI3M0E0MjZEMDA5NUY4RDUgLyogQnVmZmVyLm1tICovLAorCQkJCTFDNUFDQUUyMjczQTU1
Q0QwMDk1RjhENSAvKiBDb21tYW5kQnVmZmVyLmNwcCAqLywKIAkJCQkxQzVBQ0FEOTI3M0E0REU5
MDA5NUY4RDUgLyogQ29tbWFuZEJ1ZmZlci5oICovLAotCQkJCTFDNUFDQUUyMjczQTU1Q0QwMDk1
RjhENSAvKiBDb21tYW5kQnVmZmVyLm1tICovLAorCQkJCTFDNUFDQUFCMjczQTQyNkQwMDk1RjhE
NSAvKiBDb21tYW5kRW5jb2Rlci5jcHAgKi8sCiAJCQkJMUM1QUNBOUUyNzNBNDI2RDAwOTVGOEQ1
IC8qIENvbW1hbmRFbmNvZGVyLmggKi8sCi0JCQkJMUM1QUNBQUIyNzNBNDI2RDAwOTVGOEQ1IC8q
IENvbW1hbmRFbmNvZGVyLm1tICovLAorCQkJCTFDNUFDQUE4MjczQTQyNkQwMDk1RjhENSAvKiBD
b21wdXRlUGFzc0VuY29kZXIuY3BwICovLAogCQkJCTFDNUFDQUFBMjczQTQyNkQwMDk1RjhENSAv
KiBDb21wdXRlUGFzc0VuY29kZXIuaCAqLywKLQkJCQkxQzVBQ0FBODI3M0E0MjZEMDA5NUY4RDUg
LyogQ29tcHV0ZVBhc3NFbmNvZGVyLm1tICovLAorCQkJCTFDNUFDQUEyMjczQTQyNkQwMDk1RjhE
NSAvKiBDb21wdXRlUGlwZWxpbmUuY3BwICovLAogCQkJCTFDNUFDQUE3MjczQTQyNkQwMDk1RjhE
NSAvKiBDb21wdXRlUGlwZWxpbmUuaCAqLywKLQkJCQkxQzVBQ0FBMjI3M0E0MjZEMDA5NUY4RDUg
LyogQ29tcHV0ZVBpcGVsaW5lLm1tICovLAogCQkJCTFDRUJEODBBMjcxNkMzNkMwMEE1MjU0RCAv
KiBjb25maWcuaCAqLywKKwkJCQkxQzVBQ0FBMzI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLmNw
cCAqLywKIAkJCQkxQzVBQ0E5QjI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLmggKi8sCi0JCQkJ
MUM1QUNBQTMyNzNBNDI2RDAwOTVGOEQ1IC8qIERldmljZS5tbSAqLywKIAkJCQkxQ0VCRDgwQjI3
MTZDMzc5MDBBNTI1NEQgLyogRXhwb3J0TWFjcm9zLmggKi8sCisJCQkJMUM1QUNBOTIyNzNBNDFD
MjAwOTVGOEQ1IC8qIEluc3RhbmNlLmNwcCAqLywKIAkJCQkxQzVBQ0FBMDI3M0E0MjZEMDA5NUY4
RDUgLyogSW5zdGFuY2UuaCAqLywKLQkJCQkxQzVBQ0E5MjI3M0E0MUMyMDA5NUY4RDUgLyogSW5z
dGFuY2UubW0gKi8sCisJCQkJMUM1MzREMjcyN0JDRTAzNjAwMzM3QzdCIC8qIE1ldGFsLWNwcC5j
cHAgKi8sCisJCQkJMUM1QUNBRTQyNzNBNTVERDAwOTVGOEQ1IC8qIFBpcGVsaW5lTGF5b3V0LmNw
cCAqLywKIAkJCQkxQzVBQ0FEQTI3M0E0RTcxMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQuaCAq
LywKLQkJCQkxQzVBQ0FFNDI3M0E1NUREMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQubW0gKi8s
CisJCQkJMUM1QUNBOUYyNzNBNDI2RDAwOTVGOEQ1IC8qIFF1ZXJ5U2V0LmNwcCAqLywKIAkJCQkx
QzVBQ0FBQzI3M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQuaCAqLywKLQkJCQkxQzVBQ0E5RjI3
M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQubW0gKi8sCisJCQkJMUM1QUNBQUQyNzNBNDI2RDAw
OTVGOEQ1IC8qIFF1ZXVlLmNwcCAqLywKIAkJCQkxQzVBQ0E5QzI3M0E0MjZEMDA5NUY4RDUgLyog
UXVldWUuaCAqLywKLQkJCQkxQzVBQ0FBRDI3M0E0MjZEMDA5NUY4RDUgLyogUXVldWUubW0gKi8s
CisJCQkJMUM1QUNBRTYyNzNBNTVFRjAwOTVGOEQ1IC8qIFJlbmRlckJ1bmRsZS5jcHAgKi8sCiAJ
CQkJMUM1QUNBREIyNzNBNEVCODAwOTVGOEQ1IC8qIFJlbmRlckJ1bmRsZS5oICovLAotCQkJCTFD
NUFDQUU2MjczQTU1RUYwMDk1RjhENSAvKiBSZW5kZXJCdW5kbGUubW0gKi8sCisJCQkJMUM1QUNB
QUUyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlckJ1bmRsZUVuY29kZXIuY3BwICovLAogCQkJCTFD
NUFDQUE2MjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJCdW5kbGVFbmNvZGVyLmggKi8sCi0JCQkJ
MUM1QUNBQUUyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlckJ1bmRsZUVuY29kZXIubW0gKi8sCisJ
CQkJMUM1QUNBQTQyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBhc3NFbmNvZGVyLmNwcCAqLywK
IAkJCQkxQzVBQ0E5QTI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyUGFzc0VuY29kZXIuaCAqLywK
LQkJCQkxQzVBQ0FBNDI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyUGFzc0VuY29kZXIubW0gKi8s
CisJCQkJMUM1QUNBOTgyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBpcGVsaW5lLmNwcCAqLywK
IAkJCQkxQzVBQ0FBRjI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyUGlwZWxpbmUuaCAqLywKLQkJ
CQkxQzVBQ0E5ODI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyUGlwZWxpbmUubW0gKi8sCisJCQkJ
MUM1QUNBRTgyNzNBNTVGRDAwOTVGOEQ1IC8qIFNhbXBsZXIuY3BwICovLAogCQkJCTFDNUFDQURD
MjczQTRFRkMwMDk1RjhENSAvKiBTYW1wbGVyLmggKi8sCi0JCQkJMUM1QUNBRTgyNzNBNTVGRDAw
OTVGOEQ1IC8qIFNhbXBsZXIubW0gKi8sCisJCQkJMUM1QUNBQjAyNzNBNDI2RDAwOTVGOEQ1IC8q
IFNoYWRlck1vZHVsZS5jcHAgKi8sCiAJCQkJMUNFQkQ4MEQyNzE2QzNEODAwQTUyNTREIC8qIFNo
YWRlck1vZHVsZS5oICovLAotCQkJCTFDNUFDQUIwMjczQTQyNkQwMDk1RjhENSAvKiBTaGFkZXJN
b2R1bGUubW0gKi8sCisJCQkJMUM1QUNBQjMyNzNBNDI2RDAwOTVGOEQ1IC8qIFN1cmZhY2UuY3Bw
ICovLAogCQkJCTFDNUFDQTk2MjczQTQyNkQwMDk1RjhENSAvKiBTdXJmYWNlLmggKi8sCi0JCQkJ
MUM1QUNBQjMyNzNBNDI2RDAwOTVGOEQ1IC8qIFN1cmZhY2UubW0gKi8sCisJCQkJMUM1QUNBQTEy
NzNBNDI2RDAwOTVGOEQ1IC8qIFN3YXBDaGFpbi5jcHAgKi8sCiAJCQkJMUM1QUNBOTcyNzNBNDI2
RDAwOTVGOEQ1IC8qIFN3YXBDaGFpbi5oICovLAotCQkJCTFDNUFDQUExMjczQTQyNkQwMDk1RjhE
NSAvKiBTd2FwQ2hhaW4ubW0gKi8sCisJCQkJMUM1QUNBQjEyNzNBNDI2RDAwOTVGOEQ1IC8qIFRl
eHR1cmUuY3BwICovLAogCQkJCTFDNUFDQTk5MjczQTQyNkQwMDk1RjhENSAvKiBUZXh0dXJlLmgg
Ki8sCi0JCQkJMUM1QUNBQjEyNzNBNDI2RDAwOTVGOEQ1IC8qIFRleHR1cmUubW0gKi8sCisJCQkJ
MUM1QUNBRUEyNzNBNTYwRDAwOTVGOEQ1IC8qIFRleHR1cmVWaWV3LmNwcCAqLywKIAkJCQkxQzVB
Q0FERDI3M0E0RjNEMDA5NUY4RDUgLyogVGV4dHVyZVZpZXcuaCAqLywKLQkJCQkxQzVBQ0FFQTI3
M0E1NjBEMDA5NUY4RDUgLyogVGV4dHVyZVZpZXcubW0gKi8sCiAJCQkJMUNFQkQ3RTYyNzE2QUZC
QTAwQTUyNTREIC8qIFdlYkdQVS5oICovLAogCQkJCTFDQzBDOEM5MjczQTdEODkwMEQwQjQ4MSAv
KiBXZWJHUFUubW9kdWxlbWFwICovLAogCQkJCTFDNUFDQUQyMjczQTRDODYwMDk1RjhENSAvKiBX
ZWJHUFVFeHQuaCAqLywKQEAgLTI3MSwxMyArNTEyLDEzIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQkxQ0VCRDgwNzI3MTZDMkMwMDBBNTI1NEQgLyogQVNULmggKi8sCiAJCQkJMUNFQkQ4MDQyNzE2
QkZBQjAwQTUyNTREIC8qIGNvbmZpZy5oICovLAotCQkJCTMzOEJCMkQzMjdCNkI2NkMwMEUwNjZB
QiAvKiBMZXhlci5oICovLAogCQkJCTMzOEJCMkQ1MjdCNkI2ODcwMEUwNjZBQiAvKiBMZXhlci5j
cHAgKi8sCisJCQkJMzM4QkIyRDMyN0I2QjY2QzAwRTA2NkFCIC8qIExleGVyLmggKi8sCiAJCQkJ
MzM4QkIyRDEyN0I2QjYzRjAwRTA2NkFCIC8qIFNvdXJjZVNwYW4uaCAqLywKLQkJCQkzMzhCQjJD
RDI3QjZCNjAyMDBFMDY2QUIgLyogVG9rZW4uaCAqLywKIAkJCQkzMzhCQjJDRjI3QjZCNjFCMDBF
MDY2QUIgLyogVG9rZW4uY3BwICovLAotCQkJCTFDRUJEN0Y3MjcxNkIzNDQwMEE1MjU0RCAvKiBX
R1NMLmggKi8sCisJCQkJMzM4QkIyQ0QyN0I2QjYwMjAwRTA2NkFCIC8qIFRva2VuLmggKi8sCiAJ
CQkJMUNFQkQ4MDIyNzE2QkY4MjAwQTUyNTREIC8qIFdHU0wuY3BwICovLAorCQkJCTFDRUJEN0Y3
MjcxNkIzNDQwMEE1MjU0RCAvKiBXR1NMLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdHU0w7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzA2LDYgKzU0Nyw3IEBACiAJCQkJMUNFQkQ4
MzAyNzE2Q0IzODAwQTUyNTREIC8qIGxpYmljdWNvcmUudGJkICovLAogCQkJCTFDRUJEODI5Mjcx
NkNBRTcwMEE1MjU0RCAvKiBsaWJXVEYuYSAqLywKIAkJCQkxQzJDRURFRDI3MUU4QTczMDBFREMx
NkYgLyogTWV0YWwuZnJhbWV3b3JrICovLAorCQkJCTFDNTM0RDJEMjdCQ0VFRUUwMDMzN0M3QiAv
KiBRdWFydHpDb3JlLmZyYW1ld29yayAqLywKIAkJCSk7CiAJCQluYW1lID0gRnJhbWV3b3JrczsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMjcsOCArNTY5LDggQEAKIAkJCWlzYSA9
IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
IAkJCWZpbGVzID0gKAotCQkJCTMzOEJCMkQyMjdCNkI2M0YwMEUwNjZBQiAvKiBTb3VyY2VTcGFu
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzhCQjJENDI3QjZCNjZDMDBFMDY2QUIgLyogTGV4ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTMzOEJCMkQyMjdCNkI2M0YwMEUwNjZBQiAvKiBTb3VyY2VT
cGFuLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzhCQjJDRTI3QjZCNjAyMDBFMDY2QUIgLyogVG9r
ZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRUJEN0Y4MjcxNkIzNDQwMEE1MjU0RCAvKiBXR1NM
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CkBAIC0zNTksNiArNjAxLDcgQEAKIAkJCWlzYSA9IFBC
WE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxQ0VCRDdFQTI3MTZB
RkJBMDBBNTI1NEQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgIldlYkdQVSIgKi87CiAJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxQzUzNEMxQzI3QkNEOTBD
MDAzMzdDN0IgLyogR2VuZXJhdGUgTWV0YWwtY3BwIEhlYWRlciAqLywKIAkJCQkxQ0VCRDdERTI3
MTZBRkJBMDBBNTI1NEQgLyogSGVhZGVycyAqLywKIAkJCQkxQ0VCRDdERjI3MTZBRkJBMDBBNTI1
NEQgLyogU291cmNlcyAqLywKIAkJCQkxQ0VCRDdFMDI3MTZBRkJBMDBBNTI1NEQgLyogRnJhbWV3
b3JrcyAqLywKQEAgLTQ1MCw2ICs2OTMsMTA2IEBACiAvKiBFbmQgUEJYUmVzb3VyY2VzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0
aW9uICovCisJCTFDNTM0QzFDMjdCQ0Q5MEMwMDMzN0M3QiAvKiBHZW5lcmF0ZSBNZXRhbC1jcHAg
SGVhZGVyICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0
RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JP
T1QpL1dlYkdQVS9tZXRhbC1jcHAvU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkiLAor
CQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXJyYXku
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNBdXRv
cmVsZWFzZVBvb2wuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNCdW5kbGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNEYXRhLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9G
b3VuZGF0aW9uL05TRGF0ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAv
Rm91bmRhdGlvbi9OU0RlZmluZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNEaWN0aW9uYXJ5LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRW51bWVyYXRvci5ocHAiLAorCQkJCSIkKFNSQ1JPT1Qp
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vycm9yLmhwcCIsCisJCQkJIiQoU1JDUk9P
VCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTG9jay5ocHAiLAorCQkJCSIkKFNSQ1JP
T1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU051bWJlci5ocHAiLAor
CQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iakNSdW50aW1l
LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2Jq
ZWN0LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
UHJpdmF0ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU1Byb2Nlc3NJbmZvLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9G
b3VuZGF0aW9uL05TUmFuZ2UuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3Bw
L0ZvdW5kYXRpb24vTlNTdHJpbmcuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNUeXBlcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRh
bC1jcHAvRm91bmRhdGlvbi9OU1VSTC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcCIsCisJCQkJIiQoU1JDUk9P
VCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5k
RW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
QWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJpbmFyeUFyY2hpdmUuaHBwIiwKKwkJCQkiJChT
UkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdFBhc3MuaHBw
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJ1ZmZlci5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1hbmFn
ZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1
cmVTY29wZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
Q29tbWFuZEJ1ZmZlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMQ29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTENvbW1hbmRRdWV1ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGFzcy5ocHAiLAorCQkJCSIk
KFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcCIs
CisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb3VudGVycy5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVmaW5lcy5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVwdGhTdGVuY2ls
LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXZpY2Uu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERyYXdhYmxl
LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEeW5hbWlj
TGlicmFyeS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RXZlbnQuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZl
bmNlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5j
dGlvbkNvbnN0YW50VmFsdWVzLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uSGFuZGxlLmhwcCIsCisJCQkJIiQoU1JDUk9P
VCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAiLAorCQkJCSIkKFNS
Q1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwIiwK
KwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEhlYWRlckJyaWRnZS5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RDb21t
YW5kQnVmZmVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExJbmRpcmVjdENvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcCIsCisJCQkJIiQo
U1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaWJyYXJ5LmhwcCIsCisJCQkJIiQo
U1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaW5rZWRGdW5jdGlvbnMuaHBwIiwK
KwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBhcmFsbGVsUmVuZGVy
Q29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFBpcGVsaW5lLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExQaXhlbEZvcm1hdC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMUHJpdmF0ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQo
U1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQYXNzLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQaXBlbGluZS5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2UuaHBw
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3Rh
dGVDb21tYW5kRW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFNhbXBsZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUZXh0dXJlLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUeXBlcy5ocHAiLAorCQkJCSIk
KFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmVydGV4RGVzY3JpcHRvci5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmlzaWJsZUZ1bmN0
aW9uVGFibGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01l
dGFsLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NB
RGVmaW5lcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29y
ZS9DQU1ldGFsRHJhd2FibGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3Bw
L1F1YXJ0ekNvcmUvQ0FQcml2YXRlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFs
LWNwcC9RdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwIiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVy
YXRlIE1ldGFsLWNwcCBIZWFkZXIiOworCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7
CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwuaHBwIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJ
CQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCAke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNv
dXJjZXMvV2ViR1BVL21ldGFsLWNwcC9NZXRhbFxuXG5jZCBXZWJHUFUvbWV0YWwtY3BwXG4uL1Np
bmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5IC1vICR7QlVJTFRfUFJPRFVDVFNfRElSfS9E
ZXJpdmVkU291cmNlcy9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01ldGFsLmhwcCBGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaHBwIFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAgTWV0YWwvTWV0YWwuaHBw
XG4iOworCQl9OwogCQk2NTc3RkZDODI3NkFDQTA2MDAxMUFFQzggLyogQ3JlYXRlIFN5bWxpbmsg
dG8gQWx0IFJvb3QgUGF0aCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFz
ZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDg7CkBAIC00ODQsMjkgKzgyNywzMCBAQAogCQkJaXNh
ID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OwogCQkJZmlsZXMgPSAoCi0JCQkJMUM1QUNBQzcyNzNBNDI2RDAwOTVGOEQ1IC8qIEFkYXB0ZXIu
bW0gaW4gU291cmNlcyAqLywKLQkJCQkxQzVBQ0FERjI3M0E1NUFGMDA5NUY4RDUgLyogQmluZEdy
b3VwLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM1QUNBRTEyNzNBNTVDMTAwOTVGOEQ1IC8qIEJp
bmRHcm91cExheW91dC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFDNUFDQUJCMjczQTQyNkQwMDk1
RjhENSAvKiBCdWZmZXIubW0gaW4gU291cmNlcyAqLywKLQkJCQkxQzVBQ0FFMzI3M0E1NUNEMDA5
NUY4RDUgLyogQ29tbWFuZEJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFDNUFDQUM5Mjcz
QTQyNkUwMDk1RjhENSAvKiBDb21tYW5kRW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFD
NUFDQUM2MjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGFzc0VuY29kZXIubW0gaW4gU291cmNl
cyAqLywKLQkJCQkxQzVBQ0FDMDI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBpcGVsaW5lLm1t
IGluIFNvdXJjZXMgKi8sCi0JCQkJMUM1QUNBQzEyNzNBNDI2RDAwOTVGOEQ1IC8qIERldmljZS5t
bSBpbiBTb3VyY2VzICovLAotCQkJCTFDNUFDQTk0MjczQTQxQzIwMDk1RjhENSAvKiBJbnN0YW5j
ZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFDNUFDQUU1MjczQTU1REQwMDk1RjhENSAvKiBQaXBl
bGluZUxheW91dC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFDNUFDQUJEMjczQTQyNkQwMDk1RjhE
NSAvKiBRdWVyeVNldC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFDNUFDQUNCMjczQTQyNkUwMDk1
RjhENSAvKiBRdWV1ZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFDNUFDQUU3MjczQTU1RUYwMDk1
RjhENSAvKiBSZW5kZXJCdW5kbGUubW0gaW4gU291cmNlcyAqLywKLQkJCQkxQzVBQ0FDQzI3M0E0
MjZFMDA5NUY4RDUgLyogUmVuZGVyQnVuZGxlRW5jb2Rlci5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CTFDNUFDQUMyMjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQYXNzRW5jb2Rlci5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCTFDNUFDQUI2MjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQaXBlbGluZS5t
bSBpbiBTb3VyY2VzICovLAotCQkJCTFDNUFDQUU5MjczQTU1RkQwMDk1RjhENSAvKiBTYW1wbGVy
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM1QUNBQ0UyNzNBNDI2RTAwOTVGOEQ1IC8qIFNoYWRl
ck1vZHVsZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFDNUFDQUQxMjczQTQyNkUwMDk1RjhENSAv
KiBTdXJmYWNlLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM1QUNBQkYyNzNBNDI2RDAwOTVGOEQ1
IC8qIFN3YXBDaGFpbi5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFDNUFDQUNGMjczQTQyNkUwMDk1
RjhENSAvKiBUZXh0dXJlLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMUM1QUNBRUIyNzNBNTYwRDAw
OTVGOEQ1IC8qIFRleHR1cmVWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQzcyNzNB
NDI2RDAwOTVGOEQ1IC8qIEFkYXB0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBREYy
NzNBNTVBRjAwOTVGOEQ1IC8qIEJpbmRHcm91cC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzVB
Q0FFMTI3M0E1NUMxMDA5NUY4RDUgLyogQmluZEdyb3VwTGF5b3V0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTFDNUFDQUJCMjczQTQyNkQwMDk1RjhENSAvKiBCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMUM1QUNBRTMyNzNBNTVDRDAwOTVGOEQ1IC8qIENvbW1hbmRCdWZmZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQzkyNzNBNDI2RTAwOTVGOEQ1IC8qIENvbW1hbmRFbmNv
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFDQUM2MjczQTQyNkQwMDk1RjhENSAvKiBD
b21wdXRlUGFzc0VuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQzAyNzNBNDI2
RDAwOTVGOEQ1IC8qIENvbXB1dGVQaXBlbGluZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzVB
Q0FDMTI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFD
NUFDQTk0MjczQTQxQzIwMDk1RjhENSAvKiBJbnN0YW5jZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkxQzUzNEQyODI3QkNFMDM2MDAzMzdDN0IgLyogTWV0YWwtY3BwLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTFDNUFDQUU1MjczQTU1REQwMDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxQzVBQ0FCRDI3M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQ0IyNzNBNDI2RTAwOTVGOEQ1IC8qIFF1ZXVlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFDQUU3MjczQTU1RUYwMDk1RjhENSAvKiBSZW5kZXJC
dW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQ0MyNzNBNDI2RTAwOTVGOEQ1IC8q
IFJlbmRlckJ1bmRsZUVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQzIyNzNB
NDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBhc3NFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTFDNUFDQUI2MjczQTQyNkQwMDk1RjhENSAvKiBSZW5kZXJQaXBlbGluZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkxQzVBQ0FFOTI3M0E1NUZEMDA5NUY4RDUgLyogU2FtcGxlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkxQzVBQ0FDRTI3M0E0MjZFMDA5NUY4RDUgLyogU2hhZGVyTW9kdWxlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFDQUQxMjczQTQyNkUwMDk1RjhENSAvKiBTdXJmYWNl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDNUFDQUJGMjczQTQyNkQwMDk1RjhENSAvKiBTd2Fw
Q2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBQ0YyNzNBNDI2RTAwOTVGOEQ1IC8q
IFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1QUNBRUIyNzNBNTYwRDAwOTVGOEQ1
IC8qIFRleHR1cmVWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNTE1LDggKzg1OSw4IEBACiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMzM4QkIy
RDYyN0I2QjY4NzAwRTA2NkFCIC8qIExleGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFDRUJE
ODAzMjcxNkJGODIwMEE1MjU0RCAvKiBXR1NMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzOEJC
MkQwMjdCNkI2MUIwMEUwNjZBQiAvKiBUb2tlbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQ0VC
RDgwMzI3MTZCRjgyMDBBNTI1NEQgLyogV0dTTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuY3BwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQWRhcHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFjYjFhNjM5M2ZlZTU1MzQ0NzJlMzBiYTlmZWY1
Y2NiODI2NmU3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0
ZXIuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFkYXB0ZXIuaCIK
KworI2luY2x1ZGUgIkRldmljZS5oIgorI2luY2x1ZGUgIldlYkdQVUV4dC5oIgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK0FkYXB0ZXI6OkFk
YXB0ZXIoTVRMOjpEZXZpY2UmIGRldmljZSkKKyAgICA6IG1fZGV2aWNlKCZkZXZpY2UpCit7Cit9
CisKK0FkYXB0ZXI6On5BZGFwdGVyKCkgPSBkZWZhdWx0OworCitib29sIEFkYXB0ZXI6OmdldExp
bWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzKiBsaW1pdHMpCit7CisgICAgVU5VU0VEX1BBUkFNKGxp
bWl0cyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQWRhcHRlcjo6Z2V0UHJvcGVydGll
cyhXR1BVQWRhcHRlclByb3BlcnRpZXMqIHByb3BlcnRpZXMpCit7CisgICAgVU5VU0VEX1BBUkFN
KHByb3BlcnRpZXMpOworfQorCitib29sIEFkYXB0ZXI6Omhhc0ZlYXR1cmUoV0dQVUZlYXR1cmVO
YW1lIGZlYXR1cmUpCit7CisgICAgVU5VU0VEX1BBUkFNKGZlYXR1cmUpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworV0dQVUZlYXR1cmVOYW1lIEFkYXB0ZXI6OmdldEZlYXR1cmVBdEluZGV4KHNp
emVfdCBpbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5kZXgpOworICAgIHJldHVybiBXR1BV
RmVhdHVyZU5hbWVfVW5kZWZpbmVkOworfQorCit2b2lkIEFkYXB0ZXI6OnJlcXVlc3REZXZpY2Uo
Y29uc3QgV0dQVURldmljZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIFdURjo6RnVuY3Rpb248dm9p
ZChXR1BVUmVxdWVzdERldmljZVN0YXR1cywgUmVmPERldmljZT4mJiwgY29uc3QgY2hhciopPiYm
IGNhbGxiYWNrKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICBVTlVTRURf
UEFSQU0oY2FsbGJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1
QWRhcHRlclJlbGVhc2UoV0dQVUFkYXB0ZXIgYWRhcHRlcikKK3sKKyAgICBkZWxldGUgYWRhcHRl
cjsKK30KKworYm9vbCB3Z3B1QWRhcHRlckdldExpbWl0cyhXR1BVQWRhcHRlciBhZGFwdGVyLCBX
R1BVU3VwcG9ydGVkTGltaXRzKiBsaW1pdHMpCit7CisgICAgcmV0dXJuIGFkYXB0ZXItPmFkYXB0
ZXItPmdldExpbWl0cyhsaW1pdHMpOworfQorCit2b2lkIHdncHVBZGFwdGVyR2V0UHJvcGVydGll
cyhXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVQWRhcHRlclByb3BlcnRpZXMqIHByb3BlcnRpZXMp
Cit7CisgICAgYWRhcHRlci0+YWRhcHRlci0+Z2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKTsKK30K
KworYm9vbCB3Z3B1QWRhcHRlckhhc0ZlYXR1cmUoV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVUZl
YXR1cmVOYW1lIGZlYXR1cmUpCit7CisgICAgcmV0dXJuIGFkYXB0ZXItPmFkYXB0ZXItPmhhc0Zl
YXR1cmUoZmVhdHVyZSk7Cit9CisKK1dHUFVGZWF0dXJlTmFtZSB3Z3B1QWRhcHRlckdldEZlYXR1
cmVBdEluZGV4KFdHUFVBZGFwdGVyIGFkYXB0ZXIsIHNpemVfdCBpbmRleCkKK3sKKyAgICByZXR1
cm4gYWRhcHRlci0+YWRhcHRlci0+Z2V0RmVhdHVyZUF0SW5kZXgoaW5kZXgpOworfQorCit2b2lk
IHdncHVBZGFwdGVyUmVxdWVzdERldmljZShXR1BVQWRhcHRlciBhZGFwdGVyLCBjb25zdCBXR1BV
RGV2aWNlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVVJlcXVlc3REZXZpY2VDYWxsYmFjayBj
YWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCit7CisgICAgYWRhcHRlci0+YWRhcHRlci0+cmVxdWVz
dERldmljZShkZXNjcmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVVJlcXVlc3REZXZp
Y2VTdGF0dXMgc3RhdHVzLCBSZWY8V2ViR1BVOjpEZXZpY2U+JiYgZGV2aWNlLCBjb25zdCBjaGFy
KiBtZXNzYWdlKSB7CisgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgbmV3IFdHUFVEZXZpY2VJbXBs
IHsgV1RGTW92ZShkZXZpY2UpIH0sIG1lc3NhZ2UsIHVzZXJkYXRhKTsKKyAgICB9KTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0FkYXB0ZXIuaAppbmRleCBlN2Q0MzQ5ODg2ZTY3OTFjNWM1YmQ4MzczMzRiYzU1MmIx
YmRlZDA0Li5mYjBjM2ZmYmQ2MTZkZjQ1Y2YwM2M0ZWEzMjI4YWFiZDZmZWU3Y2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQWRhcHRlci5oCkBAIC0yNSwxMSArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bXBvcnQgIldlYkdQVS5oIgotI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbXBvcnQgPHd0
Zi9GdW5jdGlvbi5oPgotI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlICJXZWJHUFUuaCIKKyNpbmNsdWRlIDxNZXRhbC9NZXRhbC5ocHA+Cisj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNp
bmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCkBAIC0zOCw5ICs0MCw5
IEBAIGNsYXNzIERldmljZTsKIGNsYXNzIEFkYXB0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBZGFw
dGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxBZGFwdGVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8QWRhcHRlcj4gY3JlYXRlKE1U
TDo6RGV2aWNlJiBkZXZpY2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBB
ZGFwdGVyKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBZGFwdGVyKGRldmljZSkp
OwogICAgIH0KIAogICAgIH5BZGFwdGVyKCk7CkBAIC01Miw3ICs1NCw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlcXVlc3REZXZpY2UoY29uc3QgV0dQVURldmljZURlc2NyaXB0b3IqLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFJlZjxEZXZpY2U+JiYsIGNvbnN0
IGNoYXIqKT4mJiBjYWxsYmFjayk7CiAKIHByaXZhdGU6Ci0gICAgQWRhcHRlcigpOworICAgIEFk
YXB0ZXIoTVRMOjpEZXZpY2UmKTsKKworICAgIFJldGFpblB0cjxNVEw6OkRldmljZT4gbV9kZXZp
Y2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0FkYXB0ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTFiYjI4ZTI3ZTBkYzNiNzU4ZTZkOWU3NmM2
NzNlZTVjMzE1YTQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KKysrIC9kZXYvbnVsbApAQCAtMSwx
MDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQWRhcHRlci5oIgotCi0jaW1wb3J0ICJEZXZp
Y2UuaCIKLSNpbXBvcnQgIldlYkdQVUV4dC5oIgotI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5o
PgotCi1uYW1lc3BhY2UgV2ViR1BVIHsKLQotQWRhcHRlcjo6QWRhcHRlcigpID0gZGVmYXVsdDsK
LQotQWRhcHRlcjo6fkFkYXB0ZXIoKSA9IGRlZmF1bHQ7Ci0KLWJvb2wgQWRhcHRlcjo6Z2V0TGlt
aXRzKFdHUFVTdXBwb3J0ZWRMaW1pdHMqIGxpbWl0cykKLXsKLSAgICBVTlVTRURfUEFSQU0obGlt
aXRzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBBZGFwdGVyOjpnZXRQcm9wZXJ0aWVz
KFdHUFVBZGFwdGVyUHJvcGVydGllcyogcHJvcGVydGllcykKLXsKLSAgICBVTlVTRURfUEFSQU0o
cHJvcGVydGllcyk7Ci19Ci0KLWJvb2wgQWRhcHRlcjo6aGFzRmVhdHVyZShXR1BVRmVhdHVyZU5h
bWUgZmVhdHVyZSkKLXsKLSAgICBVTlVTRURfUEFSQU0oZmVhdHVyZSk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1XR1BVRmVhdHVyZU5hbWUgQWRhcHRlcjo6Z2V0RmVhdHVyZUF0SW5kZXgoc2l6
ZV90IGluZGV4KQotewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgcmV0dXJuIFdHUFVG
ZWF0dXJlTmFtZV9VbmRlZmluZWQ7Ci19Ci0KLXZvaWQgQWRhcHRlcjo6cmVxdWVzdERldmljZShj
b25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV1RGOjpGdW5jdGlvbjx2b2lk
KFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzLCBSZWY8RGV2aWNlPiYmLCBjb25zdCBjaGFyKik+JiYg
Y2FsbGJhY2spCi17Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9Q
QVJBTShjYWxsYmFjayk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkdQVQotCi12b2lkIHdncHVB
ZGFwdGVyUmVsZWFzZShXR1BVQWRhcHRlciBhZGFwdGVyKQotewotICAgIGRlbGV0ZSBhZGFwdGVy
OwotfQotCi1ib29sIHdncHVBZGFwdGVyR2V0TGltaXRzKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdH
UFVTdXBwb3J0ZWRMaW1pdHMqIGxpbWl0cykKLXsKLSAgICByZXR1cm4gYWRhcHRlci0+YWRhcHRl
ci0+Z2V0TGltaXRzKGxpbWl0cyk7Ci19Ci0KLXZvaWQgd2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVz
KFdHUFVBZGFwdGVyIGFkYXB0ZXIsIFdHUFVBZGFwdGVyUHJvcGVydGllcyogcHJvcGVydGllcykK
LXsKLSAgICBhZGFwdGVyLT5hZGFwdGVyLT5nZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpOwotfQot
Ci1ib29sIHdncHVBZGFwdGVySGFzRmVhdHVyZShXR1BVQWRhcHRlciBhZGFwdGVyLCBXR1BVRmVh
dHVyZU5hbWUgZmVhdHVyZSkKLXsKLSAgICByZXR1cm4gYWRhcHRlci0+YWRhcHRlci0+aGFzRmVh
dHVyZShmZWF0dXJlKTsKLX0KLQotV0dQVUZlYXR1cmVOYW1lIHdncHVBZGFwdGVyR2V0RmVhdHVy
ZUF0SW5kZXgoV0dQVUFkYXB0ZXIgYWRhcHRlciwgc2l6ZV90IGluZGV4KQotewotICAgIHJldHVy
biBhZGFwdGVyLT5hZGFwdGVyLT5nZXRGZWF0dXJlQXRJbmRleChpbmRleCk7Ci19Ci0KLXZvaWQg
d2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlKFdHUFVBZGFwdGVyIGFkYXB0ZXIsIGNvbnN0IFdHUFVE
ZXZpY2VEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXR1BVUmVxdWVzdERldmljZUNhbGxiYWNrIGNh
bGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKLXsKLSAgICBhZGFwdGVyLT5hZGFwdGVyLT5yZXF1ZXN0
RGV2aWNlKGRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVUmVxdWVzdERldmlj
ZVN0YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBuZXcgV0dQVURldmljZUltcGwg
eyBXVEZNb3ZlKGRldmljZSkgfSwgbWVzc2FnZSwgdXNlcmRhdGEpOwotICAgIH0pOwotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0JpbmRHcm91cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhmNWU3ODYzNTYzODJhNTE4ZGIy
NGU4Yjk4YjdjMDZhZWNjZThjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0JpbmRHcm91cC5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJC
aW5kR3JvdXAuaCIKKworI2luY2x1ZGUgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BV
IHsKKworQmluZEdyb3VwOjpCaW5kR3JvdXAoKSA9IGRlZmF1bHQ7CisKK0JpbmRHcm91cDo6fkJp
bmRHcm91cCgpID0gZGVmYXVsdDsKKwordm9pZCBCaW5kR3JvdXA6OnNldExhYmVsKGNvbnN0IGNo
YXIqIGxhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Cit9CisKK30KKwordm9pZCB3
Z3B1QmluZEdyb3VwUmVsZWFzZShXR1BVQmluZEdyb3VwIGJpbmRHcm91cCkKK3sKKyAgICBkZWxl
dGUgYmluZEdyb3VwOworfQorCit2b2lkIHdncHVCaW5kR3JvdXBTZXRMYWJlbChXR1BVQmluZEdy
b3VwIGJpbmRHcm91cCwgY29uc3QgY2hhciogbGFiZWwpCit7CisgICAgYmluZEdyb3VwLT5iaW5k
R3JvdXAtPnNldExhYmVsKGxhYmVsKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0JpbmRHcm91cC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLmgKaW5kZXgg
MjI2NzEyMjEzYjQ3OTFlYzY1NjNlNjhkNmUxOWU1Y2FiYmM2YzQzYy4uNjJkYTc5ODdmOGM2YjJm
ZjU4YzZmMjM4MTFlMWNkNTU1YjFiZmJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvQmluZEdyb3VwLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLmgKQEAg
LTI1LDEwICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2ltcG9ydCAiV2ViR1BVLmgiCi0j
aW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJXZWJHUFUuaCIKKyNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQmluZEdyb3VwLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmI3NDRkZWM2ZTNkYjFlMTBhODVmOTc1NDMx
MTFhMzkxZTFlNWRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkJpbmRHcm91cC5oIgotCi0jaW1wb3J0ICJX
ZWJHUFVFeHQuaCIKLQotbmFtZXNwYWNlIFdlYkdQVSB7Ci0KLUJpbmRHcm91cDo6QmluZEdyb3Vw
KCkgPSBkZWZhdWx0OwotCi1CaW5kR3JvdXA6On5CaW5kR3JvdXAoKSA9IGRlZmF1bHQ7Ci0KLXZv
aWQgQmluZEdyb3VwOjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkKLXsKLSAgICBVTlVTRURf
UEFSQU0obGFiZWwpOwotfQotCi19Ci0KLXZvaWQgd2dwdUJpbmRHcm91cFJlbGVhc2UoV0dQVUJp
bmRHcm91cCBiaW5kR3JvdXApCi17Ci0gICAgZGVsZXRlIGJpbmRHcm91cDsKLX0KLQotdm9pZCB3
Z3B1QmluZEdyb3VwU2V0TGFiZWwoV0dQVUJpbmRHcm91cCBiaW5kR3JvdXAsIGNvbnN0IGNoYXIq
IGxhYmVsKQotewotICAgIGJpbmRHcm91cC0+YmluZEdyb3VwLT5zZXRMYWJlbChsYWJlbCk7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuY3BwIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNThk
NjNhMDZmNzM4NWY4MGZkNjM5ZjA4MzlkMjllZDFhMWE0YjQ1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0LmNwcApAQCAtMCwwICsxLDUyIEBA
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkJpbmRHcm91cExheW91dC5oIgorCisjaW5jbHVkZSAiV2Vi
R1BVRXh0LmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitCaW5kR3JvdXBMYXlvdXQ6OkJpbmRH
cm91cExheW91dCgpID0gZGVmYXVsdDsKKworQmluZEdyb3VwTGF5b3V0Ojp+QmluZEdyb3VwTGF5
b3V0KCkgPSBkZWZhdWx0OworCit2b2lkIEJpbmRHcm91cExheW91dDo6c2V0TGFiZWwoY29uc3Qg
Y2hhciogbGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKK30KKworfQorCit2b2lk
IHdncHVCaW5kR3JvdXBMYXlvdXRSZWxlYXNlKFdHUFVCaW5kR3JvdXBMYXlvdXQgYmluZEdyb3Vw
TGF5b3V0KQoreworICAgIGRlbGV0ZSBiaW5kR3JvdXBMYXlvdXQ7Cit9CisKK3ZvaWQgd2dwdUJp
bmRHcm91cExheW91dFNldExhYmVsKFdHUFVCaW5kR3JvdXBMYXlvdXQgYmluZEdyb3VwTGF5b3V0
LCBjb25zdCBjaGFyKiBsYWJlbCkKK3sKKyAgICBiaW5kR3JvdXBMYXlvdXQtPmJpbmRHcm91cExh
eW91dC0+c2V0TGFiZWwobGFiZWwpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvQmluZEdyb3VwTGF5b3V0LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlv
dXQuaAppbmRleCBjNDQwMjRlNDc4MzhlYjRmNjJlOGNkNjA5ZGYzZDRmZTc3YmJjNGRiLi5kMDZm
YTc1N2I5YjI1NjBhMzhiZTE4ODRjMmQ2ZDdmNjVmMjI0OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9CaW5kR3JvdXBMYXlvdXQuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW1wb3J0ICJXZWJHUFUuaCIKLSNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW1wb3J0
IDx3dGYvUmVmLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIldlYkdQ
VS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0gYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGIzNzM0ODhhZjg1MTM5NWYxMWEwODYzY2IzODU0ZTBlNTNiNTQzYzQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvQmluZEdyb3VwTGF5b3V0Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiQmluZEdyb3VwTGF5b3V0LmgiCi0KLSNpbXBvcnQgIldlYkdQVUV4dC5o
IgotCi1uYW1lc3BhY2UgV2ViR1BVIHsKLQotQmluZEdyb3VwTGF5b3V0OjpCaW5kR3JvdXBMYXlv
dXQoKSA9IGRlZmF1bHQ7Ci0KLUJpbmRHcm91cExheW91dDo6fkJpbmRHcm91cExheW91dCgpID0g
ZGVmYXVsdDsKLQotdm9pZCBCaW5kR3JvdXBMYXlvdXQ6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxh
YmVsKQotewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Ci19Ci0KLX0KLQotdm9pZCB3Z3B1Qmlu
ZEdyb3VwTGF5b3V0UmVsZWFzZShXR1BVQmluZEdyb3VwTGF5b3V0IGJpbmRHcm91cExheW91dCkK
LXsKLSAgICBkZWxldGUgYmluZEdyb3VwTGF5b3V0OwotfQotCi12b2lkIHdncHVCaW5kR3JvdXBM
YXlvdXRTZXRMYWJlbChXR1BVQmluZEdyb3VwTGF5b3V0IGJpbmRHcm91cExheW91dCwgY29uc3Qg
Y2hhciogbGFiZWwpCi17Ci0gICAgYmluZEdyb3VwTGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQtPnNl
dExhYmVsKGxhYmVsKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxNTky
N2U2ZTEzYmFkYTU5ODg1N2ViYjFmOWRiYWExODliMTFiZGEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkJ1ZmZlci5oIgorCisjaW5jbHVkZSAiV2ViR1BVRXh0LmgiCisKK25hbWVz
cGFjZSBXZWJHUFUgeworCitCdWZmZXI6OkJ1ZmZlcigpID0gZGVmYXVsdDsKKworQnVmZmVyOjp+
QnVmZmVyKCkgPSBkZWZhdWx0OworCit2b2lkIEJ1ZmZlcjo6ZGVzdHJveSgpCit7Cit9CisKK2Nv
bnN0IHZvaWQqIEJ1ZmZlcjo6Z2V0Q29uc3RNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXpl
X3Qgc2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKKyAgICBVTlVTRURfUEFSQU0o
c2l6ZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQqIEJ1ZmZlcjo6Z2V0TWFwcGVk
UmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCit7CisgICAgVU5VU0VEX1BBUkFNKG9m
ZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIHJldHVybiBudWxscHRyOworfQor
Cit2b2lkIEJ1ZmZlcjo6bWFwQXN5bmMoV0dQVU1hcE1vZGVGbGFncyBtb2RlLCBzaXplX3Qgb2Zm
c2V0LCBzaXplX3Qgc2l6ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVCdWZmZXJNYXBBc3luY1N0
YXR1cyk+JiYgY2FsbGJhY2spCit7CisgICAgVU5VU0VEX1BBUkFNKG1vZGUpOworICAgIFVOVVNF
RF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICBVTlVTRURfUEFS
QU0oY2FsbGJhY2spOworfQorCit2b2lkIEJ1ZmZlcjo6dW5tYXAoKQoreworfQorCit2b2lkIEJ1
ZmZlcjo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxh
YmVsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdUJ1ZmZlclJlbGVh
c2UoV0dQVUJ1ZmZlciBidWZmZXIpCit7CisgICAgZGVsZXRlIGJ1ZmZlcjsKK30KKwordm9pZCB3
Z3B1QnVmZmVyRGVzdHJveShXR1BVQnVmZmVyIGJ1ZmZlcikKK3sKKyAgICBidWZmZXItPmJ1ZmZl
ci0+ZGVzdHJveSgpOworfQorCitjb25zdCB2b2lkKiB3Z3B1QnVmZmVyR2V0Q29uc3RNYXBwZWRS
YW5nZShXR1BVQnVmZmVyIGJ1ZmZlciwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCit7Cisg
ICAgcmV0dXJuIGJ1ZmZlci0+YnVmZmVyLT5nZXRDb25zdE1hcHBlZFJhbmdlKG9mZnNldCwgc2l6
ZSk7Cit9CisKK3ZvaWQqIHdncHVCdWZmZXJHZXRNYXBwZWRSYW5nZShXR1BVQnVmZmVyIGJ1ZmZl
ciwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIGJ1ZmZlci0+YnVm
ZmVyLT5nZXRNYXBwZWRSYW5nZShvZmZzZXQsIHNpemUpOworfQorCit2b2lkIHdncHVCdWZmZXJN
YXBBc3luYyhXR1BVQnVmZmVyIGJ1ZmZlciwgV0dQVU1hcE1vZGVGbGFncyBtb2RlLCBzaXplX3Qg
b2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV0dQVUJ1ZmZlck1hcENhbGxiYWNrIGNhbGxiYWNrLCB2b2lk
KiB1c2VyZGF0YSkKK3sKKyAgICBidWZmZXItPmJ1ZmZlci0+bWFwQXN5bmMobW9kZSwgb2Zmc2V0
LCBzaXplLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVUJ1ZmZlck1hcEFzeW5jU3RhdHVzIHN0
YXR1cykgeworICAgICAgICBjYWxsYmFjayhzdGF0dXMsIHVzZXJkYXRhKTsKKyAgICB9KTsKK30K
Kwordm9pZCB3Z3B1QnVmZmVyVW5tYXAoV0dQVUJ1ZmZlciBidWZmZXIpCit7CisgICAgYnVmZmVy
LT5idWZmZXItPnVubWFwKCk7Cit9CisKK3ZvaWQgd2dwdUJ1ZmZlclNldExhYmVsKFdHUFVCdWZm
ZXIgYnVmZmVyLCBjb25zdCBjaGFyKiBsYWJlbCkKK3sKKyAgICBidWZmZXItPmJ1ZmZlci0+c2V0
TGFiZWwobGFiZWwpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVy
LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaAppbmRleCBjMzRiN2NjMDdlMGVjMTBk
MGY4NzE3NjQyMjI3NmMzN2NjMTM1NDczLi43ZGY2OTdjMmE3Y2FmNjBhNjQyNTA5ZTRmMmRiYzFk
ZTcwMjIyNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaApAQCAtMjUsMTEgKzI1LDExIEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW1wb3J0ICJXZWJHUFUuaCIKLSNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0jaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KLSNpbXBvcnQgPHd0Zi9SZWYuaD4KLSNpbXBv
cnQgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiV2ViR1BVLmgiCisjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkdQVSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbSBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY2
Mzk3YTkzMDlhZTYwMDAxZjBjZWQ4M2I0YjBkZDg0MGZiNzc3MC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQnVm
ZmVyLmgiCi0KLSNpbXBvcnQgIldlYkdQVUV4dC5oIgotCi1uYW1lc3BhY2UgV2ViR1BVIHsKLQot
QnVmZmVyOjpCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0KLUJ1ZmZlcjo6fkJ1ZmZlcigpID0gZGVmYXVs
dDsKLQotdm9pZCBCdWZmZXI6OmRlc3Ryb3koKQotewotfQotCi1jb25zdCB2b2lkKiBCdWZmZXI6
OmdldENvbnN0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCi17Ci0gICAg
VU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOwotICAgIHJldHVy
biBudWxscHRyOwotfQotCi12b2lkKiBCdWZmZXI6OmdldE1hcHBlZFJhbmdlKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBzaXplKQotewotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShzaXplKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBCdWZmZXI6Om1h
cEFzeW5jKFdHUFVNYXBNb2RlRmxhZ3MgbW9kZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUs
IFdURjo6RnVuY3Rpb248dm9pZChXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXMpPiYmIGNhbGxiYWNr
KQotewotICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKLX0K
LQotdm9pZCBCdWZmZXI6OnVubWFwKCkKLXsKLX0KLQotdm9pZCBCdWZmZXI6OnNldExhYmVsKGNv
bnN0IGNoYXIqIGxhYmVsKQotewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkdQVQotCi12b2lkIHdncHVCdWZmZXJSZWxlYXNlKFdHUFVCdWZmZXIgYnVm
ZmVyKQotewotICAgIGRlbGV0ZSBidWZmZXI7Ci19Ci0KLXZvaWQgd2dwdUJ1ZmZlckRlc3Ryb3ko
V0dQVUJ1ZmZlciBidWZmZXIpCi17Ci0gICAgYnVmZmVyLT5idWZmZXItPmRlc3Ryb3koKTsKLX0K
LQotY29uc3Qgdm9pZCogd2dwdUJ1ZmZlckdldENvbnN0TWFwcGVkUmFuZ2UoV0dQVUJ1ZmZlciBi
dWZmZXIsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQotewotICAgIHJldHVybiBidWZmZXIt
PmJ1ZmZlci0+Z2V0Q29uc3RNYXBwZWRSYW5nZShvZmZzZXQsIHNpemUpOwotfQotCi12b2lkKiB3
Z3B1QnVmZmVyR2V0TWFwcGVkUmFuZ2UoV0dQVUJ1ZmZlciBidWZmZXIsIHNpemVfdCBvZmZzZXQs
IHNpemVfdCBzaXplKQotewotICAgIHJldHVybiBidWZmZXItPmJ1ZmZlci0+Z2V0TWFwcGVkUmFu
Z2Uob2Zmc2V0LCBzaXplKTsKLX0KLQotdm9pZCB3Z3B1QnVmZmVyTWFwQXN5bmMoV0dQVUJ1ZmZl
ciBidWZmZXIsIFdHUFVNYXBNb2RlRmxhZ3MgbW9kZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNp
emUsIFdHUFVCdWZmZXJNYXBDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCi17Ci0g
ICAgYnVmZmVyLT5idWZmZXItPm1hcEFzeW5jKG1vZGUsIG9mZnNldCwgc2l6ZSwgW2NhbGxiYWNr
LCB1c2VyZGF0YV0gKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1cyBzdGF0dXMpIHsKLSAgICAgICAg
Y2FsbGJhY2soc3RhdHVzLCB1c2VyZGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgd2dwdUJ1ZmZl
clVubWFwKFdHUFVCdWZmZXIgYnVmZmVyKQotewotICAgIGJ1ZmZlci0+YnVmZmVyLT51bm1hcCgp
OwotfQotCi12b2lkIHdncHVCdWZmZXJTZXRMYWJlbChXR1BVQnVmZmVyIGJ1ZmZlciwgY29uc3Qg
Y2hhciogbGFiZWwpCi17Ci0gICAgYnVmZmVyLT5idWZmZXItPnNldExhYmVsKGxhYmVsKTsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQwMTZkNDZk
ZmYyMWQwYzRkZDgyOTBjNTI3Yzk3YWM4Yzk0M2U2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ29tbWFuZEJ1ZmZlci5oIgorCisjaW5jbHVkZSAiV2ViR1BVRXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJHUFUgeworCitDb21tYW5kQnVmZmVyOjpDb21tYW5kQnVmZmVyKCkg
PSBkZWZhdWx0OworCitDb21tYW5kQnVmZmVyOjp+Q29tbWFuZEJ1ZmZlcigpID0gZGVmYXVsdDsK
Kwordm9pZCBDb21tYW5kQnVmZmVyOjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0obGFiZWwpOworfQorCit9CisKK3ZvaWQgd2dwdUNvbW1hbmRCdWZmZXJS
ZWxlYXNlKFdHUFVDb21tYW5kQnVmZmVyIGNvbW1hbmRCdWZmZXIpCit7CisgICAgZGVsZXRlIGNv
bW1hbmRCdWZmZXI7Cit9CisKK3ZvaWQgd2dwdUNvbW1hbmRCdWZmZXJTZXRMYWJlbChXR1BVQ29t
bWFuZEJ1ZmZlciBjb21tYW5kQnVmZmVyLCBjb25zdCBjaGFyKiBsYWJlbCkKK3sKKyAgICBjb21t
YW5kQnVmZmVyLT5jb21tYW5kQnVmZmVyLT5zZXRMYWJlbChsYWJlbCk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9Db21tYW5kQnVmZmVyLmgKaW5kZXggNmY4ZjQ2NmZjYzA3ZDdmYzg5YmRiYmZkNjJiMjkz
NGQ0NTljY2MyYi4uOWExZWFkYmZhMWQ4NWZjNGQyOWNlMmZlOWUyOThiMTBiNjIyMjNkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW1wb3J0ICJXZWJHUFUuaCIKLSNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9j
Lmg+Ci0jaW1wb3J0IDx3dGYvUmVmLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgIldlYkdQVS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8
d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJH
UFUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLm1t
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOGI5N2MwZTY2NzhlZjYxZWY1NDdiMjcyMmI0ZjZjNGU2OTM2OTZhNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiQ29tbWFuZEJ1ZmZlci5oIgotCi0jaW1wb3J0ICJXZWJHUFVF
eHQuaCIKLQotbmFtZXNwYWNlIFdlYkdQVSB7Ci0KLUNvbW1hbmRCdWZmZXI6OkNvbW1hbmRCdWZm
ZXIoKSA9IGRlZmF1bHQ7Ci0KLUNvbW1hbmRCdWZmZXI6On5Db21tYW5kQnVmZmVyKCkgPSBkZWZh
dWx0OwotCi12b2lkIENvbW1hbmRCdWZmZXI6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQot
ewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Ci19Ci0KLX0KLQotdm9pZCB3Z3B1Q29tbWFuZEJ1
ZmZlclJlbGVhc2UoV0dQVUNvbW1hbmRCdWZmZXIgY29tbWFuZEJ1ZmZlcikKLXsKLSAgICBkZWxl
dGUgY29tbWFuZEJ1ZmZlcjsKLX0KLQotdm9pZCB3Z3B1Q29tbWFuZEJ1ZmZlclNldExhYmVsKFdH
UFVDb21tYW5kQnVmZmVyIGNvbW1hbmRCdWZmZXIsIGNvbnN0IGNoYXIqIGxhYmVsKQotewotICAg
IGNvbW1hbmRCdWZmZXItPmNvbW1hbmRCdWZmZXItPnNldExhYmVsKGxhYmVsKTsKLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGYzODY5OTRjZmE4
NmRjN2FiYjI1ZGUyYTE1NjNjOTIzZGE2ZWIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuY3BwCkBAIC0wLDAgKzEsMjA3IEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNvbW1hbmRFbmNvZGVyLmgiCisKKyNpbmNsdWRlICJCdWZmZXIuaCIKKyNp
bmNsdWRlICJDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiQ29tcHV0ZVBhc3NFbmNvZGVyLmgi
CisjaW5jbHVkZSAiUXVlcnlTZXQuaCIKKyNpbmNsdWRlICJSZW5kZXJQYXNzRW5jb2Rlci5oIgor
I2luY2x1ZGUgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworQ29tbWFuZEVu
Y29kZXI6OkNvbW1hbmRFbmNvZGVyKCkgPSBkZWZhdWx0OworCitDb21tYW5kRW5jb2Rlcjo6fkNv
bW1hbmRFbmNvZGVyKCkgPSBkZWZhdWx0OworCitSZWY8Q29tcHV0ZVBhc3NFbmNvZGVyPiBDb21t
YW5kRW5jb2Rlcjo6YmVnaW5Db21wdXRlUGFzcyhjb25zdCBXR1BVQ29tcHV0ZVBhc3NEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICBy
ZXR1cm4gQ29tcHV0ZVBhc3NFbmNvZGVyOjpjcmVhdGUoKTsKK30KKworUmVmPFJlbmRlclBhc3NF
bmNvZGVyPiBDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5kZXJQYXNzKGNvbnN0IFdHUFVSZW5kZXJQ
YXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRv
cik7CisgICAgcmV0dXJuIFJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoKTsKK30KKwordm9pZCBD
b21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IEJ1ZmZlciYgc291cmNlLCB1
aW50NjRfdCBzb3VyY2VPZmZzZXQsIGNvbnN0IEJ1ZmZlciYgZGVzdGluYXRpb24sIHVpbnQ2NF90
IGRlc3RpbmF0aW9uT2Zmc2V0LCB1aW50NjRfdCBzaXplKQoreworICAgIFVOVVNFRF9QQVJBTShz
b3VyY2UpOworICAgIFVOVVNFRF9QQVJBTShzb3VyY2VPZmZzZXQpOworICAgIFVOVVNFRF9QQVJB
TShkZXN0aW5hdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uT2Zmc2V0KTsKKyAg
ICBVTlVTRURfUEFSQU0oc2l6ZSk7Cit9CisKK3ZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZm
ZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciogc291cmNlLCBjb25zdCBXR1BV
SW1hZ2VDb3B5VGV4dHVyZSogZGVzdGluYXRpb24sIGNvbnN0IFdHUFVFeHRlbnQzRCogY29weVNp
emUpCit7CisgICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7CisgICAgVU5VU0VEX1BBUkFNKGRlc3Rp
bmF0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oY29weVNpemUpOworfQorCit2b2lkIENvbW1hbmRF
bmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBz
b3VyY2UsIGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXIqIGRlc3RpbmF0aW9uLCBjb25zdCBXR1BV
RXh0ZW50M0QqIGNvcHlTaXplKQoreworICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOworICAgIFVO
VVNFRF9QQVJBTShkZXN0aW5hdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsKK30K
Kwordm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUlt
YWdlQ29weVRleHR1cmUqIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIGRlc3Rp
bmF0aW9uLCBjb25zdCBXR1BVRXh0ZW50M0QqIGNvcHlTaXplKQoreworICAgIFVOVVNFRF9QQVJB
TShzb3VyY2UpOworICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7CisgICAgVU5VU0VEX1BB
UkFNKGNvcHlTaXplKTsKK30KKwordm9pZCBDb21tYW5kRW5jb2Rlcjo6ZmlsbEJ1ZmZlcihjb25z
dCBCdWZmZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWludDY0
X3Qgc2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOworICAgIFVOVVNFRF9Q
QVJBTShkZXN0aW5hdGlvbk9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNpemUpOworfQorCitS
ZWY8Q29tbWFuZEJ1ZmZlcj4gQ29tbWFuZEVuY29kZXI6OmZpbmlzaChjb25zdCBXR1BVQ29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2Ny
aXB0b3IpOworICAgIHJldHVybiBDb21tYW5kQnVmZmVyOjpjcmVhdGUoKTsKK30KKwordm9pZCBD
b21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIoY29uc3QgY2hhciogbWFya2VyTGFiZWwp
Cit7CisgICAgVU5VU0VEX1BBUkFNKG1hcmtlckxhYmVsKTsKK30KKwordm9pZCBDb21tYW5kRW5j
b2Rlcjo6cG9wRGVidWdHcm91cCgpCit7Cit9CisKK3ZvaWQgQ29tbWFuZEVuY29kZXI6OnB1c2hE
ZWJ1Z0dyb3VwKGNvbnN0IGNoYXIqIGdyb3VwTGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGdy
b3VwTGFiZWwpOworfQorCit2b2lkIENvbW1hbmRFbmNvZGVyOjpyZXNvbHZlUXVlcnlTZXQoY29u
c3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBmaXJzdFF1ZXJ5LCB1aW50MzJfdCBxdWVy
eUNvdW50LCBjb25zdCBCdWZmZXImIGRlc3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9m
ZnNldCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocXVlcnlTZXQpOworICAgIFVOVVNFRF9QQVJBTShm
aXJzdFF1ZXJ5KTsKKyAgICBVTlVTRURfUEFSQU0ocXVlcnlDb3VudCk7CisgICAgVU5VU0VEX1BB
UkFNKGRlc3RpbmF0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25PZmZzZXQpOwor
fQorCit2b2lkIENvbW1hbmRFbmNvZGVyOjp3cml0ZVRpbWVzdGFtcChjb25zdCBRdWVyeVNldCYg
cXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5
U2V0KTsKKyAgICBVTlVTRURfUEFSQU0ocXVlcnlJbmRleCk7Cit9CisKK3ZvaWQgQ29tbWFuZEVu
Y29kZXI6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShs
YWJlbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorCit2b2lkIHdncHVDb21tYW5kRW5j
b2RlclJlbGVhc2UoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyKQoreworICAgIGRl
bGV0ZSBjb21tYW5kRW5jb2RlcjsKK30KKworV0dQVUNvbXB1dGVQYXNzRW5jb2RlciB3Z3B1Q29t
bWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQYXNzKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5j
b2RlciwgY29uc3QgV0dQVUNvbXB1dGVQYXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAg
ICByZXR1cm4gbmV3IFdHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsIHsgY29tbWFuZEVuY29kZXIt
PmNvbW1hbmRFbmNvZGVyLT5iZWdpbkNvbXB1dGVQYXNzKGRlc2NyaXB0b3IpIH07Cit9CisKK1dH
UFVSZW5kZXJQYXNzRW5jb2RlciB3Z3B1Q29tbWFuZEVuY29kZXJCZWdpblJlbmRlclBhc3MoV0dQ
VUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBjb25zdCBXR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVUmVuZGVyUGFzc0VuY29k
ZXJJbXBsIHsgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5iZWdpblJlbmRlclBhc3Mo
ZGVzY3JpcHRvcikgfTsKK30KKwordm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVmZmVyVG9C
dWZmZXIoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BVQnVmZmVyIHNvdXJj
ZSwgdWludDY0X3Qgc291cmNlT2Zmc2V0LCBXR1BVQnVmZmVyIGRlc3RpbmF0aW9uLCB1aW50NjRf
dCBkZXN0aW5hdGlvbk9mZnNldCwgdWludDY0X3Qgc2l6ZSkKK3sKKyAgICBjb21tYW5kRW5jb2Rl
ci0+Y29tbWFuZEVuY29kZXItPmNvcHlCdWZmZXJUb0J1ZmZlcihzb3VyY2UtPmJ1ZmZlciwgc291
cmNlT2Zmc2V0LCBkZXN0aW5hdGlvbi0+YnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSk7
Cit9CisKK3ZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1ZmZlclRvVGV4dHVyZShXR1BVQ29t
bWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXIqIHNv
dXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIGRlc3RpbmF0aW9uLCBjb25zdCBXR1BV
RXh0ZW50M0QqIGNvcHlTaXplKQoreworICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rl
ci0+Y29weUJ1ZmZlclRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSk7Cit9
CisKK3ZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb0J1ZmZlcihXR1BVQ29tbWFu
ZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBzb3Vy
Y2UsIGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXIqIGRlc3RpbmF0aW9uLCBjb25zdCBXR1BVRXh0
ZW50M0QqIGNvcHlTaXplKQoreworICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+
Y29weVRleHR1cmVUb0J1ZmZlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSk7Cit9CisK
K3ZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1RleHR1cmUoV0dQVUNvbW1hbmRF
bmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSogc291cmNl
LCBjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSogZGVzdGluYXRpb24sIGNvbnN0IFdHUFVFeHRl
bnQzRCogY29weVNpemUpCit7CisgICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5j
b3B5VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSk7Cit9CisK
K3ZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyRmlsbEJ1ZmZlcihXR1BVQ29tbWFuZEVuY29kZXIgY29t
bWFuZEVuY29kZXIsIFdHUFVCdWZmZXIgZGVzdGluYXRpb24sIHVpbnQ2NF90IGRlc3RpbmF0aW9u
T2Zmc2V0LCB1aW50NjRfdCBzaXplKQoreworICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5j
b2Rlci0+ZmlsbEJ1ZmZlcihkZXN0aW5hdGlvbi0+YnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNldCwg
c2l6ZSk7Cit9CisKK1dHUFVDb21tYW5kQnVmZmVyIHdncHVDb21tYW5kRW5jb2RlckZpbmlzaChX
R1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IFdHUFVDb21tYW5kQnVmZmVy
RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gbmV3IFdHUFVDb21tYW5kQnVm
ZmVySW1wbCB7IGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+ZmluaXNoKGRlc2NyaXB0
b3IpIH07Cit9CisKK3ZvaWQgd2dwdUNvbW1hbmRFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIoV0dQ
VUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBjb25zdCBjaGFyKiBtYXJrZXJMYWJlbCkK
K3sKKyAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXItPmluc2VydERlYnVnTWFya2Vy
KG1hcmtlckxhYmVsKTsKK30KKwordm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJQb3BEZWJ1Z0dyb3Vw
KFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlcikKK3sKKyAgICBjb21tYW5kRW5jb2Rl
ci0+Y29tbWFuZEVuY29kZXItPnBvcERlYnVnR3JvdXAoKTsKK30KKwordm9pZCB3Z3B1Q29tbWFu
ZEVuY29kZXJQdXNoRGVidWdHcm91cChXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIs
IGNvbnN0IGNoYXIqIGdyb3VwTGFiZWwpCit7CisgICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRF
bmNvZGVyLT5wdXNoRGVidWdHcm91cChncm91cExhYmVsKTsKK30KKwordm9pZCB3Z3B1Q29tbWFu
ZEVuY29kZXJSZXNvbHZlUXVlcnlTZXQoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVy
LCBXR1BVUXVlcnlTZXQgcXVlcnlTZXQsIHVpbnQzMl90IGZpcnN0UXVlcnksIHVpbnQzMl90IHF1
ZXJ5Q291bnQsIFdHUFVCdWZmZXIgZGVzdGluYXRpb24sIHVpbnQ2NF90IGRlc3RpbmF0aW9uT2Zm
c2V0KQoreworICAgIGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+cmVzb2x2ZVF1ZXJ5
U2V0KHF1ZXJ5U2V0LT5xdWVyeVNldCwgZmlyc3RRdWVyeSwgcXVlcnlDb3VudCwgZGVzdGluYXRp
b24tPmJ1ZmZlciwgZGVzdGluYXRpb25PZmZzZXQpOworfQorCit2b2lkIHdncHVDb21tYW5kRW5j
b2RlcldyaXRlVGltZXN0YW1wKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQ
VVF1ZXJ5U2V0IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIGNvbW1hbmRF
bmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+d3JpdGVUaW1lc3RhbXAocXVlcnlTZXQtPnF1ZXJ5U2V0
LCBxdWVyeUluZGV4KTsKK30KKwordm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJTZXRMYWJlbChXR1BV
Q29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IGNoYXIqIGxhYmVsKQoreworICAg
IGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+c2V0TGFiZWwobGFiZWwpOworfQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuaAppbmRleCA1OWNiNDMxMmQzNWJhOTQzMzhi
OGNlNGJmN2QwNGU1MzlmMjk5Zjc3Li5jNzNkMGQ2ZmEwY2UzODU5NzE0ZDllMzhiZGMyM2ZmMmFj
NWIwY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmgKQEAgLTI1LDEwICsy
NSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2ltcG9ydCAiV2ViR1BVLmgiCi0jaW1wb3J0IDx3
dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlICJXZWJHUFUuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBu
YW1lc3BhY2UgV2ViR1BVIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29t
bWFuZEVuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQzOGUxNzlhNDQzOTdiZmY4MzYwZWY0MTRj
OGY3MmYwMTViZGFmZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDIwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDb21tYW5kRW5jb2Rlci5oIgot
Ci0jaW1wb3J0ICJCdWZmZXIuaCIKLSNpbXBvcnQgIkNvbW1hbmRCdWZmZXIuaCIKLSNpbXBvcnQg
IkNvbXB1dGVQYXNzRW5jb2Rlci5oIgotI2ltcG9ydCAiUXVlcnlTZXQuaCIKLSNpbXBvcnQgIlJl
bmRlclBhc3NFbmNvZGVyLmgiCi0jaW1wb3J0ICJXZWJHUFVFeHQuaCIKLQotbmFtZXNwYWNlIFdl
YkdQVSB7Ci0KLUNvbW1hbmRFbmNvZGVyOjpDb21tYW5kRW5jb2RlcigpID0gZGVmYXVsdDsKLQot
Q29tbWFuZEVuY29kZXI6On5Db21tYW5kRW5jb2RlcigpID0gZGVmYXVsdDsKLQotUmVmPENvbXB1
dGVQYXNzRW5jb2Rlcj4gQ29tbWFuZEVuY29kZXI6OmJlZ2luQ29tcHV0ZVBhc3MoY29uc3QgV0dQ
VUNvbXB1dGVQYXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKLXsKLSAgICBVTlVTRURfUEFSQU0o
ZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIENvbXB1dGVQYXNzRW5jb2Rlcjo6Y3JlYXRlKCk7Ci19
Ci0KLVJlZjxSZW5kZXJQYXNzRW5jb2Rlcj4gQ29tbWFuZEVuY29kZXI6OmJlZ2luUmVuZGVyUGFz
cyhjb25zdCBXR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW5kZXJQYXNzRW5jb2Rlcjo6Y3Jl
YXRlKCk7Ci19Ci0KLXZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihjb25z
dCBCdWZmZXImIHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2Zmc2V0LCBjb25zdCBCdWZmZXImIGRl
c3RpbmF0aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWludDY0X3Qgc2l6ZSkKLXsK
LSAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oc291cmNlT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkZXN0
aW5hdGlvbk9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOwotfQotCi12b2lkIENvbW1h
bmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXIq
IHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIGRlc3RpbmF0aW9uLCBjb25zdCBX
R1BVRXh0ZW50M0QqIGNvcHlTaXplKQotewotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAg
IFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsK
LX0KLQotdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BV
SW1hZ2VDb3B5VGV4dHVyZSogc291cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyKiBkZXN0
aW5hdGlvbiwgY29uc3QgV0dQVUV4dGVudDNEKiBjb3B5U2l6ZSkKLXsKLSAgICBVTlVTRURfUEFS
QU0oc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9Q
QVJBTShjb3B5U2l6ZSk7Ci19Ci0KLXZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9U
ZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBzb3VyY2UsIGNvbnN0IFdHUFVJbWFn
ZUNvcHlUZXh0dXJlKiBkZXN0aW5hdGlvbiwgY29uc3QgV0dQVUV4dGVudDNEKiBjb3B5U2l6ZSkK
LXsKLSAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRp
b24pOwotICAgIFVOVVNFRF9QQVJBTShjb3B5U2l6ZSk7Ci19Ci0KLXZvaWQgQ29tbWFuZEVuY29k
ZXI6OmZpbGxCdWZmZXIoY29uc3QgQnVmZmVyJiBkZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGlu
YXRpb25PZmZzZXQsIHVpbnQ2NF90IHNpemUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0
aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25PZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShzaXplKTsKLX0KLQotUmVmPENvbW1hbmRCdWZmZXI+IENvbW1hbmRFbmNvZGVyOjpmaW5p
c2goY29uc3QgV0dQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQotewotICAg
IFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKCk7Ci19Ci0KLXZvaWQgQ29tbWFuZEVuY29kZXI6Omluc2VydERlYnVnTWFya2VyKGNvbnN0
IGNoYXIqIG1hcmtlckxhYmVsKQotewotICAgIFVOVVNFRF9QQVJBTShtYXJrZXJMYWJlbCk7Ci19
Ci0KLXZvaWQgQ29tbWFuZEVuY29kZXI6OnBvcERlYnVnR3JvdXAoKQotewotfQotCi12b2lkIENv
bW1hbmRFbmNvZGVyOjpwdXNoRGVidWdHcm91cChjb25zdCBjaGFyKiBncm91cExhYmVsKQotewot
ICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsKLX0KLQotdm9pZCBDb21tYW5kRW5jb2Rlcjo6
cmVzb2x2ZVF1ZXJ5U2V0KGNvbnN0IFF1ZXJ5U2V0JiBxdWVyeVNldCwgdWludDMyX3QgZmlyc3RR
dWVyeSwgdWludDMyX3QgcXVlcnlDb3VudCwgY29uc3QgQnVmZmVyJiBkZXN0aW5hdGlvbiwgdWlu
dDY0X3QgZGVzdGluYXRpb25PZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5U2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oZmlyc3RRdWVyeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5Q291
bnQpOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRl
c3RpbmF0aW9uT2Zmc2V0KTsKLX0KLQotdm9pZCBDb21tYW5kRW5jb2Rlcjo6d3JpdGVUaW1lc3Rh
bXAoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQotewotICAg
IFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOwot
fQotCi12b2lkIENvbW1hbmRFbmNvZGVyOjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkKLXsK
LSAgICBVTlVTRURfUEFSQU0obGFiZWwpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJHUFUKLQot
dm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJSZWxlYXNlKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5k
RW5jb2RlcikKLXsKLSAgICBkZWxldGUgY29tbWFuZEVuY29kZXI7Ci19Ci0KLVdHUFVDb21wdXRl
UGFzc0VuY29kZXIgd2dwdUNvbW1hbmRFbmNvZGVyQmVnaW5Db21wdXRlUGFzcyhXR1BVQ29tbWFu
ZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IFdHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpCi17Ci0gICAgcmV0dXJuIG5ldyBXR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1w
bCB7IGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+YmVnaW5Db21wdXRlUGFzcyhkZXNj
cmlwdG9yKSB9OwotfQotCi1XR1BVUmVuZGVyUGFzc0VuY29kZXIgd2dwdUNvbW1hbmRFbmNvZGVy
QmVnaW5SZW5kZXJQYXNzKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgY29uc3Qg
V0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQotewotICAgIHJldHVybiBuZXcg
V0dQVVJlbmRlclBhc3NFbmNvZGVySW1wbCB7IGNvbW1hbmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rl
ci0+YmVnaW5SZW5kZXJQYXNzKGRlc2NyaXB0b3IpIH07Ci19Ci0KLXZvaWQgd2dwdUNvbW1hbmRF
bmNvZGVyQ29weUJ1ZmZlclRvQnVmZmVyKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2Rl
ciwgV0dQVUJ1ZmZlciBzb3VyY2UsIHVpbnQ2NF90IHNvdXJjZU9mZnNldCwgV0dQVUJ1ZmZlciBk
ZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGluYXRpb25PZmZzZXQsIHVpbnQ2NF90IHNpemUpCi17
Ci0gICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5jb3B5QnVmZmVyVG9CdWZmZXIo
c291cmNlLT5idWZmZXIsIHNvdXJjZU9mZnNldCwgZGVzdGluYXRpb24tPmJ1ZmZlciwgZGVzdGlu
YXRpb25PZmZzZXQsIHNpemUpOwotfQotCi12b2lkIHdncHVDb21tYW5kRW5jb2RlckNvcHlCdWZm
ZXJUb1RleHR1cmUoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBjb25zdCBXR1BV
SW1hZ2VDb3B5QnVmZmVyKiBzb3VyY2UsIGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBkZXN0
aW5hdGlvbiwgY29uc3QgV0dQVUV4dGVudDNEKiBjb3B5U2l6ZSkKLXsKLSAgICBjb21tYW5kRW5j
b2Rlci0+Y29tbWFuZEVuY29kZXItPmNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5h
dGlvbiwgY29weVNpemUpOwotfQotCi12b2lkIHdncHVDb21tYW5kRW5jb2RlckNvcHlUZXh0dXJl
VG9CdWZmZXIoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBjb25zdCBXR1BVSW1h
Z2VDb3B5VGV4dHVyZSogc291cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyKiBkZXN0aW5h
dGlvbiwgY29uc3QgV0dQVUV4dGVudDNEKiBjb3B5U2l6ZSkKLXsKLSAgICBjb21tYW5kRW5jb2Rl
ci0+Y29tbWFuZEVuY29kZXItPmNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpOwotfQotCi12b2lkIHdncHVDb21tYW5kRW5jb2RlckNvcHlUZXh0dXJlVG9U
ZXh0dXJlKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgY29uc3QgV0dQVUltYWdl
Q29weVRleHR1cmUqIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUqIGRlc3RpbmF0
aW9uLCBjb25zdCBXR1BVRXh0ZW50M0QqIGNvcHlTaXplKQotewotICAgIGNvbW1hbmRFbmNvZGVy
LT5jb21tYW5kRW5jb2Rlci0+Y29weVRleHR1cmVUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpOwotfQotCi12b2lkIHdncHVDb21tYW5kRW5jb2RlckZpbGxCdWZmZXIoV0dQ
VUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BVQnVmZmVyIGRlc3RpbmF0aW9uLCB1
aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWludDY0X3Qgc2l6ZSkKLXsKLSAgICBjb21tYW5k
RW5jb2Rlci0+Y29tbWFuZEVuY29kZXItPmZpbGxCdWZmZXIoZGVzdGluYXRpb24tPmJ1ZmZlciwg
ZGVzdGluYXRpb25PZmZzZXQsIHNpemUpOwotfQotCi1XR1BVQ29tbWFuZEJ1ZmZlciB3Z3B1Q29t
bWFuZEVuY29kZXJGaW5pc2goV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBjb25z
dCBXR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgcmV0dXJu
IG5ldyBXR1BVQ29tbWFuZEJ1ZmZlckltcGwgeyBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29k
ZXItPmZpbmlzaChkZXNjcmlwdG9yKSB9OwotfQotCi12b2lkIHdncHVDb21tYW5kRW5jb2Rlcklu
c2VydERlYnVnTWFya2VyKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgY29uc3Qg
Y2hhciogbWFya2VyTGFiZWwpCi17Ci0gICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVy
LT5pbnNlcnREZWJ1Z01hcmtlcihtYXJrZXJMYWJlbCk7Ci19Ci0KLXZvaWQgd2dwdUNvbW1hbmRF
bmNvZGVyUG9wRGVidWdHcm91cChXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIpCi17
Ci0gICAgY29tbWFuZEVuY29kZXItPmNvbW1hbmRFbmNvZGVyLT5wb3BEZWJ1Z0dyb3VwKCk7Ci19
Ci0KLXZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyUHVzaERlYnVnR3JvdXAoV0dQVUNvbW1hbmRFbmNv
ZGVyIGNvbW1hbmRFbmNvZGVyLCBjb25zdCBjaGFyKiBncm91cExhYmVsKQotewotICAgIGNvbW1h
bmRFbmNvZGVyLT5jb21tYW5kRW5jb2Rlci0+cHVzaERlYnVnR3JvdXAoZ3JvdXBMYWJlbCk7Ci19
Ci0KLXZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyUmVzb2x2ZVF1ZXJ5U2V0KFdHUFVDb21tYW5kRW5j
b2RlciBjb21tYW5kRW5jb2RlciwgV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0LCB1aW50MzJfdCBmaXJz
dFF1ZXJ5LCB1aW50MzJfdCBxdWVyeUNvdW50LCBXR1BVQnVmZmVyIGRlc3RpbmF0aW9uLCB1aW50
NjRfdCBkZXN0aW5hdGlvbk9mZnNldCkKLXsKLSAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVu
Y29kZXItPnJlc29sdmVRdWVyeVNldChxdWVyeVNldC0+cXVlcnlTZXQsIGZpcnN0UXVlcnksIHF1
ZXJ5Q291bnQsIGRlc3RpbmF0aW9uLT5idWZmZXIsIGRlc3RpbmF0aW9uT2Zmc2V0KTsKLX0KLQot
dm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJXcml0ZVRpbWVzdGFtcChXR1BVQ29tbWFuZEVuY29kZXIg
Y29tbWFuZEVuY29kZXIsIFdHUFVRdWVyeVNldCBxdWVyeVNldCwgdWludDMyX3QgcXVlcnlJbmRl
eCkKLXsKLSAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXItPndyaXRlVGltZXN0YW1w
KHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVlcnlJbmRleCk7Ci19Ci0KLXZvaWQgd2dwdUNvbW1hbmRF
bmNvZGVyU2V0TGFiZWwoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBjb25zdCBj
aGFyKiBsYWJlbCkKLXsKLSAgICBjb21tYW5kRW5jb2Rlci0+Y29tbWFuZEVuY29kZXItPnNldExh
YmVsKGxhYmVsKTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0
ZVBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGMyM2FmNWQ3NTM2ZjA5MDdiODc3Yjk2NmRiMTk3ZDM2NTViMjI1
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5j
b2Rlci5jcHAKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29tcHV0ZVBh
c3NFbmNvZGVyLmgiCisKKyNpbmNsdWRlICJCaW5kR3JvdXAuaCIKKyNpbmNsdWRlICJCdWZmZXIu
aCIKKyNpbmNsdWRlICJDb21wdXRlUGlwZWxpbmUuaCIKKyNpbmNsdWRlICJRdWVyeVNldC5oIgor
I2luY2x1ZGUgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworQ29tcHV0ZVBh
c3NFbmNvZGVyOjpDb21wdXRlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7CisKK0NvbXB1dGVQYXNz
RW5jb2Rlcjo6fkNvbXB1dGVQYXNzRW5jb2RlcigpID0gZGVmYXVsdDsKKwordm9pZCBDb21wdXRl
UGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29uc3QgUXVlcnlTZXQm
IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShxdWVy
eVNldCk7CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworfQorCit2b2lkIENvbXB1dGVQ
YXNzRW5jb2Rlcjo6ZGlzcGF0Y2godWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeikK
K3sKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5VU0VEX1BBUkFNKHkpOworICAgIFVOVVNF
RF9QQVJBTSh6KTsKK30KKwordm9pZCBDb21wdXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoSW5kaXJl
Y3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3QgaW5kaXJlY3RPZmZzZXQp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKKyAgICBVTlVTRURfUEFSQU0o
aW5kaXJlY3RPZmZzZXQpOworfQorCit2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygp
Cit7Cit9CisKK3ZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVyOjplbmRQaXBlbGluZVN0YXRpc3RpY3NR
dWVyeSgpCit7Cit9CisKK3ZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtl
cihjb25zdCBjaGFyKiBtYXJrZXJMYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obWFya2VyTGFi
ZWwpOworfQorCit2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6cG9wRGVidWdHcm91cCgpCit7Cit9
CisKK3ZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVyOjpwdXNoRGVidWdHcm91cChjb25zdCBjaGFyKiBn
cm91cExhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsKK30KKwordm9pZCBD
b21wdXRlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCh1aW50MzJfdCBncm91cEluZGV4LCBjb25z
dCBCaW5kR3JvdXAmIGdyb3VwLCB1aW50MzJfdCBkeW5hbWljT2Zmc2V0Q291bnQsIGNvbnN0IHVp
bnQzMl90KiBkeW5hbWljT2Zmc2V0cykKK3sKKyAgICBVTlVTRURfUEFSQU0oZ3JvdXBJbmRleCk7
CisgICAgVU5VU0VEX1BBUkFNKGdyb3VwKTsKKyAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNl
dENvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHMpOworfQorCit2b2lkIENv
bXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoY29uc3QgQ29tcHV0ZVBpcGVsaW5lJiBwaXBl
bGluZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ocGlwZWxpbmUpOworfQorCit2b2lkIENvbXB1dGVQ
YXNzRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50
MzJfdCBxdWVyeUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7CisgICAgVU5V
U0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworfQorCit2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0
TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclJl
bGVhc2UoV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIpCit7CisgICAg
ZGVsZXRlIGNvbXB1dGVQYXNzRW5jb2RlcjsKK30KKwordm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNv
ZGVyQmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNv
bXB1dGVQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUlu
ZGV4KQoreworICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5iZWdp
blBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVlcnlJbmRleCk7
Cit9CisKK3ZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlckRpc3BhdGNoKFdHUFVDb21wdXRlUGFz
c0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyLCB1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50
MzJfdCB6KQoreworICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5k
aXNwYXRjaCh4LCB5LCB6KTsKK30KKwordm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRGlzcGF0
Y2hJbmRpcmVjdChXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQ
VUJ1ZmZlciBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3QgaW5kaXJlY3RPZmZzZXQpCit7CisgICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXItPmRpc3BhdGNoSW5kaXJlY3Qo
aW5kaXJlY3RCdWZmZXItPmJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOworfQorCit2b2lkIHdncHVD
b21wdXRlUGFzc0VuY29kZXJFbmRQYXNzKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBh
c3NFbmNvZGVyKQoreworICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVy
LT5lbmRQYXNzKCk7Cit9CisKK3ZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlckVuZFBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVy
KQoreworICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5lbmRQaXBl
bGluZVN0YXRpc3RpY3NRdWVyeSgpOworfQorCit2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJJ
bnNlcnREZWJ1Z01hcmtlcihXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2Rl
ciwgY29uc3QgY2hhciogbWFya2VyTGFiZWwpCit7CisgICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5j
b21wdXRlUGFzc0VuY29kZXItPmluc2VydERlYnVnTWFya2VyKG1hcmtlckxhYmVsKTsKK30KKwor
dm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUG9wRGVidWdHcm91cChXR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlcikKK3sKKyAgICBjb21wdXRlUGFzc0VuY29kZXItPmNv
bXB1dGVQYXNzRW5jb2Rlci0+cG9wRGVidWdHcm91cCgpOworfQorCit2b2lkIHdncHVDb21wdXRl
UGFzc0VuY29kZXJQdXNoRGVidWdHcm91cChXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQ
YXNzRW5jb2RlciwgY29uc3QgY2hhciogZ3JvdXBMYWJlbCkKK3sKKyAgICBjb21wdXRlUGFzc0Vu
Y29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci0+cHVzaERlYnVnR3JvdXAoZ3JvdXBMYWJlbCk7Cit9
CisKK3ZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldEJpbmRHcm91cChXR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgdWludDMyX3QgZ3JvdXBJbmRleCwgV0dQVUJp
bmRHcm91cCBncm91cCwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCBjb25zdCB1aW50MzJf
dCogZHluYW1pY09mZnNldHMpCit7CisgICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFz
c0VuY29kZXItPnNldEJpbmRHcm91cChncm91cEluZGV4LCBncm91cC0+YmluZEdyb3VwLCBkeW5h
bWljT2Zmc2V0Q291bnQsIGR5bmFtaWNPZmZzZXRzKTsKK30KKwordm9pZCB3Z3B1Q29tcHV0ZVBh
c3NFbmNvZGVyU2V0UGlwZWxpbmUoV0dQVUNvbXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0Vu
Y29kZXIsIFdHUFVDb21wdXRlUGlwZWxpbmUgcGlwZWxpbmUpCit7CisgICAgY29tcHV0ZVBhc3NF
bmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXItPnNldFBpcGVsaW5lKHBpcGVsaW5lLT5jb21wdXRl
UGlwZWxpbmUpOworfQorCit2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFt
cChXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5U2V0
IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT53cml0ZVRpbWVzdGFtcChxdWVyeVNldC0+cXVlcnlTZXQs
IHF1ZXJ5SW5kZXgpOworfQorCit2b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJTZXRMYWJlbChX
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgY29uc3QgY2hhciogbGFi
ZWwpCit7CisgICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXItPnNldExh
YmVsKGxhYmVsKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQ
YXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmgK
aW5kZXggMGM2NGFkOTYxY2I3NjNiYjBiZWQwNjk4Y2MyZmVmZDBiZDliZjgxZi4uOWNkMDlhZDZk
OTU4ZDkwMTRlYjQ2ZGE3OTIyYjBlYmZlMTg4NGE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
Q29tcHV0ZVBhc3NFbmNvZGVyLmgKQEAgLTI1LDEwICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2ltcG9ydCAiV2ViR1BVLmgiCi0jaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9y
dCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJXZWJH
UFUuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjMTFkNTRlZDM0NDE1NmUzZjU1Y2VlYTMxYTc3MzM4ODAyMzBlZTBjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE3MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDb21wdXRlUGFzc0VuY29kZXIuaCIKLQotI2ltcG9y
dCAiQmluZEdyb3VwLmgiCi0jaW1wb3J0ICJCdWZmZXIuaCIKLSNpbXBvcnQgIkNvbXB1dGVQaXBl
bGluZS5oIgotI2ltcG9ydCAiUXVlcnlTZXQuaCIKLSNpbXBvcnQgIldlYkdQVUV4dC5oIgotCi1u
YW1lc3BhY2UgV2ViR1BVIHsKLQotQ29tcHV0ZVBhc3NFbmNvZGVyOjpDb21wdXRlUGFzc0VuY29k
ZXIoKSA9IGRlZmF1bHQ7Ci0KLUNvbXB1dGVQYXNzRW5jb2Rlcjo6fkNvbXB1dGVQYXNzRW5jb2Rl
cigpID0gZGVmYXVsdDsKLQotdm9pZCBDb21wdXRlUGFzc0VuY29kZXI6OmJlZ2luUGlwZWxpbmVT
dGF0aXN0aWNzUXVlcnkoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUlu
ZGV4KQotewotICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1
ZXJ5SW5kZXgpOwotfQotCi12b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6ZGlzcGF0Y2godWludDMy
X3QgeCwgdWludDMyX3QgeSwgdWludDMyX3QgeikKLXsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh6KTsKLX0KLQotdm9pZCBDb21w
dXRlUGFzc0VuY29kZXI6OmRpc3BhdGNoSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1
ZmZlciwgdWludDY0X3QgaW5kaXJlY3RPZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGluZGly
ZWN0QnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOwotfQotCi12b2lk
IENvbXB1dGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpCi17Ci19Ci0KLXZvaWQgQ29tcHV0ZVBhc3NF
bmNvZGVyOjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpCi17Ci19Ci0KLXZvaWQgQ29tcHV0
ZVBhc3NFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihjb25zdCBjaGFyKiBtYXJrZXJMYWJlbCkK
LXsKLSAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOwotfQotCi12b2lkIENvbXB1dGVQYXNz
RW5jb2Rlcjo6cG9wRGVidWdHcm91cCgpCi17Ci19Ci0KLXZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVy
OjpwdXNoRGVidWdHcm91cChjb25zdCBjaGFyKiBncm91cExhYmVsKQotewotICAgIFVOVVNFRF9Q
QVJBTShncm91cExhYmVsKTsKLX0KLQotdm9pZCBDb21wdXRlUGFzc0VuY29kZXI6OnNldEJpbmRH
cm91cCh1aW50MzJfdCBncm91cEluZGV4LCBjb25zdCBCaW5kR3JvdXAmIGdyb3VwLCB1aW50MzJf
dCBkeW5hbWljT2Zmc2V0Q291bnQsIGNvbnN0IHVpbnQzMl90KiBkeW5hbWljT2Zmc2V0cykKLXsK
LSAgICBVTlVTRURfUEFSQU0oZ3JvdXBJbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGdyb3VwKTsK
LSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldENvdW50KTsKLSAgICBVTlVTRURfUEFSQU0o
ZHluYW1pY09mZnNldHMpOwotfQotCi12b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxp
bmUoY29uc3QgQ29tcHV0ZVBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBVTlVTRURfUEFSQU0o
cGlwZWxpbmUpOwotfQotCi12b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6d3JpdGVUaW1lc3RhbXAo
Y29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQotewotICAgIFVO
VVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOwotfQot
Ci12b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCi17
Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViR1BVCi0K
LXZvaWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclJlbGVhc2UoV0dQVUNvbXB1dGVQYXNzRW5jb2Rl
ciBjb21wdXRlUGFzc0VuY29kZXIpCi17Ci0gICAgZGVsZXRlIGNvbXB1dGVQYXNzRW5jb2RlcjsK
LX0KLQotdm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyQmVnaW5QaXBlbGluZVN0YXRpc3RpY3NR
dWVyeShXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5
U2V0IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQotewotICAgIGNvbXB1dGVQYXNzRW5j
b2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5iZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KHF1
ZXJ5U2V0LT5xdWVyeVNldCwgcXVlcnlJbmRleCk7Ci19Ci0KLXZvaWQgd2dwdUNvbXB1dGVQYXNz
RW5jb2RlckRpc3BhdGNoKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVy
LCB1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB6KQotewotICAgIGNvbXB1dGVQYXNz
RW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5kaXNwYXRjaCh4LCB5LCB6KTsKLX0KLQotdm9p
ZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRGlzcGF0Y2hJbmRpcmVjdChXR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQVUJ1ZmZlciBpbmRpcmVjdEJ1ZmZlciwgdWlu
dDY0X3QgaW5kaXJlY3RPZmZzZXQpCi17Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRl
UGFzc0VuY29kZXItPmRpc3BhdGNoSW5kaXJlY3QoaW5kaXJlY3RCdWZmZXItPmJ1ZmZlciwgaW5k
aXJlY3RPZmZzZXQpOwotfQotCi12b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQYXNzKFdH
UFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyKQotewotICAgIGNvbXB1dGVQ
YXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5lbmRQYXNzKCk7Ci19Ci0KLXZvaWQgd2dw
dUNvbXB1dGVQYXNzRW5jb2RlckVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KFdHUFVDb21wdXRl
UGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyKQotewotICAgIGNvbXB1dGVQYXNzRW5jb2Rl
ci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT5lbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOwotfQot
Ci12b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJJbnNlcnREZWJ1Z01hcmtlcihXR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgY29uc3QgY2hhciogbWFya2VyTGFiZWwp
Ci17Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXItPmluc2VydERl
YnVnTWFya2VyKG1hcmtlckxhYmVsKTsKLX0KLQotdm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVy
UG9wRGVidWdHcm91cChXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlcikK
LXsKLSAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci0+cG9wRGVidWdH
cm91cCgpOwotfQotCi12b2lkIHdncHVDb21wdXRlUGFzc0VuY29kZXJQdXNoRGVidWdHcm91cChX
R1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgY29uc3QgY2hhciogZ3Jv
dXBMYWJlbCkKLXsKLSAgICBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2Rlci0+
cHVzaERlYnVnR3JvdXAoZ3JvdXBMYWJlbCk7Ci19Ci0KLXZvaWQgd2dwdUNvbXB1dGVQYXNzRW5j
b2RlclNldEJpbmRHcm91cChXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2Rl
ciwgdWludDMyX3QgZ3JvdXBJbmRleCwgV0dQVUJpbmRHcm91cCBncm91cCwgdWludDMyX3QgZHlu
YW1pY09mZnNldENvdW50LCBjb25zdCB1aW50MzJfdCogZHluYW1pY09mZnNldHMpCi17Ci0gICAg
Y29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXItPnNldEJpbmRHcm91cChncm91
cEluZGV4LCBncm91cC0+YmluZEdyb3VwLCBkeW5hbWljT2Zmc2V0Q291bnQsIGR5bmFtaWNPZmZz
ZXRzKTsKLX0KLQotdm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0UGlwZWxpbmUoV0dQVUNv
bXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIsIFdHUFVDb21wdXRlUGlwZWxpbmUg
cGlwZWxpbmUpCi17Ci0gICAgY29tcHV0ZVBhc3NFbmNvZGVyLT5jb21wdXRlUGFzc0VuY29kZXIt
PnNldFBpcGVsaW5lKHBpcGVsaW5lLT5jb21wdXRlUGlwZWxpbmUpOwotfQotCi12b2lkIHdncHVD
b21wdXRlUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFtcChXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNv
bXB1dGVQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUlu
ZGV4KQotewotICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+Y29tcHV0ZVBhc3NFbmNvZGVyLT53cml0
ZVRpbWVzdGFtcChxdWVyeVNldC0+cXVlcnlTZXQsIHF1ZXJ5SW5kZXgpOwotfQotCi12b2lkIHdn
cHVDb21wdXRlUGFzc0VuY29kZXJTZXRMYWJlbChXR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGNvbXB1
dGVQYXNzRW5jb2RlciwgY29uc3QgY2hhciogbGFiZWwpCi17Ci0gICAgY29tcHV0ZVBhc3NFbmNv
ZGVyLT5jb21wdXRlUGFzc0VuY29kZXItPnNldExhYmVsKGxhYmVsKTsKLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21wdXRlUGlwZWxpbmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0YTViNDgzMmFiYzNlNzQz
YTM1NzYwM2FkNzQ1ZTg1MjIxYjJjMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21wdXRlUGlwZWxpbmUuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQ29tcHV0ZVBpcGVsaW5lLmgiCisKKworI2luY2x1ZGUgIkJpbmRHcm91cExheW91
dC5oIgorI2luY2x1ZGUgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworQ29t
cHV0ZVBpcGVsaW5lOjpDb21wdXRlUGlwZWxpbmUoKSA9IGRlZmF1bHQ7CisKK0NvbXB1dGVQaXBl
bGluZTo6fkNvbXB1dGVQaXBlbGluZSgpID0gZGVmYXVsdDsKKworUmVmPEJpbmRHcm91cExheW91
dD4gQ29tcHV0ZVBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQodWludDMyX3QgZ3JvdXBJbmRl
eCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ3JvdXBJbmRleCk7CisgICAgcmV0dXJuIEJpbmRHcm91
cExheW91dDo6Y3JlYXRlKCk7Cit9CisKK3ZvaWQgQ29tcHV0ZVBpcGVsaW5lOjpzZXRMYWJlbChj
b25zdCBjaGFyKiBsYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGFiZWwpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1Q29tcHV0ZVBpcGVsaW5lUmVsZWFzZShXR1BV
Q29tcHV0ZVBpcGVsaW5lIGNvbXB1dGVQaXBlbGluZSkKK3sKKyAgICBkZWxldGUgY29tcHV0ZVBp
cGVsaW5lOworfQorCitXR1BVQmluZEdyb3VwTGF5b3V0IHdncHVDb21wdXRlUGlwZWxpbmVHZXRC
aW5kR3JvdXBMYXlvdXQoV0dQVUNvbXB1dGVQaXBlbGluZSBjb21wdXRlUGlwZWxpbmUsIHVpbnQz
Ml90IGdyb3VwSW5kZXgpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVQmluZEdyb3VwTGF5b3V0SW1w
bCB7IGNvbXB1dGVQaXBlbGluZS0+Y29tcHV0ZVBpcGVsaW5lLT5nZXRCaW5kR3JvdXBMYXlvdXQo
Z3JvdXBJbmRleCkgfTsKK30KKwordm9pZCB3Z3B1Q29tcHV0ZVBpcGVsaW5lU2V0TGFiZWwoV0dQ
VUNvbXB1dGVQaXBlbGluZSBjb21wdXRlUGlwZWxpbmUsIGNvbnN0IGNoYXIqIGxhYmVsKQorewor
ICAgIGNvbXB1dGVQaXBlbGluZS0+Y29tcHV0ZVBpcGVsaW5lLT5zZXRMYWJlbChsYWJlbCk7Cit9
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5oIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLmgKaW5kZXggZDU5YjFiMzk5ODJk
OGI2YTg3ZGMxMzQ5Mzg3ODY5NTE5YjMzMWFmNS4uMzhiNDViNTkzMTdmMjc1NzljMDcyOGQyMWIx
ZDVjNzE4MzgzYzRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBp
cGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLmgKQEAg
LTI1LDEwICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2ltcG9ydCAiV2ViR1BVLmgiCi0j
aW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJXZWJHUFUuaCIKKyNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBp
cGVsaW5lLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmQ5ZDVmNDU2ZjFmNzg5
MDVjZjlkNTk3MDhlZGRmZjMyOGZmMTI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbQor
KysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkNvbXB1dGVQ
aXBlbGluZS5oIgotCi0KLSNpbXBvcnQgIkJpbmRHcm91cExheW91dC5oIgotI2ltcG9ydCAiV2Vi
R1BVRXh0LmgiCi0KLW5hbWVzcGFjZSBXZWJHUFUgewotCi1Db21wdXRlUGlwZWxpbmU6OkNvbXB1
dGVQaXBlbGluZSgpID0gZGVmYXVsdDsKLQotQ29tcHV0ZVBpcGVsaW5lOjp+Q29tcHV0ZVBpcGVs
aW5lKCkgPSBkZWZhdWx0OwotCi1SZWY8QmluZEdyb3VwTGF5b3V0PiBDb21wdXRlUGlwZWxpbmU6
OmdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBncm91cEluZGV4KQotewotICAgIFVOVVNFRF9Q
QVJBTShncm91cEluZGV4KTsKLSAgICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoKTsK
LX0KLQotdm9pZCBDb21wdXRlUGlwZWxpbmU6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQot
ewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkdQVQot
Ci12b2lkIHdncHVDb21wdXRlUGlwZWxpbmVSZWxlYXNlKFdHUFVDb21wdXRlUGlwZWxpbmUgY29t
cHV0ZVBpcGVsaW5lKQotewotICAgIGRlbGV0ZSBjb21wdXRlUGlwZWxpbmU7Ci19Ci0KLVdHUFVC
aW5kR3JvdXBMYXlvdXQgd2dwdUNvbXB1dGVQaXBlbGluZUdldEJpbmRHcm91cExheW91dChXR1BV
Q29tcHV0ZVBpcGVsaW5lIGNvbXB1dGVQaXBlbGluZSwgdWludDMyX3QgZ3JvdXBJbmRleCkKLXsK
LSAgICByZXR1cm4gbmV3IFdHUFVCaW5kR3JvdXBMYXlvdXRJbXBsIHsgY29tcHV0ZVBpcGVsaW5l
LT5jb21wdXRlUGlwZWxpbmUtPmdldEJpbmRHcm91cExheW91dChncm91cEluZGV4KSB9OwotfQot
Ci12b2lkIHdncHVDb21wdXRlUGlwZWxpbmVTZXRMYWJlbChXR1BVQ29tcHV0ZVBpcGVsaW5lIGNv
bXB1dGVQaXBlbGluZSwgY29uc3QgY2hhciogbGFiZWwpCi17Ci0gICAgY29tcHV0ZVBpcGVsaW5l
LT5jb21wdXRlUGlwZWxpbmUtPnNldExhYmVsKGxhYmVsKTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rldmlj
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGI0YWQ2ODM2NTBhMDdhZDBkZTIxYmY0Y2ZkNWFkNDQxZmY5Yjlj
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5jcHAKQEAg
LTAsMCArMSwzMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGV2aWNlLmgiCisKKyNpbmNsdWRl
ICJCaW5kR3JvdXAuaCIKKyNpbmNsdWRlICJCaW5kR3JvdXBMYXlvdXQuaCIKKyNpbmNsdWRlICJC
dWZmZXIuaCIKKyNpbmNsdWRlICJDb21tYW5kRW5jb2Rlci5oIgorI2luY2x1ZGUgIkNvbXB1dGVQ
aXBlbGluZS5oIgorI2luY2x1ZGUgIlBpcGVsaW5lTGF5b3V0LmgiCisjaW5jbHVkZSAiUXVlcnlT
ZXQuaCIKKyNpbmNsdWRlICJRdWV1ZS5oIgorI2luY2x1ZGUgIlJlbmRlckJ1bmRsZUVuY29kZXIu
aCIKKyNpbmNsdWRlICJSZW5kZXJQaXBlbGluZS5oIgorI2luY2x1ZGUgIlNhbXBsZXIuaCIKKyNp
bmNsdWRlICJTaGFkZXJNb2R1bGUuaCIKKyNpbmNsdWRlICJTdXJmYWNlLmgiCisjaW5jbHVkZSAi
U3dhcENoYWluLmgiCisjaW5jbHVkZSAiVGV4dHVyZS5oIgorI2luY2x1ZGUgIldlYkdQVUV4dC5o
IgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkdQVSB7CisK
K0RldmljZTo6RGV2aWNlKCkgPSBkZWZhdWx0OworCitEZXZpY2U6On5EZXZpY2UoKSA9IGRlZmF1
bHQ7CisKK1JlZjxCaW5kR3JvdXA+IERldmljZTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNj
cmlwdG9yKTsKKyAgICByZXR1cm4gQmluZEdyb3VwOjpjcmVhdGUoKTsKK30KKworUmVmPEJpbmRH
cm91cExheW91dD4gRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgV0dQVUJpbmRH
cm91cExheW91dERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOworICAgIHJldHVybiBCaW5kR3JvdXBMYXlvdXQ6OmNyZWF0ZSgpOworfQorCitS
ZWY8QnVmZmVyPiBEZXZpY2U6OmNyZWF0ZUJ1ZmZlcihjb25zdCBXR1BVQnVmZmVyRGVzY3JpcHRv
ciogZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0
dXJuIEJ1ZmZlcjo6Y3JlYXRlKCk7Cit9CisKK1JlZjxDb21tYW5kRW5jb2Rlcj4gRGV2aWNlOjpj
cmVhdGVDb21tYW5kRW5jb2Rlcihjb25zdCBXR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4g
Q29tbWFuZEVuY29kZXI6OmNyZWF0ZSgpOworfQorCitSZWY8Q29tcHV0ZVBpcGVsaW5lPiBEZXZp
Y2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAg
cmV0dXJuIENvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKCk7Cit9CisKK3ZvaWQgRGV2aWNlOjpjcmVh
dGVDb21wdXRlUGlwZWxpbmVBc3luYyhjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciogZGVzY3JpcHRvciwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5j
U3RhdHVzLCBSZWY8Q29tcHV0ZVBpcGVsaW5lPiYmLCBjb25zdCBjaGFyKiBtZXNzYWdlKT4mJiBj
YWxsYmFjaykKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgVU5VU0VEX1BB
UkFNKGNhbGxiYWNrKTsKK30KKworUmVmPFBpcGVsaW5lTGF5b3V0PiBEZXZpY2U6OmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KGNvbnN0IFdHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IqIGRlc2NyaXB0
b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAgIHJldHVybiBQaXBlbGlu
ZUxheW91dDo6Y3JlYXRlKCk7Cit9CisKK1JlZjxRdWVyeVNldD4gRGV2aWNlOjpjcmVhdGVRdWVy
eVNldChjb25zdCBXR1BVUXVlcnlTZXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIFVO
VVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gUXVlcnlTZXQ6OmNyZWF0ZSgpOwor
fQorCitSZWY8UmVuZGVyQnVuZGxlRW5jb2Rlcj4gRGV2aWNlOjpjcmVhdGVSZW5kZXJCdW5kbGVF
bmNvZGVyKGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciogZGVzY3JpcHRv
cikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIFJlbmRlckJ1
bmRsZUVuY29kZXI6OmNyZWF0ZSgpOworfQorCitSZWY8UmVuZGVyUGlwZWxpbmU+IERldmljZTo6
Y3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciog
ZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJu
IFJlbmRlclBpcGVsaW5lOjpjcmVhdGUoKTsKK30KKwordm9pZCBEZXZpY2U6OmNyZWF0ZVJlbmRl
clBpcGVsaW5lQXN5bmMoY29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3Jp
cHRvciwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzLCBS
ZWY8UmVuZGVyUGlwZWxpbmU+JiYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpPiYmIGNhbGxiYWNrKQor
eworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbGJh
Y2spOworfQorCitSZWY8U2FtcGxlcj4gRGV2aWNlOjpjcmVhdGVTYW1wbGVyKGNvbnN0IFdHUFVT
YW1wbGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3Jp
cHRvcik7CisgICAgcmV0dXJuIFNhbXBsZXI6OmNyZWF0ZSgpOworfQorCitSZWY8U2hhZGVyTW9k
dWxlPiBEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBXR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Cisg
ICAgcmV0dXJuIFNoYWRlck1vZHVsZTo6Y3JlYXRlKCk7Cit9CisKK1JlZjxTd2FwQ2hhaW4+IERl
dmljZTo6Y3JlYXRlU3dhcENoYWluKGNvbnN0IFN1cmZhY2UmIHN1cmZhY2UsIGNvbnN0IFdHUFVT
d2FwQ2hhaW5EZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShzdXJm
YWNlKTsKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIFN3YXBDaGFp
bjo6Y3JlYXRlKCk7Cit9CisKK1JlZjxUZXh0dXJlPiBEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29u
c3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIFVOVVNFRF9QQVJB
TShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gVGV4dHVyZTo6Y3JlYXRlKCk7Cit9CisKK3ZvaWQg
RGV2aWNlOjpkZXN0cm95KCkKK3sKK30KKworYm9vbCBEZXZpY2U6OmdldExpbWl0cyhXR1BVU3Vw
cG9ydGVkTGltaXRzKiBsaW1pdHMpCit7CisgICAgVU5VU0VEX1BBUkFNKGxpbWl0cyk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitSZWY8UXVldWU+IERldmljZTo6Z2V0UXVldWUoKQoreworICAg
IHJldHVybiBRdWV1ZTo6Y3JlYXRlKCk7Cit9CisKK2Jvb2wgRGV2aWNlOjpwb3BFcnJvclNjb3Bl
KFdURjo6RnVuY3Rpb248dm9pZChXR1BVRXJyb3JUeXBlLCBjb25zdCBjaGFyKik+JiYgY2FsbGJh
Y2spCit7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgRGV2aWNlOjpwdXNoRXJyb3JTY29wZShXR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQor
eworICAgIFVOVVNFRF9QQVJBTShmaWx0ZXIpOworfQorCit2b2lkIERldmljZTo6c2V0RGV2aWNl
TG9zdENhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChXR1BVRGV2aWNlTG9zdFJlYXNvbiwgY29u
c3QgY2hhciopPiYmIGNhbGxiYWNrKQoreworICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Cit9
CisKK3ZvaWQgRGV2aWNlOjpzZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayhXVEY6OkZ1bmN0aW9u
PHZvaWQoV0dQVUVycm9yVHlwZSwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKQoreworICAgIFVO
VVNFRF9QQVJBTShjYWxsYmFjayk7Cit9CisKK3ZvaWQgRGV2aWNlOjpzZXRMYWJlbChjb25zdCBj
aGFyKiBsYWJlbCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGFiZWwpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1RGV2aWNlUmVsZWFzZShXR1BVRGV2aWNlIGRldmljZSkK
K3sKKyAgICBkZWxldGUgZGV2aWNlOworfQorCitXR1BVQmluZEdyb3VwIHdncHVEZXZpY2VDcmVh
dGVCaW5kR3JvdXAoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVCaW5kR3JvdXBEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQVUJpbmRHcm91cEltcGwgeyBk
ZXZpY2UtPmRldmljZS0+Y3JlYXRlQmluZEdyb3VwKGRlc2NyaXB0b3IpIH07Cit9CisKK1dHUFVC
aW5kR3JvdXBMYXlvdXQgd2dwdURldmljZUNyZWF0ZUJpbmRHcm91cExheW91dChXR1BVRGV2aWNl
IGRldmljZSwgY29uc3QgV0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IqIGRlc2NyaXB0b3Ip
Cit7CisgICAgcmV0dXJuIG5ldyBXR1BVQmluZEdyb3VwTGF5b3V0SW1wbCB7IGRldmljZS0+ZGV2
aWNlLT5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoZGVzY3JpcHRvcikgfTsKK30KKworV0dQVUJ1ZmZl
ciB3Z3B1RGV2aWNlQ3JlYXRlQnVmZmVyKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVQnVm
ZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gbmV3IFdHUFVCdWZmZXJJ
bXBsIHsgZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZUJ1ZmZlcihkZXNjcmlwdG9yKSB9OworfQorCitX
R1BVQ29tbWFuZEVuY29kZXIgd2dwdURldmljZUNyZWF0ZUNvbW1hbmRFbmNvZGVyKFdHUFVEZXZp
Y2UgZGV2aWNlLCBjb25zdCBXR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KQoreworICAgIHJldHVybiBuZXcgV0dQVUNvbW1hbmRFbmNvZGVySW1wbCB7IGRldmljZS0+ZGV2
aWNlLT5jcmVhdGVDb21tYW5kRW5jb2RlcihkZXNjcmlwdG9yKSB9OworfQorCitXR1BVQ29tcHV0
ZVBpcGVsaW5lIHdncHVEZXZpY2VDcmVhdGVDb21wdXRlUGlwZWxpbmUoV0dQVURldmljZSBkZXZp
Y2UsIGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorewor
ICAgIHJldHVybiBuZXcgV0dQVUNvbXB1dGVQaXBlbGluZUltcGwgeyBkZXZpY2UtPmRldmljZS0+
Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGRlc2NyaXB0b3IpIH07Cit9CisKK3ZvaWQgd2dwdURldmlj
ZUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZUNvbXB1dGVQ
aXBlbGluZUFzeW5jQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQoreworICAgIGRl
dmljZS0+ZGV2aWNlLT5jcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhkZXNjcmlwdG9yLCBbY2Fs
bGJhY2ssIHVzZXJkYXRhXSAoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMgc3RhdHVzLCBS
ZWY8V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYgcGlwZWxpbmUsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpIHsKKyAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBuZXcgV0dQVUNvbXB1dGVQaXBlbGluZUlt
cGwgeyBXVEZNb3ZlKHBpcGVsaW5lKSB9LCBtZXNzYWdlLCB1c2VyZGF0YSk7CisgICAgfSk7Cit9
CisKK1dHUFVQaXBlbGluZUxheW91dCB3Z3B1RGV2aWNlQ3JlYXRlUGlwZWxpbmVMYXlvdXQoV0dQ
VURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVUGlwZWxpbmVMYXlvdXRJbXBsIHsgZGV2aWNl
LT5kZXZpY2UtPmNyZWF0ZVBpcGVsaW5lTGF5b3V0KGRlc2NyaXB0b3IpIH07Cit9CisKK1dHUFVR
dWVyeVNldCB3Z3B1RGV2aWNlQ3JlYXRlUXVlcnlTZXQoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0
IFdHUFVRdWVyeVNldERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIG5ldyBX
R1BVUXVlcnlTZXRJbXBsIHsgZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZVF1ZXJ5U2V0KGRlc2NyaXB0
b3IpIH07Cit9CisKK1dHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHdncHVEZXZpY2VDcmVhdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVUmVuZGVyQnVuZGxl
RW5jb2RlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVUmVu
ZGVyQnVuZGxlRW5jb2RlckltcGwgeyBkZXZpY2UtPmRldmljZS0+Y3JlYXRlUmVuZGVyQnVuZGxl
RW5jb2RlcihkZXNjcmlwdG9yKSB9OworfQorCitXR1BVUmVuZGVyUGlwZWxpbmUgd2dwdURldmlj
ZUNyZWF0ZVJlbmRlclBpcGVsaW5lKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQVVJl
bmRlclBpcGVsaW5lSW1wbCB7IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShk
ZXNjcmlwdG9yKSB9OworfQorCit2b2lkIHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZUFz
eW5jKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBXR1BVQ3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luY0NhbGxiYWNrIGNhbGxi
YWNrLCB2b2lkKiB1c2VyZGF0YSkKK3sKKyAgICBkZXZpY2UtPmRldmljZS0+Y3JlYXRlUmVuZGVy
UGlwZWxpbmVBc3luYyhkZXNjcmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVUNyZWF0
ZVBpcGVsaW5lQXN5bmNTdGF0dXMgc3RhdHVzLCBSZWY8V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4m
JiBwaXBlbGluZSwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgICAgICBjYWxsYmFjayhzdGF0
dXMsIG5ldyBXR1BVUmVuZGVyUGlwZWxpbmVJbXBsIHsgV1RGTW92ZShwaXBlbGluZSkgfSwgbWVz
c2FnZSwgdXNlcmRhdGEpOworICAgIH0pOworfQorCitXR1BVU2FtcGxlciB3Z3B1RGV2aWNlQ3Jl
YXRlU2FtcGxlcihXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQVVNhbXBsZXJJbXBsIHsgZGV2aWNl
LT5kZXZpY2UtPmNyZWF0ZVNhbXBsZXIoZGVzY3JpcHRvcikgfTsKK30KKworV0dQVVNoYWRlck1v
ZHVsZSB3Z3B1RGV2aWNlQ3JlYXRlU2hhZGVyTW9kdWxlKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25z
dCBXR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4g
bmV3IFdHUFVTaGFkZXJNb2R1bGVJbXBsIHsgZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZVNoYWRlck1v
ZHVsZShkZXNjcmlwdG9yKSB9OworfQorCitXR1BVU3dhcENoYWluIHdncHVEZXZpY2VDcmVhdGVT
d2FwQ2hhaW4oV0dQVURldmljZSBkZXZpY2UsIFdHUFVTdXJmYWNlIHN1cmZhY2UsIGNvbnN0IFdH
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQ
VVN3YXBDaGFpbkltcGwgeyBkZXZpY2UtPmRldmljZS0+Y3JlYXRlU3dhcENoYWluKHN1cmZhY2Ut
PnN1cmZhY2UsIGRlc2NyaXB0b3IpIH07Cit9CisKK1dHUFVUZXh0dXJlIHdncHVEZXZpY2VDcmVh
dGVUZXh0dXJlKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVVGV4dHVyZUltcGwgeyBkZXZpY2Ut
PmRldmljZS0+Y3JlYXRlVGV4dHVyZShkZXNjcmlwdG9yKSB9OworfQorCit2b2lkIHdncHVEZXZp
Y2VEZXN0cm95KFdHUFVEZXZpY2UgZGV2aWNlKQoreworICAgIGRldmljZS0+ZGV2aWNlLT5kZXN0
cm95KCk7Cit9CisKK2Jvb2wgd2dwdURldmljZUdldExpbWl0cyhXR1BVRGV2aWNlIGRldmljZSwg
V0dQVVN1cHBvcnRlZExpbWl0cyogbGltaXRzKQoreworICAgIHJldHVybiBkZXZpY2UtPmRldmlj
ZS0+Z2V0TGltaXRzKGxpbWl0cyk7Cit9CisKK1dHUFVRdWV1ZSB3Z3B1RGV2aWNlR2V0UXVldWUo
V0dQVURldmljZSBkZXZpY2UpCit7CisgICAgcmV0dXJuIG5ldyBXR1BVUXVldWVJbXBsIHsgZGV2
aWNlLT5kZXZpY2UtPmdldFF1ZXVlKCkgfTsKK30KKworYm9vbCB3Z3B1RGV2aWNlUG9wRXJyb3JT
Y29wZShXR1BVRGV2aWNlIGRldmljZSwgV0dQVUVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQq
IHVzZXJkYXRhKQoreworICAgIHJldHVybiBkZXZpY2UtPmRldmljZS0+cG9wRXJyb3JTY29wZShb
Y2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVUVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNz
YWdlKSB7CisgICAgICAgIGNhbGxiYWNrKHR5cGUsIG1lc3NhZ2UsIHVzZXJkYXRhKTsKKyAgICB9
KTsKK30KKwordm9pZCB3Z3B1RGV2aWNlUHVzaEVycm9yU2NvcGUoV0dQVURldmljZSBkZXZpY2Us
IFdHUFVFcnJvckZpbHRlciBmaWx0ZXIpCit7CisgICAgZGV2aWNlLT5kZXZpY2UtPnB1c2hFcnJv
clNjb3BlKGZpbHRlcik7Cit9CisKK3ZvaWQgd2dwdURldmljZVNldERldmljZUxvc3RDYWxsYmFj
ayhXR1BVRGV2aWNlIGRldmljZSwgV0dQVURldmljZUxvc3RDYWxsYmFjayBjYWxsYmFjaywgdm9p
ZCogdXNlcmRhdGEpCit7CisgICAgcmV0dXJuIGRldmljZS0+ZGV2aWNlLT5zZXREZXZpY2VMb3N0
Q2FsbGJhY2soW2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVEZXZpY2VMb3N0UmVhc29uIHJlYXNv
biwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAg
ICAgICBjYWxsYmFjayhyZWFzb24sIG1lc3NhZ2UsIHVzZXJkYXRhKTsKKyAgICB9KTsKK30KKwor
dm9pZCB3Z3B1RGV2aWNlU2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soV0dQVURldmljZSBkZXZp
Y2UsIFdHUFVFcnJvckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKK3sKKyAgICBy
ZXR1cm4gZGV2aWNlLT5kZXZpY2UtPnNldFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrKFtjYWxsYmFj
aywgdXNlcmRhdGFdIChXR1BVRXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsK
KyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2sodHlwZSwgbWVzc2Fn
ZSwgdXNlcmRhdGEpOworICAgIH0pOworfQorCit2b2lkIHdncHVEZXZpY2VTZXRMYWJlbChXR1BV
RGV2aWNlIGRldmljZSwgY29uc3QgY2hhciogbGFiZWwpCit7CisgICAgZGV2aWNlLT5kZXZpY2Ut
PnNldExhYmVsKGxhYmVsKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rl
dmljZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKaW5kZXggMjg4N2FmZWFlNWJk
NzQyMDZkYzI2NTIwNzZkOTQ5ODBmMjYyMGE5Ni4uNzZlYzBjMmRjODI0ZjdjYzVjNWUyZmE1MThj
M2VhNDU4ZDVlMDg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKQEAgLTI1LDExICsyNSwxMSBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2ltcG9ydCAiV2ViR1BVLmgiCi0jaW1wb3J0IDx3dGYvRmFzdE1h
bGxvYy5oPgotI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW1wb3J0IDx3dGYvUmVmLmg+Ci0j
aW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIldlYkdQVS5oIgorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8
d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJH
UFUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0gYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGYxYTg1NGZkYjJhOTU2NDI0OWY1YjBkZDUzNWVjYTQ4ZTUxZmE1ODQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2
aWNlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMzE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQg
IkRldmljZS5oIgotCi0jaW1wb3J0ICJCaW5kR3JvdXAuaCIKLSNpbXBvcnQgIkJpbmRHcm91cExh
eW91dC5oIgotI2ltcG9ydCAiQnVmZmVyLmgiCi0jaW1wb3J0ICJDb21tYW5kRW5jb2Rlci5oIgot
I2ltcG9ydCAiQ29tcHV0ZVBpcGVsaW5lLmgiCi0jaW1wb3J0ICJQaXBlbGluZUxheW91dC5oIgot
I2ltcG9ydCAiUXVlcnlTZXQuaCIKLSNpbXBvcnQgIlF1ZXVlLmgiCi0jaW1wb3J0ICJSZW5kZXJC
dW5kbGVFbmNvZGVyLmgiCi0jaW1wb3J0ICJSZW5kZXJQaXBlbGluZS5oIgotI2ltcG9ydCAiU2Ft
cGxlci5oIgotI2ltcG9ydCAiU2hhZGVyTW9kdWxlLmgiCi0jaW1wb3J0ICJTdXJmYWNlLmgiCi0j
aW1wb3J0ICJTd2FwQ2hhaW4uaCIKLSNpbXBvcnQgIlRleHR1cmUuaCIKLSNpbXBvcnQgIldlYkdQ
VUV4dC5oIgotI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViR1BV
IHsKLQotRGV2aWNlOjpEZXZpY2UoKSA9IGRlZmF1bHQ7Ci0KLURldmljZTo6fkRldmljZSgpID0g
ZGVmYXVsdDsKLQotUmVmPEJpbmRHcm91cD4gRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoY29uc3Qg
V0dQVUJpbmRHcm91cERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBCaW5kR3JvdXA6OmNyZWF0ZSgpOwotfQotCi1SZWY8
QmluZEdyb3VwTGF5b3V0PiBEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBXR1BV
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciogZGVzY3JpcHRvcikKLXsKLSAgICBVTlVTRURfUEFS
QU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIEJpbmRHcm91cExheW91dDo6Y3JlYXRlKCk7Ci19
Ci0KLVJlZjxCdWZmZXI+IERldmljZTo6Y3JlYXRlQnVmZmVyKGNvbnN0IFdHUFVCdWZmZXJEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yKQotewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAg
ICByZXR1cm4gQnVmZmVyOjpjcmVhdGUoKTsKLX0KLQotUmVmPENvbW1hbmRFbmNvZGVyPiBEZXZp
Y2U6OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0
b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJl
dHVybiBDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKCk7Ci19Ci0KLVJlZjxDb21wdXRlUGlwZWxpbmU+
IERldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQotewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsK
LSAgICByZXR1cm4gQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoKTsKLX0KLQotdm9pZCBEZXZpY2U6
OmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5l
QXN5bmNTdGF0dXMsIFJlZjxDb21wdXRlUGlwZWxpbmU+JiYsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
PiYmIGNhbGxiYWNrKQotewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVT
RURfUEFSQU0oY2FsbGJhY2spOwotfQotCi1SZWY8UGlwZWxpbmVMYXlvdXQ+IERldmljZTo6Y3Jl
YXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgV0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciogZGVz
Y3JpcHRvcikKLXsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFBp
cGVsaW5lTGF5b3V0OjpjcmVhdGUoKTsKLX0KLQotUmVmPFF1ZXJ5U2V0PiBEZXZpY2U6OmNyZWF0
ZVF1ZXJ5U2V0KGNvbnN0IFdHUFVRdWVyeVNldERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBRdWVyeVNldDo6Y3JlYXRl
KCk7Ci19Ci0KLVJlZjxSZW5kZXJCdW5kbGVFbmNvZGVyPiBEZXZpY2U6OmNyZWF0ZVJlbmRlckJ1
bmRsZUVuY29kZXIoY29uc3QgV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yKiBkZXNj
cmlwdG9yKQotewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVu
ZGVyQnVuZGxlRW5jb2Rlcjo6Y3JlYXRlKCk7Ci19Ci0KLVJlZjxSZW5kZXJQaXBlbGluZT4gRGV2
aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yKQotewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBy
ZXR1cm4gUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSgpOwotfQotCi12b2lkIERldmljZTo6Y3JlYXRl
UmVuZGVyUGlwZWxpbmVBc3luYyhjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0
dXMsIFJlZjxSZW5kZXJQaXBlbGluZT4mJiwgY29uc3QgY2hhciogbWVzc2FnZSk+JiYgY2FsbGJh
Y2spCi17Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShj
YWxsYmFjayk7Ci19Ci0KLVJlZjxTYW1wbGVyPiBEZXZpY2U6OmNyZWF0ZVNhbXBsZXIoY29uc3Qg
V0dQVVNhbXBsZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQotewotICAgIFVOVVNFRF9QQVJBTShk
ZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gU2FtcGxlcjo6Y3JlYXRlKCk7Ci19Ci0KLVJlZjxTaGFk
ZXJNb2R1bGU+IERldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFdHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQotewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9y
KTsKLSAgICByZXR1cm4gU2hhZGVyTW9kdWxlOjpjcmVhdGUoKTsKLX0KLQotUmVmPFN3YXBDaGFp
bj4gRGV2aWNlOjpjcmVhdGVTd2FwQ2hhaW4oY29uc3QgU3VyZmFjZSYgc3VyZmFjZSwgY29uc3Qg
V0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgVU5VU0VEX1BBUkFN
KHN1cmZhY2UpOwotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gU3dh
cENoYWluOjpjcmVhdGUoKTsKLX0KLQotUmVmPFRleHR1cmU+IERldmljZTo6Y3JlYXRlVGV4dHVy
ZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgVU5VU0VE
X1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBUZXh0dXJlOjpjcmVhdGUoKTsKLX0KLQot
dm9pZCBEZXZpY2U6OmRlc3Ryb3koKQotewotfQotCi1ib29sIERldmljZTo6Z2V0TGltaXRzKFdH
UFVTdXBwb3J0ZWRMaW1pdHMqIGxpbWl0cykKLXsKLSAgICBVTlVTRURfUEFSQU0obGltaXRzKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVJlZjxRdWV1ZT4gRGV2aWNlOjpnZXRRdWV1ZSgpCi17
Ci0gICAgcmV0dXJuIFF1ZXVlOjpjcmVhdGUoKTsKLX0KLQotYm9vbCBEZXZpY2U6OnBvcEVycm9y
U2NvcGUoV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVFcnJvclR5cGUsIGNvbnN0IGNoYXIqKT4mJiBj
YWxsYmFjaykKLXsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotdm9pZCBEZXZpY2U6OnB1c2hFcnJvclNjb3BlKFdHUFVFcnJvckZpbHRlciBmaWx0
ZXIpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGZpbHRlcik7Ci19Ci0KLXZvaWQgRGV2aWNlOjpzZXRE
ZXZpY2VMb3N0Q2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVEZXZpY2VMb3N0UmVhc29u
LCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2spCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNr
KTsKLX0KLQotdm9pZCBEZXZpY2U6OnNldFVuY2FwdHVyZWRFcnJvckNhbGxiYWNrKFdURjo6RnVu
Y3Rpb248dm9pZChXR1BVRXJyb3JUeXBlLCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2spCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKLX0KLQotdm9pZCBEZXZpY2U6OnNldExhYmVsKGNv
bnN0IGNoYXIqIGxhYmVsKQotewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkdQVQotCi12b2lkIHdncHVEZXZpY2VSZWxlYXNlKFdHUFVEZXZpY2UgZGV2
aWNlKQotewotICAgIGRlbGV0ZSBkZXZpY2U7Ci19Ci0KLVdHUFVCaW5kR3JvdXAgd2dwdURldmlj
ZUNyZWF0ZUJpbmRHcm91cChXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVUJpbmRHcm91cERl
c2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgcmV0dXJuIG5ldyBXR1BVQmluZEdyb3VwSW1w
bCB7IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVCaW5kR3JvdXAoZGVzY3JpcHRvcikgfTsKLX0KLQot
V0dQVUJpbmRHcm91cExheW91dCB3Z3B1RGV2aWNlQ3JlYXRlQmluZEdyb3VwTGF5b3V0KFdHUFVE
ZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciogZGVzY3Jp
cHRvcikKLXsKLSAgICByZXR1cm4gbmV3IFdHUFVCaW5kR3JvdXBMYXlvdXRJbXBsIHsgZGV2aWNl
LT5kZXZpY2UtPmNyZWF0ZUJpbmRHcm91cExheW91dChkZXNjcmlwdG9yKSB9OwotfQotCi1XR1BV
QnVmZmVyIHdncHVEZXZpY2VDcmVhdGVCdWZmZXIoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdH
UFVCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQotewotICAgIHJldHVybiBuZXcgV0dQVUJ1
ZmZlckltcGwgeyBkZXZpY2UtPmRldmljZS0+Y3JlYXRlQnVmZmVyKGRlc2NyaXB0b3IpIH07Ci19
Ci0KLVdHUFVDb21tYW5kRW5jb2RlciB3Z3B1RGV2aWNlQ3JlYXRlQ29tbWFuZEVuY29kZXIoV0dQ
VURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IpCi17Ci0gICAgcmV0dXJuIG5ldyBXR1BVQ29tbWFuZEVuY29kZXJJbXBsIHsgZGV2aWNl
LT5kZXZpY2UtPmNyZWF0ZUNvbW1hbmRFbmNvZGVyKGRlc2NyaXB0b3IpIH07Ci19Ci0KLVdHUFVD
b21wdXRlUGlwZWxpbmUgd2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZShXR1BVRGV2aWNl
IGRldmljZSwgY29uc3QgV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3Ip
Ci17Ci0gICAgcmV0dXJuIG5ldyBXR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbCB7IGRldmljZS0+ZGV2
aWNlLT5jcmVhdGVDb21wdXRlUGlwZWxpbmUoZGVzY3JpcHRvcikgfTsKLX0KLQotdm9pZCB3Z3B1
RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0
IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXR1BVQ3JlYXRlQ29t
cHV0ZVBpcGVsaW5lQXN5bmNDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCi17Ci0g
ICAgZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKGRlc2NyaXB0b3Is
IFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0
dXMsIFJlZjxXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJiBwaXBlbGluZSwgY29uc3QgY2hhciog
bWVzc2FnZSkgewotICAgICAgICBjYWxsYmFjayhzdGF0dXMsIG5ldyBXR1BVQ29tcHV0ZVBpcGVs
aW5lSW1wbCB7IFdURk1vdmUocGlwZWxpbmUpIH0sIG1lc3NhZ2UsIHVzZXJkYXRhKTsKLSAgICB9
KTsKLX0KLQotV0dQVVBpcGVsaW5lTGF5b3V0IHdncHVEZXZpY2VDcmVhdGVQaXBlbGluZUxheW91
dChXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciog
ZGVzY3JpcHRvcikKLXsKLSAgICByZXR1cm4gbmV3IFdHUFVQaXBlbGluZUxheW91dEltcGwgeyBk
ZXZpY2UtPmRldmljZS0+Y3JlYXRlUGlwZWxpbmVMYXlvdXQoZGVzY3JpcHRvcikgfTsKLX0KLQot
V0dQVVF1ZXJ5U2V0IHdncHVEZXZpY2VDcmVhdGVRdWVyeVNldChXR1BVRGV2aWNlIGRldmljZSwg
Y29uc3QgV0dQVVF1ZXJ5U2V0RGVzY3JpcHRvciogZGVzY3JpcHRvcikKLXsKLSAgICByZXR1cm4g
bmV3IFdHUFVRdWVyeVNldEltcGwgeyBkZXZpY2UtPmRldmljZS0+Y3JlYXRlUXVlcnlTZXQoZGVz
Y3JpcHRvcikgfTsKLX0KLQotV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgd2dwdURldmljZUNyZWF0
ZVJlbmRlckJ1bmRsZUVuY29kZXIoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVSZW5kZXJC
dW5kbGVFbmNvZGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKLXsKLSAgICByZXR1cm4gbmV3IFdH
UFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbCB7IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVSZW5kZXJC
dW5kbGVFbmNvZGVyKGRlc2NyaXB0b3IpIH07Ci19Ci0KLVdHUFVSZW5kZXJQaXBlbGluZSB3Z3B1
RGV2aWNlQ3JlYXRlUmVuZGVyUGlwZWxpbmUoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgcmV0dXJuIG5ldyBX
R1BVUmVuZGVyUGlwZWxpbmVJbXBsIHsgZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZVJlbmRlclBpcGVs
aW5lKGRlc2NyaXB0b3IpIH07Ci19Ci0KLXZvaWQgd2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVs
aW5lQXN5bmMoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IsIFdHUFVDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jQ2FsbGJhY2sg
Y2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQotewotICAgIGRldmljZS0+ZGV2aWNlLT5jcmVhdGVS
ZW5kZXJQaXBlbGluZUFzeW5jKGRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BV
Q3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6OlJlbmRlclBpcGVs
aW5lPiYmIHBpcGVsaW5lLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7Ci0gICAgICAgIGNhbGxiYWNr
KHN0YXR1cywgbmV3IFdHUFVSZW5kZXJQaXBlbGluZUltcGwgeyBXVEZNb3ZlKHBpcGVsaW5lKSB9
LCBtZXNzYWdlLCB1c2VyZGF0YSk7Ci0gICAgfSk7Ci19Ci0KLVdHUFVTYW1wbGVyIHdncHVEZXZp
Y2VDcmVhdGVTYW1wbGVyKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVU2FtcGxlckRlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgcmV0dXJuIG5ldyBXR1BVU2FtcGxlckltcGwgeyBk
ZXZpY2UtPmRldmljZS0+Y3JlYXRlU2FtcGxlcihkZXNjcmlwdG9yKSB9OwotfQotCi1XR1BVU2hh
ZGVyTW9kdWxlIHdncHVEZXZpY2VDcmVhdGVTaGFkZXJNb2R1bGUoV0dQVURldmljZSBkZXZpY2Us
IGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQotewotICAgIHJl
dHVybiBuZXcgV0dQVVNoYWRlck1vZHVsZUltcGwgeyBkZXZpY2UtPmRldmljZS0+Y3JlYXRlU2hh
ZGVyTW9kdWxlKGRlc2NyaXB0b3IpIH07Ci19Ci0KLVdHUFVTd2FwQ2hhaW4gd2dwdURldmljZUNy
ZWF0ZVN3YXBDaGFpbihXR1BVRGV2aWNlIGRldmljZSwgV0dQVVN1cmZhY2Ugc3VyZmFjZSwgY29u
c3QgV0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgcmV0dXJuIG5l
dyBXR1BVU3dhcENoYWluSW1wbCB7IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVTd2FwQ2hhaW4oc3Vy
ZmFjZS0+c3VyZmFjZSwgZGVzY3JpcHRvcikgfTsKLX0KLQotV0dQVVRleHR1cmUgd2dwdURldmlj
ZUNyZWF0ZVRleHR1cmUoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3Jp
cHRvciogZGVzY3JpcHRvcikKLXsKLSAgICByZXR1cm4gbmV3IFdHUFVUZXh0dXJlSW1wbCB7IGRl
dmljZS0+ZGV2aWNlLT5jcmVhdGVUZXh0dXJlKGRlc2NyaXB0b3IpIH07Ci19Ci0KLXZvaWQgd2dw
dURldmljZURlc3Ryb3koV0dQVURldmljZSBkZXZpY2UpCi17Ci0gICAgZGV2aWNlLT5kZXZpY2Ut
PmRlc3Ryb3koKTsKLX0KLQotYm9vbCB3Z3B1RGV2aWNlR2V0TGltaXRzKFdHUFVEZXZpY2UgZGV2
aWNlLCBXR1BVU3VwcG9ydGVkTGltaXRzKiBsaW1pdHMpCi17Ci0gICAgcmV0dXJuIGRldmljZS0+
ZGV2aWNlLT5nZXRMaW1pdHMobGltaXRzKTsKLX0KLQotV0dQVVF1ZXVlIHdncHVEZXZpY2VHZXRR
dWV1ZShXR1BVRGV2aWNlIGRldmljZSkKLXsKLSAgICByZXR1cm4gbmV3IFdHUFVRdWV1ZUltcGwg
eyBkZXZpY2UtPmRldmljZS0+Z2V0UXVldWUoKSB9OwotfQotCi1ib29sIHdncHVEZXZpY2VQb3BF
cnJvclNjb3BlKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRXJyb3JDYWxsYmFjayBjYWxsYmFjaywg
dm9pZCogdXNlcmRhdGEpCi17Ci0gICAgcmV0dXJuIGRldmljZS0+ZGV2aWNlLT5wb3BFcnJvclNj
b3BlKFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVRXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2sodHlwZSwgbWVzc2FnZSwgdXNlcmRhdGEpOwot
ICAgIH0pOwotfQotCi12b2lkIHdncHVEZXZpY2VQdXNoRXJyb3JTY29wZShXR1BVRGV2aWNlIGRl
dmljZSwgV0dQVUVycm9yRmlsdGVyIGZpbHRlcikKLXsKLSAgICBkZXZpY2UtPmRldmljZS0+cHVz
aEVycm9yU2NvcGUoZmlsdGVyKTsKLX0KLQotdm9pZCB3Z3B1RGV2aWNlU2V0RGV2aWNlTG9zdENh
bGxiYWNrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVRGV2aWNlTG9zdENhbGxiYWNrIGNhbGxiYWNr
LCB2b2lkKiB1c2VyZGF0YSkKLXsKLSAgICByZXR1cm4gZGV2aWNlLT5kZXZpY2UtPnNldERldmlj
ZUxvc3RDYWxsYmFjayhbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVURldmljZUxvc3RSZWFzb24g
cmVhc29uLCBjb25zdCBjaGFyKiBtZXNzYWdlKSB7Ci0gICAgICAgIGlmIChjYWxsYmFjaykKLSAg
ICAgICAgICAgIGNhbGxiYWNrKHJlYXNvbiwgbWVzc2FnZSwgdXNlcmRhdGEpOwotICAgIH0pOwot
fQotCi12b2lkIHdncHVEZXZpY2VTZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayhXR1BVRGV2aWNl
IGRldmljZSwgV0dQVUVycm9yQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQotewot
ICAgIHJldHVybiBkZXZpY2UtPmRldmljZS0+c2V0VW5jYXB0dXJlZEVycm9yQ2FsbGJhY2soW2Nh
bGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSkgewotICAgICAgICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICBjYWxsYmFjayh0eXBlLCBt
ZXNzYWdlLCB1c2VyZGF0YSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgd2dwdURldmljZVNldExhYmVs
KFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBjaGFyKiBsYWJlbCkKLXsKLSAgICBkZXZpY2UtPmRl
dmljZS0+c2V0TGFiZWwobGFiZWwpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvRXhwb3J0TWFjcm9zLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9FeHBvcnRNYWNyb3MuaApp
bmRleCBjN2U0ZWY4NjQxNGRkOTI4OWExMTZiM2ZlOWU3NmRhZGRiZDgyNDdiLi4wMmY2NDkyZDJj
MjkxYTUzYTVmOGU2NzY2ODJmNDU2NDE5OWJjZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9FeHBvcnRNYWNyb3MuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9FeHBvcnRN
YWNyb3MuaApAQCAtMjksNyArMjksNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2ltcG9ydCA8d3Rm
L0V4cG9ydE1hY3Jvcy5oPgorI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KIAogI2lmICFk
ZWZpbmVkKFdFQkdQVV9FWFBPUlQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0luc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xYTA3NjE5Njc0YWVlZDI0ZmM4ZTAyM2JlMzY3Y2I4ZmVlZGJiNDYzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuY3BwCkBAIC0wLDAgKzEsMzk4
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3RhbmNlLmgiCisKKyNpbmNsdWRlICJBZGFwdGVy
LmgiCisjaW5jbHVkZSAiU3VyZmFjZS5oIgorI2luY2x1ZGUgIldlYkdQVUV4dC5oIgorI2luY2x1
ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2Ug
V2ViR1BVIHsKKworSW5zdGFuY2U6Okluc3RhbmNlKCkgPSBkZWZhdWx0OworCitJbnN0YW5jZTo6
fkluc3RhbmNlKCkgPSBkZWZhdWx0OworCitSZWY8U3VyZmFjZT4gSW5zdGFuY2U6OmNyZWF0ZVN1
cmZhY2UoY29uc3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIFVO
VVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gU3VyZmFjZTo6Y3JlYXRlKCk7Cit9
CisKK3ZvaWQgSW5zdGFuY2U6OnByb2Nlc3NFdmVudHMoKQoreworfQorCit2b2lkIEluc3RhbmNl
OjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zKiBvcHRpb25z
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBSZWZQdHI8QWRh
cHRlcj4mJiwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKQoreworICAgIFVOVVNFRF9QQVJBTShv
cHRpb25zKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworICAgIGlmIChhdXRvKiBkZXZp
Y2UgPSBNVEw6OkNyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKSkKKyAgICAgICAgY2FsbGJhY2so
V0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzX1N1Y2Nlc3MsIEFkYXB0ZXI6OmNyZWF0ZSgqZGV2aWNl
KSwgbnVsbHB0cik7CisgICAgZWxzZQorICAgICAgICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0
ZXJTdGF0dXNfVW5hdmFpbGFibGUsIG51bGxwdHIsICJObyBhZGFwdGVycyBleGlzdCIpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1SW5zdGFuY2VSZWxlYXNlKFdHUFVJ
bnN0YW5jZSBpbnN0YW5jZSkKK3sKKyAgICBkZWxldGUgaW5zdGFuY2U7Cit9CisKK1dHUFVJbnN0
YW5jZSB3Z3B1Q3JlYXRlSW5zdGFuY2UoY29uc3QgV0dQVUluc3RhbmNlRGVzY3JpcHRvciogZGVz
Y3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIG5l
dyBXR1BVSW5zdGFuY2VJbXBsIHsgV2ViR1BVOjpJbnN0YW5jZTo6Y3JlYXRlKCkgfTsKK30KKwor
V0dQVVByb2Mgd2dwdUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBjaGFy
KiBwcm9jTmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZGV2aWNlKTsKKyAgICAvLyBGSVhNRTog
VXNlIGdwZXJmIHRvIG1ha2UgdGhpcyBmYXN0ZXIuCisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUs
ICJ3Z3B1QWRhcHRlckdldEZlYXR1cmVBdEluZGV4IikpCisgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUFkYXB0ZXJHZXRGZWF0dXJlQXRJbmRleCk7CisgICAg
aWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QWRhcHRlckdldExpbWl0cyIpKQorICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVBZGFwdGVyR2V0TGltaXRzKTsK
KyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVBZGFwdGVyR2V0UHJvcGVydGllcyIpKQor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVBZGFwdGVyR2V0
UHJvcGVydGllcyk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QWRhcHRlckhhc0Zl
YXR1cmUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
QWRhcHRlckhhc0ZlYXR1cmUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUFkYXB0
ZXJSZWxlYXNlIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigm
d2dwdUFkYXB0ZXJSZWxlYXNlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVBZGFw
dGVyUmVxdWVzdERldmljZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVBZGFwdGVyUmVxdWVzdERldmljZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1QmluZEdyb3VwTGF5b3V0UmVsZWFzZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCaW5kR3JvdXBMYXlvdXRSZWxlYXNlKTsKKyAgICBp
ZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVCaW5kR3JvdXBMYXlvdXRTZXRMYWJlbCIpKQorICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCaW5kR3JvdXBMYXlv
dXRTZXRMYWJlbCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QmluZEdyb3VwUmVs
ZWFzZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVC
aW5kR3JvdXBSZWxlYXNlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVCaW5kR3Jv
dXBTZXRMYWJlbCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVCaW5kR3JvdXBTZXRMYWJlbCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1
QnVmZmVyRGVzdHJveSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJv
Yz4oJndncHVCdWZmZXJEZXN0cm95KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVC
dWZmZXJHZXRDb25zdE1hcHBlZFJhbmdlIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdUJ1ZmZlckdldENvbnN0TWFwcGVkUmFuZ2UpOworICAgIGlmICgh
c3RyY21wKHByb2NOYW1lLCAid2dwdUJ1ZmZlckdldE1hcHBlZFJhbmdlIikpCisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUJ1ZmZlckdldE1hcHBlZFJhbmdl
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVCdWZmZXJNYXBBc3luYyIpKQorICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCdWZmZXJNYXBBc3lu
Yyk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QnVmZmVyUmVsZWFzZSIpKQorICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCdWZmZXJSZWxlYXNl
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVCdWZmZXJTZXRMYWJlbCIpKQorICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCdWZmZXJTZXRMYWJl
bCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QnVmZmVyVW5tYXAiKSkKKyAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1QnVmZmVyVW5tYXApOwor
ICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRCdWZmZXJSZWxlYXNlIikpCisg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRCdWZm
ZXJSZWxlYXNlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kQnVmZmVy
U2V0TGFiZWwiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3
Z3B1Q29tbWFuZEJ1ZmZlclNldExhYmVsKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndn
cHVDb21tYW5kRW5jb2RlckJlZ2luQ29tcHV0ZVBhc3MiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQYXNz
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5jb2RlckJlZ2luUmVu
ZGVyUGFzcyIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndn
cHVDb21tYW5kRW5jb2RlckJlZ2luUmVuZGVyUGFzcyk7CisgICAgaWYgKCFzdHJjbXAocHJvY05h
bWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVmZmVyVG9CdWZmZXIiKSkKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVm
ZmVyVG9CdWZmZXIpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNv
ZGVyQ29weUJ1ZmZlclRvVGV4dHVyZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxXR1BVUHJvYz4oJndncHVDb21tYW5kRW5jb2RlckNvcHlCdWZmZXJUb1RleHR1cmUpOworICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb0J1
ZmZlciIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVD
b21tYW5kRW5jb2RlckNvcHlUZXh0dXJlVG9CdWZmZXIpOworICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1RleHR1cmUiKSkKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJDb3B5
VGV4dHVyZVRvVGV4dHVyZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tbWFu
ZEVuY29kZXJGaWxsQnVmZmVyIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdH
UFVQcm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyRmlsbEJ1ZmZlcik7CisgICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2giKSkKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2gpOworICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVySW5zZXJ0RGVidWdNYXJr
ZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29t
bWFuZEVuY29kZXJJbnNlcnREZWJ1Z01hcmtlcik7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUs
ICJ3Z3B1Q29tbWFuZEVuY29kZXJQb3BEZWJ1Z0dyb3VwIikpCisgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyUG9wRGVidWdHcm91cCk7
CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJQdXNoRGVidWdH
cm91cCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVD
b21tYW5kRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVDb21tYW5kRW5jb2RlclJlbGVhc2UiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJSZWxlYXNlKTsKKyAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5jb2RlclJlc29sdmVRdWVyeVNldCIpKQorICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21tYW5kRW5jb2Rl
clJlc29sdmVRdWVyeVNldCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tbWFu
ZEVuY29kZXJTZXRMYWJlbCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVDb21tYW5kRW5jb2RlclNldExhYmVsKTsKKyAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVDb21tYW5kRW5jb2RlcldyaXRlVGltZXN0YW1wIikpCisgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyV3JpdGVUaW1l
c3RhbXApOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbXB1dGVQYXNzRW5jb2Rl
ckJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyQmVnaW5QaXBlbGluZVN0
YXRpc3RpY3NRdWVyeSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBh
c3NFbmNvZGVyRGlzcGF0Y2giKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQ
VVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRGlzcGF0Y2gpOworICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdUNvbXB1dGVQYXNzRW5jb2RlckRpc3BhdGNoSW5kaXJlY3QiKSkKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NF
bmNvZGVyRGlzcGF0Y2hJbmRpcmVjdCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1
Q29tcHV0ZVBhc3NFbmNvZGVyRW5kUGFzcyIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQYXNzKTsKKyAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQaXBlbGluZVN0YXRp
c3RpY3NRdWVyeSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk7CisgICAg
aWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVySW5zZXJ0RGVidWdN
YXJrZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
Q29tcHV0ZVBhc3NFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIpOworICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdUNvbXB1dGVQYXNzRW5jb2RlclBvcERlYnVnR3JvdXAiKSkKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVy
UG9wRGVidWdHcm91cCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBh
c3NFbmNvZGVyUHVzaERlYnVnR3JvdXAiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXApOworICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbXB1dGVQYXNzRW5jb2RlclJlbGVhc2UiKSkK
KyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBh
c3NFbmNvZGVyUmVsZWFzZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0
ZVBhc3NFbmNvZGVyU2V0QmluZEdyb3VwIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldEJpbmRHcm91cCk7CisgICAg
aWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0TGFiZWwiKSkK
KyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBh
c3NFbmNvZGVyU2V0TGFiZWwpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbXB1
dGVQYXNzRW5jb2RlclNldFBpcGVsaW5lIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldFBpcGVsaW5lKTsKKyAgICBp
ZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRlUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFt
cCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21w
dXRlUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFtcCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUs
ICJ3Z3B1Q29tcHV0ZVBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0IikpCisgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQaXBlbGluZUdldEJpbmRH
cm91cExheW91dCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBpcGVs
aW5lUmVsZWFzZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVDb21wdXRlUGlwZWxpbmVSZWxlYXNlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVDb21wdXRlUGlwZWxpbmVTZXRMYWJlbCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGlwZWxpbmVTZXRMYWJlbCk7CisgICAgaWYg
KCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q3JlYXRlSW5zdGFuY2UiKSkKKyAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q3JlYXRlSW5zdGFuY2UpOworICAgIGlm
ICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZUNyZWF0ZUJpbmRHcm91cCIpKQorICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VDcmVhdGVCaW5k
R3JvdXApOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZUNyZWF0ZUJpbmRH
cm91cExheW91dCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVEZXZpY2VDcmVhdGVCaW5kR3JvdXBMYXlvdXQpOworICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdURldmljZUNyZWF0ZUJ1ZmZlciIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VDcmVhdGVCdWZmZXIpOworICAgIGlmICghc3Ry
Y21wKHByb2NOYW1lLCAid2dwdURldmljZUNyZWF0ZUNvbW1hbmRFbmNvZGVyIikpCisgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZUNvbW1h
bmRFbmNvZGVyKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVD
b21wdXRlUGlwZWxpbmUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lKTsKKyAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyIpKQorICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VDcmVhdGVDb21w
dXRlUGlwZWxpbmVBc3luYyk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNl
Q3JlYXRlUGlwZWxpbmVMYXlvdXQiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1RGV2aWNlQ3JlYXRlUGlwZWxpbmVMYXlvdXQpOworICAgIGlmICghc3Ry
Y21wKHByb2NOYW1lLCAid2dwdURldmljZUNyZWF0ZVF1ZXJ5U2V0IikpCisgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZVF1ZXJ5U2V0KTsK
KyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVSZW5kZXJCdW5kbGVF
bmNvZGVyIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dURldmljZUNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIpOworICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lIikpCisgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5l
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBl
bGluZUFzeW5jIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigm
d2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMpOworICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdURldmljZUNyZWF0ZVNhbXBsZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2aWNlQ3JlYXRlU2FtcGxlcik7CisgICAgaWYg
KCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRlU2hhZGVyTW9kdWxlIikpCisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZVNo
YWRlck1vZHVsZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRl
U3dhcENoYWluIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigm
d2dwdURldmljZUNyZWF0ZVN3YXBDaGFpbik7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3
Z3B1RGV2aWNlQ3JlYXRlVGV4dHVyZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxXR1BVUHJvYz4oJndncHVEZXZpY2VDcmVhdGVUZXh0dXJlKTsKKyAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVEZXZpY2VEZXN0cm95IikpCisgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZURlc3Ryb3kpOworICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdURldmljZUdldExpbWl0cyIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VHZXRMaW1pdHMpOworICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdURldmljZUdldFF1ZXVlIikpCisgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUdldFF1ZXVlKTsKKyAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVEZXZpY2VQb3BFcnJvclNjb3BlIikpCisgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZVBvcEVycm9yU2NvcGUpOworICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZVB1c2hFcnJvclNjb3BlIikpCisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZVB1c2hFcnJv
clNjb3BlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VSZWxlYXNlIikp
CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZVJl
bGVhc2UpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZVNldERldmljZUxv
c3RDYWxsYmFjayIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVEZXZpY2VTZXREZXZpY2VMb3N0Q2FsbGJhY2spOworICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdURldmljZVNldExhYmVsIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdURldmljZVNldExhYmVsKTsKKyAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVEZXZpY2VTZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayIpKQorICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VTZXRVbmNhcHR1cmVk
RXJyb3JDYWxsYmFjayk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1R2V0UHJvY0Fk
ZHJlc3MiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
R2V0UHJvY0FkZHJlc3MpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUluc3RhbmNl
Q3JlYXRlU3VyZmFjZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJv
Yz4oJndncHVJbnN0YW5jZUNyZWF0ZVN1cmZhY2UpOworICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdUluc3RhbmNlUHJvY2Vzc0V2ZW50cyIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxXR1BVUHJvYz4oJndncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMpOworICAgIGlmICgh
c3RyY21wKHByb2NOYW1lLCAid2dwdUluc3RhbmNlUmVsZWFzZSIpKQorICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVJbnN0YW5jZVJlbGVhc2UpOworICAgIGlm
ICghc3RyY21wKHByb2NOYW1lLCAid2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXIiKSkKKyAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1SW5zdGFuY2VSZXF1ZXN0
QWRhcHRlcik7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UGlwZWxpbmVMYXlvdXRS
ZWxlYXNlIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dVBpcGVsaW5lTGF5b3V0UmVsZWFzZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1
UGlwZWxpbmVMYXlvdXRTZXRMYWJlbCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxXR1BVUHJvYz4oJndncHVQaXBlbGluZUxheW91dFNldExhYmVsKTsKKyAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVRdWVyeVNldERlc3Ryb3kiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UXVlcnlTZXREZXN0cm95KTsKKyAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVRdWVyeVNldFJlbGVhc2UiKSkKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UXVlcnlTZXRSZWxlYXNlKTsKKyAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVRdWVyeVNldFNldExhYmVsIikpCisgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1ZXJ5U2V0U2V0TGFiZWwpOworICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVF1ZXVlT25TdWJtaXR0ZWRXb3JrRG9uZSIpKQor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVRdWV1ZU9uU3Vi
bWl0dGVkV29ya0RvbmUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVF1ZXVlUmVs
ZWFzZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVR
dWV1ZVJlbGVhc2UpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVF1ZXVlU2V0TGFi
ZWwiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UXVl
dWVTZXRMYWJlbCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UXVldWVTdWJtaXQi
KSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UXVldWVT
dWJtaXQpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVF1ZXVlV3JpdGVCdWZmZXIi
KSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UXVldWVX
cml0ZUJ1ZmZlcik7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UXVldWVXcml0ZVRl
eHR1cmUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
UXVldWVXcml0ZVRleHR1cmUpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRl
ckJ1bmRsZUVuY29kZXJEcmF3IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdH
UFVQcm9jPigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3KTsKKyAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGV4ZWQiKSkKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2Rl
ckRyYXdJbmRleGVkKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5k
bGVFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVjdCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGV4ZWRJbmRp
cmVjdCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2Rl
ckRyYXdJbmRpcmVjdCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJv
Yz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGlyZWN0KTsKKyAgICBpZiAoIXN0cmNt
cChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRmluaXNoIikpCisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJG
aW5pc2gpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlckJ1bmRsZUVuY29k
ZXJJbnNlcnREZWJ1Z01hcmtlciIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
R1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIpOworICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlckJ1bmRsZUVuY29kZXJQb3BEZWJ1Z0dy
b3VwIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJl
bmRlckJ1bmRsZUVuY29kZXJQb3BEZWJ1Z0dyb3VwKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyUHVzaERlYnVnR3JvdXAiKSkKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclB1
c2hEZWJ1Z0dyb3VwKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5k
bGVFbmNvZGVyUmVsZWFzZSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVyUmVsZWFzZSk7CisgICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldEJpbmRHcm91cCIpKQorICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNv
ZGVyU2V0QmluZEdyb3VwKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJC
dW5kbGVFbmNvZGVyU2V0SW5kZXhCdWZmZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldEluZGV4QnVmZmVyKTsK
KyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0TGFi
ZWwiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVu
ZGVyQnVuZGxlRW5jb2RlclNldExhYmVsKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndn
cHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0UGlwZWxpbmUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldFBpcGVsaW5l
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0
VmVydGV4QnVmZmVyIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRWZXJ0ZXhCdWZmZXIpOworICAgIGlmICghc3Ry
Y21wKHByb2NOYW1lLCAid2dwdVJlbmRlckJ1bmRsZVJlbGVhc2UiKSkKKyAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlUmVsZWFzZSk7Cisg
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlU2V0TGFiZWwiKSkKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxl
U2V0TGFiZWwpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNv
ZGVyQmVnaW5PY2NsdXNpb25RdWVyeSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2luT2NjbHVzaW9uUXVlcnkpOwor
ICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVyQmVnaW5QaXBl
bGluZVN0YXRpc3RpY3NRdWVyeSIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
R1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVl
cnkpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVyRHJh
dyIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5k
ZXJQYXNzRW5jb2RlckRyYXcpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRl
clBhc3NFbmNvZGVyRHJhd0luZGV4ZWQiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kZXhlZCk7CisgICAgaWYg
KCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kZXhlZEluZGly
ZWN0IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJl
bmRlclBhc3NFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVjdCk7CisgICAgaWYgKCFzdHJjbXAocHJv
Y05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kaXJlY3QiKSkKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3
SW5kaXJlY3QpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNv
ZGVyRW5kT2NjbHVzaW9uUXVlcnkiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRPY2NsdXNpb25RdWVyeSk7CisgICAg
aWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRQYXNzIikpCisg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NF
bmNvZGVyRW5kUGFzcyk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFz
c0VuY29kZXJFbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSIpKQorICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlckVuZFBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQ
YXNzRW5jb2RlckV4ZWN1dGVCdW5kbGVzIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyRXhlY3V0ZUJ1bmRsZXMpOworICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVySW5zZXJ0RGVidWdN
YXJrZXIiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
UmVuZGVyUGFzc0VuY29kZXJJbnNlcnREZWJ1Z01hcmtlcik7CisgICAgaWYgKCFzdHJjbXAocHJv
Y05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJQb3BEZWJ1Z0dyb3VwIikpCisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyUG9w
RGVidWdHcm91cCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0Vu
Y29kZXJQdXNoRGVidWdHcm91cCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
R1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKTsKKyAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclJlbGVhc2UiKSkKKyAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29k
ZXJSZWxlYXNlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5j
b2RlclNldEJpbmRHcm91cCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlclNldEJpbmRHcm91cCk7CisgICAgaWYgKCFzdHJj
bXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRCbGVuZENvbnN0YW50IikpCisg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NF
bmNvZGVyU2V0QmxlbmRDb25zdGFudCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1
UmVuZGVyUGFzc0VuY29kZXJTZXRJbmRleEJ1ZmZlciIpKQorICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlclNldEluZGV4QnVmZmVy
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclNldExh
YmVsIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJl
bmRlclBhc3NFbmNvZGVyU2V0TGFiZWwpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dw
dVJlbmRlclBhc3NFbmNvZGVyU2V0UGlwZWxpbmUiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRQaXBlbGluZSk7Cisg
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRTY2lzc29y
UmVjdCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVS
ZW5kZXJQYXNzRW5jb2RlclNldFNjaXNzb3JSZWN0KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclNldFN0ZW5jaWxSZWZlcmVuY2UiKSkKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJT
ZXRTdGVuY2lsUmVmZXJlbmNlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5k
ZXJQYXNzRW5jb2RlclNldFZlcnRleEJ1ZmZlciIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlclNldFZlcnRleEJ1ZmZlcik7
CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRWaWV3
cG9ydCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVS
ZW5kZXJQYXNzRW5jb2RlclNldFZpZXdwb3J0KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVSZW5kZXJQYXNzRW5jb2RlcldyaXRlVGltZXN0YW1wIikpCisgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyV3JpdGVUaW1l
c3RhbXApOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBpcGVsaW5lR2V0
QmluZEdyb3VwTGF5b3V0IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdVJlbmRlclBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0KTsKKyAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQaXBlbGluZVJlbGVhc2UiKSkKKyAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGlwZWxpbmVSZWxlYXNl
KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQaXBlbGluZVNldExhYmVs
IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRl
clBpcGVsaW5lU2V0TGFiZWwpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVNhbXBs
ZXJSZWxlYXNlIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigm
d2dwdVNhbXBsZXJSZWxlYXNlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVTYW1w
bGVyU2V0TGFiZWwiKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1U2FtcGxlclNldExhYmVsKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVT
aGFkZXJNb2R1bGVSZWxlYXNlIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdH
UFVQcm9jPigmd2dwdVNoYWRlck1vZHVsZVJlbGVhc2UpOworICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdVNoYWRlck1vZHVsZVNldExhYmVsIikpCisgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVNoYWRlck1vZHVsZVNldExhYmVsKTsKKyAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVTdXJmYWNlR2V0UHJlZmVycmVkRm9ybWF0IikpCisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVN1cmZhY2VHZXRQcmVm
ZXJyZWRGb3JtYXQpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVN1cmZhY2VSZWxl
YXNlIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVN1
cmZhY2VSZWxlYXNlKTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVTd2FwQ2hhaW5H
ZXRDdXJyZW50VGV4dHVyZVZpZXciKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1U3dhcENoYWluR2V0Q3VycmVudFRleHR1cmVWaWV3KTsKKyAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVTd2FwQ2hhaW5QcmVzZW50IikpCisgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVN3YXBDaGFpblByZXNlbnQpOworICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVN3YXBDaGFpblJlbGVhc2UiKSkKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1U3dhcENoYWluUmVsZWFzZSk7
CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1VGV4dHVyZUNyZWF0ZVZpZXciKSkKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1VGV4dHVyZUNyZWF0
ZVZpZXcpOworICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVRleHR1cmVEZXN0cm95Iikp
CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVRleHR1cmVE
ZXN0cm95KTsKKyAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVUZXh0dXJlUmVsZWFzZSIp
KQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVUZXh0dXJl
UmVsZWFzZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1VGV4dHVyZVNldExhYmVs
IikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVRleHR1
cmVTZXRMYWJlbCk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1VGV4dHVyZVZpZXdS
ZWxlYXNlIikpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dVRleHR1cmVWaWV3UmVsZWFzZSk7CisgICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1VGV4
dHVyZVZpZXdTZXRMYWJlbCIpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVUZXh0dXJlVmlld1NldExhYmVsKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworV0dQVVN1cmZhY2Ugd2dwdUluc3RhbmNlQ3JlYXRlU3VyZmFjZShXR1BVSW5zdGFuY2UgaW5z
dGFuY2UsIGNvbnN0IFdHUFVTdXJmYWNlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBy
ZXR1cm4gbmV3IFdHUFVTdXJmYWNlSW1wbCB7IGluc3RhbmNlLT5pbnN0YW5jZS0+Y3JlYXRlU3Vy
ZmFjZShkZXNjcmlwdG9yKSB9OworfQorCit2b2lkIHdncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMo
V0dQVUluc3RhbmNlIGluc3RhbmNlKQoreworICAgIGluc3RhbmNlLT5pbnN0YW5jZS0+cHJvY2Vz
c0V2ZW50cygpOworfQorCit2b2lkIHdncHVJbnN0YW5jZVJlcXVlc3RBZGFwdGVyKFdHUFVJbnN0
YW5jZSBpbnN0YW5jZSwgY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyogb3B0aW9ucywg
V0dQVVJlcXVlc3RBZGFwdGVyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQorewor
ICAgIGluc3RhbmNlLT5pbnN0YW5jZS0+cmVxdWVzdEFkYXB0ZXIob3B0aW9ucywgW2NhbGxiYWNr
LCB1c2VyZGF0YV0gKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJH
UFU6OkFkYXB0ZXI+JiYgYWRhcHRlciwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAgICAgICBp
ZiAoYWRhcHRlcikKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgbmV3IFdHUFVBZGFwdGVy
SW1wbCB7IGFkYXB0ZXIucmVsZWFzZU5vbk51bGwoKSB9LCBtZXNzYWdlLCB1c2VyZGF0YSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgbnVsbHB0ciwgbWVzc2Fn
ZSwgdXNlcmRhdGEpOworICAgIH0pOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9JbnN0YW5jZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaAppbmRleCA1
YzFkNzIyYmFlNmZhZTAxNDRhODdiNGZkNjYzNTc0MjFkYjUxMTQxLi4wNjdkN2Y1YmRkZGE3NmY0
ZDUzZDQzZDA1OWQxNDMzNDZkN2M1NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmgKQEAgLTI1
LDExICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2ltcG9ydCAiV2ViR1BVLmgiCi0jaW1w
b3J0IDx3dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW1wb3J0
IDx3dGYvUmVmLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIldlYkdQ
VS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
IG5hbWVzcGFjZSBXZWJHUFUgewogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIFJl
ZjxTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKGNvbnN0IFdHUFVTdXJmYWNlRGVzY3JpcHRvciopOwog
ICAgIHZvaWQgcHJvY2Vzc0V2ZW50cygpOwotICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoY29uc3Qg
V0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyosIFdURjo6RnVuY3Rpb248dm9pZChXR1BVUmVxdWVz
dEFkYXB0ZXJTdGF0dXMsIFJlZjxBZGFwdGVyPiYmLCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2sp
OworICAgIHZvaWQgcmVxdWVzdEFkYXB0ZXIoY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9u
cyosIFdURjo6RnVuY3Rpb248dm9pZChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMsIFJlZlB0cjxB
ZGFwdGVyPiYmLCBjb25zdCBjaGFyKik+JiYgY2FsbGJhY2spOwogCiBwcml2YXRlOgogICAgIElu
c3RhbmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1MDJiZTQ3OWIxYzk2ODAxYmIzMTNiNjAxODJkM2JlMmM5YjVlNTc1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0luc3RhbmNlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMzkyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkluc3RhbmNlLmgiCi0KLSNpbXBvcnQgIkFkYXB0ZXIuaCIKLSNpbXBvcnQgIlN1
cmZhY2UuaCIKLSNpbXBvcnQgIldlYkdQVUV4dC5oIgotI2ltcG9ydCA8Y3N0cmluZz4KLSNpbXBv
cnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotbmFtZXNwYWNlIFdlYkdQVSB7Ci0KLUluc3RhbmNl
OjpJbnN0YW5jZSgpID0gZGVmYXVsdDsKLQotSW5zdGFuY2U6On5JbnN0YW5jZSgpID0gZGVmYXVs
dDsKLQotUmVmPFN1cmZhY2U+IEluc3RhbmNlOjpjcmVhdGVTdXJmYWNlKGNvbnN0IFdHUFVTdXJm
YWNlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKLXsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRv
cik7Ci0gICAgcmV0dXJuIFN1cmZhY2U6OmNyZWF0ZSgpOwotfQotCi12b2lkIEluc3RhbmNlOjpw
cm9jZXNzRXZlbnRzKCkKLXsKLX0KLQotdm9pZCBJbnN0YW5jZTo6cmVxdWVzdEFkYXB0ZXIoY29u
c3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyogb3B0aW9ucywgV1RGOjpGdW5jdGlvbjx2b2lk
KFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgUmVmPEFkYXB0ZXI+JiYsIGNvbnN0IGNoYXIqKT4m
JiBjYWxsYmFjaykKLXsKLSAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7Ci0gICAgVU5VU0VEX1BB
UkFNKGNhbGxiYWNrKTsKLSAgICBjYWxsYmFjayhXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXNfVW5h
dmFpbGFibGUsIEFkYXB0ZXI6OmNyZWF0ZSgpLCAiQWRhcHRlciIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJHUFUKLQotdm9pZCB3Z3B1SW5zdGFuY2VSZWxlYXNlKFdHUFVJbnN0YW5jZSBpbnN0
YW5jZSkKLXsKLSAgICBkZWxldGUgaW5zdGFuY2U7Ci19Ci0KLVdHUFVJbnN0YW5jZSB3Z3B1Q3Jl
YXRlSW5zdGFuY2UoY29uc3QgV0dQVUluc3RhbmNlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKLXsK
LSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIG5ldyBXR1BVSW5zdGFu
Y2VJbXBsIHsgV2ViR1BVOjpJbnN0YW5jZTo6Y3JlYXRlKCkgfTsKLX0KLQotV0dQVVByb2Mgd2dw
dUdldFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBjaGFyKiBwcm9jTmFtZSkK
LXsKLSAgICBVTlVTRURfUEFSQU0oZGV2aWNlKTsKLSAgICAvLyBGSVhNRTogVXNlIGdwZXJmIHRv
IG1ha2UgdGhpcyBmYXN0ZXIuCi0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QWRhcHRl
ckdldEZlYXR1cmVBdEluZGV4IikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdH
UFVQcm9jPigmd2dwdUFkYXB0ZXJHZXRGZWF0dXJlQXRJbmRleCk7Ci0gICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1QWRhcHRlckdldExpbWl0cyIpKQotICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVBZGFwdGVyR2V0TGltaXRzKTsKLSAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVBZGFwdGVyR2V0UHJvcGVydGllcyIpKQotICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVBZGFwdGVyR2V0UHJvcGVydGllcyk7
Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QWRhcHRlckhhc0ZlYXR1cmUiKSkKLSAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1QWRhcHRlckhhc0Zl
YXR1cmUpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUFkYXB0ZXJSZWxlYXNlIikp
Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUFkYXB0ZXJS
ZWxlYXNlKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVBZGFwdGVyUmVxdWVzdERl
dmljZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVB
ZGFwdGVyUmVxdWVzdERldmljZSk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Qmlu
ZEdyb3VwTGF5b3V0UmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
R1BVUHJvYz4oJndncHVCaW5kR3JvdXBMYXlvdXRSZWxlYXNlKTsKLSAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVCaW5kR3JvdXBMYXlvdXRTZXRMYWJlbCIpKQotICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCaW5kR3JvdXBMYXlvdXRTZXRMYWJlbCk7
Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QmluZEdyb3VwUmVsZWFzZSIpKQotICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCaW5kR3JvdXBSZWxl
YXNlKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVCaW5kR3JvdXBTZXRMYWJlbCIp
KQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCaW5kR3Jv
dXBTZXRMYWJlbCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QnVmZmVyRGVzdHJv
eSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCdWZm
ZXJEZXN0cm95KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVCdWZmZXJHZXRDb25z
dE1hcHBlZFJhbmdlIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUJ1ZmZlckdldENvbnN0TWFwcGVkUmFuZ2UpOwotICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdUJ1ZmZlckdldE1hcHBlZFJhbmdlIikpCi0gICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUJ1ZmZlckdldE1hcHBlZFJhbmdlKTsKLSAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVCdWZmZXJNYXBBc3luYyIpKQotICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCdWZmZXJNYXBBc3luYyk7Ci0gICAgaWYg
KCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QnVmZmVyUmVsZWFzZSIpKQotICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCdWZmZXJSZWxlYXNlKTsKLSAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVCdWZmZXJTZXRMYWJlbCIpKQotICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVCdWZmZXJTZXRMYWJlbCk7Ci0gICAgaWYg
KCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1QnVmZmVyVW5tYXAiKSkKLSAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1QnVmZmVyVW5tYXApOwotICAgIGlmICghc3Ry
Y21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRCdWZmZXJSZWxlYXNlIikpCi0gICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRCdWZmZXJSZWxlYXNlKTsK
LSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kQnVmZmVyU2V0TGFiZWwiKSkK
LSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEJ1
ZmZlclNldExhYmVsKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5j
b2RlckJlZ2luQ29tcHV0ZVBhc3MiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQYXNzKTsKLSAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5kRW5jb2RlckJlZ2luUmVuZGVyUGFzcyIpKQot
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21tYW5kRW5j
b2RlckJlZ2luUmVuZGVyUGFzcyk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29t
bWFuZEVuY29kZXJDb3B5QnVmZmVyVG9CdWZmZXIiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJDb3B5QnVmZmVyVG9CdWZmZXIp
OwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1ZmZl
clRvVGV4dHVyZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVDb21tYW5kRW5jb2RlckNvcHlCdWZmZXJUb1RleHR1cmUpOwotICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb0J1ZmZlciIpKQotICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21tYW5kRW5jb2Rl
ckNvcHlUZXh0dXJlVG9CdWZmZXIpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNv
bW1hbmRFbmNvZGVyQ29weVRleHR1cmVUb1RleHR1cmUiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJDb3B5VGV4dHVyZVRvVGV4
dHVyZSk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJGaWxs
QnVmZmVyIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dUNvbW1hbmRFbmNvZGVyRmlsbEJ1ZmZlcik7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3
Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2giKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2gpOwotICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdUNvbW1hbmRFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIiKSkKLSAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJJ
bnNlcnREZWJ1Z01hcmtlcik7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tbWFu
ZEVuY29kZXJQb3BEZWJ1Z0dyb3VwIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyUG9wRGVidWdHcm91cCk7Ci0gICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJQdXNoRGVidWdHcm91cCIpKQotICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21tYW5kRW5jb2Rl
clB1c2hEZWJ1Z0dyb3VwKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21tYW5k
RW5jb2RlclJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1Q29tbWFuZEVuY29kZXJSZWxlYXNlKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVDb21tYW5kRW5jb2RlclJlc29sdmVRdWVyeVNldCIpKQotICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21tYW5kRW5jb2RlclJlc29sdmVRdWVy
eVNldCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tbWFuZEVuY29kZXJTZXRM
YWJlbCIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVD
b21tYW5kRW5jb2RlclNldExhYmVsKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVD
b21tYW5kRW5jb2RlcldyaXRlVGltZXN0YW1wIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbW1hbmRFbmNvZGVyV3JpdGVUaW1lc3RhbXApOwotICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbXB1dGVQYXNzRW5jb2RlckJlZ2luUGlwZWxp
bmVTdGF0aXN0aWNzUXVlcnkiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQ
VVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyQmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVy
eSk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRGlz
cGF0Y2giKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1
Q29tcHV0ZVBhc3NFbmNvZGVyRGlzcGF0Y2gpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAi
d2dwdUNvbXB1dGVQYXNzRW5jb2RlckRpc3BhdGNoSW5kaXJlY3QiKSkKLSAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyRGlzcGF0
Y2hJbmRpcmVjdCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NF
bmNvZGVyRW5kUGFzcyIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJv
Yz4oJndncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQYXNzKTsKLSAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVDb21wdXRlUGFzc0VuY29kZXJFbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSIp
KQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRl
UGFzc0VuY29kZXJFbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk7Ci0gICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIiKSkKLSAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NF
bmNvZGVySW5zZXJ0RGVidWdNYXJrZXIpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dw
dUNvbXB1dGVQYXNzRW5jb2RlclBvcERlYnVnR3JvdXAiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUG9wRGVidWdHcm91
cCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUHVz
aERlYnVnR3JvdXAiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXApOwotICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdUNvbXB1dGVQYXNzRW5jb2RlclJlbGVhc2UiKSkKLSAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUmVs
ZWFzZSk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVy
U2V0QmluZEdyb3VwIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldEJpbmRHcm91cCk7Ci0gICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0TGFiZWwiKSkKLSAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0
TGFiZWwpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUNvbXB1dGVQYXNzRW5jb2Rl
clNldFBpcGVsaW5lIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldFBpcGVsaW5lKTsKLSAgICBpZiAoIXN0cmNtcChw
cm9jTmFtZSwgIndncHVDb21wdXRlUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFtcCIpKQotICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRlUGFzc0VuY29k
ZXJXcml0ZVRpbWVzdGFtcCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0
ZVBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0IikpCi0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdUNvbXB1dGVQaXBlbGluZUdldEJpbmRHcm91cExheW91dCk7
Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1Q29tcHV0ZVBpcGVsaW5lUmVsZWFzZSIp
KQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVDb21wdXRl
UGlwZWxpbmVSZWxlYXNlKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVDb21wdXRl
UGlwZWxpbmVTZXRMYWJlbCIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVDb21wdXRlUGlwZWxpbmVTZXRMYWJlbCk7Ci0gICAgaWYgKCFzdHJjbXAocHJv
Y05hbWUsICJ3Z3B1Q3JlYXRlSW5zdGFuY2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1Q3JlYXRlSW5zdGFuY2UpOwotICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdURldmljZUNyZWF0ZUJpbmRHcm91cCIpKQotICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VDcmVhdGVCaW5kR3JvdXApOwotICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZUNyZWF0ZUJpbmRHcm91cExheW91dCIp
KQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VD
cmVhdGVCaW5kR3JvdXBMYXlvdXQpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURl
dmljZUNyZWF0ZUJ1ZmZlciIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVEZXZpY2VDcmVhdGVCdWZmZXIpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdURldmljZUNyZWF0ZUNvbW1hbmRFbmNvZGVyIikpCi0gICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZUNvbW1hbmRFbmNvZGVyKTsK
LSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVDb21wdXRlUGlwZWxp
bmUiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1RGV2
aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndn
cHVEZXZpY2VDcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyIpKQotICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VDcmVhdGVDb21wdXRlUGlwZWxpbmVB
c3luYyk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRlUGlwZWxp
bmVMYXlvdXQiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3
Z3B1RGV2aWNlQ3JlYXRlUGlwZWxpbmVMYXlvdXQpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdURldmljZUNyZWF0ZVF1ZXJ5U2V0IikpCi0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZVF1ZXJ5U2V0KTsKLSAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyIikpCi0g
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0
ZVJlbmRlckJ1bmRsZUVuY29kZXIpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURl
dmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lKTsKLSAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jIikp
Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNy
ZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dw
dURldmljZUNyZWF0ZVNhbXBsZXIiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1RGV2aWNlQ3JlYXRlU2FtcGxlcik7Ci0gICAgaWYgKCFzdHJjbXAocHJv
Y05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRlU2hhZGVyTW9kdWxlIikpCi0gICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNyZWF0ZVNoYWRlck1vZHVsZSk7
Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3JlYXRlU3dhcENoYWluIikp
Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZUNy
ZWF0ZVN3YXBDaGFpbik7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1RGV2aWNlQ3Jl
YXRlVGV4dHVyZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVEZXZpY2VDcmVhdGVUZXh0dXJlKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndn
cHVEZXZpY2VEZXN0cm95IikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQ
cm9jPigmd2dwdURldmljZURlc3Ryb3kpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dw
dURldmljZUdldExpbWl0cyIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVEZXZpY2VHZXRMaW1pdHMpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAi
d2dwdURldmljZUdldFF1ZXVlIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdH
UFVQcm9jPigmd2dwdURldmljZUdldFF1ZXVlKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVEZXZpY2VQb3BFcnJvclNjb3BlIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdURldmljZVBvcEVycm9yU2NvcGUpOwotICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdURldmljZVB1c2hFcnJvclNjb3BlIikpCi0gICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZVB1c2hFcnJvclNjb3BlKTsKLSAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVEZXZpY2VSZWxlYXNlIikpCi0gICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdURldmljZVJlbGVhc2UpOwotICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURldmljZVNldERldmljZUxvc3RDYWxsYmFjayIp
KQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VT
ZXREZXZpY2VMb3N0Q2FsbGJhY2spOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdURl
dmljZVNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdURldmljZVNldExhYmVsKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVE
ZXZpY2VTZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayIpKQotICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVEZXZpY2VTZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFj
ayk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1R2V0UHJvY0FkZHJlc3MiKSkKLSAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1R2V0UHJvY0FkZHJl
c3MpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUluc3RhbmNlQ3JlYXRlU3VyZmFj
ZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVJbnN0
YW5jZUNyZWF0ZVN1cmZhY2UpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdUluc3Rh
bmNlUHJvY2Vzc0V2ZW50cyIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMpOwotICAgIGlmICghc3RyY21wKHByb2NO
YW1lLCAid2dwdUluc3RhbmNlUmVsZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXR1BVUHJvYz4oJndncHVJbnN0YW5jZVJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHBy
b2NOYW1lLCAid2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXIiKSkKLSAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcik7Ci0g
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UGlwZWxpbmVMYXlvdXRSZWxlYXNlIikpCi0g
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVBpcGVsaW5lTGF5
b3V0UmVsZWFzZSk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UGlwZWxpbmVMYXlv
dXRTZXRMYWJlbCIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVQaXBlbGluZUxheW91dFNldExhYmVsKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVRdWVyeVNldERlc3Ryb3kiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1UXVlcnlTZXREZXN0cm95KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVRdWVyeVNldFJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0dQVVByb2M+KCZ3Z3B1UXVlcnlTZXRSZWxlYXNlKTsKLSAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVRdWVyeVNldFNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdVF1ZXJ5U2V0U2V0TGFiZWwpOwotICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdVF1ZXVlT25TdWJtaXR0ZWRXb3JrRG9uZSIpKQotICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVRdWV1ZU9uU3VibWl0dGVkV29ya0Rv
bmUpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVF1ZXVlUmVsZWFzZSIpKQotICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVRdWV1ZVJlbGVhc2Up
OwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVF1ZXVlU2V0TGFiZWwiKSkKLSAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UXVldWVTZXRMYWJlbCk7
Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UXVldWVTdWJtaXQiKSkKLSAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UXVldWVTdWJtaXQpOwotICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVF1ZXVlV3JpdGVCdWZmZXIiKSkKLSAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UXVldWVXcml0ZUJ1ZmZlcik7
Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UXVldWVXcml0ZVRleHR1cmUiKSkKLSAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UXVldWVXcml0ZVRl
eHR1cmUpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlckJ1bmRsZUVuY29k
ZXJEcmF3IikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndn
cHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGV4ZWQiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRyYXdJbmRleGVk
KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJh
d0luZGV4ZWRJbmRpcmVjdCIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVjdCk7Ci0gICAg
aWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRyYXdJbmRpcmVj
dCIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5k
ZXJCdW5kbGVFbmNvZGVyRHJhd0luZGlyZWN0KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwg
IndncHVSZW5kZXJCdW5kbGVFbmNvZGVyRmluaXNoIikpCi0gICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJGaW5pc2gpOwotICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlckJ1bmRsZUVuY29kZXJJbnNlcnREZWJ1
Z01hcmtlciIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndn
cHVSZW5kZXJCdW5kbGVFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIpOwotICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdVJlbmRlckJ1bmRsZUVuY29kZXJQb3BEZWJ1Z0dyb3VwIikpCi0gICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlckJ1bmRsZUVu
Y29kZXJQb3BEZWJ1Z0dyb3VwKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5k
ZXJCdW5kbGVFbmNvZGVyUHVzaERlYnVnR3JvdXAiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclB1c2hEZWJ1Z0dyb3Vw
KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyUmVs
ZWFzZSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVS
ZW5kZXJCdW5kbGVFbmNvZGVyUmVsZWFzZSk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3
Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldEJpbmRHcm91cCIpKQotICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0QmluZEdy
b3VwKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVy
U2V0SW5kZXhCdWZmZXIiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVBy
b2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldEluZGV4QnVmZmVyKTsKLSAgICBpZiAoIXN0
cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0TGFiZWwiKSkKLSAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5j
b2RlclNldExhYmVsKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5k
bGVFbmNvZGVyU2V0UGlwZWxpbmUiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldFBpcGVsaW5lKTsKLSAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0VmVydGV4QnVmZmVy
IikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRl
ckJ1bmRsZUVuY29kZXJTZXRWZXJ0ZXhCdWZmZXIpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1l
LCAid2dwdVJlbmRlckJ1bmRsZVJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlUmVsZWFzZSk7Ci0gICAgaWYgKCFzdHJj
bXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyQnVuZGxlU2V0TGFiZWwiKSkKLSAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyQnVuZGxlU2V0TGFiZWwpOwot
ICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVyQmVnaW5PY2Ns
dXNpb25RdWVyeSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4o
JndncHVSZW5kZXJQYXNzRW5jb2RlckJlZ2luT2NjbHVzaW9uUXVlcnkpOwotICAgIGlmICghc3Ry
Y21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVyQmVnaW5QaXBlbGluZVN0YXRpc3Rp
Y3NRdWVyeSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndn
cHVSZW5kZXJQYXNzRW5jb2RlckJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOwotICAgIGlm
ICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhdyIpKQotICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2Rl
ckRyYXcpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVy
RHJhd0luZGV4ZWQiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+
KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kZXhlZCk7Ci0gICAgaWYgKCFzdHJjbXAocHJv
Y05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kZXhlZEluZGlyZWN0IikpCi0gICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNv
ZGVyRHJhd0luZGV4ZWRJbmRpcmVjdCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1
UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kaXJlY3QiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kaXJlY3QpOwot
ICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVyRW5kT2NjbHVz
aW9uUXVlcnkiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3
Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRPY2NsdXNpb25RdWVyeSk7Ci0gICAgaWYgKCFzdHJjbXAo
cHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRQYXNzIikpCi0gICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyRW5kUGFz
cyk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRQ
aXBlbGluZVN0YXRpc3RpY3NRdWVyeSIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlckVuZFBpcGVsaW5lU3RhdGlzdGljc1F1
ZXJ5KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlckV4
ZWN1dGVCdW5kbGVzIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9j
Pigmd2dwdVJlbmRlclBhc3NFbmNvZGVyRXhlY3V0ZUJ1bmRsZXMpOwotICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIiKSkKLSAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0Vu
Y29kZXJJbnNlcnREZWJ1Z01hcmtlcik7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1
UmVuZGVyUGFzc0VuY29kZXJQb3BEZWJ1Z0dyb3VwIikpCi0gICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyUG9wRGVidWdHcm91cCk7
Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJQdXNoRGVi
dWdHcm91cCIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndn
cHVSZW5kZXJQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKTsKLSAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJSZWxlYXNlKTsK
LSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclNldEJpbmRH
cm91cCIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVS
ZW5kZXJQYXNzRW5jb2RlclNldEJpbmRHcm91cCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUs
ICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRCbGVuZENvbnN0YW50IikpCi0gICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0Qmxl
bmRDb25zdGFudCk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0Vu
Y29kZXJTZXRJbmRleEJ1ZmZlciIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
R1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlclNldEluZGV4QnVmZmVyKTsKLSAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2RlclNldExhYmVsIikpCi0gICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNv
ZGVyU2V0TGFiZWwpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBhc3NF
bmNvZGVyU2V0UGlwZWxpbmUiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQ
VVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRQaXBlbGluZSk7Ci0gICAgaWYgKCFzdHJj
bXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRTY2lzc29yUmVjdCIpKQotICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5j
b2RlclNldFNjaXNzb3JSZWN0KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5k
ZXJQYXNzRW5jb2RlclNldFN0ZW5jaWxSZWZlcmVuY2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRTdGVuY2lsUmVm
ZXJlbmNlKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQYXNzRW5jb2Rl
clNldFZlcnRleEJ1ZmZlciIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BV
UHJvYz4oJndncHVSZW5kZXJQYXNzRW5jb2RlclNldFZlcnRleEJ1ZmZlcik7Ci0gICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRWaWV3cG9ydCIpKQotICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVSZW5kZXJQYXNzRW5j
b2RlclNldFZpZXdwb3J0KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQ
YXNzRW5jb2RlcldyaXRlVGltZXN0YW1wIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBhc3NFbmNvZGVyV3JpdGVUaW1lc3RhbXApOwotICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVJlbmRlclBpcGVsaW5lR2V0QmluZEdyb3VwTGF5
b3V0IikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJl
bmRlclBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFt
ZSwgIndncHVSZW5kZXJQaXBlbGluZVJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1UmVuZGVyUGlwZWxpbmVSZWxlYXNlKTsKLSAgICBpZiAo
IXN0cmNtcChwcm9jTmFtZSwgIndncHVSZW5kZXJQaXBlbGluZVNldExhYmVsIikpCi0gICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVJlbmRlclBpcGVsaW5lU2V0
TGFiZWwpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVNhbXBsZXJSZWxlYXNlIikp
Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVNhbXBsZXJS
ZWxlYXNlKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVTYW1wbGVyU2V0TGFiZWwi
KSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1U2FtcGxl
clNldExhYmVsKTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVTaGFkZXJNb2R1bGVS
ZWxlYXNlIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dw
dVNoYWRlck1vZHVsZVJlbGVhc2UpOwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVNo
YWRlck1vZHVsZVNldExhYmVsIikpCi0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdH
UFVQcm9jPigmd2dwdVNoYWRlck1vZHVsZVNldExhYmVsKTsKLSAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVTdXJmYWNlR2V0UHJlZmVycmVkRm9ybWF0IikpCi0gICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVN1cmZhY2VHZXRQcmVmZXJyZWRGb3JtYXQp
OwotICAgIGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVN1cmZhY2VSZWxlYXNlIikpCi0gICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVN1cmZhY2VSZWxlYXNl
KTsKLSAgICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVTd2FwQ2hhaW5HZXRDdXJyZW50VGV4
dHVyZVZpZXciKSkKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3
Z3B1U3dhcENoYWluR2V0Q3VycmVudFRleHR1cmVWaWV3KTsKLSAgICBpZiAoIXN0cmNtcChwcm9j
TmFtZSwgIndncHVTd2FwQ2hhaW5QcmVzZW50IikpCi0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdHUFVQcm9jPigmd2dwdVN3YXBDaGFpblByZXNlbnQpOwotICAgIGlmICghc3RyY21w
KHByb2NOYW1lLCAid2dwdVN3YXBDaGFpblJlbGVhc2UiKSkKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1U3dhcENoYWluUmVsZWFzZSk7Ci0gICAgaWYgKCFz
dHJjbXAocHJvY05hbWUsICJ3Z3B1VGV4dHVyZUNyZWF0ZVZpZXciKSkKLSAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V0dQVVByb2M+KCZ3Z3B1VGV4dHVyZUNyZWF0ZVZpZXcpOwotICAg
IGlmICghc3RyY21wKHByb2NOYW1lLCAid2dwdVRleHR1cmVEZXN0cm95IikpCi0gICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVRleHR1cmVEZXN0cm95KTsKLSAg
ICBpZiAoIXN0cmNtcChwcm9jTmFtZSwgIndncHVUZXh0dXJlUmVsZWFzZSIpKQotICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVUZXh0dXJlUmVsZWFzZSk7Ci0g
ICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1VGV4dHVyZVNldExhYmVsIikpCi0gICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVRleHR1cmVTZXRMYWJlbCk7
Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1VGV4dHVyZVZpZXdSZWxlYXNlIikpCi0g
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdHUFVQcm9jPigmd2dwdVRleHR1cmVWaWV3
UmVsZWFzZSk7Ci0gICAgaWYgKCFzdHJjbXAocHJvY05hbWUsICJ3Z3B1VGV4dHVyZVZpZXdTZXRM
YWJlbCIpKQotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXR1BVUHJvYz4oJndncHVU
ZXh0dXJlVmlld1NldExhYmVsKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotV0dQVVN1cmZh
Y2Ugd2dwdUluc3RhbmNlQ3JlYXRlU3VyZmFjZShXR1BVSW5zdGFuY2UgaW5zdGFuY2UsIGNvbnN0
IFdHUFVTdXJmYWNlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKLXsKLSAgICByZXR1cm4gbmV3IFdH
UFVTdXJmYWNlSW1wbCB7IGluc3RhbmNlLT5pbnN0YW5jZS0+Y3JlYXRlU3VyZmFjZShkZXNjcmlw
dG9yKSB9OwotfQotCi12b2lkIHdncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMoV0dQVUluc3RhbmNl
IGluc3RhbmNlKQotewotICAgIGluc3RhbmNlLT5pbnN0YW5jZS0+cHJvY2Vzc0V2ZW50cygpOwot
fQotCi12b2lkIHdncHVJbnN0YW5jZVJlcXVlc3RBZGFwdGVyKFdHUFVJbnN0YW5jZSBpbnN0YW5j
ZSwgY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyogb3B0aW9ucywgV0dQVVJlcXVlc3RB
ZGFwdGVyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQotewotICAgIGluc3RhbmNl
LT5pbnN0YW5jZS0+cmVxdWVzdEFkYXB0ZXIob3B0aW9ucywgW2NhbGxiYWNrLCB1c2VyZGF0YV0g
KFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6OkFkYXB0ZXI+JiYg
YWRhcHRlciwgY29uc3QgY2hhciogbWVzc2FnZSkgewotICAgICAgICBjYWxsYmFjayhzdGF0dXMs
IG5ldyBXR1BVQWRhcHRlckltcGwgeyBXVEZNb3ZlKGFkYXB0ZXIpIH0sIG1lc3NhZ2UsIHVzZXJk
YXRhKTsKLSAgICB9KTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvTWV0
YWwtY3BwLmNwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL01ldGFsLWNwcC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDRmYjY0ZTEzYTI5ZjMyZjhmYTNkNTFiYmFkZDllOTVlZjNkYzQwYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL01ldGFsLWNwcC5jcHAKQEAgLTAsMCArMSwyOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNkZWZpbmUg
TlNfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorI2RlZmluZSBDQV9QUklWQVRFX0lNUExFTUVOVEFU
SU9OCisjZGVmaW5lIE1UTF9QUklWQVRFX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSA8TWV0YWwv
TWV0YWwuaHBwPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFhMGU3YTRlNWE0MGI1ZDRjNTliNGEzYWY4ZjQ3ZWZlOTZmNzk2YjcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5jcHAKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQaXBlbGluZUxheW91dC5oIgorCisjaW5jbHVk
ZSAiV2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitQaXBlbGluZUxheW91dDo6
UGlwZWxpbmVMYXlvdXQoKSA9IGRlZmF1bHQ7CisKK1BpcGVsaW5lTGF5b3V0Ojp+UGlwZWxpbmVM
YXlvdXQoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUGlwZWxpbmVMYXlvdXQ6OnNldExhYmVsKGNvbnN0
IGNoYXIqIGxhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Cit9CisKK30KKwordm9p
ZCB3Z3B1UGlwZWxpbmVMYXlvdXRSZWxlYXNlKFdHUFVQaXBlbGluZUxheW91dCBwaXBlbGluZUxh
eW91dCkKK3sKKyAgICBkZWxldGUgcGlwZWxpbmVMYXlvdXQ7Cit9CisKK3ZvaWQgd2dwdVBpcGVs
aW5lTGF5b3V0U2V0TGFiZWwoV0dQVVBpcGVsaW5lTGF5b3V0IHBpcGVsaW5lTGF5b3V0LCBjb25z
dCBjaGFyKiBsYWJlbCkKK3sKKyAgICBwaXBlbGluZUxheW91dC0+cGlwZWxpbmVMYXlvdXQtPnNl
dExhYmVsKGxhYmVsKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVs
aW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5oCmluZGV4
IDFmNDAzZTU0MzY0Y2IxMWM3MmEzYWM2N2JiYmM0NTFiNzJkMzRkMzYuLmU1Y2E2MTFmNzlmYTJm
YjEzYjQxZWFmYzViYTcyMTQzNzRlYjAyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1BpcGVsaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVM
YXlvdXQuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW1wb3J0ICJX
ZWJHUFUuaCIKLSNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW1wb3J0IDx3dGYvUmVmLmg+
Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIldlYkdQVS5oIgorI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1BpcGVsaW5lTGF5b3V0Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2EzNzU1
MzliYjVmNWM5YmY3NWU2N2VhZjA2NDA2OGNhMzZhOTA1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5
b3V0Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
YykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
UGlwZWxpbmVMYXlvdXQuaCIKLQotI2ltcG9ydCAiV2ViR1BVRXh0LmgiCi0KLW5hbWVzcGFjZSBX
ZWJHUFUgewotCi1QaXBlbGluZUxheW91dDo6UGlwZWxpbmVMYXlvdXQoKSA9IGRlZmF1bHQ7Ci0K
LVBpcGVsaW5lTGF5b3V0Ojp+UGlwZWxpbmVMYXlvdXQoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgUGlw
ZWxpbmVMYXlvdXQ6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQotewotICAgIFVOVVNFRF9Q
QVJBTShsYWJlbCk7Ci19Ci0KLX0KLQotdm9pZCB3Z3B1UGlwZWxpbmVMYXlvdXRSZWxlYXNlKFdH
UFVQaXBlbGluZUxheW91dCBwaXBlbGluZUxheW91dCkKLXsKLSAgICBkZWxldGUgcGlwZWxpbmVM
YXlvdXQ7Ci19Ci0KLXZvaWQgd2dwdVBpcGVsaW5lTGF5b3V0U2V0TGFiZWwoV0dQVVBpcGVsaW5l
TGF5b3V0IHBpcGVsaW5lTGF5b3V0LCBjb25zdCBjaGFyKiBsYWJlbCkKLXsKLSAgICBwaXBlbGlu
ZUxheW91dC0+cGlwZWxpbmVMYXlvdXQtPnNldExhYmVsKGxhYmVsKTsKLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0LmNwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1F1ZXJ5U2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTM5ODg5OWNlMjcwY2NiMzRmNzczMzFmOTdhOGQy
NTE4YTRjNzY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlT
ZXQuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVlcnlTZXQuaCIK
KworI2luY2x1ZGUgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BVIHsKKworUXVlcnlT
ZXQ6OlF1ZXJ5U2V0KCkgPSBkZWZhdWx0OworCitRdWVyeVNldDo6flF1ZXJ5U2V0KCkgPSBkZWZh
dWx0OworCit2b2lkIFF1ZXJ5U2V0OjpkZXN0cm95KCkKK3sKK30KKwordm9pZCBRdWVyeVNldDo6
c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdVF1ZXJ5U2V0UmVsZWFzZShX
R1BVUXVlcnlTZXQgcXVlcnlTZXQpCit7CisgICAgZGVsZXRlIHF1ZXJ5U2V0OworfQorCit2b2lk
IHdncHVRdWVyeVNldERlc3Ryb3koV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0KQoreworICAgIHF1ZXJ5
U2V0LT5xdWVyeVNldC0+ZGVzdHJveSgpOworfQorCit2b2lkIHdncHVRdWVyeVNldFNldExhYmVs
KFdHUFVRdWVyeVNldCBxdWVyeVNldCwgY29uc3QgY2hhciogbGFiZWwpCit7CisgICAgcXVlcnlT
ZXQtPnF1ZXJ5U2V0LT5zZXRMYWJlbChsYWJlbCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9RdWVyeVNldC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQuaApp
bmRleCBmYWNlMjUxODYyNmYyZjY2MDdlZTFjZTg3Yjg4MDY2Nzc4YmQ3MTgwLi5lN2RkZTUzYTli
ZjYyYmM0Yjk4ZmU4ODY5ZGI3MTY2NTY5YWQxMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9RdWVyeVNldC5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0LmgK
QEAgLTI1LDEwICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2ltcG9ydCAiV2ViR1BVLmgi
Ci0jaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9y
dCA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJXZWJHUFUuaCIKKyNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvUXVlcnlTZXQubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc4NDIxMmM3M2MwNDgxNjM2MWQyZDZhOTFh
ZmEyMzNkYjE4ZTZhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlF1ZXJ5U2V0LmgiCi0KLSNpbXBvcnQgIldl
YkdQVUV4dC5oIgotCi1uYW1lc3BhY2UgV2ViR1BVIHsKLQotUXVlcnlTZXQ6OlF1ZXJ5U2V0KCkg
PSBkZWZhdWx0OwotCi1RdWVyeVNldDo6flF1ZXJ5U2V0KCkgPSBkZWZhdWx0OwotCi12b2lkIFF1
ZXJ5U2V0OjpkZXN0cm95KCkKLXsKLX0KLQotdm9pZCBRdWVyeVNldDo6c2V0TGFiZWwoY29uc3Qg
Y2hhciogbGFiZWwpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViR1BVCi0KLXZvaWQgd2dwdVF1ZXJ5U2V0UmVsZWFzZShXR1BVUXVlcnlTZXQgcXVl
cnlTZXQpCi17Ci0gICAgZGVsZXRlIHF1ZXJ5U2V0OwotfQotCi12b2lkIHdncHVRdWVyeVNldERl
c3Ryb3koV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0KQotewotICAgIHF1ZXJ5U2V0LT5xdWVyeVNldC0+
ZGVzdHJveSgpOwotfQotCi12b2lkIHdncHVRdWVyeVNldFNldExhYmVsKFdHUFVRdWVyeVNldCBx
dWVyeVNldCwgY29uc3QgY2hhciogbGFiZWwpCi17Ci0gICAgcXVlcnlTZXQtPnF1ZXJ5U2V0LT5z
ZXRMYWJlbChsYWJlbCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1
ZS5jcHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQ3Nzky
MzhlYzlhMjQ0YjdiMjFjZmRlNjJkZTRiNmZlYzM2Njk3YwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJRdWV1ZS5oIgorCisjaW5jbHVkZSAiQnVmZmVyLmgiCisjaW5jbHVkZSAiQ29t
bWFuZEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2ViR1BV
IHsKKworUXVldWU6OlF1ZXVlKCkgPSBkZWZhdWx0OworCitRdWV1ZTo6flF1ZXVlKCkgPSBkZWZh
dWx0OworCit2b2lkIFF1ZXVlOjpvblN1Ym1pdHRlZFdvcmtEb25lKHVpbnQ2NF90IHNpZ25hbFZh
bHVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMpPiYmIGNhbGxi
YWNrKQoreworICAgIFVOVVNFRF9QQVJBTShzaWduYWxWYWx1ZSk7CisgICAgVU5VU0VEX1BBUkFN
KGNhbGxiYWNrKTsKK30KKwordm9pZCBRdWV1ZTo6c3VibWl0KFZlY3RvcjxzdGQ6OnJlZmVyZW5j
ZV93cmFwcGVyPGNvbnN0IENvbW1hbmRCdWZmZXI+PiYmIGNvbW1hbmRzKQoreworICAgIFVOVVNF
RF9QQVJBTShjb21tYW5kcyk7Cit9CisKK3ZvaWQgUXVldWU6OndyaXRlQnVmZmVyKGNvbnN0IEJ1
ZmZlciYgYnVmZmVyLCB1aW50NjRfdCBidWZmZXJPZmZzZXQsIGNvbnN0IHZvaWQqIGRhdGEsIHNp
emVfdCBzaXplKQoreworICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVOVVNFRF9QQVJB
TShidWZmZXJPZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFS
QU0oc2l6ZSk7Cit9CisKK3ZvaWQgUXVldWU6OndyaXRlVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VD
b3B5VGV4dHVyZSogZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6
ZSwgY29uc3QgV0dQVVRleHR1cmVEYXRhTGF5b3V0KiBkYXRhTGF5b3V0LCBjb25zdCBXR1BVRXh0
ZW50M0QqIHdyaXRlU2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOworICAg
IFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oZGF0YVNpemUpOworICAgIFVO
VVNFRF9QQVJBTShkYXRhTGF5b3V0KTsKKyAgICBVTlVTRURfUEFSQU0od3JpdGVTaXplKTsKK30K
Kwordm9pZCBRdWV1ZTo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCit7CisgICAgVU5VU0VE
X1BBUkFNKGxhYmVsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdVF1
ZXVlUmVsZWFzZShXR1BVUXVldWUgcXVldWUpCit7CisgICAgZGVsZXRlIHF1ZXVlOworfQorCit2
b2lkIHdncHVRdWV1ZU9uU3VibWl0dGVkV29ya0RvbmUoV0dQVVF1ZXVlIHF1ZXVlLCB1aW50NjRf
dCBzaWduYWxWYWx1ZSwgV0dQVVF1ZXVlV29ya0RvbmVDYWxsYmFjayBjYWxsYmFjaywgdm9pZCog
dXNlcmRhdGEpCit7CisgICAgcXVldWUtPnF1ZXVlLT5vblN1Ym1pdHRlZFdvcmtEb25lKHNpZ25h
bFZhbHVlLCBbY2FsbGJhY2ssIHVzZXJkYXRhXSAoV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMgc3Rh
dHVzKSB7CisgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgdXNlcmRhdGEpOworICAgIH0pOworfQor
Cit2b2lkIHdncHVRdWV1ZVN1Ym1pdChXR1BVUXVldWUgcXVldWUsIHVpbnQzMl90IGNvbW1hbmRD
b3VudCwgY29uc3QgV0dQVUNvbW1hbmRCdWZmZXIqIGNvbW1hbmRzKQoreworICAgIFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFdlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+IGNvbW1h
bmRzVG9Gb3J3YXJkOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjb21tYW5kQ291bnQ7
ICsraSkKKyAgICAgICAgY29tbWFuZHNUb0ZvcndhcmQuYXBwZW5kKGNvbW1hbmRzW2ldLT5jb21t
YW5kQnVmZmVyKTsKKyAgICBxdWV1ZS0+cXVldWUtPnN1Ym1pdChXVEZNb3ZlKGNvbW1hbmRzVG9G
b3J3YXJkKSk7Cit9CisKK3ZvaWQgd2dwdVF1ZXVlV3JpdGVCdWZmZXIoV0dQVVF1ZXVlIHF1ZXVl
LCBXR1BVQnVmZmVyIGJ1ZmZlciwgdWludDY0X3QgYnVmZmVyT2Zmc2V0LCBjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBxdWV1ZS0+cXVldWUtPndyaXRlQnVmZmVyKGJ1ZmZl
ci0+YnVmZmVyLCBidWZmZXJPZmZzZXQsIGRhdGEsIHNpemUpOworfQorCit2b2lkIHdncHVRdWV1
ZVdyaXRlVGV4dHVyZShXR1BVUXVldWUgcXVldWUsIGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJl
KiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBjb25zdCBX
R1BVVGV4dHVyZURhdGFMYXlvdXQqIGRhdGFMYXlvdXQsIGNvbnN0IFdHUFVFeHRlbnQzRCogd3Jp
dGVTaXplKQoreworICAgIHF1ZXVlLT5xdWV1ZS0+d3JpdGVUZXh0dXJlKGRlc3RpbmF0aW9uLCBk
YXRhLCBkYXRhU2l6ZSwgZGF0YUxheW91dCwgd3JpdGVTaXplKTsKK30KKwordm9pZCB3Z3B1UXVl
dWVTZXRMYWJlbChXR1BVUXVldWUgcXVldWUsIGNvbnN0IGNoYXIqIGxhYmVsKQoreworICAgIHF1
ZXVlLT5xdWV1ZS0+c2V0TGFiZWwobGFiZWwpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9RdWV1ZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaAppbmRleCBm
NzZlNjkxYTM2ZWRhZDljN2FiZmI5ZmY2NTgwMDQzYTU0Yjg5MGM1Li5hMTNhOTc1ZTg2YTIyMTli
ZTQ2ZjE1ZTM2MTMyZTJjZmY5MjJhYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9RdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmgKQEAgLTI1LDEyICsy
NSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2ltcG9ydCAiV2ViR1BVLmgiCi0jaW1wb3J0IDx3
dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW1wb3J0IDx3dGYv
UmVmLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgIldlYkdQVS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
R1BVIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0gYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YWU0YzJjYzQ3NzVkNGMzZmI0ZGZjMWRkMTNkM2Q5N2FiOGRiYzNkMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1
ZS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChj
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJR
dWV1ZS5oIgotCi0jaW1wb3J0ICJCdWZmZXIuaCIKLSNpbXBvcnQgIkNvbW1hbmRCdWZmZXIuaCIK
LSNpbXBvcnQgIldlYkdQVUV4dC5oIgotCi1uYW1lc3BhY2UgV2ViR1BVIHsKLQotUXVldWU6OlF1
ZXVlKCkgPSBkZWZhdWx0OwotCi1RdWV1ZTo6flF1ZXVlKCkgPSBkZWZhdWx0OwotCi12b2lkIFF1
ZXVlOjpvblN1Ym1pdHRlZFdvcmtEb25lKHVpbnQ2NF90IHNpZ25hbFZhbHVlLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMpPiYmIGNhbGxiYWNrKQotewotICAgIFVO
VVNFRF9QQVJBTShzaWduYWxWYWx1ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKLX0K
LQotdm9pZCBRdWV1ZTo6c3VibWl0KFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0
IENvbW1hbmRCdWZmZXI+PiYmIGNvbW1hbmRzKQotewotICAgIFVOVVNFRF9QQVJBTShjb21tYW5k
cyk7Ci19Ci0KLXZvaWQgUXVldWU6OndyaXRlQnVmZmVyKGNvbnN0IEJ1ZmZlciYgYnVmZmVyLCB1
aW50NjRfdCBidWZmZXJPZmZzZXQsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQotewot
ICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShidWZmZXJPZmZzZXQp
OwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Ci19Ci0K
LXZvaWQgUXVldWU6OndyaXRlVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSogZGVz
dGluYXRpb24sIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgY29uc3QgV0dQVVRl
eHR1cmVEYXRhTGF5b3V0KiBkYXRhTGF5b3V0LCBjb25zdCBXR1BVRXh0ZW50M0QqIHdyaXRlU2l6
ZSkKLXsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShk
YXRhKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YVNpemUpOwotICAgIFVOVVNFRF9QQVJBTShkYXRh
TGF5b3V0KTsKLSAgICBVTlVTRURfUEFSQU0od3JpdGVTaXplKTsKLX0KLQotdm9pZCBRdWV1ZTo6
c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViR1BVCi0KLXZvaWQgd2dwdVF1ZXVlUmVsZWFzZShXR1BV
UXVldWUgcXVldWUpCi17Ci0gICAgZGVsZXRlIHF1ZXVlOwotfQotCi12b2lkIHdncHVRdWV1ZU9u
U3VibWl0dGVkV29ya0RvbmUoV0dQVVF1ZXVlIHF1ZXVlLCB1aW50NjRfdCBzaWduYWxWYWx1ZSwg
V0dQVVF1ZXVlV29ya0RvbmVDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCi17Ci0g
ICAgcXVldWUtPnF1ZXVlLT5vblN1Ym1pdHRlZFdvcmtEb25lKHNpZ25hbFZhbHVlLCBbY2FsbGJh
Y2ssIHVzZXJkYXRhXSAoV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMgc3RhdHVzKSB7Ci0gICAgICAg
IGNhbGxiYWNrKHN0YXR1cywgdXNlcmRhdGEpOwotICAgIH0pOwotfQotCi12b2lkIHdncHVRdWV1
ZVN1Ym1pdChXR1BVUXVldWUgcXVldWUsIHVpbnQzMl90IGNvbW1hbmRDb3VudCwgY29uc3QgV0dQ
VUNvbW1hbmRCdWZmZXIqIGNvbW1hbmRzKQotewotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPGNvbnN0IFdlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+IGNvbW1hbmRzVG9Gb3J3YXJkOwot
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjb21tYW5kQ291bnQ7ICsraSkKLSAgICAgICAg
Y29tbWFuZHNUb0ZvcndhcmQuYXBwZW5kKGNvbW1hbmRzW2ldLT5jb21tYW5kQnVmZmVyKTsKLSAg
ICBxdWV1ZS0+cXVldWUtPnN1Ym1pdChXVEZNb3ZlKGNvbW1hbmRzVG9Gb3J3YXJkKSk7Ci19Ci0K
LXZvaWQgd2dwdVF1ZXVlV3JpdGVCdWZmZXIoV0dQVVF1ZXVlIHF1ZXVlLCBXR1BVQnVmZmVyIGJ1
ZmZlciwgdWludDY0X3QgYnVmZmVyT2Zmc2V0LCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6
ZSkKLXsKLSAgICBxdWV1ZS0+cXVldWUtPndyaXRlQnVmZmVyKGJ1ZmZlci0+YnVmZmVyLCBidWZm
ZXJPZmZzZXQsIGRhdGEsIHNpemUpOwotfQotCi12b2lkIHdncHVRdWV1ZVdyaXRlVGV4dHVyZShX
R1BVUXVldWUgcXVldWUsIGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBkZXN0aW5hdGlvbiwg
Y29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBjb25zdCBXR1BVVGV4dHVyZURhdGFM
YXlvdXQqIGRhdGFMYXlvdXQsIGNvbnN0IFdHUFVFeHRlbnQzRCogd3JpdGVTaXplKQotewotICAg
IHF1ZXVlLT5xdWV1ZS0+d3JpdGVUZXh0dXJlKGRlc3RpbmF0aW9uLCBkYXRhLCBkYXRhU2l6ZSwg
ZGF0YUxheW91dCwgd3JpdGVTaXplKTsKLX0KLQotdm9pZCB3Z3B1UXVldWVTZXRMYWJlbChXR1BV
UXVldWUgcXVldWUsIGNvbnN0IGNoYXIqIGxhYmVsKQotewotICAgIHF1ZXVlLT5xdWV1ZS0+c2V0
TGFiZWwobGFiZWwpOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5k
ZXJCdW5kbGUuY3BwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41MDdlZWE0ZDMxZjU1NWQyZjU5MjhlNTA4NTRjZTE0OTA1MzQ4NDFlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLmNwcApAQCAtMCww
ICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlckJ1bmRsZS5oIgorCisjaW5jbHVk
ZSAiV2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitSZW5kZXJCdW5kbGU6OlJl
bmRlckJ1bmRsZSgpID0gZGVmYXVsdDsKKworUmVuZGVyQnVuZGxlOjp+UmVuZGVyQnVuZGxlKCkg
PSBkZWZhdWx0OworCit2b2lkIFJlbmRlckJ1bmRsZTo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFi
ZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKK30KKworfQorCit2b2lkIHdncHVSZW5k
ZXJCdW5kbGVSZWxlYXNlKFdHUFVSZW5kZXJCdW5kbGUgcmVuZGVyQnVuZGxlKQoreworICAgIGRl
bGV0ZSByZW5kZXJCdW5kbGU7Cit9CisKK3ZvaWQgd2dwdVJlbmRlckJ1bmRsZVNldExhYmVsKFdH
UFVSZW5kZXJCdW5kbGUgcmVuZGVyQnVuZGxlLCBjb25zdCBjaGFyKiBsYWJlbCkKK3sKKyAgICBy
ZW5kZXJCdW5kbGUtPnJlbmRlckJ1bmRsZS0+c2V0TGFiZWwobGFiZWwpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLmggYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9SZW5kZXJCdW5kbGUuaAppbmRleCAyYzBiYWM2YWM0YTMwM2Y4NjQ3MTU0ZmEzZGIzNTk2
MWM5NzllNGU1Li5mYWVhZjM4ZGM2ZDUxZDM4Y2NkMDlkYTFlMzA5YmZkZDQ5YjNhNzIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW1wb3J0ICJXZWJHUFUuaCIKLSNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0jaW1wb3J0IDx3dGYvUmVmLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgIldlYkdQVS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUubW0gYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY3NTdiNDk3NTllMTc0YWJhMDVmNzBmMzc5MWY1M2U5MzZkODg1OTMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUmVuZGVyQnVuZGxlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiUmVuZGVyQnVuZGxlLmgiCi0KLSNpbXBvcnQgIldlYkdQVUV4dC5oIgot
Ci1uYW1lc3BhY2UgV2ViR1BVIHsKLQotUmVuZGVyQnVuZGxlOjpSZW5kZXJCdW5kbGUoKSA9IGRl
ZmF1bHQ7Ci0KLVJlbmRlckJ1bmRsZTo6flJlbmRlckJ1bmRsZSgpID0gZGVmYXVsdDsKLQotdm9p
ZCBSZW5kZXJCdW5kbGU6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQotewotICAgIFVOVVNF
RF9QQVJBTShsYWJlbCk7Ci19Ci0KLX0KLQotdm9pZCB3Z3B1UmVuZGVyQnVuZGxlUmVsZWFzZShX
R1BVUmVuZGVyQnVuZGxlIHJlbmRlckJ1bmRsZSkKLXsKLSAgICBkZWxldGUgcmVuZGVyQnVuZGxl
OwotfQotCi12b2lkIHdncHVSZW5kZXJCdW5kbGVTZXRMYWJlbChXR1BVUmVuZGVyQnVuZGxlIHJl
bmRlckJ1bmRsZSwgY29uc3QgY2hhciogbGFiZWwpCi17Ci0gICAgcmVuZGVyQnVuZGxlLT5yZW5k
ZXJCdW5kbGUtPnNldExhYmVsKGxhYmVsKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVu
ZGVyQnVuZGxlRW5jb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThhYmYxZTEyNmEyMDM0YjY2YjE2ZDI0
MjVkYTY2ZDY2OTUyMDVlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1JlbmRlckJ1bmRsZUVuY29kZXIuY3BwCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICogQ29weXJp
Z2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbmRlckJ1bmRsZUVuY29kZXIuaCIKKworI2luY2x1ZGUgIkJpbmRHcm91cC5oIgor
I2luY2x1ZGUgIkJ1ZmZlci5oIgorI2luY2x1ZGUgIlJlbmRlckJ1bmRsZS5oIgorI2luY2x1ZGUg
IlJlbmRlclBpcGVsaW5lLmgiCisjaW5jbHVkZSAiV2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBX
ZWJHUFUgeworCitSZW5kZXJCdW5kbGVFbmNvZGVyOjpSZW5kZXJCdW5kbGVFbmNvZGVyKCkgPSBk
ZWZhdWx0OworCitSZW5kZXJCdW5kbGVFbmNvZGVyOjp+UmVuZGVyQnVuZGxlRW5jb2RlcigpID0g
ZGVmYXVsdDsKKwordm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3KHVpbnQzMl90IHZlcnRl
eENvdW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBmaXJzdFZlcnRleCwgdWlu
dDMyX3QgZmlyc3RJbnN0YW5jZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odmVydGV4Q291bnQpOwor
ICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZUNvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oZmlyc3RW
ZXJ0ZXgpOworICAgIFVOVVNFRF9QQVJBTShmaXJzdEluc3RhbmNlKTsKK30KKwordm9pZCBSZW5k
ZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5kZXhlZCh1aW50MzJfdCBpbmRleENvdW50LCB1aW50MzJf
dCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBmaXJzdEluZGV4LCBpbnQzMl90IGJhc2VWZXJ0ZXgs
IHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpCit7CisgICAgVU5VU0VEX1BBUkFNKGluZGV4Q291bnQp
OworICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZUNvdW50KTsKKyAgICBVTlVTRURfUEFSQU0oZmly
c3RJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGJhc2VWZXJ0ZXgpOworICAgIFVOVVNFRF9QQVJB
TShmaXJzdEluc3RhbmNlKTsKK30KKwordm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpkcmF3SW5k
ZXhlZEluZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGly
ZWN0T2Zmc2V0KQoreworICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7CisgICAgVU5V
U0VEX1BBUkFNKGluZGlyZWN0T2Zmc2V0KTsKK30KKwordm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVy
OjpkcmF3SW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWludDY0X3QgaW5k
aXJlY3RPZmZzZXQpCit7CisgICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKKyAgICBV
TlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOworfQorCitSZWY8UmVuZGVyQnVuZGxlPiBSZW5k
ZXJCdW5kbGVFbmNvZGVyOjpmaW5pc2goY29uc3QgV0dQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAgIHJldHVy
biBSZW5kZXJCdW5kbGU6OmNyZWF0ZSgpOworfQorCit2b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6
Omluc2VydERlYnVnTWFya2VyKGNvbnN0IGNoYXIqIG1hcmtlckxhYmVsKQoreworICAgIFVOVVNF
RF9QQVJBTShtYXJrZXJMYWJlbCk7Cit9CisKK3ZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6cG9w
RGVidWdHcm91cCgpCit7CisKK30KKwordm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpwdXNoRGVi
dWdHcm91cChjb25zdCBjaGFyKiBncm91cExhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShncm91
cExhYmVsKTsKK30KKwordm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRCaW5kR3JvdXAodWlu
dDMyX3QgZ3JvdXBJbmRleCwgY29uc3QgQmluZEdyb3VwJiBncm91cCwgdWludDMyX3QgZHluYW1p
Y09mZnNldENvdW50LCBjb25zdCB1aW50MzJfdCogZHluYW1pY09mZnNldHMpCit7CisgICAgVU5V
U0VEX1BBUkFNKGdyb3VwSW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShncm91cCk7CisgICAgVU5V
U0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRDb3VudCk7CisgICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNP
ZmZzZXRzKTsKK30KKwordm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcihj
b25zdCBCdWZmZXImIGJ1ZmZlciwgV0dQVUluZGV4Rm9ybWF0IGZvcm1hdCwgdWludDY0X3Qgb2Zm
c2V0LCB1aW50NjRfdCBzaXplKQoreworICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVO
VVNFRF9QQVJBTShmb3JtYXQpOworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNF
RF9QQVJBTShzaXplKTsKK30KKwordm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRQaXBlbGlu
ZShjb25zdCBSZW5kZXJQaXBlbGluZSYgcGlwZWxpbmUpCit7CisgICAgVU5VU0VEX1BBUkFNKHBp
cGVsaW5lKTsKK30KKwordm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXIo
dWludDMyX3Qgc2xvdCwgY29uc3QgQnVmZmVyJiBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWlu
dDY0X3Qgc2l6ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc2xvdCk7CisgICAgVU5VU0VEX1BBUkFN
KGJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CisgICAgVU5VU0VEX1BBUkFNKHNp
emUpOworfQorCit2b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6OnNldExhYmVsKGNvbnN0IGNoYXIq
IGxhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkdQVQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyUmVsZWFzZShXR1BVUmVuZGVy
QnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyKQoreworICAgIGRlbGV0ZSByZW5kZXJC
dW5kbGVFbmNvZGVyOworfQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhdyhXR1BV
UmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCB1aW50MzJfdCB2ZXJ0ZXhD
b3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3QgZmlyc3RWZXJ0ZXgsIHVpbnQz
Ml90IGZpcnN0SW5zdGFuY2UpCit7CisgICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVu
ZGxlRW5jb2Rlci0+ZHJhdyh2ZXJ0ZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RWZXJ0ZXgs
IGZpcnN0SW5zdGFuY2UpOworfQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0lu
ZGV4ZWQoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlciwgdWludDMy
X3QgaW5kZXhDb3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3QgZmlyc3RJbmRl
eCwgaW50MzJfdCBiYXNlVmVydGV4LCB1aW50MzJfdCBmaXJzdEluc3RhbmNlKQoreworICAgIHJl
bmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPmRyYXdJbmRleGVkKGluZGV4
Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFu
Y2UpOworfQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGV4ZWRJbmRpcmVj
dChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCBXR1BVQnVmZmVy
IGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCkKK3sKKyAgICByZW5kZXJC
dW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLT5kcmF3SW5kZXhlZEluZGlyZWN0KGlu
ZGlyZWN0QnVmZmVyLT5idWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKK30KKwordm9pZCB3Z3B1UmVu
ZGVyQnVuZGxlRW5jb2RlckRyYXdJbmRpcmVjdChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5k
ZXJCdW5kbGVFbmNvZGVyLCBXR1BVQnVmZmVyIGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRp
cmVjdE9mZnNldCkKK3sKKyAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNv
ZGVyLT5kcmF3SW5kaXJlY3QoaW5kaXJlY3RCdWZmZXItPmJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQp
OworfQorCitXR1BVUmVuZGVyQnVuZGxlIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRmluaXNoKFdH
UFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIGNvbnN0IFdHUFVSZW5k
ZXJCdW5kbGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBuZXcgV0dQVVJl
bmRlckJ1bmRsZUltcGwgeyByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVy
LT5maW5pc2goZGVzY3JpcHRvcikgfTsKK30KKwordm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2Rl
ckluc2VydERlYnVnTWFya2VyKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVu
Y29kZXIsIGNvbnN0IGNoYXIqIG1hcmtlckxhYmVsKQoreworICAgIHJlbmRlckJ1bmRsZUVuY29k
ZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPmluc2VydERlYnVnTWFya2VyKG1hcmtlckxhYmVsKTsK
K30KKwordm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclBvcERlYnVnR3JvdXAoV0dQVVJlbmRl
ckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlcikKK3sKKyAgICByZW5kZXJCdW5kbGVF
bmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLT5wb3BEZWJ1Z0dyb3VwKCk7Cit9CisKK3ZvaWQg
d2dwdVJlbmRlckJ1bmRsZUVuY29kZXJQdXNoRGVidWdHcm91cChXR1BVUmVuZGVyQnVuZGxlRW5j
b2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCBjb25zdCBjaGFyKiBncm91cExhYmVsKQoreworICAg
IHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPnB1c2hEZWJ1Z0dyb3Vw
KGdyb3VwTGFiZWwpOworfQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0QmluZEdy
b3VwKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIHVpbnQzMl90
IGdyb3VwSW5kZXgsIFdHUFVCaW5kR3JvdXAgZ3JvdXAsIHVpbnQzMl90IGR5bmFtaWNPZmZzZXRD
b3VudCwgY29uc3QgdWludDMyX3QqIGR5bmFtaWNPZmZzZXRzKQoreworICAgIHJlbmRlckJ1bmRs
ZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPnNldEJpbmRHcm91cChncm91cEluZGV4LCBn
cm91cC0+YmluZEdyb3VwLCBkeW5hbWljT2Zmc2V0Q291bnQsIGR5bmFtaWNPZmZzZXRzKTsKK30K
Kwordm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldEluZGV4QnVmZmVyKFdHUFVSZW5kZXJC
dW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdHUFVCdWZmZXIgYnVmZmVyLCBXR1BV
SW5kZXhGb3JtYXQgZm9ybWF0LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCit7Cisg
ICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci0+c2V0SW5kZXhCdWZm
ZXIoYnVmZmVyLT5idWZmZXIsIGZvcm1hdCwgb2Zmc2V0LCBzaXplKTsKK30KKwordm9pZCB3Z3B1
UmVuZGVyQnVuZGxlRW5jb2RlclNldFBpcGVsaW5lKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJl
bmRlckJ1bmRsZUVuY29kZXIsIFdHUFVSZW5kZXJQaXBlbGluZSBwaXBlbGluZSkKK3sKKyAgICBy
ZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLT5zZXRQaXBlbGluZShwaXBl
bGluZS0+cmVuZGVyUGlwZWxpbmUpOworfQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVy
U2V0VmVydGV4QnVmZmVyKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29k
ZXIsIHVpbnQzMl90IHNsb3QsIFdHUFVCdWZmZXIgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVp
bnQ2NF90IHNpemUpCit7CisgICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5j
b2Rlci0+c2V0VmVydGV4QnVmZmVyKHNsb3QsIGJ1ZmZlci0+YnVmZmVyLCBvZmZzZXQsIHNpemUp
OworfQorCit2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0TGFiZWwoV0dQVVJlbmRlckJ1
bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlciwgY29uc3QgY2hhciogbGFiZWwpCit7Cisg
ICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci0+c2V0TGFiZWwobGFi
ZWwpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5j
b2Rlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oCmluZGV4
IDJjZDQ5OWMwMDA2M2MwMTA3OWQyMmE4Y2MwMGJkYjAwYzk2NjgyMTMuLjc5Y2IxMDkyNGYxZTUw
MzJhNTExNjU0ZTYxZmY2ZjRjOTZmNzM2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5k
ZXJCdW5kbGVFbmNvZGVyLmgKQEAgLTI1LDEwICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2ltcG9ydCAiV2ViR1BVLmgiCi0jaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8
d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJXZWJHUFUu
aCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbSBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDliYmUxNTUxZDNhOWRmMzhlYmYyMjFkMjI1NThkNjIzZDcwZjI5NzguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE5NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSZW5kZXJCdW5kbGVFbmNvZGVyLmgiCi0KLSNpbXBv
cnQgIkJpbmRHcm91cC5oIgotI2ltcG9ydCAiQnVmZmVyLmgiCi0jaW1wb3J0ICJSZW5kZXJCdW5k
bGUuaCIKLSNpbXBvcnQgIlJlbmRlclBpcGVsaW5lLmgiCi0jaW1wb3J0ICJXZWJHUFVFeHQuaCIK
LQotbmFtZXNwYWNlIFdlYkdQVSB7Ci0KLVJlbmRlckJ1bmRsZUVuY29kZXI6OlJlbmRlckJ1bmRs
ZUVuY29kZXIoKSA9IGRlZmF1bHQ7Ci0KLVJlbmRlckJ1bmRsZUVuY29kZXI6On5SZW5kZXJCdW5k
bGVFbmNvZGVyKCkgPSBkZWZhdWx0OwotCi12b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXco
dWludDMyX3QgdmVydGV4Q291bnQsIHVpbnQzMl90IGluc3RhbmNlQ291bnQsIHVpbnQzMl90IGZp
cnN0VmVydGV4LCB1aW50MzJfdCBmaXJzdEluc3RhbmNlKQotewotICAgIFVOVVNFRF9QQVJBTSh2
ZXJ0ZXhDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlQ291bnQpOwotICAgIFVOVVNF
RF9QQVJBTShmaXJzdFZlcnRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5zdGFuY2UpOwot
fQotCi12b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRleGVkKHVpbnQzMl90IGluZGV4
Q291bnQsIHVpbnQzMl90IGluc3RhbmNlQ291bnQsIHVpbnQzMl90IGZpcnN0SW5kZXgsIGludDMy
X3QgYmFzZVZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSkKLXsKLSAgICBVTlVTRURfUEFS
QU0oaW5kZXhDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlQ291bnQpOwotICAgIFVO
VVNFRF9QQVJBTShmaXJzdEluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZlcnRleCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5zdGFuY2UpOwotfQotCi12b2lkIFJlbmRlckJ1bmRsZUVu
Y29kZXI6OmRyYXdJbmRleGVkSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwg
dWludDY0X3QgaW5kaXJlY3RPZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVm
ZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOwotfQotCi12b2lkIFJlbmRl
ckJ1bmRsZUVuY29kZXI6OmRyYXdJbmRpcmVjdChjb25zdCBCdWZmZXImIGluZGlyZWN0QnVmZmVy
LCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCkKLXsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RC
dWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9mZnNldCk7Ci19Ci0KLVJlZjxSZW5k
ZXJCdW5kbGU+IFJlbmRlckJ1bmRsZUVuY29kZXI6OmZpbmlzaChjb25zdCBXR1BVUmVuZGVyQnVu
ZGxlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKLXsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRv
cik7Ci0gICAgcmV0dXJuIFJlbmRlckJ1bmRsZTo6Y3JlYXRlKCk7Ci19Ci0KLXZvaWQgUmVuZGVy
QnVuZGxlRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIoY29uc3QgY2hhciogbWFya2VyTGFiZWwp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKG1hcmtlckxhYmVsKTsKLX0KLQotdm9pZCBSZW5kZXJCdW5k
bGVFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKLXsKLQotfQotCi12b2lkIFJlbmRlckJ1bmRsZUVu
Y29kZXI6OnB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGNoYXIqIGdyb3VwTGFiZWwpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKGdyb3VwTGFiZWwpOwotfQotCi12b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6OnNl
dEJpbmRHcm91cCh1aW50MzJfdCBncm91cEluZGV4LCBjb25zdCBCaW5kR3JvdXAmIGdyb3VwLCB1
aW50MzJfdCBkeW5hbWljT2Zmc2V0Q291bnQsIGNvbnN0IHVpbnQzMl90KiBkeW5hbWljT2Zmc2V0
cykKLXsKLSAgICBVTlVTRURfUEFSQU0oZ3JvdXBJbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGdy
b3VwKTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldENvdW50KTsKLSAgICBVTlVTRURf
UEFSQU0oZHluYW1pY09mZnNldHMpOwotfQotCi12b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6OnNl
dEluZGV4QnVmZmVyKGNvbnN0IEJ1ZmZlciYgYnVmZmVyLCBXR1BVSW5kZXhGb3JtYXQgZm9ybWF0
LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGJ1
ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOwotfQotCi12b2lkIFJlbmRlckJ1bmRsZUVuY29k
ZXI6OnNldFBpcGVsaW5lKGNvbnN0IFJlbmRlclBpcGVsaW5lJiBwaXBlbGluZSkKLXsKLSAgICBV
TlVTRURfUEFSQU0ocGlwZWxpbmUpOwotfQotCi12b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6OnNl
dFZlcnRleEJ1ZmZlcih1aW50MzJfdCBzbG90LCBjb25zdCBCdWZmZXImIGJ1ZmZlciwgdWludDY0
X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKQotewotICAgIFVOVVNFRF9QQVJBTShzbG90KTsKLSAg
ICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBV
TlVTRURfUEFSQU0oc2l6ZSk7Ci19Ci0KLXZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6c2V0TGFi
ZWwoY29uc3QgY2hhciogbGFiZWwpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViR1BVCi0KLXZvaWQgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJSZWxl
YXNlKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIpCi17Ci0gICAg
ZGVsZXRlIHJlbmRlckJ1bmRsZUVuY29kZXI7Ci19Ci0KLXZvaWQgd2dwdVJlbmRlckJ1bmRsZUVu
Y29kZXJEcmF3KFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIHVp
bnQzMl90IHZlcnRleENvdW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBmaXJz
dFZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSkKLXsKLSAgICByZW5kZXJCdW5kbGVFbmNv
ZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyLT5kcmF3KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50
LCBmaXJzdFZlcnRleCwgZmlyc3RJbnN0YW5jZSk7Ci19Ci0KLXZvaWQgd2dwdVJlbmRlckJ1bmRs
ZUVuY29kZXJEcmF3SW5kZXhlZChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVF
bmNvZGVyLCB1aW50MzJfdCBpbmRleENvdW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50
MzJfdCBmaXJzdEluZGV4LCBpbnQzMl90IGJhc2VWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0SW5zdGFu
Y2UpCi17Ci0gICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci0+ZHJh
d0luZGV4ZWQoaW5kZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RJbmRleCwgYmFzZVZlcnRl
eCwgZmlyc3RJbnN0YW5jZSk7Ci19Ci0KLXZvaWQgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3
SW5kZXhlZEluZGlyZWN0KFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29k
ZXIsIFdHUFVCdWZmZXIgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQot
ewotICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPmRyYXdJbmRl
eGVkSW5kaXJlY3QoaW5kaXJlY3RCdWZmZXItPmJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOwotfQot
Ci12b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGlyZWN0KFdHUFVSZW5kZXJCdW5k
bGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIFdHUFVCdWZmZXIgaW5kaXJlY3RCdWZmZXIs
IHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQotewotICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJl
bmRlckJ1bmRsZUVuY29kZXItPmRyYXdJbmRpcmVjdChpbmRpcmVjdEJ1ZmZlci0+YnVmZmVyLCBp
bmRpcmVjdE9mZnNldCk7Ci19Ci0KLVdHUFVSZW5kZXJCdW5kbGUgd2dwdVJlbmRlckJ1bmRsZUVu
Y29kZXJGaW5pc2goV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2Rlciwg
Y29uc3QgV0dQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgcmV0
dXJuIG5ldyBXR1BVUmVuZGVyQnVuZGxlSW1wbCB7IHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRl
ckJ1bmRsZUVuY29kZXItPmZpbmlzaChkZXNjcmlwdG9yKSB9OwotfQotCi12b2lkIHdncHVSZW5k
ZXJCdW5kbGVFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIg
cmVuZGVyQnVuZGxlRW5jb2RlciwgY29uc3QgY2hhciogbWFya2VyTGFiZWwpCi17Ci0gICAgcmVu
ZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci0+aW5zZXJ0RGVidWdNYXJrZXIo
bWFya2VyTGFiZWwpOwotfQotCi12b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyUG9wRGVidWdH
cm91cChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyKQotewotICAg
IHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPnBvcERlYnVnR3JvdXAo
KTsKLX0KLQotdm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclB1c2hEZWJ1Z0dyb3VwKFdHUFVS
ZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIsIGNvbnN0IGNoYXIqIGdyb3Vw
TGFiZWwpCi17Ci0gICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci0+
cHVzaERlYnVnR3JvdXAoZ3JvdXBMYWJlbCk7Ci19Ci0KLXZvaWQgd2dwdVJlbmRlckJ1bmRsZUVu
Y29kZXJTZXRCaW5kR3JvdXAoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5j
b2RlciwgdWludDMyX3QgZ3JvdXBJbmRleCwgV0dQVUJpbmRHcm91cCBncm91cCwgdWludDMyX3Qg
ZHluYW1pY09mZnNldENvdW50LCBjb25zdCB1aW50MzJfdCogZHluYW1pY09mZnNldHMpCi17Ci0g
ICAgcmVuZGVyQnVuZGxlRW5jb2Rlci0+cmVuZGVyQnVuZGxlRW5jb2Rlci0+c2V0QmluZEdyb3Vw
KGdyb3VwSW5kZXgsIGdyb3VwLT5iaW5kR3JvdXAsIGR5bmFtaWNPZmZzZXRDb3VudCwgZHluYW1p
Y09mZnNldHMpOwotfQotCi12b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0SW5kZXhCdWZm
ZXIoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlciwgV0dQVUJ1ZmZl
ciBidWZmZXIsIFdHUFVJbmRleEZvcm1hdCBmb3JtYXQsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0
X3Qgc2l6ZSkKLXsKLSAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVy
LT5zZXRJbmRleEJ1ZmZlcihidWZmZXItPmJ1ZmZlciwgZm9ybWF0LCBvZmZzZXQsIHNpemUpOwot
fQotCi12b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0UGlwZWxpbmUoV0dQVVJlbmRlckJ1
bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlciwgV0dQVVJlbmRlclBpcGVsaW5lIHBpcGVs
aW5lKQotewotICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXItPnNl
dFBpcGVsaW5lKHBpcGVsaW5lLT5yZW5kZXJQaXBlbGluZSk7Ci19Ci0KLXZvaWQgd2dwdVJlbmRl
ckJ1bmRsZUVuY29kZXJTZXRWZXJ0ZXhCdWZmZXIoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVu
ZGVyQnVuZGxlRW5jb2RlciwgdWludDMyX3Qgc2xvdCwgV0dQVUJ1ZmZlciBidWZmZXIsIHVpbnQ2
NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSkKLXsKLSAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5y
ZW5kZXJCdW5kbGVFbmNvZGVyLT5zZXRWZXJ0ZXhCdWZmZXIoc2xvdCwgYnVmZmVyLT5idWZmZXIs
IG9mZnNldCwgc2l6ZSk7Ci19Ci0KLXZvaWQgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRMYWJl
bChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyLCBjb25zdCBjaGFy
KiBsYWJlbCkKLXsKLSAgICByZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVy
LT5zZXRMYWJlbChsYWJlbCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9S
ZW5kZXJQYXNzRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5j
b2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNkNDBmMTRmZTYwMGEzYmEzODhiNWQ0YjU0YmExMjdjYjMy
NWViZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NF
bmNvZGVyLmNwcApAQCAtMCwwICsxLDMwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJQ
YXNzRW5jb2Rlci5oIgorCisjaW5jbHVkZSAiQmluZEdyb3VwLmgiCisjaW5jbHVkZSAiQnVmZmVy
LmgiCisjaW5jbHVkZSAiUXVlcnlTZXQuaCIKKyNpbmNsdWRlICJSZW5kZXJCdW5kbGUuaCIKKyNp
bmNsdWRlICJSZW5kZXJQaXBlbGluZS5oIgorI2luY2x1ZGUgIldlYkdQVUV4dC5oIgorCituYW1l
c3BhY2UgV2ViR1BVIHsKKworUmVuZGVyUGFzc0VuY29kZXI6OlJlbmRlclBhc3NFbmNvZGVyKCkg
PSBkZWZhdWx0OworCitSZW5kZXJQYXNzRW5jb2Rlcjo6flJlbmRlclBhc3NFbmNvZGVyKCkgPSBk
ZWZhdWx0OworCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpiZWdpbk9jY2x1c2lvblF1ZXJ5KHVp
bnQzMl90IHF1ZXJ5SW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworfQor
Cit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KGNv
bnN0IFF1ZXJ5U2V0JiBxdWVyeVNldCwgdWludDMyX3QgcXVlcnlJbmRleCkKK3sKKyAgICBVTlVT
RURfUEFSQU0ocXVlcnlTZXQpOworICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKK30KKwor
dm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdyh1aW50MzJfdCB2ZXJ0ZXhDb3VudCwgdWludDMy
X3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3QgZmlyc3RWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0SW5z
dGFuY2UpCit7CisgICAgVU5VU0VEX1BBUkFNKHZlcnRleENvdW50KTsKKyAgICBVTlVTRURfUEFS
QU0oaW5zdGFuY2VDb3VudCk7CisgICAgVU5VU0VEX1BBUkFNKGZpcnN0VmVydGV4KTsKKyAgICBV
TlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7Cit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6
OmRyYXdJbmRleGVkKHVpbnQzMl90IGluZGV4Q291bnQsIHVpbnQzMl90IGluc3RhbmNlQ291bnQs
IHVpbnQzMl90IGZpcnN0SW5kZXgsIGludDMyX3QgYmFzZVZlcnRleCwgdWludDMyX3QgZmlyc3RJ
bnN0YW5jZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oaW5kZXhDb3VudCk7CisgICAgVU5VU0VEX1BB
UkFNKGluc3RhbmNlQ291bnQpOworICAgIFVOVVNFRF9QQVJBTShmaXJzdEluZGV4KTsKKyAgICBV
TlVTRURfUEFSQU0oYmFzZVZlcnRleCk7CisgICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5zdGFuY2Up
OworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpkcmF3SW5kZXhlZEluZGlyZWN0KGNvbnN0
IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQoreworICAg
IFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0
T2Zmc2V0KTsKK30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGlyZWN0KGNvbnN0
IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGlyZWN0T2Zmc2V0KQoreworICAg
IFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0
T2Zmc2V0KTsKK30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kT2NjbHVzaW9uUXVlcnko
KQoreworCit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OmVuZFBhc3MoKQoreworCit9CisK
K3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkKK3sK
KworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpleGVjdXRlQnVuZGxlcyhWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBSZW5kZXJCdW5kbGU+PiYmIGJ1bmRsZXMpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGJ1bmRsZXMpOworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpp
bnNlcnREZWJ1Z01hcmtlcihjb25zdCBjaGFyKiBtYXJrZXJMYWJlbCkKK3sKKyAgICBVTlVTRURf
UEFSQU0obWFya2VyTGFiZWwpOworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpwb3BEZWJ1
Z0dyb3VwKCkKK3sKKworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpwdXNoRGVidWdHcm91
cChjb25zdCBjaGFyKiBncm91cExhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVs
KTsKK30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKHVpbnQzMl90IGdy
b3VwSW5kZXgsIGNvbnN0IEJpbmRHcm91cCYgZ3JvdXAsIHVpbnQzMl90IGR5bmFtaWNPZmZzZXRD
b3VudCwgY29uc3QgdWludDMyX3QqIGR5bmFtaWNPZmZzZXRzKQoreworICAgIFVOVVNFRF9QQVJB
TShncm91cEluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oZ3JvdXApOworICAgIFVOVVNFRF9QQVJB
TShkeW5hbWljT2Zmc2V0Q291bnQpOworICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0cyk7
Cit9CisKK3ZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OnNldEJsZW5kQ29uc3RhbnQoY29uc3QgV0dQ
VUNvbG9yKiBjb2xvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oY29sb3IpOworfQorCit2b2lkIFJl
bmRlclBhc3NFbmNvZGVyOjpzZXRJbmRleEJ1ZmZlcihjb25zdCBCdWZmZXImIGJ1ZmZlciwgV0dQ
VUluZGV4Rm9ybWF0IGZvcm1hdCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplKQorewor
ICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOworICAg
IFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzaXplKTsKK30KKwordm9p
ZCBSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoY29uc3QgUmVuZGVyUGlwZWxpbmUmIHBp
cGVsaW5lKQoreworICAgIFVOVVNFRF9QQVJBTShwaXBlbGluZSk7Cit9CisKK3ZvaWQgUmVuZGVy
UGFzc0VuY29kZXI6OnNldFNjaXNzb3JSZWN0KHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQz
Ml90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCit7CisgICAgVU5VU0VEX1BBUkFNKHgpOworICAg
IFVOVVNFRF9QQVJBTSh5KTsKKyAgICBVTlVTRURfUEFSQU0od2lkdGgpOworICAgIFVOVVNFRF9Q
QVJBTShoZWlnaHQpOworfQorCit2b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpzZXRTdGVuY2lsUmVm
ZXJlbmNlKHVpbnQzMl90IHJlZmVyZW5jZSkKK3sKKyAgICBVTlVTRURfUEFSQU0ocmVmZXJlbmNl
KTsKK30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKHVpbnQzMl90
IHNsb3QsIGNvbnN0IEJ1ZmZlciYgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNp
emUpCit7CisgICAgVU5VU0VEX1BBUkFNKHNsb3QpOworICAgIFVOVVNFRF9QQVJBTShidWZmZXIp
OworICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOworICAgIFVOVVNFRF9QQVJBTShzaXplKTsKK30K
Kwordm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0Vmlld3BvcnQoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRo
KQoreworICAgIFVOVVNFRF9QQVJBTSh4KTsKKyAgICBVTlVTRURfUEFSQU0oeSk7CisgICAgVU5V
U0VEX1BBUkFNKHdpZHRoKTsKKyAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBVTlVTRURf
UEFSQU0obWluRGVwdGgpOworICAgIFVOVVNFRF9QQVJBTShtYXhEZXB0aCk7Cit9CisKK3ZvaWQg
UmVuZGVyUGFzc0VuY29kZXI6OndyaXRlVGltZXN0YW1wKGNvbnN0IFF1ZXJ5U2V0JiBxdWVyeVNl
dCwgdWludDMyX3QgcXVlcnlJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocXVlcnlTZXQpOwor
ICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKK30KKwordm9pZCBSZW5kZXJQYXNzRW5jb2Rl
cjo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCit7CisgICAgVU5VU0VEX1BBUkFNKGxhYmVs
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViR1BVCisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNv
ZGVyUmVsZWFzZShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIpCit7Cisg
ICAgZGVsZXRlIHJlbmRlclBhc3NFbmNvZGVyOworfQorCit2b2lkIHdncHVSZW5kZXJQYXNzRW5j
b2RlckJlZ2luT2NjbHVzaW9uUXVlcnkoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NF
bmNvZGVyLCB1aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5y
ZW5kZXJQYXNzRW5jb2Rlci0+YmVnaW5PY2NsdXNpb25RdWVyeShxdWVyeUluZGV4KTsKK30KKwor
dm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJCZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KFdH
UFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5U2V0IHF1ZXJ5
U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQoreworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5k
ZXJQYXNzRW5jb2Rlci0+YmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShxdWVyeVNldC0+cXVl
cnlTZXQsIHF1ZXJ5SW5kZXgpOworfQorCit2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckRyYXco
V0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCB1aW50MzJfdCB2ZXJ0ZXhD
b3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3QgZmlyc3RWZXJ0ZXgsIHVpbnQz
Ml90IGZpcnN0SW5zdGFuY2UpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NF
bmNvZGVyLT5kcmF3KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZlcnRleCwgZmly
c3RJbnN0YW5jZSk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhd0luZGV4ZWQo
V0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCB1aW50MzJfdCBpbmRleENv
dW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBmaXJzdEluZGV4LCBpbnQzMl90
IGJhc2VWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpCit7CisgICAgcmVuZGVyUGFzc0Vu
Y29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5kcmF3SW5kZXhlZChpbmRleENvdW50LCBpbnN0YW5j
ZUNvdW50LCBmaXJzdEluZGV4LCBiYXNlVmVydGV4LCBmaXJzdEluc3RhbmNlKTsKK30KKwordm9p
ZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kZXhlZEluZGlyZWN0KFdHUFVSZW5kZXJQYXNz
RW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgV0dQVUJ1ZmZlciBpbmRpcmVjdEJ1ZmZlciwgdWlu
dDY0X3QgaW5kaXJlY3RPZmZzZXQpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBh
c3NFbmNvZGVyLT5kcmF3SW5kZXhlZEluZGlyZWN0KGluZGlyZWN0QnVmZmVyLT5idWZmZXIsIGlu
ZGlyZWN0T2Zmc2V0KTsKK30KKwordm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kaXJl
Y3QoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBXR1BVQnVmZmVyIGlu
ZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCkKK3sKKyAgICByZW5kZXJQYXNz
RW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPmRyYXdJbmRpcmVjdChpbmRpcmVjdEJ1ZmZlci0+
YnVmZmVyLCBpbmRpcmVjdE9mZnNldCk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVy
RW5kT2NjbHVzaW9uUXVlcnkoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVy
KQoreworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+ZW5kT2NjbHVz
aW9uUXVlcnkoKTsKK30KKwordm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRQYXNzKFdHUFVS
ZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlcikKK3sKKyAgICByZW5kZXJQYXNzRW5j
b2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPmVuZFBhc3MoKTsKK30KKwordm9pZCB3Z3B1UmVuZGVy
UGFzc0VuY29kZXJFbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXR1BVUmVuZGVyUGFzc0VuY29k
ZXIgcmVuZGVyUGFzc0VuY29kZXIpCit7CisgICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBh
c3NFbmNvZGVyLT5lbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpOworfQorCit2b2lkIHdncHVS
ZW5kZXJQYXNzRW5jb2RlckV4ZWN1dGVCdW5kbGVzKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5k
ZXJQYXNzRW5jb2RlciwgdWludDMyX3QgYnVuZGxlc0NvdW50LCBjb25zdCBXR1BVUmVuZGVyQnVu
ZGxlKiBidW5kbGVzKQoreworICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0
IFdlYkdQVTo6UmVuZGVyQnVuZGxlPj4gYnVuZGxlc1RvRm9yd2FyZDsKKyAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgYnVuZGxlc0NvdW50OyArK2kpCisgICAgICAgIGJ1bmRsZXNUb0Zvcndh
cmQuYXBwZW5kKGJ1bmRsZXNbaV0tPnJlbmRlckJ1bmRsZSk7CisgICAgcmVuZGVyUGFzc0VuY29k
ZXItPnJlbmRlclBhc3NFbmNvZGVyLT5leGVjdXRlQnVuZGxlcyhXVEZNb3ZlKGJ1bmRsZXNUb0Zv
cndhcmQpKTsKK30KKwordm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJJbnNlcnREZWJ1Z01hcmtl
cihXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIGNvbnN0IGNoYXIqIG1h
cmtlckxhYmVsKQoreworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+
aW5zZXJ0RGVidWdNYXJrZXIobWFya2VyTGFiZWwpOworfQorCit2b2lkIHdncHVSZW5kZXJQYXNz
RW5jb2RlclBvcERlYnVnR3JvdXAoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNv
ZGVyKQoreworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+cG9wRGVi
dWdHcm91cCgpOworfQorCit2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclB1c2hEZWJ1Z0dyb3Vw
KFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgY29uc3QgY2hhciogZ3Jv
dXBMYWJlbCkKK3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPnB1
c2hEZWJ1Z0dyb3VwKGdyb3VwTGFiZWwpOworfQorCit2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2Rl
clNldEJpbmRHcm91cChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVp
bnQzMl90IGdyb3VwSW5kZXgsIFdHUFVCaW5kR3JvdXAgZ3JvdXAsIHVpbnQzMl90IGR5bmFtaWNP
ZmZzZXRDb3VudCwgY29uc3QgdWludDMyX3QqIGR5bmFtaWNPZmZzZXRzKQoreworICAgIHJlbmRl
clBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+c2V0QmluZEdyb3VwKGdyb3VwSW5kZXgs
IGdyb3VwLT5iaW5kR3JvdXAsIGR5bmFtaWNPZmZzZXRDb3VudCwgZHluYW1pY09mZnNldHMpOwor
fQorCit2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldEJsZW5kQ29uc3RhbnQoV0dQVVJlbmRl
clBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBjb25zdCBXR1BVQ29sb3IqIGNvbG9yKQor
eworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+c2V0QmxlbmRDb25z
dGFudChjb2xvcik7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0SW5kZXhCdWZm
ZXIoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBXR1BVQnVmZmVyIGJ1
ZmZlciwgV0dQVUluZGV4Rm9ybWF0IGZvcm1hdCwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBz
aXplKQoreworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+c2V0SW5k
ZXhCdWZmZXIoYnVmZmVyLT5idWZmZXIsIGZvcm1hdCwgb2Zmc2V0LCBzaXplKTsKK30KKwordm9p
ZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRQaXBlbGluZShXR1BVUmVuZGVyUGFzc0VuY29kZXIg
cmVuZGVyUGFzc0VuY29kZXIsIFdHUFVSZW5kZXJQaXBlbGluZSBwaXBlbGluZSkKK3sKKyAgICBy
ZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPnNldFBpcGVsaW5lKHBpcGVsaW5l
LT5yZW5kZXJQaXBlbGluZSk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0U2Np
c3NvclJlY3QoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCB1aW50MzJf
dCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQoreworICAg
IHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+c2V0U2Npc3NvclJlY3QoeCwg
eSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3ZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0U3Rl
bmNpbFJlZmVyZW5jZShXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVp
bnQzMl90IHJlZmVyZW5jZSkKK3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0Vu
Y29kZXItPnNldFN0ZW5jaWxSZWZlcmVuY2UocmVmZXJlbmNlKTsKK30KKwordm9pZCB3Z3B1UmVu
ZGVyUGFzc0VuY29kZXJTZXRWZXJ0ZXhCdWZmZXIoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRl
clBhc3NFbmNvZGVyLCB1aW50MzJfdCBzbG90LCBXR1BVQnVmZmVyIGJ1ZmZlciwgdWludDY0X3Qg
b2Zmc2V0LCB1aW50NjRfdCBzaXplKQoreworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQ
YXNzRW5jb2Rlci0+c2V0VmVydGV4QnVmZmVyKHNsb3QsIGJ1ZmZlci0+YnVmZmVyLCBvZmZzZXQs
IHNpemUpOworfQorCit2b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFZpZXdwb3J0KFdHUFVS
ZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKQor
eworICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+c2V0Vmlld3BvcnQo
eCwgeSwgd2lkdGgsIGhlaWdodCwgbWluRGVwdGgsIG1heERlcHRoKTsKK30KKwordm9pZCB3Z3B1
UmVuZGVyUGFzc0VuY29kZXJXcml0ZVRpbWVzdGFtcChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVu
ZGVyUGFzc0VuY29kZXIsIFdHUFVRdWVyeVNldCBxdWVyeVNldCwgdWludDMyX3QgcXVlcnlJbmRl
eCkKK3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPndyaXRlVGlt
ZXN0YW1wKHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVlcnlJbmRleCk7Cit9CisKK3ZvaWQgd2dwdVJl
bmRlclBhc3NFbmNvZGVyU2V0TGFiZWwoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NF
bmNvZGVyLCBjb25zdCBjaGFyKiBsYWJlbCkKK3sKKyAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVu
ZGVyUGFzc0VuY29kZXItPnNldExhYmVsKGxhYmVsKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9S
ZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IDZiNWJjYTM4ZjBhNWNkODFjY2FjZTJmMTFjY2I5NTk2
NjliOWI0ZmEuLjM5MzRhYThiMGU4MWUzYzE2OTczZTcyMzgxMzU4ZmY1OTA2ZGEyMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtMjUsMTIgKzI1LDEyIEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW1wb3J0ICJXZWJHUFUuaCIKLSNpbXBvcnQgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KLSNpbXBvcnQgPHd0Zi9SZWYuaD4K
LSNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSAiV2ViR1BVLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiM2MzOTNlNzAxM2Q5MWQyZWQxYzlkZTkyMTJjNzQyOGJlZmNlY2M1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMzA4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlbmRlclBhc3NFbmNvZGVyLmgiCi0KLSNpbXBv
cnQgIkJpbmRHcm91cC5oIgotI2ltcG9ydCAiQnVmZmVyLmgiCi0jaW1wb3J0ICJRdWVyeVNldC5o
IgotI2ltcG9ydCAiUmVuZGVyQnVuZGxlLmgiCi0jaW1wb3J0ICJSZW5kZXJQaXBlbGluZS5oIgot
I2ltcG9ydCAiV2ViR1BVRXh0LmgiCi0KLW5hbWVzcGFjZSBXZWJHUFUgewotCi1SZW5kZXJQYXNz
RW5jb2Rlcjo6UmVuZGVyUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7Ci0KLVJlbmRlclBhc3NFbmNv
ZGVyOjp+UmVuZGVyUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgUmVuZGVyUGFzc0Vu
Y29kZXI6OmJlZ2luT2NjbHVzaW9uUXVlcnkodWludDMyX3QgcXVlcnlJbmRleCkKLXsKLSAgICBV
TlVTRURfUEFSQU0ocXVlcnlJbmRleCk7Ci19Ci0KLXZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OmJl
Z2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50
MzJfdCBxdWVyeUluZGV4KQotewotICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOwotfQotCi12b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpkcmF3
KHVpbnQzMl90IHZlcnRleENvdW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50LCB1aW50MzJfdCBm
aXJzdFZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSkKLXsKLSAgICBVTlVTRURfUEFSQU0o
dmVydGV4Q291bnQpOwotICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZUNvdW50KTsKLSAgICBVTlVT
RURfUEFSQU0oZmlyc3RWZXJ0ZXgpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdEluc3RhbmNlKTsK
LX0KLQotdm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhd0luZGV4ZWQodWludDMyX3QgaW5kZXhD
b3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMyX3QgZmlyc3RJbmRleCwgaW50MzJf
dCBiYXNlVmVydGV4LCB1aW50MzJfdCBmaXJzdEluc3RhbmNlKQotewotICAgIFVOVVNFRF9QQVJB
TShpbmRleENvdW50KTsKLSAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2VDb3VudCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGZpcnN0SW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShiYXNlVmVydGV4KTsKLSAg
ICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7Ci19Ci0KLXZvaWQgUmVuZGVyUGFzc0VuY29k
ZXI6OmRyYXdJbmRleGVkSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWlu
dDY0X3QgaW5kaXJlY3RPZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVy
KTsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOwotfQotCi12b2lkIFJlbmRlclBh
c3NFbmNvZGVyOjpkcmF3SW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgdWlu
dDY0X3QgaW5kaXJlY3RPZmZzZXQpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVy
KTsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOwotfQotCi12b2lkIFJlbmRlclBh
c3NFbmNvZGVyOjplbmRPY2NsdXNpb25RdWVyeSgpCi17Ci0KLX0KLQotdm9pZCBSZW5kZXJQYXNz
RW5jb2Rlcjo6ZW5kUGFzcygpCi17Ci0KLX0KLQotdm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5k
UGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKQotewotCi19Ci0KLXZvaWQgUmVuZGVyUGFzc0VuY29k
ZXI6OmV4ZWN1dGVCdW5kbGVzKFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFJl
bmRlckJ1bmRsZT4+JiYgYnVuZGxlcykKLXsKLSAgICBVTlVTRURfUEFSQU0oYnVuZGxlcyk7Ci19
Ci0KLXZvaWQgUmVuZGVyUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFya2VyKGNvbnN0IGNoYXIq
IG1hcmtlckxhYmVsKQotewotICAgIFVOVVNFRF9QQVJBTShtYXJrZXJMYWJlbCk7Ci19Ci0KLXZv
aWQgUmVuZGVyUGFzc0VuY29kZXI6OnBvcERlYnVnR3JvdXAoKQotewotCi19Ci0KLXZvaWQgUmVu
ZGVyUGFzc0VuY29kZXI6OnB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGNoYXIqIGdyb3VwTGFiZWwpCi17
Ci0gICAgVU5VU0VEX1BBUkFNKGdyb3VwTGFiZWwpOwotfQotCi12b2lkIFJlbmRlclBhc3NFbmNv
ZGVyOjpzZXRCaW5kR3JvdXAodWludDMyX3QgZ3JvdXBJbmRleCwgY29uc3QgQmluZEdyb3VwJiBn
cm91cCwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCBjb25zdCB1aW50MzJfdCogZHluYW1p
Y09mZnNldHMpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGdyb3VwSW5kZXgpOwotICAgIFVOVVNFRF9Q
QVJBTShncm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRDb3VudCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzKTsKLX0KLQotdm9pZCBSZW5kZXJQYXNzRW5jb2Rl
cjo6c2V0QmxlbmRDb25zdGFudChjb25zdCBXR1BVQ29sb3IqIGNvbG9yKQotewotICAgIFVOVVNF
RF9QQVJBTShjb2xvcik7Ci19Ci0KLXZvaWQgUmVuZGVyUGFzc0VuY29kZXI6OnNldEluZGV4QnVm
ZmVyKGNvbnN0IEJ1ZmZlciYgYnVmZmVyLCBXR1BVSW5kZXhGb3JtYXQgZm9ybWF0LCB1aW50NjRf
dCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0g
ICAgVU5VU0VEX1BBUkFNKGZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNpemUpOwotfQotCi12b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpzZXRQaXBl
bGluZShjb25zdCBSZW5kZXJQaXBlbGluZSYgcGlwZWxpbmUpCi17Ci0gICAgVU5VU0VEX1BBUkFN
KHBpcGVsaW5lKTsKLX0KLQotdm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0U2Npc3NvclJlY3Qo
dWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkK
LXsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0gICAgVU5VU0VEX1BBUkFNKHkpOwotICAgIFVOVVNF
RF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci19Ci0KLXZvaWQgUmVu
ZGVyUGFzc0VuY29kZXI6OnNldFN0ZW5jaWxSZWZlcmVuY2UodWludDMyX3QgcmVmZXJlbmNlKQot
ewotICAgIFVOVVNFRF9QQVJBTShyZWZlcmVuY2UpOwotfQotCi12b2lkIFJlbmRlclBhc3NFbmNv
ZGVyOjpzZXRWZXJ0ZXhCdWZmZXIodWludDMyX3Qgc2xvdCwgY29uc3QgQnVmZmVyJiBidWZmZXIs
IHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSkKLXsKLSAgICBVTlVTRURfUEFSQU0oc2xv
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOwotfQotCi12b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpz
ZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBm
bG9hdCBtaW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwot
ICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNF
RF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShtaW5EZXB0aCk7Ci0gICAgVU5VU0VE
X1BBUkFNKG1heERlcHRoKTsKLX0KLQotdm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6d3JpdGVUaW1l
c3RhbXAoY29uc3QgUXVlcnlTZXQmIHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQotewot
ICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgp
OwotfQotCi12b2lkIFJlbmRlclBhc3NFbmNvZGVyOjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJl
bCkKLXsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJH
UFUKLQotdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJSZWxlYXNlKFdHUFVSZW5kZXJQYXNzRW5j
b2RlciByZW5kZXJQYXNzRW5jb2RlcikKLXsKLSAgICBkZWxldGUgcmVuZGVyUGFzc0VuY29kZXI7
Ci19Ci0KLXZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyQmVnaW5PY2NsdXNpb25RdWVyeShXR1BV
UmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVpbnQzMl90IHF1ZXJ5SW5kZXgp
Ci17Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5iZWdpbk9jY2x1
c2lvblF1ZXJ5KHF1ZXJ5SW5kZXgpOwotfQotCi12b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckJl
Z2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBh
c3NFbmNvZGVyLCBXR1BVUXVlcnlTZXQgcXVlcnlTZXQsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCi17
Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5iZWdpblBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KHF1ZXJ5U2V0LT5xdWVyeVNldCwgcXVlcnlJbmRleCk7Ci19Ci0KLXZv
aWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyRHJhdyhXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVy
UGFzc0VuY29kZXIsIHVpbnQzMl90IHZlcnRleENvdW50LCB1aW50MzJfdCBpbnN0YW5jZUNvdW50
LCB1aW50MzJfdCBmaXJzdFZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSkKLXsKLSAgICBy
ZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPmRyYXcodmVydGV4Q291bnQsIGlu
c3RhbmNlQ291bnQsIGZpcnN0VmVydGV4LCBmaXJzdEluc3RhbmNlKTsKLX0KLQotdm9pZCB3Z3B1
UmVuZGVyUGFzc0VuY29kZXJEcmF3SW5kZXhlZChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVy
UGFzc0VuY29kZXIsIHVpbnQzMl90IGluZGV4Q291bnQsIHVpbnQzMl90IGluc3RhbmNlQ291bnQs
IHVpbnQzMl90IGZpcnN0SW5kZXgsIGludDMyX3QgYmFzZVZlcnRleCwgdWludDMyX3QgZmlyc3RJ
bnN0YW5jZSkKLXsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPmRy
YXdJbmRleGVkKGluZGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0SW5kZXgsIGJhc2VWZXJ0
ZXgsIGZpcnN0SW5zdGFuY2UpOwotfQotCi12b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckRyYXdJ
bmRleGVkSW5kaXJlY3QoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCBX
R1BVQnVmZmVyIGluZGlyZWN0QnVmZmVyLCB1aW50NjRfdCBpbmRpcmVjdE9mZnNldCkKLXsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPmRyYXdJbmRleGVkSW5kaXJl
Y3QoaW5kaXJlY3RCdWZmZXItPmJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpOwotfQotCi12b2lkIHdn
cHVSZW5kZXJQYXNzRW5jb2RlckRyYXdJbmRpcmVjdChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVu
ZGVyUGFzc0VuY29kZXIsIFdHUFVCdWZmZXIgaW5kaXJlY3RCdWZmZXIsIHVpbnQ2NF90IGluZGly
ZWN0T2Zmc2V0KQotewotICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+
ZHJhd0luZGlyZWN0KGluZGlyZWN0QnVmZmVyLT5idWZmZXIsIGluZGlyZWN0T2Zmc2V0KTsKLX0K
LQotdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJFbmRPY2NsdXNpb25RdWVyeShXR1BVUmVuZGVy
UGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIpCi17Ci0gICAgcmVuZGVyUGFzc0VuY29kZXIt
PnJlbmRlclBhc3NFbmNvZGVyLT5lbmRPY2NsdXNpb25RdWVyeSgpOwotfQotCi12b2lkIHdncHVS
ZW5kZXJQYXNzRW5jb2RlckVuZFBhc3MoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NF
bmNvZGVyKQotewotICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+ZW5k
UGFzcygpOwotfQotCi12b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlckVuZFBpcGVsaW5lU3RhdGlz
dGljc1F1ZXJ5KFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlcikKLXsKLSAg
ICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPmVuZFBpcGVsaW5lU3RhdGlz
dGljc1F1ZXJ5KCk7Ci19Ci0KLXZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyRXhlY3V0ZUJ1bmRs
ZXMoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyLCB1aW50MzJfdCBidW5k
bGVzQ291bnQsIGNvbnN0IFdHUFVSZW5kZXJCdW5kbGUqIGJ1bmRsZXMpCi17Ci0gICAgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgV2ViR1BVOjpSZW5kZXJCdW5kbGU+PiBidW5k
bGVzVG9Gb3J3YXJkOwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBidW5kbGVzQ291bnQ7
ICsraSkKLSAgICAgICAgYnVuZGxlc1RvRm9yd2FyZC5hcHBlbmQoYnVuZGxlc1tpXS0+cmVuZGVy
QnVuZGxlKTsKLSAgICByZW5kZXJQYXNzRW5jb2Rlci0+cmVuZGVyUGFzc0VuY29kZXItPmV4ZWN1
dGVCdW5kbGVzKFdURk1vdmUoYnVuZGxlc1RvRm9yd2FyZCkpOwotfQotCi12b2lkIHdncHVSZW5k
ZXJQYXNzRW5jb2Rlckluc2VydERlYnVnTWFya2VyKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5k
ZXJQYXNzRW5jb2RlciwgY29uc3QgY2hhciogbWFya2VyTGFiZWwpCi17Ci0gICAgcmVuZGVyUGFz
c0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5pbnNlcnREZWJ1Z01hcmtlcihtYXJrZXJMYWJl
bCk7Ci19Ci0KLXZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyUG9wRGVidWdHcm91cChXR1BVUmVu
ZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIpCi17Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXItPnJlbmRlclBhc3NFbmNvZGVyLT5wb3BEZWJ1Z0dyb3VwKCk7Ci19Ci0KLXZvaWQgd2dwdVJl
bmRlclBhc3NFbmNvZGVyUHVzaERlYnVnR3JvdXAoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRl
clBhc3NFbmNvZGVyLCBjb25zdCBjaGFyKiBncm91cExhYmVsKQotewotICAgIHJlbmRlclBhc3NF
bmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+cHVzaERlYnVnR3JvdXAoZ3JvdXBMYWJlbCk7Ci19
Ci0KLXZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyU2V0QmluZEdyb3VwKFdHUFVSZW5kZXJQYXNz
RW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgdWludDMyX3QgZ3JvdXBJbmRleCwgV0dQVUJpbmRH
cm91cCBncm91cCwgdWludDMyX3QgZHluYW1pY09mZnNldENvdW50LCBjb25zdCB1aW50MzJfdCog
ZHluYW1pY09mZnNldHMpCi17Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNv
ZGVyLT5zZXRCaW5kR3JvdXAoZ3JvdXBJbmRleCwgZ3JvdXAtPmJpbmRHcm91cCwgZHluYW1pY09m
ZnNldENvdW50LCBkeW5hbWljT2Zmc2V0cyk7Ci19Ci0KLXZvaWQgd2dwdVJlbmRlclBhc3NFbmNv
ZGVyU2V0QmxlbmRDb25zdGFudChXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29k
ZXIsIGNvbnN0IFdHUFVDb2xvciogY29sb3IpCi17Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJl
bmRlclBhc3NFbmNvZGVyLT5zZXRCbGVuZENvbnN0YW50KGNvbG9yKTsKLX0KLQotdm9pZCB3Z3B1
UmVuZGVyUGFzc0VuY29kZXJTZXRJbmRleEJ1ZmZlcihXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVu
ZGVyUGFzc0VuY29kZXIsIFdHUFVCdWZmZXIgYnVmZmVyLCBXR1BVSW5kZXhGb3JtYXQgZm9ybWF0
LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCi17Ci0gICAgcmVuZGVyUGFzc0VuY29k
ZXItPnJlbmRlclBhc3NFbmNvZGVyLT5zZXRJbmRleEJ1ZmZlcihidWZmZXItPmJ1ZmZlciwgZm9y
bWF0LCBvZmZzZXQsIHNpemUpOwotfQotCi12b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFBp
cGVsaW5lKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgV0dQVVJlbmRl
clBpcGVsaW5lIHBpcGVsaW5lKQotewotICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNz
RW5jb2Rlci0+c2V0UGlwZWxpbmUocGlwZWxpbmUtPnJlbmRlclBpcGVsaW5lKTsKLX0KLQotdm9p
ZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRTY2lzc29yUmVjdChXR1BVUmVuZGVyUGFzc0VuY29k
ZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVpbnQzMl90IHgsIHVpbnQzMl90IHksIHVpbnQzMl90IHdp
ZHRoLCB1aW50MzJfdCBoZWlnaHQpCi17Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBh
c3NFbmNvZGVyLT5zZXRTY2lzc29yUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLX0KLQotdm9p
ZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRTdGVuY2lsUmVmZXJlbmNlKFdHUFVSZW5kZXJQYXNz
RW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgdWludDMyX3QgcmVmZXJlbmNlKQotewotICAgIHJl
bmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+c2V0U3RlbmNpbFJlZmVyZW5jZShy
ZWZlcmVuY2UpOwotfQotCi12b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldFZlcnRleEJ1ZmZl
cihXR1BVUmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIHVpbnQzMl90IHNsb3Qs
IFdHUFVCdWZmZXIgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUpCi17Ci0g
ICAgcmVuZGVyUGFzc0VuY29kZXItPnJlbmRlclBhc3NFbmNvZGVyLT5zZXRWZXJ0ZXhCdWZmZXIo
c2xvdCwgYnVmZmVyLT5idWZmZXIsIG9mZnNldCwgc2l6ZSk7Ci19Ci0KLXZvaWQgd2dwdVJlbmRl
clBhc3NFbmNvZGVyU2V0Vmlld3BvcnQoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NF
bmNvZGVyLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9h
dCBtaW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgpCi17Ci0gICAgcmVuZGVyUGFzc0VuY29kZXItPnJl
bmRlclBhc3NFbmNvZGVyLT5zZXRWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBtaW5EZXB0
aCwgbWF4RGVwdGgpOwotfQotCi12b2lkIHdncHVSZW5kZXJQYXNzRW5jb2RlcldyaXRlVGltZXN0
YW1wKFdHUFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5U2V0
IHF1ZXJ5U2V0LCB1aW50MzJfdCBxdWVyeUluZGV4KQotewotICAgIHJlbmRlclBhc3NFbmNvZGVy
LT5yZW5kZXJQYXNzRW5jb2Rlci0+d3JpdGVUaW1lc3RhbXAocXVlcnlTZXQtPnF1ZXJ5U2V0LCBx
dWVyeUluZGV4KTsKLX0KLQotdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJTZXRMYWJlbChXR1BV
UmVuZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIsIGNvbnN0IGNoYXIqIGxhYmVsKQot
ewotICAgIHJlbmRlclBhc3NFbmNvZGVyLT5yZW5kZXJQYXNzRW5jb2Rlci0+c2V0TGFiZWwobGFi
ZWwpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4OWRhNGMwNzhkNGMwYTZkNTkwMWMwOTE3MTIyZjYxMWU3MjQ3NzYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5jcHAKQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJQaXBlbGluZS5oIgorCisjaW5jbHVkZSAi
QmluZEdyb3VwTGF5b3V0LmgiCisjaW5jbHVkZSAiV2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBX
ZWJHUFUgeworCitSZW5kZXJQaXBlbGluZTo6UmVuZGVyUGlwZWxpbmUoKSA9IGRlZmF1bHQ7CisK
K1JlbmRlclBpcGVsaW5lOjp+UmVuZGVyUGlwZWxpbmUoKSA9IGRlZmF1bHQ7CisKK1JlZjxCaW5k
R3JvdXBMYXlvdXQ+IFJlbmRlclBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQodWludDMyX3Qg
Z3JvdXBJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ3JvdXBJbmRleCk7CisgICAgcmV0dXJu
IEJpbmRHcm91cExheW91dDo6Y3JlYXRlKCk7Cit9CisKK3ZvaWQgUmVuZGVyUGlwZWxpbmU6OnNl
dExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorCit2b2lkIHdncHVSZW5kZXJQaXBlbGluZVJlbGVh
c2UoV0dQVVJlbmRlclBpcGVsaW5lIHJlbmRlclBpcGVsaW5lKQoreworICAgIGRlbGV0ZSByZW5k
ZXJQaXBlbGluZTsKK30KKworV0dQVUJpbmRHcm91cExheW91dCB3Z3B1UmVuZGVyUGlwZWxpbmVH
ZXRCaW5kR3JvdXBMYXlvdXQoV0dQVVJlbmRlclBpcGVsaW5lIHJlbmRlclBpcGVsaW5lLCB1aW50
MzJfdCBncm91cEluZGV4KQoreworICAgIHJldHVybiBuZXcgV0dQVUJpbmRHcm91cExheW91dElt
cGwgeyByZW5kZXJQaXBlbGluZS0+cmVuZGVyUGlwZWxpbmUtPmdldEJpbmRHcm91cExheW91dChn
cm91cEluZGV4KSB9OworfQorCit2b2lkIHdncHVSZW5kZXJQaXBlbGluZVNldExhYmVsKFdHUFVS
ZW5kZXJQaXBlbGluZSByZW5kZXJQaXBlbGluZSwgY29uc3QgY2hhciogbGFiZWwpCit7CisgICAg
cmVuZGVyUGlwZWxpbmUtPnJlbmRlclBpcGVsaW5lLT5zZXRMYWJlbChsYWJlbCk7Cit9CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5oCmluZGV4IGNkYWM5MDFhNmMzYjFmMGJhNTdh
MDJlMGE1MGQxYTY2YTk1YzRiZTMuLjhmMTcxZGJlZjc0NTdhYTllNGE2ODJlMTNmZGNmNjM1MDVj
Y2MxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLmgK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUuaApAQCAtMjUsMTAgKzI1
LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW1wb3J0ICJXZWJHUFUuaCIKLSNpbXBvcnQgPHd0
Zi9GYXN0TWFsbG9jLmg+Ci0jaW1wb3J0IDx3dGYvUmVmLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgIldlYkdQVS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJHUFUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5k
ZXJQaXBlbGluZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzY1MDNhYWEyYTY2ZWQ2ODVkNzk1N2Y0MDdj
OTM0ZmMyZmM4MThmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUmVuZGVyUGlwZWxpbmUuaCIKLQot
I2ltcG9ydCAiQmluZEdyb3VwTGF5b3V0LmgiCi0jaW1wb3J0ICJXZWJHUFVFeHQuaCIKLQotbmFt
ZXNwYWNlIFdlYkdQVSB7Ci0KLVJlbmRlclBpcGVsaW5lOjpSZW5kZXJQaXBlbGluZSgpID0gZGVm
YXVsdDsKLQotUmVuZGVyUGlwZWxpbmU6On5SZW5kZXJQaXBlbGluZSgpID0gZGVmYXVsdDsKLQot
UmVmPEJpbmRHcm91cExheW91dD4gUmVuZGVyUGlwZWxpbmU6OmdldEJpbmRHcm91cExheW91dCh1
aW50MzJfdCBncm91cEluZGV4KQotewotICAgIFVOVVNFRF9QQVJBTShncm91cEluZGV4KTsKLSAg
ICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoKTsKLX0KLQotdm9pZCBSZW5kZXJQaXBl
bGluZTo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxh
YmVsKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViR1BVCi0KLXZvaWQgd2dwdVJlbmRlclBpcGVs
aW5lUmVsZWFzZShXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxpbmUpCi17Ci0gICAgZGVs
ZXRlIHJlbmRlclBpcGVsaW5lOwotfQotCi1XR1BVQmluZEdyb3VwTGF5b3V0IHdncHVSZW5kZXJQ
aXBlbGluZUdldEJpbmRHcm91cExheW91dChXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVyUGlwZWxp
bmUsIHVpbnQzMl90IGdyb3VwSW5kZXgpCi17Ci0gICAgcmV0dXJuIG5ldyBXR1BVQmluZEdyb3Vw
TGF5b3V0SW1wbCB7IHJlbmRlclBpcGVsaW5lLT5yZW5kZXJQaXBlbGluZS0+Z2V0QmluZEdyb3Vw
TGF5b3V0KGdyb3VwSW5kZXgpIH07Ci19Ci0KLXZvaWQgd2dwdVJlbmRlclBpcGVsaW5lU2V0TGFi
ZWwoV0dQVVJlbmRlclBpcGVsaW5lIHJlbmRlclBpcGVsaW5lLCBjb25zdCBjaGFyKiBsYWJlbCkK
LXsKLSAgICByZW5kZXJQaXBlbGluZS0+cmVuZGVyUGlwZWxpbmUtPnNldExhYmVsKGxhYmVsKTsK
LX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzcxZWE0ZmY3Nzc3ZjIy
ZTk2YWU2YTQyMGJmZDUyNTNkZGMxNjc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvU2FtcGxlci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTYW1wbGVyLmgiCisKKyNpbmNsdWRlICJXZWJHUFVFeHQuaCIKKworbmFtZXNwYWNlIFdlYkdQ
VSB7CisKK1NhbXBsZXI6OlNhbXBsZXIoKSA9IGRlZmF1bHQ7CisKK1NhbXBsZXI6On5TYW1wbGVy
KCkgPSBkZWZhdWx0OworCit2b2lkIFNhbXBsZXI6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVs
KQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Cit9CisKK30KKwordm9pZCB3Z3B1U2FtcGxl
clJlbGVhc2UoV0dQVVNhbXBsZXIgc2FtcGxlcikKK3sKKyAgICBkZWxldGUgc2FtcGxlcjsKK30K
Kwordm9pZCB3Z3B1U2FtcGxlclNldExhYmVsKFdHUFVTYW1wbGVyIHNhbXBsZXIsIGNvbnN0IGNo
YXIqIGxhYmVsKQoreworICAgIHNhbXBsZXItPnNhbXBsZXItPnNldExhYmVsKGxhYmVsKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIuaCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1NhbXBsZXIuaAppbmRleCAxYjczNjVkZThiODE2ZWQ0NThlYjkwY2VhMmFlODY0
YjdhZmY4MDYyLi45MzVhMjE4MmRlZTUxMzAxZjdmY2RlZmQzODdhMDgyODU2N2UyMWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvU2FtcGxlci5oCkBAIC0yNSwxMCArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbXBvcnQgIldlYkdQVS5oIgotI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbXBvcnQg
PHd0Zi9SZWYuaD4KLSNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiV2ViR1BV
LmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9TYW1wbGVyLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTE2YTIyMjY2
NmRkYTNmNTdjYzNkMTlkMzYwNTA5MjI1NzA3Nzc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0KKysr
IC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJTYW1wbGVyLmgi
Ci0KLSNpbXBvcnQgIldlYkdQVUV4dC5oIgotCi1uYW1lc3BhY2UgV2ViR1BVIHsKLQotU2FtcGxl
cjo6U2FtcGxlcigpID0gZGVmYXVsdDsKLQotU2FtcGxlcjo6flNhbXBsZXIoKSA9IGRlZmF1bHQ7
Ci0KLXZvaWQgU2FtcGxlcjo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKGxhYmVsKTsKLX0KLQotfQotCi12b2lkIHdncHVTYW1wbGVyUmVsZWFzZShXR1BV
U2FtcGxlciBzYW1wbGVyKQotewotICAgIGRlbGV0ZSBzYW1wbGVyOwotfQotCi12b2lkIHdncHVT
YW1wbGVyU2V0TGFiZWwoV0dQVVNhbXBsZXIgc2FtcGxlciwgY29uc3QgY2hhciogbGFiZWwpCi17
Ci0gICAgc2FtcGxlci0+c2FtcGxlci0+c2V0TGFiZWwobGFiZWwpOwotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1NoYWRlck1vZHVsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA4YTk5NTUwM2UzN2YzN2E3ODZlM2Qw
ZGRiMmVhODNjMmNmY2FhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1NoYWRlck1vZHVsZS5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
aGFkZXJNb2R1bGUuaCIKKworI2luY2x1ZGUgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2Vi
R1BVIHsKKworU2hhZGVyTW9kdWxlOjpTaGFkZXJNb2R1bGUoKSA9IGRlZmF1bHQ7CisKK1NoYWRl
ck1vZHVsZTo6flNoYWRlck1vZHVsZSgpID0gZGVmYXVsdDsKKwordm9pZCBTaGFkZXJNb2R1bGU6
OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorCit2b2lkIHdncHVTaGFkZXJNb2R1bGVSZWxl
YXNlKFdHUFVTaGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlKQoreworICAgIGRlbGV0ZSBzaGFkZXJN
b2R1bGU7Cit9CisKK3ZvaWQgd2dwdVNoYWRlck1vZHVsZVNldExhYmVsKFdHUFVTaGFkZXJNb2R1
bGUgc2hhZGVyTW9kdWxlLCBjb25zdCBjaGFyKiBsYWJlbCkKK3sKKyAgICBzaGFkZXJNb2R1bGUt
PnNoYWRlck1vZHVsZS0+c2V0TGFiZWwobGFiZWwpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRl
ck1vZHVsZS5oCmluZGV4IGNjZDk1ZTA1MzAzMDc1MmFhZjdiNWY3NmE5ZWZiNDQzZWRjNTU4M2Mu
LjFhMjkyNWE0YjI2ZDYxODNlMTczZjJmMjNjMmJkOTUyZjY2ODkxMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1NoYWRlck1vZHVsZS5oCkBAIC0yNSwxMCArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbXBvcnQgIldlYkdQVS5oIgotI2ltcG9ydCA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbXBvcnQg
PHd0Zi9SZWYuaD4KLSNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiV2ViR1BV
LmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbSBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTU0ZGNmMTQ2YzIzMGYxMjZkMGJjODU2MmQxYTg2NTNjYTRkMjJjYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFk
ZXJNb2R1bGUubW0KKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJTaGFkZXJNb2R1bGUuaCIKLQotI2ltcG9ydCAiV2ViR1BVRXh0LmgiCi0KLW5hbWVzcGFj
ZSBXZWJHUFUgewotCi1TaGFkZXJNb2R1bGU6OlNoYWRlck1vZHVsZSgpID0gZGVmYXVsdDsKLQot
U2hhZGVyTW9kdWxlOjp+U2hhZGVyTW9kdWxlKCkgPSBkZWZhdWx0OwotCi12b2lkIFNoYWRlck1v
ZHVsZTo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxh
YmVsKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViR1BVCi0KLXZvaWQgd2dwdVNoYWRlck1vZHVs
ZVJlbGVhc2UoV0dQVVNoYWRlck1vZHVsZSBzaGFkZXJNb2R1bGUpCi17Ci0gICAgZGVsZXRlIHNo
YWRlck1vZHVsZTsKLX0KLQotdm9pZCB3Z3B1U2hhZGVyTW9kdWxlU2V0TGFiZWwoV0dQVVNoYWRl
ck1vZHVsZSBzaGFkZXJNb2R1bGUsIGNvbnN0IGNoYXIqIGxhYmVsKQotewotICAgIHNoYWRlck1v
ZHVsZS0+c2hhZGVyTW9kdWxlLT5zZXRMYWJlbChsYWJlbCk7Ci19Ci0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1N1cmZhY2UuY3BwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU3Vy
ZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY1ZjA3NjNkYmE5N2RiNDE0ODczOTMxZjE0YmJhYzAxMTdh
NDdjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N1cmZhY2UuY3Bw
CkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3VyZmFjZS5oIgorCisjaW5j
bHVkZSAiQWRhcHRlci5oIgorI2luY2x1ZGUgIldlYkdQVUV4dC5oIgorCituYW1lc3BhY2UgV2Vi
R1BVIHsKKworU3VyZmFjZTo6U3VyZmFjZSgpID0gZGVmYXVsdDsKKworU3VyZmFjZTo6flN1cmZh
Y2UoKSA9IGRlZmF1bHQ7CisKK1dHUFVUZXh0dXJlRm9ybWF0IFN1cmZhY2U6OmdldFByZWZlcnJl
ZEZvcm1hdChjb25zdCBBZGFwdGVyJiBhZGFwdGVyKQoreworICAgIFVOVVNFRF9QQVJBTShhZGFw
dGVyKTsKKyAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfVW5kZWZpbmVkOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1U3VyZmFjZVJlbGVhc2UoV0dQVVN1cmZhY2Ug
c3VyZmFjZSkKK3sKKyAgICBkZWxldGUgc3VyZmFjZTsKK30KKworV0dQVVRleHR1cmVGb3JtYXQg
d2dwdVN1cmZhY2VHZXRQcmVmZXJyZWRGb3JtYXQoV0dQVVN1cmZhY2Ugc3VyZmFjZSwgV0dQVUFk
YXB0ZXIgYWRhcHRlcikKK3sKKyAgICByZXR1cm4gc3VyZmFjZS0+c3VyZmFjZS0+Z2V0UHJlZmVy
cmVkRm9ybWF0KGFkYXB0ZXItPmFkYXB0ZXIpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9TdXJmYWNlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLmgKaW5k
ZXggYzU5ZjhhOGJlNzg0NTkwOTM3YTU0ZjVhMjIwZjMzZWRhMDgzMGZjZi4uOGM5NTY2MTIzZDE5
OTNhNDBmODQ5NmUxZDA2ZjBlMTBlNmJkY2I2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N1cmZhY2UuaApAQCAt
MjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW1wb3J0ICJXZWJHUFUuaCIKLSNp
bXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW1wb3J0IDx3dGYvUmVmLmg+Ci0jaW1wb3J0IDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIldlYkdQVS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU3VyZmFjZS5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTlmOWNmNjAwZThiYjIwN2JhMmYzNDk1MjNjYzY5OGJm
ZDcwMzMxYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiU3VyZmFjZS5oIgotCi0jaW1wb3J0ICJBZGFwdGVyLmgi
Ci0jaW1wb3J0ICJXZWJHUFVFeHQuaCIKLQotbmFtZXNwYWNlIFdlYkdQVSB7Ci0KLVN1cmZhY2U6
OlN1cmZhY2UoKSA9IGRlZmF1bHQ7Ci0KLVN1cmZhY2U6On5TdXJmYWNlKCkgPSBkZWZhdWx0Owot
Ci1XR1BVVGV4dHVyZUZvcm1hdCBTdXJmYWNlOjpnZXRQcmVmZXJyZWRGb3JtYXQoY29uc3QgQWRh
cHRlciYgYWRhcHRlcikKLXsKLSAgICBVTlVTRURfUEFSQU0oYWRhcHRlcik7Ci0gICAgcmV0dXJu
IFdHUFVUZXh0dXJlRm9ybWF0X1VuZGVmaW5lZDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViR1BV
Ci0KLXZvaWQgd2dwdVN1cmZhY2VSZWxlYXNlKFdHUFVTdXJmYWNlIHN1cmZhY2UpCi17Ci0gICAg
ZGVsZXRlIHN1cmZhY2U7Ci19Ci0KLVdHUFVUZXh0dXJlRm9ybWF0IHdncHVTdXJmYWNlR2V0UHJl
ZmVycmVkRm9ybWF0KFdHUFVTdXJmYWNlIHN1cmZhY2UsIFdHUFVBZGFwdGVyIGFkYXB0ZXIpCi17
Ci0gICAgcmV0dXJuIHN1cmZhY2UtPnN1cmZhY2UtPmdldFByZWZlcnJlZEZvcm1hdChhZGFwdGVy
LT5hZGFwdGVyKTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENo
YWluLmNwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzJhMWU0ZmIwNzg5YTZkYjMzMDgzOGJmY2I3MjBjNDE5NDIxYjg1NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5jcHAKQEAgLTAsMCArMSw2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJTd2FwQ2hhaW4uaCIKKworI2luY2x1ZGUgIlRleHR1cmVWaWV3
LmgiCisjaW5jbHVkZSAiV2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBXZWJHUFUgeworCitTd2Fw
Q2hhaW46OlN3YXBDaGFpbigpID0gZGVmYXVsdDsKKworU3dhcENoYWluOjp+U3dhcENoYWluKCkg
PSBkZWZhdWx0OworCitSZWY8VGV4dHVyZVZpZXc+IFN3YXBDaGFpbjo6Z2V0Q3VycmVudFRleHR1
cmVWaWV3KCkKK3sKKyAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZSgpOworfQorCit2b2lk
IFN3YXBDaGFpbjo6cHJlc2VudCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkdQVQorCit2
b2lkIHdncHVTd2FwQ2hhaW5SZWxlYXNlKFdHUFVTd2FwQ2hhaW4gc3dhcENoYWluKQoreworICAg
IGRlbGV0ZSBzd2FwQ2hhaW47Cit9CisKK1dHUFVUZXh0dXJlVmlldyB3Z3B1U3dhcENoYWluR2V0
Q3VycmVudFRleHR1cmVWaWV3KFdHUFVTd2FwQ2hhaW4gc3dhcENoYWluKQoreworICAgIHJldHVy
biBuZXcgV0dQVVRleHR1cmVWaWV3SW1wbCB7IHN3YXBDaGFpbi0+c3dhcENoYWluLT5nZXRDdXJy
ZW50VGV4dHVyZVZpZXcoKSB9OworfQorCit2b2lkIHdncHVTd2FwQ2hhaW5QcmVzZW50KFdHUFVT
d2FwQ2hhaW4gc3dhcENoYWluKQoreworICAgIHN3YXBDaGFpbi0+c3dhcENoYWluLT5wcmVzZW50
KCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5oIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLmgKaW5kZXggOGQ4M2RhMDViOWNjYjdiMGU5
NDdmZDU3MjYxYjYzY2RiYmE5MGI2Mi4uN2UxNjNlMWMyYzI0YWE5MDhlMzUzNTYwZTBiMDUxZjQx
NTA4MTBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLmgKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLmgKQEAgLTI1LDEwICsyNSwxMCBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2ltcG9ydCAiV2ViR1BVLmgiCi0jaW1wb3J0IDx3dGYvRmFzdE1h
bGxvYy5oPgotI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlICJXZWJHUFUuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLm1t
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5ZmNmOGQ1YTkyZWE5MjRmMWUzZDU5Y2ZmZGNlYzY3MGJhOGEwYTUxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1N3YXBDaGFpbi5tbQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIlN3YXBDaGFpbi5oIgotCi0jaW1wb3J0ICJUZXh0dXJlVmlldy5oIgotI2lt
cG9ydCAiV2ViR1BVRXh0LmgiCi0KLW5hbWVzcGFjZSBXZWJHUFUgewotCi1Td2FwQ2hhaW46OlN3
YXBDaGFpbigpID0gZGVmYXVsdDsKLQotU3dhcENoYWluOjp+U3dhcENoYWluKCkgPSBkZWZhdWx0
OwotCi1SZWY8VGV4dHVyZVZpZXc+IFN3YXBDaGFpbjo6Z2V0Q3VycmVudFRleHR1cmVWaWV3KCkK
LXsKLSAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZSgpOwotfQotCi12b2lkIFN3YXBDaGFp
bjo6cHJlc2VudCgpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkdQVQotCi12b2lkIHdncHVT
d2FwQ2hhaW5SZWxlYXNlKFdHUFVTd2FwQ2hhaW4gc3dhcENoYWluKQotewotICAgIGRlbGV0ZSBz
d2FwQ2hhaW47Ci19Ci0KLVdHUFVUZXh0dXJlVmlldyB3Z3B1U3dhcENoYWluR2V0Q3VycmVudFRl
eHR1cmVWaWV3KFdHUFVTd2FwQ2hhaW4gc3dhcENoYWluKQotewotICAgIHJldHVybiBuZXcgV0dQ
VVRleHR1cmVWaWV3SW1wbCB7IHN3YXBDaGFpbi0+c3dhcENoYWluLT5nZXRDdXJyZW50VGV4dHVy
ZVZpZXcoKSB9OwotfQotCi12b2lkIHdncHVTd2FwQ2hhaW5QcmVzZW50KFdHUFVTd2FwQ2hhaW4g
c3dhcENoYWluKQotewotICAgIHN3YXBDaGFpbi0+c3dhcENoYWluLT5wcmVzZW50KCk7Ci19Ci0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuY3BwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvVGV4dHVyZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdhMzdiNDE1Mjc1ODdlNzBiNzdm
NGNmN2JlOWY2MTJhMTc3NzY2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1RleHR1cmUuY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4
dHVyZS5oIgorCisjaW5jbHVkZSAiVGV4dHVyZVZpZXcuaCIKKyNpbmNsdWRlICJXZWJHUFVFeHQu
aCIKKworbmFtZXNwYWNlIFdlYkdQVSB7CisKK1RleHR1cmU6OlRleHR1cmUoKSA9IGRlZmF1bHQ7
CisKK1RleHR1cmU6On5UZXh0dXJlKCkgPSBkZWZhdWx0OworCitSZWY8VGV4dHVyZVZpZXc+IFRl
eHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciogZGVzY3Jp
cHRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIFRleHR1
cmVWaWV3OjpjcmVhdGUoKTsKK30KKwordm9pZCBUZXh0dXJlOjpkZXN0cm95KCkKK3sKK30KKwor
dm9pZCBUZXh0dXJlOjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkKK3sKKyAgICBVTlVTRURf
UEFSQU0obGFiZWwpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJHUFUKKwordm9pZCB3Z3B1VGV4
dHVyZVJlbGVhc2UoV0dQVVRleHR1cmUgdGV4dHVyZSkKK3sKKyAgICBkZWxldGUgdGV4dHVyZTsK
K30KKworV0dQVVRleHR1cmVWaWV3IHdncHVUZXh0dXJlQ3JlYXRlVmlldyhXR1BVVGV4dHVyZSB0
ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorewor
ICAgIHJldHVybiBuZXcgV0dQVVRleHR1cmVWaWV3SW1wbCB7IHRleHR1cmUtPnRleHR1cmUtPmNy
ZWF0ZVZpZXcoZGVzY3JpcHRvcikgfTsKK30KKwordm9pZCB3Z3B1VGV4dHVyZURlc3Ryb3koV0dQ
VVRleHR1cmUgdGV4dHVyZSkKK3sKKyAgICB0ZXh0dXJlLT50ZXh0dXJlLT5kZXN0cm95KCk7Cit9
CisKK3ZvaWQgd2dwdVRleHR1cmVTZXRMYWJlbChXR1BVVGV4dHVyZSB0ZXh0dXJlLCBjb25zdCBj
aGFyKiBsYWJlbCkKK3sKKyAgICB0ZXh0dXJlLT50ZXh0dXJlLT5zZXRMYWJlbChsYWJlbCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmggYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9UZXh0dXJlLmgKaW5kZXggYTIyYjgyMzc3NTFhMDE4ZjczZjVkM2VlYTZkZWZj
ZGEyMTY1MGI2NC4uNzU5YzU4Y2ZjMzZmZTVmNDRhYzA5MDdkNGY0OGQwZmIzNzE0MzQ4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1RleHR1cmUuaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW1wb3J0ICJXZWJHUFUuaCIKLSNpbXBvcnQgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW1wb3J0
IDx3dGYvUmVmLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIldlYkdQ
VS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvVGV4dHVyZS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ1NzMxNmE1
Y2RjNzMzOGI0NDNhYTQzZDg3ZjRmNWEyZDFhZmMyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiVGV4dHVyZS5o
IgotCi0jaW1wb3J0ICJUZXh0dXJlVmlldy5oIgotI2ltcG9ydCAiV2ViR1BVRXh0LmgiCi0KLW5h
bWVzcGFjZSBXZWJHUFUgewotCi1UZXh0dXJlOjpUZXh0dXJlKCkgPSBkZWZhdWx0OwotCi1UZXh0
dXJlOjp+VGV4dHVyZSgpID0gZGVmYXVsdDsKLQotUmVmPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpj
cmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17
Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBUZXh0dXJlVmlldzo6
Y3JlYXRlKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZTo6ZGVzdHJveSgpCi17Ci19Ci0KLXZvaWQgVGV4
dHVyZTo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxh
YmVsKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViR1BVCi0KLXZvaWQgd2dwdVRleHR1cmVSZWxl
YXNlKFdHUFVUZXh0dXJlIHRleHR1cmUpCi17Ci0gICAgZGVsZXRlIHRleHR1cmU7Ci19Ci0KLVdH
UFVUZXh0dXJlVmlldyB3Z3B1VGV4dHVyZUNyZWF0ZVZpZXcoV0dQVVRleHR1cmUgdGV4dHVyZSwg
Y29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciogZGVzY3JpcHRvcikKLXsKLSAgICByZXR1
cm4gbmV3IFdHUFVUZXh0dXJlVmlld0ltcGwgeyB0ZXh0dXJlLT50ZXh0dXJlLT5jcmVhdGVWaWV3
KGRlc2NyaXB0b3IpIH07Ci19Ci0KLXZvaWQgd2dwdVRleHR1cmVEZXN0cm95KFdHUFVUZXh0dXJl
IHRleHR1cmUpCi17Ci0gICAgdGV4dHVyZS0+dGV4dHVyZS0+ZGVzdHJveSgpOwotfQotCi12b2lk
IHdncHVUZXh0dXJlU2V0TGFiZWwoV0dQVVRleHR1cmUgdGV4dHVyZSwgY29uc3QgY2hhciogbGFi
ZWwpCi17Ci0gICAgdGV4dHVyZS0+dGV4dHVyZS0+c2V0TGFiZWwobGFiZWwpOwotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuY3BwIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZVZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3ZmIyMmNlNTcwMjMwMDg4YmU1
YmE4NzZjNWM1OTM5OGVkMWFiYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9UZXh0dXJlVmlldy5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJUZXh0dXJlVmlldy5oIgorCisjaW5jbHVkZSAiV2ViR1BVRXh0LmgiCisKK25hbWVzcGFjZSBX
ZWJHUFUgeworCitUZXh0dXJlVmlldzo6VGV4dHVyZVZpZXcoKSA9IGRlZmF1bHQ7CisKK1RleHR1
cmVWaWV3Ojp+VGV4dHVyZVZpZXcoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgVGV4dHVyZVZpZXc6OnNl
dExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQoreworICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Cit9
CisKK30KKwordm9pZCB3Z3B1VGV4dHVyZVZpZXdSZWxlYXNlKFdHUFVUZXh0dXJlVmlldyB0ZXh0
dXJlVmlldykKK3sKKyAgICBVTlVTRURfUEFSQU0odGV4dHVyZVZpZXcpOworfQorCit2b2lkIHdn
cHVUZXh0dXJlVmlld1NldExhYmVsKFdHUFVUZXh0dXJlVmlldyB0ZXh0dXJlVmlldywgY29uc3Qg
Y2hhciogbGFiZWwpCit7CisgICAgdGV4dHVyZVZpZXctPnRleHR1cmVWaWV3LT5zZXRMYWJlbChs
YWJlbCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5o
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaAppbmRleCBiOWM2MmQ5ZmI5OWY2
MjEzZTY2MmZlNzUxYzQ0MGJlOWRiYWM2YjhlLi5hZWI4Y2EwOTlkMDdiNjgyMTIxN2UxNTFhMTQ4
NjcwN2RiNjNhMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3LmgKQEAgLTI1LDEwICsy
NSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2ltcG9ydCAiV2ViR1BVLmgiCi0jaW1wb3J0IDx3
dGYvRmFzdE1hbGxvYy5oPgotI2ltcG9ydCA8d3RmL1JlZi5oPgotI2ltcG9ydCA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlICJXZWJHUFUuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBu
YW1lc3BhY2UgV2ViR1BVIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4
dHVyZVZpZXcubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I3YmMxZmRhYjVkOWNkNGVjMWY5Mjg4ZjcxOGJhNDhl
NmJmYzIwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDUy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlRleHR1cmVWaWV3LmgiCi0KLSNpbXBvcnQgIldl
YkdQVUV4dC5oIgotCi1uYW1lc3BhY2UgV2ViR1BVIHsKLQotVGV4dHVyZVZpZXc6OlRleHR1cmVW
aWV3KCkgPSBkZWZhdWx0OwotCi1UZXh0dXJlVmlldzo6flRleHR1cmVWaWV3KCkgPSBkZWZhdWx0
OwotCi12b2lkIFRleHR1cmVWaWV3OjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkKLXsKLSAg
ICBVTlVTRURfUEFSQU0obGFiZWwpOwotfQotCi19Ci0KLXZvaWQgd2dwdVRleHR1cmVWaWV3UmVs
ZWFzZShXR1BVVGV4dHVyZVZpZXcgdGV4dHVyZVZpZXcpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRl
eHR1cmVWaWV3KTsKLX0KLQotdm9pZCB3Z3B1VGV4dHVyZVZpZXdTZXRMYWJlbChXR1BVVGV4dHVy
ZVZpZXcgdGV4dHVyZVZpZXcsIGNvbnN0IGNoYXIqIGxhYmVsKQotewotICAgIHRleHR1cmVWaWV3
LT50ZXh0dXJlVmlldy0+c2V0TGFiZWwobGFiZWwpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvV2ViR1BVLm1vZHVsZW1hcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1dlYkdQ
VS5tb2R1bGVtYXAKaW5kZXggMjVhNTVhZDBlNTk0MDUxYWM0YjNmN2IwMjQyZmExMzg5ZTIxMmRi
ZS4uYzExNjAzOTg1ZGQxOWFjOGFlYzlhOWE3YjE3YTUzZTNmOWNiYmE0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvV2ViR1BVLm1vZHVsZW1hcAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9XZWJHUFUubW9kdWxlbWFwCkBAIC0xLDUgKzEsNSBAQAogZnJhbWV3b3JrIG1vZHVs
ZSBXZWJHUFUgW2V4dGVybl9jXSB7Ci0gIGhlYWRlciAiV2ViR1BVLmgiCisgIHVtYnJlbGxhIGhl
YWRlciAiV2ViR1BVLmgiCiAgIGhlYWRlciAiV2ViR1BVRXh0LmgiCiAgIGV4cG9ydCAqCiAgIG1v
ZHVsZSAqIHsgZXhwb3J0ICogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDgyNTJlOWIx
NjY0ZDliZDg2MTIxNDRlNWJiMGM0YWU2NmUyODU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAKQEAgLTAs
MCArMSw0NSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gRm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIw
LTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0FycmF5LmhwcCIKKyNpbmNsdWRlICJO
U0F1dG9yZWxlYXNlUG9vbC5ocHAiCisjaW5jbHVkZSAiTlNCdW5kbGUuaHBwIgorI2luY2x1ZGUg
Ik5TRGF0YS5ocHAiCisjaW5jbHVkZSAiTlNEYXRlLmhwcCIKKyNpbmNsdWRlICJOU0RlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk5TRGljdGlvbmFyeS5ocHAiCisjaW5jbHVkZSAiTlNFbnVtZXJhdG9y
LmhwcCIKKyNpbmNsdWRlICJOU0Vycm9yLmhwcCIKKyNpbmNsdWRlICJOU0xvY2suaHBwIgorI2lu
Y2x1ZGUgIk5TTm90aWZpY2F0aW9uLmhwcCIKKyNpbmNsdWRlICJOU051bWJlci5ocHAiCisjaW5j
bHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAi
TlNQcm9jZXNzSW5mby5ocHAiCisjaW5jbHVkZSAiTlNSYW5nZS5ocHAiCisjaW5jbHVkZSAiTlNT
dHJpbmcuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorI2luY2x1ZGUgIk5TVVJMLmhwcCIK
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0FycmF5Lmhw
cCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXJyYXkuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg3MzBkZjk5NDk2N2FmMjNmMjhkNWM3NDVmZGE0Y2FkOTcyMDQwYjgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU0FycmF5LmhwcApAQCAtMCwwICsxLDExNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0FycmF5LmhwcAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU09iamVj
dC5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIEFycmF5IDog
cHVibGljIENvcHlpbmc8QXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIEFycmF5KiBhcnJh
eSgpOworICAgIHN0YXRpYyBBcnJheSogYXJyYXkoY29uc3QgT2JqZWN0KiBwT2JqZWN0KTsKKyAg
ICBzdGF0aWMgQXJyYXkqIGFycmF5KGNvbnN0IE9iamVjdCogY29uc3QqIHBPYmplY3RzLCBVSW50
ZWdlciBjb3VudCk7CisKKyAgICBzdGF0aWMgQXJyYXkqIGFsbG9jKCk7CisKKyAgICBBcnJheSog
ICAgICAgIGluaXQoKTsKKyAgICBBcnJheSogICAgICAgIGluaXQoY29uc3QgT2JqZWN0KiBjb25z
dCogcE9iamVjdHMsIFVJbnRlZ2VyIGNvdW50KTsKKyAgICBBcnJheSogICAgICAgIGluaXQoY29u
c3QgY2xhc3MgQ29kZXIqIHBDb2Rlcik7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdCA9
IE9iamVjdD4KKyAgICBfT2JqZWN0KiBvYmplY3QoVUludGVnZXIgaW5kZXgpIGNvbnN0OworICAg
IFVJbnRlZ2VyIGNvdW50KCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpBcnJh
eTo6YXJyYXkoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4oX05T
X1BSSVZBVEVfQ0xTKE5TQXJyYXkpLCBfTlNfUFJJVkFURV9TRUwoYXJyYXkpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OkFycmF5KiBOUzo6QXJyYXk6OmFycmF5KGNvbnN0IE9iamVjdCogcE9iamVjdCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KF9OU19QUklWQVRFX0NMUyhOU0Fy
cmF5KSwgX05TX1BSSVZBVEVfU0VMKGFycmF5V2l0aE9iamVjdF8pLCBwT2JqZWN0KTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkFycmF5KiBOUzo6QXJyYXk6OmFycmF5KGNvbnN0IE9iamVjdCogY29uc3QqIHBPYmpl
Y3RzLCBVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxB
cnJheSo+KF9OU19QUklWQVRFX0NMUyhOU0FycmF5KSwgX05TX1BSSVZBVEVfU0VMKGFycmF5V2l0
aE9iamVjdHNfY291bnRfKSwgcE9iamVjdHMsIGNvdW50KTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBO
Uzo6QXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8QXJyYXk+
KF9OU19QUklWQVRFX0NMUyhOU0FycmF5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxBcnJheT4oKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkFycmF5KiBOUzo6QXJyYXk6OmluaXQoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVj
dHMsIFVJbnRlZ2VyIGNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFy
cmF5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoT2JqZWN0c19jb3VudF8pLCBwT2Jq
ZWN0cywgY291bnQpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpBcnJheTo6aW5pdChjb25zdCBj
bGFzcyBDb2RlciogcENvZGVyKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFy
cmF5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQ29kZXJfKSwgcENvZGVyKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpBcnJheTo6Y291bnQoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY291
bnQpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK3RlbXBsYXRlIDxjbGFzcyBfT2JqZWN0PgorX05TX0lOTElORSBfT2JqZWN0KiBOUzo6QXJy
YXk6Om9iamVjdChVSW50ZWdlciBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxfT2JqZWN0Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhf
KSwgaW5kZXgpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0
aW9uL05TQXV0b3JlbGVhc2VQb29sLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TQXV0b3JlbGVhc2VQb29sLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjM4M2E1NWZl
MDYyYmUyNWFjODUwOGZkZDZiNDk1ZTMyYjhkZjhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNBdXRvcmVsZWFzZVBvb2wuaHBw
CkBAIC0wLDAgKzEsODMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNBdXRvcmVsZWFzZVBvb2wuaHBwCisvLworLy8g
Q29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5o
cHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisj
aW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIEF1dG9yZWxlYXNlUG9vbCA6
IHB1YmxpYyBPYmplY3QKK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgQXV0b3JlbGVhc2VQb29sKiBh
bGxvYygpOworICAgIEF1dG9yZWxlYXNlUG9vbCogICAgICAgIGluaXQoKTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgIGRyYWluKCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICBhZGRPYmplY3QoT2JqZWN0KiBwT2JqZWN0KTsKKworICAgIHN0YXRpYyB2b2lkICAgICAgICAg
ICAgIHNob3dQb29scygpOworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkF1dG9yZWxlYXNlUG9vbCogTlM6OkF1
dG9yZWxlYXNlUG9vbDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxB
dXRvcmVsZWFzZVBvb2w+KF9OU19QUklWQVRFX0NMUyhOU0F1dG9yZWxlYXNlUG9vbCkpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6QXV0b3JlbGVhc2VQb29sKiBOUzo6QXV0b3JlbGVhc2VQb29sOjppbml0KCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxBdXRvcmVsZWFzZVBvb2w+KCk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IHZvaWQgTlM6OkF1dG9yZWxlYXNlUG9vbDo6ZHJhaW4oKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGRyYWluKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQg
TlM6OkF1dG9yZWxlYXNlUG9vbDo6YWRkT2JqZWN0KE9iamVjdCogcE9iamVjdCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhZGRPYmplY3Rf
KSwgcE9iamVjdCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkF1dG9yZWxlYXNlUG9vbDo6c2hvd1Bvb2xz
KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KF9OU19QUklWQVRFX0NMUyhOU0F1
dG9yZWxlYXNlUG9vbCksIF9OU19QUklWQVRFX1NFTChzaG93UG9vbHMpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0J1bmRsZS5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0J1bmRsZS5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzc4Yjc4YWQ5NTEzMDU3N2IzOTlmYjRkOWY5OGYwZDkyY2ExOGM1MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQnVu
ZGxlLmhwcApAQCAtMCwwICsxLDM3NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0J1bmRsZS5ocHAKKy8vCisvLyBD
b3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhw
cCIKKyNpbmNsdWRlICJOU05vdGlmaWNhdGlvbi5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBw
IgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitjbGFzcyBVUkw7CisKK19OU19D
T05TVChOb3RpZmljYXRpb25OYW1lLCBCdW5kbGVEaWRMb2FkTm90aWZpY2F0aW9uKTsKK19OU19D
T05TVChOb3RpZmljYXRpb25OYW1lLCBCdW5kbGVSZXNvdXJjZVJlcXVlc3RMb3dEaXNrU3BhY2VO
b3RpZmljYXRpb24pOworCitjbGFzcyBTdHJpbmcqIExvY2FsaXplZFN0cmluZyhjb25zdCBTdHJp
bmcqIHBLZXksIGNvbnN0IFN0cmluZyopOworY2xhc3MgU3RyaW5nKiBMb2NhbGl6ZWRTdHJpbmdG
cm9tVGFibGUoY29uc3QgU3RyaW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNvbnN0IFN0
cmluZyopOworY2xhc3MgU3RyaW5nKiBMb2NhbGl6ZWRTdHJpbmdGcm9tVGFibGVJbkJ1bmRsZShj
b25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwgY29uc3QgY2xhc3MgQnVuZGxl
KiBwQmRsZSwgY29uc3QgU3RyaW5nKik7CitjbGFzcyBTdHJpbmcqIExvY2FsaXplZFN0cmluZ1dp
dGhEZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNv
bnN0IGNsYXNzIEJ1bmRsZSogcEJkbGUsIGNvbnN0IFN0cmluZyogcFZhbCwgY29uc3QgU3RyaW5n
Kik7CisKK2NsYXNzIEJ1bmRsZSA6IHB1YmxpYyBSZWZlcmVuY2luZzxCdW5kbGU+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIEJ1bmRsZSogICAgbWFpbkJ1bmRsZSgpOworCisgICAgc3RhdGljIEJ1
bmRsZSogICAgYnVuZGxlKGNvbnN0IGNsYXNzIFN0cmluZyogcFBhdGgpOworICAgIHN0YXRpYyBC
dW5kbGUqICAgIGJ1bmRsZShjb25zdCBjbGFzcyBVUkwqIHBVUkwpOworCisgICAgc3RhdGljIEJ1
bmRsZSogICAgYWxsb2MoKTsKKworICAgIEJ1bmRsZSogICAgICAgICAgIGluaXQoY29uc3QgY2xh
c3MgU3RyaW5nKiBwUGF0aCk7CisgICAgQnVuZGxlKiAgICAgICAgICAgaW5pdChjb25zdCBjbGFz
cyBVUkwqIHBVUkwpOworCisgICAgY2xhc3MgQXJyYXkqICAgICAgYWxsQnVuZGxlcygpIGNvbnN0
OworICAgIGNsYXNzIEFycmF5KiAgICAgIGFsbEZyYW1ld29ya3MoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgICAgIGxvYWQoKTsKKyAgICBib29sICAgICAgICAgICAgICB1bmxvYWQoKTsK
KworICAgIGJvb2wgICAgICAgICAgICAgIGlzTG9hZGVkKCkgY29uc3Q7CisKKyAgICBib29sICAg
ICAgICAgICAgICBwcmVmbGlnaHRBbmRSZXR1cm5FcnJvcihjbGFzcyBFcnJvcioqIHBFcnJvcikg
Y29uc3Q7CisgICAgYm9vbCAgICAgICAgICAgICAgbG9hZEFuZFJldHVybkVycm9yKGNsYXNzIEVy
cm9yKiogcEVycm9yKTsKKworICAgIGNsYXNzIFVSTCogICAgICAgIGJ1bmRsZVVSTCgpIGNvbnN0
OworICAgIGNsYXNzIFVSTCogICAgICAgIHJlc291cmNlVVJMKCkgY29uc3Q7CisgICAgY2xhc3Mg
VVJMKiAgICAgICAgZXhlY3V0YWJsZVVSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAgICAg
IFVSTEZvckF1eGlsaWFyeUV4ZWN1dGFibGUoY29uc3QgY2xhc3MgU3RyaW5nKiBwRXhlY3V0YWJs
ZU5hbWUpIGNvbnN0OworCisgICAgY2xhc3MgVVJMKiAgICAgICAgcHJpdmF0ZUZyYW1ld29ya3NV
UkwoKSBjb25zdDsKKyAgICBjbGFzcyBVUkwqICAgICAgICBzaGFyZWRGcmFtZXdvcmtzVVJMKCkg
Y29uc3Q7CisgICAgY2xhc3MgVVJMKiAgICAgICAgc2hhcmVkU3VwcG9ydFVSTCgpIGNvbnN0Owor
ICAgIGNsYXNzIFVSTCogICAgICAgIGJ1aWx0SW5QbHVnSW5zVVJMKCkgY29uc3Q7CisgICAgY2xh
c3MgVVJMKiAgICAgICAgYXBwU3RvcmVSZWNlaXB0VVJMKCkgY29uc3Q7CisKKyAgICBjbGFzcyBT
dHJpbmcqICAgICBidW5kbGVQYXRoKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgcmVz
b3VyY2VQYXRoKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgZXhlY3V0YWJsZVBhdGgo
KSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJs
ZShjb25zdCBjbGFzcyBTdHJpbmcqIHBFeGVjdXRhYmxlTmFtZSkgY29uc3Q7CisKKyAgICBjbGFz
cyBTdHJpbmcqICAgICBwcml2YXRlRnJhbWV3b3Jrc1BhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBT
dHJpbmcqICAgICBzaGFyZWRGcmFtZXdvcmtzUGF0aCgpIGNvbnN0OworICAgIGNsYXNzIFN0cmlu
ZyogICAgIHNoYXJlZFN1cHBvcnRQYXRoKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAg
YnVpbHRJblBsdWdJbnNQYXRoKCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJpbmcqICAgICBidW5k
bGVJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgY2xhc3MgRGljdGlvbmFyeSogaW5mb0RpY3Rpb25h
cnkoKSBjb25zdDsKKyAgICBjbGFzcyBEaWN0aW9uYXJ5KiBsb2NhbGl6ZWRJbmZvRGljdGlvbmFy
eSgpIGNvbnN0OworICAgIGNsYXNzIE9iamVjdCogICAgIG9iamVjdEZvckluZm9EaWN0aW9uYXJ5
S2V5KGNvbnN0IGNsYXNzIFN0cmluZyogcEtleSk7CisKKyAgICBjbGFzcyBTdHJpbmcqICAgICBs
b2NhbGl6ZWRTdHJpbmcoY29uc3QgY2xhc3MgU3RyaW5nKiBwS2V5LCBjb25zdCBjbGFzcyBTdHJp
bmcqIHBWYWx1ZSA9IG51bGxwdHIsIGNvbnN0IGNsYXNzIFN0cmluZyogcFRhYmxlTmFtZSA9IG51
bGxwdHIpIGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6Tm90aWZpY2F0aW9uTmFt
ZSwgQnVuZGxlRGlkTG9hZE5vdGlmaWNhdGlvbik7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6
Ok5vdGlmaWNhdGlvbk5hbWUsIEJ1bmRsZVJlc291cmNlUmVxdWVzdExvd0Rpc2tTcGFjZU5vdGlm
aWNhdGlvbik7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpMb2NhbGl6ZWRTdHJpbmcoY29uc3QgU3Ry
aW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqKQoreworICAgIHJldHVybiBCdW5kbGU6Om1haW5CdW5k
bGUoKS0+bG9jYWxpemVkU3RyaW5nKHBLZXksIG51bGxwdHIsIG51bGxwdHIpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6U3RyaW5nKiBOUzo6TG9jYWxpemVkU3RyaW5nRnJvbVRhYmxlKGNvbnN0IFN0cmluZyogcEtl
eSwgY29uc3QgU3RyaW5nKiBwVGJsLCBjb25zdCBTdHJpbmcqKQoreworICAgIHJldHVybiBCdW5k
bGU6Om1haW5CdW5kbGUoKS0+bG9jYWxpemVkU3RyaW5nKHBLZXksIG51bGxwdHIsIHBUYmwpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6U3RyaW5nKiBOUzo6TG9jYWxpemVkU3RyaW5nRnJvbVRhYmxlSW5CdW5kbGUo
Y29uc3QgU3RyaW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNvbnN0IEJ1bmRsZSogcEJk
bCwgY29uc3QgU3RyaW5nKikKK3sKKyAgICByZXR1cm4gcEJkbC0+bG9jYWxpemVkU3RyaW5nKHBL
ZXksIG51bGxwdHIsIHBUYmwpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6TG9jYWxpemVkU3Ry
aW5nV2l0aERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRi
bCwgY29uc3QgQnVuZGxlKiBwQmRsLCBjb25zdCBTdHJpbmcqIHBWYWwsIGNvbnN0IFN0cmluZyop
Cit7CisgICAgcmV0dXJuIHBCZGwtPmxvY2FsaXplZFN0cmluZyhwS2V5LCBwVmFsLCBwVGJsKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6OkJ1bmRsZSogTlM6OkJ1bmRsZTo6bWFpbkJ1bmRsZSgpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QnVuZGxlKj4oX05TX1BSSVZBVEVfQ0xTKE5TQnVuZGxl
KSwgX05TX1BSSVZBVEVfU0VMKG1haW5CdW5kbGUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkJ1bmRsZSogTlM6
OkJ1bmRsZTo6YnVuZGxlKGNvbnN0IGNsYXNzIFN0cmluZyogcFBhdGgpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8QnVuZGxlKj4oX05TX1BSSVZBVEVfQ0xTKE5TQnVuZGxlKSwg
X05TX1BSSVZBVEVfU0VMKGJ1bmRsZVdpdGhQYXRoXyksIHBQYXRoKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkJ1
bmRsZSogTlM6OkJ1bmRsZTo6YnVuZGxlKGNvbnN0IGNsYXNzIFVSTCogcFVSTCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5kbGUqPihfTlNfUFJJVkFURV9DTFMoTlNCdW5k
bGUpLCBfTlNfUFJJVkFURV9TRUwoYnVuZGxlV2l0aFVSTF8pLCBwVVJMKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OkJ1bmRsZSogTlM6OkJ1bmRsZTo6YWxsb2MoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPEJ1bmRsZSo+KF9OU19QUklWQVRFX0NMUyhOU0J1bmRsZSksIF9OU19QUklWQVRFX1NF
TChhbGxvYykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6QnVuZGxlKiBOUzo6QnVuZGxlOjppbml0KGNvbnN0IFN0
cmluZyogcFBhdGgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QnVuZGxlKj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoUGF0aF8pLCBwUGF0aCk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpCdW5kbGUqIE5TOjpCdW5kbGU6OmluaXQoY29uc3QgVVJMKiBwVVJMKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1bmRsZSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0
V2l0aFVSTF8pLCBwVVJMKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBOUzo6QnVuZGxlOjphbGxCdW5k
bGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChhbGxCdW5kbGVzKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6
OkJ1bmRsZTo6YWxsRnJhbWV3b3JrcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYWxsRnJhbWV3b3JrcykpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBib29sIE5TOjpCdW5kbGU6OmxvYWQoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb2FkKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJv
b2wgTlM6OkJ1bmRsZTo6dW5sb2FkKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodW5sb2FkKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6
OkJ1bmRsZTo6aXNMb2FkZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpc0xvYWRlZCkpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29s
IE5TOjpCdW5kbGU6OnByZWZsaWdodEFuZFJldHVybkVycm9yKEVycm9yKiogcEVycm9yKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklW
QVRFX1NFTChwcmVmbGlnaHRBbmRSZXR1cm5FcnJvcl8pLCBwRXJyb3IpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29s
IE5TOjpCdW5kbGU6OmxvYWRBbmRSZXR1cm5FcnJvcihFcnJvcioqIHBFcnJvcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9h
ZEFuZFJldHVybkVycm9yXyksIHBFcnJvcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6
OmJ1bmRsZVVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJM
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGJ1bmRsZVVSTCkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBO
Uzo6QnVuZGxlOjpyZXNvdXJjZVVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHJlc291cmNlVVJMKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OmV4ZWN1dGFibGVVUkwoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChleGVj
dXRhYmxlVVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OlVSTEZvckF1eGlsaWFy
eUV4ZWN1dGFibGUoY29uc3QgU3RyaW5nKiBwRXhlY3V0YWJsZU5hbWUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKFVS
TEZvckF1eGlsaWFyeUV4ZWN1dGFibGVfKSwgcEV4ZWN1dGFibGVOYW1lKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OlVSTCogTlM6OkJ1bmRsZTo6cHJpdmF0ZUZyYW1ld29ya3NVUkwoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwcml2
YXRlRnJhbWV3b3Jrc1VSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpzaGFyZWRG
cmFtZXdvcmtzVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxV
UkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc2hhcmVkRnJhbWV3b3Jrc1VSTCkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpzaGFyZWRTdXBwb3J0VVJMKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc2hh
cmVkU3VwcG9ydFVSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpidWlsdEluUGx1
Z0luc1VSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGJ1aWx0SW5QbHVnSW5zVVJMKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpV
UkwqIE5TOjpCdW5kbGU6OmFwcFN0b3JlUmVjZWlwdFVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGFwcFN0b3Jl
UmVjZWlwdFVSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpidW5kbGVQYXRo
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoYnVuZGxlUGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6
QnVuZGxlOjpyZXNvdXJjZVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChyZXNvdXJjZVBhdGgpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6ZXhlY3V0YWJsZVBhdGgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChleGVjdXRhYmxlUGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpw
YXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZShjb25zdCBTdHJpbmcqIHBFeGVjdXRhYmxlTmFtZSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwocGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGVfKSwgcEV4ZWN1dGFibGVO
YW1lKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6cHJpdmF0ZUZyYW1ld29ya3NQ
YXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwocHJpdmF0ZUZyYW1ld29ya3NQYXRoKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpTdHJpbmcqIE5TOjpCdW5kbGU6OnNoYXJlZEZyYW1ld29ya3NQYXRoKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoc2hhcmVkRnJhbWV3b3Jrc1BhdGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRs
ZTo6c2hhcmVkU3VwcG9ydFBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzaGFyZWRTdXBwb3J0UGF0aCkp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpidWlsdEluUGx1Z0luc1BhdGgoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChidWlsdEluUGx1Z0luc1BhdGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyog
TlM6OkJ1bmRsZTo6YnVuZGxlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGJ1bmRsZUlkZW50
aWZpZXIpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE5TOjpCdW5kbGU6OmluZm9EaWN0aW9u
YXJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluZm9EaWN0aW9uYXJ5KSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpE
aWN0aW9uYXJ5KiBOUzo6QnVuZGxlOjpsb2NhbGl6ZWRJbmZvRGljdGlvbmFyeSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChsb2NhbGl6ZWRJbmZvRGljdGlvbmFyeSkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6T2JqZWN0
KiBOUzo6QnVuZGxlOjpvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleShjb25zdCBTdHJpbmcqIHBL
ZXkpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8T2JqZWN0Kj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKG9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5XyksIHBLZXkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpsb2NhbGl6ZWRTdHJpbmcoY29uc3QgU3RyaW5nKiBw
S2V5LCBjb25zdCBTdHJpbmcqIHBWYWx1ZSAvKiA9IG51bGxwdHIgKi8sIGNvbnN0IFN0cmluZyog
cFRhYmxlTmFtZSAvKiA9IG51bGxwdHIgKi8pIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvY2FsaXplZFN0cmlu
Z0ZvcktleV92YWx1ZV90YWJsZV8pLCBwS2V5LCBwVmFsdWUsIHBUYWJsZU5hbWUpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0YS5ocHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGEuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjNjk5ZTQ3NDRmODEzZDZlZmRjZDVmNmI3NDY3M2VmZWNhMDNlN2MKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Rh
dGEuaHBwCkBAIC0wLDAgKzEsNTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNEYXRhLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisj
aW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIERhdGEgOiBwdWJsaWMgQ29w
eWluZzxEYXRhPgoreworcHVibGljOgorICAgIHZvaWQqICAgIG11dGFibGVCeXRlcygpIGNvbnN0
OworICAgIFVJbnRlZ2VyIGxlbmd0aCgpIGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCogTlM6OkRh
dGE6Om11dGFibGVCeXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChtdXRhYmxlQnl0ZXMpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlVJbnRlZ2VyIE5TOjpEYXRhOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobGVuZ3RoKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRl
LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0ZS5o
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWU2YzgzYWY3YzVjM2FmNzg3MzI0NWM5NmUwMzcwNTg2NWI5NjYyMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0
aW9uL05TRGF0ZS5ocHAKQEAgLTAsMCArMSw0MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0RhdGUuaHBwCisvLwor
Ly8gU2VlIExJQ0VOU0UudHh0IGZvciB0aGlzIHByb2plY3QgbGljZW5zaW5nIGluZm9ybWF0aW9u
LgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
cHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIK
KyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5T
Cit7CisKK3VzaW5nIFRpbWVJbnRlcnZhbCA9IGRvdWJsZTsKKworY2xhc3MgRGF0ZSA6IHB1Ymxp
YyBDb3B5aW5nPERhdGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIERhdGUqIGRhdGVXaXRoVGlt
ZUludGVydmFsU2luY2VOb3coVGltZUludGVydmFsIHNlY3MpOworfTsKKworfSAvLyBOUworCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6RGF0ZSogTlM6OkRhdGU6OmRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3coTlM6OlRp
bWVJbnRlcnZhbCBzZWNzKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6RGF0ZSo+KF9OU19QUklWQVRFX0NMUyhOU0RhdGUpLCBfTlNfUFJJVkFURV9TRUwoZGF0ZVdp
dGhUaW1lSW50ZXJ2YWxTaW5jZU5vd18pLCBzZWNzKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNE
ZWZpbmVzLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
RGVmaW5lcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM5Njk4OWNiNWRhNWZhMTBjOThhMzI5YzEzM2IwN2Fl
ODJkYTFhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHAKQEAgLTAsMCArMSw0MSBAQAorLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0Rl
ZmluZXMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2Rl
ZmluZSBfTlNfV0VBS19JTVBPUlQgX19hdHRyaWJ1dGVfXygod2Vha19pbXBvcnQpKQorI2RlZmlu
ZSBfTlNfRVhQT1JUIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKKyNkZWZp
bmUgX05TX0VYVEVSTiBleHRlcm4gIkMiIF9OU19FWFBPUlQKKyNkZWZpbmUgX05TX0lOTElORSBp
bmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCisjZGVmaW5lIF9OU19QQUNLRUQg
X19hdHRyaWJ1dGVfXygocGFja2VkKSkKKworI2RlZmluZSBfTlNfQ09OU1QodHlwZSwgbmFtZSkg
X05TX0VYVEVSTiB0eXBlIGNvbnN0IG5hbWU7CisjZGVmaW5lIF9OU19FTlVNKHR5cGUsIG5hbWUp
IGVudW0gbmFtZSA6IHR5cGUKKyNkZWZpbmUgX05TX09QVElPTlModHlwZSwgbmFtZSkgXAorICAg
IHVzaW5nIG5hbWUgPSB0eXBlOyAgICAgICAgICBcCisgICAgZW51bSA6IG5hbWUKKworI2RlZmlu
ZSBfTlNfQ0FTVF9UT19VSU5UKHZhbHVlKSBzdGF0aWNfY2FzdDxOUzo6VUludGVnZXI+KHZhbHVl
KQorI2RlZmluZSBfTlNfVkFMSURBVEVfU0laRShucywgbmFtZSkgc3RhdGljX2Fzc2VydChzaXpl
b2YobnM6Om5hbWUpID09IHNpemVvZihucyMjbmFtZSksICJzaXplIG1pc21hdGNoICIgI25zICI6
OiIgI25hbWUpCisjZGVmaW5lIF9OU19WQUxJREFURV9FTlVNKG5zLCBuYW1lKSBzdGF0aWNfYXNz
ZXJ0KF9OU19DQVNUX1RPX1VJTlQobnM6Om5hbWUpID09IF9OU19DQVNUX1RPX1VJTlQobnMjI25h
bWUpLCAidmFsdWUgbWlzbWF0Y2ggIiAjbnMgIjo6IiAjbmFtZSkKKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEaWN0aW9uYXJ5LmhwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jY2JlMmJkODNkM2Q0MWU1NWViYjY5NTE2MWY5MGUxMDg1YjUzOTQ5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEaWN0
aW9uYXJ5LmhwcApAQCAtMCwwICsxLDEyOCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRW51
bWVyYXRvci5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMu
aHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
bmFtZXNwYWNlIE5TCit7CitjbGFzcyBEaWN0aW9uYXJ5IDogcHVibGljIE5TOjpDb3B5aW5nPERp
Y3Rpb25hcnk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIERpY3Rpb25hcnkqIGRpY3Rpb25hcnko
KTsKKyAgICBzdGF0aWMgRGljdGlvbmFyeSogZGljdGlvbmFyeShjb25zdCBPYmplY3QqIHBPYmpl
Y3QsIGNvbnN0IE9iamVjdCogcEtleSk7CisgICAgc3RhdGljIERpY3Rpb25hcnkqIGRpY3Rpb25h
cnkoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMsIGNvbnN0IE9iamVjdCogY29uc3QqIHBL
ZXlzLCBVSW50ZWdlciBjb3VudCk7CisKKyAgICBzdGF0aWMgRGljdGlvbmFyeSogYWxsb2MoKTsK
KworICAgIERpY3Rpb25hcnkqICAgICAgICBpbml0KCk7CisgICAgRGljdGlvbmFyeSogICAgICAg
IGluaXQoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMsIGNvbnN0IE9iamVjdCogY29uc3Qq
IHBLZXlzLCBVSW50ZWdlciBjb3VudCk7CisgICAgRGljdGlvbmFyeSogICAgICAgIGluaXQoY29u
c3QgY2xhc3MgQ29kZXIqIHBDb2Rlcik7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleVR5cGUg
PSBPYmplY3Q+CisgICAgRW51bWVyYXRvcjxfS2V5VHlwZT4qIGtleUVudW1lcmF0b3IoKSBjb25z
dDsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBfT2JqZWN0ID0gT2JqZWN0PgorICAgIF9PYmplY3Qq
IG9iamVjdChjb25zdCBPYmplY3QqIHBLZXkpIGNvbnN0OworICAgIFVJbnRlZ2VyIGNvdW50KCkg
Y29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6OmRpY3Rp
b25hcnkoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPihf
TlNfUFJJVkFURV9DTFMoTlNEaWN0aW9uYXJ5KSwgX05TX1BSSVZBVEVfU0VMKGRpY3Rpb25hcnkp
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19OU19JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE5TOjpEaWN0aW9uYXJ5OjpkaWN0aW9uYXJ5KGNv
bnN0IE9iamVjdCogcE9iamVjdCwgY29uc3QgT2JqZWN0KiBwS2V5KQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPihfTlNfUFJJVkFURV9DTFMoTlNEaWN0aW9u
YXJ5KSwgX05TX1BSSVZBVEVfU0VMKGRpY3Rpb25hcnlXaXRoT2JqZWN0X2ZvcktleV8pLCBwT2Jq
ZWN0LCBwS2V5KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE5TOjpEaWN0aW9uYXJ5OjpkaWN0
aW9uYXJ5KGNvbnN0IE9iamVjdCogY29uc3QqIHBPYmplY3RzLCBjb25zdCBPYmplY3QqIGNvbnN0
KiBwS2V5cywgVUludGVnZXIgY291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8RGljdGlvbmFyeSo+KF9OU19QUklWQVRFX0NMUyhOU0RpY3Rpb25hcnkpLCBfTlNfUFJJVkFU
RV9TRUwoZGljdGlvbmFyeVdpdGhPYmplY3RzX2ZvcktleXNfY291bnRfKSwKKyAgICAgICAgcE9i
amVjdHMsIHBLZXlzLCBjb3VudCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlv
bmFyeTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxEaWN0aW9uYXJ5
PihfTlNfUFJJVkFURV9DTFMoTlNEaWN0aW9uYXJ5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5
KiBOUzo6RGljdGlvbmFyeTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8
RGljdGlvbmFyeT4oKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE5TOjpEaWN0aW9uYXJ5Ojpp
bml0KGNvbnN0IE9iamVjdCogY29uc3QqIHBPYmplY3RzLCBjb25zdCBPYmplY3QqIGNvbnN0KiBw
S2V5cywgVUludGVnZXIgY291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
RGljdGlvbmFyeSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aE9iamVjdHNfZm9yS2V5
c19jb3VudF8pLCBwT2JqZWN0cywgcEtleXMsIGNvdW50KTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25h
cnkqIE5TOjpEaWN0aW9uYXJ5Ojppbml0KGNvbnN0IGNsYXNzIENvZGVyKiBwQ29kZXIpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KHRoaXMsIF9OU19QUklW
QVRFX1NFTChpbml0V2l0aENvZGVyXyksIHBDb2Rlcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0tleVR5cGU+
CitfTlNfSU5MSU5FIE5TOjpFbnVtZXJhdG9yPF9LZXlUeXBlPiogTlM6OkRpY3Rpb25hcnk6Omtl
eUVudW1lcmF0b3IoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEVu
dW1lcmF0b3I8X0tleVR5cGU+Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGtleUVudW1lcmF0b3Ip
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K3RlbXBsYXRlIDxjbGFzcyBfT2JqZWN0PgorX05TX0lOTElORSBfT2JqZWN0KiBOUzo6RGljdGlv
bmFyeTo6b2JqZWN0KGNvbnN0IE9iamVjdCogcEtleSkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxfT2JqZWN0Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9iamVjdEZv
cktleV8pLCBwS2V5KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpEaWN0aW9uYXJ5Ojpjb3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChjb3VudCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRW51bWVyYXRvci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0VudW1lcmF0b3IuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5
NTk2YzA0ZGRhZmE4MDFmYWViNTFjNzg2MmNlZDgzMGQwMTI2YmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0VudW1lcmF0b3Iu
aHBwCkBAIC0wLDAgKzEsNzggQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU09iamVjdC5ocHAi
CisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK3N0cnVjdCBGYXN0RW51bWVyYXRp
b25TdGF0ZQoreworICAgIHVuc2lnbmVkIGxvbmcgIHN0YXRlOworICAgIE9iamVjdCoqICAgICAg
IGl0ZW1zUHRyOworICAgIHVuc2lnbmVkIGxvbmcqIG11dGF0aW9uc1B0cjsKKyAgICB1bnNpZ25l
ZCBsb25nICBleHRyYVs1XTsKK30gX05TX1BBQ0tFRDsKKworY2xhc3MgRmFzdEVudW1lcmF0aW9u
IDogcHVibGljIFJlZmVyZW5jaW5nPEZhc3RFbnVtZXJhdGlvbj4KK3sKK3B1YmxpYzoKKyAgICBO
Uzo6VUludGVnZXIgY291bnRCeUVudW1lcmF0aW5nKEZhc3RFbnVtZXJhdGlvblN0YXRlKiBwU3Rh
dGUsIE9iamVjdCoqIHBCdWZmZXIsIE5TOjpVSW50ZWdlciBsZW4pOworfTsKKwordGVtcGxhdGUg
PGNsYXNzIF9PYmplY3RUeXBlPgorY2xhc3MgRW51bWVyYXRvciA6IHB1YmxpYyBSZWZlcmVuY2lu
ZzxFbnVtZXJhdG9yPF9PYmplY3RUeXBlPiwgRmFzdEVudW1lcmF0aW9uPgoreworcHVibGljOgor
ICAgIF9PYmplY3RUeXBlKiBuZXh0T2JqZWN0KCk7CisgICAgY2xhc3MgQXJyYXkqIGFsbE9iamVj
dHMoKTsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6RmFzdEVudW1lcmF0aW9uOjpjb3Vu
dEJ5RW51bWVyYXRpbmcoRmFzdEVudW1lcmF0aW9uU3RhdGUqIHBTdGF0ZSwgT2JqZWN0KiogcEJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIGxlbikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxVSW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNvdW50QnlFbnVtZXJhdGluZ1dpdGhT
dGF0ZV9vYmplY3RzX2NvdW50XyksIHBTdGF0ZSwgcEJ1ZmZlciwgbGVuKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFz
cyBfT2JqZWN0VHlwZT4KK19OU19JTkxJTkUgX09iamVjdFR5cGUqIE5TOjpFbnVtZXJhdG9yPF9P
YmplY3RUeXBlPjo6bmV4dE9iamVjdCgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8X09iamVjdFR5cGUqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobmV4dE9iamVjdCkpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxh
dGUgPGNsYXNzIF9PYmplY3RUeXBlPgorX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpFbnVtZXJh
dG9yPF9PYmplY3RUeXBlPjo6YWxsT2JqZWN0cygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYWxsT2JqZWN0cykpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFcnJvci5ocHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWViZjk4MThhYzdjODhhMWU1YmRlNjNlZmRkMTE2MGMyZDRhNDE0YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TRXJyb3IuaHBwCkBAIC0wLDAgKzEsMTczIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TRXJyb3IuaHBwCisvLwor
Ly8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5l
cy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAi
CisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK3VzaW5nIEVycm9yRG9tYWluID0g
Y2xhc3MgU3RyaW5nKjsKKworX05TX0NPTlNUKEVycm9yRG9tYWluLCBDb2NvYUVycm9yRG9tYWlu
KTsKK19OU19DT05TVChFcnJvckRvbWFpbiwgUE9TSVhFcnJvckRvbWFpbik7CitfTlNfQ09OU1Qo
RXJyb3JEb21haW4sIE9TU3RhdHVzRXJyb3JEb21haW4pOworX05TX0NPTlNUKEVycm9yRG9tYWlu
LCBNYWNoRXJyb3JEb21haW4pOworCit1c2luZyBFcnJvclVzZXJJbmZvS2V5ID0gY2xhc3MgU3Ry
aW5nKjsKKworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIFVuZGVybHlpbmdFcnJvcktleSk7
CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkRGVzY3JpcHRpb25LZXkpOwor
X05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIExvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktl
eSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0
aW9uRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIExvY2FsaXplZFJlY292
ZXJ5T3B0aW9uc0Vycm9yS2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBSZWNvdmVy
eUF0dGVtcHRlckVycm9yS2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBIZWxwQW5j
aG9yRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIERlYnVnRGVzY3JpcHRp
b25FcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkRmFpbHVy
ZUVycm9yS2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBTdHJpbmdFbmNvZGluZ0Vy
cm9yS2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBVUkxFcnJvcktleSk7CitfTlNf
Q09OU1QoRXJyb3JVc2VySW5mb0tleSwgRmlsZVBhdGhFcnJvcktleSk7CisKK2NsYXNzIEVycm9y
IDogcHVibGljIENvcHlpbmc8RXJyb3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIEVycm9yKiAg
ICAgZXJyb3IoRXJyb3JEb21haW4gZG9tYWluLCBJbnRlZ2VyIGNvZGUsIGNsYXNzIERpY3Rpb25h
cnkqIHBEaWN0aW9uYXJ5KTsKKworICAgIHN0YXRpYyBFcnJvciogICAgIGFsbG9jKCk7CisgICAg
RXJyb3IqICAgICAgICAgICAgaW5pdCgpOworICAgIEVycm9yKiAgICAgICAgICAgIGluaXQoRXJy
b3JEb21haW4gZG9tYWluLCBJbnRlZ2VyIGNvZGUsIGNsYXNzIERpY3Rpb25hcnkqIHBEaWN0aW9u
YXJ5KTsKKworICAgIEludGVnZXIgICAgICAgICAgIGNvZGUoKSBjb25zdDsKKyAgICBFcnJvckRv
bWFpbiAgICAgICBkb21haW4oKSBjb25zdDsKKyAgICBjbGFzcyBEaWN0aW9uYXJ5KiB1c2VySW5m
bygpIGNvbnN0OworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgbG9jYWxpemVkRGVzY3JpcHRpb24o
KSBjb25zdDsKKyAgICBjbGFzcyBBcnJheSogICAgICBsb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnMo
KSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICBsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rp
b24oKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICBsb2NhbGl6ZWRGYWlsdXJlUmVhc29u
KCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvckRvbWFpbiwgQ29jb2FF
cnJvckRvbWFpbik7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yRG9tYWluLCBQT1NJ
WEVycm9yRG9tYWluKTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JEb21haW4sIE9T
U3RhdHVzRXJyb3JEb21haW4pOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvckRvbWFp
biwgTWFjaEVycm9yRG9tYWluKTsKKworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVz
ZXJJbmZvS2V5LCBVbmRlcmx5aW5nRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5T
OjpFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWREZXNjcmlwdGlvbktleSk7CitfTlNfUFJJVkFU
RV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIExvY2FsaXplZEZhaWx1cmVSZWFzb25F
cnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIExv
Y2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbkVycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05T
VChOUzo6RXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zRXJyb3JLZXkp
OworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBSZWNvdmVyeUF0
dGVtcHRlckVycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5m
b0tleSwgSGVscEFuY2hvckVycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJy
b3JVc2VySW5mb0tleSwgRGVidWdEZXNjcmlwdGlvbkVycm9yS2V5KTsKK19OU19QUklWQVRFX0RF
Rl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkRmFpbHVyZUVycm9yS2V5KTsK
K19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgU3RyaW5nRW5jb2Rp
bmdFcnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXks
IFVSTEVycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tl
eSwgRmlsZVBhdGhFcnJvcktleSk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpFcnJvciogTlM6OkVycm9yOjplcnJvcihF
cnJvckRvbWFpbiBkb21haW4sIEludGVnZXIgY29kZSwgY2xhc3MgRGljdGlvbmFyeSogcERpY3Rp
b25hcnkpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RXJyb3IqPihfTlNfUFJJ
VkFURV9DTFMoTlNFcnJvciksIF9OU19QUklWQVRFX1NFTChlcnJvcldpdGhEb21haW5fY29kZV91
c2VySW5mb18pLCBkb21haW4sIGNvZGUsIHBEaWN0aW9uYXJ5KTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkVycm9y
KiBOUzo6RXJyb3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjphbGxvYzxFcnJvcj4o
X05TX1BSSVZBVEVfQ0xTKE5TRXJyb3IpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkVycm9yKiBOUzo6RXJyb3I6
OmluaXQoKQoreworICAgIHJldHVybiBPYmplY3Q6OmluaXQ8RXJyb3I+KCk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpFcnJvciogTlM6OkVycm9yOjppbml0KEVycm9yRG9tYWluIGRvbWFpbiwgSW50ZWdlciBjb2Rl
LCBjbGFzcyBEaWN0aW9uYXJ5KiBwRGljdGlvbmFyeSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxFcnJvcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aERvbWFpbl9j
b2RlX3VzZXJJbmZvXyksIGRvbWFpbiwgY29kZSwgcERpY3Rpb25hcnkpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
SW50ZWdlciBOUzo6RXJyb3I6OmNvZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPEludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChjb2RlKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpFcnJvckRvbWFpbiBOUzo6RXJyb3I6OmRvbWFpbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8RXJyb3JEb21haW4+KHRoaXMsIF9OU19QUklWQVRFX1NFTChk
b21haW4pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE5TOjpFcnJvcjo6dXNlckluZm8oKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwodXNlckluZm8pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkVy
cm9yOjpsb2NhbGl6ZWREZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvY2FsaXplZERlc2Ny
aXB0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkVycm9yOjpsb2NhbGl6ZWRSZWNvdmVy
eU9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvY2FsaXplZFJlY292ZXJ5T3B0aW9ucykpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6U3RyaW5nKiBOUzo6RXJyb3I6OmxvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGxvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbikpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6U3RyaW5nKiBOUzo6RXJyb3I6OmxvY2FsaXplZEZhaWx1cmVSZWFzb24oKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChsb2NhbGl6ZWRGYWlsdXJlUmVhc29uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTG9jay5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI3ZGUwODE5NGYz
NDI0ODk4ZmMxZmIyMzc1ZjYyM2Q0ODc4YjQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTG9jay5ocHAKQEAgLTAsMCArMSwx
MDUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIEZvdW5kYXRpb24vTlNMb2NrLmhwcAorLy8KKy8vIFNlZSBMSUNFTlNFLnR4dCBmb3IgdGhp
cyBwcm9qZWN0IGxpY2Vuc2luZyBpbmZvcm1hdGlvbi4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVz
LmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhwcCIK
KyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKyNpbmNsdWRlICJOU0RhdGUuaHBwIgorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7
CisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9CYXNlID0gY2xhc3MgT2JqZWN0Pgor
Y2xhc3MgTG9ja2luZyA6IHB1YmxpYyBfQmFzZQoreworcHVibGljOgorICAgIHZvaWQgbG9jaygp
OworICAgIHZvaWQgdW5sb2NrKCk7Cit9OworCitjbGFzcyBDb25kaXRpb24gOiBwdWJsaWMgTG9j
a2luZzxDb25kaXRpb24+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIENvbmRpdGlvbiogYWxsb2Mo
KTsKKworICAgIENvbmRpdGlvbiogICAgICAgIGluaXQoKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgIHdhaXQoKTsKKyAgICBib29sICAgICAgICAgICAgICB3YWl0VW50aWxEYXRlKERhdGUqIHBM
aW1pdCk7CisgICAgdm9pZCAgICAgICAgICAgICAgc2lnbmFsKCk7CisgICAgdm9pZCAgICAgICAg
ICAgICAgYnJvYWRjYXN0KCk7Cit9OworCit9IC8vIE5TCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZTxjbGFzcyBfQ2xhc3MsIGNsYXNz
IF9CYXNlIC8qID0gTlM6Ok9iamVjdCAqLz4KK19OU19JTkxJTkUgdm9pZCBOUzo6TG9ja2luZzxf
Q2xhc3MsIF9CYXNlPjo6bG9jaygpCit7CisgICAgTlM6Ok9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvY2spKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlPGNsYXNzIF9DbGFzcywgY2xh
c3MgX0Jhc2UgLyogPSBOUzo6T2JqZWN0ICovPgorX05TX0lOTElORSB2b2lkIE5TOjpMb2NraW5n
PF9DbGFzcywgX0Jhc2U+Ojp1bmxvY2soKQoreworICAgIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bmxvY2spKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkNvbmRp
dGlvbiogTlM6OkNvbmRpdGlvbjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojph
bGxvYzxOUzo6Q29uZGl0aW9uPihfTlNfUFJJVkFURV9DTFMoTlNDb25kaXRpb24pKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkNvbmRpdGlvbiogTlM6OkNvbmRpdGlvbjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TlM6OkNvbmRpdGlvbj4oKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6Q29uZGl0
aW9uOjp3YWl0KCkKK3sKKyAgICBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwod2FpdCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpDb25kaXRpb246OndhaXRV
bnRpbERhdGUoTlM6OkRhdGUqIHBMaW1pdCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHdhaXRVbnRpbERhdGVfKSwgcExp
bWl0KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgdm9pZCBOUzo6Q29uZGl0aW9uOjpzaWduYWwoKQoreworICAgIE5TOjpP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzaWduYWwpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgdm9pZCBOUzo6Q29uZGl0aW9uOjpicm9hZGNhc3QoKQoreworICAgIE5TOjpPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChicm9hZGNhc3QpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOb3RpZmljYXRpb24uaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOb3RpZmljYXRpb24uaHBwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBhYmJjOWY1ODA2YjY2NTAxZDM3OTU0YjhlZjUwZTYzMmY1YzJkNjUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU05vdGlmaWNh
dGlvbi5ocHAKQEAgLTAsMCArMSw2NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAKKy8v
CisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZp
bmVzLmhwcCIKKyNpbmNsdWRlICJOU0RpY3Rpb25hcnkuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0
LmhwcCIKKyNpbmNsdWRlICJOU1N0cmluZy5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3Bh
Y2UgTlMKK3sKK3VzaW5nIE5vdGlmaWNhdGlvbk5hbWUgPSBjbGFzcyBTdHJpbmcqOworCitjbGFz
cyBOb3RpZmljYXRpb24gOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPE5vdGlmaWNhdGlvbj4KK3sK
K3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgICAgbmFtZSgpIGNvbnN0OworICAgIE5TOjpPYmpl
Y3QqICAgICBvYmplY3QoKSBjb25zdDsKKyAgICBOUzo6RGljdGlvbmFyeSogdXNlckluZm8oKSBj
b25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpOb3RpZmljYXRpb246Om5hbWUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6T2JqZWN0KiBOUzo6Tm90aWZp
Y2F0aW9uOjpvYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpPYmplY3QqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob2JqZWN0KSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpEaWN0aW9uYXJ5KiBOUzo6Tm90aWZpY2F0aW9uOjp1c2VySW5mbygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkRpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJ
VkFURV9TRUwodXNlckluZm8pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU051bWJlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU051bWJlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQwZjY2ZjM3NGZiYzM5NjFk
NTU1NjQ2MTYwMWYwZWU3NDllYmY0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTnVtYmVyLmhwcApAQCAtMCwwICsxLDUwMSBA
QAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8g
Rm91bmRhdGlvbi9OU051bWJlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjaW5jbHVkZSAiTlNPYmpDUnVudGltZS5ocHAiCisjaW5jbHVkZSAiTlNPYmpl
Y3QuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitjbGFzcyBWYWx1ZSA6
IHB1YmxpYyBDb3B5aW5nPFZhbHVlPgoreworcHVibGljOgorICAgIHN0YXRpYyBWYWx1ZSogdmFs
dWUoY29uc3Qgdm9pZCogcFZhbHVlLCBjb25zdCBjaGFyKiBwVHlwZSk7CisgICAgc3RhdGljIFZh
bHVlKiB2YWx1ZShjb25zdCB2b2lkKiBwUG9pbnRlcik7CisKKyAgICBzdGF0aWMgVmFsdWUqIGFs
bG9jKCk7CisKKyAgICBWYWx1ZSogICAgICAgIGluaXQoY29uc3Qgdm9pZCogcFZhbHVlLCBjb25z
dCBjaGFyKiBwVHlwZSk7CisgICAgVmFsdWUqICAgICAgICBpbml0KGNvbnN0IGNsYXNzIENvZGVy
KiBwQ29kZXIpOworCisgICAgdm9pZCAgICAgICAgICBnZXRWYWx1ZSh2b2lkKiBwVmFsdWUsIFVJ
bnRlZ2VyIHNpemUpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqICAgb2JqQ1R5cGUoKSBjb25zdDsK
KworICAgIGJvb2wgICAgICAgICAgaXNFcXVhbFRvVmFsdWUoVmFsdWUqIHBWYWx1ZSkgY29uc3Q7
CisgICAgdm9pZCogICAgICAgICBwb2ludGVyVmFsdWUoKSBjb25zdDsKK307CisKK2NsYXNzIE51
bWJlciA6IHB1YmxpYyBDb3B5aW5nPE51bWJlciwgVmFsdWU+Cit7CitwdWJsaWM6CisgICAgc3Rh
dGljIE51bWJlciogICAgIG51bWJlcihjaGFyIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAg
ICAgbnVtYmVyKHVuc2lnbmVkIGNoYXIgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBu
dW1iZXIoc2hvcnQgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIodW5zaWdu
ZWQgc2hvcnQgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIoaW50IHZhbHVl
KTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKHVuc2lnbmVkIGludCB2YWx1ZSk7Cisg
ICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcihsb25nIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVt
YmVyKiAgICAgbnVtYmVyKHVuc2lnbmVkIGxvbmcgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIq
ICAgICBudW1iZXIobG9uZyBsb25nIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVt
YmVyKHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51
bWJlcihmbG9hdCB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcihkb3VibGUg
dmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIoYm9vbCB2YWx1ZSk7CisKKyAg
ICBzdGF0aWMgTnVtYmVyKiAgICAgYWxsb2MoKTsKKworICAgIE51bWJlciogICAgICAgICAgICBp
bml0KGNvbnN0IGNsYXNzIENvZGVyKiBwQ29kZXIpOworICAgIE51bWJlciogICAgICAgICAgICBp
bml0KGNoYXIgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KHVuc2lnbmVkIGNo
YXIgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KHNob3J0IHZhbHVlKTsKKyAg
ICBOdW1iZXIqICAgICAgICAgICAgaW5pdCh1bnNpZ25lZCBzaG9ydCB2YWx1ZSk7CisgICAgTnVt
YmVyKiAgICAgICAgICAgIGluaXQoaW50IHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAg
aW5pdCh1bnNpZ25lZCBpbnQgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KGxv
bmcgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KHVuc2lnbmVkIGxvbmcgdmFs
dWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KGxvbmcgbG9uZyB2YWx1ZSk7CisgICAg
TnVtYmVyKiAgICAgICAgICAgIGluaXQodW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKTsKKyAgICBO
dW1iZXIqICAgICAgICAgICAgaW5pdChmbG9hdCB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAg
ICAgIGluaXQoZG91YmxlIHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdChib29s
IHZhbHVlKTsKKworICAgIGNoYXIgICAgICAgICAgICAgICBjaGFyVmFsdWUoKSBjb25zdDsKKyAg
ICB1bnNpZ25lZCBjaGFyICAgICAgdW5zaWduZWRDaGFyVmFsdWUoKSBjb25zdDsKKyAgICBzaG9y
dCAgICAgICAgICAgICAgc2hvcnRWYWx1ZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIHNob3J0ICAg
ICB1bnNpZ25lZFNob3J0VmFsdWUoKSBjb25zdDsKKyAgICBpbnQgICAgICAgICAgICAgICAgaW50
VmFsdWUoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBpbnQgICAgICAgdW5zaWduZWRJbnRWYWx1ZSgp
IGNvbnN0OworICAgIGxvbmcgICAgICAgICAgICAgICBsb25nVmFsdWUoKSBjb25zdDsKKyAgICB1
bnNpZ25lZCBsb25nICAgICAgdW5zaWduZWRMb25nVmFsdWUoKSBjb25zdDsKKyAgICBsb25nIGxv
bmcgICAgICAgICAgbG9uZ0xvbmdWYWx1ZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyB1bnNpZ25lZExvbmdMb25nVmFsdWUoKSBjb25zdDsKKyAgICBmbG9hdCAgICAgICAgICAgICAg
ZmxvYXRWYWx1ZSgpIGNvbnN0OworICAgIGRvdWJsZSAgICAgICAgICAgICBkb3VibGVWYWx1ZSgp
IGNvbnN0OworICAgIGJvb2wgICAgICAgICAgICAgICBib29sVmFsdWUoKSBjb25zdDsKKyAgICBJ
bnRlZ2VyICAgICAgICAgICAgaW50ZWdlclZhbHVlKCkgY29uc3Q7CisgICAgVUludGVnZXIgICAg
ICAgICAgIHVuc2lnbmVkSW50ZWdlclZhbHVlKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAg
ICAgIHN0cmluZ1ZhbHVlKCkgY29uc3Q7CisKKyAgICBDb21wYXJpc29uUmVzdWx0ICAgY29tcGFy
ZShjb25zdCBOdW1iZXIqIHBPdGhlck51bWJlcikgY29uc3Q7CisgICAgYm9vbCAgICAgICAgICAg
ICAgIGlzRXF1YWxUb051bWJlcihjb25zdCBOdW1iZXIqIHBOdW1iZXIpIGNvbnN0OworCisgICAg
Y2xhc3MgU3RyaW5nKiAgICAgIGRlc2NyaXB0aW9uV2l0aExvY2FsZShjb25zdCBPYmplY3QqIHBM
b2NhbGUpIGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlZhbHVlKiBOUzo6VmFsdWU6OnZhbHVlKGNv
bnN0IHZvaWQqIHBWYWx1ZSwgY29uc3QgY2hhciogcFR5cGUpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8VmFsdWUqPihfTlNfUFJJVkFURV9DTFMoTlNWYWx1ZSksIF9OU19QUklW
QVRFX1NFTCh2YWx1ZVdpdGhCeXRlc19vYmpDVHlwZV8pLCBwVmFsdWUsIHBUeXBlKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlZhbHVlKiBOUzo6VmFsdWU6OnZhbHVlKGNvbnN0IHZvaWQqIHBQb2ludGVyKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFZhbHVlKj4oX05TX1BSSVZBVEVfQ0xTKE5T
VmFsdWUpLCBfTlNfUFJJVkFURV9TRUwodmFsdWVXaXRoUG9pbnRlcl8pLCBwUG9pbnRlcik7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpWYWx1ZSogTlM6OlZhbHVlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmFsbG9jPFZhbHVlPihfTlNfUFJJVkFURV9DTFMoTlNWYWx1ZSkpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6VmFsdWUqIE5TOjpWYWx1ZTo6aW5pdChjb25zdCB2b2lkKiBwVmFsdWUsIGNvbnN0IGNoYXIq
IHBUeXBlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFZhbHVlKj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQnl0ZXNfb2JqQ1R5cGVfKSwgcFZhbHVlLCBwVHlwZSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpWYWx1ZSogTlM6OlZhbHVlOjppbml0KGNvbnN0IGNsYXNzIENvZGVyKiBw
Q29kZXIpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VmFsdWUqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoaW5pdFdpdGhDb2Rlcl8pLCBwQ29kZXIpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5T
OjpWYWx1ZTo6Z2V0VmFsdWUodm9pZCogcFZhbHVlLCBVSW50ZWdlciBzaXplKSBjb25zdAorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGdldFZh
bHVlX3NpemVfKSwgcFZhbHVlLCBzaXplKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgY29uc3QgY2hhciogTlM6OlZhbHVl
OjpvYmpDVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Y29u
c3QgY2hhcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChvYmpDVHlwZSkpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29s
IE5TOjpWYWx1ZTo6aXNFcXVhbFRvVmFsdWUoVmFsdWUqIHBWYWx1ZSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaXNF
cXVhbFRvVmFsdWVfKSwgcFZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCogTlM6OlZhbHVlOjpwb2ludGVy
VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQqPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwocG9pbnRlclZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIq
IE5TOjpOdW1iZXI6Om51bWJlcihjaGFyIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRF
X1NFTChudW1iZXJXaXRoQ2hhcl8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpO
dW1iZXI6Om51bWJlcih1bnNpZ25lZCBjaGFyIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklW
QVRFX1NFTChudW1iZXJXaXRoVW5zaWduZWRDaGFyXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51
bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKHNob3J0IHZhbHVlKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19Q
UklWQVRFX1NFTChudW1iZXJXaXRoU2hvcnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVy
KiBOUzo6TnVtYmVyOjpudW1iZXIodW5zaWduZWQgc2hvcnQgdmFsdWUpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwg
X05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhVbnNpZ25lZFNob3J0XyksIHZhbHVlKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKGludCB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIp
LCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aEludF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpO
dW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcih1bnNpZ25lZCBpbnQgdmFsdWUpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVy
KSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhVbnNpZ25lZEludF8pLCB2YWx1ZSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcihsb25nIHZhbHVlKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJl
ciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcih1bnNpZ25lZCBsb25nIHZhbHVlKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051
bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoVW5zaWduZWRMb25nXyksIHZhbHVlKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKGxvbmcgbG9uZyB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9D
TFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aExvbmdMb25nXyksIHZhbHVl
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKHVuc2lnbmVkIGxvbmcg
bG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihf
TlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFVuc2ln
bmVkTG9uZ0xvbmdfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpu
dW1iZXIoZmxvYXQgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVt
YmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldp
dGhGbG9hdF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJl
cihkb3VibGUgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVy
Kj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhE
b3VibGVfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIo
Ym9vbCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihf
TlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aEJvb2xf
KSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE51bWJlcj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVt
YmVyKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoY29uc3QgQ29kZXIq
IHBDb2RlcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhDb2Rlcl8pLCBwQ29kZXIpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KGNoYXIgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQ2hh
cl8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQodW5zaWdu
ZWQgY2hhciB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIq
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhVbnNpZ25lZENoYXJfKSwgdmFsdWUpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KHNob3J0IHZhbHVlKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChpbml0V2l0aFNob3J0XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJl
cjo6aW5pdCh1bnNpZ25lZCBzaG9ydCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhVbnNpZ25lZFNo
b3J0XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChpbnQg
dmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGluaXRXaXRoSW50XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJl
ciogTlM6Ok51bWJlcjo6aW5pdCh1bnNpZ25lZCBpbnQgdmFsdWUpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRo
VW5zaWduZWRJbnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpp
bml0KGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVy
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQodW5zaWduZWQgbG9uZyB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoaW5pdFdpdGhVbnNpZ25lZExvbmdfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBO
Uzo6TnVtYmVyOjppbml0KGxvbmcgbG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhMb25nTG9u
Z18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQodW5zaWdu
ZWQgbG9uZyBsb25nIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51
bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aFVuc2lnbmVkTG9uZ0xvbmdfKSwg
dmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KGZsb2F0IHZhbHVl
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChpbml0V2l0aEZsb2F0XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciog
TlM6Ok51bWJlcjo6aW5pdChkb3VibGUgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoRG91YmxlXyks
IHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChib29sIHZhbHVl
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChpbml0V2l0aEJvb2xfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBjaGFyIE5TOjpOdW1i
ZXI6OmNoYXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Y2hhcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNoYXJWYWx1ZSkpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB1bnNpZ25l
ZCBjaGFyIE5TOjpOdW1iZXI6OnVuc2lnbmVkQ2hhclZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1bnNpZ25lZCBjaGFyPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwodW5zaWduZWRDaGFyVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgc2hvcnQgTlM6Ok51bWJlcjo6c2hvcnRW
YWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8c2hvcnQ+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChzaG9ydFZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIHNob3J0
IE5TOjpOdW1iZXI6OnVuc2lnbmVkU2hvcnRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dW5zaWduZWQgc2hvcnQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1
bnNpZ25lZFNob3J0VmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgaW50IE5TOjpOdW1iZXI6OmludFZhbHVlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxpbnQ+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChpbnRWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB1bnNpZ25lZCBpbnQgTlM6Ok51bWJlcjo6
dW5zaWduZWRJbnRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dW5zaWduZWQgaW50Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwodW5zaWduZWRJbnRWYWx1ZSkp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBsb25nIE5TOjpOdW1iZXI6OmxvbmdWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8bG9uZz4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvbmdW
YWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSB1bnNpZ25lZCBsb25nIE5TOjpOdW1iZXI6OnVuc2lnbmVkTG9uZ1Zh
bHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1bnNpZ25lZCBs
b25nPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodW5zaWduZWRMb25nVmFsdWUpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
bG9uZyBsb25nIE5TOjpOdW1iZXI6OmxvbmdMb25nVmFsdWUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPGxvbmcgbG9uZz4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxv
bmdMb25nVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgdW5zaWduZWQgbG9uZyBsb25nIE5TOjpOdW1iZXI6OnVu
c2lnbmVkTG9uZ0xvbmdWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dW5zaWduZWQgbG9uZyBsb25nPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodW5zaWduZWRM
b25nTG9uZ1ZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGZsb2F0IE5TOjpOdW1iZXI6OmZsb2F0VmFsdWUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGZsb2F0Pih0aGlzLCBfTlNf
UFJJVkFURV9TRUwoZmxvYXRWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBkb3VibGUgTlM6Ok51bWJlcjo6ZG91
YmxlVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGRvdWJs
ZT4odGhpcywgX05TX1BSSVZBVEVfU0VMKGRvdWJsZVZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6
Ok51bWJlcjo6Ym9vbFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYm9vbFZhbHVlKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpJbnRlZ2VyIE5TOjpOdW1iZXI6OmludGVnZXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8SW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGludGVn
ZXJWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6Ok51bWJlcjo6dW5zaWduZWRJbnRl
Z2VyVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRl
Z2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodW5zaWduZWRJbnRlZ2VyVmFsdWUpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlN0cmluZyogTlM6Ok51bWJlcjo6c3RyaW5nVmFsdWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChz
dHJpbmdWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6Q29tcGFyaXNvblJlc3VsdCBOUzo6TnVtYmVyOjpj
b21wYXJlKGNvbnN0IE51bWJlciogcE90aGVyTnVtYmVyKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPENvbXBhcmlzb25SZXN1bHQ+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChjb21wYXJlXyksIHBPdGhlck51bWJlcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6Ok51bWJlcjo6aXNF
cXVhbFRvTnVtYmVyKGNvbnN0IE51bWJlciogcE51bWJlcikgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaXNFcXVhbFRv
TnVtYmVyXyksIHBOdW1iZXIpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6TnVtYmVyOjpkZXNj
cmlwdGlvbldpdGhMb2NhbGUoY29uc3QgT2JqZWN0KiBwTG9jYWxlKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChk
ZXNjcmlwdGlvbldpdGhMb2NhbGVfKSwgcExvY2FsZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNPYmpDUnVudGltZS5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iakNSdW50aW1lLmhwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40OGU2NTA2NmU1OGNhNzA1NzQyMGU2ZjU4OWU3OTVhMmVkZmM2YWUwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNPYmpD
UnVudGltZS5ocHAKQEAgLTAsMCArMSw0MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU09iakNSdW50aW1lLmhwcAor
Ly8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0Rl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CisKK19OU19FTlVN
KEludGVnZXIsIENvbXBhcmlzb25SZXN1bHQpIHsKKyAgICBPcmRlcmVkQXNjZW5kaW5nID0gLTEs
CisgICAgT3JkZXJlZFNhbWUgPSAwLAorICAgIE9yZGVyZWREZXNjZW5kaW5nID0gMSwKK307CisK
K2NvbnN0IEludGVnZXIgTm90Rm91bmQgPSBJbnRlZ2VyTWF4OworCit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNPYmplY3QuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNPYmplY3QuaHBwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY0ZTUwYzA1YTEyMDNjNWE2NzBmMGFlNGQ5YjFiNmMyNTExMzhlNDMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iamVjdC5o
cHAKQEAgLTAsMCArMSwzMDAgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNPYmplY3QuaHBwCisvLworLy8gQ29weXJp
Z2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisj
aW5jbHVkZSAiTlNQcml2YXRlLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworI2luY2x1
ZGUgPG9iamMvbWVzc2FnZS5oPgorI2luY2x1ZGUgPG9iamMvcnVudGltZS5oPgorCisjaW5jbHVk
ZSA8dHlwZV90cmFpdHM+CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKKworY2xhc3MgU3RyaW5nOworCit0ZW1wbGF0ZSA8
Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSA9IGNsYXNzIE9iamVjdD4KK2NsYXNzIFJlZmVyZW5j
aW5nIDogcHVibGljIF9CYXNlCit7CitwdWJsaWM6CisgICAgX0NsYXNzKiAgcmV0YWluKCk7Cisg
ICAgdm9pZCAgICAgcmVsZWFzZSgpOworCisgICAgX0NsYXNzKiAgYXV0b3JlbGVhc2UoKTsKKwor
ICAgIFVJbnRlZ2VyIHJldGFpbkNvdW50KCkgY29uc3Q7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3Mg
X0NsYXNzLCBjbGFzcyBfQmFzZSA9IGNsYXNzIE9iamVjdD4KK2NsYXNzIENvcHlpbmcgOiBwdWJs
aWMgUmVmZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT4KK3sKK3B1YmxpYzoKKyAgICBfQ2xhc3MqIGNv
cHkoKSBjb25zdDsKK307CisKK2NsYXNzIE9iamVjdCA6IHB1YmxpYyBSZWZlcmVuY2luZzxPYmpl
Y3QsIG9iamNfb2JqZWN0PgoreworcHVibGljOgorICAgIFVJbnRlZ2VyICAgICAgaGFzaCgpIGNv
bnN0OworICAgIGJvb2wgICAgICAgICAgaXNFcXVhbChjb25zdCBPYmplY3QqIHBPYmplY3QpIGNv
bnN0OworCisgICAgY2xhc3MgU3RyaW5nKiBkZXNjcmlwdGlvbigpIGNvbnN0OworICAgIGNsYXNz
IFN0cmluZyogZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJp
ZW5kIGNsYXNzIFJlZmVyZW5jaW5nPE9iamVjdCwgb2JqY19vYmplY3Q+OworCisgICAgdGVtcGxh
dGUgPGNsYXNzIF9DbGFzcz4KKyAgICBzdGF0aWMgX0NsYXNzKiBhbGxvYyhjb25zdCBjaGFyKiBw
Q2xhc3NOYW1lKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzPgorICAgIHN0YXRpYyBfQ2xh
c3MqIGFsbG9jKGNvbnN0IHZvaWQqIHBDbGFzcyk7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9DbGFz
cz4KKyAgICBfQ2xhc3MqIGluaXQoKTsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBfRHN0PgorICAg
IHN0YXRpYyBfRHN0ICAgICAgICAgICAgICAgICAgIGJyaWRnaW5nQ2FzdChjb25zdCB2b2lkKiBw
T2JqKTsKKyAgICBzdGF0aWMgY2xhc3MgTWV0aG9kU2lnbmF0dXJlKiBtZXRob2RTaWduYXR1cmVG
b3JTZWxlY3Rvcihjb25zdCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IpOworICAgIHN0YXRpYyBi
b29sICAgICAgICAgICAgICAgICAgIHJlc3BvbmRzVG9TZWxlY3Rvcihjb25zdCB2b2lkKiBwT2Jq
LCBTRUwgc2VsZWN0b3IpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfVHlwZT4KKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgZG9lc1JlcXVpcmVNc2dTZW5kU3RyZXQoKTsKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUuLi4gX0FyZ3M+CisgICAgc3RhdGljIF9SZXQgc2Vu
ZE1lc3NhZ2UoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yLCBfQXJncy4uLiBhcmdzKTsK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUuLi4gX0FyZ3M+CisgICAgc3Rh
dGljIF9SZXQgc2VuZE1lc3NhZ2VTYWZlKGNvbnN0IHZvaWQqIHBPYmosIFNFTCBzZWxlY3Rvciwg
X0FyZ3MuLi4gYXJncyk7CisKK3ByaXZhdGU6CisgICAgT2JqZWN0KCkgPSBkZWxldGU7CisgICAg
T2JqZWN0KGNvbnN0IE9iamVjdCYpID0gZGVsZXRlOworICAgIH5PYmplY3QoKSA9IGRlbGV0ZTsK
KworICAgIE9iamVjdCYgb3BlcmF0b3I9KGNvbnN0IE9iamVjdCYpID0gZGVsZXRlOworfTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBs
YXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9CYXNlIC8qID0gT2JqZWN0ICovPgorX05TX0lOTElO
RSBfQ2xhc3MqIE5TOjpSZWZlcmVuY2luZzxfQ2xhc3MsIF9CYXNlPjo6cmV0YWluKCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxfQ2xhc3MqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwocmV0YWluKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSAvKiA9IE9iamVj
dCAqLz4KK19OU19JTkxJTkUgdm9pZCBOUzo6UmVmZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT46OnJl
bGVhc2UoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZB
VEVfU0VMKHJlbGVhc2UpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9CYXNlIC8qID0g
T2JqZWN0ICovPgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpSZWZlcmVuY2luZzxfQ2xhc3MsIF9C
YXNlPjo6YXV0b3JlbGVhc2UoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPF9D
bGFzcyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhdXRvcmVsZWFzZSkpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNsYXNz
IF9DbGFzcywgY2xhc3MgX0Jhc2UgLyogPSBPYmplY3QgKi8+CitfTlNfSU5MSU5FIE5TOjpVSW50
ZWdlciBOUzo6UmVmZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT46OnJldGFpbkNvdW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKHJldGFpbkNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFz
ZSAvKiA9IE9iamVjdCAqLz4KK19OU19JTkxJTkUgX0NsYXNzKiBOUzo6Q29weWluZzxfQ2xhc3Ms
IF9CYXNlPjo6Y29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
X0NsYXNzKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNvcHkpKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfRHN0
PgorX05TX0lOTElORSBfRHN0IE5TOjpPYmplY3Q6OmJyaWRnaW5nQ2FzdChjb25zdCB2b2lkKiBw
T2JqKQoreworI2lmIF9fT0JKQ19fCisgICAgcmV0dXJuIChfX2JyaWRnZSBfRHN0KXBPYmo7Cisj
ZWxzZQorICAgIHJldHVybiAoX0RzdClwT2JqOworI2VuZGlmIC8vIF9fT0JKQ19fCit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgX1R5cGU+CitfTlNfSU5MSU5FIGNvbnN0ZXhwciBib29sIE5TOjpPYmplY3Q6OmRv
ZXNSZXF1aXJlTXNnU2VuZFN0cmV0KCkKK3sKKyNpZiAoZGVmaW5lZChfX2kzODZfXykgfHwgZGVm
aW5lZChfX3g4Nl82NF9fKSkKKyAgICBjb25zdGV4cHIgc2l6ZV90IGtTdHJ1Y3RMaW1pdCA9IChz
aXplb2Yoc3RkOjp1aW50cHRyX3QpIDw8IDEpOworCisgICAgcmV0dXJuIHNpemVvZihfVHlwZSkg
PiBrU3RydWN0TGltaXQ7CisjZWxpZiBkZWZpbmVkKF9fYXJtNjRfXykKKyAgICByZXR1cm4gZmFs
c2U7CisjZWxpZiBkZWZpbmVkKF9fYXJtX18pCisgICAgY29uc3RleHByIHNpemVfdCBrU3RydWN0
TGltaXQgPSBzaXplb2Yoc3RkOjp1aW50cHRyX3QpOworCisgICAgcmV0dXJuIHN0ZDo6aXNfY2xh
c3MoX1R5cGUpICYmIChzaXplb2YoX1R5cGUpID4ga1N0cnVjdExpbWl0KTsKKyNlbHNlCisjZXJy
b3IgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSEiCisjZW5kaWYKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDw+CitfTlNfSU5M
SU5FIGNvbnN0ZXhwciBib29sIE5TOjpPYmplY3Q6OmRvZXNSZXF1aXJlTXNnU2VuZFN0cmV0PHZv
aWQ+KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1JldCwgdHlwZW5h
bWUuLi4gX0FyZ3M+CitfTlNfSU5MSU5FIF9SZXQgTlM6Ok9iamVjdDo6c2VuZE1lc3NhZ2UoY29u
c3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yLCBfQXJncy4uLiBhcmdzKQoreworI2lmIChkZWZp
bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pKQorICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjppc19mbG9hdGluZ19wb2ludDxfUmV0PigpKQorICAgIHsKKyAgICAgICAgdXNpbmcgU2Vu
ZE1lc3NhZ2VQcm9jRnByZXQgPSBfUmV0ICgqKShjb25zdCB2b2lkKiwgU0VMLCBfQXJncy4uLik7
CisKKyAgICAgICAgY29uc3QgU2VuZE1lc3NhZ2VQcm9jRnByZXQgcFByb2MgPSByZWludGVycHJl
dF9jYXN0PFNlbmRNZXNzYWdlUHJvY0ZwcmV0Pigmb2JqY19tc2dTZW5kX2ZwcmV0KTsKKworICAg
ICAgICByZXR1cm4gKCpwUHJvYykocE9iaiwgc2VsZWN0b3IsIGFyZ3MuLi4pOworICAgIH0KKyAg
ICBlbHNlCisjZW5kaWYgLy8gKCBkZWZpbmVkKCBfX2kzODZfXyApICB8fCBkZWZpbmVkKCBfX3g4
Nl82NF9fICkgICkKKyNpZiAhZGVmaW5lZChfX2FybTY0X18pCisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoZG9lc1JlcXVpcmVNc2dTZW5kU3RyZXQ8X1JldD4oKSkKKyAgICB7CisgICAgICAgIHVzaW5n
IFNlbmRNZXNzYWdlUHJvY1N0cmV0ID0gdm9pZCAoKikoX1JldCosIGNvbnN0IHZvaWQqLCBTRUws
IF9BcmdzLi4uKTsKKworICAgICAgICBjb25zdCBTZW5kTWVzc2FnZVByb2NTdHJldCBwUHJvYyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8U2VuZE1lc3NhZ2VQcm9jU3RyZXQ+KCZvYmpjX21zZ1NlbmRfc3Ry
ZXQpOworICAgICAgICBfUmV0ICAgICAgICAgICAgICAgICAgICAgICByZXQ7CisKKyAgICAgICAg
KCpwUHJvYykoJnJldCwgcE9iaiwgc2VsZWN0b3IsIGFyZ3MuLi4pOworCisgICAgICAgIHJldHVy
biByZXQ7CisgICAgfQorICAgIGVsc2UKKyNlbmRpZiAvLyAhZGVmaW5lZCggX19hcm02NF9fICkK
KyAgICB7CisgICAgICAgIHVzaW5nIFNlbmRNZXNzYWdlUHJvYyA9IF9SZXQgKCopKGNvbnN0IHZv
aWQqLCBTRUwsIF9BcmdzLi4uKTsKKworICAgICAgICBjb25zdCBTZW5kTWVzc2FnZVByb2MgcFBy
b2MgPSByZWludGVycHJldF9jYXN0PFNlbmRNZXNzYWdlUHJvYz4oJm9iamNfbXNnU2VuZCk7CisK
KyAgICAgICAgcmV0dXJuICgqcFByb2MpKHBPYmosIHNlbGVjdG9yLCBhcmdzLi4uKTsKKyAgICB9
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpNZXRob2RTaWduYXR1cmUqIE5TOjpPYmplY3Q6Om1ldGhvZFNpZ25hdHVy
ZUZvclNlbGVjdG9yKGNvbnN0IHZvaWQqIHBPYmosIFNFTCBzZWxlY3RvcikKK3sKKyAgICByZXR1
cm4gc2VuZE1lc3NhZ2U8TWV0aG9kU2lnbmF0dXJlKj4ocE9iaiwgX05TX1BSSVZBVEVfU0VMKG1l
dGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yXyksIHNlbGVjdG9yKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6
T2JqZWN0OjpyZXNwb25kc1RvU2VsZWN0b3IoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9y
KQoreworICAgIHJldHVybiBzZW5kTWVzc2FnZTxib29sPihwT2JqLCBfTlNfUFJJVkFURV9TRUwo
cmVzcG9uZHNUb1NlbGVjdG9yXyksIHNlbGVjdG9yKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBfUmV0LCB0
eXBlbmFtZS4uLiBfQXJncz4KK19OU19JTkxJTkUgX1JldCBOUzo6T2JqZWN0OjpzZW5kTWVzc2Fn
ZVNhZmUoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yLCBfQXJncy4uLiBhcmdzKQorewor
ICAgIGlmICgocmVzcG9uZHNUb1NlbGVjdG9yKHBPYmosIHNlbGVjdG9yKSkgfHwgKG51bGxwdHIg
IT0gbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3IocE9iaiwgc2VsZWN0b3IpKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzZW5kTWVzc2FnZTxfUmV0PihwT2JqLCBzZWxlY3RvciwgYXJncy4uLik7
CisgICAgfQorCisgICAgaWYgY29uc3RleHByICghc3RkOjppc192b2lkPF9SZXQ+Ojp2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3M+Citf
TlNfSU5MSU5FIF9DbGFzcyogTlM6Ok9iamVjdDo6YWxsb2MoY29uc3QgY2hhciogcENsYXNzTmFt
ZSkKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8X0NsYXNzKj4ob2JqY19sb29rVXBDbGFzcyhw
Q2xhc3NOYW1lKSwgX05TX1BSSVZBVEVfU0VMKGFsbG9jKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNz
PgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpPYmplY3Q6OmFsbG9jKGNvbnN0IHZvaWQqIHBDbGFz
cykKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8X0NsYXNzKj4ocENsYXNzLCBfTlNfUFJJVkFU
RV9TRUwoYWxsb2MpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3M+CitfTlNfSU5MSU5FIF9DbGFzcyog
TlM6Ok9iamVjdDo6aW5pdCgpCit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlPF9DbGFzcyo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChpbml0KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6T2Jq
ZWN0OjpoYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8VUludGVnZXI+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChoYXNoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6Ok9iamVjdDo6aXNF
cXVhbChjb25zdCBPYmplY3QqIHBPYmplY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpc0VxdWFsXyksIHBPYmplY3QpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6U3RyaW5nKiBOUzo6T2JqZWN0OjpkZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkZXNjcmlw
dGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6T2JqZWN0OjpkZWJ1Z0Rlc2NyaXB0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2VTYWZlPFN0cmluZyo+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChkZWJ1Z0Rlc2NyaXB0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQcml2YXRlLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThh
NGZhNTY3MjIzMjMyMjA2NTRhMWUwYTViMTMxMTFlOGNhNzg3MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAK
QEAgLTAsMCArMSw0ODggQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNQcml2YXRlLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUg
X05TX1BSSVZBVEVfQ0xTKHN5bWJvbCkgKFByaXZhdGU6OkNsYXNzOjpzX2sjI3N5bWJvbCkKKyNk
ZWZpbmUgX05TX1BSSVZBVEVfU0VMKGFjY2Vzc29yKSAoUHJpdmF0ZTo6U2VsZWN0b3I6OnNfayMj
YWNjZXNzb3IpCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjaWYgZGVmaW5lZChOU19QUklWQVRFX0lNUExFTUVOVEFUSU9OKQorCisjZGVmaW5lIF9O
U19QUklWQVRFX1ZJU0lCSUxJVFkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikp
KQorI2RlZmluZSBfTlNfUFJJVkFURV9JTVBPUlQgX19hdHRyaWJ1dGVfXygod2Vha19pbXBvcnQp
KQorCisjaWYgX19PQkpDX18KKyNkZWZpbmUgX05TX1BSSVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Mo
c3ltYm9sKSAoKF9fYnJpZGdlIHZvaWQqKW9iamNfbG9va1VwQ2xhc3MoI3N5bWJvbCkpCisjZWxz
ZQorI2RlZmluZSBfTlNfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpIG9iamNfbG9v
a1VwQ2xhc3MoI3N5bWJvbCkKKyNlbmRpZiAvLyBfX09CSkNfXworCisjZGVmaW5lIF9OU19QUklW
QVRFX0RFRl9DTFMoc3ltYm9sKSB2b2lkKiBzX2sjI3N5bWJvbCBfTlNfUFJJVkFURV9WSVNJQklM
SVRZID0gX05TX1BSSVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKTsKKyNkZWZpbmUgX05T
X1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9TRUwoYWNj
ZXNzb3IsIHN5bWJvbCkgU0VMIHNfayMjYWNjZXNzb3IgX05TX1BSSVZBVEVfVklTSUJJTElUWSA9
IHNlbF9yZWdpc3Rlck5hbWUoc3ltYm9sKTsKKyNkZWZpbmUgX05TX1BSSVZBVEVfREVGX0NPTlNU
KHR5cGUsIHN5bWJvbCkgICAgICAgICAgICAgIFwKKyAgICBfTlNfRVhURVJOIHR5cGUgY29uc3Qg
TlMjI3N5bWJvbCBfTlNfUFJJVkFURV9JTVBPUlQ7IFwKKyAgICB0eXBlIGNvbnN0ICAgICAgICAg
ICAgICAgICAgICAgICBOUzo6c3ltYm9sID0gKG51bGxwdHIgIT0gJk5TIyNzeW1ib2wpID8gTlMj
I3N5bWJvbCA6IG51bGxwdHI7CisKKyNlbHNlCisKKyNkZWZpbmUgX05TX1BSSVZBVEVfREVGX0NM
UyhzeW1ib2wpIGV4dGVybiB2b2lkKiBzX2sjI3N5bWJvbDsKKyNkZWZpbmUgX05TX1BSSVZBVEVf
REVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9TRUwoYWNjZXNzb3IsIHN5
bWJvbCkgZXh0ZXJuIFNFTCBzX2sjI2FjY2Vzc29yOworI2RlZmluZSBfTlNfUFJJVkFURV9ERUZf
Q09OU1QodHlwZSwgc3ltYm9sKQorCisjZW5kaWYgLy8gTlNfUFJJVkFURV9JTVBMRU1FTlRBVElP
TgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFt
ZXNwYWNlIE5TCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBDbGFzcwor
ICAgIHsKKworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TQXJyYXkpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfQ0xTKE5TQXV0b3JlbGVhc2VQb29sKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX0NMUyhOU0J1bmRsZSk7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNDb25k
aXRpb24pOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TRGF0ZSk7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9DTFMoTlNEaWN0aW9uYXJ5KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X0NMUyhOU0Vycm9yKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU051bWJlcik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNPYmplY3QpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfQ0xTKE5TUHJvY2Vzc0luZm8pOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5T
U3RyaW5nKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU1VSTCk7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9DTFMoTlNWYWx1ZSk7CisKKyAgICB9IC8vIENsYXNzCit9IC8vIFByaXZh
dGUKK30gLy8gTVRMCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCituYW1lc3BhY2UgTlMKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFtZXNw
YWNlIFByb3RvY29sCisgICAgeworCisgICAgfSAvLyBQcm90b2NvbAorfSAvLyBQcml2YXRlCit9
IC8vIE5TCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CituYW1lc3BhY2UgTlMKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFtZXNwYWNlIFNl
bGVjdG9yCisgICAgeworCisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYWRkT2JqZWN0XywK
KyAgICAgICAgICAgICJhZGRPYmplY3Q6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
YWN0aXZlUHJvY2Vzc29yQ291bnQsCisgICAgICAgICAgICAiYWN0aXZlUHJvY2Vzc29yQ291bnQi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhbGxCdW5kbGVzLAorICAgICAgICAgICAg
ImFsbEJ1bmRsZXMiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhbGxGcmFtZXdvcmtz
LAorICAgICAgICAgICAgImFsbEZyYW1ld29ya3MiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChhbGxPYmplY3RzLAorICAgICAgICAgICAgImFsbE9iamVjdHMiKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTChhbGxvYywKKyAgICAgICAgICAgICJhbGxvYyIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGFwcFN0b3JlUmVjZWlwdFVSTCwKKyAgICAgICAgICAgICJhcHBT
dG9yZVJlY2VpcHRVUkwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhcmd1bWVudHMs
CisgICAgICAgICAgICAiYXJndW1lbnRzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
YXJyYXksCisgICAgICAgICAgICAiYXJyYXkiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChhcnJheVdpdGhPYmplY3RfLAorICAgICAgICAgICAgImFycmF5V2l0aE9iamVjdDoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhcnJheVdpdGhPYmplY3RzX2NvdW50XywKKyAgICAg
ICAgICAgICJhcnJheVdpdGhPYmplY3RzOmNvdW50OiIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWQsCisgICAgICAgICAgICAi
YXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKGF1dG9yZWxlYXNlLAorICAgICAgICAgICAgImF1dG9yZWxlYXNlIik7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zX3JlYXNvbl8s
CisgICAgICAgICAgICAiYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOnJlYXNvbjoiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChib29sVmFsdWUsCisgICAgICAgICAgICAiYm9vbFZhbHVl
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYnJvYWRjYXN0LAorICAgICAgICAgICAg
ImJyb2FkY2FzdCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1aWx0SW5QbHVnSW5z
UGF0aCwKKyAgICAgICAgICAgICJidWlsdEluUGx1Z0luc1BhdGgiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChidWlsdEluUGx1Z0luc1VSTCwKKyAgICAgICAgICAgICJidWlsdEluUGx1
Z0luc1VSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRsZUlkZW50aWZpZXIs
CisgICAgICAgICAgICAiYnVuZGxlSWRlbnRpZmllciIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGJ1bmRsZVBhdGgsCisgICAgICAgICAgICAiYnVuZGxlUGF0aCIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRsZVVSTCwKKyAgICAgICAgICAgICJidW5kbGVVUkwiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidW5kbGVXaXRoUGF0aF8sCisgICAgICAgICAg
ICAiYnVuZGxlV2l0aFBhdGg6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYnVuZGxl
V2l0aFVSTF8sCisgICAgICAgICAgICAiYnVuZGxlV2l0aFVSTDoiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChjaGFyYWN0ZXJBdEluZGV4XywKKyAgICAgICAgICAgICJjaGFyYWN0ZXJB
dEluZGV4OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNoYXJWYWx1ZSwKKyAgICAg
ICAgICAgICJjaGFyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjb3VudEJ5
RW51bWVyYXRpbmdXaXRoU3RhdGVfb2JqZWN0c19jb3VudF8sCisgICAgICAgICAgICAiY291bnRC
eUVudW1lcmF0aW5nV2l0aFN0YXRlOm9iamVjdHM6Y291bnQ6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoY1N0cmluZ1VzaW5nRW5jb2RpbmdfLAorICAgICAgICAgICAgImNTdHJpbmdV
c2luZ0VuY29kaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNvZGUsCisgICAg
ICAgICAgICAiY29kZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNvbXBhcmVfLAor
ICAgICAgICAgICAgImNvbXBhcmU6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoY29w
eSwKKyAgICAgICAgICAgICJjb3B5Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoY291
bnQsCisgICAgICAgICAgICAiY291bnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChk
YXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93XywKKyAgICAgICAgICAgICJkYXRlV2l0aFRpbWVJ
bnRlcnZhbFNpbmNlTm93OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRlc2NyaXB0
aW9uV2l0aExvY2FsZV8sCisgICAgICAgICAgICAiZGVzY3JpcHRpb25XaXRoTG9jYWxlOiIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbl8s
CisgICAgICAgICAgICAiZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uOiIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbiwKKyAgICAgICAgICAg
ICJkaXNhYmxlU3VkZGVuVGVybWluYXRpb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChkZWJ1Z0Rlc2NyaXB0aW9uLAorICAgICAgICAgICAgImRlYnVnRGVzY3JpcHRpb24iKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICJkZXNj
cmlwdGlvbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRpY3Rpb25hcnksCisgICAg
ICAgICAgICAiZGljdGlvbmFyeSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRpY3Rp
b25hcnlXaXRoT2JqZWN0X2ZvcktleV8sCisgICAgICAgICAgICAiZGljdGlvbmFyeVdpdGhPYmpl
Y3Q6Zm9yS2V5OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRpY3Rpb25hcnlXaXRo
T2JqZWN0c19mb3JLZXlzX2NvdW50XywKKyAgICAgICAgICAgICJkaWN0aW9uYXJ5V2l0aE9iamVj
dHM6Zm9yS2V5czpjb3VudDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkb21haW4s
CisgICAgICAgICAgICAiZG9tYWluIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZG91
YmxlVmFsdWUsCisgICAgICAgICAgICAiZG91YmxlVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChkcmFpbiwKKyAgICAgICAgICAgICJkcmFpbiIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKGVuYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uXywKKyAgICAgICAgICAgICJl
bmFibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChlbmFibGVTdWRkZW5UZXJtaW5hdGlvbiwKKyAgICAgICAgICAgICJlbmFibGVTdWRkZW5UZXJt
aW5hdGlvbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGVuZEFjdGl2aXR5XywKKyAg
ICAgICAgICAgICJlbmRBY3Rpdml0eToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChl
bnZpcm9ubWVudCwKKyAgICAgICAgICAgICJlbnZpcm9ubWVudCIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKGVycm9yV2l0aERvbWFpbl9jb2RlX3VzZXJJbmZvXywKKyAgICAgICAgICAg
ICJlcnJvcldpdGhEb21haW46Y29kZTp1c2VySW5mbzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChleGVjdXRhYmxlUGF0aCwKKyAgICAgICAgICAgICJleGVjdXRhYmxlUGF0aCIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGV4ZWN1dGFibGVVUkwsCisgICAgICAgICAgICAi
ZXhlY3V0YWJsZVVSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbiwKKyAgICAgICAgICAgICJmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24iKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChmaWxlVVJMV2l0aFBhdGhfLAorICAgICAgICAg
ICAgImZpbGVVUkxXaXRoUGF0aDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChmbG9h
dFZhbHVlLAorICAgICAgICAgICAgImZsb2F0VmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChmdWxsVXNlck5hbWUsCisgICAgICAgICAgICAiZnVsbFVzZXJOYW1lIik7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZ2V0VmFsdWVfc2l6ZV8sCisgICAgICAgICAgICAiZ2V0
VmFsdWU6c2l6ZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChnbG9iYWxseVVuaXF1
ZVN0cmluZywKKyAgICAgICAgICAgICJnbG9iYWxseVVuaXF1ZVN0cmluZyIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGhhc2gsCisgICAgICAgICAgICAiaGFzaCIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGhvc3ROYW1lLAorICAgICAgICAgICAgImhvc3ROYW1lIik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5mb0RpY3Rpb25hcnksCisgICAgICAgICAgICAi
aW5mb0RpY3Rpb25hcnkiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0LAorICAg
ICAgICAgICAgImluaXQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0RmlsZVVS
TFdpdGhQYXRoXywKKyAgICAgICAgICAgICJpbml0RmlsZVVSTFdpdGhQYXRoOiIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoQm9vbF8sCisgICAgICAgICAgICAiaW5pdFdp
dGhCb29sOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoQnl0ZXNfb2Jq
Q1R5cGVfLAorICAgICAgICAgICAgImluaXRXaXRoQnl0ZXM6b2JqQ1R5cGU6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhCeXRlc05vQ29weV9sZW5ndGhfZW5jb2Rpbmdf
ZnJlZVdoZW5Eb25lXywKKyAgICAgICAgICAgICJpbml0V2l0aEJ5dGVzTm9Db3B5Omxlbmd0aDpl
bmNvZGluZzpmcmVlV2hlbkRvbmU6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5p
dFdpdGhDaGFyXywKKyAgICAgICAgICAgICJpbml0V2l0aENoYXI6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoaW5pdFdpdGhDb2Rlcl8sCisgICAgICAgICAgICAiaW5pdFdpdGhDb2Rl
cjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aENTdHJpbmdfZW5jb2Rp
bmdfLAorICAgICAgICAgICAgImluaXRXaXRoQ1N0cmluZzplbmNvZGluZzoiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aERvbWFpbl9jb2RlX3VzZXJJbmZvXywKKyAgICAg
ICAgICAgICJpbml0V2l0aERvbWFpbjpjb2RlOnVzZXJJbmZvOiIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKGluaXRXaXRoRG91YmxlXywKKyAgICAgICAgICAgICJpbml0V2l0aERvdWJs
ZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEZsb2F0XywKKyAgICAg
ICAgICAgICJpbml0V2l0aEZsb2F0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlu
aXRXaXRoSW50XywKKyAgICAgICAgICAgICJpbml0V2l0aEludDoiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChpbml0V2l0aExvbmdfLAorICAgICAgICAgICAgImluaXRXaXRoTG9uZzoi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aExvbmdMb25nXywKKyAgICAg
ICAgICAgICJpbml0V2l0aExvbmdMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGluaXRXaXRoT2JqZWN0c19jb3VudF8sCisgICAgICAgICAgICAiaW5pdFdpdGhPYmplY3RzOmNv
dW50OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoT2JqZWN0c19mb3JL
ZXlzX2NvdW50XywKKyAgICAgICAgICAgICJpbml0V2l0aE9iamVjdHM6Zm9yS2V5czpjb3VudDoi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aFBhdGhfLAorICAgICAgICAg
ICAgImluaXRXaXRoUGF0aDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0
aFNob3J0XywKKyAgICAgICAgICAgICJpbml0V2l0aFNob3J0OiIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKGluaXRXaXRoU3RyaW5nXywKKyAgICAgICAgICAgICJpbml0V2l0aFN0cmlu
ZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aFVuc2lnbmVkQ2hhcl8s
CisgICAgICAgICAgICAiaW5pdFdpdGhVbnNpZ25lZENoYXI6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZEludF8sCisgICAgICAgICAgICAiaW5pdFdpdGhV
bnNpZ25lZEludDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aFVuc2ln
bmVkTG9uZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhVbnNpZ25lZExvbmc6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZExvbmdMb25nXywKKyAgICAgICAg
ICAgICJpbml0V2l0aFVuc2lnbmVkTG9uZ0xvbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoaW5pdFdpdGhVbnNpZ25lZFNob3J0XywKKyAgICAgICAgICAgICJpbml0V2l0aFVuc2ln
bmVkU2hvcnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVUkxfLAor
ICAgICAgICAgICAgImluaXRXaXRoVVJMOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGludGVnZXJWYWx1ZSwKKyAgICAgICAgICAgICJpbnRlZ2VyVmFsdWUiKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTChpbnRWYWx1ZSwKKyAgICAgICAgICAgICJpbnRWYWx1ZSIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlzRXF1YWxfLAorICAgICAgICAgICAgImlzRXF1YWw6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaXNFcXVhbFRvTnVtYmVyXywKKyAgICAg
ICAgICAgICJpc0VxdWFsVG9OdW1iZXI6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
aXNFcXVhbFRvU3RyaW5nXywKKyAgICAgICAgICAgICJpc0VxdWFsVG9TdHJpbmc6Iik7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaXNFcXVhbFRvVmFsdWVfLAorICAgICAgICAgICAgImlz
RXF1YWxUb1ZhbHVlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlzaU9TQXBwT25N
YWMsCisgICAgICAgICAgICAiaXNpT1NBcHBPbk1hYyIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGlzTG9hZGVkLAorICAgICAgICAgICAgImlzTG9hZGVkIik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoaXNMb3dQb3dlck1vZGVFbmFibGVkLAorICAgICAgICAgICAgImlzTG93
UG93ZXJNb2RlRW5hYmxlZCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlzTWFjQ2F0
YWx5c3RBcHAsCisgICAgICAgICAgICAiaXNNYWNDYXRhbHlzdEFwcCIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNpb25fLAorICAgICAg
ICAgICAgImlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNpb246Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoa2V5RW51bWVyYXRvciwKKyAgICAgICAgICAgICJrZXlFbnVtZXJhdG9y
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobGVuZ3RoLAorICAgICAgICAgICAgImxl
bmd0aCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxlbmd0aE9mQnl0ZXNVc2luZ0Vu
Y29kaW5nXywKKyAgICAgICAgICAgICJsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2FkLAorICAgICAgICAgICAgImxvYWQiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2FkQW5kUmV0dXJuRXJyb3JfLAorICAgICAgICAg
ICAgImxvYWRBbmRSZXR1cm5FcnJvcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChs
b2NhbGl6ZWREZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICJsb2NhbGl6ZWREZXNjcmlwdGlvbiIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZEZhaWx1cmVSZWFzb24sCisg
ICAgICAgICAgICAibG9jYWxpemVkRmFpbHVyZVJlYXNvbiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKGxvY2FsaXplZEluZm9EaWN0aW9uYXJ5LAorICAgICAgICAgICAgImxvY2FsaXpl
ZEluZm9EaWN0aW9uYXJ5Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobG9jYWxpemVk
UmVjb3ZlcnlPcHRpb25zLAorICAgICAgICAgICAgImxvY2FsaXplZFJlY292ZXJ5T3B0aW9ucyIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlv
biwKKyAgICAgICAgICAgICJsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24iKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChsb2NhbGl6ZWRTdHJpbmdGb3JLZXlfdmFsdWVfdGFibGVfLAor
ICAgICAgICAgICAgImxvY2FsaXplZFN0cmluZ0ZvcktleTp2YWx1ZTp0YWJsZToiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2NrLAorICAgICAgICAgICAgImxvY2siKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChsb25nVmFsdWUsCisgICAgICAgICAgICAibG9uZ1ZhbHVl
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobG9uZ0xvbmdWYWx1ZSwKKyAgICAgICAg
ICAgICJsb25nTG9uZ1ZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobWFpbkJ1
bmRsZSwKKyAgICAgICAgICAgICJtYWluQnVuZGxlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwobWF4aW11bUxlbmd0aE9mQnl0ZXNVc2luZ0VuY29kaW5nXywKKyAgICAgICAgICAgICJt
YXhpbXVtTGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3JfLAorICAgICAgICAgICAgIm1ldGhv
ZFNpZ25hdHVyZUZvclNlbGVjdG9yOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG11
dGFibGVCeXRlcywKKyAgICAgICAgICAgICJtdXRhYmxlQnl0ZXMiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChuYW1lLAorICAgICAgICAgICAgIm5hbWUiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChuZXh0T2JqZWN0LAorICAgICAgICAgICAgIm5leHRPYmplY3QiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoQm9vbF8sCisgICAgICAgICAgICAi
bnVtYmVyV2l0aEJvb2w6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0
aENoYXJfLAorICAgICAgICAgICAgIm51bWJlcldpdGhDaGFyOiIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKG51bWJlcldpdGhEb3VibGVfLAorICAgICAgICAgICAgIm51bWJlcldpdGhE
b3VibGU6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aEZsb2F0XywK
KyAgICAgICAgICAgICJudW1iZXJXaXRoRmxvYXQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwobnVtYmVyV2l0aEludF8sCisgICAgICAgICAgICAibnVtYmVyV2l0aEludDoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoTG9uZ18sCisgICAgICAgICAgICAi
bnVtYmVyV2l0aExvbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0
aExvbmdMb25nXywKKyAgICAgICAgICAgICJudW1iZXJXaXRoTG9uZ0xvbmc6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aFNob3J0XywKKyAgICAgICAgICAgICJudW1i
ZXJXaXRoU2hvcnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aFVu
c2lnbmVkQ2hhcl8sCisgICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkQ2hhcjoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoVW5zaWduZWRJbnRfLAorICAgICAg
ICAgICAgIm51bWJlcldpdGhVbnNpZ25lZEludDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChudW1iZXJXaXRoVW5zaWduZWRMb25nXywKKyAgICAgICAgICAgICJudW1iZXJXaXRoVW5z
aWduZWRMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhVbnNp
Z25lZExvbmdMb25nXywKKyAgICAgICAgICAgICJudW1iZXJXaXRoVW5zaWduZWRMb25nTG9uZzoi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoVW5zaWduZWRTaG9ydF8s
CisgICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkU2hvcnQ6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwob2JqQ1R5cGUsCisgICAgICAgICAgICAib2JqQ1R5cGUiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChvYmplY3QsCisgICAgICAgICAgICAib2JqZWN0Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob2JqZWN0QXRJbmRleF8sCisgICAgICAgICAgICAi
b2JqZWN0QXRJbmRleDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChvYmplY3RGb3JJ
bmZvRGljdGlvbmFyeUtleV8sCisgICAgICAgICAgICAib2JqZWN0Rm9ySW5mb0RpY3Rpb25hcnlL
ZXk6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob2JqZWN0Rm9yS2V5XywKKyAgICAg
ICAgICAgICJvYmplY3RGb3JLZXk6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob3Bl
cmF0aW5nU3lzdGVtLAorICAgICAgICAgICAgIm9wZXJhdGluZ1N5c3RlbSIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKG9wZXJhdGluZ1N5c3RlbVZlcnNpb24sCisgICAgICAgICAgICAi
b3BlcmF0aW5nU3lzdGVtVmVyc2lvbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG9w
ZXJhdGluZ1N5c3RlbVZlcnNpb25TdHJpbmcsCisgICAgICAgICAgICAib3BlcmF0aW5nU3lzdGVt
VmVyc2lvblN0cmluZyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBhdGhGb3JBdXhp
bGlhcnlFeGVjdXRhYmxlXywKKyAgICAgICAgICAgICJwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJs
ZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwZXJmb3JtQWN0aXZpdHlXaXRoT3B0
aW9uc19yZWFzb25fdXNpbmdCbG9ja18sCisgICAgICAgICAgICAicGVyZm9ybUFjdGl2aXR5V2l0
aE9wdGlvbnM6cmVhc29uOnVzaW5nQmxvY2s6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwocGVyZm9ybUV4cGlyaW5nQWN0aXZpdHlXaXRoUmVhc29uX3VzaW5nQmxvY2tfLAorICAgICAg
ICAgICAgInBlcmZvcm1FeHBpcmluZ0FjdGl2aXR5V2l0aFJlYXNvbjp1c2luZ0Jsb2NrOiIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBoeXNpY2FsTWVtb3J5LAorICAgICAgICAgICAg
InBoeXNpY2FsTWVtb3J5Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocG9pbnRlclZh
bHVlLAorICAgICAgICAgICAgInBvaW50ZXJWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKHByZWZsaWdodEFuZFJldHVybkVycm9yXywKKyAgICAgICAgICAgICJwcmVmbGlnaHRB
bmRSZXR1cm5FcnJvcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwcml2YXRlRnJh
bWV3b3Jrc1BhdGgsCisgICAgICAgICAgICAicHJpdmF0ZUZyYW1ld29ya3NQYXRoIik7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJpdmF0ZUZyYW1ld29ya3NVUkwsCisgICAgICAgICAg
ICAicHJpdmF0ZUZyYW1ld29ya3NVUkwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChw
cm9jZXNzSWRlbnRpZmllciwKKyAgICAgICAgICAgICJwcm9jZXNzSWRlbnRpZmllciIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHByb2Nlc3NJbmZvLAorICAgICAgICAgICAgInByb2Nl
c3NJbmZvIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJvY2Vzc05hbWUsCisgICAg
ICAgICAgICAicHJvY2Vzc05hbWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwcm9j
ZXNzb3JDb3VudCwKKyAgICAgICAgICAgICJwcm9jZXNzb3JDb3VudCIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKHJhbmdlT2ZTdHJpbmdfb3B0aW9uc18sCisgICAgICAgICAgICAicmFu
Z2VPZlN0cmluZzpvcHRpb25zOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHJlbGVh
c2UsCisgICAgICAgICAgICAicmVsZWFzZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHJlc291cmNlUGF0aCwKKyAgICAgICAgICAgICJyZXNvdXJjZVBhdGgiKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVVSTCwKKyAgICAgICAgICAgICJyZXNvdXJjZVVSTCIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHJlc3BvbmRzVG9TZWxlY3Rvcl8sCisgICAg
ICAgICAgICAicmVzcG9uZHNUb1NlbGVjdG9yOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKHJldGFpbiwKKyAgICAgICAgICAgICJyZXRhaW4iKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChyZXRhaW5Db3VudCwKKyAgICAgICAgICAgICJyZXRhaW5Db3VudCIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKHNldEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJs
ZWRfLAorICAgICAgICAgICAgInNldEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWQ6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2V0UHJvY2Vzc05hbWVfLAorICAgICAg
ICAgICAgInNldFByb2Nlc3NOYW1lOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHNo
YXJlZEZyYW1ld29ya3NQYXRoLAorICAgICAgICAgICAgInNoYXJlZEZyYW1ld29ya3NQYXRoIik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2hhcmVkRnJhbWV3b3Jrc1VSTCwKKyAgICAg
ICAgICAgICJzaGFyZWRGcmFtZXdvcmtzVVJMIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoc2hhcmVkU3VwcG9ydFBhdGgsCisgICAgICAgICAgICAic2hhcmVkU3VwcG9ydFBhdGgiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzaGFyZWRTdXBwb3J0VVJMLAorICAgICAgICAg
ICAgInNoYXJlZFN1cHBvcnRVUkwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzaG9y
dFZhbHVlLAorICAgICAgICAgICAgInNob3J0VmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChzaG93UG9vbHMsCisgICAgICAgICAgICAic2hvd1Bvb2xzIik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoc2lnbmFsLAorICAgICAgICAgICAgInNpZ25hbCIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKHN0cmluZywKKyAgICAgICAgICAgICJzdHJpbmciKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzdHJpbmdWYWx1ZSwKKyAgICAgICAgICAgICJzdHJp
bmdWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHN0cmluZ1dpdGhTdHJpbmdf
LAorICAgICAgICAgICAgInN0cmluZ1dpdGhTdHJpbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoc3RyaW5nV2l0aENTdHJpbmdfZW5jb2RpbmdfLAorICAgICAgICAgICAgInN0cmlu
Z1dpdGhDU3RyaW5nOmVuY29kaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHN0
cmluZ0J5QXBwZW5kaW5nU3RyaW5nXywKKyAgICAgICAgICAgICJzdHJpbmdCeUFwcGVuZGluZ1N0
cmluZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzeXN0ZW1VcHRpbWUsCisgICAg
ICAgICAgICAic3lzdGVtVXB0aW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodGhl
cm1hbFN0YXRlLAorICAgICAgICAgICAgInRoZXJtYWxTdGF0ZSIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKHVubG9hZCwKKyAgICAgICAgICAgICJ1bmxvYWQiKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTCh1bmxvY2ssCisgICAgICAgICAgICAidW5sb2NrIik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwodW5zaWduZWRDaGFyVmFsdWUsCisgICAgICAgICAgICAidW5z
aWduZWRDaGFyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bnNpZ25lZElu
dGVnZXJWYWx1ZSwKKyAgICAgICAgICAgICJ1bnNpZ25lZEludGVnZXJWYWx1ZSIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKHVuc2lnbmVkSW50VmFsdWUsCisgICAgICAgICAgICAidW5z
aWduZWRJbnRWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVuc2lnbmVkTG9u
Z1ZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkTG9uZ1ZhbHVlIik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwodW5zaWduZWRMb25nTG9uZ1ZhbHVlLAorICAgICAgICAgICAgInVuc2ln
bmVkTG9uZ0xvbmdWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVuc2lnbmVk
U2hvcnRWYWx1ZSwKKyAgICAgICAgICAgICJ1bnNpZ25lZFNob3J0VmFsdWUiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChVUkxGb3JBdXhpbGlhcnlFeGVjdXRhYmxlXywKKyAgICAgICAg
ICAgICJVUkxGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKHVzZXJJbmZvLAorICAgICAgICAgICAgInVzZXJJbmZvIik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwodXNlck5hbWUsCisgICAgICAgICAgICAidXNlck5hbWUiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChVVEY4U3RyaW5nLAorICAgICAgICAgICAgIlVURjhTdHJp
bmciKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh2YWx1ZVdpdGhCeXRlc19vYmpDVHlw
ZV8sCisgICAgICAgICAgICAidmFsdWVXaXRoQnl0ZXM6b2JqQ1R5cGU6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwodmFsdWVXaXRoUG9pbnRlcl8sCisgICAgICAgICAgICAidmFsdWVX
aXRoUG9pbnRlcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh3YWl0LAorICAgICAg
ICAgICAgIndhaXQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh3YWl0VW50aWxEYXRl
XywKKyAgICAgICAgICAgICJ3YWl0VW50aWxEYXRlOiIpOworICAgIH0gLy8gQ2xhc3MKK30gLy8g
UHJpdmF0ZQorfSAvLyBNVEwKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9OU1Byb2Nlc3NJbmZvLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TUHJvY2Vzc0luZm8uaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4ZTMxNDdmZThhN2M2
OGQyZmFjYzNhNmVkNDc3ZjY3NTFlZTVkZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1Byb2Nlc3NJbmZvLmhwcApAQCAtMCww
ICsxLDM1NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gRm91bmRhdGlvbi9OU1Byb2Nlc3NJbmZvLmhwcAorLy8KKy8vIENvcHlyaWdodCAy
MDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk5TTm90aWZpY2F0aW9uLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVk
ZSAiTlNQcml2YXRlLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCituYW1lc3BhY2UgTlMKK3sKK19OU19DT05TVChOb3RpZmljYXRpb25OYW1lLCBQcm9jZXNz
SW5mb1RoZXJtYWxTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbik7CitfTlNfQ09OU1QoTm90aWZp
Y2F0aW9uTmFtZSwgUHJvY2Vzc0luZm9Qb3dlclN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKTsK
KworX05TX0VOVU0oTlM6OkludGVnZXIsIFByb2Nlc3NJbmZvVGhlcm1hbFN0YXRlKSB7CisgICAg
UHJvY2Vzc0luZm9UaGVybWFsU3RhdGVOb21pbmFsID0gMCwKKyAgICBQcm9jZXNzSW5mb1RoZXJt
YWxTdGF0ZUZhaXIgPSAxLAorICAgIFByb2Nlc3NJbmZvVGhlcm1hbFN0YXRlU2VyaW91cyA9IDIs
CisgICAgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVDcml0aWNhbCA9IDMKK307CisKK19OU19PUFRJ
T05TKHN0ZDo6dWludDY0X3QsIEFjdGl2aXR5T3B0aW9ucykgeworICAgIEFjdGl2aXR5SWRsZURp
c3BsYXlTbGVlcERpc2FibGVkID0gKDFVTEwgPDwgNDApLAorICAgIEFjdGl2aXR5SWRsZVN5c3Rl
bVNsZWVwRGlzYWJsZWQgPSAoMVVMTCA8PCAyMCksCisgICAgQWN0aXZpdHlTdWRkZW5UZXJtaW5h
dGlvbkRpc2FibGVkID0gKDFVTEwgPDwgMTQpLAorICAgIEFjdGl2aXR5QXV0b21hdGljVGVybWlu
YXRpb25EaXNhYmxlZCA9ICgxVUxMIDw8IDE1KSwKKyAgICBBY3Rpdml0eVVzZXJJbml0aWF0ZWQg
PSAoMHgwMEZGRkZGRlVMTCB8IEFjdGl2aXR5SWRsZVN5c3RlbVNsZWVwRGlzYWJsZWQpLAorICAg
IEFjdGl2aXR5VXNlckluaXRpYXRlZEFsbG93aW5nSWRsZVN5c3RlbVNsZWVwID0gKEFjdGl2aXR5
VXNlckluaXRpYXRlZCAmIH5BY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2FibGVkKSwKKyAgICBB
Y3Rpdml0eUJhY2tncm91bmQgPSAweDAwMDAwMEZGVUxMLAorICAgIEFjdGl2aXR5TGF0ZW5jeUNy
aXRpY2FsID0gMHhGRjAwMDAwMDAwVUxMLAorfTsKKworY2xhc3MgUHJvY2Vzc0luZm8gOiBwdWJs
aWMgUmVmZXJlbmNpbmc8UHJvY2Vzc0luZm8+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIFByb2Nl
c3NJbmZvKiAgICAgcHJvY2Vzc0luZm8oKTsKKworICAgIGNsYXNzIEFycmF5KiAgICAgICAgICAg
IGFyZ3VtZW50cygpIGNvbnN0OworICAgIGNsYXNzIERpY3Rpb25hcnkqICAgICAgIGVudmlyb25t
ZW50KCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgICAgICAgaG9zdE5hbWUoKSBjb25z
dDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBwcm9jZXNzTmFtZSgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgIHNldFByb2Nlc3NOYW1lKGNvbnN0IFN0cmluZyogcFN0
cmluZyk7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0lkZW50aWZpZXIoKSBj
b25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBnbG9iYWxseVVuaXF1ZVN0cmluZygp
IGNvbnN0OworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgICAgICAgdXNlck5hbWUoKSBjb25zdDsK
KyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBmdWxsVXNlck5hbWUoKSBjb25zdDsKKworICAg
IFVJbnRlZ2VyICAgICAgICAgICAgICAgIG9wZXJhdGluZ1N5c3RlbSgpIGNvbnN0OworICAgIE9w
ZXJhdGluZ1N5c3RlbVZlcnNpb24gIG9wZXJhdGluZ1N5c3RlbVZlcnNpb24oKSBjb25zdDsKKyAg
ICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uU3RyaW5nKCkg
Y29uc3Q7CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgaXNPcGVyYXRpbmdTeXN0ZW1BdExl
YXN0VmVyc2lvbihPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIHZlcnNpb24pIGNvbnN0OworCisgICAg
VUludGVnZXIgICAgICAgICAgICAgICAgcHJvY2Vzc29yQ291bnQoKSBjb25zdDsKKyAgICBVSW50
ZWdlciAgICAgICAgICAgICAgICBhY3RpdmVQcm9jZXNzb3JDb3VudCgpIGNvbnN0OworICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyAgICAgIHBoeXNpY2FsTWVtb3J5KCkgY29uc3Q7CisgICAgVGltZUlu
dGVydmFsICAgICAgICAgICAgc3lzdGVtVXB0aW1lKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICBkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKTsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICBlbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uKGNvbnN0IGNsYXNzIFN0
cmluZyogcFJlYXNvbik7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZW5hYmxlQXV0b21h
dGljVGVybWluYXRpb24oY29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uKTsKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgICBhdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgc2V0QXV0b21hdGljVGVybWluYXRpb25T
dXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQpOworCisgICAgY2xhc3MgT2JqZWN0KiAgICAgICAg
ICAgYmVnaW5BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgY2xhc3MgU3Ry
aW5nKiBwUmVhc29uKTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBlbmRBY3Rpdml0eShj
bGFzcyBPYmplY3QqIHBBY3Rpdml0eSk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgcGVy
Zm9ybUFjdGl2aXR5KEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zLCBjb25zdCBjbGFzcyBTdHJpbmcq
IHBSZWFzb24sIHZvaWQgKF5ibG9jaykodm9pZCkpOworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgIHBlcmZvcm1BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgY2xhc3Mg
U3RyaW5nKiBwUmVhc29uLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmMpOworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1FeHBpcmluZ0FjdGl2aXR5KGNvbnN0IGNs
YXNzIFN0cmluZyogcFJlYXNvbiwgdm9pZCAoXmJsb2NrKShib29sIGV4cGlyZWQpKTsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICBwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShjb25zdCBjbGFz
cyBTdHJpbmcqIHBSZWFzb24sIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChib29sIGV4cGlyZWQp
PiYgZnVuYyk7CisKKyAgICBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZSB0aGVybWFsU3RhdGUoKSBj
b25zdDsKKyAgICBib29sICAgICAgICAgICAgICAgICAgICBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQo
KSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGlzaU9TQXBwT25NYWMoKSBj
b25zdDsKKyAgICBib29sICAgICAgICAgICAgICAgICAgICBpc01hY0NhdGFseXN0QXBwKCkgY29u
c3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpOb3RpZmljYXRpb25OYW1lLCBQcm9jZXNz
SW5mb1RoZXJtYWxTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbik7CitfTlNfUFJJVkFURV9ERUZf
Q09OU1QoTlM6Ok5vdGlmaWNhdGlvbk5hbWUsIFByb2Nlc3NJbmZvUG93ZXJTdGF0ZURpZENoYW5n
ZU5vdGlmaWNhdGlvbik7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpQcm9jZXNzSW5mbyogTlM6OlByb2Nlc3NJbmZvOjpw
cm9jZXNzSW5mbygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8UHJvY2Vzc0lu
Zm8qPihfTlNfUFJJVkFURV9DTFMoTlNQcm9jZXNzSW5mbyksIF9OU19QUklWQVRFX1NFTChwcm9j
ZXNzSW5mbykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpQcm9jZXNzSW5mbzo6YXJndW1lbnRz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChhcmd1bWVudHMpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE5T
OjpQcm9jZXNzSW5mbzo6ZW52aXJvbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZW52aXJvbm1l
bnQpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZvOjpob3N0TmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGhvc3ROYW1lKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpQcm9jZXNz
SW5mbzo6cHJvY2Vzc05hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwcm9jZXNzTmFtZSkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6c2V0UHJvY2Vzc05hbWUoY29uc3QgU3RyaW5nKiBwU3Ry
aW5nKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKHNldFByb2Nlc3NOYW1lXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBpbnQgTlM6OlByb2Nlc3NJ
bmZvOjpwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8aW50Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc0lkZW50aWZpZXIpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZvOjpnbG9iYWxseVVuaXF1ZVN0cmlu
ZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKGdsb2JhbGx5VW5pcXVlU3RyaW5nKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpT
dHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6dXNlck5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodXNl
ck5hbWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZvOjpmdWxsVXNlck5h
bWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxTdHJpbmcq
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZnVsbFVzZXJOYW1lKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50
ZWdlciBOUzo6UHJvY2Vzc0luZm86Om9wZXJhdGluZ1N5c3RlbSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChv
cGVyYXRpbmdTeXN0ZW0pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok9wZXJhdGluZ1N5c3RlbVZlcnNpb24gTlM6
OlByb2Nlc3NJbmZvOjpvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwob3BlcmF0aW5nU3lzdGVtVmVyc2lvbikpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5n
KiBOUzo6UHJvY2Vzc0luZm86Om9wZXJhdGluZ1N5c3RlbVZlcnNpb25TdHJpbmcoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklW
QVRFX1NFTChvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uU3RyaW5nKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6
OlByb2Nlc3NJbmZvOjppc09wZXJhdGluZ1N5c3RlbUF0TGVhc3RWZXJzaW9uKE9wZXJhdGluZ1N5
c3RlbVZlcnNpb24gdmVyc2lvbikgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaXNPcGVyYXRpbmdTeXN0ZW1BdExlYXN0
VmVyc2lvbl8pLCB2ZXJzaW9uKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpQcm9jZXNzSW5m
bzo6cHJvY2Vzc29yQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc29yQ291bnQpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpQcm9jZXNzSW5mbzo6YWN0aXZlUHJvY2Vzc29yQ291bnQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoYWN0aXZlUHJvY2Vzc29yQ291bnQpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdW5zaWdu
ZWQgbG9uZyBsb25nIE5TOjpQcm9jZXNzSW5mbzo6cGh5c2ljYWxNZW1vcnkoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVkIGxvbmcgbG9uZz4odGhpcywg
X05TX1BSSVZBVEVfU0VMKHBoeXNpY2FsTWVtb3J5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpUaW1lSW50ZXJ2
YWwgTlM6OlByb2Nlc3NJbmZvOjpzeXN0ZW1VcHRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPFRpbWVJbnRlcnZhbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHN5
c3RlbVVwdGltZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZGlzYWJsZVN1ZGRl
blRlcm1pbmF0aW9uKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTx2b2lkPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZv
aWQgTlM6OlByb2Nlc3NJbmZvOjplbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGVuYWJsZVN1
ZGRlblRlcm1pbmF0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZvOjpkaXNhYmxl
QXV0b21hdGljVGVybWluYXRpb24oY29uc3QgU3RyaW5nKiBwUmVhc29uKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2VTYWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkaXNhYmxlQXV0
b21hdGljVGVybWluYXRpb25fKSwgcFJlYXNvbik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJ
bmZvOjplbmFibGVBdXRvbWF0aWNUZXJtaW5hdGlvbihjb25zdCBTdHJpbmcqIHBSZWFzb24pCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGVuYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uXyksIHBSZWFzb24pOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5T
OjpQcm9jZXNzSW5mbzo6YXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChhdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IHZvaWQgTlM6OlByb2Nlc3NJbmZvOjpzZXRBdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTx2b2lkPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwoc2V0QXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxl
ZF8pLCBlbmFibGVkKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok9iamVjdCogTlM6OlByb2Nlc3NJbmZvOjpiZWdp
bkFjdGl2aXR5KEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zLCBjb25zdCBTdHJpbmcqIHBSZWFzb24p
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8T2JqZWN0Kj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uc19yZWFzb25fKSwgb3B0aW9ucywgcFJl
YXNvbik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZvOjplbmRBY3Rpdml0eShPYmplY3Qq
IHBBY3Rpdml0eSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChlbmRBY3Rpdml0eV8pLCBwQWN0aXZpdHkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQ
cm9jZXNzSW5mbzo6cGVyZm9ybUFjdGl2aXR5KEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zLCBjb25z
dCBTdHJpbmcqIHBSZWFzb24sIHZvaWQgKF5ibG9jaykodm9pZCkpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocGVyZm9ybUFjdGl2aXR5V2l0
aE9wdGlvbnNfcmVhc29uX3VzaW5nQmxvY2tfKSwgb3B0aW9ucywgcFJlYXNvbiwgYmxvY2spOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6cGVyZm9ybUFjdGl2aXR5KEFjdGl2aXR5T3B0
aW9ucyBvcHRpb25zLCBjb25zdCBTdHJpbmcqIHBSZWFzb24sIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgX19ibG9jayBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
YmxvY2tGdW5jdGlvbiA9IGZ1bmN0aW9uOworCisgICAgcGVyZm9ybUFjdGl2aXR5KG9wdGlvbnMs
IHBSZWFzb24sIF4oKSB7IGJsb2NrRnVuY3Rpb24oKTsgfSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OlBy
b2Nlc3NJbmZvOjpwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShjb25zdCBTdHJpbmcqIHBSZWFzb24s
IHZvaWQgKF5ibG9jaykoYm9vbCBleHBpcmVkKSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
U2FmZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocGVyZm9ybUV4cGlyaW5nQWN0aXZpdHlX
aXRoUmVhc29uX3VzaW5nQmxvY2tfKSwgcFJlYXNvbiwgYmxvY2spOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5T
OjpQcm9jZXNzSW5mbzo6cGVyZm9ybUV4cGlyaW5nQWN0aXZpdHkoY29uc3QgU3RyaW5nKiBwUmVh
c29uLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBleHBpcmVkKT4mIGZ1bmN0aW9uKQor
eworICAgIF9fYmxvY2sgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wgZXhwaXJlZCk+IGJsb2NrRnVu
Y3Rpb24gPSBmdW5jdGlvbjsKKworICAgIHBlcmZvcm1FeHBpcmluZ0FjdGl2aXR5KHBSZWFzb24s
IF4oYm9vbCBleHBpcmVkKSB7IGJsb2NrRnVuY3Rpb24oZXhwaXJlZCk7IH0pOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6UHJvY2Vzc0luZm9UaGVybWFsU3RhdGUgTlM6OlByb2Nlc3NJbmZvOjp0aGVybWFsU3RhdGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFByb2Nlc3NJbmZvVGhl
cm1hbFN0YXRlPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodGhlcm1hbFN0YXRlKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IGJvb2wgTlM6OlByb2Nlc3NJbmZvOjppc0xvd1Bvd2VyTW9kZUVuYWJsZWQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwoaXNMb3dQb3dlck1vZGVFbmFibGVkKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlByb2Nlc3NJ
bmZvOjppc2lPU0FwcE9uTWFjKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZVNhZmU8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzaU9TQXBwT25NYWMpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgYm9vbCBOUzo6UHJvY2Vzc0luZm86OmlzTWFjQ2F0YWx5c3RBcHAoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwoaXNNYWNDYXRhbHlzdEFwcCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9Gb3VuZGF0aW9uL05TUmFuZ2UuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI0NjdkNjBjZWUzM2Fi
MjhiMDgxZTBkMmRkNTM3Mjg3NjViMGE4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUmFuZ2UuaHBwCkBAIC0wLDAgKzEsODMg
QEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8v
IEZvdW5kYXRpb24vTlNSYW5nZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhw
cCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25h
bWVzcGFjZSBOUworeworc3RydWN0IFJhbmdlCit7CisgICAgc3RhdGljIFJhbmdlIE1ha2UoVUlu
dGVnZXIgbG9jLCBVSW50ZWdlciBsZW4pOworCisgICAgUmFuZ2UoVUludGVnZXIgbG9jLCBVSW50
ZWdlciBsZW4pOworCisgICAgYm9vbCAgICAgRXF1YWwoY29uc3QgUmFuZ2UmIHJhbmdlKSBjb25z
dDsKKyAgICBib29sICAgICBMb2NhdGlvbkluUmFuZ2UoVUludGVnZXIgbG9jKSBjb25zdDsKKyAg
ICBVSW50ZWdlciBNYXgoKSBjb25zdDsKKworICAgIFVJbnRlZ2VyIGxvY2F0aW9uOworICAgIFVJ
bnRlZ2VyIGxlbmd0aDsKK30gX05TX1BBQ0tFRDsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlJhbmdlOjpSYW5nZShV
SW50ZWdlciBsb2MsIFVJbnRlZ2VyIGxlbikKKyAgICA6IGxvY2F0aW9uKGxvYykKKyAgICAsIGxl
bmd0aChsZW4pCit7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpSYW5nZSBOUzo6UmFuZ2U6Ok1ha2UoVUludGVnZXIg
bG9jLCBVSW50ZWdlciBsZW4pCit7CisgICAgcmV0dXJuIFJhbmdlKGxvYywgbGVuKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgYm9vbCBOUzo6UmFuZ2U6OkVxdWFsKGNvbnN0IFJhbmdlJiByYW5nZSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gKGxvY2F0aW9uID09IHJhbmdlLmxvY2F0aW9uKSAmJiAobGVuZ3RoID09IHJhbmdl
Lmxlbmd0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlJhbmdlOjpMb2NhdGlvbkluUmFuZ2UoVUludGVn
ZXIgbG9jKSBjb25zdAoreworICAgIHJldHVybiAoIShsb2MgPCBsb2NhdGlvbikpICYmICgobG9j
IC0gbG9jYXRpb24pIDwgbGVuZ3RoKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpSYW5nZTo6
TWF4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbG9jYXRpb24gKyBsZW5ndGg7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNTdHJpbmcuaHBwIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNTdHJpbmcuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgyOWRlY2I5MDFmNzM1ZTE0ZTg3ZjBlYmU4ZmQ5MTdhYTRlMDJmOTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1N0
cmluZy5ocHAKQEAgLTAsMCArMSwyNDUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNTdHJpbmcuaHBwCisvLworLy8g
Q29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5o
cHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisj
aW5jbHVkZSAiTlNSYW5nZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sK
K19OU19FTlVNKE5TOjpVSW50ZWdlciwgU3RyaW5nRW5jb2RpbmcpIHsKKyAgICBBU0NJSVN0cmlu
Z0VuY29kaW5nID0gMSwKKyAgICBORVhUU1RFUFN0cmluZ0VuY29kaW5nID0gMiwKKyAgICBKYXBh
bmVzZUVVQ1N0cmluZ0VuY29kaW5nID0gMywKKyAgICBVVEY4U3RyaW5nRW5jb2RpbmcgPSA0LAor
ICAgIElTT0xhdGluMVN0cmluZ0VuY29kaW5nID0gNSwKKyAgICBTeW1ib2xTdHJpbmdFbmNvZGlu
ZyA9IDYsCisgICAgTm9uTG9zc3lBU0NJSVN0cmluZ0VuY29kaW5nID0gNywKKyAgICBTaGlmdEpJ
U1N0cmluZ0VuY29kaW5nID0gOCwKKyAgICBJU09MYXRpbjJTdHJpbmdFbmNvZGluZyA9IDksCisg
ICAgVW5pY29kZVN0cmluZ0VuY29kaW5nID0gMTAsCisgICAgV2luZG93c0NQMTI1MVN0cmluZ0Vu
Y29kaW5nID0gMTEsCisgICAgV2luZG93c0NQMTI1MlN0cmluZ0VuY29kaW5nID0gMTIsCisgICAg
V2luZG93c0NQMTI1M1N0cmluZ0VuY29kaW5nID0gMTMsCisgICAgV2luZG93c0NQMTI1NFN0cmlu
Z0VuY29kaW5nID0gMTQsCisgICAgV2luZG93c0NQMTI1MFN0cmluZ0VuY29kaW5nID0gMTUsCisg
ICAgSVNPMjAyMkpQU3RyaW5nRW5jb2RpbmcgPSAyMSwKKyAgICBNYWNPU1JvbWFuU3RyaW5nRW5j
b2RpbmcgPSAzMCwKKworICAgIFVURjE2U3RyaW5nRW5jb2RpbmcgPSBVbmljb2RlU3RyaW5nRW5j
b2RpbmcsCisKKyAgICBVVEYxNkJpZ0VuZGlhblN0cmluZ0VuY29kaW5nID0gMHg5MDAwMDEwMCwK
KyAgICBVVEYxNkxpdHRsZUVuZGlhblN0cmluZ0VuY29kaW5nID0gMHg5NDAwMDEwMCwKKworICAg
IFVURjMyU3RyaW5nRW5jb2RpbmcgPSAweDhjMDAwMTAwLAorICAgIFVURjMyQmlnRW5kaWFuU3Ry
aW5nRW5jb2RpbmcgPSAweDk4MDAwMTAwLAorICAgIFVURjMyTGl0dGxlRW5kaWFuU3RyaW5nRW5j
b2RpbmcgPSAweDljMDAwMTAwCit9OworCitfTlNfT1BUSU9OUyhOUzo6VUludGVnZXIsIFN0cmlu
Z0NvbXBhcmVPcHRpb25zKSB7CisgICAgQ2FzZUluc2Vuc2l0aXZlU2VhcmNoID0gMSwKKyAgICBM
aXRlcmFsU2VhcmNoID0gMiwKKyAgICBCYWNrd2FyZHNTZWFyY2ggPSA0LAorICAgIEFuY2hvcmVk
U2VhcmNoID0gOCwKKyAgICBOdW1lcmljU2VhcmNoID0gNjQsCisgICAgRGlhY3JpdGljSW5zZW5z
aXRpdmVTZWFyY2ggPSAxMjgsCisgICAgV2lkdGhJbnNlbnNpdGl2ZVNlYXJjaCA9IDI1NiwKKyAg
ICBGb3JjZWRPcmRlcmluZ1NlYXJjaCA9IDUxMiwKKyAgICBSZWd1bGFyRXhwcmVzc2lvblNlYXJj
aCA9IDEwMjQKK307CisKK3VzaW5nIHVuaWNoYXIgPSB1bnNpZ25lZCBzaG9ydDsKKworY2xhc3Mg
U3RyaW5nIDogcHVibGljIENvcHlpbmc8U3RyaW5nPgoreworcHVibGljOgorICAgIHN0YXRpYyBT
dHJpbmcqIHN0cmluZygpOworICAgIHN0YXRpYyBTdHJpbmcqIHN0cmluZyhjb25zdCBTdHJpbmcq
IHBTdHJpbmcpOworICAgIHN0YXRpYyBTdHJpbmcqIHN0cmluZyhjb25zdCBjaGFyKiBwU3RyaW5n
LCBTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7CisKKyAgICBzdGF0aWMgU3RyaW5nKiBhbGxvYygp
OworICAgIFN0cmluZyogICAgICAgIGluaXQoKTsKKyAgICBTdHJpbmcqICAgICAgICBpbml0KGNv
bnN0IFN0cmluZyogcFN0cmluZyk7CisgICAgU3RyaW5nKiAgICAgICAgaW5pdChjb25zdCBjaGFy
KiBwU3RyaW5nLCBTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7CisgICAgU3RyaW5nKiAgICAgICAg
aW5pdCh2b2lkKiBwQnl0ZXMsIFVJbnRlZ2VyIGxlbiwgU3RyaW5nRW5jb2RpbmcgZW5jb2Rpbmcs
IGJvb2wgZnJlZUJ1ZmZlcik7CisKKyAgICB1bmljaGFyICAgICAgICBjaGFyYWN0ZXIoVUludGVn
ZXIgaW5kZXgpIGNvbnN0OworICAgIFVJbnRlZ2VyICAgICAgIGxlbmd0aCgpIGNvbnN0OworCisg
ICAgY29uc3QgY2hhciogICAgY1N0cmluZyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3Q7
CisgICAgY29uc3QgY2hhciogICAgdXRmOFN0cmluZygpIGNvbnN0OworICAgIFVJbnRlZ2VyICAg
ICAgIG1heGltdW1MZW5ndGhPZkJ5dGVzKFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKSBjb25zdDsK
KyAgICBVSW50ZWdlciAgICAgICBsZW5ndGhPZkJ5dGVzKFN0cmluZ0VuY29kaW5nIGVuY29kaW5n
KSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgIGlzRXF1YWxUb1N0cmluZyhjb25zdCBTdHJp
bmcqIHBTdHJpbmcpIGNvbnN0OworICAgIFJhbmdlICAgICAgICAgIHJhbmdlT2ZTdHJpbmcoY29u
c3QgU3RyaW5nKiBwU3RyaW5nLCBTdHJpbmdDb21wYXJlT3B0aW9ucyBvcHRpb25zKSBjb25zdDsK
KworICAgIGNvbnN0IGNoYXIqICAgIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigpIGNvbnN0Owor
CisgICAgU3RyaW5nKiAgICAgICAgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmcoY29uc3QgU3RyaW5n
KiBwU3RyaW5nKSBjb25zdDsKKworfTsKKwordGVtcGxhdGU8IHN0ZDo6c2l6ZV90IF9TdHJpbmdM
ZW4gPgorY29uc3RleHByIGNvbnN0IFN0cmluZyogTWFrZUNvbnN0YW50U3RyaW5nKCBjb25zdCBj
aGFyICggJnN0ciApW19TdHJpbmdMZW5dICkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDwgY29uc3QgU3RyaW5nKiA+KCBfX0NGU3RyaW5nTWFrZUNvbnN0YW50U3RyaW5nKCBzdHIgKSAp
OworfQorCit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OnN0cmluZygpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4oX05TX1BSSVZBVEVfQ0xTKE5TU3Ry
aW5nKSwgX05TX1BSSVZBVEVfU0VMKHN0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6
U3RyaW5nOjpzdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KF9OU19QUklWQVRFX0NMUyhOU1N0cmluZyksIF9OU19Q
UklWQVRFX1NFTChzdHJpbmdXaXRoU3RyaW5nXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3Ry
aW5nKiBOUzo6U3RyaW5nOjpzdHJpbmcoY29uc3QgY2hhciogcFN0cmluZywgU3RyaW5nRW5jb2Rp
bmcgZW5jb2RpbmcpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4o
X05TX1BSSVZBVEVfQ0xTKE5TU3RyaW5nKSwgX05TX1BSSVZBVEVfU0VMKHN0cmluZ1dpdGhDU3Ry
aW5nX2VuY29kaW5nXyksIHBTdHJpbmcsIGVuY29kaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyog
TlM6OlN0cmluZzo6YWxsb2MoKQoreworICAgIHJldHVybiBPYmplY3Q6OmFsbG9jPFN0cmluZz4o
X05TX1BSSVZBVEVfQ0xTKE5TU3RyaW5nKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJp
bmc6OmluaXQoKQoreworICAgIHJldHVybiBPYmplY3Q6OmluaXQ8U3RyaW5nPigpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KGNvbnN0IFN0cmluZyogcFN0cmluZykKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwoaW5pdFdpdGhTdHJpbmdfKSwgcFN0cmluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5T
OjpTdHJpbmc6OmluaXQoY29uc3QgY2hhciogcFN0cmluZywgU3RyaW5nRW5jb2RpbmcgZW5jb2Rp
bmcpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGluaXRXaXRoQ1N0cmluZ19lbmNvZGluZ18pLCBwU3RyaW5nLCBlbmNvZGlu
Zyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OmluaXQodm9pZCogcEJ5dGVzLCBV
SW50ZWdlciBsZW4sIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nLCBib29sIGZyZWVCdWZmZXIpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGluaXRXaXRoQnl0ZXNOb0NvcHlfbGVuZ3RoX2VuY29kaW5nX2ZyZWVXaGVuRG9uZV8p
LCBwQnl0ZXMsIGxlbiwgZW5jb2RpbmcsIGZyZWVCdWZmZXIpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6dW5pY2hh
ciBOUzo6U3RyaW5nOjpjaGFyYWN0ZXIoVUludGVnZXIgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5pY2hhcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNo
YXJhY3RlckF0SW5kZXhfKSwgaW5kZXgpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OlN0cmlu
Zzo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50
ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxlbmd0aCkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBjb25zdCBjaGFy
KiBOUzo6U3RyaW5nOjpjU3RyaW5nKFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNvbnN0IGNoYXIqPih0aGlzLCBfTlNfUFJJ
VkFURV9TRUwoY1N0cmluZ1VzaW5nRW5jb2RpbmdfKSwgZW5jb2RpbmcpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBjb25z
dCBjaGFyKiBOUzo6U3RyaW5nOjp1dGY4U3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxjb25zdCBjaGFyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKFVURjhT
dHJpbmcpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpTdHJpbmc6Om1heGltdW1MZW5ndGhP
ZkJ5dGVzKFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobWF4aW11bUxl
bmd0aE9mQnl0ZXNVc2luZ0VuY29kaW5nXyksIGVuY29kaW5nKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRl
Z2VyIE5TOjpTdHJpbmc6Omxlbmd0aE9mQnl0ZXMoU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZ18pLCBlbmNvZGluZyk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIGJvb2wgTlM6OlN0cmluZzo6aXNFcXVhbFRvU3RyaW5nKGNvbnN0IE5TOjpTdHJpbmcq
IHBTdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGlzRXF1YWxUb1N0cmluZ18pLCBwU3RyaW5nKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlJhbmdlIE5TOjpTdHJpbmc6OnJhbmdlT2ZTdHJpbmcoY29uc3QgTlM6OlN0cmluZyog
cFN0cmluZywgTlM6OlN0cmluZ0NvbXBhcmVPcHRpb25zIG9wdGlvbnMpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8UmFuZ2U+KHRoaXMsIF9OU19QUklWQVRFX1NFTChy
YW5nZU9mU3RyaW5nX29wdGlvbnNfKSwgcFN0cmluZywgb3B0aW9ucyk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGNvbnN0IGNoYXIq
IE5TOjpTdHJpbmc6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Y29uc3QgY2hhcio+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlN0
cmluZzo6c3RyaW5nQnlBcHBlbmRpbmdTdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmdfKSwgcFN0cmluZyk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNUeXBlcy5ocHAg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1R5cGVzLmhwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ZjhhZGExMmNlOGZiZmIzY2E5NmI4ZDU4NTYyMjQ2MTcxOWU4N2U0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNUeXBlcy5ocHAKQEAgLTAsMCArMSw1MSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU1R5cGVzLmhwcAorLy8KKy8v
IENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMu
aHBwIgorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNs
dWRlIDxjc3RkaW50PgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworbmFtZXNwYWNlIE5TCit7Cit1c2luZyBUaW1lSW50ZXJ2YWwgPSBkb3VibGU7CisK
K3VzaW5nIEludGVnZXIgPSBzdGQ6OmludHB0cl90OwordXNpbmcgVUludGVnZXIgPSBzdGQ6OnVp
bnRwdHJfdDsKKworY29uc3QgSW50ZWdlciAgSW50ZWdlck1heCA9IElOVFBUUl9NQVg7Citjb25z
dCBJbnRlZ2VyICBJbnRlZ2VyTWluID0gSU5UUFRSX01JTjsKK2NvbnN0IFVJbnRlZ2VyIFVJbnRl
Z2VyTWF4ID0gVUlOVFBUUl9NQVg7CisKK3N0cnVjdCBPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uCit7
CisgICAgSW50ZWdlciBtYWpvclZlcnNpb247CisgICAgSW50ZWdlciBtaW5vclZlcnNpb247Cisg
ICAgSW50ZWdlciBwYXRjaFZlcnNpb247Cit9IF9OU19QQUNLRUQ7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExMGU3
YTIwNzcwNzM0ZGZkYTJjZGU3NzRkYWE0YzQzMjI0ZGRiZDAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1VSTC5ocHAKQEAgLTAs
MCArMSw5MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gRm91bmRhdGlvbi9OU1VSTC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU09i
amVjdC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhw
cCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25h
bWVzcGFjZSBOUworeworY2xhc3MgVVJMIDogcHVibGljIENvcHlpbmc8VVJMPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBVUkwqIGZpbGVVUkxXaXRoUGF0aChjb25zdCBjbGFzcyBTdHJpbmcqIHBQ
YXRoKTsKKworICAgIHN0YXRpYyBVUkwqIGFsbG9jKCk7CisgICAgVVJMKiAgICAgICAgaW5pdCgp
OworICAgIFVSTCogICAgICAgIGluaXQoY29uc3QgY2xhc3MgU3RyaW5nKiBwU3RyaW5nKTsKKyAg
ICBVUkwqICAgICAgICBpbml0RmlsZVVSTFdpdGhQYXRoKGNvbnN0IGNsYXNzIFN0cmluZyogcFBh
dGgpOworCisgICAgY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCkgY29uc3Q7
Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjpmaWxlVVJMV2l0aFBhdGgoY29uc3QgU3Ry
aW5nKiBwUGF0aCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPihfTlNf
UFJJVkFURV9DTFMoTlNVUkwpLCBfTlNfUFJJVkFURV9TRUwoZmlsZVVSTFdpdGhQYXRoXyksIHBQ
YXRoKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OlVSTDo6YWxsb2MoKQoreworICAgIHJldHVybiBP
YmplY3Q6OmFsbG9jPFVSTD4oX05TX1BSSVZBVEVfQ0xTKE5TVVJMKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpV
UkwqIE5TOjpVUkw6OmluaXQoKQoreworICAgIHJldHVybiBPYmplY3Q6OmluaXQ8VVJMPigpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjppbml0KGNvbnN0IFN0cmluZyogcFN0cmluZykKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoaW5pdFdpdGhTdHJpbmdfKSwgcFN0cmluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpVUkw6
OmluaXRGaWxlVVJMV2l0aFBhdGgoY29uc3QgU3RyaW5nKiBwUGF0aCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdEZpbGVV
UkxXaXRoUGF0aF8pLCBwUGF0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGNvbnN0IGNoYXIqIE5TOjpVUkw6OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Y29uc3QgY2hhcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTElDRU5T
RS50eHQgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTElDRU5TRS50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWU3NDNjNjdlOWZkMzY0OWNjMGUxYzg2YjkxMTFlZTFlYTI1OTM5NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9MSUNFTlNFLnR4dApAQCAt
MCwwICsxLDIwMiBAQAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUg
TGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkg
MjAwNAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzLworCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFO
RCBESVNUUklCVVRJT04KKworICAgMS4gRGVmaW5pdGlvbnMuCisKKyAgICAgICJMaWNlbnNlIiBz
aGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24s
CisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdo
IDkgb2YgdGhpcyBkb2N1bWVudC4KKworICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBj
b3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAgIHRoZSBjb3B5cmln
aHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KKworICAgICAgIkxlZ2FsIEVu
dGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAor
ICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3Ig
YXJlIHVuZGVyIGNvbW1vbgorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhl
IHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKKyAgICAgICJjb250cm9sIiBtZWFucyAoaSkg
dGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQorICAgICAgZGlyZWN0
aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IK
KyAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAl
KSBvciBtb3JlIG9mIHRoZQorICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5l
ZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworICAgICAgIllvdSIgKG9yICJZb3Vy
Iikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgZXhlcmNp
c2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgICAgIlNvdXJj
ZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNh
dGlvbnMsCisgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJj
ZSBjb2RlLCBkb2N1bWVudGF0aW9uCisgICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZp
bGVzLgorCisgICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5n
IGZyb20gbWVjaGFuaWNhbAorICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2Yg
YSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAorICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGls
ZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAorICAgICAgYW5kIGNvbnZl
cnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgorCisgICAgICAiV29yayIgc2hhbGwgbWVhbiB0
aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgorICAgICAgT2JqZWN0
IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkg
YQorICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVk
IHRvIHRoZSB3b3JrCisgICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5k
aXggYmVsb3cpLgorCisgICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29y
aywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0CisgICAgICBmb3JtLCB0aGF0IGlzIGJhc2Vk
IG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCisgICAgICBl
ZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBt
b2RpZmljYXRpb25zCisgICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdv
cmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcworICAgICAgb2YgdGhpcyBMaWNlbnNl
LCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCisg
ICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8g
dGhlIGludGVyZmFjZXMgb2YsCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0
aGVyZW9mLgorCisgICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1
dGhvcnNoaXAsIGluY2x1ZGluZworICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdv
cmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucworICAgICAgdG8gdGhhdCBXb3Jr
IG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CisgICAg
ICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUg
Y29weXJpZ2h0IG93bmVyCisgICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0
eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKKyAgICAgIHRoZSBjb3B5cmlnaHQg
b3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgor
ICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNv
bW11bmljYXRpb24gc2VudAorICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRh
dGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KKyAgICAgIGNvbW11bmljYXRpb24g
b24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMs
CisgICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBv
ciBvbiBiZWhhbGYgb2YsIHRoZQorICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRp
c2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0CisgICAgICBleGNsdWRpbmcgY29t
bXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQorICAg
ICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBh
IENvbnRyaWJ1dGlvbi4iCisKKyAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNv
ciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBvbiBiZWhhbGYgb2Yg
d2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKKyAg
ICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgorCisgICAyLiBH
cmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRp
dGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3Jh
bnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwg
bm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICBjb3B5cmlnaHQgbGlj
ZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKKyAgICAgIHB1
YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmli
dXRlIHRoZQorICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBv
ciBPYmplY3QgZm9ybS4KKworICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3Qg
dG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2gg
Q29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3Js
ZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJs
ZQorICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5z
ZSB0byBtYWtlLCBoYXZlIG1hZGUsCisgICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGlt
cG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKKyAgICAgIHdoZXJlIHN1Y2gg
bGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCisg
ICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBi
eSB0aGVpcgorICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9m
IHRoZWlyIENvbnRyaWJ1dGlvbihzKQorICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNo
IENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKKyAgICAgIGluc3RpdHV0ZSBw
YXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhCisgICAgICBj
cm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRo
ZSBXb3JrCisgICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBX
b3JrIGNvbnN0aXR1dGVzIGRpcmVjdAorICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZy
aW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworICAgICAgZ3JhbnRlZCB0byBZb3Ug
dW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCisgICAgICBh
cyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKKyAgIDQuIFJlZGlzdHJp
YnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCisg
ICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRo
IG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0
IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CisgICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9uczoKKworICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2Yg
dGhlIFdvcmsgb3IKKyAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExp
Y2Vuc2U7IGFuZAorCisgICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVz
IHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBj
aGFuZ2VkIHRoZSBmaWxlczsgYW5kCisKKyAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRo
ZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcworICAgICAgICAgIHRoYXQgWW91
IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKKyAgICAg
ICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3Jr
LAorICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4g
dG8gYW55IHBhcnQgb2YKKyAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCisKKyAg
ICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0
IG9mIGl0cworICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3Jr
cyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKKyAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUg
Y29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKKyAgICAgICAgICB3aXRo
aW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QK
KyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBp
biBhdCBsZWFzdCBvbmUKKyAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGlu
IGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAorICAgICAgICAgIGFzIHBhcnQgb2YgdGhl
IERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IKKyAgICAgICAgICBk
b2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtz
OyBvciwKKyAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZh
dGl2ZSBXb3JrcywgaWYgYW5kCisgICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBu
b3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCisgICAgICAgICAgb2YgdGhlIE5P
VElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAorICAgICAg
ICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJp
YnV0aW9uCisgICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlv
dSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKKyAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0
aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKKyAgICAgICAgICB0aGF0IHN1
Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKKyAg
ICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgIFlvdSBtYXkgYWRkIFlv
dXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAorICAg
ICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQg
Y29uZGl0aW9ucworICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24g
b2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgorICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUg
V29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCisgICAgICByZXByb2R1Y3Rpb24s
IGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKKyAg
ICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisKKyAgIDUuIFN1Ym1p
c3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVy
d2lzZSwKKyAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9y
IGluY2x1c2lvbiBpbiB0aGUgV29yaworICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFs
bCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5z
ZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgorICAgICAgTm90
d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9y
IG1vZGlmeQorICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVu
dCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKKyAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1
Y2ggQ29udHJpYnV0aW9ucy4KKworICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMg
bm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQorICAgICAgbmFtZXMsIHRyYWRl
bWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAor
ICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNl
IGluIGRlc2NyaWJpbmcgdGhlCisgICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVj
aW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KKworICAgNy4gRGlzY2xhaW1lciBv
ZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCisgICAgICBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNo
CisgICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFT
IElTIiBCQVNJUywKKyAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRo
b3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKKyAgICAgIG9mIFRJ
VExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEK
KyAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9y
IGRldGVybWluaW5nIHRoZQorICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlz
dHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CisgICAgICByaXNrcyBhc3NvY2lhdGVk
IHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCisK
KyAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8g
bGVnYWwgdGhlb3J5LAorICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5j
ZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCisgICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQorICAgICAgbmVnbGln
ZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3Ig
YmUKKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0
LCBpbmRpcmVjdCwgc3BlY2lhbCwKKyAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwg
ZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQorICAgICAgcmVzdWx0IG9mIHRo
aXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQorICAg
ICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9m
IGdvb2R3aWxsLAorICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxm
dW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKKyAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBv
ciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhhcyBiZWVuIGFkdmlz
ZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KKworICAgOS4gQWNjZXB0aW5n
IFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZwor
ICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29z
ZSB0byBvZmZlciwKKyAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1
cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCisgICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2Js
aWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcworICAgICAgTGljZW5z
ZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9u
bHkKKyAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmls
aXR5LCBub3Qgb24gYmVoYWxmCisgICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBv
bmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCisgICAgICBkZWZlbmQsIGFuZCBob2xkIGVh
Y2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKKyAgICAgIGluY3VycmVk
IGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFz
b24KKyAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9u
YWwgbGlhYmlsaXR5LgorCisgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKworICAgQVBQ
RU5ESVg6IEhvdyB0byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLgorCisg
ICAgICBUbyBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLCBhdHRhY2ggdGhl
IGZvbGxvd2luZworICAgICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRoIHRoZSBmaWVsZHMgZW5j
bG9zZWQgYnkgYnJhY2tldHMgIltdIgorICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVu
dGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKKyAgICAgIHRoZSBicmFja2V0cyEp
ICBUaGUgdGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICBj
b21tZW50IHN5bnRheCBmb3IgdGhlIGZpbGUgZm9ybWF0LiBXZSBhbHNvIHJlY29tbWVuZCB0aGF0
IGEKKyAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBi
ZSBpbmNsdWRlZCBvbiB0aGUKKyAgICAgIHNhbWUgInByaW50ZWQgcGFnZSIgYXMgdGhlIGNvcHly
aWdodCBub3RpY2UgZm9yIGVhc2llcgorICAgICAgaWRlbnRpZmljYXRpb24gd2l0aGluIHRoaXJk
LXBhcnR5IGFyY2hpdmVzLgorCisgICBDb3B5cmlnaHQgwqkgMjAyMSBBcHBsZSBJbmMuCisKKyAg
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisKKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKworICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAg
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNDU2Yzg3MTIyN2RiOWM0MjBiMTdh
YTcxNTdmOGY4NTFlZGU2ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcApAQCAtMCwwICsx
LDkzMiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVk
ZSAiTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcCIKKyNpbmNsdWRlICJNVExBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVUeXBlcy5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorI2luY2x1
ZGUgIk1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcCIKKworbmFtZXNwYWNlIE1UTAor
eworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgQWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2Up
IHsKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZU5vbmUgPSAwLAorICAgIEFjY2VsZXJh
dGlvblN0cnVjdHVyZVVzYWdlUmVmaXQgPSAxLAorICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZVVz
YWdlUHJlZmVyRmFzdEJ1aWxkID0gMiwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZUV4
dGVuZGVkTGltaXRzID0gNCwKK307CisKK19NVExfT1BUSU9OUyh1aW50MzJfdCwgQWNjZWxlcmF0
aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25zKSB7CisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJl
SW5zdGFuY2VPcHRpb25Ob25lID0gMCwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5j
ZU9wdGlvbkRpc2FibGVUcmlhbmdsZUN1bGxpbmcgPSAxLAorICAgIEFjY2VsZXJhdGlvblN0cnVj
dHVyZUluc3RhbmNlT3B0aW9uVHJpYW5nbGVGcm9udEZhY2luZ1dpbmRpbmdDb3VudGVyQ2xvY2t3
aXNlID0gMiwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlvbk9wYXF1ZSA9
IDQsCisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25Ob25PcGFxdWUgPSA4
LAorfTsKKworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBO
Uzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBhbGxvYygp
OworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogICAgICAgIGlu
aXQoKTsKKworICAgIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2UgICAgICAgICAgICAg
ICB1c2FnZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRVc2FnZShNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlIHVzYWdl
KTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvciA6
IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0
b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUdl
b21ldHJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZUdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
T2Zmc2V0KE5TOjpVSW50ZWdlciBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0KTsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wYXF1ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldE9wYXF1ZShib29sIG9wYXF1ZSk7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0R1cGxp
Y2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFsbG93RHVw
bGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uKGJvb2wgYWxsb3dEdXBsaWNhdGVJ
bnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24pOworCisgICAgTlM6OlN0cmluZyogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRM
YWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7Cit9OworCitfTVRMX0VOVU0odWludDMyX3Qs
IE1vdGlvbkJvcmRlck1vZGUpIHsKKyAgICBNb3Rpb25Cb3JkZXJNb2RlQ2xhbXAgPSAwLAorICAg
IE1vdGlvbkJvcmRlck1vZGVWYW5pc2ggPSAxLAorfTsKKworY2xhc3MgUHJpbWl0aXZlQWNjZWxl
cmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxQcmltaXRpdmVB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yLCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFByaW1pdGl2ZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBQcmltaXRp
dmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAg
TlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl
b21ldHJ5RGVzY3JpcHRvcnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0R2VvbWV0cnlEZXNjcmlwdG9ycyhjb25z
dCBOUzo6QXJyYXkqIGdlb21ldHJ5RGVzY3JpcHRvcnMpOworCisgICAgTVRMOjpNb3Rpb25Cb3Jk
ZXJNb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvblN0YXJ0Qm9yZGVy
TW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRNb3Rpb25TdGFydEJvcmRlck1vZGUoTVRMOjpNb3Rpb25Cb3Jk
ZXJNb2RlIG1vdGlvblN0YXJ0Qm9yZGVyTW9kZSk7CisKKyAgICBNVEw6Ok1vdGlvbkJvcmRlck1v
ZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW90aW9uRW5kQm9yZGVyTW9kZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRNb3Rpb25FbmRCb3JkZXJNb2RlKE1UTDo6TW90aW9uQm9yZGVyTW9kZSBt
b3Rpb25FbmRCb3JkZXJNb2RlKTsKKworICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25TdGFydFRpbWUoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TW90aW9uU3RhcnRUaW1lKGZsb2F0IG1vdGlvblN0YXJ0VGltZSk7CisKKyAgICBmbG9hdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW90aW9uRW5kVGlt
ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRNb3Rpb25FbmRUaW1lKGZsb2F0IG1vdGlvbkVuZFRpbWUpOworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1vdGlvbktleWZyYW1lQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW90aW9uS2V5ZnJhbWVDb3VudChO
Uzo6VUludGVnZXIgbW90aW9uS2V5ZnJhbWVDb3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpQcmlt
aXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiAgZGVzY3JpcHRvcigpOworfTsK
KworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3Ig
OiBwdWJsaWMgTlM6OkNvcHlpbmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRy
eURlc2NyaXB0b3IsIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9y
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlh
bmdsZUdlb21ldHJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisg
ICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJ0ZXhCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleEJ1ZmZlcihj
b25zdCBjbGFzcyBCdWZmZXIqIHZlcnRleEJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEJ1ZmZl
ck9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50
ZWdlciB2ZXJ0ZXhCdWZmZXJPZmZzZXQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhTdHJpZGUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFZlcnRleFN0cmlkZShOUzo6VUludGVnZXIgdmVydGV4U3RyaWRlKTsK
KworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kZXhCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluZGV4QnVmZmVy
KGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEJ1ZmZl
ck9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRl
Z2VyIGluZGV4QnVmZmVyT2Zmc2V0KTsKKworICAgIE1UTDo6SW5kZXhUeXBlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhUeXBlKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRJbmRleFR5cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHJpYW5nbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VHJpYW5nbGVDb3VudChOUzo6
VUludGVnZXIgdHJpYW5nbGVDb3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogIGRlc2NyaXB0b3IoKTsKK307CisK
K2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9y
IDogcHVibGljIE5TOjpDb3B5aW5nPEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yLCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3Jp
cHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJl
Qm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGlu
aXQoKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3hCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldEJvdW5kaW5nQm94QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYm91bmRpbmdCb3hC
dWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib3VuZGluZ0JveEJ1ZmZlck9mZnNldCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIGJvdW5k
aW5nQm94QnVmZmVyT2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3hTdHJpZGUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEJvdW5kaW5nQm94U3RyaWRlKE5TOjpVSW50ZWdlciBib3Vu
ZGluZ0JveFN0cmlkZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94Q291bnQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEJvdW5kaW5nQm94Q291bnQoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94
Q291bnQpOworCisgICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdC
b3hHZW9tZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitjbGFzcyBNb3Rpb25L
ZXlmcmFtZURhdGEgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPE1vdGlvbktleWZyYW1lRGF0YT4K
K3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgTW90aW9uS2V5ZnJhbWVEYXRhKiBhbGxvYygp
OworCisgICAgY2xhc3MgTW90aW9uS2V5ZnJhbWVEYXRhKiAgICAgICAgaW5pdCgpOworCisgICAg
Y2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICAgYnVmZmVyKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZl
ciogYnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgIG9mZnNl
dCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9mZnNl
dChOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIHN0YXRpYyBNVEw6Ok1vdGlvbktleWZyYW1l
RGF0YSogIGRhdGEoKTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRy
aWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yLCBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0
b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Ucmlh
bmdsZUdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpBcnJheSog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmVydGV4QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4QnVmZmVycyhj
b25zdCBOUzo6QXJyYXkqIHZlcnRleEJ1ZmZlcnMpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhT
dHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleFN0cmlkZShOUzo6VUludGVn
ZXIgdmVydGV4U3RyaWRlKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhCdWZmZXIoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEluZGV4QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhC
dWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEJ1ZmZlck9mZnNldCgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0SW5kZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVy
T2Zmc2V0KTsKKworICAgIE1UTDo6SW5kZXhUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhUeXBlKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRJbmRleFR5cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKTsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJpYW5nbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VHJpYW5nbGVD
b3VudChOUzo6VUludGVnZXIgdHJpYW5nbGVDb3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogIGRlc2Ny
aXB0b3IoKTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5n
Qm94R2VvbWV0cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEFjY2VsZXJhdGlvblN0
cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yLCBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2Ny
aXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25C
b3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpB
cnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm91bmRpbmdCb3hCdWZmZXJzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRCb3VuZGluZ0JveEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiBib3VuZGluZ0JveEJ1ZmZlcnMp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib3VuZGluZ0JveFN0cmlkZSgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hTdHJpZGUoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94
U3RyaWRlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3hDb3VudCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hDb3VudChOUzo6VUludGVnZXIgYm91bmRp
bmdCb3hDb3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rp
b25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogIGRlc2NyaXB0b3IoKTsKK307CisKK3N0
cnVjdCBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3IKK3sKKyAgICBNVEw6
OlBhY2tlZEZsb2F0NHgzICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1hdGlvbk1hdHJp
eDsKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlT3B0aW9ucyBvcHRpb25z
OworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s7Cisg
ICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZU9mZnNldDsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbmRleDsKK30gX01UTF9QQUNLRUQ7CisK
K3N0cnVjdCBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2VySURJbnN0YW5jZURlc2NyaXB0b3IKK3sK
KyAgICBNVEw6OlBhY2tlZEZsb2F0NHgzICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1h
dGlvbk1hdHJpeDsKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlT3B0aW9u
cyBvcHRpb25zOworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hc2s7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldDsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbmRleDsKKyAgICB1aW50
MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySUQ7Cit9IF9NVExfUEFD
S0VEOworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0
YW5jZURlc2NyaXB0b3JUeXBlKSB7CisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VE
ZXNjcmlwdG9yVHlwZURlZmF1bHQgPSAwLAorICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3Rh
bmNlRGVzY3JpcHRvclR5cGVVc2VySUQgPSAxLAorICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZUlu
c3RhbmNlRGVzY3JpcHRvclR5cGVNb3Rpb24gPSAyLAorfTsKKworc3RydWN0IEFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvbkluc3RhbmNlRGVzY3JpcHRvcgoreworICAgIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25zIG9wdGlvbnM7CisgICAgdWludDMyX3QgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzazsKKyAgICB1aW50MzJfdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0Owor
ICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VsZXJhdGlv
blN0cnVjdHVyZUluZGV4OworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVzZXJJRDsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtb3Rpb25UcmFuc2Zvcm1zU3RhcnRJbmRleDsKKyAgICB1aW50MzJfdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25UcmFuc2Zvcm1zQ291bnQ7CisgICAgTVRMOjpN
b3Rpb25Cb3JkZXJNb2RlICAgICAgICAgICAgICAgICAgICAgbW90aW9uU3RhcnRCb3JkZXJNb2Rl
OworICAgIE1UTDo6TW90aW9uQm9yZGVyTW9kZSAgICAgICAgICAgICAgICAgICAgIG1vdGlvbkVu
ZEJvcmRlck1vZGU7CisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW90aW9uU3RhcnRUaW1lOworICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vdGlvbkVuZFRpbWU7Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBJbnN0YW5j
ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SW5z
dGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yLCBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEluc3RhbmNl
QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIElu
c3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKwor
ICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluc3RhbmNlRGVzY3JpcHRv
ckJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcik7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnN0YW5jZURl
c2NyaXB0b3JCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZl
ck9mZnNldCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnN0YW5jZURlc2NyaXB0b3JTdHJpZGUoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnN0
YW5jZURlc2NyaXB0b3JTdHJpZGUoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVzY3JpcHRvclN0cmlk
ZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnN0YW5jZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VDb3VudChOUzo6VUlu
dGVnZXIgaW5zdGFuY2VDb3VudCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVz
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0SW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcyhjb25zdCBOUzo6
QXJyYXkqIGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMpOworCisgICAgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlICAgICAgaW5zdGFuY2VEZXNj
cmlwdG9yVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldEluc3RhbmNlRGVzY3JpcHRvclR5cGUoTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlIGluc3RhbmNlRGVzY3JpcHRv
clR5cGUpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbW90aW9uVHJhbnNmb3JtQnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW90aW9uVHJh
bnNmb3JtQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogbW90aW9uVHJhbnNmb3JtQnVmZmVyKTsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblRyYW5z
Zm9ybUJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgbW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1vdGlvblRyYW5zZm9ybUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW90aW9uVHJhbnNmb3Jt
Q291bnQoTlM6OlVJbnRlZ2VyIG1vdGlvblRyYW5zZm9ybUNvdW50KTsKKworICAgIHN0YXRpYyBN
VEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogIGRlc2NyaXB0b3Io
KTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlLCBSZXNvdXJjZT4KK3sKK3B1YmxpYzoKKyAgICBO
Uzo6VUludGVnZXIgc2l6ZSgpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9y
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IpKTsK
K30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogdXNhZ2UKK19NVExfSU5MSU5F
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2UgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVEZXNjcmlwdG9yOjp1c2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh1c2FnZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlRGVzY3JpcHRvcjo6c2V0VXNhZ2UoTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2Fn
ZSB1c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VXNhZ2VfKSwgdXNhZ2UpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxv
YworX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0
b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlR2VvbWV0cnlEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0
cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRy
eURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OmludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0KSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRy
eURlc2NyaXB0b3I6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQoTlM6OlVJbnRl
Z2VyIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVPZmZzZXRfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBvcGFxdWUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6Om9wYXF1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChvcGFxdWUp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21l
dHJ5RGVzY3JpcHRvcjo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPcGFxdWVfKSwgb3BhcXVl
KTsKK30KKworLy8gcHJvcGVydHk6IGFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25J
bnZvY2F0aW9uCitfTVRMX0lOTElORSBib29sIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2Vv
bWV0cnlEZXNjcmlwdG9yOjphbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2Nh
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52
b2NhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRBbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0
aW9uSW52b2NhdGlvbihib29sIGFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZv
Y2F0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRBbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbl8p
LCBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbik7Cit9CisKKy8v
IHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9J
TkxJTkUgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBNVEw6
OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFByaW1pdGl2ZUFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElO
RSBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6UHJp
bWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVE
ZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogZ2VvbWV0cnlEZXNjcmlwdG9ycworX01U
TF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3I6Omdlb21ldHJ5RGVzY3JpcHRvcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZ2VvbWV0
cnlEZXNjcmlwdG9ycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UHJpbWl0aXZlQWNj
ZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0R2VvbWV0cnlEZXNjcmlwdG9ycyhjb25z
dCBOUzo6QXJyYXkqIGdlb21ldHJ5RGVzY3JpcHRvcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEdlb21ldHJ5RGVzY3JpcHRvcnNf
KSwgZ2VvbWV0cnlEZXNjcmlwdG9ycyk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25TdGFydEJv
cmRlck1vZGUKK19NVExfSU5MSU5FIE1UTDo6TW90aW9uQm9yZGVyTW9kZSBNVEw6OlByaW1pdGl2
ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvblN0YXJ0Qm9yZGVyTW9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpNb3Rpb25Cb3Jk
ZXJNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvblN0YXJ0Qm9yZGVyTW9kZSkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJl
RGVzY3JpcHRvcjo6c2V0TW90aW9uU3RhcnRCb3JkZXJNb2RlKE1UTDo6TW90aW9uQm9yZGVyTW9k
ZSBtb3Rpb25TdGFydEJvcmRlck1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvblN0YXJ0Qm9yZGVyTW9kZV8pLCBtb3Rp
b25TdGFydEJvcmRlck1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uRW5kQm9yZGVyTW9k
ZQorX01UTF9JTkxJTkUgTVRMOjpNb3Rpb25Cb3JkZXJNb2RlIE1UTDo6UHJpbWl0aXZlQWNjZWxl
cmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uRW5kQm9yZGVyTW9kZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpNb3Rpb25Cb3JkZXJNb2RlPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvbkVuZEJvcmRlck1vZGUpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6
OnNldE1vdGlvbkVuZEJvcmRlck1vZGUoTVRMOjpNb3Rpb25Cb3JkZXJNb2RlIG1vdGlvbkVuZEJv
cmRlck1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldE1vdGlvbkVuZEJvcmRlck1vZGVfKSwgbW90aW9uRW5kQm9yZGVyTW9kZSk7
Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25TdGFydFRpbWUKK19NVExfSU5MSU5FIGZsb2F0IE1U
TDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uU3RhcnRU
aW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxmbG9hdD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25TdGFydFRpbWUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1v
dGlvblN0YXJ0VGltZShmbG9hdCBtb3Rpb25TdGFydFRpbWUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvblN0YXJ0VGltZV8p
LCBtb3Rpb25TdGFydFRpbWUpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uRW5kVGltZQorX01U
TF9JTkxJTkUgZmxvYXQgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlw
dG9yOjptb3Rpb25FbmRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxmbG9hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25FbmRUaW1lKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNj
cmlwdG9yOjpzZXRNb3Rpb25FbmRUaW1lKGZsb2F0IG1vdGlvbkVuZFRpbWUpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvbkVu
ZFRpbWVfKSwgbW90aW9uRW5kVGltZSk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25LZXlmcmFt
ZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25LZXlmcmFtZUNvdW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobW90aW9uS2V5ZnJhbWVDb3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9uS2V5
ZnJhbWVDb3VudChOUzo6VUludGVnZXIgbW90aW9uS2V5ZnJhbWVDb3VudCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TW90aW9uS2V5
ZnJhbWVDb3VudF8pLCBtb3Rpb25LZXlmcmFtZUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhv
ZDogZGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yKiBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2Ny
aXB0b3I6OmRlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFU
RV9DTFMoTVRMUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciksIF9NVExf
UFJJVkFURV9TRUwoZGVzY3JpcHRvcikpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVz
Y3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVf
Q0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVz
Y3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEJ1ZmZlcgorX01UTF9JTkxJTkUg
TVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3I6OnZlcnRleEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleEJ1ZmZl
cikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFZlcnRleEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZl
ciogdmVydGV4QnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJfKSwgdmVydGV4QnVmZmVyKTsKK30KKwor
Ly8gcHJvcGVydHk6IHZlcnRleEJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2Vy
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnZl
cnRleEJ1ZmZlck9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleEJ1ZmZlck9mZnNl
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFZlcnRleEJ1ZmZlck9mZnNldChOUzo6VUludGVn
ZXIgdmVydGV4QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJPZmZzZXRfKSwgdmVydGV4QnVm
ZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleFN0cmlkZQorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3I6OnZlcnRleFN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleFN0cmlk
ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFZlcnRleFN0cmlkZShOUzo6VUludGVnZXIgdmVy
dGV4U3RyaWRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRWZXJ0ZXhTdHJpZGVfKSwgdmVydGV4U3RyaWRlKTsKK30KKworLy8gcHJv
cGVydHk6IGluZGV4QnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5kZXhCdWZmZXIoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChpbmRleEJ1ZmZlcikpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNl
dEluZGV4QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlcikKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhCdWZm
ZXJfKSwgaW5kZXhCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhCdWZmZXJPZmZzZXQK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFu
Z2xlR2VvbWV0cnlEZXNjcmlwdG9yOjppbmRleEJ1ZmZlck9mZnNldCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGluZGV4QnVmZmVyT2Zmc2V0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0SW5kZXhC
dWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleEJ1ZmZl
ck9mZnNldF8pLCBpbmRleEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleFR5
cGUKK19NVExfSU5MSU5FIE1UTDo6SW5kZXhUeXBlIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
VHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluZGV4VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRleFR5cGU+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoaW5kZXhUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0SW5kZXhUeXBlKE1UTDo6
SW5kZXhUeXBlIGluZGV4VHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhUeXBlXyksIGluZGV4VHlwZSk7Cit9CisKKy8v
IHByb3BlcnR5OiB0cmlhbmdsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6dHJpYW5nbGVD
b3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRyaWFuZ2xlQ291bnQpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjpzZXRUcmlhbmdsZUNvdW50KE5TOjpVSW50ZWdlciB0cmlhbmdsZUNvdW50KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRU
cmlhbmdsZUNvdW50XyksIHRyaWFuZ2xlQ291bnQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBk
ZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xl
R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2Vv
bWV0cnlEZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlw
dG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdl
b21ldHJ5RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3JpcHRvcikpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94
R2VvbWV0cnlEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVj
dHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5p
dAorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21l
dHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21l
dHJ5RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcj4oKTsK
K30KKworLy8gcHJvcGVydHk6IGJvdW5kaW5nQm94QnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1
ZmZlciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3Jp
cHRvcjo6Ym91bmRpbmdCb3hCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChib3VuZGluZ0Jv
eEJ1ZmZlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OnNldEJvdW5kaW5nQm94QnVmZmVyKGNv
bnN0IE1UTDo6QnVmZmVyKiBib3VuZGluZ0JveEJ1ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Qm91bmRpbmdCb3hCdWZmZXJf
KSwgYm91bmRpbmdCb3hCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hCdWZm
ZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjpib3VuZGluZ0JveEJ1ZmZlck9mZnNl
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0KSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdl
b21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2Vy
IGJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3VuZGluZ0JveEJ1ZmZlck9mZnNldF8pLCBi
b3VuZGluZ0JveEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBib3VuZGluZ0JveFN0
cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
Qm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94U3RyaWRlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hTdHJpZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9y
OjpzZXRCb3VuZGluZ0JveFN0cmlkZShOUzo6VUludGVnZXIgYm91bmRpbmdCb3hTdHJpZGUpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dEJvdW5kaW5nQm94U3RyaWRlXyksIGJvdW5kaW5nQm94U3RyaWRlKTsKK30KKworLy8gcHJvcGVy
dHk6IGJvdW5kaW5nQm94Q291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjpib3VuZGluZ0Jv
eENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hDb3VudCkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9t
ZXRyeURlc2NyaXB0b3I6OnNldEJvdW5kaW5nQm94Q291bnQoTlM6OlVJbnRlZ2VyIGJvdW5kaW5n
Qm94Q291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEJvdW5kaW5nQm94Q291bnRfKSwgYm91bmRpbmdCb3hDb3VudCk7Cit9CisK
Ky8vIHN0YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmRlc2NyaXB0b3IoKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFj
Y2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKSwgX01UTF9Q
UklWQVRFX1NFTChkZXNjcmlwdG9yKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6Ok1vdGlvbktleWZyYW1lRGF0YSogTVRMOjpNb3Rpb25LZXlmcmFtZURh
dGE6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpNb3Rpb25L
ZXlmcmFtZURhdGE+KF9NVExfUFJJVkFURV9DTFMoTVRMTW90aW9uS2V5ZnJhbWVEYXRhKSk7Cit9
CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpNb3Rpb25LZXlmcmFtZURhdGEq
IE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6aW5pdDxNVEw6Ok1vdGlvbktleWZyYW1lRGF0YT4oKTsKK30KKworLy8gcHJvcGVydHk6IGJ1
ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjpi
dWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVm
ZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6Ok1vdGlvbktleWZyYW1lRGF0YTo6c2V0QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVy
KiBidWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEJ1ZmZlcl8pLCBidWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogb2Zmc2V0
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpNb3Rpb25LZXlmcmFtZURhdGE6Om9mZnNl
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjpzZXRPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0T2Zmc2V0XyksIG9mZnNldCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGRhdGEKK19NVExf
SU5MSU5FIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhKiBNVEw6Ok1vdGlvbktleWZyYW1lRGF0YTo6
ZGF0YSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpNb3Rpb25LZXlm
cmFtZURhdGEqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTE1vdGlvbktleWZyYW1lRGF0YSksIF9NVExf
UFJJVkFURV9TRUwoZGF0YSkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9J
TkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVz
Y3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5
RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2Vv
bWV0cnlEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciog
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
cjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcj4oKTsKK30KKworLy8g
cHJvcGVydHk6IHZlcnRleEJ1ZmZlcnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6dmVydGV4
QnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZmZXJzKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21l
dHJ5RGVzY3JpcHRvcjo6c2V0VmVydGV4QnVmZmVycyhjb25zdCBOUzo6QXJyYXkqIHZlcnRleEJ1
ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFZlcnRleEJ1ZmZlcnNfKSwgdmVydGV4QnVmZmVycyk7Cit9CisKKy8vIHByb3Bl
cnR5OiB2ZXJ0ZXhTdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0ZXhTdHJp
ZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhTdHJpZGUpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlE
ZXNjcmlwdG9yOjpzZXRWZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlkZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VmVydGV4U3RyaWRlXyksIHZlcnRleFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleEJ1
ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
TW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluZGV4QnVmZmVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaW5kZXhCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJ
bmRleEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGV4QnVmZmVy
XyksIGluZGV4QnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4QnVmZmVyT2Zmc2V0Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25U
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5kZXhCdWZmZXJPZmZzZXQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChpbmRleEJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6
OnNldEluZGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
SW5kZXhCdWZmZXJPZmZzZXRfKSwgaW5kZXhCdWZmZXJPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0
eTogaW5kZXhUeXBlCitfTVRMX0lOTElORSBNVEw6OkluZGV4VHlwZSBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjppbmRleFR5cGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW5kZXhUeXBlPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4VHlwZSkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0
b3I6OnNldEluZGV4VHlwZShNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGV4VHlwZV8p
LCBpbmRleFR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogdHJpYW5nbGVDb3VudAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVH
ZW9tZXRyeURlc2NyaXB0b3I6OnRyaWFuZ2xlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0
cmlhbmdsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VHJpYW5nbGVDb3Vu
dChOUzo6VUludGVnZXIgdHJpYW5nbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHJpYW5nbGVDb3VudF8pLCB0cmlhbmds
ZUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgorX01UTF9JTkxJTkUg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
ciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6ZGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcio+
KF9NVExfUFJJVkFURV9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVH
ZW9tZXRyeURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGRlc2NyaXB0b3IpKTsKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhN
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRv
cikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmluaXQo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBib3VuZGluZ0JveEJ1ZmZlcnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6Ym91
bmRpbmdCb3hCdWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJvdW5kaW5nQm94QnVmZmVycykp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9u
Qm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OnNldEJvdW5kaW5nQm94QnVmZmVycyhjb25z
dCBOUzo6QXJyYXkqIGJvdW5kaW5nQm94QnVmZmVycykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Qm91bmRpbmdCb3hCdWZmZXJzXyks
IGJvdW5kaW5nQm94QnVmZmVycyk7Cit9CisKKy8vIHByb3BlcnR5OiBib3VuZGluZ0JveFN0cmlk
ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90
aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94U3RyaWRlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hTdHJpZGUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlE
ZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveFN0cmlkZShOUzo6VUludGVnZXIgYm91bmRpbmdCb3hT
dHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldEJvdW5kaW5nQm94U3RyaWRlXyksIGJvdW5kaW5nQm94U3RyaWRlKTsKK30KKwor
Ly8gcHJvcGVydHk6IGJvdW5kaW5nQm94Q291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlw
dG9yOjpib3VuZGluZ0JveENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hD
b3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
TW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OnNldEJvdW5kaW5nQm94Q291bnQo
TlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94Q291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94Q291bnRfKSwgYm91
bmRpbmdCb3hDb3VudCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19NVExf
SU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRy
eURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hH
ZW9tZXRyeURlc2NyaXB0b3I6OmRlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9t
ZXRyeURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVy
ZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChk
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBN
VEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpJbnN0YW5j
ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVE
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpJbnN0
YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6SW5zdGFuY2VBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6aW5pdDxNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4oKTsK
K30KKworLy8gcHJvcGVydHk6IGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcgorX01UTF9JTkxJTkUg
TVRMOjpCdWZmZXIqIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9y
OjppbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnN0YW5j
ZURlc2NyaXB0b3JCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNl
QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVm
ZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3Rh
bmNlRGVzY3JpcHRvckJ1ZmZlcl8pLCBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIpOworfQorCisv
LyBwcm9wZXJ0eTogaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0CitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6
Omluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlu
c3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRJbnN0YW5jZURl
c2NyaXB0b3JCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZl
ck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0XyksIGluc3RhbmNlRGVz
Y3JpcHRvckJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnN0YW5jZURlc2NyaXB0
b3JTdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6Okluc3RhbmNlQWNjZWxlcmF0
aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNl
dEluc3RhbmNlRGVzY3JpcHRvclN0cmlkZShOUzo6VUludGVnZXIgaW5zdGFuY2VEZXNjcmlwdG9y
U3RyaWRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRJbnN0YW5jZURlc2NyaXB0b3JTdHJpZGVfKSwgaW5zdGFuY2VEZXNjcmlwdG9y
U3RyaWRlKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbmNlQ291bnQKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6
aW5zdGFuY2VDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbmNlQ291bnQpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6c2V0SW5zdGFuY2VDb3VudChOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
SW5zdGFuY2VDb3VudF8pLCBpbnN0YW5jZUNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IGluc3Rh
bmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpJ
bnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Omluc3RhbmNlZEFjY2VsZXJh
dGlvblN0cnVjdHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFuY2VkQWNjZWxlcmF0aW9u
U3RydWN0dXJlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRJbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVzKGNvbnN0IE5TOjpBcnJheSogaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcykKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
SW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlc18pLCBpbnN0YW5jZWRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVzKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbmNlRGVzY3JpcHRvclR5cGUKK19N
VExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlw
ZSBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5zdGFuY2VE
ZXNjcmlwdG9yVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGluc3RhbmNlRGVzY3JpcHRvclR5cGUpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0
SW5zdGFuY2VEZXNjcmlwdG9yVHlwZShNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNl
RGVzY3JpcHRvclR5cGUgaW5zdGFuY2VEZXNjcmlwdG9yVHlwZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5zdGFuY2VEZXNjcmlw
dG9yVHlwZV8pLCBpbnN0YW5jZURlc2NyaXB0b3JUeXBlKTsKK30KKworLy8gcHJvcGVydHk6IG1v
dGlvblRyYW5zZm9ybUJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6SW5zdGFu
Y2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25UcmFuc2Zvcm1CdWZmZXIo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25UcmFuc2Zvcm1CdWZmZXIpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRv
cjo6c2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBtb3Rpb25UcmFu
c2Zvcm1CdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlcl8pLCBtb3Rpb25UcmFuc2Zvcm1C
dWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3I6Om1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rp
b25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG1vdGlvblRyYW5zZm9ybUJ1ZmZl
ck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0XyksIG1vdGlvblRyYW5zZm9y
bUJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25UcmFuc2Zvcm1Db3VudAor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVEZXNjcmlwdG9yOjptb3Rpb25UcmFuc2Zvcm1Db3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG1vdGlvblRyYW5zZm9ybUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnN0
YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1vdGlvblRyYW5zZm9ybUNv
dW50KE5TOjpVSW50ZWdlciBtb3Rpb25UcmFuc2Zvcm1Db3VudCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TW90aW9uVHJhbnNmb3Jt
Q291bnRfKSwgbW90aW9uVHJhbnNmb3JtQ291bnQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBk
ZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJl
RGVzY3JpcHRvciogTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6
OmRlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW5z
dGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhN
VExJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVf
U0VMKGRlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IHNpemUKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZTo6c2l6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNpemUpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlci5ocHAg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmZjRjOWM4YmQxZWQ0MjhhNDNm
N2VmMmUxNmM2OTI4YzE1NDljYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29k
ZXIuaHBwCkBAIC0wLDAgKzEsMTQ0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21t
YW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJC
cmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKyNpbmNs
dWRlICJNVExDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMSGVhcC5ocHAiCisjaW5j
bHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QWNj
ZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIsIENvbW1hbmRFbmNvZGVyPgoreworcHVi
bGljOgorICAgIHZvaWQgYnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgY2xhc3MgQWNj
ZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IGNsYXNzIEJ1
ZmZlciogc2NyYXRjaEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNjcmF0Y2hCdWZmZXJPZmZzZXQpOwor
CisgICAgdm9pZCByZWZpdEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBjbGFzcyBBY2NlbGVy
YXRpb25TdHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgY2xhc3Mg
QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgY2xhc3Mg
QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSwg
Y29uc3QgY2xhc3MgQnVmZmVyKiBzY3JhdGNoQnVmZmVyLCBOUzo6VUludGVnZXIgc2NyYXRjaEJ1
ZmZlck9mZnNldCk7CisKKyAgICB2b2lkIGNvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3Qg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRp
b25TdHJ1Y3R1cmUpOworCisgICAgdm9pZCB3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVj
dHVyZVNpemUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25T
dHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0
KTsKKworICAgIHZvaWQgd3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplKGNv
bnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBj
b25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTVRMOjpEYXRh
VHlwZSBzaXplRGF0YVR5cGUpOworCisgICAgdm9pZCBjb3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlv
blN0cnVjdHVyZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIHNvdXJjZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBkZXN0
aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSk7CisKKyAgICB2b2lkIHVwZGF0ZUZlbmNlKGNv
bnN0IGNsYXNzIEZlbmNlKiBmZW5jZSk7CisKKyAgICB2b2lkIHdhaXRGb3JGZW5jZShjb25zdCBj
bGFzcyBGZW5jZSogZmVuY2UpOworCisgICAgdm9pZCB1c2VSZXNvdXJjZShjb25zdCBjbGFzcyBS
ZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSk7CisKKyAgICB2b2lk
IHVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2VyIGNv
dW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCB1c2VIZWFwKGNvbnN0
IGNsYXNzIEhlYXAqIGhlYXApOworCisgICAgdm9pZCB1c2VIZWFwcyhNVEw6OkhlYXAqIGhlYXBz
W10sIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICB2b2lkIHNhbXBsZUNvdW50ZXJzSW5CdWZm
ZXIoY29uc3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6VUlu
dGVnZXIgc2FtcGxlSW5kZXgsIGJvb2wgYmFycmllcik7Cit9OworCit9CisKKy8vIG1ldGhvZDog
YnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6ZGVzY3JpcHRvcjpzY3JhdGNoQnVmZmVyOnNjcmF0
Y2hCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlQ29tbWFuZEVuY29kZXI6OmJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgTVRMOjpC
dWZmZXIqIHNjcmF0Y2hCdWZmZXIsIE5TOjpVSW50ZWdlciBzY3JhdGNoQnVmZmVyT2Zmc2V0KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChi
dWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZV9kZXNjcmlwdG9yX3NjcmF0Y2hCdWZmZXJfc2NyYXRj
aEJ1ZmZlck9mZnNldF8pLCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGRlc2NyaXB0b3IsIHNjcmF0
Y2hCdWZmZXIsIHNjcmF0Y2hCdWZmZXJPZmZzZXQpOworfQorCisvLyBtZXRob2Q6IHJlZml0QWNj
ZWxlcmF0aW9uU3RydWN0dXJlOmRlc2NyaXB0b3I6ZGVzdGluYXRpb246c2NyYXRjaEJ1ZmZlcjpz
Y3JhdGNoQnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjpyZWZpdEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBj
b25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNv
bnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0
cnVjdHVyZSwgY29uc3QgTVRMOjpCdWZmZXIqIHNjcmF0Y2hCdWZmZXIsIE5TOjpVSW50ZWdlciBz
Y3JhdGNoQnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChyZWZpdEFjY2VsZXJhdGlvblN0cnVjdHVyZV9kZXNjcmlwdG9y
X2Rlc3RpbmF0aW9uX3NjcmF0Y2hCdWZmZXJfc2NyYXRjaEJ1ZmZlck9mZnNldF8pLCBzb3VyY2VB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGRlc2NyaXB0b3IsIGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9u
U3RydWN0dXJlLCBzY3JhdGNoQnVmZmVyLCBzY3JhdGNoQnVmZmVyT2Zmc2V0KTsKK30KKworLy8g
bWV0aG9kOiBjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlOnRvQWNjZWxlcmF0aW9uU3RydWN0dXJl
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNv
ZGVyOjpjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlKiBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlKiBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZV90b0FjY2VsZXJhdGlvblN0cnVjdHVyZV8pLCBzb3VyY2VBY2NlbGVy
YXRpb25TdHJ1Y3R1cmUsIGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0dXJlKTsKK30KKwor
Ly8gbWV0aG9kOiB3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemU6dG9CdWZm
ZXI6b2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNv
bW1hbmRFbmNvZGVyOjp3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemUoY29u
c3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29u
c3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod3JpdGVDb21wYWN0
ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplX3RvQnVmZmVyX29mZnNldF8pLCBhY2NlbGVyYXRp
b25TdHJ1Y3R1cmUsIGJ1ZmZlciwgb2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiB3cml0ZUNvbXBh
Y3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemU6dG9CdWZmZXI6b2Zmc2V0OnNpemVEYXRhVHlw
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5j
b2Rlcjo6d3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplKGNvbnN0IE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1UTDo6
QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE1UTDo6RGF0YVR5cGUgc2l6ZURh
dGFUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTCh3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemVfdG9CdWZmZXJf
b2Zmc2V0X3NpemVEYXRhVHlwZV8pLCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGJ1ZmZlciwgb2Zm
c2V0LCBzaXplRGF0YVR5cGUpOworfQorCisvLyBtZXRob2Q6IGNvcHlBbmRDb21wYWN0QWNjZWxl
cmF0aW9uU3RydWN0dXJlOnRvQWNjZWxlcmF0aW9uU3RydWN0dXJlOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjpjb3B5QW5kQ29tcGFj
dEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSog
c291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlBbmRDb21wYWN0QWNj
ZWxlcmF0aW9uU3RydWN0dXJlX3RvQWNjZWxlcmF0aW9uU3RydWN0dXJlXyksIHNvdXJjZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZSwgZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUpOworfQor
CisvLyBtZXRob2Q6IHVwZGF0ZUZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjp1cGRhdGVGZW5jZShjb25zdCBNVEw6OkZlbmNl
KiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRob2Q6IHdhaXRGb3JG
ZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5k
RW5jb2Rlcjo6d2FpdEZvckZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3YWl0Rm9yRmVu
Y2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlOnVzYWdlOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjp1c2VS
ZXNvdXJjZShjb25zdCBNVEw6OlJlc291cmNlKiByZXNvdXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdl
IHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTCh1c2VSZXNvdXJjZV91c2FnZV8pLCByZXNvdXJjZSwgdXNhZ2UpOworfQorCisvLyBt
ZXRob2Q6IHVzZVJlc291cmNlczpjb3VudDp1c2FnZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3VyY2VzKE1UTDo6UmVz
b3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3VyY2VVc2Fn
ZSB1c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodXNlUmVzb3VyY2VzX2NvdW50X3VzYWdlXyksIHJlc291cmNlcywgY291bnQsIHVz
YWdlKTsKK30KKworLy8gbWV0aG9kOiB1c2VIZWFwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwKGNvbnN0IE1UTDo6SGVh
cCogaGVhcCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodXNlSGVhcF8pLCBoZWFwKTsKK30KKworLy8gbWV0aG9kOiB1c2VIZWFwczpjb3Vu
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5j
b2Rlcjo6dXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVz
ZUhlYXBzX2NvdW50XyksIGhlYXBzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogc2FtcGxlQ291
bnRlcnNJbkJ1ZmZlcjphdFNhbXBsZUluZGV4OndpdGhCYXJyaWVyOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjpzYW1wbGVDb3VudGVy
c0luQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBO
Uzo6VUludGVnZXIgc2FtcGxlSW5kZXgsIGJvb2wgYmFycmllcikKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnRlcnNJbkJ1
ZmZlcl9hdFNhbXBsZUluZGV4X3dpdGhCYXJyaWVyXyksIHNhbXBsZUJ1ZmZlciwgc2FtcGxlSW5k
ZXgsIGJhcnJpZXIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5o
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmU3NjdkYzkxNWNjMWJiOTBjNDE4YWI0MDc4MDJiNTBkOWMxNTdiOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAKQEAgLTAsMCArMSwxNjkgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01U
TEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIw
MjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExQcml2YXRlLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisjaW5jbHVkZSAiTVRM
U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwIgorCisjaW5jbHVkZSAiLi4vRm91bmRhdGlv
bi9OU1JhbmdlLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK25hbWVzcGFjZSBNVEwKK3sKK3N0cnVjdCBQYWNrZWRGbG9hdDMKK3sKKyAgICBQ
YWNrZWRGbG9hdDMoKTsKKyAgICBQYWNrZWRGbG9hdDMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eik7CisKKyAgICBmbG9hdCYgb3BlcmF0b3JbXShpbnQgaWR4KTsKKyAgICBmbG9hdCAgb3BlcmF0
b3JbXShpbnQgaWR4KSBjb25zdDsKKworICAgIHVuaW9uCisgICAgeworICAgICAgICBzdHJ1Y3QK
KyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgeDsKKyAgICAgICAgICAgIGZsb2F0IHk7Cisg
ICAgICAgICAgICBmbG9hdCB6OworICAgICAgICB9OworCisgICAgICAgIGZsb2F0IGVsZW1lbnRz
WzNdOworICAgIH07Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgUGFja2VkRmxvYXQ0eDMKK3sK
KyAgICBQYWNrZWRGbG9hdDR4MygpOworICAgIFBhY2tlZEZsb2F0NHgzKGNvbnN0IFBhY2tlZEZs
b2F0MyYgY29sMCwgY29uc3QgUGFja2VkRmxvYXQzJiBjb2wxLCBjb25zdCBQYWNrZWRGbG9hdDMm
IGNvbDIsIGNvbnN0IFBhY2tlZEZsb2F0MyYgY29sMyk7CisKKyAgICBQYWNrZWRGbG9hdDMmICAg
ICAgIG9wZXJhdG9yW10oaW50IGlkeCk7CisgICAgY29uc3QgUGFja2VkRmxvYXQzJiBvcGVyYXRv
cltdKGludCBpZHgpIGNvbnN0OworCisgICAgUGFja2VkRmxvYXQzICAgICAgICBjb2x1bW5zWzRd
OworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IEF4aXNBbGlnbmVkQm91bmRpbmdCb3gKK3sKKyAg
ICBBeGlzQWxpZ25lZEJvdW5kaW5nQm94KCk7CisgICAgQXhpc0FsaWduZWRCb3VuZGluZ0JveChQ
YWNrZWRGbG9hdDMgcCk7CisgICAgQXhpc0FsaWduZWRCb3VuZGluZ0JveChQYWNrZWRGbG9hdDMg
bWluLCBQYWNrZWRGbG9hdDMgbWF4KTsKKworICAgIFBhY2tlZEZsb2F0MyBtaW47CisgICAgUGFj
a2VkRmxvYXQzIG1heDsKK30gX01UTF9QQUNLRUQ7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSBNVEw6OlBhY2tlZEZsb2F0
Mzo6UGFja2VkRmxvYXQzKCkKKyAgICA6IHgoMC4wZikKKyAgICAsIHkoMC4wZikKKyAgICAsIHoo
MC4wZikKK3sKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19NVExfSU5MSU5FIE1UTDo6UGFja2VkRmxvYXQzOjpQYWNrZWRGbG9hdDMoZmxvYXQg
X3gsIGZsb2F0IF95LCBmbG9hdCBfeikKKyAgICA6IHgoX3gpCisgICAgLCB5KF95KQorICAgICwg
eihfeikKK3sKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19NVExfSU5MSU5FIGZsb2F0JiBNVEw6OlBhY2tlZEZsb2F0Mzo6b3BlcmF0b3JbXShp
bnQgaWR4KQoreworICAgIHJldHVybiBlbGVtZW50c1tpZHhdOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgZmxvYXQgTVRM
OjpQYWNrZWRGbG9hdDM6Om9wZXJhdG9yW10oaW50IGlkeCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZWxlbWVudHNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6UGFja2VkRmxvYXQ0eDM6OlBhY2tlZEZsb2F0
NHgzKCkKK3sKKyAgICBjb2x1bW5zWzBdID0gUGFja2VkRmxvYXQzKDAuMGYsIDAuMGYsIDAuMGYp
OworICAgIGNvbHVtbnNbMV0gPSBQYWNrZWRGbG9hdDMoMC4wZiwgMC4wZiwgMC4wZik7CisgICAg
Y29sdW1uc1syXSA9IFBhY2tlZEZsb2F0MygwLjBmLCAwLjBmLCAwLjBmKTsKKyAgICBjb2x1bW5z
WzNdID0gUGFja2VkRmxvYXQzKDAuMGYsIDAuMGYsIDAuMGYpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpQYWNr
ZWRGbG9hdDR4Mzo6UGFja2VkRmxvYXQ0eDMoY29uc3QgUGFja2VkRmxvYXQzJiBjb2wwLCBjb25z
dCBQYWNrZWRGbG9hdDMmIGNvbDEsIGNvbnN0IFBhY2tlZEZsb2F0MyYgY29sMiwgY29uc3QgUGFj
a2VkRmxvYXQzJiBjb2wzKQoreworICAgIGNvbHVtbnNbMF0gPSBjb2wwOworICAgIGNvbHVtbnNb
MV0gPSBjb2wxOworICAgIGNvbHVtbnNbMl0gPSBjb2wyOworICAgIGNvbHVtbnNbM10gPSBjb2wz
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X01UTF9JTkxJTkUgTVRMOjpQYWNrZWRGbG9hdDMmIE1UTDo6UGFja2VkRmxvYXQ0eDM6Om9wZXJh
dG9yW10oaW50IGlkeCkKK3sKKyAgICByZXR1cm4gY29sdW1uc1tpZHhdOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgY29u
c3QgTVRMOjpQYWNrZWRGbG9hdDMmIE1UTDo6UGFja2VkRmxvYXQ0eDM6Om9wZXJhdG9yW10oaW50
IGlkeCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29sdW1uc1tpZHhdOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpB
eGlzQWxpZ25lZEJvdW5kaW5nQm94OjpBeGlzQWxpZ25lZEJvdW5kaW5nQm94KCkKKyAgICA6IG1p
bihJTkZJTklUWSwgSU5GSU5JVFksIElORklOSVRZKQorICAgICwgbWF4KC1JTkZJTklUWSwgLUlO
RklOSVRZLCAtSU5GSU5JVFkpCit7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSBNVEw6OkF4aXNBbGlnbmVkQm91bmRpbmdC
b3g6OkF4aXNBbGlnbmVkQm91bmRpbmdCb3goUGFja2VkRmxvYXQzIHApCisgICAgOiBtaW4ocCkK
KyAgICAsIG1heChwKQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpBeGlzQWxpZ25lZEJvdW5kaW5nQm94OjpB
eGlzQWxpZ25lZEJvdW5kaW5nQm94KFBhY2tlZEZsb2F0MyBfbWluLCBQYWNrZWRGbG9hdDMgX21h
eCkKKyAgICA6IG1pbihfbWluKQorICAgICwgbWF4KF9tYXgpCit7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50LmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudC5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA1
N2ZlMDgwMjhlMjAwMDczNGYyMjJkMjU4MDRiYjgyYzZhN2ZjZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudC5ocHAKQEAg
LTAsMCArMSw2NTUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIE1ldGFsL01UTEFyZ3VtZW50LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIw
LTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgor
I2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAi
CisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRM
QXJndW1lbnQuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBwIgorCituYW1lc3BhY2UgTVRM
Cit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBEYXRhVHlwZSkgeworICAgIERhdGFUeXBlTm9u
ZSA9IDAsCisgICAgRGF0YVR5cGVTdHJ1Y3QgPSAxLAorICAgIERhdGFUeXBlQXJyYXkgPSAyLAor
ICAgIERhdGFUeXBlRmxvYXQgPSAzLAorICAgIERhdGFUeXBlRmxvYXQyID0gNCwKKyAgICBEYXRh
VHlwZUZsb2F0MyA9IDUsCisgICAgRGF0YVR5cGVGbG9hdDQgPSA2LAorICAgIERhdGFUeXBlRmxv
YXQyeDIgPSA3LAorICAgIERhdGFUeXBlRmxvYXQyeDMgPSA4LAorICAgIERhdGFUeXBlRmxvYXQy
eDQgPSA5LAorICAgIERhdGFUeXBlRmxvYXQzeDIgPSAxMCwKKyAgICBEYXRhVHlwZUZsb2F0M3gz
ID0gMTEsCisgICAgRGF0YVR5cGVGbG9hdDN4NCA9IDEyLAorICAgIERhdGFUeXBlRmxvYXQ0eDIg
PSAxMywKKyAgICBEYXRhVHlwZUZsb2F0NHgzID0gMTQsCisgICAgRGF0YVR5cGVGbG9hdDR4NCA9
IDE1LAorICAgIERhdGFUeXBlSGFsZiA9IDE2LAorICAgIERhdGFUeXBlSGFsZjIgPSAxNywKKyAg
ICBEYXRhVHlwZUhhbGYzID0gMTgsCisgICAgRGF0YVR5cGVIYWxmNCA9IDE5LAorICAgIERhdGFU
eXBlSGFsZjJ4MiA9IDIwLAorICAgIERhdGFUeXBlSGFsZjJ4MyA9IDIxLAorICAgIERhdGFUeXBl
SGFsZjJ4NCA9IDIyLAorICAgIERhdGFUeXBlSGFsZjN4MiA9IDIzLAorICAgIERhdGFUeXBlSGFs
ZjN4MyA9IDI0LAorICAgIERhdGFUeXBlSGFsZjN4NCA9IDI1LAorICAgIERhdGFUeXBlSGFsZjR4
MiA9IDI2LAorICAgIERhdGFUeXBlSGFsZjR4MyA9IDI3LAorICAgIERhdGFUeXBlSGFsZjR4NCA9
IDI4LAorICAgIERhdGFUeXBlSW50ID0gMjksCisgICAgRGF0YVR5cGVJbnQyID0gMzAsCisgICAg
RGF0YVR5cGVJbnQzID0gMzEsCisgICAgRGF0YVR5cGVJbnQ0ID0gMzIsCisgICAgRGF0YVR5cGVV
SW50ID0gMzMsCisgICAgRGF0YVR5cGVVSW50MiA9IDM0LAorICAgIERhdGFUeXBlVUludDMgPSAz
NSwKKyAgICBEYXRhVHlwZVVJbnQ0ID0gMzYsCisgICAgRGF0YVR5cGVTaG9ydCA9IDM3LAorICAg
IERhdGFUeXBlU2hvcnQyID0gMzgsCisgICAgRGF0YVR5cGVTaG9ydDMgPSAzOSwKKyAgICBEYXRh
VHlwZVNob3J0NCA9IDQwLAorICAgIERhdGFUeXBlVVNob3J0ID0gNDEsCisgICAgRGF0YVR5cGVV
U2hvcnQyID0gNDIsCisgICAgRGF0YVR5cGVVU2hvcnQzID0gNDMsCisgICAgRGF0YVR5cGVVU2hv
cnQ0ID0gNDQsCisgICAgRGF0YVR5cGVDaGFyID0gNDUsCisgICAgRGF0YVR5cGVDaGFyMiA9IDQ2
LAorICAgIERhdGFUeXBlQ2hhcjMgPSA0NywKKyAgICBEYXRhVHlwZUNoYXI0ID0gNDgsCisgICAg
RGF0YVR5cGVVQ2hhciA9IDQ5LAorICAgIERhdGFUeXBlVUNoYXIyID0gNTAsCisgICAgRGF0YVR5
cGVVQ2hhcjMgPSA1MSwKKyAgICBEYXRhVHlwZVVDaGFyNCA9IDUyLAorICAgIERhdGFUeXBlQm9v
bCA9IDUzLAorICAgIERhdGFUeXBlQm9vbDIgPSA1NCwKKyAgICBEYXRhVHlwZUJvb2wzID0gNTUs
CisgICAgRGF0YVR5cGVCb29sNCA9IDU2LAorICAgIERhdGFUeXBlVGV4dHVyZSA9IDU4LAorICAg
IERhdGFUeXBlU2FtcGxlciA9IDU5LAorICAgIERhdGFUeXBlUG9pbnRlciA9IDYwLAorICAgIERh
dGFUeXBlUjhVbm9ybSA9IDYyLAorICAgIERhdGFUeXBlUjhTbm9ybSA9IDYzLAorICAgIERhdGFU
eXBlUjE2VW5vcm0gPSA2NCwKKyAgICBEYXRhVHlwZVIxNlNub3JtID0gNjUsCisgICAgRGF0YVR5
cGVSRzhVbm9ybSA9IDY2LAorICAgIERhdGFUeXBlUkc4U25vcm0gPSA2NywKKyAgICBEYXRhVHlw
ZVJHMTZVbm9ybSA9IDY4LAorICAgIERhdGFUeXBlUkcxNlNub3JtID0gNjksCisgICAgRGF0YVR5
cGVSR0JBOFVub3JtID0gNzAsCisgICAgRGF0YVR5cGVSR0JBOFVub3JtX3NSR0IgPSA3MSwKKyAg
ICBEYXRhVHlwZVJHQkE4U25vcm0gPSA3MiwKKyAgICBEYXRhVHlwZVJHQkExNlVub3JtID0gNzMs
CisgICAgRGF0YVR5cGVSR0JBMTZTbm9ybSA9IDc0LAorICAgIERhdGFUeXBlUkdCMTBBMlVub3Jt
ID0gNzUsCisgICAgRGF0YVR5cGVSRzExQjEwRmxvYXQgPSA3NiwKKyAgICBEYXRhVHlwZVJHQjlF
NUZsb2F0ID0gNzcsCisgICAgRGF0YVR5cGVSZW5kZXJQaXBlbGluZSA9IDc4LAorICAgIERhdGFU
eXBlQ29tcHV0ZVBpcGVsaW5lID0gNzksCisgICAgRGF0YVR5cGVJbmRpcmVjdENvbW1hbmRCdWZm
ZXIgPSA4MCwKKyAgICBEYXRhVHlwZUxvbmcgPSA4MSwKKyAgICBEYXRhVHlwZUxvbmcyID0gODIs
CisgICAgRGF0YVR5cGVMb25nMyA9IDgzLAorICAgIERhdGFUeXBlTG9uZzQgPSA4NCwKKyAgICBE
YXRhVHlwZVVMb25nID0gODUsCisgICAgRGF0YVR5cGVVTG9uZzIgPSA4NiwKKyAgICBEYXRhVHlw
ZVVMb25nMyA9IDg3LAorICAgIERhdGFUeXBlVUxvbmc0ID0gODgsCisgICAgRGF0YVR5cGVWaXNp
YmxlRnVuY3Rpb25UYWJsZSA9IDExNSwKKyAgICBEYXRhVHlwZUludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGUgPSAxMTYsCisgICAgRGF0YVR5cGVQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmUg
PSAxMTcsCisgICAgRGF0YVR5cGVJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZSA9IDExOCwK
K307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIEFyZ3VtZW50VHlwZSkgeworICAgIEFyZ3Vt
ZW50VHlwZUJ1ZmZlciA9IDAsCisgICAgQXJndW1lbnRUeXBlVGhyZWFkZ3JvdXBNZW1vcnkgPSAx
LAorICAgIEFyZ3VtZW50VHlwZVRleHR1cmUgPSAyLAorICAgIEFyZ3VtZW50VHlwZVNhbXBsZXIg
PSAzLAorICAgIEFyZ3VtZW50VHlwZUltYWdlYmxvY2tEYXRhID0gMTYsCisgICAgQXJndW1lbnRU
eXBlSW1hZ2VibG9jayA9IDE3LAorICAgIEFyZ3VtZW50VHlwZVZpc2libGVGdW5jdGlvblRhYmxl
ID0gMjQsCisgICAgQXJndW1lbnRUeXBlUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlID0g
MjUsCisgICAgQXJndW1lbnRUeXBlSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUgPSAyNiwK
KyAgICBBcmd1bWVudFR5cGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlID0gMjcsCit9OworCitf
TVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBBcmd1bWVudEFjY2VzcykgeworICAgIEFyZ3VtZW50QWNj
ZXNzUmVhZE9ubHkgPSAwLAorICAgIEFyZ3VtZW50QWNjZXNzUmVhZFdyaXRlID0gMSwKKyAgICBB
cmd1bWVudEFjY2Vzc1dyaXRlT25seSA9IDIsCit9OworCitjbGFzcyBUeXBlIDogcHVibGljIE5T
OjpSZWZlcmVuY2luZzxUeXBlPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBUeXBlKiBh
bGxvYygpOworCisgICAgY2xhc3MgVHlwZSogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6RGF0
YVR5cGUgICAgICBkYXRhVHlwZSgpIGNvbnN0OworfTsKKworY2xhc3MgU3RydWN0TWVtYmVyIDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxTdHJ1Y3RNZW1iZXI+Cit7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNsYXNzIFN0cnVjdE1lbWJlciogIGFsbG9jKCk7CisKKyAgICBjbGFzcyBTdHJ1Y3RNZW1i
ZXIqICAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgIG5h
bWUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBvZmZzZXQoKSBj
b25zdDsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgICBkYXRhVHlwZSgpIGNvbnN0
OworCisgICAgY2xhc3MgU3RydWN0VHlwZSogICAgICAgICAgIHN0cnVjdFR5cGUoKTsKKworICAg
IGNsYXNzIEFycmF5VHlwZSogICAgICAgICAgICBhcnJheVR5cGUoKTsKKworICAgIGNsYXNzIFRl
eHR1cmVSZWZlcmVuY2VUeXBlKiB0ZXh0dXJlUmVmZXJlbmNlVHlwZSgpOworCisgICAgY2xhc3Mg
UG9pbnRlclR5cGUqICAgICAgICAgIHBvaW50ZXJUeXBlKCk7CisKKyAgICBOUzo6VUludGVnZXIg
ICAgICAgICAgICAgICAgYXJndW1lbnRJbmRleCgpIGNvbnN0OworfTsKKworY2xhc3MgU3RydWN0
VHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8U3RydWN0VHlwZSwgVHlwZT4KK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY2xhc3MgU3RydWN0VHlwZSogYWxsb2MoKTsKKworICAgIGNsYXNzIFN0
cnVjdFR5cGUqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAg
bWVtYmVycygpIGNvbnN0OworCisgICAgY2xhc3MgU3RydWN0TWVtYmVyKiAgICAgIG1lbWJlckJ5
TmFtZShjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKK307CisKK2NsYXNzIEFycmF5VHlwZSA6IHB1
YmxpYyBOUzo6UmVmZXJlbmNpbmc8QXJyYXlUeXBlLCBUeXBlPgoreworcHVibGljOgorICAgIHN0
YXRpYyBjbGFzcyBBcnJheVR5cGUqICAgICBhbGxvYygpOworCisgICAgY2xhc3MgQXJyYXlUeXBl
KiAgICAgICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgICBl
bGVtZW50VHlwZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGFy
cmF5TGVuZ3RoKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgc3Ry
aWRlKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgYXJndW1lbnRJ
bmRleFN0cmlkZSgpIGNvbnN0OworCisgICAgY2xhc3MgU3RydWN0VHlwZSogICAgICAgICAgIGVs
ZW1lbnRTdHJ1Y3RUeXBlKCk7CisKKyAgICBjbGFzcyBBcnJheVR5cGUqICAgICAgICAgICAgZWxl
bWVudEFycmF5VHlwZSgpOworCisgICAgY2xhc3MgVGV4dHVyZVJlZmVyZW5jZVR5cGUqIGVsZW1l
bnRUZXh0dXJlUmVmZXJlbmNlVHlwZSgpOworCisgICAgY2xhc3MgUG9pbnRlclR5cGUqICAgICAg
ICAgIGVsZW1lbnRQb2ludGVyVHlwZSgpOworfTsKKworY2xhc3MgUG9pbnRlclR5cGUgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPFBvaW50ZXJUeXBlLCBUeXBlPgoreworcHVibGljOgorICAgIHN0
YXRpYyBjbGFzcyBQb2ludGVyVHlwZSogYWxsb2MoKTsKKworICAgIGNsYXNzIFBvaW50ZXJUeXBl
KiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAgICAgICBlbGVtZW50
VHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpBcmd1bWVudEFjY2VzcyAgICAgICBhY2Nlc3MoKSBj
b25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgYWxpZ25tZW50KCkgY29uc3Q7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgIGRhdGFTaXplKCkgY29uc3Q7CisKKyAg
ICBib29sICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRJc0FyZ3VtZW50QnVmZmVyKCkgY29u
c3Q7CisKKyAgICBjbGFzcyBTdHJ1Y3RUeXBlKiAgICAgICAgIGVsZW1lbnRTdHJ1Y3RUeXBlKCk7
CisKKyAgICBjbGFzcyBBcnJheVR5cGUqICAgICAgICAgIGVsZW1lbnRBcnJheVR5cGUoKTsKK307
CisKK2NsYXNzIFRleHR1cmVSZWZlcmVuY2VUeXBlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxU
ZXh0dXJlUmVmZXJlbmNlVHlwZSwgVHlwZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
VGV4dHVyZVJlZmVyZW5jZVR5cGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBUZXh0dXJlUmVmZXJl
bmNlVHlwZSogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZURhdGFUeXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OlRleHR1cmVUeXBl
ICAgICAgICAgICAgICAgICAgIHRleHR1cmVUeXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OkFyZ3Vt
ZW50QWNjZXNzICAgICAgICAgICAgICAgIGFjY2VzcygpIGNvbnN0OworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RlcHRoVGV4dHVyZSgpIGNvbnN0OworfTsKKwor
Y2xhc3MgQXJndW1lbnQgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFyZ3VtZW50PgoreworcHVi
bGljOgorICAgIHN0YXRpYyBjbGFzcyBBcmd1bWVudCogYWxsb2MoKTsKKworICAgIGNsYXNzIEFy
Z3VtZW50KiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICBuYW1l
KCkgY29uc3Q7CisKKyAgICBNVEw6OkFyZ3VtZW50VHlwZSAgICAgIHR5cGUoKSBjb25zdDsKKwor
ICAgIE1UTDo6QXJndW1lbnRBY2Nlc3MgICAgYWNjZXNzKCkgY29uc3Q7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgIGluZGV4KCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAg
ICAgIGFjdGl2ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICBidWZmZXJB
bGlnbm1lbnQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgYnVmZmVyRGF0
YVNpemUoKSBjb25zdDsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgYnVmZmVyRGF0YVR5
cGUoKSBjb25zdDsKKworICAgIGNsYXNzIFN0cnVjdFR5cGUqICAgICAgYnVmZmVyU3RydWN0VHlw
ZSgpIGNvbnN0OworCisgICAgY2xhc3MgUG9pbnRlclR5cGUqICAgICBidWZmZXJQb2ludGVyVHlw
ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICB0aHJlYWRncm91cE1lbW9y
eUFsaWdubWVudCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICB0aHJlYWRn
cm91cE1lbW9yeURhdGFTaXplKCkgY29uc3Q7CisKKyAgICBNVEw6OlRleHR1cmVUeXBlICAgICAg
IHRleHR1cmVUeXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgIHRleHR1
cmVEYXRhVHlwZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICBpc0RlcHRo
VGV4dHVyZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICBhcnJheUxlbmd0
aCgpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJ
TkUgTVRMOjpUeXBlKiBNVEw6OlR5cGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6YWxsb2M8TVRMOjpUeXBlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFR5cGUpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlR5cGUqIE1UTDo6VHlwZTo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpUeXBlPigpOworfQorCisvLyBwcm9w
ZXJ0eTogZGF0YVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpUeXBlOjpkYXRh
VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRh
VHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChkYXRhVHlwZSkpOworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RNZW1iZXIqIE1UTDo6U3RydWN0
TWVtYmVyOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U3Ry
dWN0TWVtYmVyPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0cnVjdE1lbWJlcikpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0TWVtYmVyKiBNVEw6OlN0cnVjdE1l
bWJlcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpTdHJ1Y3RN
ZW1iZXI+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5n
KiBNVEw6OlN0cnVjdE1lbWJlcjo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogb2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpT
dHJ1Y3RNZW1iZXI6Om9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9mZnNldCkpOworfQor
CisvLyBwcm9wZXJ0eTogZGF0YVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpT
dHJ1Y3RNZW1iZXI6OmRhdGFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRhdGFUeXBlKSk7
Cit9CisKKy8vIG1ldGhvZDogc3RydWN0VHlwZQorX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RUeXBl
KiBNVEw6OlN0cnVjdE1lbWJlcjo6c3RydWN0VHlwZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdHJ1
Y3RUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogYXJyYXlUeXBlCitfTVRMX0lOTElORSBNVEw6OkFy
cmF5VHlwZSogTVRMOjpTdHJ1Y3RNZW1iZXI6OmFycmF5VHlwZSgpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcnJheVR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGFycmF5VHlwZSkpOworfQorCisvLyBtZXRob2Q6IHRleHR1cmVSZWZlcmVuY2VUeXBlCitfTVRM
X0lOTElORSBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlKiBNVEw6OlN0cnVjdE1lbWJlcjo6dGV4
dHVyZVJlZmVyZW5jZVR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6VGV4dHVyZVJlZmVyZW5jZVR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVS
ZWZlcmVuY2VUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogcG9pbnRlclR5cGUKK19NVExfSU5MSU5F
IE1UTDo6UG9pbnRlclR5cGUqIE1UTDo6U3RydWN0TWVtYmVyOjpwb2ludGVyVHlwZSgpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQb2ludGVyVHlwZSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocG9pbnRlclR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFyZ3VtZW50
SW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlN0cnVjdE1lbWJlcjo6YXJndW1l
bnRJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50SW5kZXgpKTsKK30KKworLy8g
c3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpT
dHJ1Y3RUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6
U3RydWN0VHlwZT4oX01UTF9QUklWQVRFX0NMUyhNVExTdHJ1Y3RUeXBlKSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RUeXBlKiBNVEw6OlN0cnVjdFR5cGU6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U3RydWN0VHlwZT4o
KTsKK30KKworLy8gcHJvcGVydHk6IG1lbWJlcnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRM
OjpTdHJ1Y3RUeXBlOjptZW1iZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1lbWJlcnMpKTsKK30K
KworLy8gbWV0aG9kOiBtZW1iZXJCeU5hbWU6CitfTVRMX0lOTElORSBNVEw6OlN0cnVjdE1lbWJl
ciogTVRMOjpTdHJ1Y3RUeXBlOjptZW1iZXJCeU5hbWUoY29uc3QgTlM6OlN0cmluZyogbmFtZSkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0cnVjdE1lbWJlcio+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobWVtYmVyQnlOYW1lXyksIG5hbWUpOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBcnJheVR5cGUqIE1UTDo6QXJyYXlU
eXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QXJyYXlU
eXBlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFycmF5VHlwZSkpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6QXJyYXlUeXBlKiBNVEw6OkFycmF5VHlwZTo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBcnJheVR5cGU+KCk7Cit9CisKKy8v
IHByb3BlcnR5OiBlbGVtZW50VHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OkFy
cmF5VHlwZTo6ZWxlbWVudFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZWxlbWVudFR5cGUp
KTsKK30KKworLy8gcHJvcGVydHk6IGFycmF5TGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpBcnJheVR5cGU6OmFycmF5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJy
YXlMZW5ndGgpKTsKK30KKworLy8gcHJvcGVydHk6IHN0cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6QXJyYXlUeXBlOjpzdHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdHJp
ZGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFyZ3VtZW50SW5kZXhTdHJpZGUKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkFycmF5VHlwZTo6YXJndW1lbnRJbmRleFN0cmlkZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50SW5kZXhTdHJpZGUpKTsKK30KKworLy8gbWV0aG9kOiBl
bGVtZW50U3RydWN0VHlwZQorX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RUeXBlKiBNVEw6OkFycmF5
VHlwZTo6ZWxlbWVudFN0cnVjdFR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6U3RydWN0VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZWxlbWVudFN0cnVj
dFR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBlbGVtZW50QXJyYXlUeXBlCitfTVRMX0lOTElORSBN
VEw6OkFycmF5VHlwZSogTVRMOjpBcnJheVR5cGU6OmVsZW1lbnRBcnJheVR5cGUoKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJyYXlUeXBlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChlbGVtZW50QXJyYXlUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVudFRl
eHR1cmVSZWZlcmVuY2VUeXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBl
KiBNVEw6OkFycmF5VHlwZTo6ZWxlbWVudFRleHR1cmVSZWZlcmVuY2VUeXBlKCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50VGV4dHVyZVJlZmVyZW5jZVR5cGUpKTsKK30KKwor
Ly8gbWV0aG9kOiBlbGVtZW50UG9pbnRlclR5cGUKK19NVExfSU5MSU5FIE1UTDo6UG9pbnRlclR5
cGUqIE1UTDo6QXJyYXlUeXBlOjplbGVtZW50UG9pbnRlclR5cGUoKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UG9pbnRlclR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGVsZW1lbnRQb2ludGVyVHlwZSkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpQb2ludGVyVHlwZSogTVRMOjpQb2ludGVyVHlwZTo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlBvaW50ZXJUeXBlPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTFBvaW50ZXJUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9J
TkxJTkUgTVRMOjpQb2ludGVyVHlwZSogTVRMOjpQb2ludGVyVHlwZTo6aW5pdCgpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpQb2ludGVyVHlwZT4oKTsKK30KKworLy8gcHJv
cGVydHk6IGVsZW1lbnRUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6UG9pbnRl
clR5cGU6OmVsZW1lbnRUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRUeXBlKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRBY2Nl
c3MgTVRMOjpQb2ludGVyVHlwZTo6YWNjZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGFjY2VzcykpOworfQorCisvLyBwcm9wZXJ0eTogYWxpZ25tZW50CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpQb2ludGVyVHlwZTo6YWxpZ25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYWxpZ25tZW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBkYXRhU2l6ZQorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6UG9pbnRlclR5cGU6OmRhdGFTaXplKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoZGF0YVNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IGVsZW1lbnRJc0FyZ3VtZW50QnVm
ZmVyCitfTVRMX0lOTElORSBib29sIE1UTDo6UG9pbnRlclR5cGU6OmVsZW1lbnRJc0FyZ3VtZW50
QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRJc0FyZ3VtZW50QnVmZmVyKSk7Cit9CisKKy8v
IG1ldGhvZDogZWxlbWVudFN0cnVjdFR5cGUKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSog
TVRMOjpQb2ludGVyVHlwZTo6ZWxlbWVudFN0cnVjdFR5cGUoKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RydWN0VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZWxlbWVudFN0cnVjdFR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBlbGVtZW50QXJyYXlUeXBlCitf
TVRMX0lOTElORSBNVEw6OkFycmF5VHlwZSogTVRMOjpQb2ludGVyVHlwZTo6ZWxlbWVudEFycmF5
VHlwZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcnJheVR5cGUq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRBcnJheVR5cGUpKTsKK30KKworLy8gc3Rh
dGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGUq
IE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6YWxsb2M8TVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZT4oX01UTF9QUklWQVRFX0NMUyhN
VExUZXh0dXJlUmVmZXJlbmNlVHlwZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGUqIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGU6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VGV4dHVyZVJlZmVy
ZW5jZVR5cGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlRGF0YVR5cGUKK19NVExfSU5M
SU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6dGV4dHVyZURhdGFU
eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFU
eXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVEYXRhVHlwZSkpOworfQorCisvLyBw
cm9wZXJ0eTogdGV4dHVyZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVR5cGUgTVRMOjpU
ZXh0dXJlUmVmZXJlbmNlVHlwZTo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwodGV4dHVyZVR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFjY2VzcworX01UTF9JTkxJTkUg
TVRMOjpBcmd1bWVudEFjY2VzcyBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlOjphY2Nlc3MoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRBY2Nl
c3M+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWNjZXNzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBp
c0RlcHRoVGV4dHVyZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBl
Ojppc0RlcHRoVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0RlcHRoVGV4dHVyZSkpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudCogTVRMOjpB
cmd1bWVudDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFy
Z3VtZW50PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFyZ3VtZW50KSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudCogTVRMOjpBcmd1bWVudDo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBcmd1bWVudD4oKTsKK30KKworLy8g
cHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6QXJndW1lbnQ6Om5h
bWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUK
K19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRUeXBlIE1UTDo6QXJndW1lbnQ6OnR5cGUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRUeXBlPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFjY2Vzcwor
X01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEFjY2VzcyBNVEw6OkFyZ3VtZW50OjphY2Nlc3MoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRBY2Nl
c3M+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWNjZXNzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBp
bmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6OmluZGV4KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaW5kZXgpKTsKK30KKworLy8gcHJvcGVydHk6IGFjdGl2ZQorX01U
TF9JTkxJTkUgYm9vbCBNVEw6OkFyZ3VtZW50OjphY3RpdmUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNBY3Rp
dmUpKTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckFsaWdubWVudAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6OmJ1ZmZlckFsaWdubWVudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGJ1ZmZlckFsaWdubWVudCkpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyRGF0YVNp
emUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50OjpidWZmZXJEYXRhU2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlckRhdGFTaXplKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBidWZmZXJEYXRhVHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OkFyZ3Vt
ZW50OjpidWZmZXJEYXRhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXJEYXRhVHlw
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyU3RydWN0VHlwZQorX01UTF9JTkxJTkUgTVRM
OjpTdHJ1Y3RUeXBlKiBNVEw6OkFyZ3VtZW50OjpidWZmZXJTdHJ1Y3RUeXBlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0cnVjdFR5cGUqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGJ1ZmZlclN0cnVjdFR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGJ1
ZmZlclBvaW50ZXJUeXBlCitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJUeXBlKiBNVEw6OkFyZ3Vt
ZW50OjpidWZmZXJQb2ludGVyVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpQb2ludGVyVHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVy
UG9pbnRlclR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZGdyb3VwTWVtb3J5QWxpZ25t
ZW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudDo6dGhyZWFkZ3JvdXBN
ZW1vcnlBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRncm91cE1lbW9yeUFs
aWdubWVudCkpOworfQorCisvLyBwcm9wZXJ0eTogdGhyZWFkZ3JvdXBNZW1vcnlEYXRhU2l6ZQor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6OnRocmVhZGdyb3VwTWVtb3J5
RGF0YVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRncm91cE1lbW9yeURhdGFTaXpl
KSk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlVHlwZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0
dXJlVHlwZSBNVEw6OkFyZ3VtZW50Ojp0ZXh0dXJlVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh0ZXh0dXJlVHlwZSkpOworfQorCisvLyBwcm9wZXJ0eTogdGV4dHVyZURhdGFUeXBlCitf
TVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6QXJndW1lbnQ6OnRleHR1cmVEYXRhVHlwZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4o
dGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlRGF0YVR5cGUpKTsKK30KKworLy8gcHJvcGVy
dHk6IGlzRGVwdGhUZXh0dXJlCitfTVRMX0lOTElORSBib29sIE1UTDo6QXJndW1lbnQ6OmlzRGVw
dGhUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzRGVwdGhUZXh0dXJlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBhcnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6
OmFycmF5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVu
dEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFy
Z3VtZW50RW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNlY2M3ZDk1Njc1MmM2MzMxYTYzMDdkYTUw
ODkxYTcxZDJjMTA0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsMjUwIEBACisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRh
bC9NVExBcmd1bWVudEVuY29kZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBs
ZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAi
TVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1
ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExCdWZmZXIuaHBw
IgorI2luY2x1ZGUgIk1UTENvbXB1dGVQaXBlbGluZS5ocHAiCisjaW5jbHVkZSAiTVRMSW5kaXJl
Y3RDb21tYW5kQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQaXBlbGluZS5ocHAiCisjaW5jbHVkZSAiTVRM
U2FtcGxlci5ocHAiCisjaW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMVmlz
aWJsZUZ1bmN0aW9uVGFibGUuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBBcmd1bWVu
dEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFyZ3VtZW50RW5jb2Rlcj4KK3sKK3B1
YmxpYzoKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAg
TlM6OlN0cmluZyogICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICBlbmNvZGVkTGVuZ3RoKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgIGFsaWdubWVudCgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICBzZXRBcmd1bWVudEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGFyZ3VtZW50QnVmZmVy
LCBOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0
QXJndW1lbnRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBhcmd1bWVudEJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIHN0YXJ0T2Zmc2V0LCBOUzo6VUludGVnZXIgYXJyYXlFbGVtZW50KTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgc2V0QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVy
LCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICBzZXRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0
IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgIHNldFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0VGV4
dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3MgU2FtcGxl
clN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1td
LCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCogICAgICAgICAgICAgICAgICBjb25zdGFu
dERhdGEoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiBw
aXBlbGluZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXMoTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBwaXBl
bGluZXMsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNl
dENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiBw
aXBlbGluZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzKE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBp
cGVsaW5lcywgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
c2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZl
ciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICBzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKE1UTDo6SW5kaXJl
Y3RDb21tYW5kQnVmZmVyKiBidWZmZXJzLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICBzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgY2xhc3MgQWNj
ZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBp
bmRleCk7CisKKyAgICBjbGFzcyBBcmd1bWVudEVuY29kZXIqIG5ld0FyZ3VtZW50RW5jb2RlcihO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRWaXNp
YmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJs
ZUZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgIHNldFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBWaXNpYmxlRnVuY3Rpb25U
YWJsZSogdmlzaWJsZUZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgIHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3Qg
Y2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKK307CisK
K30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6
QXJndW1lbnRFbmNvZGVyOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsK
K30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkFy
Z3VtZW50RW5jb2Rlcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldExhYmVsKGNvbnN0IE5T
OjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBl
bmNvZGVkTGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudEVuY29k
ZXI6OmVuY29kZWRMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmNvZGVkTGVuZ3RoKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBhbGlnbm1lbnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OkFyZ3VtZW50RW5jb2Rlcjo6YWxpZ25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWxp
Z25tZW50KSk7Cit9CisKKy8vIG1ldGhvZDogc2V0QXJndW1lbnRCdWZmZXI6b2Zmc2V0OgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0QXJndW1lbnRCdWZmZXIoY29u
c3QgTVRMOjpCdWZmZXIqIGFyZ3VtZW50QnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRB
cmd1bWVudEJ1ZmZlcl9vZmZzZXRfKSwgYXJndW1lbnRCdWZmZXIsIG9mZnNldCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0QXJndW1lbnRCdWZmZXI6c3RhcnRPZmZzZXQ6YXJyYXlFbGVtZW50OgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0QXJndW1lbnRCdWZmZXIoY29u
c3QgTVRMOjpCdWZmZXIqIGFyZ3VtZW50QnVmZmVyLCBOUzo6VUludGVnZXIgc3RhcnRPZmZzZXQs
IE5TOjpVSW50ZWdlciBhcnJheUVsZW1lbnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFyZ3VtZW50QnVmZmVyX3N0YXJ0T2Zmc2V0
X2FycmF5RWxlbWVudF8pLCBhcmd1bWVudEJ1ZmZlciwgc3RhcnRPZmZzZXQsIGFycmF5RWxlbWVu
dCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVy
KiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVm
ZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBcmd1bWVudEVuY29kZXI6OnNldEJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29u
c3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJzX29m
ZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJhbmdlKTsKK30KKworLy8gbWV0
aG9kOiBzZXRUZXh0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRF
bmNvZGVyOjpzZXRUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRl
Z2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRUZXh0dXJlX2F0SW5kZXhfKSwgdGV4dHVyZSwgaW5kZXgpOworfQorCisv
LyBtZXRob2Q6IHNldFRleHR1cmVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
cmd1bWVudEVuY29kZXI6OnNldFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwgTlM6
OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRUZXh0dXJlc193aXRoUmFuZ2VfKSwgdGV4dHVyZXMsIHJhbmdlKTsK
K30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVyU3RhdGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6OlNhbXBs
ZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVyU3RhdGVfYXRJ
bmRleF8pLCBzYW1wbGVyLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2FtcGxlclN0YXRl
czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRT
YW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFu
Z2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFNhbXBsZXJTdGF0ZXNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCByYW5nZSk7Cit9CisK
Ky8vIG1ldGhvZDogY29uc3RhbnREYXRhQXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQqIE1UTDo6
QXJndW1lbnRFbmNvZGVyOjpjb25zdGFudERhdGEoTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGNvbnN0YW50RGF0YUF0SW5kZXhfKSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFJlbmRl
clBpcGVsaW5lU3RhdGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVu
Y29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZVN0
YXRlKiBwaXBlbGluZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZW5kZXJQaXBlbGluZVN0YXRl
X2F0SW5kZXhfKSwgcGlwZWxpbmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRSZW5kZXJQ
aXBlbGluZVN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRF
bmNvZGVyOjpzZXRSZW5kZXJQaXBlbGluZVN0YXRlcyhNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUq
IHBpcGVsaW5lcywgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZW5kZXJQaXBlbGluZVN0YXRlc193aXRo
UmFuZ2VfKSwgcGlwZWxpbmVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0Q29tcHV0ZVBp
cGVsaW5lU3RhdGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29k
ZXI6OnNldENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUqIHBpcGVsaW5lLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbXB1dGVQaXBlbGluZVN0YXRl
X2F0SW5kZXhfKSwgcGlwZWxpbmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRDb21wdXRl
UGlwZWxpbmVTdGF0ZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50
RW5jb2Rlcjo6c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzKE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUqIHBpcGVsaW5lcywgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZXNf
d2l0aFJhbmdlXyksIHBpcGVsaW5lcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEluZGly
ZWN0Q29tbWFuZEJ1ZmZlcjphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50
RW5jb2Rlcjo6c2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21t
YW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
SW5kaXJlY3RDb21tYW5kQnVmZmVyX2F0SW5kZXhfKSwgaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBp
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyczp3aXRoUmFu
Z2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRJbmRpcmVjdENv
bW1hbmRCdWZmZXJzKE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBidWZmZXJzLCBOUzo6UmFu
Z2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRJbmRl
eDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldEFjY2VsZXJhdGlv
blN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9u
U3RydWN0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFjY2VsZXJhdGlvblN0cnVjdHVyZV9h
dEluZGV4XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6
IG5ld0FyZ3VtZW50RW5jb2RlckZvckJ1ZmZlckF0SW5kZXg6CitfTVRMX0lOTElORSBNVEw6OkFy
Z3VtZW50RW5jb2RlciogTVRMOjpBcmd1bWVudEVuY29kZXI6Om5ld0FyZ3VtZW50RW5jb2RlcihO
Uzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBcmd1bWVudEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0FyZ3VtZW50RW5j
b2RlckZvckJ1ZmZlckF0SW5kZXhfKSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZpc2li
bGVGdW5jdGlvblRhYmxlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRF
bmNvZGVyOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OlZpc2libGVGdW5jdGlv
blRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaXNp
YmxlRnVuY3Rpb25UYWJsZV9hdEluZGV4XyksIHZpc2libGVGdW5jdGlvblRhYmxlLCBpbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndpdGhSYW5nZToKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldFZpc2libGVGdW5jdGlvblRh
Ymxlcyhjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJs
ZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aFJhbmdl
XyksIHZpc2libGVGdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldElu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
cmd1bWVudEVuY29kZXI6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRJbmRleF8pLCBp
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0SW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkFyZ3VtZW50RW5jb2Rlcjo6c2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRM
OjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc1td
LCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhSYW5n
ZV8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJpbmFyeUFyY2hpdmUuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJpbmFyeUFyY2hpdmUu
aHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgxNDJkMzc0YzM1YmUzOWQ2NjYyZTgxNGI3NzE5ZTM0Njg1MmM1ZmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQmluYXJ5QXJjaGl2ZS5ocHAKQEAgLTAsMCArMSwxMzggQEAKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEJpbmFyeUFyY2hp
dmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIs
IEJpbmFyeUFyY2hpdmVFcnJvcikgeworICAgIEJpbmFyeUFyY2hpdmVFcnJvck5vbmUgPSAwLAor
ICAgIEJpbmFyeUFyY2hpdmVFcnJvckludmFsaWRGaWxlID0gMSwKKyAgICBCaW5hcnlBcmNoaXZl
RXJyb3JVbmV4cGVjdGVkRWxlbWVudCA9IDIsCisgICAgQmluYXJ5QXJjaGl2ZUVycm9yQ29tcGls
YXRpb25GYWlsdXJlID0gMywKK307CisKK2NsYXNzIEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yIDog
cHVibGljIE5TOjpDb3B5aW5nPEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAg
IGNsYXNzIEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6
OlVSTCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFVybChjb25zdCBOUzo6VVJMKiB1
cmwpOworfTsKKworY2xhc3MgQmluYXJ5QXJjaGl2ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8
QmluYXJ5QXJjaGl2ZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgIGxhYmVsKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7
CisKKyAgICBjbGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAg
ICBhZGRDb21wdXRlUGlwZWxpbmVGdW5jdGlvbnMoY29uc3QgY2xhc3MgQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgYm9vbCAg
ICAgICAgICBhZGRSZW5kZXJQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBjbGFzcyBSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGJv
b2wgICAgICAgICAgYWRkVGlsZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zKGNvbnN0IGNsYXNzIFRp
bGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIGJvb2wgICAgICAgICAgc2VyaWFsaXplVG9VUkwoY29uc3QgTlM6OlVSTCogdXJs
LCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29sICAgICAgICAgIGFkZEZ1bmN0aW9uKGNv
bnN0IGNsYXNzIEZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgY2xhc3MgTGli
cmFyeSogbGlicmFyeSwgTlM6OkVycm9yKiogZXJyb3IpOworfTsKKworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciog
TVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0OjphbGxvYzxNVEw6OkJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVf
Q0xTKE1UTEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAor
X01UTF9JTkxJTkUgTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciogTVRMOjpCaW5hcnlBcmNo
aXZlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHVybAorX01U
TF9JTkxJTkUgTlM6OlVSTCogTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcjo6dXJsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VVJMKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh1cmwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJpbmFyeUFy
Y2hpdmVEZXNjcmlwdG9yOjpzZXRVcmwoY29uc3QgTlM6OlVSTCogdXJsKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRVcmxfKSwgdXJs
KTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6
OkJpbmFyeUFyY2hpdmU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmluYXJ5QXJjaGl2ZTo6c2V0TGFiZWwoY29uc3QgTlM6
OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRl
dmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6QmluYXJ5QXJjaGl2ZTo6ZGV2aWNl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIG1ldGhvZDogYWRkQ29t
cHV0ZVBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBi
b29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6YWRkQ29tcHV0ZVBpcGVsaW5lRnVuY3Rpb25zKGNvbnN0
IE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiog
ZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChhZGRDb21wdXRlUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcl9l
cnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogYWRkUmVuZGVyUGlw
ZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcjplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpCaW5hcnlBcmNoaXZlOjphZGRSZW5kZXJQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChhZGRSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRl
c2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBhZGRUaWxlUmVuZGVyUGlwZWxpbmVG
dW5jdGlvbnNXaXRoRGVzY3JpcHRvcjplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpCaW5h
cnlBcmNoaXZlOjphZGRUaWxlUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnMoY29uc3QgTVRMOjpUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcikK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGFkZFRpbGVSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yX2Vycm9y
XyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBzZXJpYWxpemVUb1VSTDpl
cnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpCaW5hcnlBcmNoaXZlOjpzZXJpYWxpemVUb1VS
TChjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2VyaWFsaXpl
VG9VUkxfZXJyb3JfKSwgdXJsLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogYWRkRnVuY3Rpb25X
aXRoRGVzY3JpcHRvcjpsaWJyYXJ5OmVycm9yOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkJpbmFy
eUFyY2hpdmU6OmFkZEZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yKiBkZXNj
cmlwdG9yLCBjb25zdCBNVEw6OkxpYnJhcnkqIGxpYnJhcnksIE5TOjpFcnJvcioqIGVycm9yKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoYWRkRnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9saWJyYXJ5X2Vycm9yXyksIGRlc2NyaXB0
b3IsIGxpYnJhcnksIGVycm9yKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGE4NmI2YTk1MDFjNjg1M2YwYzhmNWEwYmIwYWI3ZWI2MDM3N2MwMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0Q29t
bWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsMjQ2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExCbGl0Q29tbWFuZEVuY29k
ZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwIgorI2lu
Y2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisK
K25hbWVzcGFjZSBNVEwKK3sKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIEJsaXRPcHRpb24p
IHsKKyAgICBCbGl0T3B0aW9uTm9uZSA9IDAsCisgICAgQmxpdE9wdGlvbkRlcHRoRnJvbURlcHRo
U3RlbmNpbCA9IDEsCisgICAgQmxpdE9wdGlvblN0ZW5jaWxGcm9tRGVwdGhTdGVuY2lsID0gMiwK
KyAgICBCbGl0T3B0aW9uUm93TGluZWFyUFZSVEMgPSA0LAorfTsKKworY2xhc3MgQmxpdENvbW1h
bmRFbmNvZGVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxCbGl0Q29tbWFuZEVuY29kZXIsIENv
bW1hbmRFbmNvZGVyPgoreworcHVibGljOgorICAgIHZvaWQgc3luY2hyb25pemVSZXNvdXJjZShj
b25zdCBjbGFzcyBSZXNvdXJjZSogcmVzb3VyY2UpOworCisgICAgdm9pZCBzeW5jaHJvbml6ZVRl
eHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBO
Uzo6VUludGVnZXIgbGV2ZWwpOworCisgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUoY29uc3QgY2xh
c3MgVGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZVNsaWNlLCBOUzo6
VUludGVnZXIgc291cmNlTGV2ZWwsIE1UTDo6T3JpZ2luIHNvdXJjZU9yaWdpbiwgTVRMOjpTaXpl
IHNvdXJjZVNpemUsIGNvbnN0IGNsYXNzIFRleHR1cmUqIGRlc3RpbmF0aW9uVGV4dHVyZSwgTlM6
OlVJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkxldmVs
LCBNVEw6Ok9yaWdpbiBkZXN0aW5hdGlvbk9yaWdpbik7CisKKyAgICB2b2lkIGNvcHlGcm9tQnVm
ZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUludGVnZXIgc291cmNl
T2Zmc2V0LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBzb3Vy
Y2VCeXRlc1BlckltYWdlLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgY2xhc3MgVGV4dHVy
ZSogZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGljZSwgTlM6
OlVJbnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3RpbmF0aW9uT3JpZ2lu
KTsKKworICAgIHZvaWQgY29weUZyb21CdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBzb3VyY2VC
dWZmZXIsIE5TOjpVSW50ZWdlciBzb3VyY2VPZmZzZXQsIE5TOjpVSW50ZWdlciBzb3VyY2VCeXRl
c1BlclJvdywgTlM6OlVJbnRlZ2VyIHNvdXJjZUJ5dGVzUGVySW1hZ2UsIE1UTDo6U2l6ZSBzb3Vy
Y2VTaXplLCBjb25zdCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50
ZWdlciBkZXN0aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRM
OjpPcmlnaW4gZGVzdGluYXRpb25PcmlnaW4sIE1UTDo6QmxpdE9wdGlvbiBvcHRpb25zKTsKKwor
ICAgIHZvaWQgY29weUZyb21UZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNvdXJjZVRleHR1
cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxldmVsLCBN
VEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBjbGFz
cyBCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZz
ZXQsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgZGVz
dGluYXRpb25CeXRlc1BlckltYWdlKTsKKworICAgIHZvaWQgY29weUZyb21UZXh0dXJlKGNvbnN0
IGNsYXNzIFRleHR1cmUqIHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwg
TlM6OlVJbnRlZ2VyIHNvdXJjZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6
U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBjbGFzcyBCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBO
Uzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZzZXQsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5
dGVzUGVyUm93LCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25CeXRlc1BlckltYWdlLCBNVEw6OkJs
aXRPcHRpb24gb3B0aW9ucyk7CisKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFwcyhjb25zdCBjbGFz
cyBUZXh0dXJlKiB0ZXh0dXJlKTsKKworICAgIHZvaWQgZmlsbEJ1ZmZlcihjb25zdCBjbGFzcyBC
dWZmZXIqIGJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlLCB1aW50OF90IHZhbHVlKTsKKworICAgIHZv
aWQgY29weUZyb21UZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNvdXJjZVRleHR1cmUsIE5T
OjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxldmVsLCBjb25zdCBj
bGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlv
blNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNl
Q291bnQsIE5TOjpVSW50ZWdlciBsZXZlbENvdW50KTsKKworICAgIHZvaWQgY29weUZyb21UZXh0
dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNvdXJjZVRleHR1cmUsIGNvbnN0IGNsYXNzIFRleHR1
cmUqIGRlc3RpbmF0aW9uVGV4dHVyZSk7CisKKyAgICB2b2lkIGNvcHlGcm9tQnVmZmVyKGNvbnN0
IGNsYXNzIEJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUludGVnZXIgc291cmNlT2Zmc2V0LCBj
b25zdCBjbGFzcyBCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGlu
YXRpb25PZmZzZXQsIE5TOjpVSW50ZWdlciBzaXplKTsKKworICAgIHZvaWQgdXBkYXRlRmVuY2Uo
Y29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKKworICAgIHZvaWQgd2FpdEZvckZlbmNlKGNvbnN0
IGNsYXNzIEZlbmNlKiBmZW5jZSk7CisKKyAgICB2b2lkIGdldFRleHR1cmVBY2Nlc3NDb3VudGVy
cyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpV
SW50ZWdlciBtaXBMZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBib29sIHJlc2V0Q291bnRlcnMs
IGNvbnN0IGNsYXNzIEJ1ZmZlciogY291bnRlcnNCdWZmZXIsIE5TOjpVSW50ZWdlciBjb3VudGVy
c0J1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkIHJlc2V0VGV4dHVyZUFjY2Vzc0NvdW50ZXJzKGNv
bnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRl
Z2VyIG1pcExldmVsLCBOUzo6VUludGVnZXIgc2xpY2UpOworCisgICAgdm9pZCBvcHRpbWl6ZUNv
bnRlbnRzRm9yR1BVQWNjZXNzKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUpOworCisgICAg
dm9pZCBvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRl
eHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6OlVJbnRlZ2VyIGxldmVsKTsKKworICAgIHZv
aWQgb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vzcyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0
dXJlKTsKKworICAgIHZvaWQgb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vzcyhjb25zdCBjbGFz
cyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZl
bCk7CisKKyAgICB2b2lkIHJlc2V0Q29tbWFuZHNJbkJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVj
dENvbW1hbmRCdWZmZXIqIGJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgY29w
eUluZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIq
IHNvdXJjZSwgTlM6OlJhbmdlIHNvdXJjZVJhbmdlLCBjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1h
bmRCdWZmZXIqIGRlc3RpbmF0aW9uLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25JbmRleCk7CisK
KyAgICB2b2lkIG9wdGltaXplSW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IGNsYXNzIEluZGly
ZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6UmFuZ2UgcmFuZ2Up
OworCisgICAgdm9pZCBzYW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJT
YW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUluZGV4LCBib29s
IGJhcnJpZXIpOworCisgICAgdm9pZCByZXNvbHZlQ291bnRlcnMoY29uc3QgY2xhc3MgQ291bnRl
clNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6UmFuZ2UgcmFuZ2UsIGNvbnN0IGNsYXNz
IEJ1ZmZlciogZGVzdGluYXRpb25CdWZmZXIsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbk9mZnNl
dCk7Cit9OworCit9CisKKy8vIG1ldGhvZDogc3luY2hyb25pemVSZXNvdXJjZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnN5bmNocm9uaXplUmVzb3VyY2UoY29u
c3QgTVRMOjpSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN5bmNocm9uaXplUmVzb3VyY2VfKSwgcmVzb3Vy
Y2UpOworfQorCisvLyBtZXRob2Q6IHN5bmNocm9uaXplVGV4dHVyZTpzbGljZTpsZXZlbDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnN5bmNocm9uaXplVGV4dHVy
ZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6OlVJ
bnRlZ2VyIGxldmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzeW5jaHJvbml6ZVRleHR1cmVfc2xpY2VfbGV2ZWxfKSwgdGV4dHVyZSwg
c2xpY2UsIGxldmVsKTsKK30KKworLy8gbWV0aG9kOiBjb3B5RnJvbVRleHR1cmU6c291cmNlU2xp
Y2U6c291cmNlTGV2ZWw6c291cmNlT3JpZ2luOnNvdXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0
aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0aW5hdGlvbk9yaWdpbjoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tVGV4dHVyZShjb25zdCBNVEw6
OlRleHR1cmUqIHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJ
bnRlZ2VyIHNvdXJjZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBz
b3VyY2VTaXplLCBjb25zdCBNVEw6OlRleHR1cmUqIGRlc3RpbmF0aW9uVGV4dHVyZSwgTlM6OlVJ
bnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkxldmVsLCBN
VEw6Ok9yaWdpbiBkZXN0aW5hdGlvbk9yaWdpbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJjZVNsaWNl
X3NvdXJjZUxldmVsX3NvdXJjZU9yaWdpbl9zb3VyY2VTaXplX3RvVGV4dHVyZV9kZXN0aW5hdGlv
blNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVzdGluYXRpb25PcmlnaW5fKSwgc291cmNlVGV4dHVy
ZSwgc291cmNlU2xpY2UsIHNvdXJjZUxldmVsLCBzb3VyY2VPcmlnaW4sIHNvdXJjZVNpemUsIGRl
c3RpbmF0aW9uVGV4dHVyZSwgZGVzdGluYXRpb25TbGljZSwgZGVzdGluYXRpb25MZXZlbCwgZGVz
dGluYXRpb25PcmlnaW4pOworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tQnVmZmVyOnNvdXJjZU9m
ZnNldDpzb3VyY2VCeXRlc1BlclJvdzpzb3VyY2VCeXRlc1BlckltYWdlOnNvdXJjZVNpemU6dG9U
ZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0aW5hdGlvbk9yaWdp
bjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tQnVm
ZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBzb3VyY2VCdWZmZXIsIE5TOjpVSW50ZWdlciBzb3VyY2VP
ZmZzZXQsIE5TOjpVSW50ZWdlciBzb3VyY2VCeXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIHNvdXJj
ZUJ5dGVzUGVySW1hZ2UsIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBNVEw6OlRleHR1cmUq
IGRlc3RpbmF0aW9uVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpV
SW50ZWdlciBkZXN0aW5hdGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBkZXN0aW5hdGlvbk9yaWdpbikK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
Y29weUZyb21CdWZmZXJfc291cmNlT2Zmc2V0X3NvdXJjZUJ5dGVzUGVyUm93X3NvdXJjZUJ5dGVz
UGVySW1hZ2Vfc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGljZV9kZXN0aW5hdGlv
bkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luXyksIHNvdXJjZUJ1ZmZlciwgc291cmNlT2Zmc2V0LCBz
b3VyY2VCeXRlc1BlclJvdywgc291cmNlQnl0ZXNQZXJJbWFnZSwgc291cmNlU2l6ZSwgZGVzdGlu
YXRpb25UZXh0dXJlLCBkZXN0aW5hdGlvblNsaWNlLCBkZXN0aW5hdGlvbkxldmVsLCBkZXN0aW5h
dGlvbk9yaWdpbik7Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21CdWZmZXI6c291cmNlT2Zmc2V0
OnNvdXJjZUJ5dGVzUGVyUm93OnNvdXJjZUJ5dGVzUGVySW1hZ2U6c291cmNlU2l6ZTp0b1RleHR1
cmU6ZGVzdGluYXRpb25TbGljZTpkZXN0aW5hdGlvbkxldmVsOmRlc3RpbmF0aW9uT3JpZ2luOm9w
dGlvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5RnJv
bUJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUludGVnZXIgc291
cmNlT2Zmc2V0LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBz
b3VyY2VCeXRlc1BlckltYWdlLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgTVRMOjpUZXh0
dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlLCBO
Uzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRMOjpPcmlnaW4gZGVzdGluYXRpb25Pcmln
aW4sIE1UTDo6QmxpdE9wdGlvbiBvcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5RnJvbUJ1ZmZlcl9zb3VyY2VPZmZzZXRf
c291cmNlQnl0ZXNQZXJSb3dfc291cmNlQnl0ZXNQZXJJbWFnZV9zb3VyY2VTaXplX3RvVGV4dHVy
ZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVzdGluYXRpb25PcmlnaW5fb3B0
aW9uc18pLCBzb3VyY2VCdWZmZXIsIHNvdXJjZU9mZnNldCwgc291cmNlQnl0ZXNQZXJSb3csIHNv
dXJjZUJ5dGVzUGVySW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RpbmF0aW9uVGV4dHVyZSwgZGVzdGlu
YXRpb25TbGljZSwgZGVzdGluYXRpb25MZXZlbCwgZGVzdGluYXRpb25PcmlnaW4sIG9wdGlvbnMp
OworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tVGV4dHVyZTpzb3VyY2VTbGljZTpzb3VyY2VMZXZl
bDpzb3VyY2VPcmlnaW46c291cmNlU2l6ZTp0b0J1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDpkZXN0
aW5hdGlvbkJ5dGVzUGVyUm93OmRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tVGV4dHVyZShjb25zdCBNVEw6
OlRleHR1cmUqIHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJ
bnRlZ2VyIHNvdXJjZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBz
b3VyY2VTaXplLCBjb25zdCBNVEw6OkJ1ZmZlciogZGVzdGluYXRpb25CdWZmZXIsIE5TOjpVSW50
ZWdlciBkZXN0aW5hdGlvbk9mZnNldCwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJS
b3csIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2UpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tVGV4dHVy
ZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF9zb3VyY2VPcmlnaW5fc291cmNlU2l6ZV90b0J1ZmZl
cl9kZXN0aW5hdGlvbk9mZnNldF9kZXN0aW5hdGlvbkJ5dGVzUGVyUm93X2Rlc3RpbmF0aW9uQnl0
ZXNQZXJJbWFnZV8pLCBzb3VyY2VUZXh0dXJlLCBzb3VyY2VTbGljZSwgc291cmNlTGV2ZWwsIHNv
dXJjZU9yaWdpbiwgc291cmNlU2l6ZSwgZGVzdGluYXRpb25CdWZmZXIsIGRlc3RpbmF0aW9uT2Zm
c2V0LCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2UpOwor
fQorCisvLyBtZXRob2Q6IGNvcHlGcm9tVGV4dHVyZTpzb3VyY2VTbGljZTpzb3VyY2VMZXZlbDpz
b3VyY2VPcmlnaW46c291cmNlU2l6ZTp0b0J1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDpkZXN0aW5h
dGlvbkJ5dGVzUGVyUm93OmRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZTpvcHRpb25zOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Y29weUZyb21UZXh0dXJlKGNvbnN0
IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZVNsaWNlLCBO
Uzo6VUludGVnZXIgc291cmNlTGV2ZWwsIE1UTDo6T3JpZ2luIHNvdXJjZU9yaWdpbiwgTVRMOjpT
aXplIHNvdXJjZVNpemUsIGNvbnN0IE1UTDo6QnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6
OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25CeXRl
c1BlclJvdywgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZSwgTVRMOjpCbGl0
T3B0aW9uIG9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF9z
b3VyY2VPcmlnaW5fc291cmNlU2l6ZV90b0J1ZmZlcl9kZXN0aW5hdGlvbk9mZnNldF9kZXN0aW5h
dGlvbkJ5dGVzUGVyUm93X2Rlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZV9vcHRpb25zXyksIHNvdXJj
ZVRleHR1cmUsIHNvdXJjZVNsaWNlLCBzb3VyY2VMZXZlbCwgc291cmNlT3JpZ2luLCBzb3VyY2VT
aXplLCBkZXN0aW5hdGlvbkJ1ZmZlciwgZGVzdGluYXRpb25PZmZzZXQsIGRlc3RpbmF0aW9uQnl0
ZXNQZXJSb3csIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZSwgb3B0aW9ucyk7Cit9CisKKy8vIG1l
dGhvZDogZ2VuZXJhdGVNaXBtYXBzRm9yVGV4dHVyZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpC
bGl0Q29tbWFuZEVuY29kZXI6OmdlbmVyYXRlTWlwbWFwcyhjb25zdCBNVEw6OlRleHR1cmUqIHRl
eHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGdlbmVyYXRlTWlwbWFwc0ZvclRleHR1cmVfKSwgdGV4dHVyZSk7Cit9CisKKy8vIG1l
dGhvZDogZmlsbEJ1ZmZlcjpyYW5nZTp2YWx1ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0
Q29tbWFuZEVuY29kZXI6OmZpbGxCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6
OlJhbmdlIHJhbmdlLCB1aW50OF90IHZhbHVlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChmaWxsQnVmZmVyX3JhbmdlX3ZhbHVlXyksIGJ1
ZmZlciwgcmFuZ2UsIHZhbHVlKTsKK30KKworLy8gbWV0aG9kOiBjb3B5RnJvbVRleHR1cmU6c291
cmNlU2xpY2U6c291cmNlTGV2ZWw6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRp
b25MZXZlbDpzbGljZUNvdW50OmxldmVsQ291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiBzb3Vy
Y2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VM
ZXZlbCwgY29uc3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdl
ciBkZXN0aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTlM6OlVJ
bnRlZ2VyIHNsaWNlQ291bnQsIE5TOjpVSW50ZWdlciBsZXZlbENvdW50KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5RnJvbVRleHR1
cmVfc291cmNlU2xpY2Vfc291cmNlTGV2ZWxfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVz
dGluYXRpb25MZXZlbF9zbGljZUNvdW50X2xldmVsQ291bnRfKSwgc291cmNlVGV4dHVyZSwgc291
cmNlU2xpY2UsIHNvdXJjZUxldmVsLCBkZXN0aW5hdGlvblRleHR1cmUsIGRlc3RpbmF0aW9uU2xp
Y2UsIGRlc3RpbmF0aW9uTGV2ZWwsIHNsaWNlQ291bnQsIGxldmVsQ291bnQpOworfQorCisvLyBt
ZXRob2Q6IGNvcHlGcm9tVGV4dHVyZTp0b1RleHR1cmU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiBz
b3VyY2VUZXh0dXJlLCBjb25zdCBNVEw6OlRleHR1cmUqIGRlc3RpbmF0aW9uVGV4dHVyZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29w
eUZyb21UZXh0dXJlX3RvVGV4dHVyZV8pLCBzb3VyY2VUZXh0dXJlLCBkZXN0aW5hdGlvblRleHR1
cmUpOworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tQnVmZmVyOnNvdXJjZU9mZnNldDp0b0J1ZmZl
cjpkZXN0aW5hdGlvbk9mZnNldDpzaXplOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21t
YW5kRW5jb2Rlcjo6Y29weUZyb21CdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIHNvdXJjZUJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgY29uc3QgTVRMOjpCdWZmZXIqIGRlc3RpbmF0
aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZzZXQsIE5TOjpVSW50ZWdlciBz
aXplKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChjb3B5RnJvbUJ1ZmZlcl9zb3VyY2VPZmZzZXRfdG9CdWZmZXJfZGVzdGluYXRpb25PZmZz
ZXRfc2l6ZV8pLCBzb3VyY2VCdWZmZXIsIHNvdXJjZU9mZnNldCwgZGVzdGluYXRpb25CdWZmZXIs
IGRlc3RpbmF0aW9uT2Zmc2V0LCBzaXplKTsKK30KKworLy8gbWV0aG9kOiB1cGRhdGVGZW5jZToK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnVwZGF0ZUZlbmNlKGNv
bnN0IE1UTDo6RmVuY2UqIGZlbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTCh1cGRhdGVGZW5jZV8pLCBmZW5jZSk7Cit9CisKKy8vIG1l
dGhvZDogd2FpdEZvckZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5j
b2Rlcjo6d2FpdEZvckZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3YWl0Rm9yRmVuY2Vf
KSwgZmVuY2UpOworfQorCisvLyBtZXRob2Q6IGdldFRleHR1cmVBY2Nlc3NDb3VudGVyczpyZWdp
b246bWlwTGV2ZWw6c2xpY2U6cmVzZXRDb3VudGVyczpjb3VudGVyc0J1ZmZlcjpjb3VudGVyc0J1
ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6Omdl
dFRleHR1cmVBY2Nlc3NDb3VudGVycyhjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE1UTDo6
UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBOUzo6VUludGVnZXIgc2xpY2Us
IGJvb2wgcmVzZXRDb3VudGVycywgY29uc3QgTVRMOjpCdWZmZXIqIGNvdW50ZXJzQnVmZmVyLCBO
Uzo6VUludGVnZXIgY291bnRlcnNCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdldFRleHR1cmVBY2Nlc3NDb3VudGVy
c19yZWdpb25fbWlwTGV2ZWxfc2xpY2VfcmVzZXRDb3VudGVyc19jb3VudGVyc0J1ZmZlcl9jb3Vu
dGVyc0J1ZmZlck9mZnNldF8pLCB0ZXh0dXJlLCByZWdpb24sIG1pcExldmVsLCBzbGljZSwgcmVz
ZXRDb3VudGVycywgY291bnRlcnNCdWZmZXIsIGNvdW50ZXJzQnVmZmVyT2Zmc2V0KTsKK30KKwor
Ly8gbWV0aG9kOiByZXNldFRleHR1cmVBY2Nlc3NDb3VudGVyczpyZWdpb246bWlwTGV2ZWw6c2xp
Y2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpyZXNldFRleHR1
cmVBY2Nlc3NDb3VudGVycyhjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE1UTDo6UmVnaW9u
IHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBOUzo6VUludGVnZXIgc2xpY2UpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0
VGV4dHVyZUFjY2Vzc0NvdW50ZXJzX3JlZ2lvbl9taXBMZXZlbF9zbGljZV8pLCB0ZXh0dXJlLCBy
ZWdpb24sIG1pcExldmVsLCBzbGljZSk7Cit9CisKKy8vIG1ldGhvZDogb3B0aW1pemVDb250ZW50
c0ZvckdQVUFjY2VzczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6
Om9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3MoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzXyksIHRleHR1cmUpOworfQorCisvLyBtZXRo
b2Q6IG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNj
ZXNzKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBOUzo6
VUludGVnZXIgbGV2ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3Nfc2xpY2VfbGV2ZWxf
KSwgdGV4dHVyZSwgc2xpY2UsIGxldmVsKTsKK30KKworLy8gbWV0aG9kOiBvcHRpbWl6ZUNvbnRl
bnRzRm9yQ1BVQWNjZXNzOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rl
cjo6b3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vzcyhjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1
cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3NfKSwgdGV4dHVyZSk7Cit9CisKKy8vIG1l
dGhvZDogb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2VzczpzbGljZTpsZXZlbDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6Om9wdGltaXplQ29udGVudHNGb3JDUFVB
Y2Nlc3MoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgc2xpY2UsIE5T
OjpVSW50ZWdlciBsZXZlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwob3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vzc19zbGljZV9sZXZl
bF8pLCB0ZXh0dXJlLCBzbGljZSwgbGV2ZWwpOworfQorCisvLyBtZXRob2Q6IHJlc2V0Q29tbWFu
ZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRF
bmNvZGVyOjpyZXNldENvbW1hbmRzSW5CdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRC
dWZmZXIqIGJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldENvbW1hbmRzSW5CdWZmZXJfd2l0
aFJhbmdlXyksIGJ1ZmZlciwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IGNvcHlJbmRpcmVjdENv
bW1hbmRCdWZmZXI6c291cmNlUmFuZ2U6ZGVzdGluYXRpb246ZGVzdGluYXRpb25JbmRleDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlJbmRpcmVjdENvbW1h
bmRCdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIHNvdXJjZSwgTlM6OlJh
bmdlIHNvdXJjZVJhbmdlLCBjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogZGVzdGlu
YXRpb24sIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkluZGV4KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5SW5kaXJlY3RDb21tYW5k
QnVmZmVyX3NvdXJjZVJhbmdlX2Rlc3RpbmF0aW9uX2Rlc3RpbmF0aW9uSW5kZXhfKSwgc291cmNl
LCBzb3VyY2VSYW5nZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uSW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IG9wdGltaXplSW5kaXJlY3RDb21tYW5kQnVmZmVyOndpdGhSYW5nZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6Om9wdGltaXplSW5kaXJlY3RDb21tYW5k
QnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRC
dWZmZXIsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3B0aW1pemVJbmRpcmVjdENvbW1hbmRCdWZmZXJfd2l0
aFJhbmdlXyksIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6
IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRTYW1wbGVJbmRleDp3aXRoQmFycmllcjoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnNhbXBsZUNvdW50ZXJzSW5CdWZm
ZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpVSW50
ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3VudGVyc0luQnVmZmVyX2F0
U2FtcGxlSW5kZXhfd2l0aEJhcnJpZXJfKSwgc2FtcGxlQnVmZmVyLCBzYW1wbGVJbmRleCwgYmFy
cmllcik7Cit9CisKKy8vIG1ldGhvZDogcmVzb2x2ZUNvdW50ZXJzOmluUmFuZ2U6ZGVzdGluYXRp
b25CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENv
bW1hbmRFbmNvZGVyOjpyZXNvbHZlQ291bnRlcnMoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVm
ZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpSYW5nZSByYW5nZSwgY29uc3QgTVRMOjpCdWZmZXIqIGRl
c3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZzZXQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc29sdmVD
b3VudGVyc19pblJhbmdlX2Rlc3RpbmF0aW9uQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0XyksIHNh
bXBsZUJ1ZmZlciwgcmFuZ2UsIGRlc3RpbmF0aW9uQnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNldCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
QmxpdFBhc3MuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJs
aXRQYXNzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGVhZTMxZDcxMjRkYmEzNDQxMDNlN2E3M2Q3OTU2ZDRi
YTUzMTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEJsaXRQYXNzLmhwcApAQCAtMCwwICsxLDE2NSBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQmxpdFBhc3Mu
aHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIK
KyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIEJsaXRQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QmxpdFBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAg
IGNsYXNzIEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICBp
bml0KCk7CisKKyAgICBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlQnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbXBsZUJ1ZmZlcihjb25z
dCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZF
bmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRl
eChOUzo6VUludGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kT2ZFbmNv
ZGVyU2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6
OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK307CisKK2NsYXNzIEJsaXRQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Pgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBC
bGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmpl
Y3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29u
c3QgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNo
bWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7Cit9OworCitjbGFzcyBCbGl0UGFz
c0Rlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QmxpdFBhc3NEZXNjcmlwdG9yPgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAg
ICAgICAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIEJsaXRQYXNzRGVzY3JpcHRvciogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIEJsaXRQYXNz
RGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICBibGl0UGFzc0Rlc2NyaXB0b3IoKTsKKwor
ICAgIGNsYXNzIEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSog
c2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdDsKK307CisKK30KKworLy8gc3RhdGljIG1l
dGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvciogTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QmxpdFBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExC
bGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhv
ZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKiBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QmxpdFBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBs
ZUJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBNVEw6OkJsaXRQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2FtcGxlQnVm
ZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVCdWZmZXIpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldFNhbXBsZUJ1ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1
ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0U2FtcGxlQnVmZmVyXyksIHNhbXBsZUJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5
OiBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzdGFydE9mRW5jb2Rl
clNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhcnRPZkVuY29kZXJTYW1wbGVJ
bmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUlu
dGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJ
bmRleF8pLCBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IGVu
ZE9mRW5jb2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpCbGl0
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjplbmRPZkVuY29kZXJTYW1wbGVJ
bmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZF
bmNvZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4XyksIGVuZE9mRW5j
b2RlclNhbXBsZUluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5M
SU5FIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBN
VEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJsaXRQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExCbGl0UGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9k
OiBpbml0CitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSogTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Qmxp
dFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBt
ZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6QmxpdFBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpCbGl0UGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgYXR0YWNo
bWVudEluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxpdFBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OnNldE9i
amVjdChjb25zdCBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3Iq
IGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdElu
ZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudCwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8g
c3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9y
KiBNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0OjphbGxvYzxNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExC
bGl0UGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBN
VEw6OkJsaXRQYXNzRGVzY3JpcHRvciogTVRMOjpCbGl0UGFzc0Rlc2NyaXB0b3I6OmluaXQoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yPigp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBibGl0UGFzc0Rlc2NyaXB0b3IKK19NVExfSU5MSU5F
IE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yKiBNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcjo6YmxpdFBh
c3NEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJs
aXRQYXNzRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NEZXNjcmlwdG9y
KSwgX01UTF9QUklWQVRFX1NFTChibGl0UGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVy
dHk6IHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzCitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpCbGl0UGFzc0Rlc2NyaXB0
b3I6OnNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyQXR0YWNobWVudHMp
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExCdWZmZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJ1
ZmZlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFiZGRlZmVhNzcwZDU0NzNlMzNmMWFjNGFiYjI2NDYyYmZj
ZjQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExCdWZmZXIuaHBwCkBAIC0wLDAgKzEsMTAxIEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExCdWZmZXIuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNs
dWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHA+CisKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2Ns
YXNzIEJ1ZmZlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QnVmZmVyLCBSZXNvdXJjZT4KK3sK
K3B1YmxpYzoKKyAgICBOUzo6VUludGVnZXIgICBsZW5ndGgoKSBjb25zdDsKKworICAgIHZvaWQq
ICAgICAgICAgIGNvbnRlbnRzKCk7CisKKyAgICB2b2lkICAgICAgICAgICBkaWRNb2RpZnlSYW5n
ZShOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgY2xhc3MgVGV4dHVyZSogbmV3VGV4dHVyZShjb25z
dCBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93KTsKKworICAgIHZvaWQgICAgICAgICAgIGFkZERl
YnVnTWFya2VyKGNvbnN0IE5TOjpTdHJpbmcqIG1hcmtlciwgTlM6OlJhbmdlIHJhbmdlKTsKKwor
ICAgIHZvaWQgICAgICAgICAgIHJlbW92ZUFsbERlYnVnTWFya2VycygpOworCisgICAgY2xhc3Mg
QnVmZmVyKiAgcmVtb3RlU3RvcmFnZUJ1ZmZlcigpIGNvbnN0OworCisgICAgY2xhc3MgQnVmZmVy
KiAgbmV3UmVtb3RlQnVmZmVyVmlld0ZvckRldmljZShjb25zdCBjbGFzcyBEZXZpY2UqIGRldmlj
ZSk7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBsZW5ndGgKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OkJ1ZmZlcjo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGVuZ3RoKSk7
Cit9CisKKy8vIG1ldGhvZDogY29udGVudHMKK19NVExfSU5MSU5FIHZvaWQqIE1UTDo6QnVmZmVy
Ojpjb250ZW50cygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZCo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoY29udGVudHMpKTsKK30KKworLy8gbWV0aG9kOiBkaWRNb2Rp
ZnlSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCdWZmZXI6OmRpZE1vZGlmeVJhbmdlKE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZGlkTW9kaWZ5UmFuZ2VfKSwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6
IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjpvZmZzZXQ6Ynl0ZXNQZXJSb3c6CitfTVRMX0lOTElO
RSBNVEw6OlRleHR1cmUqIE1UTDo6QnVmZmVyOjpuZXdUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVy
ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdl
ciBieXRlc1BlclJvdykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRl
eHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcl9v
ZmZzZXRfYnl0ZXNQZXJSb3dfKSwgZGVzY3JpcHRvciwgb2Zmc2V0LCBieXRlc1BlclJvdyk7Cit9
CisKKy8vIG1ldGhvZDogYWRkRGVidWdNYXJrZXI6cmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QnVmZmVyOjphZGREZWJ1Z01hcmtlcihjb25zdCBOUzo6U3RyaW5nKiBtYXJrZXIsIE5TOjpS
YW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYWRkRGVidWdNYXJrZXJfcmFuZ2VfKSwgbWFya2VyLCByYW5nZSk7Cit9CisK
Ky8vIG1ldGhvZDogcmVtb3ZlQWxsRGVidWdNYXJrZXJzCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QnVmZmVyOjpyZW1vdmVBbGxEZWJ1Z01hcmtlcnMoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZW1vdmVBbGxEZWJ1Z01hcmtlcnMpKTsK
K30KKworLy8gcHJvcGVydHk6IHJlbW90ZVN0b3JhZ2VCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6
QnVmZmVyKiBNVEw6OkJ1ZmZlcjo6cmVtb3RlU3RvcmFnZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHJlbW90ZVN0b3JhZ2VCdWZmZXIpKTsKK30KKworLy8gbWV0aG9kOiBuZXdSZW1vdGVC
dWZmZXJWaWV3Rm9yRGV2aWNlOgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QnVmZmVy
OjpuZXdSZW1vdGVCdWZmZXJWaWV3Rm9yRGV2aWNlKGNvbnN0IE1UTDo6RGV2aWNlKiBkZXZpY2Up
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG5ld1JlbW90ZUJ1ZmZlclZpZXdGb3JEZXZpY2VfKSwgZGV2aWNlKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExD
YXB0dXJlTWFuYWdlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ2FwdHVyZU1hbmFnZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZTEwZjVjMjM0YjBmMWU0NjYwNjQ3
ZDFlYWI5MDAwMDQyOWQ4NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1hbmFnZXIuaHBwCkBAIC0wLDAgKzEsMjIwIEBA
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBN
ZXRhbC9NVExDYXB0dXJlTWFuYWdlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFw
cGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRl
ICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5j
bHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTENhcHR1cmVN
YW5hZ2VyLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpJbnRlZ2VyLCBD
YXB0dXJlRXJyb3IpIHsKKyAgICBDYXB0dXJlRXJyb3JOb3RTdXBwb3J0ZWQgPSAxLAorICAgIENh
cHR1cmVFcnJvckFscmVhZHlDYXB0dXJpbmcgPSAyLAorICAgIENhcHR1cmVFcnJvckludmFsaWRE
ZXNjcmlwdG9yID0gMywKK307CisKK19NVExfRU5VTShOUzo6SW50ZWdlciwgQ2FwdHVyZURlc3Rp
bmF0aW9uKSB7CisgICAgQ2FwdHVyZURlc3RpbmF0aW9uRGV2ZWxvcGVyVG9vbHMgPSAxLAorICAg
IENhcHR1cmVEZXN0aW5hdGlvbkdQVVRyYWNlRG9jdW1lbnQgPSAyLAorfTsKKworY2xhc3MgQ2Fw
dHVyZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8Q2FwdHVyZURlc2NyaXB0b3I+Cit7
CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENhcHR1cmVEZXNjcmlwdG9yKiBhbGxvYygpOwor
CisgICAgY2xhc3MgQ2FwdHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVPYmplY3QoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENhcHR1cmVPYmplY3QoaWQgY2FwdHVy
ZU9iamVjdCk7CisKKyAgICBNVEw6OkNhcHR1cmVEZXN0aW5hdGlvbiAgICAgICAgIGRlc3RpbmF0
aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXN0
aW5hdGlvbihNVEw6OkNhcHR1cmVEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbik7CisKKyAgICBOUzo6
VVJMKiAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFVSTCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T3V0cHV0VVJMKGNvbnN0IE5TOjpVUkwqIG91
dHB1dFVSTCk7Cit9OworCitjbGFzcyBDYXB0dXJlTWFuYWdlciA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8Q2FwdHVyZU1hbmFnZXI+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENhcHR1
cmVNYW5hZ2VyKiBhbGxvYygpOworCisgICAgc3RhdGljIGNsYXNzIENhcHR1cmVNYW5hZ2VyKiBz
aGFyZWRDYXB0dXJlTWFuYWdlcigpOworCisgICAgTVRMOjpDYXB0dXJlTWFuYWdlciogICAgICAg
ICBpbml0KCk7CisKKyAgICBjbGFzcyBDYXB0dXJlU2NvcGUqICAgICAgICAgIG5ld0NhcHR1cmVT
Y29wZShjb25zdCBjbGFzcyBEZXZpY2UqIGRldmljZSk7CisKKyAgICBjbGFzcyBDYXB0dXJlU2Nv
cGUqICAgICAgICAgIG5ld0NhcHR1cmVTY29wZShjb25zdCBjbGFzcyBDb21tYW5kUXVldWUqIGNv
bW1hbmRRdWV1ZSk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRz
RGVzdGluYXRpb24oTVRMOjpDYXB0dXJlRGVzdGluYXRpb24gZGVzdGluYXRpb24pOworCisgICAg
Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhcHR1cmUoY29uc3QgY2xhc3MgQ2Fw
dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXB0dXJlKGNvbnN0IGNsYXNzIERldmlj
ZSogZGV2aWNlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXB0
dXJlKGNvbnN0IGNsYXNzIENvbW1hbmRRdWV1ZSogY29tbWFuZFF1ZXVlKTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXB0dXJlKGNvbnN0IGNsYXNzIENhcHR1cmVT
Y29wZSogY2FwdHVyZVNjb3BlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
c3RvcENhcHR1cmUoKTsKKworICAgIGNsYXNzIENhcHR1cmVTY29wZSogICAgICAgICAgZGVmYXVs
dENhcHR1cmVTY29wZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0RGVmYXVsdENhcHR1cmVTY29wZShjb25zdCBjbGFzcyBDYXB0dXJlU2NvcGUqIGRlZmF1bHRD
YXB0dXJlU2NvcGUpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBpc0NhcHR1
cmluZygpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9J
TkxJTkUgTVRMOjpDYXB0dXJlRGVzY3JpcHRvciogTVRMOjpDYXB0dXJlRGVzY3JpcHRvcjo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkNhcHR1cmVEZXNjcmlw
dG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTENhcHR1cmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpDYXB0dXJlRGVzY3JpcHRvciogTVRMOjpDYXB0
dXJlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpDYXB0dXJlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGNhcHR1cmVPYmplY3QK
K19NVExfSU5MSU5FIGlkIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OmNhcHR1cmVPYmplY3QoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGlkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGNhcHR1cmVPYmplY3QpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNh
cHR1cmVEZXNjcmlwdG9yOjpzZXRDYXB0dXJlT2JqZWN0KGlkIGNhcHR1cmVPYmplY3QpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENh
cHR1cmVPYmplY3RfKSwgY2FwdHVyZU9iamVjdCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXN0aW5h
dGlvbgorX01UTF9JTkxJTkUgTVRMOjpDYXB0dXJlRGVzdGluYXRpb24gTVRMOjpDYXB0dXJlRGVz
Y3JpcHRvcjo6ZGVzdGluYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRl
c3RpbmF0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlRGVzY3JpcHRv
cjo6c2V0RGVzdGluYXRpb24oTVRMOjpDYXB0dXJlRGVzdGluYXRpb24gZGVzdGluYXRpb24pCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dERlc3RpbmF0aW9uXyksIGRlc3RpbmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IG91dHB1dFVS
TAorX01UTF9JTkxJTkUgTlM6OlVSTCogTVRMOjpDYXB0dXJlRGVzY3JpcHRvcjo6b3V0cHV0VVJM
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VVJMKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChvdXRwdXRVUkwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNhcHR1cmVEZXNjcmlwdG9yOjpzZXRPdXRwdXRVUkwoY29uc3QgTlM6OlVSTCogb3V0cHV0
VVJMKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRPdXRwdXRVUkxfKSwgb3V0cHV0VVJMKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVyZU1hbmFnZXIqIE1UTDo6Q2FwdHVyZU1hbmFn
ZXI6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDYXB0dXJl
TWFuYWdlcj4oX01UTF9QUklWQVRFX0NMUyhNVExDYXB0dXJlTWFuYWdlcikpOworfQorCisvLyBz
dGF0aWMgbWV0aG9kOiBzaGFyZWRDYXB0dXJlTWFuYWdlcgorX01UTF9JTkxJTkUgTVRMOjpDYXB0
dXJlTWFuYWdlciogTVRMOjpDYXB0dXJlTWFuYWdlcjo6c2hhcmVkQ2FwdHVyZU1hbmFnZXIoKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q2FwdHVyZU1hbmFnZXIqPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTENhcHR1cmVNYW5hZ2VyKSwgX01UTF9QUklWQVRFX1NFTChzaGFy
ZWRDYXB0dXJlTWFuYWdlcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6Q2FwdHVyZU1hbmFnZXIqIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OmluaXQoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q2FwdHVyZU1hbmFnZXI+KCk7Cit9CisKKy8vIG1l
dGhvZDogbmV3Q2FwdHVyZVNjb3BlV2l0aERldmljZToKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVy
ZVNjb3BlKiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpuZXdDYXB0dXJlU2NvcGUoY29uc3QgTVRMOjpE
ZXZpY2UqIGRldmljZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNh
cHR1cmVTY29wZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q2FwdHVyZVNjb3BlV2l0aERl
dmljZV8pLCBkZXZpY2UpOworfQorCisvLyBtZXRob2Q6IG5ld0NhcHR1cmVTY29wZVdpdGhDb21t
YW5kUXVldWU6CitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVTY29wZSogTVRMOjpDYXB0dXJlTWFu
YWdlcjo6bmV3Q2FwdHVyZVNjb3BlKGNvbnN0IE1UTDo6Q29tbWFuZFF1ZXVlKiBjb21tYW5kUXVl
dWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDYXB0dXJlU2NvcGUq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhDb21tYW5kUXVldWVf
KSwgY29tbWFuZFF1ZXVlKTsKK30KKworLy8gbWV0aG9kOiBzdXBwb3J0c0Rlc3RpbmF0aW9uOgor
X01UTF9JTkxJTkUgYm9vbCBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpzdXBwb3J0c0Rlc3RpbmF0aW9u
KE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRz
RGVzdGluYXRpb25fKSwgZGVzdGluYXRpb24pOworfQorCisvLyBtZXRob2Q6IHN0YXJ0Q2FwdHVy
ZVdpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkNhcHR1cmVNYW5h
Z2VyOjpzdGFydENhcHR1cmUoY29uc3QgTVRMOjpDYXB0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRv
ciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRvcl9l
cnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogc3RhcnRDYXB0dXJl
V2l0aERldmljZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlTWFuYWdlcjo6c3RhcnRD
YXB0dXJlKGNvbnN0IE1UTDo6RGV2aWNlKiBkZXZpY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0Q2FwdHVyZVdpdGhEZXZpY2Vf
KSwgZGV2aWNlKTsKK30KKworLy8gbWV0aG9kOiBzdGFydENhcHR1cmVXaXRoQ29tbWFuZFF1ZXVl
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpzdGFydENhcHR1cmUoY29u
c3QgTVRMOjpDb21tYW5kUXVldWUqIGNvbW1hbmRRdWV1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhcnRDYXB0dXJlV2l0aENvbW1h
bmRRdWV1ZV8pLCBjb21tYW5kUXVldWUpOworfQorCisvLyBtZXRob2Q6IHN0YXJ0Q2FwdHVyZVdp
dGhTY29wZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlTWFuYWdlcjo6c3RhcnRDYXB0
dXJlKGNvbnN0IE1UTDo6Q2FwdHVyZVNjb3BlKiBjYXB0dXJlU2NvcGUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0Q2FwdHVyZVdp
dGhTY29wZV8pLCBjYXB0dXJlU2NvcGUpOworfQorCisvLyBtZXRob2Q6IHN0b3BDYXB0dXJlCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN0b3BDYXB0dXJlKCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RvcENh
cHR1cmUpKTsKK30KKworLy8gcHJvcGVydHk6IGRlZmF1bHRDYXB0dXJlU2NvcGUKK19NVExfSU5M
SU5FIE1UTDo6Q2FwdHVyZVNjb3BlKiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpkZWZhdWx0Q2FwdHVy
ZVNjb3BlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNh
cHR1cmVTY29wZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVmYXVsdENhcHR1cmVTY29wZSkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnNldERlZmF1bHRD
YXB0dXJlU2NvcGUoY29uc3QgTVRMOjpDYXB0dXJlU2NvcGUqIGRlZmF1bHRDYXB0dXJlU2NvcGUp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldERlZmF1bHRDYXB0dXJlU2NvcGVfKSwgZGVmYXVsdENhcHR1cmVTY29wZSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpc0NhcHR1cmluZworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkNhcHR1cmVNYW5h
Z2VyOjppc0NhcHR1cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0NhcHR1cmluZykpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVTY29w
ZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZVNj
b3BlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzYwMjM1YTE0ODYxYjhlY2JjZmZjZjQwMmQ1YTNjYTEyNDUx
OTk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTENhcHR1cmVTY29wZS5ocHAKQEAgLTAsMCArMSw5MiBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ2FwdHVyZVNj
b3BlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UK
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNs
dWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1
ZGUgIi4uL0ZvdW5kYXRpb24vTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24v
TlNTdHJpbmcuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQ2FwdHVyZVNjb3BlIDogcHVibGljIE5T
OjpSZWZlcmVuY2luZzxDYXB0dXJlU2NvcGU+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgRGV2aWNl
KiAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgbGFiZWwo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJp
bmcqIHBMYWJlbCk7CisKKyAgICBjbGFzcyBDb21tYW5kUXVldWUqIGNvbW1hbmRRdWV1ZSgpIGNv
bnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICBiZWdpblNjb3BlKCk7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICBlbmRTY29wZSgpOworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6
OkNhcHR1cmVTY29wZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJ
TkUgTlM6OlN0cmluZyogTVRMOjpDYXB0dXJlU2NvcGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChsYWJlbCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVTY29wZTo6c2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogcExhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBwTGFiZWwpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUg
TVRMOjpDb21tYW5kUXVldWUqIE1UTDo6Q2FwdHVyZVNjb3BlOjpjb21tYW5kUXVldWUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPENvbW1hbmRRdWV1ZSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoY29tbWFuZFF1ZXVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2Fw
dHVyZVNjb3BlOjpiZWdpblNjb3BlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJlZ2luU2NvcGUpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDYXB0dXJlU2NvcGU6OmVuZFNjb3BlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZFNjb3BlKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRCdWZmZXIu
aHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRCdWZm
ZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQwZmM5OGU1MTFiZjZhM2FmMzBkMzQzZDRiYjNmNjViNTU0YWYx
MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMQ29tbWFuZEJ1ZmZlci5ocHAKQEAgLTAsMCArMSw0NjUgQEAKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTENvbW1hbmRC
dWZmZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdl
LmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExDb21tYW5kQnVmZmVyLmhwcCIKKyNpbmNs
dWRlIDxmdW5jdGlvbmFsPgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRl
Z2VyLCBDb21tYW5kQnVmZmVyU3RhdHVzKSB7CisgICAgQ29tbWFuZEJ1ZmZlclN0YXR1c05vdEVu
cXVldWVkID0gMCwKKyAgICBDb21tYW5kQnVmZmVyU3RhdHVzRW5xdWV1ZWQgPSAxLAorICAgIENv
bW1hbmRCdWZmZXJTdGF0dXNDb21taXR0ZWQgPSAyLAorICAgIENvbW1hbmRCdWZmZXJTdGF0dXNT
Y2hlZHVsZWQgPSAzLAorICAgIENvbW1hbmRCdWZmZXJTdGF0dXNDb21wbGV0ZWQgPSA0LAorICAg
IENvbW1hbmRCdWZmZXJTdGF0dXNFcnJvciA9IDUsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRl
Z2VyLCBDb21tYW5kQnVmZmVyRXJyb3IpIHsKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JOb25lID0g
MCwKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JUaW1lb3V0ID0gMiwKKyAgICBDb21tYW5kQnVmZmVy
RXJyb3JQYWdlRmF1bHQgPSAzLAorICAgIENvbW1hbmRCdWZmZXJFcnJvckFjY2Vzc1Jldm9rZWQg
PSA0LAorICAgIENvbW1hbmRCdWZmZXJFcnJvckJsYWNrbGlzdGVkID0gNCwKKyAgICBDb21tYW5k
QnVmZmVyRXJyb3JOb3RQZXJtaXR0ZWQgPSA3LAorICAgIENvbW1hbmRCdWZmZXJFcnJvck91dE9m
TWVtb3J5ID0gOCwKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JJbnZhbGlkUmVzb3VyY2UgPSA5LAor
ICAgIENvbW1hbmRCdWZmZXJFcnJvck1lbW9yeWxlc3MgPSAxMCwKKyAgICBDb21tYW5kQnVmZmVy
RXJyb3JEZXZpY2VSZW1vdmVkID0gMTEsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yU3RhY2tPdmVy
ZmxvdyA9IDEyLAorfTsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgQ29tbWFuZEJ1ZmZl
ckVycm9yT3B0aW9uKSB7CisgICAgQ29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uTm9uZSA9IDAsCisg
ICAgQ29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uRW5jb2RlckV4ZWN1dGlvblN0YXR1cyA9IDEsCit9
OworCitfTVRMX0VOVU0oTlM6OkludGVnZXIsIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZSkgewor
ICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZVVua25vd24gPSAwLAorICAgIENvbW1hbmRFbmNv
ZGVyRXJyb3JTdGF0ZUNvbXBsZXRlZCA9IDEsCisgICAgQ29tbWFuZEVuY29kZXJFcnJvclN0YXRl
QWZmZWN0ZWQgPSAyLAorICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZVBlbmRpbmcgPSAzLAor
ICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZUZhdWx0ZWQgPSA0LAorfTsKKworY2xhc3MgQ29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8Q29tbWFuZEJ1ZmZlckRl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqICAg
ICAgICBpbml0KCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldGFpbmVkUmVmZXJlbmNlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0UmV0YWluZWRSZWZlcmVuY2VzKGJvb2wgcmV0YWluZWRSZWZlcmVu
Y2VzKTsKKworICAgIE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uICAgICAgICAgZXJyb3JP
cHRpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRFcnJvck9wdGlvbnMoTVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRpb24gZXJyb3JPcHRp
b25zKTsKK307CisKK2NsYXNzIENvbW1hbmRCdWZmZXJFbmNvZGVySW5mbyA6IHB1YmxpYyBOUzo6
UmVmZXJlbmNpbmc8Q29tbWFuZEJ1ZmZlckVuY29kZXJJbmZvPgoreworcHVibGljOgorICAgIE5T
OjpTdHJpbmcqICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisKKyAgICBOUzo6QXJy
YXkqICAgICAgICAgICAgICAgICAgICBkZWJ1Z1NpZ25wb3N0cygpIGNvbnN0OworCisgICAgTVRM
OjpDb21tYW5kRW5jb2RlckVycm9yU3RhdGUgZXJyb3JTdGF0ZSgpIGNvbnN0OworfTsKKworX01U
TF9FTlVNKE5TOjpVSW50ZWdlciwgRGlzcGF0Y2hUeXBlKSB7CisgICAgRGlzcGF0Y2hUeXBlU2Vy
aWFsID0gMCwKKyAgICBEaXNwYXRjaFR5cGVDb25jdXJyZW50ID0gMSwKK307CisKK2NsYXNzIENv
bW1hbmRCdWZmZXI7CisKK3VzaW5nIENvbW1hbmRCdWZmZXJIYW5kbGVyID0gdm9pZCAoXikoQ29t
bWFuZEJ1ZmZlciopOworCit1c2luZyBIYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZv
aWQoQ29tbWFuZEJ1ZmZlciopPjsKKworY2xhc3MgQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBOUzo6
UmVmZXJlbmNpbmc8Q29tbWFuZEJ1ZmZlcj4KK3sKK3B1YmxpYzoKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkU2NoZWR1bGVkSGFuZGxlcihjb25zdCBI
YW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRDb21wbGV0ZWRIYW5kbGVyKGNvbnN0IEhhbmRsZXJGdW5j
dGlvbiYgZnVuY3Rpb24pOworCisgICAgY2xhc3MgRGV2aWNlKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgY2xhc3MgQ29tbWFuZFF1ZXVlKiAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmRRdWV1ZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbmVkUmVmZXJlbmNlcygpIGNv
bnN0OworCisgICAgTVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRpb24gICAgICAgICAgICAgIGVy
cm9yT3B0aW9ucygpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKwor
ICAgIENGVGltZUludGVydmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWxTdGFy
dFRpbWUoKSBjb25zdDsKKworICAgIENGVGltZUludGVydmFsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrZXJuZWxFbmRUaW1lKCkgY29uc3Q7CisKKyAgICBjbGFzcyBMb2dDb250YWluZXIq
ICAgICAgICAgICAgICAgICAgICAgICAgbG9ncygpIGNvbnN0OworCisgICAgQ0ZUaW1lSW50ZXJ2
YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQVVN0YXJ0VGltZSgpIGNvbnN0OworCisg
ICAgQ0ZUaW1lSW50ZXJ2YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQVUVuZFRpbWUo
KSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbnF1ZXVlKCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWl0KCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWRkU2NoZWR1bGVkSGFuZGxlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJIYW5k
bGVyIGJsb2NrKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmVzZW50RHJhd2FibGUoY29uc3QgY2xhc3MgRHJhd2FibGUqIGRyYXdhYmxlKTsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50RHJh
d2FibGVBdFRpbWUoY29uc3QgY2xhc3MgRHJhd2FibGUqIGRyYXdhYmxlLCBDRlRpbWVJbnRlcnZh
bCBwcmVzZW50YXRpb25UaW1lKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmVzZW50RHJhd2FibGVBZnRlck1pbmltdW1EdXJhdGlvbihjb25zdCBj
bGFzcyBEcmF3YWJsZSogZHJhd2FibGUsIENGVGltZUludGVydmFsIGR1cmF0aW9uKTsKKworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0VW50aWxTY2hl
ZHVsZWQoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRDb21wbGV0ZWRIYW5kbGVyKGNvbnN0IE1UTDo6Q29tbWFuZEJ1ZmZlckhhbmRsZXIgYmxv
Y2spOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdh
aXRVbnRpbENvbXBsZXRlZCgpOworCisgICAgTVRMOjpDb21tYW5kQnVmZmVyU3RhdHVzICAgICAg
ICAgICAgICAgICAgIHN0YXR1cygpIGNvbnN0OworCisgICAgTlM6OkVycm9yKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCkgY29uc3Q7CisKKyAgICBjbGFzcyBCbGl0Q29t
bWFuZEVuY29kZXIqICAgICAgICAgICAgICAgICAgYmxpdENvbW1hbmRFbmNvZGVyKCk7CisKKyAg
ICBjbGFzcyBSZW5kZXJDb21tYW5kRW5jb2RlciogICAgICAgICAgICAgICAgcmVuZGVyQ29tbWFu
ZEVuY29kZXIoY29uc3QgY2xhc3MgUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIHJlbmRlclBhc3NEZXNj
cmlwdG9yKTsKKworICAgIGNsYXNzIENvbXB1dGVDb21tYW5kRW5jb2RlciogICAgICAgICAgICAg
ICBjb21wdXRlQ29tbWFuZEVuY29kZXIoY29uc3QgY2xhc3MgQ29tcHV0ZVBhc3NEZXNjcmlwdG9y
KiBjb21wdXRlUGFzc0Rlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQmxpdENvbW1hbmRFbmNvZGVy
KiAgICAgICAgICAgICAgICAgIGJsaXRDb21tYW5kRW5jb2Rlcihjb25zdCBjbGFzcyBCbGl0UGFz
c0Rlc2NyaXB0b3IqIGJsaXRQYXNzRGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBDb21wdXRlQ29t
bWFuZEVuY29kZXIqICAgICAgICAgICAgICAgY29tcHV0ZUNvbW1hbmRFbmNvZGVyKCk7CisKKyAg
ICBjbGFzcyBDb21wdXRlQ29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAgY29tcHV0ZUNvbW1h
bmRFbmNvZGVyKE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSk7CisKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlV2FpdChjb25zdCBjbGFz
cyBFdmVudCogZXZlbnQsIHVpbnQ2NF90IHZhbHVlKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVTaWduYWxFdmVudChjb25zdCBjbGFzcyBF
dmVudCogZXZlbnQsIHVpbnQ2NF90IHZhbHVlKTsKKworICAgIGNsYXNzIFBhcmFsbGVsUmVuZGVy
Q29tbWFuZEVuY29kZXIqICAgICAgICBwYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyKGNvbnN0
IGNsYXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVzY3JpcHRvcik7CisKKyAg
ICBjbGFzcyBSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIqICAgICAgICAgcmVzb3VyY2VTdGF0
ZUNvbW1hbmRFbmNvZGVyKCk7CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29k
ZXIqICAgICAgICAgcmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IGNsYXNzIFJlc291
cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogcmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKTsKKwor
ICAgIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyKiBhY2NlbGVyYXRp
b25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlcigpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2hEZWJ1Z0dyb3VwKGNvbnN0IE5TOjpTdHJpbmcqIHN0
cmluZyk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cG9wRGVidWdHcm91cCgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01U
TF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogTVRMOjpDb21tYW5kQnVmZmVy
RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTENvbW1hbmRCdWZm
ZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpD
b21tYW5kQnVmZmVyRGVzY3JpcHRvciogTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpDb21tYW5kQnVmZmVyRGVz
Y3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHJldGFpbmVkUmVmZXJlbmNlcworX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpyZXRhaW5lZFJlZmVyZW5j
ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwocmV0YWluZWRSZWZlcmVuY2VzKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6c2V0UmV0YWluZWRSZWZlcmVuY2Vz
KGJvb2wgcmV0YWluZWRSZWZlcmVuY2VzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZXRhaW5lZFJlZmVyZW5jZXNfKSwgcmV0YWlu
ZWRSZWZlcmVuY2VzKTsKK30KKworLy8gcHJvcGVydHk6IGVycm9yT3B0aW9ucworX01UTF9JTkxJ
TkUgTVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRpb24gTVRMOjpDb21tYW5kQnVmZmVyRGVzY3Jp
cHRvcjo6ZXJyb3JPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChlcnJvck9wdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZm
ZXJEZXNjcmlwdG9yOjpzZXRFcnJvck9wdGlvbnMoTVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRp
b24gZXJyb3JPcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRFcnJvck9wdGlvbnNfKSwgZXJyb3JPcHRpb25zKTsKK30KKwor
Ly8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNvbW1hbmRC
dWZmZXJFbmNvZGVySW5mbzo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBkZWJ1Z1NpZ25wb3N0cworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBN
VEw6OkNvbW1hbmRCdWZmZXJFbmNvZGVySW5mbzo6ZGVidWdTaWducG9zdHMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZGVidWdTaWducG9zdHMpKTsKK30KKworLy8gcHJvcGVydHk6IGVycm9yU3RhdGUK
K19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEVuY29kZXJFcnJvclN0YXRlIE1UTDo6Q29tbWFuZEJ1
ZmZlckVuY29kZXJJbmZvOjplcnJvclN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZT4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChlcnJvclN0YXRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21t
YW5kQnVmZmVyOjphZGRTY2hlZHVsZWRIYW5kbGVyKGNvbnN0IEhhbmRsZXJGdW5jdGlvbiYgZnVu
Y3Rpb24pCit7CisgICAgX19ibG9jayBIYW5kbGVyRnVuY3Rpb24gYmxvY2tGdW5jdGlvbiA9IGZ1
bmN0aW9uOworCisgICAgYWRkU2NoZWR1bGVkSGFuZGxlciheKE1UTDo6Q29tbWFuZEJ1ZmZlciog
cENvbW1hbmRCdWZmZXIpIHsgYmxvY2tGdW5jdGlvbihwQ29tbWFuZEJ1ZmZlcik7IH0pOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YWRkQ29tcGxldGVkSGFuZGxl
cihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKQoreworICAgIF9fYmxvY2sgSGFuZGxl
ckZ1bmN0aW9uIGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIGFkZENvbXBsZXRlZEhh
bmRsZXIoXihNVEw6OkNvbW1hbmRCdWZmZXIqIHBDb21tYW5kQnVmZmVyKSB7IGJsb2NrRnVuY3Rp
b24ocENvbW1hbmRCdWZmZXIpOyB9KTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9J
TkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6ZGV2aWNlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb21tYW5kUXVldWUKK19N
VExfSU5MSU5FIE1UTDo6Q29tbWFuZFF1ZXVlKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmNvbW1hbmRR
dWV1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21t
YW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbW1hbmRRdWV1ZSkpOworfQorCisv
LyBwcm9wZXJ0eTogcmV0YWluZWRSZWZlcmVuY2VzCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29t
bWFuZEJ1ZmZlcjo6cmV0YWluZWRSZWZlcmVuY2VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJldGFpbmVkUmVm
ZXJlbmNlcykpOworfQorCisvLyBwcm9wZXJ0eTogZXJyb3JPcHRpb25zCitfTVRMX0lOTElORSBN
VEw6OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbiBNVEw6OkNvbW1hbmRCdWZmZXI6OmVycm9yT3B0
aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21t
YW5kQnVmZmVyRXJyb3JPcHRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXJyb3JPcHRpb25z
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRM
OjpDb21tYW5kQnVmZmVyOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OnNldExhYmVsKGNvbnN0IE5T
OjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBr
ZXJuZWxTdGFydFRpbWUKK19NVExfSU5MSU5FIENGVGltZUludGVydmFsIE1UTDo6Q29tbWFuZEJ1
ZmZlcjo6a2VybmVsU3RhcnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxDRlRpbWVJbnRlcnZhbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChrZXJuZWxTdGFy
dFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGtlcm5lbEVuZFRpbWUKK19NVExfSU5MSU5FIENG
VGltZUludGVydmFsIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6a2VybmVsRW5kVGltZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Q0ZUaW1lSW50ZXJ2YWw+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoa2VybmVsRW5kVGltZSkpOworfQorCisvLyBwcm9wZXJ0eTogbG9ncwor
X01UTF9JTkxJTkUgTVRMOjpMb2dDb250YWluZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6bG9ncygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMb2dDb250YWlu
ZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxvZ3MpKTsKK30KKworLy8gcHJvcGVydHk6IEdQ
VVN0YXJ0VGltZQorX01UTF9JTkxJTkUgQ0ZUaW1lSW50ZXJ2YWwgTVRMOjpDb21tYW5kQnVmZmVy
OjpHUFVTdGFydFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PENGVGltZUludGVydmFsPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKEdQVVN0YXJ0VGltZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogR1BVRW5kVGltZQorX01UTF9JTkxJTkUgQ0ZUaW1lSW50ZXJ2YWwg
TVRMOjpDb21tYW5kQnVmZmVyOjpHUFVFbmRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxDRlRpbWVJbnRlcnZhbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChH
UFVFbmRUaW1lKSk7Cit9CisKKy8vIG1ldGhvZDogZW5xdWV1ZQorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNvbW1hbmRCdWZmZXI6OmVucXVldWUoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbnF1ZXVlKSk7Cit9CisKKy8vIG1ldGhvZDog
Y29tbWl0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6Y29tbWl0KCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29t
bWl0KSk7Cit9CisKKy8vIG1ldGhvZDogYWRkU2NoZWR1bGVkSGFuZGxlcjoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjphZGRTY2hlZHVsZWRIYW5kbGVyKGNvbnN0IE1UTDo6
Q29tbWFuZEJ1ZmZlckhhbmRsZXIgYmxvY2spCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFkZFNjaGVkdWxlZEhhbmRsZXJfKSwgYmxvY2sp
OworfQorCisvLyBtZXRob2Q6IHByZXNlbnREcmF3YWJsZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21tYW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGUoY29uc3QgTVRMOjpEcmF3YWJsZSogZHJh
d2FibGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHByZXNlbnREcmF3YWJsZV8pLCBkcmF3YWJsZSk7Cit9CisKKy8vIG1ldGhvZDogcHJl
c2VudERyYXdhYmxlOmF0VGltZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVy
OjpwcmVzZW50RHJhd2FibGVBdFRpbWUoY29uc3QgTVRMOjpEcmF3YWJsZSogZHJhd2FibGUsIENG
VGltZUludGVydmFsIHByZXNlbnRhdGlvblRpbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByZXNlbnREcmF3YWJsZV9hdFRpbWVfKSwg
ZHJhd2FibGUsIHByZXNlbnRhdGlvblRpbWUpOworfQorCisvLyBtZXRob2Q6IHByZXNlbnREcmF3
YWJsZTphZnRlck1pbmltdW1EdXJhdGlvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5k
QnVmZmVyOjpwcmVzZW50RHJhd2FibGVBZnRlck1pbmltdW1EdXJhdGlvbihjb25zdCBNVEw6OkRy
YXdhYmxlKiBkcmF3YWJsZSwgQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24pCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByZXNlbnREcmF3YWJs
ZV9hZnRlck1pbmltdW1EdXJhdGlvbl8pLCBkcmF3YWJsZSwgZHVyYXRpb24pOworfQorCisvLyBt
ZXRob2Q6IHdhaXRVbnRpbFNjaGVkdWxlZAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRC
dWZmZXI6OndhaXRVbnRpbFNjaGVkdWxlZCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdhaXRVbnRpbFNjaGVkdWxlZCkpOworfQorCisv
LyBtZXRob2Q6IGFkZENvbXBsZXRlZEhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
bWFuZEJ1ZmZlcjo6YWRkQ29tcGxldGVkSGFuZGxlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJI
YW5kbGVyIGJsb2NrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChhZGRDb21wbGV0ZWRIYW5kbGVyXyksIGJsb2NrKTsKK30KKworLy8gbWV0
aG9kOiB3YWl0VW50aWxDb21wbGV0ZWQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVm
ZmVyOjp3YWl0VW50aWxDb21wbGV0ZWQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3YWl0VW50aWxDb21wbGV0ZWQpKTsKK30KKworLy8g
cHJvcGVydHk6IHN0YXR1cworX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyU3RhdHVzIE1U
TDo6Q29tbWFuZEJ1ZmZlcjo6c3RhdHVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRCdWZmZXJTdGF0dXM+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc3RhdHVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBlcnJvcgorX01UTF9JTkxJTkUgTlM6OkVy
cm9yKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmVycm9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6RXJyb3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVycm9y
KSk7Cit9CisKKy8vIG1ldGhvZDogYmxpdENvbW1hbmRFbmNvZGVyCitfTVRMX0lOTElORSBNVEw6
OkJsaXRDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpibGl0Q29tbWFuZEVuY29k
ZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxpdENvbW1hbmRF
bmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChibGl0Q29tbWFuZEVuY29kZXIpKTsKK30K
KworLy8gbWV0aG9kOiByZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOgorX01UTF9J
TkxJTkUgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpyZW5k
ZXJDb21tYW5kRW5jb2Rlcihjb25zdCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQ
YXNzRGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZW5kZXJDb21tYW5k
RW5jb2RlcldpdGhEZXNjcmlwdG9yXyksIHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKK30KKworLy8g
bWV0aG9kOiBjb21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5F
IE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmNvbXB1dGVD
b21tYW5kRW5jb2Rlcihjb25zdCBNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRvciogY29tcHV0ZVBh
c3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb21wdXRlQ29tbWFu
ZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8pLCBjb21wdXRlUGFzc0Rlc2NyaXB0b3IpOworfQorCisv
LyBtZXRob2Q6IGJsaXRDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUg
TVRMOjpCbGl0Q29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YmxpdENvbW1hbmRF
bmNvZGVyKGNvbnN0IE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yKiBibGl0UGFzc0Rlc2NyaXB0b3Ip
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGl0Q29tbWFuZEVuY29k
ZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJsaXRDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlw
dG9yXyksIGJsaXRQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogY29tcHV0ZUNvbW1h
bmRFbmNvZGVyCitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2RlciogTVRMOjpD
b21tYW5kQnVmZmVyOjpjb21wdXRlQ29tbWFuZEVuY29kZXIoKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChjb21wdXRlQ29tbWFuZEVuY29kZXIpKTsKK30KKworLy8gbWV0aG9kOiBjb21w
dXRlQ29tbWFuZEVuY29kZXJXaXRoRGlzcGF0Y2hUeXBlOgorX01UTF9JTkxJTkUgTVRMOjpDb21w
dXRlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6Y29tcHV0ZUNvbW1hbmRFbmNv
ZGVyKE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoY29tcHV0ZUNvbW1hbmRFbmNvZGVyV2l0aERpc3BhdGNoVHlwZV8pLCBkaXNwYXRj
aFR5cGUpOworfQorCisvLyBtZXRob2Q6IGVuY29kZVdhaXRGb3JFdmVudDp2YWx1ZToKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjplbmNvZGVXYWl0KGNvbnN0IE1UTDo6RXZl
bnQqIGV2ZW50LCB1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlV2FpdEZvckV2ZW50X3ZhbHVlXyksIGV2
ZW50LCB2YWx1ZSk7Cit9CisKKy8vIG1ldGhvZDogZW5jb2RlU2lnbmFsRXZlbnQ6dmFsdWU6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6ZW5jb2RlU2lnbmFsRXZlbnQoY29u
c3QgTVRMOjpFdmVudCogZXZlbnQsIHVpbnQ2NF90IHZhbHVlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmNvZGVTaWduYWxFdmVudF92
YWx1ZV8pLCBldmVudCwgdmFsdWUpOworfQorCisvLyBtZXRob2Q6IHBhcmFsbGVsUmVuZGVyQ29t
bWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpwYXJhbGxlbFJlbmRlckNvbW1h
bmRFbmNvZGVyKGNvbnN0IE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3IqIHJlbmRlclBhc3NEZXNj
cmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGFyYWxsZWxS
ZW5kZXJDb21tYW5kRW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXyksIHJlbmRlclBhc3NEZXNjcmlwdG9yKTsK
K30KKworLy8gbWV0aG9kOiByZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIKK19NVExfSU5MSU5F
IE1UTDo6UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OnJl
c291cmNlU3RhdGVDb21tYW5kRW5jb2RlcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcikpOworfQorCisvLyBtZXRob2Q6IHJl
c291cmNlU3RhdGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRM
OjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cmVzb3Vy
Y2VTdGF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlw
dG9yKiByZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXyks
IHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogYWNjZWxlcmF0
aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YWNjZWxlcmF0aW9u
U3RydWN0dXJlQ29tbWFuZEVuY29kZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyKSk7Cit9CisK
Ky8vIG1ldGhvZDogcHVzaERlYnVnR3JvdXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFu
ZEJ1ZmZlcjo6cHVzaERlYnVnR3JvdXAoY29uc3QgTlM6OlN0cmluZyogc3RyaW5nKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwdXNoRGVi
dWdHcm91cF8pLCBzdHJpbmcpOworfQorCisvLyBtZXRob2Q6IHBvcERlYnVnR3JvdXAKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjpwb3BEZWJ1Z0dyb3VwKCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocG9wRGVidWdH
cm91cCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTENvbW1hbmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YxZjM5MmJiNGY2MDE0
YTkxM2UxY2EyNTUzMDFhZjRhZTY4YzFlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCAr
MSwxMDEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIE1ldGFsL01UTENvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIw
LTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgor
I2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAi
CisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1lc3BhY2UgTVRM
Cit7CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBSZXNvdXJjZVVzYWdlKSB7CisgICAgUmVz
b3VyY2VVc2FnZVJlYWQgPSAxLAorICAgIFJlc291cmNlVXNhZ2VXcml0ZSA9IDIsCisgICAgUmVz
b3VyY2VVc2FnZVNhbXBsZSA9IDQsCit9OworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBC
YXJyaWVyU2NvcGUpIHsKKyAgICBCYXJyaWVyU2NvcGVCdWZmZXJzID0gMSwKKyAgICBCYXJyaWVy
U2NvcGVUZXh0dXJlcyA9IDIsCisgICAgQmFycmllclNjb3BlUmVuZGVyVGFyZ2V0cyA9IDQsCit9
OworCitjbGFzcyBDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q29tbWFu
ZEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBjb25zdDsK
KworICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgIHNl
dExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIHZvaWQgICAgICAgICAgZW5k
RW5jb2RpbmcoKTsKKworICAgIHZvaWQgICAgICAgICAgaW5zZXJ0RGVidWdTaWducG9zdChjb25z
dCBOUzo6U3RyaW5nKiBzdHJpbmcpOworCisgICAgdm9pZCAgICAgICAgICBwdXNoRGVidWdHcm91
cChjb25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpOworCisgICAgdm9pZCAgICAgICAgICBwb3BEZWJ1
Z0dyb3VwKCk7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1U
TDo6RGV2aWNlKiBNVEw6OkNvbW1hbmRFbmNvZGVyOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6
U3RyaW5nKiBNVEw6OkNvbW1hbmRFbmNvZGVyOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRFbmNvZGVyOjpzZXRM
YWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisv
LyBtZXRob2Q6IGVuZEVuY29kaW5nCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEVuY29k
ZXI6OmVuZEVuY29kaW5nKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZW5kRW5jb2RpbmcpKTsKK30KKworLy8gbWV0aG9kOiBpbnNlcnRE
ZWJ1Z1NpZ25wb3N0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRFbmNvZGVyOjppbnNl
cnREZWJ1Z1NpZ25wb3N0KGNvbnN0IE5TOjpTdHJpbmcqIHN0cmluZykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zZXJ0RGVidWdTaWdu
cG9zdF8pLCBzdHJpbmcpOworfQorCisvLyBtZXRob2Q6IHB1c2hEZWJ1Z0dyb3VwOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRFbmNvZGVyOjpwdXNoRGVidWdHcm91cChjb25zdCBOUzo6
U3RyaW5nKiBzdHJpbmcpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHB1c2hEZWJ1Z0dyb3VwXyksIHN0cmluZyk7Cit9CisKKy8vIG1ldGhv
ZDogcG9wRGVidWdHcm91cAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRFbmNvZGVyOjpw
b3BEZWJ1Z0dyb3VwKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocG9wRGVidWdHcm91cCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRRdWV1ZS5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tbWFuZFF1ZXVlLmhwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNTRhMTZlMTRhNjNjZWNjM2VjNGJjNzRlYmJmMDg1YTQ2NWQ2NWJlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRR
dWV1ZS5ocHAKQEAgLTAsMCArMSw4OSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ29tbWFuZFF1ZXVlLmhwcAorLy8KKy8v
IENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1U
TERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAi
TVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgor
CituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBDb21tYW5kUXVldWUgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPENvbW1hbmRRdWV1ZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgICAgICAg
ICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0
IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERldmljZSogICAgICAgIGRldmljZSgp
IGNvbnN0OworCisgICAgY2xhc3MgQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcigpOworCisg
ICAgY2xhc3MgQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcihjb25zdCBjbGFzcyBDb21tYW5k
QnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBDb21tYW5kQnVmZmVy
KiBjb21tYW5kQnVmZmVyV2l0aFVucmV0YWluZWRSZWZlcmVuY2VzKCk7CisKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICBpbnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFyeSgpOworfTsKKworfQorCisv
LyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tbWFuZFF1
ZXVlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNvbW1hbmRRdWV1ZTo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFi
ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9J
TkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6Q29tbWFuZFF1ZXVlOjpkZXZpY2UoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gbWV0aG9kOiBjb21tYW5kQnVmZmVyCitfTVRM
X0lOTElORSBNVEw6OkNvbW1hbmRCdWZmZXIqIE1UTDo6Q29tbWFuZFF1ZXVlOjpjb21tYW5kQnVm
ZmVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRCdWZm
ZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbW1hbmRCdWZmZXIpKTsKK30KKworLy8gbWV0
aG9kOiBjb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OkNvbW1h
bmRCdWZmZXIqIE1UTDo6Q29tbWFuZFF1ZXVlOjpjb21tYW5kQnVmZmVyKGNvbnN0IE1UTDo6Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5kQnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhv
ZDogY29tbWFuZEJ1ZmZlcldpdGhVbnJldGFpbmVkUmVmZXJlbmNlcworX01UTF9JTkxJTkUgTVRM
OjpDb21tYW5kQnVmZmVyKiBNVEw6OkNvbW1hbmRRdWV1ZTo6Y29tbWFuZEJ1ZmZlcldpdGhVbnJl
dGFpbmVkUmVmZXJlbmNlcygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpDb21tYW5kQnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb21tYW5kQnVmZmVyV2l0
aFVucmV0YWluZWRSZWZlcmVuY2VzKSk7Cit9CisKKy8vIG1ldGhvZDogaW5zZXJ0RGVidWdDYXB0
dXJlQm91bmRhcnkKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kUXVldWU6Omluc2VydERl
YnVnQ2FwdHVyZUJvdW5kYXJ5KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoaW5zZXJ0RGVidWdDYXB0dXJlQm91bmRhcnkpKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRl
Q29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZhOWVmNzhiMWUwYzMx
NGRjY2NmZWQwNGM4NjM4ODFkYThmYmMzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwCkBA
IC0wLDAgKzEsMzM3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwCisvLworLy8g
Q29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRM
RGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJN
VExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisK
KyNpbmNsdWRlICJNVExCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1hbmRCdWZmZXIuaHBw
IgorI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExIZWFwLmhw
cCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcCIKKyNpbmNsdWRl
ICJNVExSZXNvdXJjZS5ocHAiCisjaW5jbHVkZSAiTVRMU2FtcGxlci5ocHAiCisjaW5jbHVkZSAi
TVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorI2luY2x1ZGUgIk1UTFZp
c2libGVGdW5jdGlvblRhYmxlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworc3RydWN0IERpc3Bh
dGNoVGhyZWFkZ3JvdXBzSW5kaXJlY3RBcmd1bWVudHMKK3sKKyAgICB1aW50MzJfdCB0aHJlYWRn
cm91cHNQZXJHcmlkWzNdOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFN0YWdlSW5SZWdpb25J
bmRpcmVjdEFyZ3VtZW50cworeworICAgIHVpbnQzMl90IHN0YWdlSW5PcmlnaW5bM107CisgICAg
dWludDMyX3Qgc3RhZ2VJblNpemVbM107Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBDb21wdXRl
Q29tbWFuZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbXB1dGVDb21tYW5kRW5j
b2RlciwgQ29tbWFuZEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgTVRMOjpEaXNwYXRjaFR5cGUg
ZGlzcGF0Y2hUeXBlKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRDb21wdXRl
UGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogc3RhdGUpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgc2V0Qnl0ZXMoY29uc3Qgdm9pZCogYnl0ZXMsIE5TOjpV
SW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICBzZXRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBv
ZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRC
dWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgIHNldEJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwg
Y29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgIHNldFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZpc2li
bGVGdW5jdGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZl
ckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFZpc2libGVGdW5jdGlvblRhYmxl
cyhjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJsZUZ1bmN0aW9uVGFibGVz
W10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUq
IGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcyhjb25z
dCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRh
Ymxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0QWNj
ZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNj
ZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9p
ZCAgICAgICAgICAgICAgc2V0VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0VGV4dHVyZXMo
TVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgc2V0U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2Ft
cGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFNh
bXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5n
ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3Mg
U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9hdCBsb2RNaW5DbGFtcCwgZmxvYXQgbG9kTWF4Q2xh
bXAsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTYW1w
bGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25zdCBmbG9hdCBsb2RN
aW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpSYW5nZSByYW5nZSk7
CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6
VUludGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgc2V0SW1hZ2VibG9ja1dpZHRoKE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2Vy
IGhlaWdodCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTdGFnZUluUmVnaW9uKE1UTDo6
UmVnaW9uIHJlZ2lvbik7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTdGFnZUluUmVnaW9u
KGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVj
dEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBkaXNwYXRjaFRocmVhZGdy
b3VwcyhNVEw6OlNpemUgdGhyZWFkZ3JvdXBzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJU
aHJlYWRncm91cCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBkaXNwYXRjaFRocmVhZGdyb3Vw
cyhjb25zdCBjbGFzcyBCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJl
Y3RCdWZmZXJPZmZzZXQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworCisgICAg
dm9pZCAgICAgICAgICAgICAgZGlzcGF0Y2hUaHJlYWRzKE1UTDo6U2l6ZSB0aHJlYWRzUGVyR3Jp
ZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICB1cGRhdGVGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVuY2UpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgd2FpdEZvckZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBmZW5jZSk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICB1c2VSZXNvdXJjZShjb25zdCBjbGFzcyBSZXNvdXJjZSogcmVz
b3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICB1c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBj
b3VudCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
IHVzZUhlYXAoY29uc3QgY2xhc3MgSGVhcCogaGVhcCk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICB1c2VIZWFwcyhNVEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBjbGFzcyBJ
bmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlJhbmdlIGV4
ZWN1dGlvblJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIGV4ZWN1dGVDb21tYW5kc0lu
QnVmZmVyKGNvbnN0IGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5k
YnVmZmVyLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGlyZWN0UmFuZ2VCdWZmZXIsIE5TOjpVSW50
ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBtZW1v
cnlCYXJyaWVyKE1UTDo6QmFycmllclNjb3BlIHNjb3BlKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgIG1lbW9yeUJhcnJpZXIoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdl
ciBjb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzYW1wbGVDb3VudGVyc0luQnVmZmVy
KGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIHNhbXBsZUluZGV4LCBib29sIGJhcnJpZXIpOworfTsKKworfQorCisvLyBwcm9wZXJ0eTog
ZGlzcGF0Y2hUeXBlCitfTVRMX0lOTElORSBNVEw6OkRpc3BhdGNoVHlwZSBNVEw6OkNvbXB1dGVD
b21tYW5kRW5jb2Rlcjo6ZGlzcGF0Y2hUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkRpc3BhdGNoVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChk
aXNwYXRjaFR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZToK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldENvbXB1dGVQ
aXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIHN0YXRlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRD
b21wdXRlUGlwZWxpbmVTdGF0ZV8pLCBzdGF0ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0Qnl0ZXM6
bGVuZ3RoOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyOjpzZXRCeXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6
OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRCeXRlc19sZW5ndGhfYXRJbmRleF8pLCBieXRlcywgbGVuZ3Ro
LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0QnVmZmVyKGNvbnN0
IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBp
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0QnVmZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyT2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRCdWZmZXJPZmZzZXQoTlM6OlVJbnRl
Z2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJPZmZzZXRfYXRJbmRleF8p
LCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRCdWZmZXJzOm9mZnNldHM6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0
QnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0
c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfKSwgYnVm
ZmVycywgb2Zmc2V0cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZpc2libGVGdW5jdGlv
blRhYmxlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1h
bmRFbmNvZGVyOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OlZpc2libGVGdW5j
dGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIHZpc2libGVGdW5jdGlv
blRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmlzaWJsZUZ1bmN0aW9u
VGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29t
bWFuZEVuY29kZXI6OnNldFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OlZpc2libGVG
dW5jdGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXyksIHZpc2libGVGdW5jdGlv
blRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFu
ZEVuY29kZXI6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6VUludGVn
ZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRl
eF8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEFjY2VsZXJhdGlvblN0cnVjdHVyZTph
dEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rl
cjo6c2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfKSwgYWNjZWxlcmF0aW9uU3RydWN0
dXJlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGV4dHVyZTphdEluZGV4Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0VGV4dHVyZShj
b25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGV4dHVy
ZV9hdEluZGV4XyksIHRleHR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUZXh0dXJl
czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVy
OjpzZXRUZXh0dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1cmVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0U2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyOjpzZXRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUq
IHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRlX2F0SW5kZXhfKSwg
c2FtcGxlciwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZXM6d2l0aFJh
bmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0U2Ft
cGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFuZ2UpOworfQorCisv
LyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RNYXhDbGFtcDphdEluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0U2FtcGxl
clN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9hdCBsb2RNaW5DbGFt
cCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRl
X2xvZE1pbkNsYW1wX2xvZE1heENsYW1wX2F0SW5kZXhfKSwgc2FtcGxlciwgbG9kTWluQ2xhbXAs
IGxvZE1heENsYW1wLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2FtcGxlclN0YXRlczps
b2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3Rh
dGUqIHNhbXBsZXJzW10sIGNvbnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBs
b2RNYXhDbGFtcHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVyU3RhdGVzX2xvZE1pbkNs
YW1wc19sb2RNYXhDbGFtcHNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBsb2RNaW5DbGFtcHMsIGxv
ZE1heENsYW1wcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFRocmVhZGdyb3VwTWVtb3J5
TGVuZ3RoOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyOjpzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoX2F0SW5kZXhfKSwgbGVu
Z3RoLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0SW1hZ2VibG9ja1dpZHRoOmhlaWdodDoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEltYWdlYmxv
Y2tXaWR0aChOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEltYWdl
YmxvY2tXaWR0aF9oZWlnaHRfKSwgd2lkdGgsIGhlaWdodCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
U3RhZ2VJblJlZ2lvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29k
ZXI6OnNldFN0YWdlSW5SZWdpb24oTVRMOjpSZWdpb24gcmVnaW9uKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGFnZUluUmVnaW9u
XyksIHJlZ2lvbik7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RhZ2VJblJlZ2lvbldpdGhJbmRpcmVj
dEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21w
dXRlQ29tbWFuZEVuY29kZXI6OnNldFN0YWdlSW5SZWdpb24oY29uc3QgTVRMOjpCdWZmZXIqIGlu
ZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YWdl
SW5SZWdpb25XaXRoSW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgaW5kaXJl
Y3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiBkaXNwYXRj
aFRocmVhZGdyb3Vwczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaFRocmVhZGdyb3VwcyhNVEw6OlNpemUg
dGhyZWFkZ3JvdXBzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGlz
cGF0Y2hUaHJlYWRncm91cHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXyksIHRocmVhZGdyb3Vwc1Bl
ckdyaWQsIHRocmVhZHNQZXJUaHJlYWRncm91cCk7Cit9CisKKy8vIG1ldGhvZDogZGlzcGF0Y2hU
aHJlYWRncm91cHNXaXRoSW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6dGhyZWFk
c1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5j
b2Rlcjo6ZGlzcGF0Y2hUaHJlYWRncm91cHMoY29uc3QgTVRMOjpCdWZmZXIqIGluZGlyZWN0QnVm
ZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQsIE1UTDo6U2l6ZSB0aHJlYWRz
UGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVGhyZWFkZ3JvdXBzV2l0aEluZGlyZWN0QnVmZmVyX2lu
ZGlyZWN0QnVmZmVyT2Zmc2V0X3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCBpbmRpcmVjdEJ1ZmZl
ciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQsIHRocmVhZHNQZXJUaHJlYWRncm91cCk7Cit9CisKKy8v
IG1ldGhvZDogZGlzcGF0Y2hUaHJlYWRzOnRocmVhZHNQZXJUaHJlYWRncm91cDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNoVGhyZWFkcyhNVEw6
OlNpemUgdGhyZWFkc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRp
c3BhdGNoVGhyZWFkc190aHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgdGhyZWFkc1BlckdyaWQsIHRo
cmVhZHNQZXJUaHJlYWRncm91cCk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlRmVuY2U6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp1cGRhdGVGZW5jZShjb25z
dCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRo
b2Q6IHdhaXRGb3JGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVu
Y29kZXI6OndhaXRGb3JGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2FpdEZvckZlbmNl
XyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZTp1c2FnZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlKGNvbnN0IE1U
TDo6UmVzb3VyY2UqIHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJlc291
cmNlX3VzYWdlXyksIHJlc291cmNlLCB1c2FnZSk7Cit9CisKKy8vIG1ldGhvZDogdXNlUmVzb3Vy
Y2VzOmNvdW50OnVzYWdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5j
b2Rlcjo6dXNlUmVzb3VyY2VzKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVn
ZXIgY291bnQsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVzb3VyY2VzX2NvdW50X3Vz
YWdlXyksIHJlc291cmNlcywgY291bnQsIHVzYWdlKTsKK30KKworLy8gbWV0aG9kOiB1c2VIZWFw
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcChj
b25zdCBNVEw6OkhlYXAqIGhlYXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBfKSwgaGVhcCk7Cit9CisKKy8vIG1ldGhvZDog
dXNlSGVhcHM6Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyOjp1c2VIZWFwcyhNVEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdlciBjb3VudCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNl
SGVhcHNfY291bnRfKSwgaGVhcHMsIGNvdW50KTsKK30KKworLy8gbWV0aG9kOiBleGVjdXRlQ29t
bWFuZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNv
bW1hbmRFbmNvZGVyOjpleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0
Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6UmFuZ2UgZXhlY3V0aW9u
UmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyX3dpdGhSYW5nZV8pLCBpbmRpcmVjdENvbW1h
bmRCdWZmZXIsIGV4ZWN1dGlvblJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBleGVjdXRlQ29tbWFu
ZHNJbkJ1ZmZlcjppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmV4ZWN1dGVDb21tYW5kc0luQnVm
ZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRidWZm
ZXIsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdFJhbmdlQnVmZmVyLCBOUzo6VUludGVnZXIg
aW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyX2luZGlyZWN0QnVm
ZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIGluZGlyZWN0Q29tbWFuZGJ1ZmZlciwgaW5kaXJl
Y3RSYW5nZUJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworfQorCisvLyBtZXRob2Q6IG1l
bW9yeUJhcnJpZXJXaXRoU2NvcGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1h
bmRFbmNvZGVyOjptZW1vcnlCYXJyaWVyKE1UTDo6QmFycmllclNjb3BlIHNjb3BlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtZW1vcnlC
YXJyaWVyV2l0aFNjb3BlXyksIHNjb3BlKTsKK30KKworLy8gbWV0aG9kOiBtZW1vcnlCYXJyaWVy
V2l0aFJlc291cmNlczpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFu
ZEVuY29kZXI6Om1lbW9yeUJhcnJpZXIoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpV
SW50ZWdlciBjb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXNfY291bnRfKSwgcmVzb3Vy
Y2VzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcjphdFNh
bXBsZUluZGV4OndpdGhCYXJyaWVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21t
YW5kRW5jb2Rlcjo6c2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1w
bGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUluZGV4LCBib29sIGJh
cnJpZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNhbXBsZUNvdW50ZXJzSW5CdWZmZXJfYXRTYW1wbGVJbmRleF93aXRoQmFycmllcl8p
LCBzYW1wbGVCdWZmZXIsIHNhbXBsZUluZGV4LCBiYXJyaWVyKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGFzcy5ocHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYzZDRiNTI2NzZkZGIwMWQ2ZjU4OThjNWQ3MzE1MWFlM2Y3NDYzZWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29t
cHV0ZVBhc3MuaHBwCkBAIC0wLDAgKzEsMTgxIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21wdXRlUGFzcy5ocHAKKy8v
CisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1
ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhw
cD4KKworI2luY2x1ZGUgIk1UTENvbW1hbmRCdWZmZXIuaHBwIgorCituYW1lc3BhY2UgTVRMCit7
CitjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVi
bGljIE5TOjpDb3B5aW5nPENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBDb21wdXRlUGFzc1Nh
bXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xh
c3MgQ291bnRlclNhbXBsZUJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh
bXBsZUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVCdWZmZXIoY29uc3QgY2xhc3MgQ291
bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mRW5jb2RlclNh
bXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6
OlVJbnRlZ2VyIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4KE5T
OjpVSW50ZWdlciBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9OworCitjbGFzcyBDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJl
ZmVyZW5jaW5nPENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOwor
CisgICAgY2xhc3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciog
ICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgp
OworfTsKKworY2xhc3MgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5n
PENvbXB1dGVQYXNzRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQ29t
cHV0ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGFsbG9jKCk7CisKKyAgICBj
bGFzcyBDb21wdXRlUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
aXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBDb21wdXRlUGFzc0Rlc2NyaXB0b3IqICAgICAgICAg
ICAgICAgICAgICAgY29tcHV0ZVBhc3NEZXNjcmlwdG9yKCk7CisKKyAgICBNVEw6OkRpc3BhdGNo
VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoVHlwZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RGlzcGF0Y2hUeXBlKE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlw
ZSk7CisKKyAgICBjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXkqIHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3Q7Cit9OworCit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojph
bGxvYzxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I+KF9N
VExfUFJJVkFURV9DTFMoTVRMQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpDb21wdXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6
Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2FtcGxlQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTYW1wbGVCdWZmZXIoY29u
c3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZUJ1ZmZl
cl8pLCBzYW1wbGVCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRPZkVuY29kZXJTYW1w
bGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3I6OnNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZF
bmNvZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXhfKSwgc3RhcnRP
ZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmRPZkVuY29kZXJTYW1w
bGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChlbmRPZkVuY29kZXJTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
cjo6c2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNh
bXBsZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleF8pLCBlbmRPZkVuY29kZXJTYW1w
bGVJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6
OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpD
b21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcHV0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5p
dDxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4o
KTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElO
RSBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6
Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpvYmplY3Qo
TlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3Iq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRh
Y2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3Jp
cHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpDb21wdXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0
YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnQs
IGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lO
TElORSBNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRvciogTVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0
b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21wdXRl
UGFzc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcHV0ZVBhc3NEZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc0Rl
c2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRvcj4oKTsKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogY29tcHV0ZVBhc3NEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6
OkNvbXB1dGVQYXNzRGVzY3JpcHRvciogTVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I6OmNvbXB1
dGVQYXNzRGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpDb21wdXRlUGFzc0Rlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQYXNz
RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoY29tcHV0ZVBhc3NEZXNjcmlwdG9yKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBkaXNwYXRjaFR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGlzcGF0Y2hU
eXBlIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjpkaXNwYXRjaFR5cGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGlzcGF0Y2hUeXBlPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVHlwZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjpzZXREaXNwYXRjaFR5cGUoTVRMOjpEaXNwYXRjaFR5
cGUgZGlzcGF0Y2hUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXREaXNwYXRjaFR5cGVfKSwgZGlzcGF0Y2hUeXBlKTsKK30KKwor
Ly8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzCitfTVRMX0lOTElORSBNVEw6OkNv
bXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpDb21w
dXRlUGFzc0Rlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxl
QnVmZmVyQXR0YWNobWVudHMpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQaXBlbGluZS5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzczMGNkZmIwMTNiZjk0YjNkZmY0MDZjODc0OThjM2FjOTk1ZWM3ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGlwZWxp
bmUuaHBwCkBAIC0wLDAgKzEsMzU4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBwCisvLwor
Ly8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
TVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRl
ICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+
CisKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIEZ1
bmN0aW9uOworY2xhc3MgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiA6IHB1YmxpYyBOUzo6UmVm
ZXJlbmNpbmc8Q29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogYWxsb2MoKTsKKworICAgIGNsYXNz
IENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJy
YXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzKCkgY29uc3Q7Cit9Owor
CitjbGFzcyBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPENv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVs
KTsKKworICAgIGNsYXNzIEZ1bmN0aW9uKiAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRl
RnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0Q29tcHV0ZUZ1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBjb21wdXRlRnVu
Y3Rpb24pOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
cmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRocmVhZEdyb3Vw
U2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKGJvb2wgdGhyZWFkR3JvdXBTaXpl
SXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1h
eFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKE5TOjpVSW50ZWdlciBtYXhUb3RhbFRocmVhZHNQ
ZXJUaHJlYWRncm91cCk7CisKKyAgICBjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciog
ICAgICAgc3RhZ2VJbnB1dERlc2NyaXB0b3IoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhZ2VJbnB1dERlc2NyaXB0b3IoY29uc3QgY2xh
c3MgU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIHN0YWdlSW5wdXREZXNjcmlwdG9yKTsKKwor
ICAgIGNsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiAgICBidWZmZXJzKCkgY29u
c3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9y
dEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoYm9v
bCBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0TGlicmFyaWVzKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluc2VydExpYnJhcmllcyhj
b25zdCBOUzo6QXJyYXkqIGluc2VydExpYnJhcmllcyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJlbG9hZGVkTGlicmFyaWVzKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByZWxvYWRlZExpYnJh
cmllcyhjb25zdCBOUzo6QXJyYXkqIHByZWxvYWRlZExpYnJhcmllcyk7CisKKyAgICBOUzo6QXJy
YXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5QXJjaGl2ZXMoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QmluYXJ5QXJj
aGl2ZXMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcyk7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTsKKworICAgIGNsYXNzIExpbmtl
ZEZ1bmN0aW9ucyogICAgICAgICAgICAgICAgICBsaW5rZWRGdW5jdGlvbnMoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGlua2VkRnVuY3Rp
b25zKGNvbnN0IGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogbGlua2VkRnVuY3Rpb25zKTsKKworICAg
IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QWRkaW5nQmlu
YXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRk
aW5nQmluYXJ5RnVuY3Rpb25zKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhDYWxsU3RhY2tEZXB0aChOUzo6VUludGVn
ZXIgbWF4Q2FsbFN0YWNrRGVwdGgpOworfTsKKworY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUg
OiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbXB1dGVQaXBlbGluZVN0YXRlPgoreworcHVibGlj
OgorICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisK
KyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgICAgICAgICAgICBkZXZpY2UoKSBjb25zdDsKKwor
ICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgIG1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAg
ICB0aHJlYWRFeGVjdXRpb25XaWR0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdDsKKwor
ICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgIGltYWdlYmxvY2tNZW1vcnlMZW5n
dGgoTVRMOjpTaXplIGltYWdlYmxvY2tEaW1lbnNpb25zKTsKKworICAgIGJvb2wgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3Q7
CisKKyAgICBjbGFzcyBGdW5jdGlvbkhhbmRsZSogICAgICAgICAgICBmdW5jdGlvbkhhbmRsZShj
b25zdCBjbGFzcyBGdW5jdGlvbiogZnVuY3Rpb24pOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVs
aW5lU3RhdGUqICAgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTlM6OkFycmF5KiBm
dW5jdGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGNsYXNzIFZpc2libGVGdW5jdGlv
blRhYmxlKiAgICAgIG5ld1Zpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZpc2libGVG
dW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlKiBuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNs
YXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKK307
CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lUmVmbGVjdGlvbiogTVRMOjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uOjphbGxv
YygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcHV0ZVBpcGVsaW5l
UmVmbGVjdGlvbj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9u
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxp
bmVSZWZsZWN0aW9uKiBNVEw6OkNvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb246OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlv
bj4oKTsKK30KKworLy8gcHJvcGVydHk6IGFyZ3VtZW50cworX01UTF9JTkxJTkUgTlM6OkFycmF5
KiBNVEw6OkNvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb246OmFyZ3VtZW50cygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChhcmd1bWVudHMpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExf
SU5MSU5FIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogTVRMOjpDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1U
TDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OmxhYmVsKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFi
ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGNvbXB1dGVGdW5jdGlv
bgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yOjpjb21wdXRlRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbXB1dGVGdW5j
dGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcjo6c2V0Q29tcHV0ZUZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGNvbXB1dGVGdW5j
dGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0Q29tcHV0ZUZ1bmN0aW9uXyksIGNvbXB1dGVGdW5jdGlvbik7Cit9CisKKy8vIHBy
b3BlcnR5OiB0aHJlYWRHcm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aAor
X01UTF9JTkxJTkUgYm9vbCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnRocmVhZEdy
b3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRo
cmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUaHJlYWRH
cm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aChib29sIHRocmVhZEdyb3Vw
U2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaHJlYWRHcm91cFNpemVJ
c011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aF8pLCB0aHJlYWRHcm91cFNpemVJc011bHRp
cGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUb3RhbFRo
cmVhZHNQZXJUaHJlYWRncm91cAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcjo6bWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4VG90
YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoTlM6OlVJbnRlZ2VyIG1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cF8pLCBtYXhUb3RhbFRo
cmVhZHNQZXJUaHJlYWRncm91cCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGFnZUlucHV0RGVzY3Jp
cHRvcgorX01UTF9JTkxJTkUgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogTVRMOjpD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzdGFnZUlucHV0RGVzY3JpcHRvcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdGFnZUlucHV0T3V0cHV0RGVz
Y3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhZ2VJbnB1dERlc2NyaXB0b3IpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNl
dFN0YWdlSW5wdXREZXNjcmlwdG9yKGNvbnN0IE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0
b3IqIHN0YWdlSW5wdXREZXNjcmlwdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGFnZUlucHV0RGVzY3JpcHRvcl8pLCBzdGFn
ZUlucHV0RGVzY3JpcHRvcik7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJzCitfTVRMX0lOTElO
RSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBNVEw6OkNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3I6OmJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGJ1ZmZlcnMpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRJbmRpcmVjdENv
bW1hbmRCdWZmZXJzCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcjo6c3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1
cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVm
ZmVycyhib29sIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdXBwb3J0SW5kaXJl
Y3RDb21tYW5kQnVmZmVyc18pLCBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycyk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpbnNlcnRMaWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjppbnNlcnRMaWJyYXJpZXMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoaW5zZXJ0TGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRJbnNlcnRMaWJyYXJpZXMoY29uc3QgTlM6OkFy
cmF5KiBpbnNlcnRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc2VydExpYnJhcmllc18pLCBpbnNlcnRMaWJyYXJp
ZXMpOworfQorCisvLyBwcm9wZXJ0eTogcHJlbG9hZGVkTGlicmFyaWVzCitfTVRMX0lOTElORSBO
Uzo6QXJyYXkqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6cHJlbG9hZGVkTGlicmFy
aWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByZWxvYWRlZExpYnJhcmllcykpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0UHJlbG9hZGVk
TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogcHJlbG9hZGVkTGlicmFyaWVzKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRQcmVsb2Fk
ZWRMaWJyYXJpZXNfKSwgcHJlbG9hZGVkTGlicmFyaWVzKTsKK30KKworLy8gcHJvcGVydHk6IGJp
bmFyeUFyY2hpdmVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6Q29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvcjo6YmluYXJ5QXJjaGl2ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYmluYXJ5QXJj
aGl2ZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3I6OnNldEJpbmFyeUFyY2hpdmVzKGNvbnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEJpbmFyeUFyY2hpdmVzXyksIGJpbmFyeUFyY2hpdmVzKTsKK30KKworLy8gbWV0aG9kOiBy
ZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnJl
c2V0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwocmVzZXQpKTsKK30KKworLy8gcHJvcGVydHk6IGxpbmtlZEZ1bmN0aW9ucworX01UTF9J
TkxJTkUgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
cjo6bGlua2VkRnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkxpbmtlZEZ1bmN0aW9ucyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGlua2Vk
RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yOjpzZXRMaW5rZWRGdW5jdGlvbnMoY29uc3QgTVRMOjpMaW5rZWRGdW5jdGlvbnMq
IGxpbmtlZEZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0TGlua2VkRnVuY3Rpb25zXyksIGxpbmtlZEZ1bmN0aW9ucyk7
Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zCitfTVRMX0lO
TElORSBib29sIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c3VwcG9ydEFkZGluZ0Jp
bmFyeUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VT
YWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0
aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcjo6c2V0U3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdC
aW5hcnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnNfKSwgc3VwcG9y
dEFkZGluZ0JpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhDYWxsU3RhY2tE
ZXB0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcjo6bWF4Q2FsbFN0YWNrRGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhDYWxsU3Rh
Y2tEZXB0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvcjo6c2V0TWF4Q2FsbFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1heENhbGxTdGFja0Rl
cHRoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRNYXhDYWxsU3RhY2tEZXB0aF8pLCBtYXhDYWxsU3RhY2tEZXB0aCk7Cit9CisKKy8v
IHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21wdXRlUGlw
ZWxpbmVTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkNvbXB1dGVQ
aXBlbGluZVN0YXRlOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30K
KworLy8gcHJvcGVydHk6IG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZTo6bWF4VG90YWxUaHJlYWRz
UGVyVGhyZWFkZ3JvdXAoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhUb3RhbFRocmVhZHNQZXJU
aHJlYWRncm91cCkpOworfQorCisvLyBwcm9wZXJ0eTogdGhyZWFkRXhlY3V0aW9uV2lkdGgKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjp0aHJlYWRF
eGVjdXRpb25XaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRocmVhZEV4ZWN1dGlvbldpZHRo
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGF0aWNUaHJlYWRncm91cE1lbW9yeUxlbmd0aAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OnN0YXRpY1Ro
cmVhZGdyb3VwTWVtb3J5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhdGljVGhyZWFk
Z3JvdXBNZW1vcnlMZW5ndGgpKTsKK30KKworLy8gbWV0aG9kOiBpbWFnZWJsb2NrTWVtb3J5TGVu
Z3RoRm9yRGltZW5zaW9uczoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQ
aXBlbGluZVN0YXRlOjppbWFnZWJsb2NrTWVtb3J5TGVuZ3RoKE1UTDo6U2l6ZSBpbWFnZWJsb2Nr
RGltZW5zaW9ucykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW1hZ2VibG9ja01lbW9yeUxlbmd0aEZvckRpbWVu
c2lvbnNfKSwgaW1hZ2VibG9ja0RpbWVuc2lvbnMpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9y
dEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDb21wdXRlUGlw
ZWxpbmVTdGF0ZTo6c3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKSk7Cit9CisKKy8vIG1ldGhvZDogZnVu
Y3Rpb25IYW5kbGVXaXRoRnVuY3Rpb246CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uSGFuZGxl
KiBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpmdW5jdGlvbkhhbmRsZShjb25zdCBNVEw6OkZ1
bmN0aW9uKiBmdW5jdGlvbikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkZ1bmN0aW9uSGFuZGxlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkhhbmRsZVdp
dGhGdW5jdGlvbl8pLCBmdW5jdGlvbik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVs
aW5lU3RhdGVXaXRoQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uczplcnJvcjoKK19NVExfSU5MSU5F
IE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Om5l
d0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE5TOjpBcnJheSogZnVuY3Rpb25zLCBOUzo6RXJy
b3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1
dGVQaXBlbGluZVN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXyksIGZ1bmN0aW9ucywg
ZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0aERlc2Ny
aXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiBNVEw6OkNvbXB1
dGVQaXBlbGluZVN0YXRlOjpuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OlZpc2li
bGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yXyksIGRlc2Ny
aXB0b3IpOworfQorCisvLyBtZXRob2Q6IG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRo
RGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSog
TVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZTo6bmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShj
b25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZVdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvdW50ZXJzLmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb3VudGVycy5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmU2NWMxZDhlYTAxODE2ZGQ3ZGZiNjk0ODFkN2EyOGRiNjQxN2I1MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb3VudGVycy5o
cHAKQEAgLTAsMCArMSwyNTggQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTENvdW50ZXJzLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVk
ZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CisKK19NVExfQ09OU1QoIE5T
OjpFcnJvckRvbWFpbiwgQ291bnRlckVycm9yRG9tYWluICk7CisKK3VzaW5nIENvbW1vbkNvdW50
ZXIgPSBOUzo6U3RyaW5nKjsKKworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291
bnRlclRpbWVzdGFtcCApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRl
clRlc3NlbGxhdGlvbklucHV0UGF0Y2hlcyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwg
Q29tbW9uQ291bnRlclZlcnRleEludm9jYXRpb25zICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3Vu
dGVyLCBDb21tb25Db3VudGVyUG9zdFRlc3NlbGxhdGlvblZlcnRleEludm9jYXRpb25zICk7Citf
TVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyQ2xpcHBlckludm9jYXRpb25z
ICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyQ2xpcHBlclByaW1p
dGl2ZXNPdXQgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJGcmFn
bWVudEludm9jYXRpb25zICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3Vu
dGVyRnJhZ21lbnRzUGFzc2VkICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25D
b3VudGVyQ29tcHV0ZUtlcm5lbEludm9jYXRpb25zICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3Vu
dGVyLCBDb21tb25Db3VudGVyVG90YWxDeWNsZXMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50
ZXIsIENvbW1vbkNvdW50ZXJWZXJ0ZXhDeWNsZXMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50
ZXIsIENvbW1vbkNvdW50ZXJUZXNzZWxsYXRpb25DeWNsZXMgKTsKK19NVExfQ09OU1QoIENvbW1v
bkNvdW50ZXIsIENvbW1vbkNvdW50ZXJQb3N0VGVzc2VsbGF0aW9uVmVydGV4Q3ljbGVzICk7Citf
TVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyRnJhZ21lbnRDeWNsZXMgKTsK
K19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJSZW5kZXJUYXJnZXRXcml0
ZUN5Y2xlcyApOworCit1c2luZyBDb21tb25Db3VudGVyU2V0ID0gTlM6OlN0cmluZyo7CisKK19N
VExfQ09OU1QoIENvbW1vbkNvdW50ZXJTZXQsIENvbW1vbkNvdW50ZXJTZXRUaW1lc3RhbXAgKTsK
K19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXJTZXQsIENvbW1vbkNvdW50ZXJTZXRTdGFnZVV0aWxp
emF0aW9uICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyU2V0LCBDb21tb25Db3VudGVyU2V0
U3RhdGlzdGljICk7CisKK3N0cnVjdCBDb3VudGVyUmVzdWx0VGltZXN0YW1wCit7CisgICAgdWlu
dDY0X3QgdGltZXN0YW1wOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IENvdW50ZXJSZXN1bHRT
dGFnZVV0aWxpemF0aW9uCit7CisgICAgdWludDY0X3QgdG90YWxDeWNsZXM7CisgICAgdWludDY0
X3QgdmVydGV4Q3ljbGVzOworICAgIHVpbnQ2NF90IHRlc3NlbGxhdGlvbkN5Y2xlczsKKyAgICB1
aW50NjRfdCBwb3N0VGVzc2VsbGF0aW9uVmVydGV4Q3ljbGVzOworICAgIHVpbnQ2NF90IGZyYWdt
ZW50Q3ljbGVzOworICAgIHVpbnQ2NF90IHJlbmRlclRhcmdldEN5Y2xlczsKK30gX01UTF9QQUNL
RUQ7CisKK3N0cnVjdCBDb3VudGVyUmVzdWx0U3RhdGlzdGljCit7CisgICAgdWludDY0X3QgdGVz
c2VsbGF0aW9uSW5wdXRQYXRjaGVzOworICAgIHVpbnQ2NF90IHZlcnRleEludm9jYXRpb25zOwor
ICAgIHVpbnQ2NF90IHBvc3RUZXNzZWxsYXRpb25WZXJ0ZXhJbnZvY2F0aW9uczsKKyAgICB1aW50
NjRfdCBjbGlwcGVySW52b2NhdGlvbnM7CisgICAgdWludDY0X3QgY2xpcHBlclByaW1pdGl2ZXNP
dXQ7CisgICAgdWludDY0X3QgZnJhZ21lbnRJbnZvY2F0aW9uczsKKyAgICB1aW50NjRfdCBmcmFn
bWVudHNQYXNzZWQ7CisgICAgdWludDY0X3QgY29tcHV0ZUtlcm5lbEludm9jYXRpb25zOworfSBf
TVRMX1BBQ0tFRDsKKworY2xhc3MgQ291bnRlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q291
bnRlcj4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiBuYW1lKCkgY29uc3Q7Cit9OworCitj
bGFzcyBDb3VudGVyU2V0IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb3VudGVyU2V0Pgorewor
cHVibGljOgorICAgIE5TOjpTdHJpbmcqIG5hbWUoKSBjb25zdDsKKworICAgIE5TOjpBcnJheSog
IGNvdW50ZXJzKCkgY29uc3Q7Cit9OworCitjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3Jp
cHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcj4K
K3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0
b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciog
ICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvdW50ZXJTZXQqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY291bnRlclNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0Q291bnRlclNldChjb25zdCBjbGFzcyBDb3VudGVyU2V0
KiBjb3VudGVyU2V0KTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAg
IE1UTDo6U3RvcmFnZU1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZU1vZGUo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFN0b3JhZ2VNb2RlKE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVDb3VudCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
U2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KTsKK307CisKK2NsYXNzIENvdW50
ZXJTYW1wbGVCdWZmZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvdW50ZXJTYW1wbGVCdWZm
ZXI+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBjb25zdDsKKworICAg
IE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgc2FtcGxl
Q291bnQoKSBjb25zdDsKKworICAgIE5TOjpEYXRhKiAgICAgcmVzb2x2ZUNvdW50ZXJSYW5nZShO
Uzo6UmFuZ2UgcmFuZ2UpOworfTsKKworX01UTF9FTlVNKE5TOjpJbnRlZ2VyLCBDb3VudGVyU2Ft
cGxlQnVmZmVyRXJyb3IpIHsKKyAgICBDb3VudGVyU2FtcGxlQnVmZmVyRXJyb3JPdXRPZk1lbW9y
eSA9IDAsCisgICAgQ291bnRlclNhbXBsZUJ1ZmZlckVycm9ySW52YWxpZCA9IDEsCit9OworCit9
CisKK19NVExfUFJJVkFURV9ERUZfU1RSKCBOUzo6RXJyb3JEb21haW4sIENvdW50ZXJFcnJvckRv
bWFpbiApOworCitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21t
b25Db3VudGVyVGltZXN0YW1wICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25D
b3VudGVyLCBDb21tb25Db3VudGVyVGVzc2VsbGF0aW9uSW5wdXRQYXRjaGVzICk7CitfTVRMX1BS
SVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVmVydGV4SW52
b2NhdGlvbnMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENv
bW1vbkNvdW50ZXJQb3N0VGVzc2VsbGF0aW9uVmVydGV4SW52b2NhdGlvbnMgKTsKK19NVExfUFJJ
VkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJDbGlwcGVySW52
b2NhdGlvbnMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENv
bW1vbkNvdW50ZXJDbGlwcGVyUHJpbWl0aXZlc091dCApOworX01UTF9QUklWQVRFX0RFRl9TVFIo
IE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50SW52b2NhdGlvbnMgKTsK
K19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJG
cmFnbWVudHNQYXNzZWQgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50
ZXIsIENvbW1vbkNvdW50ZXJDb21wdXRlS2VybmVsSW52b2NhdGlvbnMgKTsKK19NVExfUFJJVkFU
RV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUb3RhbEN5Y2xlcyAp
OworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRl
clZlcnRleEN5Y2xlcyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRl
ciwgQ29tbW9uQ291bnRlclRlc3NlbGxhdGlvbkN5Y2xlcyApOworX01UTF9QUklWQVRFX0RFRl9T
VFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclBvc3RUZXNzZWxsYXRpb25WZXJ0
ZXhDeWNsZXMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENv
bW1vbkNvdW50ZXJGcmFnbWVudEN5Y2xlcyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6
Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclJlbmRlclRhcmdldFdyaXRlQ3ljbGVzICk7CisK
K19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXJTZXQsIENvbW1vbkNvdW50
ZXJTZXRUaW1lc3RhbXAgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50
ZXJTZXQsIENvbW1vbkNvdW50ZXJTZXRTdGFnZVV0aWxpemF0aW9uICk7CitfTVRMX1BSSVZBVEVf
REVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyU2V0LCBDb21tb25Db3VudGVyU2V0U3RhdGlzdGlj
ICk7CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNv
dW50ZXI6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVy
dHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q291bnRlclNldDo6bmFtZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTogY291bnRlcnMK
K19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpDb3VudGVyU2V0Ojpjb3VudGVycygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChjb3VudGVycykpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciogTVRMOjpDb3Vu
dGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0OjphbGxvYzxNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTENvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhv
ZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciog
TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcj4oKTsK
K30KKworLy8gcHJvcGVydHk6IGNvdW50ZXJTZXQKK19NVExfSU5MSU5FIE1UTDo6Q291bnRlclNl
dCogTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6Y291bnRlclNldCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2V0Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChjb3VudGVyU2V0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6c2V0Q291bnRlclNldChjb25zdCBN
VEw6OkNvdW50ZXJTZXQqIGNvdW50ZXJTZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvdW50ZXJTZXRfKSwgY291bnRlclNldCk7
Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpD
b3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVy
RGVzY3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyks
IGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VNb2RlCitfTVRMX0lOTElORSBNVEw6
OlN0b3JhZ2VNb2RlIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OnN0b3JhZ2VN
b2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3Jh
Z2VNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3JhZ2VNb2RlKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6c2V0U3RvcmFn
ZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBzdG9yYWdlTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RvcmFnZU1vZGVfKSwgc3Rv
cmFnZU1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjpzYW1wbGVDb3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6c2V0U2FtcGxlQ291bnQo
TlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVDb3VudF8pLCBzYW1wbGVDb3VudCk7
Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6
OkNvdW50ZXJTYW1wbGVCdWZmZXI6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmlj
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6Q291bnRlclNhbXBsZUJ1ZmZlcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVs
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRl
Z2VyIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcjo6c2FtcGxlQ291bnQoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzYW1wbGVDb3VudCkpOworfQorCisvLyBtZXRob2Q6IHJlc29sdmVDb3VudGVyUmFu
Z2U6CitfTVRMX0lOTElORSBOUzo6RGF0YSogTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyOjpyZXNv
bHZlQ291bnRlclJhbmdlKE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6RGF0YSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzb2x2ZUNvdW50
ZXJSYW5nZV8pLCByYW5nZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMRGVmaW5lcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMRGVmaW5lcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYyZTdhMmNjOTA0MzJhYjBk
MmZkNDhiOWZlMThjMGQ1MzViOTdjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhwcApAQCAtMCwwICsxLDQxIEBACisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRh
bC9NVExEZWZpbmVzLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
Ly8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJh
Z21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNpbmNsdWRlICIuLi9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHAiCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIF9NVExfRVhQT1JU
IF9OU19FWFBPUlQKKyNkZWZpbmUgX01UTF9FWFRFUk4gX05TX0VYVEVSTgorI2RlZmluZSBfTVRM
X0lOTElORSBfTlNfSU5MSU5FCisjZGVmaW5lIF9NVExfUEFDS0VEIF9OU19QQUNLRUQKKworI2Rl
ZmluZSBfTVRMX0NPTlNUKHR5cGUsIG5hbWUpIF9OU19DT05TVCh0eXBlLCBuYW1lKQorI2RlZmlu
ZSBfTVRMX0VOVU0odHlwZSwgbmFtZSkgX05TX0VOVU0odHlwZSwgbmFtZSkKKyNkZWZpbmUgX01U
TF9PUFRJT05TKHR5cGUsIG5hbWUpIF9OU19PUFRJT05TKHR5cGUsIG5hbWUpCisKKyNkZWZpbmUg
X01UTF9WQUxJREFURV9TSVpFKG5zLCBuYW1lKSBfTlNfVkFMSURBVEVfU0laRShucywgbmFtZSkK
KyNkZWZpbmUgX01UTF9WQUxJREFURV9FTlVNKG5zLCBuYW1lKSBfTlNfVkFMSURBVEVfRU5VTShu
cywgbmFtZSkKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVw
dGhTdGVuY2lsLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExE
ZXB0aFN0ZW5jaWwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNzc0ZGNlYzAxZTg1OWExMDAxZGYzOTJkYjMz
YmJiZTY4MjkxMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMRGVwdGhTdGVuY2lsLmhwcApAQCAtMCwwICsxLDI2OSBAQAorLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRM
RGVwdGhTdGVuY2lsLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
Ly8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRl
ckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRGVwdGhTdGVuY2lsLmhwcCIK
KworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ29tcGFyZUZ1bmN0
aW9uKSB7CisgICAgQ29tcGFyZUZ1bmN0aW9uTmV2ZXIgPSAwLAorICAgIENvbXBhcmVGdW5jdGlv
bkxlc3MgPSAxLAorICAgIENvbXBhcmVGdW5jdGlvbkVxdWFsID0gMiwKKyAgICBDb21wYXJlRnVu
Y3Rpb25MZXNzRXF1YWwgPSAzLAorICAgIENvbXBhcmVGdW5jdGlvbkdyZWF0ZXIgPSA0LAorICAg
IENvbXBhcmVGdW5jdGlvbk5vdEVxdWFsID0gNSwKKyAgICBDb21wYXJlRnVuY3Rpb25HcmVhdGVy
RXF1YWwgPSA2LAorICAgIENvbXBhcmVGdW5jdGlvbkFsd2F5cyA9IDcsCit9OworCitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBTdGVuY2lsT3BlcmF0aW9uKSB7CisgICAgU3RlbmNpbE9wZXJhdGlv
bktlZXAgPSAwLAorICAgIFN0ZW5jaWxPcGVyYXRpb25aZXJvID0gMSwKKyAgICBTdGVuY2lsT3Bl
cmF0aW9uUmVwbGFjZSA9IDIsCisgICAgU3RlbmNpbE9wZXJhdGlvbkluY3JlbWVudENsYW1wID0g
MywKKyAgICBTdGVuY2lsT3BlcmF0aW9uRGVjcmVtZW50Q2xhbXAgPSA0LAorICAgIFN0ZW5jaWxP
cGVyYXRpb25JbnZlcnQgPSA1LAorICAgIFN0ZW5jaWxPcGVyYXRpb25JbmNyZW1lbnRXcmFwID0g
NiwKKyAgICBTdGVuY2lsT3BlcmF0aW9uRGVjcmVtZW50V3JhcCA9IDcsCit9OworCitjbGFzcyBT
dGVuY2lsRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxTdGVuY2lsRGVzY3JpcHRvcj4K
K3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgU3RlbmNpbERlc2NyaXB0b3IqIGFsbG9jKCk7
CisKKyAgICBjbGFzcyBTdGVuY2lsRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1U
TDo6Q29tcGFyZUZ1bmN0aW9uICAgICAgICAgICAgc3RlbmNpbENvbXBhcmVGdW5jdGlvbigpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbENvbXBh
cmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlvbiBzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uKTsK
KworICAgIE1UTDo6U3RlbmNpbE9wZXJhdGlvbiAgICAgICAgICAgc3RlbmNpbEZhaWx1cmVPcGVy
YXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0
ZW5jaWxGYWlsdXJlT3BlcmF0aW9uKE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBzdGVuY2lsRmFpbHVy
ZU9wZXJhdGlvbik7CisKKyAgICBNVEw6OlN0ZW5jaWxPcGVyYXRpb24gICAgICAgICAgIGRlcHRo
RmFpbHVyZU9wZXJhdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0RGVwdGhGYWlsdXJlT3BlcmF0aW9uKE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBkZXB0
aEZhaWx1cmVPcGVyYXRpb24pOworCisgICAgTVRMOjpTdGVuY2lsT3BlcmF0aW9uICAgICAgICAg
ICBkZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXREZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKE1UTDo6U3RlbmNp
bE9wZXJhdGlvbiBkZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKTsKKworICAgIHVpbnQzMl90ICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhZE1hc2soKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFJlYWRNYXNrKHVpbnQzMl90IHJlYWRNYXNrKTsKKworICAg
IHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVNYXNrKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRXcml0ZU1hc2sodWludDMyX3Qgd3Jp
dGVNYXNrKTsKK307CisKK2NsYXNzIERlcHRoU3RlbmNpbERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6
OkNvcHlpbmc8RGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y2xhc3MgRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIERlcHRo
U3RlbmNpbERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkNvbXBhcmVGdW5j
dGlvbiAgICAgICAgICAgICAgICAgZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVwdGhDb21wYXJlRnVuY3Rp
b24oTVRMOjpDb21wYXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlRnVuY3Rpb24pOworCisgICAgYm9v
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoV3JpdGVFbmFibGVkKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoV3Jp
dGVFbmFibGVkKGJvb2wgZGVwdGhXcml0ZUVuYWJsZWQpOworCisgICAgY2xhc3MgU3RlbmNpbERl
c2NyaXB0b3IqICAgICAgICAgICAgIGZyb250RmFjZVN0ZW5jaWwoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnJvbnRGYWNlU3RlbmNpbChjb25z
dCBjbGFzcyBTdGVuY2lsRGVzY3JpcHRvciogZnJvbnRGYWNlU3RlbmNpbCk7CisKKyAgICBjbGFz
cyBTdGVuY2lsRGVzY3JpcHRvciogICAgICAgICAgICAgYmFja0ZhY2VTdGVuY2lsKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJhY2tGYWNlU3Rl
bmNpbChjb25zdCBjbGFzcyBTdGVuY2lsRGVzY3JpcHRvciogYmFja0ZhY2VTdGVuY2lsKTsKKwor
ICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBO
Uzo6U3RyaW5nKiBsYWJlbCk7Cit9OworCitjbGFzcyBEZXB0aFN0ZW5jaWxTdGF0ZSA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8RGVwdGhTdGVuY2lsU3RhdGU+Cit7CitwdWJsaWM6CisgICAgTlM6
OlN0cmluZyogICBsYWJlbCgpIGNvbnN0OworCisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBj
b25zdDsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6U3RlbmNpbERlc2NyaXB0b3IqIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTdGVuY2lsRGVzY3JpcHRvcj4oX01U
TF9QUklWQVRFX0NMUyhNVExTdGVuY2lsRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6U3RlbmNpbERlc2NyaXB0b3IqIE1UTDo6U3RlbmNpbERlc2Ny
aXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U3RlbmNp
bERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGVuY2lsQ29tcGFyZUZ1bmN0aW9u
CitfTVRMX0lOTElORSBNVEw6OkNvbXBhcmVGdW5jdGlvbiBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9y
OjpzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkNvbXBhcmVGdW5jdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dGVuY2lsQ29tcGFyZUZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGVu
Y2lsRGVzY3JpcHRvcjo6c2V0U3RlbmNpbENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5j
dGlvbiBzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsQ29tcGFyZUZ1bmN0aW9uXyks
IHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogc3RlbmNpbEZhaWx1
cmVPcGVyYXRpb24KK19NVExfSU5MSU5FIE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBNVEw6OlN0ZW5j
aWxEZXNjcmlwdG9yOjpzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdGVuY2lsT3BlcmF0aW9uPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6c2V0U3RlbmNpbEZhaWx1cmVPcGVyYXRpb24o
TVRMOjpTdGVuY2lsT3BlcmF0aW9uIHN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2ls
RmFpbHVyZU9wZXJhdGlvbl8pLCBzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbik7Cit9CisKKy8vIHBy
b3BlcnR5OiBkZXB0aEZhaWx1cmVPcGVyYXRpb24KK19NVExfSU5MSU5FIE1UTDo6U3RlbmNpbE9w
ZXJhdGlvbiBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpkZXB0aEZhaWx1cmVPcGVyYXRpb24oKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RlbmNpbE9wZXJh
dGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXB0aEZhaWx1cmVPcGVyYXRpb24pKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0aEZhaWx1
cmVPcGVyYXRpb24oTVRMOjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoRmFpbHVyZU9wZXJhdGlvbikK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RGVwdGhGYWlsdXJlT3BlcmF0aW9uXyksIGRlcHRoRmFpbHVyZU9wZXJhdGlvbik7Cit9CisK
Ky8vIHByb3BlcnR5OiBkZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uCitfTVRMX0lOTElORSBNVEw6
OlN0ZW5jaWxPcGVyYXRpb24gTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhTdGVuY2lsUGFz
c09wZXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpTdGVuY2lsT3BlcmF0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRoU3RlbmNpbFBh
c3NPcGVyYXRpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlw
dG9yOjpzZXREZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBk
ZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uXyks
IGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24pOworfQorCisvLyBwcm9wZXJ0eTogcmVhZE1hc2sK
K19NVExfSU5MSU5FIHVpbnQzMl90IE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnJlYWRNYXNrKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50MzJfdD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChyZWFkTWFzaykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
U3RlbmNpbERlc2NyaXB0b3I6OnNldFJlYWRNYXNrKHVpbnQzMl90IHJlYWRNYXNrKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZWFk
TWFza18pLCByZWFkTWFzayk7Cit9CisKKy8vIHByb3BlcnR5OiB3cml0ZU1hc2sKK19NVExfSU5M
SU5FIHVpbnQzMl90IE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OndyaXRlTWFzaygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDMyX3Q+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwod3JpdGVNYXNrKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGVuY2ls
RGVzY3JpcHRvcjo6c2V0V3JpdGVNYXNrKHVpbnQzMl90IHdyaXRlTWFzaykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0V3JpdGVNYXNr
XyksIHdyaXRlTWFzayk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3IqIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRv
cjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkRlcHRoU3Rl
bmNpbERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRv
cikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RGVwdGhTdGVuY2ls
RGVzY3JpcHRvciogTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I+KCk7Cit9
CisKKy8vIHByb3BlcnR5OiBkZXB0aENvbXBhcmVGdW5jdGlvbgorX01UTF9JTkxJTkUgTVRMOjpD
b21wYXJlRnVuY3Rpb24gTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpkZXB0aENvbXBhcmVG
dW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpD
b21wYXJlRnVuY3Rpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhDb21wYXJlRnVuY3Rp
b24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6
OnNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKE1UTDo6Q29tcGFyZUZ1bmN0aW9uIGRlcHRoQ29tcGFy
ZUZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXREZXB0aENvbXBhcmVGdW5jdGlvbl8pLCBkZXB0aENvbXBhcmVGdW5jdGlv
bik7Cit9CisKKy8vIHByb3BlcnR5OiBkZXB0aFdyaXRlRW5hYmxlZAorX01UTF9JTkxJTkUgYm9v
bCBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoV3JpdGVFbmFibGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGlzRGVwdGhXcml0ZUVuYWJsZWQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRoV3JpdGVFbmFibGVkKGJvb2wgZGVwdGhX
cml0ZUVuYWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldERlcHRoV3JpdGVFbmFibGVkXyksIGRlcHRoV3JpdGVFbmFibGVkKTsK
K30KKworLy8gcHJvcGVydHk6IGZyb250RmFjZVN0ZW5jaWwKK19NVExfSU5MSU5FIE1UTDo6U3Rl
bmNpbERlc2NyaXB0b3IqIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZnJvbnRGYWNlU3Rl
bmNpbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdGVu
Y2lsRGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnJvbnRGYWNlU3RlbmNpbCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0
RnJvbnRGYWNlU3RlbmNpbChjb25zdCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yKiBmcm9udEZhY2VT
dGVuY2lsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRGcm9udEZhY2VTdGVuY2lsXyksIGZyb250RmFjZVN0ZW5jaWwpOworfQorCisv
LyBwcm9wZXJ0eTogYmFja0ZhY2VTdGVuY2lsCitfTVRMX0lOTElORSBNVEw6OlN0ZW5jaWxEZXNj
cmlwdG9yKiBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmJhY2tGYWNlU3RlbmNpbCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdGVuY2lsRGVzY3Jp
cHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYmFja0ZhY2VTdGVuY2lsKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRCYWNrRmFjZVN0
ZW5jaWwoY29uc3QgTVRMOjpTdGVuY2lsRGVzY3JpcHRvciogYmFja0ZhY2VTdGVuY2lsKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRC
YWNrRmFjZVN0ZW5jaWxfKSwgYmFja0ZhY2VTdGVuY2lsKTsKK30KKworLy8gcHJvcGVydHk6IGxh
YmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6
OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmlu
ZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitf
TVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkRlcHRoU3RlbmNpbFN0YXRlOjpsYWJlbCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01U
TF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6RGVwdGhTdGVuY2lsU3RhdGU6OmRldmljZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERldmljZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGV2aWNlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2QwZDc3NjRm
OTZkMjQ2MTA0MzU2NjMwNWE4MGFjN2JlZWU5NjZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERldmljZS5ocHAKQEAgLTAsMCArMSwx
MjU0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
CisvLyBNZXRhbC9NVExEZXZpY2UuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBs
ZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAi
TVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1
ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExBcmd1bWVudC5o
cHAiCisjaW5jbHVkZSAiTVRMRGV2aWNlLmhwcCIKKyNpbmNsdWRlICJNVExQaXhlbEZvcm1hdC5o
cHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBw
IgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlIDxJT1N1cmZhY2UvSU9TdXJmYWNl
UmVmLmg+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9F
TlVNKE5TOjpVSW50ZWdlciwgRmVhdHVyZVNldCkgeworICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZh
bWlseTFfdjEgPSAwLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTJfdjEgPSAxLAorICAg
IEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTFfdjIgPSAyLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQ
VUZhbWlseTJfdjIgPSAzLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTNfdjEgPSA0LAor
ICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTFfdjMgPSA1LAorICAgIEZlYXR1cmVTZXRfaU9T
X0dQVUZhbWlseTJfdjMgPSA2LAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTNfdjIgPSA3
LAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTFfdjQgPSA4LAorICAgIEZlYXR1cmVTZXRf
aU9TX0dQVUZhbWlseTJfdjQgPSA5LAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTNfdjMg
PSAxMCwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHk0X3YxID0gMTEsCisgICAgRmVhdHVy
ZVNldF9pT1NfR1BVRmFtaWx5MV92NSA9IDEyLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWls
eTJfdjUgPSAxMywKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkzX3Y0ID0gMTQsCisgICAg
RmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5NF92MiA9IDE1LAorICAgIEZlYXR1cmVTZXRfaU9TX0dQ
VUZhbWlseTVfdjEgPSAxNiwKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTFfdjEgPSAx
MDAwMCwKKyAgICBGZWF0dXJlU2V0X09TWF9HUFVGYW1pbHkxX3YxID0gMTAwMDAsCisgICAgRmVh
dHVyZVNldF9tYWNPU19HUFVGYW1pbHkxX3YyID0gMTAwMDEsCisgICAgRmVhdHVyZVNldF9PU1hf
R1BVRmFtaWx5MV92MiA9IDEwMDAxLAorICAgIEZlYXR1cmVTZXRfT1NYX1JlYWRXcml0ZVRleHR1
cmVUaWVyMiA9IDEwMDAyLAorICAgIEZlYXR1cmVTZXRfbWFjT1NfUmVhZFdyaXRlVGV4dHVyZVRp
ZXIyID0gMTAwMDIsCisgICAgRmVhdHVyZVNldF9tYWNPU19HUFVGYW1pbHkxX3YzID0gMTAwMDMs
CisgICAgRmVhdHVyZVNldF9tYWNPU19HUFVGYW1pbHkxX3Y0ID0gMTAwMDQsCisgICAgRmVhdHVy
ZVNldF9tYWNPU19HUFVGYW1pbHkyX3YxID0gMTAwMDUsCisgICAgRmVhdHVyZVNldF93YXRjaE9T
X0dQVUZhbWlseTFfdjEgPSAyMDAwMCwKKyAgICBGZWF0dXJlU2V0X1dhdGNoT1NfR1BVRmFtaWx5
MV92MSA9IDIwMDAwLAorICAgIEZlYXR1cmVTZXRfd2F0Y2hPU19HUFVGYW1pbHkyX3YxID0gMjAw
MDEsCisgICAgRmVhdHVyZVNldF9XYXRjaE9TX0dQVUZhbWlseTJfdjEgPSAyMDAwMSwKKyAgICBG
ZWF0dXJlU2V0X3R2T1NfR1BVRmFtaWx5MV92MSA9IDMwMDAwLAorICAgIEZlYXR1cmVTZXRfVFZP
U19HUFVGYW1pbHkxX3YxID0gMzAwMDAsCisgICAgRmVhdHVyZVNldF90dk9TX0dQVUZhbWlseTFf
djIgPSAzMDAwMSwKKyAgICBGZWF0dXJlU2V0X3R2T1NfR1BVRmFtaWx5MV92MyA9IDMwMDAyLAor
ICAgIEZlYXR1cmVTZXRfdHZPU19HUFVGYW1pbHkyX3YxID0gMzAwMDMsCisgICAgRmVhdHVyZVNl
dF90dk9TX0dQVUZhbWlseTFfdjQgPSAzMDAwNCwKKyAgICBGZWF0dXJlU2V0X3R2T1NfR1BVRmFt
aWx5Ml92MiA9IDMwMDA1LAorfTsKKworX01UTF9FTlVNKE5TOjpJbnRlZ2VyLCBHUFVGYW1pbHkp
IHsKKyAgICBHUFVGYW1pbHlBcHBsZTEgPSAxMDAxLAorICAgIEdQVUZhbWlseUFwcGxlMiA9IDEw
MDIsCisgICAgR1BVRmFtaWx5QXBwbGUzID0gMTAwMywKKyAgICBHUFVGYW1pbHlBcHBsZTQgPSAx
MDA0LAorICAgIEdQVUZhbWlseUFwcGxlNSA9IDEwMDUsCisgICAgR1BVRmFtaWx5QXBwbGU2ID0g
MTAwNiwKKyAgICBHUFVGYW1pbHlBcHBsZTcgPSAxMDA3LAorICAgIEdQVUZhbWlseUFwcGxlOCA9
IDEwMDgsCisgICAgR1BVRmFtaWx5TWFjMSA9IDIwMDEsCisgICAgR1BVRmFtaWx5TWFjMiA9IDIw
MDIsCisgICAgR1BVRmFtaWx5Q29tbW9uMSA9IDMwMDEsCisgICAgR1BVRmFtaWx5Q29tbW9uMiA9
IDMwMDIsCisgICAgR1BVRmFtaWx5Q29tbW9uMyA9IDMwMDMsCisgICAgR1BVRmFtaWx5TWFjQ2F0
YWx5c3QxID0gNDAwMSwKKyAgICBHUFVGYW1pbHlNYWNDYXRhbHlzdDIgPSA0MDAyLAorfTsKKwor
X01UTF9FTlVNKE5TOjpVSW50ZWdlciwgRGV2aWNlTG9jYXRpb24pIHsKKyAgICBEZXZpY2VMb2Nh
dGlvbkJ1aWx0SW4gPSAwLAorICAgIERldmljZUxvY2F0aW9uU2xvdCA9IDEsCisgICAgRGV2aWNl
TG9jYXRpb25FeHRlcm5hbCA9IDIsCisgICAgRGV2aWNlTG9jYXRpb25VbnNwZWNpZmllZCA9IE5T
OjpVSW50ZWdlck1heCwKK307CisKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIFBpcGVsaW5l
T3B0aW9uKSB7CisgICAgUGlwZWxpbmVPcHRpb25Ob25lID0gMCwKKyAgICBQaXBlbGluZU9wdGlv
bkFyZ3VtZW50SW5mbyA9IDEsCisgICAgUGlwZWxpbmVPcHRpb25CdWZmZXJUeXBlSW5mbyA9IDIs
CisgICAgUGlwZWxpbmVPcHRpb25GYWlsT25CaW5hcnlBcmNoaXZlTWlzcyA9IDQsCit9OworCitf
TVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBSZWFkV3JpdGVUZXh0dXJlVGllcikgeworICAgIFJlYWRX
cml0ZVRleHR1cmVUaWVyTm9uZSA9IDAsCisgICAgUmVhZFdyaXRlVGV4dHVyZVRpZXIxID0gMSwK
KyAgICBSZWFkV3JpdGVUZXh0dXJlVGllcjIgPSAyLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50
ZWdlciwgQXJndW1lbnRCdWZmZXJzVGllcikgeworICAgIEFyZ3VtZW50QnVmZmVyc1RpZXIxID0g
MCwKKyAgICBBcmd1bWVudEJ1ZmZlcnNUaWVyMiA9IDEsCit9OworCitfTVRMX0VOVU0oTlM6OlVJ
bnRlZ2VyLCBTcGFyc2VUZXh0dXJlUmVnaW9uQWxpZ25tZW50TW9kZSkgeworICAgIFNwYXJzZVRl
eHR1cmVSZWdpb25BbGlnbm1lbnRNb2RlT3V0d2FyZCA9IDAsCisgICAgU3BhcnNlVGV4dHVyZVJl
Z2lvbkFsaWdubWVudE1vZGVJbndhcmQgPSAxLAorfTsKKworc3RydWN0IEFjY2VsZXJhdGlvblN0
cnVjdHVyZVNpemVzCit7CisgICAgTlM6OlVJbnRlZ2VyIGFjY2VsZXJhdGlvblN0cnVjdHVyZVNp
emU7CisgICAgTlM6OlVJbnRlZ2VyIGJ1aWxkU2NyYXRjaEJ1ZmZlclNpemU7CisgICAgTlM6OlVJ
bnRlZ2VyIHJlZml0U2NyYXRjaEJ1ZmZlclNpemU7Cit9IF9NVExfUEFDS0VEOworCitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBDb3VudGVyU2FtcGxpbmdQb2ludCkgeworICAgIENvdW50ZXJTYW1w
bGluZ1BvaW50QXRTdGFnZUJvdW5kYXJ5ID0gMCwKKyAgICBDb3VudGVyU2FtcGxpbmdQb2ludEF0
RHJhd0JvdW5kYXJ5ID0gMSwKKyAgICBDb3VudGVyU2FtcGxpbmdQb2ludEF0RGlzcGF0Y2hCb3Vu
ZGFyeSA9IDIsCisgICAgQ291bnRlclNhbXBsaW5nUG9pbnRBdFRpbGVEaXNwYXRjaEJvdW5kYXJ5
ID0gMywKKyAgICBDb3VudGVyU2FtcGxpbmdQb2ludEF0QmxpdEJvdW5kYXJ5ID0gNCwKK307CisK
K3N0cnVjdCBTaXplQW5kQWxpZ24KK3sKKyAgICBOUzo6VUludGVnZXIgc2l6ZTsKKyAgICBOUzo6
VUludGVnZXIgYWxpZ247Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBBcmd1bWVudERlc2NyaXB0
b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QXJndW1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBBcmd1bWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFz
cyBBcmd1bWVudERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xhc3Mg
QXJndW1lbnREZXNjcmlwdG9yKiBhcmd1bWVudERlc2NyaXB0b3IoKTsKKworICAgIE1UTDo6RGF0
YVR5cGUgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGF0YVR5cGUoTVRMOjpEYXRhVHlwZSBkYXRhVHlw
ZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBpbmRleCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluZGV4KE5TOjpVSW50
ZWdlciBpbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBhcnJh
eUxlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdlciBhcnJheUxlbmd0aCk7CisKKyAgICBNVEw6OkFyZ3Vt
ZW50QWNjZXNzICAgICAgICAgICAgICBhY2Nlc3MoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRBY2Nlc3MoTVRMOjpBcmd1bWVudEFjY2VzcyBhY2Nlc3Mp
OworCisgICAgTVRMOjpUZXh0dXJlVHlwZSAgICAgICAgICAgICAgICAgdGV4dHVyZVR5cGUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXh0dXJlVHlw
ZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0YW50QmxvY2tBbGlnbm1lbnQoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudEJsb2NrQWxpZ25tZW50KE5T
OjpVSW50ZWdlciBjb25zdGFudEJsb2NrQWxpZ25tZW50KTsKK307CisKK3VzaW5nIERldmljZU5v
dGlmaWNhdGlvbk5hbWUgPSBOUzo6U3RyaW5nKjsKKworX01UTF9DT05TVChEZXZpY2VOb3RpZmlj
YXRpb25OYW1lLCBEZXZpY2VXYXNBZGRlZE5vdGlmaWNhdGlvbik7CisKK19NVExfQ09OU1QoRGV2
aWNlTm90aWZpY2F0aW9uTmFtZSwgRGV2aWNlUmVtb3ZhbFJlcXVlc3RlZE5vdGlmaWNhdGlvbik7
CisKK19NVExfQ09OU1QoRGV2aWNlTm90aWZpY2F0aW9uTmFtZSwgRGV2aWNlV2FzUmVtb3ZlZE5v
dGlmaWNhdGlvbik7CisKK3VzaW5nIERldmljZU5vdGlmaWNhdGlvbkhhbmRsZXJCbG9jayA9IHZv
aWQgKF4pKGNsYXNzIERldmljZSogcERldmljZSwgRGV2aWNlTm90aWZpY2F0aW9uTmFtZSBub3Rp
ZnlOYW1lKTsKKwordXNpbmcgRGV2aWNlTm90aWZpY2F0aW9uSGFuZGxlckZ1bmN0aW9uID0gc3Rk
OjpmdW5jdGlvbjx2b2lkKGNsYXNzIERldmljZSogcERldmljZSwgRGV2aWNlTm90aWZpY2F0aW9u
TmFtZSBub3RpZnlOYW1lKT47CisKK3VzaW5nIEF1dG9yZWxlYXNlZENvbXB1dGVQaXBlbGluZVJl
ZmxlY3Rpb24gPSBjbGFzcyBDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKjsKKwordXNpbmcgQXV0
b3JlbGVhc2VkUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uID0gY2xhc3MgUmVuZGVyUGlwZWxpbmVS
ZWZsZWN0aW9uKjsKKwordXNpbmcgTmV3TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyID0gdm9pZCAo
XikoY2xhc3MgTGlicmFyeSosIE5TOjpFcnJvciopOworCit1c2luZyBOZXdMaWJyYXJ5Q29tcGxl
dGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjbGFzcyBMaWJyYXJ5Kiwg
TlM6OkVycm9yKik+OworCit1c2luZyBOZXdSZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhh
bmRsZXIgPSB2b2lkICheKShjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiwgTlM6OkVycm9yKik7
CisKK3VzaW5nIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9u
ID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqLCBOUzo6RXJy
b3IqKT47CisKK3VzaW5nIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBs
ZXRpb25IYW5kbGVyID0gdm9pZCAoXikoY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSosIGNsYXNz
IFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiosIE5TOjpFcnJvciopOworCit1c2luZyBOZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uID0g
c3RkOjpmdW5jdGlvbjx2b2lkKGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqLCBjbGFzcyBSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb24qLCBOUzo6RXJyb3IqKT47CisKK3VzaW5nIE5ld0NvbXB1dGVQ
aXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXIgPSB2b2lkICheKShjbGFzcyBDb21wdXRlUGlw
ZWxpbmVTdGF0ZSosIE5TOjpFcnJvciopOworCit1c2luZyBOZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgQ29t
cHV0ZVBpcGVsaW5lU3RhdGUqLCBOUzo6RXJyb3IqKT47CisKK3VzaW5nIE5ld0NvbXB1dGVQaXBl
bGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciA9IHZvaWQgKF4pKGNsYXNz
IENvbXB1dGVQaXBlbGluZVN0YXRlKiwgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbios
IE5TOjpFcnJvciopOworCit1c2luZyBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0
aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjbGFzcyBD
b21wdXRlUGlwZWxpbmVTdGF0ZSosIGNsYXNzIENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qLCBO
Uzo6RXJyb3IqKT47CisKK3VzaW5nIFRpbWVzdGFtcCA9IHN0ZDo6dWludDY0X3Q7CisKK01UTDo6
RGV2aWNlKiBDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCk7CisKK05TOjpBcnJheSogICBDb3B5
QWxsRGV2aWNlcygpOworCitOUzo6QXJyYXkqICAgQ29weUFsbERldmljZXNXaXRoT2JzZXJ2ZXIo
TlM6Ok9iamVjdCoqIHBPdXRPYnNlcnZlciwgRGV2aWNlTm90aWZpY2F0aW9uSGFuZGxlckJsb2Nr
IGhhbmRsZXIpOworCitOUzo6QXJyYXkqICAgQ29weUFsbERldmljZXNXaXRoT2JzZXJ2ZXIoTlM6
Ok9iamVjdCoqIHBPdXRPYnNlcnZlciwgY29uc3QgRGV2aWNlTm90aWZpY2F0aW9uSGFuZGxlckZ1
bmN0aW9uJiBoYW5kbGVyKTsKKwordm9pZCAgICAgICAgIFJlbW92ZURldmljZU9ic2VydmVyKGNv
bnN0IE5TOjpPYmplY3QqIHBPYnNlcnZlcik7CisKK2NsYXNzIERldmljZSA6IHB1YmxpYyBOUzo6
UmVmZXJlbmNpbmc8RGV2aWNlPgoreworcHVibGljOgorICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBOUzo6U3RyaW5nKiBwU291cmNlLCBjb25zdCBj
bGFzcyBDb21waWxlT3B0aW9ucyogcE9wdGlvbnMsIGNvbnN0IE5ld0xpYnJhcnlDb21wbGV0aW9u
SGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3QgY2xhc3MgU3RpdGNoZWRMaWJyYXJ5
RGVzY3JpcHRvciogcERlc2NyaXB0b3IsIGNvbnN0IE1UTDo6TmV3TGlicmFyeUNvbXBsZXRpb25I
YW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBOZXdSZW5kZXJQaXBlbGlu
ZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZW5kZXJQaXBlbGluZVN0YXRl
KGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIFBpcGVs
aW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVj
dGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShj
b25zdCBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgUGlw
ZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZs
ZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogcEZ1bmN0aW9uLCBjb25zdCBOZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKTsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUoY29uc3QgY2xhc3MgRnVuY3Rpb24qIHBGdW5jdGlvbiwgUGlwZWxpbmVPcHRpb24gb3B0aW9u
cywgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25I
YW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIFBpcGVsaW5lT3B0aW9uIG9wdGlv
bnMsIGNvbnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9u
SGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzSGVhZGxlc3MoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcq
ICAgICAgICAgICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworCisgICAgdWludDY0X3QgICAgICAg
ICAgICAgICAgICAgICAgICByZWdpc3RyeUlEKCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemUgICAg
ICAgICAgICAgICAgICAgICAgIG1heFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0OworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3dQb3dlcigpIGNvbnN0OworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkbGVzcygpIGNvbnN0OworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmFibGUoKSBjb25zdDsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVW5pZmllZE1lbW9yeSgpIGNv
bnN0OworCisgICAgdWludDY0X3QgICAgICAgICAgICAgICAgICAgICAgICByZWNvbW1lbmRlZE1h
eFdvcmtpbmdTZXRTaXplKCkgY29uc3Q7CisKKyAgICBNVEw6OkRldmljZUxvY2F0aW9uICAgICAg
ICAgICAgIGxvY2F0aW9uKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgIGxvY2F0aW9uTnVtYmVyKCkgY29uc3Q7CisKKyAgICB1aW50NjRfdCAgICAgICAgICAg
ICAgICAgICAgICAgIG1heFRyYW5zZmVyUmF0ZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXB0aDI0U3RlbmNpbDhQaXhlbEZvcm1hdFN1cHBvcnRlZCgp
IGNvbnN0OworCisgICAgTVRMOjpSZWFkV3JpdGVUZXh0dXJlVGllciAgICAgICByZWFkV3JpdGVU
ZXh0dXJlU3VwcG9ydCgpIGNvbnN0OworCisgICAgTVRMOjpBcmd1bWVudEJ1ZmZlcnNUaWVyICAg
ICAgICBhcmd1bWVudEJ1ZmZlcnNTdXBwb3J0KCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJhc3Rlck9yZGVyR3JvdXBzU3VwcG9ydGVkKCkgY29uc3Q7CisK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzMzJCaXRGbG9hdEZp
bHRlcmluZygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dXBwb3J0czMyQml0TVNBQSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCgpIGNvbnN0OworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uKCkgY29u
c3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUHVsbE1v
ZGVsSW50ZXJwb2xhdGlvbigpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBvcnRlZCgpIGNvbnN0OworCisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1NoYWRlckJhcnljZW50cmljQ29vcmRp
bmF0ZXMoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgY3Vy
cmVudEFsbG9jYXRlZFNpemUoKSBjb25zdDsKKworICAgIGNsYXNzIENvbW1hbmRRdWV1ZSogICAg
ICAgICAgICAgbmV3Q29tbWFuZFF1ZXVlKCk7CisKKyAgICBjbGFzcyBDb21tYW5kUXVldWUqICAg
ICAgICAgICAgIG5ld0NvbW1hbmRRdWV1ZShOUzo6VUludGVnZXIgbWF4Q29tbWFuZEJ1ZmZlckNv
dW50KTsKKworICAgIE1UTDo6U2l6ZUFuZEFsaWduICAgICAgICAgICAgICAgaGVhcFRleHR1cmVT
aXplQW5kQWxpZ24oY29uc3QgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIGRlc2MpOworCisgICAg
TVRMOjpTaXplQW5kQWxpZ24gICAgICAgICAgICAgICBoZWFwQnVmZmVyU2l6ZUFuZEFsaWduKE5T
OjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpOworCisgICAg
Y2xhc3MgSGVhcCogICAgICAgICAgICAgICAgICAgICBuZXdIZWFwKGNvbnN0IGNsYXNzIEhlYXBE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAg
ICAgICAgbmV3QnVmZmVyKE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25z
IG9wdGlvbnMpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICBuZXdCdWZm
ZXIoY29uc3Qgdm9pZCogcG9pbnRlciwgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJj
ZU9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAg
IG5ld0J1ZmZlcihjb25zdCB2b2lkKiBwb2ludGVyLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6
OlJlc291cmNlT3B0aW9ucyBvcHRpb25zLCBjb25zdCB2b2lkICheZGVhbGxvY2F0b3IpKHZvaWQq
LCBOUzo6VUludGVnZXIpKTsKKworICAgIGNsYXNzIERlcHRoU3RlbmNpbFN0YXRlKiAgICAgICAg
bmV3RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgY2xhc3MgRGVwdGhTdGVuY2lsRGVzY3JpcHRvciog
ZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgICAgIG5ld1Rl
eHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAg
Y2xhc3MgVGV4dHVyZSogICAgICAgICAgICAgICAgICBuZXdUZXh0dXJlKGNvbnN0IGNsYXNzIFRl
eHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBJT1N1cmZhY2VSZWYgaW9zdXJmYWNl
LCBOUzo6VUludGVnZXIgcGxhbmUpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgICAg
ICAgICBuZXdTaGFyZWRUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNj
cmlwdG9yKTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICAgICAgbmV3U2hhcmVk
VGV4dHVyZShjb25zdCBjbGFzcyBTaGFyZWRUZXh0dXJlSGFuZGxlKiBzaGFyZWRIYW5kbGUpOwor
CisgICAgY2xhc3MgU2FtcGxlclN0YXRlKiAgICAgICAgICAgICBuZXdTYW1wbGVyU3RhdGUoY29u
c3QgY2xhc3MgU2FtcGxlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgTGli
cmFyeSogICAgICAgICAgICAgICAgICBuZXdEZWZhdWx0TGlicmFyeSgpOworCisgICAgY2xhc3Mg
TGlicmFyeSogICAgICAgICAgICAgICAgICBuZXdEZWZhdWx0TGlicmFyeShjb25zdCBOUzo6QnVu
ZGxlKiBidW5kbGUsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGNsYXNzIExpYnJhcnkqICAg
ICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBOUzo6U3RyaW5nKiBmaWxlcGF0aCwgTlM6
OkVycm9yKiogZXJyb3IpOworCisgICAgY2xhc3MgTGlicmFyeSogICAgICAgICAgICAgICAgICBu
ZXdMaWJyYXJ5KGNvbnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAg
Y2xhc3MgTGlicmFyeSogICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IGRpc3BhdGNo
X2RhdGFfdCBkYXRhLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAg
ICAgICAgICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogc291cmNlLCBjb25z
dCBjbGFzcyBDb21waWxlT3B0aW9ucyogb3B0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IE5TOjpT
dHJpbmcqIHNvdXJjZSwgY29uc3QgY2xhc3MgQ29tcGlsZU9wdGlvbnMqIG9wdGlvbnMsIGNvbnN0
IE1UTDo6TmV3TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKTsKKwor
ICAgIGNsYXNzIExpYnJhcnkqICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBjbGFz
cyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJv
cik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpYnJhcnkoY29u
c3QgY2xhc3MgU3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgTVRM
OjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAg
Y2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSogICAgICBuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNv
bnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9y
KiogZXJyb3IpOworCisgICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSogICAgICBuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVz
Y3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6OkF1dG9yZWxl
YXNlZFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgTlM6OkVycm9yKiogZXJy
b3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZW5kZXJQaXBl
bGluZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRv
ciwgY29uc3QgTVRMOjpOZXdSZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXIgY29t
cGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciogZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6Ok5l
d1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIGNvbXBs
ZXRpb25IYW5kbGVyKTsKKworICAgIGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiAgICAgbmV3
Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgRnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlv
biwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUq
ICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogY29tcHV0
ZUZ1bmN0aW9uLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6QXV0b3Jl
bGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgTlM6OkVycm9yKiog
ZXJyb3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBjb25z
dCBNVEw6Ok5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBN
VEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5l
U3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKTsK
KworICAgIGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiAgICAgbmV3Q29tcHV0ZVBpcGVsaW5l
U3RhdGUoY29uc3QgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwg
TVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6OkF1dG9yZWxlYXNlZENvbXB1
dGVQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKTsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUoY29uc3QgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTVRM
OjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6Ok5ld0NvbXB1dGVQaXBlbGluZVN0
YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisK
KyAgICBjbGFzcyBGZW5jZSogICAgICAgICAgICAgICAgICAgIG5ld0ZlbmNlKCk7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRmVhdHVyZVNldChNVEw6OkZl
YXR1cmVTZXQgZmVhdHVyZVNldCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1cHBvcnRzRmFtaWx5KE1UTDo6R1BVRmFtaWx5IGdwdUZhbWlseSk7CisKKyAgICBib29s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzVGV4dHVyZVNhbXBsZUNvdW50KE5T
OjpVSW50ZWdlciBzYW1wbGVDb3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgIG1pbmltdW1MaW5lYXJUZXh0dXJlQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXQoTVRMOjpQ
aXhlbEZvcm1hdCBmb3JtYXQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICBtaW5pbXVtVGV4dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxG
b3JtYXQgZm9ybWF0KTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqICAgICAgbmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6
QXV0b3JlbGVhc2VkUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJy
b3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Jl
bmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciogZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6Ok5l
d1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIGNvbXBs
ZXRpb25IYW5kbGVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWF4
VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICAgICAgbWF4QXJndW1lbnRCdWZmZXJTYW1wbGVyQ291bnQoKSBjb25zdDsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbW1hYmxlU2FtcGxlUG9z
aXRpb25zU3VwcG9ydGVkKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdldERlZmF1bHRTYW1wbGVQb3NpdGlvbnMoTVRMOjpTYW1wbGVQb3NpdGlvbiogcG9z
aXRpb25zLCBOUzo6VUludGVnZXIgY291bnQpOworCisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVy
KiAgICAgICAgICBuZXdBcmd1bWVudEVuY29kZXIoY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMp
OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1Jhc3Rlcml6
YXRpb25SYXRlTWFwKE5TOjpVSW50ZWdlciBsYXllckNvdW50KTsKKworICAgIGNsYXNzIFJhc3Rl
cml6YXRpb25SYXRlTWFwKiAgICAgbmV3UmFzdGVyaXphdGlvblJhdGVNYXAoY29uc3QgY2xhc3Mg
UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNz
IEluZGlyZWN0Q29tbWFuZEJ1ZmZlciogICAgbmV3SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0
IGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpV
SW50ZWdlciBtYXhDb3VudCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICBj
bGFzcyBFdmVudCogICAgICAgICAgICAgICAgICAgIG5ld0V2ZW50KCk7CisKKyAgICBjbGFzcyBT
aGFyZWRFdmVudCogICAgICAgICAgICAgIG5ld1NoYXJlZEV2ZW50KCk7CisKKyAgICBjbGFzcyBT
aGFyZWRFdmVudCogICAgICAgICAgICAgIG5ld1NoYXJlZEV2ZW50KGNvbnN0IGNsYXNzIFNoYXJl
ZEV2ZW50SGFuZGxlKiBzaGFyZWRFdmVudEhhbmRsZSk7CisKKyAgICB1aW50NjRfdCAgICAgICAg
ICAgICAgICAgICAgICAgIHBlZXJHcm91cElEKCkgY29uc3Q7CisKKyAgICB1aW50MzJfdCAgICAg
ICAgICAgICAgICAgICAgICAgIHBlZXJJbmRleCgpIGNvbnN0OworCisgICAgdWludDMyX3QgICAg
ICAgICAgICAgICAgICAgICAgICBwZWVyQ291bnQoKSBjb25zdDsKKworICAgIE1UTDo6U2l6ZSAg
ICAgICAgICAgICAgICAgICAgICAgc3BhcnNlVGlsZVNpemUoTVRMOjpUZXh0dXJlVHlwZSB0ZXh0
dXJlVHlwZSwgTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHNhbXBs
ZUNvdW50KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgc3BhcnNlVGls
ZVNpemVJbkJ5dGVzKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnZlcnRTcGFyc2VQaXhlbFJlZ2lvbnMoY29uc3QgTVRMOjpSZWdpb24qIHBpeGVsUmVn
aW9ucywgTVRMOjpSZWdpb24qIHRpbGVSZWdpb25zLCBNVEw6OlNpemUgdGlsZVNpemUsIE1UTDo6
U3BhcnNlVGV4dHVyZVJlZ2lvbkFsaWdubWVudE1vZGUgbW9kZSwgTlM6OlVJbnRlZ2VyIG51bVJl
Z2lvbnMpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0U3Bh
cnNlVGlsZVJlZ2lvbnMoY29uc3QgTVRMOjpSZWdpb24qIHRpbGVSZWdpb25zLCBNVEw6OlJlZ2lv
biogcGl4ZWxSZWdpb25zLCBNVEw6OlNpemUgdGlsZVNpemUsIE5TOjpVSW50ZWdlciBudW1SZWdp
b25zKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWF4QnVmZmVyTGVu
Z3RoKCkgY29uc3Q7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgIGNvdW50
ZXJTZXRzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiAgICAgIG5l
d0NvdW50ZXJTYW1wbGVCdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlckRlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2FtcGxlVGltZXN0YW1wcyhNVEw6OlRpbWVzdGFtcCogY3B1
VGltZXN0YW1wLCBNVEw6OlRpbWVzdGFtcCogZ3B1VGltZXN0YW1wKTsKKworICAgIGJvb2wgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNDb3VudGVyU2FtcGxpbmcoTVRMOjpDb3Vu
dGVyU2FtcGxpbmdQb2ludCBzYW1wbGluZ1BvaW50KTsKKworICAgIGJvb2wgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3VwcG9ydHNWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQoTlM6OlVJbnRl
Z2VyIGNvdW50KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9y
dHNEeW5hbWljTGlicmFyaWVzKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1cHBvcnRzUmVuZGVyRHluYW1pY0xpYnJhcmllcygpIGNvbnN0OworCisgICAg
Y2xhc3MgRHluYW1pY0xpYnJhcnkqICAgICAgICAgICBuZXdEeW5hbWljTGlicmFyeShjb25zdCBj
bGFzcyBMaWJyYXJ5KiBsaWJyYXJ5LCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBE
eW5hbWljTGlicmFyeSogICAgICAgICAgIG5ld0R5bmFtaWNMaWJyYXJ5KGNvbnN0IE5TOjpVUkwq
IHVybCwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgY2xhc3MgQmluYXJ5QXJjaGl2ZSogICAg
ICAgICAgICBuZXdCaW5hcnlBcmNoaXZlKGNvbnN0IGNsYXNzIEJpbmFyeUFyY2hpdmVEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUmF5dHJhY2luZygpIGNvbnN0OworCisgICAgTVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplcyBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplcyhj
b25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsK
KworICAgIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogICAgbmV3QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlKE5TOjpVSW50ZWdlciBzaXplKTsKKworICAgIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZSogICAgbmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnMoKSBjb25zdDsKKworICAg
IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJz
RnJvbVJlbmRlcigpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdXBwb3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyKCkgY29uc3Q7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUHJpbWl0aXZlTW90aW9uQmx1cigpIGNvbnN0
OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpB
cmd1bWVudERlc2NyaXB0b3IqIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QXJndW1lbnREZXNjcmlwdG9yPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTEFyZ3VtZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yKiBNVEw6OkFyZ3VtZW50RGVz
Y3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBcmd1
bWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFyZ3VtZW50RGVzY3Jp
cHRvcgorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudERlc2NyaXB0b3IqIE1UTDo6QXJndW1lbnRE
ZXNjcmlwdG9yOjphcmd1bWVudERlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6QXJndW1lbnREZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExB
cmd1bWVudERlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50RGVzY3JpcHRvcikp
OworfQorCisvLyBwcm9wZXJ0eTogZGF0YVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUg
TVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OmRhdGFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGRhdGFUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudERlc2NyaXB0
b3I6OnNldERhdGFUeXBlKE1UTDo6RGF0YVR5cGUgZGF0YVR5cGUpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERhdGFUeXBlXyksIGRh
dGFUeXBlKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OmluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
aW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6
c2V0SW5kZXgoTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleF8pLCBpbmRleCk7Cit9CisKKy8v
IHByb3BlcnR5OiBhcnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJn
dW1lbnREZXNjcmlwdG9yOjphcnJheUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFycmF5
TGVuZ3RoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6
OnNldEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdlciBhcnJheUxlbmd0aCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QXJyYXlMZW5ndGhf
KSwgYXJyYXlMZW5ndGgpOworfQorCisvLyBwcm9wZXJ0eTogYWNjZXNzCitfTVRMX0lOTElORSBN
VEw6OkFyZ3VtZW50QWNjZXNzIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjphY2Nlc3MoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRBY2Nlc3M+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWNjZXNzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OnNldEFjY2VzcyhNVEw6OkFyZ3VtZW50QWNjZXNzIGFj
Y2VzcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0QWNjZXNzXyksIGFjY2Vzcyk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlVHlw
ZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlVHlwZSBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6
dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZVR5cGUpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0VGV4dHVyZVR5
cGUoTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGV4dHVyZVR5cGVfKSwgdGV4dHVy
ZVR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogY29uc3RhbnRCbG9ja0FsaWdubWVudAorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjpjb25zdGFudEJsb2Nr
QWxpZ25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29uc3RhbnRCbG9ja0FsaWdubWVudCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjpzZXRDb25z
dGFudEJsb2NrQWxpZ25tZW50KE5TOjpVSW50ZWdlciBjb25zdGFudEJsb2NrQWxpZ25tZW50KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRDb25zdGFudEJsb2NrQWxpZ25tZW50XyksIGNvbnN0YW50QmxvY2tBbGlnbm1lbnQpOworfQor
CisjaWYgZGVmaW5lZChNVExfUFJJVkFURV9JTVBMRU1FTlRBVElPTikKKworZXh0ZXJuICJDIiBN
VEw6OkRldmljZSogTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOworCitleHRlcm4gIkMi
IE5TOjpBcnJheSogICBNVExDb3B5QWxsRGV2aWNlcygpOworCitleHRlcm4gIkMiIE5TOjpBcnJh
eSogICBNVExDb3B5QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiosIE1UTDo6RGV2
aWNlTm90aWZpY2F0aW9uSGFuZGxlckJsb2NrKTsKKworZXh0ZXJuICJDIiB2b2lkICAgICAgICAg
TVRMUmVtb3ZlRGV2aWNlT2JzZXJ2ZXIoY29uc3QgTlM6Ok9iamVjdCopOworCisjaW5jbHVkZSA8
VGFyZ2V0Q29uZGl0aW9uYWxzLmg+CisKK01UTDo6RGV2aWNlKiBNVEw6OkNyZWF0ZVN5c3RlbURl
ZmF1bHREZXZpY2UoKQoreworICAgIHJldHVybiA6Ok1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZp
Y2UoKTsKK30KKworTlM6OkFycmF5KiBNVEw6OkNvcHlBbGxEZXZpY2VzKCkKK3sKKyNpZiBUQVJH
RVRfT1NfT1NYCisgICAgcmV0dXJuIDo6TVRMQ29weUFsbERldmljZXMoKTsKKyNlbHNlCisgICAg
cmV0dXJuIG51bGxwdHI7CisjZW5kaWYgLy8gVEFSR0VUX09TX09TWAorfQorCitOUzo6QXJyYXkq
IE1UTDo6Q29weUFsbERldmljZXNXaXRoT2JzZXJ2ZXIoTlM6Ok9iamVjdCoqIHBPdXRPYnNlcnZl
ciwgRGV2aWNlTm90aWZpY2F0aW9uSGFuZGxlckJsb2NrIGhhbmRsZXIpCit7CisjaWYgVEFSR0VU
X09TX09TWAorICAgIHJldHVybiA6Ok1UTENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKHBPdXRP
YnNlcnZlciwgaGFuZGxlcik7CisjZWxzZQorICAgICh2b2lkKXBPdXRPYnNlcnZlcjsKKyAgICAo
dm9pZCloYW5kbGVyOworCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYgLy8gVEFSR0VUX09T
X09TWAorfQorCitOUzo6QXJyYXkqIE1UTDo6Q29weUFsbERldmljZXNXaXRoT2JzZXJ2ZXIoTlM6
Ok9iamVjdCoqIHBPdXRPYnNlcnZlciwgY29uc3QgRGV2aWNlTm90aWZpY2F0aW9uSGFuZGxlckZ1
bmN0aW9uJiBoYW5kbGVyKQoreworICAgIF9fYmxvY2sgRGV2aWNlTm90aWZpY2F0aW9uSGFuZGxl
ckZ1bmN0aW9uIGZ1bmN0aW9uID0gaGFuZGxlcjsKKworICAgIHJldHVybiBDb3B5QWxsRGV2aWNl
c1dpdGhPYnNlcnZlcihwT3V0T2JzZXJ2ZXIsIF4oRGV2aWNlKiBwRGV2aWNlLCBEZXZpY2VOb3Rp
ZmljYXRpb25OYW1lIHBOb3RpZmljYXRpb25OYW1lKSB7IGZ1bmN0aW9uKHBEZXZpY2UsIHBOb3Rp
ZmljYXRpb25OYW1lKTsgfSk7Cit9CisKK3ZvaWQgTVRMOjpSZW1vdmVEZXZpY2VPYnNlcnZlcihj
b25zdCBOUzo6T2JqZWN0KiBwT2JzZXJ2ZXIpCit7CisjaWYgVEFSR0VUX09TX09TWAorICAgIDo6
TVRMUmVtb3ZlRGV2aWNlT2JzZXJ2ZXIocE9ic2VydmVyKTsKKyNlbmRpZiAvLyBUQVJHRVRfT1Nf
T1NYCit9CisKKyNlbmRpZiAvLyBNVExfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IE5TOjpTdHJpbmcqIHBTb3Vy
Y2UsIGNvbnN0IENvbXBpbGVPcHRpb25zKiBwT3B0aW9ucywgY29uc3QgTmV3TGlicmFyeUNvbXBs
ZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sg
TmV3TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxl
ciA9IGNvbXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3TGlicmFyeShwU291cmNlLCBwT3B0aW9u
cywgXihMaWJyYXJ5KiBwTGlicmFyeSwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0
aW9uSGFuZGxlcihwTGlicmFyeSwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpEZXZpY2U6Om5ld0xpYnJhcnkoY29uc3QgY2xhc3MgU3RpdGNoZWRMaWJyYXJ5RGVzY3Jp
cHRvciogcERlc2NyaXB0b3IsIGNvbnN0IE1UTDo6TmV3TGlicmFyeUNvbXBsZXRpb25IYW5kbGVy
RnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sgTmV3TGlicmFyeUNv
bXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRp
b25IYW5kbGVyOworCisgICAgbmV3TGlicmFyeShwRGVzY3JpcHRvciwgXihMaWJyYXJ5KiBwTGli
cmFyeSwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwTGlicmFy
eSwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld1Jl
bmRlclBpcGVsaW5lU3RhdGUoY29uc3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3Jp
cHRvciwgY29uc3QgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rp
b24mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sgTmV3UmVuZGVyUGlwZWxpbmVT
dGF0ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNv
bXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShwRGVzY3JpcHRv
ciwgXihSZW5kZXJQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgTlM6OkVycm9yKiBwRXJy
b3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcEVycm9yKTsgfSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3Rh
dGUoY29uc3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgUGlwZWxpbmVP
cHRpb24gb3B0aW9ucywgY29uc3QgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9u
Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgX19i
bG9jayBOZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxl
ckZ1bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKKwor
ICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUocERlc2NyaXB0b3IsIG9wdGlvbnMsIF4oUmVuZGVy
UGlwZWxpbmVTdGF0ZSogcFBpcGVsaW5lU3RhdGUsIGNsYXNzIFJlbmRlclBpcGVsaW5lUmVmbGVj
dGlvbiogcFJlZmxlY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhh
bmRsZXIocFBpcGVsaW5lU3RhdGUsIHBSZWZsZWN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgUGlwZWxpbmVPcHRpb24g
b3B0aW9ucywgY29uc3QgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxl
dGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBO
ZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0
aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKKworICAgIG5l
d1JlbmRlclBpcGVsaW5lU3RhdGUocERlc2NyaXB0b3IsIG9wdGlvbnMsIF4oUmVuZGVyUGlwZWxp
bmVTdGF0ZSogcFBpcGVsaW5lU3RhdGUsIGNsYXNzIFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiog
cFJlZmxlY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIo
cFBpcGVsaW5lU3RhdGUsIHBSZWZsZWN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3Mg
RnVuY3Rpb24qIHBGdW5jdGlvbiwgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21wbGV0
aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5l
d0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9ja0NvbXBs
ZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZShwRnVuY3Rpb24sIF4oQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBQaXBlbGluZVN0YXRl
LCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBQaXBlbGluZVN0
YXRlLCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3
Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgRnVuY3Rpb24qIHBGdW5jdGlvbiwgUGlwZWxpbmVP
cHRpb24gb3B0aW9ucywgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlv
bkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9f
YmxvY2sgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5k
bGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOwor
CisgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUocEZ1bmN0aW9uLCBvcHRpb25zLCBeKENvbXB1
dGVQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlv
biogcFJlZmxlY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhhbmRs
ZXIocFBpcGVsaW5lU3RhdGUsIHBSZWZsZWN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIFBpcGVsaW5lT3B0aW9uIG9wdGlv
bnMsIGNvbnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9u
SGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld0Nv
bXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9u
IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKKworICAgIG5ld0Nv
bXB1dGVQaXBlbGluZVN0YXRlKHBEZXNjcmlwdG9yLCBvcHRpb25zLCBeKENvbXB1dGVQaXBlbGlu
ZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogcFJlZmxl
Y3Rpb24sIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIocFBpcGVs
aW5lU3RhdGUsIHBSZWZsZWN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUgYm9v
bCBNVEw6OkRldmljZTo6aXNIZWFkbGVzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhlYWRsZXNz
KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6
OkRldmljZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogcmVnaXN0cnlJRAorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpEZXZpY2U6OnJlZ2lz
dHJ5SUQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQ2NF90
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlZ2lzdHJ5SUQpKTsKK30KKworLy8gcHJvcGVydHk6
IG1heFRocmVhZHNQZXJUaHJlYWRncm91cAorX01UTF9JTkxJTkUgTVRMOjpTaXplIE1UTDo6RGV2
aWNlOjptYXhUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhUaHJl
YWRzUGVyVGhyZWFkZ3JvdXApKTsKK30KKworLy8gcHJvcGVydHk6IGxvd1Bvd2VyCitfTVRMX0lO
TElORSBib29sIE1UTDo6RGV2aWNlOjpsb3dQb3dlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0xvd1Bvd2Vy
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBoZWFkbGVzcworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRl
dmljZTo6aGVhZGxlc3MoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNIZWFkbGVzcykpOworfQorCisvLyBwcm9w
ZXJ0eTogcmVtb3ZhYmxlCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpyZW1vdmFibGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaXNSZW1vdmFibGUpKTsKK30KKworLy8gcHJvcGVydHk6IGhhc1VuaWZp
ZWRNZW1vcnkKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6Omhhc1VuaWZpZWRNZW1vcnko
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaGFzVW5pZmllZE1lbW9yeSkpOworfQorCisvLyBwcm9wZXJ0eTogcmVj
b21tZW5kZWRNYXhXb3JraW5nU2V0U2l6ZQorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpEZXZp
Y2U6OnJlY29tbWVuZGVkTWF4V29ya2luZ1NldFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQ2NF90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlY29t
bWVuZGVkTWF4V29ya2luZ1NldFNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IGxvY2F0aW9uCitf
TVRMX0lOTElORSBNVEw6OkRldmljZUxvY2F0aW9uIE1UTDo6RGV2aWNlOjpsb2NhdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2VMb2NhdGlv
bj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsb2NhdGlvbikpOworfQorCisvLyBwcm9wZXJ0eTog
bG9jYXRpb25OdW1iZXIKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6bG9j
YXRpb25OdW1iZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsb2NhdGlvbk51bWJlcikpOworfQor
CisvLyBwcm9wZXJ0eTogbWF4VHJhbnNmZXJSYXRlCitfTVRMX0lOTElORSB1aW50NjRfdCBNVEw6
OkRldmljZTo6bWF4VHJhbnNmZXJSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx1aW50NjRfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhUcmFuc2ZlclJh
dGUpKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9y
dGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpkZXB0aDI0U3RlbmNpbDhQaXhlbEZv
cm1hdFN1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VT
YWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNEZXB0aDI0U3RlbmNpbDhQaXhlbEZv
cm1hdFN1cHBvcnRlZCkpOworfQorCisvLyBwcm9wZXJ0eTogcmVhZFdyaXRlVGV4dHVyZVN1cHBv
cnQKK19NVExfSU5MSU5FIE1UTDo6UmVhZFdyaXRlVGV4dHVyZVRpZXIgTVRMOjpEZXZpY2U6OnJl
YWRXcml0ZVRleHR1cmVTdXBwb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlJlYWRXcml0ZVRleHR1cmVUaWVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHJlYWRXcml0ZVRleHR1cmVTdXBwb3J0KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhcmd1bWVudEJ1
ZmZlcnNTdXBwb3J0CitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50QnVmZmVyc1RpZXIgTVRMOjpE
ZXZpY2U6OmFyZ3VtZW50QnVmZmVyc1N1cHBvcnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRCdWZmZXJzVGllcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChhcmd1bWVudEJ1ZmZlcnNTdXBwb3J0KSk7Cit9CisKKy8vIHByb3BlcnR5OiByYXN0
ZXJPcmRlckdyb3Vwc1N1cHBvcnRlZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6cmFz
dGVyT3JkZXJHcm91cHNTdXBwb3J0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZVJhc3Rlck9yZGVy
R3JvdXBzU3VwcG9ydGVkKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0czMyQml0RmxvYXRG
aWx0ZXJpbmcKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzMzJCaXRGbG9h
dEZpbHRlcmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5n
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0czMyQml0TVNBQQorX01UTF9JTkxJTkUgYm9v
bCBNVEw6OkRldmljZTo6c3VwcG9ydHMzMkJpdE1TQUEoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBv
cnRzMzJCaXRNU0FBKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxP
RAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNRdWVyeVRleHR1cmVMT0Qo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzUXVlcnlUZXh0dXJlTE9EKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uCitfTVRMX0lOTElORSBib29sIE1U
TDo6RGV2aWNlOjpzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBw
b3J0c1B1bGxNb2RlbEludGVycG9sYXRpb24KK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6
OnN1cHBvcnRzUHVsbE1vZGVsSW50ZXJwb2xhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9y
dHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9uKSk7Cit9CisKKy8vIHByb3BlcnR5OiBiYXJ5Y2VudHJp
Y0Nvb3Jkc1N1cHBvcnRlZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6YmFyeWNlbnRy
aWNDb29yZHNTdXBwb3J0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZUJhcnljZW50cmljQ29vcmRz
U3VwcG9ydGVkKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c1NoYWRlckJhcnljZW50cmlj
Q29vcmRpbmF0ZXMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzU2hhZGVy
QmFyeWNlbnRyaWNDb29yZGluYXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNTaGFkZXJC
YXJ5Y2VudHJpY0Nvb3JkaW5hdGVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjdXJyZW50QWxsb2Nh
dGVkU2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2aWNlOjpjdXJyZW50QWxs
b2NhdGVkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGN1cnJlbnRBbGxvY2F0ZWRTaXplKSk7
Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tbWFuZFF1ZXVlCitfTVRMX0lOTElORSBNVEw6OkNvbW1h
bmRRdWV1ZSogTVRMOjpEZXZpY2U6Om5ld0NvbW1hbmRRdWV1ZSgpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0NvbW1hbmRRdWV1ZSkpOworfQorCisvLyBtZXRob2Q6IG5ld0NvbW1hbmRRdWV1ZVdp
dGhNYXhDb21tYW5kQnVmZmVyQ291bnQ6CitfTVRMX0lOTElORSBNVEw6OkNvbW1hbmRRdWV1ZSog
TVRMOjpEZXZpY2U6Om5ld0NvbW1hbmRRdWV1ZShOUzo6VUludGVnZXIgbWF4Q29tbWFuZEJ1ZmZl
ckNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZFF1
ZXVlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21tYW5kUXVldWVXaXRoTWF4Q29tbWFu
ZEJ1ZmZlckNvdW50XyksIG1heENvbW1hbmRCdWZmZXJDb3VudCk7Cit9CisKKy8vIG1ldGhvZDog
aGVhcFRleHR1cmVTaXplQW5kQWxpZ25XaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6
U2l6ZUFuZEFsaWduIE1UTDo6RGV2aWNlOjpoZWFwVGV4dHVyZVNpemVBbmRBbGlnbihjb25zdCBN
VEw6OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNjKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6U2l6ZUFuZEFsaWduPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhlYXBUZXh0
dXJlU2l6ZUFuZEFsaWduV2l0aERlc2NyaXB0b3JfKSwgZGVzYyk7Cit9CisKKy8vIG1ldGhvZDog
aGVhcEJ1ZmZlclNpemVBbmRBbGlnbldpdGhMZW5ndGg6b3B0aW9uczoKK19NVExfSU5MSU5FIE1U
TDo6U2l6ZUFuZEFsaWduIE1UTDo6RGV2aWNlOjpoZWFwQnVmZmVyU2l6ZUFuZEFsaWduKE5TOjpV
SW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplQW5kQWxpZ24+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoaGVhcEJ1ZmZlclNpemVBbmRBbGlnbldpdGhMZW5ndGhfb3B0aW9uc18pLCBsZW5n
dGgsIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IG5ld0hlYXBXaXRoRGVzY3JpcHRvcjoKK19N
VExfSU5MSU5FIE1UTDo6SGVhcCogTVRMOjpEZXZpY2U6Om5ld0hlYXAoY29uc3QgTVRMOjpIZWFw
RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkhlYXAqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0hlYXBXaXRoRGVzY3JpcHRv
cl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdCdWZmZXJXaXRoTGVuZ3RoOm9w
dGlvbnM6CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpEZXZpY2U6Om5ld0J1ZmZlcihO
Uzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdCdWZmZXJXaXRoTGVuZ3RoX29wdGlvbnNfKSwgbGVuZ3RoLCBvcHRpb25zKTsK
K30KKworLy8gbWV0aG9kOiBuZXdCdWZmZXJXaXRoQnl0ZXM6bGVuZ3RoOm9wdGlvbnM6CitfTVRM
X0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpEZXZpY2U6Om5ld0J1ZmZlcihjb25zdCB2b2lkKiBw
b2ludGVyLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25z
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChuZXdCdWZmZXJXaXRoQnl0ZXNfbGVuZ3RoX29wdGlvbnNfKSwgcG9p
bnRlciwgbGVuZ3RoLCBvcHRpb25zKTsKK30KKworLy8gbWV0aG9kOiBuZXdCdWZmZXJXaXRoQnl0
ZXNOb0NvcHk6bGVuZ3RoOm9wdGlvbnM6ZGVhbGxvY2F0b3I6CitfTVRMX0lOTElORSBNVEw6OkJ1
ZmZlciogTVRMOjpEZXZpY2U6Om5ld0J1ZmZlcihjb25zdCB2b2lkKiBwb2ludGVyLCBOUzo6VUlu
dGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zLCBjb25zdCB2b2lkIChe
ZGVhbGxvY2F0b3IpKHZvaWQqLCBOUzo6VUludGVnZXIpKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdCdWZm
ZXJXaXRoQnl0ZXNOb0NvcHlfbGVuZ3RoX29wdGlvbnNfZGVhbGxvY2F0b3JfKSwgcG9pbnRlciwg
bGVuZ3RoLCBvcHRpb25zLCBkZWFsbG9jYXRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3RGVwdGhT
dGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6RGVwdGhTdGVuY2ls
U3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBNVEw6OkRlcHRo
U3RlbmNpbERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpEZXB0aFN0ZW5jaWxTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmV3RGVwdGhTdGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKwor
Ly8gbWV0aG9kOiBuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlRl
eHR1cmUqIE1UTDo6RGV2aWNlOjpuZXdUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0
b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpU
ZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3Jf
KSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9y
Omlvc3VyZmFjZTpwbGFuZToKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpEZXZpY2U6
Om5ld1RleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29u
c3QgSU9TdXJmYWNlUmVmIGlvc3VyZmFjZSwgTlM6OlVJbnRlZ2VyIHBsYW5lKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yX2lvc3VyZmFjZV9wbGFuZV8pLCBkZXNjcmlw
dG9yLCBpb3N1cmZhY2UsIHBsYW5lKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRUZXh0dXJl
V2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6RGV2aWNlOjpu
ZXdTaGFyZWRUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3Ip
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChuZXdTaGFyZWRUZXh0dXJlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3Jp
cHRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkVGV4dHVyZVdpdGhIYW5kbGU6CitfTVRM
X0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6RGV2aWNlOjpuZXdTaGFyZWRUZXh0dXJlKGNvbnN0
IE1UTDo6U2hhcmVkVGV4dHVyZUhhbmRsZSogc2hhcmVkSGFuZGxlKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmV3U2hhcmVkVGV4dHVyZVdpdGhIYW5kbGVfKSwgc2hhcmVkSGFuZGxlKTsKK30KKworLy8gbWV0
aG9kOiBuZXdTYW1wbGVyU3RhdGVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6U2Ft
cGxlclN0YXRlKiBNVEw6OkRldmljZTo6bmV3U2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxl
ckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpTYW1wbGVyU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1NhbXBsZXJT
dGF0ZVdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IG5ld0Rl
ZmF1bHRMaWJyYXJ5CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdE
ZWZhdWx0TGlicmFyeSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpM
aWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdEZWZhdWx0TGlicmFyeSkpOworfQor
CisvLyBtZXRob2Q6IG5ld0RlZmF1bHRMaWJyYXJ5V2l0aEJ1bmRsZTplcnJvcjoKK19NVExfSU5M
SU5FIE1UTDo6TGlicmFyeSogTVRMOjpEZXZpY2U6Om5ld0RlZmF1bHRMaWJyYXJ5KGNvbnN0IE5T
OjpCdW5kbGUqIGJ1bmRsZSwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdE
ZWZhdWx0TGlicmFyeVdpdGhCdW5kbGVfZXJyb3JfKSwgYnVuZGxlLCBlcnJvcik7Cit9CisKKy8v
IG1ldGhvZDogbmV3TGlicmFyeVdpdGhGaWxlOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJy
YXJ5KiBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBOUzo6U3RyaW5nKiBmaWxlcGF0aCwg
TlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdMaWJyYXJ5V2l0aEZpbGVfZXJy
b3JfKSwgZmlsZXBhdGgsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdMaWJyYXJ5V2l0aFVS
TDplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6TGlicmFyeSogTVRMOjpEZXZpY2U6Om5ld0xpYnJh
cnkoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0xpYnJhcnlXaXRoVVJMX2Vycm9yXyksIHVybCwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6
IG5ld0xpYnJhcnlXaXRoRGF0YTplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6TGlicmFyeSogTVRM
OjpEZXZpY2U6Om5ld0xpYnJhcnkoY29uc3QgZGlzcGF0Y2hfZGF0YV90IGRhdGEsIE5TOjpFcnJv
cioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlicmFy
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhEYXRhX2Vycm9yXyksIGRh
dGEsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdMaWJyYXJ5V2l0aFNvdXJjZTpvcHRpb25z
OmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3TGlicmFy
eShjb25zdCBOUzo6U3RyaW5nKiBzb3VyY2UsIGNvbnN0IE1UTDo6Q29tcGlsZU9wdGlvbnMqIG9w
dGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6TGlicmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhT
b3VyY2Vfb3B0aW9uc19lcnJvcl8pLCBzb3VyY2UsIG9wdGlvbnMsIGVycm9yKTsKK30KKworLy8g
bWV0aG9kOiBuZXdMaWJyYXJ5V2l0aFNvdXJjZTpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBOUzo6U3RyaW5n
KiBzb3VyY2UsIGNvbnN0IE1UTDo6Q29tcGlsZU9wdGlvbnMqIG9wdGlvbnMsIGNvbnN0IE1UTDo6
TmV3TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdMaWJyYXJ5
V2l0aFNvdXJjZV9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXyksIHNvdXJjZSwgb3B0aW9ucywg
Y29tcGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0xpYnJhcnlXaXRoU3RpdGNo
ZWREZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmlj
ZTo6bmV3TGlicmFyeShjb25zdCBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6TGlicmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhT
dGl0Y2hlZERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBt
ZXRob2Q6IG5ld0xpYnJhcnlXaXRoU3RpdGNoZWREZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVy
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBNVEw6OlN0
aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IE1UTDo6TmV3TGlicmFy
eUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdMaWJyYXJ5V2l0aFN0aXRj
aGVkRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8pLCBkZXNjcmlwdG9yLCBjb21wbGV0aW9u
SGFuZGxlcik7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNj
cmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBNVEw6
OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3JfZXJyb3Jf
KSwgZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5l
U3RhdGVXaXRoRGVzY3JpcHRvcjpvcHRpb25zOnJlZmxlY3Rpb246ZXJyb3I6CitfTVRMX0lOTElO
RSBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGlu
ZVN0YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBN
VEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkUmVuZGVy
UGlwZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRv
cl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfKSwgZGVzY3JpcHRvciwgb3B0aW9ucywgcmVmbGVj
dGlvbiwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRo
RGVzY3JpcHRvcjpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZp
Y2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZUNvbXBs
ZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0
aERlc2NyaXB0b3JfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgY29tcGxldGlvbkhh
bmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3Jp
cHRvcjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRl
dmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBN
VEw6Ok5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVy
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jf
b3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8pLCBkZXNjcmlwdG9yLCBvcHRpb25zLCBjb21wbGV0
aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRo
RnVuY3Rpb246ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBN
VEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpGdW5jdGlvbiog
Y29tcHV0ZUZ1bmN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9lcnJvcl8pLCBjb21w
dXRlRnVuY3Rpb24sIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZVdpdGhGdW5jdGlvbjpvcHRpb25zOnJlZmxlY3Rpb246ZXJyb3I6CitfTVRMX0lOTElORSBN
VEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5l
U3RhdGUoY29uc3QgTVRMOjpGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBNVEw6OlBpcGVsaW5l
T3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVm
bGVjdGlvbiogcmVmbGVjdGlvbiwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25fb3B0aW9uc19y
ZWZsZWN0aW9uX2Vycm9yXyksIGNvbXB1dGVGdW5jdGlvbiwgb3B0aW9ucywgcmVmbGVjdGlvbiwg
ZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0
aW9uOmNvbXBsZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3
Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9u
LCBjb25zdCBNVEw6Ok5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXIgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uX2NvbXBs
ZXRpb25IYW5kbGVyXyksIGNvbXB1dGVGdW5jdGlvbiwgY29tcGxldGlvbkhhbmRsZXIpOworfQor
CisvLyBtZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOm9wdGlvbnM6
Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OkZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE1U
TDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpOZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uX29wdGlvbnNfY29tcGxldGlvbkhhbmRs
ZXJfKSwgY29tcHV0ZUZ1bmN0aW9uLCBvcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisK
Ky8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjpvcHRpb25z
OnJlZmxlY3Rpb246ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRl
KiBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlv
bnMsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogcmVm
bGVjdGlvbiwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25f
ZXJyb3JfKSwgZGVzY3JpcHRvciwgb3B0aW9ucywgcmVmbGVjdGlvbiwgZXJyb3IpOworfQorCisv
LyBtZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0aW9uczpj
b21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVz
Y3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6Ok5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX2Nv
bXBsZXRpb25IYW5kbGVyXyksIGRlc2NyaXB0b3IsIG9wdGlvbnMsIGNvbXBsZXRpb25IYW5kbGVy
KTsKK30KKworLy8gbWV0aG9kOiBuZXdGZW5jZQorX01UTF9JTkxJTkUgTVRMOjpGZW5jZSogTVRM
OjpEZXZpY2U6Om5ld0ZlbmNlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkZlbmNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdGZW5jZSkpOworfQorCisvLyBt
ZXRob2Q6IHN1cHBvcnRzRmVhdHVyZVNldDoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6
OnN1cHBvcnRzRmVhdHVyZVNldChNVEw6OkZlYXR1cmVTZXQgZmVhdHVyZVNldCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzdXBwb3J0c0ZlYXR1cmVTZXRfKSwgZmVhdHVyZVNldCk7Cit9CisKKy8vIG1ldGhvZDogc3Vw
cG9ydHNGYW1pbHk6CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c0ZhbWls
eShNVEw6OkdQVUZhbWlseSBncHVGYW1pbHkpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNGYW1pbHlfKSwg
Z3B1RmFtaWx5KTsKK30KKworLy8gbWV0aG9kOiBzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudDoK
K19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzVGV4dHVyZVNhbXBsZUNvdW50
KE5TOjpVSW50ZWdlciBzYW1wbGVDb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1RleHR1cmVTYW1w
bGVDb3VudF8pLCBzYW1wbGVDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogbWluaW11bUxpbmVhclRl
eHR1cmVBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdDoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OkRldmljZTo6bWluaW11bUxpbmVhclRleHR1cmVBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdChN
VEw6OlBpeGVsRm9ybWF0IGZvcm1hdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWluaW11bUxpbmVhclRleHR1
cmVBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdF8pLCBmb3JtYXQpOworfQorCisvLyBtZXRob2Q6IG1p
bmltdW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXQ6CitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpEZXZpY2U6Om1pbmltdW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9y
UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBmb3JtYXQpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1pbmlt
dW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXRfKSwgZm9ybWF0KTsKK30KKwor
Ly8gbWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yOm9wdGlv
bnM6cmVmbGVjdGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0
ZSogTVRMOjpEZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpUaWxlUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9w
dGlvbnMsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBy
ZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoVGlsZURlc2NyaXB0b3Jfb3B0aW9uc19yZWZsZWN0
aW9uX2Vycm9yXyksIGRlc2NyaXB0b3IsIG9wdGlvbnMsIHJlZmxlY3Rpb24sIGVycm9yKTsKK30K
KworLy8gbWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yOm9w
dGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpu
ZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciogZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6
Ok5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9y
X29wdGlvbnNfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgb3B0aW9ucywgY29tcGxl
dGlvbkhhbmRsZXIpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VGhyZWFkZ3JvdXBNZW1vcnlMZW5n
dGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6bWF4VGhyZWFkZ3JvdXBN
ZW1vcnlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhUaHJlYWRncm91cE1lbW9yeUxl
bmd0aCkpOworfQorCisvLyBwcm9wZXJ0eTogbWF4QXJndW1lbnRCdWZmZXJTYW1wbGVyQ291bnQK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6bWF4QXJndW1lbnRCdWZmZXJT
YW1wbGVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhBcmd1bWVudEJ1ZmZlclNhbXBs
ZXJDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogcHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRpb25z
U3VwcG9ydGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpwcm9ncmFtbWFibGVTYW1w
bGVQb3NpdGlvbnNTdXBwb3J0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZVByb2dyYW1tYWJsZVNh
bXBsZVBvc2l0aW9uc1N1cHBvcnRlZCkpOworfQorCisvLyBtZXRob2Q6IGdldERlZmF1bHRTYW1w
bGVQb3NpdGlvbnM6Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpnZXREZWZh
dWx0U2FtcGxlUG9zaXRpb25zKE1UTDo6U2FtcGxlUG9zaXRpb24qIHBvc2l0aW9ucywgTlM6OlVJ
bnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChnZXREZWZhdWx0U2FtcGxlUG9zaXRpb25zX2NvdW50XyksIHBvc2l0aW9u
cywgY291bnQpOworfQorCisvLyBtZXRob2Q6IG5ld0FyZ3VtZW50RW5jb2RlcldpdGhBcmd1bWVu
dHM6CitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RW5jb2RlciogTVRMOjpEZXZpY2U6Om5ld0Fy
Z3VtZW50RW5jb2Rlcihjb25zdCBOUzo6QXJyYXkqIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50RW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobmV3QXJndW1lbnRFbmNvZGVyV2l0aEFyZ3VtZW50c18pLCBhcmd1bWVudHMpOwor
fQorCisvLyBtZXRob2Q6IHN1cHBvcnRzUmFzdGVyaXphdGlvblJhdGVNYXBXaXRoTGF5ZXJDb3Vu
dDoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUmFzdGVyaXphdGlvblJh
dGVNYXAoTlM6OlVJbnRlZ2VyIGxheWVyQ291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNSYXN0ZXJp
emF0aW9uUmF0ZU1hcFdpdGhMYXllckNvdW50XyksIGxheWVyQ291bnQpOworfQorCisvLyBtZXRo
b2Q6IG5ld1Jhc3Rlcml6YXRpb25SYXRlTWFwV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBN
VEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwKiBNVEw6OkRldmljZTo6bmV3UmFzdGVyaXphdGlvblJh
dGVNYXAoY29uc3QgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIGRlc2NyaXB0
b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmFzdGVyaXphdGlvblJhdGVNYXBX
aXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdJbmRpcmVj
dENvbW1hbmRCdWZmZXJXaXRoRGVzY3JpcHRvcjptYXhDb21tYW5kQ291bnQ6b3B0aW9uczoKK19N
VExfSU5MSU5FIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBNVEw6OkRldmljZTo6bmV3SW5k
aXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3Jp
cHRvciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG1heENvdW50LCBNVEw6OlJlc291cmNlT3B0
aW9ucyBvcHRpb25zKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW5k
aXJlY3RDb21tYW5kQnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdJbmRpcmVjdENv
bW1hbmRCdWZmZXJXaXRoRGVzY3JpcHRvcl9tYXhDb21tYW5kQ291bnRfb3B0aW9uc18pLCBkZXNj
cmlwdG9yLCBtYXhDb3VudCwgb3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogbmV3RXZlbnQKK19N
VExfSU5MSU5FIE1UTDo6RXZlbnQqIE1UTDo6RGV2aWNlOjpuZXdFdmVudCgpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpFdmVudCo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3RXZlbnQpKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRFdmVudAorX01UTF9JTkxJ
TkUgTVRMOjpTaGFyZWRFdmVudCogTVRMOjpEZXZpY2U6Om5ld1NoYXJlZEV2ZW50KCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNoYXJlZEV2ZW50Kj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChuZXdTaGFyZWRFdmVudCkpOworfQorCisvLyBtZXRob2Q6IG5ld1NoYXJl
ZEV2ZW50V2l0aEhhbmRsZToKK19NVExfSU5MSU5FIE1UTDo6U2hhcmVkRXZlbnQqIE1UTDo6RGV2
aWNlOjpuZXdTaGFyZWRFdmVudChjb25zdCBNVEw6OlNoYXJlZEV2ZW50SGFuZGxlKiBzaGFyZWRF
dmVudEhhbmRsZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNoYXJl
ZEV2ZW50Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdTaGFyZWRFdmVudFdpdGhIYW5kbGVf
KSwgc2hhcmVkRXZlbnRIYW5kbGUpOworfQorCisvLyBwcm9wZXJ0eTogcGVlckdyb3VwSUQKK19N
VExfSU5MSU5FIHVpbnQ2NF90IE1UTDo6RGV2aWNlOjpwZWVyR3JvdXBJRCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwocGVlckdyb3VwSUQpKTsKK30KKworLy8gcHJvcGVydHk6IHBlZXJJbmRleAorX01UTF9J
TkxJTkUgdWludDMyX3QgTVRMOjpEZXZpY2U6OnBlZXJJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDMyX3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
cGVlckluZGV4KSk7Cit9CisKKy8vIHByb3BlcnR5OiBwZWVyQ291bnQKK19NVExfSU5MSU5FIHVp
bnQzMl90IE1UTDo6RGV2aWNlOjpwZWVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBlZXJDb3Vu
dCkpOworfQorCisvLyBtZXRob2Q6IHNwYXJzZVRpbGVTaXplV2l0aFRleHR1cmVUeXBlOnBpeGVs
Rm9ybWF0OnNhbXBsZUNvdW50OgorX01UTF9JTkxJTkUgTVRMOjpTaXplIE1UTDo6RGV2aWNlOjpz
cGFyc2VUaWxlU2l6ZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlLCBNVEw6OlBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBOUzo6VUludGVnZXIgc2FtcGxlQ291bnQpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNw
YXJzZVRpbGVTaXplV2l0aFRleHR1cmVUeXBlX3BpeGVsRm9ybWF0X3NhbXBsZUNvdW50XyksIHRl
eHR1cmVUeXBlLCBwaXhlbEZvcm1hdCwgc2FtcGxlQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTog
c3BhcnNlVGlsZVNpemVJbkJ5dGVzCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpEZXZp
Y2U6OnNwYXJzZVRpbGVTaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNwYXJzZVRp
bGVTaXplSW5CeXRlcykpOworfQorCisvLyBtZXRob2Q6IGNvbnZlcnRTcGFyc2VQaXhlbFJlZ2lv
bnM6dG9UaWxlUmVnaW9uczp3aXRoVGlsZVNpemU6YWxpZ25tZW50TW9kZTpudW1SZWdpb25zOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6Y29udmVydFNwYXJzZVBpeGVsUmVnaW9ucyhj
b25zdCBNVEw6OlJlZ2lvbiogcGl4ZWxSZWdpb25zLCBNVEw6OlJlZ2lvbiogdGlsZVJlZ2lvbnMs
IE1UTDo6U2l6ZSB0aWxlU2l6ZSwgTVRMOjpTcGFyc2VUZXh0dXJlUmVnaW9uQWxpZ25tZW50TW9k
ZSBtb2RlLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29udmVydFNwYXJzZVBpeGVsUmVnaW9u
c190b1RpbGVSZWdpb25zX3dpdGhUaWxlU2l6ZV9hbGlnbm1lbnRNb2RlX251bVJlZ2lvbnNfKSwg
cGl4ZWxSZWdpb25zLCB0aWxlUmVnaW9ucywgdGlsZVNpemUsIG1vZGUsIG51bVJlZ2lvbnMpOwor
fQorCisvLyBtZXRob2Q6IGNvbnZlcnRTcGFyc2VUaWxlUmVnaW9uczp0b1BpeGVsUmVnaW9uczp3
aXRoVGlsZVNpemU6bnVtUmVnaW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6OmNv
bnZlcnRTcGFyc2VUaWxlUmVnaW9ucyhjb25zdCBNVEw6OlJlZ2lvbiogdGlsZVJlZ2lvbnMsIE1U
TDo6UmVnaW9uKiBwaXhlbFJlZ2lvbnMsIE1UTDo6U2l6ZSB0aWxlU2l6ZSwgTlM6OlVJbnRlZ2Vy
IG51bVJlZ2lvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGNvbnZlcnRTcGFyc2VUaWxlUmVnaW9uc190b1BpeGVsUmVnaW9uc193aXRo
VGlsZVNpemVfbnVtUmVnaW9uc18pLCB0aWxlUmVnaW9ucywgcGl4ZWxSZWdpb25zLCB0aWxlU2l6
ZSwgbnVtUmVnaW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhCdWZmZXJMZW5ndGgKK19NVExf
SU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6bWF4QnVmZmVyTGVuZ3RoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobWF4QnVmZmVyTGVuZ3RoKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb3Vu
dGVyU2V0cworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkRldmljZTo6Y291bnRlclNldHMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoY291bnRlclNldHMpKTsKK30KKworLy8gbWV0aG9kOiBuZXdD
b3VudGVyU2FtcGxlQnVmZmVyV2l0aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6
OkNvdW50ZXJTYW1wbGVCdWZmZXIqIE1UTDo6RGV2aWNlOjpuZXdDb3VudGVyU2FtcGxlQnVmZmVy
KGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5T
OjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
Q291bnRlclNhbXBsZUJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q291bnRlclNh
bXBsZUJ1ZmZlcldpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30K
KworLy8gbWV0aG9kOiBzYW1wbGVUaW1lc3RhbXBzOmdwdVRpbWVzdGFtcDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpEZXZpY2U6OnNhbXBsZVRpbWVzdGFtcHMoTVRMOjpUaW1lc3RhbXAqIGNwdVRp
bWVzdGFtcCwgTVRMOjpUaW1lc3RhbXAqIGdwdVRpbWVzdGFtcCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlVGltZXN0YW1wc19n
cHVUaW1lc3RhbXBfKSwgY3B1VGltZXN0YW1wLCBncHVUaW1lc3RhbXApOworfQorCisvLyBtZXRo
b2Q6IHN1cHBvcnRzQ291bnRlclNhbXBsaW5nOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmlj
ZTo6c3VwcG9ydHNDb3VudGVyU2FtcGxpbmcoTVRMOjpDb3VudGVyU2FtcGxpbmdQb2ludCBzYW1w
bGluZ1BvaW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzQ291bnRlclNhbXBsaW5nXyksIHNhbXBsaW5n
UG9pbnQpOworfQorCisvLyBtZXRob2Q6IHN1cHBvcnRzVmVydGV4QW1wbGlmaWNhdGlvbkNvdW50
OgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNWZXJ0ZXhBbXBsaWZpY2F0
aW9uQ291bnQoTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzVmVydGV4QW1w
bGlmaWNhdGlvbkNvdW50XyksIGNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzRHlu
YW1pY0xpYnJhcmllcworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNEeW5h
bWljTGlicmFyaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNh
ZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c0R5bmFtaWNMaWJyYXJpZXMp
KTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzUmVuZGVyRHluYW1pY0xpYnJhcmllcworX01U
TF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNSZW5kZXJEeW5hbWljTGlicmFyaWVz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMpKTsKK30K
KworLy8gbWV0aG9kOiBuZXdEeW5hbWljTGlicmFyeTplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6
RHluYW1pY0xpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdEeW5hbWljTGlicmFyeShjb25zdCBNVEw6
OkxpYnJhcnkqIGxpYnJhcnksIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6RHluYW1pY0xpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0R5bmFtaWNMaWJyYXJ5X2Vycm9yXyksIGxpYnJhcnksIGVycm9yKTsKK30KKworLy8g
bWV0aG9kOiBuZXdEeW5hbWljTGlicmFyeVdpdGhVUkw6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6
OkR5bmFtaWNMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3RHluYW1pY0xpYnJhcnkoY29uc3QgTlM6
OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkR5bmFtaWNMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdE
eW5hbWljTGlicmFyeVdpdGhVUkxfZXJyb3JfKSwgdXJsLCBlcnJvcik7Cit9CisKKy8vIG1ldGhv
ZDogbmV3QmluYXJ5QXJjaGl2ZVdpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgTVRM
OjpCaW5hcnlBcmNoaXZlKiBNVEw6OkRldmljZTo6bmV3QmluYXJ5QXJjaGl2ZShjb25zdCBNVEw6
OkJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcikK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJpbmFyeUFyY2hpdmUqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0JpbmFyeUFyY2hpdmVXaXRoRGVzY3JpcHRvcl9lcnJv
cl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c1JheXRy
YWNpbmcKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUmF5dHJhY2luZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNSYXl0cmFjaW5nKSk7Cit9CisKKy8vIG1ldGhvZDog
YWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXNXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMgTVRMOjpEZXZpY2U6OmFjY2VsZXJhdGlvblN0
cnVjdHVyZVNpemVzKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciog
ZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZVNpemVzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFjY2VsZXJhdGlv
blN0cnVjdHVyZVNpemVzV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIG1l
dGhvZDogbmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aFNpemU6CitfTVRMX0lOTElORSBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogTVRMOjpEZXZpY2U6Om5ld0FjY2VsZXJhdGlvblN0cnVj
dHVyZShOUzo6VUludGVnZXIgc2l6ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3
QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aFNpemVfKSwgc2l6ZSk7Cit9CisKKy8vIG1ldGhvZDog
bmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogTVRMOjpEZXZpY2U6Om5ld0FjY2VsZXJhdGlvblN0cnVj
dHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0
b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0FjY2VsZXJhdGlvblN0cnVjdHVy
ZVdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9y
dHNGdW5jdGlvblBvaW50ZXJzCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0
c0Z1bmN0aW9uUG9pbnRlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzRnVuY3Rpb25Qb2lu
dGVycykpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzRnJvbVJl
bmRlcgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNGdW5jdGlvblBvaW50
ZXJzRnJvbVJlbmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VT
YWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJz
RnJvbVJlbmRlcikpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNSYXl0cmFjaW5nRnJvbVJl
bmRlcgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNSYXl0cmFjaW5nRnJv
bVJlbmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNSYXl0cmFjaW5nRnJvbVJlbmRlcikp
OworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNQcmltaXRpdmVNb3Rpb25CbHVyCitfTVRMX0lO
TElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c1ByaW1pdGl2ZU1vdGlvbkJsdXIoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHN1cHBvcnRzUHJpbWl0aXZlTW90aW9uQmx1cikpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERyYXdhYmxlLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEcmF3YWJsZS5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzM0MDk3NjA0MTM3ZmUzMGJlZTcwYjJkMTU1ZDMxN2M2MmJiOTY5YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEcmF3
YWJsZS5ocHAKQEAgLTAsMCArMSw5OSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRHJhd2FibGUuaHBwCisvLworLy8gQ29w
eXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVm
aW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQ
cml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CisKK25hbWVzcGFjZSBNVEwKK3sKK3VzaW5nIERyYXdhYmxlUHJlc2VudGVkSGFuZGxl
ciA9IHZvaWQgKF4pKGNsYXNzIERyYXdhYmxlKik7CisKK3VzaW5nIERyYXdhYmxlUHJlc2VudGVk
SGFuZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNsYXNzIERyYXdhYmxlKik+Owor
CitjbGFzcyBEcmF3YWJsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RHJhd2FibGU+Cit7Citw
dWJsaWM6CisgICAgdm9pZCAgICAgICAgICAgYWRkUHJlc2VudGVkSGFuZGxlcihjb25zdCBNVEw6
OkRyYXdhYmxlUHJlc2VudGVkSGFuZGxlckZ1bmN0aW9uJiBmdW5jdGlvbik7CisKKyAgICB2b2lk
ICAgICAgICAgICBwcmVzZW50KCk7CisKKyAgICB2b2lkICAgICAgICAgICBwcmVzZW50QXRUaW1l
KENGVGltZUludGVydmFsIHByZXNlbnRhdGlvblRpbWUpOworCisgICAgdm9pZCAgICAgICAgICAg
cHJlc2VudEFmdGVyTWluaW11bUR1cmF0aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uKTsKKwor
ICAgIHZvaWQgICAgICAgICAgIGFkZFByZXNlbnRlZEhhbmRsZXIoY29uc3QgTVRMOjpEcmF3YWJs
ZVByZXNlbnRlZEhhbmRsZXIgYmxvY2spOworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGVk
VGltZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgZHJhd2FibGVJRCgpIGNvbnN0Owor
fTsKKworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6OmFkZFByZXNlbnRlZEhh
bmRsZXIoY29uc3QgTVRMOjpEcmF3YWJsZVByZXNlbnRlZEhhbmRsZXJGdW5jdGlvbiYgZnVuY3Rp
b24pCit7CisgICAgX19ibG9jayBEcmF3YWJsZVByZXNlbnRlZEhhbmRsZXJGdW5jdGlvbiBibG9j
a0Z1bmN0aW9uID0gZnVuY3Rpb247CisKKyAgICBhZGRQcmVzZW50ZWRIYW5kbGVyKF4oRHJhd2Fi
bGUqIHBEcmF3YWJsZSkgeyBibG9ja0Z1bmN0aW9uKHBEcmF3YWJsZSk7IH0pOworfQorCisvLyBt
ZXRob2Q6IHByZXNlbnQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEcmF3YWJsZTo6cHJlc2VudCgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHByZXNlbnQpKTsKK30KKworLy8gbWV0aG9kOiBwcmVzZW50QXRUaW1lOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkRyYXdhYmxlOjpwcmVzZW50QXRUaW1lKENGVGltZUludGVydmFsIHByZXNlbnRh
dGlvblRpbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHByZXNlbnRBdFRpbWVfKSwgcHJlc2VudGF0aW9uVGltZSk7Cit9CisKKy8vIG1l
dGhvZDogcHJlc2VudEFmdGVyTWluaW11bUR1cmF0aW9uOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkRyYXdhYmxlOjpwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb24oQ0ZUaW1lSW50ZXJ2YWwgZHVy
YXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHByZXNlbnRBZnRlck1pbmltdW1EdXJhdGlvbl8pLCBkdXJhdGlvbik7Cit9CisKKy8v
IG1ldGhvZDogYWRkUHJlc2VudGVkSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEcmF3
YWJsZTo6YWRkUHJlc2VudGVkSGFuZGxlcihjb25zdCBNVEw6OkRyYXdhYmxlUHJlc2VudGVkSGFu
ZGxlciBibG9jaykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYWRkUHJlc2VudGVkSGFuZGxlcl8pLCBibG9jayk7Cit9CisKKy8vIHByb3Bl
cnR5OiBwcmVzZW50ZWRUaW1lCitfTVRMX0lOTElORSBDRlRpbWVJbnRlcnZhbCBNVEw6OkRyYXdh
YmxlOjpwcmVzZW50ZWRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxDRlRpbWVJbnRlcnZhbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVzZW50ZWRUaW1l
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBkcmF3YWJsZUlECitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpEcmF3YWJsZTo6ZHJhd2FibGVJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdh
YmxlSUQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExEeW5hbWljTGlicmFyeS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMRHluYW1pY0xpYnJhcnkuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4OWI5OTkwZDVmNmJm
MTc5NDcyZWIxYTM0NDI2MzNkMDk0MWRiNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHluYW1pY0xpYnJhcnkuaHBwCkBAIC0wLDAg
KzEsODIgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIE1ldGFsL01UTER5bmFtaWNMaWJyYXJ5LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIw
LTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgor
I2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAi
CisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1lc3BhY2UgTVRM
Cit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBEeW5hbWljTGlicmFyeUVycm9yKSB7CisgICAg
RHluYW1pY0xpYnJhcnlFcnJvck5vbmUgPSAwLAorICAgIER5bmFtaWNMaWJyYXJ5RXJyb3JJbnZh
bGlkRmlsZSA9IDEsCisgICAgRHluYW1pY0xpYnJhcnlFcnJvckNvbXBpbGF0aW9uRmFpbHVyZSA9
IDIsCisgICAgRHluYW1pY0xpYnJhcnlFcnJvclVucmVzb2x2ZWRJbnN0YWxsTmFtZSA9IDMsCisg
ICAgRHluYW1pY0xpYnJhcnlFcnJvckRlcGVuZGVuY3lMb2FkRmFpbHVyZSA9IDQsCisgICAgRHlu
YW1pY0xpYnJhcnlFcnJvclVuc3VwcG9ydGVkID0gNSwKK307CisKK2NsYXNzIER5bmFtaWNMaWJy
YXJ5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxEeW5hbWljTGlicmFyeT4KK3sKK3B1YmxpYzoK
KyAgICBOUzo6U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICBzZXRM
YWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisKKyAgICBjbGFzcyBEZXZpY2UqIGRldmlj
ZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICBpbnN0YWxsTmFtZSgpIGNvbnN0OworCisg
ICAgYm9vbCAgICAgICAgICBzZXJpYWxpemVUb1VSTChjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpF
cnJvcioqIGVycm9yKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElO
RSBOUzo6U3RyaW5nKiBNVEw6OkR5bmFtaWNMaWJyYXJ5OjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkR5bmFtaWNMaWJyYXJ5
OjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOwor
fQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpE
eW5hbWljTGlicmFyeTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBpbnN0YWxsTmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRM
OjpEeW5hbWljTGlicmFyeTo6aW5zdGFsbE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3Rh
bGxOYW1lKSk7Cit9CisKKy8vIG1ldGhvZDogc2VyaWFsaXplVG9VUkw6ZXJyb3I6CitfTVRMX0lO
TElORSBib29sIE1UTDo6RHluYW1pY0xpYnJhcnk6OnNlcmlhbGl6ZVRvVVJMKGNvbnN0IE5TOjpV
UkwqIHVybCwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXJpYWxpemVUb1VSTF9lcnJvcl8p
LCB1cmwsIGVycm9yKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExFdmVudC5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMRXZlbnQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhOWZhYzIzNTE4Zjg2YTUxZTQyMGE0OTg0
Njc2NGM1ZTBkZjU4ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMRXZlbnQuaHBwCkBAIC0wLDAgKzEsMTYzIEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExFdmVu
dC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBw
IgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEV2ZW50LmhwcCIKKworbmFtZXNwYWNlIE1UTAor
eworY2xhc3MgRXZlbnQgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEV2ZW50PgoreworcHVibGlj
OgorICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAg
IGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCk7Cit9OworCitjbGFzcyBTaGFyZWRFdmVudExpc3RlbmVyIDogcHVibGljIE5T
OjpSZWZlcmVuY2luZzxTaGFyZWRFdmVudExpc3RlbmVyPgoreworcHVibGljOgorICAgIHN0YXRp
YyBjbGFzcyBTaGFyZWRFdmVudExpc3RlbmVyKiBhbGxvYygpOworCisgICAgTVRMOjpTaGFyZWRF
dmVudExpc3RlbmVyKiAgICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6U2hhcmVkRXZlbnRMaXN0
ZW5lciogICAgICAgICBpbml0KGNvbnN0IGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSk7
CisKKyAgICBkaXNwYXRjaF9xdWV1ZV90ICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hRdWV1ZSgp
IGNvbnN0OworfTsKKwordXNpbmcgU2hhcmVkRXZlbnROb3RpZmljYXRpb25CbG9jayA9IHZvaWQg
KF4pKFNoYXJlZEV2ZW50KiBwRXZlbnQsIHN0ZDo6dWludDY0X3QgdmFsdWUpOworCitjbGFzcyBT
aGFyZWRFdmVudCA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8U2hhcmVkRXZlbnQsIEV2ZW50Pgor
eworcHVibGljOgorICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICBub3RpZnlMaXN0ZW5lcihj
b25zdCBjbGFzcyBTaGFyZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgdWludDY0X3QgdmFsdWUs
IGNvbnN0IE1UTDo6U2hhcmVkRXZlbnROb3RpZmljYXRpb25CbG9jayBibG9jayk7CisKKyAgICBj
bGFzcyBTaGFyZWRFdmVudEhhbmRsZSogbmV3U2hhcmVkRXZlbnRIYW5kbGUoKTsKKworICAgIHVp
bnQ2NF90ICAgICAgICAgICAgICAgICBzaWduYWxlZFZhbHVlKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgIHNldFNpZ25hbGVkVmFsdWUodWludDY0X3Qgc2lnbmFsZWRWYWx1
ZSk7Cit9OworCitjbGFzcyBTaGFyZWRFdmVudEhhbmRsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNp
bmc8U2hhcmVkRXZlbnRIYW5kbGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFNoYXJl
ZEV2ZW50SGFuZGxlKiBhbGxvYygpOworCisgICAgY2xhc3MgU2hhcmVkRXZlbnRIYW5kbGUqICAg
ICAgICBpbml0KCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgIGxhYmVs
KCkgY29uc3Q7Cit9OworCitzdHJ1Y3QgU2hhcmVkRXZlbnRIYW5kbGVQcml2YXRlCit7Cit9IF9N
VExfUEFDS0VEOworCit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6
RGV2aWNlKiBNVEw6OkV2ZW50OjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2Up
KTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6
OkV2ZW50OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkV2ZW50OjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9J
TkxJTkUgTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyKiBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI6
OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTaGFyZWRFdmVu
dExpc3RlbmVyPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFNoYXJlZEV2ZW50TGlzdGVuZXIpKTsKK30K
KworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIq
IE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpTaGFyZWRFdmVudExpc3RlbmVyPigpOworfQorCisvLyBtZXRob2Q6IGlu
aXRXaXRoRGlzcGF0Y2hRdWV1ZToKK19NVExfSU5MSU5FIE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5l
ciogTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyOjppbml0KGNvbnN0IGRpc3BhdGNoX3F1ZXVlX3Qg
ZGlzcGF0Y2hRdWV1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNo
YXJlZEV2ZW50TGlzdGVuZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluaXRXaXRoRGlzcGF0
Y2hRdWV1ZV8pLCBkaXNwYXRjaFF1ZXVlKTsKK30KKworLy8gcHJvcGVydHk6IGRpc3BhdGNoUXVl
dWUKK19NVExfSU5MSU5FIGRpc3BhdGNoX3F1ZXVlX3QgTVRMOjpTaGFyZWRFdmVudExpc3RlbmVy
OjpkaXNwYXRjaFF1ZXVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxkaXNwYXRjaF9xdWV1ZV90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoUXVldWUp
KTsKK30KKworLy8gbWV0aG9kOiBub3RpZnlMaXN0ZW5lcjphdFZhbHVlOmJsb2NrOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlNoYXJlZEV2ZW50Ojpub3RpZnlMaXN0ZW5lcihjb25zdCBNVEw6OlNo
YXJlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCB1aW50NjRfdCB2YWx1ZSwgY29uc3QgTVRMOjpT
aGFyZWRFdmVudE5vdGlmaWNhdGlvbkJsb2NrIGJsb2NrKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChub3RpZnlMaXN0ZW5lcl9hdFZhbHVl
X2Jsb2NrXyksIGxpc3RlbmVyLCB2YWx1ZSwgYmxvY2spOworfQorCisvLyBtZXRob2Q6IG5ld1No
YXJlZEV2ZW50SGFuZGxlCitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50SGFuZGxlKiBNVEw6
OlNoYXJlZEV2ZW50OjpuZXdTaGFyZWRFdmVudEhhbmRsZSgpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpTaGFyZWRFdmVudEhhbmRsZSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobmV3U2hhcmVkRXZlbnRIYW5kbGUpKTsKK30KKworLy8gcHJvcGVydHk6IHNpZ25hbGVk
VmFsdWUKK19NVExfSU5MSU5FIHVpbnQ2NF90IE1UTDo6U2hhcmVkRXZlbnQ6OnNpZ25hbGVkVmFs
dWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQ2NF90Pih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNpZ25hbGVkVmFsdWUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlNoYXJlZEV2ZW50OjpzZXRTaWduYWxlZFZhbHVlKHVpbnQ2NF90IHNpZ25hbGVk
VmFsdWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFNpZ25hbGVkVmFsdWVfKSwgc2lnbmFsZWRWYWx1ZSk7Cit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50SGFuZGxlKiBNVEw6
OlNoYXJlZEV2ZW50SGFuZGxlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6U2hhcmVkRXZlbnRIYW5kbGU+KF9NVExfUFJJVkFURV9DTFMoTVRMU2hhcmVkRXZl
bnRIYW5kbGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlNoYXJl
ZEV2ZW50SGFuZGxlKiBNVEw6OlNoYXJlZEV2ZW50SGFuZGxlOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlNoYXJlZEV2ZW50SGFuZGxlPigpOworfQorCisvLyBw
cm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6U2hhcmVkRXZlbnRI
YW5kbGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZlbmNlLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGZW5jZS5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmM2ZTkzMTRlNTM5MzVkMjQxNjYxOWVjYjAzMDAzNjA4ZjRjOGY1ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGZW5jZS5ocHAK
QEAgLTAsMCArMSw1NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTVRMRmVuY2UuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAt
MjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisj
aW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIK
KworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwK
K3sKK2NsYXNzIEZlbmNlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGZW5jZT4KK3sKK3B1Ymxp
YzoKKyAgICBjbGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyog
ICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0
cmluZyogbGFiZWwpOworfTsKKworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElO
RSBNVEw6OkRldmljZSogTVRMOjpGZW5jZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmlu
ZyogTVRMOjpGZW5jZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpGZW5jZTo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyog
bGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkNvbnN0YW50VmFs
dWVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NjA4NTU0ZWM0NjJiN2E1NGIyN2U3ZmRiMjMzMzNjNzYwMWEz
MzFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwCkBAIC0wLDAgKzEsODUgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01U
TEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVk
ZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2lu
Y2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExBcmd1bWVu
dC5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMg
OiBwdWJsaWMgTlM6OkNvcHlpbmc8RnVuY3Rpb25Db25zdGFudFZhbHVlcz4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25Db25zdGFudFZhbHVlcyogYWxsb2MoKTsKKworICAg
IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqICAgICAgICBpbml0KCk7CisKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnRWYWx1ZShjb25zdCB2
b2lkKiB2YWx1ZSwgTVRMOjpEYXRhVHlwZSB0eXBlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50VmFsdWVz
KGNvbnN0IHZvaWQqIHZhbHVlcywgTVRMOjpEYXRhVHlwZSB0eXBlLCBOUzo6UmFuZ2UgcmFuZ2Up
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50
VmFsdWUoY29uc3Qgdm9pZCogdmFsdWUsIE1UTDo6RGF0YVR5cGUgdHlwZSwgY29uc3QgTlM6OlN0
cmluZyogbmFtZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzZXQoKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlcyogTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVz
OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25D
b25zdGFudFZhbHVlcz4oX01UTF9QUklWQVRFX0NMUyhNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVz
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkNvbnN0
YW50VmFsdWVzKiBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6OmluaXQoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlcz4oKTsKK30K
KworLy8gbWV0aG9kOiBzZXRDb25zdGFudFZhbHVlOnR5cGU6YXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzOjpzZXRDb25zdGFudFZhbHVlKGNvbnN0
IHZvaWQqIHZhbHVlLCBNVEw6OkRhdGFUeXBlIHR5cGUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
Q29uc3RhbnRWYWx1ZV90eXBlX2F0SW5kZXhfKSwgdmFsdWUsIHR5cGUsIGluZGV4KTsKK30KKwor
Ly8gbWV0aG9kOiBzZXRDb25zdGFudFZhbHVlczp0eXBlOndpdGhSYW5nZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzOjpzZXRDb25zdGFudFZhbHVlcyhjb25z
dCB2b2lkKiB2YWx1ZXMsIE1UTDo6RGF0YVR5cGUgdHlwZSwgTlM6OlJhbmdlIHJhbmdlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRD
b25zdGFudFZhbHVlc190eXBlX3dpdGhSYW5nZV8pLCB2YWx1ZXMsIHR5cGUsIHJhbmdlKTsKK30K
KworLy8gbWV0aG9kOiBzZXRDb25zdGFudFZhbHVlOnR5cGU6d2l0aE5hbWU6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlczo6c2V0Q29uc3RhbnRWYWx1ZShjb25z
dCB2b2lkKiB2YWx1ZSwgTVRMOjpEYXRhVHlwZSB0eXBlLCBjb25zdCBOUzo6U3RyaW5nKiBuYW1l
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRDb25zdGFudFZhbHVlX3R5cGVfd2l0aE5hbWVfKSwgdmFsdWUsIHR5cGUsIG5hbWUpOwor
fQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25Db25z
dGFudFZhbHVlczo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChyZXNldCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNmYwMGQ2NzgzNGJkYmIzOTg2OGU1NGY5M2ZmOTNhZTU2YWFlZTI3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAKQEAgLTAsMCArMSwxNTYgQEAKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEZ1bmN0aW9u
RGVzY3JpcHRvci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJC
cmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEZ1bmN0aW9uRGVzY3JpcHRvci5o
cHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIEZ1bmN0
aW9uT3B0aW9ucykgeworICAgIEZ1bmN0aW9uT3B0aW9uTm9uZSA9IDAsCisgICAgRnVuY3Rpb25P
cHRpb25Db21waWxlVG9CaW5hcnkgPSAxLAorfTsKKworY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9y
IDogcHVibGljIE5TOjpDb3B5aW5nPEZ1bmN0aW9uRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3Mg
RnVuY3Rpb25EZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIEZ1
bmN0aW9uRGVzY3JpcHRvciogZnVuY3Rpb25EZXNjcmlwdG9yKCk7CisKKyAgICBOUzo6U3RyaW5n
KiAgICAgICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0TmFtZShjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKKworICAg
IE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkTmFtZSgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNwZWNpYWxpemVkTmFt
ZShjb25zdCBOUzo6U3RyaW5nKiBzcGVjaWFsaXplZE5hbWUpOworCisgICAgY2xhc3MgRnVuY3Rp
b25Db25zdGFudFZhbHVlcyogICAgY29uc3RhbnRWYWx1ZXMoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudFZhbHVlcyhjb25zdCBjbGFzcyBG
dW5jdGlvbkNvbnN0YW50VmFsdWVzKiBjb25zdGFudFZhbHVlcyk7CisKKyAgICBNVEw6OkZ1bmN0
aW9uT3B0aW9ucyAgICAgICAgICAgICBvcHRpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0T3B0aW9ucyhNVEw6OkZ1bmN0aW9uT3B0aW9ucyBvcHRp
b25zKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeUFyY2hp
dmVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qmlu
YXJ5QXJjaGl2ZXMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcyk7Cit9OworCitjbGFz
cyBJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SW50
ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yLCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcj4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9y
KiBhbGxvYygpOworCisgICAgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiAg
ICAgICAgaW5pdCgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9J
TkxJTkUgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjph
bGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25EZXNj
cmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEZ1bmN0aW9uRGVzY3JpcHRvcikpOworfQorCisv
LyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yKiBNVEw6
OkZ1bmN0aW9uRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6Omlu
aXQ8TVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGZ1
bmN0aW9uRGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3IqIE1U
TDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpmdW5jdGlvbkRlc2NyaXB0b3IoKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yKj4oX01UTF9QUklW
QVRFX0NMUyhNVExGdW5jdGlvbkRlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9u
RGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0
cmluZyogTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5hbWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6
c2V0TmFtZShjb25zdCBOUzo6U3RyaW5nKiBuYW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXROYW1lXyksIG5hbWUpOworfQorCisv
LyBwcm9wZXJ0eTogc3BlY2lhbGl6ZWROYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6
OkZ1bmN0aW9uRGVzY3JpcHRvcjo6c3BlY2lhbGl6ZWROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzcGVjaWFsaXplZE5hbWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9u
RGVzY3JpcHRvcjo6c2V0U3BlY2lhbGl6ZWROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIHNwZWNpYWxp
emVkTmFtZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0U3BlY2lhbGl6ZWROYW1lXyksIHNwZWNpYWxpemVkTmFtZSk7Cit9CisKKy8v
IHByb3BlcnR5OiBjb25zdGFudFZhbHVlcworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkNvbnN0
YW50VmFsdWVzKiBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6Y29uc3RhbnRWYWx1ZXMoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25Db25zdGFu
dFZhbHVlcyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29uc3RhbnRWYWx1ZXMpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6c2V0Q29uc3RhbnRWYWx1
ZXMoY29uc3QgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBjb25zdGFudFZhbHVlcykKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
Q29uc3RhbnRWYWx1ZXNfKSwgY29uc3RhbnRWYWx1ZXMpOworfQorCisvLyBwcm9wZXJ0eTogb3B0
aW9ucworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbk9wdGlvbnMgTVRMOjpGdW5jdGlvbkRlc2Ny
aXB0b3I6Om9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6RnVuY3Rpb25PcHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9wdGlvbnMpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6c2V0T3B0aW9u
cyhNVEw6OkZ1bmN0aW9uT3B0aW9ucyBvcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPcHRpb25zXyksIG9wdGlvbnMpOwor
fQorCisvLyBwcm9wZXJ0eTogYmluYXJ5QXJjaGl2ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSog
TVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OmJpbmFyeUFyY2hpdmVzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGJpbmFyeUFyY2hpdmVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlv
bkRlc2NyaXB0b3I6OnNldEJpbmFyeUFyY2hpdmVzKGNvbnN0IE5TOjpBcnJheSogYmluYXJ5QXJj
aGl2ZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldEJpbmFyeUFyY2hpdmVzXyksIGJpbmFyeUFyY2hpdmVzKTsKK30KKworLy8gc3Rh
dGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25E
ZXNjcmlwdG9yKiBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9u
RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2Ny
aXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkludGVyc2Vj
dGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0
b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6SW50ZXJzZWN0
aW9uRnVuY3Rpb25EZXNjcmlwdG9yPigpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uSGFuZGxlLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkhhbmRsZS5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjRmMzg1MTQzN2M3MWU4MGRhOTg3ZWVjZTk4YmQxYTgwOGMzZTJkNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkhh
bmRsZS5ocHAKQEAgLTAsMCArMSw2MSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUuaHBwCisvLwor
Ly8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
TVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRl
ICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+
CisKKyNpbmNsdWRlICJNVExMaWJyYXJ5LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3Mg
RnVuY3Rpb25IYW5kbGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uSGFuZGxlPgor
eworcHVibGljOgorICAgIE1UTDo6RnVuY3Rpb25UeXBlIGZ1bmN0aW9uVHlwZSgpIGNvbnN0Owor
CisgICAgTlM6OlN0cmluZyogICAgICAgbmFtZSgpIGNvbnN0OworCisgICAgY2xhc3MgRGV2aWNl
KiAgICAgZGV2aWNlKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvblR5
cGUKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25UeXBlIE1UTDo6RnVuY3Rpb25IYW5kbGU6OmZ1
bmN0aW9uVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpGdW5jdGlvblR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25UeXBlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0
aW9uSGFuZGxlOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkZ1bmN0aW9uSGFu
ZGxlOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkxvZy5o
cHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Mb2cu
aHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNhMzhkYzlkYWJkNjFlYWJiZWZlMGU0YmRjMzVlMjkzZTI3MDgxNTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMRnVuY3Rpb25Mb2cuaHBwCkBAIC0wLDAgKzEsMTE0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExGdW5jdGlvbkxvZy5o
cHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgor
I2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEZ1bmN0aW9uTG9nLmhwcCIKKworbmFtZXNwYWNlIE1U
TAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgRnVuY3Rpb25Mb2dUeXBlKSB7CisgICAgRnVu
Y3Rpb25Mb2dUeXBlVmFsaWRhdGlvbiA9IDAsCit9OworCitjbGFzcyBMb2dDb250YWluZXIgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPExvZ0NvbnRhaW5lciwgTlM6OkZhc3RFbnVtZXJhdGlvbj4K
K3sKK3B1YmxpYzoKK307CisKK2NsYXNzIEZ1bmN0aW9uTG9nRGVidWdMb2NhdGlvbiA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uPgoreworcHVibGljOgor
ICAgIE5TOjpTdHJpbmcqICBmdW5jdGlvbk5hbWUoKSBjb25zdDsKKworICAgIE5TOjpVUkwqICAg
ICBVUkwoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciBsaW5lKCkgY29uc3Q7CisKKyAgICBO
Uzo6VUludGVnZXIgY29sdW1uKCkgY29uc3Q7Cit9OworCitjbGFzcyBGdW5jdGlvbkxvZyA6IHB1
YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25Mb2c+Cit7CitwdWJsaWM6CisgICAgTVRMOjpG
dW5jdGlvbkxvZ1R5cGUgICAgICAgICAgICB0eXBlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5n
KiAgICAgICAgICAgICAgICAgICAgIGVuY29kZXJMYWJlbCgpIGNvbnN0OworCisgICAgY2xhc3Mg
RnVuY3Rpb24qICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIGNvbnN0OworCisgICAgY2xhc3Mg
RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uKiBkZWJ1Z0xvY2F0aW9uKCkgY29uc3Q7Cit9OworCit9
CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvbk5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uOjpmdW5jdGlvbk5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGZ1bmN0aW9uTmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTogVVJMCitfTVRMX0lOTElO
RSBOUzo6VVJMKiBNVEw6OkZ1bmN0aW9uTG9nRGVidWdMb2NhdGlvbjo6VVJMKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VVJMKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChVUkwpKTsKK30KKworLy8gcHJvcGVydHk6IGxpbmUKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OkZ1bmN0aW9uTG9nRGVidWdMb2NhdGlvbjo6bGluZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGxpbmUpKTsKK30KKworLy8gcHJvcGVydHk6IGNvbHVtbgorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uOjpjb2x1bW4oKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChjb2x1bW4pKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExf
SU5MSU5FIE1UTDo6RnVuY3Rpb25Mb2dUeXBlIE1UTDo6RnVuY3Rpb25Mb2c6OnR5cGUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25Mb2dUeXBl
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGVuY29k
ZXJMYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5jdGlvbkxvZzo6ZW5jb2Rl
ckxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmNvZGVyTGFiZWwpKTsKK30KKworLy8gcHJv
cGVydHk6IGZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6OkZ1bmN0aW9u
TG9nOjpmdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb24pKTsKK30KKwor
Ly8gcHJvcGVydHk6IGRlYnVnTG9jYXRpb24KK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25Mb2dE
ZWJ1Z0xvY2F0aW9uKiBNVEw6OkZ1bmN0aW9uTG9nOjpkZWJ1Z0xvY2F0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uTG9nRGVidWdMb2Nh
dGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVidWdMb2NhdGlvbikpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3Rp
dGNoaW5nLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5j
dGlvblN0aXRjaGluZy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlkY2I0OTZjZWQ2YmQ3YTMyYjUxNmMyYjJm
MzU2NWM3OWI2MWRkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvblN0aXRjaGluZy5ocHAKQEAgLTAsMCArMSwzMDUgQEAK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1l
dGFsL01UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRnVuY3Rp
b25TdGl0Y2hpbmcuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBGdW5jdGlvblN0aXRj
aGluZ0F0dHJpYnV0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25TdGl0Y2hpbmdB
dHRyaWJ1dGU+Cit7Cit9OworCitjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5
c0lubGluZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1
dGVBbHdheXNJbmxpbmUsIEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZSog
YWxsb2MoKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5s
aW5lKiAgICAgICAgaW5pdCgpOworfTsKKworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdOb2RlIDog
cHVibGljIE5TOjpDb3B5aW5nPEZ1bmN0aW9uU3RpdGNoaW5nTm9kZT4KK3sKK307CisKK2NsYXNz
IEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5j
dGlvblN0aXRjaGluZ0lucHV0Tm9kZSwgRnVuY3Rpb25TdGl0Y2hpbmdOb2RlPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSogYWxsb2MoKTsK
KworICAgIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlKiAgICAgICAgaW5pdCgpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudElu
ZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRBcmd1bWVudEluZGV4KE5TOjpVSW50ZWdlciBhcmd1bWVudEluZGV4KTsKKworICAgIE1U
TDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUqICAgICAgICAgaW5pdChOUzo6VUludGVnZXIg
YXJndW1lbnQpOworfTsKKworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlLCBGdW5j
dGlvblN0aXRjaGluZ05vZGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9u
U3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0
Y2hpbmdGdW5jdGlvbk5vZGUqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE5hbWUoY29uc3QgTlM6OlN0cmlu
ZyogbmFtZSk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFyZ3VtZW50cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0QXJndW1lbnRzKGNvbnN0IE5TOjpBcnJheSogYXJndW1lbnRzKTsK
KworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJv
bERlcGVuZGVuY2llcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0Q29udHJvbERlcGVuZGVuY2llcyhjb25zdCBOUzo6QXJyYXkqIGNv
bnRyb2xEZXBlbmRlbmNpZXMpOworCisgICAgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9u
Tm9kZSogICAgICAgICBpbml0KGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUsIGNvbnN0IE5TOjpBcnJh
eSogYXJndW1lbnRzLCBjb25zdCBOUzo6QXJyYXkqIGNvbnRyb2xEZXBlbmRlbmNpZXMpOworfTsK
KworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdHcmFwaCA6IHB1YmxpYyBOUzo6Q29weWluZzxGdW5j
dGlvblN0aXRjaGluZ0dyYXBoPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlv
blN0aXRjaGluZ0dyYXBoKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdH
cmFwaCogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbk5hbWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0RnVuY3Rpb25OYW1lKGNvbnN0IE5TOjpTdHJpbmcqIGZ1bmN0aW9u
TmFtZSk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Tm9k
ZXMoY29uc3QgTlM6OkFycmF5KiBub2Rlcyk7CisKKyAgICBjbGFzcyBGdW5jdGlvblN0aXRjaGlu
Z0Z1bmN0aW9uTm9kZSogb3V0cHV0Tm9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRPdXRwdXROb2RlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uU3Rp
dGNoaW5nRnVuY3Rpb25Ob2RlKiBvdXRwdXROb2RlKTsKKworICAgIE5TOjpBcnJheSogICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoY29uc3QgTlM6OkFycmF5KiBh
dHRyaWJ1dGVzKTsKKworICAgIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaCogICAgICAgICBp
bml0KGNvbnN0IE5TOjpTdHJpbmcqIGZ1bmN0aW9uTmFtZSwgY29uc3QgTlM6OkFycmF5KiBub2Rl
cywgY29uc3QgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIG91dHB1dE5vZGUs
IGNvbnN0IE5TOjpBcnJheSogYXR0cmlidXRlcyk7Cit9OworCitjbGFzcyBTdGl0Y2hlZExpYnJh
cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFN0aXRjaGVkTGlicmFyeURlc2NyaXB0
b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0
b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiAgICAg
ICAgaW5pdCgpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uR3JhcGhzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEZ1bmN0aW9uR3JhcGhzKGNvbnN0IE5TOjpBcnJheSogZnVuY3Rpb25H
cmFwaHMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbnMpOworfTsKKworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRj
aGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0
ZUFsd2F5c0lubGluZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxN
VEw6OkZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lPihfTVRMX1BSSVZBVEVf
Q0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKSk7Cit9CisKKy8v
IG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0
ZUFsd2F5c0lubGluZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGlu
ZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlvblN0
aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZT4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUqIE1UTDo6
RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6YWxsb2M8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZT4oX01UTF9QUklWQVRF
X0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSkpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUqIE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBhcmd1bWVudEluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpGdW5jdGlv
blN0aXRjaGluZ0lucHV0Tm9kZTo6YXJndW1lbnRJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGFyZ3VtZW50SW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3Rp
dGNoaW5nSW5wdXROb2RlOjpzZXRBcmd1bWVudEluZGV4KE5TOjpVSW50ZWdlciBhcmd1bWVudElu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRBcmd1bWVudEluZGV4XyksIGFyZ3VtZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6
IGluaXRXaXRoQXJndW1lbnRJbmRleDoKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0Y2hp
bmdJbnB1dE5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU6OmluaXQoTlM6OlVJ
bnRlZ2VyIGFyZ3VtZW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluaXRX
aXRoQXJndW1lbnRJbmRleF8pLCBhcmd1bWVudCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBNVEw6
OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU+KF9NVExf
UFJJVkFURV9DTFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25O
b2RlKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2Rl
PigpOworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRM
OjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmFtZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdG
dW5jdGlvbk5vZGU6OnNldE5hbWUoY29uc3QgTlM6OlN0cmluZyogbmFtZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TmFtZV8pLCBu
YW1lKTsKK30KKworLy8gcHJvcGVydHk6IGFyZ3VtZW50cworX01UTF9JTkxJTkUgTlM6OkFycmF5
KiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjphcmd1bWVudHMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYXJndW1lbnRzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5j
dGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6c2V0QXJndW1lbnRzKGNvbnN0IE5TOjpBcnJheSog
YXJndW1lbnRzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRBcmd1bWVudHNfKSwgYXJndW1lbnRzKTsKK30KKworLy8gcHJvcGVydHk6
IGNvbnRyb2xEZXBlbmRlbmNpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpGdW5jdGlv
blN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6Y29udHJvbERlcGVuZGVuY2llcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChjb250cm9sRGVwZW5kZW5jaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6c2V0Q29udHJvbERlcGVuZGVuY2llcyhj
b25zdCBOUzo6QXJyYXkqIGNvbnRyb2xEZXBlbmRlbmNpZXMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnRyb2xEZXBlbmRlbmNp
ZXNfKSwgY29udHJvbERlcGVuZGVuY2llcyk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhOYW1l
OmFyZ3VtZW50czpjb250cm9sRGVwZW5kZW5jaWVzOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlv
blN0aXRjaGluZ0Z1bmN0aW9uTm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9k
ZTo6aW5pdChjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBOUzo6QXJyYXkqIGFyZ3VtZW50
cywgY29uc3QgTlM6OkFycmF5KiBjb250cm9sRGVwZW5kZW5jaWVzKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluaXRXaXRoTmFtZV9hcmd1bWVudHNfY29udHJvbERlcGVu
ZGVuY2llc18pLCBuYW1lLCBhcmd1bWVudHMsIGNvbnRyb2xEZXBlbmRlbmNpZXMpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGlu
Z0dyYXBoKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgpKTsKK30KKworLy8gbWV0aG9kOiBp
bml0CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIE1UTDo6RnVuY3Rp
b25TdGl0Y2hpbmdHcmFwaDo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8
TVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoPigpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rp
b25OYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3Jh
cGg6OmZ1bmN0aW9uTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25OYW1lKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpzZXRGdW5j
dGlvbk5hbWUoY29uc3QgTlM6OlN0cmluZyogZnVuY3Rpb25OYW1lKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGdW5jdGlvbk5hbWVf
KSwgZnVuY3Rpb25OYW1lKTsKK30KKworLy8gcHJvcGVydHk6IG5vZGVzCitfTVRMX0lOTElORSBO
Uzo6QXJyYXkqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6bm9kZXMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobm9kZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3Rp
dGNoaW5nR3JhcGg6OnNldE5vZGVzKGNvbnN0IE5TOjpBcnJheSogbm9kZXMpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE5vZGVzXyks
IG5vZGVzKTsKK30KKworLy8gcHJvcGVydHk6IG91dHB1dE5vZGUKK19NVExfSU5MSU5FIE1UTDo6
RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFw
aDo6b3V0cHV0Tm9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwob3V0cHV0Tm9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdHcmFwaDo6c2V0T3V0cHV0Tm9kZShjb25zdCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVu
Y3Rpb25Ob2RlKiBvdXRwdXROb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPdXRwdXROb2RlXyksIG91dHB1dE5vZGUpOworfQor
CisvLyBwcm9wZXJ0eTogYXR0cmlidXRlcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nR3JhcGg6OmF0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0
cmlidXRlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdH
cmFwaDo6c2V0QXR0cmlidXRlcyhjb25zdCBOUzo6QXJyYXkqIGF0dHJpYnV0ZXMpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEF0dHJp
YnV0ZXNfKSwgYXR0cmlidXRlcyk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhGdW5jdGlvbk5h
bWU6bm9kZXM6b3V0cHV0Tm9kZTphdHRyaWJ1dGVzOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlv
blN0aXRjaGluZ0dyYXBoKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg6OmluaXQoY29uc3Qg
TlM6OlN0cmluZyogZnVuY3Rpb25OYW1lLCBjb25zdCBOUzo6QXJyYXkqIG5vZGVzLCBjb25zdCBN
VEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBvdXRwdXROb2RlLCBjb25zdCBOUzo6
QXJyYXkqIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbml0V2l0
aEZ1bmN0aW9uTmFtZV9ub2Rlc19vdXRwdXROb2RlX2F0dHJpYnV0ZXNfKSwgZnVuY3Rpb25OYW1l
LCBub2Rlcywgb3V0cHV0Tm9kZSwgYXR0cmlidXRlcyk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIE1UTDo6
U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0OjphbGxvYzxNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9D
TFMoTVRMU3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogTVRMOjpTdGl0Y2hl
ZExpYnJhcnlEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5p
dDxNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBm
dW5jdGlvbkdyYXBocworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlN0aXRjaGVkTGlicmFy
eURlc2NyaXB0b3I6OmZ1bmN0aW9uR3JhcGhzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9u
R3JhcGhzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNj
cmlwdG9yOjpzZXRGdW5jdGlvbkdyYXBocyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9uR3JhcGhz
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRGdW5jdGlvbkdyYXBoc18pLCBmdW5jdGlvbkdyYXBocyk7Cit9CisKKy8vIHByb3BlcnR5
OiBmdW5jdGlvbnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpTdGl0Y2hlZExpYnJhcnlE
ZXNjcmlwdG9yOjpmdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25zKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yOjpzZXRG
dW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uc18pLCBmdW5j
dGlvbnMpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEhlYWRlckJyaWRnZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMSGVhZGVyQnJpZGdlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTAwODVkZGE1N2I0MWUzOTQw
ODMzODJjMGI5OTAyY2M1MTM0ZTM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEhlYWRlckJyaWRnZS5ocHAKQEAgLTAsMCArMSwyMDQ3
IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBNZXRhbC9NVExIZWFkZXJCcmlkZ2UuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCituYW1lc3Bh
Y2UgTVRMOjpQcml2YXRlOjpDbGFzcworeworCitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcik7CitfTVRMX1BS
SVZBVEVfREVGX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRv
cik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25C
b3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcik7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21l
dHJ5RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBcmd1bWVudCk7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExBcmd1bWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMQXJyYXlUeXBlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEF0dHJpYnV0ZSk7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBdHRyaWJ1dGVEZXNjcmlwdG9yKTsKK19NVExfUFJJ
VkFURV9ERUZfQ0xTKE1UTEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVf
REVGX0NMUyhNVExCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NM
UyhNVExCbGl0UGFzc0Rlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQmxpdFBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NM
UyhNVExCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMQnVmZmVyTGF5b3V0RGVzY3JpcHRvcik7CitfTVRMX1BSSVZB
VEVfREVGX0NMUyhNVExCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMQ2FwdHVyZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
Q2FwdHVyZU1hbmFnZXIpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tbWFuZEJ1ZmZlckRl
c2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tcGlsZU9wdGlvbnMpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tcHV0ZVBhc3NEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFU
RV9ERUZfQ0xTKE1UTENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3Ip
OworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTENvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tcHV0ZVBpcGVsaW5l
UmVmbGVjdGlvbik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDb3VudGVyU2FtcGxlQnVmZmVy
RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEZ1bmN0aW9uQ29uc3RhbnQpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcyk7CitfTVRMX1BSSVZBVEVf
REVGX0NMUyhNVExGdW5jdGlvbkRlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdheXNJbmxpbmUpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdHcmFwaCk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhN
VExGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExI
ZWFwRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExJbmRpcmVjdENvbW1hbmRC
dWZmZXJEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEluc3RhbmNlQWNjZWxl
cmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExJbnRl
cnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMSW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMo
TVRMTGlua2VkRnVuY3Rpb25zKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTE1vdGlvbktleWZy
YW1lRGF0YSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQaXBlbGluZUJ1ZmZlckRlc2NyaXB0
b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJy
YXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUG9pbnRlclR5cGUpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcik7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IpOwor
X01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkpOwor
X01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFz
c0Rlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRl
clBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFU
RV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQaXBlbGluZUZ1
bmN0aW9uc0Rlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGlwZWxp
bmVSZWZsZWN0aW9uKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlc291cmNlU3RhdGVQYXNz
RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZXNvdXJjZVN0YXRlUGFzc1Nh
bXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1U
TFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSk7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExTYW1wbGVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZB
VEVfREVGX0NMUyhNVExTaGFyZWRFdmVudEhhbmRsZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhN
VExTaGFyZWRFdmVudExpc3RlbmVyKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNoYXJlZFRl
eHR1cmVIYW5kbGUpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMU3RhZ2VJbnB1dE91dHB1dERl
c2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMU3RlbmNpbERlc2NyaXB0b3IpOwor
X01UTF9QUklWQVRFX0RFRl9DTFMoTVRMU3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcik7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExTdHJ1Y3RNZW1iZXIpOworX01UTF9QUklWQVRFX0RFRl9DTFMo
TVRMU3RydWN0VHlwZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExUZXh0dXJlRGVzY3JpcHRv
cik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExUZXh0dXJlUmVmZXJlbmNlVHlwZSk7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFR5cGUp
OworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4QXR0cmlidXRlKTsKK19NVExfUFJJVkFU
RV9ERUZfQ0xTKE1UTFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9E
RUZfQ0xTKE1UTFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFU
RV9ERUZfQ0xTKE1UTFZlcnRleERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKTsKKworfQorCituYW1lc3BhY2UgTVRMOjpQ
cml2YXRlOjpQcm90b2NvbAoreworCitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExBY2NlbGVyYXRp
b25TdHJ1Y3R1cmUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQWNjZWxlcmF0aW9uU3RydWN0
dXJlQ29tbWFuZEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQXJndW1lbnRFbmNv
ZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEJpbmFyeUFyY2hpdmUpOworX01UTF9QUklW
QVRFX0RFRl9QUk8oTVRMQmxpdENvbW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJP
KE1UTEJ1ZmZlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExDb21tYW5kQnVmZmVyKTsKK19N
VExfUFJJVkFURV9ERUZfUFJPKE1UTENvbW1hbmRCdWZmZXJFbmNvZGVySW5mbyk7CitfTVRMX1BS
SVZBVEVfREVGX1BSTyhNVExDb21tYW5kRW5jb2Rlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhN
VExDb21tYW5kUXVldWUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ29tcHV0ZUNvbW1hbmRF
bmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvbXB1dGVQaXBlbGluZVN0YXRlKTsK
K19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvdW50ZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8o
TVRMQ291bnRlclNhbXBsZUJ1ZmZlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExDb3VudGVy
U2V0KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTERlcHRoU3RlbmNpbFN0YXRlKTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTERldmljZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExEcmF3
YWJsZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExEeW5hbWljTGlicmFyeSk7CitfTVRMX1BS
SVZBVEVfREVGX1BSTyhNVExFdmVudCk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGZW5jZSk7
CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvbik7CitfTVRMX1BSSVZBVEVfREVGX1BS
TyhNVExGdW5jdGlvbkhhbmRsZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvbkxv
Zyk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24pOwor
X01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGUpOworX01U
TF9QUklWQVRFX0RFRl9QUk8oTVRMRnVuY3Rpb25TdGl0Y2hpbmdOb2RlKTsKK19NVExfUFJJVkFU
RV9ERUZfUFJPKE1UTEhlYXApOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMSW5kaXJlY3RDb21t
YW5kQnVmZmVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEluZGlyZWN0Q29tcHV0ZUNvbW1h
bmQpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMSW5kaXJlY3RSZW5kZXJDb21tYW5kKTsKK19N
VExfUFJJVkFURV9ERUZfUFJPKE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUpOworX01UTF9Q
UklWQVRFX0RFRl9QUk8oTVRMTGlicmFyeSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExMb2dD
b250YWluZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMUGFyYWxsZWxSZW5kZXJDb21tYW5k
RW5jb2Rlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExSYXN0ZXJpemF0aW9uUmF0ZU1hcCk7
CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExSZW5kZXJDb21tYW5kRW5jb2Rlcik7CitfTVRMX1BS
SVZBVEVfREVGX1BSTyhNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsKK19NVExfUFJJVkFURV9ERUZf
UFJPKE1UTFJlc291cmNlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTFJlc291cmNlU3RhdGVD
b21tYW5kRW5jb2Rlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExTYW1wbGVyU3RhdGUpOwor
X01UTF9QUklWQVRFX0RFRl9QUk8oTVRMU2hhcmVkRXZlbnQpOworX01UTF9QUklWQVRFX0RFRl9Q
Uk8oTVRMVGV4dHVyZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExWaXNpYmxlRnVuY3Rpb25U
YWJsZSk7CisKK30KKworbmFtZXNwYWNlIE1UTDo6UHJpdmF0ZTo6U2VsZWN0b3IKK3sKKworX01U
TF9QUklWQVRFX0RFRl9TRUwoR1BVRW5kVGltZSwKKyAgICAiR1BVRW5kVGltZSIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoR1BVU3RhcnRUaW1lLAorICAgICJHUFVTdGFydFRpbWUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKFVSTCwKKyAgICAiVVJMIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChh
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciwKKyAgICAiYWNjZWxlcmF0aW9uU3Ry
dWN0dXJlQ29tbWFuZEVuY29kZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFjY2VsZXJhdGlv
blN0cnVjdHVyZVNpemVzV2l0aERlc2NyaXB0b3JfLAorICAgICJhY2NlbGVyYXRpb25TdHJ1Y3R1
cmVTaXplc1dpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWNjZXNzLAor
ICAgICJhY2Nlc3MiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFkZENvbXBsZXRlZEhhbmRsZXJf
LAorICAgICJhZGRDb21wbGV0ZWRIYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWRk
Q29tcHV0ZVBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJhZGRD
b21wdXRlUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGFkZERlYnVnTWFya2VyX3JhbmdlXywKKyAgICAiYWRkRGVidWdNYXJrZXI6
cmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRGdW5jdGlvbldpdGhEZXNjcmlwdG9y
X2xpYnJhcnlfZXJyb3JfLAorICAgICJhZGRGdW5jdGlvbldpdGhEZXNjcmlwdG9yOmxpYnJhcnk6
ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRQcmVzZW50ZWRIYW5kbGVyXywKKyAg
ICAiYWRkUHJlc2VudGVkSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFkZFJlbmRl
clBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJhZGRSZW5kZXJQ
aXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoYWRkU2NoZWR1bGVkSGFuZGxlcl8sCisgICAgImFkZFNjaGVkdWxlZEhhbmRsZXI6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRUaWxlUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRo
RGVzY3JpcHRvcl9lcnJvcl8sCisgICAgImFkZFRpbGVSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc1dp
dGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWxpZ25tZW50LAor
ICAgICJhbGlnbm1lbnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFsbG9jYXRlZFNpemUsCisg
ICAgImFsbG9jYXRlZFNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFsbG93RHVwbGljYXRl
SW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uLAorICAgICJhbGxvd0R1cGxpY2F0ZUludGVy
c2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWxsb3dH
UFVPcHRpbWl6ZWRDb250ZW50cywKKyAgICAiYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoYWxwaGFCbGVuZE9wZXJhdGlvbiwKKyAgICAiYWxwaGFCbGVu
ZE9wZXJhdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXJlQmFyeWNlbnRyaWNDb29yZHNT
dXBwb3J0ZWQsCisgICAgImFyZUJhcnljZW50cmljQ29vcmRzU3VwcG9ydGVkIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChhcmVQcm9ncmFtbWFibGVTYW1wbGVQb3NpdGlvbnNTdXBwb3J0ZWQsCisg
ICAgImFyZVByb2dyYW1tYWJsZVNhbXBsZVBvc2l0aW9uc1N1cHBvcnRlZCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoYXJlUmFzdGVyT3JkZXJHcm91cHNTdXBwb3J0ZWQsCisgICAgImFyZVJhc3Rl
ck9yZGVyR3JvdXBzU3VwcG9ydGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmd1bWVudEJ1
ZmZlcnNTdXBwb3J0LAorICAgICJhcmd1bWVudEJ1ZmZlcnNTdXBwb3J0Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChhcmd1bWVudERlc2NyaXB0b3IsCisgICAgImFyZ3VtZW50RGVzY3JpcHRvciIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoYXJndW1lbnRJbmRleCwKKyAgICAiYXJndW1lbnRJbmRl
eCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXJndW1lbnRJbmRleFN0cmlkZSwKKyAgICAiYXJn
dW1lbnRJbmRleFN0cmlkZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXJndW1lbnRzLAorICAg
ICJhcmd1bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFycmF5TGVuZ3RoLAorICAgICJh
cnJheUxlbmd0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXJyYXlUeXBlLAorICAgICJhcnJh
eVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGF0dHJpYnV0ZUluZGV4LAorICAgICJhdHRy
aWJ1dGVJbmRleCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXR0cmlidXRlVHlwZSwKKyAgICAi
YXR0cmlidXRlVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXR0cmlidXRlcywKKyAgICAi
YXR0cmlidXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYmFja0ZhY2VTdGVuY2lsLAorICAg
ICJiYWNrRmFjZVN0ZW5jaWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJpbmFyeUFyY2hpdmVz
LAorICAgICJiaW5hcnlBcmNoaXZlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYmluYXJ5RnVu
Y3Rpb25zLAorICAgICJiaW5hcnlGdW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJs
aXRDb21tYW5kRW5jb2RlciwKKyAgICAiYmxpdENvbW1hbmRFbmNvZGVyIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChibGl0Q29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8sCisgICAgImJsaXRD
b21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYmxp
dFBhc3NEZXNjcmlwdG9yLAorICAgICJibGl0UGFzc0Rlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGJvcmRlckNvbG9yLAorICAgICJib3JkZXJDb2xvciIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYm91bmRpbmdCb3hCdWZmZXIsCisgICAgImJvdW5kaW5nQm94QnVmZmVyIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChib3VuZGluZ0JveEJ1ZmZlck9mZnNldCwKKyAgICAiYm91bmRp
bmdCb3hCdWZmZXJPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94QnVm
ZmVycywKKyAgICAiYm91bmRpbmdCb3hCdWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChi
b3VuZGluZ0JveENvdW50LAorICAgICJib3VuZGluZ0JveENvdW50Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChib3VuZGluZ0JveFN0cmlkZSwKKyAgICAiYm91bmRpbmdCb3hTdHJpZGUiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlciwKKyAgICAiYnVmZmVyIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChidWZmZXJBbGlnbm1lbnQsCisgICAgImJ1ZmZlckFsaWdubWVudCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoYnVmZmVyQnl0ZXNQZXJSb3csCisgICAgImJ1ZmZlckJ5dGVzUGVyUm93
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZmZXJEYXRhU2l6ZSwKKyAgICAiYnVmZmVyRGF0
YVNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlckRhdGFUeXBlLAorICAgICJidWZm
ZXJEYXRhVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVySW5kZXgsCisgICAgImJ1
ZmZlckluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZmZXJPZmZzZXQsCisgICAgImJ1
ZmZlck9mZnNldCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVyUG9pbnRlclR5cGUsCisg
ICAgImJ1ZmZlclBvaW50ZXJUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZmZXJTdHJ1
Y3RUeXBlLAorICAgICJidWZmZXJTdHJ1Y3RUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChi
dWZmZXJzLAorICAgICJidWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWlsZEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZV9kZXNjcmlwdG9yX3NjcmF0Y2hCdWZmZXJfc2NyYXRjaEJ1ZmZlck9m
ZnNldF8sCisgICAgImJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlOmRlc2NyaXB0b3I6c2NyYXRj
aEJ1ZmZlcjpzY3JhdGNoQnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY2Fw
dHVyZU9iamVjdCwKKyAgICAiY2FwdHVyZU9iamVjdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
Y2xlYXJCYXJyaWVyLAorICAgICJjbGVhckJhcnJpZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGNsZWFyQ29sb3IsCisgICAgImNsZWFyQ29sb3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNs
ZWFyRGVwdGgsCisgICAgImNsZWFyRGVwdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNsZWFy
U3RlbmNpbCwKKyAgICAiY2xlYXJTdGVuY2lsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb2xv
ckF0dGFjaG1lbnRzLAorICAgICJjb2xvckF0dGFjaG1lbnRzIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChjb2x1bW4sCisgICAgImNvbHVtbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWFu
ZEJ1ZmZlciwKKyAgICAiY29tbWFuZEJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29t
bWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yXywKKyAgICAiY29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlw
dG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWFuZEJ1ZmZlcldpdGhVbnJldGFpbmVk
UmVmZXJlbmNlcywKKyAgICAiY29tbWFuZEJ1ZmZlcldpdGhVbnJldGFpbmVkUmVmZXJlbmNlcyIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWFuZFF1ZXVlLAorICAgICJjb21tYW5kUXVldWUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbW1hbmRUeXBlcywKKyAgICAiY29tbWFuZFR5cGVz
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21taXQsCisgICAgImNvbW1pdCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoY29tcGFyZUZ1bmN0aW9uLAorICAgICJjb21wYXJlRnVuY3Rpb24iKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGNvbXB1dGVDb21tYW5kRW5jb2RlciwKKyAgICAiY29tcHV0
ZUNvbW1hbmRFbmNvZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21wdXRlQ29tbWFuZEVu
Y29kZXJXaXRoRGVzY3JpcHRvcl8sCisgICAgImNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEZXNj
cmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tcHV0ZUNvbW1hbmRFbmNvZGVyV2l0
aERpc3BhdGNoVHlwZV8sCisgICAgImNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEaXNwYXRjaFR5
cGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21wdXRlRnVuY3Rpb24sCisgICAgImNvbXB1
dGVGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tcHV0ZVBhc3NEZXNjcmlwdG9y
LAorICAgICJjb21wdXRlUGFzc0Rlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNv
bmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3Vwc190aHJlYWRzUGVyVGhyZWFkZ3JvdXBfLAorICAg
ICJjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRncm91cHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoY29uY3VycmVudERpc3BhdGNoVGhyZWFkc190aHJlYWRz
UGVyVGhyZWFkZ3JvdXBfLAorICAgICJjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRzOnRocmVhZHNQ
ZXJUaHJlYWRncm91cDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbnN0YW50QmxvY2tBbGln
bm1lbnQsCisgICAgImNvbnN0YW50QmxvY2tBbGlnbm1lbnQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGNvbnN0YW50RGF0YUF0SW5kZXhfLAorICAgICJjb25zdGFudERhdGFBdEluZGV4OiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY29uc3RhbnRWYWx1ZXMsCisgICAgImNvbnN0YW50VmFsdWVz
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb250ZW50cywKKyAgICAiY29udGVudHMiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNvbnRyb2xEZXBlbmRlbmNpZXMsCisgICAgImNvbnRyb2xEZXBl
bmRlbmNpZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbnZlcnRTcGFyc2VQaXhlbFJlZ2lv
bnNfdG9UaWxlUmVnaW9uc193aXRoVGlsZVNpemVfYWxpZ25tZW50TW9kZV9udW1SZWdpb25zXywK
KyAgICAiY29udmVydFNwYXJzZVBpeGVsUmVnaW9uczp0b1RpbGVSZWdpb25zOndpdGhUaWxlU2l6
ZTphbGlnbm1lbnRNb2RlOm51bVJlZ2lvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb252
ZXJ0U3BhcnNlVGlsZVJlZ2lvbnNfdG9QaXhlbFJlZ2lvbnNfd2l0aFRpbGVTaXplX251bVJlZ2lv
bnNfLAorICAgICJjb252ZXJ0U3BhcnNlVGlsZVJlZ2lvbnM6dG9QaXhlbFJlZ2lvbnM6d2l0aFRp
bGVTaXplOm51bVJlZ2lvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5QWNjZWxlcmF0
aW9uU3RydWN0dXJlX3RvQWNjZWxlcmF0aW9uU3RydWN0dXJlXywKKyAgICAiY29weUFjY2VsZXJh
dGlvblN0cnVjdHVyZTp0b0FjY2VsZXJhdGlvblN0cnVjdHVyZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGNvcHlBbmRDb21wYWN0QWNjZWxlcmF0aW9uU3RydWN0dXJlX3RvQWNjZWxlcmF0aW9u
U3RydWN0dXJlXywKKyAgICAiY29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6dG9B
Y2NlbGVyYXRpb25TdHJ1Y3R1cmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbUJ1
ZmZlcl9zb3VyY2VPZmZzZXRfc291cmNlQnl0ZXNQZXJSb3dfc291cmNlQnl0ZXNQZXJJbWFnZV9z
b3VyY2VTaXplX3RvVGV4dHVyZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVz
dGluYXRpb25PcmlnaW5fLAorICAgICJjb3B5RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6c291cmNl
Qnl0ZXNQZXJSb3c6c291cmNlQnl0ZXNQZXJJbWFnZTpzb3VyY2VTaXplOnRvVGV4dHVyZTpkZXN0
aW5hdGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbUJ1ZmZlcl9zb3VyY2VPZmZzZXRfc291cmNlQnl0ZXNQ
ZXJSb3dfc291cmNlQnl0ZXNQZXJJbWFnZV9zb3VyY2VTaXplX3RvVGV4dHVyZV9kZXN0aW5hdGlv
blNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVzdGluYXRpb25PcmlnaW5fb3B0aW9uc18sCisgICAg
ImNvcHlGcm9tQnVmZmVyOnNvdXJjZU9mZnNldDpzb3VyY2VCeXRlc1BlclJvdzpzb3VyY2VCeXRl
c1BlckltYWdlOnNvdXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRp
b25MZXZlbDpkZXN0aW5hdGlvbk9yaWdpbjpvcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoY29weUZyb21CdWZmZXJfc291cmNlT2Zmc2V0X3RvQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0
X3NpemVfLAorICAgICJjb3B5RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6dG9CdWZmZXI6ZGVzdGlu
YXRpb25PZmZzZXQ6c2l6ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvcHlGcm9tVGV4dHVy
ZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF9zb3VyY2VPcmlnaW5fc291cmNlU2l6ZV90b0J1ZmZl
cl9kZXN0aW5hdGlvbk9mZnNldF9kZXN0aW5hdGlvbkJ5dGVzUGVyUm93X2Rlc3RpbmF0aW9uQnl0
ZXNQZXJJbWFnZV8sCisgICAgImNvcHlGcm9tVGV4dHVyZTpzb3VyY2VTbGljZTpzb3VyY2VMZXZl
bDpzb3VyY2VPcmlnaW46c291cmNlU2l6ZTp0b0J1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDpkZXN0
aW5hdGlvbkJ5dGVzUGVyUm93OmRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF9zb3Vy
Y2VPcmlnaW5fc291cmNlU2l6ZV90b0J1ZmZlcl9kZXN0aW5hdGlvbk9mZnNldF9kZXN0aW5hdGlv
bkJ5dGVzUGVyUm93X2Rlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZV9vcHRpb25zXywKKyAgICAiY29w
eUZyb21UZXh0dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNvdXJjZU9yaWdpbjpzb3VyY2VT
aXplOnRvQnVmZmVyOmRlc3RpbmF0aW9uT2Zmc2V0OmRlc3RpbmF0aW9uQnl0ZXNQZXJSb3c6ZGVz
dGluYXRpb25CeXRlc1BlckltYWdlOm9wdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChj
b3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNlTGV2ZWxfc291cmNlT3JpZ2luX3NvdXJj
ZVNpemVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5h
dGlvbk9yaWdpbl8sCisgICAgImNvcHlGcm9tVGV4dHVyZTpzb3VyY2VTbGljZTpzb3VyY2VMZXZl
bDpzb3VyY2VPcmlnaW46c291cmNlU2l6ZTp0b1RleHR1cmU6ZGVzdGluYXRpb25TbGljZTpkZXN0
aW5hdGlvbkxldmVsOmRlc3RpbmF0aW9uT3JpZ2luOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
Y29weUZyb21UZXh0dXJlX3NvdXJjZVNsaWNlX3NvdXJjZUxldmVsX3RvVGV4dHVyZV9kZXN0aW5h
dGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfc2xpY2VDb3VudF9sZXZlbENvdW50XywKKyAgICAi
Y29weUZyb21UZXh0dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnRvVGV4dHVyZTpkZXN0aW5h
dGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6c2xpY2VDb3VudDpsZXZlbENvdW50OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoY29weUZyb21UZXh0dXJlX3RvVGV4dHVyZV8sCisgICAgImNvcHlG
cm9tVGV4dHVyZTp0b1RleHR1cmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5SW5kaXJl
Y3RDb21tYW5kQnVmZmVyX3NvdXJjZVJhbmdlX2Rlc3RpbmF0aW9uX2Rlc3RpbmF0aW9uSW5kZXhf
LAorICAgICJjb3B5SW5kaXJlY3RDb21tYW5kQnVmZmVyOnNvdXJjZVJhbmdlOmRlc3RpbmF0aW9u
OmRlc3RpbmF0aW9uSW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5UGFyYW1ldGVy
RGF0YVRvQnVmZmVyX29mZnNldF8sCisgICAgImNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXI6b2Zm
c2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY291bnRlclNldCwKKyAgICAiY291bnRlclNl
dCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY291bnRlclNldHMsCisgICAgImNvdW50ZXJTZXRz
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3VudGVycywKKyAgICAiY291bnRlcnMiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNwdUNhY2hlTW9kZSwKKyAgICAiY3B1Q2FjaGVNb2RlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChjdXJyZW50QWxsb2NhdGVkU2l6ZSwKKyAgICAiY3VycmVudEFs
bG9jYXRlZFNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRhdGEsCisgICAgImRhdGEiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRhdGFTaXplLAorICAgICJkYXRhU2l6ZSIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZGF0YVR5cGUsCisgICAgImRhdGFUeXBlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChkZWFsbG9jLAorICAgICJkZWFsbG9jIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChk
ZWJ1Z0xvY2F0aW9uLAorICAgICJkZWJ1Z0xvY2F0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChkZWJ1Z1NpZ25wb3N0cywKKyAgICAiZGVidWdTaWducG9zdHMiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGRlZmF1bHRDYXB0dXJlU2NvcGUsCisgICAgImRlZmF1bHRDYXB0dXJlU2NvcGUiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCwKKyAgICAiZGVm
YXVsdFJhc3RlclNhbXBsZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0aCwKKyAg
ICAiZGVwdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlcHRoQXR0YWNobWVudCwKKyAgICAi
ZGVwdGhBdHRhY2htZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0aEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdCwKKyAgICAiZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGRlcHRoQ29tcGFyZUZ1bmN0aW9uLAorICAgICJkZXB0aENvbXBhcmVGdW5j
dGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVwdGhGYWlsdXJlT3BlcmF0aW9uLAorICAg
ICJkZXB0aEZhaWx1cmVPcGVyYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlcHRoUGxh
bmUsCisgICAgImRlcHRoUGxhbmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlcHRoUmVzb2x2
ZUZpbHRlciwKKyAgICAiZGVwdGhSZXNvbHZlRmlsdGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChkZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uLAorICAgICJkZXB0aFN0ZW5jaWxQYXNzT3BlcmF0
aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXNjcmlwdG9yLAorICAgICJkZXNjcmlwdG9y
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXN0aW5hdGlvbiwKKyAgICAiZGVzdGluYXRpb24i
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvciwKKyAg
ICAiZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChk
ZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yLAorICAgICJkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9y
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXZpY2UsCisgICAgImRldmljZSIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZGlkTW9kaWZ5UmFuZ2VfLAorICAgICJkaWRNb2RpZnlSYW5nZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRpc3BhdGNoUXVldWUsCisgICAgImRpc3BhdGNoUXVldWUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRpc3BhdGNoVGhyZWFkZ3JvdXBzX3RocmVhZHNQZXJU
aHJlYWRncm91cF8sCisgICAgImRpc3BhdGNoVGhyZWFkZ3JvdXBzOnRocmVhZHNQZXJUaHJlYWRn
cm91cDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRpc3BhdGNoVGhyZWFkZ3JvdXBzV2l0aElu
ZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0X3RocmVhZHNQZXJUaHJlYWRncm91cF8s
CisgICAgImRpc3BhdGNoVGhyZWFkZ3JvdXBzV2l0aEluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVm
ZmVyT2Zmc2V0OnRocmVhZHNQZXJUaHJlYWRncm91cDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGRpc3BhdGNoVGhyZWFkc190aHJlYWRzUGVyVGhyZWFkZ3JvdXBfLAorICAgICJkaXNwYXRjaFRo
cmVhZHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlz
cGF0Y2hUaHJlYWRzUGVyVGlsZV8sCisgICAgImRpc3BhdGNoVGhyZWFkc1BlclRpbGU6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChkaXNwYXRjaFR5cGUsCisgICAgImRpc3BhdGNoVHlwZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd0luZGV4ZWRQYXRjaGVzX3BhdGNoSW5kZXhCdWZmZXJf
cGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9jb250cm9sUG9p
bnRJbmRleEJ1ZmZlck9mZnNldF9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8s
CisgICAgImRyYXdJbmRleGVkUGF0Y2hlczpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZm
ZXJPZmZzZXQ6Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZmZXJP
ZmZzZXQ6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChkcmF3SW5kZXhlZFBhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNo
SW5kZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZl
cl9jb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5j
ZV8sCisgICAgImRyYXdJbmRleGVkUGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJ
bmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zmc2V0OmNvbnRyb2xQb2ludEluZGV4QnVmZmVy
OmNvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd0luZGV4ZWRQYXRjaGVzX3BhdGNoU3RhcnRf
cGF0Y2hDb3VudF9wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfY29udHJv
bFBvaW50SW5kZXhCdWZmZXJfY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VD
b3VudF9iYXNlSW5zdGFuY2VfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyX3Rlc3NlbGxhdGlvbkZh
Y3RvckJ1ZmZlck9mZnNldF90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlkZV8s
CisgICAgImRyYXdJbmRleGVkUGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRl
eEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zmc2V0OmNvbnRyb2xQb2ludEluZGV4QnVmZmVyOmNv
bnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOnRl
c3NlbGxhdGlvbkZhY3RvckJ1ZmZlcjp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXQ6dGVz
c2VsbGF0aW9uRmFjdG9yQnVmZmVySW5zdGFuY2VTdHJpZGU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5cGVfaW5kZXhCdWZm
ZXJfaW5kZXhCdWZmZXJPZmZzZXRfLAorICAgICJkcmF3SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhD
b3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5cGVf
aW5kZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF8sCisgICAgImRyYXdJ
bmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1
ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd0lu
ZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5kZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4QnVm
ZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZVZlcnRleF9iYXNlSW5zdGFuY2VfLAorICAgICJk
cmF3SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5k
ZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlVmVydGV4OmJhc2VJbnN0YW5jZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRleFR5cGVfaW5k
ZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJP
ZmZzZXRfLAorICAgICJkcmF3SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhUeXBlOmluZGV4QnVmZmVy
OmluZGV4QnVmZmVyT2Zmc2V0OmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd1BhdGNoZXNfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRj
aEluZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XywK
KyAgICAiZHJhd1BhdGNoZXM6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zmc2V0
OmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoZHJhd1BhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJf
cGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV8sCisgICAg
ImRyYXdQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNo
SW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChkcmF3UGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRl
eEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNl
X3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcl90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXRf
dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVySW5zdGFuY2VTdHJpZGVfLAorICAgICJkcmF3UGF0Y2hl
czpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVy
T2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZl
cjp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXQ6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVy
SW5zdGFuY2VTdHJpZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UHJpbWl0aXZlc19p
bmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8sCisgICAgImRyYXdQcmltaXRpdmVz
OmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVydGV4Q291bnRfLAorICAgICJkcmF3
UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGRyYXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50X2luc3RhbmNlQ291bnRf
LAorICAgICJkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDppbnN0YW5jZUNv
dW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRf
dmVydGV4Q291bnRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfLAorICAgICJkcmF3UHJpbWl0
aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDppbnN0YW5jZUNvdW50OmJhc2VJbnN0YW5jZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdhYmxlSUQsCisgICAgImRyYXdhYmxlSUQiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGVsZW1lbnRBcnJheVR5cGUsCisgICAgImVsZW1lbnRBcnJh
eVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVsZW1lbnRJc0FyZ3VtZW50QnVmZmVyLAor
ICAgICJlbGVtZW50SXNBcmd1bWVudEJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxl
bWVudFBvaW50ZXJUeXBlLAorICAgICJlbGVtZW50UG9pbnRlclR5cGUiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGVsZW1lbnRTdHJ1Y3RUeXBlLAorICAgICJlbGVtZW50U3RydWN0VHlwZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudFRleHR1cmVSZWZlcmVuY2VUeXBlLAorICAgICJl
bGVtZW50VGV4dHVyZVJlZmVyZW5jZVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVsZW1l
bnRUeXBlLAorICAgICJlbGVtZW50VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZW5jb2Rl
U2lnbmFsRXZlbnRfdmFsdWVfLAorICAgICJlbmNvZGVTaWduYWxFdmVudDp2YWx1ZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGVuY29kZVdhaXRGb3JFdmVudF92YWx1ZV8sCisgICAgImVuY29k
ZVdhaXRGb3JFdmVudDp2YWx1ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVuY29kZWRMZW5n
dGgsCisgICAgImVuY29kZWRMZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVuY29kZXJM
YWJlbCwKKyAgICAiZW5jb2RlckxhYmVsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmRFbmNv
ZGluZywKKyAgICAiZW5kRW5jb2RpbmciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVuZE9mRW5j
b2RlclNhbXBsZUluZGV4LAorICAgICJlbmRPZkVuY29kZXJTYW1wbGVJbmRleCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4LAorICAgICJlbmRPZkZyYWdt
ZW50U2FtcGxlSW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVuZE9mVmVydGV4U2FtcGxl
SW5kZXgsCisgICAgImVuZE9mVmVydGV4U2FtcGxlSW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGVucXVldWUsCisgICAgImVucXVldWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVycm9y
LAorICAgICJlcnJvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZXJyb3JPcHRpb25zLAorICAg
ICJlcnJvck9wdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVycm9yU3RhdGUsCisgICAg
ImVycm9yU3RhdGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGV4ZWN1dGVDb21tYW5kc0luQnVm
ZmVyX2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XywKKyAgICAiZXhlY3V0ZUNv
bW1hbmRzSW5CdWZmZXI6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcl93aXRoUmFuZ2VfLAor
ICAgICJleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChmYXN0TWF0aEVuYWJsZWQsCisgICAgImZhc3RNYXRoRW5hYmxlZCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZmlsbEJ1ZmZlcl9yYW5nZV92YWx1ZV8sCisgICAgImZpbGxCdWZmZXI6
cmFuZ2U6dmFsdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmaXJzdE1pcG1hcEluVGFpbCwK
KyAgICAiZmlyc3RNaXBtYXBJblRhaWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZvcm1hdCwK
KyAgICAiZm9ybWF0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmcmFnbWVudEFkZGl0aW9uYWxC
aW5hcnlGdW5jdGlvbnMsCisgICAgImZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoZnJhZ21lbnRBcmd1bWVudHMsCisgICAgImZyYWdtZW50
QXJndW1lbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmcmFnbWVudEJ1ZmZlcnMsCisgICAg
ImZyYWdtZW50QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnJhZ21lbnRGdW5jdGlv
biwKKyAgICAiZnJhZ21lbnRGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnJhZ21l
bnRMaW5rZWRGdW5jdGlvbnMsCisgICAgImZyYWdtZW50TGlua2VkRnVuY3Rpb25zIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcywKKyAgICAiZnJhZ21l
bnRQcmVsb2FkZWRMaWJyYXJpZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZyb250RmFjZVN0
ZW5jaWwsCisgICAgImZyb250RmFjZVN0ZW5jaWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1
bmN0aW9uLAorICAgICJmdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25D
b25zdGFudHNEaWN0aW9uYXJ5LAorICAgICJmdW5jdGlvbkNvbnN0YW50c0RpY3Rpb25hcnkiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9uQ291bnQsCisgICAgImZ1bmN0aW9uQ291bnQi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9uRGVzY3JpcHRvciwKKyAgICAiZnVuY3Rp
b25EZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbkdyYXBocywKKyAg
ICAiZnVuY3Rpb25HcmFwaHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9uSGFuZGxl
V2l0aEZ1bmN0aW9uXywKKyAgICAiZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb246Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbkhhbmRsZVdpdGhGdW5jdGlvbl9zdGFnZV8sCisgICAg
ImZ1bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uOnN0YWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZnVuY3Rpb25OYW1lLAorICAgICJmdW5jdGlvbk5hbWUiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGZ1bmN0aW9uTmFtZXMsCisgICAgImZ1bmN0aW9uTmFtZXMiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGZ1bmN0aW9uVHlwZSwKKyAgICAiZnVuY3Rpb25UeXBlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChmdW5jdGlvbnMsCisgICAgImZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZ2VuZXJhdGVNaXBtYXBzRm9yVGV4dHVyZV8sCisgICAgImdlbmVyYXRlTWlwbWFwc0ZvclRl
eHR1cmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZW9tZXRyeURlc2NyaXB0b3JzLAorICAg
ICJnZW9tZXRyeURlc2NyaXB0b3JzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXRCeXRlc19i
eXRlc1BlclJvd19ieXRlc1BlckltYWdlX2Zyb21SZWdpb25fbWlwbWFwTGV2ZWxfc2xpY2VfLAor
ICAgICJnZXRCeXRlczpieXRlc1BlclJvdzpieXRlc1BlckltYWdlOmZyb21SZWdpb246bWlwbWFw
TGV2ZWw6c2xpY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXRCeXRlc19ieXRlc1BlclJv
d19mcm9tUmVnaW9uX21pcG1hcExldmVsXywKKyAgICAiZ2V0Qnl0ZXM6Ynl0ZXNQZXJSb3c6ZnJv
bVJlZ2lvbjptaXBtYXBMZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdldERlZmF1bHRT
YW1wbGVQb3NpdGlvbnNfY291bnRfLAorICAgICJnZXREZWZhdWx0U2FtcGxlUG9zaXRpb25zOmNv
dW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZ2V0U2FtcGxlUG9zaXRpb25zX2NvdW50XywK
KyAgICAiZ2V0U2FtcGxlUG9zaXRpb25zOmNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
Z2V0VGV4dHVyZUFjY2Vzc0NvdW50ZXJzX3JlZ2lvbl9taXBMZXZlbF9zbGljZV9yZXNldENvdW50
ZXJzX2NvdW50ZXJzQnVmZmVyX2NvdW50ZXJzQnVmZmVyT2Zmc2V0XywKKyAgICAiZ2V0VGV4dHVy
ZUFjY2Vzc0NvdW50ZXJzOnJlZ2lvbjptaXBMZXZlbDpzbGljZTpyZXNldENvdW50ZXJzOmNvdW50
ZXJzQnVmZmVyOmNvdW50ZXJzQnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
Z3JvdXBzLAorICAgICJncm91cHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhhc1VuaWZpZWRN
ZW1vcnksCisgICAgImhhc1VuaWZpZWRNZW1vcnkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhh
emFyZFRyYWNraW5nTW9kZSwKKyAgICAiaGF6YXJkVHJhY2tpbmdNb2RlIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChoZWFwLAorICAgICJoZWFwIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChoZWFw
QnVmZmVyU2l6ZUFuZEFsaWduV2l0aExlbmd0aF9vcHRpb25zXywKKyAgICAiaGVhcEJ1ZmZlclNp
emVBbmRBbGlnbldpdGhMZW5ndGg6b3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhl
YXBPZmZzZXQsCisgICAgImhlYXBPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhlYXBU
ZXh0dXJlU2l6ZUFuZEFsaWduV2l0aERlc2NyaXB0b3JfLAorICAgICJoZWFwVGV4dHVyZVNpemVB
bmRBbGlnbldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaGVpZ2h0LAor
ICAgICJoZWlnaHQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhvcml6b250YWwsCisgICAgImhv
cml6b250YWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhvcml6b250YWxTYW1wbGVTdG9yYWdl
LAorICAgICJob3Jpem9udGFsU2FtcGxlU3RvcmFnZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aW1hZ2VibG9ja01lbW9yeUxlbmd0aEZvckRpbWVuc2lvbnNfLAorICAgICJpbWFnZWJsb2NrTWVt
b3J5TGVuZ3RoRm9yRGltZW5zaW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGltYWdlYmxv
Y2tTYW1wbGVMZW5ndGgsCisgICAgImltYWdlYmxvY2tTYW1wbGVMZW5ndGgiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGluZGV4LAorICAgICJpbmRleCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aW5kZXhCdWZmZXIsCisgICAgImluZGV4QnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChp
bmRleEJ1ZmZlckluZGV4LAorICAgICJpbmRleEJ1ZmZlckluZGV4Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChpbmRleEJ1ZmZlck9mZnNldCwKKyAgICAiaW5kZXhCdWZmZXJPZmZzZXQiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGluZGV4VHlwZSwKKyAgICAiaW5kZXhUeXBlIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChpbmRpcmVjdENvbXB1dGVDb21tYW5kQXRJbmRleF8sCisgICAgImluZGly
ZWN0Q29tcHV0ZUNvbW1hbmRBdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5kaXJl
Y3RSZW5kZXJDb21tYW5kQXRJbmRleF8sCisgICAgImluZGlyZWN0UmVuZGVyQ29tbWFuZEF0SW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbmhlcml0QnVmZmVycywKKyAgICAiaW5oZXJp
dEJ1ZmZlcnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaGVyaXRQaXBlbGluZVN0YXRlLAor
ICAgICJpbmhlcml0UGlwZWxpbmVTdGF0ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5pdCwK
KyAgICAiaW5pdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhBcmd1bWVudEluZGV4
XywKKyAgICAiaW5pdFdpdGhBcmd1bWVudEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aW5pdFdpdGhEaXNwYXRjaFF1ZXVlXywKKyAgICAiaW5pdFdpdGhEaXNwYXRjaFF1ZXVlOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhGdW5jdGlvbk5hbWVfbm9kZXNfb3V0cHV0Tm9k
ZV9hdHRyaWJ1dGVzXywKKyAgICAiaW5pdFdpdGhGdW5jdGlvbk5hbWU6bm9kZXM6b3V0cHV0Tm9k
ZTphdHRyaWJ1dGVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhOYW1lX2FyZ3Vt
ZW50c19jb250cm9sRGVwZW5kZW5jaWVzXywKKyAgICAiaW5pdFdpdGhOYW1lOmFyZ3VtZW50czpj
b250cm9sRGVwZW5kZW5jaWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhTYW1w
bGVDb3VudF8sCisgICAgImluaXRXaXRoU2FtcGxlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpbml0V2l0aFNhbXBsZUNvdW50X2hvcml6b250YWxfdmVydGljYWxfLAorICAgICJpbml0
V2l0aFNhbXBsZUNvdW50Omhvcml6b250YWw6dmVydGljYWw6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpbnB1dFByaW1pdGl2ZVRvcG9sb2d5LAorICAgICJpbnB1dFByaW1pdGl2ZVRvcG9sb2d5
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFyeSwKKyAg
ICAiaW5zZXJ0RGVidWdDYXB0dXJlQm91bmRhcnkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlu
c2VydERlYnVnU2lnbnBvc3RfLAorICAgICJpbnNlcnREZWJ1Z1NpZ25wb3N0OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoaW5zZXJ0TGlicmFyaWVzLAorICAgICJpbnNlcnRMaWJyYXJpZXMiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGluc3RhbGxOYW1lLAorICAgICJpbnN0YWxsTmFtZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaW5zdGFuY2VDb3VudCwKKyAgICAiaW5zdGFuY2VDb3VudCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyLAorICAgICJp
bnN0YW5jZURlc2NyaXB0b3JCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluc3RhbmNl
RGVzY3JpcHRvckJ1ZmZlck9mZnNldCwKKyAgICAiaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zm
c2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZURlc2NyaXB0b3JTdHJpZGUsCisg
ICAgImluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5z
dGFuY2VEZXNjcmlwdG9yVHlwZSwKKyAgICAiaW5zdGFuY2VEZXNjcmlwdG9yVHlwZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcywKKyAgICAi
aW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IsCisgICAgImludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlT2Zmc2V0LAorICAgICJpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zm
c2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpb3N1cmZhY2UsCisgICAgImlvc3VyZmFjZSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaW9zdXJmYWNlUGxhbmUsCisgICAgImlvc3VyZmFjZVBs
YW5lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0FjdGl2ZSwKKyAgICAiaXNBY3RpdmUiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGlzQWxpYXNhYmxlLAorICAgICJpc0FsaWFzYWJsZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaXNBbHBoYVRvQ292ZXJhZ2VFbmFibGVkLAorICAgICJpc0Fs
cGhhVG9Db3ZlcmFnZUVuYWJsZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzQWxwaGFUb09u
ZUVuYWJsZWQsCisgICAgImlzQWxwaGFUb09uZUVuYWJsZWQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGlzQmxlbmRpbmdFbmFibGVkLAorICAgICJpc0JsZW5kaW5nRW5hYmxlZCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoaXNDYXB0dXJpbmcsCisgICAgImlzQ2FwdHVyaW5nIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChpc0RlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkLAorICAg
ICJpc0RlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChpc0RlcHRoVGV4dHVyZSwKKyAgICAiaXNEZXB0aFRleHR1cmUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGlzRGVwdGhXcml0ZUVuYWJsZWQsCisgICAgImlzRGVwdGhXcml0ZUVuYWJs
ZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzRnJhbWVidWZmZXJPbmx5LAorICAgICJpc0Zy
YW1lYnVmZmVyT25seSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNIZWFkbGVzcywKKyAgICAi
aXNIZWFkbGVzcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNMb3dQb3dlciwKKyAgICAiaXNM
b3dQb3dlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNQYXRjaENvbnRyb2xQb2ludERhdGEs
CisgICAgImlzUGF0Y2hDb250cm9sUG9pbnREYXRhIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChp
c1BhdGNoRGF0YSwKKyAgICAiaXNQYXRjaERhdGEiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlz
UmFzdGVyaXphdGlvbkVuYWJsZWQsCisgICAgImlzUmFzdGVyaXphdGlvbkVuYWJsZWQiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGlzUmVtb3ZhYmxlLAorICAgICJpc1JlbW92YWJsZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoaXNTaGFyZWFibGUsCisgICAgImlzU2hhcmVhYmxlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChpc1NwYXJzZSwKKyAgICAiaXNTcGFyc2UiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGlzVGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkLAorICAgICJpc1Rlc3Nl
bGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoa2VybmVs
RW5kVGltZSwKKyAgICAia2VybmVsRW5kVGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoa2Vy
bmVsU3RhcnRUaW1lLAorICAgICJrZXJuZWxTdGFydFRpbWUiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGxhYmVsLAorICAgICJsYWJlbCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGFuZ3VhZ2VW
ZXJzaW9uLAorICAgICJsYW5ndWFnZVZlcnNpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxh
eWVyQXRJbmRleF8sCisgICAgImxheWVyQXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGxheWVyQ291bnQsCisgICAgImxheWVyQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxh
eWVycywKKyAgICAibGF5ZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsYXlvdXRzLAorICAg
ICJsYXlvdXRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsZW5ndGgsCisgICAgImxlbmd0aCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobGV2ZWwsCisgICAgImxldmVsIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChsaWJyYXJpZXMsCisgICAgImxpYnJhcmllcyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobGlicmFyeVR5cGUsCisgICAgImxpYnJhcnlUeXBlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChsaW5lLAorICAgICJsaW5lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsaW5rZWRGdW5j
dGlvbnMsCisgICAgImxpbmtlZEZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobG9h
ZEFjdGlvbiwKKyAgICAibG9hZEFjdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobG9jYXRp
b24sCisgICAgImxvY2F0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsb2NhdGlvbk51bWJl
ciwKKyAgICAibG9jYXRpb25OdW1iZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxvZEF2ZXJh
Z2UsCisgICAgImxvZEF2ZXJhZ2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxvZE1heENsYW1w
LAorICAgICJsb2RNYXhDbGFtcCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobG9kTWluQ2xhbXAs
CisgICAgImxvZE1pbkNsYW1wIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsb2dzLAorICAgICJs
b2dzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYWdGaWx0ZXIsCisgICAgIm1hZ0ZpbHRlciIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobWFrZUFsaWFzYWJsZSwKKyAgICAibWFrZUFsaWFzYWJs
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWFwUGh5c2ljYWxUb1NjcmVlbkNvb3JkaW5hdGVz
X2ZvckxheWVyXywKKyAgICAibWFwUGh5c2ljYWxUb1NjcmVlbkNvb3JkaW5hdGVzOmZvckxheWVy
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWFwU2NyZWVuVG9QaHlzaWNhbENvb3JkaW5hdGVz
X2ZvckxheWVyXywKKyAgICAibWFwU2NyZWVuVG9QaHlzaWNhbENvb3JkaW5hdGVzOmZvckxheWVy
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4QW5pc290cm9weSwKKyAgICAibWF4QW5pc290
cm9weSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4QXJndW1lbnRCdWZmZXJTYW1wbGVyQ291
bnQsCisgICAgIm1heEFyZ3VtZW50QnVmZmVyU2FtcGxlckNvdW50Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChtYXhBdmFpbGFibGVTaXplV2l0aEFsaWdubWVudF8sCisgICAgIm1heEF2YWlsYWJs
ZVNpemVXaXRoQWxpZ25tZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4QnVmZmVyTGVu
Z3RoLAorICAgICJtYXhCdWZmZXJMZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heENh
bGxTdGFja0RlcHRoLAorICAgICJtYXhDYWxsU3RhY2tEZXB0aCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQsCisgICAgIm1heEZyYWdtZW50QnVmZmVy
QmluZENvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhGcmFnbWVudENhbGxTdGFja0Rl
cHRoLAorICAgICJtYXhGcmFnbWVudENhbGxTdGFja0RlcHRoIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChtYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQsCisgICAgIm1heEtlcm5lbEJ1ZmZlckJpbmRD
b3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4U2FtcGxlQ291bnQsCisgICAgIm1heFNh
bXBsZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhUZXNzZWxsYXRpb25GYWN0b3Is
CisgICAgIm1heFRlc3NlbGxhdGlvbkZhY3RvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4
VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgsCisgICAgIm1heFRocmVhZGdyb3VwTWVtb3J5TGVuZ3Ro
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhUaHJlYWRzUGVyVGhyZWFkZ3JvdXAsCisgICAg
Im1heFRocmVhZHNQZXJUaHJlYWRncm91cCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VG90
YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAsCisgICAgIm1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdy
b3VwIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhUcmFuc2ZlclJhdGUsCisgICAgIm1heFRy
YW5zZmVyUmF0ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VmVydGV4QW1wbGlmaWNhdGlv
bkNvdW50LAorICAgICJtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG1heFZlcnRleEJ1ZmZlckJpbmRDb3VudCwKKyAgICAibWF4VmVydGV4QnVmZmVy
QmluZENvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0
aCwKKyAgICAibWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1lbWJlckJ5TmFtZV8sCisgICAgIm1lbWJlckJ5TmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG1lbWJlcnMsCisgICAgIm1lbWJlcnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1lbW9y
eUJhcnJpZXJXaXRoUmVzb3VyY2VzX2NvdW50XywKKyAgICAibWVtb3J5QmFycmllcldpdGhSZXNv
dXJjZXM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtZW1vcnlCYXJyaWVyV2l0aFJl
c291cmNlc19jb3VudF9hZnRlclN0YWdlc19iZWZvcmVTdGFnZXNfLAorICAgICJtZW1vcnlCYXJy
aWVyV2l0aFJlc291cmNlczpjb3VudDphZnRlclN0YWdlczpiZWZvcmVTdGFnZXM6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChtZW1vcnlCYXJyaWVyV2l0aFNjb3BlXywKKyAgICAibWVtb3J5QmFy
cmllcldpdGhTY29wZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1lbW9yeUJhcnJpZXJXaXRo
U2NvcGVfYWZ0ZXJTdGFnZXNfYmVmb3JlU3RhZ2VzXywKKyAgICAibWVtb3J5QmFycmllcldpdGhT
Y29wZTphZnRlclN0YWdlczpiZWZvcmVTdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCht
aW5GaWx0ZXIsCisgICAgIm1pbkZpbHRlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWluaW11
bUxpbmVhclRleHR1cmVBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdF8sCisgICAgIm1pbmltdW1MaW5l
YXJUZXh0dXJlQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChtaW5pbXVtVGV4dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVsRm9ybWF0XywKKyAgICAibWlu
aW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG1pcEZpbHRlciwKKyAgICAibWlwRmlsdGVyIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChtaXBtYXBMZXZlbENvdW50LAorICAgICJtaXBtYXBMZXZlbENvdW50Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChtb3Rpb25FbmRCb3JkZXJNb2RlLAorICAgICJtb3Rpb25FbmRCb3JkZXJN
b2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25FbmRUaW1lLAorICAgICJtb3Rpb25F
bmRUaW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25LZXlmcmFtZUNvdW50LAorICAg
ICJtb3Rpb25LZXlmcmFtZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25TdGFy
dEJvcmRlck1vZGUsCisgICAgIm1vdGlvblN0YXJ0Qm9yZGVyTW9kZSIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobW90aW9uU3RhcnRUaW1lLAorICAgICJtb3Rpb25TdGFydFRpbWUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG1vdGlvblRyYW5zZm9ybUJ1ZmZlciwKKyAgICAibW90aW9uVHJhbnNm
b3JtQnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25UcmFuc2Zvcm1CdWZmZXJP
ZmZzZXQsCisgICAgIm1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobW90aW9uVHJhbnNmb3JtQ291bnQsCisgICAgIm1vdGlvblRyYW5zZm9ybUNvdW50
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtdXRhYmlsaXR5LAorICAgICJtdXRhYmlsaXR5Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChuYW1lLAorICAgICJuYW1lIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRoRGVzY3JpcHRvcl8sCisgICAgIm5l
d0FjY2VsZXJhdGlvblN0cnVjdHVyZVdpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aFNpemVfLAorICAgICJuZXdBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVXaXRoU2l6ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FyZ3Vt
ZW50RW5jb2RlckZvckJ1ZmZlckF0SW5kZXhfLAorICAgICJuZXdBcmd1bWVudEVuY29kZXJGb3JC
dWZmZXJBdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3QXJndW1lbnRFbmNvZGVy
V2l0aEFyZ3VtZW50c18sCisgICAgIm5ld0FyZ3VtZW50RW5jb2RlcldpdGhBcmd1bWVudHM6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXhf
LAorICAgICJuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXhfcmVmbGVjdGlvbl8s
CisgICAgIm5ld0FyZ3VtZW50RW5jb2RlcldpdGhCdWZmZXJJbmRleDpyZWZsZWN0aW9uOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobmV3QmluYXJ5QXJjaGl2ZVdpdGhEZXNjcmlwdG9yX2Vycm9y
XywKKyAgICAibmV3QmluYXJ5QXJjaGl2ZVdpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobmV3QnVmZmVyV2l0aEJ5dGVzX2xlbmd0aF9vcHRpb25zXywKKyAgICAi
bmV3QnVmZmVyV2l0aEJ5dGVzOmxlbmd0aDpvcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3QnVmZmVyV2l0aEJ5dGVzTm9Db3B5X2xlbmd0aF9vcHRpb25zX2RlYWxsb2NhdG9yXywK
KyAgICAibmV3QnVmZmVyV2l0aEJ5dGVzTm9Db3B5Omxlbmd0aDpvcHRpb25zOmRlYWxsb2NhdG9y
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3QnVmZmVyV2l0aExlbmd0aF9vcHRpb25zXywK
KyAgICAibmV3QnVmZmVyV2l0aExlbmd0aDpvcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3QnVmZmVyV2l0aExlbmd0aF9vcHRpb25zX29mZnNldF8sCisgICAgIm5ld0J1ZmZlcldp
dGhMZW5ndGg6b3B0aW9uczpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDYXB0
dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlXywKKyAgICAibmV3Q2FwdHVyZVNjb3BlV2l0aENvbW1h
bmRRdWV1ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhEZXZp
Y2VfLAorICAgICJuZXdDYXB0dXJlU2NvcGVXaXRoRGV2aWNlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobmV3Q29tbWFuZFF1ZXVlLAorICAgICJuZXdDb21tYW5kUXVldWUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKG5ld0NvbW1hbmRRdWV1ZVdpdGhNYXhDb21tYW5kQnVmZmVyQ291bnRfLAor
ICAgICJuZXdDb21tYW5kUXVldWVXaXRoTWF4Q29tbWFuZEJ1ZmZlckNvdW50OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoQWRkaXRpb25hbEJpbmFy
eUZ1bmN0aW9uc19lcnJvcl8sCisgICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEFkZGl0
aW9uYWxCaW5hcnlGdW5jdGlvbnM6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdD
b21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfY29tcGxldGlvbkhhbmRs
ZXJfLAorICAgICJuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6
Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8sCisgICAg
Im5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0aW9uczpyZWZsZWN0aW9u
OmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoRnVuY3Rpb25fY29tcGxldGlvbkhhbmRsZXJfLAorICAgICJuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZVdpdGhGdW5jdGlvbjpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uX2Vycm9yXywKKyAgICAibmV3
Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb246ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9vcHRpb25zX2NvbXBs
ZXRpb25IYW5kbGVyXywKKyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb246
b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0Nv
bXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uX29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8s
CisgICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOm9wdGlvbnM6cmVmbGVj
dGlvbjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0NvdW50ZXJTYW1wbGVCdWZm
ZXJXaXRoRGVzY3JpcHRvcl9lcnJvcl8sCisgICAgIm5ld0NvdW50ZXJTYW1wbGVCdWZmZXJXaXRo
RGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0RlZmF1bHRMaWJy
YXJ5LAorICAgICJuZXdEZWZhdWx0TGlicmFyeSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3
RGVmYXVsdExpYnJhcnlXaXRoQnVuZGxlX2Vycm9yXywKKyAgICAibmV3RGVmYXVsdExpYnJhcnlX
aXRoQnVuZGxlOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RGVwdGhTdGVuY2ls
U3RhdGVXaXRoRGVzY3JpcHRvcl8sCisgICAgIm5ld0RlcHRoU3RlbmNpbFN0YXRlV2l0aERlc2Ny
aXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdEeW5hbWljTGlicmFyeV9lcnJvcl8s
CisgICAgIm5ld0R5bmFtaWNMaWJyYXJ5OmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3RHluYW1pY0xpYnJhcnlXaXRoVVJMX2Vycm9yXywKKyAgICAibmV3RHluYW1pY0xpYnJhcnlX
aXRoVVJMOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RXZlbnQsCisgICAgIm5l
d0V2ZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdGZW5jZSwKKyAgICAibmV3RmVuY2Ui
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0b3JfY29tcGxl
dGlvbkhhbmRsZXJfLAorICAgICJuZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yOmNvbXBsZXRpb25I
YW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRv
cl9lcnJvcl8sCisgICAgIm5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChuZXdGdW5jdGlvbldpdGhOYW1lXywKKyAgICAibmV3RnVuY3Rpb25X
aXRoTmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0Z1bmN0aW9uV2l0aE5hbWVfY29u
c3RhbnRWYWx1ZXNfY29tcGxldGlvbkhhbmRsZXJfLAorICAgICJuZXdGdW5jdGlvbldpdGhOYW1l
OmNvbnN0YW50VmFsdWVzOmNvbXBsZXRpb25IYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3RnVuY3Rpb25XaXRoTmFtZV9jb25zdGFudFZhbHVlc19lcnJvcl8sCisgICAgIm5ld0Z1
bmN0aW9uV2l0aE5hbWU6Y29uc3RhbnRWYWx1ZXM6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdIZWFwV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdIZWFwV2l0aERlc2NyaXB0b3I6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdJbmRpcmVjdENvbW1hbmRCdWZmZXJXaXRoRGVz
Y3JpcHRvcl9tYXhDb21tYW5kQ291bnRfb3B0aW9uc18sCisgICAgIm5ld0luZGlyZWN0Q29tbWFu
ZEJ1ZmZlcldpdGhEZXNjcmlwdG9yOm1heENvbW1hbmRDb3VudDpvcHRpb25zOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9y
XywKKyAgICAibmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZVdpdGhEZXNj
cmlwdG9yX3N0YWdlXywKKyAgICAibmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZVdpdGhEZXNj
cmlwdG9yOnN0YWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3SW50ZXJzZWN0aW9uRnVu
Y3Rpb25XaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0ludGVyc2Vj
dGlvbkZ1bmN0aW9uV2l0aERlc2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yX2Vycm9y
XywKKyAgICAibmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjplcnJvcjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlXaXRoRGF0YV9lcnJvcl8sCisgICAgIm5l
d0xpYnJhcnlXaXRoRGF0YTplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJh
cnlXaXRoRmlsZV9lcnJvcl8sCisgICAgIm5ld0xpYnJhcnlXaXRoRmlsZTplcnJvcjoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlXaXRoU291cmNlX29wdGlvbnNfY29tcGxldGlv
bkhhbmRsZXJfLAorICAgICJuZXdMaWJyYXJ5V2l0aFNvdXJjZTpvcHRpb25zOmNvbXBsZXRpb25I
YW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhTb3VyY2Vfb3B0
aW9uc19lcnJvcl8sCisgICAgIm5ld0xpYnJhcnlXaXRoU291cmNlOm9wdGlvbnM6ZXJyb3I6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcl9j
b21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0xpYnJhcnlXaXRoU3RpdGNoZWREZXNjcmlwdG9y
OmNvbXBsZXRpb25IYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdp
dGhTdGl0Y2hlZERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJuZXdMaWJyYXJ5V2l0aFN0aXRjaGVk
RGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlXaXRo
VVJMX2Vycm9yXywKKyAgICAibmV3TGlicmFyeVdpdGhVUkw6ZXJyb3I6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChuZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhEZXNjcmlwdG9yXywKKyAgICAi
bmV3UmFzdGVyaXphdGlvblJhdGVNYXBXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKG5ld1JlbW90ZUJ1ZmZlclZpZXdGb3JEZXZpY2VfLAorICAgICJuZXdSZW1vdGVCdWZm
ZXJWaWV3Rm9yRGV2aWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVtb3RlVGV4dHVy
ZVZpZXdGb3JEZXZpY2VfLAorICAgICJuZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRldmljZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoQWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9uc19lcnJvcl8sCisgICAgIm5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRo
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uczplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8s
CisgICAgIm5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjpjb21wbGV0aW9uSGFu
ZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRo
RGVzY3JpcHRvcl9lcnJvcl8sCisgICAgIm5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3Jp
cHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3UmVu
ZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2Ny
aXB0b3Jfb3B0aW9uc19yZWZsZWN0aW9uX2Vycm9yXywKKyAgICAibmV3UmVuZGVyUGlwZWxpbmVT
dGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVjdGlvbjplcnJvcjoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoVGlsZURlc2NyaXB0b3Jfb3B0
aW9uc19jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRo
VGlsZURlc2NyaXB0b3I6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoVGlsZURlc2NyaXB0b3Jfb3B0aW9u
c19yZWZsZWN0aW9uX2Vycm9yXywKKyAgICAibmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxl
RGVzY3JpcHRvcjpvcHRpb25zOnJlZmxlY3Rpb246ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdTYW1wbGVyU3RhdGVXaXRoRGVzY3JpcHRvcl8sCisgICAgIm5ld1NhbXBsZXJTdGF0
ZVdpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3U2hhcmVkRXZlbnQs
CisgICAgIm5ld1NoYXJlZEV2ZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdTaGFyZWRF
dmVudEhhbmRsZSwKKyAgICAibmV3U2hhcmVkRXZlbnRIYW5kbGUiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKG5ld1NoYXJlZEV2ZW50V2l0aEhhbmRsZV8sCisgICAgIm5ld1NoYXJlZEV2ZW50V2l0
aEhhbmRsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1NoYXJlZFRleHR1cmVIYW5kbGUs
CisgICAgIm5ld1NoYXJlZFRleHR1cmVIYW5kbGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d1NoYXJlZFRleHR1cmVXaXRoRGVzY3JpcHRvcl8sCisgICAgIm5ld1NoYXJlZFRleHR1cmVXaXRo
RGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1NoYXJlZFRleHR1cmVXaXRo
SGFuZGxlXywKKyAgICAibmV3U2hhcmVkVGV4dHVyZVdpdGhIYW5kbGU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdF8sCisgICAgIm5ld1RleHR1
cmVWaWV3V2l0aFBpeGVsRm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3VGV4dHVy
ZVZpZXdXaXRoUGl4ZWxGb3JtYXRfdGV4dHVyZVR5cGVfbGV2ZWxzX3NsaWNlc18sCisgICAgIm5l
d1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0OnRleHR1cmVUeXBlOmxldmVsczpzbGljZXM6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdF90ZXh0
dXJlVHlwZV9sZXZlbHNfc2xpY2VzX3N3aXp6bGVfLAorICAgICJuZXdUZXh0dXJlVmlld1dpdGhQ
aXhlbEZvcm1hdDp0ZXh0dXJlVHlwZTpsZXZlbHM6c2xpY2VzOnN3aXp6bGU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdUZXh0dXJl
V2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdUZXh0dXJlV2l0aERl
c2NyaXB0b3JfaW9zdXJmYWNlX3BsYW5lXywKKyAgICAibmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9y
Omlvc3VyZmFjZTpwbGFuZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVXaXRo
RGVzY3JpcHRvcl9vZmZzZXRfLAorICAgICJuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6b2Zmc2V0
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yX29mZnNl
dF9ieXRlc1BlclJvd18sCisgICAgIm5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjpvZmZzZXQ6Ynl0
ZXNQZXJSb3c6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdWaXNpYmxlRnVuY3Rpb25UYWJs
ZVdpdGhEZXNjcmlwdG9yXywKKyAgICAibmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3Jp
cHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0
aERlc2NyaXB0b3Jfc3RhZ2VfLAorICAgICJuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZVdpdGhEZXNj
cmlwdG9yOnN0YWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobm9kZXMsCisgICAgIm5vZGVz
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChub3JtYWxpemVkQ29vcmRpbmF0ZXMsCisgICAgIm5v
cm1hbGl6ZWRDb29yZGluYXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobm90aWZ5TGlzdGVu
ZXJfYXRWYWx1ZV9ibG9ja18sCisgICAgIm5vdGlmeUxpc3RlbmVyOmF0VmFsdWU6YmxvY2s6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfLAorICAgICJv
YmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChvZmZzZXQs
CisgICAgIm9mZnNldCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3BhcXVlLAorICAgICJvcGFx
dWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3Nf
LAorICAgICJvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwob3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vzc19zbGljZV9sZXZlbF8sCisgICAgIm9w
dGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzXywKKyAgICAib3B0aW1pemVDb250
ZW50c0ZvckdQVUFjY2VzczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wdGltaXplQ29udGVu
dHNGb3JHUFVBY2Nlc3Nfc2xpY2VfbGV2ZWxfLAorICAgICJvcHRpbWl6ZUNvbnRlbnRzRm9yR1BV
QWNjZXNzOnNsaWNlOmxldmVsOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3B0aW1pemVJbmRp
cmVjdENvbW1hbmRCdWZmZXJfd2l0aFJhbmdlXywKKyAgICAib3B0aW1pemVJbmRpcmVjdENvbW1h
bmRCdWZmZXI6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3B0aW9ucywKKyAg
ICAib3B0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3V0cHV0Tm9kZSwKKyAgICAib3V0
cHV0Tm9kZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3V0cHV0VVJMLAorICAgICJvdXRwdXRV
UkwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXJX
aXRoRGVzY3JpcHRvcl8sCisgICAgInBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVz
Y3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhcmFtZXRlckJ1ZmZlclNpemVBbmRB
bGlnbiwKKyAgICAicGFyYW1ldGVyQnVmZmVyU2l6ZUFuZEFsaWduIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChwYXJlbnRSZWxhdGl2ZUxldmVsLAorICAgICJwYXJlbnRSZWxhdGl2ZUxldmVsIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChwYXJlbnRSZWxhdGl2ZVNsaWNlLAorICAgICJwYXJlbnRS
ZWxhdGl2ZVNsaWNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwYXJlbnRUZXh0dXJlLAorICAg
ICJwYXJlbnRUZXh0dXJlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwYXRjaENvbnRyb2xQb2lu
dENvdW50LAorICAgICJwYXRjaENvbnRyb2xQb2ludENvdW50Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChwYXRjaFR5cGUsCisgICAgInBhdGNoVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
cGVlckNvdW50LAorICAgICJwZWVyQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBlZXJH
cm91cElELAorICAgICJwZWVyR3JvdXBJRCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGVlcklu
ZGV4LAorICAgICJwZWVySW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBoeXNpY2FsR3Jh
bnVsYXJpdHksCisgICAgInBoeXNpY2FsR3JhbnVsYXJpdHkiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHBoeXNpY2FsU2l6ZUZvckxheWVyXywKKyAgICAicGh5c2ljYWxTaXplRm9yTGF5ZXI6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChwaXhlbEZvcm1hdCwKKyAgICAicGl4ZWxGb3JtYXQiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHBvaW50ZXJUeXBlLAorICAgICJwb2ludGVyVHlwZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwocG9wRGVidWdHcm91cCwKKyAgICAicG9wRGVidWdHcm91cCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlbG9hZGVkTGlicmFyaWVzLAorICAgICJwcmVsb2Fk
ZWRMaWJyYXJpZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXByb2Nlc3Nvck1hY3JvcywK
KyAgICAicHJlcHJvY2Vzc29yTWFjcm9zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwcmVzZW50
LAorICAgICJwcmVzZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwcmVzZW50QWZ0ZXJNaW5p
bXVtRHVyYXRpb25fLAorICAgICJwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb246Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChwcmVzZW50QXRUaW1lXywKKyAgICAicHJlc2VudEF0VGltZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnREcmF3YWJsZV8sCisgICAgInByZXNlbnREcmF3
YWJsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnREcmF3YWJsZV9hZnRlck1pbmlt
dW1EdXJhdGlvbl8sCisgICAgInByZXNlbnREcmF3YWJsZTphZnRlck1pbmltdW1EdXJhdGlvbjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnREcmF3YWJsZV9hdFRpbWVfLAorICAgICJw
cmVzZW50RHJhd2FibGU6YXRUaW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudGVk
VGltZSwKKyAgICAicHJlc2VudGVkVGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2Vy
dmVJbnZhcmlhbmNlLAorICAgICJwcmVzZXJ2ZUludmFyaWFuY2UiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHByaXZhdGVGdW5jdGlvbnMsCisgICAgInByaXZhdGVGdW5jdGlvbnMiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHB1c2hEZWJ1Z0dyb3VwXywKKyAgICAicHVzaERlYnVnR3JvdXA6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChyQWRkcmVzc01vZGUsCisgICAgInJBZGRyZXNzTW9kZSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwocmFzdGVyU2FtcGxlQ291bnQsCisgICAgInJhc3RlclNh
bXBsZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyYXN0ZXJpemF0aW9uUmF0ZU1hcCwK
KyAgICAicmFzdGVyaXphdGlvblJhdGVNYXAiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJhc3Rl
cml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplXywKKyAgICAicmFzdGVyaXph
dGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZV9sYXllcl8s
CisgICAgInJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOmxheWVy
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9y
V2l0aFNjcmVlblNpemVfbGF5ZXJDb3VudF9sYXllcnNfLAorICAgICJyYXN0ZXJpemF0aW9uUmF0
ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZTpsYXllckNvdW50OmxheWVyczoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHJlYWRNYXNrLAorICAgICJyZWFkTWFzayIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwocmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQsCisgICAgInJlYWRXcml0ZVRleHR1cmVT
dXBwb3J0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZWNvbW1lbmRlZE1heFdvcmtpbmdTZXRT
aXplLAorICAgICJyZWNvbW1lbmRlZE1heFdvcmtpbmdTZXRTaXplIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChyZWZpdEFjY2VsZXJhdGlvblN0cnVjdHVyZV9kZXNjcmlwdG9yX2Rlc3RpbmF0aW9u
X3NjcmF0Y2hCdWZmZXJfc2NyYXRjaEJ1ZmZlck9mZnNldF8sCisgICAgInJlZml0QWNjZWxlcmF0
aW9uU3RydWN0dXJlOmRlc2NyaXB0b3I6ZGVzdGluYXRpb246c2NyYXRjaEJ1ZmZlcjpzY3JhdGNo
QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVnaXN0cnlJRCwKKyAgICAi
cmVnaXN0cnlJRCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVtb3RlU3RvcmFnZUJ1ZmZlciwK
KyAgICAicmVtb3RlU3RvcmFnZUJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVtb3Rl
U3RvcmFnZVRleHR1cmUsCisgICAgInJlbW90ZVN0b3JhZ2VUZXh0dXJlIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChyZW1vdmVBbGxEZWJ1Z01hcmtlcnMsCisgICAgInJlbW92ZUFsbERlYnVnTWFy
a2VycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVuZGVyQ29tbWFuZEVuY29kZXIsCisgICAg
InJlbmRlckNvbW1hbmRFbmNvZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZW5kZXJDb21t
YW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXywKKyAgICAicmVuZGVyQ29tbWFuZEVuY29kZXJXaXRo
RGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbmRlclBhc3NEZXNjcmlwdG9y
LAorICAgICJyZW5kZXJQYXNzRGVzY3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVu
ZGVyVGFyZ2V0QXJyYXlMZW5ndGgsCisgICAgInJlbmRlclRhcmdldEFycmF5TGVuZ3RoIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChyZW5kZXJUYXJnZXRIZWlnaHQsCisgICAgInJlbmRlclRhcmdl
dEhlaWdodCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVuZGVyVGFyZ2V0V2lkdGgsCisgICAg
InJlbmRlclRhcmdldFdpZHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXBsYWNlUmVnaW9u
X21pcG1hcExldmVsX3NsaWNlX3dpdGhCeXRlc19ieXRlc1BlclJvd19ieXRlc1BlckltYWdlXywK
KyAgICAicmVwbGFjZVJlZ2lvbjptaXBtYXBMZXZlbDpzbGljZTp3aXRoQnl0ZXM6Ynl0ZXNQZXJS
b3c6Ynl0ZXNQZXJJbWFnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlcGxhY2VSZWdpb25f
bWlwbWFwTGV2ZWxfd2l0aEJ5dGVzX2J5dGVzUGVyUm93XywKKyAgICAicmVwbGFjZVJlZ2lvbjpt
aXBtYXBMZXZlbDp3aXRoQnl0ZXM6Ynl0ZXNQZXJSb3c6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChyZXF1aXJlZCwKKyAgICAicmVxdWlyZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc2V0
LAorICAgICJyZXNldCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzZXRDb21tYW5kc0luQnVm
ZmVyX3dpdGhSYW5nZV8sCisgICAgInJlc2V0Q29tbWFuZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNldFRleHR1cmVBY2Nlc3NDb3VudGVyc19yZWdpb25f
bWlwTGV2ZWxfc2xpY2VfLAorICAgICJyZXNldFRleHR1cmVBY2Nlc3NDb3VudGVyczpyZWdpb246
bWlwTGV2ZWw6c2xpY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNldFdpdGhSYW5nZV8s
CisgICAgInJlc2V0V2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb2x2ZUNv
dW50ZXJSYW5nZV8sCisgICAgInJlc29sdmVDb3VudGVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChyZXNvbHZlQ291bnRlcnNfaW5SYW5nZV9kZXN0aW5hdGlvbkJ1ZmZlcl9kZXN0aW5h
dGlvbk9mZnNldF8sCisgICAgInJlc29sdmVDb3VudGVyczppblJhbmdlOmRlc3RpbmF0aW9uQnVm
ZmVyOmRlc3RpbmF0aW9uT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb2x2ZURl
cHRoUGxhbmUsCisgICAgInJlc29sdmVEZXB0aFBsYW5lIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChyZXNvbHZlTGV2ZWwsCisgICAgInJlc29sdmVMZXZlbCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocmVzb2x2ZVNsaWNlLAorICAgICJyZXNvbHZlU2xpY2UiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHJlc29sdmVUZXh0dXJlLAorICAgICJyZXNvbHZlVGV4dHVyZSIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwocmVzb3VyY2VPcHRpb25zLAorICAgICJyZXNvdXJjZU9wdGlvbnMiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlciwKKyAgICAicmVzb3Vy
Y2VTdGF0ZUNvbW1hbmRFbmNvZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8sCisgICAgInJlc291cmNlU3RhdGVDb21t
YW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb3Vy
Y2VTdGF0ZVBhc3NEZXNjcmlwdG9yLAorICAgICJyZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3Ii
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJldGFpbmVkUmVmZXJlbmNlcywKKyAgICAicmV0YWlu
ZWRSZWZlcmVuY2VzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZ2JCbGVuZE9wZXJhdGlvbiwK
KyAgICAicmdiQmxlbmRPcGVyYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJvb3RSZXNv
dXJjZSwKKyAgICAicm9vdFJlc291cmNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzQWRkcmVz
c01vZGUsCisgICAgInNBZGRyZXNzTW9kZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2FtcGxl
QnVmZmVyLAorICAgICJzYW1wbGVCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnRzLAorICAgICJzYW1wbGVCdWZmZXJBdHRhY2htZW50cyIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2FtcGxlQ291bnQsCisgICAgInNhbXBsZUNvdW50Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzYW1wbGVDb3VudGVyc0luQnVmZmVyX2F0U2FtcGxlSW5kZXhfd2l0
aEJhcnJpZXJfLAorICAgICJzYW1wbGVDb3VudGVyc0luQnVmZmVyOmF0U2FtcGxlSW5kZXg6d2l0
aEJhcnJpZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzYW1wbGVUaW1lc3RhbXBzX2dwdVRp
bWVzdGFtcF8sCisgICAgInNhbXBsZVRpbWVzdGFtcHM6Z3B1VGltZXN0YW1wOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2NyZWVuU2l6ZSwKKyAgICAic2NyZWVuU2l6ZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2VyaWFsaXplVG9VUkxfZXJyb3JfLAorICAgICJzZXJpYWxpemVUb1VSTDpl
cnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFjY2VsZXJhdGlvblN0cnVjdHVyZV9h
dEJ1ZmZlckluZGV4XywKKyAgICAic2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVmZmVySW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRJ
bmRleF8sCisgICAgInNldEFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEluZGV4OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0QWNjZXNzXywKKyAgICAic2V0QWNjZXNzOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0QWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRp
b25fLAorICAgICJzZXRBbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlv
bjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFsbG93R1BVT3B0aW1pemVkQ29udGVudHNf
LAorICAgICJzZXRBbGxvd0dQVU9wdGltaXplZENvbnRlbnRzOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0QWxwaGFCbGVuZE9wZXJhdGlvbl8sCisgICAgInNldEFscGhhQmxlbmRPcGVyYXRp
b246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBbHBoYVRvQ292ZXJhZ2VFbmFibGVkXywK
KyAgICAic2V0QWxwaGFUb0NvdmVyYWdlRW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEFscGhhVG9PbmVFbmFibGVkXywKKyAgICAic2V0QWxwaGFUb09uZUVuYWJsZWQ6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRBcmd1bWVudEJ1ZmZlcl9vZmZzZXRfLAorICAgICJzZXRB
cmd1bWVudEJ1ZmZlcjpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBcmd1bWVu
dEJ1ZmZlcl9zdGFydE9mZnNldF9hcnJheUVsZW1lbnRfLAorICAgICJzZXRBcmd1bWVudEJ1ZmZl
cjpzdGFydE9mZnNldDphcnJheUVsZW1lbnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRB
cmd1bWVudEluZGV4XywKKyAgICAic2V0QXJndW1lbnRJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEFyZ3VtZW50c18sCisgICAgInNldEFyZ3VtZW50czoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldEFycmF5TGVuZ3RoXywKKyAgICAic2V0QXJyYXlMZW5ndGg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRBdHRyaWJ1dGVzXywKKyAgICAic2V0QXR0cmlidXRlczoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJhY2tGYWNlU3RlbmNpbF8sCisgICAgInNldEJhY2tG
YWNlU3RlbmNpbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJhcnJpZXIsCisgICAgInNl
dEJhcnJpZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJpbmFyeUFyY2hpdmVzXywKKyAg
ICAic2V0QmluYXJ5QXJjaGl2ZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCaW5hcnlG
dW5jdGlvbnNfLAorICAgICJzZXRCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRCbGVuZENvbG9yUmVkX2dyZWVuX2JsdWVfYWxwaGFfLAorICAgICJzZXRCbGVuZENv
bG9yUmVkOmdyZWVuOmJsdWU6YWxwaGE6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCbGVu
ZGluZ0VuYWJsZWRfLAorICAgICJzZXRCbGVuZGluZ0VuYWJsZWQ6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRCb3JkZXJDb2xvcl8sCisgICAgInNldEJvcmRlckNvbG9yOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0Qm91bmRpbmdCb3hCdWZmZXJfLAorICAgICJzZXRCb3VuZGluZ0Jv
eEJ1ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyT2Zm
c2V0XywKKyAgICAic2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRCb3VuZGluZ0JveEJ1ZmZlcnNfLAorICAgICJzZXRCb3VuZGluZ0JveEJ1ZmZl
cnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCb3VuZGluZ0JveENvdW50XywKKyAgICAi
c2V0Qm91bmRpbmdCb3hDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJvdW5kaW5n
Qm94U3RyaWRlXywKKyAgICAic2V0Qm91bmRpbmdCb3hTdHJpZGU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRCdWZmZXJfLAorICAgICJzZXRCdWZmZXI6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRCdWZmZXI6b2Zmc2V0OmF0
SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCdWZmZXJJbmRleF8sCisgICAgInNl
dEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QnVmZmVyT2Zmc2V0X2F0
SW5kZXhfLAorICAgICJzZXRCdWZmZXJPZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfLAorICAgICJzZXRCdWZmZXJzOm9m
ZnNldHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Qnl0ZXNfbGVuZ3Ro
X2F0SW5kZXhfLAorICAgICJzZXRCeXRlczpsZW5ndGg6YXRJbmRleDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldENhcHR1cmVPYmplY3RfLAorICAgICJzZXRDYXB0dXJlT2JqZWN0OiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q2xlYXJDb2xvcl8sCisgICAgInNldENsZWFyQ29sb3I6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDbGVhckRlcHRoXywKKyAgICAic2V0Q2xlYXJE
ZXB0aDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENsZWFyU3RlbmNpbF8sCisgICAgInNl
dENsZWFyU3RlbmNpbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbG9yU3RvcmVBY3Rp
b25fYXRJbmRleF8sCisgICAgInNldENvbG9yU3RvcmVBY3Rpb246YXRJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zX2F0SW5kZXhfLAorICAg
ICJzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9uczphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0Q29tbWFuZFR5cGVzXywKKyAgICAic2V0Q29tbWFuZFR5cGVzOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0Q29tcGFyZUZ1bmN0aW9uXywKKyAgICAic2V0Q29tcGFyZUZ1bmN0
aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29tcHV0ZUZ1bmN0aW9uXywKKyAgICAi
c2V0Q29tcHV0ZUZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29tcHV0ZVBp
cGVsaW5lU3RhdGVfLAorICAgICJzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldENvbXB1dGVQaXBlbGluZVN0YXRlX2F0SW5kZXhfLAorICAgICJzZXRD
b21wdXRlUGlwZWxpbmVTdGF0ZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
Q29tcHV0ZVBpcGVsaW5lU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldENvbXB1dGVQaXBlbGlu
ZVN0YXRlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb25zdGFudEJs
b2NrQWxpZ25tZW50XywKKyAgICAic2V0Q29uc3RhbnRCbG9ja0FsaWdubWVudDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldENvbnN0YW50VmFsdWVfdHlwZV9hdEluZGV4XywKKyAgICAic2V0
Q29uc3RhbnRWYWx1ZTp0eXBlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRD
b25zdGFudFZhbHVlX3R5cGVfd2l0aE5hbWVfLAorICAgICJzZXRDb25zdGFudFZhbHVlOnR5cGU6
d2l0aE5hbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb25zdGFudFZhbHVlc18sCisg
ICAgInNldENvbnN0YW50VmFsdWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29uc3Rh
bnRWYWx1ZXNfdHlwZV93aXRoUmFuZ2VfLAorICAgICJzZXRDb25zdGFudFZhbHVlczp0eXBlOndp
dGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbnRyb2xEZXBlbmRlbmNpZXNf
LAorICAgICJzZXRDb250cm9sRGVwZW5kZW5jaWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0Q291bnRlclNldF8sCisgICAgInNldENvdW50ZXJTZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRDcHVDYWNoZU1vZGVfLAorICAgICJzZXRDcHVDYWNoZU1vZGU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRDdWxsTW9kZV8sCisgICAgInNldEN1bGxNb2RlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0RGF0YVR5cGVfLAorICAgICJzZXREYXRhVHlwZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldERlZmF1bHRDYXB0dXJlU2NvcGVfLAorICAgICJzZXREZWZhdWx0
Q2FwdHVyZVNjb3BlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVmYXVsdFJhc3RlclNh
bXBsZUNvdW50XywKKyAgICAic2V0RGVmYXVsdFJhc3RlclNhbXBsZUNvdW50OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0RGVwdGhfLAorICAgICJzZXREZXB0aDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldERlcHRoQXR0YWNobWVudF8sCisgICAgInNldERlcHRoQXR0YWNobWVudDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0XywK
KyAgICAic2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXREZXB0aEJpYXNfc2xvcGVTY2FsZV9jbGFtcF8sCisgICAgInNldERlcHRoQmlhczpz
bG9wZVNjYWxlOmNsYW1wOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhDbGlwTW9k
ZV8sCisgICAgInNldERlcHRoQ2xpcE1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRE
ZXB0aENvbXBhcmVGdW5jdGlvbl8sCisgICAgInNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhGYWlsdXJlT3BlcmF0aW9uXywKKyAgICAic2V0
RGVwdGhGYWlsdXJlT3BlcmF0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhQ
bGFuZV8sCisgICAgInNldERlcHRoUGxhbmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRE
ZXB0aFJlc29sdmVGaWx0ZXJfLAorICAgICJzZXREZXB0aFJlc29sdmVGaWx0ZXI6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXREZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uXywKKyAgICAic2V0
RGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERl
cHRoU3RlbmNpbFN0YXRlXywKKyAgICAic2V0RGVwdGhTdGVuY2lsU3RhdGU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXREZXB0aFN0b3JlQWN0aW9uXywKKyAgICAic2V0RGVwdGhTdG9yZUFj
dGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoU3RvcmVBY3Rpb25PcHRpb25z
XywKKyAgICAic2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXREZXB0aFdyaXRlRW5hYmxlZF8sCisgICAgInNldERlcHRoV3JpdGVFbmFibGVkOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVzdGluYXRpb25fLAorICAgICJzZXREZXN0aW5h
dGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlc3RpbmF0aW9uQWxwaGFCbGVuZEZh
Y3Rvcl8sCisgICAgInNldERlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvcjoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3JfLAorICAgICJzZXREZXN0
aW5hdGlvblJHQkJsZW5kRmFjdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGlzcGF0
Y2hUeXBlXywKKyAgICAic2V0RGlzcGF0Y2hUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXhfLAorICAgICJzZXRFbmRPZkVuY29kZXJTYW1wbGVJ
bmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEVuZE9mRnJhZ21lbnRTYW1wbGVJbmRl
eF8sCisgICAgInNldEVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEVuZE9mVmVydGV4U2FtcGxlSW5kZXhfLAorICAgICJzZXRFbmRPZlZlcnRleFNh
bXBsZUluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RXJyb3JPcHRpb25zXywKKyAg
ICAic2V0RXJyb3JPcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RmFzdE1hdGhF
bmFibGVkXywKKyAgICAic2V0RmFzdE1hdGhFbmFibGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0Rm9ybWF0XywKKyAgICAic2V0Rm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZmZXJJbmRleF8sCisgICAgInNl
dEZyYWdtZW50QWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfLAorICAg
ICJzZXRGcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRGcmFnbWVudEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8sCisgICAgInNldEZyYWdt
ZW50QnVmZmVyOm9mZnNldDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJh
Z21lbnRCdWZmZXJPZmZzZXRfYXRJbmRleF8sCisgICAgInNldEZyYWdtZW50QnVmZmVyT2Zmc2V0
OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEJ1ZmZlcnNfb2Zm
c2V0c193aXRoUmFuZ2VfLAorICAgICJzZXRGcmFnbWVudEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFu
Z2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEJ5dGVzX2xlbmd0aF9hdElu
ZGV4XywKKyAgICAic2V0RnJhZ21lbnRCeXRlczpsZW5ndGg6YXRJbmRleDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEZyYWdtZW50RnVuY3Rpb25fLAorICAgICJzZXRGcmFnbWVudEZ1bmN0
aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZy
YWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXywKKyAgICAi
c2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudExpbmtlZEZ1bmN0aW9uc18sCisgICAg
InNldEZyYWdtZW50TGlua2VkRnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXNfLAorICAgICJzZXRGcmFnbWVudFByZWxvYWRlZExp
YnJhcmllczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRl
X2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZTphdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9k
TWF4Q2xhbXBfYXRJbmRleF8sCisgICAgInNldEZyYWdtZW50U2FtcGxlclN0YXRlOmxvZE1pbkNs
YW1wOmxvZE1heENsYW1wOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFn
bWVudFNhbXBsZXJTdGF0ZXNfbG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfLAor
ICAgICJzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1heENsYW1wczp3
aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFNhbXBsZXJTdGF0
ZXNfd2l0aFJhbmdlXywKKyAgICAic2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50VGV4dHVyZV9hdEluZGV4XywKKyAg
ICAic2V0RnJhZ21lbnRUZXh0dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRGcmFnbWVudFRleHR1cmVzX3dpdGhSYW5nZV8sCisgICAgInNldEZyYWdtZW50VGV4dHVyZXM6
d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRWaXNpYmxlRnVu
Y3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XywKKyAgICAic2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rp
b25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21l
bnRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXywKKyAgICAic2V0RnJhZ21l
bnRWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0RnJvbnRGYWNlU3RlbmNpbF8sCisgICAgInNldEZyb250RmFjZVN0ZW5jaWw6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcm9udEZhY2luZ1dpbmRpbmdfLAorICAgICJz
ZXRGcm9udEZhY2luZ1dpbmRpbmc6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGdW5jdGlv
bl9hdEluZGV4XywKKyAgICAic2V0RnVuY3Rpb246YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEZ1bmN0aW9uQ291bnRfLAorICAgICJzZXRGdW5jdGlvbkNvdW50OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0RnVuY3Rpb25HcmFwaHNfLAorICAgICJzZXRGdW5jdGlvbkdy
YXBoczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZ1bmN0aW9uTmFtZV8sCisgICAgInNl
dEZ1bmN0aW9uTmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZ1bmN0aW9uc18sCisg
ICAgInNldEZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZ1bmN0aW9uc193
aXRoUmFuZ2VfLAorICAgICJzZXRGdW5jdGlvbnM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0R2VvbWV0cnlEZXNjcmlwdG9yc18sCisgICAgInNldEdlb21ldHJ5RGVzY3Jp
cHRvcnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRHcm91cHNfLAorICAgICJzZXRHcm91
cHM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRIYXphcmRUcmFja2luZ01vZGVfLAorICAg
ICJzZXRIYXphcmRUcmFja2luZ01vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRIZWln
aHRfLAorICAgICJzZXRIZWlnaHQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbWFnZWJs
b2NrU2FtcGxlTGVuZ3RoXywKKyAgICAic2V0SW1hZ2VibG9ja1NhbXBsZUxlbmd0aDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEltYWdlYmxvY2tXaWR0aF9oZWlnaHRfLAorICAgICJzZXRJ
bWFnZWJsb2NrV2lkdGg6aGVpZ2h0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kZXhf
LAorICAgICJzZXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluZGV4QnVmZmVy
XywKKyAgICAic2V0SW5kZXhCdWZmZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmRl
eEJ1ZmZlckluZGV4XywKKyAgICAic2V0SW5kZXhCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldEluZGV4QnVmZmVyT2Zmc2V0XywKKyAgICAic2V0SW5kZXhCdWZmZXJPZmZz
ZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmRleFR5cGVfLAorICAgICJzZXRJbmRl
eFR5cGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXJf
YXRJbmRleF8sCisgICAgInNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcjphdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyc193aXRoUmFuZ2VfLAor
ICAgICJzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXJzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldEluaGVyaXRCdWZmZXJzXywKKyAgICAic2V0SW5oZXJpdEJ1ZmZlcnM6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZV8sCisgICAgInNl
dEluaGVyaXRQaXBlbGluZVN0YXRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5wdXRQ
cmltaXRpdmVUb3BvbG9neV8sCisgICAgInNldElucHV0UHJpbWl0aXZlVG9wb2xvZ3k6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnNlcnRMaWJyYXJpZXNfLAorICAgICJzZXRJbnNlcnRM
aWJyYXJpZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnN0YWxsTmFtZV8sCisgICAg
InNldEluc3RhbGxOYW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFuY2VDb3Vu
dF8sCisgICAgInNldEluc3RhbmNlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJ
bnN0YW5jZURlc2NyaXB0b3JCdWZmZXJfLAorICAgICJzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZm
ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJP
ZmZzZXRfLAorICAgICJzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRJbnN0YW5jZURlc2NyaXB0b3JTdHJpZGVfLAorICAgICJzZXRJ
bnN0YW5jZURlc2NyaXB0b3JTdHJpZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnN0
YW5jZURlc2NyaXB0b3JUeXBlXywKKyAgICAic2V0SW5zdGFuY2VEZXNjcmlwdG9yVHlwZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXNf
LAorICAgICJzZXRJbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XywK
KyAgICAic2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEluZGV4XywK
KyAgICAic2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEluZGV4OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldF8sCisgICAgInNl
dEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfLAorICAgICJz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoUmFuZ2VfLAor
ICAgICJzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRLZXJuZWxCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRL
ZXJuZWxCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRM
YWJlbF8sCisgICAgInNldExhYmVsOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TGFuZ3Vh
Z2VWZXJzaW9uXywKKyAgICAic2V0TGFuZ3VhZ2VWZXJzaW9uOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0TGF5ZXJfYXRJbmRleF8sCisgICAgInNldExheWVyOmF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRMZXZlbF8sCisgICAgInNldExldmVsOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0TGlicmFyaWVzXywKKyAgICAic2V0TGlicmFyaWVzOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0TGlicmFyeVR5cGVfLAorICAgICJzZXRMaWJyYXJ5VHlwZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldExpbmtlZEZ1bmN0aW9uc18sCisgICAgInNldExpbmtl
ZEZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldExvYWRBY3Rpb25fLAorICAg
ICJzZXRMb2FkQWN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TG9kQXZlcmFnZV8s
CisgICAgInNldExvZEF2ZXJhZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMb2RNYXhD
bGFtcF8sCisgICAgInNldExvZE1heENsYW1wOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
TG9kTWluQ2xhbXBfLAorICAgICJzZXRMb2RNaW5DbGFtcDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldE1hZ0ZpbHRlcl8sCisgICAgInNldE1hZ0ZpbHRlcjoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldE1heEFuaXNvdHJvcHlfLAorICAgICJzZXRNYXhBbmlzb3Ryb3B5OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4Q2FsbFN0YWNrRGVwdGhfLAorICAgICJzZXRNYXhDYWxs
U3RhY2tEZXB0aDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heEZyYWdtZW50QnVmZmVy
QmluZENvdW50XywKKyAgICAic2V0TWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRoXywKKyAgICAic2V0
TWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1h
eEtlcm5lbEJ1ZmZlckJpbmRDb3VudF8sCisgICAgInNldE1heEtlcm5lbEJ1ZmZlckJpbmRDb3Vu
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heFRlc3NlbGxhdGlvbkZhY3Rvcl8sCisg
ICAgInNldE1heFRlc3NlbGxhdGlvbkZhY3RvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dE1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAic2V0TWF4VG90YWxUaHJlYWRz
UGVyVGhyZWFkZ3JvdXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhWZXJ0ZXhBbXBs
aWZpY2F0aW9uQ291bnRfLAorICAgICJzZXRNYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnRfLAorICAg
ICJzZXRNYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRNYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aF8sCisgICAgInNldE1heFZlcnRleENhbGxTdGFja0Rl
cHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWluRmlsdGVyXywKKyAgICAic2V0TWlu
RmlsdGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWlwRmlsdGVyXywKKyAgICAic2V0
TWlwRmlsdGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWlwbWFwTGV2ZWxDb3VudF8s
CisgICAgInNldE1pcG1hcExldmVsQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRN
b3Rpb25FbmRCb3JkZXJNb2RlXywKKyAgICAic2V0TW90aW9uRW5kQm9yZGVyTW9kZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvbkVuZFRpbWVfLAorICAgICJzZXRNb3Rpb25FbmRU
aW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9uS2V5ZnJhbWVDb3VudF8sCisg
ICAgInNldE1vdGlvbktleWZyYW1lQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRN
b3Rpb25TdGFydEJvcmRlck1vZGVfLAorICAgICJzZXRNb3Rpb25TdGFydEJvcmRlck1vZGU6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNb3Rpb25TdGFydFRpbWVfLAorICAgICJzZXRNb3Rp
b25TdGFydFRpbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNb3Rpb25UcmFuc2Zvcm1C
dWZmZXJfLAorICAgICJzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXI6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXRfLAorICAgICJzZXRNb3Rpb25U
cmFuc2Zvcm1CdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNb3Rpb25U
cmFuc2Zvcm1Db3VudF8sCisgICAgInNldE1vdGlvblRyYW5zZm9ybUNvdW50OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0TXV0YWJpbGl0eV8sCisgICAgInNldE11dGFiaWxpdHk6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXROYW1lXywKKyAgICAic2V0TmFtZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldE5vZGVzXywKKyAgICAic2V0Tm9kZXM6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXROb3JtYWxpemVkQ29vcmRpbmF0ZXNfLAorICAgICJzZXROb3JtYWxpemVkQ29v
cmRpbmF0ZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vi
c2NyaXB0XywKKyAgICAic2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldE9mZnNldF8sCisgICAgInNldE9mZnNldDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldE9wYXF1ZV8sCisgICAgInNldE9wYXF1ZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJl
X2F0SW5kZXhfLAorICAgICJzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0
aFNpZ25hdHVyZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3BhcXVlVHJp
YW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmVfd2l0aFJhbmdlXywKKyAgICAi
c2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmU6d2l0aFJh
bmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3B0aW9uc18sCisgICAgInNldE9wdGlv
bnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRPdXRwdXROb2RlXywKKyAgICAic2V0T3V0
cHV0Tm9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE91dHB1dFVSTF8sCisgICAgInNl
dE91dHB1dFVSTDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFBpeGVsRm9ybWF0XywKKyAg
ICAic2V0UGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRQcmVsb2FkZWRM
aWJyYXJpZXNfLAorICAgICJzZXRQcmVsb2FkZWRMaWJyYXJpZXM6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRQcmVwcm9jZXNzb3JNYWNyb3NfLAorICAgICJzZXRQcmVwcm9jZXNzb3JNYWNy
b3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRQcmVzZXJ2ZUludmFyaWFuY2VfLAorICAg
ICJzZXRQcmVzZXJ2ZUludmFyaWFuY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRQcml2
YXRlRnVuY3Rpb25zXywKKyAgICAic2V0UHJpdmF0ZUZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFB1cmdlYWJsZVN0YXRlXywKKyAgICAic2V0UHVyZ2VhYmxlU3RhdGU6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSQWRkcmVzc01vZGVfLAorICAgICJzZXRSQWRkcmVz
c01vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSYXN0ZXJTYW1wbGVDb3VudF8sCisg
ICAgInNldFJhc3RlclNhbXBsZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmFz
dGVyaXphdGlvbkVuYWJsZWRfLAorICAgICJzZXRSYXN0ZXJpemF0aW9uRW5hYmxlZDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFJhc3Rlcml6YXRpb25SYXRlTWFwXywKKyAgICAic2V0UmFz
dGVyaXphdGlvblJhdGVNYXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZWFkTWFza18s
CisgICAgInNldFJlYWRNYXNrOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVuZGVyUGlw
ZWxpbmVTdGF0ZV8sCisgICAgInNldFJlbmRlclBpcGVsaW5lU3RhdGU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRSZW5kZXJQaXBlbGluZVN0YXRlX2F0SW5kZXhfLAorICAgICJzZXRSZW5k
ZXJQaXBlbGluZVN0YXRlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZW5k
ZXJQaXBlbGluZVN0YXRlc193aXRoUmFuZ2VfLAorICAgICJzZXRSZW5kZXJQaXBlbGluZVN0YXRl
czp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZW5kZXJUYXJnZXRBcnJh
eUxlbmd0aF8sCisgICAgInNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0UmVuZGVyVGFyZ2V0SGVpZ2h0XywKKyAgICAic2V0UmVuZGVyVGFyZ2V0
SGVpZ2h0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVuZGVyVGFyZ2V0V2lkdGhfLAor
ICAgICJzZXRSZW5kZXJUYXJnZXRXaWR0aDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJl
c29sdmVEZXB0aFBsYW5lXywKKyAgICAic2V0UmVzb2x2ZURlcHRoUGxhbmU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRSZXNvbHZlTGV2ZWxfLAorICAgICJzZXRSZXNvbHZlTGV2ZWw6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZXNvbHZlU2xpY2VfLAorICAgICJzZXRSZXNvbHZl
U2xpY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZXNvbHZlVGV4dHVyZV8sCisgICAg
InNldFJlc29sdmVUZXh0dXJlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVzb3VyY2VP
cHRpb25zXywKKyAgICAic2V0UmVzb3VyY2VPcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0UmV0YWluZWRSZWZlcmVuY2VzXywKKyAgICAic2V0UmV0YWluZWRSZWZlcmVuY2VzOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmdiQmxlbmRPcGVyYXRpb25fLAorICAgICJzZXRS
Z2JCbGVuZE9wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNBZGRyZXNzTW9k
ZV8sCisgICAgInNldFNBZGRyZXNzTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNh
bXBsZUJ1ZmZlcl8sCisgICAgInNldFNhbXBsZUJ1ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFNhbXBsZUNvdW50XywKKyAgICAic2V0U2FtcGxlQ291bnQ6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRTYW1wbGVQb3NpdGlvbnNfY291bnRfLAorICAgICJzZXRTYW1wbGVQb3Np
dGlvbnM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTYW1wbGVyU3RhdGVfYXRJ
bmRleF8sCisgICAgInNldFNhbXBsZXJTdGF0ZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0U2FtcGxlclN0YXRlX2xvZE1pbkNsYW1wX2xvZE1heENsYW1wX2F0SW5kZXhfLAor
ICAgICJzZXRTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNhbXBsZXJTdGF0ZXNfbG9kTWluQ2xhbXBzX2xvZE1h
eENsYW1wc193aXRoUmFuZ2VfLAorICAgICJzZXRTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczps
b2RNYXhDbGFtcHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxl
clN0YXRlc193aXRoUmFuZ2VfLAorICAgICJzZXRTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNjaXNzb3JSZWN0XywKKyAgICAic2V0U2Npc3NvclJl
Y3Q6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTY2lzc29yUmVjdHNfY291bnRfLAorICAg
ICJzZXRTY2lzc29yUmVjdHM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTY3Jl
ZW5TaXplXywKKyAgICAic2V0U2NyZWVuU2l6ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFNpZ25hbGVkVmFsdWVfLAorICAgICJzZXRTaWduYWxlZFZhbHVlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U2l6ZV8sCisgICAgInNldFNpemU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRTbGljZV8sCisgICAgInNldFNsaWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
U291cmNlQWxwaGFCbGVuZEZhY3Rvcl8sCisgICAgInNldFNvdXJjZUFscGhhQmxlbmRGYWN0b3I6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTb3VyY2VSR0JCbGVuZEZhY3Rvcl8sCisgICAg
InNldFNvdXJjZVJHQkJsZW5kRmFjdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3Bl
Y2lhbGl6ZWROYW1lXywKKyAgICAic2V0U3BlY2lhbGl6ZWROYW1lOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U3RhZ2VJblJlZ2lvbl8sCisgICAgInNldFN0YWdlSW5SZWdpb246Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGFnZUluUmVnaW9uV2l0aEluZGlyZWN0QnVmZmVyX2lu
ZGlyZWN0QnVmZmVyT2Zmc2V0XywKKyAgICAic2V0U3RhZ2VJblJlZ2lvbldpdGhJbmRpcmVjdEJ1
ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0
YWdlSW5wdXREZXNjcmlwdG9yXywKKyAgICAic2V0U3RhZ2VJbnB1dERlc2NyaXB0b3I6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4XywKKyAgICAi
c2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4XywKKyAgICAic2V0U3RhcnRPZkZyYWdtZW50U2Ft
cGxlSW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGFydE9mVmVydGV4U2FtcGxl
SW5kZXhfLAorICAgICJzZXRTdGFydE9mVmVydGV4U2FtcGxlSW5kZXg6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRTdGVuY2lsQXR0YWNobWVudF8sCisgICAgInNldFN0ZW5jaWxBdHRhY2ht
ZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZv
cm1hdF8sCisgICAgInNldFN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRTdGVuY2lsQ29tcGFyZUZ1bmN0aW9uXywKKyAgICAic2V0U3RlbmNp
bENvbXBhcmVGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxGYWls
dXJlT3BlcmF0aW9uXywKKyAgICAic2V0U3RlbmNpbEZhaWx1cmVPcGVyYXRpb246Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTdGVuY2lsRnJvbnRSZWZlcmVuY2VWYWx1ZV9iYWNrUmVmZXJl
bmNlVmFsdWVfLAorICAgICJzZXRTdGVuY2lsRnJvbnRSZWZlcmVuY2VWYWx1ZTpiYWNrUmVmZXJl
bmNlVmFsdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGVuY2lsUmVmZXJlbmNlVmFs
dWVfLAorICAgICJzZXRTdGVuY2lsUmVmZXJlbmNlVmFsdWU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRTdGVuY2lsUmVzb2x2ZUZpbHRlcl8sCisgICAgInNldFN0ZW5jaWxSZXNvbHZlRmls
dGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RlbmNpbFN0b3JlQWN0aW9uXywKKyAg
ICAic2V0U3RlbmNpbFN0b3JlQWN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3Rl
bmNpbFN0b3JlQWN0aW9uT3B0aW9uc18sCisgICAgInNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlv
bnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGVwRnVuY3Rpb25fLAorICAgICJzZXRT
dGVwRnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGVwUmF0ZV8sCisgICAg
InNldFN0ZXBSYXRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RvcmFnZU1vZGVfLAor
ICAgICJzZXRTdG9yYWdlTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0b3JlQWN0
aW9uXywKKyAgICAic2V0U3RvcmVBY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRT
dG9yZUFjdGlvbk9wdGlvbnNfLAorICAgICJzZXRTdG9yZUFjdGlvbk9wdGlvbnM6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTdHJpZGVfLAorICAgICJzZXRTdHJpZGU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zXywKKyAgICAic2V0
U3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9uc18sCisgICAgInNldFN1cHBvcnRB
ZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnNfLAorICAgICJzZXRTdXBwb3J0QWRk
aW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3Vw
cG9ydEFyZ3VtZW50QnVmZmVyc18sCisgICAgInNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnM6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVyc18s
CisgICAgInNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U3dpenpsZV8sCisgICAgInNldFN3aXp6bGU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRUQWRkcmVzc01vZGVfLAorICAgICJzZXRUQWRkcmVzc01vZGU6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGVfLAor
ICAgICJzZXRUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRUZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJfb2Zmc2V0X2luc3RhbmNlU3Ry
aWRlXywKKyAgICAic2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOm9mZnNldDppbnN0YW5jZVN0
cmlkZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvckZvcm1h
dF8sCisgICAgInNldFRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlXywKKyAgICAic2V0VGVzc2VsbGF0aW9u
RmFjdG9yU2NhbGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUZXNzZWxsYXRpb25GYWN0
b3JTY2FsZUVuYWJsZWRfLAorICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQ6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rp
b25fLAorICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb246Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRUZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXJfLAorICAgICJz
ZXRUZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlXywKKyAgICAic2V0VGVzc2VsbGF0aW9uUGFy
dGl0aW9uTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRleHR1cmVfLAorICAgICJz
ZXRUZXh0dXJlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGV4dHVyZV9hdEluZGV4XywK
KyAgICAic2V0VGV4dHVyZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGV4
dHVyZVR5cGVfLAorICAgICJzZXRUZXh0dXJlVHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFRleHR1cmVzX3dpdGhSYW5nZV8sCisgICAgInNldFRleHR1cmVzOndpdGhSYW5nZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVh
ZEV4ZWN1dGlvbldpZHRoXywKKyAgICAic2V0VGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhy
ZWFkRXhlY3V0aW9uV2lkdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaHJlYWRncm91
cE1lbW9yeUxlbmd0aF8sCisgICAgInNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGhfYXRJbmRleF8sCisg
ICAgInNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aF9vZmZzZXRfYXRJbmRleF8sCisgICAg
InNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoOm9mZnNldDphdEluZGV4OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0VGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplXywKKyAgICAic2V0
VGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0VGlsZUFjY2VsZXJhdGlvblN0cnVjdHVyZV9hdEJ1ZmZlckluZGV4XywKKyAgICAic2V0VGls
ZUFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0VGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfLAorICAgICJzZXRUaWxlQWRk
aXRpb25hbEJpbmFyeUZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVC
dWZmZXJfb2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRUaWxlQnVmZmVyOm9mZnNldDphdEluZGV4
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZUJ1ZmZlck9mZnNldF9hdEluZGV4XywK
KyAgICAic2V0VGlsZUJ1ZmZlck9mZnNldDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0VGlsZUJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfLAorICAgICJzZXRUaWxlQnVmZmVy
czpvZmZzZXRzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVCeXRl
c19sZW5ndGhfYXRJbmRleF8sCisgICAgInNldFRpbGVCeXRlczpsZW5ndGg6YXRJbmRleDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVGdW5jdGlvbl8sCisgICAgInNldFRpbGVGdW5j
dGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVIZWlnaHRfLAorICAgICJzZXRU
aWxlSGVpZ2h0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZUludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldFRpbGVJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxl
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXywKKyAgICAic2V0VGls
ZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVfYXRJbmRleF8sCisgICAgInNldFRpbGVT
YW1wbGVyU3RhdGU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVTYW1w
bGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRleF8sCisgICAgInNldFRpbGVT
YW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFt
cHNfd2l0aFJhbmdlXywKKyAgICAic2V0VGlsZVNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxv
ZE1heENsYW1wczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlU2Ft
cGxlclN0YXRlc193aXRoUmFuZ2VfLAorICAgICJzZXRUaWxlU2FtcGxlclN0YXRlczp3aXRoUmFu
Z2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlVGV4dHVyZV9hdEluZGV4XywKKyAg
ICAic2V0VGlsZVRleHR1cmU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRp
bGVUZXh0dXJlc193aXRoUmFuZ2VfLAorICAgICJzZXRUaWxlVGV4dHVyZXM6d2l0aFJhbmdlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlX2F0QnVm
ZmVySW5kZXhfLAorICAgICJzZXRUaWxlVmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRl
eDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZXNf
d2l0aEJ1ZmZlclJhbmdlXywKKyAgICAic2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlczp3aXRo
QnVmZmVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlV2lkdGhfLAorICAg
ICJzZXRUaWxlV2lkdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUcmlhbmdsZUNvdW50
XywKKyAgICAic2V0VHJpYW5nbGVDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRy
aWFuZ2xlRmlsbE1vZGVfLAorICAgICJzZXRUcmlhbmdsZUZpbGxNb2RlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0VHlwZV8sCisgICAgInNldFR5cGU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRVcmxfLAorICAgICJzZXRVcmw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRV
c2FnZV8sCisgICAgInNldFVzYWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4
QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRWZXJ0ZXhBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfLAorICAgICJzZXRWZXJ0ZXhBZGRp
dGlvbmFsQmluYXJ5RnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4
QW1wbGlmaWNhdGlvbkNvdW50X3ZpZXdNYXBwaW5nc18sCisgICAgInNldFZlcnRleEFtcGxpZmlj
YXRpb25Db3VudDp2aWV3TWFwcGluZ3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0
ZXhCdWZmZXJfLAorICAgICJzZXRWZXJ0ZXhCdWZmZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRWZXJ0ZXhCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRWZXJ0ZXhCdWZmZXI6
b2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhCdWZmZXJP
ZmZzZXRfLAorICAgICJzZXRWZXJ0ZXhCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRWZXJ0ZXhCdWZmZXJPZmZzZXRfYXRJbmRleF8sCisgICAgInNldFZlcnRleEJ1ZmZl
ck9mZnNldDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4QnVmZmVy
c18sCisgICAgInNldFZlcnRleEJ1ZmZlcnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRW
ZXJ0ZXhCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXywKKyAgICAic2V0VmVydGV4QnVmZmVyczpv
ZmZzZXRzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ5dGVz
X2xlbmd0aF9hdEluZGV4XywKKyAgICAic2V0VmVydGV4Qnl0ZXM6bGVuZ3RoOmF0SW5kZXg6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhEZXNjcmlwdG9yXywKKyAgICAic2V0VmVy
dGV4RGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEZ1bmN0aW9u
XywKKyAgICAic2V0VmVydGV4RnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRW
ZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRW
ZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoQnVm
ZmVyUmFuZ2VfLAorICAgICJzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRo
QnVmZmVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhMaW5rZWRGdW5j
dGlvbnNfLAorICAgICJzZXRWZXJ0ZXhMaW5rZWRGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRWZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXNfLAorICAgICJzZXRWZXJ0ZXhQcmVs
b2FkZWRMaWJyYXJpZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhTYW1wbGVy
U3RhdGVfYXRJbmRleF8sCisgICAgInNldFZlcnRleFNhbXBsZXJTdGF0ZTphdEluZGV4OiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlX2xvZE1pbkNsYW1wX2xv
ZE1heENsYW1wX2F0SW5kZXhfLAorICAgICJzZXRWZXJ0ZXhTYW1wbGVyU3RhdGU6bG9kTWluQ2xh
bXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRl
eFNhbXBsZXJTdGF0ZXNfbG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfLAorICAg
ICJzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RNYXhDbGFtcHM6d2l0aFJh
bmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlc193aXRo
UmFuZ2VfLAorICAgICJzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFN0cmlkZV8sCisgICAgInNldFZlcnRleFN0cmlkZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFRleHR1cmVfYXRJbmRleF8sCisgICAg
InNldFZlcnRleFRleHR1cmU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZl
cnRleFRleHR1cmVzX3dpdGhSYW5nZV8sCisgICAgInNldFZlcnRleFRleHR1cmVzOndpdGhSYW5n
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxl
X2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1
ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4VmlzaWJsZUZ1bmN0
aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldFZlcnRleFZpc2libGVGdW5jdGlv
blRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaWV3
cG9ydF8sCisgICAgInNldFZpZXdwb3J0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Vmll
d3BvcnRzX2NvdW50XywKKyAgICAic2V0Vmlld3BvcnRzOmNvdW50OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcl8sCisgICAgInNldFZpc2liaWxpdHlS
ZXN1bHRCdWZmZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaXNpYmlsaXR5UmVzdWx0
TW9kZV9vZmZzZXRfLAorICAgICJzZXRWaXNpYmlsaXR5UmVzdWx0TW9kZTpvZmZzZXQ6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4
XywKKyAgICAic2V0VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFZpc2libGVGdW5jdGlvblRhYmxlX2F0SW5kZXhfLAorICAgICJz
ZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldFZpc2li
bGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aFJhbmdlXywKKyAgICAic2V0VmlzaWJsZUZ1
bmN0aW9uVGFibGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFdpZHRo
XywKKyAgICAic2V0V2lkdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRXcml0ZU1hc2tf
LAorICAgICJzZXRXcml0ZU1hc2s6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzaGFyZWRDYXB0
dXJlTWFuYWdlciwKKyAgICAic2hhcmVkQ2FwdHVyZU1hbmFnZXIiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNpZ25hbGVkVmFsdWUsCisgICAgInNpZ25hbGVkVmFsdWUiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNpemUsCisgICAgInNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNsaWNl
LAorICAgICJzbGljZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc291cmNlQWxwaGFCbGVuZEZh
Y3RvciwKKyAgICAic291cmNlQWxwaGFCbGVuZEZhY3RvciIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc291cmNlUkdCQmxlbmRGYWN0b3IsCisgICAgInNvdXJjZVJHQkJsZW5kRmFjdG9yIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzcGFyc2VUaWxlU2l6ZUluQnl0ZXMsCisgICAgInNwYXJzZVRp
bGVTaXplSW5CeXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3BhcnNlVGlsZVNpemVXaXRo
VGV4dHVyZVR5cGVfcGl4ZWxGb3JtYXRfc2FtcGxlQ291bnRfLAorICAgICJzcGFyc2VUaWxlU2l6
ZVdpdGhUZXh0dXJlVHlwZTpwaXhlbEZvcm1hdDpzYW1wbGVDb3VudDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNwZWNpYWxpemVkTmFtZSwKKyAgICAic3BlY2lhbGl6ZWROYW1lIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzdGFnZUlucHV0QXR0cmlidXRlcywKKyAgICAic3RhZ2VJbnB1dEF0
dHJpYnV0ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YWdlSW5wdXREZXNjcmlwdG9yLAor
ICAgICJzdGFnZUlucHV0RGVzY3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhZ2VJ
bnB1dE91dHB1dERlc2NyaXB0b3IsCisgICAgInN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFydENhcHR1cmVXaXRoQ29tbWFuZFF1ZXVlXywKKyAg
ICAic3RhcnRDYXB0dXJlV2l0aENvbW1hbmRRdWV1ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHN0YXJ0Q2FwdHVyZVdpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAic3RhcnRDYXB0dXJlV2l0
aERlc2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFydENhcHR1cmVX
aXRoRGV2aWNlXywKKyAgICAic3RhcnRDYXB0dXJlV2l0aERldmljZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHN0YXJ0Q2FwdHVyZVdpdGhTY29wZV8sCisgICAgInN0YXJ0Q2FwdHVyZVdpdGhT
Y29wZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgs
CisgICAgInN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4LAorICAgICJzdGFydE9mRnJhZ21lbnRTYW1wbGVJ
bmRleCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4LAor
ICAgICJzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0
YXRpY1RocmVhZGdyb3VwTWVtb3J5TGVuZ3RoLAorICAgICJzdGF0aWNUaHJlYWRncm91cE1lbW9y
eUxlbmd0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhdHVzLAorICAgICJzdGF0dXMiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHN0ZW5jaWxBdHRhY2htZW50LAorICAgICJzdGVuY2lsQXR0
YWNobWVudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZv
cm1hdCwKKyAgICAic3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZvcm1hdCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc3RlbmNpbENvbXBhcmVGdW5jdGlvbiwKKyAgICAic3RlbmNpbENvbXBhcmVGdW5j
dGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlbmNpbEZhaWx1cmVPcGVyYXRpb24sCisg
ICAgInN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGVu
Y2lsUmVzb2x2ZUZpbHRlciwKKyAgICAic3RlbmNpbFJlc29sdmVGaWx0ZXIiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHN0ZXBGdW5jdGlvbiwKKyAgICAic3RlcEZ1bmN0aW9uIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzdGVwUmF0ZSwKKyAgICAic3RlcFJhdGUiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHN0b3BDYXB0dXJlLAorICAgICJzdG9wQ2FwdHVyZSIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc3RvcmFnZU1vZGUsCisgICAgInN0b3JhZ2VNb2RlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzdG9yZUFjdGlvbiwKKyAgICAic3RvcmVBY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHN0b3JlQWN0aW9uT3B0aW9ucywKKyAgICAic3RvcmVBY3Rpb25PcHRpb25zIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzdHJpZGUsCisgICAgInN0cmlkZSIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc3RydWN0VHlwZSwKKyAgICAic3RydWN0VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucywKKyAgICAic3VwcG9ydEFkZGluZ0JpbmFy
eUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydEFkZGluZ0ZyYWdtZW50
QmluYXJ5RnVuY3Rpb25zLAorICAgICJzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlv
bnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5j
dGlvbnMsCisgICAgInN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMsCisgICAgInN1cHBvcnRBcmd1
bWVudEJ1ZmZlcnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRJbmRpcmVjdENvbW1h
bmRCdWZmZXJzLAorICAgICJzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycyIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5nLAorICAgICJzdXBwb3J0
czMyQml0RmxvYXRGaWx0ZXJpbmciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzMzJC
aXRNU0FBLAorICAgICJzdXBwb3J0czMyQml0TVNBQSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c3VwcG9ydHNCQ1RleHR1cmVDb21wcmVzc2lvbiwKKyAgICAic3VwcG9ydHNCQ1RleHR1cmVDb21w
cmVzc2lvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNDb3VudGVyU2FtcGxpbmdf
LAorICAgICJzdXBwb3J0c0NvdW50ZXJTYW1wbGluZzoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHN1cHBvcnRzRGVzdGluYXRpb25fLAorICAgICJzdXBwb3J0c0Rlc3RpbmF0aW9uOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNEeW5hbWljTGlicmFyaWVzLAorICAgICJzdXBwb3J0
c0R5bmFtaWNMaWJyYXJpZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzRmFtaWx5
XywKKyAgICAic3VwcG9ydHNGYW1pbHk6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0
c0ZlYXR1cmVTZXRfLAorICAgICJzdXBwb3J0c0ZlYXR1cmVTZXQ6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnMsCisgICAgInN1cHBvcnRzRnVuY3Rpb25Q
b2ludGVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJz
RnJvbVJlbmRlciwKKyAgICAic3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzRnJvbVJlbmRlciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNQcmltaXRpdmVNb3Rpb25CbHVyLAorICAgICJz
dXBwb3J0c1ByaW1pdGl2ZU1vdGlvbkJsdXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBv
cnRzUHVsbE1vZGVsSW50ZXJwb2xhdGlvbiwKKyAgICAic3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBv
bGF0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCwK
KyAgICAic3VwcG9ydHNRdWVyeVRleHR1cmVMT0QiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1
cHBvcnRzUmFzdGVyaXphdGlvblJhdGVNYXBXaXRoTGF5ZXJDb3VudF8sCisgICAgInN1cHBvcnRz
UmFzdGVyaXphdGlvblJhdGVNYXBXaXRoTGF5ZXJDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHN1cHBvcnRzUmF5dHJhY2luZywKKyAgICAic3VwcG9ydHNSYXl0cmFjaW5nIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyLAorICAgICJzdXBw
b3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0
c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMsCisgICAgInN1cHBvcnRzUmVuZGVyRHluYW1pY0xpYnJh
cmllcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNTaGFkZXJCYXJ5Y2VudHJpY0Nv
b3JkaW5hdGVzLAorICAgICJzdXBwb3J0c1NoYWRlckJhcnljZW50cmljQ29vcmRpbmF0ZXMiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzVGV4dHVyZVNhbXBsZUNvdW50XywKKyAgICAi
c3VwcG9ydHNUZXh0dXJlU2FtcGxlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBw
b3J0c1ZlcnRleEFtcGxpZmljYXRpb25Db3VudF8sCisgICAgInN1cHBvcnRzVmVydGV4QW1wbGlm
aWNhdGlvbkNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3dpenpsZSwKKyAgICAic3dp
enpsZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3luY2hyb25pemVSZXNvdXJjZV8sCisgICAg
InN5bmNocm9uaXplUmVzb3VyY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzeW5jaHJvbml6
ZVRleHR1cmVfc2xpY2VfbGV2ZWxfLAorICAgICJzeW5jaHJvbml6ZVRleHR1cmU6c2xpY2U6bGV2
ZWw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0QWRkcmVzc01vZGUsCisgICAgInRBZGRyZXNz
TW9kZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGFpbFNpemVJbkJ5dGVzLAorICAgICJ0YWls
U2l6ZUluQnl0ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlvbkNvbnRyb2xQ
b2ludEluZGV4VHlwZSwKKyAgICAidGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQsCisgICAgInRl
c3NlbGxhdGlvbkZhY3RvckZvcm1hdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGVzc2VsbGF0
aW9uRmFjdG9yU3RlcEZ1bmN0aW9uLAorICAgICJ0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rp
b24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRl
ciwKKyAgICAidGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTCh0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlLAorICAgICJ0ZXNzZWxsYXRpb25QYXJ0
aXRpb25Nb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXh0dXJlLAorICAgICJ0ZXh0dXJl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXh0dXJlMkREZXNjcmlwdG9yV2l0aFBpeGVsRm9y
bWF0X3dpZHRoX2hlaWdodF9taXBtYXBwZWRfLAorICAgICJ0ZXh0dXJlMkREZXNjcmlwdG9yV2l0
aFBpeGVsRm9ybWF0OndpZHRoOmhlaWdodDptaXBtYXBwZWQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTCh0ZXh0dXJlQmFycmllciwKKyAgICAidGV4dHVyZUJhcnJpZXIiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHRleHR1cmVCdWZmZXJEZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0X3dpZHRoX3Jl
c291cmNlT3B0aW9uc191c2FnZV8sCisgICAgInRleHR1cmVCdWZmZXJEZXNjcmlwdG9yV2l0aFBp
eGVsRm9ybWF0OndpZHRoOnJlc291cmNlT3B0aW9uczp1c2FnZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHRleHR1cmVDdWJlRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdF9zaXplX21pcG1hcHBl
ZF8sCisgICAgInRleHR1cmVDdWJlRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdDpzaXplOm1pcG1h
cHBlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRleHR1cmVEYXRhVHlwZSwKKyAgICAidGV4
dHVyZURhdGFUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXh0dXJlUmVmZXJlbmNlVHlw
ZSwKKyAgICAidGV4dHVyZVJlZmVyZW5jZVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRl
eHR1cmVUeXBlLAorICAgICJ0ZXh0dXJlVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGhy
ZWFkRXhlY3V0aW9uV2lkdGgsCisgICAgInRocmVhZEV4ZWN1dGlvbldpZHRoIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTCh0aHJlYWRHcm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25X
aWR0aCwKKyAgICAidGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lk
dGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRocmVhZGdyb3VwTWVtb3J5QWxpZ25tZW50LAor
ICAgICJ0aHJlYWRncm91cE1lbW9yeUFsaWdubWVudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
dGhyZWFkZ3JvdXBNZW1vcnlEYXRhU2l6ZSwKKyAgICAidGhyZWFkZ3JvdXBNZW1vcnlEYXRhU2l6
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgsCisgICAg
InRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRn
cm91cFNpemVNYXRjaGVzVGlsZVNpemUsCisgICAgInRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxl
U2l6ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnMsCisgICAgInRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTCh0aWxlQXJndW1lbnRzLAorICAgICJ0aWxlQXJndW1lbnRzIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTCh0aWxlQnVmZmVycywKKyAgICAidGlsZUJ1ZmZlcnMiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHRpbGVGdW5jdGlvbiwKKyAgICAidGlsZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTCh0aWxlSGVpZ2h0LAorICAgICJ0aWxlSGVpZ2h0Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTCh0aWxlV2lkdGgsCisgICAgInRpbGVXaWR0aCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwodHJpYW5nbGVDb3VudCwKKyAgICAidHJpYW5nbGVDb3VudCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodHlwZSwKKyAgICAidHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXBkYXRlRmVu
Y2VfLAorICAgICJ1cGRhdGVGZW5jZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVwZGF0ZUZl
bmNlX2FmdGVyU3RhZ2VzXywKKyAgICAidXBkYXRlRmVuY2U6YWZ0ZXJTdGFnZXM6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTCh1cGRhdGVUZXh0dXJlTWFwcGluZ19tb2RlX2luZGlyZWN0QnVmZmVy
X2luZGlyZWN0QnVmZmVyT2Zmc2V0XywKKyAgICAidXBkYXRlVGV4dHVyZU1hcHBpbmc6bW9kZTpp
bmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHVwZGF0ZVRleHR1cmVNYXBwaW5nX21vZGVfcmVnaW9uX21pcExldmVsX3NsaWNlXywKKyAg
ICAidXBkYXRlVGV4dHVyZU1hcHBpbmc6bW9kZTpyZWdpb246bWlwTGV2ZWw6c2xpY2U6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTCh1cGRhdGVUZXh0dXJlTWFwcGluZ3NfbW9kZV9yZWdpb25zX21p
cExldmVsc19zbGljZXNfbnVtUmVnaW9uc18sCisgICAgInVwZGF0ZVRleHR1cmVNYXBwaW5nczpt
b2RlOnJlZ2lvbnM6bWlwTGV2ZWxzOnNsaWNlczpudW1SZWdpb25zOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwodXJsLAorICAgICJ1cmwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzYWdlLAor
ICAgICJ1c2FnZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlSGVhcF8sCisgICAgInVzZUhl
YXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1c2VIZWFwX3N0YWdlc18sCisgICAgInVzZUhl
YXA6c3RhZ2VzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlSGVhcHNfY291bnRfLAorICAg
ICJ1c2VIZWFwczpjb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZUhlYXBzX2NvdW50
X3N0YWdlc18sCisgICAgInVzZUhlYXBzOmNvdW50OnN0YWdlczoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHVzZVJlc291cmNlX3VzYWdlXywKKyAgICAidXNlUmVzb3VyY2U6dXNhZ2U6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTCh1c2VSZXNvdXJjZV91c2FnZV9zdGFnZXNfLAorICAgICJ1c2VS
ZXNvdXJjZTp1c2FnZTpzdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1c2VSZXNvdXJj
ZXNfY291bnRfdXNhZ2VfLAorICAgICJ1c2VSZXNvdXJjZXM6Y291bnQ6dXNhZ2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTCh1c2VSZXNvdXJjZXNfY291bnRfdXNhZ2Vfc3RhZ2VzXywKKyAgICAi
dXNlUmVzb3VyY2VzOmNvdW50OnVzYWdlOnN0YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHVzZWRTaXplLAorICAgICJ1c2VkU2l6ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGV4
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywKKyAgICAidmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1
bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGV4QXJndW1lbnRzLAorICAgICJ2
ZXJ0ZXhBcmd1bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleEF0dHJpYnV0ZXMs
CisgICAgInZlcnRleEF0dHJpYnV0ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleEJ1
ZmZlciwKKyAgICAidmVydGV4QnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhC
dWZmZXJPZmZzZXQsCisgICAgInZlcnRleEJ1ZmZlck9mZnNldCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodmVydGV4QnVmZmVycywKKyAgICAidmVydGV4QnVmZmVycyIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwodmVydGV4RGVzY3JpcHRvciwKKyAgICAidmVydGV4RGVzY3JpcHRvciIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwodmVydGV4RnVuY3Rpb24sCisgICAgInZlcnRleEZ1bmN0aW9uIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMsCisgICAgInZlcnRl
eExpbmtlZEZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGV4UHJlbG9hZGVk
TGlicmFyaWVzLAorICAgICJ2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHZlcnRleFN0cmlkZSwKKyAgICAidmVydGV4U3RyaWRlIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTCh2ZXJ0aWNhbCwKKyAgICAidmVydGljYWwiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHZlcnRpY2FsU2FtcGxlU3RvcmFnZSwKKyAgICAidmVydGljYWxTYW1wbGVTdG9yYWdlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2aXNpYmlsaXR5UmVzdWx0QnVmZmVyLAorICAgICJ2aXNp
YmlsaXR5UmVzdWx0QnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2aXNpYmxlRnVuY3Rp
b25UYWJsZURlc2NyaXB0b3IsCisgICAgInZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwod2FpdEZvckZlbmNlXywKKyAgICAid2FpdEZvckZlbmNl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwod2FpdEZvckZlbmNlX2JlZm9yZVN0YWdlc18sCisg
ICAgIndhaXRGb3JGZW5jZTpiZWZvcmVTdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3
YWl0VW50aWxDb21wbGV0ZWQsCisgICAgIndhaXRVbnRpbENvbXBsZXRlZCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwod2FpdFVudGlsU2NoZWR1bGVkLAorICAgICJ3YWl0VW50aWxTY2hlZHVsZWQi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHdpZHRoLAorICAgICJ3aWR0aCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwod3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplX3RvQnVm
ZmVyX29mZnNldF8sCisgICAgIndyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6
ZTp0b0J1ZmZlcjpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3cml0ZUNvbXBhY3Rl
ZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemVfdG9CdWZmZXJfb2Zmc2V0X3NpemVEYXRhVHlwZV8s
CisgICAgIndyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZTp0b0J1ZmZlcjpv
ZmZzZXQ6c2l6ZURhdGFUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwod3JpdGVNYXNrLAor
ICAgICJ3cml0ZU1hc2siKTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEhlYXAuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEhlYXAuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViMmMzZTEyZmU0ODA3OWJlOTQwYWI4
M2UyNjlkOGJiZjE1ZTU5YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5ocHAKQEAgLTAsMCArMSwyODIgQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEhl
YXAuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExIZWFwLmhwcCIKKyNpbmNsdWRlICJNVExSZXNv
dXJjZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6SW50ZWdlciwgSGVh
cFR5cGUpIHsKKyAgICBIZWFwVHlwZUF1dG9tYXRpYyA9IDAsCisgICAgSGVhcFR5cGVQbGFjZW1l
bnQgPSAxLAorICAgIEhlYXBUeXBlU3BhcnNlID0gMiwKK307CisKK2NsYXNzIEhlYXBEZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEhlYXBEZXNjcmlwdG9yPgoreworcHVibGljOgorICAg
IHN0YXRpYyBjbGFzcyBIZWFwRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEhlYXBE
ZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICBzaXplKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRT
aXplKE5TOjpVSW50ZWdlciBzaXplKTsKKworICAgIE1UTDo6U3RvcmFnZU1vZGUgICAgICAgICAg
ICAgc3RvcmFnZU1vZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFN0b3JhZ2VNb2RlKE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpOworCisgICAgTVRM
OjpDUFVDYWNoZU1vZGUgICAgICAgICAgICBjcHVDYWNoZU1vZGUoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldENwdUNhY2hlTW9kZShNVEw6OkNQVUNhY2hlTW9k
ZSBjcHVDYWNoZU1vZGUpOworCisgICAgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgICAgICBoYXph
cmRUcmFja2luZ01vZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEhhemFyZFRyYWNraW5nTW9kZShNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBoYXphcmRUcmFj
a2luZ01vZGUpOworCisgICAgTVRMOjpSZXNvdXJjZU9wdGlvbnMgICAgICAgICByZXNvdXJjZU9w
dGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc291
cmNlT3B0aW9ucyhNVEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMpOworCisgICAg
TVRMOjpIZWFwVHlwZSAgICAgICAgICAgICAgICB0eXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRUeXBlKE1UTDo6SGVhcFR5cGUgdHlwZSk7Cit9OworCitj
bGFzcyBIZWFwIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxIZWFwPgoreworcHVibGljOgorICAg
IE5TOjpTdHJpbmcqICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xh
c3MgRGV2aWNlKiAgICAgICAgICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBNVEw6OlN0b3JhZ2VN
b2RlICAgICAgICBzdG9yYWdlTW9kZSgpIGNvbnN0OworCisgICAgTVRMOjpDUFVDYWNoZU1vZGUg
ICAgICAgY3B1Q2FjaGVNb2RlKCkgY29uc3Q7CisKKyAgICBNVEw6OkhhemFyZFRyYWNraW5nTW9k
ZSBoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdDsKKworICAgIE1UTDo6UmVzb3VyY2VPcHRpb25z
ICAgIHJlc291cmNlT3B0aW9ucygpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgc2l6ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgdXNlZFNpemUo
KSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgIGN1cnJlbnRBbGxvY2F0ZWRT
aXplKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICBtYXhBdmFpbGFibGVT
aXplKE5TOjpVSW50ZWdlciBhbGlnbm1lbnQpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAg
ICAgbmV3QnVmZmVyKE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9w
dGlvbnMpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgbmV3VGV4dHVyZShjb25zdCBj
bGFzcyBUZXh0dXJlRGVzY3JpcHRvciogZGVzYyk7CisKKyAgICBNVEw6OlB1cmdlYWJsZVN0YXRl
ICAgICBzZXRQdXJnZWFibGVTdGF0ZShNVEw6OlB1cmdlYWJsZVN0YXRlIHN0YXRlKTsKKworICAg
IE1UTDo6SGVhcFR5cGUgICAgICAgICAgIHR5cGUoKSBjb25zdDsKKworICAgIGNsYXNzIEJ1ZmZl
ciogICAgICAgICAgIG5ld0J1ZmZlcihOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNl
T3B0aW9ucyBvcHRpb25zLCBOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIGNsYXNzIFRleHR1
cmUqICAgICAgICAgIG5ld1RleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IsIE5TOjpVSW50ZWdlciBvZmZzZXQpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpIZWFwRGVzY3JpcHRvciogTVRMOjpIZWFwRGVz
Y3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6Okhl
YXBEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEhlYXBEZXNjcmlwdG9yKSk7Cit9CisK
Ky8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpIZWFwRGVzY3JpcHRvciogTVRMOjpI
ZWFwRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpIZWFwRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHNpemUKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkhlYXBEZXNjcmlwdG9yOjpzaXplKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2l6ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6
OnNldFNpemUoTlM6OlVJbnRlZ2VyIHNpemUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNpemVfKSwgc2l6ZSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBzdG9yYWdlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTdG9yYWdlTW9kZSBNVEw6Okhl
YXBEZXNjcmlwdG9yOjpzdG9yYWdlTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpTdG9yYWdlTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdG9y
YWdlTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6OnNl
dFN0b3JhZ2VNb2RlKE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0b3JhZ2VNb2Rl
XyksIHN0b3JhZ2VNb2RlKTsKK30KKworLy8gcHJvcGVydHk6IGNwdUNhY2hlTW9kZQorX01UTF9J
TkxJTkUgTVRMOjpDUFVDYWNoZU1vZGUgTVRMOjpIZWFwRGVzY3JpcHRvcjo6Y3B1Q2FjaGVNb2Rl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNQVUNhY2hl
TW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChjcHVDYWNoZU1vZGUpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkhlYXBEZXNjcmlwdG9yOjpzZXRDcHVDYWNoZU1vZGUoTVRMOjpDUFVD
YWNoZU1vZGUgY3B1Q2FjaGVNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDcHVDYWNoZU1vZGVfKSwgY3B1Q2FjaGVNb2RlKTsK
K30KKworLy8gcHJvcGVydHk6IGhhemFyZFRyYWNraW5nTW9kZQorX01UTF9JTkxJTkUgTVRMOjpI
YXphcmRUcmFja2luZ01vZGUgTVRMOjpIZWFwRGVzY3JpcHRvcjo6aGF6YXJkVHJhY2tpbmdNb2Rl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkhhemFyZFRy
YWNraW5nTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChoYXphcmRUcmFja2luZ01vZGUpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXBEZXNjcmlwdG9yOjpzZXRIYXphcmRUcmFj
a2luZ01vZGUoTVRMOjpIYXphcmRUcmFja2luZ01vZGUgaGF6YXJkVHJhY2tpbmdNb2RlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRI
YXphcmRUcmFja2luZ01vZGVfKSwgaGF6YXJkVHJhY2tpbmdNb2RlKTsKK30KKworLy8gcHJvcGVy
dHk6IHJlc291cmNlT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZU9wdGlvbnMgTVRM
OjpIZWFwRGVzY3JpcHRvcjo6cmVzb3VyY2VPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlT3B0aW9ucz4odGhpcywgX01UTF9QUklW
QVRFX1NFTChyZXNvdXJjZU9wdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okhl
YXBEZXNjcmlwdG9yOjpzZXRSZXNvdXJjZU9wdGlvbnMoTVRMOjpSZXNvdXJjZU9wdGlvbnMgcmVz
b3VyY2VPcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRSZXNvdXJjZU9wdGlvbnNfKSwgcmVzb3VyY2VPcHRpb25zKTsKK30K
KworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5MSU5FIE1UTDo6SGVhcFR5cGUgTVRMOjpIZWFw
RGVzY3JpcHRvcjo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpIZWFwVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0eXBlKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0VHlwZShNVEw6OkhlYXBUeXBl
IHR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFR5cGVfKSwgdHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9J
TkxJTkUgTlM6OlN0cmluZyogTVRMOjpIZWFwOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXA6OnNldExhYmVsKGNvbnN0
IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5
OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkhlYXA6OmRldmljZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogc3RvcmFnZU1v
ZGUKK19NVExfSU5MSU5FIE1UTDo6U3RvcmFnZU1vZGUgTVRMOjpIZWFwOjpzdG9yYWdlTW9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdG9yYWdlTW9k
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdG9yYWdlTW9kZSkpOworfQorCisvLyBwcm9wZXJ0
eTogY3B1Q2FjaGVNb2RlCitfTVRMX0lOTElORSBNVEw6OkNQVUNhY2hlTW9kZSBNVEw6OkhlYXA6
OmNwdUNhY2hlTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpDUFVDYWNoZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY3B1Q2FjaGVNb2RlKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBoYXphcmRUcmFja2luZ01vZGUKK19NVExfSU5MSU5FIE1UTDo6
SGF6YXJkVHJhY2tpbmdNb2RlIE1UTDo6SGVhcDo6aGF6YXJkVHJhY2tpbmdNb2RlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkhhemFyZFRyYWNraW5nTW9k
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChoYXphcmRUcmFja2luZ01vZGUpKTsKK30KKworLy8g
cHJvcGVydHk6IHJlc291cmNlT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZU9wdGlv
bnMgTVRMOjpIZWFwOjpyZXNvdXJjZU9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VPcHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHJlc291cmNlT3B0aW9ucykpOworfQorCisvLyBwcm9wZXJ0eTogc2l6ZQorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6SGVhcDo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNp
emUpKTsKK30KKworLy8gcHJvcGVydHk6IHVzZWRTaXplCitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpIZWFwOjp1c2VkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZWRTaXplKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBjdXJyZW50QWxsb2NhdGVkU2l6ZQorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6SGVhcDo6Y3VycmVudEFsbG9jYXRlZFNpemUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChjdXJyZW50QWxsb2NhdGVkU2l6ZSkpOworfQorCisvLyBtZXRob2Q6IG1heEF2YWls
YWJsZVNpemVXaXRoQWxpZ25tZW50OgorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SGVh
cDo6bWF4QXZhaWxhYmxlU2l6ZShOUzo6VUludGVnZXIgYWxpZ25tZW50KQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChtYXhBdmFpbGFibGVTaXplV2l0aEFsaWdubWVudF8pLCBhbGlnbm1lbnQpOworfQorCisvLyBt
ZXRob2Q6IG5ld0J1ZmZlcldpdGhMZW5ndGg6b3B0aW9uczoKK19NVExfSU5MSU5FIE1UTDo6QnVm
ZmVyKiBNVEw6OkhlYXA6Om5ld0J1ZmZlcihOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291
cmNlT3B0aW9ucyBvcHRpb25zKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdCdWZmZXJXaXRoTGVuZ3RoX29w
dGlvbnNfKSwgbGVuZ3RoLCBvcHRpb25zKTsKK30KKworLy8gbWV0aG9kOiBuZXdUZXh0dXJlV2l0
aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6SGVhcDo6bmV3VGV4
dHVyZShjb25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNjKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yXyksIGRlc2MpOworfQorCisvLyBtZXRob2Q6IHNldFB1
cmdlYWJsZVN0YXRlOgorX01UTF9JTkxJTkUgTVRMOjpQdXJnZWFibGVTdGF0ZSBNVEw6OkhlYXA6
OnNldFB1cmdlYWJsZVN0YXRlKE1UTDo6UHVyZ2VhYmxlU3RhdGUgc3RhdGUpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQdXJnZWFibGVTdGF0ZT4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRQdXJnZWFibGVTdGF0ZV8pLCBzdGF0ZSk7Cit9CisKKy8vIHByb3BlcnR5
OiB0eXBlCitfTVRMX0lOTElORSBNVEw6OkhlYXBUeXBlIE1UTDo6SGVhcDo6dHlwZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpIZWFwVHlwZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh0eXBlKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3QnVmZmVyV2l0aExl
bmd0aDpvcHRpb25zOm9mZnNldDoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkhlYXA6
Om5ld0J1ZmZlcihOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRp
b25zLCBOUzo6VUludGVnZXIgb2Zmc2V0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdCdWZmZXJXaXRoTGVu
Z3RoX29wdGlvbnNfb2Zmc2V0XyksIGxlbmd0aCwgb3B0aW9ucywgb2Zmc2V0KTsKK30KKworLy8g
bWV0aG9kOiBuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6b2Zmc2V0OgorX01UTF9JTkxJTkUgTVRM
OjpUZXh0dXJlKiBNVEw6OkhlYXA6Om5ld1RleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlRGVzY3Jp
cHRvciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG9mZnNldCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1RleHR1cmVXaXRoRGVzY3JpcHRvcl9vZmZzZXRfKSwgZGVzY3JpcHRvciwgb2Zmc2V0KTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRp
cmVjdENvbW1hbmRCdWZmZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhM2EzNTk3N2Iw
MWUyYjAwYjI2YTE4YTk1MjczNGQ1NTM3YWQ1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBw
CkBAIC0wLDAgKzEsMTg5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwCisvLwor
Ly8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
TVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRl
ICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+
CisKKyNpbmNsdWRlICJNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1U
TFJlc291cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9PUFRJT05TKE5TOjpVSW50
ZWdlciwgSW5kaXJlY3RDb21tYW5kVHlwZSkgeworICAgIEluZGlyZWN0Q29tbWFuZFR5cGVEcmF3
ID0gMSwKKyAgICBJbmRpcmVjdENvbW1hbmRUeXBlRHJhd0luZGV4ZWQgPSAyLAorICAgIEluZGly
ZWN0Q29tbWFuZFR5cGVEcmF3UGF0Y2hlcyA9IDQsCisgICAgSW5kaXJlY3RDb21tYW5kVHlwZURy
YXdJbmRleGVkUGF0Y2hlcyA9IDgsCisgICAgSW5kaXJlY3RDb21tYW5kVHlwZUNvbmN1cnJlbnRE
aXNwYXRjaCA9IDMyLAorICAgIEluZGlyZWN0Q29tbWFuZFR5cGVDb25jdXJyZW50RGlzcGF0Y2hU
aHJlYWRzID0gNjQsCit9OworCitzdHJ1Y3QgSW5kaXJlY3RDb21tYW5kQnVmZmVyRXhlY3V0aW9u
UmFuZ2UKK3sKKyAgICB1aW50MzJfdCBsb2NhdGlvbjsKKyAgICB1aW50MzJfdCBsZW5ndGg7Cit9
IF9NVExfUEFDS0VEOworCitjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yIDog
cHVibGljIE5TOjpDb3B5aW5nPEluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiAg
ICAgICAgaW5pdCgpOworCisgICAgTVRMOjpJbmRpcmVjdENvbW1hbmRUeXBlICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1hbmRUeXBlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb21tYW5kVHlwZXMoTVRMOjpJbmRpcmVjdENv
bW1hbmRUeXBlIGNvbW1hbmRUeXBlcyk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFBpcGVsaW5lU3RhdGUoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5oZXJpdFBp
cGVsaW5lU3RhdGUoYm9vbCBpbmhlcml0UGlwZWxpbmVTdGF0ZSk7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdEJ1ZmZlcnMoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
SW5oZXJpdEJ1ZmZlcnMoYm9vbCBpbmhlcml0QnVmZmVycyk7CisKKyAgICBOUzo6VUludGVnZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmVydGV4QnVmZmVyQmluZENvdW50
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldE1heFZlcnRleEJ1ZmZlckJpbmRDb3VudChOUzo6VUludGVnZXIgbWF4VmVydGV4QnVm
ZmVyQmluZENvdW50KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhGcmFnbWVudEJ1
ZmZlckJpbmRDb3VudChOUzo6VUludGVnZXIgbWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEtl
cm5lbEJ1ZmZlckJpbmRDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQoTlM6OlVJ
bnRlZ2VyIG1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudCk7Cit9OworCitjbGFzcyBJbmRpcmVjdENv
bW1hbmRCdWZmZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEluZGlyZWN0Q29tbWFuZEJ1ZmZl
ciwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgc2l6ZSgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
ZXQoTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIGNsYXNzIEluZGlyZWN0UmVuZGVyQ29tbWFuZCog
IGluZGlyZWN0UmVuZGVyQ29tbWFuZChOUzo6VUludGVnZXIgY29tbWFuZEluZGV4KTsKKworICAg
IGNsYXNzIEluZGlyZWN0Q29tcHV0ZUNvbW1hbmQqIGluZGlyZWN0Q29tcHV0ZUNvbW1hbmQoTlM6
OlVJbnRlZ2VyIGNvbW1hbmRJbmRleCk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIE1U
TDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I+
KF9NVExfUFJJVkFURV9DTFMoTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcikpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVm
ZmVyRGVzY3JpcHRvciogTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjppbml0
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkluZGlyZWN0Q29tbWFuZEJ1
ZmZlckRlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBjb21tYW5kVHlwZXMKK19NVExf
SU5MSU5FIE1UTDo6SW5kaXJlY3RDb21tYW5kVHlwZSBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZl
ckRlc2NyaXB0b3I6OmNvbW1hbmRUeXBlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpJbmRpcmVjdENvbW1hbmRUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGNvbW1hbmRUeXBlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RD
b21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6c2V0Q29tbWFuZFR5cGVzKE1UTDo6SW5kaXJlY3RDb21t
YW5kVHlwZSBjb21tYW5kVHlwZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbW1hbmRUeXBlc18pLCBjb21tYW5kVHlwZXMpOwor
fQorCisvLyBwcm9wZXJ0eTogaW5oZXJpdFBpcGVsaW5lU3RhdGUKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjppbmhlcml0UGlwZWxpbmVTdGF0
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChpbmhlcml0UGlwZWxpbmVTdGF0ZSkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6c2V0SW5oZXJpdFBp
cGVsaW5lU3RhdGUoYm9vbCBpbmhlcml0UGlwZWxpbmVTdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5oZXJpdFBpcGVsaW5l
U3RhdGVfKSwgaW5oZXJpdFBpcGVsaW5lU3RhdGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5oZXJp
dEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yOjppbmhlcml0QnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmhlcml0QnVmZmVycykpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRv
cjo6c2V0SW5oZXJpdEJ1ZmZlcnMoYm9vbCBpbmhlcml0QnVmZmVycykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5oZXJpdEJ1ZmZl
cnNfKSwgaW5oZXJpdEJ1ZmZlcnMpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VmVydGV4QnVmZmVy
QmluZENvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJbmRpcmVjdENvbW1hbmRC
dWZmZXJEZXNjcmlwdG9yOjptYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNldE1heFZlcnRleEJ1ZmZl
ckJpbmRDb3VudChOUzo6VUludGVnZXIgbWF4VmVydGV4QnVmZmVyQmluZENvdW50KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhW
ZXJ0ZXhCdWZmZXJCaW5kQ291bnRfKSwgbWF4VmVydGV4QnVmZmVyQmluZENvdW50KTsKK30KKwor
Ly8gcHJvcGVydHk6IG1heEZyYWdtZW50QnVmZmVyQmluZENvdW50CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjptYXhGcmFnbWVu
dEJ1ZmZlckJpbmRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heEZyYWdtZW50QnVmZmVy
QmluZENvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRC
dWZmZXJEZXNjcmlwdG9yOjpzZXRNYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudChOUzo6VUludGVn
ZXIgbWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heEZyYWdtZW50QnVmZmVyQmluZENv
dW50XyksIG1heEZyYWdtZW50QnVmZmVyQmluZENvdW50KTsKK30KKworLy8gcHJvcGVydHk6IG1h
eEtlcm5lbEJ1ZmZlckJpbmRDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SW5k
aXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6bWF4S2VybmVsQnVmZmVyQmluZENvdW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobWF4S2VybmVsQnVmZmVyQmluZENvdW50KSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRN
YXhLZXJuZWxCdWZmZXJCaW5kQ291bnQoTlM6OlVJbnRlZ2VyIG1heEtlcm5lbEJ1ZmZlckJpbmRD
b3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0TWF4S2VybmVsQnVmZmVyQmluZENvdW50XyksIG1heEtlcm5lbEJ1ZmZlckJpbmRD
b3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBzaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
aXplKSk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXRXaXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyOjpyZXNldChOUzo6UmFuZ2UgcmFuZ2UpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0
V2l0aFJhbmdlXyksIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBpbmRpcmVjdFJlbmRlckNvbW1h
bmRBdEluZGV4OgorX01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQqIE1UTDo6
SW5kaXJlY3RDb21tYW5kQnVmZmVyOjppbmRpcmVjdFJlbmRlckNvbW1hbmQoTlM6OlVJbnRlZ2Vy
IGNvbW1hbmRJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Oklu
ZGlyZWN0UmVuZGVyQ29tbWFuZCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kaXJlY3RSZW5k
ZXJDb21tYW5kQXRJbmRleF8pLCBjb21tYW5kSW5kZXgpOworfQorCisvLyBtZXRob2Q6IGluZGly
ZWN0Q29tcHV0ZUNvbW1hbmRBdEluZGV4OgorX01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdENvbXB1
dGVDb21tYW5kKiBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlcjo6aW5kaXJlY3RDb21wdXRlQ29t
bWFuZChOUzo6VUludGVnZXIgY29tbWFuZEluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZCo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoaW5kaXJlY3RDb21wdXRlQ29tbWFuZEF0SW5kZXhfKSwgY29tbWFuZEluZGV4KTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRp
cmVjdENvbW1hbmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExJbmRpcmVjdENvbW1hbmRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmQ1MmZkN2Rj
ZTEyMTZmYTQ3MGVmMjk4YmFkMDFmZDMwYTYxNzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIu
aHBwCkBAIC0wLDAgKzEsMTg3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExJbmRpcmVjdENvbW1hbmRFbmNvZGVyLmhwcAor
Ly8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5j
bHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aHBwPgorCisjaW5jbHVkZSAiTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUg
Ik1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcCIKKyNpbmNsdWRlICJNVExUeXBlcy5o
cHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIEluZGlyZWN0UmVuZGVyQ29tbWFuZCA6IHB1
YmxpYyBOUzo6UmVmZXJlbmNpbmc8SW5kaXJlY3RSZW5kZXJDb21tYW5kPgoreworcHVibGljOgor
ICAgIHZvaWQgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBSZW5kZXJQaXBlbGlu
ZVN0YXRlKiBwaXBlbGluZVN0YXRlKTsKKworICAgIHZvaWQgc2V0VmVydGV4QnVmZmVyKGNvbnN0
IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIg
aW5kZXgpOworCisgICAgdm9pZCBzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIq
IGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAg
IHZvaWQgZHJhd1BhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRz
LCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQsIGNvbnN0
IGNsYXNzIEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhC
dWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFz
ZUluc3RhbmNlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKTsKKworICAgIHZvaWQgZHJhd0luZGV4ZWRQ
YXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRl
Z2VyIHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBjbGFzcyBCdWZm
ZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0
LCBjb25zdCBjbGFzcyBCdWZmZXIqIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBOUzo6VUludGVn
ZXIgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNv
dW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKTsKKwor
ICAgIHZvaWQgZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUs
IE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50LCBOUzo6
VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7CisKKyAg
ICB2b2lkIGRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZl
VHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwg
Y29uc3QgY2xhc3MgQnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVy
T2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OkludGVnZXIgYmFzZVZlcnRl
eCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7CisKKyAgICB2b2lkIHJlc2V0KCk7Cit9Owor
CitjbGFzcyBJbmRpcmVjdENvbXB1dGVDb21tYW5kIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxJ
bmRpcmVjdENvbXB1dGVDb21tYW5kPgoreworcHVibGljOgorICAgIHZvaWQgc2V0Q29tcHV0ZVBp
cGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lU3Rh
dGUpOworCisgICAgdm9pZCBzZXRLZXJuZWxCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZm
ZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lk
IGNvbmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3VwcyhNVEw6OlNpemUgdGhyZWFkZ3JvdXBzUGVy
R3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCk7CisKKyAgICB2b2lkIGNvbmN1
cnJlbnREaXNwYXRjaFRocmVhZHMoTVRMOjpTaXplIHRocmVhZHNQZXJHcmlkLCBNVEw6OlNpemUg
dGhyZWFkc1BlclRocmVhZGdyb3VwKTsKKworICAgIHZvaWQgc2V0QmFycmllcigpOworCisgICAg
dm9pZCBjbGVhckJhcnJpZXIoKTsKKworICAgIHZvaWQgc2V0SW1hZ2VibG9ja1dpZHRoKE5TOjpV
SW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCk7CisKKyAgICB2b2lkIHJlc2V0KCk7
CisKKyAgICB2b2lkIHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKE5TOjpVSW50ZWdlciBsZW5n
dGgsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldFN0YWdlSW5SZWdpb24oTVRM
OjpSZWdpb24gcmVnaW9uKTsKK307CisKK30KKworLy8gbWV0aG9kOiBzZXRSZW5kZXJQaXBlbGlu
ZVN0YXRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6c2V0
UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqIHBpcGVs
aW5lU3RhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFJlbmRlclBpcGVsaW5lU3RhdGVfKSwgcGlwZWxpbmVTdGF0ZSk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0VmVydGV4QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IE1U
TDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VmVydGV4QnVmZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kOjpzZXRGcmFnbWVudEJ1
ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50QnVmZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZl
ciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd1BhdGNoZXM6cGF0Y2hTdGFy
dDpwYXRjaENvdW50OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDppbnN0
YW5jZUNvdW50OmJhc2VJbnN0YW5jZTp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXI6dGVzc2VsbGF0
aW9uRmFjdG9yQnVmZmVyT2Zmc2V0OnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3RhbmNlU3Ry
aWRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6ZHJhd1Bh
dGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBOUzo6VUludGVn
ZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQsIGNvbnN0IE1UTDo6QnVmZmVy
KiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UsIGNv
bnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdl
ciBpbnN0YW5jZVN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZHJhd1BhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNo
SW5kZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0
YW5jZV90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zm
c2V0X3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3RhbmNlU3RyaWRlXyksIG51bWJlck9mUGF0
Y2hDb250cm9sUG9pbnRzLCBwYXRjaFN0YXJ0LCBwYXRjaENvdW50LCBwYXRjaEluZGV4QnVmZmVy
LCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlSW5zdGFuY2UsIGJ1
ZmZlciwgb2Zmc2V0LCBpbnN0YW5jZVN0cmlkZSk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4
ZWRQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5k
ZXhCdWZmZXJPZmZzZXQ6Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhC
dWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6dGVzc2VsbGF0aW9uRmFjdG9y
QnVmZmVyOnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlck9mZnNldDp0ZXNzZWxsYXRpb25GYWN0b3JC
dWZmZXJJbnN0YW5jZVN0cmlkZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJlbmRl
ckNvbW1hbmQ6OmRyYXdJbmRleGVkUGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENv
bnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVnZXIgcGF0Y2hD
b3VudCwgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBw
YXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZlciogY29udHJvbFBvaW50SW5k
ZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwgTlM6
OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UsIGNvbnN0
IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBp
bnN0YW5jZVN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZHJhd0luZGV4ZWRQYXRjaGVzX3BhdGNoU3RhcnRfcGF0Y2hDb3VudF9w
YXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfY29udHJvbFBvaW50SW5kZXhC
dWZmZXJfY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlSW5z
dGFuY2VfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyX3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlck9m
ZnNldF90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlkZV8pLCBudW1iZXJPZlBh
dGNoQ29udHJvbFBvaW50cywgcGF0Y2hTdGFydCwgcGF0Y2hDb3VudCwgcGF0Y2hJbmRleEJ1ZmZl
ciwgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29udHJvbFBvaW50SW5kZXhCdWZmZXIsIGNvbnRy
b2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlSW5zdGFuY2UsIGJ1
ZmZlciwgb2Zmc2V0LCBpbnN0YW5jZVN0cmlkZSk7Cit9CisKKy8vIG1ldGhvZDogZHJhd1ByaW1p
dGl2ZXM6dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kOjpkcmF3UHJpbWl0
aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRl
eFN0YXJ0LCBOUzo6VUludGVnZXIgdmVydGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNv
dW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFy
dF92ZXJ0ZXhDb3VudF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV8pLCBwcmltaXRpdmVUeXBl
LCB2ZXJ0ZXhTdGFydCwgdmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGJhc2VJbnN0YW5jZSk7
Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4Q291bnQ6aW5kZXhU
eXBlOmluZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZVZlcnRl
eDpiYXNlSW5zdGFuY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21t
YW5kOjpkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5
cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUsIGNv
bnN0IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zm
c2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OkludGVnZXIgYmFzZVZlcnRleCwg
TlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0luZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291
bnRfaW5kZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRf
YmFzZVZlcnRleF9iYXNlSW5zdGFuY2VfKSwgcHJpbWl0aXZlVHlwZSwgaW5kZXhDb3VudCwgaW5k
ZXhUeXBlLCBpbmRleEJ1ZmZlciwgaW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNlQ291bnQsIGJh
c2VWZXJ0ZXgsIGJhc2VJbnN0YW5jZSk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXQKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQ6OnJlc2V0KCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30K
KworLy8gbWV0aG9kOiBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25z
dCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZVN0YXRlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlUGlw
ZWxpbmVTdGF0ZV8pLCBwaXBlbGluZVN0YXRlKTsKK30KKworLy8gbWV0aG9kOiBzZXRLZXJuZWxC
dWZmZXI6b2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21w
dXRlQ29tbWFuZDo6c2V0S2VybmVsQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5T
OjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0S2VybmVsQnVmZmVyX29m
ZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDog
Y29uY3VycmVudERpc3BhdGNoVGhyZWFkZ3JvdXBzOnRocmVhZHNQZXJUaHJlYWRncm91cDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpjb25jdXJyZW50RGlz
cGF0Y2hUaHJlYWRncm91cHMoTVRMOjpTaXplIHRocmVhZGdyb3Vwc1BlckdyaWQsIE1UTDo6U2l6
ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3Vwc190
aHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgdGhyZWFkZ3JvdXBzUGVyR3JpZCwgdGhyZWFkc1BlclRo
cmVhZGdyb3VwKTsKK30KKworLy8gbWV0aG9kOiBjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRzOnRo
cmVhZHNQZXJUaHJlYWRncm91cDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1
dGVDb21tYW5kOjpjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRzKE1UTDo6U2l6ZSB0aHJlYWRzUGVy
R3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29uY3VycmVudERpc3BhdGNo
VGhyZWFkc190aHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgdGhyZWFkc1BlckdyaWQsIHRocmVhZHNQ
ZXJUaHJlYWRncm91cCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QmFycmllcgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnNldEJhcnJpZXIoKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCYXJyaWVy
KSk7Cit9CisKKy8vIG1ldGhvZDogY2xlYXJCYXJyaWVyCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6Y2xlYXJCYXJyaWVyKCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY2xlYXJCYXJyaWVyKSk7Cit9
CisKKy8vIG1ldGhvZDogc2V0SW1hZ2VibG9ja1dpZHRoOmhlaWdodDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRJbWFnZWJsb2NrV2lkdGgoTlM6OlVJ
bnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbWFnZWJsb2NrV2lkdGhfaGVp
Z2h0XyksIHdpZHRoLCBoZWlnaHQpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6cmVzZXQoKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldCkpOworfQor
CisvLyBtZXRob2Q6IHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoOmF0SW5kZXg6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6c2V0VGhyZWFkZ3JvdXBNZW1v
cnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaHJl
YWRncm91cE1lbW9yeUxlbmd0aF9hdEluZGV4XyksIGxlbmd0aCwgaW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldFN0YWdlSW5SZWdpb246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RD
b21wdXRlQ29tbWFuZDo6c2V0U3RhZ2VJblJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24pCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0
YWdlSW5SZWdpb25fKSwgcmVnaW9uKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjM4MzVkMWRiNzhhZDgyZGY0NzZkMjYwYzMyZGJkOWNi
ZTgxMzYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwCkBAIC0wLDAgKzEsMTU3IEBA
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBN
ZXRhbC9NVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcAorLy8KKy8vIENvcHlyaWdodCAy
MDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBw
IgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5o
cHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAi
TVRMQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExGdW5jdGlvbkhhbmRsZS5ocHAiCisjaW5jbHVk
ZSAiTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3Vy
Y2UuaHBwIgorI2luY2x1ZGUgIk1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCIKKworbmFtZXNw
YWNlIE1UTAoreworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgSW50ZXJzZWN0aW9uRnVuY3Rp
b25TaWduYXR1cmUpIHsKKyAgICBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZU5vbmUgPSAw
LAorICAgIEludGVyc2VjdGlvbkZ1bmN0aW9uU2lnbmF0dXJlSW5zdGFuY2luZyA9IDEsCisgICAg
SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVUcmlhbmdsZURhdGEgPSAyLAorICAgIEludGVy
c2VjdGlvbkZ1bmN0aW9uU2lnbmF0dXJlV29ybGRTcGFjZURhdGEgPSA0LAorICAgIEludGVyc2Vj
dGlvbkZ1bmN0aW9uU2lnbmF0dXJlSW5zdGFuY2VNb3Rpb24gPSA4LAorICAgIEludGVyc2VjdGlv
bkZ1bmN0aW9uU2lnbmF0dXJlUHJpbWl0aXZlTW90aW9uID0gMTYsCisgICAgSW50ZXJzZWN0aW9u
RnVuY3Rpb25TaWduYXR1cmVFeHRlbmRlZExpbWl0cyA9IDMyLAorfTsKKworY2xhc3MgSW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAg
Y2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7
CisKKyAgICBzdGF0aWMgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3Iq
IGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKCk7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uQ291bnQoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldEZ1bmN0aW9uQ291bnQoTlM6OlVJbnRlZ2VyIGZ1bmN0aW9uQ291bnQpOworfTsKKwor
Y2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgdm9p
ZCBzZXRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZz
ZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldEJ1ZmZlcnMoY29uc3QgY2xh
c3MgQnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpS
YW5nZSByYW5nZSk7CisKKyAgICB2b2lkIHNldEZ1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9u
SGFuZGxlKiBmdW5jdGlvbiwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgc2V0RnVu
Y3Rpb25zKGNvbnN0IGNsYXNzIEZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlvbnNbXSwgTlM6OlJhbmdl
IHJhbmdlKTsKKworICAgIHZvaWQgc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlv
bihNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uU2lnbmF0dXJlIHNpZ25hdHVyZSwgTlM6OlVJbnRl
Z2VyIGluZGV4KTsKKworICAgIHZvaWQgc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5j
dGlvbihNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uU2lnbmF0dXJlIHNpZ25hdHVyZSwgTlM6OlJh
bmdlIHJhbmdlKTsKKworICAgIHZvaWQgc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgY2xh
c3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZm
ZXJJbmRleCk7CisKKyAgICB2b2lkIHNldFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBjbGFz
cyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIGJ1ZmZl
clJhbmdlKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIE1UTDo6SW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6YWxsb2M8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4oX01U
TF9QUklWQVRFX0NMUyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcikpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZURlc2NyaXB0b3IqIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0
b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6SW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGlu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVEZXNjcmlwdG9yOjppbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcigpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMSW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvbkNvdW50CitfTVRM
X0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3Jp
cHRvcjo6ZnVuY3Rpb25Db3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uQ291bnQp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVE
ZXNjcmlwdG9yOjpzZXRGdW5jdGlvbkNvdW50KE5TOjpVSW50ZWdlciBmdW5jdGlvbkNvdW50KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRGdW5jdGlvbkNvdW50XyksIGZ1bmN0aW9uQ291bnQpOworfQorCisvLyBtZXRob2Q6IHNldEJ1
ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlOjpzZXRCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJfb2Zmc2V0X2F0SW5k
ZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRCdWZmZXJz
Om9mZnNldHM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGU6OnNldEJ1ZmZlcnMoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29u
c3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJzX29m
ZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJhbmdlKTsKK30KKworLy8gbWV0
aG9kOiBzZXRGdW5jdGlvbjphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGU6OnNldEZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb25IYW5kbGUq
IGZ1bmN0aW9uLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uX2F0SW5kZXhfKSwgZnVu
Y3Rpb24sIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGdW5jdGlvbnM6d2l0aFJhbmdlOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6OnNldEZ1bmN0
aW9ucyhjb25zdCBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlvbnNbXSwgTlM6OlJhbmdlIHJh
bmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRGdW5jdGlvbnNfd2l0aFJhbmdlXyksIGZ1bmN0aW9ucywgcmFuZ2UpOworfQorCisv
LyBtZXRob2Q6IHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0
dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZTo6c2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbihNVEw6OkludGVyc2Vj
dGlvbkZ1bmN0aW9uU2lnbmF0dXJlIHNpZ25hdHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRP
cGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aFNpZ25hdHVyZV9hdEluZGV4Xyks
IHNpZ25hdHVyZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9wYXF1ZVRyaWFuZ2xlSW50
ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJlOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOjpzZXRPcGFxdWVUcmlhbmdsZUludGVy
c2VjdGlvbkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmUgc2lnbmF0
dXJlLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rp
b25XaXRoU2lnbmF0dXJlX3dpdGhSYW5nZV8pLCBzaWduYXR1cmUsIHJhbmdlKTsKK30KKworLy8g
bWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6OnNldFZpc2libGVGdW5jdGlv
blRhYmxlKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5T
OjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJ
bmRleF8pLCBmdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMo
Y29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJh
bmdlIGJ1ZmZlclJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdl
XyksIGZ1bmN0aW9uVGFibGVzLCBidWZmZXJSYW5nZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlicmFyeS5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlicmFyeS5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE1
MjY3YTE2ZmMxOWQ0MTk2MWFlZmY5YzA5ZmFjN2QwMTA5NzJjNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaWJyYXJ5LmhwcApAQCAt
MCwwICsxLDYyMSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWV0YWwvTVRMTGlicmFyeS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0y
MDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNp
bmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgor
CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFy
Z3VtZW50LmhwcCIKKyNpbmNsdWRlICJNVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwIgorI2luY2x1
ZGUgIk1UTExpYnJhcnkuaHBwIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisKK25hbWVzcGFjZSBN
VEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFBhdGNoVHlwZSkgeworICAgIFBhdGNoVHlw
ZU5vbmUgPSAwLAorICAgIFBhdGNoVHlwZVRyaWFuZ2xlID0gMSwKKyAgICBQYXRjaFR5cGVRdWFk
ID0gMiwKK307CisKK2NsYXNzIFZlcnRleEF0dHJpYnV0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNp
bmc8VmVydGV4QXR0cmlidXRlPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBWZXJ0ZXhB
dHRyaWJ1dGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGUqICAgICAgICBp
bml0KCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVJbmRleCgpIGNv
bnN0OworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAgICAgICAgICAgYXR0cmlidXRlVHlwZSgp
IGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlKCkgY29u
c3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaERhdGEoKSBjb25z
dDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoQ29udHJvbFBvaW50
RGF0YSgpIGNvbnN0OworfTsKKworY2xhc3MgQXR0cmlidXRlIDogcHVibGljIE5TOjpSZWZlcmVu
Y2luZzxBdHRyaWJ1dGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEF0dHJpYnV0ZSog
YWxsb2MoKTsKKworICAgIGNsYXNzIEF0dHJpYnV0ZSogICAgICAgIGluaXQoKTsKKworICAgIE5T
OjpTdHJpbmcqICAgICAgICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgIGF0dHJpYnV0ZUluZGV4KCkgY29uc3Q7CisKKyAgICBNVEw6OkRhdGFUeXBlICAg
ICAgICAgICBhdHRyaWJ1dGVUeXBlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAg
ICAgICBhY3RpdmUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIHBhdGNo
RGF0YSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgcGF0Y2hDb250cm9s
UG9pbnREYXRhKCkgY29uc3Q7Cit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBGdW5jdGlv
blR5cGUpIHsKKyAgICBGdW5jdGlvblR5cGVWZXJ0ZXggPSAxLAorICAgIEZ1bmN0aW9uVHlwZUZy
YWdtZW50ID0gMiwKKyAgICBGdW5jdGlvblR5cGVLZXJuZWwgPSAzLAorICAgIEZ1bmN0aW9uVHlw
ZVZpc2libGUgPSA1LAorICAgIEZ1bmN0aW9uVHlwZUludGVyc2VjdGlvbiA9IDYsCit9OworCitj
bGFzcyBGdW5jdGlvbkNvbnN0YW50IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbkNv
bnN0YW50PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvbkNvbnN0YW50KiBh
bGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25Db25zdGFudCogICAgICAgIGluaXQoKTsKKwor
ICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAgICBN
VEw6OkRhdGFUeXBlICAgICAgICAgICAgICAgICAgdHlwZSgpIGNvbnN0OworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgIGluZGV4KCkgY29uc3Q7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQoKSBjb25zdDsKK307CisKK3VzaW5nIEF1dG9y
ZWxlYXNlZEFyZ3VtZW50ID0gY2xhc3MgQXJndW1lbnQqOworCitjbGFzcyBGdW5jdGlvbiA6IHB1
YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb24+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmlu
ZyogICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRGV2aWNlKiAg
ICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE1UTDo6RnVuY3Rpb25UeXBlICAgICAgZnVu
Y3Rpb25UeXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OlBhdGNoVHlwZSAgICAgICAgIHBhdGNoVHlw
ZSgpIGNvbnN0OworCisgICAgTlM6OkludGVnZXIgICAgICAgICAgICBwYXRjaENvbnRyb2xQb2lu
dENvdW50KCkgY29uc3Q7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgIHZlcnRleEF0dHJp
YnV0ZXMoKSBjb25zdDsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgc3RhZ2VJbnB1dEF0
dHJpYnV0ZXMoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgbmFtZSgpIGNv
bnN0OworCisgICAgTlM6OkRpY3Rpb25hcnkqICAgICAgICBmdW5jdGlvbkNvbnN0YW50c0RpY3Rp
b25hcnkoKSBjb25zdDsKKworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlciogbmV3QXJndW1lbnRF
bmNvZGVyKE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICBjbGFzcyBBcmd1bWVudEVu
Y29kZXIqIG5ld0FyZ3VtZW50RW5jb2RlcihOUzo6VUludGVnZXIgYnVmZmVySW5kZXgsIGNvbnN0
IE1UTDo6QXV0b3JlbGVhc2VkQXJndW1lbnQqIHJlZmxlY3Rpb24pOworCisgICAgTVRMOjpGdW5j
dGlvbk9wdGlvbnMgICBvcHRpb25zKCkgY29uc3Q7Cit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRl
Z2VyLCBMYW5ndWFnZVZlcnNpb24pIHsKKyAgICBMYW5ndWFnZVZlcnNpb24xXzAgPSA2NTUzNiwK
KyAgICBMYW5ndWFnZVZlcnNpb24xXzEgPSA2NTUzNywKKyAgICBMYW5ndWFnZVZlcnNpb24xXzIg
PSA2NTUzOCwKKyAgICBMYW5ndWFnZVZlcnNpb24yXzAgPSAxMzEwNzIsCisgICAgTGFuZ3VhZ2VW
ZXJzaW9uMl8xID0gMTMxMDczLAorICAgIExhbmd1YWdlVmVyc2lvbjJfMiA9IDEzMTA3NCwKKyAg
ICBMYW5ndWFnZVZlcnNpb24yXzMgPSAxMzEwNzUsCisgICAgTGFuZ3VhZ2VWZXJzaW9uMl80ID0g
MTMxMDc2LAorfTsKKworX01UTF9FTlVNKE5TOjpJbnRlZ2VyLCBMaWJyYXJ5VHlwZSkgeworICAg
IExpYnJhcnlUeXBlRXhlY3V0YWJsZSA9IDAsCisgICAgTGlicmFyeVR5cGVEeW5hbWljID0gMSwK
K307CisKK2NsYXNzIENvbXBpbGVPcHRpb25zIDogcHVibGljIE5TOjpDb3B5aW5nPENvbXBpbGVP
cHRpb25zPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21waWxlT3B0aW9ucyogYWxs
b2MoKTsKKworICAgIGNsYXNzIENvbXBpbGVPcHRpb25zKiAgICAgICAgaW5pdCgpOworCisgICAg
TlM6OkRpY3Rpb25hcnkqICAgICAgICAgICAgICBwcmVwcm9jZXNzb3JNYWNyb3MoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByZXByb2Nlc3Nvck1hY3Jvcyhj
b25zdCBOUzo6RGljdGlvbmFyeSogcHJlcHJvY2Vzc29yTWFjcm9zKTsKKworICAgIGJvb2wgICAg
ICAgICAgICAgICAgICAgICAgICAgZmFzdE1hdGhFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRGYXN0TWF0aEVuYWJsZWQoYm9vbCBmYXN0TWF0aEVu
YWJsZWQpOworCisgICAgTVRMOjpMYW5ndWFnZVZlcnNpb24gICAgICAgICBsYW5ndWFnZVZlcnNp
b24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldExhbmd1YWdl
VmVyc2lvbihNVEw6Okxhbmd1YWdlVmVyc2lvbiBsYW5ndWFnZVZlcnNpb24pOworCisgICAgTVRM
OjpMaWJyYXJ5VHlwZSAgICAgICAgICAgICBsaWJyYXJ5VHlwZSgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGlicmFyeVR5cGUoTVRMOjpMaWJyYXJ5VHlwZSBs
aWJyYXJ5VHlwZSk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgIGluc3RhbGxO
YW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnN0YWxs
TmFtZShjb25zdCBOUzo6U3RyaW5nKiBpbnN0YWxsTmFtZSk7CisKKyAgICBOUzo6QXJyYXkqICAg
ICAgICAgICAgICAgICAgIGxpYnJhcmllcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogbGlicmFyaWVzKTsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVJbnZhcmlhbmNlKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcmVzZXJ2ZUludmFyaWFu
Y2UoYm9vbCBwcmVzZXJ2ZUludmFyaWFuY2UpOworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdl
ciwgTGlicmFyeUVycm9yKSB7CisgICAgTGlicmFyeUVycm9yVW5zdXBwb3J0ZWQgPSAxLAorICAg
IExpYnJhcnlFcnJvckNvbXBpbGVGYWlsdXJlID0gMywKKyAgICBMaWJyYXJ5RXJyb3JDb21waWxl
V2FybmluZyA9IDQsCisgICAgTGlicmFyeUVycm9yRnVuY3Rpb25Ob3RGb3VuZCA9IDUsCisgICAg
TGlicmFyeUVycm9yRmlsZU5vdEZvdW5kID0gNiwKK307CisKK2NsYXNzIExpYnJhcnkgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPExpYnJhcnk+Cit7CitwdWJsaWM6CisgICAgdm9pZCAgICAgICAg
ICAgICBuZXdGdW5jdGlvbihjb25zdCBOUzo6U3RyaW5nKiBwRnVuY3Rpb25OYW1lLCBjb25zdCBj
bGFzcyBGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBwQ29uc3RhbnRWYWx1ZXMsIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248dm9pZChGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcik+JiBj
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNv
bnN0IGNsYXNzIEZ1bmN0aW9uRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIGNvbnN0IHN0ZDo6ZnVu
Y3Rpb248dm9pZChGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcik+JiBjb21w
bGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgIG5ld0ludGVyc2VjdGlvbkZ1
bmN0aW9uKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogcERlc2Ny
aXB0b3IsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6
RXJyb3IqIHBFcnJvcik+JiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBOUzo6U3RyaW5nKiAg
ICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBO
Uzo6U3RyaW5nKiBsYWJlbCk7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgIGRldmljZSgpIGNvbnN0
OworCisgICAgY2xhc3MgRnVuY3Rpb24qICBuZXdGdW5jdGlvbihjb25zdCBOUzo6U3RyaW5nKiBm
dW5jdGlvbk5hbWUpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICBuZXdGdW5jdGlvbihjb25zdCBO
Uzo6U3RyaW5nKiBuYW1lLCBjb25zdCBjbGFzcyBGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBjb25z
dGFudFZhbHVlcywgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgdm9pZCAgICAgICAgICAgICBu
ZXdGdW5jdGlvbihjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBjbGFzcyBGdW5jdGlvbkNv
bnN0YW50VmFsdWVzKiBjb25zdGFudFZhbHVlcywgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShN
VEw6OkZ1bmN0aW9uKiwgTlM6OkVycm9yKikpOworCisgICAgdm9pZCAgICAgICAgICAgICBuZXdG
dW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpGdW5jdGlvbiosIE5TOjpFcnJvciopKTsKKworICAg
IGNsYXNzIEZ1bmN0aW9uKiAgbmV3RnVuY3Rpb24oY29uc3QgY2xhc3MgRnVuY3Rpb25EZXNjcmlw
dG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAg
ICAgIG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0
aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShNVEw6
OkZ1bmN0aW9uKiwgTlM6OkVycm9yKikpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICBuZXdJbnRl
cnNlY3Rpb25GdW5jdGlvbihjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0
b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIE5TOjpBcnJheSogICAg
ICAgZnVuY3Rpb25OYW1lcygpIGNvbnN0OworCisgICAgTVRMOjpMaWJyYXJ5VHlwZSB0eXBlKCkg
Y29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgIGluc3RhbGxOYW1lKCkgY29uc3Q7Cit9Owor
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0
dHJpYnV0ZSogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGU+KF9NVExfUFJJVkFURV9DTFMoTVRM
VmVydGV4QXR0cmlidXRlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRM
OjpWZXJ0ZXhBdHRyaWJ1dGUqIE1UTDo6VmVydGV4QXR0cmlidXRlOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlZlcnRleEF0dHJpYnV0ZT4oKTsKK30KKworLy8g
cHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6VmVydGV4QXR0cmli
dXRlOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBhdHRyaWJ1dGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmVydGV4QXR0
cmlidXRlOjphdHRyaWJ1dGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0ZUlu
ZGV4KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhdHRyaWJ1dGVUeXBlCitfTVRMX0lOTElORSBNVEw6
OkRhdGFUeXBlIE1UTDo6VmVydGV4QXR0cmlidXRlOjphdHRyaWJ1dGVUeXBlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGF0dHJpYnV0ZVR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFjdGl2ZQor
X01UTF9JTkxJTkUgYm9vbCBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6YWN0aXZlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGlzQWN0aXZlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXRjaERhdGEKK19NVExfSU5MSU5F
IGJvb2wgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OnBhdGNoRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1Bh
dGNoRGF0YSkpOworfQorCisvLyBwcm9wZXJ0eTogcGF0Y2hDb250cm9sUG9pbnREYXRhCitfTVRM
X0lOTElORSBib29sIE1UTDo6VmVydGV4QXR0cmlidXRlOjpwYXRjaENvbnRyb2xQb2ludERhdGEo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaXNQYXRjaENvbnRyb2xQb2ludERhdGEpKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlKiBNVEw6OkF0dHJpYnV0
ZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkF0dHJpYnV0
ZT4oX01UTF9QUklWQVRFX0NMUyhNVExBdHRyaWJ1dGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0
CitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZSogTVRMOjpBdHRyaWJ1dGU6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QXR0cmlidXRlPigpOworfQorCisvLyBw
cm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpBdHRyaWJ1dGU6Om5h
bWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJp
YnV0ZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBdHRyaWJ1dGU6OmF0dHJp
YnV0ZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0cmlidXRlSW5kZXgpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGF0dHJpYnV0ZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRM
OjpBdHRyaWJ1dGU6OmF0dHJpYnV0ZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0cmli
dXRlVHlwZSkpOworfQorCisvLyBwcm9wZXJ0eTogYWN0aXZlCitfTVRMX0lOTElORSBib29sIE1U
TDo6QXR0cmlidXRlOjphY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNBY3RpdmUpKTsKK30KKworLy8g
cHJvcGVydHk6IHBhdGNoRGF0YQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkF0dHJpYnV0ZTo6cGF0
Y2hEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzUGF0Y2hEYXRhKSk7Cit9CisKKy8vIHByb3BlcnR5OiBw
YXRjaENvbnRyb2xQb2ludERhdGEKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpBdHRyaWJ1dGU6OnBh
dGNoQ29udHJvbFBvaW50RGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1BhdGNoQ29udHJvbFBvaW50RGF0
YSkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5j
dGlvbkNvbnN0YW50KiBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpGdW5jdGlvbkNvbnN0YW50PihfTVRMX1BSSVZBVEVf
Q0xTKE1UTEZ1bmN0aW9uQ29uc3RhbnQpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQqIE1UTDo6RnVuY3Rpb25Db25zdGFudDo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlvbkNvbnN0YW50Pigp
OworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpG
dW5jdGlvbkNvbnN0YW50OjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiB0eXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6RnVuY3Rp
b25Db25zdGFudDo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0eXBlKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RnVuY3Rpb25D
b25zdGFudDo6aW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleCkpOworfQorCisvLyBw
cm9wZXJ0eTogcmVxdWlyZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpGdW5jdGlvbkNvbnN0YW50
OjpyZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9v
bD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXF1aXJlZCkpOworfQorCisvLyBwcm9wZXJ0eTog
bGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb246OmxhYmVsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVu
Y3Rpb246OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJl
bCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBN
VEw6OkZ1bmN0aW9uOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30K
KworLy8gcHJvcGVydHk6IGZ1bmN0aW9uVHlwZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblR5
cGUgTVRMOjpGdW5jdGlvbjo6ZnVuY3Rpb25UeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NF
TChmdW5jdGlvblR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHBhdGNoVHlwZQorX01UTF9JTkxJ
TkUgTVRMOjpQYXRjaFR5cGUgTVRMOjpGdW5jdGlvbjo6cGF0Y2hUeXBlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBhdGNoVHlwZT4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChwYXRjaFR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHBhdGNoQ29udHJvbFBv
aW50Q291bnQKK19NVExfSU5MSU5FIE5TOjpJbnRlZ2VyIE1UTDo6RnVuY3Rpb246OnBhdGNoQ29u
dHJvbFBvaW50Q291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhdGNoQ29udHJvbFBvaW50Q291
bnQpKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEF0dHJpYnV0ZXMKK19NVExfSU5MSU5FIE5T
OjpBcnJheSogTVRMOjpGdW5jdGlvbjo6dmVydGV4QXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh2ZXJ0ZXhBdHRyaWJ1dGVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGFnZUlucHV0QXR0
cmlidXRlcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uOjpzdGFnZUlucHV0
QXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFnZUlucHV0QXR0cmlidXRlcykpOwor
fQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5j
dGlvbjo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBwcm9wZXJ0
eTogZnVuY3Rpb25Db25zdGFudHNEaWN0aW9uYXJ5CitfTVRMX0lOTElORSBOUzo6RGljdGlvbmFy
eSogTVRMOjpGdW5jdGlvbjo6ZnVuY3Rpb25Db25zdGFudHNEaWN0aW9uYXJ5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6RGljdGlvbmFyeSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZnVuY3Rpb25Db25zdGFudHNEaWN0aW9uYXJ5KSk7Cit9CisKKy8vIG1l
dGhvZDogbmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgTVRM
OjpBcmd1bWVudEVuY29kZXIqIE1UTDo6RnVuY3Rpb246Om5ld0FyZ3VtZW50RW5jb2RlcihOUzo6
VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpBcmd1bWVudEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0FyZ3VtZW50
RW5jb2RlcldpdGhCdWZmZXJJbmRleF8pLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDog
bmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4OnJlZmxlY3Rpb246CitfTVRMX0lOTElO
RSBNVEw6OkFyZ3VtZW50RW5jb2RlciogTVRMOjpGdW5jdGlvbjo6bmV3QXJndW1lbnRFbmNvZGVy
KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCwgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRBcmd1bWVu
dCogcmVmbGVjdGlvbikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFy
Z3VtZW50RW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QXJndW1lbnRFbmNvZGVy
V2l0aEJ1ZmZlckluZGV4X3JlZmxlY3Rpb25fKSwgYnVmZmVySW5kZXgsIHJlZmxlY3Rpb24pOwor
fQorCisvLyBwcm9wZXJ0eTogb3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbk9wdGlv
bnMgTVRMOjpGdW5jdGlvbjo6b3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbk9wdGlvbnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
b3B0aW9ucykpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpDb21waWxlT3B0aW9ucyogTVRMOjpDb21waWxlT3B0aW9uczo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkNvbXBpbGVPcHRpb25zPihfTVRMX1BSSVZBVEVf
Q0xTKE1UTENvbXBpbGVPcHRpb25zKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJ
TkUgTVRMOjpDb21waWxlT3B0aW9ucyogTVRMOjpDb21waWxlT3B0aW9uczo6aW5pdCgpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpDb21waWxlT3B0aW9ucz4oKTsKK30KKwor
Ly8gcHJvcGVydHk6IHByZXByb2Nlc3Nvck1hY3JvcworX01UTF9JTkxJTkUgTlM6OkRpY3Rpb25h
cnkqIE1UTDo6Q29tcGlsZU9wdGlvbnM6OnByZXByb2Nlc3Nvck1hY3JvcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkRpY3Rpb25hcnkqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHByZXByb2Nlc3Nvck1hY3JvcykpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tcGlsZU9wdGlvbnM6OnNldFByZXByb2Nlc3Nvck1hY3Jvcyhjb25zdCBOUzo6RGlj
dGlvbmFyeSogcHJlcHJvY2Vzc29yTWFjcm9zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRQcmVwcm9jZXNzb3JNYWNyb3NfKSwgcHJl
cHJvY2Vzc29yTWFjcm9zKTsKK30KKworLy8gcHJvcGVydHk6IGZhc3RNYXRoRW5hYmxlZAorX01U
TF9JTkxJTkUgYm9vbCBNVEw6OkNvbXBpbGVPcHRpb25zOjpmYXN0TWF0aEVuYWJsZWQoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZmFzdE1hdGhFbmFibGVkKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21waWxlT3B0aW9uczo6c2V0RmFzdE1hdGhFbmFibGVkKGJvb2wgZmFzdE1hdGhFbmFibGVkKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRGYXN0TWF0aEVuYWJsZWRfKSwgZmFzdE1hdGhFbmFibGVkKTsKK30KKworLy8gcHJvcGVydHk6
IGxhbmd1YWdlVmVyc2lvbgorX01UTF9JTkxJTkUgTVRMOjpMYW5ndWFnZVZlcnNpb24gTVRMOjpD
b21waWxlT3B0aW9uczo6bGFuZ3VhZ2VWZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6Okxhbmd1YWdlVmVyc2lvbj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChsYW5ndWFnZVZlcnNpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXBp
bGVPcHRpb25zOjpzZXRMYW5ndWFnZVZlcnNpb24oTVRMOjpMYW5ndWFnZVZlcnNpb24gbGFuZ3Vh
Z2VWZXJzaW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRMYW5ndWFnZVZlcnNpb25fKSwgbGFuZ3VhZ2VWZXJzaW9uKTsKK30KKwor
Ly8gcHJvcGVydHk6IGxpYnJhcnlUeXBlCitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnlUeXBlIE1U
TDo6Q29tcGlsZU9wdGlvbnM6OmxpYnJhcnlUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnlUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxpYnJhcnlUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9u
czo6c2V0TGlicmFyeVR5cGUoTVRMOjpMaWJyYXJ5VHlwZSBsaWJyYXJ5VHlwZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGlicmFy
eVR5cGVfKSwgbGlicmFyeVR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5zdGFsbE5hbWUKK19N
VExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tcGlsZU9wdGlvbnM6Omluc3RhbGxOYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChpbnN0YWxsTmFtZSkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tcGlsZU9wdGlvbnM6OnNldEluc3RhbGxOYW1lKGNvbnN0IE5TOjpTdHJpbmcqIGlu
c3RhbGxOYW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRJbnN0YWxsTmFtZV8pLCBpbnN0YWxsTmFtZSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBsaWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpDb21waWxlT3B0aW9u
czo6bGlicmFyaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxpYnJhcmllcykpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q29tcGlsZU9wdGlvbnM6OnNldExpYnJhcmllcyhjb25zdCBOUzo6
QXJyYXkqIGxpYnJhcmllcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0TGlicmFyaWVzXyksIGxpYnJhcmllcyk7Cit9CisKKy8vIHBy
b3BlcnR5OiBwcmVzZXJ2ZUludmFyaWFuY2UKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDb21waWxl
T3B0aW9uczo6cHJlc2VydmVJbnZhcmlhbmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByZXNlcnZlSW52YXJp
YW5jZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcGlsZU9wdGlvbnM6OnNldFBy
ZXNlcnZlSW52YXJpYW5jZShib29sIHByZXNlcnZlSW52YXJpYW5jZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UHJlc2VydmVJbnZh
cmlhbmNlXyksIHByZXNlcnZlSW52YXJpYW5jZSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpMaWJyYXJ5OjpuZXdGdW5jdGlvbihjb25zdCBOUzo6U3RyaW5nKiBwRnVuY3Rpb25OYW1lLCBj
b25zdCBGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBwQ29uc3RhbnRWYWx1ZXMsIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248dm9pZChGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcik+JiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIHN0ZDo6ZnVuY3Rpb248dm9pZChGdW5j
dGlvbiAqIHBGdW5jdGlvbiwgTlM6OkVycm9yICogcEVycm9yKT4gYmxvY2tDb21wbGV0aW9uSGFu
ZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3RnVuY3Rpb24ocEZ1bmN0aW9uTmFt
ZSwgcENvbnN0YW50VmFsdWVzLCBeKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVy
cm9yKSB7IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIocEZ1bmN0aW9uLCBwRXJyb3IpOyB9KTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IEZ1bmN0
aW9uRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChGdW5j
dGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcik+JiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBfX2Jsb2NrIHN0ZDo6ZnVuY3Rpb248dm9pZChGdW5jdGlvbiAqIHBGdW5jdGlvbiwg
TlM6OkVycm9yICogcEVycm9yKT4gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25I
YW5kbGVyOworCisgICAgbmV3RnVuY3Rpb24ocERlc2NyaXB0b3IsIF4oRnVuY3Rpb24qIHBGdW5j
dGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwRnVuY3Rp
b24sIHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6bmV3
SW50ZXJzZWN0aW9uRnVuY3Rpb24oY29uc3QgSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9y
KiBwRGVzY3JpcHRvciwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rp
b24sIE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxv
Y2sgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uICogcEZ1bmN0aW9uLCBOUzo6RXJyb3IgKiBw
RXJyb3IpPiBibG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAg
ICBuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbihwRGVzY3JpcHRvciwgXihGdW5jdGlvbiogcEZ1bmN0
aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBGdW5jdGlv
biwgcEVycm9yKTsgfSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6
OlN0cmluZyogTVRMOjpMaWJyYXJ5OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6OnNldExhYmVsKGNvbnN0IE5T
OjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBk
ZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkxpYnJhcnk6OmRldmljZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBtZXRob2Q6IG5ld0Z1bmN0aW9u
V2l0aE5hbWU6CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6OkxpYnJhcnk6Om5ld0Z1
bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcqIGZ1bmN0aW9uTmFtZSkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdGdW5jdGlvbldpdGhOYW1lXyksIGZ1bmN0aW9uTmFtZSk7Cit9CisKKy8vIG1ldGhvZDogbmV3
RnVuY3Rpb25XaXRoTmFtZTpjb25zdGFudFZhbHVlczplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6
RnVuY3Rpb24qIE1UTDo6TGlicmFyeTo6bmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0cmluZyogbmFt
ZSwgY29uc3QgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBjb25zdGFudFZhbHVlcywgTlM6
OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpG
dW5jdGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVuY3Rpb25XaXRoTmFtZV9jb25z
dGFudFZhbHVlc19lcnJvcl8pLCBuYW1lLCBjb25zdGFudFZhbHVlcywgZXJyb3IpOworfQorCisv
LyBtZXRob2Q6IG5ld0Z1bmN0aW9uV2l0aE5hbWU6Y29uc3RhbnRWYWx1ZXM6Y29tcGxldGlvbkhh
bmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6bmV3RnVuY3Rpb24oY29uc3Qg
TlM6OlN0cmluZyogbmFtZSwgY29uc3QgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBjb25z
dGFudFZhbHVlcywgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShNVEw6OkZ1bmN0aW9uKiwgTlM6
OkVycm9yKikpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG5ld0Z1bmN0aW9uV2l0aE5hbWVfY29uc3RhbnRWYWx1ZXNfY29tcGxldGlvbkhh
bmRsZXJfKSwgbmFtZSwgY29uc3RhbnRWYWx1ZXMsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwor
Ly8gbWV0aG9kOiBuZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IE1UTDo6RnVu
Y3Rpb25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE1U
TDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9jb21w
bGV0aW9uSGFuZGxlcl8pLCBkZXNjcmlwdG9yLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8v
IG1ldGhvZDogbmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcjplcnJvcjoKK19NVExfSU5MSU5FIE1U
TDo6RnVuY3Rpb24qIE1UTDo6TGlicmFyeTo6bmV3RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlv
bkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRvciwgZXJyb3Ip
OworfQorCisvLyBtZXRob2Q6IG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aERlc2NyaXB0b3I6
Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6bmV3SW50
ZXJzZWN0aW9uRnVuY3Rpb24oY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0
b3IqIGRlc2NyaXB0b3IsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpGdW5jdGlvbios
IE5TOjpFcnJvciopKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yX2NvbXBs
ZXRpb25IYW5kbGVyXyksIGRlc2NyaXB0b3IsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8g
bWV0aG9kOiBuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yOmVycm9yOgorX01U
TF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpMaWJyYXJ5OjpuZXdJbnRlcnNlY3Rpb25GdW5j
dGlvbihjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRv
ciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3SW50ZXJzZWN0aW9uRnVu
Y3Rpb25XaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8v
IHByb3BlcnR5OiBmdW5jdGlvbk5hbWVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6TGli
cmFyeTo6ZnVuY3Rpb25OYW1lcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbk5hbWVzKSk7
Cit9CisKKy8vIHByb3BlcnR5OiB0eXBlCitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnlUeXBlIE1U
TDo6TGlicmFyeTo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpMaWJyYXJ5VHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0eXBlKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpbnN0YWxsTmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpM
aWJyYXJ5OjppbnN0YWxsTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFsbE5hbWUpKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExM
aW5rZWRGdW5jdGlvbnMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTExpbmtlZEZ1bmN0aW9ucy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYzMTlhNWE5NDFiZmQ4Mzg3YTYy
Nzc2MTA4NmVjOTZjMjYwZWVjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaW5rZWRGdW5jdGlvbnMuaHBwCkBAIC0wLDAgKzEsMTE1
IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBNZXRhbC9NVExMaW5rZWRGdW5jdGlvbnMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAy
MSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5j
bHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKwor
I2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sK
K2NsYXNzIExpbmtlZEZ1bmN0aW9ucyA6IHB1YmxpYyBOUzo6Q29weWluZzxMaW5rZWRGdW5jdGlv
bnM+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogYWxsb2Mo
KTsKKworICAgIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogICAgICAgIGluaXQoKTsKKworICAgIHN0
YXRpYyBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqIGxpbmtlZEZ1bmN0aW9ucygpOworCisgICAgTlM6
OkFycmF5KiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogZnVu
Y3Rpb25zKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgIGJpbmFyeUZ1bmN0
aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpbmFy
eUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUZ1bmN0aW9ucyk7CisKKyAgICBOUzo6
QXJyYXkqICAgICAgICAgICAgICAgICAgICBncm91cHMoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRHcm91cHMoY29uc3QgTlM6OkFycmF5KiBncm91cHMpOwor
CisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZUZ1bmN0aW9ucygpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByaXZhdGVGdW5jdGlv
bnMoY29uc3QgTlM6OkFycmF5KiBwcml2YXRlRnVuY3Rpb25zKTsKK307CisKK30KKworLy8gc3Rh
dGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6
OkxpbmtlZEZ1bmN0aW9uczo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxNVEw6OkxpbmtlZEZ1bmN0aW9ucz4oX01UTF9QUklWQVRFX0NMUyhNVExMaW5rZWRGdW5jdGlv
bnMpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1bmN0
aW9ucyogTVRMOjpMaW5rZWRGdW5jdGlvbnM6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0Ojppbml0PE1UTDo6TGlua2VkRnVuY3Rpb25zPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBsaW5rZWRGdW5jdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6
OkxpbmtlZEZ1bmN0aW9uczo6bGlua2VkRnVuY3Rpb25zKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkxpbmtlZEZ1bmN0aW9ucyo+KF9NVExfUFJJVkFURV9DTFMoTVRM
TGlua2VkRnVuY3Rpb25zKSwgX01UTF9QUklWQVRFX1NFTChsaW5rZWRGdW5jdGlvbnMpKTsKK30K
KworLy8gcHJvcGVydHk6IGZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6Okxp
bmtlZEZ1bmN0aW9uczo6ZnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9ucykp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpzZXRGdW5jdGlv
bnMoY29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uc18pLCBmdW5jdGlvbnMp
OworfQorCisvLyBwcm9wZXJ0eTogYmluYXJ5RnVuY3Rpb25zCitfTVRMX0lOTElORSBOUzo6QXJy
YXkqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpiaW5hcnlGdW5jdGlvbnMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoYmluYXJ5RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaW5r
ZWRGdW5jdGlvbnM6OnNldEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUZ1
bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0QmluYXJ5RnVuY3Rpb25zXyksIGJpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8v
IHByb3BlcnR5OiBncm91cHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpMaW5rZWRGdW5j
dGlvbnM6Omdyb3VwcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChncm91cHMpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6c2V0R3JvdXBzKGNvbnN0IE5TOjpBcnJh
eSogZ3JvdXBzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRHcm91cHNfKSwgZ3JvdXBzKTsKK30KKworLy8gcHJvcGVydHk6IHByaXZh
dGVGdW5jdGlvbnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpMaW5rZWRGdW5jdGlvbnM6
OnByaXZhdGVGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJpdmF0ZUZ1bmN0aW9ucykp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpzZXRQcml2YXRl
RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogcHJpdmF0ZUZ1bmN0aW9ucykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UHJpdmF0ZUZ1
bmN0aW9uc18pLCBwcml2YXRlRnVuY3Rpb25zKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVy
LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQYXJhbGxlbFJl
bmRlckNvbW1hbmRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDM3YjRjOGM5N2QxNTJkY2I2MmEw
MDEyZDRlZjY1NDhiZDVhNDdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCkBA
IC0wLDAgKzEsOTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIE1ldGFsL01UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNs
dWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHA+CisKKyNpbmNsdWRlICJNVExDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMUmVu
ZGVyUGFzcy5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIFBhcmFsbGVsUmVuZGVyQ29t
bWFuZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFBhcmFsbGVsUmVuZGVyQ29tbWFu
ZEVuY29kZXIsIENvbW1hbmRFbmNvZGVyPgoreworcHVibGljOgorICAgIGNsYXNzIFJlbmRlckNv
bW1hbmRFbmNvZGVyKiByZW5kZXJDb21tYW5kRW5jb2RlcigpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgIHNldENvbG9yU3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9y
ZUFjdGlvbiwgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rp
b24gc3RvcmVBY3Rpb24pOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0
ZW5jaWxTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6
OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMsIE5TOjpVSW50ZWdlciBjb2xv
ckF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgc2V0
RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rp
b25PcHRpb25zKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVuY2ls
U3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0
aW9ucyk7Cit9OworCit9CisKKy8vIG1ldGhvZDogcmVuZGVyQ29tbWFuZEVuY29kZXIKK19NVExf
SU5MSU5FIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXIqIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6cmVuZGVyQ29tbWFuZEVuY29kZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHJlbmRlckNvbW1hbmRFbmNvZGVyKSk7Cit9CisKKy8vIG1ldGhvZDogc2V0Q29sb3JT
dG9yZUFjdGlvbjphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBhcmFsbGVsUmVuZGVy
Q29tbWFuZEVuY29kZXI6OnNldENvbG9yU3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9y
ZUFjdGlvbiwgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb2xvclN0b3Jl
QWN0aW9uX2F0SW5kZXhfKSwgc3RvcmVBY3Rpb24sIGNvbG9yQXR0YWNobWVudEluZGV4KTsKK30K
KworLy8gbWV0aG9kOiBzZXREZXB0aFN0b3JlQWN0aW9uOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldERlcHRoU3RvcmVBY3Rpb24oTVRMOjpT
dG9yZUFjdGlvbiBzdG9yZUFjdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhTdG9yZUFjdGlvbl8pLCBzdG9yZUFjdGlv
bik7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RlbmNpbFN0b3JlQWN0aW9uOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFN0ZW5jaWxTdG9yZUFj
dGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsU3RvcmVBY3Rpb25f
KSwgc3RvcmVBY3Rpb24pOworfQorCisvLyBtZXRob2Q6IHNldENvbG9yU3RvcmVBY3Rpb25PcHRp
b25zOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6c2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlv
bnMgc3RvcmVBY3Rpb25PcHRpb25zLCBOUzo6VUludGVnZXIgY29sb3JBdHRhY2htZW50SW5kZXgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zX2F0SW5kZXhfKSwgc3RvcmVBY3Rpb25PcHRpb25z
LCBjb2xvckF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RGVwdGhTdG9yZUFj
dGlvbk9wdGlvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6c2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlv
bnMgc3RvcmVBY3Rpb25PcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9uc18pLCBzdG9y
ZUFjdGlvbk9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9w
dGlvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6c2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBz
dG9yZUFjdGlvbk9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnNfKSwgc3RvcmVB
Y3Rpb25PcHRpb25zKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExQaXBlbGluZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMUGlwZWxpbmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhM2M5NDc3Mzk2YWQ3YzMxNmQ2
YjZjZGJlZjJhMjA4YzRmOTg3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGlwZWxpbmUuaHBwCkBAIC0wLDAgKzEsMTA5IEBACisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRh
bC9NVExQaXBlbGluZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTFBpcGVsaW5lLmhwcCIKKwor
bmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgTXV0YWJpbGl0eSkgewor
ICAgIE11dGFiaWxpdHlEZWZhdWx0ID0gMCwKKyAgICBNdXRhYmlsaXR5TXV0YWJsZSA9IDEsCisg
ICAgTXV0YWJpbGl0eUltbXV0YWJsZSA9IDIsCit9OworCitjbGFzcyBQaXBlbGluZUJ1ZmZlckRl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqIGFs
bG9jKCk7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqICAgICAgICBpbml0
KCk7CisKKyAgICBNVEw6Ok11dGFiaWxpdHkgICAgICAgICAgICAgICAgICAgICAgICBtdXRhYmls
aXR5KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TXV0YWJpbGl0eShNVEw6Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSk7Cit9OworCitjbGFzcyBQ
aXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UGlw
ZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNz
IFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgUGlw
ZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBQ
aXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIg
YnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiBi
dWZmZXIsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7Cit9OworCit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciog
TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I+KF9NVExfUFJJVkFU
RV9DTFMoTVRMUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5p
dAorX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6UGlwZWxp
bmVCdWZmZXJEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5p
dDxNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IG11
dGFiaWxpdHkKK19NVExfSU5MSU5FIE1UTDo6TXV0YWJpbGl0eSBNVEw6OlBpcGVsaW5lQnVmZmVy
RGVzY3JpcHRvcjo6bXV0YWJpbGl0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpNdXRhYmlsaXR5Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG11dGFiaWxp
dHkpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRv
cjo6c2V0TXV0YWJpbGl0eShNVEw6Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TXV0YWJpbGl0
eV8pLCBtdXRhYmlsaXR5KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5M
SU5FIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqIE1UTDo6UGlwZWxpbmVCdWZm
ZXJEZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhN
VExQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqIE1UTDo6UGlw
ZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0Ojppbml0PE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8v
IG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXk6
Om9iamVjdChOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBidWZmZXJJbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1U
TDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiBidWZmZXIsIE5TOjpVSW50ZWdlciBidWZmZXJJ
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBidWZmZXIsIGJ1ZmZlckluZGV4
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExQaXhlbEZvcm1hdC5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMUGl4ZWxGb3JtYXQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzMjBjODI5ZWJhMDUyMjdjNWM5NDU5M2Y0
N2JiYjc2ZjExMjQxY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMUGl4ZWxGb3JtYXQuaHBwCkBAIC0wLDAgKzEsMTczIEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9N
VExQaXhlbEZvcm1hdC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5T
OjpVSW50ZWdlciwgUGl4ZWxGb3JtYXQpIHsKKyAgICBQaXhlbEZvcm1hdEludmFsaWQgPSAwLAor
ICAgIFBpeGVsRm9ybWF0QThVbm9ybSA9IDEsCisgICAgUGl4ZWxGb3JtYXRSOFVub3JtID0gMTAs
CisgICAgUGl4ZWxGb3JtYXRSOFVub3JtX3NSR0IgPSAxMSwKKyAgICBQaXhlbEZvcm1hdFI4U25v
cm0gPSAxMiwKKyAgICBQaXhlbEZvcm1hdFI4VWludCA9IDEzLAorICAgIFBpeGVsRm9ybWF0UjhT
aW50ID0gMTQsCisgICAgUGl4ZWxGb3JtYXRSMTZVbm9ybSA9IDIwLAorICAgIFBpeGVsRm9ybWF0
UjE2U25vcm0gPSAyMiwKKyAgICBQaXhlbEZvcm1hdFIxNlVpbnQgPSAyMywKKyAgICBQaXhlbEZv
cm1hdFIxNlNpbnQgPSAyNCwKKyAgICBQaXhlbEZvcm1hdFIxNkZsb2F0ID0gMjUsCisgICAgUGl4
ZWxGb3JtYXRSRzhVbm9ybSA9IDMwLAorICAgIFBpeGVsRm9ybWF0Ukc4VW5vcm1fc1JHQiA9IDMx
LAorICAgIFBpeGVsRm9ybWF0Ukc4U25vcm0gPSAzMiwKKyAgICBQaXhlbEZvcm1hdFJHOFVpbnQg
PSAzMywKKyAgICBQaXhlbEZvcm1hdFJHOFNpbnQgPSAzNCwKKyAgICBQaXhlbEZvcm1hdEI1RzZS
NVVub3JtID0gNDAsCisgICAgUGl4ZWxGb3JtYXRBMUJHUjVVbm9ybSA9IDQxLAorICAgIFBpeGVs
Rm9ybWF0QUJHUjRVbm9ybSA9IDQyLAorICAgIFBpeGVsRm9ybWF0QkdSNUExVW5vcm0gPSA0MywK
KyAgICBQaXhlbEZvcm1hdFIzMlVpbnQgPSA1MywKKyAgICBQaXhlbEZvcm1hdFIzMlNpbnQgPSA1
NCwKKyAgICBQaXhlbEZvcm1hdFIzMkZsb2F0ID0gNTUsCisgICAgUGl4ZWxGb3JtYXRSRzE2VW5v
cm0gPSA2MCwKKyAgICBQaXhlbEZvcm1hdFJHMTZTbm9ybSA9IDYyLAorICAgIFBpeGVsRm9ybWF0
UkcxNlVpbnQgPSA2MywKKyAgICBQaXhlbEZvcm1hdFJHMTZTaW50ID0gNjQsCisgICAgUGl4ZWxG
b3JtYXRSRzE2RmxvYXQgPSA2NSwKKyAgICBQaXhlbEZvcm1hdFJHQkE4VW5vcm0gPSA3MCwKKyAg
ICBQaXhlbEZvcm1hdFJHQkE4VW5vcm1fc1JHQiA9IDcxLAorICAgIFBpeGVsRm9ybWF0UkdCQThT
bm9ybSA9IDcyLAorICAgIFBpeGVsRm9ybWF0UkdCQThVaW50ID0gNzMsCisgICAgUGl4ZWxGb3Jt
YXRSR0JBOFNpbnQgPSA3NCwKKyAgICBQaXhlbEZvcm1hdEJHUkE4VW5vcm0gPSA4MCwKKyAgICBQ
aXhlbEZvcm1hdEJHUkE4VW5vcm1fc1JHQiA9IDgxLAorICAgIFBpeGVsRm9ybWF0UkdCMTBBMlVu
b3JtID0gOTAsCisgICAgUGl4ZWxGb3JtYXRSR0IxMEEyVWludCA9IDkxLAorICAgIFBpeGVsRm9y
bWF0UkcxMUIxMEZsb2F0ID0gOTIsCisgICAgUGl4ZWxGb3JtYXRSR0I5RTVGbG9hdCA9IDkzLAor
ICAgIFBpeGVsRm9ybWF0QkdSMTBBMlVub3JtID0gOTQsCisgICAgUGl4ZWxGb3JtYXRSRzMyVWlu
dCA9IDEwMywKKyAgICBQaXhlbEZvcm1hdFJHMzJTaW50ID0gMTA0LAorICAgIFBpeGVsRm9ybWF0
UkczMkZsb2F0ID0gMTA1LAorICAgIFBpeGVsRm9ybWF0UkdCQTE2VW5vcm0gPSAxMTAsCisgICAg
UGl4ZWxGb3JtYXRSR0JBMTZTbm9ybSA9IDExMiwKKyAgICBQaXhlbEZvcm1hdFJHQkExNlVpbnQg
PSAxMTMsCisgICAgUGl4ZWxGb3JtYXRSR0JBMTZTaW50ID0gMTE0LAorICAgIFBpeGVsRm9ybWF0
UkdCQTE2RmxvYXQgPSAxMTUsCisgICAgUGl4ZWxGb3JtYXRSR0JBMzJVaW50ID0gMTIzLAorICAg
IFBpeGVsRm9ybWF0UkdCQTMyU2ludCA9IDEyNCwKKyAgICBQaXhlbEZvcm1hdFJHQkEzMkZsb2F0
ID0gMTI1LAorICAgIFBpeGVsRm9ybWF0QkMxX1JHQkEgPSAxMzAsCisgICAgUGl4ZWxGb3JtYXRC
QzFfUkdCQV9zUkdCID0gMTMxLAorICAgIFBpeGVsRm9ybWF0QkMyX1JHQkEgPSAxMzIsCisgICAg
UGl4ZWxGb3JtYXRCQzJfUkdCQV9zUkdCID0gMTMzLAorICAgIFBpeGVsRm9ybWF0QkMzX1JHQkEg
PSAxMzQsCisgICAgUGl4ZWxGb3JtYXRCQzNfUkdCQV9zUkdCID0gMTM1LAorICAgIFBpeGVsRm9y
bWF0QkM0X1JVbm9ybSA9IDE0MCwKKyAgICBQaXhlbEZvcm1hdEJDNF9SU25vcm0gPSAxNDEsCisg
ICAgUGl4ZWxGb3JtYXRCQzVfUkdVbm9ybSA9IDE0MiwKKyAgICBQaXhlbEZvcm1hdEJDNV9SR1Nu
b3JtID0gMTQzLAorICAgIFBpeGVsRm9ybWF0QkM2SF9SR0JGbG9hdCA9IDE1MCwKKyAgICBQaXhl
bEZvcm1hdEJDNkhfUkdCVWZsb2F0ID0gMTUxLAorICAgIFBpeGVsRm9ybWF0QkM3X1JHQkFVbm9y
bSA9IDE1MiwKKyAgICBQaXhlbEZvcm1hdEJDN19SR0JBVW5vcm1fc1JHQiA9IDE1MywKKyAgICBQ
aXhlbEZvcm1hdFBWUlRDX1JHQl8yQlBQID0gMTYwLAorICAgIFBpeGVsRm9ybWF0UFZSVENfUkdC
XzJCUFBfc1JHQiA9IDE2MSwKKyAgICBQaXhlbEZvcm1hdFBWUlRDX1JHQl80QlBQID0gMTYyLAor
ICAgIFBpeGVsRm9ybWF0UFZSVENfUkdCXzRCUFBfc1JHQiA9IDE2MywKKyAgICBQaXhlbEZvcm1h
dFBWUlRDX1JHQkFfMkJQUCA9IDE2NCwKKyAgICBQaXhlbEZvcm1hdFBWUlRDX1JHQkFfMkJQUF9z
UkdCID0gMTY1LAorICAgIFBpeGVsRm9ybWF0UFZSVENfUkdCQV80QlBQID0gMTY2LAorICAgIFBp
eGVsRm9ybWF0UFZSVENfUkdCQV80QlBQX3NSR0IgPSAxNjcsCisgICAgUGl4ZWxGb3JtYXRFQUNf
UjExVW5vcm0gPSAxNzAsCisgICAgUGl4ZWxGb3JtYXRFQUNfUjExU25vcm0gPSAxNzIsCisgICAg
UGl4ZWxGb3JtYXRFQUNfUkcxMVVub3JtID0gMTc0LAorICAgIFBpeGVsRm9ybWF0RUFDX1JHMTFT
bm9ybSA9IDE3NiwKKyAgICBQaXhlbEZvcm1hdEVBQ19SR0JBOCA9IDE3OCwKKyAgICBQaXhlbEZv
cm1hdEVBQ19SR0JBOF9zUkdCID0gMTc5LAorICAgIFBpeGVsRm9ybWF0RVRDMl9SR0I4ID0gMTgw
LAorICAgIFBpeGVsRm9ybWF0RVRDMl9SR0I4X3NSR0IgPSAxODEsCisgICAgUGl4ZWxGb3JtYXRF
VEMyX1JHQjhBMSA9IDE4MiwKKyAgICBQaXhlbEZvcm1hdEVUQzJfUkdCOEExX3NSR0IgPSAxODMs
CisgICAgUGl4ZWxGb3JtYXRBU1RDXzR4NF9zUkdCID0gMTg2LAorICAgIFBpeGVsRm9ybWF0QVNU
Q181eDRfc1JHQiA9IDE4NywKKyAgICBQaXhlbEZvcm1hdEFTVENfNXg1X3NSR0IgPSAxODgsCisg
ICAgUGl4ZWxGb3JtYXRBU1RDXzZ4NV9zUkdCID0gMTg5LAorICAgIFBpeGVsRm9ybWF0QVNUQ182
eDZfc1JHQiA9IDE5MCwKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg1X3NSR0IgPSAxOTIsCisgICAg
UGl4ZWxGb3JtYXRBU1RDXzh4Nl9zUkdCID0gMTkzLAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDhf
c1JHQiA9IDE5NCwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4NV9zUkdCID0gMTk1LAorICAgIFBp
eGVsRm9ybWF0QVNUQ18xMHg2X3NSR0IgPSAxOTYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDhf
c1JHQiA9IDE5NywKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4MTBfc1JHQiA9IDE5OCwKKyAgICBQ
aXhlbEZvcm1hdEFTVENfMTJ4MTBfc1JHQiA9IDE5OSwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTJ4
MTJfc1JHQiA9IDIwMCwKKyAgICBQaXhlbEZvcm1hdEFTVENfNHg0X0xEUiA9IDIwNCwKKyAgICBQ
aXhlbEZvcm1hdEFTVENfNXg0X0xEUiA9IDIwNSwKKyAgICBQaXhlbEZvcm1hdEFTVENfNXg1X0xE
UiA9IDIwNiwKKyAgICBQaXhlbEZvcm1hdEFTVENfNng1X0xEUiA9IDIwNywKKyAgICBQaXhlbEZv
cm1hdEFTVENfNng2X0xEUiA9IDIwOCwKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg1X0xEUiA9IDIx
MCwKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg2X0xEUiA9IDIxMSwKKyAgICBQaXhlbEZvcm1hdEFT
VENfOHg4X0xEUiA9IDIxMiwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4NV9MRFIgPSAyMTMsCisg
ICAgUGl4ZWxGb3JtYXRBU1RDXzEweDZfTERSID0gMjE0LAorICAgIFBpeGVsRm9ybWF0QVNUQ18x
MHg4X0xEUiA9IDIxNSwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4MTBfTERSID0gMjE2LAorICAg
IFBpeGVsRm9ybWF0QVNUQ18xMngxMF9MRFIgPSAyMTcsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEy
eDEyX0xEUiA9IDIxOCwKKyAgICBQaXhlbEZvcm1hdEFTVENfNHg0X0hEUiA9IDIyMiwKKyAgICBQ
aXhlbEZvcm1hdEFTVENfNXg0X0hEUiA9IDIyMywKKyAgICBQaXhlbEZvcm1hdEFTVENfNXg1X0hE
UiA9IDIyNCwKKyAgICBQaXhlbEZvcm1hdEFTVENfNng1X0hEUiA9IDIyNSwKKyAgICBQaXhlbEZv
cm1hdEFTVENfNng2X0hEUiA9IDIyNiwKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg1X0hEUiA9IDIy
OCwKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg2X0hEUiA9IDIyOSwKKyAgICBQaXhlbEZvcm1hdEFT
VENfOHg4X0hEUiA9IDIzMCwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4NV9IRFIgPSAyMzEsCisg
ICAgUGl4ZWxGb3JtYXRBU1RDXzEweDZfSERSID0gMjMyLAorICAgIFBpeGVsRm9ybWF0QVNUQ18x
MHg4X0hEUiA9IDIzMywKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4MTBfSERSID0gMjM0LAorICAg
IFBpeGVsRm9ybWF0QVNUQ18xMngxMF9IRFIgPSAyMzUsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEy
eDEyX0hEUiA9IDIzNiwKKyAgICBQaXhlbEZvcm1hdEdCR1I0MjIgPSAyNDAsCisgICAgUGl4ZWxG
b3JtYXRCR1JHNDIyID0gMjQxLAorICAgIFBpeGVsRm9ybWF0RGVwdGgxNlVub3JtID0gMjUwLAor
ICAgIFBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0ID0gMjUyLAorICAgIFBpeGVsRm9ybWF0U3RlbmNp
bDggPSAyNTMsCisgICAgUGl4ZWxGb3JtYXREZXB0aDI0VW5vcm1fU3RlbmNpbDggPSAyNTUsCisg
ICAgUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDggPSAyNjAsCisgICAgUGl4ZWxGb3Jt
YXRYMzJfU3RlbmNpbDggPSAyNjEsCisgICAgUGl4ZWxGb3JtYXRYMjRfU3RlbmNpbDggPSAyNjIs
CisgICAgUGl4ZWxGb3JtYXRCR1JBMTBfWFIgPSA1NTIsCisgICAgUGl4ZWxGb3JtYXRCR1JBMTBf
WFJfc1JHQiA9IDU1MywKKyAgICBQaXhlbEZvcm1hdEJHUjEwX1hSID0gNTU0LAorICAgIFBpeGVs
Rm9ybWF0QkdSMTBfWFJfc1JHQiA9IDU1NSwKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQcml2YXRlLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQcml2YXRlLmhwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYWU0
ZDc5ZTQ4NzE2Y2EzNjdhZGE4NTFhMDVmNWY0NmIxNTBkYzE0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFByaXZhdGUuaHBwCkBAIC0w
LDAgKzEsMTM1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vCisvLyBNZXRhbC9NVExQcml2YXRlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIw
MjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKworI2luY2x1ZGUg
PG9iamMvcnVudGltZS5oPgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI2RlZmluZSBfTVRMX1BSSVZBVEVfQ0xTKHN5bWJvbCkgKFByaXZhdGU6OkNs
YXNzOjpzX2sjI3N5bWJvbCkKKyNkZWZpbmUgX01UTF9QUklWQVRFX1NFTChhY2Nlc3NvcikgKFBy
aXZhdGU6OlNlbGVjdG9yOjpzX2sjI2FjY2Vzc29yKQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lmIGRlZmluZWQoTVRMX1BSSVZBVEVfSU1QTEVN
RU5UQVRJT04pCisKKyNkZWZpbmUgX01UTF9QUklWQVRFX1ZJU0lCSUxJVFkgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSgiaGlkZGVuIikpKQorI2RlZmluZSBfTVRMX1BSSVZBVEVfSU1QT1JUIF9f
YXR0cmlidXRlX18oKHdlYWtfaW1wb3J0KSkKKworI2lmIF9fT0JKQ19fCisjZGVmaW5lIF9NVExf
UFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpICgoX19icmlkZ2Ugdm9pZCopb2JqY19s
b29rVXBDbGFzcygjc3ltYm9sKSkKKyNlbHNlCisjZGVmaW5lIF9NVExfUFJJVkFURV9PQkpDX0xP
T0tVUF9DTEFTUyhzeW1ib2wpIG9iamNfbG9va1VwQ2xhc3MoI3N5bWJvbCkKKyNlbmRpZiAvLyBf
X09CSkNfXworCisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfQ0xTKHN5bWJvbCkgdm9pZCogc19r
IyNzeW1ib2wgX01UTF9QUklWQVRFX1ZJU0lCSUxJVFkgPSBfTVRMX1BSSVZBVEVfT0JKQ19MT09L
VVBfQ0xBU1Moc3ltYm9sKTsKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9QUk8oc3ltYm9sKQor
I2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX1NFTChhY2Nlc3Nvciwgc3ltYm9sKSBTRUwgc19rIyNh
Y2Nlc3NvciBfTVRMX1BSSVZBVEVfVklTSUJJTElUWSA9IHNlbF9yZWdpc3Rlck5hbWUoc3ltYm9s
KTsKKworI2lmIGRlZmluZWQoX19NQUNfMTBfMTYpIHx8IGRlZmluZWQoX19NQUNfMTFfMCkgfHwg
ZGVmaW5lZChfX01BQ18xMl8wKSB8fCBkZWZpbmVkKF9fSVBIT05FXzE0XzApIHx8IGRlZmluZWQo
X19JUEhPTkVfMTVfMCkgfHwgZGVmaW5lZChfX1RWT1NfMTRfMCkgfHwgZGVmaW5lZChfX1RWT1Nf
MTVfMCkKKworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX1NUUih0eXBlLCBzeW1ib2wpICAgICAg
ICAgICAgICAgICAgXAorICAgIF9NVExfRVhURVJOIHR5cGUgY29uc3QgTVRMIyNzeW1ib2wgX01U
TF9QUklWQVRFX0lNUE9SVDsgXAorICAgIHR5cGUgY29uc3QgICAgICAgICAgICAgICAgICAgICAg
ICAgTVRMOjpzeW1ib2wgPSAobnVsbHB0ciAhPSAmTVRMIyNzeW1ib2wpID8gTVRMIyNzeW1ib2wg
OiBudWxscHRyOworCisjZWxzZQorCisjaW5jbHVkZSA8ZGxmY24uaD4KKworbmFtZXNwYWNlIE1U
TAoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfVHlw
ZT4KKyAgICBpbmxpbmUgX1R5cGUgY29uc3QgTG9hZFN5bWJvbChjb25zdCBjaGFyKiBwU3ltYm9s
KQorICAgIHsKKyAgICAgICAgY29uc3QgX1R5cGUqIHBBZGRyZXNzID0gc3RhdGljX2Nhc3Q8X1R5
cGUqPihkbHN5bShSVExEX0RFRkFVTFQsIHBTeW1ib2wpKTsKKworICAgICAgICByZXR1cm4gcEFk
ZHJlc3MgPyAqcEFkZHJlc3MgOiBudWxscHRyOworICAgIH0KKworfSAvLyBQcml2YXRlCit9IC8v
IE1UTAorCisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfU1RSKHR5cGUsIHN5bWJvbCkgXAorICAg
IF9NVExfRVhURVJOIHR5cGUgY29uc3QgTVRMIyNzeW1ib2w7ICAgIFwKKyAgICB0eXBlIGNvbnN0
ICAgICAgICAgICAgIE1UTDo6c3ltYm9sID0gUHJpdmF0ZTo6TG9hZFN5bWJvbDx0eXBlPigiTVRM
IiAjc3ltYm9sKTsKKworI2VuZGlmIC8vIGRlZmluZWQoX19NQUNfMTBfMTYpIHx8IGRlZmluZWQo
X19NQUNfMTFfMCkgfHwgZGVmaW5lZChfX01BQ18xMl8wKSB8fCBkZWZpbmVkKF9fSVBIT05FXzE0
XzApIHx8IGRlZmluZWQoX19JUEhPTkVfMTVfMCkgfHwgZGVmaW5lZChfX1RWT1NfMTRfMCkgfHwg
ZGVmaW5lZChfX1RWT1NfMTVfMCkKKworI2Vsc2UKKworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVG
X0NMUyhzeW1ib2wpIGV4dGVybiB2b2lkKiBzX2sjI3N5bWJvbDsKKyNkZWZpbmUgX01UTF9QUklW
QVRFX0RFRl9QUk8oc3ltYm9sKQorI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX1NFTChhY2Nlc3Nv
ciwgc3ltYm9sKSBleHRlcm4gU0VMIHNfayMjYWNjZXNzb3I7CisjZGVmaW5lIF9NVExfUFJJVkFU
RV9ERUZfU1RSKHR5cGUsIHN5bWJvbCkKKworI2VuZGlmIC8vIE1UTF9QUklWQVRFX0lNUExFTUVO
VEFUSU9OCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CituYW1lc3BhY2UgTVRMCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBD
bGFzcworICAgIHsKKworICAgIH0gLy8gQ2xhc3MKK30gLy8gUHJpdmF0ZQorfSAvLyBNVEwKKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFj
ZSBNVEwKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFtZXNwYWNlIFByb3RvY29sCisg
ICAgeworCisgICAgfSAvLyBQcm90b2NvbAorfSAvLyBQcml2YXRlCit9IC8vIE1UTAorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE1U
TAoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAgICBuYW1lc3BhY2UgU2VsZWN0b3IKKyAgICB7
CisKKyAgICAgICAgX01UTF9QUklWQVRFX0RFRl9TRUwoYmVnaW5TY29wZSwKKyAgICAgICAgICAg
ICJiZWdpblNjb3BlIik7CisgICAgICAgIF9NVExfUFJJVkFURV9ERUZfU0VMKGVuZFNjb3BlLAor
ICAgICAgICAgICAgImVuZFNjb3BlIik7CisgICAgfSAvLyBDbGFzcworfSAvLyBQcml2YXRlCit9
IC8vIE1UTAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSYXN0
ZXJpemF0aW9uUmF0ZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMUmFzdGVyaXphdGlvblJhdGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4NjY5NTQ1Y2IyYzhlYTMzMDkx
Y2ZlNWE5ZjhlYzE4NmJiYTEyYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwCkBAIC0wLDAgKzEs
Mzg2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
CisvLyBNZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAy
MC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIK
KyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBw
IgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1U
TERldmljZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7
CitjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5IDogcHVibGljIE5TOjpSZWZlcmVu
Y2luZzxSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5PgoreworcHVibGljOgorICAgIHN0YXRp
YyBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiBhbGxvYygpOworCisgICAgY2xh
c3MgUmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIE5T
OjpOdW1iZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRl
Z2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRPYmplY3QoY29uc3QgTlM6Ok51bWJlciogdmFsdWUsIE5TOjpVSW50ZWdlciBpbmRl
eCk7Cit9OworCitjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciA6IHB1Ymxp
YyBOUzo6Q29weWluZzxSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcj4KK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGFs
bG9jKCk7CisKKyAgICBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiAgICAg
ICAgIGluaXQoKTsKKworICAgIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3Iq
ICAgICAgICAgaW5pdChNVEw6OlNpemUgc2FtcGxlQ291bnQpOworCisgICAgTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogICAgICAgICBpbml0KE1UTDo6U2l6ZSBzYW1wbGVD
b3VudCwgY29uc3QgZmxvYXQqIGhvcml6b250YWwsIGNvbnN0IGZsb2F0KiB2ZXJ0aWNhbCk7CisK
KyAgICBNVEw6OlNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBs
ZUNvdW50KCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1heFNhbXBsZUNvdW50KCkgY29uc3Q7CisKKyAgICBmbG9hdCogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxTYW1wbGVTdG9yYWdl
KCkgY29uc3Q7CisKKyAgICBmbG9hdCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZlcnRpY2FsU2FtcGxlU3RvcmFnZSgpIGNvbnN0OworCisgICAgY2xhc3MgUmFzdGVy
aXphdGlvblJhdGVTYW1wbGVBcnJheSogICAgICAgICAgICBob3Jpem9udGFsKCkgY29uc3Q7CisK
KyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiAgICAgICAgICAgIHZlcnRp
Y2FsKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFNhbXBsZUNvdW50KE1UTDo6U2l6ZSBzYW1wbGVDb3VudCk7Cit9OworCitj
bGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5n
PFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xh
c3MgUmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgUmFz
dGVyaXphdGlvblJhdGVMYXllckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgUmFz
dGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqICAgb2JqZWN0KE5TOjpVSW50ZWdlciBsYXll
ckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldE9iamVjdChjb25zdCBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciog
bGF5ZXIsIE5TOjpVSW50ZWdlciBsYXllckluZGV4KTsKK307CisKK2NsYXNzIFJhc3Rlcml6YXRp
b25SYXRlTWFwRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSYXN0ZXJpemF0aW9uUmF0
ZU1hcERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRp
b25SYXRlTWFwRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBSYXN0
ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRv
cihNVEw6OlNpemUgc2NyZWVuU2l6ZSk7CisKKyAgICBzdGF0aWMgY2xhc3MgUmFzdGVyaXphdGlv
blJhdGVNYXBEZXNjcmlwdG9yKiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IoTVRMOjpT
aXplIHNjcmVlblNpemUsIGNvbnN0IGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlw
dG9yKiBsYXllcik7CisKKyAgICBzdGF0aWMgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXBEZXNj
cmlwdG9yKiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IoTVRMOjpTaXplIHNjcmVlblNp
emUsIE5TOjpVSW50ZWdlciBsYXllckNvdW50LCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJE
ZXNjcmlwdG9yKiBjb25zdCogbGF5ZXJzKTsKKworICAgIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRl
TGF5ZXJEZXNjcmlwdG9yKiAgICAgIGxheWVyKE5TOjpVSW50ZWdlciBsYXllckluZGV4KTsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExheWVy
KGNvbnN0IGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBsYXllciwgTlM6
OlVJbnRlZ2VyIGxheWVySW5kZXgpOworCisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXll
ckFycmF5KiAgICAgICAgICAgbGF5ZXJzKCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5TaXplKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2NyZWVuU2l6ZShN
VEw6OlNpemUgc2NyZWVuU2l6ZSk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVs
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh
eWVyQ291bnQoKSBjb25zdDsKK307CisKK2NsYXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwIDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxSYXN0ZXJpemF0aW9uUmF0ZU1hcD4KK3sKK3B1YmxpYzoKKyAg
ICBjbGFzcyBEZXZpY2UqICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAg
ICAgIGxhYmVsKCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemUgICAgICAgICBzY3JlZW5TaXplKCkg
Y29uc3Q7CisKKyAgICBNVEw6OlNpemUgICAgICAgICBwaHlzaWNhbEdyYW51bGFyaXR5KCkgY29u
c3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICBsYXllckNvdW50KCkgY29uc3Q7CisKKyAgICBN
VEw6OlNpemVBbmRBbGlnbiBwYXJhbWV0ZXJCdWZmZXJTaXplQW5kQWxpZ24oKSBjb25zdDsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgIGNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXIoY29uc3QgY2xh
c3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQpOworCisgICAgTVRMOjpTaXpl
ICAgICAgICAgcGh5c2ljYWxTaXplKE5TOjpVSW50ZWdlciBsYXllckluZGV4KTsKKworICAgIE1U
TDo6Q29vcmRpbmF0ZTJEIG1hcFNjcmVlblRvUGh5c2ljYWxDb29yZGluYXRlcyhNVEw6OkNvb3Jk
aW5hdGUyRCBzY3JlZW5Db29yZGluYXRlcywgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpOworCisg
ICAgTVRMOjpDb29yZGluYXRlMkQgbWFwUGh5c2ljYWxUb1NjcmVlbkNvb3JkaW5hdGVzKE1UTDo6
Q29vcmRpbmF0ZTJEIHBoeXNpY2FsQ29vcmRpbmF0ZXMsIE5TOjpVSW50ZWdlciBsYXllckluZGV4
KTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBs
ZUFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmFz
dGVyaXphdGlvblJhdGVTYW1wbGVBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExSYXN0ZXJpemF0
aW9uUmF0ZVNhbXBsZUFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiBNVEw6OlJhc3Rlcml6YXRpb25SYXRl
U2FtcGxlQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RB
dEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBOUzo6TnVtYmVyKiBNVEw6OlJhc3Rlcml6
YXRpb25SYXRlU2FtcGxlQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6Ok51bWJlcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJh
c3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXk6OnNldE9iamVjdChjb25zdCBOUzo6TnVtYmVyKiB2
YWx1ZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0Xyks
IHZhbHVlLCBpbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I+KF9NVExfUFJJVkFU
RV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlw
dG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNj
cmlwdG9yPigpOworfQorCisvLyBtZXRob2Q6IGluaXRXaXRoU2FtcGxlQ291bnQ6CitfTVRMX0lO
TElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6
YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjppbml0KE1UTDo6U2l6ZSBzYW1wbGVDb3VudCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5
ZXJEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbml0V2l0aFNhbXBsZUNvdW50
XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8gbWV0aG9kOiBpbml0V2l0aFNhbXBsZUNvdW50Omhv
cml6b250YWw6dmVydGljYWw6CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5
ZXJEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjppbml0
KE1UTDo6U2l6ZSBzYW1wbGVDb3VudCwgY29uc3QgZmxvYXQqIGhvcml6b250YWwsIGNvbnN0IGZs
b2F0KiB2ZXJ0aWNhbCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJh
c3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
bml0V2l0aFNhbXBsZUNvdW50X2hvcml6b250YWxfdmVydGljYWxfKSwgc2FtcGxlQ291bnQsIGhv
cml6b250YWwsIHZlcnRpY2FsKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNvdW50CitfTVRM
X0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6
c2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3VudCkpOworfQorCisvLyBw
cm9wZXJ0eTogbWF4U2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjptYXhTYW1wbGVDb3VudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG1heFNhbXBsZUNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBob3Jpem9udGFsU2Ft
cGxlU3RvcmFnZQorX01UTF9JTkxJTkUgZmxvYXQqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3I6Omhvcml6b250YWxTYW1wbGVTdG9yYWdlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxmbG9hdCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaG9y
aXpvbnRhbFNhbXBsZVN0b3JhZ2UpKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRpY2FsU2FtcGxl
U3RvcmFnZQorX01UTF9JTkxJTkUgZmxvYXQqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRl
c2NyaXB0b3I6OnZlcnRpY2FsU2FtcGxlU3RvcmFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRpY2Fs
U2FtcGxlU3RvcmFnZSkpOworfQorCisvLyBwcm9wZXJ0eTogaG9yaXpvbnRhbAorX01UTF9JTkxJ
TkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiBNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTGF5ZXJEZXNjcmlwdG9yOjpob3Jpem9udGFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGhvcml6b250YWwpKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRp
Y2FsCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkqIE1UTDo6
UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6OnZlcnRpY2FsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxl
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRpY2FsKSk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0U2FtcGxlQ291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJh
dGVMYXllckRlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50KE1UTDo6U2l6ZSBzYW1wbGVDb3VudCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0U2FtcGxlQ291bnRfKSwgc2FtcGxlQ291bnQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkqIE1UTDo6
UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmFsbG9jPE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5PihfTVRMX1BSSVZB
VEVfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheSkpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KiBNVEw6
OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXk+KCk7Cit9CisKKy8v
IG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpSYXN0
ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVy
QXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgbGF5ZXJJ
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXk6OnNldE9iamVj
dChjb25zdCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBsYXllciwgTlM6
OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgbGF5
ZXIsIGxheWVySW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJ
TkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlv
blJhdGVNYXBEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBNVEw6
OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I+KCk7Cit9
CisKKy8vIHN0YXRpYyBtZXRob2Q6IHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhT
Y3JlZW5TaXplOgorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0
b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpyYXN0ZXJpemF0aW9uUmF0
ZU1hcERlc2NyaXB0b3IoTVRMOjpTaXplIHNjcmVlblNpemUpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciksIF9NVExfUFJJ
VkFURV9TRUwocmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemVfKSwg
c2NyZWVuU2l6ZSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHJhc3Rlcml6YXRpb25SYXRlTWFw
RGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOmxheWVyOgorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlw
dG9yOjpyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IoTVRMOjpTaXplIHNjcmVlblNpemUs
IGNvbnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGxheWVyKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBE
ZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldp
dGhTY3JlZW5TaXplX2xheWVyXyksIHNjcmVlblNpemUsIGxheWVyKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogcmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemU6bGF5
ZXJDb3VudDpsYXllcnM6CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVz
Y3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OnJhc3Rlcml6YXRp
b25SYXRlTWFwRGVzY3JpcHRvcihNVEw6OlNpemUgc2NyZWVuU2l6ZSwgTlM6OlVJbnRlZ2VyIGxh
eWVyQ291bnQsIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGNvbnN0KiBs
YXllcnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZU1hcERlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwocmFzdGVyaXphdGlvblJhdGVNYXBE
ZXNjcmlwdG9yV2l0aFNjcmVlblNpemVfbGF5ZXJDb3VudF9sYXllcnNfKSwgc2NyZWVuU2l6ZSwg
bGF5ZXJDb3VudCwgbGF5ZXJzKTsKK30KKworLy8gbWV0aG9kOiBsYXllckF0SW5kZXg6CitfTVRM
X0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6bGF5ZXIoTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZUxheWVyRGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGF5ZXJBdEluZGV4Xyks
IGxheWVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldExheWVyOmF0SW5kZXg6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpzZXRMYXllcihj
b25zdCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBsYXllciwgTlM6OlVJ
bnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldExheWVyX2F0SW5kZXhfKSwgbGF5ZXIsIGxheWVySW5kZXgp
OworfQorCisvLyBwcm9wZXJ0eTogbGF5ZXJzCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6Omxh
eWVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0
ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxheWVycykp
OworfQorCisvLyBwcm9wZXJ0eTogc2NyZWVuU2l6ZQorX01UTF9JTkxJTkUgTVRMOjpTaXplIE1U
TDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpzY3JlZW5TaXplKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemU+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2NyZWVuU2l6ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVy
aXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpzZXRTY3JlZW5TaXplKE1UTDo6U2l6ZSBzY3JlZW5T
aXplKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRTY3JlZW5TaXplXyksIHNjcmVlblNpemUpOworfQorCisvLyBwcm9wZXJ0eTogbGFi
ZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNj
cmlwdG9yOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6c2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJv
cGVydHk6IGxheWVyQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJhc3Rlcml6
YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6bGF5ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxheWVyQ291bnQpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRM
OjpEZXZpY2UqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OmRldmljZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5F
IE5TOjpTdHJpbmcqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OmxhYmVsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTogc2NyZWVuU2l6ZQorX01UTF9J
TkxJTkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OnNjcmVlblNpemUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzY3JlZW5TaXplKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwaHlzaWNh
bEdyYW51bGFyaXR5CitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZU1hcDo6cGh5c2ljYWxHcmFudWxhcml0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBoeXNpY2FsR3Jh
bnVsYXJpdHkpKTsKK30KKworLy8gcHJvcGVydHk6IGxheWVyQ291bnQKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpsYXllckNvdW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobGF5ZXJDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogcGFyYW1ldGVy
QnVmZmVyU2l6ZUFuZEFsaWduCitfTVRMX0lOTElORSBNVEw6OlNpemVBbmRBbGlnbiBNVEw6OlJh
c3Rlcml6YXRpb25SYXRlTWFwOjpwYXJhbWV0ZXJCdWZmZXJTaXplQW5kQWxpZ24oKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZUFuZEFsaWduPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHBhcmFtZXRlckJ1ZmZlclNpemVBbmRBbGlnbikpOworfQorCisv
LyBtZXRob2Q6IGNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXI6b2Zmc2V0OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpjb3B5UGFyYW1ldGVyRGF0YVRvQnVmZmVy
KGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlQYXJh
bWV0ZXJEYXRhVG9CdWZmZXJfb2Zmc2V0XyksIGJ1ZmZlciwgb2Zmc2V0KTsKK30KKworLy8gbWV0
aG9kOiBwaHlzaWNhbFNpemVGb3JMYXllcjoKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlJh
c3Rlcml6YXRpb25SYXRlTWFwOjpwaHlzaWNhbFNpemUoTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHBoeXNpY2FsU2l6ZUZvckxheWVyXyksIGxheWVySW5kZXgpOworfQorCisv
LyBtZXRob2Q6IG1hcFNjcmVlblRvUGh5c2ljYWxDb29yZGluYXRlczpmb3JMYXllcjoKK19NVExf
SU5MSU5FIE1UTDo6Q29vcmRpbmF0ZTJEIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6Om1hcFNj
cmVlblRvUGh5c2ljYWxDb29yZGluYXRlcyhNVEw6OkNvb3JkaW5hdGUyRCBzY3JlZW5Db29yZGlu
YXRlcywgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpDb29yZGluYXRlMkQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWFwU2Ny
ZWVuVG9QaHlzaWNhbENvb3JkaW5hdGVzX2ZvckxheWVyXyksIHNjcmVlbkNvb3JkaW5hdGVzLCBs
YXllckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBtYXBQaHlzaWNhbFRvU2NyZWVuQ29vcmRpbmF0
ZXM6Zm9yTGF5ZXI6CitfTVRMX0lOTElORSBNVEw6OkNvb3JkaW5hdGUyRCBNVEw6OlJhc3Rlcml6
YXRpb25SYXRlTWFwOjptYXBQaHlzaWNhbFRvU2NyZWVuQ29vcmRpbmF0ZXMoTVRMOjpDb29yZGlu
YXRlMkQgcGh5c2ljYWxDb29yZGluYXRlcywgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb29yZGluYXRlMkQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobWFwUGh5c2ljYWxUb1NjcmVlbkNvb3JkaW5hdGVzX2ZvckxheWVyXyks
IHBoeXNpY2FsQ29vcmRpbmF0ZXMsIGxheWVySW5kZXgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhw
cCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJDb21tYW5k
RW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJkYTg1NjEzNWQ5N2FiZDJkODU2ZjA0NmU4YzczNjAy
MzJjNmRlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSw5NTggQEAKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFs
L01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQnVmZmVy
LmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMSGVh
cC5ocHAiCisjaW5jbHVkZSAiTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiCisjaW5j
bHVkZSAiTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlclBh
c3MuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExTYW1wbGVy
LmhwcCIKKyNpbmNsdWRlICJNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAiCisjaW5j
bHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorI2luY2x1ZGUg
Ik1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9F
TlVNKE5TOjpVSW50ZWdlciwgUHJpbWl0aXZlVHlwZSkgeworICAgIFByaW1pdGl2ZVR5cGVQb2lu
dCA9IDAsCisgICAgUHJpbWl0aXZlVHlwZUxpbmUgPSAxLAorICAgIFByaW1pdGl2ZVR5cGVMaW5l
U3RyaXAgPSAyLAorICAgIFByaW1pdGl2ZVR5cGVUcmlhbmdsZSA9IDMsCisgICAgUHJpbWl0aXZl
VHlwZVRyaWFuZ2xlU3RyaXAgPSA0LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVmlz
aWJpbGl0eVJlc3VsdE1vZGUpIHsKKyAgICBWaXNpYmlsaXR5UmVzdWx0TW9kZURpc2FibGVkID0g
MCwKKyAgICBWaXNpYmlsaXR5UmVzdWx0TW9kZUJvb2xlYW4gPSAxLAorICAgIFZpc2liaWxpdHlS
ZXN1bHRNb2RlQ291bnRpbmcgPSAyLAorfTsKKworc3RydWN0IFNjaXNzb3JSZWN0Cit7CisgICAg
TlM6OlVJbnRlZ2VyIHg7CisgICAgTlM6OlVJbnRlZ2VyIHk7CisgICAgTlM6OlVJbnRlZ2VyIHdp
ZHRoOworICAgIE5TOjpVSW50ZWdlciBoZWlnaHQ7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3Qg
Vmlld3BvcnQKK3sKKyAgICBkb3VibGUgb3JpZ2luWDsKKyAgICBkb3VibGUgb3JpZ2luWTsKKyAg
ICBkb3VibGUgd2lkdGg7CisgICAgZG91YmxlIGhlaWdodDsKKyAgICBkb3VibGUgem5lYXI7Cisg
ICAgZG91YmxlIHpmYXI7Cit9IF9NVExfUEFDS0VEOworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2Vy
LCBDdWxsTW9kZSkgeworICAgIEN1bGxNb2RlTm9uZSA9IDAsCisgICAgQ3VsbE1vZGVGcm9udCA9
IDEsCisgICAgQ3VsbE1vZGVCYWNrID0gMiwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIs
IFdpbmRpbmcpIHsKKyAgICBXaW5kaW5nQ2xvY2t3aXNlID0gMCwKKyAgICBXaW5kaW5nQ291bnRl
ckNsb2Nrd2lzZSA9IDEsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBEZXB0aENsaXBN
b2RlKSB7CisgICAgRGVwdGhDbGlwTW9kZUNsaXAgPSAwLAorICAgIERlcHRoQ2xpcE1vZGVDbGFt
cCA9IDEsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBUcmlhbmdsZUZpbGxNb2RlKSB7
CisgICAgVHJpYW5nbGVGaWxsTW9kZUZpbGwgPSAwLAorICAgIFRyaWFuZ2xlRmlsbE1vZGVMaW5l
cyA9IDEsCit9OworCitzdHJ1Y3QgRHJhd1ByaW1pdGl2ZXNJbmRpcmVjdEFyZ3VtZW50cworewor
ICAgIHVpbnQzMl90IHZlcnRleENvdW50OworICAgIHVpbnQzMl90IGluc3RhbmNlQ291bnQ7Cisg
ICAgdWludDMyX3QgdmVydGV4U3RhcnQ7CisgICAgdWludDMyX3QgYmFzZUluc3RhbmNlOworfSBf
TVRMX1BBQ0tFRDsKKworc3RydWN0IERyYXdJbmRleGVkUHJpbWl0aXZlc0luZGlyZWN0QXJndW1l
bnRzCit7CisgICAgdWludDMyX3QgaW5kZXhDb3VudDsKKyAgICB1aW50MzJfdCBpbnN0YW5jZUNv
dW50OworICAgIHVpbnQzMl90IGluZGV4U3RhcnQ7CisgICAgaW50MzJfdCAgYmFzZVZlcnRleDsK
KyAgICB1aW50MzJfdCBiYXNlSW5zdGFuY2U7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgVmVy
dGV4QW1wbGlmaWNhdGlvblZpZXdNYXBwaW5nCit7CisgICAgdWludDMyX3Qgdmlld3BvcnRBcnJh
eUluZGV4T2Zmc2V0OworICAgIHVpbnQzMl90IHJlbmRlclRhcmdldEFycmF5SW5kZXhPZmZzZXQ7
Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgRHJhd1BhdGNoSW5kaXJlY3RBcmd1bWVudHMKK3sK
KyAgICB1aW50MzJfdCBwYXRjaENvdW50OworICAgIHVpbnQzMl90IGluc3RhbmNlQ291bnQ7Cisg
ICAgdWludDMyX3QgcGF0Y2hTdGFydDsKKyAgICB1aW50MzJfdCBiYXNlSW5zdGFuY2U7Cit9IF9N
VExfUEFDS0VEOworCitzdHJ1Y3QgUXVhZFRlc3NlbGxhdGlvbkZhY3RvcnNIYWxmCit7CisgICAg
dWludDE2X3QgZWRnZVRlc3NlbGxhdGlvbkZhY3Rvcls0XTsKKyAgICB1aW50MTZfdCBpbnNpZGVU
ZXNzZWxsYXRpb25GYWN0b3JbMl07Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgVHJpYW5nbGVU
ZXNzZWxsYXRpb25GYWN0b3JzSGFsZgoreworICAgIHVpbnQxNl90IGVkZ2VUZXNzZWxsYXRpb25G
YWN0b3JbM107CisgICAgdWludDE2X3QgaW5zaWRlVGVzc2VsbGF0aW9uRmFjdG9yOworfSBfTVRM
X1BBQ0tFRDsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgUmVuZGVyU3RhZ2VzKSB7Cisg
ICAgUmVuZGVyU3RhZ2VWZXJ0ZXggPSAxLAorICAgIFJlbmRlclN0YWdlRnJhZ21lbnQgPSAyLAor
ICAgIFJlbmRlclN0YWdlVGlsZSA9IDQsCit9OworCitjbGFzcyBSZW5kZXJDb21tYW5kRW5jb2Rl
ciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVyQ29tbWFuZEVuY29kZXIsIENvbW1hbmRF
bmNvZGVyPgoreworcHVibGljOgorICAgIHZvaWQgICAgICAgICBzZXRSZW5kZXJQaXBlbGluZVN0
YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lU3RhdGUpOworCisg
ICAgdm9pZCAgICAgICAgIHNldFZlcnRleEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUlu
dGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNl
dFZlcnRleEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhC
dWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10s
IGNvbnN0IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0VmVydGV4VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJl
LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleFRleHR1
cmVzKE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZv
aWQgICAgICAgICBzZXRWZXJ0ZXhTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRl
KiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZl
cnRleFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5n
ZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4U2FtcGxlclN0YXRlKGNvbnN0
IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxv
ZE1heENsYW1wLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZl
cnRleFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNvbnN0IGZs
b2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6OlJhbmdl
IHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJs
ZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJ
bnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhWaXNpYmxl
RnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9u
VGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5k
ZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVzKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0
VmVydGV4QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOwor
CisgICAgdm9pZCAgICAgICAgIHNldFZpZXdwb3J0KE1UTDo6Vmlld3BvcnQgdmlld3BvcnQpOwor
CisgICAgdm9pZCAgICAgICAgIHNldFZpZXdwb3J0cyhjb25zdCBNVEw6OlZpZXdwb3J0KiB2aWV3
cG9ydHMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJvbnRG
YWNpbmdXaW5kaW5nKE1UTDo6V2luZGluZyBmcm9udEZhY2luZ1dpbmRpbmcpOworCisgICAgdm9p
ZCAgICAgICAgIHNldFZlcnRleEFtcGxpZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgY291bnQs
IGNvbnN0IE1UTDo6VmVydGV4QW1wbGlmaWNhdGlvblZpZXdNYXBwaW5nKiB2aWV3TWFwcGluZ3Mp
OworCisgICAgdm9pZCAgICAgICAgIHNldEN1bGxNb2RlKE1UTDo6Q3VsbE1vZGUgY3VsbE1vZGUp
OworCisgICAgdm9pZCAgICAgICAgIHNldERlcHRoQ2xpcE1vZGUoTVRMOjpEZXB0aENsaXBNb2Rl
IGRlcHRoQ2xpcE1vZGUpOworCisgICAgdm9pZCAgICAgICAgIHNldERlcHRoQmlhcyhmbG9hdCBk
ZXB0aEJpYXMsIGZsb2F0IHNsb3BlU2NhbGUsIGZsb2F0IGNsYW1wKTsKKworICAgIHZvaWQgICAg
ICAgICBzZXRTY2lzc29yUmVjdChNVEw6OlNjaXNzb3JSZWN0IHJlY3QpOworCisgICAgdm9pZCAg
ICAgICAgIHNldFNjaXNzb3JSZWN0cyhjb25zdCBNVEw6OlNjaXNzb3JSZWN0KiBzY2lzc29yUmVj
dHMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VHJpYW5nbGVG
aWxsTW9kZShNVEw6OlRyaWFuZ2xlRmlsbE1vZGUgZmlsbE1vZGUpOworCisgICAgdm9pZCAgICAg
ICAgIHNldEZyYWdtZW50Qnl0ZXMoY29uc3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5n
dGgsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRC
dWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5T
OjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRCdWZmZXJP
ZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZv
aWQgICAgICAgICBzZXRGcmFnbWVudEJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29u
c3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQg
ICAgICAgICBzZXRGcmFnbWVudFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFRleHR1
cmVzKE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZv
aWQgICAgICAgICBzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyU3Rh
dGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0
RnJhZ21lbnRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6
UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50U2FtcGxlclN0YXRl
KGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZs
b2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAg
IHNldEZyYWdtZW50U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwg
Y29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0IGZsb2F0IGxvZE1heENsYW1wc1tdLCBO
Uzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50VmlzaWJsZUZ1
bmN0aW9uVGFibGUoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFi
bGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJh
Z21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1
bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0
RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBi
dWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlcyhjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAg
ICAgICAgIHNldEZyYWdtZW50QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVm
ZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEJsZW5kQ29sb3JSZWQoZmxvYXQgcmVk
LCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpOworCisgICAgdm9pZCAgICAg
ICAgIHNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGNsYXNzIERlcHRoU3RlbmNpbFN0YXRlKiBk
ZXB0aFN0ZW5jaWxTdGF0ZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0U3RlbmNpbFJlZmVyZW5j
ZVZhbHVlKHVpbnQzMl90IHJlZmVyZW5jZVZhbHVlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRT
dGVuY2lsRnJvbnRSZWZlcmVuY2VWYWx1ZSh1aW50MzJfdCBmcm9udFJlZmVyZW5jZVZhbHVlLCB1
aW50MzJfdCBiYWNrUmVmZXJlbmNlVmFsdWUpOworCisgICAgdm9pZCAgICAgICAgIHNldFZpc2li
aWxpdHlSZXN1bHRNb2RlKE1UTDo6VmlzaWJpbGl0eVJlc3VsdE1vZGUgbW9kZSwgTlM6OlVJbnRl
Z2VyIG9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0Q29sb3JTdG9yZUFjdGlvbihNVEw6
OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUludGVnZXIgY29sb3JBdHRhY2htZW50SW5k
ZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldERlcHRoU3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFj
dGlvbiBzdG9yZUFjdGlvbik7CisKKyAgICB2b2lkICAgICAgICAgc2V0U3RlbmNpbFN0b3JlQWN0
aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24pOworCisgICAgdm9pZCAgICAgICAgIHNl
dENvbG9yU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0
aW9uT3B0aW9ucywgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KTsKKworICAgIHZv
aWQgICAgICAgICBzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0
aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpOworCisgICAgdm9pZCAgICAgICAgIHNldFN0ZW5jaWxT
dG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRp
b25zKTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5
cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUludGVnZXIg
dmVydGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50KTsKKworICAgIHZvaWQgICAg
ICAgICBkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6
OlVJbnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUludGVnZXIgdmVydGV4Q291bnQpOworCisgICAg
dm9pZCAgICAgICAgIGRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJp
bWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4
VHlwZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4
QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCk7CisKKyAgICB2b2lkICAg
ICAgICAgZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVU
eXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBj
b25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJP
ZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZl
VHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdl
ciB2ZXJ0ZXhDb3VudCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBi
YXNlSW5zdGFuY2UpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdJbmRleGVkUHJpbWl0aXZlcyhN
VEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4Q291bnQs
IE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRleEJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VD
b3VudCwgTlM6OkludGVnZXIgYmFzZVZlcnRleCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7
CisKKyAgICB2b2lkICAgICAgICAgZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHBy
aW1pdGl2ZVR5cGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50
ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgZHJhd0luZGV4
ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBNVEw6OkluZGV4
VHlwZSBpbmRleFR5cGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50
ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRpcmVjdEJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAg
ICB0ZXh0dXJlQmFycmllcigpOworCisgICAgdm9pZCAgICAgICAgIHVwZGF0ZUZlbmNlKGNvbnN0
IGNsYXNzIEZlbmNlKiBmZW5jZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKTsKKworICAgIHZv
aWQgICAgICAgICB3YWl0Rm9yRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlLCBNVEw6OlJl
bmRlclN0YWdlcyBzdGFnZXMpOworCisgICAgdm9pZCAgICAgICAgIHNldFRlc3NlbGxhdGlvbkZh
Y3RvckJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRU
ZXNzZWxsYXRpb25GYWN0b3JTY2FsZShmbG9hdCBzY2FsZSk7CisKKyAgICB2b2lkICAgICAgICAg
ZHJhd1BhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBOUzo6
VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQsIGNvbnN0IGNsYXNz
IEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJP
ZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3Rh
bmNlKTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVy
T2ZQYXRjaENvbnRyb2xQb2ludHMsIGNvbnN0IGNsYXNzIEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZl
ciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisK
KyAgICB2b2lkICAgICAgICAgZHJhd0luZGV4ZWRQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJP
ZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRlZ2VyIHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdl
ciBwYXRjaENvdW50LCBjb25zdCBjbGFzcyBCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpV
SW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBjbGFzcyBCdWZmZXIqIGNvbnRy
b2xQb2ludEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgY29udHJvbFBvaW50SW5kZXhCdWZmZXJP
ZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3Rh
bmNlKTsKKworICAgIHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRlZ2Vy
IG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBjb25zdCBjbGFzcyBCdWZmZXIqIHBhdGNoSW5k
ZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBjbGFz
cyBCdWZmZXIqIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgY29udHJvbFBv
aW50SW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIs
IE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICBOUzo6VUludGVnZXIg
dGlsZVdpZHRoKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgdGlsZUhlaWdodCgpIGNvbnN0
OworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVCeXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6
OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRUaWxlQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIg
b2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVC
dWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRUaWxlQnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVycywgY29u
c3QgTlM6OlVJbnRlZ2VyKiBvZmZzZXRzLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAg
ICAgICAgIHNldFRpbGVUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpV
SW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZVRleHR1cmVzKE1UTDo6
VGV4dHVyZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRUaWxlU2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlU2FtcGxlclN0
YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRUaWxlU2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJT
dGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6
VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVTYW1wbGVyU3RhdGVz
KE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25zdCBmbG9hdCBsb2RNaW5DbGFtcHNb
XSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZpc2li
bGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3Qg
Y2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSBy
YW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGUoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgSW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdl
IHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJl
KGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJl
LCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIGRpc3BhdGNo
VGhyZWFkc1BlclRpbGUoTVRMOjpTaXplIHRocmVhZHNQZXJUaWxlKTsKKworICAgIHZvaWQgICAg
ICAgICBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6
VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAg
IHVzZVJlc291cmNlKGNvbnN0IGNsYXNzIFJlc291cmNlKiByZXNvdXJjZSwgTVRMOjpSZXNvdXJj
ZVVzYWdlIHVzYWdlKTsKKworICAgIHZvaWQgICAgICAgICB1c2VSZXNvdXJjZXMoTVRMOjpSZXNv
dXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZXNvdXJjZVVzYWdl
IHVzYWdlKTsKKworICAgIHZvaWQgICAgICAgICB1c2VSZXNvdXJjZShjb25zdCBjbGFzcyBSZXNv
dXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSwgTVRMOjpSZW5kZXJTdGFn
ZXMgc3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICB1c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJj
ZSogcmVzb3VyY2VzLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2Fn
ZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICB1c2VIZWFw
KGNvbnN0IGNsYXNzIEhlYXAqIGhlYXApOworCisgICAgdm9pZCAgICAgICAgIHVzZUhlYXBzKE1U
TDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAgIHZvaWQgICAgICAg
ICB1c2VIZWFwKGNvbnN0IGNsYXNzIEhlYXAqIGhlYXAsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdl
cyk7CisKKyAgICB2b2lkICAgICAgICAgdXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6
VUludGVnZXIgY291bnQsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcyk7CisKKyAgICB2b2lkICAg
ICAgICAgZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5k
QnVmZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5TOjpSYW5nZSBleGVjdXRpb25SYW5nZSk7
CisKKyAgICB2b2lkICAgICAgICAgZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3Mg
SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRidWZmZXIsIGNvbnN0IGNsYXNz
IEJ1ZmZlciogaW5kaXJlY3RSYW5nZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVy
T2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAgICBtZW1vcnlCYXJyaWVyKE1UTDo6QmFycmllclNj
b3BlIHNjb3BlLCBNVEw6OlJlbmRlclN0YWdlcyBhZnRlciwgTVRMOjpSZW5kZXJTdGFnZXMgYmVm
b3JlKTsKKworICAgIHZvaWQgICAgICAgICBtZW1vcnlCYXJyaWVyKE1UTDo6UmVzb3VyY2UqIHJl
c291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVuZGVyU3RhZ2VzIGFmdGVyLCBN
VEw6OlJlbmRlclN0YWdlcyBiZWZvcmUpOworCisgICAgdm9pZCAgICAgICAgIHNhbXBsZUNvdW50
ZXJzSW5CdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVy
LCBOUzo6VUludGVnZXIgc2FtcGxlSW5kZXgsIGJvb2wgYmFycmllcik7Cit9OworCit9CisKKy8v
IG1ldGhvZDogc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OlJl
bmRlclBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lU3RhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlbmRlclBpcGVsaW5lU3RhdGVf
KSwgcGlwZWxpbmVTdGF0ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4Qnl0ZXM6bGVuZ3Ro
OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNl
dFZlcnRleEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEJ5dGVzX2xlbmd0aF9hdEluZGV4XyksIGJ5dGVzLCBs
ZW5ndGgsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhCdWZmZXI6b2Zmc2V0OmF0
SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZl
cnRleEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0
LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBi
dWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEJ1ZmZlck9m
ZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpzZXRWZXJ0ZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2Vy
IGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJPZmZzZXRfYXRJbmRleF8pLCBvZmZzZXQsIGluZGV4KTsK
K30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJz
KE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0VmVydGV4QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5nZV8pLCBidWZm
ZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4VGV4dHVyZTph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRW
ZXJ0ZXhUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRWZXJ0ZXhUZXh0dXJlX2F0SW5kZXhfKSwgdGV4dHVyZSwgaW5kZXgpOworfQorCisv
LyBtZXRob2Q6IHNldFZlcnRleFRleHR1cmVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4VGV4dHVyZXMoTVRMOjpUZXh0dXJl
KiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFRleHR1cmVzX3dpdGhSYW5n
ZV8pLCB0ZXh0dXJlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFNhbXBsZXJT
dGF0ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpzZXRWZXJ0ZXhTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIs
IE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlX2F0SW5kZXhfKSwgc2Ft
cGxlciwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFNhbXBsZXJTdGF0ZXM6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRW
ZXJ0ZXhTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZXNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBy
YW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4U2FtcGxlclN0YXRlOmxvZE1pbkNsYW1w
OmxvZE1heENsYW1wOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFu
ZEVuY29kZXI6OnNldFZlcnRleFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6OlNhbXBsZXJTdGF0ZSog
c2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVn
ZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9h
dEluZGV4XyksIHNhbXBsZXIsIGxvZE1pbkNsYW1wLCBsb2RNYXhDbGFtcCwgaW5kZXgpOworfQor
CisvLyBtZXRob2Q6IHNldFZlcnRleFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1heENs
YW1wczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldFZlcnRleFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10s
IGNvbnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwg
TlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RN
YXhDbGFtcHNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBsb2RNaW5DbGFtcHMsIGxvZE1heENsYW1w
cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxl
OmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0
aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVy
dGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8pLCBmdW5jdGlvblRhYmxlLCBi
dWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFi
bGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6c2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6VmlzaWJs
ZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVy
dGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBmdW5jdGlvblRhYmxl
cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6c2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6Oklu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpV
SW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9h
dEJ1ZmZlckluZGV4XyksIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsK
K30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRo
QnVmZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
OnNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdl
IHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFu
Z2VfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9k
OiBzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QWNjZWxlcmF0aW9u
U3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25T
dHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4QWNjZWxlcmF0aW9u
U3RydWN0dXJlX2F0QnVmZmVySW5kZXhfKSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBidWZmZXJJ
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Vmlld3BvcnQ6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZpZXdwb3J0KE1UTDo6Vmlld3BvcnQgdmlld3Bv
cnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFZpZXdwb3J0XyksIHZpZXdwb3J0KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaWV3cG9y
dHM6Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNl
dFZpZXdwb3J0cyhjb25zdCBNVEw6OlZpZXdwb3J0KiB2aWV3cG9ydHMsIE5TOjpVSW50ZWdlciBj
b3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0Vmlld3BvcnRzX2NvdW50XyksIHZpZXdwb3J0cywgY291bnQpOworfQorCisvLyBt
ZXRob2Q6IHNldEZyb250RmFjaW5nV2luZGluZzoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJvbnRGYWNpbmdXaW5kaW5nKE1UTDo6V2luZGluZyBmcm9u
dEZhY2luZ1dpbmRpbmcpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEZyb250RmFjaW5nV2luZGluZ18pLCBmcm9udEZhY2luZ1dpbmRp
bmcpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEFtcGxpZmljYXRpb25Db3VudDp2aWV3TWFw
cGluZ3M6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZl
cnRleEFtcGxpZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgY291bnQsIGNvbnN0IE1UTDo6VmVy
dGV4QW1wbGlmaWNhdGlvblZpZXdNYXBwaW5nKiB2aWV3TWFwcGluZ3MpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEFtcGxp
ZmljYXRpb25Db3VudF92aWV3TWFwcGluZ3NfKSwgY291bnQsIHZpZXdNYXBwaW5ncyk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0Q3VsbE1vZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnNldEN1bGxNb2RlKE1UTDo6Q3VsbE1vZGUgY3VsbE1vZGUpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEN1bGxN
b2RlXyksIGN1bGxNb2RlKTsKK30KKworLy8gbWV0aG9kOiBzZXREZXB0aENsaXBNb2RlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aENsaXBNb2Rl
KE1UTDo6RGVwdGhDbGlwTW9kZSBkZXB0aENsaXBNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aENsaXBNb2RlXyksIGRl
cHRoQ2xpcE1vZGUpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoQmlhczpzbG9wZVNjYWxlOmNs
YW1wOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0
aEJpYXMoZmxvYXQgZGVwdGhCaWFzLCBmbG9hdCBzbG9wZVNjYWxlLCBmbG9hdCBjbGFtcCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RGVwdGhCaWFzX3Nsb3BlU2NhbGVfY2xhbXBfKSwgZGVwdGhCaWFzLCBzbG9wZVNjYWxlLCBjbGFt
cCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2Npc3NvclJlY3Q6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFNjaXNzb3JSZWN0KE1UTDo6U2Npc3NvclJlY3Qg
cmVjdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0U2Npc3NvclJlY3RfKSwgcmVjdCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2Npc3Nv
clJlY3RzOmNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpzZXRTY2lzc29yUmVjdHMoY29uc3QgTVRMOjpTY2lzc29yUmVjdCogc2Npc3NvclJlY3RzLCBO
Uzo6VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFNjaXNzb3JSZWN0c19jb3VudF8pLCBzY2lzc29yUmVjdHMs
IGNvdW50KTsKK30KKworLy8gbWV0aG9kOiBzZXRUcmlhbmdsZUZpbGxNb2RlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUcmlhbmdsZUZpbGxNb2RlKE1U
TDo6VHJpYW5nbGVGaWxsTW9kZSBmaWxsTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHJpYW5nbGVGaWxsTW9kZV8pLCBmaWxs
TW9kZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRCeXRlczpsZW5ndGg6YXRJbmRleDoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRC
eXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2Vy
IGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRGcmFnbWVudEJ5dGVzX2xlbmd0aF9hdEluZGV4XyksIGJ5dGVzLCBsZW5ndGgs
IGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEJ1ZmZlcjpvZmZzZXQ6YXRJbmRl
eDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21l
bnRCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBi
dWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50QnVmZmVy
T2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldEZyYWdtZW50QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50
ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0RnJhZ21lbnRCdWZmZXJPZmZzZXRfYXRJbmRleF8pLCBvZmZzZXQsIGlu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFu
Z2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdt
ZW50QnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zm
c2V0c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50QnVmZmVyc19vZmZzZXRzX3dpdGhS
YW5nZV8pLCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJh
Z21lbnRUZXh0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFu
ZEVuY29kZXI6OnNldEZyYWdtZW50VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUs
IE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRUZXh0dXJlX2F0SW5kZXhfKSwgdGV4dHVy
ZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50VGV4dHVyZXM6d2l0aFJhbmdl
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVu
dFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRG
cmFnbWVudFRleHR1cmVzX3dpdGhSYW5nZV8pLCB0ZXh0dXJlcywgcmFuZ2UpOworfQorCisvLyBt
ZXRob2Q6IHNldEZyYWdtZW50U2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50U2FtcGxlclN0YXRlKGNvbnN0
IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdt
ZW50U2FtcGxlclN0YXRlX2F0SW5kZXhfKSwgc2FtcGxlciwgaW5kZXgpOworfQorCisvLyBtZXRo
b2Q6IHNldEZyYWdtZW50U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50U2FtcGxlclN0YXRlcyhNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFNh
bXBsZXJTdGF0ZXNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRl
eDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21l
bnRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIGZsb2F0IGxv
ZE1pbkNsYW1wLCBmbG9hdCBsb2RNYXhDbGFtcCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFn
bWVudFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdEluZGV4XyksIHNhbXBs
ZXIsIGxvZE1pbkNsYW1wLCBsb2RNYXhDbGFtcCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNl
dEZyYWdtZW50U2FtcGxlclN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5n
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21l
bnRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25zdCBmbG9h
dCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpSYW5nZSBy
YW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNf
d2l0aFJhbmdlXyksIHNhbXBsZXJzLCBsb2RNaW5DbGFtcHMsIGxvZE1heENsYW1wcywgcmFuZ2Up
OworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZm
ZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRh
YmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50
VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8pLCBmdW5jdGlvblRhYmxlLCBidWZm
ZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJs
ZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRF
bmNvZGVyOjpzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OlZpc2li
bGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZy
YWdtZW50VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBmdW5jdGlvblRh
YmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3Qg
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
LCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIGJ1ZmZl
ckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcyhjb25zdCBN
VEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVz
W10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
c193aXRoQnVmZmVyUmFuZ2VfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsK
K30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZl
ckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRG
cmFnbWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dEZyYWdtZW50QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfKSwgYWNjZWxlcmF0
aW9uU3RydWN0dXJlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QmxlbmRDb2xv
clJlZDpncmVlbjpibHVlOmFscGhhOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRCbGVuZENvbG9yUmVkKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0
IGJsdWUsIGZsb2F0IGFscGhhKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRCbGVuZENvbG9yUmVkX2dyZWVuX2JsdWVfYWxwaGFfKSwg
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoU3RlbmNp
bFN0YXRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRE
ZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBNVEw6OkRlcHRoU3RlbmNpbFN0YXRlKiBkZXB0aFN0ZW5j
aWxTdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0RGVwdGhTdGVuY2lsU3RhdGVfKSwgZGVwdGhTdGVuY2lsU3RhdGUpOworfQor
CisvLyBtZXRob2Q6IHNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1ZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0U3RlbmNpbFJlZmVyZW5jZVZhbHVlKHVpbnQz
Ml90IHJlZmVyZW5jZVZhbHVlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsUmVmZXJlbmNlVmFsdWVfKSwgcmVmZXJlbmNl
VmFsdWUpOworfQorCisvLyBtZXRob2Q6IHNldFN0ZW5jaWxGcm9udFJlZmVyZW5jZVZhbHVlOmJh
Y2tSZWZlcmVuY2VWYWx1ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5j
b2Rlcjo6c2V0U3RlbmNpbEZyb250UmVmZXJlbmNlVmFsdWUodWludDMyX3QgZnJvbnRSZWZlcmVu
Y2VWYWx1ZSwgdWludDMyX3QgYmFja1JlZmVyZW5jZVZhbHVlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsRnJvbnRSZWZl
cmVuY2VWYWx1ZV9iYWNrUmVmZXJlbmNlVmFsdWVfKSwgZnJvbnRSZWZlcmVuY2VWYWx1ZSwgYmFj
a1JlZmVyZW5jZVZhbHVlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmlsaXR5UmVzdWx0TW9k
ZTpvZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNl
dFZpc2liaWxpdHlSZXN1bHRNb2RlKE1UTDo6VmlzaWJpbGl0eVJlc3VsdE1vZGUgbW9kZSwgTlM6
OlVJbnRlZ2VyIG9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJpbGl0eVJlc3VsdE1vZGVfb2Zmc2V0XyksIG1vZGUs
IG9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Q29sb3JTdG9yZUFjdGlvbjphdEluZGV4Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRDb2xvclN0b3Jl
QWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24sIE5TOjpVSW50ZWdlciBjb2xvckF0
dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0Q29sb3JTdG9yZUFjdGlvbl9hdEluZGV4XyksIHN0b3JlQWN0aW9u
LCBjb2xvckF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RGVwdGhTdG9yZUFj
dGlvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RGVw
dGhTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFN0b3Jl
QWN0aW9uXyksIHN0b3JlQWN0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzZXRTdGVuY2lsU3RvcmVB
Y3Rpb246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFN0
ZW5jaWxTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2ls
U3RvcmVBY3Rpb25fKSwgc3RvcmVBY3Rpb24pOworfQorCisvLyBtZXRob2Q6IHNldENvbG9yU3Rv
cmVBY3Rpb25PcHRpb25zOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25P
cHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucywgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudElu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9uc19hdEluZGV4XyksIHN0b3JlQWN0aW9uT3B0
aW9ucywgY29sb3JBdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoU3Rv
cmVBY3Rpb25PcHRpb25zOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBz
dG9yZUFjdGlvbk9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoU3RvcmVBY3Rpb25PcHRpb25zXyksIHN0b3JlQWN0
aW9uT3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9u
czoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0U3RlbmNp
bFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9w
dGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnNfKSwgc3RvcmVBY3Rpb25PcHRpb25z
KTsKK30KKworLy8gbWV0aG9kOiBkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3Vu
dDppbnN0YW5jZUNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6
OlVJbnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUludGVnZXIgdmVydGV4Q291bnQsIE5TOjpVSW50
ZWdlciBpbnN0YW5jZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0ZXhDb3Vu
dF9pbnN0YW5jZUNvdW50XyksIHByaW1pdGl2ZVR5cGUsIHZlcnRleFN0YXJ0LCB2ZXJ0ZXhDb3Vu
dCwgaW5zdGFuY2VDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd1ByaW1pdGl2ZXM6dmVydGV4
U3RhcnQ6dmVydGV4Q291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OmRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBO
Uzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd1By
aW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVydGV4Q291bnRfKSwgcHJpbWl0aXZlVHlwZSwgdmVydGV4
U3RhcnQsIHZlcnRleENvdW50KTsKK30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFByaW1pdGl2
ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6aW5z
dGFuY2VDb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBO
Uzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBN
VEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRleENv
dW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50
XyksIHByaW1pdGl2ZVR5cGUsIGluZGV4Q291bnQsIGluZGV4VHlwZSwgaW5kZXhCdWZmZXIsIGlu
ZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50KTsKK30KKworLy8gbWV0aG9kOiBkcmF3SW5k
ZXhlZFByaW1pdGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZm
ZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRy
YXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6
OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgTVRM
OjpCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRy
YXdJbmRleGVkUHJpbWl0aXZlc19pbmRleENvdW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRl
eEJ1ZmZlck9mZnNldF8pLCBwcmltaXRpdmVUeXBlLCBpbmRleENvdW50LCBpbmRleFR5cGUsIGlu
ZGV4QnVmZmVyLCBpbmRleEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd1ByaW1p
dGl2ZXM6dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQcmltaXRp
dmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVydGV4
U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291
bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0
X3ZlcnRleENvdW50X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlXyksIHByaW1pdGl2ZVR5cGUs
IHZlcnRleFN0YXJ0LCB2ZXJ0ZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgYmFzZUluc3RhbmNlKTsK
K30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhDb3VudDppbmRleFR5
cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlVmVydGV4
OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBl
LCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25z
dCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpJbnRlZ2VyIGJhc2VWZXJ0ZXgsIE5T
OjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRleENvdW50
X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jh
c2VWZXJ0ZXhfYmFzZUluc3RhbmNlXyksIHByaW1pdGl2ZVR5cGUsIGluZGV4Q291bnQsIGluZGV4
VHlwZSwgaW5kZXhCdWZmZXIsIGluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNl
VmVydGV4LCBiYXNlSW5zdGFuY2UpOworfQorCisvLyBtZXRob2Q6IGRyYXdQcmltaXRpdmVzOmlu
ZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUg
cHJpbWl0aXZlVHlwZSwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUlu
dGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQcmltaXRpdmVzX2luZGlyZWN0QnVmZmVy
X2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIHByaW1pdGl2ZVR5cGUsIGluZGlyZWN0QnVmZmVyLCBp
bmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4ZWRQcmltaXRp
dmVzOmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZl
cjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmlt
aXRpdmVUeXBlLCBNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBp
bmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1
ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZHJhd0luZGV4ZWRQcmltaXRpdmVzX2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9m
ZnNldF9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8pLCBwcmltaXRpdmVUeXBl
LCBpbmRleFR5cGUsIGluZGV4QnVmZmVyLCBpbmRleEJ1ZmZlck9mZnNldCwgaW5kaXJlY3RCdWZm
ZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiB0ZXh0dXJlQmFycmll
cgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp0ZXh0dXJlQmFy
cmllcigpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHRleHR1cmVCYXJyaWVyKSk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlRmVuY2U6YWZ0
ZXJTdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVw
ZGF0ZUZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFn
ZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHVwZGF0ZUZlbmNlX2FmdGVyU3RhZ2VzXyksIGZlbmNlLCBzdGFnZXMpOworfQorCisvLyBt
ZXRob2Q6IHdhaXRGb3JGZW5jZTpiZWZvcmVTdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OndhaXRGb3JGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5j
ZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3YWl0Rm9yRmVuY2VfYmVmb3JlU3RhZ2VzXyks
IGZlbmNlLCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6IHNldFRlc3NlbGxhdGlvbkZhY3RvckJ1
ZmZlcjpvZmZzZXQ6aW5zdGFuY2VTdHJpZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnNldFRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcihjb25zdCBNVEw6OkJ1
ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VT
dHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcl9vZmZzZXRfaW5zdGFuY2VTdHJpZGVf
KSwgYnVmZmVyLCBvZmZzZXQsIGluc3RhbmNlU3RyaWRlKTsKK30KKworLy8gbWV0aG9kOiBzZXRU
ZXNzZWxsYXRpb25GYWN0b3JTY2FsZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6c2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGUoZmxvYXQgc2NhbGUpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRl
c3NlbGxhdGlvbkZhY3RvclNjYWxlXyksIHNjYWxlKTsKK30KKworLy8gbWV0aG9kOiBkcmF3UGF0
Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVm
ZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVy
T2ZQYXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVn
ZXIgcGF0Y2hDb3VudCwgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpV
SW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3Vu
dCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd1BhdGNoZXNfcGF0Y2hTdGFydF9wYXRj
aENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNv
dW50X2Jhc2VJbnN0YW5jZV8pLCBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgcGF0Y2hTdGFy
dCwgcGF0Y2hDb3VudCwgcGF0Y2hJbmRleEJ1ZmZlciwgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwg
aW5zdGFuY2VDb3VudCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8gbWV0aG9kOiBkcmF3UGF0Y2hl
czpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6
aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFu
ZEVuY29kZXI6OmRyYXdQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBv
aW50cywgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBw
YXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kaXJlY3RCdWZmZXIs
IE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd1BhdGNoZXNfcGF0Y2hJbmRl
eEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVm
ZmVyT2Zmc2V0XyksIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBwYXRjaEluZGV4QnVmZmVy
LCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBpbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJP
ZmZzZXQpOworfQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUGF0Y2hlczpwYXRjaFN0YXJ0OnBh
dGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zmc2V0OmNvbnRyb2xQ
b2ludEluZGV4QnVmZmVyOmNvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291
bnQ6YmFzZUluc3RhbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9s
UG9pbnRzLCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQs
IGNvbnN0IE1UTDo6QnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJ
bmRleEJ1ZmZlck9mZnNldCwgY29uc3QgTVRMOjpCdWZmZXIqIGNvbnRyb2xQb2ludEluZGV4QnVm
ZmVyLCBOUzo6VUludGVnZXIgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50
ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhl
ZFBhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRl
eEJ1ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9jb250cm9sUG9pbnRJbmRleEJ1
ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV8pLCBudW1iZXJPZlBhdGNoQ29u
dHJvbFBvaW50cywgcGF0Y2hTdGFydCwgcGF0Y2hDb3VudCwgcGF0Y2hJbmRleEJ1ZmZlciwgcGF0
Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29udHJvbFBvaW50SW5kZXhCdWZmZXIsIGNvbnRyb2xQb2lu
dEluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlSW5zdGFuY2UpOworfQorCisv
LyBtZXRob2Q6IGRyYXdJbmRleGVkUGF0Y2hlczpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhC
dWZmZXJPZmZzZXQ6Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZm
ZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdJbmRleGVkUGF0Y2hlcyhOUzo6
VUludGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIGNvbnN0IE1UTDo6QnVmZmVyKiBw
YXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29u
c3QgTVRMOjpCdWZmZXIqIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgY29u
dHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFBhdGNo
ZXNfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQb2ludElu
ZGV4QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVyX2lu
ZGlyZWN0QnVmZmVyT2Zmc2V0XyksIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBwYXRjaElu
ZGV4QnVmZmVyLCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb250cm9sUG9pbnRJbmRleEJ1ZmZl
ciwgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGluZGlyZWN0QnVmZmVyLCBpbmRpcmVj
dEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiB0aWxlV2lkdGgKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp0aWxlV2lkdGgoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh0aWxlV2lkdGgpKTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVIZWln
aHQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp0
aWxlSGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUhlaWdodCkpOworfQorCisvLyBt
ZXRob2Q6IHNldFRpbGVCeXRlczpsZW5ndGg6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZUJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBO
Uzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVCeXRlc19sZW5n
dGhfYXRJbmRleF8pLCBieXRlcywgbGVuZ3RoLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
VGlsZUJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0VGlsZUJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBO
Uzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVCdWZmZXJfb2Zm
c2V0X2F0SW5kZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBz
ZXRUaWxlQnVmZmVyT2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnNldFRpbGVCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlQnVmZmVyT2Zmc2V0X2F0SW5kZXhfKSwgb2Zmc2V0
LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZUJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFu
Z2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVC
dWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzLCBjb25zdCBOUzo6VUludGVnZXIqIG9mZnNldHMs
IE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfKSwgYnVm
ZmVycywgb2Zmc2V0cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVUZXh0dXJlOmF0
SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRp
bGVUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRUaWxlVGV4dHVyZV9hdEluZGV4XyksIHRleHR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0
aG9kOiBzZXRUaWxlVGV4dHVyZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlVGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJl
c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVUZXh0dXJlc193aXRoUmFuZ2VfKSwgdGV4dHVy
ZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlU2FtcGxlclN0YXRlOmF0SW5kZXg6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVTYW1w
bGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdlciBp
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9hdEluZGV4XyksIHNhbXBsZXIsIGluZGV4KTsKK30K
KworLy8gbWV0aG9kOiBzZXRUaWxlU2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVTYW1wbGVyU3RhdGVzKE1U
TDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVTYW1w
bGVyU3RhdGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6
IHNldFRpbGVTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZVNhbXBsZXJT
dGF0ZShjb25zdCBNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAs
IGZsb2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVTYW1wbGVyU3Rh
dGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRleF8pLCBzYW1wbGVyLCBsb2RNaW5DbGFt
cCwgbG9kTWF4Q2xhbXAsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlU2FtcGxlclN0
YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZVNhbXBsZXJTdGF0ZXMoTVRMOjpT
YW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNvbnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25z
dCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlU2FtcGxlclN0
YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgbG9k
TWluQ2xhbXBzLCBsb2RNYXhDbGFtcHMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxl
VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0
IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBi
dWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwg
ZnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVWaXNp
YmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlVmlzaWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0
IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSBy
YW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgZnVu
Y3Rpb25UYWJsZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlSW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBN
VEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUs
IE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVfYXRCdWZmZXJJbmRleF8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBidWZmZXJJbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzOndp
dGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6c2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdl
IHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdl
XyksIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDog
c2V0VGlsZUFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0
dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1
cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZV9hdEJ1ZmZlckluZGV4XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgYnVmZmVySW5kZXgpOwor
fQorCisvLyBtZXRob2Q6IGRpc3BhdGNoVGhyZWFkc1BlclRpbGU6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNoVGhyZWFkc1BlclRpbGUoTVRMOjpT
aXplIHRocmVhZHNQZXJUaWxlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChkaXNwYXRjaFRocmVhZHNQZXJUaWxlXyksIHRocmVhZHNQZXJU
aWxlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aDpvZmZzZXQ6
YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2Vy
IG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aF9v
ZmZzZXRfYXRJbmRleF8pLCBsZW5ndGgsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6
IHVzZVJlc291cmNlOnVzYWdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRF
bmNvZGVyOjp1c2VSZXNvdXJjZShjb25zdCBNVEw6OlJlc291cmNlKiByZXNvdXJjZSwgTVRMOjpS
ZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZV91c2FnZV8pLCByZXNvdXJjZSwgdXNhZ2Up
OworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlczpjb3VudDp1c2FnZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3VyY2VzKE1UTDo6UmVzb3Vy
Y2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3VyY2VVc2FnZSB1
c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodXNlUmVzb3VyY2VzX2NvdW50X3VzYWdlXyksIHJlc291cmNlcywgY291bnQsIHVzYWdl
KTsKK30KKworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZTp1c2FnZTpzdGFnZXM6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlKGNvbnN0IE1UTDo6
UmVzb3VyY2UqIHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UsIE1UTDo6UmVuZGVy
U3RhZ2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodXNlUmVzb3VyY2VfdXNhZ2Vfc3RhZ2VzXyksIHJlc291cmNlLCB1c2Fn
ZSwgc3RhZ2VzKTsKK30KKworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZXM6Y291bnQ6dXNhZ2U6c3Rh
Z2VzOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1c2VSZXNv
dXJjZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6
UmVzb3VyY2VVc2FnZSB1c2FnZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJj
ZXNfY291bnRfdXNhZ2Vfc3RhZ2VzXyksIHJlc291cmNlcywgY291bnQsIHVzYWdlLCBzdGFnZXMp
OworfQorCisvLyBtZXRob2Q6IHVzZUhlYXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnVzZUhlYXAoY29uc3QgTVRMOjpIZWFwKiBoZWFwKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwXyks
IGhlYXApOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXBzOmNvdW50OgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwcyhNVEw6OkhlYXAqIGhlYXBzW10s
IE5TOjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodXNlSGVhcHNfY291bnRfKSwgaGVhcHMsIGNvdW50KTsKK30K
KworLy8gbWV0aG9kOiB1c2VIZWFwOnN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcChjb25zdCBNVEw6OkhlYXAqIGhlYXAsIE1UTDo6UmVu
ZGVyU3RhZ2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwodXNlSGVhcF9zdGFnZXNfKSwgaGVhcCwgc3RhZ2VzKTsKK30KKwor
Ly8gbWV0aG9kOiB1c2VIZWFwczpjb3VudDpzdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVzZUhlYXBzKE1UTDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJ
bnRlZ2VyIGNvdW50LCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBzX2NvdW50X3N0
YWdlc18pLCBoZWFwcywgY291bnQsIHN0YWdlcyk7Cit9CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNv
bW1hbmRzSW5CdWZmZXI6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0
Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6UmFuZ2UgZXhlY3V0aW9u
UmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyX3dpdGhSYW5nZV8pLCBpbmRpcmVjdENvbW1h
bmRCdWZmZXIsIGV4ZWN1dGlvblJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBleGVjdXRlQ29tbWFu
ZHNJbkJ1ZmZlcjppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZXhlY3V0ZUNvbW1hbmRzSW5CdWZm
ZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZGJ1ZmZl
ciwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGlyZWN0UmFuZ2VCdWZmZXIsIE5TOjpVSW50ZWdlciBp
bmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXJfaW5kaXJlY3RCdWZm
ZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgaW5kaXJlY3RDb21tYW5kYnVmZmVyLCBpbmRpcmVj
dFJhbmdlQnVmZmVyLCBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogbWVt
b3J5QmFycmllcldpdGhTY29wZTphZnRlclN0YWdlczpiZWZvcmVTdGFnZXM6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6Om1lbW9yeUJhcnJpZXIoTVRMOjpCYXJy
aWVyU2NvcGUgc2NvcGUsIE1UTDo6UmVuZGVyU3RhZ2VzIGFmdGVyLCBNVEw6OlJlbmRlclN0YWdl
cyBiZWZvcmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG1lbW9yeUJhcnJpZXJXaXRoU2NvcGVfYWZ0ZXJTdGFnZXNfYmVmb3JlU3RhZ2Vz
XyksIHNjb3BlLCBhZnRlciwgYmVmb3JlKTsKK30KKworLy8gbWV0aG9kOiBtZW1vcnlCYXJyaWVy
V2l0aFJlc291cmNlczpjb3VudDphZnRlclN0YWdlczpiZWZvcmVTdGFnZXM6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6Om1lbW9yeUJhcnJpZXIoTVRMOjpSZXNv
dXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZW5kZXJTdGFnZXMg
YWZ0ZXIsIE1UTDo6UmVuZGVyU3RhZ2VzIGJlZm9yZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtb3J5QmFycmllcldpdGhSZXNvdXJj
ZXNfY291bnRfYWZ0ZXJTdGFnZXNfYmVmb3JlU3RhZ2VzXyksIHJlc291cmNlcywgY291bnQsIGFm
dGVyLCBiZWZvcmUpOworfQorCisvLyBtZXRob2Q6IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRT
YW1wbGVJbmRleDp3aXRoQmFycmllcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6c2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1w
bGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUluZGV4LCBib29sIGJh
cnJpZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNhbXBsZUNvdW50ZXJzSW5CdWZmZXJfYXRTYW1wbGVJbmRleF93aXRoQmFycmllcl8p
LCBzYW1wbGVCdWZmZXIsIHNhbXBsZUluZGV4LCBiYXJyaWVyKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQYXNzLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQYXNzLmhwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NTc1MWVhYWU1NWUwZDg0YzkwM2YzMzcxZDI1YjEyOTkyNTM5N2RjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRl
clBhc3MuaHBwCkBAIC0wLDAgKzEsNzg2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExSZW5kZXJQYXNzLmhwcAorLy8KKy8v
IENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1U
TERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAi
TVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgor
CisjaW5jbHVkZSAiTVRMUmVuZGVyUGFzcy5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExf
RU5VTShOUzo6VUludGVnZXIsIExvYWRBY3Rpb24pIHsKKyAgICBMb2FkQWN0aW9uRG9udENhcmUg
PSAwLAorICAgIExvYWRBY3Rpb25Mb2FkID0gMSwKKyAgICBMb2FkQWN0aW9uQ2xlYXIgPSAyLAor
fTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU3RvcmVBY3Rpb24pIHsKKyAgICBTdG9yZUFj
dGlvbkRvbnRDYXJlID0gMCwKKyAgICBTdG9yZUFjdGlvblN0b3JlID0gMSwKKyAgICBTdG9yZUFj
dGlvbk11bHRpc2FtcGxlUmVzb2x2ZSA9IDIsCisgICAgU3RvcmVBY3Rpb25TdG9yZUFuZE11bHRp
c2FtcGxlUmVzb2x2ZSA9IDMsCisgICAgU3RvcmVBY3Rpb25Vbmtub3duID0gNCwKKyAgICBTdG9y
ZUFjdGlvbkN1c3RvbVNhbXBsZURlcHRoU3RvcmUgPSA1LAorfTsKKworX01UTF9PUFRJT05TKE5T
OjpVSW50ZWdlciwgU3RvcmVBY3Rpb25PcHRpb25zKSB7CisgICAgU3RvcmVBY3Rpb25PcHRpb25O
b25lID0gMCwKKyAgICBTdG9yZUFjdGlvbk9wdGlvblZhbGlkTWFzayA9IDEsCisgICAgU3RvcmVB
Y3Rpb25PcHRpb25DdXN0b21TYW1wbGVQb3NpdGlvbnMgPSAxLAorfTsKKworc3RydWN0IENsZWFy
Q29sb3IKK3sKKyAgICBzdGF0aWMgQ2xlYXJDb2xvciBNYWtlKGRvdWJsZSByZWQsIGRvdWJsZSBn
cmVlbiwgZG91YmxlIGJsdWUsIGRvdWJsZSBhbHBoYSk7CisKKyAgICBDbGVhckNvbG9yKCkgPSBk
ZWZhdWx0OworCisgICAgQ2xlYXJDb2xvcihkb3VibGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJs
ZSBibHVlLCBkb3VibGUgYWxwaGEpOworCisgICAgZG91YmxlIHJlZDsKKyAgICBkb3VibGUgZ3Jl
ZW47CisgICAgZG91YmxlIGJsdWU7CisgICAgZG91YmxlIGFscGhhOworfSBfTVRMX1BBQ0tFRDsK
KworY2xhc3MgUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAg
Y2xhc3MgUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisg
ICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExldmVsKE5T
OjpVSW50ZWdlciBsZXZlbCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzbGljZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFNsaWNlKE5TOjpVSW50ZWdlciBzbGljZSk7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFBsYW5l
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0RGVwdGhQbGFuZShOUzo6VUludGVnZXIgZGVwdGhQbGFuZSk7CisKKyAgICBjbGFzcyBU
ZXh0dXJlKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlVGV4dHVyZSgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFJlc29sdmVUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHJlc29sdmVUZXh0dXJlKTsKKwor
ICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVM
ZXZlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFJlc29sdmVMZXZlbChOUzo6VUludGVnZXIgcmVzb2x2ZUxldmVsKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVTbGlj
ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFJlc29sdmVTbGljZShOUzo6VUludGVnZXIgcmVzb2x2ZVNsaWNlKTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVEZXB0aFBs
YW5lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0UmVzb2x2ZURlcHRoUGxhbmUoTlM6OlVJbnRlZ2VyIHJlc29sdmVEZXB0aFBsYW5l
KTsKKworICAgIE1UTDo6TG9hZEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRBY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRMb2FkQWN0aW9uKE1UTDo6TG9hZEFjdGlvbiBsb2FkQWN0aW9uKTsKKwor
ICAgIE1UTDo6U3RvcmVBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlQWN0
aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbik7CisKKyAg
ICBNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICBzdG9yZUFjdGlv
bk9wdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMg
c3RvcmVBY3Rpb25PcHRpb25zKTsKK307CisKK2NsYXNzIFJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6Q2xlYXJDb2xvciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xlYXJDb2xvcigpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q2xlYXJDb2xvcihNVEw6
OkNsZWFyQ29sb3IgY2xlYXJDb2xvcik7Cit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBN
dWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlcikgeworICAgIE11bHRpc2FtcGxlRGVwdGhSZXNv
bHZlRmlsdGVyU2FtcGxlMCA9IDAsCisgICAgTXVsdGlzYW1wbGVEZXB0aFJlc29sdmVGaWx0ZXJN
aW4gPSAxLAorICAgIE11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyTWF4ID0gMiwKK307CisK
K2NsYXNzIFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIE5TOjpD
b3B5aW5nPFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLCBNVEw6OlJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAg
IGRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJE
ZXB0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0Q2xlYXJEZXB0aChkb3VibGUgY2xlYXJEZXB0aCk7CisKKyAgICBNVEw6
Ok11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyICAgICAgICAgICAgICAgIGRlcHRoUmVzb2x2
ZUZpbHRlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0RGVwdGhSZXNvbHZlRmlsdGVyKE1UTDo6TXVsdGlzYW1wbGVEZXB0
aFJlc29sdmVGaWx0ZXIgZGVwdGhSZXNvbHZlRmlsdGVyKTsKK307CisKK19NVExfRU5VTShOUzo6
VUludGVnZXIsIE11bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXIpIHsKKyAgICBNdWx0aXNh
bXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyU2FtcGxlMCA9IDAsCisgICAgTXVsdGlzYW1wbGVTdGVu
Y2lsUmVzb2x2ZUZpbHRlckRlcHRoUmVzb2x2ZWRTYW1wbGUgPSAxLAorfTsKKworY2xhc3MgUmVu
ZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxS
ZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yLCBNVEw6OlJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFz
c1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRl
clBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICB1
aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJT
dGVuY2lsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldENsZWFyU3RlbmNpbCh1aW50MzJfdCBjbGVhclN0ZW5jaWwpOwor
CisgICAgTVRMOjpNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyICAgICAgICAgICAgICAg
IHN0ZW5jaWxSZXNvbHZlRmlsdGVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZW5jaWxSZXNvbHZlRmlsdGVyKE1U
TDo6TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZpbHRlciBzdGVuY2lsUmVzb2x2ZUZpbHRlcik7
Cit9OworCitjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5IDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNz
IFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3Qo
TlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNz
IFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUlu
dGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsK
KworICAgIGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciog
ICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbXBs
ZUJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRPZlZl
cnRleFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuZE9mVmVydGV4
U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mVmVydGV4U2FtcGxlSW5kZXgpOworCisgICAg
TlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydE9mRnJhZ21l
bnRTYW1wbGVJbmRleChOUzo6VUludGVnZXIgc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5kT2ZGcmFn
bWVudFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgpOwor
fTsKKworY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAg
IGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAg
ICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJ
bmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBSZW5kZXJQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRh
Y2htZW50SW5kZXgpOworfTsKKworY2xhc3MgUmVuZGVyUGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMg
TlM6OkNvcHlpbmc8UmVuZGVyUGFzc0Rlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNsYXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGFsbG9jKCk7
CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yKiAg
ICAgICAgICAgICAgICAgICAgIHJlbmRlclBhc3NEZXNjcmlwdG9yKCk7CisKKyAgICBjbGFzcyBS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAgICAgICAgY29sb3JBdHRh
Y2htZW50cygpIGNvbnN0OworCisgICAgY2xhc3MgUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IqICAgICAgICAgICAgIGRlcHRoQXR0YWNobWVudCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0
aEF0dGFjaG1lbnQoY29uc3QgY2xhc3MgUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IqIGRlcHRoQXR0YWNobWVudCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzU3RlbmNpbEF0dGFj
aG1lbnREZXNjcmlwdG9yKiAgICAgICAgICAgc3RlbmNpbEF0dGFjaG1lbnQoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0U3RlbmNpbEF0dGFjaG1lbnQoY29uc3QgY2xhc3MgUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2ht
ZW50RGVzY3JpcHRvciogc3RlbmNpbEF0dGFjaG1lbnQpOworCisgICAgY2xhc3MgQnVmZmVyKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlSZXN1bHRC
dWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcihjb25zdCBjbGFzcyBC
dWZmZXIqIHZpc2liaWxpdHlSZXN1bHRCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRhcmdldEFycmF5TGVu
Z3RoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdlciBy
ZW5kZXJUYXJnZXRBcnJheUxlbmd0aCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRJbWFnZWJsb2NrU2FtcGxlTGVuZ3RoKE5TOjpVSW50ZWdlciBpbWFnZWJsb2Nr
U2FtcGxlTGVuZ3RoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJlYWRncm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIgdGhyZWFkZ3JvdXBNZW1vcnlM
ZW5ndGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbGVXaWR0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaWxlV2lkdGgoTlM6OlVJbnRl
Z2VyIHRpbGVXaWR0aCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGlsZUhlaWdodCgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaWxlSGVpZ2h0
KE5TOjpVSW50ZWdlciB0aWxlSGVpZ2h0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RGVmYXVsdFJhc3RlclNhbXBsZUNvdW50KE5TOjpVSW50ZWdlciBkZWZh
dWx0UmFzdGVyU2FtcGxlQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRhcmdldFdpZHRoKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFJlbmRlclRhcmdldFdpZHRoKE5TOjpVSW50ZWdlciByZW5kZXJUYXJnZXRXaWR0aCk7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVuZGVyVGFyZ2V0SGVpZ2h0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlbmRlclRhcmdldEhlaWdodChO
Uzo6VUludGVnZXIgcmVuZGVyVGFyZ2V0SGVpZ2h0KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVQb3NpdGlvbnMo
Y29uc3QgTVRMOjpTYW1wbGVQb3NpdGlvbiogcG9zaXRpb25zLCBOUzo6VUludGVnZXIgY291bnQp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdldFNhbXBsZVBvc2l0aW9ucyhNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMs
IE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcCog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyaXphdGlvblJhdGVNYXAoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0UmFzdGVyaXphdGlvblJhdGVNYXAoY29uc3QgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVN
YXAqIHJhc3Rlcml6YXRpb25SYXRlTWFwKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBzYW1wbGVCdWZmZXJBdHRhY2htZW50cygp
IGNvbnN0OworfTsKKworfQorCitfTVRMX0lOTElORSBNVEw6OkNsZWFyQ29sb3IgTVRMOjpDbGVh
ckNvbG9yOjpNYWtlKGRvdWJsZSByZWQsIGRvdWJsZSBncmVlbiwgZG91YmxlIGJsdWUsIGRvdWJs
ZSBhbHBoYSkKK3sKKyAgICByZXR1cm4gQ2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBo
YSk7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6Q2xlYXJDb2xvcjo6Q2xlYXJDb2xvcihkb3VibGUg
X3JlZCwgZG91YmxlIF9ncmVlbiwgZG91YmxlIF9ibHVlLCBkb3VibGUgX2FscGhhKQorICAgIDog
cmVkKF9yZWQpCisgICAgLCBncmVlbihfZ3JlZW4pCisgICAgLCBibHVlKF9ibHVlKQorICAgICwg
YWxwaGEoX2FscGhhKQoreworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJ
TkUgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6
OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9
CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjp0ZXh0dXJlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHRleHR1cmUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvcjo6c2V0VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1
cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFRleHR1cmVfKSwgdGV4dHVyZSk7Cit9CisKKy8vIHByb3BlcnR5OiBsZXZlbAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
OjpsZXZlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxldmVsKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldExldmVsKE5TOjpV
SW50ZWdlciBsZXZlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0TGV2ZWxfKSwgbGV2ZWwpOworfQorCisvLyBwcm9wZXJ0eTogc2xp
Y2UKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcjo6c2xpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzbGljZSkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTbGlj
ZShOUzo6VUludGVnZXIgc2xpY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNsaWNlXyksIHNsaWNlKTsKK30KKworLy8gcHJvcGVy
dHk6IGRlcHRoUGxhbmUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvcjo6ZGVwdGhQbGFuZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRl
cHRoUGxhbmUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c2V0RGVwdGhQbGFuZShOUzo6VUludGVnZXIgZGVwdGhQbGFuZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RGVwdGhQbGFuZV8pLCBkZXB0aFBsYW5lKTsKK30KKworLy8gcHJvcGVydHk6IHJlc29sdmVUZXh0
dXJlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpyZXNvbHZlVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvbHZl
VGV4dHVyZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yOjpzZXRSZXNvbHZlVGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHJlc29s
dmVUZXh0dXJlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRSZXNvbHZlVGV4dHVyZV8pLCByZXNvbHZlVGV4dHVyZSk7Cit9CisKKy8v
IHByb3BlcnR5OiByZXNvbHZlTGV2ZWwKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6cmVzb2x2ZUxldmVsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwocmVzb2x2ZUxldmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFJlc29sdmVMZXZlbChOUzo6VUludGVnZXIg
cmVzb2x2ZUxldmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRSZXNvbHZlTGV2ZWxfKSwgcmVzb2x2ZUxldmVsKTsKK30KKworLy8g
cHJvcGVydHk6IHJlc29sdmVTbGljZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpyZXNvbHZlU2xpY2UoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChyZXNvbHZlU2xpY2UpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UmVzb2x2ZVNsaWNlKE5TOjpVSW50ZWdlciBy
ZXNvbHZlU2xpY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFJlc29sdmVTbGljZV8pLCByZXNvbHZlU2xpY2UpOworfQorCisvLyBw
cm9wZXJ0eTogcmVzb2x2ZURlcHRoUGxhbmUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6cmVzb2x2ZURlcHRoUGxhbmUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChyZXNvbHZlRGVwdGhQbGFuZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRSZXNvbHZlRGVwdGhQ
bGFuZShOUzo6VUludGVnZXIgcmVzb2x2ZURlcHRoUGxhbmUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc29sdmVEZXB0aFBsYW5l
XyksIHJlc29sdmVEZXB0aFBsYW5lKTsKK30KKworLy8gcHJvcGVydHk6IGxvYWRBY3Rpb24KK19N
VExfSU5MSU5FIE1UTDo6TG9hZEFjdGlvbiBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvcjo6bG9hZEFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpMb2FkQWN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxvYWRBY3Rpb24pKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
cjo6c2V0TG9hZEFjdGlvbihNVEw6OkxvYWRBY3Rpb24gbG9hZEFjdGlvbikKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TG9hZEFjdGlv
bl8pLCBsb2FkQWN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHN0b3JlQWN0aW9uCitfTVRMX0lO
TElORSBNVEw6OlN0b3JlQWN0aW9uIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
OjpzdG9yZUFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpTdG9yZUFjdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdG9yZUFjdGlvbikpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
OjpzZXRTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdG9yZUFj
dGlvbl8pLCBzdG9yZUFjdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBzdG9yZUFjdGlvbk9wdGlv
bnMKK19NVExfSU5MSU5FIE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIE1UTDo6UmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yOjpzdG9yZUFjdGlvbk9wdGlvbnMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHN0b3JlQWN0aW9uT3B0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdG9yZUFjdGlvbk9w
dGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdG9y
ZUFjdGlvbk9wdGlvbnNfKSwgc3RvcmVBY3Rpb25PcHRpb25zKTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5F
IE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0Ojppbml0PE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9
CisKKy8vIHByb3BlcnR5OiBjbGVhckNvbG9yCitfTVRMX0lOTElORSBNVEw6OkNsZWFyQ29sb3Ig
TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y2xlYXJDb2xvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDbGVhckNvbG9yPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNsZWFyQ29sb3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRDbGVhckNvbG9y
KE1UTDo6Q2xlYXJDb2xvciBjbGVhckNvbG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDbGVhckNvbG9yXyksIGNsZWFyQ29sb3Ip
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxN
VEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhv
ZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvciogTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGNsZWFyRGVwdGgKK19NVExfSU5M
SU5FIGRvdWJsZSBNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVh
ckRlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxkb3VibGU+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY2xlYXJEZXB0aCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OnNldENsZWFyRGVw
dGgoZG91YmxlIGNsZWFyRGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENsZWFyRGVwdGhfKSwgY2xlYXJEZXB0aCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBkZXB0aFJlc29sdmVGaWx0ZXIKK19NVExfSU5MSU5FIE1UTDo6TXVsdGlz
YW1wbGVEZXB0aFJlc29sdmVGaWx0ZXIgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcjo6ZGVwdGhSZXNvbHZlRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6Ok11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGRlcHRoUmVzb2x2ZUZpbHRlcikpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OnNldERlcHRoUmVz
b2x2ZUZpbHRlcihNVEw6Ok11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyIGRlcHRoUmVzb2x2
ZUZpbHRlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0RGVwdGhSZXNvbHZlRmlsdGVyXyksIGRlcHRoUmVzb2x2ZUZpbHRlcik7Cit9
CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NT
dGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxN
VEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9D
TFMoTVRMUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50
RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpp
bml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NTdGVu
Y2lsQXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBjbGVhclN0ZW5j
aWwKK19NVExfSU5MSU5FIHVpbnQzMl90IE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50
RGVzY3JpcHRvcjo6Y2xlYXJTdGVuY2lsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx1aW50MzJfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjbGVhclN0ZW5jaWwp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldENsZWFyU3RlbmNpbCh1aW50MzJfdCBjbGVhclN0ZW5jaWwpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENs
ZWFyU3RlbmNpbF8pLCBjbGVhclN0ZW5jaWwpOworfQorCisvLyBwcm9wZXJ0eTogc3RlbmNpbFJl
c29sdmVGaWx0ZXIKK19NVExfSU5MSU5FIE1UTDo6TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZp
bHRlciBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I6OnN0ZW5jaWxS
ZXNvbHZlRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6Ok11bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc3RlbmNpbFJlc29sdmVGaWx0ZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0ZW5jaWxSZXNvbHZlRmls
dGVyKE1UTDo6TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZpbHRlciBzdGVuY2lsUmVzb2x2ZUZp
bHRlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0U3RlbmNpbFJlc29sdmVGaWx0ZXJfKSwgc3RlbmNpbFJlc29sdmVGaWx0ZXIpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PihfTVRM
X1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkp
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8
TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PigpOworfQorCisv
LyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5k
ZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJ
bmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRl
Z2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRh
Y2htZW50LCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3IqIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxv
YygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yKiBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1w
bGVCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpSZW5k
ZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2FtcGxl
QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVCdWZmZXIpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2V0U2FtcGxlQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2Ft
cGxlQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRTYW1wbGVCdWZmZXJfKSwgc2FtcGxlQnVmZmVyKTsKK30KKworLy8gcHJv
cGVydHk6IHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2Vy
IE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzdGFydE9m
VmVydGV4U2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFydE9mVmVydGV4U2Ft
cGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RhcnRPZlZlcnRleFNhbXBsZUluZGV4KE5T
OjpVSW50ZWdlciBzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZWZXJ0ZXhTYW1w
bGVJbmRleF8pLCBzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgpOworfQorCisvLyBwcm9wZXJ0eTog
ZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVu
ZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjplbmRPZlZlcnRleFNhbXBs
ZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yOjpzZXRFbmRPZlZlcnRleFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRP
ZlZlcnRleFNhbXBsZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRFbmRPZlZlcnRleFNhbXBsZUluZGV4XyksIGVuZE9mVmVy
dGV4U2FtcGxlSW5kZXgpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRPZkZyYWdtZW50U2FtcGxl
SW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleCkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yOjpzZXRTdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleChOUzo6VUludGVnZXIgc3RhcnRPZkZy
YWdtZW50U2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4XyksIHN0YXJ0
T2ZGcmFnbWVudFNhbXBsZUluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IGVuZE9mRnJhZ21lbnRT
YW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjplbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChlbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2V0RW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkZyYWdt
ZW50U2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleF8pLCBlbmRPZkZyYWdt
ZW50U2FtcGxlSW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJ
TkUgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSog
TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJl
bmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8v
IG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6Omlu
aXQ8TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4o
KTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElO
RSBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpS
ZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5T
OjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2ht
ZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1l
bnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRh
Y2htZW50SW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUg
TVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBhc3NEZXNj
cmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yKSk7Cit9CisK
Ky8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvciog
TVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogcmVuZGVyUGFzc0Rlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0Rl
c2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnJlbmRlclBhc3NEZXNjcmlwdG9y
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBhc3NEZXNj
cmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQYXNzRGVzY3JpcHRvciksIF9NVExf
UFJJVkFURV9TRUwocmVuZGVyUGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IGNv
bG9yQXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2ht
ZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChjb2xvckF0dGFjaG1lbnRzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXB0aEF0dGFjaG1l
bnQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iq
IE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmRlcHRoQXR0YWNobWVudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhBdHRhY2htZW50KSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0RGVw
dGhBdHRhY2htZW50KGNvbnN0IE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IqIGRlcHRoQXR0YWNobWVudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhBdHRhY2htZW50XyksIGRlcHRoQXR0YWNobWVu
dCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGVuY2lsQXR0YWNobWVudAorX01UTF9JTkxJTkUgTVRM
OjpSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NE
ZXNjcmlwdG9yOjpzdGVuY2lsQXR0YWNobWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9y
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVuY2lsQXR0YWNobWVudCkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFN0ZW5jaWxBdHRhY2ht
ZW50KGNvbnN0IE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciogc3Rl
bmNpbEF0dGFjaG1lbnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxBdHRhY2htZW50XyksIHN0ZW5jaWxBdHRhY2htZW50
KTsKK30KKworLy8gcHJvcGVydHk6IHZpc2liaWxpdHlSZXN1bHRCdWZmZXIKK19NVExfSU5MSU5F
IE1UTDo6QnVmZmVyKiBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjp2aXNpYmlsaXR5UmVzdWx0
QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1
ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcikpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFZpc2li
aWxpdHlSZXN1bHRCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIHZpc2liaWxpdHlSZXN1bHRCdWZm
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFZpc2liaWxpdHlSZXN1bHRCdWZmZXJfKSwgdmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcik7
Cit9CisKKy8vIHByb3BlcnR5OiByZW5kZXJUYXJnZXRBcnJheUxlbmd0aAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnJlbmRlclRhcmdldEFycmF5
TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRSZW5k
ZXJUYXJnZXRBcnJheUxlbmd0aChOUzo6VUludGVnZXIgcmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoXyksIHJlbmRlclRhcmdldEFycmF5TGVuZ3RoKTsK
K30KKworLy8gcHJvcGVydHk6IGltYWdlYmxvY2tTYW1wbGVMZW5ndGgKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjppbWFnZWJsb2NrU2FtcGxlTGVu
Z3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldEltYWdlYmxv
Y2tTYW1wbGVMZW5ndGgoTlM6OlVJbnRlZ2VyIGltYWdlYmxvY2tTYW1wbGVMZW5ndGgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldElt
YWdlYmxvY2tTYW1wbGVMZW5ndGhfKSwgaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCk7Cit9CisKKy8v
IHByb3BlcnR5OiB0aHJlYWRncm91cE1lbW9yeUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRl
Z2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRUaHJlYWRncm91cE1l
bW9yeUxlbmd0aChOUzo6VUludGVnZXIgdGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoXyksIHRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKTsKK30KKworLy8g
cHJvcGVydHk6IHRpbGVXaWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVy
UGFzc0Rlc2NyaXB0b3I6OnRpbGVXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRpbGVXaWR0
aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNl
dFRpbGVXaWR0aChOUzo6VUludGVnZXIgdGlsZVdpZHRoKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlV2lkdGhfKSwgdGlsZVdp
ZHRoKTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVIZWlnaHQKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjp0aWxlSGVpZ2h0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodGlsZUhlaWdodCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGFzc0Rlc2NyaXB0b3I6OnNldFRpbGVIZWlnaHQoTlM6OlVJbnRlZ2VyIHRpbGVIZWlnaHQpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFRpbGVIZWlnaHRfKSwgdGlsZUhlaWdodCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZWZhdWx0UmFz
dGVyU2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NE
ZXNjcmlwdG9yOjpkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXREZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQoTlM6OlVJ
bnRlZ2VyIGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVmYXVsdFJhc3RlclNhbXBsZUNv
dW50XyksIGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiByZW5k
ZXJUYXJnZXRXaWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rl
c2NyaXB0b3I6OnJlbmRlclRhcmdldFdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVy
VGFyZ2V0V2lkdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNj
cmlwdG9yOjpzZXRSZW5kZXJUYXJnZXRXaWR0aChOUzo6VUludGVnZXIgcmVuZGVyVGFyZ2V0V2lk
dGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFJlbmRlclRhcmdldFdpZHRoXyksIHJlbmRlclRhcmdldFdpZHRoKTsKK30KKworLy8g
cHJvcGVydHk6IHJlbmRlclRhcmdldEhlaWdodAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnJlbmRlclRhcmdldEhlaWdodCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHJlbmRlclRhcmdldEhlaWdodCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFJlbmRlclRhcmdldEhlaWdodChOUzo6VUludGVn
ZXIgcmVuZGVyVGFyZ2V0SGVpZ2h0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZW5kZXJUYXJnZXRIZWlnaHRfKSwgcmVuZGVyVGFy
Z2V0SGVpZ2h0KTsKK30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVQb3NpdGlvbnM6Y291bnQ6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFNhbXBsZVBvc2l0
aW9ucyhjb25zdCBNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5TOjpVSW50ZWdlciBj
b3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0U2FtcGxlUG9zaXRpb25zX2NvdW50XyksIHBvc2l0aW9ucywgY291bnQpOworfQor
CisvLyBtZXRob2Q6IGdldFNhbXBsZVBvc2l0aW9uczpjb3VudDoKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpnZXRTYW1wbGVQb3NpdGlvbnMoTVRM
OjpTYW1wbGVQb3NpdGlvbiogcG9zaXRpb25zLCBOUzo6VUludGVnZXIgY291bnQpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGdldFNhbXBsZVBvc2l0aW9uc19jb3VudF8pLCBwb3NpdGlvbnMsIGNvdW50KTsKK30K
KworLy8gcHJvcGVydHk6IHJhc3Rlcml6YXRpb25SYXRlTWFwCitfTVRMX0lOTElORSBNVEw6OlJh
c3Rlcml6YXRpb25SYXRlTWFwKiBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpyYXN0ZXJpemF0
aW9uUmF0ZU1hcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpSYXN0ZXJpemF0aW9uUmF0ZU1hcCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmFzdGVyaXph
dGlvblJhdGVNYXApKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNj
cmlwdG9yOjpzZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcChjb25zdCBNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTWFwKiByYXN0ZXJpemF0aW9uUmF0ZU1hcCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmFzdGVyaXphdGlvblJhdGVNYXBfKSwg
cmFzdGVyaXphdGlvblJhdGVNYXApOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQnVmZmVyQXR0
YWNobWVudHMKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVCdWZmZXJBdHRhY2htZW50cykpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVs
aW5lLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQ
aXBlbGluZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQxZGI2ZjZiMzdlMDJmZTNiNmE2ZjA2ZGI5MzBhNmYy
M2NhZTFjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExSZW5kZXJQaXBlbGluZS5ocHAKQEAgLTAsMCArMSwxMjEyIEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExS
ZW5kZXJQaXBlbGluZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTFBpeGVsRm9ybWF0LmhwcCIK
KyNpbmNsdWRlICJNVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMUmVu
ZGVyUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKworbmFtZXNwYWNlIE1U
TAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQmxlbmRGYWN0b3IpIHsKKyAgICBCbGVuZEZh
Y3Rvclplcm8gPSAwLAorICAgIEJsZW5kRmFjdG9yT25lID0gMSwKKyAgICBCbGVuZEZhY3RvclNv
dXJjZUNvbG9yID0gMiwKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzU291cmNlQ29sb3IgPSAzLAor
ICAgIEJsZW5kRmFjdG9yU291cmNlQWxwaGEgPSA0LAorICAgIEJsZW5kRmFjdG9yT25lTWludXNT
b3VyY2VBbHBoYSA9IDUsCisgICAgQmxlbmRGYWN0b3JEZXN0aW5hdGlvbkNvbG9yID0gNiwKKyAg
ICBCbGVuZEZhY3Rvck9uZU1pbnVzRGVzdGluYXRpb25Db2xvciA9IDcsCisgICAgQmxlbmRGYWN0
b3JEZXN0aW5hdGlvbkFscGhhID0gOCwKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzRGVzdGluYXRp
b25BbHBoYSA9IDksCisgICAgQmxlbmRGYWN0b3JTb3VyY2VBbHBoYVNhdHVyYXRlZCA9IDEwLAor
ICAgIEJsZW5kRmFjdG9yQmxlbmRDb2xvciA9IDExLAorICAgIEJsZW5kRmFjdG9yT25lTWludXNC
bGVuZENvbG9yID0gMTIsCisgICAgQmxlbmRGYWN0b3JCbGVuZEFscGhhID0gMTMsCisgICAgQmxl
bmRGYWN0b3JPbmVNaW51c0JsZW5kQWxwaGEgPSAxNCwKKyAgICBCbGVuZEZhY3RvclNvdXJjZTFD
b2xvciA9IDE1LAorICAgIEJsZW5kRmFjdG9yT25lTWludXNTb3VyY2UxQ29sb3IgPSAxNiwKKyAg
ICBCbGVuZEZhY3RvclNvdXJjZTFBbHBoYSA9IDE3LAorICAgIEJsZW5kRmFjdG9yT25lTWludXNT
b3VyY2UxQWxwaGEgPSAxOCwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIEJsZW5kT3Bl
cmF0aW9uKSB7CisgICAgQmxlbmRPcGVyYXRpb25BZGQgPSAwLAorICAgIEJsZW5kT3BlcmF0aW9u
U3VidHJhY3QgPSAxLAorICAgIEJsZW5kT3BlcmF0aW9uUmV2ZXJzZVN1YnRyYWN0ID0gMiwKKyAg
ICBCbGVuZE9wZXJhdGlvbk1pbiA9IDMsCisgICAgQmxlbmRPcGVyYXRpb25NYXggPSA0LAorfTsK
KworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgQ29sb3JXcml0ZU1hc2spIHsKKyAgICBDb2xv
cldyaXRlTWFza05vbmUgPSAwLAorICAgIENvbG9yV3JpdGVNYXNrQWxwaGEgPSAxLAorICAgIENv
bG9yV3JpdGVNYXNrQmx1ZSA9IDIsCisgICAgQ29sb3JXcml0ZU1hc2tHcmVlbiA9IDQsCisgICAg
Q29sb3JXcml0ZU1hc2tSZWQgPSA4LAorICAgIENvbG9yV3JpdGVNYXNrQWxsID0gMTUsCit9Owor
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQcmltaXRpdmVUb3BvbG9neUNsYXNzKSB7CisgICAg
UHJpbWl0aXZlVG9wb2xvZ3lDbGFzc1Vuc3BlY2lmaWVkID0gMCwKKyAgICBQcmltaXRpdmVUb3Bv
bG9neUNsYXNzUG9pbnQgPSAxLAorICAgIFByaW1pdGl2ZVRvcG9sb2d5Q2xhc3NMaW5lID0gMiwK
KyAgICBQcmltaXRpdmVUb3BvbG9neUNsYXNzVHJpYW5nbGUgPSAzLAorfTsKKworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgVGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSkgeworICAgIFRlc3NlbGxh
dGlvblBhcnRpdGlvbk1vZGVQb3cyID0gMCwKKyAgICBUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2Rl
SW50ZWdlciA9IDEsCisgICAgVGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZUZyYWN0aW9uYWxPZGQg
PSAyLAorICAgIFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVGcmFjdGlvbmFsRXZlbiA9IDMsCit9
OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rp
b24pIHsKKyAgICBUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb25Db25zdGFudCA9IDAsCisg
ICAgVGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uUGVyUGF0Y2ggPSAxLAorICAgIFRlc3Nl
bGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvblBlckluc3RhbmNlID0gMiwKKyAgICBUZXNzZWxsYXRp
b25GYWN0b3JTdGVwRnVuY3Rpb25QZXJQYXRjaEFuZFBlckluc3RhbmNlID0gMywKK307CisKK19N
VExfRU5VTShOUzo6VUludGVnZXIsIFRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCkgeworICAgIFRl
c3NlbGxhdGlvbkZhY3RvckZvcm1hdEhhbGYgPSAwLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50
ZWdlciwgVGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlKSB7CisgICAgVGVzc2VsbGF0
aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlTm9uZSA9IDAsCisgICAgVGVzc2VsbGF0aW9uQ29udHJv
bFBvaW50SW5kZXhUeXBlVUludDE2ID0gMSwKKyAgICBUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJ
bmRleFR5cGVVSW50MzIgPSAyLAorfTsKKworY2xhc3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3Mg
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOwor
CisgICAgTVRMOjpQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJsZW5kaW5nRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJsZW5kaW5n
RW5hYmxlZChib29sIGJsZW5kaW5nRW5hYmxlZCk7CisKKyAgICBNVEw6OkJsZW5kRmFjdG9yICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VSR0JCbGVuZEZhY3Rvcigp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFNvdXJjZVJHQkJsZW5kRmFjdG9yKE1UTDo6QmxlbmRGYWN0b3Igc291cmNl
UkdCQmxlbmRGYWN0b3IpOworCisgICAgTVRMOjpCbGVuZEZhY3RvciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcigpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBkZXN0aW5hdGlv
blJHQkJsZW5kRmFjdG9yKTsKKworICAgIE1UTDo6QmxlbmRPcGVyYXRpb24gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJnYkJsZW5kT3BlcmF0aW9uKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Umdi
QmxlbmRPcGVyYXRpb24oTVRMOjpCbGVuZE9wZXJhdGlvbiByZ2JCbGVuZE9wZXJhdGlvbik7CisK
KyAgICBNVEw6OkJsZW5kRmFjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzb3VyY2VBbHBoYUJsZW5kRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U291cmNlQWxwaGFCbGVuZEZh
Y3RvcihNVEw6OkJsZW5kRmFjdG9yIHNvdXJjZUFscGhhQmxlbmRGYWN0b3IpOworCisgICAgTVRM
OjpCbGVuZEZhY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGlu
YXRpb25BbHBoYUJsZW5kRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVzdGluYXRpb25BbHBoYUJsZW5k
RmFjdG9yKE1UTDo6QmxlbmRGYWN0b3IgZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKTsKKwor
ICAgIE1UTDo6QmxlbmRPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFscGhhQmxlbmRPcGVyYXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBbHBoYUJsZW5kT3BlcmF0aW9uKE1U
TDo6QmxlbmRPcGVyYXRpb24gYWxwaGFCbGVuZE9wZXJhdGlvbik7CisKKyAgICBNVEw6OkNvbG9y
V3JpdGVNYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZU1hc2soKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRXcml0ZU1hc2soTVRMOjpDb2xvcldyaXRlTWFzayB3cml0ZU1hc2spOworfTsK
KworY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNz
IFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBp
cGVsaW5lUmVmbGVjdGlvbiogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpBcnJheSogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEFyZ3VtZW50cygpIGNvbnN0OworCisgICAgTlM6
OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRBcmd1bWVudHMoKSBj
b25zdDsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVB
cmd1bWVudHMoKSBjb25zdDsKK307CisKK2NsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6
IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogICAgICAgICAgICAg
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqICAgICAgICAg
ICAgICAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpT
dHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ZXJ0ZXhGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWZXJ0ZXhGdW5jdGlv
bihjb25zdCBjbGFzcyBGdW5jdGlvbiogdmVydGV4RnVuY3Rpb24pOworCisgICAgY2xhc3MgRnVu
Y3Rpb24qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50RnVuY3Rp
b24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RnJhZ21lbnRGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbiogZnJh
Z21lbnRGdW5jdGlvbik7CisKKyAgICBjbGFzcyBWZXJ0ZXhEZXNjcmlwdG9yKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVydGV4RGVzY3JpcHRvcigpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWZXJ0ZXhEZXNj
cmlwdG9yKGNvbnN0IGNsYXNzIFZlcnRleERlc2NyaXB0b3IqIHZlcnRleERlc2NyaXB0b3IpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFNhbXBsZUNvdW50KE5TOjpVSW50ZWdlciBzYW1wbGVD
b3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmFzdGVyU2FtcGxlQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmFzdGVyU2FtcGxlQ291bnQo
TlM6OlVJbnRlZ2VyIHJhc3RlclNhbXBsZUNvdW50KTsKKworICAgIGJvb2wgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYVRvQ292ZXJhZ2VFbmFibGVk
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoYm9vbCBhbHBoYVRvQ292ZXJhZ2VF
bmFibGVkKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbHBoYVRvT25lRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBbHBoYVRvT25lRW5hYmxl
ZChib29sIGFscGhhVG9PbmVFbmFibGVkKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXN0ZXJpemF0aW9uRW5hYmxlZCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRSYXN0ZXJpemF0aW9uRW5hYmxlZChib29sIHJhc3Rlcml6YXRpb25FbmFibGVkKTsKKwor
ICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4VmVydGV4QW1wbGlmaWNh
dGlvbkNvdW50KE5TOjpVSW50ZWdlciBtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQpOworCisg
ICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGNv
bG9yQXR0YWNobWVudHMoKSBjb25zdDsKKworICAgIE1UTDo6UGl4ZWxGb3JtYXQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGRlcHRo
QXR0YWNobWVudFBpeGVsRm9ybWF0KTsKKworICAgIE1UTDo6UGl4ZWxGb3JtYXQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBz
dGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KTsKKworICAgIE1UTDo6UHJpbWl0aXZlVG9wb2xv
Z3lDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFByaW1pdGl2ZVRvcG9sb2d5KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldElucHV0UHJpbWl0aXZlVG9wb2xvZ3koTVRMOjpQcmltaXRpdmVUb3BvbG9neUNs
YXNzIGlucHV0UHJpbWl0aXZlVG9wb2xvZ3kpOworCisgICAgTVRMOjpUZXNzZWxsYXRpb25QYXJ0
aXRpb25Nb2RlICAgICAgICAgICAgICAgICAgICAgIHRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZShNVEw6OlRlc3NlbGxhdGlvblBh
cnRpdGlvbk1vZGUgdGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSk7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VGVzc2VsbGF0aW9u
RmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldE1heFRlc3NlbGxhdGlvbkZhY3RvcihOUzo6VUludGVnZXIgbWF4
VGVzc2VsbGF0aW9uRmFjdG9yKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkKGJvb2wgdGVzc2VsbGF0aW9u
RmFjdG9yU2NhbGVFbmFibGVkKTsKKworICAgIE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0
ICAgICAgICAgICAgICAgICAgICAgICB0ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0
IHRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCk7CisKKyAgICBNVEw6OlRlc3NlbGxhdGlvbkNvbnRy
b2xQb2ludEluZGV4VHlwZSAgICAgICAgICAgICAgdGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5k
ZXhUeXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZShNVEw6
OlRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSB0ZXNzZWxsYXRpb25Db250cm9sUG9p
bnRJbmRleFR5cGUpOworCisgICAgTVRMOjpUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24g
ICAgICAgICAgICAgICAgIHRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbigpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24oTVRMOjpUZXNzZWxsYXRpb25GYWN0b3JT
dGVwRnVuY3Rpb24gdGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKTsKKworICAgIE1UTDo6
V2luZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXNzZWxsYXRp
b25PdXRwdXRXaW5kaW5nT3JkZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGVzc2VsbGF0aW9uT3V0cHV0V2luZGlu
Z09yZGVyKE1UTDo6V2luZGluZyB0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIpOworCisg
ICAgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqICAgICAgICAgICAgICAgIHZl
cnRleEJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGNsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRv
ckFycmF5KiAgICAgICAgICAgICAgICBmcmFnbWVudEJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0
SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0SW5kaXJlY3RDb21tYW5k
QnVmZmVycyhib29sIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKTsKKworICAgIE5TOjpB
cnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlBcmNo
aXZlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFy
Y2hpdmVzKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4UHJl
bG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogdmVydGV4UHJlbG9hZGVkTGlicmFyaWVz
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcygpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGcmFnbWVudFByZWxv
YWRlZExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIGZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVz
KTsKKworICAgIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4TGlua2VkRnVuY3Rp
b25zKGNvbnN0IGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogdmVydGV4TGlua2VkRnVuY3Rpb25zKTsK
KworICAgIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFnbWVudExpbmtlZEZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGcmFnbWVudExpbmtlZEZ1bmN0
aW9ucyhjb25zdCBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqIGZyYWdtZW50TGlua2VkRnVuY3Rpb25z
KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1cHBv
cnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRkaW5nVmVydGV4Qmlu
YXJ5RnVuY3Rpb25zKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9y
dEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0
aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRNYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4VmVy
dGV4Q2FsbFN0YWNrRGVwdGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4RnJhZ21lbnRDYWxs
U3RhY2tEZXB0aCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzZXQoKTsKK307CisKK2NsYXNzIFJlbmRlclBpcGVsaW5lRnVuY3Rp
b25zRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQaXBlbGluZUZ1bmN0aW9u
c0Rlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBpcGVsaW5l
RnVuY3Rpb25zRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVsaW5l
RnVuY3Rpb25zRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpBcnJheSogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEFkZGl0aW9uYWxCaW5hcnlG
dW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRWZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5T
OjpBcnJheSogdmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyk7CisKKyAgICBOUzo6QXJy
YXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudEFkZGl0aW9u
YWxCaW5hcnlGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRGcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnMoY29uc3QgTlM6OkFycmF5KiBmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpOwor
CisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGls
ZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaWxlQWRkaXRpb25hbEJpbmFyeUZ1
bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIHRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKTsK
K307CisKK2NsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5n
PFJlbmRlclBpcGVsaW5lU3RhdGU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAg
ICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNzIERldmljZSogICAgICAg
ICAgICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgICAgICAgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdDsKKworICAg
IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNU
aWxlU2l6ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAg
aW1hZ2VibG9ja1NhbXBsZUxlbmd0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICAgaW1hZ2VibG9ja01lbW9yeUxlbmd0aChNVEw6OlNpemUgaW1hZ2VibG9j
a0RpbWVuc2lvbnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw
cG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGNsYXNzIEZ1bmN0aW9u
SGFuZGxlKiAgICAgICAgICAgIGZ1bmN0aW9uSGFuZGxlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBm
dW5jdGlvbiwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2UpOworCisgICAgY2xhc3MgVmlzaWJsZUZ1
bmN0aW9uVGFibGUqICAgICAgbmV3VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3MgVmlz
aWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlJlbmRlclN0YWdl
cyBzdGFnZSk7CisKKyAgICBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBuZXdJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZSk7CisKKyAg
ICBjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiAgICAgICBuZXdSZW5kZXJQaXBlbGluZVN0YXRl
KGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvciogYWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpOworfTsKKworY2xhc3MgUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Pgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3Qo
TlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBj
bGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQs
IE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworfTsKKworY2xhc3MgVGlsZVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxUaWxl
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgorICAg
IHN0YXRpYyBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KiBhbGxvYygpOworCisgICAgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6UGl4ZWxGb3JtYXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbEZvcm1hdCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KTsKK307CisK
K2NsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBUaWxlUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBj
bGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAg
ICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJ
bmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgVGlsZVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0
dGFjaG1lbnRJbmRleCk7Cit9OworCitjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
IDogcHVibGljIE5TOjpDb3B5aW5nPFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqICAg
ICAgICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciogICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisKKyAgICBjbGFzcyBGdW5jdGlv
biogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVGdW5jdGlvbigp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0VGlsZUZ1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiB0aWxlRnVu
Y3Rpb24pOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByYXN0ZXJTYW1wbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmFzdGVyU2Ft
cGxlQ291bnQoTlM6OlVJbnRlZ2VyIHJhc3RlclNhbXBsZUNvdW50KTsKKworICAgIGNsYXNzIFRp
bGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogY29sb3JBdHRh
Y2htZW50cygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZShib29sIHRocmVhZGdy
b3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSk7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2Ny
aXB0b3JBcnJheSogICAgICAgICAgICAgICAgICAgIHRpbGVCdWZmZXJzKCkgY29uc3Q7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhUb3RhbFRo
cmVhZHNQZXJUaHJlYWRncm91cChOUzo6VUludGVnZXIgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFk
Z3JvdXApOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiaW5hcnlBcmNoaXZlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QmluYXJ5QXJjaGl2
ZXMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcyk7CisKKyAgICBOUzo6QXJyYXkqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWxvYWRlZExpYnJh
cmllcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSog
cHJlbG9hZGVkTGlicmFyaWVzKTsKKworICAgIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua2VkRnVuY3Rpb25zKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRMaW5rZWRGdW5jdGlvbnMoY29uc3QgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiBsaW5rZWRGdW5j
dGlvbnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1
bmN0aW9ucyk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1heENhbGxTdGFja0RlcHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhDYWxs
U3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4Q2FsbFN0YWNrRGVwdGgpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldCgp
OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6Omlu
aXQ8TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBwaXhlbEZvcm1hdAorX01UTF9JTkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBN
VEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cGl4ZWxGb3JtYXQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3Jt
YXQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGl4ZWxGb3JtYXQpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0
UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UGl4ZWxGb3JtYXRf
KSwgcGl4ZWxGb3JtYXQpOworfQorCisvLyBwcm9wZXJ0eTogYmxlbmRpbmdFbmFibGVkCitfTVRM
X0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
OjpibGVuZGluZ0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNCbGVuZGluZ0VuYWJsZWQpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcjo6c2V0QmxlbmRpbmdFbmFibGVkKGJvb2wgYmxlbmRpbmdFbmFibGVkKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCbGVu
ZGluZ0VuYWJsZWRfKSwgYmxlbmRpbmdFbmFibGVkKTsKK30KKworLy8gcHJvcGVydHk6IHNvdXJj
ZVJHQkJsZW5kRmFjdG9yCitfTVRMX0lOTElORSBNVEw6OkJsZW5kRmFjdG9yIE1UTDo6UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzb3VyY2VSR0JCbGVuZEZhY3Rvcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGVuZEZhY3Rv
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzb3VyY2VSR0JCbGVuZEZhY3RvcikpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOjpzZXRTb3VyY2VSR0JCbGVuZEZhY3RvcihNVEw6OkJsZW5kRmFjdG9yIHNvdXJjZVJHQkJs
ZW5kRmFjdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRTb3VyY2VSR0JCbGVuZEZhY3Rvcl8pLCBzb3VyY2VSR0JCbGVuZEZhY3Rv
cik7Cit9CisKKy8vIHByb3BlcnR5OiBkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yCitfTVRMX0lO
TElORSBNVEw6OkJsZW5kRmFjdG9yIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsZW5kRmFjdG9yPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0RGVzdGlu
YXRpb25SR0JCbGVuZEZhY3RvcihNVEw6OkJsZW5kRmFjdG9yIGRlc3RpbmF0aW9uUkdCQmxlbmRG
YWN0b3IpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3JfKSwgZGVzdGluYXRpb25SR0JCbGVu
ZEZhY3Rvcik7Cit9CisKKy8vIHByb3BlcnR5OiByZ2JCbGVuZE9wZXJhdGlvbgorX01UTF9JTkxJ
TkUgTVRMOjpCbGVuZE9wZXJhdGlvbiBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcjo6cmdiQmxlbmRPcGVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxlbmRPcGVyYXRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocmdiQmxlbmRPcGVyYXRpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UmdiQmxlbmRPcGVyYXRpb24o
TVRMOjpCbGVuZE9wZXJhdGlvbiByZ2JCbGVuZE9wZXJhdGlvbikKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmdiQmxlbmRPcGVyYXRp
b25fKSwgcmdiQmxlbmRPcGVyYXRpb24pOworfQorCisvLyBwcm9wZXJ0eTogc291cmNlQWxwaGFC
bGVuZEZhY3RvcgorX01UTF9JTkxJTkUgTVRMOjpCbGVuZEZhY3RvciBNVEw6OlJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c291cmNlQWxwaGFCbGVuZEZhY3RvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGVuZEZhY3Rvcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzb3VyY2VBbHBoYUJsZW5kRmFjdG9yKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3I6OnNldFNvdXJjZUFscGhhQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBzb3VyY2VBbHBo
YUJsZW5kRmFjdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yXyksIHNvdXJjZUFscGhhQmxl
bmRGYWN0b3IpOworfQorCisvLyBwcm9wZXJ0eTogZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9y
CitfTVRMX0lOTElORSBNVEw6OkJsZW5kRmFjdG9yIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yOjpkZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxlbmRGYWN0b3I+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3I6OnNldERlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvcihNVEw6OkJsZW5kRmFjdG9yIGRlc3Rp
bmF0aW9uQWxwaGFCbGVuZEZhY3RvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yXyks
IGRlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3Rvcik7Cit9CisKKy8vIHByb3BlcnR5OiBhbHBoYUJs
ZW5kT3BlcmF0aW9uCitfTVRMX0lOTElORSBNVEw6OkJsZW5kT3BlcmF0aW9uIE1UTDo6UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbHBoYUJsZW5kT3BlcmF0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsZW5kT3BlcmF0
aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFscGhhQmxlbmRPcGVyYXRpb24pKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2V0QWxwaGFCbGVuZE9wZXJhdGlvbihNVEw6OkJsZW5kT3BlcmF0aW9uIGFscGhhQmxl
bmRPcGVyYXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEFscGhhQmxlbmRPcGVyYXRpb25fKSwgYWxwaGFCbGVuZE9wZXJhdGlv
bik7Cit9CisKKy8vIHByb3BlcnR5OiB3cml0ZU1hc2sKK19NVExfSU5MSU5FIE1UTDo6Q29sb3JX
cml0ZU1hc2sgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6Ondy
aXRlTWFzaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpD
b2xvcldyaXRlTWFzaz4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3cml0ZU1hc2spKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2V0V3JpdGVNYXNrKE1UTDo6Q29sb3JXcml0ZU1hc2sgd3JpdGVNYXNrKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRXcml0
ZU1hc2tfKSwgd3JpdGVNYXNrKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExf
SU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBNVEw6OlJlbmRlclBpcGVsaW5l
UmVmbGVjdGlvbjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQaXBl
bGluZVJlZmxlY3Rpb24pKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogTVRMOjpSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb246
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVyUGlwZWxp
bmVSZWZsZWN0aW9uPigpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4QXJndW1lbnRzCitfTVRM
X0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uOjp2ZXJ0ZXhB
cmd1bWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpB
cnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVydGV4QXJndW1lbnRzKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBmcmFnbWVudEFyZ3VtZW50cworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6
OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbjo6ZnJhZ21lbnRBcmd1bWVudHMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZnJhZ21lbnRBcmd1bWVudHMpKTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVBcmd1
bWVudHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZVJlZmxlY3Rp
b246OnRpbGVBcmd1bWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUFyZ3VtZW50cykpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjphbGxvYygpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikpOworfQor
CisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRM
YWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisv
LyBwcm9wZXJ0eTogdmVydGV4RnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb24qIE1U
TDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhGdW5jdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodmVydGV4RnVuY3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VmVydGV4RnVuY3Rpb24oY29uc3QgTVRMOjpG
dW5jdGlvbiogdmVydGV4RnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEZ1bmN0aW9uXyksIHZlcnRleEZ1bmN0
aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGZyYWdtZW50RnVuY3Rpb24KK19NVExfSU5MSU5FIE1U
TDo6RnVuY3Rpb24qIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpmcmFnbWVudEZ1bmN0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0
aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudEZ1bmN0aW9uKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEZyYWdtZW50
RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbiogZnJhZ21lbnRGdW5jdGlvbikKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21l
bnRGdW5jdGlvbl8pLCBmcmFnbWVudEZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRl
eERlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4RGVzY3JpcHRvciogTVRMOjpSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnZlcnRleERlc2NyaXB0b3IoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmVydGV4RGVzY3JpcHRvcio+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodmVydGV4RGVzY3JpcHRvcikpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhEZXNjcmlwdG9yKGNvbnN0
IE1UTDo6VmVydGV4RGVzY3JpcHRvciogdmVydGV4RGVzY3JpcHRvcikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4RGVzY3Jp
cHRvcl8pLCB2ZXJ0ZXhEZXNjcmlwdG9yKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNvdW50
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnQpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U2FtcGxl
Q291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVDb3VudF8pLCBzYW1wbGVD
b3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiByYXN0ZXJTYW1wbGVDb3VudAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpyYXN0ZXJTYW1wbGVD
b3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJhc3RlclNhbXBsZUNvdW50KSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFJhc3RlclNh
bXBsZUNvdW50KE5TOjpVSW50ZWdlciByYXN0ZXJTYW1wbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmFzdGVyU2FtcGxl
Q291bnRfKSwgcmFzdGVyU2FtcGxlQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogYWxwaGFUb0Nv
dmVyYWdlRW5hYmxlZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6YWxwaGFUb0NvdmVyYWdlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0FscGhhVG9Db3Zl
cmFnZUVuYWJsZWQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6c2V0QWxwaGFUb0NvdmVyYWdlRW5hYmxlZChib29sIGFscGhhVG9Db3ZlcmFn
ZUVuYWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEFscGhhVG9Db3ZlcmFnZUVuYWJsZWRfKSwgYWxwaGFUb0NvdmVyYWdlRW5h
YmxlZCk7Cit9CisKKy8vIHByb3BlcnR5OiBhbHBoYVRvT25lRW5hYmxlZAorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6YWxwaGFUb09uZUVuYWJsZWQoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaXNBbHBoYVRvT25lRW5hYmxlZCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRBbHBoYVRvT25lRW5hYmxlZChib29s
IGFscGhhVG9PbmVFbmFibGVkKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRBbHBoYVRvT25lRW5hYmxlZF8pLCBhbHBoYVRvT25lRW5h
YmxlZCk7Cit9CisKKy8vIHByb3BlcnR5OiByYXN0ZXJpemF0aW9uRW5hYmxlZAorX01UTF9JTkxJ
TkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmFzdGVyaXphdGlvbkVuYWJs
ZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaXNSYXN0ZXJpemF0aW9uRW5hYmxlZCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRSYXN0ZXJpemF0aW9u
RW5hYmxlZChib29sIHJhc3Rlcml6YXRpb25FbmFibGVkKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSYXN0ZXJpemF0aW9uRW5hYmxl
ZF8pLCByYXN0ZXJpemF0aW9uRW5hYmxlZCk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhWZXJ0ZXhB
bXBsaWZpY2F0aW9uQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcjo6bWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldE1heFZlcnRleEFtcGxp
ZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgbWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRNYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfKSwgbWF4VmVydGV4QW1wbGlmaWNhdGlvbkNv
dW50KTsKK30KKworLy8gcHJvcGVydHk6IGNvbG9yQXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1U
TDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb2xvckF0dGFjaG1l
bnRzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdAorX01U
TF9JTkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6
ZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3JtYXQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVw
dGhBdHRhY2htZW50UGl4ZWxGb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoTVRM
OjpQaXhlbEZvcm1hdCBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhBdHRhY2ht
ZW50UGl4ZWxGb3JtYXRfKSwgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQpOworfQorCisvLyBw
cm9wZXJ0eTogc3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZvcm1hdAorX01UTF9JTkxJTkUgTVRMOjpQ
aXhlbEZvcm1hdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c3RlbmNpbEF0dGFjaG1l
bnRQaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpQaXhlbEZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVuY2lsQXR0YWNobWVu
dFBpeGVsRm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OnNldFN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZv
cm1hdCBzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsQXR0YWNobWVudFBp
eGVsRm9ybWF0XyksIHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQpOworfQorCisvLyBwcm9w
ZXJ0eTogaW5wdXRQcmltaXRpdmVUb3BvbG9neQorX01UTF9JTkxJTkUgTVRMOjpQcmltaXRpdmVU
b3BvbG9neUNsYXNzIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjppbnB1dFByaW1pdGl2
ZVRvcG9sb2d5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OlByaW1pdGl2ZVRvcG9sb2d5Q2xhc3M+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5wdXRQcmlt
aXRpdmVUb3BvbG9neSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRJbnB1dFByaW1pdGl2ZVRvcG9sb2d5KE1UTDo6UHJpbWl0aXZlVG9w
b2xvZ3lDbGFzcyBpbnB1dFByaW1pdGl2ZVRvcG9sb2d5KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbnB1dFByaW1pdGl2ZVRvcG9s
b2d5XyksIGlucHV0UHJpbWl0aXZlVG9wb2xvZ3kpOworfQorCisvLyBwcm9wZXJ0eTogdGVzc2Vs
bGF0aW9uUGFydGl0aW9uTW9kZQorX01UTF9JTkxJTkUgTVRMOjpUZXNzZWxsYXRpb25QYXJ0aXRp
b25Nb2RlIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0ZXNzZWxsYXRpb25QYXJ0aXRp
b25Nb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRl
c3NlbGxhdGlvblBhcnRpdGlvbk1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGVzc2VsbGF0
aW9uUGFydGl0aW9uTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlKE1UTDo6VGVzc2Vs
bGF0aW9uUGFydGl0aW9uTW9kZSB0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXNzZWxs
YXRpb25QYXJ0aXRpb25Nb2RlXyksIHRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUpOworfQorCisv
LyBwcm9wZXJ0eTogbWF4VGVzc2VsbGF0aW9uRmFjdG9yCitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6Om1heFRlc3NlbGxhdGlvbkZhY3Rvcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFRlc3NlbGxhdGlvbkZhY3RvcikpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhUZXNzZWxs
YXRpb25GYWN0b3IoTlM6OlVJbnRlZ2VyIG1heFRlc3NlbGxhdGlvbkZhY3RvcikKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4VGVz
c2VsbGF0aW9uRmFjdG9yXyksIG1heFRlc3NlbGxhdGlvbkZhY3Rvcik7Cit9CisKKy8vIHByb3Bl
cnR5OiB0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChpc1Rlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNz
ZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQoYm9vbCB0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVu
YWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZF8pLCB0ZXNzZWxsYXRpb25G
YWN0b3JTY2FsZUVuYWJsZWQpOworfQorCisvLyBwcm9wZXJ0eTogdGVzc2VsbGF0aW9uRmFjdG9y
Rm9ybWF0CitfTVRMX0lOTElORSBNVEw6OlRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRlc3NlbGxhdGlvbkZhY3Rv
ckZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6
c2V0VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0
IHRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0Xyks
IHRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXNzZWxsYXRp
b25Db250cm9sUG9pbnRJbmRleFR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGVzc2VsbGF0aW9uQ29u
dHJvbFBvaW50SW5kZXhUeXBlIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0ZXNzZWxs
YXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRU
ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUoTVRMOjpUZXNzZWxsYXRpb25Db250cm9s
UG9pbnRJbmRleFR5cGUgdGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXNz
ZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGVfKSwgdGVzc2VsbGF0aW9uQ29udHJvbFBvaW50
SW5kZXhUeXBlKTsKK30KKworLy8gcHJvcGVydHk6IHRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5j
dGlvbgorX01UTF9JTkxJTkUgTVRMOjpUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24gTVRM
OjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXNzZWxs
YXRpb25GYWN0b3JTdGVwRnVuY3Rpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGVzc2VsbGF0
aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbihN
VEw6OlRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbiB0ZXNzZWxsYXRpb25GYWN0b3JTdGVw
RnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbl8pLCB0ZXNzZWxsYXRp
b25GYWN0b3JTdGVwRnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogdGVzc2VsbGF0aW9uT3V0
cHV0V2luZGluZ09yZGVyCitfTVRMX0lOTElORSBNVEw6OldpbmRpbmcgTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpXaW5kaW5nPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcikpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRp
b25PdXRwdXRXaW5kaW5nT3JkZXIoTVRMOjpXaW5kaW5nIHRlc3NlbGxhdGlvbk91dHB1dFdpbmRp
bmdPcmRlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyXyksIHRlc3NlbGxhdGlv
bk91dHB1dFdpbmRpbmdPcmRlcik7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhCdWZmZXJzCitf
TVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6dmVydGV4QnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVydGV4QnVmZmVycykpOworfQorCisvLyBwcm9wZXJ0
eTogZnJhZ21lbnRCdWZmZXJzCitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3Jp
cHRvckFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZnJhZ21lbnRCdWZmZXJz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpcGVsaW5l
QnVmZmVyRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudEJ1
ZmZlcnMpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJz
CitfTVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0
SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEluZGlyZWN0
Q29tbWFuZEJ1ZmZlcnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6c2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoYm9vbCBzdXBw
b3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZl
cnNfKSwgc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpOworfQorCisvLyBwcm9wZXJ0eTog
YmluYXJ5QXJjaGl2ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OmJpbmFyeUFyY2hpdmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJpbmFyeUFy
Y2hpdmVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OnNldEJpbmFyeUFyY2hpdmVzKGNvbnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEJpbmFyeUFyY2hpdmVzXyksIGJpbmFyeUFyY2hpdmVzKTsKK30KKworLy8gcHJvcGVydHk6
IHZlcnRleFByZWxvYWRlZExpYnJhcmllcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dmVydGV4UHJlbG9hZGVkTGlicmFyaWVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHZlcnRleFByZWxvYWRlZExpYnJhcmllcykpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhQcmVsb2FkZWRM
aWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiB2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZl
cnRleFByZWxvYWRlZExpYnJhcmllc18pLCB2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMpOworfQor
CisvLyBwcm9wZXJ0eTogZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMKK19NVExfSU5MSU5FIE5T
OjpBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmZyYWdtZW50UHJlbG9hZGVk
TGlicmFyaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVz
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OnNldEZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogZnJhZ21lbnRQ
cmVsb2FkZWRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzXyksIGZyYWdt
ZW50UHJlbG9hZGVkTGlicmFyaWVzKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleExpbmtlZEZ1
bmN0aW9ucworX01UTF9JTkxJTkUgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlua2VkRnVuY3Rpb25zKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VmVydGV4TGlua2VkRnVuY3Rp
b25zKGNvbnN0IE1UTDo6TGlua2VkRnVuY3Rpb25zKiB2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFZlcnRleExpbmtlZEZ1bmN0aW9uc18pLCB2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMpOworfQorCisv
LyBwcm9wZXJ0eTogZnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6TGlu
a2VkRnVuY3Rpb25zKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZnJhZ21lbnRMaW5r
ZWRGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6TGlua2VkRnVuY3Rpb25zKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudExpbmtl
ZEZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpzZXRGcmFnbWVudExpbmtlZEZ1bmN0aW9ucyhjb25zdCBNVEw6OkxpbmtlZEZ1
bmN0aW9ucyogZnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50TGlua2VkRnVuY3Rp
b25zXyksIGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBv
cnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0
U3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdWZXJ0
ZXhCaW5hcnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnNf
KSwgc3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5
OiBzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFy
eUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5
RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldFN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucyhib29sIHN1
cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFkZGluZ0ZyYWdt
ZW50QmluYXJ5RnVuY3Rpb25zXyksIHN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9u
cyk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhWZXJ0ZXhD
YWxsU3RhY2tEZXB0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFZlcnRleENhbGxTdGFja0Rl
cHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I6OnNldE1heFZlcnRleENhbGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhWZXJ0ZXhDYWxs
U3RhY2tEZXB0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0TWF4VmVydGV4Q2FsbFN0YWNrRGVwdGhfKSwgbWF4VmVydGV4Q2FsbFN0
YWNrRGVwdGgpOworfQorCisvLyBwcm9wZXJ0eTogbWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aAor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpt
YXhGcmFnbWVudENhbGxTdGFja0RlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4RnJhZ21l
bnRDYWxsU3RhY2tEZXB0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKE5TOjpVSW50ZWdl
ciBtYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRo
XyksIG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgpOworfQorCisvLyBtZXRob2Q6IHJlc2V0Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpyZXNldCgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJl
c2V0KSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJl
bmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0
aW9uc0Rlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMo
TVRMUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3Iq
IE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3Jp
cHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rl
c2NyaXB0b3I6OnZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhB
ZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogdmVydGV4QWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uc18pLCB2
ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IGZyYWdt
ZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6
OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6ZnJhZ21lbnRBZGRpdGlvbmFsQmlu
YXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZyYWdtZW50QWRkaXRpb25hbEJpbmFy
eUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVG
dW5jdGlvbnNEZXNjcmlwdG9yOjpzZXRGcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMo
Y29uc3QgTlM6OkFycmF5KiBmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZy
YWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uc18pLCBmcmFnbWVudEFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5j
dGlvbnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9u
c0Rlc2NyaXB0b3I6OnRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I6OnNldFRpbGVBZGRp
dGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogdGlsZUFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zXyksIHRpbGVBZGRp
dGlvbmFsQmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OmxhYmVsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lO
TElORSBNVEw6OkRldmljZSogTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpkZXZpY2UoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IG1heFRvdGFsVGhy
ZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQ
aXBlbGluZVN0YXRlOjptYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpSZW5kZXJQaXBlbGluZVN0YXRlOjp0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjppbWFnZWJsb2NrU2FtcGxlTGVuZ3RoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCkpOworfQorCisvLyBtZXRob2Q6
IGltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zOgorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6aW1hZ2VibG9ja01lbW9yeUxlbmd0aChN
VEw6OlNpemUgaW1hZ2VibG9ja0RpbWVuc2lvbnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGltYWdlYmxvY2tN
ZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zXyksIGltYWdlYmxvY2tEaW1lbnNpb25zKTsKK30KKwor
Ly8gcHJvcGVydHk6IHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzCitfTVRMX0lOTElORSBi
b29sIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6c3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZl
cnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKSk7Cit9
CisKKy8vIG1ldGhvZDogZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb246c3RhZ2U6CitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OmZ1bmN0
aW9uSGFuZGxlKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGZ1bmN0aW9uLCBNVEw6OlJlbmRlclN0YWdl
cyBzdGFnZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9u
SGFuZGxlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkhhbmRsZVdpdGhGdW5jdGlv
bl9zdGFnZV8pLCBmdW5jdGlvbiwgc3RhZ2UpOworfQorCisvLyBtZXRob2Q6IG5ld1Zpc2libGVG
dW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6CitfTVRMX0lOTElORSBNVEw6OlZpc2li
bGVGdW5jdGlvblRhYmxlKiBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6Om5ld1Zpc2libGVGdW5j
dGlvblRhYmxlKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNj
cmlwdG9yLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yX3N0YWdlXyksIGRlc2Ny
aXB0b3IsIHN0YWdlKTsKK30KKworLy8gbWV0aG9kOiBuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6CitfTVRMX0lOTElORSBNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUqIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6bmV3SW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZShjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZSkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRv
cl9zdGFnZV8pLCBkZXNjcmlwdG9yLCBzdGFnZSk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zOmVycm9yOgorX01UTF9J
TkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6
Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9u
c0Rlc2NyaXB0b3IqIGFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMsIE5TOjpFcnJvcioqIGVycm9y
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGlwZWxpbmVT
dGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhB
ZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXyksIGFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnMsIGVycm9yKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0
QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4
ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmpl
Y3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpV
SW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwg
YXR0YWNobWVudCwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxs
b2MKK19NVExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VGlsZVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExU
aWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VGls
ZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJv
cGVydHk6IHBpeGVsRm9ybWF0CitfTVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6VGls
ZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cGl4ZWxGb3JtYXQoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3JtYXQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGl4ZWxGb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNl
dFBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFBpeGVsRm9ybWF0
XyksIHBpeGVsRm9ybWF0KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5M
SU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5
KiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6
YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlRpbGVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhN
VExUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpKTsKK30K
KworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0Ojppbml0PE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19N
VExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ciogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6
Om9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0
XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhl
ZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OlRpbGVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50
ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0
YWNobWVudCwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MK
K19NVExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogTVRMOjpUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4oX01UTF9QUklWQVRF
X0NMUyhNVExUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBNVEw6
OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4oKTsKK30KKwor
Ly8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlRpbGVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsK
K30KKworLy8gcHJvcGVydHk6IHRpbGVGdW5jdGlvbgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlv
biogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0aWxlRnVuY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHRpbGVGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGlsZUZ1bmN0aW9uKGNvbnN0
IE1UTDo6RnVuY3Rpb24qIHRpbGVGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUZ1bmN0aW9uXyksIHRpbGVGdW5j
dGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiByYXN0ZXJTYW1wbGVDb3VudAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmFzdGVyU2Ft
cGxlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyYXN0ZXJTYW1wbGVDb3VudCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0
UmFzdGVyU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHJhc3RlclNhbXBsZUNvdW50KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSYXN0
ZXJTYW1wbGVDb3VudF8pLCByYXN0ZXJTYW1wbGVDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBj
b2xvckF0dGFjaG1lbnRzCitfTVRMX0lOTElORSBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjpjb2xvckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29sb3JBdHRhY2htZW50cykpOworfQorCisv
LyBwcm9wZXJ0eTogdGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplCitfTVRMX0lOTElORSBi
b29sIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGhyZWFkZ3JvdXBTaXplTWF0
Y2hlc1RpbGVTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxi
b29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6
ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6c2V0VGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKGJvb2wgdGhyZWFkZ3JvdXBT
aXplTWF0Y2hlc1RpbGVTaXplKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRUaHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemVfKSwg
dGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVC
dWZmZXJzCitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBN
VEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRpbGVCdWZmZXJzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3Jp
cHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aWxlQnVmZmVycykpOworfQorCisv
LyBwcm9wZXJ0eTogbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6Om1heFRvdGFsVGhy
ZWFkc1BlclRocmVhZGdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VG90YWxUaHJlYWRz
UGVyVGhyZWFkZ3JvdXApKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnNldE1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKE5TOjpV
SW50ZWdlciBtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4VG90YWxUaHJlYWRz
UGVyVGhyZWFkZ3JvdXBfKSwgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXApOworfQorCisv
LyBwcm9wZXJ0eTogYmluYXJ5QXJjaGl2ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpiaW5hcnlBcmNoaXZlcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChiaW5hcnlBcmNoaXZlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGls
ZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMoY29uc3QgTlM6OkFy
cmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmluYXJ5QXJjaGl2ZXMp
OworfQorCisvLyBwcm9wZXJ0eTogcHJlbG9hZGVkTGlicmFyaWVzCitfTVRMX0lOTElORSBOUzo6
QXJyYXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cHJlbG9hZGVkTGlicmFy
aWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByZWxvYWRlZExpYnJhcmllcykpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0UHJlbG9h
ZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogcHJlbG9hZGVkTGlicmFyaWVzKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRQcmVs
b2FkZWRMaWJyYXJpZXNfKSwgcHJlbG9hZGVkTGlicmFyaWVzKTsKK30KKworLy8gcHJvcGVydHk6
IGxpbmtlZEZ1bmN0aW9ucworX01UTF9JTkxJTkUgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6
VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bGlua2VkRnVuY3Rpb25zKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpbmtlZEZ1bmN0aW9ucyo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobGlua2VkRnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRMaW5rZWRGdW5jdGlv
bnMoY29uc3QgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIGxpbmtlZEZ1bmN0aW9ucykKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGlua2Vk
RnVuY3Rpb25zXyksIGxpbmtlZEZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0
QWRkaW5nQmluYXJ5RnVuY3Rpb25zCitfTVRMX0lOTElORSBib29sIE1UTDo6VGlsZVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcjo6c3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3VwcG9ydEFkZGlu
Z0JpbmFyeUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN1
cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnNfKSwgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9u
cyk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhDYWxsU3RhY2tEZXB0aAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bWF4Q2FsbFN0YWNr
RGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhDYWxsU3RhY2tEZXB0aCkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4
Q2FsbFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1heENhbGxTdGFja0RlcHRoKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhDYWxs
U3RhY2tEZXB0aF8pLCBtYXhDYWxsU3RhY2tEZXB0aCk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXQK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpyZXNl
dCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHJlc2V0KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMUmVzb3VyY2UuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFJlc291cmNlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2UyNjhiMTc5NDgyOWUxYTUwMTZm
NjNkMWRiZDQ5OWFjMDVlOWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlLmhwcApAQCAtMCwwICsxLDE3OCBAQAorLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwv
TVRMUmVzb3VyY2UuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisv
LworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVy
QnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisKK25h
bWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFB1cmdlYWJsZVN0YXRlKSB7
CisgICAgUHVyZ2VhYmxlU3RhdGVLZWVwQ3VycmVudCA9IDEsCisgICAgUHVyZ2VhYmxlU3RhdGVO
b25Wb2xhdGlsZSA9IDIsCisgICAgUHVyZ2VhYmxlU3RhdGVWb2xhdGlsZSA9IDMsCisgICAgUHVy
Z2VhYmxlU3RhdGVFbXB0eSA9IDQsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBDUFVD
YWNoZU1vZGUpIHsKKyAgICBDUFVDYWNoZU1vZGVEZWZhdWx0Q2FjaGUgPSAwLAorICAgIENQVUNh
Y2hlTW9kZVdyaXRlQ29tYmluZWQgPSAxLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwg
U3RvcmFnZU1vZGUpIHsKKyAgICBTdG9yYWdlTW9kZVNoYXJlZCA9IDAsCisgICAgU3RvcmFnZU1v
ZGVNYW5hZ2VkID0gMSwKKyAgICBTdG9yYWdlTW9kZVByaXZhdGUgPSAyLAorICAgIFN0b3JhZ2VN
b2RlTWVtb3J5bGVzcyA9IDMsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBIYXphcmRU
cmFja2luZ01vZGUpIHsKKyAgICBIYXphcmRUcmFja2luZ01vZGVEZWZhdWx0ID0gMCwKKyAgICBI
YXphcmRUcmFja2luZ01vZGVVbnRyYWNrZWQgPSAxLAorICAgIEhhemFyZFRyYWNraW5nTW9kZVRy
YWNrZWQgPSAyLAorfTsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgUmVzb3VyY2VPcHRp
b25zKSB7CisgICAgUmVzb3VyY2VTdG9yYWdlTW9kZVNoYXJlZCA9IDAsCisgICAgUmVzb3VyY2VI
YXphcmRUcmFja2luZ01vZGVEZWZhdWx0ID0gMCwKKyAgICBSZXNvdXJjZUNQVUNhY2hlTW9kZURl
ZmF1bHRDYWNoZSA9IDAsCisgICAgUmVzb3VyY2VPcHRpb25DUFVDYWNoZU1vZGVEZWZhdWx0ID0g
MCwKKyAgICBSZXNvdXJjZUNQVUNhY2hlTW9kZVdyaXRlQ29tYmluZWQgPSAxLAorICAgIFJlc291
cmNlT3B0aW9uQ1BVQ2FjaGVNb2RlV3JpdGVDb21iaW5lZCA9IDEsCisgICAgUmVzb3VyY2VTdG9y
YWdlTW9kZU1hbmFnZWQgPSAxNiwKKyAgICBSZXNvdXJjZVN0b3JhZ2VNb2RlUHJpdmF0ZSA9IDMy
LAorICAgIFJlc291cmNlU3RvcmFnZU1vZGVNZW1vcnlsZXNzID0gNDgsCisgICAgUmVzb3VyY2VI
YXphcmRUcmFja2luZ01vZGVVbnRyYWNrZWQgPSAyNTYsCisgICAgUmVzb3VyY2VIYXphcmRUcmFj
a2luZ01vZGVUcmFja2VkID0gNTEyLAorfTsKKworY2xhc3MgUmVzb3VyY2UgOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPFJlc291cmNlPgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgICAg
ICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgc2V0TGFi
ZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRGV2aWNlKiAgICAgICAg
ICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAgICBjcHVDYWNo
ZU1vZGUoKSBjb25zdDsKKworICAgIE1UTDo6U3RvcmFnZU1vZGUgICAgICAgIHN0b3JhZ2VNb2Rl
KCkgY29uc3Q7CisKKyAgICBNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBoYXphcmRUcmFja2luZ01v
ZGUoKSBjb25zdDsKKworICAgIE1UTDo6UmVzb3VyY2VPcHRpb25zICAgIHJlc291cmNlT3B0aW9u
cygpIGNvbnN0OworCisgICAgTVRMOjpQdXJnZWFibGVTdGF0ZSAgICAgc2V0UHVyZ2VhYmxlU3Rh
dGUoTVRMOjpQdXJnZWFibGVTdGF0ZSBzdGF0ZSk7CisKKyAgICBjbGFzcyBIZWFwKiAgICAgICAg
ICAgICBoZWFwKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICBoZWFwT2Zm
c2V0KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICBhbGxvY2F0ZWRTaXpl
KCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBtYWtlQWxpYXNhYmxlKCk7
CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICBpc0FsaWFzYWJsZSgpOworfTsKKworfQor
CisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6UmVzb3Vy
Y2U6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVzb3VyY2U6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5F
IE1UTDo6RGV2aWNlKiBNVEw6OlJlc291cmNlOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGNwdUNhY2hlTW9kZQorX01UTF9JTkxJTkUg
TVRMOjpDUFVDYWNoZU1vZGUgTVRMOjpSZXNvdXJjZTo6Y3B1Q2FjaGVNb2RlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNQVUNhY2hlTW9kZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTChjcHVDYWNoZU1vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IHN0b3Jh
Z2VNb2RlCitfTVRMX0lOTElORSBNVEw6OlN0b3JhZ2VNb2RlIE1UTDo6UmVzb3VyY2U6OnN0b3Jh
Z2VNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0
b3JhZ2VNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3JhZ2VNb2RlKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBoYXphcmRUcmFja2luZ01vZGUKK19NVExfSU5MSU5FIE1UTDo6SGF6YXJkVHJh
Y2tpbmdNb2RlIE1UTDo6UmVzb3VyY2U6OmhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpIYXphcmRUcmFja2luZ01vZGU+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoaGF6YXJkVHJhY2tpbmdNb2RlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiByZXNvdXJjZU9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VPcHRpb25zIE1U
TDo6UmVzb3VyY2U6OnJlc291cmNlT3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZU9wdGlvbnM+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocmVzb3VyY2VPcHRpb25zKSk7Cit9CisKKy8vIG1ldGhvZDogc2V0UHVyZ2VhYmxlU3RhdGU6
CitfTVRMX0lOTElORSBNVEw6OlB1cmdlYWJsZVN0YXRlIE1UTDo6UmVzb3VyY2U6OnNldFB1cmdl
YWJsZVN0YXRlKE1UTDo6UHVyZ2VhYmxlU3RhdGUgc3RhdGUpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpQdXJnZWFibGVTdGF0ZT4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRQdXJnZWFibGVTdGF0ZV8pLCBzdGF0ZSk7Cit9CisKKy8vIHByb3BlcnR5OiBoZWFwCitf
TVRMX0lOTElORSBNVEw6OkhlYXAqIE1UTDo6UmVzb3VyY2U6OmhlYXAoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGVhcCo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoaGVhcCkpOworfQorCisvLyBwcm9wZXJ0eTogaGVhcE9mZnNldAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6UmVzb3VyY2U6OmhlYXBPZmZzZXQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChoZWFwT2Zmc2V0KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhbGxvY2F0ZWRTaXplCitfTVRM
X0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZXNvdXJjZTo6YWxsb2NhdGVkU2l6ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGFsbG9jYXRlZFNpemUpKTsKK30KKworLy8gbWV0aG9kOiBtYWtlQWxp
YXNhYmxlCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2U6Om1ha2VBbGlhc2FibGUoKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCht
YWtlQWxpYXNhYmxlKSk7Cit9CisKKy8vIG1ldGhvZDogaXNBbGlhc2FibGUKK19NVExfSU5MSU5F
IGJvb2wgTVRMOjpSZXNvdXJjZTo6aXNBbGlhc2FibGUoKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNBbGlhc2FibGUpKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExS
ZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjY4M2FjMWY4YjE2YmQ1ZTViMWJhM2I3YmUyMmVmNzc5NGY0OWI5MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsOTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFJlc291cmNlU3Rh
dGVDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExI
ZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVy
LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU3BhcnNl
VGV4dHVyZU1hcHBpbmdNb2RlKSB7CisgICAgU3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlTWFwID0g
MCwKKyAgICBTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGVVbm1hcCA9IDEsCit9OworCitzdHJ1Y3Qg
TWFwSW5kaXJlY3RBcmd1bWVudHMKK3sKKyAgICB1aW50MzJfdCByZWdpb25PcmlnaW5YOworICAg
IHVpbnQzMl90IHJlZ2lvbk9yaWdpblk7CisgICAgdWludDMyX3QgcmVnaW9uT3JpZ2luWjsKKyAg
ICB1aW50MzJfdCByZWdpb25TaXplV2lkdGg7CisgICAgdWludDMyX3QgcmVnaW9uU2l6ZUhlaWdo
dDsKKyAgICB1aW50MzJfdCByZWdpb25TaXplRGVwdGg7CisgICAgdWludDMyX3QgbWlwTWFwTGV2
ZWw7CisgICAgdWludDMyX3Qgc2xpY2VJZDsKK30gX01UTF9QQUNLRUQ7CisKK2NsYXNzIFJlc291
cmNlU3RhdGVDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rlcj4KK3sKK3B1YmxpYzoKKyAgICB2b2lk
IHVwZGF0ZVRleHR1cmVNYXBwaW5ncyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBNVEw6OlNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZSBtb2RlLCBjb25zdCBNVEw6OlJlZ2lvbiog
cmVnaW9ucywgY29uc3QgTlM6OlVJbnRlZ2VyKiBtaXBMZXZlbHMsIGNvbnN0IE5TOjpVSW50ZWdl
ciogc2xpY2VzLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucyk7CisKKyAgICB2b2lkIHVwZGF0ZVRl
eHR1cmVNYXBwaW5nKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3Bh
cnNlVGV4dHVyZU1hcHBpbmdNb2RlIG1vZGUsIGNvbnN0IE1UTDo6UmVnaW9uIHJlZ2lvbiwgY29u
c3QgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBjb25zdCBOUzo6VUludGVnZXIgc2xpY2UpOworCisg
ICAgdm9pZCB1cGRhdGVUZXh0dXJlTWFwcGluZyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJl
LCBjb25zdCBNVEw6OlNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZSBtb2RlLCBjb25zdCBjbGFzcyBC
dWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQp
OworCisgICAgdm9pZCB1cGRhdGVGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVuY2UpOworCisg
ICAgdm9pZCB3YWl0Rm9yRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKK307CisKK30K
KworLy8gbWV0aG9kOiB1cGRhdGVUZXh0dXJlTWFwcGluZ3M6bW9kZTpyZWdpb25zOm1pcExldmVs
czpzbGljZXM6bnVtUmVnaW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZVN0YXRl
Q29tbWFuZEVuY29kZXI6OnVwZGF0ZVRleHR1cmVNYXBwaW5ncyhjb25zdCBNVEw6OlRleHR1cmUq
IHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlIG1vZGUsIGNvbnN0
IE1UTDo6UmVnaW9uKiByZWdpb25zLCBjb25zdCBOUzo6VUludGVnZXIqIG1pcExldmVscywgY29u
c3QgTlM6OlVJbnRlZ2VyKiBzbGljZXMsIE5TOjpVSW50ZWdlciBudW1SZWdpb25zKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1cGRhdGVU
ZXh0dXJlTWFwcGluZ3NfbW9kZV9yZWdpb25zX21pcExldmVsc19zbGljZXNfbnVtUmVnaW9uc18p
LCB0ZXh0dXJlLCBtb2RlLCByZWdpb25zLCBtaXBMZXZlbHMsIHNsaWNlcywgbnVtUmVnaW9ucyk7
Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlVGV4dHVyZU1hcHBpbmc6bW9kZTpyZWdpb246bWlwTGV2
ZWw6c2xpY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNv
ZGVyOjp1cGRhdGVUZXh0dXJlTWFwcGluZyhjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlIG1vZGUsIGNvbnN0IE1UTDo6UmVnaW9u
IHJlZ2lvbiwgY29uc3QgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBjb25zdCBOUzo6VUludGVnZXIg
c2xpY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHVwZGF0ZVRleHR1cmVNYXBwaW5nX21vZGVfcmVnaW9uX21pcExldmVsX3NsaWNlXyks
IHRleHR1cmUsIG1vZGUsIHJlZ2lvbiwgbWlwTGV2ZWwsIHNsaWNlKTsKK30KKworLy8gbWV0aG9k
OiB1cGRhdGVUZXh0dXJlTWFwcGluZzptb2RlOmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVy
T2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rl
cjo6dXBkYXRlVGV4dHVyZU1hcHBpbmcoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBNVEw6OlNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZSBtb2RlLCBjb25zdCBNVEw6OkJ1ZmZlciog
aW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRl
VGV4dHVyZU1hcHBpbmdfbW9kZV9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8p
LCB0ZXh0dXJlLCBtb2RlLCBpbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOwor
fQorCisvLyBtZXRob2Q6IHVwZGF0ZUZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291
cmNlU3RhdGVDb21tYW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVu
Y2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHVwZGF0ZUZlbmNlXyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB3YWl0Rm9yRmVuY2U6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyOjp3YWl0
Rm9yRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdhaXRGb3JGZW5jZV8pLCBmZW5jZSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
UmVzb3VyY2VTdGF0ZVBhc3MuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFJlc291cmNlU3RhdGVQYXNzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzc3MGY2NDAyMTMxN2Qw
MjQ5Y2VhZWVmMWI1ZTZjYjQ0OGFjYWE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVQYXNzLmhwcApAQCAtMCww
ICsxLDE2NSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwCisvLworLy8gQ29weXJpZ2h0
IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5o
cHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRl
LmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKK25hbWVzcGFj
ZSBNVEwKK3sKK2NsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVz
b3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsK
KworICAgIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQnVmZmVyKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFNhbXBsZUJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2FtcGxlQnVm
ZmVyKiBzYW1wbGVCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5k
ZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6
VUludGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kT2ZF
bmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5kT2ZFbmNvZGVyU2Ft
cGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK307CisKK2Ns
YXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBS
ZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFs
bG9jKCk7CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0
YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmpl
Y3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRP
YmplY3QoY29uc3QgY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7Cit9
OworCitjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlp
bmc8UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBj
bGFzcyBSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgYWxs
b2MoKTsKKworICAgIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIFJlc291cmNlU3Rh
dGVQYXNzRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVN0YXRlUGFzc0Rl
c2NyaXB0b3IoKTsKKworICAgIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdDsK
K307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVz
b3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZXNv
dXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZXNvdXJj
ZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
cj4oKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpD
b3VudGVyU2FtcGxlQnVmZmVyKiBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzYW1wbGVCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
c291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFNhbXBs
ZUJ1ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlcikKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
U2FtcGxlQnVmZmVyXyksIHNhbXBsZUJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5OiBzdGFydE9m
RW5jb2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZXNvdXJj
ZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzdGFydE9mRW5jb2Rl
clNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhcnRPZkVuY29kZXJTYW1wbGVJ
bmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRl
eChOUzo6VUludGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhcnRPZkVuY29k
ZXJTYW1wbGVJbmRleF8pLCBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK30KKworLy8gcHJv
cGVydHk6IGVuZE9mRW5jb2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpl
bmRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZVN0YXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRFbmRPZkVuY29kZXJTYW1w
bGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEVuZE9mRW5j
b2RlclNhbXBsZUluZGV4XyksIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK30KKworLy8gc3Rh
dGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlc291cmNlU3RhdGVQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExSZXNvdXJjZVN0
YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0Ojppbml0PE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1
YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudElu
ZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VTdGF0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
QXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50
SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudCwgYXR0YWNo
bWVudEluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKiBNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVz
Y3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJl
c291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZXNvdXJjZVN0
YXRlUGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBN
VEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rl
c2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVz
b3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiByZXNv
dXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBh
c3NEZXNjcmlwdG9yKiBNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcjo6cmVzb3VyY2VT
dGF0ZVBhc3NEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVz
b3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChyZXNvdXJjZVN0YXRl
UGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlckF0dGFjaG1l
bnRzCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3I6OnNh
bXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyQXR0YWNobWVu
dHMpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExTYW1wbGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExTYW1wbGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGU3OTE1MmUxNWE4N2E0ZWEyOWUwY2U2OWUyYjQ2
YzkwMDQ1MjNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFNhbXBsZXIuaHBwCkBAIC0wLDAgKzEsMzEwIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExTYW1wbGVy
LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAi
CisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRGVwdGhTdGVuY2lsLmhwcCIKKyNpbmNsdWRlICJN
VExTYW1wbGVyLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdl
ciwgU2FtcGxlck1pbk1hZ0ZpbHRlcikgeworICAgIFNhbXBsZXJNaW5NYWdGaWx0ZXJOZWFyZXN0
ID0gMCwKKyAgICBTYW1wbGVyTWluTWFnRmlsdGVyTGluZWFyID0gMSwKK307CisKK19NVExfRU5V
TShOUzo6VUludGVnZXIsIFNhbXBsZXJNaXBGaWx0ZXIpIHsKKyAgICBTYW1wbGVyTWlwRmlsdGVy
Tm90TWlwbWFwcGVkID0gMCwKKyAgICBTYW1wbGVyTWlwRmlsdGVyTmVhcmVzdCA9IDEsCisgICAg
U2FtcGxlck1pcEZpbHRlckxpbmVhciA9IDIsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2Vy
LCBTYW1wbGVyQWRkcmVzc01vZGUpIHsKKyAgICBTYW1wbGVyQWRkcmVzc01vZGVDbGFtcFRvRWRn
ZSA9IDAsCisgICAgU2FtcGxlckFkZHJlc3NNb2RlTWlycm9yQ2xhbXBUb0VkZ2UgPSAxLAorICAg
IFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdCA9IDIsCisgICAgU2FtcGxlckFkZHJlc3NNb2RlTWly
cm9yUmVwZWF0ID0gMywKKyAgICBTYW1wbGVyQWRkcmVzc01vZGVDbGFtcFRvWmVybyA9IDQsCisg
ICAgU2FtcGxlckFkZHJlc3NNb2RlQ2xhbXBUb0JvcmRlckNvbG9yID0gNSwKK307CisKK19NVExf
RU5VTShOUzo6VUludGVnZXIsIFNhbXBsZXJCb3JkZXJDb2xvcikgeworICAgIFNhbXBsZXJCb3Jk
ZXJDb2xvclRyYW5zcGFyZW50QmxhY2sgPSAwLAorICAgIFNhbXBsZXJCb3JkZXJDb2xvck9wYXF1
ZUJsYWNrID0gMSwKKyAgICBTYW1wbGVyQm9yZGVyQ29sb3JPcGFxdWVXaGl0ZSA9IDIsCit9Owor
CitjbGFzcyBTYW1wbGVyRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxTYW1wbGVyRGVz
Y3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgU2FtcGxlckRlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBTYW1wbGVyRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsK
KworICAgIE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciAgICAgICAgbWluRmlsdGVyKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNaW5GaWx0ZXIoTVRMOjpT
YW1wbGVyTWluTWFnRmlsdGVyIG1pbkZpbHRlcik7CisKKyAgICBNVEw6OlNhbXBsZXJNaW5NYWdG
aWx0ZXIgICAgICAgIG1hZ0ZpbHRlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0TWFnRmlsdGVyKE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciBtYWdGaWx0
ZXIpOworCisgICAgTVRMOjpTYW1wbGVyTWlwRmlsdGVyICAgICAgICAgICBtaXBGaWx0ZXIoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pcEZpbHRlcihN
VEw6OlNhbXBsZXJNaXBGaWx0ZXIgbWlwRmlsdGVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICAgICAgbWF4QW5pc290cm9weSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0TWF4QW5pc290cm9weShOUzo6VUludGVnZXIgbWF4QW5pc290
cm9weSk7CisKKyAgICBNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZSAgICAgICAgIHNBZGRyZXNzTW9k
ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U0FkZHJl
c3NNb2RlKE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIHNBZGRyZXNzTW9kZSk7CisKKyAgICBNVEw6
OlNhbXBsZXJBZGRyZXNzTW9kZSAgICAgICAgIHRBZGRyZXNzTW9kZSgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VEFkZHJlc3NNb2RlKE1UTDo6U2FtcGxl
ckFkZHJlc3NNb2RlIHRBZGRyZXNzTW9kZSk7CisKKyAgICBNVEw6OlNhbXBsZXJBZGRyZXNzTW9k
ZSAgICAgICAgIHJBZGRyZXNzTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0UkFkZHJlc3NNb2RlKE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIHJBZGRy
ZXNzTW9kZSk7CisKKyAgICBNVEw6OlNhbXBsZXJCb3JkZXJDb2xvciAgICAgICAgIGJvcmRlckNv
bG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCb3Jk
ZXJDb2xvcihNVEw6OlNhbXBsZXJCb3JkZXJDb2xvciBib3JkZXJDb2xvcik7CisKKyAgICBib29s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRDb29yZGluYXRlcygpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Tm9ybWFsaXplZENvb3Jk
aW5hdGVzKGJvb2wgbm9ybWFsaXplZENvb3JkaW5hdGVzKTsKKworICAgIGZsb2F0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9kTWluQ2xhbXAoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldExvZE1pbkNsYW1wKGZsb2F0IGxvZE1pbkNsYW1wKTsKKwor
ICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9kTWF4Q2xhbXAoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExvZE1heENsYW1wKGZsb2F0
IGxvZE1heENsYW1wKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9k
QXZlcmFnZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TG9kQXZlcmFnZShib29sIGxvZEF2ZXJhZ2UpOworCisgICAgTVRMOjpDb21wYXJlRnVuY3Rpb24g
ICAgICAgICAgICBjb21wYXJlRnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlvbiBj
b21wYXJlRnVuY3Rpb24pOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dXBwb3J0QXJndW1lbnRCdWZmZXJzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzKGJvb2wgc3VwcG9ydEFyZ3VtZW50
QnVmZmVycyk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25z
dCBOUzo6U3RyaW5nKiBsYWJlbCk7Cit9OworCitjbGFzcyBTYW1wbGVyU3RhdGUgOiBwdWJsaWMg
TlM6OlJlZmVyZW5jaW5nPFNhbXBsZXJTdGF0ZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5n
KiAgIGxhYmVsKCkgY29uc3Q7CisKKyAgICBjbGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0Owor
fTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTYW1w
bGVyRGVzY3JpcHRvciogTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlNhbXBsZXJEZXNjcmlwdG9yPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTFNhbXBsZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpTYW1wbGVyRGVzY3JpcHRvciogTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpTYW1wbGVyRGVzY3Jp
cHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IG1pbkZpbHRlcgorX01UTF9JTkxJTkUgTVRMOjpT
YW1wbGVyTWluTWFnRmlsdGVyIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6Om1pbkZpbHRlcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyTWluTWFn
RmlsdGVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1pbkZpbHRlcikpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldE1pbkZpbHRlcihNVEw6OlNhbXBs
ZXJNaW5NYWdGaWx0ZXIgbWluRmlsdGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNaW5GaWx0ZXJfKSwgbWluRmlsdGVyKTsKK30K
KworLy8gcHJvcGVydHk6IG1hZ0ZpbHRlcgorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyTWluTWFn
RmlsdGVyIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6Om1hZ0ZpbHRlcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyTWluTWFnRmlsdGVyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG1hZ0ZpbHRlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldE1hZ0ZpbHRlcihNVEw6OlNhbXBsZXJNaW5NYWdGaWx0
ZXIgbWFnRmlsdGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRNYWdGaWx0ZXJfKSwgbWFnRmlsdGVyKTsKK30KKworLy8gcHJvcGVy
dHk6IG1pcEZpbHRlcgorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyTWlwRmlsdGVyIE1UTDo6U2Ft
cGxlckRlc2NyaXB0b3I6Om1pcEZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyTWlwRmlsdGVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG1pcEZpbHRlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0
b3I6OnNldE1pcEZpbHRlcihNVEw6OlNhbXBsZXJNaXBGaWx0ZXIgbWlwRmlsdGVyKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNaXBG
aWx0ZXJfKSwgbWlwRmlsdGVyKTsKK30KKworLy8gcHJvcGVydHk6IG1heEFuaXNvdHJvcHkKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjptYXhBbmlzb3Ry
b3B5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4QW5pc290cm9weSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldE1heEFuaXNvdHJvcHkoTlM6OlVJ
bnRlZ2VyIG1heEFuaXNvdHJvcHkpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heEFuaXNvdHJvcHlfKSwgbWF4QW5pc290cm9weSk7
Cit9CisKKy8vIHByb3BlcnR5OiBzQWRkcmVzc01vZGUKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxl
ckFkZHJlc3NNb2RlIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNBZGRyZXNzTW9kZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyQWRkcmVzc01v
ZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc0FkZHJlc3NNb2RlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0U0FkZHJlc3NNb2RlKE1UTDo6U2Ft
cGxlckFkZHJlc3NNb2RlIHNBZGRyZXNzTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U0FkZHJlc3NNb2RlXyksIHNBZGRyZXNz
TW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0QWRkcmVzc01vZGUKK19NVExfSU5MSU5FIE1UTDo6
U2FtcGxlckFkZHJlc3NNb2RlIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnRBZGRyZXNzTW9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyQWRk
cmVzc01vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodEFkZHJlc3NNb2RlKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0VEFkZHJlc3NNb2RlKE1U
TDo6U2FtcGxlckFkZHJlc3NNb2RlIHRBZGRyZXNzTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VEFkZHJlc3NNb2RlXyksIHRB
ZGRyZXNzTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiByQWRkcmVzc01vZGUKK19NVExfSU5MSU5F
IE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnJBZGRyZXNz
TW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1w
bGVyQWRkcmVzc01vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwockFkZHJlc3NNb2RlKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0UkFkZHJlc3NN
b2RlKE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIHJBZGRyZXNzTW9kZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UkFkZHJlc3NNb2Rl
XyksIHJBZGRyZXNzTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBib3JkZXJDb2xvcgorX01UTF9J
TkxJTkUgTVRMOjpTYW1wbGVyQm9yZGVyQ29sb3IgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6Ym9y
ZGVyQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
U2FtcGxlckJvcmRlckNvbG9yPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJvcmRlckNvbG9yKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0Qm9yZGVy
Q29sb3IoTVRMOjpTYW1wbGVyQm9yZGVyQ29sb3IgYm9yZGVyQ29sb3IpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvcmRlckNvbG9y
XyksIGJvcmRlckNvbG9yKTsKK30KKworLy8gcHJvcGVydHk6IG5vcm1hbGl6ZWRDb29yZGluYXRl
cworX01UTF9JTkxJTkUgYm9vbCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpub3JtYWxpemVkQ29v
cmRpbmF0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobm9ybWFsaXplZENvb3JkaW5hdGVzKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0Tm9ybWFsaXplZENvb3Jk
aW5hdGVzKGJvb2wgbm9ybWFsaXplZENvb3JkaW5hdGVzKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXROb3JtYWxpemVkQ29vcmRpbmF0
ZXNfKSwgbm9ybWFsaXplZENvb3JkaW5hdGVzKTsKK30KKworLy8gcHJvcGVydHk6IGxvZE1pbkNs
YW1wCitfTVRMX0lOTElORSBmbG9hdCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpsb2RNaW5DbGFt
cCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobG9kTWluQ2xhbXApKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRMb2RNaW5DbGFtcChmbG9hdCBsb2RNaW5DbGFtcCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TG9kTWluQ2xhbXBfKSwgbG9kTWluQ2xhbXApOworfQorCisvLyBwcm9wZXJ0eTogbG9kTWF4
Q2xhbXAKK19NVExfSU5MSU5FIGZsb2F0IE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmxvZE1heENs
YW1wKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxmbG9hdD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChsb2RNYXhDbGFtcCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldExvZE1heENsYW1wKGZsb2F0IGxvZE1heENsYW1w
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRMb2RNYXhDbGFtcF8pLCBsb2RNYXhDbGFtcCk7Cit9CisKKy8vIHByb3BlcnR5OiBsb2RB
dmVyYWdlCitfTVRMX0lOTElORSBib29sIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmxvZEF2ZXJh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobG9kQXZlcmFnZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldExvZEF2ZXJhZ2UoYm9vbCBsb2RBdmVyYWdlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRM
b2RBdmVyYWdlXyksIGxvZEF2ZXJhZ2UpOworfQorCisvLyBwcm9wZXJ0eTogY29tcGFyZUZ1bmN0
aW9uCitfTVRMX0lOTElORSBNVEw6OkNvbXBhcmVGdW5jdGlvbiBNVEw6OlNhbXBsZXJEZXNjcmlw
dG9yOjpjb21wYXJlRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6Q29tcGFyZUZ1bmN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbXBh
cmVGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0
b3I6OnNldENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlvbiBjb21wYXJlRnVuY3Rp
b24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldENvbXBhcmVGdW5jdGlvbl8pLCBjb21wYXJlRnVuY3Rpb24pOworfQorCisvLyBwcm9w
ZXJ0eTogc3VwcG9ydEFyZ3VtZW50QnVmZmVycworX01UTF9JTkxJTkUgYm9vbCBNVEw6OlNhbXBs
ZXJEZXNjcmlwdG9yOjpzdXBwb3J0QXJndW1lbnRCdWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0QXJndW1lbnRCdWZmZXJzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1w
bGVyRGVzY3JpcHRvcjo6c2V0U3VwcG9ydEFyZ3VtZW50QnVmZmVycyhib29sIHN1cHBvcnRBcmd1
bWVudEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnNfKSwgc3VwcG9ydEFyZ3VtZW50
QnVmZmVycyk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmlu
ZyogTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxh
YmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0
TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKwor
Ly8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlNhbXBsZXJT
dGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OlNhbXBsZXJTdGF0ZTo6
ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRl
dmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERl
c2NyaXB0b3IuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFN0
YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzkyNDRlMjRlMDIxOTM5
MjNhM2M0MTczZDE2ZDk1MGMxZWU0MTJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhw
cApAQCAtMCwwICsxLDM4MSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBw
CisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNp
bmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5ocHA+CisKKyNpbmNsdWRlICJNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAiCisK
K25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIEF0dHJpYnV0ZUZvcm1h
dCkgeworICAgIEF0dHJpYnV0ZUZvcm1hdEludmFsaWQgPSAwLAorICAgIEF0dHJpYnV0ZUZvcm1h
dFVDaGFyMiA9IDEsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIzID0gMiwKKyAgICBBdHRyaWJ1
dGVGb3JtYXRVQ2hhcjQgPSAzLAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXIyID0gNCwKKyAgICBB
dHRyaWJ1dGVGb3JtYXRDaGFyMyA9IDUsCisgICAgQXR0cmlidXRlRm9ybWF0Q2hhcjQgPSA2LAor
ICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyMk5vcm1hbGl6ZWQgPSA3LAorICAgIEF0dHJpYnV0ZUZv
cm1hdFVDaGFyM05vcm1hbGl6ZWQgPSA4LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyNE5vcm1h
bGl6ZWQgPSA5LAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXIyTm9ybWFsaXplZCA9IDEwLAorICAg
IEF0dHJpYnV0ZUZvcm1hdENoYXIzTm9ybWFsaXplZCA9IDExLAorICAgIEF0dHJpYnV0ZUZvcm1h
dENoYXI0Tm9ybWFsaXplZCA9IDEyLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydDIgPSAxMywK
KyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQzID0gMTQsCisgICAgQXR0cmlidXRlRm9ybWF0VVNo
b3J0NCA9IDE1LAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0MiA9IDE2LAorICAgIEF0dHJpYnV0
ZUZvcm1hdFNob3J0MyA9IDE3LAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0NCA9IDE4LAorICAg
IEF0dHJpYnV0ZUZvcm1hdFVTaG9ydDJOb3JtYWxpemVkID0gMTksCisgICAgQXR0cmlidXRlRm9y
bWF0VVNob3J0M05vcm1hbGl6ZWQgPSAyMCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQ0Tm9y
bWFsaXplZCA9IDIxLAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0Mk5vcm1hbGl6ZWQgPSAyMiwK
KyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydDNOb3JtYWxpemVkID0gMjMsCisgICAgQXR0cmlidXRl
Rm9ybWF0U2hvcnQ0Tm9ybWFsaXplZCA9IDI0LAorICAgIEF0dHJpYnV0ZUZvcm1hdEhhbGYyID0g
MjUsCisgICAgQXR0cmlidXRlRm9ybWF0SGFsZjMgPSAyNiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRI
YWxmNCA9IDI3LAorICAgIEF0dHJpYnV0ZUZvcm1hdEZsb2F0ID0gMjgsCisgICAgQXR0cmlidXRl
Rm9ybWF0RmxvYXQyID0gMjksCisgICAgQXR0cmlidXRlRm9ybWF0RmxvYXQzID0gMzAsCisgICAg
QXR0cmlidXRlRm9ybWF0RmxvYXQ0ID0gMzEsCisgICAgQXR0cmlidXRlRm9ybWF0SW50ID0gMzIs
CisgICAgQXR0cmlidXRlRm9ybWF0SW50MiA9IDMzLAorICAgIEF0dHJpYnV0ZUZvcm1hdEludDMg
PSAzNCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRJbnQ0ID0gMzUsCisgICAgQXR0cmlidXRlRm9ybWF0
VUludCA9IDM2LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVJbnQyID0gMzcsCisgICAgQXR0cmlidXRl
Rm9ybWF0VUludDMgPSAzOCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50NCA9IDM5LAorICAgIEF0
dHJpYnV0ZUZvcm1hdEludDEwMTAxMDJOb3JtYWxpemVkID0gNDAsCisgICAgQXR0cmlidXRlRm9y
bWF0VUludDEwMTAxMDJOb3JtYWxpemVkID0gNDEsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXI0
Tm9ybWFsaXplZF9CR1JBID0gNDIsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIgPSA0NSwKKyAg
ICBBdHRyaWJ1dGVGb3JtYXRDaGFyID0gNDYsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXJOb3Jt
YWxpemVkID0gNDcsCisgICAgQXR0cmlidXRlRm9ybWF0Q2hhck5vcm1hbGl6ZWQgPSA0OCwKKyAg
ICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQgPSA0OSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydCA9
IDUwLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydE5vcm1hbGl6ZWQgPSA1MSwKKyAgICBBdHRy
aWJ1dGVGb3JtYXRTaG9ydE5vcm1hbGl6ZWQgPSA1MiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRIYWxm
ID0gNTMsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBJbmRleFR5cGUpIHsKKyAgICBJ
bmRleFR5cGVVSW50MTYgPSAwLAorICAgIEluZGV4VHlwZVVJbnQzMiA9IDEsCit9OworCitfTVRM
X0VOVU0oTlM6OlVJbnRlZ2VyLCBTdGVwRnVuY3Rpb24pIHsKKyAgICBTdGVwRnVuY3Rpb25Db25z
dGFudCA9IDAsCisgICAgU3RlcEZ1bmN0aW9uUGVyVmVydGV4ID0gMSwKKyAgICBTdGVwRnVuY3Rp
b25QZXJJbnN0YW5jZSA9IDIsCisgICAgU3RlcEZ1bmN0aW9uUGVyUGF0Y2ggPSAzLAorICAgIFN0
ZXBGdW5jdGlvblBlclBhdGNoQ29udHJvbFBvaW50ID0gNCwKKyAgICBTdGVwRnVuY3Rpb25UaHJl
YWRQb3NpdGlvbkluR3JpZFggPSA1LAorICAgIFN0ZXBGdW5jdGlvblRocmVhZFBvc2l0aW9uSW5H
cmlkWSA9IDYsCisgICAgU3RlcEZ1bmN0aW9uVGhyZWFkUG9zaXRpb25JbkdyaWRYSW5kZXhlZCA9
IDcsCisgICAgU3RlcEZ1bmN0aW9uVGhyZWFkUG9zaXRpb25JbkdyaWRZSW5kZXhlZCA9IDgsCit9
OworCitjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEJ1
ZmZlckxheW91dERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEJ1ZmZl
ckxheW91dERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCdWZmZXJMYXlvdXREZXNj
cmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmlkZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRTdHJpZGUoTlM6OlVJbnRlZ2VyIHN0cmlkZSk7CisKKyAgICBNVEw6OlN0
ZXBGdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgc3RlcEZ1bmN0aW9uKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZXBGdW5jdGlvbihNVEw6
OlN0ZXBGdW5jdGlvbiBzdGVwRnVuY3Rpb24pOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZXBSYXRlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFN0ZXBSYXRlKE5TOjpVSW50ZWdlciBzdGVwUmF0ZSk7Cit9
OworCitjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xh
c3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xh
c3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdl
ciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRPYmplY3QoY29uc3QgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvciogYnVmZmVyRGVz
YywgTlM6OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2NsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3Ig
OiBwdWJsaWMgTlM6OkNvcHlpbmc8QXR0cmlidXRlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNz
IEF0dHJpYnV0ZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkF0dHJpYnV0
ZUZvcm1hdCAgICAgICAgICAgICAgZm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEZvcm1hdChNVEw6OkF0dHJpYnV0ZUZvcm1hdCBmb3JtYXQp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPZmZzZXQoTlM6OlVJ
bnRlZ2VyIG9mZnNldCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
YnVmZmVySW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0QnVmZmVySW5kZXgoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKK307CisKK2NsYXNz
IEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QXR0cmli
dXRlRGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBdHRyaWJ1
dGVEZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBdHRyaWJ1dGVEZXNjcmlw
dG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9y
KiAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBBdHRy
aWJ1dGVEZXNjcmlwdG9yKiBhdHRyaWJ1dGVEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpOworfTsK
KworY2xhc3MgU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8
U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNz
IFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgU3RhZ2VJ
bnB1dE91dHB1dERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xhc3Mg
U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIHN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKCk7
CisKKyAgICBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqICAgICAgIGxheW91dHMo
KSBjb25zdDsKKworICAgIGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogICAgICAgICAg
YXR0cmlidXRlcygpIGNvbnN0OworCisgICAgTVRMOjpJbmRleFR5cGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRleFR5cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEluZGV4VHlwZShNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEJ1
ZmZlckluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRJbmRleEJ1ZmZlckluZGV4KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlckluZGV4
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQo
KTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjphbGxv
YygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QnVmZmVyTGF5b3V0RGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExCdWZmZXJMYXlvdXREZXNjcmlwdG9yKSk7Cit9
CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlw
dG9yKiBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0Ojppbml0PE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcj4oKTsKK30KKworLy8g
cHJvcGVydHk6IHN0cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QnVmZmVyTGF5
b3V0RGVzY3JpcHRvcjo6c3RyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RyaWRlKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzZXRTdHJp
ZGUoTlM6OlVJbnRlZ2VyIHN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RyaWRlXyksIHN0cmlkZSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBzdGVwRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6U3RlcEZ1bmN0aW9uIE1UTDo6
QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RlcEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZXBGdW5jdGlvbj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdGVwRnVuY3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZl
ckxheW91dERlc2NyaXB0b3I6OnNldFN0ZXBGdW5jdGlvbihNVEw6OlN0ZXBGdW5jdGlvbiBzdGVw
RnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFN0ZXBGdW5jdGlvbl8pLCBzdGVwRnVuY3Rpb24pOworfQorCisvLyBwcm9w
ZXJ0eTogc3RlcFJhdGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkJ1ZmZlckxheW91
dERlc2NyaXB0b3I6OnN0ZXBSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlcFJhdGUpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnNldFN0
ZXBSYXRlKE5TOjpVSW50ZWdlciBzdGVwUmF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlcFJhdGVfKSwgc3RlcFJhdGUpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlv
dXREZXNjcmlwdG9yQXJyYXkqIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjphbGxv
YygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QnVmZmVyTGF5b3V0RGVz
Y3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEJ1ZmZlckxheW91dERlc2NyaXB0b3JB
cnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyTGF5
b3V0RGVzY3JpcHRvckFycmF5KiBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheTo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpCdWZmZXJMYXlvdXREZXNj
cmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0
OgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBNVEw6OkJ1ZmZlckxh
eW91dERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3IqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBpbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25z
dCBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGJ1ZmZlckRlc2MsIE5TOjpVSW50ZWdlciBp
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBidWZmZXJEZXNjLCBpbmRleCk7
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0
ZURlc2NyaXB0b3IqIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I+KF9NVExfUFJJ
VkFURV9DTFMoTVRMQXR0cmlidXRlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpBdHRyaWJ1dGVEZXNj
cmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkF0dHJp
YnV0ZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBmb3JtYXQKK19NVExfSU5MSU5F
IE1UTDo6QXR0cmlidXRlRm9ybWF0IE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6Zm9ybWF0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkF0dHJpYnV0ZUZv
cm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChmb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OnNldEZvcm1hdChNVEw6OkF0dHJpYnV0ZUZv
cm1hdCBmb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEZvcm1hdF8pLCBmb3JtYXQpOworfQorCisvLyBwcm9wZXJ0eTogb2Zm
c2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yOjpv
ZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OnNldE9mZnNldChOUzo6VUludGVnZXIgb2Zm
c2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRPZmZzZXRfKSwgb2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckluZGV4
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yOjpidWZm
ZXJJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlckluZGV4KSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yOjpzZXRCdWZmZXJJbmRleChOUzo6
VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlckluZGV4XyksIGJ1ZmZlckluZGV4KTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlRGVz
Y3JpcHRvckFycmF5KiBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJh
eT4oX01UTF9QUklWQVRFX0NMUyhNVExBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkpKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJh
eSogTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0Ojppbml0PE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5PigpOworfQorCisv
LyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6QXR0
cmlidXRlRGVzY3JpcHRvciogTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6Om9iamVjdChO
Uzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBdHRyaWJ1dGVEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdElu
ZGV4ZWRTdWJzY3JpcHRfKSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdElu
ZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRv
ckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yKiBhdHRyaWJ1
dGVEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRf
KSwgYXR0cmlidXRlRGVzYywgaW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogTVRMOjpTdGFnZUlu
cHV0T3V0cHV0RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojph
bGxvYzxNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogTVRMOjpTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8
TVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhv
ZDogc3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6U3RhZ2VJbnB1
dE91dHB1dERlc2NyaXB0b3IqIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OnN0YWdl
SW5wdXRPdXRwdXREZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExT
dGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoc3RhZ2VJbnB1dE91
dHB1dERlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IGxheW91dHMKK19NVExfSU5MSU5F
IE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiBNVEw6OlN0YWdlSW5wdXRPdXRwdXRE
ZXNjcmlwdG9yOjpsYXlvdXRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobGF5b3V0cykpOworfQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlcworX01UTF9JTkxJ
TkUgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERl
c2NyaXB0b3I6OmF0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChhdHRyaWJ1dGVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleFR5cGUKK19NVExfSU5M
SU5FIE1UTDo6SW5kZXhUeXBlIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OmluZGV4
VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRl
eFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXhUeXBlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6c2V0SW5kZXhUeXBlKE1U
TDo6SW5kZXhUeXBlIGluZGV4VHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhUeXBlXyksIGluZGV4VHlwZSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpbmRleEJ1ZmZlckluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6aW5kZXhCdWZmZXJJbmRleCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGluZGV4QnVmZmVySW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjpzZXRJbmRleEJ1ZmZlckluZGV4KE5T
OjpVSW50ZWdlciBpbmRleEJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleEJ1ZmZlckluZGV4XyksIGluZGV4
QnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUZXh0dXJlLmhw
cCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUZXh0dXJlLmhwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYTJiYTQ5MGU3YWY4NzVjNjIzZGYxODAwMThjNDAxNGNlNDAwMzkzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFRl
eHR1cmUuaHBwCkBAIC0wLDAgKzEsNjU4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExUZXh0dXJlLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMUGl4ZWxGb3JtYXQuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIK
KyNpbmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisjaW5j
bHVkZSA8SU9TdXJmYWNlL0lPU3VyZmFjZVJlZi5oPgorCituYW1lc3BhY2UgTVRMCit7CitfTVRM
X0VOVU0oTlM6OlVJbnRlZ2VyLCBUZXh0dXJlVHlwZSkgeworICAgIFRleHR1cmVUeXBlMUQgPSAw
LAorICAgIFRleHR1cmVUeXBlMURBcnJheSA9IDEsCisgICAgVGV4dHVyZVR5cGUyRCA9IDIsCisg
ICAgVGV4dHVyZVR5cGUyREFycmF5ID0gMywKKyAgICBUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGUg
PSA0LAorICAgIFRleHR1cmVUeXBlQ3ViZSA9IDUsCisgICAgVGV4dHVyZVR5cGVDdWJlQXJyYXkg
PSA2LAorICAgIFRleHR1cmVUeXBlM0QgPSA3LAorICAgIFRleHR1cmVUeXBlMkRNdWx0aXNhbXBs
ZUFycmF5ID0gOCwKKyAgICBUZXh0dXJlVHlwZVRleHR1cmVCdWZmZXIgPSA5LAorfTsKKworX01U
TF9FTlVNKHVpbnQ4X3QsIFRleHR1cmVTd2l6emxlKSB7CisgICAgVGV4dHVyZVN3aXp6bGVaZXJv
ID0gMCwKKyAgICBUZXh0dXJlU3dpenpsZU9uZSA9IDEsCisgICAgVGV4dHVyZVN3aXp6bGVSZWQg
PSAyLAorICAgIFRleHR1cmVTd2l6emxlR3JlZW4gPSAzLAorICAgIFRleHR1cmVTd2l6emxlQmx1
ZSA9IDQsCisgICAgVGV4dHVyZVN3aXp6bGVBbHBoYSA9IDUsCit9OworCitzdHJ1Y3QgVGV4dHVy
ZVN3aXp6bGVDaGFubmVscworeworICAgIE1UTDo6VGV4dHVyZVN3aXp6bGUgcmVkOworICAgIE1U
TDo6VGV4dHVyZVN3aXp6bGUgZ3JlZW47CisgICAgTVRMOjpUZXh0dXJlU3dpenpsZSBibHVlOwor
ICAgIE1UTDo6VGV4dHVyZVN3aXp6bGUgYWxwaGE7Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBT
aGFyZWRUZXh0dXJlSGFuZGxlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxTaGFyZWRUZXh0dXJl
SGFuZGxlPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTaGFyZWRUZXh0dXJlSGFuZGxl
KiBhbGxvYygpOworCisgICAgY2xhc3MgU2hhcmVkVGV4dHVyZUhhbmRsZSogICAgICAgIGluaXQo
KTsKKworICAgIGNsYXNzIERldmljZSogICAgICAgICAgICAgICAgICAgICBkZXZpY2UoKSBjb25z
dDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0
OworfTsKKworc3RydWN0IFNoYXJlZFRleHR1cmVIYW5kbGVQcml2YXRlCit7Cit9IF9NVExfUEFD
S0VEOworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBUZXh0dXJlVXNhZ2UpIHsKKyAgICBU
ZXh0dXJlVXNhZ2VVbmtub3duID0gMCwKKyAgICBUZXh0dXJlVXNhZ2VTaGFkZXJSZWFkID0gMSwK
KyAgICBUZXh0dXJlVXNhZ2VTaGFkZXJXcml0ZSA9IDIsCisgICAgVGV4dHVyZVVzYWdlUmVuZGVy
VGFyZ2V0ID0gNCwKKyAgICBUZXh0dXJlVXNhZ2VQaXhlbEZvcm1hdFZpZXcgPSAxNiwKK307CisK
K19NVExfRU5VTShOUzo6SW50ZWdlciwgVGV4dHVyZUNvbXByZXNzaW9uVHlwZSkgeworICAgIFRl
eHR1cmVDb21wcmVzc2lvblR5cGVMb3NzbGVzcyA9IDAsCisgICAgVGV4dHVyZUNvbXByZXNzaW9u
VHlwZUxvc3N5ID0gMSwKK307CisKK2NsYXNzIFRleHR1cmVEZXNjcmlwdG9yIDogcHVibGljIE5T
OjpDb3B5aW5nPFRleHR1cmVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFz
cyBUZXh0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFRleHR1cmVEZXNjcmlw
dG9yKiAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIFRleHR1cmVEZXNjcmlwdG9y
KiB0ZXh0dXJlMkREZXNjcmlwdG9yKE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpV
SW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwgYm9vbCBtaXBtYXBwZWQpOworCisg
ICAgc3RhdGljIGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiB0ZXh0dXJlQ3ViZURlc2NyaXB0b3Io
TVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHNpemUsIGJvb2wgbWlw
bWFwcGVkKTsKKworICAgIHN0YXRpYyBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciogdGV4dHVyZUJ1
ZmZlckRlc2NyaXB0b3IoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2Vy
IHdpZHRoLCBNVEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMsIE1UTDo6VGV4dHVy
ZVVzYWdlIHVzYWdlKTsKKworICAgIE1UTDo6VGV4dHVyZVR5cGUgICAgICAgICAgICAgICAgdGV4
dHVyZVR5cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFRleHR1cmVUeXBlKE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUpOworCisgICAgTVRMOjpQ
aXhlbEZvcm1hdCAgICAgICAgICAgICAgICBwaXhlbEZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1h
dCBwaXhlbEZvcm1hdCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIHdp
ZHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRXaWR0
aChOUzo6VUludGVnZXIgd2lkdGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICBoZWlnaHQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEhlaWdodChOUzo6VUludGVnZXIgaGVpZ2h0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICAgICAgZGVwdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldERlcHRoKE5TOjpVSW50ZWdlciBkZXB0aCk7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgIG1pcG1hcExldmVsQ291bnQoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pcG1hcExldmVsQ291bnQoTlM6OlVJbnRl
Z2VyIG1pcG1hcExldmVsQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgYXJyYXlMZW5ndGgoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdl
ciBhcnJheUxlbmd0aCk7CisKKyAgICBNVEw6OlJlc291cmNlT3B0aW9ucyAgICAgICAgICAgIHJl
c291cmNlT3B0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0UmVzb3VyY2VPcHRpb25zKE1UTDo6UmVzb3VyY2VPcHRpb25zIHJlc291cmNlT3B0aW9u
cyk7CisKKyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAgICAgICAgICAgIGNwdUNhY2hlTW9kZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3B1Q2FjaGVN
b2RlKE1UTDo6Q1BVQ2FjaGVNb2RlIGNwdUNhY2hlTW9kZSk7CisKKyAgICBNVEw6OlN0b3JhZ2VN
b2RlICAgICAgICAgICAgICAgIHN0b3JhZ2VNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRTdG9yYWdlTW9kZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3Jh
Z2VNb2RlKTsKKworICAgIE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlICAgICAgICAgaGF6YXJkVHJh
Y2tpbmdNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRIYXphcmRUcmFja2luZ01vZGUoTVRMOjpIYXphcmRUcmFja2luZ01vZGUgaGF6YXJkVHJhY2tp
bmdNb2RlKTsKKworICAgIE1UTDo6VGV4dHVyZVVzYWdlICAgICAgICAgICAgICAgdXNhZ2UoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFVzYWdlKE1UTDo6
VGV4dHVyZVVzYWdlIHVzYWdlKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0QWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cyhib29sIGFsbG93
R1BVT3B0aW1pemVkQ29udGVudHMpOworCisgICAgTVRMOjpUZXh0dXJlU3dpenpsZUNoYW5uZWxz
ICAgICBzd2l6emxlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRTd2l6emxlKE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBzd2l6emxlKTsKK307CisK
K2NsYXNzIFRleHR1cmUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFRleHR1cmUsIFJlc291cmNl
PgoreworcHVibGljOgorICAgIGNsYXNzIFJlc291cmNlKiAgICAgICAgICAgICByb290UmVzb3Vy
Y2UoKSBjb25zdDsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICBwYXJlbnRUZXh0
dXJlKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgcGFyZW50UmVs
YXRpdmVMZXZlbCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIHBh
cmVudFJlbGF0aXZlU2xpY2UoKSBjb25zdDsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAg
ICAgICBidWZmZXIoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBi
dWZmZXJPZmZzZXQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBi
dWZmZXJCeXRlc1BlclJvdygpIGNvbnN0OworCisgICAgSU9TdXJmYWNlUmVmICAgICAgICAgICAg
ICAgIGlvc3VyZmFjZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
IGlvc3VyZmFjZVBsYW5lKCkgY29uc3Q7CisKKyAgICBNVEw6OlRleHR1cmVUeXBlICAgICAgICAg
ICAgdGV4dHVyZVR5cGUoKSBjb25zdDsKKworICAgIE1UTDo6UGl4ZWxGb3JtYXQgICAgICAgICAg
ICBwaXhlbEZvcm1hdCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
IHdpZHRoKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgaGVpZ2h0
KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgZGVwdGgoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBtaXBtYXBMZXZlbENvdW50KCkg
Y29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQoKSBj
b25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBhcnJheUxlbmd0aCgpIGNv
bnN0OworCisgICAgTVRMOjpUZXh0dXJlVXNhZ2UgICAgICAgICAgIHVzYWdlKCkgY29uc3Q7CisK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVhYmxlKCkgY29uc3Q7CisKKyAg
ICBib29sICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXJPbmx5KCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgZmlyc3RNaXBtYXBJblRhaWwoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICB0YWlsU2l6ZUluQnl0ZXMoKSBj
b25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBpc1NwYXJzZSgpIGNvbnN0
OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93R1BVT3B0aW1pemVkQ29u
dGVudHMoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICBnZXRCeXRl
cyhjb25zdCB2b2lkKiBwaXhlbEJ5dGVzLCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3csIE5TOjpV
SW50ZWdlciBieXRlc1BlckltYWdlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBs
ZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICByZXBsYWNlUmVnaW9uKE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVs
LCBOUzo6VUludGVnZXIgc2xpY2UsIGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50ZWdl
ciBieXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVySW1hZ2UpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgIGdldEJ5dGVzKGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5T
OjpVSW50ZWdlciBieXRlc1BlclJvdywgTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIg
bGV2ZWwpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VSZWdpb24o
TVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIGNvbnN0IHZvaWQqIHBpeGVs
Qnl0ZXMsIE5TOjpVSW50ZWdlciBieXRlc1BlclJvdyk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAg
ICAgICAgICAgICAgbmV3VGV4dHVyZVZpZXcoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCk7
CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgbmV3VGV4dHVyZVZpZXcoTVRMOjpQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSwgTlM6
OlJhbmdlIGxldmVsUmFuZ2UsIE5TOjpSYW5nZSBzbGljZVJhbmdlKTsKKworICAgIGNsYXNzIFNo
YXJlZFRleHR1cmVIYW5kbGUqICBuZXdTaGFyZWRUZXh0dXJlSGFuZGxlKCk7CisKKyAgICBjbGFz
cyBUZXh0dXJlKiAgICAgICAgICAgICAgcmVtb3RlU3RvcmFnZVRleHR1cmUoKSBjb25zdDsKKwor
ICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICBuZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRl
dmljZShjb25zdCBjbGFzcyBEZXZpY2UqIGRldmljZSk7CisKKyAgICBNVEw6OlRleHR1cmVTd2l6
emxlQ2hhbm5lbHMgc3dpenpsZSgpIGNvbnN0OworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAg
ICAgICAgIG5ld1RleHR1cmVWaWV3KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE1UTDo6
VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUsIE5TOjpSYW5nZSBsZXZlbFJhbmdlLCBOUzo6UmFuZ2Ug
c2xpY2VSYW5nZSwgTVRMOjpUZXh0dXJlU3dpenpsZUNoYW5uZWxzIHN3aXp6bGUpOworfTsKKwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTaGFyZWRUZXh0
dXJlSGFuZGxlKiBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGU6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTFNoYXJlZFRleHR1cmVIYW5kbGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGUqIE1UTDo6U2hhcmVkVGV4dHVyZUhh
bmRsZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpTaGFyZWRU
ZXh0dXJlSGFuZGxlPigpOworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBN
VEw6OkRldmljZSogTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlOjpkZXZpY2UoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElO
RSBOUzo6U3RyaW5nKiBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGU6OmxhYmVsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9J
TkxJTkUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlRleHR1cmVEZXNjcmlw
dG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRleHR1cmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogTVRMOjpUZXh0
dXJlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpUZXh0dXJlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogdGV4dHVyZTJE
RGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdDp3aWR0aDpoZWlnaHQ6bWlwbWFwcGVkOgorX01UTF9J
TkxJTkUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6dGV4
dHVyZTJERGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBOUzo6VUludGVn
ZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTFRleHR1cmVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJl
MkREZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0X3dpZHRoX2hlaWdodF9taXBtYXBwZWRfKSwgcGl4
ZWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG1pcG1hcHBlZCk7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IHRleHR1cmVDdWJlRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdDpzaXplOm1pcG1hcHBlZDoK
K19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIE1UTDo6VGV4dHVyZURlc2NyaXB0
b3I6OnRleHR1cmVDdWJlRGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBO
Uzo6VUludGVnZXIgc2l6ZSwgYm9vbCBtaXBtYXBwZWQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRM
VGV4dHVyZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVDdWJlRGVzY3JpcHRv
cldpdGhQaXhlbEZvcm1hdF9zaXplX21pcG1hcHBlZF8pLCBwaXhlbEZvcm1hdCwgc2l6ZSwgbWlw
bWFwcGVkKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogdGV4dHVyZUJ1ZmZlckRlc2NyaXB0b3JX
aXRoUGl4ZWxGb3JtYXQ6d2lkdGg6cmVzb3VyY2VPcHRpb25zOnVzYWdlOgorX01UTF9JTkxJTkUg
TVRMOjpUZXh0dXJlRGVzY3JpcHRvciogTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6dGV4dHVyZUJ1
ZmZlckRlc2NyaXB0b3IoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2Vy
IHdpZHRoLCBNVEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMsIE1UTDo6VGV4dHVy
ZVVzYWdlIHVzYWdlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4
dHVyZURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRleHR1cmVEZXNjcmlwdG9yKSwg
X01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdF93
aWR0aF9yZXNvdXJjZU9wdGlvbnNfdXNhZ2VfKSwgcGl4ZWxGb3JtYXQsIHdpZHRoLCByZXNvdXJj
ZU9wdGlvbnMsIHVzYWdlKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVUeXBlCitfTVRMX0lO
TElORSBNVEw6OlRleHR1cmVUeXBlIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnRleHR1cmVUeXBl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVU
eXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVUeXBlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0VGV4dHVyZVR5cGUoTVRMOjpUZXh0
dXJlVHlwZSB0ZXh0dXJlVHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGV4dHVyZVR5cGVfKSwgdGV4dHVyZVR5cGUpOworfQor
CisvLyBwcm9wZXJ0eTogcGl4ZWxGb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6UGl4ZWxGb3JtYXQg
TVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6cGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3JtYXQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwocGl4ZWxGb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVE
ZXNjcmlwdG9yOjpzZXRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRQaXhlbEZvcm1hdF8pLCBwaXhlbEZvcm1hdCk7Cit9CisKKy8vIHByb3BlcnR5OiB3aWR0aAor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OndpZHRoKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwod2lkdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRXaWR0aChOUzo6VUludGVnZXIgd2lkdGgpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFdpZHRo
XyksIHdpZHRoKTsKK30KKworLy8gcHJvcGVydHk6IGhlaWdodAorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGhlaWdodCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0
b3I6OnNldEhlaWdodChOUzo6VUludGVnZXIgaGVpZ2h0KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRIZWlnaHRfKSwgaGVpZ2h0KTsK
K30KKworLy8gcHJvcGVydHk6IGRlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpU
ZXh0dXJlRGVzY3JpcHRvcjo6ZGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXB0aCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldERlcHRoKE5T
OjpVSW50ZWdlciBkZXB0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhfKSwgZGVwdGgpOworfQorCisvLyBwcm9wZXJ0eTog
bWlwbWFwTGV2ZWxDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZURl
c2NyaXB0b3I6Om1pcG1hcExldmVsQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtaXBtYXBM
ZXZlbENvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRv
cjo6c2V0TWlwbWFwTGV2ZWxDb3VudChOUzo6VUludGVnZXIgbWlwbWFwTGV2ZWxDb3VudCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
TWlwbWFwTGV2ZWxDb3VudF8pLCBtaXBtYXBMZXZlbENvdW50KTsKK30KKworLy8gcHJvcGVydHk6
IHNhbXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlRGVzY3Jp
cHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3VudCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFNhbXBsZUNv
dW50KE5TOjpVSW50ZWdlciBzYW1wbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlQ291bnRfKSwgc2FtcGxlQ291
bnQpOworfQorCisvLyBwcm9wZXJ0eTogYXJyYXlMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjphcnJheUxlbmd0aCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGFycmF5TGVuZ3RoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJl
RGVzY3JpcHRvcjo6c2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFycmF5TGVuZ3RoKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRB
cnJheUxlbmd0aF8pLCBhcnJheUxlbmd0aCk7Cit9CisKKy8vIHByb3BlcnR5OiByZXNvdXJjZU9w
dGlvbnMKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VPcHRpb25zIE1UTDo6VGV4dHVyZURlc2Ny
aXB0b3I6OnJlc291cmNlT3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZU9wdGlvbnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVz
b3VyY2VPcHRpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3Jp
cHRvcjo6c2V0UmVzb3VyY2VPcHRpb25zKE1UTDo6UmVzb3VyY2VPcHRpb25zIHJlc291cmNlT3B0
aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0UmVzb3VyY2VPcHRpb25zXyksIHJlc291cmNlT3B0aW9ucyk7Cit9CisKKy8vIHBy
b3BlcnR5OiBjcHVDYWNoZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6Q1BVQ2FjaGVNb2RlIE1UTDo6
VGV4dHVyZURlc2NyaXB0b3I6OmNwdUNhY2hlTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDUFVDYWNoZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoY3B1Q2FjaGVNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVz
Y3JpcHRvcjo6c2V0Q3B1Q2FjaGVNb2RlKE1UTDo6Q1BVQ2FjaGVNb2RlIGNwdUNhY2hlTW9kZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0Q3B1Q2FjaGVNb2RlXyksIGNwdUNhY2hlTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdG9y
YWdlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTdG9yYWdlTW9kZSBNVEw6OlRleHR1cmVEZXNjcmlw
dG9yOjpzdG9yYWdlTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpTdG9yYWdlTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdG9yYWdlTW9kZSkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFN0b3Jh
Z2VNb2RlKE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0b3JhZ2VNb2RlXyksIHN0
b3JhZ2VNb2RlKTsKK30KKworLy8gcHJvcGVydHk6IGhhemFyZFRyYWNraW5nTW9kZQorX01UTF9J
TkxJTkUgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6aGF6
YXJkVHJhY2tpbmdNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkhhemFyZFRyYWNraW5nTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChoYXphcmRU
cmFja2luZ01vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlw
dG9yOjpzZXRIYXphcmRUcmFja2luZ01vZGUoTVRMOjpIYXphcmRUcmFja2luZ01vZGUgaGF6YXJk
VHJhY2tpbmdNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRIYXphcmRUcmFja2luZ01vZGVfKSwgaGF6YXJkVHJhY2tpbmdNb2Rl
KTsKK30KKworLy8gcHJvcGVydHk6IHVzYWdlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVVc2Fn
ZSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjp1c2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVXNhZ2U+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwodXNhZ2UpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9y
OjpzZXRVc2FnZShNVEw6OlRleHR1cmVVc2FnZSB1c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VXNhZ2VfKSwgdXNhZ2UpOwor
fQorCisvLyBwcm9wZXJ0eTogYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cworX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjphbGxvd0dQVU9wdGltaXplZENvbnRlbnRzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGFsbG93R1BVT3B0aW1pemVkQ29udGVudHMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRBbGxvd0dQVU9wdGltaXplZENvbnRl
bnRzKGJvb2wgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWxsb3dHUFVPcHRpbWl6ZWRD
b250ZW50c18pLCBhbGxvd0dQVU9wdGltaXplZENvbnRlbnRzKTsKK30KKworLy8gcHJvcGVydHk6
IHN3aXp6bGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBNVEw6OlRl
eHR1cmVEZXNjcmlwdG9yOjpzd2l6emxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHM+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc3dpenpsZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2Ny
aXB0b3I6OnNldFN3aXp6bGUoTVRMOjpUZXh0dXJlU3dpenpsZUNoYW5uZWxzIHN3aXp6bGUpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFN3aXp6bGVfKSwgc3dpenpsZSk7Cit9CisKKy8vIHByb3BlcnR5OiByb290UmVzb3VyY2UKK19N
VExfSU5MSU5FIE1UTDo6UmVzb3VyY2UqIE1UTDo6VGV4dHVyZTo6cm9vdFJlc291cmNlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChyb290UmVzb3VyY2UpKTsKK30KKworLy8gcHJvcGVydHk6IHBh
cmVudFRleHR1cmUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpUZXh0dXJlOjpwYXJl
bnRUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhcmVudFRleHR1cmUpKTsKK30KKwor
Ly8gcHJvcGVydHk6IHBhcmVudFJlbGF0aXZlTGV2ZWwKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OlRleHR1cmU6OnBhcmVudFJlbGF0aXZlTGV2ZWwoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChwYXJlbnRSZWxhdGl2ZUxldmVsKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXJlbnRSZWxhdGl2
ZVNsaWNlCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjpwYXJlbnRSZWxh
dGl2ZVNsaWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGFyZW50UmVsYXRpdmVTbGljZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogYnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpU
ZXh0dXJlOjpidWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXIpKTsKK30KKworLy8g
cHJvcGVydHk6IGJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4
dHVyZTo6YnVmZmVyT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVyT2Zmc2V0KSk7
Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJCeXRlc1BlclJvdworX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6VGV4dHVyZTo6YnVmZmVyQnl0ZXNQZXJSb3coKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChidWZmZXJCeXRlc1BlclJvdykpOworfQorCisvLyBwcm9wZXJ0eTogaW9zdXJmYWNlCitf
TVRMX0lOTElORSBJT1N1cmZhY2VSZWYgTVRMOjpUZXh0dXJlOjppb3N1cmZhY2UoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPElPU3VyZmFjZVJlZj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChpb3N1cmZhY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGlvc3VyZmFjZVBs
YW5lCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjppb3N1cmZhY2VQbGFu
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlvc3VyZmFjZVBsYW5lKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiB0ZXh0dXJlVHlwZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlVHlwZSBNVEw6OlRleHR1
cmU6OnRleHR1cmVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRleHR1cmVUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVUeXBlKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBwaXhlbEZvcm1hdAorX01UTF9JTkxJTkUgTVRMOjpQaXhlbEZv
cm1hdCBNVEw6OlRleHR1cmU6OnBpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHBpeGVsRm9ybWF0KSk7Cit9CisKKy8vIHByb3BlcnR5OiB3aWR0aAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6d2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3aWR0
aCkpOworfQorCisvLyBwcm9wZXJ0eTogaGVpZ2h0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpUZXh0dXJlOjpoZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChoZWlnaHQpKTsKK30K
KworLy8gcHJvcGVydHk6IGRlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0
dXJlOjpkZXB0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRoKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBtaXBtYXBMZXZlbENvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0
dXJlOjptaXBtYXBMZXZlbENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWlwbWFwTGV2ZWxD
b3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlRleHR1cmU6OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2FtcGxlQ291bnQpKTsKK30KKworLy8gcHJvcGVydHk6IGFycmF5TGVuZ3RoCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjphcnJheUxlbmd0aCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGFycmF5TGVuZ3RoKSk7Cit9CisKKy8vIHByb3BlcnR5OiB1c2FnZQorX01UTF9JTkxJ
TkUgTVRMOjpUZXh0dXJlVXNhZ2UgTVRMOjpUZXh0dXJlOjp1c2FnZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVXNhZ2U+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodXNhZ2UpKTsKK30KKworLy8gcHJvcGVydHk6IHNoYXJlYWJsZQorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OlRleHR1cmU6OnNoYXJlYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1NoYXJl
YWJsZSkpOworfQorCisvLyBwcm9wZXJ0eTogZnJhbWVidWZmZXJPbmx5CitfTVRMX0lOTElORSBi
b29sIE1UTDo6VGV4dHVyZTo6ZnJhbWVidWZmZXJPbmx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzRnJhbWVi
dWZmZXJPbmx5KSk7Cit9CisKKy8vIHByb3BlcnR5OiBmaXJzdE1pcG1hcEluVGFpbAorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6Zmlyc3RNaXBtYXBJblRhaWwoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChmaXJzdE1pcG1hcEluVGFpbCkpOworfQorCisvLyBwcm9wZXJ0eTog
dGFpbFNpemVJbkJ5dGVzCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjp0
YWlsU2l6ZUluQnl0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0YWlsU2l6ZUluQnl0ZXMpKTsK
K30KKworLy8gcHJvcGVydHk6IGlzU3BhcnNlCitfTVRMX0lOTElORSBib29sIE1UTDo6VGV4dHVy
ZTo6aXNTcGFyc2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNTcGFyc2UpKTsKK30KKworLy8gcHJvcGVydHk6
IGFsbG93R1BVT3B0aW1pemVkQ29udGVudHMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJl
OjphbGxvd0dQVU9wdGltaXplZENvbnRlbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsbG93R1BVT3B0aW1p
emVkQ29udGVudHMpKTsKK30KKworLy8gbWV0aG9kOiBnZXRCeXRlczpieXRlc1BlclJvdzpieXRl
c1BlckltYWdlOmZyb21SZWdpb246bWlwbWFwTGV2ZWw6c2xpY2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6VGV4dHVyZTo6Z2V0Qnl0ZXMoY29uc3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRl
Z2VyIGJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgYnl0ZXNQZXJJbWFnZSwgTVRMOjpSZWdpb24g
cmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZ2V0Qnl0ZXNf
Ynl0ZXNQZXJSb3dfYnl0ZXNQZXJJbWFnZV9mcm9tUmVnaW9uX21pcG1hcExldmVsX3NsaWNlXyks
IHBpeGVsQnl0ZXMsIGJ5dGVzUGVyUm93LCBieXRlc1BlckltYWdlLCByZWdpb24sIGxldmVsLCBz
bGljZSk7Cit9CisKKy8vIG1ldGhvZDogcmVwbGFjZVJlZ2lvbjptaXBtYXBMZXZlbDpzbGljZTp3
aXRoQnl0ZXM6Ynl0ZXNQZXJSb3c6Ynl0ZXNQZXJJbWFnZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpUZXh0dXJlOjpyZXBsYWNlUmVnaW9uKE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2Vy
IGxldmVsLCBOUzo6VUludGVnZXIgc2xpY2UsIGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpV
SW50ZWdlciBieXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVySW1hZ2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlcGxhY2VS
ZWdpb25fbWlwbWFwTGV2ZWxfc2xpY2Vfd2l0aEJ5dGVzX2J5dGVzUGVyUm93X2J5dGVzUGVySW1h
Z2VfKSwgcmVnaW9uLCBsZXZlbCwgc2xpY2UsIHBpeGVsQnl0ZXMsIGJ5dGVzUGVyUm93LCBieXRl
c1BlckltYWdlKTsKK30KKworLy8gbWV0aG9kOiBnZXRCeXRlczpieXRlc1BlclJvdzpmcm9tUmVn
aW9uOm1pcG1hcExldmVsOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmU6OmdldEJ5dGVz
KGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50ZWdlciBieXRlc1BlclJvdywgTVRMOjpS
ZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdldEJ5dGVzX2J5dGVzUGVyUm93X2Zy
b21SZWdpb25fbWlwbWFwTGV2ZWxfKSwgcGl4ZWxCeXRlcywgYnl0ZXNQZXJSb3csIHJlZ2lvbiwg
bGV2ZWwpOworfQorCisvLyBtZXRob2Q6IHJlcGxhY2VSZWdpb246bWlwbWFwTGV2ZWw6d2l0aEJ5
dGVzOmJ5dGVzUGVyUm93OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmU6OnJlcGxhY2VS
ZWdpb24oTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIGNvbnN0IHZvaWQq
IHBpeGVsQnl0ZXMsIE5TOjpVSW50ZWdlciBieXRlc1BlclJvdykKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVwbGFjZVJlZ2lvbl9taXBt
YXBMZXZlbF93aXRoQnl0ZXNfYnl0ZXNQZXJSb3dfKSwgcmVnaW9uLCBsZXZlbCwgcGl4ZWxCeXRl
cywgYnl0ZXNQZXJSb3cpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVWaWV3V2l0aFBpeGVs
Rm9ybWF0OgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OlRleHR1cmU6Om5ld1RleHR1
cmVWaWV3KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdU
ZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdF8pLCBwaXhlbEZvcm1hdCk7Cit9CisKKy8vIG1ldGhv
ZDogbmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6dGV4dHVyZVR5cGU6bGV2ZWxzOnNsaWNl
czoKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpUZXh0dXJlOjpuZXdUZXh0dXJlVmll
dyhNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVU
eXBlLCBOUzo6UmFuZ2UgbGV2ZWxSYW5nZSwgTlM6OlJhbmdlIHNsaWNlUmFuZ2UpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdF90ZXh0dXJlVHlwZV9sZXZlbHNf
c2xpY2VzXyksIHBpeGVsRm9ybWF0LCB0ZXh0dXJlVHlwZSwgbGV2ZWxSYW5nZSwgc2xpY2VSYW5n
ZSk7Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkVGV4dHVyZUhhbmRsZQorX01UTF9JTkxJTkUg
TVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlKiBNVEw6OlRleHR1cmU6Om5ld1NoYXJlZFRleHR1cmVI
YW5kbGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2hhcmVkVGV4
dHVyZUhhbmRsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3U2hhcmVkVGV4dHVyZUhhbmRs
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogcmVtb3RlU3RvcmFnZVRleHR1cmUKK19NVExfSU5MSU5F
IE1UTDo6VGV4dHVyZSogTVRMOjpUZXh0dXJlOjpyZW1vdGVTdG9yYWdlVGV4dHVyZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChyZW1vdGVTdG9yYWdlVGV4dHVyZSkpOworfQorCisvLyBtZXRob2Q6
IG5ld1JlbW90ZVRleHR1cmVWaWV3Rm9yRGV2aWNlOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJl
KiBNVEw6OlRleHR1cmU6Om5ld1JlbW90ZVRleHR1cmVWaWV3Rm9yRGV2aWNlKGNvbnN0IE1UTDo6
RGV2aWNlKiBkZXZpY2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpU
ZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRl
dmljZV8pLCBkZXZpY2UpOworfQorCisvLyBwcm9wZXJ0eTogc3dpenpsZQorX01UTF9JTkxJTkUg
TVRMOjpUZXh0dXJlU3dpenpsZUNoYW5uZWxzIE1UTDo6VGV4dHVyZTo6c3dpenpsZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlU3dpenpsZUNo
YW5uZWxzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN3aXp6bGUpKTsKK30KKworLy8gbWV0aG9k
OiBuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdDp0ZXh0dXJlVHlwZTpsZXZlbHM6c2xpY2Vz
OnN3aXp6bGU6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6VGV4dHVyZTo6bmV3VGV4
dHVyZVZpZXcoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTVRMOjpUZXh0dXJlVHlwZSB0
ZXh0dXJlVHlwZSwgTlM6OlJhbmdlIGxldmVsUmFuZ2UsIE5TOjpSYW5nZSBzbGljZVJhbmdlLCBN
VEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgc3dpenpsZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Rl
eHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0X3RleHR1cmVUeXBlX2xldmVsc19zbGljZXNfc3dpenps
ZV8pLCBwaXhlbEZvcm1hdCwgdGV4dHVyZVR5cGUsIGxldmVsUmFuZ2UsIHNsaWNlUmFuZ2UsIHN3
aXp6bGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFR5cGVzLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExUeXBlcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY4YzRkOWEyYzM4YTU5ZTU0OTNjZTg4OWQwZDVlMmQz
N2FlYThmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExUeXBlcy5ocHAKQEAgLTAsMCArMSwxNjMgQEAKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFR5cGVzLmhwcAor
Ly8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5j
bHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aHBwPgorCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitzdHJ1
Y3QgT3JpZ2luCit7CisgICAgT3JpZ2luKCkgPSBkZWZhdWx0OworCisgICAgT3JpZ2luKE5TOjpV
SW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHopOworCisgICAgc3RhdGlj
IE9yaWdpbiBNYWtlKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2Vy
IHopOworCisgICAgTlM6OlVJbnRlZ2VyICB4OworICAgIE5TOjpVSW50ZWdlciAgeTsKKyAgICBO
Uzo6VUludGVnZXIgIHo7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgU2l6ZQoreworICAgIFNp
emUoKSA9IGRlZmF1bHQ7CisKKyAgICBTaXplKE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRl
Z2VyIGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRlcHRoKTsKKworICAgIHN0YXRpYyBTaXplICBNYWtl
KE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRl
cHRoKTsKKworICAgIE5TOjpVSW50ZWdlciB3aWR0aDsKKyAgICBOUzo6VUludGVnZXIgaGVpZ2h0
OworICAgIE5TOjpVSW50ZWdlciBkZXB0aDsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBSZWdp
b24KK3sKKyAgICBSZWdpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBSZWdpb24oTlM6OlVJbnRlZ2Vy
IHgsIE5TOjpVSW50ZWdlciB3aWR0aCk7CisKKyAgICBSZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5T
OjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpOwor
CisgICAgUmVnaW9uKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2Vy
IHosIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwgTlM6OlVJbnRlZ2Vy
IGRlcHRoKTsKKworICAgIHN0YXRpYyBSZWdpb24gTWFrZTFEKE5TOjpVSW50ZWdlciB4LCBOUzo6
VUludGVnZXIgd2lkdGgpOworCisgICAgc3RhdGljIFJlZ2lvbiBNYWtlMkQoTlM6OlVJbnRlZ2Vy
IHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWln
aHQpOworCisgICAgc3RhdGljIFJlZ2lvbiBNYWtlM0QoTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50
ZWdlciB5LCBOUzo6VUludGVnZXIgeiwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIg
aGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpOworCisgICAgTVRMOjpPcmlnaW4gICBvcmlnaW47
CisgICAgTVRMOjpTaXplICAgICBzaXplOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFNhbXBs
ZVBvc2l0aW9uOworCit1c2luZyBDb29yZGluYXRlMkQgPSBTYW1wbGVQb3NpdGlvbjsKKworc3Ry
dWN0IFNhbXBsZVBvc2l0aW9uCit7CisgICAgU2FtcGxlUG9zaXRpb24oKSA9IGRlZmF1bHQ7CisK
KyAgICBTYW1wbGVQb3NpdGlvbihmbG9hdCBfeCwgZmxvYXQgX3kpOworCisgICAgc3RhdGljIFNh
bXBsZVBvc2l0aW9uIE1ha2UoZmxvYXQgeCwgZmxvYXQgeSk7CisKKyAgICBmbG9hdCAgICAgICAg
ICAgICAgICAgeDsKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgeTsKK30gX01UTF9QQUNLRUQ7
CisKK30KKworX01UTF9JTkxJTkUgTVRMOjpPcmlnaW46Ok9yaWdpbihOUzo6VUludGVnZXIgX3gs
IE5TOjpVSW50ZWdlciBfeSwgTlM6OlVJbnRlZ2VyIF96KQorICAgIDogeChfeCkKKyAgICAsIHko
X3kpCisgICAgLCB6KF96KQoreworfQorCitfTVRMX0lOTElORSBNVEw6Ok9yaWdpbiBNVEw6Ok9y
aWdpbjo6TWFrZShOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6
KQoreworICAgIHJldHVybiBPcmlnaW4oeCwgeSwgeik7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6
U2l6ZTo6U2l6ZShOUzo6VUludGVnZXIgX3dpZHRoLCBOUzo6VUludGVnZXIgX2hlaWdodCwgTlM6
OlVJbnRlZ2VyIF9kZXB0aCkKKyAgICA6IHdpZHRoKF93aWR0aCkKKyAgICAsIGhlaWdodChfaGVp
Z2h0KQorICAgICwgZGVwdGgoX2RlcHRoKQoreworfQorCitfTVRMX0lOTElORSBNVEw6OlNpemUg
TVRMOjpTaXplOjpNYWtlKE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwg
TlM6OlVJbnRlZ2VyIGRlcHRoKQoreworICAgIHJldHVybiBTaXplKHdpZHRoLCBoZWlnaHQsIGRl
cHRoKTsKK30KKworX01UTF9JTkxJTkUgTVRMOjpSZWdpb246OlJlZ2lvbihOUzo6VUludGVnZXIg
eCwgTlM6OlVJbnRlZ2VyIHdpZHRoKQorICAgIDogb3JpZ2luKHgsIDAsIDApCisgICAgLCBzaXpl
KHdpZHRoLCAxLCAxKQoreworfQorCitfTVRMX0lOTElORSBNVEw6OlJlZ2lvbjo6UmVnaW9uKE5T
OjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUlu
dGVnZXIgaGVpZ2h0KQorICAgIDogb3JpZ2luKHgsIHksIDApCisgICAgLCBzaXplKHdpZHRoLCBo
ZWlnaHQsIDEpCit7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6UmVnaW9uOjpSZWdpb24oTlM6OlVJ
bnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgeiwgTlM6OlVJbnRlZ2VyIHdp
ZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpCisgICAgOiBvcmln
aW4oeCwgeSwgeikKKyAgICAsIHNpemUod2lkdGgsIGhlaWdodCwgZGVwdGgpCit7Cit9CisKK19N
VExfSU5MSU5FIE1UTDo6UmVnaW9uIE1UTDo6UmVnaW9uOjpNYWtlMUQoTlM6OlVJbnRlZ2VyIHgs
IE5TOjpVSW50ZWdlciB3aWR0aCkKK3sKKyAgICByZXR1cm4gUmVnaW9uKHgsIHdpZHRoKTsKK30K
KworX01UTF9JTkxJTkUgTVRMOjpSZWdpb24gTVRMOjpSZWdpb246Ok1ha2UyRChOUzo6VUludGVn
ZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhl
aWdodCkKK3sKKyAgICByZXR1cm4gUmVnaW9uKHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQorCitf
TVRMX0lOTElORSBNVEw6OlJlZ2lvbiBNVEw6OlJlZ2lvbjo6TWFrZTNEKE5TOjpVSW50ZWdlciB4
LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHosIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6
OlVJbnRlZ2VyIGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRlcHRoKQoreworICAgIHJldHVybiBSZWdp
b24oeCwgeSwgeiwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworfQorCitfTVRMX0lOTElORSBNVEw6
OlNhbXBsZVBvc2l0aW9uOjpTYW1wbGVQb3NpdGlvbihmbG9hdCBfeCwgZmxvYXQgX3kpCisgICAg
OiB4KF94KQorICAgICwgeShfeSkKK3sKK30KKworX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVQb3Np
dGlvbiBNVEw6OlNhbXBsZVBvc2l0aW9uOjpNYWtlKGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAg
cmV0dXJuIFNhbXBsZVBvc2l0aW9uKHgsIHkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZlcnRleERlc2NyaXB0b3IuaHBwIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZlcnRleERlc2NyaXB0b3IuaHBwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUxN2Y4MjNhYTBhZjk1MzBiMjVjMzMxYTlmNTZkMTI1NjY3NjM4NTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmVy
dGV4RGVzY3JpcHRvci5ocHAKQEAgLTAsMCArMSwzNDQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFZlcnRleERlc2NyaXB0
b3IuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCIKKworbmFt
ZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVmVydGV4Rm9ybWF0KSB7Cisg
ICAgVmVydGV4Rm9ybWF0SW52YWxpZCA9IDAsCisgICAgVmVydGV4Rm9ybWF0VUNoYXIyID0gMSwK
KyAgICBWZXJ0ZXhGb3JtYXRVQ2hhcjMgPSAyLAorICAgIFZlcnRleEZvcm1hdFVDaGFyNCA9IDMs
CisgICAgVmVydGV4Rm9ybWF0Q2hhcjIgPSA0LAorICAgIFZlcnRleEZvcm1hdENoYXIzID0gNSwK
KyAgICBWZXJ0ZXhGb3JtYXRDaGFyNCA9IDYsCisgICAgVmVydGV4Rm9ybWF0VUNoYXIyTm9ybWFs
aXplZCA9IDcsCisgICAgVmVydGV4Rm9ybWF0VUNoYXIzTm9ybWFsaXplZCA9IDgsCisgICAgVmVy
dGV4Rm9ybWF0VUNoYXI0Tm9ybWFsaXplZCA9IDksCisgICAgVmVydGV4Rm9ybWF0Q2hhcjJOb3Jt
YWxpemVkID0gMTAsCisgICAgVmVydGV4Rm9ybWF0Q2hhcjNOb3JtYWxpemVkID0gMTEsCisgICAg
VmVydGV4Rm9ybWF0Q2hhcjROb3JtYWxpemVkID0gMTIsCisgICAgVmVydGV4Rm9ybWF0VVNob3J0
MiA9IDEzLAorICAgIFZlcnRleEZvcm1hdFVTaG9ydDMgPSAxNCwKKyAgICBWZXJ0ZXhGb3JtYXRV
U2hvcnQ0ID0gMTUsCisgICAgVmVydGV4Rm9ybWF0U2hvcnQyID0gMTYsCisgICAgVmVydGV4Rm9y
bWF0U2hvcnQzID0gMTcsCisgICAgVmVydGV4Rm9ybWF0U2hvcnQ0ID0gMTgsCisgICAgVmVydGV4
Rm9ybWF0VVNob3J0Mk5vcm1hbGl6ZWQgPSAxOSwKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQzTm9y
bWFsaXplZCA9IDIwLAorICAgIFZlcnRleEZvcm1hdFVTaG9ydDROb3JtYWxpemVkID0gMjEsCisg
ICAgVmVydGV4Rm9ybWF0U2hvcnQyTm9ybWFsaXplZCA9IDIyLAorICAgIFZlcnRleEZvcm1hdFNo
b3J0M05vcm1hbGl6ZWQgPSAyMywKKyAgICBWZXJ0ZXhGb3JtYXRTaG9ydDROb3JtYWxpemVkID0g
MjQsCisgICAgVmVydGV4Rm9ybWF0SGFsZjIgPSAyNSwKKyAgICBWZXJ0ZXhGb3JtYXRIYWxmMyA9
IDI2LAorICAgIFZlcnRleEZvcm1hdEhhbGY0ID0gMjcsCisgICAgVmVydGV4Rm9ybWF0RmxvYXQg
PSAyOCwKKyAgICBWZXJ0ZXhGb3JtYXRGbG9hdDIgPSAyOSwKKyAgICBWZXJ0ZXhGb3JtYXRGbG9h
dDMgPSAzMCwKKyAgICBWZXJ0ZXhGb3JtYXRGbG9hdDQgPSAzMSwKKyAgICBWZXJ0ZXhGb3JtYXRJ
bnQgPSAzMiwKKyAgICBWZXJ0ZXhGb3JtYXRJbnQyID0gMzMsCisgICAgVmVydGV4Rm9ybWF0SW50
MyA9IDM0LAorICAgIFZlcnRleEZvcm1hdEludDQgPSAzNSwKKyAgICBWZXJ0ZXhGb3JtYXRVSW50
ID0gMzYsCisgICAgVmVydGV4Rm9ybWF0VUludDIgPSAzNywKKyAgICBWZXJ0ZXhGb3JtYXRVSW50
MyA9IDM4LAorICAgIFZlcnRleEZvcm1hdFVJbnQ0ID0gMzksCisgICAgVmVydGV4Rm9ybWF0SW50
MTAxMDEwMk5vcm1hbGl6ZWQgPSA0MCwKKyAgICBWZXJ0ZXhGb3JtYXRVSW50MTAxMDEwMk5vcm1h
bGl6ZWQgPSA0MSwKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hhcjROb3JtYWxpemVkX0JHUkEgPSA0MiwK
KyAgICBWZXJ0ZXhGb3JtYXRVQ2hhciA9IDQ1LAorICAgIFZlcnRleEZvcm1hdENoYXIgPSA0NiwK
KyAgICBWZXJ0ZXhGb3JtYXRVQ2hhck5vcm1hbGl6ZWQgPSA0NywKKyAgICBWZXJ0ZXhGb3JtYXRD
aGFyTm9ybWFsaXplZCA9IDQ4LAorICAgIFZlcnRleEZvcm1hdFVTaG9ydCA9IDQ5LAorICAgIFZl
cnRleEZvcm1hdFNob3J0ID0gNTAsCisgICAgVmVydGV4Rm9ybWF0VVNob3J0Tm9ybWFsaXplZCA9
IDUxLAorICAgIFZlcnRleEZvcm1hdFNob3J0Tm9ybWFsaXplZCA9IDUyLAorICAgIFZlcnRleEZv
cm1hdEhhbGYgPSA1MywKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFZlcnRleFN0ZXBG
dW5jdGlvbikgeworICAgIFZlcnRleFN0ZXBGdW5jdGlvbkNvbnN0YW50ID0gMCwKKyAgICBWZXJ0
ZXhTdGVwRnVuY3Rpb25QZXJWZXJ0ZXggPSAxLAorICAgIFZlcnRleFN0ZXBGdW5jdGlvblBlcklu
c3RhbmNlID0gMiwKKyAgICBWZXJ0ZXhTdGVwRnVuY3Rpb25QZXJQYXRjaCA9IDMsCisgICAgVmVy
dGV4U3RlcEZ1bmN0aW9uUGVyUGF0Y2hDb250cm9sUG9pbnQgPSA0LAorfTsKKworY2xhc3MgVmVy
dGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxWZXJ0ZXhCdWZm
ZXJMYXlvdXREZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBWZXJ0ZXhC
dWZmZXJMYXlvdXREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4QnVmZmVy
TGF5b3V0RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RyaWRlKE5TOjpVSW50ZWdlciBz
dHJpZGUpOworCisgICAgTVRMOjpWZXJ0ZXhTdGVwRnVuY3Rpb24gICAgICAgICAgICAgICAgICAg
IHN0ZXBGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRTdGVwRnVuY3Rpb24oTVRMOjpWZXJ0ZXhTdGVwRnVuY3Rpb24gc3Rl
cEZ1bmN0aW9uKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGVwUmF0ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRTdGVwUmF0ZShOUzo6VUludGVnZXIgc3RlcFJhdGUpOworfTsKKwor
Y2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZl
cmVuY2luZzxWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogYWxsb2Mo
KTsKKworICAgIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogICAgICAg
IGluaXQoKTsKKworICAgIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqICAgICAg
ICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFZl
cnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGJ1ZmZlckRlc2MsIE5TOjpVSW50ZWdlciBpbmRl
eCk7Cit9OworCitjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpD
b3B5aW5nPFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBW
ZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpWZXJ0
ZXhGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGb3JtYXQoTVRMOjpWZXJ0ZXhG
b3JtYXQgZm9ybWF0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpOworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlckluZGV4KCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJ1ZmZlckluZGV4KE5T
OjpVSW50ZWdlciBidWZmZXJJbmRleCk7Cit9OworCitjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNj
cmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4QXR0cmlidXRl
RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVz
Y3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgVmVydGV4QXR0cmlidXRl
RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3Qo
Y29uc3QgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciogYXR0cmlidXRlRGVzYywgTlM6
OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2NsYXNzIFZlcnRleERlc2NyaXB0b3IgOiBwdWJsaWMg
TlM6OkNvcHlpbmc8VmVydGV4RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xh
c3MgVmVydGV4RGVzY3JpcHRvciogICAgICAgICAgIGFsbG9jKCk7CisKKyAgICBjbGFzcyBWZXJ0
ZXhEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFz
cyBWZXJ0ZXhEZXNjcmlwdG9yKiAgICAgICAgICAgdmVydGV4RGVzY3JpcHRvcigpOworCisgICAg
Y2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiBsYXlvdXRzKCkgY29uc3Q7
CisKKyAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqICAgIGF0dHJpYnV0
ZXMoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzZXQoKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5M
SU5FIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhCdWZmZXJM
YXlvdXREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExW
ZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBNVEw6OlZlcnRleEJ1
ZmZlckxheW91dERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVy
dHk6IHN0cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmVydGV4QnVmZmVyTGF5
b3V0RGVzY3JpcHRvcjo6c3RyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RyaWRlKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpz
ZXRTdHJpZGUoTlM6OlVJbnRlZ2VyIHN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RyaWRlXyksIHN0cmlkZSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBzdGVwRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6VmVydGV4U3RlcEZ1
bmN0aW9uIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RlcEZ1bmN0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleFN0ZXBG
dW5jdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVwRnVuY3Rpb24pKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnNldFN0ZXBG
dW5jdGlvbihNVEw6OlZlcnRleFN0ZXBGdW5jdGlvbiBzdGVwRnVuY3Rpb24pCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0ZXBGdW5j
dGlvbl8pLCBzdGVwRnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogc3RlcFJhdGUKK19NVExf
SU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnN0
ZXBSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlcFJhdGUpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnNldFN0ZXBSYXRlKE5T
OjpVSW50ZWdlciBzdGVwUmF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlcFJhdGVfKSwgc3RlcFJhdGUpOworfQorCisvLyBz
dGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yQXJyYXkqIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5Ojph
bGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VmVydGV4QnVmZmVy
TGF5b3V0RGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleEJ1ZmZlckxh
eW91dERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5F
IE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiBNVEw6OlZlcnRleEJ1ZmZl
ckxheW91dERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmluaXQ8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8v
IG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpWZXJ0
ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBpbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25z
dCBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGJ1ZmZlckRlc2MsIE5TOjpVSW50
ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBidWZmZXJEZXNjLCBp
bmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3IqIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6
YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlZlcnRleEF0dHJp
YnV0ZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QXR0
cmlidXRlRGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBmb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6VmVy
dGV4Rm9ybWF0IE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6Zm9ybWF0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleEZvcm1hdD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChmb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OnNldEZvcm1hdChNVEw6OlZlcnRleEZvcm1hdCBm
b3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldEZvcm1hdF8pLCBmb3JtYXQpOworfQorCisvLyBwcm9wZXJ0eTogb2Zmc2V0Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjpv
ZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OnNldE9mZnNldChOUzo6VUludGVn
ZXIgb2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRPZmZzZXRfKSwgb2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZl
ckluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNj
cmlwdG9yOjpidWZmZXJJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlckluZGV4KSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjpz
ZXRCdWZmZXJJbmRleChOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlckluZGV4Xyks
IGJ1ZmZlckluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiBNVEw6OlZlcnRleEF0dHJpYnV0
ZURlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhN
VExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0
CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogTVRMOjpW
ZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5PigpOworfQor
CisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6
VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
QXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgaW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpW
ZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiBhdHRyaWJ1dGVEZXNjLCBOUzo6VUludGVnZXIgaW5k
ZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0cmlidXRlRGVzYywgaW5kZXgp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhE
ZXNjcmlwdG9yKiBNVEw6OlZlcnRleERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpWZXJ0ZXhEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTFZlcnRleERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElO
RSBNVEw6OlZlcnRleERlc2NyaXB0b3IqIE1UTDo6VmVydGV4RGVzY3JpcHRvcjo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhEZXNjcmlwdG9yPigpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiB2ZXJ0ZXhEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6
OlZlcnRleERlc2NyaXB0b3IqIE1UTDo6VmVydGV4RGVzY3JpcHRvcjo6dmVydGV4RGVzY3JpcHRv
cigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhEZXNjcmlw
dG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExWZXJ0ZXhEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRF
X1NFTCh2ZXJ0ZXhEZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYXlvdXRzCitfTVRM
X0lOTElORSBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0
ZXhEZXNjcmlwdG9yOjpsYXlvdXRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobGF5b3V0cykpOworfQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlcwor
X01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIE1UTDo6VmVy
dGV4RGVzY3JpcHRvcjo6YXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0ZXMpKTsKK30KKworLy8gbWV0aG9kOiByZXNldAorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRleERlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNp
YmxlRnVuY3Rpb25UYWJsZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzNGQzYTFhNmNlMTBi
OTI1Y2Y2MTI1NmZlZDUxNmRjMzMwYmRkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwCkBA
IC0wLDAgKzEsOTYgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIE1ldGFsL01UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMRnVuY3Rpb25IYW5kbGUuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhw
cCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4K
K3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlw
dG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9y
KiAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxl
RGVzY3JpcHRvciogdmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkNvdW50KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0RnVuY3Rpb25Db3VudChOUzo6VUludGVnZXIgZnVuY3Rpb25Db3VudCk7Cit9OworCitjbGFz
cyBWaXNpYmxlRnVuY3Rpb25UYWJsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8VmlzaWJsZUZ1
bmN0aW9uVGFibGUsIFJlc291cmNlPgoreworcHVibGljOgorICAgIHZvaWQgc2V0RnVuY3Rpb24o
Y29uc3QgY2xhc3MgRnVuY3Rpb25IYW5kbGUqIGZ1bmN0aW9uLCBOUzo6VUludGVnZXIgaW5kZXgp
OworCisgICAgdm9pZCBzZXRGdW5jdGlvbnMoY29uc3QgY2xhc3MgRnVuY3Rpb25IYW5kbGUqIGZ1
bmN0aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3Iq
IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9y
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcikpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFi
bGVEZXNjcmlwdG9yKiBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJs
ZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHZpc2libGVGdW5jdGlvblRh
YmxlRGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2Ny
aXB0b3IqIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yOjp2aXNpYmxlRnVuY3Rp
b25UYWJsZURlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExW
aXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHZpc2libGVG
dW5jdGlvblRhYmxlRGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25Db3Vu
dAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNj
cmlwdG9yOjpmdW5jdGlvbkNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25Db3Vu
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNj
cmlwdG9yOjpzZXRGdW5jdGlvbkNvdW50KE5TOjpVSW50ZWdlciBmdW5jdGlvbkNvdW50KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRG
dW5jdGlvbkNvdW50XyksIGZ1bmN0aW9uQ291bnQpOworfQorCisvLyBtZXRob2Q6IHNldEZ1bmN0
aW9uOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGU6
OnNldEZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb25IYW5kbGUqIGZ1bmN0aW9uLCBOUzo6VUlu
dGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uX2F0SW5kZXhfKSwgZnVuY3Rpb24sIGluZGV4KTsKK30K
KworLy8gbWV0aG9kOiBzZXRGdW5jdGlvbnM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlZpc2libGVGdW5jdGlvblRhYmxlOjpzZXRGdW5jdGlvbnMoY29uc3QgTVRMOjpGdW5jdGlv
bkhhbmRsZSogZnVuY3Rpb25zW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnVuY3Rpb25zX3dpdGhS
YW5nZV8pLCBmdW5jdGlvbnMsIHJhbmdlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NZXRhbC5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTWV0YWwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2YTM2MDY2YjU5MjUzZGJkN2Rh
Y2ViNzQ2YzBjOTQxNDMzZmZjZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTWV0YWwuaHBwCkBAIC0wLDAgKzEsODAgQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01ldGFs
LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRl
ICJNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwIgorI2luY2x1ZGUgIk1UTEFjY2VsZXJhdGlv
blN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVUeXBlcy5ocHAiCisjaW5jbHVkZSAiTVRMQXJndW1lbnQuaHBwIgorI2luY2x1ZGUg
Ik1UTEFyZ3VtZW50RW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMQmluYXJ5QXJjaGl2ZS5ocHAi
CisjaW5jbHVkZSAiTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExCbGl0
UGFzcy5ocHAiCisjaW5jbHVkZSAiTVRMQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExDYXB0dXJl
TWFuYWdlci5ocHAiCisjaW5jbHVkZSAiTVRMQ2FwdHVyZVNjb3BlLmhwcCIKKyNpbmNsdWRlICJN
VExDb21tYW5kQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kRW5jb2Rlci5ocHAiCisj
aW5jbHVkZSAiTVRMQ29tbWFuZFF1ZXVlLmhwcCIKKyNpbmNsdWRlICJNVExDb21wdXRlQ29tbWFu
ZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbXB1dGVQYXNzLmhwcCIKKyNpbmNsdWRlICJN
VExDb21wdXRlUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTENvdW50ZXJzLmhwcCIKKyNpbmNs
dWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExEZXB0aFN0ZW5jaWwuaHBwIgorI2lu
Y2x1ZGUgIk1UTERldmljZS5ocHAiCisjaW5jbHVkZSAiTVRMRHJhd2FibGUuaHBwIgorI2luY2x1
ZGUgIk1UTER5bmFtaWNMaWJyYXJ5LmhwcCIKKyNpbmNsdWRlICJNVExFdmVudC5ocHAiCisjaW5j
bHVkZSAiTVRMRmVuY2UuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRM
RnVuY3Rpb25IYW5kbGUuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9uTG9nLmhwcCIKKyNpbmNs
dWRlICJNVExGdW5jdGlvblN0aXRjaGluZy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdl
LmhwcCIKKyNpbmNsdWRlICJNVExIZWFwLmhwcCIKKyNpbmNsdWRlICJNVExJbmRpcmVjdENvbW1h
bmRCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwIgor
I2luY2x1ZGUgIk1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwIgorI2luY2x1ZGUgIk1U
TExpYnJhcnkuaHBwIgorI2luY2x1ZGUgIk1UTExpbmtlZEZ1bmN0aW9ucy5ocHAiCisjaW5jbHVk
ZSAiTVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMUGlw
ZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTFBpeGVsRm9ybWF0LmhwcCIKKyNpbmNsdWRlICJNVExQ
cml2YXRlLmhwcCIKKyNpbmNsdWRlICJNVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlclBhc3Mu
aHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlclBpcGVsaW5lLmhwcCIKKyNpbmNsdWRlICJNVExSZXNv
dXJjZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyLmhwcCIK
KyNpbmNsdWRlICJNVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAiCisjaW5jbHVkZSAiTVRMU2FtcGxl
ci5ocHAiCisjaW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwIgorI2lu
Y2x1ZGUgIk1UTFRleHR1cmUuaHBwIgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRl
ICJNVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCIKKyNpbmNsdWRlICJNVExWaXNpYmxlRnVuY3Rpb25U
YWJsZS5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUv
Q0FEZWZpbmVzLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3Jl
L0NBRGVmaW5lcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFmN2VmZmUzYTE4M2ViMjI2YjdlMGE5MDZlNDJi
MjlhYWZkMDEyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9RdWFydHpDb3JlL0NBRGVmaW5lcy5ocHAKQEAgLTAsMCArMSw0MSBAQAorLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gUXVhcnR6Q29yZS9D
QURlZmluZXMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgX0NBX0VYUE9SVCBfTlNf
RVhQT1JUCisjZGVmaW5lIF9DQV9FWFRFUk4gX05TX0VYVEVSTgorI2RlZmluZSBfQ0FfSU5MSU5F
IF9OU19JTkxJTkUKKyNkZWZpbmUgX0NBX1BBQ0tFRCBfTlNfUEFDS0VECisKKyNkZWZpbmUgX0NB
X0NPTlNUKHR5cGUsIG5hbWUpIF9OU19DT05TVCh0eXBlLCBuYW1lKQorI2RlZmluZSBfQ0FfRU5V
TSh0eXBlLCBuYW1lKSBfTlNfRU5VTSh0eXBlLCBuYW1lKQorI2RlZmluZSBfQ0FfT1BUSU9OUyh0
eXBlLCBuYW1lKSBfTlNfT1BUSU9OUyh0eXBlLCBuYW1lKQorCisjZGVmaW5lIF9DQV9WQUxJREFU
RV9TSVpFKG5zLCBuYW1lKSBfTlNfVkFMSURBVEVfU0laRShucywgbmFtZSkKKyNkZWZpbmUgX0NB
X1ZBTElEQVRFX0VOVU0obnMsIG5hbWUpIF9OU19WQUxJREFURV9FTlVNKG5zLCBuYW1lKQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBTWV0YWxEcmF3YWJs
ZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQU1ldGFs
RHJhd2FibGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMDg3NTcyMWNhOTgwNGZmZGMzNGJhNDVlZjU5NTQy
MzA5NzRhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvUXVhcnR6Q29yZS9DQU1ldGFsRHJhd2FibGUuaHBwCkBAIC0wLDAgKzEsNTcgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFF1YXJ0ekNv
cmUvQ0FNZXRhbERyYXdhYmxlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUg
SW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNpbmNsdWRlICIuLi9NZXRhbC9NVExEcmF3YWJsZS5ocHAiCisjaW5jbHVkZSAi
Li4vTWV0YWwvTVRMVGV4dHVyZS5ocHAiCisKKyNpbmNsdWRlICJDQURlZmluZXMuaHBwIgorI2lu
Y2x1ZGUgIkNBUHJpdmF0ZS5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgQ0EKK3sKK2NsYXNzIE1ldGFsRHJhd2FibGUgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPE1ldGFsRHJhd2FibGUsIE1UTDo6RHJhd2FibGU+Cit7Citw
dWJsaWM6CisgICAgY2xhc3MgTWV0YWxMYXllciogbGF5ZXIoKSBjb25zdDsKKyAgICBNVEw6OlRl
eHR1cmUqICAgICB0ZXh0dXJlKCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX0NBX0lOTElORSBDQTo6TWV0YWxMYXllciog
Q0E6Ok1ldGFsRHJhd2FibGU6OmxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNZXRhbExheWVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXllcikpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX0NB
X0lOTElORSBNVEw6OlRleHR1cmUqIENBOjpNZXRhbERyYXdhYmxlOjp0ZXh0dXJlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHRleHR1cmUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FQcml2YXRlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OWM2MDI0NzAx
NTFlMTg3MzFhNGYzZDNjZWIxYTNiZjdiMmJhZTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FQcml2YXRlLmhwcApAQCAtMCww
ICsxLDEwOSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAt
MjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIkNBRGVmaW5lcy5ocHAiCisKKyNpbmNsdWRl
IDxvYmpjL3J1bnRpbWUuaD4KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyNkZWZpbmUgX0NBX1BSSVZBVEVfQ0xTKHN5bWJvbCkgKFByaXZhdGU6OkNs
YXNzOjpzX2sjI3N5bWJvbCkKKyNkZWZpbmUgX0NBX1BSSVZBVEVfU0VMKGFjY2Vzc29yKSAoUHJp
dmF0ZTo6U2VsZWN0b3I6OnNfayMjYWNjZXNzb3IpCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaWYgZGVmaW5lZChDQV9QUklWQVRFX0lNUExFTUVO
VEFUSU9OKQorCisjZGVmaW5lIF9DQV9QUklWQVRFX1ZJU0lCSUxJVFkgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiaGlkZGVuIikpKQorI2RlZmluZSBfQ0FfUFJJVkFURV9JTVBPUlQgX19hdHRy
aWJ1dGVfXygod2Vha19pbXBvcnQpKQorCisjaWYgX19PQkpDX18KKyNkZWZpbmUgX0NBX1BSSVZB
VEVfT0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKSAoKF9fYnJpZGdlIHZvaWQqKW9iamNfbG9va1Vw
Q2xhc3MoI3N5bWJvbCkpCisjZWxzZQorI2RlZmluZSBfQ0FfUFJJVkFURV9PQkpDX0xPT0tVUF9D
TEFTUyhzeW1ib2wpIG9iamNfbG9va1VwQ2xhc3MoI3N5bWJvbCkKKyNlbmRpZiAvLyBfX09CSkNf
XworCisjZGVmaW5lIF9DQV9QUklWQVRFX0RFRl9DTFMoc3ltYm9sKSB2b2lkKiBzX2sjI3N5bWJv
bCBfQ0FfUFJJVkFURV9WSVNJQklMSVRZID0gX0NBX1BSSVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Mo
c3ltYm9sKTsKKyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9D
QV9QUklWQVRFX0RFRl9TRUwoYWNjZXNzb3IsIHN5bWJvbCkgU0VMIHNfayMjYWNjZXNzb3IgX0NB
X1BSSVZBVEVfVklTSUJJTElUWSA9IHNlbF9yZWdpc3Rlck5hbWUoc3ltYm9sKTsKKyNkZWZpbmUg
X0NBX1BSSVZBVEVfREVGX1NUUih0eXBlLCBzeW1ib2wpICAgICAgICAgICAgICAgIFwKKyAgICBf
Q0FfRVhURVJOIHR5cGUgY29uc3QgQ0EjI3N5bWJvbCBfQ0FfUFJJVkFURV9JTVBPUlQ7IFwKKyAg
ICB0eXBlIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICBDQTo6c3ltYm9sID0gKG51bGxwdHIg
IT0gJkNBIyNzeW1ib2wpID8gQ0EjI3N5bWJvbCA6IG51bGxwdHI7CisKKyNlbHNlCisKKyNkZWZp
bmUgX0NBX1BSSVZBVEVfREVGX0NMUyhzeW1ib2wpIGV4dGVybiB2b2lkKiBzX2sjI3N5bWJvbDsK
KyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9DQV9QUklWQVRF
X0RFRl9TRUwoYWNjZXNzb3IsIHN5bWJvbCkgZXh0ZXJuIFNFTCBzX2sjI2FjY2Vzc29yOworI2Rl
ZmluZSBfQ0FfUFJJVkFURV9ERUZfU1RSKHR5cGUsIHN5bWJvbCkKKworI2VuZGlmIC8vIENBX1BS
SVZBVEVfSU1QTEVNRU5UQVRJT04KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBDQQoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAg
ICBuYW1lc3BhY2UgQ2xhc3MKKyAgICB7CisKKyAgICB9IC8vIENsYXNzCit9IC8vIFByaXZhdGUK
K30gLy8gQ0EKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK25hbWVzcGFjZSBDQQoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAgICBuYW1lc3BhY2Ug
UHJvdG9jb2wKKyAgICB7CisKKyAgICAgICAgX0NBX1BSSVZBVEVfREVGX1BSTyhDQU1ldGFsRHJh
d2FibGUpOworCisgICAgfSAvLyBQcm90b2NvbAorfSAvLyBQcml2YXRlCit9IC8vIENBCisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2Ug
Q0EKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFtZXNwYWNlIFNlbGVjdG9yCisgICAg
eworCisgICAgICAgIF9DQV9QUklWQVRFX0RFRl9TRUwobGF5ZXIsCisgICAgICAgICAgICAibGF5
ZXIiKTsKKyAgICAgICAgX0NBX1BSSVZBVEVfREVGX1NFTCh0ZXh0dXJlLAorICAgICAgICAgICAg
InRleHR1cmUiKTsKKworICAgIH0gLy8gQ2xhc3MKK30gLy8gUHJpdmF0ZQorfSAvLyBDQQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvUXVhcnR6Q29yZS5o
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmUxZWI0NjdiMTZiYjgwZmRmZDE5NmFhOGI5M2JmZWRjNTQ0NzE5Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpD
b3JlL1F1YXJ0ekNvcmUuaHBwCkBAIC0wLDAgKzEsMjcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5o
cHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAi
Q0FNZXRhbERyYXdhYmxlLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
UkVBRE1FLm1kIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1JFQURNRS5tZApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hYzdhYjZhYmQ0ZWVmZWU1OTYxM2RmM2IyNjRhMmFjODVkMzJiZDQzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1JFQURNRS5tZApAQCAt
MCwwICsxLDI0NSBAQAorIyMgQWJvdXQKKworKiptZXRhbC1jcHAqKiBpcyBhIGxvdyBvdmVyaGVh
ZCBhbmQgaGVhZGVyIG9ubHkgQysrIGludGVyZmFjZSBmb3IgTWV0YWwgdGhhdCBoZWxwcyBkZXZl
bG9wZXJzIGFkZCBNZXRhbCBmdW5jdGlvbmFsaXR5IHRvIGdyYXBoaWNzIGFwcGxpY2F0aW9ucyB0
aGF0IGFyZSB3cml0dGVuIGluIEMrKyAoc3VjaCBhcyBnYW1lIGVuZ2luZXMpLiAqKm1ldGFsLWNw
cCoqIHJlbW92ZXMgdGhlIG5lZWQgdG8gY3JlYXRlIGEgc2hpbSBhbmQgYWxsb3dzIGRldmVsb3Bl
cnMgdG8gY2FsbCBNZXRhbCBmdW5jdGlvbnMgZGlyZWN0bHkgZnJvbSBhbnl3aGVyZSBpbiB0aGVp
ciBleGlzdGluZyBDKysgY29kZS4KKworCisjIyBIaWdobGlnaHRzCisKKy0gRHJvcCBpbiBDKysg
YWx0ZXJuYXRpdmUgaW50ZXJmYWNlIHRvIHRoZSBNZXRhbCBPYmplY3RpdmUtQyBoZWFkZXJzLgor
LSBEaXJlY3QgbWFwcGluZyBvZiBhbGwgTWV0YWwgT2JqZWN0aXZlLUMgY2xhc3NlcywgY29uc3Rh
bnRzIGFuZCBlbnVtcyB0byBDKysgaW4gdGhlIE1UTCBDKysgbmFtZXNwYWNlLgorLSBObyBtZWFz
dXJhYmxlIG92ZXJoZWFkIGNvbXBhcmVkIHRvIGNhbGxpbmcgTWV0YWwgT2JqZWN0aXZlLUMgaGVh
ZGVycywgZHVlIHRvIGlubGluaW5nIG9mIEMrKyBmdW5jdGlvbiBjYWxscy4KKy0gTm8gdXNhZ2Ug
b2Ygd3JhcHBlciBjb250YWluZXJzIHRoYXQgcmVxdWlyZSBhZGRpdGlvbmFsIGFsbG9jYXRpb25z
LgorLSBSZXF1aXJlcyBDKysxNyBkdWUgdG8gdGhlIHVzYWdlIG9mIGBjb25zdGV4cHJgIGluIGBO
Uzo6T2JqZWN0YC4KKy0gSWRlbnRpY2FsIGhlYWRlciBmaWxlcyBhbmQgZnVuY3Rpb24vY29uc3Rh
bnQvZW51bSBhdmFpbGFiaWxpdHkgZm9yIGlPUywgbWFjT1MgYW5kIHR2T1MuCistIEJhY2t3YXJk
cyBjb21wYXRpYmlsaXR5OiBBbGwgYGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzLi4uKClgIGZ1
bmN0aW9ucyBjaGVjayBpZiB0aGVpciByZXF1aXJlZCBzZWxlY3RvcnMgZXhpc3QgYW5kIGF1dG9t
YXRpY2FsbHkgcmV0dXJuIGBmYWxzZWAgaWYgbm90LgorLSBTdHJpbmcgKGBFcnJvckRvbWFpbmAp
IGNvbnN0YW50cyBhcmUgd2VhayBsaW5rZWQgYW5kIGF1dG9tYXRpY2FsbHkgc2V0IHRvIGBudWxs
cHRyYCBpZiBub3QgYXZhaWxhYmxlLgorCisjIyBNZW1vcnkgQWxsb2NhdGlvbiBQb2xpY3kKKwor
KiptZXRhbC1jcHAqKiBmb2xsb3dzIHRoZSBvYmplY3QgYWxsb2NhdGlvbiBwb2xpY2llcyBvZiBD
b2NvYSBhbmQgQ29jb2EgVG91Y2guIFVuZGVyc3RhbmRpbmcgdGhvc2UgcnVsZXMgaXMgZXNwZWNp
YWxseSBpbXBvcnRhbnQgd2hlbiB1c2luZyBtZXRhbC1jcHAsIGFzIEMrKyBvYmplY3RzIGFyZSBu
b3QgZWxpZ2libGUgZm9yIGF1dG9tYXRpYyByZWZlcmVuY2UgY291bnRpbmcgKEFSQykuCisKKyoq
bWV0YWwtY3BwKiogb2JqZWN0cyBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRvIGhlbHAgY29udmV5
IGFuZCBtYW5hZ2Ugb2JqZWN0IGxpZmVjeWNsZXMsIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbnMg
YXJlIG9ic2VydmVkOgorCisxLiAqWW91IG93biBhbnkgb2JqZWN0IHJldHVybmVkIGJ5IG1ldGhv
ZHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCogYGFsbG9jYCAqLCogYG5ld2AgKiwqIGBjb3B5YCAq
LCBvciogYG11dGFibGVDb3B5YC4gVGhlIG1ldGhvZCByZXR1cm5zIHRoZXNlIG9iamVjdHMgd2l0
aCBgcmV0YWluQ291bnRgIGVxdWFscyB0byBgMWAuCisyLiAqWW91IGNhbiB0YWtlIG93bmVyc2hp
cCBvZiBhbiBvYmplY3QgYnkgY2FsbGluZyBpdHMqIGBgYHJldGFpbigpYGBgICptZXRob2QqLiBB
IHJlY2VpdmVkIG9iamVjdCBpcyBub3JtYWxseSBndWFyYW50ZWVkIHRvIHJlbWFpbiB2YWxpZCB3
aXRoaW4gdGhlIG1ldGhvZCBpdCB3YXMgcmVjZWl2ZWQgaW4uIFlvdSB1c2UgYHJldGFpbmAgaW4g
dHdvIHNpdHVhdGlvbnM6ICgxKSBJbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgYW4gYWNjZXNzb3Ig
bWV0aG9kIChhIHNldHRlcikgb3IgdG8gdGFrZSBvd25lcnNoaXAgb2YgYW4gb2JqZWN0OyBhbmQg
KDIpIFRvIHByZXZlbnQgYW4gb2JqZWN0IGZyb20gYmVpbmcgZGVhbGxvY2F0ZWQgYXMgYSBzaWRl
LWVmZmVjdCBvZiBzb21lIG90aGVyIG9wZXJhdGlvbi4KKzMuICpXaGVuIHlvdSBubyBsb25nZXIg
bmVlZCBpdCwgeW91IG11c3QgcmVsaW5xdWlzaCBvd25lcnNoaXAgb2YgYW4gb2JqZWN0IHlvdSBv
d24qLiBZb3UgcmVsaW5xdWlzaCBvd25lcnNoaXAgYnkgY2FsbGluZyBpdHMgYHJlbGVhc2UoKWAg
b3IgYGF1dG9yZWxlYXNlKClgIG1ldGhvZC4KKzQuICpZb3UgbXVzdCBub3QgcmVsaW5xdWlzaCBv
d25lcnNoaXAgb2YgYW4gb2JqZWN0IHlvdSBkbyBub3Qgb3duKi4KKworV2hlbiBhbiBvYmplY3Qn
cyBgcmV0YWluQ291bnRgIHJlYWNoZXMgYDBgLCB0aGUgb2JqZWN0IGlzIGltbWVkaWF0ZWx5IGRl
YWxsb2NhdGVkLiBJdCBpcyBpbGxlZ2FsIHRvIGNhbGwgbWV0aG9kcyBvbiBhIGRlYWxsb2NhdGVk
IG9iamVjdCBhbmQgaXQgbWF5IGxlYWQgdG8gYW4gYXBwbGljYXRpb24gY3Jhc2guCisKKyMjIyBB
dXRvcmVsZWFzZVBvb2xzIGFuZCBPYmplY3RzCisKK1NldmVyYWwgbWV0aG9kcyB0aGF0IGNyZWF0
ZSB0ZW1wb3Jhcnkgb2JqZWN0cyBpbiAqKm1ldGFsLWNwcCoqIGFkZCB0aGVtIHRvIGFuIGBBdXRv
cmVsZWFzZVBvb2xgIHRvIGhlbHAgbWFuYWdlIHRoZWlyIGxpZmV0aW1lcy4gSW4gdGhlc2Ugc2l0
dWF0aW9ucywgYWZ0ZXIgKiptZXRhbC1jcHAqKiBjcmVhdGVzIHRoZSBvYmplY3QsIGl0IGFkZHMg
aXQgdG8gYW4gYEF1dG9yZWxlYXNlUG9vbGAsIHdoaWNoIHdpbGwgcmVsZWFzZSBpdHMgb2JqZWN0
cyB3aGVuIHlvdSByZWxlYXNlIChvciBkcmFpbikgaXQuCisKK0J5IGFkZGluZyB0ZW1wb3Jhcnkg
b2JqZWN0cyB0byBhbiBBdXRvcmVsZWFzZVBvb2wsIHlvdSBkbyBub3QgbmVlZCB0byBleHBsaWNp
dGx5IGNhbGwgYHJlbGVhc2UoKWAgdG8gZGVhbGxvY2F0ZSB0aGVtLiBJbnN0ZWFkLCB5b3UgY2Fu
IHJlbHkgb24gdGhlIGBBdXRvcmVsZWFzZVBvb2xgIHRvIGltcGxpY2l0bHkgbWFuYWdlIHRob3Nl
IGxpZmV0aW1lcy4KKworSWYgeW91IGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIG1ldGhvZCB0aGF0
IGRvZXMgbm90IGJlZ2luIHdpdGggYGFsbG9jYCwgYG5ld2AsIGBjb3B5YCwgb3IgYG11dGFibGVD
b3B5YCwgdGhlIGNyZWF0aW5nIG1ldGhvZCBhZGRzIHRoZSBvYmplY3QgdG8gYW4gYXV0b3JlbGVh
c2UgcG9vbC4KKworVGhlIHR5cGljYWwgc2NvcGUgb2YgYW4gYEF1dG9yZWxlYXNlUG9vbGAgaXMg
b25lIGZyYW1lIG9mIHJlbmRlcmluZyBmb3IgdGhlIG1haW4gdGhyZWFkIG9mIHRoZSBwcm9ncmFt
LiBXaGVuIHRoZSB0aHJlYWQgcmV0dXJucyBjb250cm9sIHRvIHRoZSBSdW5Mb29wIChhbiBvYmpl
Y3QgcmVzcG9uc2libGUgZm9yIHJlY2VpdmluZyBpbnB1dCBhbmQgZXZlbnRzIGZyb20gdGhlIHdp
bmRvd2luZyBzeXN0ZW0pLCB0aGUgcG9vbCBpcyAqZHJhaW5lZCosIHJlbGVhc2luZyBpdHMgb2Jq
ZWN0cy4KKworWW91IGNhbiBjcmVhdGUgYW5kIG1hbmFnZSBhZGRpdGlvbmFsIGBBdXRvcmVsZWFz
ZVBvb2xgcyBhdCBzbWFsbGVyIHNjb3BlcyB0byByZWR1Y2UgeW91ciBwcm9ncmFtJ3Mgd29ya2lu
ZyBzZXQsIGFuZCB5b3UgYXJlIHJlcXVpcmVkIHRvIGRvIHNvIGZvciBhbnkgYWRkaXRpb25hbCB0
aHJlYWRzIHlvdXIgcHJvZ3JhbSBjcmVhdGVzLgorCitJZiBhbiBvYmplY3QncyBsaWZlY3ljbGUg
bmVlZHMgdG8gYmUgZXh0ZW5kZWQgYmV5b25kIHRoZSBgQXV0b3JlbGVhc2VQb29sYCdzIHNjb3Bl
LCB5b3UgY2FuIGNsYWltIG93bmVyc2hpcCBvZiBpdCAoYXZvaWRpbmcgaXRzIHJlbGVhc2UgYmV5
b25kIHRoZSBwb29sJ3Mgc2NvcGUpIGJ5IGNhbGxpbmcgaXRzIGByZXRhaW4oKWAgbWV0aG9kIGJl
Zm9yZSBpdHMgcG9vbCBpcyBkcmFpbmVkLiBJbiB0aGVzZSBjYXNlcywgeW91IHdpbGwgYmUgcmVz
cG9uc2libGUgZm9yIG1ha2luZyB0aGUgYXBwcm9wcmlhdGUgYHJlbGVhc2UoKWAgY2FsbCBvbiB0
aGUgb2JqZWN0IGFmdGVyIHlvdSBubyBsb25nZXIgbmVlZCBpdC4gCisKK1lvdSBjYW4gZmluZCBh
IG1vcmUtZGV0YWlsZWQgaW50cm9kdWN0aW9uIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBydWxl
cyBoZXJlOiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9hcmNoaXZlL2RvY3Vt
ZW50YXRpb24vQ29jb2EvQ29uY2VwdHVhbC9NZW1vcnlNZ210L0FydGljbGVzL21tUnVsZXMuaHRt
bC4KKworRm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgYXBwbGljYXRpb24ncyBSdW5Mb29wLCBw
bGVhc2UgZmluZCBpdHMgZG9jdW1lbnRhdGlvbiBoZXJlOiBodHRwczovL2RldmVsb3Blci5hcHBs
ZS5jb20vZG9jdW1lbnRhdGlvbi9mb3VuZGF0aW9uL25zcnVubG9vcAorCisjIyMgVXNlIGFuZCBk
ZWJ1ZyBBdXRvcmVsZWFzZVBvb2xzCisKK1doZW4geW91IGNyZWF0ZSBhbiBhdXRvcmVsZWFzZWQg
b2JqZWN0IGFuZCB0aGVyZSBpcyBubyBlbmNsb3NpbmcgYEF1dG9yZWxlYXNlUG9vbGAsIHRoZSBv
YmplY3QgaXMgbGVha2VkLgorCitUbyBwcmV2ZW50IHRoaXMsIHlvdSBub3JtYWxseSBjcmVhdGUg
YW4gYEF1dG9yZWxlYXNlUG9vbGAgaW4geW91ciBwcm9ncmFtJ3MgYG1haW5gIGZ1bmN0aW9uLCBh
bmQgaW4gdGhlIGVudHJ5IGZ1bmN0aW9uIGZvciBldmVyeSB0aHJlYWQgeW91IGNyZWF0ZS4gWW91
IG1heSBhbHNvIGNyZWF0ZSBhZGRpdGlvbmFsIGBBdXRvcmVsZWFzZVBvb2xgcyB0byBhdm9pZCBn
cm93aW5nIHlvdXIgcHJvZ3JhbSdzIGhpZ2ggbWVtb3J5IHdhdGVybWFyayB3aGVuIHlvdSBjcmVh
dGUgc2V2ZXJhbCBhdXRvcmVsZWFzZWQgb2JqZWN0cywgc3VjaCBhcyB3aGVuIHJlbmRlcmluZy4K
KworVXNlIHRoZSBFbnZpcm9ubWVudCBWYXJpYWJsZSBgT0JKQ19ERUJVR19NSVNTSU5HX1BPT0xT
PVlFU2AgdG8gcHJpbnQgYSBydW50aW1lIHdhcm5pbmcgd2hlbiBhbiBhdXRvcmVsZWFzZWQgb2Jq
ZWN0IGlzIGxlYWtlZCBiZWNhdXNlIG5vIGVuY2xvc2luZyBgQXV0b3JlbGVhc2VQb29sYCBpcyBh
dmFpbGFibGUgZm9yIGl0cyB0aHJlYWQuCisKK1lvdSBjYW4gYWxzbyBydW4gYGxlYWtzIC0tYXV0
b3JlbGVhc2VQb29sc2Agb24gYSBtZW1ncmFwaCBmaWxlIG9yIGEgcHJvY2VzcyBJRCAobWFjT1Mg
b25seSkgdG8gdmlldyBhIGxpc3Rpbmcgb2YgeW91ciBwcm9ncmFtJ3MgYEF1dG9yZWxlYXNlUG9v
bGBzIGFuZCBhbGwgb2JqZWN0cyB0aGV5IGNvbnRhaW4uCisKKyMjIyBudWxscHRyCisKK1NpbWls
YXIgdG8gT2JqZWN0aXZlLUMsIGl0IGlzIGxlZ2FsIHRvIGNhbGwgYW55IG1ldGhvZCwgaW5jbHVk
aW5nIGByZXRhaW4oKWAgYW5kIGByZWxlYXNlKClgLCBvbiBgbnVsbHB0cmAgIm9iamVjdHMiLiBX
aGlsZSBjYWxsaW5nIG1ldGhvZHMgb24gYG51bGxwdHJgIHN0aWxsIGRvZXMgaW5jdXIgaW4gZnVu
Y3Rpb24gY2FsbCBvdmVyaGVhZCwgdGhlIGVmZmVjdGl2ZSByZXN1bHQgaXMgZXF1aXZhbGVudCBv
ZiBhIE5PUC4KKworQ29udmVyc2VseSwgZG8gbm90IGFzc3VtZSB0aGF0IGJlY2F1c2UgY2FsbGlu
ZyBhIG1ldGhvZCBvbiBhIHBvaW50ZXIgZGlkIG5vdCByZXN1bHQgaW4gYSBjcmFzaCwgdGhhdCB0
aGUgcG9pbnRlZC10byBvYmplY3QgaXMgdmFsaWQuCisKKyMjIEFkZGluZyBtZXRhbC1jcHAgdG8g
YSBQcm9qZWN0CisKK1NpbXBseSBpbmNsdWRlIGBNZXRhbC9NZXRhbC5ocHBgLiBUbyBlbnN1cmUg
dGhhdCB0aGUgc2VsZWN0b3IgYW5kIGNsYXNzIHN5bWJvbHMgYXJlIGxpbmtlZCwgYWRkIHRvIG9u
ZSBvZiB5b3VyIGNwcCBmaWxlczoKKworYGBgY3BwCisjZGVmaW5lIE5TX1BSSVZBVEVfSU1QTEVN
RU5UQVRJT04KKyNkZWZpbmUgTVRMX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKworI2luY2x1ZGUg
Ik1ldGFsL01ldGFsLmhwcCIKK2BgYAorCitJZiB5b3Ugd2FudCB0byB1c2UgdGhlIFF1YXJ0ekNv
cmUgd3JhcHBlciwgYWRkOgorCitgYGBjcHAKKyNkZWZpbmUgQ0FfUFJJVkFURV9JTVBMRU1FTlRB
VElPTgorCisjaW5jbHVkZSAiUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcCIKK2BgYAorCisjIyBH
ZW5lcmF0aW5nIGEgU2luZ2xlIEhlYWRlciBGaWxlCisKK1B1cmVseSBvcHRpb25hbDogWW91IGNh
biBnZW5lcmF0ZSBhIHNpbmdsZSBoZWFkZXIgZmlsZSB0aGF0IGNvbnRhaW5zIGFsbCAqKm1ldGFs
LWNwcCoqIGhlYWRlcnMgdmlhOgorCitgYGBzaGVsbAorLi9TaW5nbGVIZWFkZXIvTWFrZVNpbmds
ZUhlYWRlci5weSBGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwIFF1YXJ0ekNvcmUvUXVhcnR6Q29y
ZS5ocHAgTWV0YWwvTWV0YWwuaHBwCitgYGAKKworQnkgZGVmYXVsdCB0aGUgZ2VuZXJhdGVkIGhl
YWRlciBmaWxlIHdpbGwgYmUgd3JpdHRlbiB0byBgLi9TaW5nbGVIZWFkZXIvTWV0YWwuaHBwYAor
CisjIyBFeGFtcGxlcworCisjIyMjIENyZWF0aW5nIHRoZSBkZXZpY2UKKworIyMjIyMjIE9iamVj
dGl2ZS1DICh3aXRoIGF1dG9tYXRpYyByZWZlcmVuY2UgY291bnRpbmcpCisKK2BgYG9iamMKK2lk
PCBNVExEZXZpY2UgPiBkZXZpY2UgPSBNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCk7CisK
Ky8vIC4uLgorYGBgCisKKyMjIyMjIyBPYmplY3RpdmUtQworCitgYGBvYmpjCitpZDwgTVRMRGV2
aWNlID4gZGV2aWNlID0gTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOworCisvLyAuLi4K
KworW2RldmljZSByZWxlYXNlXTsKK2BgYAorCisjIyMjIyMgQysrCisKK2BgYGNwcAorTVRMOjpE
ZXZpY2UqIHBEZXZpY2UgPSBNVEw6OkNyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKTsKKworLy8g
Li4uCisKK3BEZXZpY2UtPnJlbGVhc2UoKTsKK2BgYAorCisjIyMjIE1ldGFsIGZ1bmN0aW9uIGNh
bGxzIG1hcCBkaXJlY3RseSB0byBDKysKKworIyMjIyMjIE9iamVjdGl2ZS1DICh3aXRoIGF1dG9t
YXRpYyByZWZlcmVuY2UgY291bnRpbmcpCisKK2BgYG9iamMKK01UTFNhbXBsZXJEZXNjcmlwdG9y
KiBzYW1wbGVyRGVzY3JpcHRvciA9IFtbTVRMU2FtcGxlckRlc2NyaXB0b3IgYWxsb2NdIGluaXRd
OworCitbc2FtcGxlckRlc2NyaXB0b3Igc2V0U0FkZHJlc3NNb2RlOiBNVExTYW1wbGVyQWRkcmVz
c01vZGVSZXBlYXRdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldFRBZGRyZXNzTW9kZTogTVRMU2Ft
cGxlckFkZHJlc3NNb2RlUmVwZWF0XTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRSQWRkcmVzc01v
ZGU6IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0
TWFnRmlsdGVyOiBNVExTYW1wbGVyTWluTWFnRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVzY3Jp
cHRvciBzZXRNaW5GaWx0ZXI6IE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5lYXJdOworW3NhbXBs
ZXJEZXNjcmlwdG9yIHNldE1pcEZpbHRlcjogTVRMU2FtcGxlck1pcEZpbHRlckxpbmVhcl07Citb
c2FtcGxlckRlc2NyaXB0b3Igc2V0U3VwcG9ydEFyZ3VtZW50QnVmZmVyczogWUVTXTsKKworaWQ8
IE1UTFNhbXBsZXJTdGF0ZSA+IHNhbXBsZXJTdGF0ZSA9IFtkZXZpY2UgbmV3U2FtcGxlclN0YXRl
V2l0aERlc2NyaXB0b3I6c2FtcGxlckRlc2NyaXB0b3JdOworYGBgCisKKyMjIyMjIyBPYmplY3Rp
dmUtQworCitgYGBvYmpjCitNVExTYW1wbGVyRGVzY3JpcHRvciogc2FtcGxlckRlc2NyaXB0b3Ig
PSBbW01UTFNhbXBsZXJEZXNjcmlwdG9yIGFsbG9jXSBpbml0XTsKKworW3NhbXBsZXJEZXNjcmlw
dG9yIHNldFNBZGRyZXNzTW9kZTogTVRMU2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0XTsKK1tzYW1w
bGVyRGVzY3JpcHRvciBzZXRUQWRkcmVzc01vZGU6IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVh
dF07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0UkFkZHJlc3NNb2RlOiBNVExTYW1wbGVyQWRkcmVz
c01vZGVSZXBlYXRdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldE1hZ0ZpbHRlcjogTVRMU2FtcGxl
ck1pbk1hZ0ZpbHRlckxpbmVhcl07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0TWluRmlsdGVyOiBN
VExTYW1wbGVyTWluTWFnRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRNaXBG
aWx0ZXI6IE1UTFNhbXBsZXJNaXBGaWx0ZXJMaW5lYXJdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNl
dFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnM6IFlFU107CisKK2lkPCBNVExTYW1wbGVyU3RhdGUgPiBz
YW1wbGVyU3RhdGUgPSBbZGV2aWNlIG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlwdG9yOnNhbXBs
ZXJEZXNjcmlwdG9yXTsKKworW3NhbXBsZXJEZXNjcmlwdG9yIHJlbGVhc2VdOworCisvLyAuLi4K
KworW3NhbXBsZXJTdGF0ZSByZWxlYXNlXTsKK2BgYAorCisjIyMjIyMgQysrCisKK2BgYGNwcAor
TVRMOjpTYW1wbGVyRGVzY3JpcHRvciogcFNhbXBsZXJEZXNjcmlwdG9yID0gTVRMOjpTYW1wbGVy
RGVzY3JpcHRvcjo6YWxsb2MoKS0+aW5pdCgpOworCitwU2FtcGxlckRlc2NyaXB0b3ItPnNldFNB
ZGRyZXNzTW9kZSggTVRMOjpTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXQgKTsKK3BTYW1wbGVyRGVz
Y3JpcHRvci0+c2V0VEFkZHJlc3NNb2RlKCBNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdCAp
OworcFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRSQWRkcmVzc01vZGUoIE1UTDo6U2FtcGxlckFkZHJl
c3NNb2RlUmVwZWF0ICk7CitwU2FtcGxlckRlc2NyaXB0b3ItPnNldE1hZ0ZpbHRlciggTVRMOjpT
YW1wbGVyTWluTWFnRmlsdGVyTGluZWFyICk7CitwU2FtcGxlckRlc2NyaXB0b3ItPnNldE1pbkZp
bHRlciggTVRMOjpTYW1wbGVyTWluTWFnRmlsdGVyTGluZWFyICk7CitwU2FtcGxlckRlc2NyaXB0
b3ItPnNldE1pcEZpbHRlciggTVRMOjpTYW1wbGVyTWlwRmlsdGVyTGluZWFyICk7CitwU2FtcGxl
ckRlc2NyaXB0b3ItPnNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMoIHRydWUgKTsKKworTVRMOjpT
YW1wbGVyU3RhdGUqIHBTYW1wbGVyU3RhdGUgPSBwRGV2aWNlLT5uZXdTYW1wbGVyU3RhdGUoIHBT
YW1wbGVyRGVzY3JpcHRvciApOworCitwU2FtcGxlckRlc2NyaXB0b3ItPnJlbGVhc2UoKTsKKwor
Ly8gLi4uCisKK3BTYW1wbGVyU3RhdGUtPnJlbGVhc2UoKTsKK2BgYAorCisjIyMjIEEgc3Vic2V0
IG9mIGJpbmRpbmdzIGZvciBGb3VuZGF0aW9uIGNsYXNzZXMgaXMgcHJvdmlkZWQgZm9yIHNlYW1s
ZXNzIGludGVncmF0aW9uCisKKyMjIyMjIyBPYmplY3RpdmUtQyAod2l0aCBhdXRvbWF0aWMgcmVm
ZXJlbmNlIGNvdW50aW5nKQorCitgYGBvYmpjCitOU0F1dG9yZWxlYXNlUG9vbCogIHBvb2wgICA9
IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworTlNTdHJpbmcqICAgICAgICAgICBz
dHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6ICJIZWxsbyBXb3JsZCIgZW5jb2Rp
bmc6IE5TQVNDSUlTdHJpbmdFbmNvZGluZ107CisKK3ByaW50ZiggInN0cmluZyA9IFwiJXNcIlxu
IiwgW3N0cmluZyBjU3RyaW5nVXNpbmdFbmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXSAp
OworYGBgCisKKyMjIyMjIyBPYmplY3RpdmUtQworCitgYGBvYmpjCitOU0F1dG9yZWxlYXNlUG9v
bCogcG9vbCAgID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CitOU1N0cmluZyog
ICAgICAgICAgc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOiAiSGVsbG8gV29y
bGQiIGVuY29kaW5nOiBOU0FTQ0lJU3RyaW5nRW5jb2RpbmddOworCQkJCQkJCQkKK3ByaW50Zigg
InN0cmluZyA9IFwiJXNcIlxuIiwgW3N0cmluZyBjU3RyaW5nVXNpbmdFbmNvZGluZzogTlNBU0NJ
SVN0cmluZ0VuY29kaW5nXSApOworCitbcG9vbCByZWxlYXNlXTsKK2BgYAorCisjIyMjIyMgQysr
CisKK2BgYGNwcAorTlM6OkF1dG9yZWxlYXNlUG9vbCogcFBvb2wgICA9IE5TOjpBdXRvcmVsZWFz
ZVBvb2w6OmFsbG9jKCktPmluaXQoKTsKK05TOjpTdHJpbmcqICAgICAgICAgIHBTdHJpbmcgPSBO
Uzo6U3RyaW5nOjpzdHJpbmcoICJIZWxsbyBXb3JsZCIsIE5TOjpBU0NJSVN0cmluZ0VuY29kaW5n
ICk7CisKK3ByaW50ZiggInBTdHJpbmcgPSBcIiVzXCJcbiIsIHBTdHJpbmctPmNTdHJpbmcoIE5T
OjpBU0NJSVN0cmluZ0VuY29kaW5nICkgKTsKKworcFBvb2wtPnJlbGVhc2UoKTsKK2BgYAorCisj
IyMjICBJbnRlcm9wZXJhYmlsaXR5IHdpdGggQ29yZUZvdW5kYXRpb24KKworYGBgY3BwCitNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiBwR2VvRGVz
Y3JpcHRvciAgPSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjphbGxvYygpLT5pbml0KCk7CitDRlR5cGVSZWYgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yc1tdICAgPSB7ICggQ0ZUeXBlUmVmICko
IHBHZW9EZXNjcmlwdG9yICkgfTsKK05TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBHZW9EZXNjcmlwdG9ycyA9ICggTlM6OkFycmF5KiApKCBDRkFy
cmF5Q3JlYXRlKCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkZXNjcmlwdG9ycywgU0laRU9GX0FSUkFZ
KCBkZXNjcmlwdG9ycyksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MgKSApOworCisvLyAuLi4KKwor
cEdlb0Rlc2NyaXB0b3JzLT5yZWxlYXNlKCk7CitgYGAKKworIyMjIyBBY2Nlc3NpbmcgYSBDQU1l
dGFsRHJhd2FibGUKKworYGBgb2JqYworI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FNZXRhbExheWVy
Lmg+CisjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcD4KKworLy8gLi4uCisKK0NB
TWV0YWxMYXllciogICAgICAgICBtZXRhbExheWVyICAgICAgICAgPSAvKiBnZXQgeW91ciBsYXll
ciBmcm9tIHlvdXIgdmlldyAqLzsKK2lkPCBDQU1ldGFsRHJhd2FibGUgPiBtZXRhbERyYXdhYmxl
ICAgICAgPSBbbWV0YWxMYXllciBuZXh0RHJhd2FibGVdOworQ0E6Ok1ldGFsRHJhd2FibGUqICAg
IHBNZXRhbENwcERyYXdhYmxlICA9ICggX19icmlkZ2UgQ0E6Ok1ldGFsRHJhd2FibGUqICkgbWV0
YWxEcmF3YWJsZTsKKworLy8gLi4uCitgYGAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9TaW5nbGVIZWFkZXIvTWFrZVNpbmdsZUhlYWRlci5weSBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9TaW5nbGVIZWFkZXIvTWFrZVNpbmdsZUhlYWRlci5weQpu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNThlNDllYzc3NmFjOTlmNzA5MDVmNmE1MWQ3NjlkMDc1MzllNTRiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1NpbmdsZUhlYWRl
ci9NYWtlU2luZ2xlSGVhZGVyLnB5CkBAIC0wLDAgKzEsMjcxIEBACisjIS91c3IvYmluL3B5dGhv
bgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMg
U2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkKKyMKKyMgQ29weXJpZ2h0IDIwMjAtMjAy
MSBBcHBsZSBJbmMuCisjCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisjCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW1w
b3J0IGFyZ3BhcnNlCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MK
K2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworIy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIEhlYWRlclByZWZpeCgg
b2JqZWN0ICk6CisJX190ZW1wbGF0ZSAJCQk9ICggJy8vXG4nCisJCQkJCQkJJy8vIHtmaWxlfVxu
JworCQkJCQkJCScvL1xuJworCQkJCQkJCScvLyB7bWV0YV9kYXRhfVxuJworCQkJCQkJCScvL1xu
JworCQkJCQkJCScvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy5cbicKKwkJCQkJCQkn
Ly9cbicKKwkJCQkJCQknLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7XG4nCisJCQkJCQkJJy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbicKKwkJCQkJ
CQknLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4nCisJCQkJCQkJ
Jy8vXG4nCisJCQkJCQkJJy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjBcbicKKwkJCQkJCQknLy9cbicKKwkJCQkJCQknLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuJworCQkJ
CQkJCScvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLFxuJworCQkJCQkJCScvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbicKKwkJCQkJ
CQknLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZFxuJworCQkJCQkJCScvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS5cbicKKwkJCQkJCQknLy9cbicKKwkJCQkJCQknXG4nICkKKworCV9fdGVtcGxhdGVfY29t
bWl0CT0JJ0F1dG9nZW5lcmF0ZWQgZnJvbSBjb21taXQge2NvbW1pdH0uJworCV9fdGVtcGxhdGVf
ZGF0ZQkJPQknQXV0b2dlbmVyYXRlZCBvbiAlQiAlZCwgJVkuJworCisJZGVmIF9faW5pdF9fKCBz
ZWxmLCBmaWxlICk6CisJCXNlbGYuX19maWxlID0gZmlsZQorCisJZGVmIF9fc3RyX18oIHNlbGYg
KToKKwkJcmV0dXJuIHNlbGYuX190ZW1wbGF0ZS5mb3JtYXQoIGZpbGUgPSBzZWxmLl9fZmlsZSwg
bWV0YV9kYXRhID0gc2VsZi5fX21ldGFfZGF0YV9zdHJpbmcoKSApCisKKwlkZWYgX19nZXRfY29t
bWl0X2hhc2goIHNlbGYgKToKKwkJZ2l0X2NvbW1pdF9oYXNoID0gTm9uZQorCisJCXRyeToKKwkJ
CWdpdF9kaXIJCQk9IG9zLnBhdGguZGlybmFtZSggb3MucGF0aC5yZWFscGF0aCggX19maWxlX18g
KSApCisJCQlwcm9jIAkJCT0gc3VicHJvY2Vzcy5Qb3BlbiggWyAnZ2l0JywgJ3Jldi1wYXJzZScs
ICdIRUFEJyBdLCBjd2QgPSBnaXRfZGlyLCBzdGRvdXQgPSBzdWJwcm9jZXNzLlBJUEUsIHN0ZGVy
ciA9IHN1YnByb2Nlc3MuUElQRSApCisJCQlnaXRfY29tbWl0X2hhc2ggPSBwcm9jLnN0ZG91dC5y
ZWFkKCkuZGVjb2RlKCAndXRmLTgnLCAncmVwbGFjZScgKS5zdHJpcCgpCisJCWV4Y2VwdDoKKwkJ
CWxvZ2dpbmcuZXJyb3IoICdGYWlsZWQgdG8gZGV0ZXJtaW5lIGdpdCBjb21taXQgaGFzaCEnICkK
KwkJCXBhc3MKKworCQlyZXR1cm4gZ2l0X2NvbW1pdF9oYXNoCisKKwlkZWYgX19nZXRfY29tbWl0
X3N0cmluZyggc2VsZiApOgorCQltZXRhX2RhdGEJCT0gTm9uZQorCQlnaXRfY29tbWl0X2hhc2gJ
PSBzZWxmLl9fZ2V0X2NvbW1pdF9oYXNoKCkKKworCQlpZiBnaXRfY29tbWl0X2hhc2g6CisJCQlt
ZXRhX2RhdGEgPSBzZWxmLl9fdGVtcGxhdGVfY29tbWl0LmZvcm1hdCggY29tbWl0ID0gZ2l0X2Nv
bW1pdF9oYXNoICkKKworCQlyZXR1cm4gbWV0YV9kYXRhCisKKwlkZWYgX19nZXRfZGF0ZV9zdHJp
bmcoIHNlbGYgKToKKwkJdG9kYXkgPSBkYXRldGltZS5kYXRlLnRvZGF5KCkKKyAKKwkJcmV0dXJu
IHRvZGF5LnN0cmZ0aW1lKCBzZWxmLl9fdGVtcGxhdGVfZGF0ZSApCisKKwlkZWYgX19tZXRhX2Rh
dGFfc3RyaW5nKCBzZWxmICk6CisJCW1ldGFfZGF0YSA9IHNlbGYuX19nZXRfY29tbWl0X3N0cmlu
ZygpCisKKwkJaWYgbm90IG1ldGFfZGF0YToKKwkJCW1ldGFfZGF0YSA9IHNlbGYuX19nZXRfZGF0
ZV9zdHJpbmcoKQorCisJCXJldHVybiBtZXRhX2RhdGEKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIFNpbmdsZUhlYWRlciggb2JqZWN0ICk6
CisJX19wcmFnbWFfb25jZSA9ICcjcHJhZ21hIG9uY2VcblxuJworCisJZGVmIF9faW5pdF9fKCBz
ZWxmICk6CisJCXNlbGYuX19oZWFkZXJfcGF0aHMgPSBsaXN0KCkKKworCWRlZiBfX3N0cl9fKCBz
ZWxmICk6CisJCXJldHVybiBzZWxmLnByb2Nlc3MoKQorCisJZGVmIGFwcGVuZCggc2VsZiwgaGVh
ZGVyX3BhdGggKToKKwkJc2VsZi5fX2hlYWRlcl9wYXRocy5hcHBlbmQoIGhlYWRlcl9wYXRoICkK
KworCWRlZiBwcm9jZXNzKCBzZWxmICk6CisJCW91dF9oZWFkZXIgCQkJCT0gc2VsZi5fX3ByYWdt
YV9vbmNlCisKKwkJc2VsZi5fX2luY2x1ZGVkX2hlYWRlcnMJPSBzZXQoKQorCQlzZWxmLl9fYmFz
ZV9wYXRoIAkJPSBsaXN0KCkKKworCQlmb3IgaGVhZGVyX3BhdGggaW4gc2VsZi5fX2hlYWRlcl9w
YXRoczoKKwkJCW91dF9oZWFkZXIgKz0gc2VsZi5fX3Byb2Nlc3NfaGVhZGVyKCBoZWFkZXJfcGF0
aCApCisKKwkJcmV0dXJuIHNlbGYuX19zdHJpcF9lbXB0eV9saW5lcyggb3V0X2hlYWRlciApCisK
KwlkZWYgX19yZWFkX2hlYWRlciggc2VsZiwgcGF0aCApOgorCQlwYXRoID0gb3MucGF0aC5yZWFs
cGF0aCggcGF0aCApCisKKwkJdHJ5OgorCQkJZiA9IG9wZW4oIHBhdGgsICdyJyApCisJCWV4Y2Vw
dDoKKwkJCXJhaXNlIFJ1bnRpbWVFcnJvciggJ0ZhaWxlZCB0byBvcGVuIGZpbGUgXCInICsgcGF0
aCArICdcIiBmb3IgcmVhZCEnICkKKworCQlyZXR1cm4gZi5yZWFkKCkKKworCWRlZiBfX3N0cmlw
X3ByYWdtYV9vbmNlKCBzZWxmLCBoZWFkZXIgKToKKwkJcmV0dXJuIHJlLnN1YiggJ1xccyojcHJh
Z21hIG9uY2VccypcXC9cXC8tKlxcbicsICcnLCBoZWFkZXIgKQorCisJZGVmIF9fc3RyaXBfY29t
bWVudHMoIHNlbGYsIGhlYWRlciApOgorCQlyZXR1cm4gcmUuc3ViKCAnXi8vLipcXG4nLCAnJywg
aGVhZGVyLCBmbGFncyA9IHJlLk1VTFRJTElORSApCisKKwlkZWYgX19zdHJpcF9lbXB0eV9saW5l
cyggc2VsZiwgaGVhZGVyICk6CisJCXJldHVybiByZS5zdWIoICdcXG5cXG4rJywgJ1xcblxcbics
IGhlYWRlciwgZmxhZ3MgPSByZS5NVUxUSUxJTkUgKQorCisJZGVmIF9fc3Vic3RpdHV0ZV9pbmNs
dWRlX2RpcmVjdGl2ZSggc2VsZiwgbWF0Y2ggKToKKwkJaGVhZGVyX3BhdGggPSBtYXRjaC5ncm91
cCggJ0hFQURFUl9QQVRIJyApCisKKwkJbG9nZ2luZy5pbmZvKCAnXHRTdWJzdGl0dXRpbmcgXCIn
ICsgaGVhZGVyX3BhdGggKyAnXCIuLi4nICkKKworCQlyZXR1cm4gc2VsZi5fX3Byb2Nlc3NfaGVh
ZGVyKCBvcy5wYXRoLmpvaW4oIHNlbGYuX19iYXNlX3BhdGhbLTFdLCBoZWFkZXJfcGF0aCApICkK
KworCWRlZiBfX3Byb2Nlc3NfaW5jbHVkZV9kaXJlY3RpdmVzKCBzZWxmLCBoZWFkZXIgKToKKwkJ
cmV0dXJuIHJlLnN1YiggJ15cXHMqI2luY2x1ZGVcXHNcXCIoP1A8SEVBREVSX1BBVEg+XFxTKilc
XCInLCBzZWxmLl9fc3Vic3RpdHV0ZV9pbmNsdWRlX2RpcmVjdGl2ZSwgaGVhZGVyLCBmbGFncyA9
IHJlLk1VTFRJTElORSApCisKKwlkZWYgX19wcm9jZXNzX2ZvdW5kYXRpb25fZGlyZWN0aXZlcygg
c2VsZiwgaGVhZGVyICk6CisJCWlmIGhlYWRlci5maW5kKCIjaW5jbHVkZSA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmhwcD4iKSAhPSAtMToKKwkJCWxvZ2dpbmcuaW5mbyggJ1x0U3Vic3RpdHV0aW5n
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPi4uLicgKQorCQkJcmV0dXJuIGhlYWRlci5yZXBs
YWNlKCIjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4iLCBzZWxmLl9fcHJvY2Vz
c19oZWFkZXIoIG9zLnBhdGguam9pbiggc2VsZi5fX2Jhc2VfcGF0aFstMV0sICIuLi9Gb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaHBwIiApICkgKQorCQlyZXR1cm4gaGVhZGVyCisKKworCWRlZiBfX3By
b2Nlc3NfaGVhZGVyKCBzZWxmLCBoZWFkZXJfcGF0aCApOgorCQlvdXRfaGVhZGVyID0gJycJCQor
CisJCWhlYWRlcl9wYXRoID0gb3MucGF0aC5yZWFscGF0aCggaGVhZGVyX3BhdGggKQorCisJCWlm
IG5vdCBoZWFkZXJfcGF0aCBpbiBzZWxmLl9faW5jbHVkZWRfaGVhZGVyczoKKwkJCWxvZ2dpbmcu
aW5mbyggJ1Byb2Nlc3NpbmcgXCInICsgaGVhZGVyX3BhdGggKyAnXCIuLi4nICkKKworCQkJc2Vs
Zi5fX2Jhc2VfcGF0aC5hcHBlbmQoIG9zLnBhdGguZGlybmFtZSggaGVhZGVyX3BhdGggKSApCisJ
CQlzZWxmLl9faW5jbHVkZWRfaGVhZGVycy5hZGQoIGhlYWRlcl9wYXRoICkKKwkJCQorCQkJb3V0
X2hlYWRlciA9IHNlbGYuX19yZWFkX2hlYWRlciggaGVhZGVyX3BhdGggKQorCQkJb3V0X2hlYWRl
ciA9IHNlbGYuX19zdHJpcF9wcmFnbWFfb25jZSggb3V0X2hlYWRlciApCisJCQlvdXRfaGVhZGVy
ID0gc2VsZi5fX3N0cmlwX2NvbW1lbnRzKCBvdXRfaGVhZGVyICkKKwkJCW91dF9oZWFkZXIgPSBz
ZWxmLl9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2ZXMoIG91dF9oZWFkZXIgKQorCQkJb3V0X2hl
YWRlciA9IHNlbGYuX19wcm9jZXNzX2ZvdW5kYXRpb25fZGlyZWN0aXZlcyggb3V0X2hlYWRlciAp
CisKKwkJCXNlbGYuX19iYXNlX3BhdGgucG9wKCkKKwkJZWxzZToKKwkJCWxvZ2dpbmcuaW5mbygg
J1x0U2tpcHBpbmcgXCInICsgaGVhZGVyX3BhdGggKyAnXCIuLi4nICkKKworCQlyZXR1cm4gb3V0
X2hlYWRlcgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworZGVmIGNyZWF0ZV9hcmd1bWVudF9wYXJzZXIoKToKKwlwYXJzZXIgCQkJPSBhcmdwYXJzZS5B
cmd1bWVudFBhcnNlcigpCisJYmFzZV9wYXRoIAkJPSBvcy5wYXRoLmRpcm5hbWUoIG9zLnBhdGgu
cmVhbHBhdGgoIF9fZmlsZV9fICkgKQorCW91dHB1dF9wYXRoCQk9IG9zLnBhdGguam9pbiggYmFz
ZV9wYXRoLCAnTWV0YWwuaHBwJyApCisKKwlwYXJzZXIuYWRkX2FyZ3VtZW50KCAnLW8nLCAnLS1v
dXRwdXQnLCAgZGVzdCA9ICdvdXRwdXRfcGF0aCcsIG1ldGF2YXIgPSAnUEFUSCcsIGRlZmF1bHQg
PSBvdXRwdXRfcGF0aCwgaGVscCA9ICdPdXRwdXQgcGF0aCBmb3IgdGhlIHNpbmdsZSBoZWFkZXIg
ZmlsZS4nICkKKwlwYXJzZXIuYWRkX2FyZ3VtZW50KCAnLXYnLCAnLS12ZXJib3NlJywgYWN0aW9u
ID0gJ3N0b3JlX3RydWUnLCAgaGVscCA9ICdTaG93IHZlcmJvc2Ugb3V0cHV0LicgKQorCXBhcnNl
ci5hZGRfYXJndW1lbnQoIGRlc3QgPSAnaGVhZGVyX3BhdGhzJywgbWV0YXZhciA9ICdIRUFERVJf
RklMRScsIG5hcmdzPScrJywgaGVscCA9ICdJbnB1dCBoZWFkZXIgZmlsZS4nICkKKworCXJldHVy
biBwYXJzZXIKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK2RlZiBwYXJzZV9hcmd1bWVudHMoKToKKwlwYXJzZXIJPSBjcmVhdGVfYXJndW1lbnRfcGFy
c2VyKCkKKwlhcmdzCT0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisJaWYgYXJncy52ZXJib3NlOgor
CQlsb2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKCBsb2dnaW5nLklORk8gKQorCWVsc2U6CisJ
CWxvZ2dpbmcuZ2V0TG9nZ2VyKCkuc2V0TGV2ZWwoIGxvZ2dpbmcuRVJST1IgKQorCisJcmV0dXJu
IGFyZ3MKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K2RlZiBtYWtlX2hlYWRlciggYXJncyApOgorCXByZWZpeCA9IEhlYWRlclByZWZpeCggb3MucGF0
aC5iYXNlbmFtZSggYXJncy5vdXRwdXRfcGF0aCApICkKKwloZWFkZXIgPSBTaW5nbGVIZWFkZXIo
KQorCQorCWZvciBoZWFkZXJfcGF0aCBpbiBhcmdzLmhlYWRlcl9wYXRoczoKKwkJaGVhZGVyLmFw
cGVuZCggaGVhZGVyX3BhdGggKQorCisJcmV0dXJuIHN0ciggcHJlZml4ICkgKyBzdHIoIGhlYWRl
ciApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitk
ZWYgbWFrZV9kaXIoIHBhdGggKToKKwl0cnk6CisJCWlmIG5vdCBvcy5wYXRoLmV4aXN0cyggcGF0
aCApOgorCQkJb3MubWFrZWRpcnMoIHBhdGggKQorCWV4Y2VwdCBvcy5lcnJvcjoKKwkJcGFzcwor
CWV4Y2VwdDoKKwkJcmFpc2UKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK2RlZiB3cml0ZV9oZWFkZXIoIGFyZ3MsIGNvbnRlbnQgKToKKwlwYXRoID0g
b3MucGF0aC5yZWFscGF0aCggYXJncy5vdXRwdXRfcGF0aCApCisKKwlsb2dnaW5nLmluZm8oICdX
cml0aW5nIFwiJyArIHBhdGggKyAnXCIuLi4nICkKKworCW1ha2VfZGlyKCBvcy5wYXRoLmRpcm5h
bWUoIHBhdGggKSApCisKKwl0cnk6CisJCWYgPSBvcGVuKCBwYXRoLCAndycgKQorCWV4Y2VwdDoK
KwkJcmFpc2UgUnVudGltZUVycm9yKCAnRmFpbGVkIHRvIG9wZW4gZmlsZSBcIicgKyBwYXRoICsg
J1wiIGZvciB3cml0ZSEnICkKKworCWYud3JpdGUoIGNvbnRlbnQgKQorCisjLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKKwlyZXN1bHQgPSAtMQorCQorCXRyeToKKwkJaWYgc3lzLmdldGRlZmF1bHRlbmNvZGlu
ZygpLmxvd2VyKCkgPT0gJ2FzY2lpJzoKKwkJCXJlbG9hZCggc3lzICkKKwkJCXN5cy5zZXRkZWZh
dWx0ZW5jb2RpbmcoICd1dGYtOCcgKQorCisJCWFyZ3MgCT0gcGFyc2VfYXJndW1lbnRzKCkKKwkJ
aGVhZGVyIAk9IG1ha2VfaGVhZGVyKCBhcmdzICkKKworCQl3cml0ZV9oZWFkZXIoIGFyZ3MsIGhl
YWRlciApCisKKwkJcmVzdWx0ID0gMAorCisJZXhjZXB0ICggS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5
c3RlbUV4aXQgKToKKwkgCXBhc3MKKwlleGNlcHQ6CisJIAlyYWlzZQorCisJc3lzLmV4aXQoIHJl
c3VsdCApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRhNTkw
OTc3YjIzYTkwMzE3YjgwMWFiZjZiZDI4MjU1MjIwYzBmZTAuLjI1NjI4N2Q3NzczNTJkNzM0OGJj
Mjk0ZTlhZDE1Y2NmZDFhNTIzMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wMi0xNiAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEludGVncmF0
ZSBNZXRhbC1jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNjY5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorCiAyMDIyLTAyLTE1ICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEhlYXBUeXBlIGFu
IGVudW0gY2xhc3MuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXgg
ZGQ1NWY4MzkyODYwYWJmZmRmNDU5OTA2ZTEyMmVmZjY2YTFjMGMwNS4uYWI3ODlkNzFjOWExMWVm
MGIzYmQ3YWQ2YjY3MmQyN2YyOGU1YmEzMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlci5weQpAQCAtNDAyLDcgKzQwMiw4IEBAIF9TS0lQUEVEX0ZJTEVTX1dJVEhfV0FSTklO
RyA9IFsKICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJLaXQnLCAnV2ViUHJvY2Vzcycs
ICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnd3BlJywgJ3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgn
KSwKICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJLaXQnLCAnV2ViUHJvY2VzcycsICdJ
bmplY3RlZEJ1bmRsZScsICdBUEknLCAnd3BlJywgJ0RPTScsICd3ZWJraXRkb20uaCcpLAogICAg
IG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkdQVScsICdXZWJHUFUnLCAnV2ViR1BVLmgnKSwK
LSAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJHUFUnLCAnV2ViR1BVJywgJ1dlYkdQVUV4
dC5oJyldCisgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViR1BVJywgJ1dlYkdQVScsICdX
ZWJHUFVFeHQuaCcpLAorICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkdQVScsICdXZWJH
UFUnLCAnbWV0YWwtY3BwJywgJ1NpbmdsZUhlYWRlcicsICdNYWtlU2luZ2xlSGVhZGVyLnB5Jyld
CiAKICMgRmlsZXMgdG8gc2tpcCB0aGF0IGFyZSBtb3JlIGNvbW1vbiBvciBvYnZpb3VzLgogIwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452284</attachid>
            <date>2022-02-16 18:26:24 -0800</date>
            <delta_ts>2022-02-16 20:15:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236697-20220216182622.patch</filename>
            <type>text/plain</type>
            <size>984031</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDM3NmI4MThiMWQ5Mzc5Zjkz
M2E1YjQ5YzdkNmMwYzFiYTcxYTFmMGQuLjdjMmYxYjFmNDQ0ZDk1ZWJiMTM1ODdjNzlmOWVmMjY1
MWU1NzJkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDIyLTAyLTE2ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW50
ZWdyYXRlIE1ldGFsLWNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2Njk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWV0YWwtY3BwIGlzIGEgbG93LW92ZXJoZWFkIEMrKyBpbnRlcmZhY2UgZm9yIE1l
dGFsLgorICAgICAgICBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbWV0YWwvY3BwLworCisg
ICAgICAgIE1ldGFsLWNwcCBpc24ndCBhIGxpYnJhcnkgcGVyLXNlLCBidXQgaXMgaW5zdGVhZCBq
dXN0IGEgY29sbGVjdGlvbiBvZiBmaWxlcyB3aGljaCB1c2VycworICAgICAgICBhcmUgc3VwcG9z
ZWQgdG8ganVzdCBjb3B5IGludG8gdGhlaXIgcHJvamVjdC4gVGhpcyBkb2VzIGp1c3QgdGhhdCwg
YW5kIGhvb2tzIHVwIGFsbCB0aGUKKyAgICAgICAgbmVjZXNzYXJ5IGZsYWdzIGFuZCBwYXRocyBh
bmQgZXZlcnl0aGluZy4KKworICAgICAgICBUaGlzIHVzZXMgdGhlICJzaW5nbGUgaGVhZGVyIGFs
dGVybmF0aXZlIiBkZXNjcmliZWQgb24gdGhhdCB3ZWJwYWdlLCBhbmQgY3JlYXRlcyB0aGUKKyAg
ICAgICAgc2luZ2xlIGZpbGUgYXMgYSBidWlsZCBzdGVwLgorCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvV2ViR1BVLnhjY29uZmlnOgorICAgICAgICAqIFdlYkdQVS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYkdQVS9NZXRhbC5jcHA6IEFkZGVkLgorICAgICAgICAq
IFdlYkdQVS9jb25maWcuaDoKKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
Rm91bmRhdGlvbi5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU0FycmF5LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3Vu
ZGF0aW9uL05TQXV0b3JlbGVhc2VQb29sLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21l
dGFsLWNwcC9Gb3VuZGF0aW9uL05TQnVuZGxlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0YS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGljdGlvbmFyeS5ocHA6IEFkZGVkLgorICAg
ICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0VudW1lcmF0b3IuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFcnJvci5ocHA6IEFk
ZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0xvY2suaHBwOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOb3RpZmljYXRp
b24uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNO
dW1iZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNPYmpDUnVudGltZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9OU09iamVjdC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAv
Rm91bmRhdGlvbi9OU1ByaXZhdGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNQcm9jZXNzSW5mby5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1JhbmdlLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJHUFUvbWV0YWwtY3BwL0xJQ0VOU0UudHh0OiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHA6IEFkZGVkLgorICAg
ICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29t
bWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAg
ICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0Q29tbWFuZEVuY29kZXIu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRQYXNz
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCdWZmZXIu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVN
YW5hZ2VyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExD
YXB0dXJlU2NvcGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTENvbW1hbmRCdWZmZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTENvbW1hbmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgor
ICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQaXBlbGluZS5o
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ291bnRlcnMu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlZmluZXMu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlcHRoU3Rl
bmNpbC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGV2
aWNlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEcmF3
YWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHlu
YW1pY0xpYnJhcnkuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEV2ZW50LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExGZW5jZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkhhbmRsZS5ocHA6IEFkZGVkLgorICAg
ICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Mb2cuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3RpdGNoaW5nLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFkZXJCcmlk
Z2UuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEhlYXAu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0
Q29tbWFuZEJ1ZmZlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHA6IEFkZGVk
LgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlicmFyeS5ocHA6IEFkZGVk
LgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlua2VkRnVuY3Rpb25zLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQYXJhbGxlbFJl
bmRlckNvbW1hbmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExQaXBlbGluZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMUGl4ZWxGb3JtYXQuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFByaXZhdGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRlLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVk
LgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGFzcy5ocHA6IEFk
ZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGlwZWxpbmUu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNl
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJj
ZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVQYXNzLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExTYW1wbGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHA6IEFk
ZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVGV4dHVyZS5ocHA6IEFk
ZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVHlwZXMuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZlcnRleERlc2NyaXB0b3Iu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZpc2libGVG
dW5jdGlvblRhYmxlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NZXRhbC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29y
ZS9DQURlZmluZXMuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL1F1YXJ0
ekNvcmUvQ0FNZXRhbERyYXdhYmxlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFs
LWNwcC9RdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9t
ZXRhbC1jcHAvUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9SRUFETUUubWQ6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1j
cHAvU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHk6IEFkZGVkLgorICAgICAgICAoSGVh
ZGVyUHJlZml4KToKKyAgICAgICAgKEhlYWRlclByZWZpeC5fX2luaXRfXyk6CisgICAgICAgIChI
ZWFkZXJQcmVmaXguX19zdHJfXyk6CisgICAgICAgIChIZWFkZXJQcmVmaXguX19nZXRfY29tbWl0
X2hhc2gpOgorICAgICAgICAoSGVhZGVyUHJlZml4Ll9fZ2V0X2NvbW1pdF9zdHJpbmcpOgorICAg
ICAgICAoSGVhZGVyUHJlZml4Ll9fZ2V0X2RhdGVfc3RyaW5nKToKKyAgICAgICAgKF9fbWV0YV9k
YXRhX3N0cmluZyk6CisgICAgICAgIChTaW5nbGVIZWFkZXIpOgorICAgICAgICAoU2luZ2xlSGVh
ZGVyLl9faW5pdF9fKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cl9fKToKKyAgICAgICAg
KFNpbmdsZUhlYWRlci5hcHBlbmQpOgorICAgICAgICAoU2luZ2xlSGVhZGVyLnByb2Nlc3MpOgor
ICAgICAgICAoU2luZ2xlSGVhZGVyLl9fcmVhZF9oZWFkZXIpOgorICAgICAgICAoU2luZ2xlSGVh
ZGVyLl9fc3RyaXBfcHJhZ21hX29uY2UpOgorICAgICAgICAoU2luZ2xlSGVhZGVyLl9fc3RyaXBf
Y29tbWVudHMpOgorICAgICAgICAoU2luZ2xlSGVhZGVyLl9fc3RyaXBfZW1wdHlfbGluZXMpOgor
ICAgICAgICAoU2luZ2xlSGVhZGVyLl9fc3Vic3RpdHV0ZV9pbmNsdWRlX2RpcmVjdGl2ZSk6Cisg
ICAgICAgIChTaW5nbGVIZWFkZXIuX19wcm9jZXNzX2luY2x1ZGVfZGlyZWN0aXZlcyk6CisgICAg
ICAgIChTaW5nbGVIZWFkZXIuX19wcm9jZXNzX2ZvdW5kYXRpb25fZGlyZWN0aXZlcyk6CisgICAg
ICAgIChTaW5nbGVIZWFkZXIuX19wcm9jZXNzX2hlYWRlcik6CisgICAgICAgIChjcmVhdGVfYXJn
dW1lbnRfcGFyc2VyKToKKyAgICAgICAgKHBhcnNlX2FyZ3VtZW50cyk6CisgICAgICAgIChtYWtl
X2hlYWRlcik6CisgICAgICAgIChtYWtlX2Rpcik6CisgICAgICAgICh3cml0ZV9oZWFkZXIpOgor
CiAyMDIyLTAyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dlYkdQVV0gVXBkYXRlIElETHMgYW5kIHN0dWJzIHRvIGxhdGVzdCB2ZXJzaW9u
IG9mIHRoZSBzcGVjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0NvbmZpZ3VyYXRpb25zL1dl
YkdQVS54Y2NvbmZpZyBiL1NvdXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29u
ZmlnCmluZGV4IGQ0NTU5ZWU5OGIyNjQxYjU3ZWQzYjA2ZWYzY2UyNmI2YjIzZGNjYmMuLmY5NDZl
NmZmYTYwZTc2MzY0NjdkZjY0YjVmOWUwMDg5MzViMDhkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJHUFUv
Q29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnCkBAIC0yMyw3ICsyMywxMCBAQAogCiAjaW5j
bHVkZSAiVmVyc2lvbi54Y2NvbmZpZyIKIAorV0FSTklOR19DRkxBR1MgPSAtV2FsbCAtV2V4dHJh
IC1XY2FzdC1xdWFsIC1XY2hhci1zdWJzY3JpcHRzIC1XY29uZGl0aW9uYWwtdW5pbml0aWFsaXpl
ZCAtV2V4dHJhLXRva2VucyAtV2Zvcm1hdD0yIC1XaW5pdC1zZWxmIC1XbWlzc2luZy1mb3JtYXQt
YXR0cmlidXRlIC1XbWlzc2luZy1ub3JldHVybiAtV3BvaW50ZXItYXJpdGggLVdyZWR1bmRhbnQt
ZGVjbHMgLVd3cml0ZS1zdHJpbmdzIC1XZXhpdC10aW1lLWRlc3RydWN0b3JzIC1XdGF1dG9sb2dp
Y2FsLWNvbXBhcmUgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaCAtV3ZsYSAtV2xpdGVyYWwtY29udmVy
c2lvbiAtV3RocmVhZC1zYWZldHkgLVduby10eXBlZGVmLXJlZGVmaW5pdGlvbiAtV25vLWlnbm9y
ZWQtcXVhbGlmaWVyczsKKwogSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIkKEJVSUxUX1BST0RVQ1RT
X0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoaW5oZXJpdGVkKTsKK1NZU1RFTV9IRUFERVJfU0VB
UkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkdQVS9t
ZXRhbC1jcHAgJChpbmhlcml0ZWQpOwogCiBJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CiAK
QEAgLTY5LDMgKzcyLDcgQEAgTU9EVUxFTUFQX0ZJTEUgPSBXZWJHUFUvV2ViR1BVLm1vZHVsZW1h
cDsKIAogU1VQUE9SVFNfVEVYVF9CQVNFRF9BUEkgPSBZRVM7CiBUQVBJX1ZFUklGWV9NT0RFID0g
UGVkYW50aWM7CisKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLVhsaW5rZXIgLW5vX3dh
cm5faW5pdHM7CisKK0hFQURFUk1BUF9JTkNMVURFU19QUk9KRUNUX0hFQURFUlMgPSBOTzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNm
NDBjNjM4YmU4M2ZkNTcyNTNlMzEwY2NmNTZjMGM2YTQ5MDE2ZTEuLjVlYTk3MWE3OWQ2MGI0NTBk
MWYwNjhmNTcwMTMyYjVkMDQyYjhmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEsNiArMTEsNyBAQAogCQkxQzAyM0Q0MDI3NDQ5
MDcwMDAxREI3MzQgLyogbGlid2dzbC5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNFQkQ3RjIyNzE2QjJDQzAwQTUyNTREIC8qIGxpYndnc2wuYSAq
LzsgfTsKIAkJMUMwMjNENEIyNzQ0OTVCOTAwMURCNzM0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
MDIzRDRBMjc0NDk1QjkwMDFEQjczNCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07
CiAJCTFDMkNFREVFMjcxRThBNzMwMEVEQzE2RiAvKiBNZXRhbC5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzJDRURFRDI3MUU4QTcz
MDBFREMxNkYgLyogTWV0YWwuZnJhbWV3b3JrICovOyB9OworCQkxQzUzMUEyNTI3QkRERjU1MDBD
RDEyN0UgLyogTWV0YWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM1MzFBMjQyN0JEREY1NTAwQ0QxMjdFIC8qIE1ldGFsLmNwcCAqLzsgfTsKIAkJ
MUM1QUNBOTQyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBOTIyNzNBNDFDMjAwOTVGOEQ1IC8q
IEluc3RhbmNlLm1tICovOyB9OwogCQkxQzVBQ0FCNjI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVy
UGlwZWxpbmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzVBQ0E5ODI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyUGlwZWxpbmUubW0gKi87IH07CiAJ
CTFDNUFDQUJCMjczQTQyNkQwMDk1RjhENSAvKiBCdWZmZXIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0E5RDI3M0E0MjZEMDA5NUY4RDUgLyog
QnVmZmVyLm1tICovOyB9OwpAQCAtNzEsNiArNzIsOTEgQEAKIAkJMUMwMjNENDcyNzQ0OTE2RDAw
MURCNzM0IC8qIFdHU0xVbml0VGVzdHMueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV0dTTFVuaXRU
ZXN0cy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwMjNENEEyNzQ0
OTVCOTAwMURCNzM0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRo
ID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQkxQzJDRURFRDI3MUU4QTczMDBFREMxNkYgLyogTWV0YWwuZnJhbWV3b3JrICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5m
cmFtZXdvcms7IG5hbWUgPSBNZXRhbC5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL01ldGFsLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJCTFD
NTMxOUNEMjdCRERENkUwMENEMTI3RSAvKiBNVExUeXBlcy5ocHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0g
TVRMVHlwZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlDRTI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyLmhwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lmg7IHBhdGggPSBNVExSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlDRjI3QkRERDZFMDBDRDEyN0UgLyogTVRMSW5kaXJl
Y3RDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMSW5kaXJlY3RDb21tYW5k
RW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQwMjdCRERE
NkUwMENEMTI3RSAvKiBNVExDb21wdXRlUGlwZWxpbmUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1U
TENvbXB1dGVQaXBlbGluZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMx
OUQxMjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5jdGlvbkhhbmRsZS5ocHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBw
YXRoID0gTVRMRnVuY3Rpb25IYW5kbGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzUzMTlEMjI3QkRERDZFMDBDRDEyN0UgLyogTVRMRHJhd2FibGUuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTERyYXdhYmxlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzE5RDMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTER5bmFtaWNMaWJyYXJ5LmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBNVExEeW5hbWljTGlicmFyeS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNTMxOUQ0MjdCRERENkUwMENEMTI3RSAvKiBNVExDb21wdXRlUGFzcy5ocHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5oOyBwYXRoID0gTVRMQ29tcHV0ZVBhc3MuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMTlENTI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVuY3Rpb25Db25zdGFudFZhbHVl
cy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQ2MjdCRERENkUwMENEMTI3RSAvKiBN
VExQaXBlbGluZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUGlwZWxpbmUuaHBwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlENzI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVu
ZGVyQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFJlbmRlckNvbW1hbmRF
bmNvZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDgyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0g
TVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzE5RDkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENhcHR1cmVNYW5hZ2VyLmhwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lmg7IHBhdGggPSBNVExDYXB0dXJlTWFuYWdlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNTMxOURBMjdCRERENkUwMENEMTI3RSAvKiBNVExDb21tYW5kRW5jb2Rlci5ocHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5oOyBwYXRoID0gTVRMQ29tbWFuZEVuY29kZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzUzMTlEQjI3QkRERDZFMDBDRDEyN0UgLyogTWV0YWwuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE1ldGFsLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzE5REMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmg7IHBhdGggPSBNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUREMjdCRERENkUwMENEMTI3RSAvKiBN
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQWNj
ZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzUzMTlERTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5j
b2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rl
ci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOURGMjdCRERENkUwMENE
MTI3RSAvKiBNVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmFz
dGVyaXphdGlvblJhdGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlF
MDI3QkRERDZFMDBDRDEyN0UgLyogTVRMTGlua2VkRnVuY3Rpb25zLmhwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBh
dGggPSBNVExMaW5rZWRGdW5jdGlvbnMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzUzMTlFMTI3QkRERDZFMDBDRDEyN0UgLyogTVRMVGV4dHVyZS5ocHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBw
YXRoID0gTVRMVGV4dHVyZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMx
OUUyMjdCRERENkUwMENEMTI3RSAvKiBNVExTYW1wbGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBN
VExTYW1wbGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTMyN0JE
REQ2RTAwQ0QxMjdFIC8qIE1UTERlcHRoU3RlbmNpbC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRM
RGVwdGhTdGVuY2lsLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTQy
N0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFyZ3VtZW50RW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTVRMQXJndW1lbnRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzE5RTUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUu
aHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFNjI3QkRERDZFMDBDRDEyN0UgLyog
TVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFZpc2libGVG
dW5jdGlvblRhYmxlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTcy
N0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFByaXZhdGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFBy
aXZhdGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFODI3QkRERDZF
MDBDRDEyN0UgLyogTVRMUmVzb3VyY2UuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFJlc291cmNl
LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTkyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRM
QWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzE5RUEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTERldmljZS5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTVRMRGV2aWNlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RUIy
N0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFyZ3VtZW50LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExB
cmd1bWVudC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUVDMjdCRERE
NkUwMENEMTI3RSAvKiBNVExGdW5jdGlvbkxvZy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRnVu
Y3Rpb25Mb2cuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFRDI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMQnVmZmVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExCdWZmZXIu
aHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFRTI3QkRERDZFMDBDRDEy
N0UgLyogTVRMUmVuZGVyUGFzcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmVuZGVyUGFzcy5o
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUVGMjdCRERENkUwMENEMTI3
RSAvKiBNVExIZWFwLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExIZWFwLmhwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjAyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFZlcnRl
eERlc2NyaXB0b3IuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFZlcnRleERlc2NyaXB0b3IuaHBw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGMTI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEZ1bmN0aW9u
U3RpdGNoaW5nLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjIyN0JE
REQ2RTAwQ0QxMjdFIC8qIE1UTExpYnJhcnkuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTExpYnJh
cnkuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGMzI3QkRERDZFMDBD
RDEyN0UgLyogTVRMUGl4ZWxGb3JtYXQuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFBpeGVsRm9y
bWF0LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjQyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTEZlbmNlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExGZW5jZS5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUY1MjdCRERENkUwMENEMTI3RSAvKiBN
VExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEluZGlyZWN0
Q29tbWFuZEJ1ZmZlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUY2
MjdCRERENkUwMENEMTI3RSAvKiBNVExSZW5kZXJQaXBlbGluZS5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTVRMUmVuZGVyUGlwZWxpbmUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzUzMTlGNzI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ29tbWFuZFF1ZXVlLmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBNVExDb21tYW5kUXVldWUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzUzMTlGODI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmg7IHBhdGggPSBNVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzUzMTlGOTI3QkRERDZFMDBDRDEyN0UgLyogTVRMQWNjZWxlcmF0
aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MzE5RkEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEJsaXRQYXNzLmhwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmg7IHBhdGggPSBNVExCbGl0UGFzcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNTMxOUZCMjdCRERENkUwMENEMTI3RSAvKiBNVExFdmVudC5ocHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBw
YXRoID0gTVRMRXZlbnQuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlG
QzI3QkRERDZFMDBDRDEyN0UgLyogTVRMQmluYXJ5QXJjaGl2ZS5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTVRMQmluYXJ5QXJjaGl2ZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NTMxOUZEMjdCRERENkUwMENEMTI3RSAvKiBNVExDYXB0dXJlU2NvcGUuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTENhcHR1cmVTY29wZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNTMxOUZFMjdCRERENkUwMENEMTI3RSAvKiBNVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuaDsgcGF0aCA9IE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZGMjdCRERENkUwMENEMTI3RSAvKiBNVExIZWFk
ZXJCcmlkZ2UuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEhlYWRlckJyaWRnZS5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTAwMjdCRERENkUwMENEMTI3RSAvKiBNVExD
b3VudGVycy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ291bnRlcnMuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwMTI3QkRERDZFMDBDRDEyN0UgLyogTVRMRGVmaW5l
cy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRGVmaW5lcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNTMxQTAyMjdCRERENkUwMENEMTI3RSAvKiBNVExSZXNvdXJjZVN0YXRl
UGFzcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwMzI3QkRERDZFMDBDRDEyN0UgLyogTVRM
Q29tbWFuZEJ1ZmZlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ29tbWFuZEJ1ZmZlci5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTA1MjdCRERENkUwMENEMTI3RSAv
KiBOU1N0cmluZy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNTdHJpbmcuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwNjI3QkRERDZFMDBDRDEyN0UgLyogTlNEaWN0aW9u
YXJ5LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0RpY3Rpb25hcnkuaHBwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzUzMUEwNzI3QkRERDZFMDBDRDEyN0UgLyogTlNMb2NrLmhwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmg7IHBhdGggPSBOU0xvY2suaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzUzMUEwODI3QkRERDZFMDBDRDEyN0UgLyogTlNQcm9jZXNzSW5mby5ocHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBwYXRoID0gTlNQcm9jZXNzSW5mby5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNTMxQTA5MjdCRERENkUwMENEMTI3RSAvKiBOU0Vycm9yLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBOU0Vycm9yLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMEEyN0JE
REQ2RTAwQ0QxMjdFIC8qIE5TT2JqQ1J1bnRpbWUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TT2Jq
Q1J1bnRpbWUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwQjI3QkRE
RDZFMDBDRDEyN0UgLyogTlNPYmplY3QuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TT2JqZWN0Lmhw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMEMyN0JEREQ2RTAwQ0QxMjdF
IC8qIE5TTm90aWZpY2F0aW9uLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU05vdGlmaWNhdGlvbi5o
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTBEMjdCRERENkUwMENEMTI3
RSAvKiBOU1ByaXZhdGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TUHJpdmF0ZS5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTBFMjdCRERENkUwMENEMTI3RSAvKiBOU1VS
TC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNVUkwuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzUzMUEwRjI3QkRERDZFMDBDRDEyN0UgLyogTlNBdXRvcmVsZWFzZVBvb2wuaHBw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuaDsgcGF0aCA9IE5TQXV0b3JlbGVhc2VQb29sLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMTAyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TUmFuZ2UuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE5TUmFuZ2UuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzUzMUExMTI3QkRERDZFMDBDRDEyN0UgLyogTlNUeXBlcy5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTlNUeXBlcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTEyMjdC
RERENkUwMENEMTI3RSAvKiBOU0RhdGEuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TRGF0YS5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTEzMjdCRERENkUwMENEMTI3RSAv
KiBOU051bWJlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNOdW1iZXIuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExNDI3QkRERDZFMDBDRDEyN0UgLyogRm91bmRhdGlv
bi5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gRm91bmRhdGlvbi5ocHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNTMxQTE1MjdCRERENkUwMENEMTI3RSAvKiBOU0RhdGUuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE5TRGF0ZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NTMxQTE2MjdCRERENkUwMENEMTI3RSAvKiBOU0RlZmluZXMuaHBwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9
IE5TRGVmaW5lcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTE3MjdC
RERENkUwMENEMTI3RSAvKiBOU0J1bmRsZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNCdW5kbGUu
aHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExODI3QkRERDZFMDBDRDEy
N0UgLyogTlNFbnVtZXJhdG9yLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0VudW1lcmF0b3IuaHBw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExOTI3QkRERDZFMDBDRDEyN0Ug
LyogTlNBcnJheS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNBcnJheS5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFBMjdCRERENkUwMENEMTI3RSAvKiBSRUFETUUubWQg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBuZXQuZGFy
aW5nZmlyZWJhbGwubWFya2Rvd247IHBhdGggPSBSRUFETUUubWQ7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNTMxQTFDMjdCRERENkUwMENEMTI3RSAvKiBRdWFydHpDb3JlLmhwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmg7IHBhdGggPSBRdWFydHpDb3JlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzFBMUQyN0JEREQ2RTAwQ0QxMjdFIC8qIENBUHJpdmF0ZS5ocHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBwYXRoID0gQ0FQcml2YXRlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzFBMUUyN0JEREQ2RTAwQ0QxMjdFIC8qIENBTWV0YWxEcmF3YWJsZS5ocHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBw
YXRoID0gQ0FNZXRhbERyYXdhYmxlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzFBMUYyN0JEREQ2RTAwQ0QxMjdFIC8qIENBRGVmaW5lcy5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gQ0FEZWZpbmVzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMjAy
N0JEREQ2RTAwQ0QxMjdFIC8qIExJQ0VOU0UudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IExJQ0VOU0UudHh0OyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEyMjI3QkRERDZFMDBDRDEyN0UgLyogTWFrZVNp
bmdsZUhlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IE1ha2VTaW5nbGVIZWFkZXIucHk7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTI0MjdCRERGNTUwMENEMTI3RSAvKiBN
ZXRhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXRhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNTMxQTJBMjdCREUwNjcwMENEMTI3RSAvKiBNZXRhbC5ocHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5oOyBwYXRoID0gTWV0YWwuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzVB
Q0E5MjI3M0E0MUMyMDA5NUY4RDUgLyogSW5zdGFuY2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBJbnN0YW5jZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1QUNBOTYyNzNB
NDI2RDAwOTVGOEQ1IC8qIFN1cmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3VyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzVBQ0E5NzI3M0E0
MjZEMDA5NUY4RDUgLyogU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg1LDYgKzI3
MSwxNTMgQEAKIAkJCXBhdGggPSBXR1NMVW5pdFRlc3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKKwkJMUM1MzE5Q0IyN0JEREQ2RTAwQ0QxMjdFIC8qIG1ldGFsLWNwcCAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUM1MzFBMDQyN0JE
REQ2RTAwQ0QxMjdFIC8qIEZvdW5kYXRpb24gKi8sCisJCQkJMUM1MzE5Q0MyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1ldGFsICovLAorCQkJCTFDNTMxQTFCMjdCRERENkUwMENEMTI3RSAvKiBRdWFydHpD
b3JlICovLAorCQkJCTFDNTMxQTIxMjdCRERENkUwMENEMTI3RSAvKiBTaW5nbGVIZWFkZXIgKi8s
CisJCQkJMUM1MzFBMjAyN0JEREQ2RTAwQ0QxMjdFIC8qIExJQ0VOU0UudHh0ICovLAorCQkJCTFD
NTMxQTFBMjdCRERENkUwMENEMTI3RSAvKiBSRUFETUUubWQgKi8sCisJCQkpOworCQkJcGF0aCA9
ICJtZXRhbC1jcHAiOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUM1MzE5
Q0MyN0JEREQ2RTAwQ0QxMjdFIC8qIE1ldGFsICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMTlEQjI3QkRERDZFMDBDRDEyN0UgLyogTWV0YWwuaHBw
ICovLAorCQkJCTFDNTMxOUU5MjdCRERENkUwMENEMTI3RSAvKiBNVExBY2NlbGVyYXRpb25TdHJ1
Y3R1cmUuaHBwICovLAorCQkJCTFDNTMxOUY5MjdCRERENkUwMENEMTI3RSAvKiBNVExBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5REQyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcCAqLywKKwkJCQkx
QzUzMTlFQjI3QkRERDZFMDBDRDEyN0UgLyogTVRMQXJndW1lbnQuaHBwICovLAorCQkJCTFDNTMx
OUU0MjdCRERENkUwMENEMTI3RSAvKiBNVExBcmd1bWVudEVuY29kZXIuaHBwICovLAorCQkJCTFD
NTMxOUZDMjdCRERENkUwMENEMTI3RSAvKiBNVExCaW5hcnlBcmNoaXZlLmhwcCAqLywKKwkJCQkx
QzUzMTlEODI3QkRERDZFMDBDRDEyN0UgLyogTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCAqLywK
KwkJCQkxQzUzMTlGQTI3QkRERDZFMDBDRDEyN0UgLyogTVRMQmxpdFBhc3MuaHBwICovLAorCQkJ
CTFDNTMxOUVEMjdCRERENkUwMENEMTI3RSAvKiBNVExCdWZmZXIuaHBwICovLAorCQkJCTFDNTMx
OUQ5MjdCRERENkUwMENEMTI3RSAvKiBNVExDYXB0dXJlTWFuYWdlci5ocHAgKi8sCisJCQkJMUM1
MzE5RkQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENhcHR1cmVTY29wZS5ocHAgKi8sCisJCQkJMUM1
MzFBMDMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENvbW1hbmRCdWZmZXIuaHBwICovLAorCQkJCTFD
NTMxOURBMjdCRERENkUwMENEMTI3RSAvKiBNVExDb21tYW5kRW5jb2Rlci5ocHAgKi8sCisJCQkJ
MUM1MzE5RjcyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENvbW1hbmRRdWV1ZS5ocHAgKi8sCisJCQkJ
MUM1MzE5RkUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHAg
Ki8sCisJCQkJMUM1MzE5RDQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENvbXB1dGVQYXNzLmhwcCAq
LywKKwkJCQkxQzUzMTlEMDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ29tcHV0ZVBpcGVsaW5lLmhw
cCAqLywKKwkJCQkxQzUzMUEwMDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ291bnRlcnMuaHBwICov
LAorCQkJCTFDNTMxQTAxMjdCRERENkUwMENEMTI3RSAvKiBNVExEZWZpbmVzLmhwcCAqLywKKwkJ
CQkxQzUzMTlFMzI3QkRERDZFMDBDRDEyN0UgLyogTVRMRGVwdGhTdGVuY2lsLmhwcCAqLywKKwkJ
CQkxQzUzMTlFQTI3QkRERDZFMDBDRDEyN0UgLyogTVRMRGV2aWNlLmhwcCAqLywKKwkJCQkxQzUz
MTlEMjI3QkRERDZFMDBDRDEyN0UgLyogTVRMRHJhd2FibGUuaHBwICovLAorCQkJCTFDNTMxOUQz
MjdCRERENkUwMENEMTI3RSAvKiBNVExEeW5hbWljTGlicmFyeS5ocHAgKi8sCisJCQkJMUM1MzE5
RkIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEV2ZW50LmhwcCAqLywKKwkJCQkxQzUzMTlGNDI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMRmVuY2UuaHBwICovLAorCQkJCTFDNTMxOUQ1MjdCRERENkUwMENE
MTI3RSAvKiBNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzLmhwcCAqLywKKwkJCQkxQzUzMTlGODI3
QkRERDZFMDBDRDEyN0UgLyogTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcCAqLywKKwkJCQkxQzUz
MTlEMTI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVuY3Rpb25IYW5kbGUuaHBwICovLAorCQkJCTFD
NTMxOUVDMjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5jdGlvbkxvZy5ocHAgKi8sCisJCQkJMUM1
MzE5RjEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcCAqLywKKwkJ
CQkxQzUzMTlGRjI3QkRERDZFMDBDRDEyN0UgLyogTVRMSGVhZGVyQnJpZGdlLmhwcCAqLywKKwkJ
CQkxQzUzMTlFRjI3QkRERDZFMDBDRDEyN0UgLyogTVRMSGVhcC5ocHAgKi8sCisJCQkJMUM1MzE5
RjUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAgKi8sCisJ
CQkJMUM1MzE5Q0YyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIu
aHBwICovLAorCQkJCTFDNTMxOUU1MjdCRERENkUwMENEMTI3RSAvKiBNVExJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlLmhwcCAqLywKKwkJCQkxQzUzMTlGMjI3QkRERDZFMDBDRDEyN0UgLyogTVRM
TGlicmFyeS5ocHAgKi8sCisJCQkJMUM1MzE5RTAyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTExpbmtl
ZEZ1bmN0aW9ucy5ocHAgKi8sCisJCQkJMUM1MzE5REUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFBh
cmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwICovLAorCQkJCTFDNTMxOUQ2MjdCRERENkUw
MENEMTI3RSAvKiBNVExQaXBlbGluZS5ocHAgKi8sCisJCQkJMUM1MzE5RjMyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1UTFBpeGVsRm9ybWF0LmhwcCAqLywKKwkJCQkxQzUzMTlFNzI3QkRERDZFMDBDRDEy
N0UgLyogTVRMUHJpdmF0ZS5ocHAgKi8sCisJCQkJMUM1MzE5REYyN0JEREQ2RTAwQ0QxMjdFIC8q
IE1UTFJhc3Rlcml6YXRpb25SYXRlLmhwcCAqLywKKwkJCQkxQzUzMTlENzI3QkRERDZFMDBDRDEy
N0UgLyogTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwICovLAorCQkJCTFDNTMxOUVFMjdCRERE
NkUwMENEMTI3RSAvKiBNVExSZW5kZXJQYXNzLmhwcCAqLywKKwkJCQkxQzUzMTlGNjI3QkRERDZF
MDBDRDEyN0UgLyogTVRMUmVuZGVyUGlwZWxpbmUuaHBwICovLAorCQkJCTFDNTMxOUU4MjdCRERE
NkUwMENEMTI3RSAvKiBNVExSZXNvdXJjZS5ocHAgKi8sCisJCQkJMUM1MzE5Q0UyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1
MzFBMDIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlc291cmNlU3RhdGVQYXNzLmhwcCAqLywKKwkJ
CQkxQzUzMTlFMjI3QkRERDZFMDBDRDEyN0UgLyogTVRMU2FtcGxlci5ocHAgKi8sCisJCQkJMUM1
MzE5REMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhw
cCAqLywKKwkJCQkxQzUzMTlFMTI3QkRERDZFMDBDRDEyN0UgLyogTVRMVGV4dHVyZS5ocHAgKi8s
CisJCQkJMUM1MzE5Q0QyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFR5cGVzLmhwcCAqLywKKwkJCQkx
QzUzMTlGMDI3QkRERDZFMDBDRDEyN0UgLyogTVRMVmVydGV4RGVzY3JpcHRvci5ocHAgKi8sCisJ
CQkJMUM1MzE5RTYyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhw
cCAqLywKKwkJCSk7CisJCQlwYXRoID0gTWV0YWw7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OworCQkxQzUzMUEwNDI3QkRERDZFMDBDRDEyN0UgLyogRm91bmRhdGlvbiAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUM1MzFBMTQyN0JEREQ2
RTAwQ0QxMjdFIC8qIEZvdW5kYXRpb24uaHBwICovLAorCQkJCTFDNTMxQTE5MjdCRERENkUwMENE
MTI3RSAvKiBOU0FycmF5LmhwcCAqLywKKwkJCQkxQzUzMUEwRjI3QkRERDZFMDBDRDEyN0UgLyog
TlNBdXRvcmVsZWFzZVBvb2wuaHBwICovLAorCQkJCTFDNTMxQTE3MjdCRERENkUwMENEMTI3RSAv
KiBOU0J1bmRsZS5ocHAgKi8sCisJCQkJMUM1MzFBMTIyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRGF0
YS5ocHAgKi8sCisJCQkJMUM1MzFBMTUyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRGF0ZS5ocHAgKi8s
CisJCQkJMUM1MzFBMTYyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRGVmaW5lcy5ocHAgKi8sCisJCQkJ
MUM1MzFBMDYyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRGljdGlvbmFyeS5ocHAgKi8sCisJCQkJMUM1
MzFBMTgyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRW51bWVyYXRvci5ocHAgKi8sCisJCQkJMUM1MzFB
MDkyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRXJyb3IuaHBwICovLAorCQkJCTFDNTMxQTA3MjdCRERE
NkUwMENEMTI3RSAvKiBOU0xvY2suaHBwICovLAorCQkJCTFDNTMxQTBDMjdCRERENkUwMENEMTI3
RSAvKiBOU05vdGlmaWNhdGlvbi5ocHAgKi8sCisJCQkJMUM1MzFBMTMyN0JEREQ2RTAwQ0QxMjdF
IC8qIE5TTnVtYmVyLmhwcCAqLywKKwkJCQkxQzUzMUEwQTI3QkRERDZFMDBDRDEyN0UgLyogTlNP
YmpDUnVudGltZS5ocHAgKi8sCisJCQkJMUM1MzFBMEIyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TT2Jq
ZWN0LmhwcCAqLywKKwkJCQkxQzUzMUEwRDI3QkRERDZFMDBDRDEyN0UgLyogTlNQcml2YXRlLmhw
cCAqLywKKwkJCQkxQzUzMUEwODI3QkRERDZFMDBDRDEyN0UgLyogTlNQcm9jZXNzSW5mby5ocHAg
Ki8sCisJCQkJMUM1MzFBMTAyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TUmFuZ2UuaHBwICovLAorCQkJ
CTFDNTMxQTA1MjdCRERENkUwMENEMTI3RSAvKiBOU1N0cmluZy5ocHAgKi8sCisJCQkJMUM1MzFB
MTEyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TVHlwZXMuaHBwICovLAorCQkJCTFDNTMxQTBFMjdCRERE
NkUwMENEMTI3RSAvKiBOU1VSTC5ocHAgKi8sCisJCQkpOworCQkJcGF0aCA9IEZvdW5kYXRpb247
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzUzMUExQjI3QkRERDZFMDBD
RDEyN0UgLyogUXVhcnR6Q29yZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUM1MzFBMUYyN0JEREQ2RTAwQ0QxMjdFIC8qIENBRGVmaW5lcy5ocHAgKi8s
CisJCQkJMUM1MzFBMUUyN0JEREQ2RTAwQ0QxMjdFIC8qIENBTWV0YWxEcmF3YWJsZS5ocHAgKi8s
CisJCQkJMUM1MzFBMUQyN0JEREQ2RTAwQ0QxMjdFIC8qIENBUHJpdmF0ZS5ocHAgKi8sCisJCQkJ
MUM1MzFBMUMyN0JEREQ2RTAwQ0QxMjdFIC8qIFF1YXJ0ekNvcmUuaHBwICovLAorCQkJKTsKKwkJ
CXBhdGggPSBRdWFydHpDb3JlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJ
MUM1MzFBMjEyN0JEREQ2RTAwQ0QxMjdFIC8qIFNpbmdsZUhlYWRlciAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUM1MzFBMjIyN0JEREQ2RTAwQ0QxMjdF
IC8qIE1ha2VTaW5nbGVIZWFkZXIucHkgKi8sCisJCQkpOworCQkJcGF0aCA9IFNpbmdsZUhlYWRl
cjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDNTMxQTI2MjdCRERGRTEw
MENEMTI3RSAvKiBEZXJpdmVkU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMUM1MzFBMjgyN0JERTAzMzAwQ0QxMjdFIC8qIG1ldGFsLWNwcCAq
LywKKwkJCSk7CisJCQluYW1lID0gRGVyaXZlZFNvdXJjZXM7CisJCQlwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViR1BVOworCQkJc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsKKwkJfTsK
KwkJMUM1MzFBMjgyN0JERTAzMzAwQ0QxMjdFIC8qIG1ldGFsLWNwcCAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUM1MzFBMjkyN0JERTA0OTAwQ0QxMjdF
IC8qIE1ldGFsICovLAorCQkJKTsKKwkJCXBhdGggPSAibWV0YWwtY3BwIjsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDNTMxQTI5MjdCREUwNDkwMENEMTI3RSAvKiBNZXRh
bCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUM1MzFB
MkEyN0JERTA2NzAwQ0QxMjdFIC8qIE1ldGFsLmhwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gTWV0
YWw7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxQ0VCRDdEOTI3MTZBRkJB
MDBBNTI1NEQgPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjEx
LDYgKzQ0NCw4IEBACiAJCTFDRUJEN0U1MjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTMxQTI2MjdCRERG
RTEwMENEMTI3RSAvKiBEZXJpdmVkU291cmNlcyAqLywKKwkJCQkxQzUzMTlDQjI3QkRERDZFMDBD
RDEyN0UgLyogbWV0YWwtY3BwICovLAogCQkJCTFDNUFDQUIyMjczQTQyNkQwMDk1RjhENSAvKiBB
ZGFwdGVyLmggKi8sCiAJCQkJMUM1QUNBQTkyNzNBNDI2RDAwOTVGOEQ1IC8qIEFkYXB0ZXIubW0g
Ki8sCiAJCQkJMUM1QUNBRDUyNzNBNEQ3MDAwOTVGOEQ1IC8qIEJpbmRHcm91cC5oICovLApAQCAt
MjMzLDYgKzQ2OCw3IEBACiAJCQkJMUNFQkQ4MEIyNzE2QzM3OTAwQTUyNTREIC8qIEV4cG9ydE1h
Y3Jvcy5oICovLAogCQkJCTFDNUFDQUEwMjczQTQyNkQwMDk1RjhENSAvKiBJbnN0YW5jZS5oICov
LAogCQkJCTFDNUFDQTkyMjczQTQxQzIwMDk1RjhENSAvKiBJbnN0YW5jZS5tbSAqLywKKwkJCQkx
QzUzMUEyNDI3QkRERjU1MDBDRDEyN0UgLyogTWV0YWwuY3BwICovLAogCQkJCTFDNUFDQURBMjcz
QTRFNzEwMDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5oICovLAogCQkJCTFDNUFDQUU0MjczQTU1
REQwMDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5tbSAqLywKIAkJCQkxQzVBQ0FBQzI3M0E0MjZE
MDA5NUY4RDUgLyogUXVlcnlTZXQuaCAqLywKQEAgLTI3MSwxMyArNTA3LDEzIEBACiAJCQljaGls
ZHJlbiA9ICgKIAkJCQkxQ0VCRDgwNzI3MTZDMkMwMDBBNTI1NEQgLyogQVNULmggKi8sCiAJCQkJ
MUNFQkQ4MDQyNzE2QkZBQjAwQTUyNTREIC8qIGNvbmZpZy5oICovLAotCQkJCTMzOEJCMkQzMjdC
NkI2NkMwMEUwNjZBQiAvKiBMZXhlci5oICovLAogCQkJCTMzOEJCMkQ1MjdCNkI2ODcwMEUwNjZB
QiAvKiBMZXhlci5jcHAgKi8sCisJCQkJMzM4QkIyRDMyN0I2QjY2QzAwRTA2NkFCIC8qIExleGVy
LmggKi8sCiAJCQkJMzM4QkIyRDEyN0I2QjYzRjAwRTA2NkFCIC8qIFNvdXJjZVNwYW4uaCAqLywK
LQkJCQkzMzhCQjJDRDI3QjZCNjAyMDBFMDY2QUIgLyogVG9rZW4uaCAqLywKIAkJCQkzMzhCQjJD
RjI3QjZCNjFCMDBFMDY2QUIgLyogVG9rZW4uY3BwICovLAotCQkJCTFDRUJEN0Y3MjcxNkIzNDQw
MEE1MjU0RCAvKiBXR1NMLmggKi8sCisJCQkJMzM4QkIyQ0QyN0I2QjYwMjAwRTA2NkFCIC8qIFRv
a2VuLmggKi8sCiAJCQkJMUNFQkQ4MDIyNzE2QkY4MjAwQTUyNTREIC8qIFdHU0wuY3BwICovLAor
CQkJCTFDRUJEN0Y3MjcxNkIzNDQwMEE1MjU0RCAvKiBXR1NMLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IFdHU0w7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzI3LDggKzU2Myw4IEBA
CiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQkzMzhCQjJEMjI3QjZCNjNGMDBFMDY2QUIgLyog
U291cmNlU3Bhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM4QkIyRDQyN0I2QjY2QzAwRTA2NkFC
IC8qIExleGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMzhCQjJEMjI3QjZCNjNGMDBFMDY2QUIg
LyogU291cmNlU3Bhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM4QkIyQ0UyN0I2QjYwMjAwRTA2
NkFCIC8qIFRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0VCRDdGODI3MTZCMzQ0MDBBNTI1
NEQgLyogV0dTTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtMzU5LDYgKzU5NSw3IEBACiAJ
CQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMUNF
QkQ3RUEyNzE2QUZCQTAwQTUyNTREIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
TmF0aXZlVGFyZ2V0ICJXZWJHUFUiICovOwogCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMUM1MzFB
MjMyN0JERERCNTAwQ0QxMjdFIC8qIFNoZWxsU2NyaXB0ICovLAogCQkJCTFDRUJEN0RFMjcxNkFG
QkEwMEE1MjU0RCAvKiBIZWFkZXJzICovLAogCQkJCTFDRUJEN0RGMjcxNkFGQkEwMEE1MjU0RCAv
KiBTb3VyY2VzICovLAogCQkJCTFDRUJEN0UwMjcxNkFGQkEwMEE1MjU0RCAvKiBGcmFtZXdvcmtz
ICovLApAQCAtNDUwLDYgKzY4NywxMDUgQEAKIC8qIEVuZCBQQlhSZXNvdXJjZXNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KKwkJMUM1MzFBMjMyN0JERERCNTAwQ0QxMjdFIC8qIFNoZWxsU2NyaXB0ICovID0geworCQkJ
aXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxpc3RQYXRocyA9ICgK
KwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkiLAorCQkJCSIkKFNSQ1JPT1QpL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcCIsCisJCQkJIiQoU1JDUk9P
VCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXJyYXkuaHBwIiwKKwkJCQkiJChTUkNS
T09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNBdXRvcmVsZWFzZVBvb2wuaHBwIiwK
KwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNCdW5kbGUuaHBw
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRhLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0ZS5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RlZmlu
ZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNE
aWN0aW9uYXJ5LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0
aW9uL05TRW51bWVyYXRvci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAv
Rm91bmRhdGlvbi9OU0Vycm9yLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TTG9jay5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU051bWJlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iakNSdW50aW1lLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqZWN0LmhwcCIsCisJCQkJIiQo
U1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1Byb2Nlc3NJbmZvLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUmFuZ2Uu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNTdHJp
bmcuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNU
eXBlcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9O
U1VSTC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNj
ZWxlcmF0aW9uU3RydWN0dXJlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlci5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0
dXJlVHlwZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TEFyZ3VtZW50LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExBcmd1bWVudEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEJpbmFyeUFyY2hpdmUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1Qp
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdFBhc3MuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJ1ZmZlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1Qp
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1hbmFnZXIuaHBwIiwKKwkJCQkiJChT
UkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVTY29wZS5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tbWFuZEJ1ZmZlci5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tbWFuZEVuY29k
ZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1h
bmRRdWV1ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExDb21wdXRlUGFzcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb3VudGVycy5ocHAiLAorCQkJCSIkKFNSQ1JPT1Qp
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVmaW5lcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1Qp
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVwdGhTdGVuY2lsLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXZpY2UuaHBwIiwKKwkJCQkiJChTUkNS
T09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERyYXdhYmxlLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEeW5hbWljTGlicmFyeS5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRXZlbnQuaHBwIiwKKwkJCQki
JChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZlbmNlLmhwcCIsCisJCQkJIiQo
U1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkNvbnN0YW50VmFsdWVz
LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlv
bkRlc2NyaXB0b3IuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEZ1bmN0aW9uSGFuZGxlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwIiwKKwkJCQkiJChTUkNST09UKS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEhlYWRlckJyaWRnZS5ocHAiLAorCQkJCSIkKFNSQ1JP
T1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5ocHAiLAorCQkJCSIkKFNSQ1JPT1Qp
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVjdENvbW1hbmRF
bmNvZGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExMaWJyYXJ5LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExMaW5rZWRGdW5jdGlvbnMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBw
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBpcGVsaW5lLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXhlbEZvcm1h
dC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUHJpdmF0
ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmFzdGVy
aXphdGlvblJhdGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQYXNzLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQaXBlbGluZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1Qp
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2UuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VT
dGF0ZVBhc3MuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TFNhbXBsZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExUZXh0dXJlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExUeXBlcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMVmVydGV4RGVzY3JpcHRvci5ocHAiLAorCQkJCSIkKFNSQ1JPT1Qp
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwIiwKKwkJ
CQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01ldGFsLmhwcCIsCisJCQkJIiQo
U1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBRGVmaW5lcy5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQU1ldGFsRHJhd2FibGUu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FQcml2
YXRlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL1F1
YXJ0ekNvcmUuaHBwIiwKKwkJCSk7CisJCQlvdXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsK
KwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC5ocHAiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJ
CXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wICR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291
cmNlcy9XZWJHUFUvbWV0YWwtY3BwL01ldGFsXG5cbmNkIFdlYkdQVS9tZXRhbC1jcHBcbi4vU2lu
Z2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkgLW8gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rl
cml2ZWRTb3VyY2VzL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTWV0YWwuaHBwIEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5ocHAgUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcCBNZXRhbC9NZXRhbC5ocHBc
biI7CisJCX07CiAJCTY1NzdGRkM4Mjc2QUNBMDYwMDExQUVDOCAvKiBDcmVhdGUgU3ltbGluayB0
byBBbHQgUm9vdCBQYXRoICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNl
OwogCQkJYnVpbGRBY3Rpb25NYXNrID0gODsKQEAgLTQ5NCw2ICs4MzAsNyBAQAogCQkJCTFDNUFD
QUMwMjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGlwZWxpbmUubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxQzVBQ0FDMTI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUM1QUNBOTQyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJMUM1MzFBMjUyN0JEREY1NTAwQ0QxMjdFIC8qIE1ldGFsLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFDNUFDQUU1MjczQTU1REQwMDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTFDNUFDQUJEMjczQTQyNkQwMDk1RjhENSAvKiBRdWVyeVNldC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUNCMjczQTQyNkUwMDk1RjhENSAvKiBRdWV1ZS5t
bSBpbiBTb3VyY2VzICovLApAQCAtNTE1LDggKzg1Miw4IEBACiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMzM4QkIyRDYyN0I2QjY4NzAwRTA2NkFC
IC8qIExleGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFDRUJEODAzMjcxNkJGODIwMEE1MjU0
RCAvKiBXR1NMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzOEJCMkQwMjdCNkI2MUIwMEUwNjZB
QiAvKiBUb2tlbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQ0VCRDgwMzI3MTZCRjgyMDBBNTI1
NEQgLyogV0dTTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL01ldGFsLmNwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL01ldGFsLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hYzhhNTE2NzFhODE1Mjg3ZmMxMzA3Yzg1NmQyYWYzN2RlZGQ1NGE0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvTWV0YWwuY3BwCkBAIC0wLDAgKzEsMzAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjZGVmaW5lIE5T
X1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKyNkZWZpbmUgQ0FfUFJJVkFURV9JTVBMRU1FTlRBVElP
TgorI2RlZmluZSBNVExfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorI2RlZmluZSB2aXNpYmlsaXR5
KHgpIHZpc2liaWxpdHkoImhpZGRlbiIpCisjaW5jbHVkZSA8TWV0YWwvTWV0YWwuaHBwPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvY29uZmlnLmggYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9jb25maWcuaAppbmRleCA4YzEyN2E5NDM0MGE3ZDdhYzAyOTliYmY0MjdhMTI3NmU1MTU2
NzNiLi5hMmYxYWZhYmQ0ZjI3NzM2ZGYxNDFlYzE0MGYyYWQ5Nzg5YWE2MDdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9jb25maWcuaApAQCAtMTksMTQgKzE5LDMxIEBACiAgKgogICovCiAKKyNkZWZpbmUgdmlzaWJp
bGl0eSh4KSB2aXNpYmlsaXR5KCJoaWRkZW4iKQorCiAjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19I
KSAmJiBIQVZFX0NPTkZJR19IICYmIGRlZmluZWQoQlVJTERJTkdfV0lUSF9DTUFLRSkKICNpbmNs
dWRlICJjbWFrZWNvbmZpZy5oIgogI2VuZGlmCiAKICNpbmNsdWRlICJFeHBvcnRNYWNyb3MuaCIK
IAorbmFtZXNwYWNlIE1UTCB7CitjbGFzcyBGdW5jdGlvbjsKK30KKworbmFtZXNwYWNlIE5TIHsK
K2NsYXNzIFN0cmluZzsKK2NsYXNzIFVSTDsKK30KKworI2luY2x1ZGUgPE1ldGFsL01ldGFsLmhw
cD4KKwogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKICNpbmNsdWRlIDx3dGYvRGlzYWxs
b3dDVHlwZS5oPgogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKKyN1bmRlZiB2aXNpYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQwODI1MmU5YjE2NjRkOWJkODYxMjE0NGU1YmIwYzRhZTY2ZTI4NTYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmhwcApAQCAtMCwwICsxLDQ1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwCisvLworLy8g
Q29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TQXJyYXkuaHBw
IgorI2luY2x1ZGUgIk5TQXV0b3JlbGVhc2VQb29sLmhwcCIKKyNpbmNsdWRlICJOU0J1bmRsZS5o
cHAiCisjaW5jbHVkZSAiTlNEYXRhLmhwcCIKKyNpbmNsdWRlICJOU0RhdGUuaHBwIgorI2luY2x1
ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNEaWN0aW9uYXJ5LmhwcCIKKyNpbmNsdWRl
ICJOU0VudW1lcmF0b3IuaHBwIgorI2luY2x1ZGUgIk5TRXJyb3IuaHBwIgorI2luY2x1ZGUgIk5T
TG9jay5ocHAiCisjaW5jbHVkZSAiTlNOb3RpZmljYXRpb24uaHBwIgorI2luY2x1ZGUgIk5TTnVt
YmVyLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhw
cCIKKyNpbmNsdWRlICJOU1Byb2Nlc3NJbmZvLmhwcCIKKyNpbmNsdWRlICJOU1JhbmdlLmhwcCIK
KyNpbmNsdWRlICJOU1N0cmluZy5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisjaW5jbHVk
ZSAiTlNVUkwuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0
aW9uL05TQXJyYXkuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNBcnJheS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODczMGRmOTk0OTY3YWYyM2YyOGQ1Yzc0NWZkYTRj
YWQ5NzIwNDBiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9Gb3VuZGF0aW9uL05TQXJyYXkuaHBwCkBAIC0wLDAgKzEsMTE1IEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05T
QXJyYXkuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lu
Y2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworewor
Y2xhc3MgQXJyYXkgOiBwdWJsaWMgQ29weWluZzxBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgQXJyYXkqIGFycmF5KCk7CisgICAgc3RhdGljIEFycmF5KiBhcnJheShjb25zdCBPYmplY3Qq
IHBPYmplY3QpOworICAgIHN0YXRpYyBBcnJheSogYXJyYXkoY29uc3QgT2JqZWN0KiBjb25zdCog
cE9iamVjdHMsIFVJbnRlZ2VyIGNvdW50KTsKKworICAgIHN0YXRpYyBBcnJheSogYWxsb2MoKTsK
KworICAgIEFycmF5KiAgICAgICAgaW5pdCgpOworICAgIEFycmF5KiAgICAgICAgaW5pdChjb25z
dCBPYmplY3QqIGNvbnN0KiBwT2JqZWN0cywgVUludGVnZXIgY291bnQpOworICAgIEFycmF5KiAg
ICAgICAgaW5pdChjb25zdCBjbGFzcyBDb2RlciogcENvZGVyKTsKKworICAgIHRlbXBsYXRlIDxj
bGFzcyBfT2JqZWN0ID0gT2JqZWN0PgorICAgIF9PYmplY3QqIG9iamVjdChVSW50ZWdlciBpbmRl
eCkgY29uc3Q7CisgICAgVUludGVnZXIgY291bnQoKSBjb25zdDsKK307Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpB
cnJheSogTlM6OkFycmF5OjphcnJheSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8QXJyYXkqPihfTlNfUFJJVkFURV9DTFMoTlNBcnJheSksIF9OU19QUklWQVRFX1NFTChhcnJh
eSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpBcnJheTo6YXJyYXkoY29uc3QgT2JqZWN0KiBw
T2JqZWN0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4oX05TX1BS
SVZBVEVfQ0xTKE5TQXJyYXkpLCBfTlNfUFJJVkFURV9TRUwoYXJyYXlXaXRoT2JqZWN0XyksIHBP
YmplY3QpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpBcnJheTo6YXJyYXkoY29uc3QgT2JqZWN0
KiBjb25zdCogcE9iamVjdHMsIFVJbnRlZ2VyIGNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPEFycmF5Kj4oX05TX1BSSVZBVEVfQ0xTKE5TQXJyYXkpLCBfTlNfUFJJVkFU
RV9TRUwoYXJyYXlXaXRoT2JqZWN0c19jb3VudF8pLCBwT2JqZWN0cywgY291bnQpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6QXJyYXkqIE5TOjpBcnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxBcnJheT4oX05TX1BSSVZBVEVfQ0xTKE5TQXJyYXkpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFy
cmF5KiBOUzo6QXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PEFy
cmF5PigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpBcnJheTo6aW5pdChjb25zdCBPYmplY3Qq
IGNvbnN0KiBwT2JqZWN0cywgVUludGVnZXIgY291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhPYmplY3Rz
X2NvdW50XyksIHBPYmplY3RzLCBjb3VudCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5
Ojppbml0KGNvbnN0IGNsYXNzIENvZGVyKiBwQ29kZXIpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhDb2Rlcl8p
LCBwQ29kZXIpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OkFycmF5Ojpjb3VudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChjb3VudCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNsYXNzIF9PYmplY3Q+CitfTlNfSU5MSU5FIF9P
YmplY3QqIE5TOjpBcnJheTo6b2JqZWN0KFVJbnRlZ2VyIGluZGV4KSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPF9PYmplY3QqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
b2JqZWN0QXRJbmRleF8pLCBpbmRleCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNBdXRvcmVsZWFzZVBvb2wuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNBdXRvcmVsZWFzZVBvb2wuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmEyMzgzYTU1ZmUwNjJiZTI1YWM4NTA4ZmRkNmI0OTVlMzJiOGRmOGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0F1dG9y
ZWxlYXNlUG9vbC5ocHAKQEAgLTAsMCArMSw4MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0F1dG9yZWxlYXNlUG9v
bC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVk
ZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNQ
cml2YXRlLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworY2xhc3MgQXV0
b3JlbGVhc2VQb29sIDogcHVibGljIE9iamVjdAoreworcHVibGljOgorICAgIHN0YXRpYyBBdXRv
cmVsZWFzZVBvb2wqIGFsbG9jKCk7CisgICAgQXV0b3JlbGVhc2VQb29sKiAgICAgICAgaW5pdCgp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZHJhaW4oKTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgIGFkZE9iamVjdChPYmplY3QqIHBPYmplY3QpOworCisgICAgc3RhdGlj
IHZvaWQgICAgICAgICAgICAgc2hvd1Bvb2xzKCk7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXV0b3JlbGVh
c2VQb29sKiBOUzo6QXV0b3JlbGVhc2VQb29sOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmFsbG9jPEF1dG9yZWxlYXNlUG9vbD4oX05TX1BSSVZBVEVfQ0xTKE5TQXV0b3JlbGVh
c2VQb29sKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpBdXRvcmVsZWFzZVBvb2wqIE5TOjpBdXRvcmVsZWFzZVBv
b2w6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PEF1dG9yZWxlYXNlUG9v
bD4oKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgdm9pZCBOUzo6QXV0b3JlbGVhc2VQb29sOjpkcmFpbigpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZHJhaW4pKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgdm9pZCBOUzo6QXV0b3JlbGVhc2VQb29sOjphZGRPYmplY3QoT2JqZWN0KiBwT2Jq
ZWN0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGFkZE9iamVjdF8pLCBwT2JqZWN0KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6QXV0b3JlbGVhc2VQ
b29sOjpzaG93UG9vbHMoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4oX05TX1BS
SVZBVEVfQ0xTKE5TQXV0b3JlbGVhc2VQb29sKSwgX05TX1BSSVZBVEVfU0VMKHNob3dQb29scykp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQnVu
ZGxlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQnVu
ZGxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZThjNTM5NWJiMDExNmJmMjExOTBjZTE3M2YwMTA2ODhlZGU5
MjdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNCdW5kbGUuaHBwCkBAIC0wLDAgKzEsMzc0IEBACisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TQnVuZGxl
LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRl
ICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TTm90aWZpY2F0aW9uLmhwcCIKKyNpbmNsdWRl
ICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK19OU19D
T05TVChOb3RpZmljYXRpb25OYW1lLCBCdW5kbGVEaWRMb2FkTm90aWZpY2F0aW9uKTsKK19OU19D
T05TVChOb3RpZmljYXRpb25OYW1lLCBCdW5kbGVSZXNvdXJjZVJlcXVlc3RMb3dEaXNrU3BhY2VO
b3RpZmljYXRpb24pOworCitjbGFzcyBTdHJpbmcqIExvY2FsaXplZFN0cmluZyhjb25zdCBTdHJp
bmcqIHBLZXksIGNvbnN0IFN0cmluZyopOworY2xhc3MgU3RyaW5nKiBMb2NhbGl6ZWRTdHJpbmdG
cm9tVGFibGUoY29uc3QgU3RyaW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNvbnN0IFN0
cmluZyopOworY2xhc3MgU3RyaW5nKiBMb2NhbGl6ZWRTdHJpbmdGcm9tVGFibGVJbkJ1bmRsZShj
b25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwgY29uc3QgY2xhc3MgQnVuZGxl
KiBwQmRsZSwgY29uc3QgU3RyaW5nKik7CitjbGFzcyBTdHJpbmcqIExvY2FsaXplZFN0cmluZ1dp
dGhEZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNv
bnN0IGNsYXNzIEJ1bmRsZSogcEJkbGUsIGNvbnN0IFN0cmluZyogcFZhbCwgY29uc3QgU3RyaW5n
Kik7CisKK2NsYXNzIEJ1bmRsZSA6IHB1YmxpYyBSZWZlcmVuY2luZzxCdW5kbGU+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIEJ1bmRsZSogICAgbWFpbkJ1bmRsZSgpOworCisgICAgc3RhdGljIEJ1
bmRsZSogICAgYnVuZGxlKGNvbnN0IGNsYXNzIFN0cmluZyogcFBhdGgpOworICAgIHN0YXRpYyBC
dW5kbGUqICAgIGJ1bmRsZShjb25zdCBjbGFzcyBVUkwqIHBVUkwpOworCisgICAgc3RhdGljIEJ1
bmRsZSogICAgYWxsb2MoKTsKKworICAgIEJ1bmRsZSogICAgICAgICAgIGluaXQoY29uc3QgY2xh
c3MgU3RyaW5nKiBwUGF0aCk7CisgICAgQnVuZGxlKiAgICAgICAgICAgaW5pdChjb25zdCBjbGFz
cyBVUkwqIHBVUkwpOworCisgICAgY2xhc3MgQXJyYXkqICAgICAgYWxsQnVuZGxlcygpIGNvbnN0
OworICAgIGNsYXNzIEFycmF5KiAgICAgIGFsbEZyYW1ld29ya3MoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgICAgIGxvYWQoKTsKKyAgICBib29sICAgICAgICAgICAgICB1bmxvYWQoKTsK
KworICAgIGJvb2wgICAgICAgICAgICAgIGlzTG9hZGVkKCkgY29uc3Q7CisKKyAgICBib29sICAg
ICAgICAgICAgICBwcmVmbGlnaHRBbmRSZXR1cm5FcnJvcihjbGFzcyBFcnJvcioqIHBFcnJvcikg
Y29uc3Q7CisgICAgYm9vbCAgICAgICAgICAgICAgbG9hZEFuZFJldHVybkVycm9yKGNsYXNzIEVy
cm9yKiogcEVycm9yKTsKKworICAgIGNsYXNzIFVSTCogICAgICAgIGJ1bmRsZVVSTCgpIGNvbnN0
OworICAgIGNsYXNzIFVSTCogICAgICAgIHJlc291cmNlVVJMKCkgY29uc3Q7CisgICAgY2xhc3Mg
VVJMKiAgICAgICAgZXhlY3V0YWJsZVVSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAgICAg
IFVSTEZvckF1eGlsaWFyeUV4ZWN1dGFibGUoY29uc3QgY2xhc3MgU3RyaW5nKiBwRXhlY3V0YWJs
ZU5hbWUpIGNvbnN0OworCisgICAgY2xhc3MgVVJMKiAgICAgICAgcHJpdmF0ZUZyYW1ld29ya3NV
UkwoKSBjb25zdDsKKyAgICBjbGFzcyBVUkwqICAgICAgICBzaGFyZWRGcmFtZXdvcmtzVVJMKCkg
Y29uc3Q7CisgICAgY2xhc3MgVVJMKiAgICAgICAgc2hhcmVkU3VwcG9ydFVSTCgpIGNvbnN0Owor
ICAgIGNsYXNzIFVSTCogICAgICAgIGJ1aWx0SW5QbHVnSW5zVVJMKCkgY29uc3Q7CisgICAgY2xh
c3MgVVJMKiAgICAgICAgYXBwU3RvcmVSZWNlaXB0VVJMKCkgY29uc3Q7CisKKyAgICBjbGFzcyBT
dHJpbmcqICAgICBidW5kbGVQYXRoKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgcmVz
b3VyY2VQYXRoKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgZXhlY3V0YWJsZVBhdGgo
KSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJs
ZShjb25zdCBjbGFzcyBTdHJpbmcqIHBFeGVjdXRhYmxlTmFtZSkgY29uc3Q7CisKKyAgICBjbGFz
cyBTdHJpbmcqICAgICBwcml2YXRlRnJhbWV3b3Jrc1BhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBT
dHJpbmcqICAgICBzaGFyZWRGcmFtZXdvcmtzUGF0aCgpIGNvbnN0OworICAgIGNsYXNzIFN0cmlu
ZyogICAgIHNoYXJlZFN1cHBvcnRQYXRoKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAg
YnVpbHRJblBsdWdJbnNQYXRoKCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJpbmcqICAgICBidW5k
bGVJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgY2xhc3MgRGljdGlvbmFyeSogaW5mb0RpY3Rpb25h
cnkoKSBjb25zdDsKKyAgICBjbGFzcyBEaWN0aW9uYXJ5KiBsb2NhbGl6ZWRJbmZvRGljdGlvbmFy
eSgpIGNvbnN0OworICAgIGNsYXNzIE9iamVjdCogICAgIG9iamVjdEZvckluZm9EaWN0aW9uYXJ5
S2V5KGNvbnN0IGNsYXNzIFN0cmluZyogcEtleSk7CisKKyAgICBjbGFzcyBTdHJpbmcqICAgICBs
b2NhbGl6ZWRTdHJpbmcoY29uc3QgY2xhc3MgU3RyaW5nKiBwS2V5LCBjb25zdCBjbGFzcyBTdHJp
bmcqIHBWYWx1ZSA9IG51bGxwdHIsIGNvbnN0IGNsYXNzIFN0cmluZyogcFRhYmxlTmFtZSA9IG51
bGxwdHIpIGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6Tm90aWZpY2F0aW9uTmFt
ZSwgQnVuZGxlRGlkTG9hZE5vdGlmaWNhdGlvbik7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6
Ok5vdGlmaWNhdGlvbk5hbWUsIEJ1bmRsZVJlc291cmNlUmVxdWVzdExvd0Rpc2tTcGFjZU5vdGlm
aWNhdGlvbik7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpMb2NhbGl6ZWRTdHJpbmcoY29uc3QgU3Ry
aW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqKQoreworICAgIHJldHVybiBCdW5kbGU6Om1haW5CdW5k
bGUoKS0+bG9jYWxpemVkU3RyaW5nKHBLZXksIG51bGxwdHIsIG51bGxwdHIpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6U3RyaW5nKiBOUzo6TG9jYWxpemVkU3RyaW5nRnJvbVRhYmxlKGNvbnN0IFN0cmluZyogcEtl
eSwgY29uc3QgU3RyaW5nKiBwVGJsLCBjb25zdCBTdHJpbmcqKQoreworICAgIHJldHVybiBCdW5k
bGU6Om1haW5CdW5kbGUoKS0+bG9jYWxpemVkU3RyaW5nKHBLZXksIG51bGxwdHIsIHBUYmwpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6U3RyaW5nKiBOUzo6TG9jYWxpemVkU3RyaW5nRnJvbVRhYmxlSW5CdW5kbGUo
Y29uc3QgU3RyaW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNvbnN0IEJ1bmRsZSogcEJk
bCwgY29uc3QgU3RyaW5nKikKK3sKKyAgICByZXR1cm4gcEJkbC0+bG9jYWxpemVkU3RyaW5nKHBL
ZXksIG51bGxwdHIsIHBUYmwpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6TG9jYWxpemVkU3Ry
aW5nV2l0aERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRi
bCwgY29uc3QgQnVuZGxlKiBwQmRsLCBjb25zdCBTdHJpbmcqIHBWYWwsIGNvbnN0IFN0cmluZyop
Cit7CisgICAgcmV0dXJuIHBCZGwtPmxvY2FsaXplZFN0cmluZyhwS2V5LCBwVmFsLCBwVGJsKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6OkJ1bmRsZSogTlM6OkJ1bmRsZTo6bWFpbkJ1bmRsZSgpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QnVuZGxlKj4oX05TX1BSSVZBVEVfQ0xTKE5TQnVuZGxl
KSwgX05TX1BSSVZBVEVfU0VMKG1haW5CdW5kbGUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkJ1bmRsZSogTlM6
OkJ1bmRsZTo6YnVuZGxlKGNvbnN0IGNsYXNzIFN0cmluZyogcFBhdGgpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8QnVuZGxlKj4oX05TX1BSSVZBVEVfQ0xTKE5TQnVuZGxlKSwg
X05TX1BSSVZBVEVfU0VMKGJ1bmRsZVdpdGhQYXRoXyksIHBQYXRoKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkJ1
bmRsZSogTlM6OkJ1bmRsZTo6YnVuZGxlKGNvbnN0IGNsYXNzIFVSTCogcFVSTCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5kbGUqPihfTlNfUFJJVkFURV9DTFMoTlNCdW5k
bGUpLCBfTlNfUFJJVkFURV9TRUwoYnVuZGxlV2l0aFVSTF8pLCBwVVJMKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OkJ1bmRsZSogTlM6OkJ1bmRsZTo6YWxsb2MoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPEJ1bmRsZSo+KF9OU19QUklWQVRFX0NMUyhOU0J1bmRsZSksIF9OU19QUklWQVRFX1NF
TChhbGxvYykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6QnVuZGxlKiBOUzo6QnVuZGxlOjppbml0KGNvbnN0IFN0
cmluZyogcFBhdGgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QnVuZGxlKj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoUGF0aF8pLCBwUGF0aCk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpCdW5kbGUqIE5TOjpCdW5kbGU6OmluaXQoY29uc3QgVVJMKiBwVVJMKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1bmRsZSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0
V2l0aFVSTF8pLCBwVVJMKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBOUzo6QnVuZGxlOjphbGxCdW5k
bGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChhbGxCdW5kbGVzKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6
OkJ1bmRsZTo6YWxsRnJhbWV3b3JrcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYWxsRnJhbWV3b3JrcykpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBib29sIE5TOjpCdW5kbGU6OmxvYWQoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb2FkKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJv
b2wgTlM6OkJ1bmRsZTo6dW5sb2FkKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodW5sb2FkKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6
OkJ1bmRsZTo6aXNMb2FkZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpc0xvYWRlZCkpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29s
IE5TOjpCdW5kbGU6OnByZWZsaWdodEFuZFJldHVybkVycm9yKEVycm9yKiogcEVycm9yKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklW
QVRFX1NFTChwcmVmbGlnaHRBbmRSZXR1cm5FcnJvcl8pLCBwRXJyb3IpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29s
IE5TOjpCdW5kbGU6OmxvYWRBbmRSZXR1cm5FcnJvcihFcnJvcioqIHBFcnJvcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9h
ZEFuZFJldHVybkVycm9yXyksIHBFcnJvcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6
OmJ1bmRsZVVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJM
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGJ1bmRsZVVSTCkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBO
Uzo6QnVuZGxlOjpyZXNvdXJjZVVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHJlc291cmNlVVJMKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OmV4ZWN1dGFibGVVUkwoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChleGVj
dXRhYmxlVVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OlVSTEZvckF1eGlsaWFy
eUV4ZWN1dGFibGUoY29uc3QgU3RyaW5nKiBwRXhlY3V0YWJsZU5hbWUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKFVS
TEZvckF1eGlsaWFyeUV4ZWN1dGFibGVfKSwgcEV4ZWN1dGFibGVOYW1lKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OlVSTCogTlM6OkJ1bmRsZTo6cHJpdmF0ZUZyYW1ld29ya3NVUkwoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwcml2
YXRlRnJhbWV3b3Jrc1VSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpzaGFyZWRG
cmFtZXdvcmtzVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxV
UkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc2hhcmVkRnJhbWV3b3Jrc1VSTCkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpzaGFyZWRTdXBwb3J0VVJMKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc2hh
cmVkU3VwcG9ydFVSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpidWlsdEluUGx1
Z0luc1VSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGJ1aWx0SW5QbHVnSW5zVVJMKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpV
UkwqIE5TOjpCdW5kbGU6OmFwcFN0b3JlUmVjZWlwdFVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGFwcFN0b3Jl
UmVjZWlwdFVSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpidW5kbGVQYXRo
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoYnVuZGxlUGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6
QnVuZGxlOjpyZXNvdXJjZVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChyZXNvdXJjZVBhdGgpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6ZXhlY3V0YWJsZVBhdGgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChleGVjdXRhYmxlUGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpw
YXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZShjb25zdCBTdHJpbmcqIHBFeGVjdXRhYmxlTmFtZSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwocGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGVfKSwgcEV4ZWN1dGFibGVO
YW1lKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6cHJpdmF0ZUZyYW1ld29ya3NQ
YXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwocHJpdmF0ZUZyYW1ld29ya3NQYXRoKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpTdHJpbmcqIE5TOjpCdW5kbGU6OnNoYXJlZEZyYW1ld29ya3NQYXRoKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoc2hhcmVkRnJhbWV3b3Jrc1BhdGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRs
ZTo6c2hhcmVkU3VwcG9ydFBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzaGFyZWRTdXBwb3J0UGF0aCkp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpidWlsdEluUGx1Z0luc1BhdGgoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChidWlsdEluUGx1Z0luc1BhdGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyog
TlM6OkJ1bmRsZTo6YnVuZGxlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGJ1bmRsZUlkZW50
aWZpZXIpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE5TOjpCdW5kbGU6OmluZm9EaWN0aW9u
YXJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluZm9EaWN0aW9uYXJ5KSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpE
aWN0aW9uYXJ5KiBOUzo6QnVuZGxlOjpsb2NhbGl6ZWRJbmZvRGljdGlvbmFyeSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChsb2NhbGl6ZWRJbmZvRGljdGlvbmFyeSkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6T2JqZWN0
KiBOUzo6QnVuZGxlOjpvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleShjb25zdCBTdHJpbmcqIHBL
ZXkpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8T2JqZWN0Kj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKG9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5XyksIHBLZXkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpsb2NhbGl6ZWRTdHJpbmcoY29uc3QgU3RyaW5nKiBw
S2V5LCBjb25zdCBTdHJpbmcqIHBWYWx1ZSAvKiA9IG51bGxwdHIgKi8sIGNvbnN0IFN0cmluZyog
cFRhYmxlTmFtZSAvKiA9IG51bGxwdHIgKi8pIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvY2FsaXplZFN0cmlu
Z0ZvcktleV92YWx1ZV90YWJsZV8pLCBwS2V5LCBwVmFsdWUsIHBUYWJsZU5hbWUpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0YS5ocHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGEuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjNjk5ZTQ3NDRmODEzZDZlZmRjZDVmNmI3NDY3M2VmZWNhMDNlN2MKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Rh
dGEuaHBwCkBAIC0wLDAgKzEsNTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNEYXRhLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisj
aW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIERhdGEgOiBwdWJsaWMgQ29w
eWluZzxEYXRhPgoreworcHVibGljOgorICAgIHZvaWQqICAgIG11dGFibGVCeXRlcygpIGNvbnN0
OworICAgIFVJbnRlZ2VyIGxlbmd0aCgpIGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCogTlM6OkRh
dGE6Om11dGFibGVCeXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChtdXRhYmxlQnl0ZXMpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlVJbnRlZ2VyIE5TOjpEYXRhOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobGVuZ3RoKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRl
LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0ZS5o
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWU2YzgzYWY3YzVjM2FmNzg3MzI0NWM5NmUwMzcwNTg2NWI5NjYyMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0
aW9uL05TRGF0ZS5ocHAKQEAgLTAsMCArMSw0MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0RhdGUuaHBwCisvLwor
Ly8gU2VlIExJQ0VOU0UudHh0IGZvciB0aGlzIHByb2plY3QgbGljZW5zaW5nIGluZm9ybWF0aW9u
LgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
cHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIK
KyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5T
Cit7CisKK3VzaW5nIFRpbWVJbnRlcnZhbCA9IGRvdWJsZTsKKworY2xhc3MgRGF0ZSA6IHB1Ymxp
YyBDb3B5aW5nPERhdGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIERhdGUqIGRhdGVXaXRoVGlt
ZUludGVydmFsU2luY2VOb3coVGltZUludGVydmFsIHNlY3MpOworfTsKKworfSAvLyBOUworCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6RGF0ZSogTlM6OkRhdGU6OmRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3coTlM6OlRp
bWVJbnRlcnZhbCBzZWNzKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6RGF0ZSo+KF9OU19QUklWQVRFX0NMUyhOU0RhdGUpLCBfTlNfUFJJVkFURV9TRUwoZGF0ZVdp
dGhUaW1lSW50ZXJ2YWxTaW5jZU5vd18pLCBzZWNzKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNE
ZWZpbmVzLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
RGVmaW5lcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBlNjcwODY1ZmZmNjg2ZGFmZjhiZDdhYjI4YzJlZmU3
ZWMzYTU5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHAKQEAgLTAsMCArMSw0MSBAQAorLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0Rl
ZmluZXMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2Rl
ZmluZSBfTlNfV0VBS19JTVBPUlQgX19hdHRyaWJ1dGVfXygod2Vha19pbXBvcnQpKQorI2RlZmlu
ZSBfTlNfRVhQT1JUIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCisjZGVm
aW5lIF9OU19FWFRFUk4gZXh0ZXJuICJDIiBfTlNfRVhQT1JUCisjZGVmaW5lIF9OU19JTkxJTkUg
aW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQorI2RlZmluZSBfTlNfUEFDS0VE
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpCisKKyNkZWZpbmUgX05TX0NPTlNUKHR5cGUsIG5hbWUp
IF9OU19FWFRFUk4gdHlwZSBjb25zdCBuYW1lOworI2RlZmluZSBfTlNfRU5VTSh0eXBlLCBuYW1l
KSBlbnVtIG5hbWUgOiB0eXBlCisjZGVmaW5lIF9OU19PUFRJT05TKHR5cGUsIG5hbWUpIFwKKyAg
ICB1c2luZyBuYW1lID0gdHlwZTsgICAgICAgICAgXAorICAgIGVudW0gOiBuYW1lCisKKyNkZWZp
bmUgX05TX0NBU1RfVE9fVUlOVCh2YWx1ZSkgc3RhdGljX2Nhc3Q8TlM6OlVJbnRlZ2VyPih2YWx1
ZSkKKyNkZWZpbmUgX05TX1ZBTElEQVRFX1NJWkUobnMsIG5hbWUpIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKG5zOjpuYW1lKSA9PSBzaXplb2YobnMjI25hbWUpLCAic2l6ZSBtaXNtYXRjaCAiICNucyAi
OjoiICNuYW1lKQorI2RlZmluZSBfTlNfVkFMSURBVEVfRU5VTShucywgbmFtZSkgc3RhdGljX2Fz
c2VydChfTlNfQ0FTVF9UT19VSU5UKG5zOjpuYW1lKSA9PSBfTlNfQ0FTVF9UT19VSU5UKG5zIyNu
YW1lKSwgInZhbHVlIG1pc21hdGNoICIgI25zICI6OiIgI25hbWUpCisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEaWN0aW9uYXJ5LmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGljdGlvbmFyeS5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2NiZTJiZDgzZDNkNDFlNTVlYmI2OTUxNjFmOTBlMTA4NWI1Mzk0OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGlj
dGlvbmFyeS5ocHAKQEAgLTAsMCArMSwxMjggQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNEaWN0aW9uYXJ5LmhwcAor
Ly8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0Vu
dW1lcmF0b3IuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1R5cGVz
LmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K25hbWVzcGFjZSBOUworeworY2xhc3MgRGljdGlvbmFyeSA6IHB1YmxpYyBOUzo6Q29weWluZzxE
aWN0aW9uYXJ5PgoreworcHVibGljOgorICAgIHN0YXRpYyBEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5
KCk7CisgICAgc3RhdGljIERpY3Rpb25hcnkqIGRpY3Rpb25hcnkoY29uc3QgT2JqZWN0KiBwT2Jq
ZWN0LCBjb25zdCBPYmplY3QqIHBLZXkpOworICAgIHN0YXRpYyBEaWN0aW9uYXJ5KiBkaWN0aW9u
YXJ5KGNvbnN0IE9iamVjdCogY29uc3QqIHBPYmplY3RzLCBjb25zdCBPYmplY3QqIGNvbnN0KiBw
S2V5cywgVUludGVnZXIgY291bnQpOworCisgICAgc3RhdGljIERpY3Rpb25hcnkqIGFsbG9jKCk7
CisKKyAgICBEaWN0aW9uYXJ5KiAgICAgICAgaW5pdCgpOworICAgIERpY3Rpb25hcnkqICAgICAg
ICBpbml0KGNvbnN0IE9iamVjdCogY29uc3QqIHBPYmplY3RzLCBjb25zdCBPYmplY3QqIGNvbnN0
KiBwS2V5cywgVUludGVnZXIgY291bnQpOworICAgIERpY3Rpb25hcnkqICAgICAgICBpbml0KGNv
bnN0IGNsYXNzIENvZGVyKiBwQ29kZXIpOworCisgICAgdGVtcGxhdGUgPGNsYXNzIF9LZXlUeXBl
ID0gT2JqZWN0PgorICAgIEVudW1lcmF0b3I8X0tleVR5cGU+KiBrZXlFbnVtZXJhdG9yKCkgY29u
c3Q7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdCA9IE9iamVjdD4KKyAgICBfT2JqZWN0
KiBvYmplY3QoY29uc3QgT2JqZWN0KiBwS2V5KSBjb25zdDsKKyAgICBVSW50ZWdlciBjb3VudCgp
IGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE5TOjpEaWN0aW9uYXJ5OjpkaWN0
aW9uYXJ5KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4o
X05TX1BSSVZBVEVfQ0xTKE5TRGljdGlvbmFyeSksIF9OU19QUklWQVRFX1NFTChkaWN0aW9uYXJ5
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6ZGljdGlvbmFyeShj
b25zdCBPYmplY3QqIHBPYmplY3QsIGNvbnN0IE9iamVjdCogcEtleSkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4oX05TX1BSSVZBVEVfQ0xTKE5TRGljdGlv
bmFyeSksIF9OU19QUklWQVRFX1NFTChkaWN0aW9uYXJ5V2l0aE9iamVjdF9mb3JLZXlfKSwgcE9i
amVjdCwgcEtleSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6ZGlj
dGlvbmFyeShjb25zdCBPYmplY3QqIGNvbnN0KiBwT2JqZWN0cywgY29uc3QgT2JqZWN0KiBjb25z
dCogcEtleXMsIFVJbnRlZ2VyIGNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPERpY3Rpb25hcnkqPihfTlNfUFJJVkFURV9DTFMoTlNEaWN0aW9uYXJ5KSwgX05TX1BSSVZB
VEVfU0VMKGRpY3Rpb25hcnlXaXRoT2JqZWN0c19mb3JLZXlzX2NvdW50XyksCisgICAgICAgIHBP
YmplY3RzLCBwS2V5cywgY291bnQpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rp
b25hcnk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8RGljdGlvbmFy
eT4oX05TX1BSSVZBVEVfQ0xTKE5TRGljdGlvbmFyeSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFy
eSogTlM6OkRpY3Rpb25hcnk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0
PERpY3Rpb25hcnk+KCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6
aW5pdChjb25zdCBPYmplY3QqIGNvbnN0KiBwT2JqZWN0cywgY29uc3QgT2JqZWN0KiBjb25zdCog
cEtleXMsIFVJbnRlZ2VyIGNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PERpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhPYmplY3RzX2Zvcktl
eXNfY291bnRfKSwgcE9iamVjdHMsIHBLZXlzLCBjb3VudCk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9u
YXJ5KiBOUzo6RGljdGlvbmFyeTo6aW5pdChjb25zdCBjbGFzcyBDb2RlciogcENvZGVyKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJ
VkFURV9TRUwoaW5pdFdpdGhDb2Rlcl8pLCBwQ29kZXIpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNsYXNzIF9LZXlUeXBl
PgorX05TX0lOTElORSBOUzo6RW51bWVyYXRvcjxfS2V5VHlwZT4qIE5TOjpEaWN0aW9uYXJ5Ojpr
ZXlFbnVtZXJhdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxF
bnVtZXJhdG9yPF9LZXlUeXBlPio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChrZXlFbnVtZXJhdG9y
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdD4KK19OU19JTkxJTkUgX09iamVjdCogTlM6OkRpY3Rp
b25hcnk6Om9iamVjdChjb25zdCBPYmplY3QqIHBLZXkpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8X09iamVjdCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChvYmplY3RG
b3JLZXlfKSwgcEtleSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6RGljdGlvbmFyeTo6Y291
bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwoY291bnQpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0VudW1lcmF0b3IuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
OTU5NmMwNGRkYWZhODAxZmFlYjUxYzc4NjJjZWQ4MzBkMDEyNmJhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9y
LmhwcApAQCAtMCwwICsxLDc4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TRW51bWVyYXRvci5ocHAKKy8vCisvLyBD
b3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNPYmplY3QuaHBw
IgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitzdHJ1Y3QgRmFzdEVudW1lcmF0
aW9uU3RhdGUKK3sKKyAgICB1bnNpZ25lZCBsb25nICBzdGF0ZTsKKyAgICBPYmplY3QqKiAgICAg
ICBpdGVtc1B0cjsKKyAgICB1bnNpZ25lZCBsb25nKiBtdXRhdGlvbnNQdHI7CisgICAgdW5zaWdu
ZWQgbG9uZyAgZXh0cmFbNV07Cit9IF9OU19QQUNLRUQ7CisKK2NsYXNzIEZhc3RFbnVtZXJhdGlv
biA6IHB1YmxpYyBSZWZlcmVuY2luZzxGYXN0RW51bWVyYXRpb24+Cit7CitwdWJsaWM6CisgICAg
TlM6OlVJbnRlZ2VyIGNvdW50QnlFbnVtZXJhdGluZyhGYXN0RW51bWVyYXRpb25TdGF0ZSogcFN0
YXRlLCBPYmplY3QqKiBwQnVmZmVyLCBOUzo6VUludGVnZXIgbGVuKTsKK307CisKK3RlbXBsYXRl
IDxjbGFzcyBfT2JqZWN0VHlwZT4KK2NsYXNzIEVudW1lcmF0b3IgOiBwdWJsaWMgUmVmZXJlbmNp
bmc8RW51bWVyYXRvcjxfT2JqZWN0VHlwZT4sIEZhc3RFbnVtZXJhdGlvbj4KK3sKK3B1YmxpYzoK
KyAgICBfT2JqZWN0VHlwZSogbmV4dE9iamVjdCgpOworICAgIGNsYXNzIEFycmF5KiBhbGxPYmpl
Y3RzKCk7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OkZhc3RFbnVtZXJhdGlvbjo6Y291
bnRCeUVudW1lcmF0aW5nKEZhc3RFbnVtZXJhdGlvblN0YXRlKiBwU3RhdGUsIE9iamVjdCoqIHBC
dWZmZXIsIE5TOjpVSW50ZWdlciBsZW4pCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChjb3VudEJ5RW51bWVyYXRpbmdXaXRo
U3RhdGVfb2JqZWN0c19jb3VudF8pLCBwU3RhdGUsIHBCdWZmZXIsIGxlbik7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xh
c3MgX09iamVjdFR5cGU+CitfTlNfSU5MSU5FIF9PYmplY3RUeXBlKiBOUzo6RW51bWVyYXRvcjxf
T2JqZWN0VHlwZT46Om5leHRPYmplY3QoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPF9PYmplY3RUeXBlKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG5leHRPYmplY3QpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBs
YXRlIDxjbGFzcyBfT2JqZWN0VHlwZT4KK19OU19JTkxJTkUgTlM6OkFycmF5KiBOUzo6RW51bWVy
YXRvcjxfT2JqZWN0VHlwZT46OmFsbE9iamVjdHMoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPEFycmF5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGFsbE9iamVjdHMpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vycm9yLmhw
cCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVlYmY5ODE4YWM3Yzg4YTFlNWJkZTYzZWZkZDExNjBjMmQ0YTQxNGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU0Vycm9yLmhwcApAQCAtMCwwICsxLDE3MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0Vycm9yLmhwcAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBw
IgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7Cit1c2luZyBFcnJvckRvbWFpbiA9
IGNsYXNzIFN0cmluZyo7CisKK19OU19DT05TVChFcnJvckRvbWFpbiwgQ29jb2FFcnJvckRvbWFp
bik7CitfTlNfQ09OU1QoRXJyb3JEb21haW4sIFBPU0lYRXJyb3JEb21haW4pOworX05TX0NPTlNU
KEVycm9yRG9tYWluLCBPU1N0YXR1c0Vycm9yRG9tYWluKTsKK19OU19DT05TVChFcnJvckRvbWFp
biwgTWFjaEVycm9yRG9tYWluKTsKKwordXNpbmcgRXJyb3JVc2VySW5mb0tleSA9IGNsYXNzIFN0
cmluZyo7CisKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBVbmRlcmx5aW5nRXJyb3JLZXkp
OworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIExvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsK
K19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JL
ZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIExvY2FsaXplZFJlY292ZXJ5U3VnZ2Vz
dGlvbkVycm9yS2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRSZWNv
dmVyeU9wdGlvbnNFcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgUmVjb3Zl
cnlBdHRlbXB0ZXJFcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgSGVscEFu
Y2hvckVycm9yS2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBEZWJ1Z0Rlc2NyaXB0
aW9uRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIExvY2FsaXplZEZhaWx1
cmVFcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgU3RyaW5nRW5jb2RpbmdF
cnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgVVJMRXJyb3JLZXkpOworX05T
X0NPTlNUKEVycm9yVXNlckluZm9LZXksIEZpbGVQYXRoRXJyb3JLZXkpOworCitjbGFzcyBFcnJv
ciA6IHB1YmxpYyBDb3B5aW5nPEVycm9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBFcnJvciog
ICAgIGVycm9yKEVycm9yRG9tYWluIGRvbWFpbiwgSW50ZWdlciBjb2RlLCBjbGFzcyBEaWN0aW9u
YXJ5KiBwRGljdGlvbmFyeSk7CisKKyAgICBzdGF0aWMgRXJyb3IqICAgICBhbGxvYygpOworICAg
IEVycm9yKiAgICAgICAgICAgIGluaXQoKTsKKyAgICBFcnJvciogICAgICAgICAgICBpbml0KEVy
cm9yRG9tYWluIGRvbWFpbiwgSW50ZWdlciBjb2RlLCBjbGFzcyBEaWN0aW9uYXJ5KiBwRGljdGlv
bmFyeSk7CisKKyAgICBJbnRlZ2VyICAgICAgICAgICBjb2RlKCkgY29uc3Q7CisgICAgRXJyb3JE
b21haW4gICAgICAgZG9tYWluKCkgY29uc3Q7CisgICAgY2xhc3MgRGljdGlvbmFyeSogdXNlcklu
Zm8oKSBjb25zdDsKKworICAgIGNsYXNzIFN0cmluZyogICAgIGxvY2FsaXplZERlc2NyaXB0aW9u
KCkgY29uc3Q7CisgICAgY2xhc3MgQXJyYXkqICAgICAgbG9jYWxpemVkUmVjb3ZlcnlPcHRpb25z
KCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgbG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0
aW9uKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgbG9jYWxpemVkRmFpbHVyZVJlYXNv
bigpIGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JEb21haW4sIENvY29h
RXJyb3JEb21haW4pOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvckRvbWFpbiwgUE9T
SVhFcnJvckRvbWFpbik7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yRG9tYWluLCBP
U1N0YXR1c0Vycm9yRG9tYWluKTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JEb21h
aW4sIE1hY2hFcnJvckRvbWFpbik7CisKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JV
c2VySW5mb0tleSwgVW5kZXJseWluZ0Vycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChO
Uzo6RXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkRGVzY3JpcHRpb25LZXkpOworX05TX1BSSVZB
VEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRGYWlsdXJlUmVhc29u
RXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBM
b2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25FcnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09O
U1QoTlM6OkVycm9yVXNlckluZm9LZXksIExvY2FsaXplZFJlY292ZXJ5T3B0aW9uc0Vycm9yS2V5
KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgUmVjb3ZlcnlB
dHRlbXB0ZXJFcnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlcklu
Zm9LZXksIEhlbHBBbmNob3JFcnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVy
cm9yVXNlckluZm9LZXksIERlYnVnRGVzY3JpcHRpb25FcnJvcktleSk7CitfTlNfUFJJVkFURV9E
RUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIExvY2FsaXplZEZhaWx1cmVFcnJvcktleSk7
CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIFN0cmluZ0VuY29k
aW5nRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5
LCBVUkxFcnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9L
ZXksIEZpbGVQYXRoRXJyb3JLZXkpOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RXJyb3IqIE5TOjpFcnJvcjo6ZXJyb3Io
RXJyb3JEb21haW4gZG9tYWluLCBJbnRlZ2VyIGNvZGUsIGNsYXNzIERpY3Rpb25hcnkqIHBEaWN0
aW9uYXJ5KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEVycm9yKj4oX05TX1BS
SVZBVEVfQ0xTKE5TRXJyb3IpLCBfTlNfUFJJVkFURV9TRUwoZXJyb3JXaXRoRG9tYWluX2NvZGVf
dXNlckluZm9fKSwgZG9tYWluLCBjb2RlLCBwRGljdGlvbmFyeSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpFcnJv
ciogTlM6OkVycm9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6YWxsb2M8RXJyb3I+
KF9OU19QUklWQVRFX0NMUyhOU0Vycm9yKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpFcnJvciogTlM6OkVycm9y
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojppbml0PEVycm9yPigpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6RXJyb3IqIE5TOjpFcnJvcjo6aW5pdChFcnJvckRvbWFpbiBkb21haW4sIEludGVnZXIgY29k
ZSwgY2xhc3MgRGljdGlvbmFyeSogcERpY3Rpb25hcnkpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8RXJyb3IqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhEb21haW5f
Y29kZV91c2VySW5mb18pLCBkb21haW4sIGNvZGUsIHBEaWN0aW9uYXJ5KTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OkludGVnZXIgTlM6OkVycm9yOjpjb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY29kZSkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6RXJyb3JEb21haW4gTlM6OkVycm9yOjpkb21haW4oKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPEVycm9yRG9tYWluPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
ZG9tYWluKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6RXJyb3I6OnVzZXJJbmZvKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKHVzZXJJbmZvKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpF
cnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb2NhbGl6ZWREZXNj
cmlwdGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpFcnJvcjo6bG9jYWxpemVkUmVjb3Zl
cnlPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxBcnJh
eSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnMpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6OlN0cmluZyogTlM6OkVycm9yOjpsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24o
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24pKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlN0cmluZyogTlM6OkVycm9yOjpsb2NhbGl6ZWRGYWlsdXJlUmVhc29uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwobG9jYWxpemVkRmFpbHVyZVJlYXNvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTG9jay5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0xvY2suaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyN2RlMDgxOTRm
MzQyNDg5OGZjMWZiMjM3NWY2MjNkNDg3OGI0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0xvY2suaHBwCkBAIC0wLDAgKzEs
MTA1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
CisvLyBGb3VuZGF0aW9uL05TTG9jay5ocHAKKy8vCisvLyBTZWUgTElDRU5TRS50eHQgZm9yIHRo
aXMgcHJvamVjdCBsaWNlbnNpbmcgaW5mb3JtYXRpb24uCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5l
cy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAi
CisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisjaW5jbHVkZSAiTlNEYXRlLmhwcCIKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUwor
eworCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSA9IGNsYXNzIE9iamVjdD4K
K2NsYXNzIExvY2tpbmcgOiBwdWJsaWMgX0Jhc2UKK3sKK3B1YmxpYzoKKyAgICB2b2lkIGxvY2so
KTsKKyAgICB2b2lkIHVubG9jaygpOworfTsKKworY2xhc3MgQ29uZGl0aW9uIDogcHVibGljIExv
Y2tpbmc8Q29uZGl0aW9uPgoreworcHVibGljOgorICAgIHN0YXRpYyBDb25kaXRpb24qIGFsbG9j
KCk7CisKKyAgICBDb25kaXRpb24qICAgICAgICBpbml0KCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICB3YWl0KCk7CisgICAgYm9vbCAgICAgICAgICAgICAgd2FpdFVudGlsRGF0ZShEYXRlKiBw
TGltaXQpOworICAgIHZvaWQgICAgICAgICAgICAgIHNpZ25hbCgpOworICAgIHZvaWQgICAgICAg
ICAgICAgIGJyb2FkY2FzdCgpOworfTsKKworfSAvLyBOUworCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGU8Y2xhc3MgX0NsYXNzLCBjbGFz
cyBfQmFzZSAvKiA9IE5TOjpPYmplY3QgKi8+CitfTlNfSU5MSU5FIHZvaWQgTlM6OkxvY2tpbmc8
X0NsYXNzLCBfQmFzZT46OmxvY2soKQoreworICAgIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb2NrKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZTxjbGFzcyBfQ2xhc3MsIGNs
YXNzIF9CYXNlIC8qID0gTlM6Ok9iamVjdCAqLz4KK19OU19JTkxJTkUgdm9pZCBOUzo6TG9ja2lu
ZzxfQ2xhc3MsIF9CYXNlPjo6dW5sb2NrKCkKK3sKKyAgICBOUzo6T2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodW5sb2NrKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpDb25k
aXRpb24qIE5TOjpDb25kaXRpb246OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TlM6OkNvbmRpdGlvbj4oX05TX1BSSVZBVEVfQ0xTKE5TQ29uZGl0aW9uKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpDb25kaXRpb24qIE5TOjpDb25kaXRpb246OmluaXQoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0Ojppbml0PE5TOjpDb25kaXRpb24+KCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkNvbmRp
dGlvbjo6d2FpdCgpCit7CisgICAgTlM6Ok9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X05TX1BSSVZBVEVfU0VMKHdhaXQpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6Q29uZGl0aW9uOjp3YWl0
VW50aWxEYXRlKE5TOjpEYXRlKiBwTGltaXQpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OnNl
bmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh3YWl0VW50aWxEYXRlXyksIHBM
aW1pdCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkNvbmRpdGlvbjo6c2lnbmFsKCkKK3sKKyAgICBOUzo6
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc2lnbmFsKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIHZvaWQgTlM6OkNvbmRpdGlvbjo6YnJvYWRjYXN0KCkKK3sKKyAgICBOUzo6T2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnJvYWRjYXN0KSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90aWZpY2F0aW9uLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90aWZpY2F0aW9uLmhwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYWJiYzlmNTgwNmI2NjUwMWQzNzk1NGI4ZWY1MGU2MzJmNWMyZDY1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOb3RpZmlj
YXRpb24uaHBwCkBAIC0wLDAgKzEsNjcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNOb3RpZmljYXRpb24uaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVm
aW5lcy5ocHAiCisjaW5jbHVkZSAiTlNEaWN0aW9uYXJ5LmhwcCIKKyNpbmNsdWRlICJOU09iamVj
dC5ocHAiCisjaW5jbHVkZSAiTlNTdHJpbmcuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNw
YWNlIE5TCit7Cit1c2luZyBOb3RpZmljYXRpb25OYW1lID0gY2xhc3MgU3RyaW5nKjsKKworY2xh
c3MgTm90aWZpY2F0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxOb3RpZmljYXRpb24+Cit7
CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgIG5hbWUoKSBjb25zdDsKKyAgICBOUzo6T2Jq
ZWN0KiAgICAgb2JqZWN0KCkgY29uc3Q7CisgICAgTlM6OkRpY3Rpb25hcnkqIHVzZXJJbmZvKCkg
Y29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6Tm90aWZpY2F0aW9uOjpuYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok9iamVjdCogTlM6Ok5vdGlm
aWNhdGlvbjo6b2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6T2JqZWN0Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9iamVjdCkpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6RGljdGlvbmFyeSogTlM6Ok5vdGlmaWNhdGlvbjo6dXNlckluZm8oKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpEaWN0aW9uYXJ5Kj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKHVzZXJJbmZvKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNOdW1iZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNOdW1iZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMGY2NmYzNzRmYmMzOTYx
ZDU1NTY0NjE2MDFmMGVlNzQ5ZWJmNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU051bWJlci5ocHAKQEAgLTAsMCArMSw1MDEg
QEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8v
IEZvdW5kYXRpb24vTlNOdW1iZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBs
ZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI2luY2x1ZGUgIk5TT2JqQ1J1bnRpbWUuaHBwIgorI2luY2x1ZGUgIk5TT2Jq
ZWN0LmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworY2xhc3MgVmFsdWUg
OiBwdWJsaWMgQ29weWluZzxWYWx1ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgVmFsdWUqIHZh
bHVlKGNvbnN0IHZvaWQqIHBWYWx1ZSwgY29uc3QgY2hhciogcFR5cGUpOworICAgIHN0YXRpYyBW
YWx1ZSogdmFsdWUoY29uc3Qgdm9pZCogcFBvaW50ZXIpOworCisgICAgc3RhdGljIFZhbHVlKiBh
bGxvYygpOworCisgICAgVmFsdWUqICAgICAgICBpbml0KGNvbnN0IHZvaWQqIHBWYWx1ZSwgY29u
c3QgY2hhciogcFR5cGUpOworICAgIFZhbHVlKiAgICAgICAgaW5pdChjb25zdCBjbGFzcyBDb2Rl
ciogcENvZGVyKTsKKworICAgIHZvaWQgICAgICAgICAgZ2V0VmFsdWUodm9pZCogcFZhbHVlLCBV
SW50ZWdlciBzaXplKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiAgIG9iakNUeXBlKCkgY29uc3Q7
CisKKyAgICBib29sICAgICAgICAgIGlzRXF1YWxUb1ZhbHVlKFZhbHVlKiBwVmFsdWUpIGNvbnN0
OworICAgIHZvaWQqICAgICAgICAgcG9pbnRlclZhbHVlKCkgY29uc3Q7Cit9OworCitjbGFzcyBO
dW1iZXIgOiBwdWJsaWMgQ29weWluZzxOdW1iZXIsIFZhbHVlPgoreworcHVibGljOgorICAgIHN0
YXRpYyBOdW1iZXIqICAgICBudW1iZXIoY2hhciB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciog
ICAgIG51bWJlcih1bnNpZ25lZCBjaGFyIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAg
bnVtYmVyKHNob3J0IHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKHVuc2ln
bmVkIHNob3J0IHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGludCB2YWx1
ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcih1bnNpZ25lZCBpbnQgdmFsdWUpOwor
ICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIobG9uZyB2YWx1ZSk7CisgICAgc3RhdGljIE51
bWJlciogICAgIG51bWJlcih1bnNpZ25lZCBsb25nIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVy
KiAgICAgbnVtYmVyKGxvbmcgbG9uZyB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51
bWJlcih1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBu
dW1iZXIoZmxvYXQgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIoZG91Ymxl
IHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGJvb2wgdmFsdWUpOworCisg
ICAgc3RhdGljIE51bWJlciogICAgIGFsbG9jKCk7CisKKyAgICBOdW1iZXIqICAgICAgICAgICAg
aW5pdChjb25zdCBjbGFzcyBDb2RlciogcENvZGVyKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAg
aW5pdChjaGFyIHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdCh1bnNpZ25lZCBj
aGFyIHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdChzaG9ydCB2YWx1ZSk7Cisg
ICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQodW5zaWduZWQgc2hvcnQgdmFsdWUpOworICAgIE51
bWJlciogICAgICAgICAgICBpbml0KGludCB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAg
IGluaXQodW5zaWduZWQgaW50IHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdChs
b25nIHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdCh1bnNpZ25lZCBsb25nIHZh
bHVlKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdChsb25nIGxvbmcgdmFsdWUpOworICAg
IE51bWJlciogICAgICAgICAgICBpbml0KHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSk7CisgICAg
TnVtYmVyKiAgICAgICAgICAgIGluaXQoZmxvYXQgdmFsdWUpOworICAgIE51bWJlciogICAgICAg
ICAgICBpbml0KGRvdWJsZSB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQoYm9v
bCB2YWx1ZSk7CisKKyAgICBjaGFyICAgICAgICAgICAgICAgY2hhclZhbHVlKCkgY29uc3Q7Cisg
ICAgdW5zaWduZWQgY2hhciAgICAgIHVuc2lnbmVkQ2hhclZhbHVlKCkgY29uc3Q7CisgICAgc2hv
cnQgICAgICAgICAgICAgIHNob3J0VmFsdWUoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBzaG9ydCAg
ICAgdW5zaWduZWRTaG9ydFZhbHVlKCkgY29uc3Q7CisgICAgaW50ICAgICAgICAgICAgICAgIGlu
dFZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgaW50ICAgICAgIHVuc2lnbmVkSW50VmFsdWUo
KSBjb25zdDsKKyAgICBsb25nICAgICAgICAgICAgICAgbG9uZ1ZhbHVlKCkgY29uc3Q7CisgICAg
dW5zaWduZWQgbG9uZyAgICAgIHVuc2lnbmVkTG9uZ1ZhbHVlKCkgY29uc3Q7CisgICAgbG9uZyBs
b25nICAgICAgICAgIGxvbmdMb25nVmFsdWUoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIGxv
bmcgdW5zaWduZWRMb25nTG9uZ1ZhbHVlKCkgY29uc3Q7CisgICAgZmxvYXQgICAgICAgICAgICAg
IGZsb2F0VmFsdWUoKSBjb25zdDsKKyAgICBkb3VibGUgICAgICAgICAgICAgZG91YmxlVmFsdWUo
KSBjb25zdDsKKyAgICBib29sICAgICAgICAgICAgICAgYm9vbFZhbHVlKCkgY29uc3Q7CisgICAg
SW50ZWdlciAgICAgICAgICAgIGludGVnZXJWYWx1ZSgpIGNvbnN0OworICAgIFVJbnRlZ2VyICAg
ICAgICAgICB1bnNpZ25lZEludGVnZXJWYWx1ZSgpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyog
ICAgICBzdHJpbmdWYWx1ZSgpIGNvbnN0OworCisgICAgQ29tcGFyaXNvblJlc3VsdCAgIGNvbXBh
cmUoY29uc3QgTnVtYmVyKiBwT3RoZXJOdW1iZXIpIGNvbnN0OworICAgIGJvb2wgICAgICAgICAg
ICAgICBpc0VxdWFsVG9OdW1iZXIoY29uc3QgTnVtYmVyKiBwTnVtYmVyKSBjb25zdDsKKworICAg
IGNsYXNzIFN0cmluZyogICAgICBkZXNjcmlwdGlvbldpdGhMb2NhbGUoY29uc3QgT2JqZWN0KiBw
TG9jYWxlKSBjb25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpWYWx1ZSogTlM6OlZhbHVlOjp2YWx1ZShj
b25zdCB2b2lkKiBwVmFsdWUsIGNvbnN0IGNoYXIqIHBUeXBlKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFZhbHVlKj4oX05TX1BSSVZBVEVfQ0xTKE5TVmFsdWUpLCBfTlNfUFJJ
VkFURV9TRUwodmFsdWVXaXRoQnl0ZXNfb2JqQ1R5cGVfKSwgcFZhbHVlLCBwVHlwZSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpWYWx1ZSogTlM6OlZhbHVlOjp2YWx1ZShjb25zdCB2b2lkKiBwUG9pbnRlcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxWYWx1ZSo+KF9OU19QUklWQVRFX0NMUyhO
U1ZhbHVlKSwgX05TX1BSSVZBVEVfU0VMKHZhbHVlV2l0aFBvaW50ZXJfKSwgcFBvaW50ZXIpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6VmFsdWUqIE5TOjpWYWx1ZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0OjphbGxvYzxWYWx1ZT4oX05TX1BSSVZBVEVfQ0xTKE5TVmFsdWUpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlZhbHVlKiBOUzo6VmFsdWU6OmluaXQoY29uc3Qgdm9pZCogcFZhbHVlLCBjb25zdCBjaGFy
KiBwVHlwZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxWYWx1ZSo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChpbml0V2l0aEJ5dGVzX29iakNUeXBlXyksIHBWYWx1ZSwgcFR5cGUp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6VmFsdWUqIE5TOjpWYWx1ZTo6aW5pdChjb25zdCBjbGFzcyBDb2Rlciog
cENvZGVyKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFZhbHVlKj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQ29kZXJfKSwgcENvZGVyKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBO
Uzo6VmFsdWU6OmdldFZhbHVlKHZvaWQqIHBWYWx1ZSwgVUludGVnZXIgc2l6ZSkgY29uc3QKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChnZXRW
YWx1ZV9zaXplXyksIHBWYWx1ZSwgc2l6ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGNvbnN0IGNoYXIqIE5TOjpWYWx1
ZTo6b2JqQ1R5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNv
bnN0IGNoYXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob2JqQ1R5cGUpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9v
bCBOUzo6VmFsdWU6OmlzRXF1YWxUb1ZhbHVlKFZhbHVlKiBwVmFsdWUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlz
RXF1YWxUb1ZhbHVlXyksIHBWYWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQqIE5TOjpWYWx1ZTo6cG9pbnRl
clZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkKj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKHBvaW50ZXJWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVy
KiBOUzo6TnVtYmVyOjpudW1iZXIoY2hhciB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFU
RV9TRUwobnVtYmVyV2l0aENoYXJfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6
TnVtYmVyOjpudW1iZXIodW5zaWduZWQgY2hhciB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJ
VkFURV9TRUwobnVtYmVyV2l0aFVuc2lnbmVkQ2hhcl8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpO
dW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcihzaG9ydCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNf
UFJJVkFURV9TRUwobnVtYmVyV2l0aFNob3J0XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJl
ciogTlM6Ok51bWJlcjo6bnVtYmVyKHVuc2lnbmVkIHNob3J0IHZhbHVlKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciks
IF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoVW5zaWduZWRTaG9ydF8pLCB2YWx1ZSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcihpbnQgdmFsdWUpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVy
KSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhJbnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIodW5zaWduZWQgaW50IHZhbHVlKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJl
ciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoVW5zaWduZWRJbnRfKSwgdmFsdWUpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIobG9uZyB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1i
ZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aExvbmdfKSwgdmFsdWUpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIodW5zaWduZWQgbG9uZyB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNO
dW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFVuc2lnbmVkTG9uZ18pLCB2YWx1ZSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcihsb25nIGxvbmcgdmFsdWUp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVf
Q0xTKE5TTnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhMb25nTG9uZ18pLCB2YWx1
ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcih1bnNpZ25lZCBsb25n
IGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4o
X05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhVbnNp
Z25lZExvbmdMb25nXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6
bnVtYmVyKGZsb2F0IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51
bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJX
aXRoRmxvYXRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1i
ZXIoZG91YmxlIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJl
cio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRo
RG91YmxlXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVy
KGJvb2wgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4o
X05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhCb29s
XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxOdW1iZXI+KF9OU19QUklWQVRFX0NMUyhOU051
bWJlcikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KGNvbnN0IENvZGVy
KiBwQ29kZXIpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQ29kZXJfKSwgcENvZGVyKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChjaGFyIHZhbHVlKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aENo
YXJfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KHVuc2ln
bmVkIGNoYXIgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVy
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoVW5zaWduZWRDaGFyXyksIHZhbHVlKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChzaG9ydCB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoaW5pdFdpdGhTaG9ydF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1i
ZXI6OmluaXQodW5zaWduZWQgc2hvcnQgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoVW5zaWduZWRT
aG9ydF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoaW50
IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChpbml0V2l0aEludF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1i
ZXIqIE5TOjpOdW1iZXI6OmluaXQodW5zaWduZWQgaW50IHZhbHVlKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0
aFVuc2lnbmVkSW50XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6
aW5pdChsb25nIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJl
cio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aExvbmdfKSwgdmFsdWUpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KHVuc2lnbmVkIGxvbmcgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGluaXRXaXRoVW5zaWduZWRMb25nXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciog
TlM6Ok51bWJlcjo6aW5pdChsb25nIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoTG9uZ0xv
bmdfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KHVuc2ln
bmVkIGxvbmcgbG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
dW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhVbnNpZ25lZExvbmdMb25nXyks
IHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChmbG9hdCB2YWx1
ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwoaW5pdFdpdGhGbG9hdF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIq
IE5TOjpOdW1iZXI6OmluaXQoZG91YmxlIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aERvdWJsZV8p
LCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoYm9vbCB2YWx1
ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwoaW5pdFdpdGhCb29sXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgY2hhciBOUzo6TnVt
YmVyOjpjaGFyVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGNoYXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChjaGFyVmFsdWUpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdW5zaWdu
ZWQgY2hhciBOUzo6TnVtYmVyOjp1bnNpZ25lZENoYXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5zaWduZWQgY2hhcj4odGhpcywgX05TX1BSSVZBVEVf
U0VMKHVuc2lnbmVkQ2hhclZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHNob3J0IE5TOjpOdW1iZXI6OnNob3J0
VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHNob3J0Pih0
aGlzLCBfTlNfUFJJVkFURV9TRUwoc2hvcnRWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB1bnNpZ25lZCBzaG9y
dCBOUzo6TnVtYmVyOjp1bnNpZ25lZFNob3J0VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVkIHNob3J0Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
dW5zaWduZWRTaG9ydFZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGludCBOUzo6TnVtYmVyOjppbnRWYWx1ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8aW50Pih0aGlzLCBfTlNf
UFJJVkFURV9TRUwoaW50VmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdW5zaWduZWQgaW50IE5TOjpOdW1iZXI6
OnVuc2lnbmVkSW50VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPHVuc2lnbmVkIGludD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVuc2lnbmVkSW50VmFsdWUp
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19OU19JTkxJTkUgbG9uZyBOUzo6TnVtYmVyOjpsb25nVmFsdWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb25n
VmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgdW5zaWduZWQgbG9uZyBOUzo6TnVtYmVyOjp1bnNpZ25lZExvbmdW
YWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5zaWduZWQg
bG9uZz4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVuc2lnbmVkTG9uZ1ZhbHVlKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IGxvbmcgbG9uZyBOUzo6TnVtYmVyOjpsb25nTG9uZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxsb25nIGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTChs
b25nTG9uZ1ZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIGxvbmcgbG9uZyBOUzo6TnVtYmVyOjp1
bnNpZ25lZExvbmdMb25nVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHVuc2lnbmVkIGxvbmcgbG9uZz4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVuc2lnbmVk
TG9uZ0xvbmdWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBmbG9hdCBOUzo6TnVtYmVyOjpmbG9hdFZhbHVlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxmbG9hdD4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGZsb2F0VmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgZG91YmxlIE5TOjpOdW1iZXI6OmRv
dWJsZVZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxkb3Vi
bGU+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkb3VibGVWYWx1ZSkpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5T
OjpOdW1iZXI6OmJvb2xWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGJvb2xWYWx1ZSkpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6SW50ZWdlciBOUzo6TnVtYmVyOjppbnRlZ2VyVmFsdWUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPEludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbnRl
Z2VyVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpOdW1iZXI6OnVuc2lnbmVkSW50
ZWdlclZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50
ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVuc2lnbmVkSW50ZWdlclZhbHVlKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpTdHJpbmcqIE5TOjpOdW1iZXI6OnN0cmluZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
c3RyaW5nVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkNvbXBhcmlzb25SZXN1bHQgTlM6Ok51bWJlcjo6
Y29tcGFyZShjb25zdCBOdW1iZXIqIHBPdGhlck51bWJlcikgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxDb21wYXJpc29uUmVzdWx0Pih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoY29tcGFyZV8pLCBwT3RoZXJOdW1iZXIpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpOdW1iZXI6Omlz
RXF1YWxUb051bWJlcihjb25zdCBOdW1iZXIqIHBOdW1iZXIpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzRXF1YWxU
b051bWJlcl8pLCBwTnVtYmVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6Ok51bWJlcjo6ZGVz
Y3JpcHRpb25XaXRoTG9jYWxlKGNvbnN0IE9iamVjdCogcExvY2FsZSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
ZGVzY3JpcHRpb25XaXRoTG9jYWxlXyksIHBMb2NhbGUpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqQ1J1bnRpbWUuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNPYmpDUnVudGltZS5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDhlNjUwNjZlNThjYTcwNTc0MjBlNmY1ODllNzk1YTJlZGZjNmFlMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2Jq
Q1J1bnRpbWUuaHBwCkBAIC0wLDAgKzEsNDMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNPYmpDUnVudGltZS5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNE
ZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworCitfTlNfRU5V
TShJbnRlZ2VyLCBDb21wYXJpc29uUmVzdWx0KSB7CisgICAgT3JkZXJlZEFzY2VuZGluZyA9IC0x
LAorICAgIE9yZGVyZWRTYW1lID0gMCwKKyAgICBPcmRlcmVkRGVzY2VuZGluZyA9IDEsCit9Owor
Citjb25zdCBJbnRlZ2VyIE5vdEZvdW5kID0gSW50ZWdlck1heDsKKworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqZWN0LmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqZWN0LmhwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNGUxYzYzMmM5ZDViYTFlYjY0NDdhYTJlOWFiNTMwMWZhYjZmMjUwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNPYmplY3Qu
aHBwCkBAIC0wLDAgKzEsMjk3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TT2JqZWN0LmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgor
I2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKyNpbmNs
dWRlIDxvYmpjL21lc3NhZ2UuaD4KKyNpbmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4KKworI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7Cit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFz
cyBfQmFzZSA9IGNsYXNzIE9iamVjdD4KK2NsYXNzIFJlZmVyZW5jaW5nIDogcHVibGljIF9CYXNl
Cit7CitwdWJsaWM6CisgICAgX0NsYXNzKiAgcmV0YWluKCk7CisgICAgdm9pZCAgICAgcmVsZWFz
ZSgpOworCisgICAgX0NsYXNzKiAgYXV0b3JlbGVhc2UoKTsKKworICAgIFVJbnRlZ2VyIHJldGFp
bkNvdW50KCkgY29uc3Q7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFz
ZSA9IGNsYXNzIE9iamVjdD4KK2NsYXNzIENvcHlpbmcgOiBwdWJsaWMgUmVmZXJlbmNpbmc8X0Ns
YXNzLCBfQmFzZT4KK3sKK3B1YmxpYzoKKyAgICBfQ2xhc3MqIGNvcHkoKSBjb25zdDsKK307CisK
K2NsYXNzIE9iamVjdCA6IHB1YmxpYyBSZWZlcmVuY2luZzxPYmplY3QsIG9iamNfb2JqZWN0Pgor
eworcHVibGljOgorICAgIFVJbnRlZ2VyICAgICAgaGFzaCgpIGNvbnN0OworICAgIGJvb2wgICAg
ICAgICAgaXNFcXVhbChjb25zdCBPYmplY3QqIHBPYmplY3QpIGNvbnN0OworCisgICAgY2xhc3Mg
U3RyaW5nKiBkZXNjcmlwdGlvbigpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogZGVidWdEZXNj
cmlwdGlvbigpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFJlZmVyZW5j
aW5nPE9iamVjdCwgb2JqY19vYmplY3Q+OworCisgICAgdGVtcGxhdGUgPGNsYXNzIF9DbGFzcz4K
KyAgICBzdGF0aWMgX0NsYXNzKiBhbGxvYyhjb25zdCBjaGFyKiBwQ2xhc3NOYW1lKTsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzPgorICAgIHN0YXRpYyBfQ2xhc3MqIGFsbG9jKGNvbnN0IHZv
aWQqIHBDbGFzcyk7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9DbGFzcz4KKyAgICBfQ2xhc3MqIGlu
aXQoKTsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBfRHN0PgorICAgIHN0YXRpYyBfRHN0ICAgICAg
ICAgICAgICAgICAgIGJyaWRnaW5nQ2FzdChjb25zdCB2b2lkKiBwT2JqKTsKKyAgICBzdGF0aWMg
Y2xhc3MgTWV0aG9kU2lnbmF0dXJlKiBtZXRob2RTaWduYXR1cmVGb3JTZWxlY3Rvcihjb25zdCB2
b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IpOworICAgIHN0YXRpYyBib29sICAgICAgICAgICAgICAg
ICAgIHJlc3BvbmRzVG9TZWxlY3Rvcihjb25zdCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IpOwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfVHlwZT4KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
ZG9lc1JlcXVpcmVNc2dTZW5kU3RyZXQoKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1JldCwg
dHlwZW5hbWUuLi4gX0FyZ3M+CisgICAgc3RhdGljIF9SZXQgc2VuZE1lc3NhZ2UoY29uc3Qgdm9p
ZCogcE9iaiwgU0VMIHNlbGVjdG9yLCBfQXJncy4uLiBhcmdzKTsKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgX1JldCwgdHlwZW5hbWUuLi4gX0FyZ3M+CisgICAgc3RhdGljIF9SZXQgc2VuZE1lc3Nh
Z2VTYWZlKGNvbnN0IHZvaWQqIHBPYmosIFNFTCBzZWxlY3RvciwgX0FyZ3MuLi4gYXJncyk7CisK
K3ByaXZhdGU6CisgICAgT2JqZWN0KCkgPSBkZWxldGU7CisgICAgT2JqZWN0KGNvbnN0IE9iamVj
dCYpID0gZGVsZXRlOworICAgIH5PYmplY3QoKSA9IGRlbGV0ZTsKKworICAgIE9iamVjdCYgb3Bl
cmF0b3I9KGNvbnN0IE9iamVjdCYpID0gZGVsZXRlOworfTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3Ms
IGNsYXNzIF9CYXNlIC8qID0gT2JqZWN0ICovPgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpSZWZl
cmVuY2luZzxfQ2xhc3MsIF9CYXNlPjo6cmV0YWluKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxfQ2xhc3MqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocmV0YWluKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0
ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSAvKiA9IE9iamVjdCAqLz4KK19OU19JTkxJTkUg
dm9pZCBOUzo6UmVmZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT46OnJlbGVhc2UoKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHJlbGVhc2UpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Rl
bXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9CYXNlIC8qID0gT2JqZWN0ICovPgorX05TX0lO
TElORSBfQ2xhc3MqIE5TOjpSZWZlcmVuY2luZzxfQ2xhc3MsIF9CYXNlPjo6YXV0b3JlbGVhc2Uo
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPF9DbGFzcyo+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChhdXRvcmVsZWFzZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jh
c2UgLyogPSBPYmplY3QgKi8+CitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6UmVmZXJlbmNp
bmc8X0NsYXNzLCBfQmFzZT46OnJldGFpbkNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHJldGFpbkNv
dW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSAvKiA9IE9iamVjdCAqLz4K
K19OU19JTkxJTkUgX0NsYXNzKiBOUzo6Q29weWluZzxfQ2xhc3MsIF9CYXNlPjo6Y29weSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8X0NsYXNzKj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGNvcHkpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfRHN0PgorX05TX0lOTElORSBfRHN0
IE5TOjpPYmplY3Q6OmJyaWRnaW5nQ2FzdChjb25zdCB2b2lkKiBwT2JqKQoreworI2lmIF9fT0JK
Q19fCisgICAgcmV0dXJuIChfX2JyaWRnZSBfRHN0KXBPYmo7CisjZWxzZQorICAgIHJldHVybiAo
X0RzdClwT2JqOworI2VuZGlmIC8vIF9fT0JKQ19fCit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1R5cGU+Citf
TlNfSU5MSU5FIGNvbnN0ZXhwciBib29sIE5TOjpPYmplY3Q6OmRvZXNSZXF1aXJlTXNnU2VuZFN0
cmV0KCkKK3sKKyNpZiAoZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSkK
KyAgICBjb25zdGV4cHIgc2l6ZV90IGtTdHJ1Y3RMaW1pdCA9IChzaXplb2Yoc3RkOjp1aW50cHRy
X3QpIDw8IDEpOworCisgICAgcmV0dXJuIHNpemVvZihfVHlwZSkgPiBrU3RydWN0TGltaXQ7Cisj
ZWxpZiBkZWZpbmVkKF9fYXJtNjRfXykKKyAgICByZXR1cm4gZmFsc2U7CisjZWxpZiBkZWZpbmVk
KF9fYXJtX18pCisgICAgY29uc3RleHByIHNpemVfdCBrU3RydWN0TGltaXQgPSBzaXplb2Yoc3Rk
Ojp1aW50cHRyX3QpOworCisgICAgcmV0dXJuIHN0ZDo6aXNfY2xhc3MoX1R5cGUpICYmIChzaXpl
b2YoX1R5cGUpID4ga1N0cnVjdExpbWl0KTsKKyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIGFy
Y2hpdGVjdHVyZSEiCisjZW5kaWYKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDw+CitfTlNfSU5MSU5FIGNvbnN0ZXhwciBib29s
IE5TOjpPYmplY3Q6OmRvZXNSZXF1aXJlTXNnU2VuZFN0cmV0PHZvaWQ+KCkKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUuLi4gX0FyZ3M+CitfTlNf
SU5MSU5FIF9SZXQgTlM6Ok9iamVjdDo6c2VuZE1lc3NhZ2UoY29uc3Qgdm9pZCogcE9iaiwgU0VM
IHNlbGVjdG9yLCBfQXJncy4uLiBhcmdzKQoreworI2lmIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBk
ZWZpbmVkKF9feDg2XzY0X18pKQorICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19mbG9hdGluZ19w
b2ludDxfUmV0PigpKQorICAgIHsKKyAgICAgICAgdXNpbmcgU2VuZE1lc3NhZ2VQcm9jRnByZXQg
PSBfUmV0ICgqKShjb25zdCB2b2lkKiwgU0VMLCBfQXJncy4uLik7CisKKyAgICAgICAgY29uc3Qg
U2VuZE1lc3NhZ2VQcm9jRnByZXQgcFByb2MgPSByZWludGVycHJldF9jYXN0PFNlbmRNZXNzYWdl
UHJvY0ZwcmV0Pigmb2JqY19tc2dTZW5kX2ZwcmV0KTsKKworICAgICAgICByZXR1cm4gKCpwUHJv
YykocE9iaiwgc2VsZWN0b3IsIGFyZ3MuLi4pOworICAgIH0KKyAgICBlbHNlCisjZW5kaWYgLy8g
KCBkZWZpbmVkKCBfX2kzODZfXyApICB8fCBkZWZpbmVkKCBfX3g4Nl82NF9fICkgICkKKyNpZiAh
ZGVmaW5lZChfX2FybTY0X18pCisgICAgICAgIGlmIGNvbnN0ZXhwciAoZG9lc1JlcXVpcmVNc2dT
ZW5kU3RyZXQ8X1JldD4oKSkKKyAgICB7CisgICAgICAgIHVzaW5nIFNlbmRNZXNzYWdlUHJvY1N0
cmV0ID0gdm9pZCAoKikoX1JldCosIGNvbnN0IHZvaWQqLCBTRUwsIF9BcmdzLi4uKTsKKworICAg
ICAgICBjb25zdCBTZW5kTWVzc2FnZVByb2NTdHJldCBwUHJvYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
U2VuZE1lc3NhZ2VQcm9jU3RyZXQ+KCZvYmpjX21zZ1NlbmRfc3RyZXQpOworICAgICAgICBfUmV0
ICAgICAgICAgICAgICAgICAgICAgICByZXQ7CisKKyAgICAgICAgKCpwUHJvYykoJnJldCwgcE9i
aiwgc2VsZWN0b3IsIGFyZ3MuLi4pOworCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorICAg
IGVsc2UKKyNlbmRpZiAvLyAhZGVmaW5lZCggX19hcm02NF9fICkKKyAgICB7CisgICAgICAgIHVz
aW5nIFNlbmRNZXNzYWdlUHJvYyA9IF9SZXQgKCopKGNvbnN0IHZvaWQqLCBTRUwsIF9BcmdzLi4u
KTsKKworICAgICAgICBjb25zdCBTZW5kTWVzc2FnZVByb2MgcFByb2MgPSByZWludGVycHJldF9j
YXN0PFNlbmRNZXNzYWdlUHJvYz4oJm9iamNfbXNnU2VuZCk7CisKKyAgICAgICAgcmV0dXJuICgq
cFByb2MpKHBPYmosIHNlbGVjdG9yLCBhcmdzLi4uKTsKKyAgICB9Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpNZXRo
b2RTaWduYXR1cmUqIE5TOjpPYmplY3Q6Om1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yKGNvbnN0
IHZvaWQqIHBPYmosIFNFTCBzZWxlY3RvcikKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8TWV0
aG9kU2lnbmF0dXJlKj4ocE9iaiwgX05TX1BSSVZBVEVfU0VMKG1ldGhvZFNpZ25hdHVyZUZvclNl
bGVjdG9yXyksIHNlbGVjdG9yKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6T2JqZWN0OjpyZXNwb25kc1Rv
U2VsZWN0b3IoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yKQoreworICAgIHJldHVybiBz
ZW5kTWVzc2FnZTxib29sPihwT2JqLCBfTlNfUFJJVkFURV9TRUwocmVzcG9uZHNUb1NlbGVjdG9y
XyksIHNlbGVjdG9yKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZS4uLiBfQXJncz4K
K19OU19JTkxJTkUgX1JldCBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZVNhZmUoY29uc3Qgdm9pZCog
cE9iaiwgU0VMIHNlbGVjdG9yLCBfQXJncy4uLiBhcmdzKQoreworICAgIGlmICgocmVzcG9uZHNU
b1NlbGVjdG9yKHBPYmosIHNlbGVjdG9yKSkgfHwgKG51bGxwdHIgIT0gbWV0aG9kU2lnbmF0dXJl
Rm9yU2VsZWN0b3IocE9iaiwgc2VsZWN0b3IpKSkKKyAgICB7CisgICAgICAgIHJldHVybiBzZW5k
TWVzc2FnZTxfUmV0PihwT2JqLCBzZWxlY3RvciwgYXJncy4uLik7CisgICAgfQorCisgICAgaWYg
Y29uc3RleHByICghc3RkOjppc192b2lkPF9SZXQ+Ojp2YWx1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3M+CitfTlNfSU5MSU5FIF9DbGFzcyog
TlM6Ok9iamVjdDo6YWxsb2MoY29uc3QgY2hhciogcENsYXNzTmFtZSkKK3sKKyAgICByZXR1cm4g
c2VuZE1lc3NhZ2U8X0NsYXNzKj4ob2JqY19sb29rVXBDbGFzcyhwQ2xhc3NOYW1lKSwgX05TX1BS
SVZBVEVfU0VMKGFsbG9jKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzPgorX05TX0lOTElORSBfQ2xh
c3MqIE5TOjpPYmplY3Q6OmFsbG9jKGNvbnN0IHZvaWQqIHBDbGFzcykKK3sKKyAgICByZXR1cm4g
c2VuZE1lc3NhZ2U8X0NsYXNzKj4ocENsYXNzLCBfTlNfUFJJVkFURV9TRUwoYWxsb2MpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBs
YXRlIDxjbGFzcyBfQ2xhc3M+CitfTlNfSU5MSU5FIF9DbGFzcyogTlM6Ok9iamVjdDo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlPF9DbGFzcyo+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChpbml0KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6T2JqZWN0OjpoYXNoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChoYXNoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6Ok9iamVjdDo6aXNFcXVhbChjb25zdCBPYmplY3Qq
IHBPYmplY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChpc0VxdWFsXyksIHBPYmplY3QpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBO
Uzo6T2JqZWN0OjpkZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdl
PFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkZXNjcmlwdGlvbikpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6U3RyaW5nKiBOUzo6T2JqZWN0OjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc2VuZE1lc3NhZ2VTYWZlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkZWJ1
Z0Rlc2NyaXB0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNQcml2YXRlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9G
b3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRmZDJhYjVhODJkNjUwNjJjMzM3
ZTc1NjdmN2U5Njk1Mzc5MjY5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAKQEAgLTAsMCArMSw0ODggQEAK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZv
dW5kYXRpb24vTlNQcml2YXRlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUg
SW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNpbmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgX05TX1BSSVZBVEVfQ0xTKHN5
bWJvbCkgKFByaXZhdGU6OkNsYXNzOjpzX2sjI3N5bWJvbCkKKyNkZWZpbmUgX05TX1BSSVZBVEVf
U0VMKGFjY2Vzc29yKSAoUHJpdmF0ZTo6U2VsZWN0b3I6OnNfayMjYWNjZXNzb3IpCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaWYgZGVmaW5lZChO
U19QUklWQVRFX0lNUExFTUVOVEFUSU9OKQorCisjZGVmaW5lIF9OU19QUklWQVRFX1ZJU0lCSUxJ
VFkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNkZWZpbmUgX05TX1BS
SVZBVEVfSU1QT1JUIF9fYXR0cmlidXRlX18oKHdlYWtfaW1wb3J0KSkKKworI2lmIF9fT0JKQ19f
CisjZGVmaW5lIF9OU19QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgKChfX2JyaWRn
ZSB2b2lkKilvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wpKQorI2Vsc2UKKyNkZWZpbmUgX05TX1BS
SVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKSBvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wp
CisjZW5kaWYgLy8gX19PQkpDX18KKworI2RlZmluZSBfTlNfUFJJVkFURV9ERUZfQ0xTKHN5bWJv
bCkgdm9pZCogc19rIyNzeW1ib2wgX05TX1BSSVZBVEVfVklTSUJJTElUWSA9IF9OU19QUklWQVRF
X09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCk7CisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9QUk8o
c3ltYm9sKQorI2RlZmluZSBfTlNfUFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIFNF
TCBzX2sjI2FjY2Vzc29yIF9OU19QUklWQVRFX1ZJU0lCSUxJVFkgPSBzZWxfcmVnaXN0ZXJOYW1l
KHN5bWJvbCk7CisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9DT05TVCh0eXBlLCBzeW1ib2wpICAg
ICAgICAgICAgICBcCisgICAgX05TX0VYVEVSTiB0eXBlIGNvbnN0IE5TIyNzeW1ib2wgX05TX1BS
SVZBVEVfSU1QT1JUOyBcCisgICAgdHlwZSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgTlM6
OnN5bWJvbCA9IChudWxscHRyICE9ICZOUyMjc3ltYm9sKSA/IE5TIyNzeW1ib2wgOiBudWxscHRy
OworCisjZWxzZQorCisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9DTFMoc3ltYm9sKSBleHRlcm4g
dm9pZCogc19rIyNzeW1ib2w7CisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9QUk8oc3ltYm9sKQor
I2RlZmluZSBfTlNfUFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIGV4dGVybiBTRUwg
c19rIyNhY2Nlc3NvcjsKKyNkZWZpbmUgX05TX1BSSVZBVEVfREVGX0NPTlNUKHR5cGUsIHN5bWJv
bCkKKworI2VuZGlmIC8vIE5TX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworbmFt
ZXNwYWNlIFByaXZhdGUKK3sKKyAgICBuYW1lc3BhY2UgQ2xhc3MKKyAgICB7CisKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX0NMUyhOU0FycmF5KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NM
UyhOU0F1dG9yZWxlYXNlUG9vbCk7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNCdW5k
bGUpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TQ29uZGl0aW9uKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX0NMUyhOU0RhdGUpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xT
KE5TRGljdGlvbmFyeSk7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNFcnJvcik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNOdW1iZXIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfQ0xTKE5TT2JqZWN0KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU1Byb2Nl
c3NJbmZvKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU1N0cmluZyk7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9DTFMoTlNVUkwpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xT
KE5TVmFsdWUpOworCisgICAgfSAvLyBDbGFzcworfSAvLyBQcml2YXRlCit9IC8vIE1UTAorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNl
IE5TCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBQcm90b2NvbAorICAg
IHsKKworICAgIH0gLy8gUHJvdG9jb2wKK30gLy8gUHJpdmF0ZQorfSAvLyBOUworCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7
CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBTZWxlY3RvcgorICAgIHsKKwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFkZE9iamVjdF8sCisgICAgICAgICAgICAiYWRk
T2JqZWN0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFjdGl2ZVByb2Nlc3NvckNv
dW50LAorICAgICAgICAgICAgImFjdGl2ZVByb2Nlc3NvckNvdW50Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoYWxsQnVuZGxlcywKKyAgICAgICAgICAgICJhbGxCdW5kbGVzIik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYWxsRnJhbWV3b3JrcywKKyAgICAgICAgICAgICJh
bGxGcmFtZXdvcmtzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYWxsT2JqZWN0cywK
KyAgICAgICAgICAgICJhbGxPYmplY3RzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
YWxsb2MsCisgICAgICAgICAgICAiYWxsb2MiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChhcHBTdG9yZVJlY2VpcHRVUkwsCisgICAgICAgICAgICAiYXBwU3RvcmVSZWNlaXB0VVJMIik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYXJndW1lbnRzLAorICAgICAgICAgICAgImFy
Z3VtZW50cyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFycmF5LAorICAgICAgICAg
ICAgImFycmF5Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYXJyYXlXaXRoT2JqZWN0
XywKKyAgICAgICAgICAgICJhcnJheVdpdGhPYmplY3Q6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoYXJyYXlXaXRoT2JqZWN0c19jb3VudF8sCisgICAgICAgICAgICAiYXJyYXlXaXRo
T2JqZWN0czpjb3VudDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhdXRvbWF0aWNU
ZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkLAorICAgICAgICAgICAgImF1dG9tYXRpY1Rlcm1pbmF0
aW9uU3VwcG9ydEVuYWJsZWQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhdXRvcmVs
ZWFzZSwKKyAgICAgICAgICAgICJhdXRvcmVsZWFzZSIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uc19yZWFzb25fLAorICAgICAgICAgICAgImJl
Z2luQWN0aXZpdHlXaXRoT3B0aW9uczpyZWFzb246Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoYm9vbFZhbHVlLAorICAgICAgICAgICAgImJvb2xWYWx1ZSIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGJyb2FkY2FzdCwKKyAgICAgICAgICAgICJicm9hZGNhc3QiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidWlsdEluUGx1Z0luc1BhdGgsCisgICAgICAgICAg
ICAiYnVpbHRJblBsdWdJbnNQYXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYnVp
bHRJblBsdWdJbnNVUkwsCisgICAgICAgICAgICAiYnVpbHRJblBsdWdJbnNVUkwiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChidW5kbGVJZGVudGlmaWVyLAorICAgICAgICAgICAgImJ1
bmRsZUlkZW50aWZpZXIiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidW5kbGVQYXRo
LAorICAgICAgICAgICAgImJ1bmRsZVBhdGgiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChidW5kbGVVUkwsCisgICAgICAgICAgICAiYnVuZGxlVVJMIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoYnVuZGxlV2l0aFBhdGhfLAorICAgICAgICAgICAgImJ1bmRsZVdpdGhQYXRo
OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRsZVdpdGhVUkxfLAorICAgICAg
ICAgICAgImJ1bmRsZVdpdGhVUkw6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoY2hh
cmFjdGVyQXRJbmRleF8sCisgICAgICAgICAgICAiY2hhcmFjdGVyQXRJbmRleDoiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChjaGFyVmFsdWUsCisgICAgICAgICAgICAiY2hhclZhbHVl
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoY291bnRCeUVudW1lcmF0aW5nV2l0aFN0
YXRlX29iamVjdHNfY291bnRfLAorICAgICAgICAgICAgImNvdW50QnlFbnVtZXJhdGluZ1dpdGhT
dGF0ZTpvYmplY3RzOmNvdW50OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNTdHJp
bmdVc2luZ0VuY29kaW5nXywKKyAgICAgICAgICAgICJjU3RyaW5nVXNpbmdFbmNvZGluZzoiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjb2RlLAorICAgICAgICAgICAgImNvZGUiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjb21wYXJlXywKKyAgICAgICAgICAgICJjb21w
YXJlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNvcHksCisgICAgICAgICAgICAi
Y29weSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNvdW50LAorICAgICAgICAgICAg
ImNvdW50Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZGF0ZVdpdGhUaW1lSW50ZXJ2
YWxTaW5jZU5vd18sCisgICAgICAgICAgICAiZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzoi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkZXNjcmlwdGlvbldpdGhMb2NhbGVfLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uV2l0aExvY2FsZToiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb25fLAorICAgICAgICAgICAgImRp
c2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChkaXNhYmxlU3VkZGVuVGVybWluYXRpb24sCisgICAgICAgICAgICAiZGlzYWJsZVN1ZGRlblRl
cm1pbmF0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZGVidWdEZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICJkZWJ1Z0Rlc2NyaXB0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoZGVzY3JpcHRpb24sCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChkaWN0aW9uYXJ5LAorICAgICAgICAgICAgImRpY3Rpb25h
cnkiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkaWN0aW9uYXJ5V2l0aE9iamVjdF9m
b3JLZXlfLAorICAgICAgICAgICAgImRpY3Rpb25hcnlXaXRoT2JqZWN0OmZvcktleToiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkaWN0aW9uYXJ5V2l0aE9iamVjdHNfZm9yS2V5c19j
b3VudF8sCisgICAgICAgICAgICAiZGljdGlvbmFyeVdpdGhPYmplY3RzOmZvcktleXM6Y291bnQ6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZG9tYWluLAorICAgICAgICAgICAgImRv
bWFpbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRvdWJsZVZhbHVlLAorICAgICAg
ICAgICAgImRvdWJsZVZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZHJhaW4s
CisgICAgICAgICAgICAiZHJhaW4iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChlbmFi
bGVBdXRvbWF0aWNUZXJtaW5hdGlvbl8sCisgICAgICAgICAgICAiZW5hYmxlQXV0b21hdGljVGVy
bWluYXRpb246Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZW5hYmxlU3VkZGVuVGVy
bWluYXRpb24sCisgICAgICAgICAgICAiZW5hYmxlU3VkZGVuVGVybWluYXRpb24iKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChlbmRBY3Rpdml0eV8sCisgICAgICAgICAgICAiZW5kQWN0
aXZpdHk6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZW52aXJvbm1lbnQsCisgICAg
ICAgICAgICAiZW52aXJvbm1lbnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChlcnJv
cldpdGhEb21haW5fY29kZV91c2VySW5mb18sCisgICAgICAgICAgICAiZXJyb3JXaXRoRG9tYWlu
OmNvZGU6dXNlckluZm86Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZXhlY3V0YWJs
ZVBhdGgsCisgICAgICAgICAgICAiZXhlY3V0YWJsZVBhdGgiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChleGVjdXRhYmxlVVJMLAorICAgICAgICAgICAgImV4ZWN1dGFibGVVUkwiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24sCisg
ICAgICAgICAgICAiZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoZmlsZVVSTFdpdGhQYXRoXywKKyAgICAgICAgICAgICJmaWxlVVJMV2l0aFBh
dGg6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZmxvYXRWYWx1ZSwKKyAgICAgICAg
ICAgICJmbG9hdFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZnVsbFVzZXJO
YW1lLAorICAgICAgICAgICAgImZ1bGxVc2VyTmFtZSIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGdldFZhbHVlX3NpemVfLAorICAgICAgICAgICAgImdldFZhbHVlOnNpemU6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZ2xvYmFsbHlVbmlxdWVTdHJpbmcsCisgICAgICAg
ICAgICAiZ2xvYmFsbHlVbmlxdWVTdHJpbmciKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChoYXNoLAorICAgICAgICAgICAgImhhc2giKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChob3N0TmFtZSwKKyAgICAgICAgICAgICJob3N0TmFtZSIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKGluZm9EaWN0aW9uYXJ5LAorICAgICAgICAgICAgImluZm9EaWN0aW9uYXJ5Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdCwKKyAgICAgICAgICAgICJpbml0Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdEZpbGVVUkxXaXRoUGF0aF8sCisgICAg
ICAgICAgICAiaW5pdEZpbGVVUkxXaXRoUGF0aDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChpbml0V2l0aEJvb2xfLAorICAgICAgICAgICAgImluaXRXaXRoQm9vbDoiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEJ5dGVzX29iakNUeXBlXywKKyAgICAgICAg
ICAgICJpbml0V2l0aEJ5dGVzOm9iakNUeXBlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGluaXRXaXRoQnl0ZXNOb0NvcHlfbGVuZ3RoX2VuY29kaW5nX2ZyZWVXaGVuRG9uZV8sCisg
ICAgICAgICAgICAiaW5pdFdpdGhCeXRlc05vQ29weTpsZW5ndGg6ZW5jb2Rpbmc6ZnJlZVdoZW5E
b25lOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoQ2hhcl8sCisgICAg
ICAgICAgICAiaW5pdFdpdGhDaGFyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlu
aXRXaXRoQ29kZXJfLAorICAgICAgICAgICAgImluaXRXaXRoQ29kZXI6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhDU3RyaW5nX2VuY29kaW5nXywKKyAgICAgICAgICAg
ICJpbml0V2l0aENTdHJpbmc6ZW5jb2Rpbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoaW5pdFdpdGhEb21haW5fY29kZV91c2VySW5mb18sCisgICAgICAgICAgICAiaW5pdFdpdGhE
b21haW46Y29kZTp1c2VySW5mbzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0
V2l0aERvdWJsZV8sCisgICAgICAgICAgICAiaW5pdFdpdGhEb3VibGU6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhGbG9hdF8sCisgICAgICAgICAgICAiaW5pdFdpdGhG
bG9hdDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEludF8sCisgICAg
ICAgICAgICAiaW5pdFdpdGhJbnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5p
dFdpdGhMb25nXywKKyAgICAgICAgICAgICJpbml0V2l0aExvbmc6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoaW5pdFdpdGhMb25nTG9uZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhM
b25nTG9uZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aE9iamVjdHNf
Y291bnRfLAorICAgICAgICAgICAgImluaXRXaXRoT2JqZWN0czpjb3VudDoiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aE9iamVjdHNfZm9yS2V5c19jb3VudF8sCisgICAg
ICAgICAgICAiaW5pdFdpdGhPYmplY3RzOmZvcktleXM6Y291bnQ6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoaW5pdFdpdGhQYXRoXywKKyAgICAgICAgICAgICJpbml0V2l0aFBhdGg6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhTaG9ydF8sCisgICAgICAg
ICAgICAiaW5pdFdpdGhTaG9ydDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0
V2l0aFN0cmluZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhTdHJpbmc6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZENoYXJfLAorICAgICAgICAgICAgImlu
aXRXaXRoVW5zaWduZWRDaGFyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRX
aXRoVW5zaWduZWRJbnRfLAorICAgICAgICAgICAgImluaXRXaXRoVW5zaWduZWRJbnQ6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZExvbmdfLAorICAgICAg
ICAgICAgImluaXRXaXRoVW5zaWduZWRMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGluaXRXaXRoVW5zaWduZWRMb25nTG9uZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhVbnNp
Z25lZExvbmdMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoVW5z
aWduZWRTaG9ydF8sCisgICAgICAgICAgICAiaW5pdFdpdGhVbnNpZ25lZFNob3J0OiIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoVVJMXywKKyAgICAgICAgICAgICJpbml0
V2l0aFVSTDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbnRlZ2VyVmFsdWUsCisg
ICAgICAgICAgICAiaW50ZWdlclZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
aW50VmFsdWUsCisgICAgICAgICAgICAiaW50VmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChpc0VxdWFsXywKKyAgICAgICAgICAgICJpc0VxdWFsOiIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGlzRXF1YWxUb051bWJlcl8sCisgICAgICAgICAgICAiaXNFcXVhbFRv
TnVtYmVyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlzRXF1YWxUb1N0cmluZ18s
CisgICAgICAgICAgICAiaXNFcXVhbFRvU3RyaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGlzRXF1YWxUb1ZhbHVlXywKKyAgICAgICAgICAgICJpc0VxdWFsVG9WYWx1ZToiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc2lPU0FwcE9uTWFjLAorICAgICAgICAgICAg
ImlzaU9TQXBwT25NYWMiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc0xvYWRlZCwK
KyAgICAgICAgICAgICJpc0xvYWRlZCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlz
TG93UG93ZXJNb2RlRW5hYmxlZCwKKyAgICAgICAgICAgICJpc0xvd1Bvd2VyTW9kZUVuYWJsZWQi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc01hY0NhdGFseXN0QXBwLAorICAgICAg
ICAgICAgImlzTWFjQ2F0YWx5c3RBcHAiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChp
c09wZXJhdGluZ1N5c3RlbUF0TGVhc3RWZXJzaW9uXywKKyAgICAgICAgICAgICJpc09wZXJhdGlu
Z1N5c3RlbUF0TGVhc3RWZXJzaW9uOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGtl
eUVudW1lcmF0b3IsCisgICAgICAgICAgICAia2V5RW51bWVyYXRvciIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGxlbmd0aCwKKyAgICAgICAgICAgICJsZW5ndGgiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZ18sCisgICAgICAg
ICAgICAibGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobG9hZCwKKyAgICAgICAgICAgICJsb2FkIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobG9hZEFuZFJldHVybkVycm9yXywKKyAgICAgICAgICAgICJsb2FkQW5kUmV0dXJu
RXJyb3I6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobG9jYWxpemVkRGVzY3JpcHRp
b24sCisgICAgICAgICAgICAibG9jYWxpemVkRGVzY3JpcHRpb24iKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChsb2NhbGl6ZWRGYWlsdXJlUmVhc29uLAorICAgICAgICAgICAgImxvY2Fs
aXplZEZhaWx1cmVSZWFzb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2NhbGl6
ZWRJbmZvRGljdGlvbmFyeSwKKyAgICAgICAgICAgICJsb2NhbGl6ZWRJbmZvRGljdGlvbmFyeSIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZFJlY292ZXJ5T3B0aW9ucywK
KyAgICAgICAgICAgICJsb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnMiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24sCisgICAgICAgICAgICAi
bG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwobG9jYWxpemVkU3RyaW5nRm9yS2V5X3ZhbHVlX3RhYmxlXywKKyAgICAgICAgICAgICJsb2Nh
bGl6ZWRTdHJpbmdGb3JLZXk6dmFsdWU6dGFibGU6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwobG9jaywKKyAgICAgICAgICAgICJsb2NrIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwobG9uZ1ZhbHVlLAorICAgICAgICAgICAgImxvbmdWYWx1ZSIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGxvbmdMb25nVmFsdWUsCisgICAgICAgICAgICAibG9uZ0xvbmdWYWx1
ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG1haW5CdW5kbGUsCisgICAgICAgICAg
ICAibWFpbkJ1bmRsZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG1heGltdW1MZW5n
dGhPZkJ5dGVzVXNpbmdFbmNvZGluZ18sCisgICAgICAgICAgICAibWF4aW11bUxlbmd0aE9mQnl0
ZXNVc2luZ0VuY29kaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG1ldGhvZFNp
Z25hdHVyZUZvclNlbGVjdG9yXywKKyAgICAgICAgICAgICJtZXRob2RTaWduYXR1cmVGb3JTZWxl
Y3RvcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChtdXRhYmxlQnl0ZXMsCisgICAg
ICAgICAgICAibXV0YWJsZUJ5dGVzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobmFt
ZSwKKyAgICAgICAgICAgICJuYW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobmV4
dE9iamVjdCwKKyAgICAgICAgICAgICJuZXh0T2JqZWN0Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobnVtYmVyV2l0aEJvb2xfLAorICAgICAgICAgICAgIm51bWJlcldpdGhCb29sOiIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhDaGFyXywKKyAgICAgICAg
ICAgICJudW1iZXJXaXRoQ2hhcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1i
ZXJXaXRoRG91YmxlXywKKyAgICAgICAgICAgICJudW1iZXJXaXRoRG91YmxlOiIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhGbG9hdF8sCisgICAgICAgICAgICAibnVt
YmVyV2l0aEZsb2F0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhJ
bnRfLAorICAgICAgICAgICAgIm51bWJlcldpdGhJbnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobnVtYmVyV2l0aExvbmdfLAorICAgICAgICAgICAgIm51bWJlcldpdGhMb25nOiIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhMb25nTG9uZ18sCisgICAg
ICAgICAgICAibnVtYmVyV2l0aExvbmdMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKG51bWJlcldpdGhTaG9ydF8sCisgICAgICAgICAgICAibnVtYmVyV2l0aFNob3J0OiIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhVbnNpZ25lZENoYXJfLAorICAg
ICAgICAgICAgIm51bWJlcldpdGhVbnNpZ25lZENoYXI6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobnVtYmVyV2l0aFVuc2lnbmVkSW50XywKKyAgICAgICAgICAgICJudW1iZXJXaXRo
VW5zaWduZWRJbnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aFVu
c2lnbmVkTG9uZ18sCisgICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkTG9uZzoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoVW5zaWduZWRMb25nTG9uZ18sCisg
ICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aFVuc2lnbmVkU2hvcnRfLAorICAgICAgICAgICAgIm51
bWJlcldpdGhVbnNpZ25lZFNob3J0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG9i
akNUeXBlLAorICAgICAgICAgICAgIm9iakNUeXBlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwob2JqZWN0LAorICAgICAgICAgICAgIm9iamVjdCIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKG9iamVjdEF0SW5kZXhfLAorICAgICAgICAgICAgIm9iamVjdEF0SW5kZXg6Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob2JqZWN0Rm9ySW5mb0RpY3Rpb25hcnlLZXlf
LAorICAgICAgICAgICAgIm9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5OiIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKG9iamVjdEZvcktleV8sCisgICAgICAgICAgICAib2JqZWN0Rm9y
S2V5OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG9wZXJhdGluZ1N5c3RlbSwKKyAg
ICAgICAgICAgICJvcGVyYXRpbmdTeXN0ZW0iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uLAorICAgICAgICAgICAgIm9wZXJhdGluZ1N5c3RlbVZl
cnNpb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChvcGVyYXRpbmdTeXN0ZW1WZXJz
aW9uU3RyaW5nLAorICAgICAgICAgICAgIm9wZXJhdGluZ1N5c3RlbVZlcnNpb25TdHJpbmciKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8s
CisgICAgICAgICAgICAicGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwocGVyZm9ybUFjdGl2aXR5V2l0aE9wdGlvbnNfcmVhc29uX3VzaW5n
QmxvY2tfLAorICAgICAgICAgICAgInBlcmZvcm1BY3Rpdml0eVdpdGhPcHRpb25zOnJlYXNvbjp1
c2luZ0Jsb2NrOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBlcmZvcm1FeHBpcmlu
Z0FjdGl2aXR5V2l0aFJlYXNvbl91c2luZ0Jsb2NrXywKKyAgICAgICAgICAgICJwZXJmb3JtRXhw
aXJpbmdBY3Rpdml0eVdpdGhSZWFzb246dXNpbmdCbG9jazoiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChwaHlzaWNhbE1lbW9yeSwKKyAgICAgICAgICAgICJwaHlzaWNhbE1lbW9yeSIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBvaW50ZXJWYWx1ZSwKKyAgICAgICAgICAg
ICJwb2ludGVyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwcmVmbGlnaHRB
bmRSZXR1cm5FcnJvcl8sCisgICAgICAgICAgICAicHJlZmxpZ2h0QW5kUmV0dXJuRXJyb3I6Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJpdmF0ZUZyYW1ld29ya3NQYXRoLAorICAg
ICAgICAgICAgInByaXZhdGVGcmFtZXdvcmtzUGF0aCIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKHByaXZhdGVGcmFtZXdvcmtzVVJMLAorICAgICAgICAgICAgInByaXZhdGVGcmFtZXdv
cmtzVVJMIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJvY2Vzc0lkZW50aWZpZXIs
CisgICAgICAgICAgICAicHJvY2Vzc0lkZW50aWZpZXIiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChwcm9jZXNzSW5mbywKKyAgICAgICAgICAgICJwcm9jZXNzSW5mbyIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKHByb2Nlc3NOYW1lLAorICAgICAgICAgICAgInByb2Nlc3NO
YW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJvY2Vzc29yQ291bnQsCisgICAg
ICAgICAgICAicHJvY2Vzc29yQ291bnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChy
YW5nZU9mU3RyaW5nX29wdGlvbnNfLAorICAgICAgICAgICAgInJhbmdlT2ZTdHJpbmc6b3B0aW9u
czoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZWxlYXNlLAorICAgICAgICAgICAg
InJlbGVhc2UiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVBhdGgsCisg
ICAgICAgICAgICAicmVzb3VyY2VQYXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
cmVzb3VyY2VVUkwsCisgICAgICAgICAgICAicmVzb3VyY2VVUkwiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChyZXNwb25kc1RvU2VsZWN0b3JfLAorICAgICAgICAgICAgInJlc3BvbmRz
VG9TZWxlY3RvcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZXRhaW4sCisgICAg
ICAgICAgICAicmV0YWluIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocmV0YWluQ291
bnQsCisgICAgICAgICAgICAicmV0YWluQ291bnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChzZXRBdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkXywKKyAgICAgICAgICAg
ICJzZXRBdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkOiIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKHNldFByb2Nlc3NOYW1lXywKKyAgICAgICAgICAgICJzZXRQcm9jZXNz
TmFtZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzaGFyZWRGcmFtZXdvcmtzUGF0
aCwKKyAgICAgICAgICAgICJzaGFyZWRGcmFtZXdvcmtzUGF0aCIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKHNoYXJlZEZyYW1ld29ya3NVUkwsCisgICAgICAgICAgICAic2hhcmVkRnJh
bWV3b3Jrc1VSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHNoYXJlZFN1cHBvcnRQ
YXRoLAorICAgICAgICAgICAgInNoYXJlZFN1cHBvcnRQYXRoIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoc2hhcmVkU3VwcG9ydFVSTCwKKyAgICAgICAgICAgICJzaGFyZWRTdXBwb3J0
VVJMIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2hvcnRWYWx1ZSwKKyAgICAgICAg
ICAgICJzaG9ydFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2hvd1Bvb2xz
LAorICAgICAgICAgICAgInNob3dQb29scyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHNpZ25hbCwKKyAgICAgICAgICAgICJzaWduYWwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChzdHJpbmcsCisgICAgICAgICAgICAic3RyaW5nIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoc3RyaW5nVmFsdWUsCisgICAgICAgICAgICAic3RyaW5nVmFsdWUiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChzdHJpbmdXaXRoU3RyaW5nXywKKyAgICAgICAgICAgICJz
dHJpbmdXaXRoU3RyaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHN0cmluZ1dp
dGhDU3RyaW5nX2VuY29kaW5nXywKKyAgICAgICAgICAgICJzdHJpbmdXaXRoQ1N0cmluZzplbmNv
ZGluZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzdHJpbmdCeUFwcGVuZGluZ1N0
cmluZ18sCisgICAgICAgICAgICAic3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoc3lzdGVtVXB0aW1lLAorICAgICAgICAgICAgInN5c3RlbVVw
dGltZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHRoZXJtYWxTdGF0ZSwKKyAgICAg
ICAgICAgICJ0aGVybWFsU3RhdGUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bmxv
YWQsCisgICAgICAgICAgICAidW5sb2FkIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
dW5sb2NrLAorICAgICAgICAgICAgInVubG9jayIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKHVuc2lnbmVkQ2hhclZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkQ2hhclZhbHVlIik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodW5zaWduZWRJbnRlZ2VyVmFsdWUsCisgICAg
ICAgICAgICAidW5zaWduZWRJbnRlZ2VyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTCh1bnNpZ25lZEludFZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkSW50VmFsdWUiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bnNpZ25lZExvbmdWYWx1ZSwKKyAgICAgICAg
ICAgICJ1bnNpZ25lZExvbmdWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVu
c2lnbmVkTG9uZ0xvbmdWYWx1ZSwKKyAgICAgICAgICAgICJ1bnNpZ25lZExvbmdMb25nVmFsdWUi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bnNpZ25lZFNob3J0VmFsdWUsCisgICAg
ICAgICAgICAidW5zaWduZWRTaG9ydFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoVVJMRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8sCisgICAgICAgICAgICAiVVJMRm9yQXV4aWxp
YXJ5RXhlY3V0YWJsZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1c2VySW5mbywK
KyAgICAgICAgICAgICJ1c2VySW5mbyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVz
ZXJOYW1lLAorICAgICAgICAgICAgInVzZXJOYW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoVVRGOFN0cmluZywKKyAgICAgICAgICAgICJVVEY4U3RyaW5nIik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwodmFsdWVXaXRoQnl0ZXNfb2JqQ1R5cGVfLAorICAgICAgICAgICAg
InZhbHVlV2l0aEJ5dGVzOm9iakNUeXBlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHZhbHVlV2l0aFBvaW50ZXJfLAorICAgICAgICAgICAgInZhbHVlV2l0aFBvaW50ZXI6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwod2FpdCwKKyAgICAgICAgICAgICJ3YWl0Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwod2FpdFVudGlsRGF0ZV8sCisgICAgICAgICAgICAi
d2FpdFVudGlsRGF0ZToiKTsKKyAgICB9IC8vIENsYXNzCit9IC8vIFByaXZhdGUKK30gLy8gTVRM
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQcm9jZXNz
SW5mby5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1By
b2Nlc3NJbmZvLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGUzMTQ3ZmU4YTdjNjhkMmZhY2MzYTZlZDQ3N2Y2
NzUxZWU1ZGU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNQcm9jZXNzSW5mby5ocHAKQEAgLTAsMCArMSwzNTQgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRp
b24vTlNQcm9jZXNzSW5mby5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU05vdGlmaWNhdGlv
bi5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAi
CisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5T
Cit7CitfTlNfQ09OU1QoTm90aWZpY2F0aW9uTmFtZSwgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVE
aWRDaGFuZ2VOb3RpZmljYXRpb24pOworX05TX0NPTlNUKE5vdGlmaWNhdGlvbk5hbWUsIFByb2Nl
c3NJbmZvUG93ZXJTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbik7CisKK19OU19FTlVNKE5TOjpJ
bnRlZ2VyLCBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZSkgeworICAgIFByb2Nlc3NJbmZvVGhlcm1h
bFN0YXRlTm9taW5hbCA9IDAsCisgICAgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVGYWlyID0gMSwK
KyAgICBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZVNlcmlvdXMgPSAyLAorICAgIFByb2Nlc3NJbmZv
VGhlcm1hbFN0YXRlQ3JpdGljYWwgPSAzCit9OworCitfTlNfT1BUSU9OUyhzdGQ6OnVpbnQ2NF90
LCBBY3Rpdml0eU9wdGlvbnMpIHsKKyAgICBBY3Rpdml0eUlkbGVEaXNwbGF5U2xlZXBEaXNhYmxl
ZCA9ICgxVUxMIDw8IDQwKSwKKyAgICBBY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2FibGVkID0g
KDFVTEwgPDwgMjApLAorICAgIEFjdGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCA9ICgx
VUxMIDw8IDE0KSwKKyAgICBBY3Rpdml0eUF1dG9tYXRpY1Rlcm1pbmF0aW9uRGlzYWJsZWQgPSAo
MVVMTCA8PCAxNSksCisgICAgQWN0aXZpdHlVc2VySW5pdGlhdGVkID0gKDB4MDBGRkZGRkZVTEwg
fCBBY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2FibGVkKSwKKyAgICBBY3Rpdml0eVVzZXJJbml0
aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1TbGVlcCA9IChBY3Rpdml0eVVzZXJJbml0aWF0ZWQgJiB+
QWN0aXZpdHlJZGxlU3lzdGVtU2xlZXBEaXNhYmxlZCksCisgICAgQWN0aXZpdHlCYWNrZ3JvdW5k
ID0gMHgwMDAwMDBGRlVMTCwKKyAgICBBY3Rpdml0eUxhdGVuY3lDcml0aWNhbCA9IDB4RkYwMDAw
MDAwMFVMTCwKK307CisKK2NsYXNzIFByb2Nlc3NJbmZvIDogcHVibGljIFJlZmVyZW5jaW5nPFBy
b2Nlc3NJbmZvPgoreworcHVibGljOgorICAgIHN0YXRpYyBQcm9jZXNzSW5mbyogICAgIHByb2Nl
c3NJbmZvKCk7CisKKyAgICBjbGFzcyBBcnJheSogICAgICAgICAgICBhcmd1bWVudHMoKSBjb25z
dDsKKyAgICBjbGFzcyBEaWN0aW9uYXJ5KiAgICAgICBlbnZpcm9ubWVudCgpIGNvbnN0OworICAg
IGNsYXNzIFN0cmluZyogICAgICAgICAgIGhvc3ROYW1lKCkgY29uc3Q7CisgICAgY2xhc3MgU3Ry
aW5nKiAgICAgICAgICAgcHJvY2Vzc05hbWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICBzZXRQcm9jZXNzTmFtZShjb25zdCBTdHJpbmcqIHBTdHJpbmcpOworICAgIGludCAg
ICAgICAgICAgICAgICAgICAgIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgY2xhc3Mg
U3RyaW5nKiAgICAgICAgICAgZ2xvYmFsbHlVbmlxdWVTdHJpbmcoKSBjb25zdDsKKworICAgIGNs
YXNzIFN0cmluZyogICAgICAgICAgIHVzZXJOYW1lKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5n
KiAgICAgICAgICAgZnVsbFVzZXJOYW1lKCkgY29uc3Q7CisKKyAgICBVSW50ZWdlciAgICAgICAg
ICAgICAgICBvcGVyYXRpbmdTeXN0ZW0oKSBjb25zdDsKKyAgICBPcGVyYXRpbmdTeXN0ZW1WZXJz
aW9uICBvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAg
ICAgICAgICAgb3BlcmF0aW5nU3lzdGVtVmVyc2lvblN0cmluZygpIGNvbnN0OworICAgIGJvb2wg
ICAgICAgICAgICAgICAgICAgIGlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNpb24oT3BlcmF0
aW5nU3lzdGVtVmVyc2lvbiB2ZXJzaW9uKSBjb25zdDsKKworICAgIFVJbnRlZ2VyICAgICAgICAg
ICAgICAgIHByb2Nlc3NvckNvdW50KCkgY29uc3Q7CisgICAgVUludGVnZXIgICAgICAgICAgICAg
ICAgYWN0aXZlUHJvY2Vzc29yQ291bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcg
ICAgICBwaHlzaWNhbE1lbW9yeSgpIGNvbnN0OworICAgIFRpbWVJbnRlcnZhbCAgICAgICAgICAg
IHN5c3RlbVVwdGltZSgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZGlz
YWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZW5h
YmxlU3VkZGVuVGVybWluYXRpb24oKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGRp
c2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbihjb25zdCBjbGFzcyBTdHJpbmcqIHBSZWFzb24pOwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uKGNv
bnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbik7CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
YXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgIHNldEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWQoYm9v
bCBlbmFibGVkKTsKKworICAgIGNsYXNzIE9iamVjdCogICAgICAgICAgIGJlZ2luQWN0aXZpdHko
QWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIGNvbnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbik7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZW5kQWN0aXZpdHkoY2xhc3MgT2JqZWN0KiBwQWN0
aXZpdHkpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1BY3Rpdml0eShBY3Rp
dml0eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uLCB2b2lkIChe
YmxvY2spKHZvaWQpKTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBwZXJmb3JtQWN0aXZp
dHkoQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIGNvbnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbiwg
Y29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiBmdW5jKTsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICBwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShjb25zdCBjbGFzcyBTdHJpbmcqIHBSZWFz
b24sIHZvaWQgKF5ibG9jaykoYm9vbCBleHBpcmVkKSk7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgcGVyZm9ybUV4cGlyaW5nQWN0aXZpdHkoY29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29u
LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBleHBpcmVkKT4mIGZ1bmMpOworCisgICAg
UHJvY2Vzc0luZm9UaGVybWFsU3RhdGUgdGhlcm1hbFN0YXRlKCkgY29uc3Q7CisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICBpc2lPU0FwcE9uTWFjKCkgY29uc3Q7CisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgaXNNYWNDYXRhbHlzdEFwcCgpIGNvbnN0OworfTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19QUklWQVRF
X0RFRl9DT05TVChOUzo6Tm90aWZpY2F0aW9uTmFtZSwgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVE
aWRDaGFuZ2VOb3RpZmljYXRpb24pOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpOb3RpZmlj
YXRpb25OYW1lLCBQcm9jZXNzSW5mb1Bvd2VyU3RhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24pOwor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6UHJvY2Vzc0luZm8qIE5TOjpQcm9jZXNzSW5mbzo6cHJvY2Vzc0luZm8oKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFByb2Nlc3NJbmZvKj4oX05TX1BSSVZBVEVf
Q0xTKE5TUHJvY2Vzc0luZm8pLCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc0luZm8pKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkFycmF5KiBOUzo6UHJvY2Vzc0luZm86OmFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
YXJndW1lbnRzKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6UHJvY2Vzc0luZm86OmVu
dmlyb25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0
aW9uYXJ5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGVudmlyb25tZW50KSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpTdHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6aG9zdE5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChob3N0
TmFtZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6UHJvY2Vzc0luZm86OnByb2Nlc3NOYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc05hbWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vz
c0luZm86OnNldFByb2Nlc3NOYW1lKGNvbnN0IFN0cmluZyogcFN0cmluZykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzZXRQcm9jZXNzTmFt
ZV8pLCBwU3RyaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgaW50IE5TOjpQcm9jZXNzSW5mbzo6cHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGludD4odGhp
cywgX05TX1BSSVZBVEVfU0VMKHByb2Nlc3NJZGVudGlmaWVyKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJp
bmcqIE5TOjpQcm9jZXNzSW5mbzo6Z2xvYmFsbHlVbmlxdWVTdHJpbmcoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChnbG9iYWxseVVuaXF1ZVN0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6UHJvY2Vz
c0luZm86OnVzZXJOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZVNhZmU8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVzZXJOYW1lKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpTdHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6ZnVsbFVzZXJOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8U3RyaW5nKj4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGZ1bGxVc2VyTmFtZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OlByb2Nlc3NJ
bmZvOjpvcGVyYXRpbmdTeXN0ZW0oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob3BlcmF0aW5nU3lzdGVtKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIE5TOjpQcm9jZXNzSW5mbzo6b3Bl
cmF0aW5nU3lzdGVtVmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8T3BlcmF0aW5nU3lzdGVtVmVyc2lvbj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9wZXJh
dGluZ1N5c3RlbVZlcnNpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZv
OjpvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob3BlcmF0aW5n
U3lzdGVtVmVyc2lvblN0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9jZXNzSW5mbzo6aXNP
cGVyYXRpbmdTeXN0ZW1BdExlYXN0VmVyc2lvbihPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIHZlcnNp
b24pIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNpb25fKSwgdmVyc2lv
bik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6UHJvY2Vzc0luZm86OnByb2Nlc3NvckNvdW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKHByb2Nlc3NvckNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdl
ciBOUzo6UHJvY2Vzc0luZm86OmFjdGl2ZVByb2Nlc3NvckNvdW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGFjdGl2ZVByb2Nlc3NvckNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIGxvbmcgbG9uZyBOUzo6
UHJvY2Vzc0luZm86OnBoeXNpY2FsTWVtb3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTx1bnNpZ25lZCBsb25nIGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTChw
aHlzaWNhbE1lbW9yeSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VGltZUludGVydmFsIE5TOjpQcm9jZXNzSW5m
bzo6c3lzdGVtVXB0aW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxUaW1lSW50ZXJ2YWw+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzeXN0ZW1VcHRpbWUpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5m
bzo6ZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2VT
YWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChlbmFibGVTdWRkZW5UZXJtaW5hdGlvbikp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0
aW9uKGNvbnN0IFN0cmluZyogcFJlYXNvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlU2Fm
ZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9u
XyksIHBSZWFzb24pOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZW5hYmxlQXV0b21h
dGljVGVybWluYXRpb24oY29uc3QgU3RyaW5nKiBwUmVhc29uKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2VTYWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChlbmFibGVBdXRvbWF0aWNU
ZXJtaW5hdGlvbl8pLCBwUmVhc29uKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6UHJvY2Vzc0luZm86OmF1
dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYXV0b21h
dGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNz
SW5mbzo6c2V0QXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKHNldEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWRfKSwgZW5hYmxlZCk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpPYmplY3QqIE5TOjpQcm9jZXNzSW5mbzo6YmVnaW5BY3Rpdml0eShBY3Rpdml0
eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU3RyaW5nKiBwUmVhc29uKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE9iamVjdCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChiZWdpbkFj
dGl2aXR5V2l0aE9wdGlvbnNfcmVhc29uXyksIG9wdGlvbnMsIHBSZWFzb24pOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2
b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZW5kQWN0aXZpdHkoT2JqZWN0KiBwQWN0aXZpdHkpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZW5kQWN0
aXZpdHlfKSwgcEFjdGl2aXR5KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OnBlcmZv
cm1BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU3RyaW5nKiBwUmVhc29u
LCB2b2lkICheYmxvY2spKHZvaWQpKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKHBlcmZvcm1BY3Rpdml0eVdpdGhPcHRpb25zX3JlYXNvbl91
c2luZ0Jsb2NrXyksIG9wdGlvbnMsIHBSZWFzb24sIGJsb2NrKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6
UHJvY2Vzc0luZm86OnBlcmZvcm1BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgY29u
c3QgU3RyaW5nKiBwUmVhc29uLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9u
KQoreworICAgIF9fYmxvY2sgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGJsb2NrRnVuY3Rpb24gPSBm
dW5jdGlvbjsKKworICAgIHBlcmZvcm1BY3Rpdml0eShvcHRpb25zLCBwUmVhc29uLCBeKCkgeyBi
bG9ja0Z1bmN0aW9uKCk7IH0pOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6cGVyZm9y
bUV4cGlyaW5nQWN0aXZpdHkoY29uc3QgU3RyaW5nKiBwUmVhc29uLCB2b2lkICheYmxvY2spKGJv
b2wgZXhwaXJlZCkpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywg
X05TX1BSSVZBVEVfU0VMKHBlcmZvcm1FeHBpcmluZ0FjdGl2aXR5V2l0aFJlYXNvbl91c2luZ0Js
b2NrXyksIHBSZWFzb24sIGJsb2NrKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OnBl
cmZvcm1FeHBpcmluZ0FjdGl2aXR5KGNvbnN0IFN0cmluZyogcFJlYXNvbiwgY29uc3Qgc3RkOjpm
dW5jdGlvbjx2b2lkKGJvb2wgZXhwaXJlZCk+JiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIHN0
ZDo6ZnVuY3Rpb248dm9pZChib29sIGV4cGlyZWQpPiBibG9ja0Z1bmN0aW9uID0gZnVuY3Rpb247
CisKKyAgICBwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShwUmVhc29uLCBeKGJvb2wgZXhwaXJlZCkg
eyBibG9ja0Z1bmN0aW9uKGV4cGlyZWQpOyB9KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlByb2Nlc3NJbmZvVGhl
cm1hbFN0YXRlIE5TOjpQcm9jZXNzSW5mbzo6dGhlcm1hbFN0YXRlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZT4odGhpcywg
X05TX1BSSVZBVEVfU0VMKHRoZXJtYWxTdGF0ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9jZXNz
SW5mbzo6aXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzTG93UG93ZXJN
b2RlRW5hYmxlZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9jZXNzSW5mbzo6aXNpT1NBcHBPbk1h
YygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChpc2lPU0FwcE9uTWFjKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlBy
b2Nlc3NJbmZvOjppc01hY0NhdGFseXN0QXBwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzTWFjQ2F0YWx5
c3RBcHApKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU1JhbmdlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TUmFuZ2UuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNDY3ZDYwY2VlMzNhYjI4YjA4MWUwZDJkZDUzNzI4
NzY1YjBhOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU1JhbmdlLmhwcApAQCAtMCwwICsxLDgzIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TUmFu
Z2UuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1
ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK3N0
cnVjdCBSYW5nZQoreworICAgIHN0YXRpYyBSYW5nZSBNYWtlKFVJbnRlZ2VyIGxvYywgVUludGVn
ZXIgbGVuKTsKKworICAgIFJhbmdlKFVJbnRlZ2VyIGxvYywgVUludGVnZXIgbGVuKTsKKworICAg
IGJvb2wgICAgIEVxdWFsKGNvbnN0IFJhbmdlJiByYW5nZSkgY29uc3Q7CisgICAgYm9vbCAgICAg
TG9jYXRpb25JblJhbmdlKFVJbnRlZ2VyIGxvYykgY29uc3Q7CisgICAgVUludGVnZXIgTWF4KCkg
Y29uc3Q7CisKKyAgICBVSW50ZWdlciBsb2NhdGlvbjsKKyAgICBVSW50ZWdlciBsZW5ndGg7Cit9
IF9OU19QQUNLRUQ7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpSYW5nZTo6UmFuZ2UoVUludGVnZXIgbG9jLCBVSW50
ZWdlciBsZW4pCisgICAgOiBsb2NhdGlvbihsb2MpCisgICAgLCBsZW5ndGgobGVuKQoreworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6UmFuZ2UgTlM6OlJhbmdlOjpNYWtlKFVJbnRlZ2VyIGxvYywgVUludGVnZXIgbGVu
KQoreworICAgIHJldHVybiBSYW5nZShsb2MsIGxlbik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlJhbmdl
OjpFcXVhbChjb25zdCBSYW5nZSYgcmFuZ2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIChsb2NhdGlv
biA9PSByYW5nZS5sb2NhdGlvbikgJiYgKGxlbmd0aCA9PSByYW5nZS5sZW5ndGgpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBib29sIE5TOjpSYW5nZTo6TG9jYXRpb25JblJhbmdlKFVJbnRlZ2VyIGxvYykgY29uc3QKK3sK
KyAgICByZXR1cm4gKCEobG9jIDwgbG9jYXRpb24pKSAmJiAoKGxvYyAtIGxvY2F0aW9uKSA8IGxl
bmd0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6UmFuZ2U6Ok1heCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGxvY2F0aW9uICsgbGVuZ3RoOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjlkZWNiOTAx
ZjczNWUxNGU4N2YwZWJlOGZkOTE3YWE0ZTAyZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNTdHJpbmcuaHBwCkBAIC0wLDAg
KzEsMjQ1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vCisvLyBGb3VuZGF0aW9uL05TU3RyaW5nLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIw
MjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5T
T2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TUmFuZ2Uu
aHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitfTlNfRU5VTShOUzo6VUlu
dGVnZXIsIFN0cmluZ0VuY29kaW5nKSB7CisgICAgQVNDSUlTdHJpbmdFbmNvZGluZyA9IDEsCisg
ICAgTkVYVFNURVBTdHJpbmdFbmNvZGluZyA9IDIsCisgICAgSmFwYW5lc2VFVUNTdHJpbmdFbmNv
ZGluZyA9IDMsCisgICAgVVRGOFN0cmluZ0VuY29kaW5nID0gNCwKKyAgICBJU09MYXRpbjFTdHJp
bmdFbmNvZGluZyA9IDUsCisgICAgU3ltYm9sU3RyaW5nRW5jb2RpbmcgPSA2LAorICAgIE5vbkxv
c3N5QVNDSUlTdHJpbmdFbmNvZGluZyA9IDcsCisgICAgU2hpZnRKSVNTdHJpbmdFbmNvZGluZyA9
IDgsCisgICAgSVNPTGF0aW4yU3RyaW5nRW5jb2RpbmcgPSA5LAorICAgIFVuaWNvZGVTdHJpbmdF
bmNvZGluZyA9IDEwLAorICAgIFdpbmRvd3NDUDEyNTFTdHJpbmdFbmNvZGluZyA9IDExLAorICAg
IFdpbmRvd3NDUDEyNTJTdHJpbmdFbmNvZGluZyA9IDEyLAorICAgIFdpbmRvd3NDUDEyNTNTdHJp
bmdFbmNvZGluZyA9IDEzLAorICAgIFdpbmRvd3NDUDEyNTRTdHJpbmdFbmNvZGluZyA9IDE0LAor
ICAgIFdpbmRvd3NDUDEyNTBTdHJpbmdFbmNvZGluZyA9IDE1LAorICAgIElTTzIwMjJKUFN0cmlu
Z0VuY29kaW5nID0gMjEsCisgICAgTWFjT1NSb21hblN0cmluZ0VuY29kaW5nID0gMzAsCisKKyAg
ICBVVEYxNlN0cmluZ0VuY29kaW5nID0gVW5pY29kZVN0cmluZ0VuY29kaW5nLAorCisgICAgVVRG
MTZCaWdFbmRpYW5TdHJpbmdFbmNvZGluZyA9IDB4OTAwMDAxMDAsCisgICAgVVRGMTZMaXR0bGVF
bmRpYW5TdHJpbmdFbmNvZGluZyA9IDB4OTQwMDAxMDAsCisKKyAgICBVVEYzMlN0cmluZ0VuY29k
aW5nID0gMHg4YzAwMDEwMCwKKyAgICBVVEYzMkJpZ0VuZGlhblN0cmluZ0VuY29kaW5nID0gMHg5
ODAwMDEwMCwKKyAgICBVVEYzMkxpdHRsZUVuZGlhblN0cmluZ0VuY29kaW5nID0gMHg5YzAwMDEw
MAorfTsKKworX05TX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBTdHJpbmdDb21wYXJlT3B0aW9ucykg
eworICAgIENhc2VJbnNlbnNpdGl2ZVNlYXJjaCA9IDEsCisgICAgTGl0ZXJhbFNlYXJjaCA9IDIs
CisgICAgQmFja3dhcmRzU2VhcmNoID0gNCwKKyAgICBBbmNob3JlZFNlYXJjaCA9IDgsCisgICAg
TnVtZXJpY1NlYXJjaCA9IDY0LAorICAgIERpYWNyaXRpY0luc2Vuc2l0aXZlU2VhcmNoID0gMTI4
LAorICAgIFdpZHRoSW5zZW5zaXRpdmVTZWFyY2ggPSAyNTYsCisgICAgRm9yY2VkT3JkZXJpbmdT
ZWFyY2ggPSA1MTIsCisgICAgUmVndWxhckV4cHJlc3Npb25TZWFyY2ggPSAxMDI0Cit9OworCit1
c2luZyB1bmljaGFyID0gdW5zaWduZWQgc2hvcnQ7CisKK2NsYXNzIFN0cmluZyA6IHB1YmxpYyBD
b3B5aW5nPFN0cmluZz4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RyaW5nKiBzdHJpbmcoKTsK
KyAgICBzdGF0aWMgU3RyaW5nKiBzdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nKTsKKyAgICBz
dGF0aWMgU3RyaW5nKiBzdHJpbmcoY29uc3QgY2hhciogcFN0cmluZywgU3RyaW5nRW5jb2Rpbmcg
ZW5jb2RpbmcpOworCisgICAgc3RhdGljIFN0cmluZyogYWxsb2MoKTsKKyAgICBTdHJpbmcqICAg
ICAgICBpbml0KCk7CisgICAgU3RyaW5nKiAgICAgICAgaW5pdChjb25zdCBTdHJpbmcqIHBTdHJp
bmcpOworICAgIFN0cmluZyogICAgICAgIGluaXQoY29uc3QgY2hhciogcFN0cmluZywgU3RyaW5n
RW5jb2RpbmcgZW5jb2RpbmcpOworICAgIFN0cmluZyogICAgICAgIGluaXQodm9pZCogcEJ5dGVz
LCBVSW50ZWdlciBsZW4sIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nLCBib29sIGZyZWVCdWZmZXIp
OworCisgICAgdW5pY2hhciAgICAgICAgY2hhcmFjdGVyKFVJbnRlZ2VyIGluZGV4KSBjb25zdDsK
KyAgICBVSW50ZWdlciAgICAgICBsZW5ndGgoKSBjb25zdDsKKworICAgIGNvbnN0IGNoYXIqICAg
IGNTdHJpbmcoU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpIGNvbnN0OworICAgIGNvbnN0IGNoYXIq
ICAgIHV0ZjhTdHJpbmcoKSBjb25zdDsKKyAgICBVSW50ZWdlciAgICAgICBtYXhpbXVtTGVuZ3Ro
T2ZCeXRlcyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3Q7CisgICAgVUludGVnZXIgICAg
ICAgbGVuZ3RoT2ZCeXRlcyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICBpc0VxdWFsVG9TdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nKSBjb25z
dDsKKyAgICBSYW5nZSAgICAgICAgICByYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyogcFN0cmlu
ZywgU3RyaW5nQ29tcGFyZU9wdGlvbnMgb3B0aW9ucykgY29uc3Q7CisKKyAgICBjb25zdCBjaGFy
KiAgICBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKworICAgIFN0cmluZyogICAg
ICAgIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nKGNvbnN0IFN0cmluZyogcFN0cmluZykgY29uc3Q7
CisKK307CisKK3RlbXBsYXRlPCBzdGQ6OnNpemVfdCBfU3RyaW5nTGVuID4KK2NvbnN0ZXhwciBj
b25zdCBTdHJpbmcqIE1ha2VDb25zdGFudFN0cmluZyggY29uc3QgY2hhciAoICZzdHIgKVtfU3Ry
aW5nTGVuXSApCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8IGNvbnN0IFN0cmluZyog
PiggX19DRlN0cmluZ01ha2VDb25zdGFudFN0cmluZyggc3RyICkgKTsKK30KKworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6U3RyaW5nKiBOUzo6U3RyaW5nOjpzdHJpbmcoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPFN0cmluZyo+KF9OU19QUklWQVRFX0NMUyhOU1N0cmluZyksIF9OU19QUklWQVRF
X1NFTChzdHJpbmcpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlN0cmluZzo6c3RyaW5nKGNv
bnN0IFN0cmluZyogcFN0cmluZykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxT
dHJpbmcqPihfTlNfUFJJVkFURV9DTFMoTlNTdHJpbmcpLCBfTlNfUFJJVkFURV9TRUwoc3RyaW5n
V2l0aFN0cmluZ18pLCBwU3RyaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlN0cmluZzo6
c3RyaW5nKGNvbnN0IGNoYXIqIHBTdHJpbmcsIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KF9OU19QUklWQVRFX0NMUyhO
U1N0cmluZyksIF9OU19QUklWQVRFX1NFTChzdHJpbmdXaXRoQ1N0cmluZ19lbmNvZGluZ18pLCBw
U3RyaW5nLCBlbmNvZGluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjphbGxvYzxTdHJpbmc+KF9OU19QUklWQVRFX0NMUyhO
U1N0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0Ojppbml0PFN0cmluZz4oKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6
OlN0cmluZzo6aW5pdChjb25zdCBTdHJpbmcqIHBTdHJpbmcpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoU3Ry
aW5nXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KGNv
bnN0IGNoYXIqIHBTdHJpbmcsIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0
V2l0aENTdHJpbmdfZW5jb2RpbmdfKSwgcFN0cmluZywgZW5jb2RpbmcpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KHZvaWQqIHBCeXRlcywgVUludGVnZXIgbGVuLCBTdHJp
bmdFbmNvZGluZyBlbmNvZGluZywgYm9vbCBmcmVlQnVmZmVyKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aEJ5
dGVzTm9Db3B5X2xlbmd0aF9lbmNvZGluZ19mcmVlV2hlbkRvbmVfKSwgcEJ5dGVzLCBsZW4sIGVu
Y29kaW5nLCBmcmVlQnVmZmVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OnVuaWNoYXIgTlM6OlN0cmluZzo6Y2hh
cmFjdGVyKFVJbnRlZ2VyIGluZGV4KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHVuaWNoYXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChjaGFyYWN0ZXJBdEluZGV4Xyks
IGluZGV4KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpTdHJpbmc6Omxlbmd0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChsZW5ndGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgY29uc3QgY2hhciogTlM6OlN0cmluZzo6Y1N0
cmluZyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxjb25zdCBjaGFyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNTdHJpbmdV
c2luZ0VuY29kaW5nXyksIGVuY29kaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgY29uc3QgY2hhciogTlM6OlN0cmlu
Zzo6dXRmOFN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Y29uc3QgY2hhcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChVVEY4U3RyaW5nKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpVSW50ZWdlciBOUzo6U3RyaW5nOjptYXhpbXVtTGVuZ3RoT2ZCeXRlcyhTdHJpbmdFbmNv
ZGluZyBlbmNvZGluZykgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxV
SW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG1heGltdW1MZW5ndGhPZkJ5dGVzVXNpbmdF
bmNvZGluZ18pLCBlbmNvZGluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6U3RyaW5nOjps
ZW5ndGhPZkJ5dGVzKFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobGVu
Z3RoT2ZCeXRlc1VzaW5nRW5jb2RpbmdfKSwgZW5jb2RpbmcpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpT
dHJpbmc6OmlzRXF1YWxUb1N0cmluZyhjb25zdCBOUzo6U3RyaW5nKiBwU3RyaW5nKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChpc0VxdWFsVG9TdHJpbmdfKSwgcFN0cmluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpSYW5nZSBOUzo6
U3RyaW5nOjpyYW5nZU9mU3RyaW5nKGNvbnN0IE5TOjpTdHJpbmcqIHBTdHJpbmcsIE5TOjpTdHJp
bmdDb21wYXJlT3B0aW9ucyBvcHRpb25zKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPFJhbmdlPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocmFuZ2VPZlN0cmluZ19vcHRp
b25zXyksIHBTdHJpbmcsIG9wdGlvbnMpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBjb25zdCBjaGFyKiBOUzo6U3RyaW5nOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGNvbnN0IGNoYXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OnN0cmluZ0J5QXBw
ZW5kaW5nU3RyaW5nKGNvbnN0IFN0cmluZyogcFN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHN0
cmluZ0J5QXBwZW5kaW5nU3RyaW5nXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNUeXBlcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY4YWRh
MTJjZThmYmZiM2NhOTZiOGQ1ODU2MjI0NjE3MTllODdlNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwCkBAIC0w
LDAgKzEsNTEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIEZvdW5kYXRpb24vTlNUeXBlcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0y
MDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKworI2luY2x1ZGUg
PENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFj
ZSBOUworewordXNpbmcgVGltZUludGVydmFsID0gZG91YmxlOworCit1c2luZyBJbnRlZ2VyID0g
c3RkOjppbnRwdHJfdDsKK3VzaW5nIFVJbnRlZ2VyID0gc3RkOjp1aW50cHRyX3Q7CisKK2NvbnN0
IEludGVnZXIgIEludGVnZXJNYXggPSBJTlRQVFJfTUFYOworY29uc3QgSW50ZWdlciAgSW50ZWdl
ck1pbiA9IElOVFBUUl9NSU47Citjb25zdCBVSW50ZWdlciBVSW50ZWdlck1heCA9IFVJTlRQVFJf
TUFYOworCitzdHJ1Y3QgT3BlcmF0aW5nU3lzdGVtVmVyc2lvbgoreworICAgIEludGVnZXIgbWFq
b3JWZXJzaW9uOworICAgIEludGVnZXIgbWlub3JWZXJzaW9uOworICAgIEludGVnZXIgcGF0Y2hW
ZXJzaW9uOworfSBfTlNfUEFDS0VEOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9Gb3VuZGF0aW9uL05TVVJMLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TVVJMLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTBlN2EyMDc3MDczNGRmZGEyY2Rl
Nzc0ZGFhNGM0MzIyNGRkYmQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwCkBAIC0wLDAgKzEsOTAgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRp
b24vTlNVUkwuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1
ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK2Ns
YXNzIFVSTCA6IHB1YmxpYyBDb3B5aW5nPFVSTD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgVVJM
KiBmaWxlVVJMV2l0aFBhdGgoY29uc3QgY2xhc3MgU3RyaW5nKiBwUGF0aCk7CisKKyAgICBzdGF0
aWMgVVJMKiBhbGxvYygpOworICAgIFVSTCogICAgICAgIGluaXQoKTsKKyAgICBVUkwqICAgICAg
ICBpbml0KGNvbnN0IGNsYXNzIFN0cmluZyogcFN0cmluZyk7CisgICAgVVJMKiAgICAgICAgaW5p
dEZpbGVVUkxXaXRoUGF0aChjb25zdCBjbGFzcyBTdHJpbmcqIHBQYXRoKTsKKworICAgIGNvbnN0
IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigpIGNvbnN0OworfTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OlVSTCogTlM6OlVSTDo6ZmlsZVVSTFdpdGhQYXRoKGNvbnN0IFN0cmluZyogcFBhdGgpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4oX05TX1BSSVZBVEVfQ0xTKE5TVVJM
KSwgX05TX1BSSVZBVEVfU0VMKGZpbGVVUkxXaXRoUGF0aF8pLCBwUGF0aCk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpVUkwqIE5TOjpVUkw6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjphbGxvYzxVUkw+
KF9OU19QUklWQVRFX0NMUyhOU1VSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjppbml0
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojppbml0PFVSTD4oKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCog
TlM6OlVSTDo6aW5pdChjb25zdCBTdHJpbmcqIHBTdHJpbmcpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoU3RyaW5n
XyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjppbml0RmlsZVVSTFdpdGhQ
YXRoKGNvbnN0IFN0cmluZyogcFBhdGgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRGaWxlVVJMV2l0aFBhdGhfKSwgcFBh
dGgpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBjb25zdCBjaGFyKiBOUzo6VVJMOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNvbnN0IGNoYXIq
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0xJQ0VOU0UudHh0IGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL0xJQ0VOU0UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNzQzYzY3ZTlm
ZDM2NDljYzBlMWM4NmI5MTExZWUxZWEyNTkzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTElDRU5TRS50eHQKQEAgLTAsMCArMSwyMDIgQEAKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMi4wLCBKYW51YXJ5IDIwMDQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8KKworICAgVEVSTVMg
QU5EIENPTkRJVElPTlMgRk9SIFVTRSwgUkVQUk9EVUNUSU9OLCBBTkQgRElTVFJJQlVUSU9OCisK
KyAgIDEuIERlZmluaXRpb25zLgorCisgICAgICAiTGljZW5zZSIgc2hhbGwgbWVhbiB0aGUgdGVy
bXMgYW5kIGNvbmRpdGlvbnMgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLAorICAgICAgYW5kIGRpc3Ry
aWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1l
bnQuCisKKyAgICAgICJMaWNlbnNvciIgc2hhbGwgbWVhbiB0aGUgY29weXJpZ2h0IG93bmVyIG9y
IGVudGl0eSBhdXRob3JpemVkIGJ5CisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMg
Z3JhbnRpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgICJMZWdhbCBFbnRpdHkiIHNoYWxsIG1lYW4g
dGhlIHVuaW9uIG9mIHRoZSBhY3RpbmcgZW50aXR5IGFuZCBhbGwKKyAgICAgIG90aGVyIGVudGl0
aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24K
KyAgICAgIGNvbnRyb2wgd2l0aCB0aGF0IGVudGl0eS4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlz
IGRlZmluaXRpb24sCisgICAgICAiY29udHJvbCIgbWVhbnMgKGkpIHRoZSBwb3dlciwgZGlyZWN0
IG9yIGluZGlyZWN0LCB0byBjYXVzZSB0aGUKKyAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50
IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCisgICAgICBvdGhlcndpc2Us
IG9yIChpaSkgb3duZXJzaGlwIG9mIGZpZnR5IHBlcmNlbnQgKDUwJSkgb3IgbW9yZSBvZiB0aGUK
KyAgICAgIG91dHN0YW5kaW5nIHNoYXJlcywgb3IgKGlpaSkgYmVuZWZpY2lhbCBvd25lcnNoaXAg
b2Ygc3VjaCBlbnRpdHkuCisKKyAgICAgICJZb3UiIChvciAiWW91ciIpIHNoYWxsIG1lYW4gYW4g
aW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKKyAgICAgIGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMg
Z3JhbnRlZCBieSB0aGlzIExpY2Vuc2UuCisKKyAgICAgICJTb3VyY2UiIGZvcm0gc2hhbGwgbWVh
biB0aGUgcHJlZmVycmVkIGZvcm0gZm9yIG1ha2luZyBtb2RpZmljYXRpb25zLAorICAgICAgaW5j
bHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBzb2Z0d2FyZSBzb3VyY2UgY29kZSwgZG9jdW1lbnRh
dGlvbgorICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KKworICAgICAgIk9i
amVjdCIgZm9ybSBzaGFsbCBtZWFuIGFueSBmb3JtIHJlc3VsdGluZyBmcm9tIG1lY2hhbmljYWwK
KyAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGlu
Y2x1ZGluZyBidXQKKyAgICAgIG5vdCBsaW1pdGVkIHRvIGNvbXBpbGVkIG9iamVjdCBjb2RlLCBn
ZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiwKKyAgICAgIGFuZCBjb252ZXJzaW9ucyB0byBvdGhlciBt
ZWRpYSB0eXBlcy4KKworICAgICAgIldvcmsiIHNoYWxsIG1lYW4gdGhlIHdvcmsgb2YgYXV0aG9y
c2hpcCwgd2hldGhlciBpbiBTb3VyY2Ugb3IKKyAgICAgIE9iamVjdCBmb3JtLCBtYWRlIGF2YWls
YWJsZSB1bmRlciB0aGUgTGljZW5zZSwgYXMgaW5kaWNhdGVkIGJ5IGEKKyAgICAgIGNvcHlyaWdo
dCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yaworICAg
ICAgKGFuIGV4YW1wbGUgaXMgcHJvdmlkZWQgaW4gdGhlIEFwcGVuZGl4IGJlbG93KS4KKworICAg
ICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291
cmNlIG9yIE9iamVjdAorICAgICAgZm9ybSwgdGhhdCBpcyBiYXNlZCBvbiAob3IgZGVyaXZlZCBm
cm9tKSB0aGUgV29yayBhbmQgZm9yIHdoaWNoIHRoZQorICAgICAgZWRpdG9yaWFsIHJldmlzaW9u
cywgYW5ub3RhdGlvbnMsIGVsYWJvcmF0aW9ucywgb3Igb3RoZXIgbW9kaWZpY2F0aW9ucworICAg
ICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAu
IEZvciB0aGUgcHVycG9zZXMKKyAgICAgIG9mIHRoaXMgTGljZW5zZSwgRGVyaXZhdGl2ZSBXb3Jr
cyBzaGFsbCBub3QgaW5jbHVkZSB3b3JrcyB0aGF0IHJlbWFpbgorICAgICAgc2VwYXJhYmxlIGZy
b20sIG9yIG1lcmVseSBsaW5rIChvciBiaW5kIGJ5IG5hbWUpIHRvIHRoZSBpbnRlcmZhY2VzIG9m
LAorICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KKworICAgICAg
IkNvbnRyaWJ1dGlvbiIgc2hhbGwgbWVhbiBhbnkgd29yayBvZiBhdXRob3JzaGlwLCBpbmNsdWRp
bmcKKyAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZp
Y2F0aW9ucyBvciBhZGRpdGlvbnMKKyAgICAgIHRvIHRoYXQgV29yayBvciBEZXJpdmF0aXZlIFdv
cmtzIHRoZXJlb2YsIHRoYXQgaXMgaW50ZW50aW9uYWxseQorICAgICAgc3VibWl0dGVkIHRvIExp
Y2Vuc29yIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsgYnkgdGhlIGNvcHlyaWdodCBvd25lcgor
ICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBz
dWJtaXQgb24gYmVoYWxmIG9mCisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyLiBGb3IgdGhlIHB1
cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgInN1Ym1pdHRlZCIKKyAgICAgIG1lYW5zIGFueSBm
b3JtIG9mIGVsZWN0cm9uaWMsIHZlcmJhbCwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9uIHNlbnQK
KyAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcg
YnV0IG5vdCBsaW1pdGVkIHRvCisgICAgICBjb21tdW5pY2F0aW9uIG9uIGVsZWN0cm9uaWMgbWFp
bGluZyBsaXN0cywgc291cmNlIGNvZGUgY29udHJvbCBzeXN0ZW1zLAorICAgICAgYW5kIGlzc3Vl
IHRyYWNraW5nIHN5c3RlbXMgdGhhdCBhcmUgbWFuYWdlZCBieSwgb3Igb24gYmVoYWxmIG9mLCB0
aGUKKyAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXBy
b3ZpbmcgdGhlIFdvcmssIGJ1dAorICAgICAgZXhjbHVkaW5nIGNvbW11bmljYXRpb24gdGhhdCBp
cyBjb25zcGljdW91c2x5IG1hcmtlZCBvciBvdGhlcndpc2UKKyAgICAgIGRlc2lnbmF0ZWQgaW4g
d3JpdGluZyBieSB0aGUgY29weXJpZ2h0IG93bmVyIGFzICJOb3QgYSBDb250cmlidXRpb24uIgor
CisgICAgICAiQ29udHJpYnV0b3IiIHNoYWxsIG1lYW4gTGljZW5zb3IgYW5kIGFueSBpbmRpdmlk
dWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgb24gYmVoYWxmIG9mIHdob20gYSBDb250cmlidXRp
b24gaGFzIGJlZW4gcmVjZWl2ZWQgYnkgTGljZW5zb3IgYW5kCisgICAgICBzdWJzZXF1ZW50bHkg
aW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KKworICAgMi4gR3JhbnQgb2YgQ29weXJpZ2h0
IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0
aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJw
ZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0
eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgY29weXJpZ2h0IGxpY2Vuc2UgdG8gcmVwcm9kdWNl
LCBwcmVwYXJlIERlcml2YXRpdmUgV29ya3Mgb2YsCisgICAgICBwdWJsaWNseSBkaXNwbGF5LCBw
dWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKKyAgICAgIFdv
cmsgYW5kIHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0uCisK
KyAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQg
Y29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVi
eSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVz
aXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAgIChleGNlcHQg
YXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBt
YWRlLAorICAgICAgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCBvdGhlcndp
c2UgdHJhbnNmZXIgdGhlIFdvcmssCisgICAgICB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBv
bmx5IHRvIHRob3NlIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZQorICAgICAgYnkgc3VjaCBDb250
cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKKyAgICAgIENv
bnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciBDb250cmlidXRp
b24ocykKKyAgICAgIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBDb250cmlidXRpb24ocykg
d2FzIHN1Ym1pdHRlZC4gSWYgWW91CisgICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24g
YWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQorICAgICAgY3Jvc3MtY2xhaW0gb3IgY291
bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgV29yaworICAgICAgb3Ig
YSBDb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyBk
aXJlY3QKKyAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFu
eSBwYXRlbnQgbGljZW5zZXMKKyAgICAgIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5z
ZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZQorICAgICAgYXMgb2YgdGhlIGRhdGUgc3Vj
aCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgorCisgICA0LiBSZWRpc3RyaWJ1dGlvbi4gWW91IG1heSBy
ZXByb2R1Y2UgYW5kIGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZQorICAgICAgV29yayBvciBEZXJp
dmF0aXZlIFdvcmtzIHRoZXJlb2YgaW4gYW55IG1lZGl1bSwgd2l0aCBvciB3aXRob3V0CisgICAg
ICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0
aGF0IFlvdQorICAgICAgbWVldCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICAgIChh
KSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCisgICAg
ICAgICAgRGVyaXZhdGl2ZSBXb3JrcyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlOyBhbmQKKworICAg
ICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5l
bnQgbm90aWNlcworICAgICAgICAgIHN0YXRpbmcgdGhhdCBZb3UgY2hhbmdlZCB0aGUgZmlsZXM7
IGFuZAorCisgICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2Yg
YW55IERlcml2YXRpdmUgV29ya3MKKyAgICAgICAgICB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbGwg
Y29weXJpZ2h0LCBwYXRlbnQsIHRyYWRlbWFyaywgYW5kCisgICAgICAgICAgYXR0cmlidXRpb24g
bm90aWNlcyBmcm9tIHRoZSBTb3VyY2UgZm9ybSBvZiB0aGUgV29yaywKKyAgICAgICAgICBleGNs
dWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCisg
ICAgICAgICAgdGhlIERlcml2YXRpdmUgV29ya3M7IGFuZAorCisgICAgICAoZCkgSWYgdGhlIFdv
cmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKKyAgICAgICAg
ICBkaXN0cmlidXRpb24sIHRoZW4gYW55IERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJp
YnV0ZSBtdXN0CisgICAgICAgICAgaW5jbHVkZSBhIHJlYWRhYmxlIGNvcHkgb2YgdGhlIGF0dHJp
YnV0aW9uIG5vdGljZXMgY29udGFpbmVkCisgICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZp
bGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CisgICAgICAgICAgcGVydGFp
biB0byBhbnkgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaW4gYXQgbGVhc3Qgb25lCisg
ICAgICAgICAgb2YgdGhlIGZvbGxvd2luZyBwbGFjZXM6IHdpdGhpbiBhIE5PVElDRSB0ZXh0IGZp
bGUgZGlzdHJpYnV0ZWQKKyAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtz
OyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCisgICAgICAgICAgZG9jdW1lbnRhdGlvbiwgaWYg
cHJvdmlkZWQgYWxvbmcgd2l0aCB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgb3IsCisgICAgICAgICAg
d2l0aGluIGEgZGlzcGxheSBnZW5lcmF0ZWQgYnkgdGhlIERlcml2YXRpdmUgV29ya3MsIGlmIGFu
ZAorICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBh
cHBlYXIuIFRoZSBjb250ZW50cworICAgICAgICAgIG9mIHRoZSBOT1RJQ0UgZmlsZSBhcmUgZm9y
IGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSBhbmQKKyAgICAgICAgICBkbyBub3QgbW9kaWZ5
IHRoZSBMaWNlbnNlLiBZb3UgbWF5IGFkZCBZb3VyIG93biBhdHRyaWJ1dGlvbgorICAgICAgICAg
IG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxv
bmdzaWRlCisgICAgICAgICAgb3IgYXMgYW4gYWRkZW5kdW0gdG8gdGhlIE5PVElDRSB0ZXh0IGZy
b20gdGhlIFdvcmssIHByb3ZpZGVkCisgICAgICAgICAgdGhhdCBzdWNoIGFkZGl0aW9uYWwgYXR0
cmlidXRpb24gbm90aWNlcyBjYW5ub3QgYmUgY29uc3RydWVkCisgICAgICAgICAgYXMgbW9kaWZ5
aW5nIHRoZSBMaWNlbnNlLgorCisgICAgICBZb3UgbWF5IGFkZCBZb3VyIG93biBjb3B5cmlnaHQg
c3RhdGVtZW50IHRvIFlvdXIgbW9kaWZpY2F0aW9ucyBhbmQKKyAgICAgIG1heSBwcm92aWRlIGFk
ZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKKyAgICAg
IGZvciB1c2UsIHJlcHJvZHVjdGlvbiwgb3IgZGlzdHJpYnV0aW9uIG9mIFlvdXIgbW9kaWZpY2F0
aW9ucywgb3IKKyAgICAgIGZvciBhbnkgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGFzIGEgd2hvbGUs
IHByb3ZpZGVkIFlvdXIgdXNlLAorICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9u
IG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCisgICAgICB0aGUgY29uZGl0aW9u
cyBzdGF0ZWQgaW4gdGhpcyBMaWNlbnNlLgorCisgICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1
dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCisgICAgICBhbnkg
Q29udHJpYnV0aW9uIGludGVudGlvbmFsbHkgc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW4gdGhl
IFdvcmsKKyAgICAgIGJ5IFlvdSB0byB0aGUgTGljZW5zb3Igc2hhbGwgYmUgdW5kZXIgdGhlIHRl
cm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFk
ZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KKyAgICAgIE5vdHdpdGhzdGFuZGluZyB0aGUg
YWJvdmUsIG5vdGhpbmcgaGVyZWluIHNoYWxsIHN1cGVyc2VkZSBvciBtb2RpZnkKKyAgICAgIHRo
ZSB0ZXJtcyBvZiBhbnkgc2VwYXJhdGUgbGljZW5zZSBhZ3JlZW1lbnQgeW91IG1heSBoYXZlIGV4
ZWN1dGVkCisgICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMu
CisKKyAgIDYuIFRyYWRlbWFya3MuIFRoaXMgTGljZW5zZSBkb2VzIG5vdCBncmFudCBwZXJtaXNz
aW9uIHRvIHVzZSB0aGUgdHJhZGUKKyAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1h
cmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKKyAgICAgIGV4Y2VwdCBhcyBy
ZXF1aXJlZCBmb3IgcmVhc29uYWJsZSBhbmQgY3VzdG9tYXJ5IHVzZSBpbiBkZXNjcmliaW5nIHRo
ZQorICAgICAgb3JpZ2luIG9mIHRoZSBXb3JrIGFuZCByZXByb2R1Y2luZyB0aGUgY29udGVudCBv
ZiB0aGUgTk9USUNFIGZpbGUuCisKKyAgIDcuIERpc2NsYWltZXIgb2YgV2FycmFudHkuIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvcgorICAgICAgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIExpY2Vuc29yIHByb3ZpZGVzIHRoZSBXb3JrIChhbmQgZWFjaAorICAgICAgQ29udHJpYnV0
b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAg
ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IKKyAgICAgIGltcGxpZWQsIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCBh
bnkgd2FycmFudGllcyBvciBjb25kaXRpb25zCisgICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdF
TUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCisgICAgICBQQVJUSUNVTEFS
IFBVUlBPU0UuIFlvdSBhcmUgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUK
KyAgICAgIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBvciByZWRpc3RyaWJ1dGluZyB0aGUgV29y
ayBhbmQgYXNzdW1lIGFueQorICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNp
c2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisgICA4LiBMaW1pdGF0aW9u
IG9mIExpYWJpbGl0eS4gSW4gbm8gZXZlbnQgYW5kIHVuZGVyIG5vIGxlZ2FsIHRoZW9yeSwKKyAg
ICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Ig
b3RoZXJ3aXNlLAorICAgICAgdW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IChzdWNo
IGFzIGRlbGliZXJhdGUgYW5kIGdyb3NzbHkKKyAgICAgIG5lZ2xpZ2VudCBhY3RzKSBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc2hhbGwgYW55IENvbnRyaWJ1dG9yIGJlCisgICAgICBsaWFibGUg
dG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNp
YWwsCisgICAgICBpbmNpZGVudGFsLCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb2YgYW55IGNo
YXJhY3RlciBhcmlzaW5nIGFzIGEKKyAgICAgIHJlc3VsdCBvZiB0aGlzIExpY2Vuc2Ugb3Igb3V0
IG9mIHRoZSB1c2Ugb3IgaW5hYmlsaXR5IHRvIHVzZSB0aGUKKyAgICAgIFdvcmsgKGluY2x1ZGlu
ZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKKyAgICAg
IHdvcmsgc3RvcHBhZ2UsIGNvbXB1dGVyIGZhaWx1cmUgb3IgbWFsZnVuY3Rpb24sIG9yIGFueSBh
bmQgYWxsCisgICAgICBvdGhlciBjb21tZXJjaWFsIGRhbWFnZXMgb3IgbG9zc2VzKSwgZXZlbiBp
ZiBzdWNoIENvbnRyaWJ1dG9yCisgICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJp
bGl0eSBvZiBzdWNoIGRhbWFnZXMuCisKKyAgIDkuIEFjY2VwdGluZyBXYXJyYW50eSBvciBBZGRp
dGlvbmFsIExpYWJpbGl0eS4gV2hpbGUgcmVkaXN0cmlidXRpbmcKKyAgICAgIHRoZSBXb3JrIG9y
IERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCisgICAg
ICBhbmQgY2hhcmdlIGEgZmVlIGZvciwgYWNjZXB0YW5jZSBvZiBzdXBwb3J0LCB3YXJyYW50eSwg
aW5kZW1uaXR5LAorICAgICAgb3Igb3RoZXIgbGlhYmlsaXR5IG9ibGlnYXRpb25zIGFuZC9vciBy
aWdodHMgY29uc2lzdGVudCB3aXRoIHRoaXMKKyAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFj
Y2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CisgICAgICBvbiBZb3Vy
IG93biBiZWhhbGYgYW5kIG9uIFlvdXIgc29sZSByZXNwb25zaWJpbGl0eSwgbm90IG9uIGJlaGFs
ZgorICAgICAgb2YgYW55IG90aGVyIENvbnRyaWJ1dG9yLCBhbmQgb25seSBpZiBZb3UgYWdyZWUg
dG8gaW5kZW1uaWZ5LAorICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhh
cm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CisgICAgICBpbmN1cnJlZCBieSwgb3IgY2xhaW1zIGFz
c2VydGVkIGFnYWluc3QsIHN1Y2ggQ29udHJpYnV0b3IgYnkgcmVhc29uCisgICAgICBvZiB5b3Vy
IGFjY2VwdGluZyBhbnkgc3VjaCB3YXJyYW50eSBvciBhZGRpdGlvbmFsIGxpYWJpbGl0eS4KKwor
ICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCisKKyAgIEFQUEVORElYOiBIb3cgdG8gYXBw
bHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KKworICAgICAgVG8gYXBwbHkgdGhl
IEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yaywgYXR0YWNoIHRoZSBmb2xsb3dpbmcKKyAgICAg
IGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRz
ICJbXSIKKyAgICAgIHJlcGxhY2VkIHdpdGggeW91ciBvd24gaWRlbnRpZnlpbmcgaW5mb3JtYXRp
b24uIChEb24ndCBpbmNsdWRlCisgICAgICB0aGUgYnJhY2tldHMhKSAgVGhlIHRleHQgc2hvdWxk
IGJlIGVuY2xvc2VkIGluIHRoZSBhcHByb3ByaWF0ZQorICAgICAgY29tbWVudCBzeW50YXggZm9y
IHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCisgICAgICBmaWxlIG9y
IGNsYXNzIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHB1cnBvc2UgYmUgaW5jbHVkZWQgb24gdGhl
CisgICAgICBzYW1lICJwcmludGVkIHBhZ2UiIGFzIHRoZSBjb3B5cmlnaHQgbm90aWNlIGZvciBl
YXNpZXIKKyAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4K
KworICAgQ29weXJpZ2h0IMKpIDIwMjEgQXBwbGUgSW5jLgorCisgICBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJl
LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZDQ1NmM4NzEyMjdkYjljNDIwYjE3YWE3MTU3ZjhmODUxZWRlNmQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAKQEAgLTAsMCArMSw5MzIgQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEFj
Y2VsZXJhdGlvblN0cnVjdHVyZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVk
ZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFjY2VsZXJhdGlv
blN0cnVjdHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMu
aHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvci5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfT1BUSU9OUyhO
Uzo6VUludGVnZXIsIEFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlKSB7CisgICAgQWNjZWxlcmF0
aW9uU3RydWN0dXJlVXNhZ2VOb25lID0gMCwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2Fn
ZVJlZml0ID0gMSwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZVByZWZlckZhc3RCdWls
ZCA9IDIsCisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2VFeHRlbmRlZExpbWl0cyA9IDQs
Cit9OworCitfTVRMX09QVElPTlModWludDMyX3QsIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3Rh
bmNlT3B0aW9ucykgeworICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlT3B0aW9uTm9u
ZSA9IDAsCisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25EaXNhYmxlVHJp
YW5nbGVDdWxsaW5nID0gMSwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlv
blRyaWFuZ2xlRnJvbnRGYWNpbmdXaW5kaW5nQ291bnRlckNsb2Nrd2lzZSA9IDIsCisgICAgQWNj
ZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25PcGFxdWUgPSA0LAorICAgIEFjY2VsZXJh
dGlvblN0cnVjdHVyZUluc3RhbmNlT3B0aW9uTm9uT3BhcXVlID0gOCwKK307CisKK2NsYXNzIEFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QWNjZWxl
cmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlICAgICAgICAgICAgICAgdXNhZ2UoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VXNh
Z2UoTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZSB1c2FnZSk7Cit9OworCitjbGFzcyBB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlp
bmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2Ny
aXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldChOUzo6VUludGVn
ZXIgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCk7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFxdWUoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRPcGFxdWUoYm9vbCBvcGFxdWUpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25G
dW5jdGlvbkludm9jYXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlv
bkZ1bmN0aW9uSW52b2NhdGlvbihib29sIGFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rp
b25JbnZvY2F0aW9uKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0
cmluZyogbGFiZWwpOworfTsKKworX01UTF9FTlVNKHVpbnQzMl90LCBNb3Rpb25Cb3JkZXJNb2Rl
KSB7CisgICAgTW90aW9uQm9yZGVyTW9kZUNsYW1wID0gMCwKKyAgICBNb3Rpb25Cb3JkZXJNb2Rl
VmFuaXNoID0gMSwKK307CisKK2NsYXNzIFByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0
dXJlRGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVE
ZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpBcnJheSogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW9tZXRyeURlc2NyaXB0b3Jz
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEdlb21ldHJ5RGVzY3JpcHRvcnMoY29uc3QgTlM6OkFycmF5KiBnZW9t
ZXRyeURlc2NyaXB0b3JzKTsKKworICAgIE1UTDo6TW90aW9uQm9yZGVyTW9kZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25TdGFydEJvcmRlck1vZGUoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TW90aW9uU3RhcnRCb3JkZXJNb2RlKE1UTDo6TW90aW9uQm9yZGVyTW9kZSBtb3Rpb25TdGFy
dEJvcmRlck1vZGUpOworCisgICAgTVRMOjpNb3Rpb25Cb3JkZXJNb2RlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vdGlvbkVuZEJvcmRlck1vZGUoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW90
aW9uRW5kQm9yZGVyTW9kZShNVEw6Ok1vdGlvbkJvcmRlck1vZGUgbW90aW9uRW5kQm9yZGVyTW9k
ZSk7CisKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW90aW9uU3RhcnRUaW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblN0YXJ0VGltZShm
bG9hdCBtb3Rpb25TdGFydFRpbWUpOworCisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbkVuZFRpbWUoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TW90aW9uRW5kVGltZShmbG9hdCBtb3Rpb25FbmRUaW1lKTsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25LZXlmcmFtZUNv
dW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldE1vdGlvbktleWZyYW1lQ291bnQoTlM6OlVJbnRlZ2VyIG1vdGlv
bktleWZyYW1lQ291bnQpOworCisgICAgc3RhdGljIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvciogIGRlc2NyaXB0b3IoKTsKK307CisKK2NsYXNzIEFjY2VsZXJh
dGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPEFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yLCBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2Ny
aXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmds
ZUdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIEJ1ZmZlciog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4QnVm
ZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVy
KiB2ZXJ0ZXhCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhCdWZmZXJPZmZzZXQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFZlcnRleEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgdmVydGV4QnVmZmVy
T2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmVydGV4U3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRW
ZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlkZSk7CisKKyAgICBjbGFzcyBCdWZm
ZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmRleEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZm
ZXIqIGluZGV4QnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhCdWZmZXJPZmZzZXQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEluZGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9m
ZnNldCk7CisKKyAgICBNVEw6OkluZGV4VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4VHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhU
eXBlKE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWFuZ2xlQ291bnQo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRlZ2VyIHRyaWFuZ2xl
Q291bnQpOworCisgICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVH
ZW9tZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitjbGFzcyBBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29w
eWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciwg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJl
Qm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFz
cyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvdW5kaW5nQm94QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCb3VuZGluZ0Jv
eEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJvdW5kaW5nQm94QnVmZmVyKTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm91bmRpbmdCb3hCdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJv
dW5kaW5nQm94QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveEJ1ZmZlck9mZnNl
dCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94U3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRCb3VuZGluZ0JveFN0cmlkZShOUzo6VUludGVnZXIgYm91bmRpbmdCb3hTdHJpZGUpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib3VuZGluZ0JveENvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRC
b3VuZGluZ0JveENvdW50KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveENvdW50KTsKKworICAgIHN0
YXRpYyBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlw
dG9yKiAgZGVzY3JpcHRvcigpOworfTsKKworY2xhc3MgTW90aW9uS2V5ZnJhbWVEYXRhIDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxNb3Rpb25LZXlmcmFtZURhdGE+Cit7CitwdWJsaWM6CisgICAg
c3RhdGljIGNsYXNzIE1vdGlvbktleWZyYW1lRGF0YSogYWxsb2MoKTsKKworICAgIGNsYXNzIE1v
dGlvbktleWZyYW1lRGF0YSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAg
ICAgICAgICAgICAgICAgIGJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlcik7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBvZmZzZXQoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPZmZzZXQoTlM6OlVJbnRlZ2VyIG9m
ZnNldCk7CisKKyAgICBzdGF0aWMgTVRMOjpNb3Rpb25LZXlmcmFtZURhdGEqICBkYXRhKCk7Cit9
OworCitjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVz
Y3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25U
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9t
ZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiBhbGxvYygpOworCisg
ICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2Ny
aXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEJ1ZmZlcnMoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiB2
ZXJ0ZXhCdWZmZXJzKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4U3RyaWRlKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRWZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlkZSk7
CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRJbmRleEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyKTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhCdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElu
ZGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCk7CisKKyAgICBN
VEw6OkluZGV4VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4VHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhUeXBl
KE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWFuZ2xlQ291
bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRlZ2Vy
IHRyaWFuZ2xlQ291bnQpOworCisgICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
TW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitj
bGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3Jp
cHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3Vu
ZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9t
ZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBhbGxvYygpOwor
CisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRy
eURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5n
Qm94QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hCdWZm
ZXJzKGNvbnN0IE5TOjpBcnJheSogYm91bmRpbmdCb3hCdWZmZXJzKTsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm91bmRpbmdCb3hTdHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJv
dW5kaW5nQm94U3RyaWRlKE5TOjpVSW50ZWdlciBib3VuZGluZ0JveFN0cmlkZSk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvdW5kaW5nQm94Q291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEJvdW5kaW5nQm94Q291bnQoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94Q291bnQpOworCisg
ICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9t
ZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitzdHJ1Y3QgQWNjZWxlcmF0aW9u
U3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yCit7CisgICAgTVRMOjpQYWNrZWRGbG9hdDR4MyAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXg7CisgICAgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlvbnMgb3B0aW9uczsKKyAgICB1aW50MzJfdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrOworICAgIHVpbnQzMl90ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZz
ZXQ7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZWxl
cmF0aW9uU3RydWN0dXJlSW5kZXg7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgQWNjZWxlcmF0
aW9uU3RydWN0dXJlVXNlcklESW5zdGFuY2VEZXNjcmlwdG9yCit7CisgICAgTVRMOjpQYWNrZWRG
bG9hdDR4MyAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXg7CisgICAg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlvbnMgb3B0aW9uczsKKyAgICB1
aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrOworICAgIHVpbnQz
Ml90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVPZmZzZXQ7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWNjZWxlcmF0aW9uU3RydWN0dXJlSW5kZXg7CisgICAgdWludDMyX3QgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXNlcklEOworfSBfTVRMX1BBQ0tFRDsKKworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlw
ZSkgeworICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGVEZWZh
dWx0ID0gMCwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBl
VXNlcklEID0gMSwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JU
eXBlTW90aW9uID0gMiwKK307CisKK3N0cnVjdCBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25J
bnN0YW5jZURlc2NyaXB0b3IKK3sKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3Rh
bmNlT3B0aW9ucyBvcHRpb25zOworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hc2s7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldDsKKyAgICB1aW50MzJfdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbmRleDsK
KyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySUQ7Cisg
ICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW90aW9uVHJhbnNm
b3Jtc1N0YXJ0SW5kZXg7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbW90aW9uVHJhbnNmb3Jtc0NvdW50OworICAgIE1UTDo6TW90aW9uQm9yZGVyTW9kZSAg
ICAgICAgICAgICAgICAgICAgIG1vdGlvblN0YXJ0Qm9yZGVyTW9kZTsKKyAgICBNVEw6Ok1vdGlv
bkJvcmRlck1vZGUgICAgICAgICAgICAgICAgICAgICBtb3Rpb25FbmRCb3JkZXJNb2RlOworICAg
IGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvblN0YXJ0VGlt
ZTsKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25F
bmRUaW1lOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEluc3RhbmNlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9y
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbnN0YW5jZUFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBCdWZmZXIq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZURlc2NyaXB0
b3JCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIoY29uc3QgY2xh
c3MgQnVmZmVyKiBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VEZXNjcmlw
dG9yQnVmZmVyT2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zm
c2V0KE5TOjpVSW50ZWdlciBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQpOworCisgICAg
TlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5z
dGFuY2VEZXNjcmlwdG9yU3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VEZXNjcmlwdG9yU3Ry
aWRlKE5TOjpVSW50ZWdlciBpbnN0YW5jZURlc2NyaXB0b3JTdHJpZGUpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VD
b3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEluc3RhbmNlQ291bnQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291
bnQpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcygpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElu
c3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMoY29uc3QgTlM6OkFycmF5KiBpbnN0YW5jZWRB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVzKTsKKworICAgIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
SW5zdGFuY2VEZXNjcmlwdG9yVHlwZSAgICAgIGluc3RhbmNlRGVzY3JpcHRvclR5cGUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRJbnN0YW5jZURlc2NyaXB0b3JUeXBlKE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
SW5zdGFuY2VEZXNjcmlwdG9yVHlwZSBpbnN0YW5jZURlc2NyaXB0b3JUeXBlKTsKKworICAgIGNs
YXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlv
blRyYW5zZm9ybUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlcihjb25z
dCBjbGFzcyBCdWZmZXIqIG1vdGlvblRyYW5zZm9ybUJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25UcmFuc2Zv
cm1CdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQo
TlM6OlVJbnRlZ2VyIG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25UcmFu
c2Zvcm1Db3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblRyYW5zZm9ybUNvdW50KE5TOjpVSW50ZWdl
ciBtb3Rpb25UcmFuc2Zvcm1Db3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpJbnN0YW5jZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitjbGFzcyBB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFjY2VsZXJhdGlv
blN0cnVjdHVyZSwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgTlM6OlVJbnRlZ2VyIHNpemUo
KSBjb25zdDsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NM
UyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4o
KTsKK30KKworLy8gcHJvcGVydHk6IHVzYWdlCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZVVzYWdlIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6dXNh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlVXNhZ2U+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNhZ2UpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6
OnNldFVzYWdlKE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2UgdXNhZ2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFVzYWdl
XyksIHVzYWdlKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0OjphbGxvYzxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3Jp
cHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yPigpOwor
fQorCisvLyBwcm9wZXJ0eTogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldAorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNj
cmlwdG9yOjppbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0KE5TOjpVSW50ZWdlciBpbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0Xyks
IGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogb3Bh
cXVlCitfTVRMX0lOTElORSBib29sIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlE
ZXNjcmlwdG9yOjpvcGFxdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3BhcXVlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OnNl
dE9wYXF1ZShib29sIG9wYXF1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3BhcXVlXyksIG9wYXF1ZSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbgorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6
YWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24oKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24pKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6c2V0QWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24oYm9v
bCBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbikKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWxsb3dE
dXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb25fKSwgYWxsb3dEdXBsaWNhdGVJ
bnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24pOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwK
K19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0
cnlEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVs
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UHJpbWl0
aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpQcmltaXRpdmVBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4o
X01UTF9QUklWQVRFX0NMUyhNVExQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlw
dG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpQcmltaXRpdmVB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4oKTsKK30K
KworLy8gcHJvcGVydHk6IGdlb21ldHJ5RGVzY3JpcHRvcnMKK19NVExfSU5MSU5FIE5TOjpBcnJh
eSogTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpnZW9tZXRy
eURlc2NyaXB0b3JzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdlb21ldHJ5RGVzY3JpcHRvcnMpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3I6OnNldEdlb21ldHJ5RGVzY3JpcHRvcnMoY29uc3QgTlM6OkFycmF5KiBnZW9t
ZXRyeURlc2NyaXB0b3JzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRHZW9tZXRyeURlc2NyaXB0b3JzXyksIGdlb21ldHJ5RGVzY3Jp
cHRvcnMpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uU3RhcnRCb3JkZXJNb2RlCitfTVRMX0lO
TElORSBNVEw6Ok1vdGlvbkJvcmRlck1vZGUgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25TdGFydEJvcmRlck1vZGUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TW90aW9uQm9yZGVyTW9kZT4odGhpcywgX01U
TF9QUklWQVRFX1NFTChtb3Rpb25TdGFydEJvcmRlck1vZGUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1v
dGlvblN0YXJ0Qm9yZGVyTW9kZShNVEw6Ok1vdGlvbkJvcmRlck1vZGUgbW90aW9uU3RhcnRCb3Jk
ZXJNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRNb3Rpb25TdGFydEJvcmRlck1vZGVfKSwgbW90aW9uU3RhcnRCb3JkZXJNb2Rl
KTsKK30KKworLy8gcHJvcGVydHk6IG1vdGlvbkVuZEJvcmRlck1vZGUKK19NVExfSU5MSU5FIE1U
TDo6TW90aW9uQm9yZGVyTW9kZSBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3I6Om1vdGlvbkVuZEJvcmRlck1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6TW90aW9uQm9yZGVyTW9kZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtb3Rpb25FbmRCb3JkZXJNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQ
cmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25FbmRCb3Jk
ZXJNb2RlKE1UTDo6TW90aW9uQm9yZGVyTW9kZSBtb3Rpb25FbmRCb3JkZXJNb2RlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNb3Rp
b25FbmRCb3JkZXJNb2RlXyksIG1vdGlvbkVuZEJvcmRlck1vZGUpOworfQorCisvLyBwcm9wZXJ0
eTogbW90aW9uU3RhcnRUaW1lCitfTVRMX0lOTElORSBmbG9hdCBNVEw6OlByaW1pdGl2ZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvblN0YXJ0VGltZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobW90aW9uU3RhcnRUaW1lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQcmltaXRp
dmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25TdGFydFRpbWUoZmxv
YXQgbW90aW9uU3RhcnRUaW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRNb3Rpb25TdGFydFRpbWVfKSwgbW90aW9uU3RhcnRUaW1l
KTsKK30KKworLy8gcHJvcGVydHk6IG1vdGlvbkVuZFRpbWUKK19NVExfSU5MSU5FIGZsb2F0IE1U
TDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uRW5kVGlt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobW90aW9uRW5kVGltZSkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9u
RW5kVGltZShmbG9hdCBtb3Rpb25FbmRUaW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNb3Rpb25FbmRUaW1lXyksIG1vdGlvbkVu
ZFRpbWUpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uS2V5ZnJhbWVDb3VudAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3Jp
cHRvcjo6bW90aW9uS2V5ZnJhbWVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvbktl
eWZyYW1lQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1vdGlvbktleWZyYW1lQ291bnQoTlM6OlVJ
bnRlZ2VyIG1vdGlvbktleWZyYW1lQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvbktleWZyYW1lQ291bnRfKSwgbW90
aW9uS2V5ZnJhbWVDb3VudCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19N
VExfSU5MSU5FIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciog
TVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpkZXNjcmlwdG9y
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlByaW1pdGl2ZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFByaW1pdGl2
ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGRlc2Ny
aXB0b3IpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVU
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9t
ZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRy
eURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiB2ZXJ0ZXhCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0ZXhC
dWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVm
ZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZmZXIpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjpzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIHZlcnRleEJ1ZmZlcikK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0VmVydGV4QnVmZmVyXyksIHZlcnRleEJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0
ZXhCdWZmZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0ZXhCdWZmZXJPZmZzZXQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjpzZXRWZXJ0ZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIHZlcnRleEJ1ZmZlck9m
ZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VmVydGV4QnVmZmVyT2Zmc2V0XyksIHZlcnRleEJ1ZmZlck9mZnNldCk7Cit9CisK
Ky8vIHByb3BlcnR5OiB2ZXJ0ZXhTdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0ZXhT
dHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhTdHJpZGUpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjpzZXRWZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlkZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVy
dGV4U3RyaWRlXyksIHZlcnRleFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleEJ1ZmZl
cgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluZGV4QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoaW5kZXhCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJbmRleEJ1ZmZlcihjb25z
dCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGV4QnVmZmVyXyksIGluZGV4QnVmZmVy
KTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4QnVmZmVyT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6aW5kZXhCdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleEJ1ZmZl
ck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldEluZGV4QnVmZmVyT2Zmc2V0KE5TOjpV
SW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhCdWZmZXJPZmZzZXRfKSwgaW5kZXhC
dWZmZXJPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhUeXBlCitfTVRMX0lOTElORSBN
VEw6OkluZGV4VHlwZSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlE
ZXNjcmlwdG9yOjppbmRleFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6SW5kZXhUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4VHlwZSkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5n
bGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldEluZGV4VHlwZShNVEw6OkluZGV4VHlwZSBpbmRleFR5
cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEluZGV4VHlwZV8pLCBpbmRleFR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogdHJpYW5n
bGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnRyaWFuZ2xlQ291bnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh0cmlhbmdsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VHJpYW5n
bGVDb3VudChOUzo6VUludGVnZXIgdHJpYW5nbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHJpYW5nbGVDb3VudF8pLCB0
cmlhbmdsZUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgorX01UTF9J
TkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
ciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6
ZGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcio+KF9NVExfUFJJVkFU
RV9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3Ip
LCBfTVRMX1BSSVZBVEVfU0VMKGRlc2NyaXB0b3IpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hH
ZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hH
ZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRv
cj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdl
b21ldHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiBib3VuZGluZ0JveEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94
QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1
ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hCdWZmZXIpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciog
Ym91bmRpbmdCb3hCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyXyksIGJvdW5kaW5nQm94QnVm
ZmVyKTsKK30KKworLy8gcHJvcGVydHk6IGJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0CitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdl
b21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hCdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChib3VuZGluZ0JveEJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6
OnNldEJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveEJ1ZmZl
ck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXRfKSwgYm91bmRpbmdCb3hCdWZmZXJP
ZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hTdHJpZGUKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yOjpib3VuZGluZ0JveFN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJv
dW5kaW5nQm94U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91bmRpbmdCb3hT
dHJpZGUoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94U3RyaWRlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3VuZGluZ0JveFN0cmlk
ZV8pLCBib3VuZGluZ0JveFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBib3VuZGluZ0JveENv
dW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVC
b3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hDb3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGJvdW5kaW5nQm94Q291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjpz
ZXRCb3VuZGluZ0JveENvdW50KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveENvdW50KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3Vu
ZGluZ0JveENvdW50XyksIGJvdW5kaW5nQm94Q291bnQpOworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5k
aW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5k
aW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3Jp
cHRvcikpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpN
b3Rpb25LZXlmcmFtZURhdGEqIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTE1vdGlvbktleWZyYW1lRGF0YSkpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhKiBNVEw6Ok1vdGlvbktleWZy
YW1lRGF0YTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpNb3Rp
b25LZXlmcmFtZURhdGE+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXIKK19NVExfSU5MSU5F
IE1UTDo6QnVmZmVyKiBNVEw6Ok1vdGlvbktleWZyYW1lRGF0YTo6YnVmZmVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpNb3Rpb25L
ZXlmcmFtZURhdGE6OnNldEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZm
ZXJfKSwgYnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IG9mZnNldAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjpvZmZzZXQoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChvZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Ok1vdGlvbktleWZy
YW1lRGF0YTo6c2V0T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9mZnNldF8pLCBvZmZz
ZXQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBkYXRhCitfTVRMX0lOTElORSBNVEw6Ok1vdGlv
bktleWZyYW1lRGF0YSogTVRMOjpNb3Rpb25LZXlmcmFtZURhdGE6OmRhdGEoKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhKj4oX01UTF9Q
UklWQVRFX0NMUyhNVExNb3Rpb25LZXlmcmFtZURhdGEpLCBfTVRMX1BSSVZBVEVfU0VMKGRhdGEp
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhN
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcikp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9u
VHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhC
dWZmZXJzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
TW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnZlcnRleEJ1ZmZlcnMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodmVydGV4QnVmZmVycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNl
dFZlcnRleEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiB2ZXJ0ZXhCdWZmZXJzKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhC
dWZmZXJzXyksIHZlcnRleEJ1ZmZlcnMpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4U3RyaWRl
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rp
b25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6dmVydGV4U3RyaWRlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodmVydGV4U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VmVy
dGV4U3RyaWRlKE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFN0cmlkZV8pLCB2
ZXJ0ZXhTdHJpZGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhCdWZmZXIKK19NVExfSU5MSU5F
IE1UTDo6QnVmZmVyKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2Vv
bWV0cnlEZXNjcmlwdG9yOjppbmRleEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4
QnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0SW5kZXhCdWZmZXIoY29uc3Qg
TVRMOjpCdWZmZXIqIGluZGV4QnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleEJ1ZmZlcl8pLCBpbmRleEJ1ZmZlcik7
Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleEJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3I6OmluZGV4QnVmZmVyT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXhC
dWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJbmRleEJ1ZmZlck9m
ZnNldChOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGV4QnVmZmVyT2Zmc2V0
XyksIGluZGV4QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4VHlwZQorX01U
TF9JTkxJTkUgTVRMOjpJbmRleFR5cGUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25U
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5kZXhUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGV4VHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTChpbmRleFR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJbmRleFR5cGUo
TVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleFR5cGVfKSwgaW5kZXhUeXBlKTsKK30K
KworLy8gcHJvcGVydHk6IHRyaWFuZ2xlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9y
Ojp0cmlhbmdsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHJpYW5nbGVDb3VudCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRlZ2VyIHRy
aWFuZ2xlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFRyaWFuZ2xlQ291bnRfKSwgdHJpYW5nbGVDb3VudCk7Cit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmRlc2NyaXB0b3Io
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9y
KSwgX01UTF9QUklWQVRFX1NFTChkZXNjcmlwdG9yKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5k
aW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlv
bkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdC
b3hHZW9tZXRyeURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJv
dW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1v
dGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6aW5pdDxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5n
Qm94R2VvbWV0cnlEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hC
dWZmZXJzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
TW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94QnVmZmVycygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChib3VuZGluZ0JveEJ1ZmZlcnMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiBib3Vu
ZGluZ0JveEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyc18pLCBib3VuZGluZ0JveEJ1ZmZl
cnMpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hTdHJpZGUKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yOjpib3VuZGluZ0JveFN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGJvdW5kaW5nQm94U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91
bmRpbmdCb3hTdHJpZGUoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94U3RyaWRlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3VuZGlu
Z0JveFN0cmlkZV8pLCBib3VuZGluZ0JveFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBib3Vu
ZGluZ0JveENvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hD
b3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJvdW5kaW5nQm94Q291bnQpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94
R2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveENvdW50KE5TOjpVSW50ZWdlciBib3Vu
ZGluZ0JveENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRCb3VuZGluZ0JveENvdW50XyksIGJvdW5kaW5nQm94Q291bnQpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9y
OjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKj4o
X01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0Jv
eEdlb21ldHJ5RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3JpcHRvcikpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpJbnN0YW5jZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTEluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcikpOworfQor
CisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yKiBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpJbnN0
YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6
Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5zdGFuY2VEZXNjcmlw
dG9yQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVy
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3I6OnNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcihjb25zdCBNVEw6OkJ1
ZmZlciogaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZm
ZXJfKSwgaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IGluc3Rh
bmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbnN0YW5jZURlc2NyaXB0
b3JCdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnN0YW5jZURlc2NyaXB0b3JC
dWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxl
cmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zm
c2V0KE5TOjpVSW50ZWdlciBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3Rh
bmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldF8pLCBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZz
ZXQpOworfQorCisvLyBwcm9wZXJ0eTogaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlCitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2Ny
aXB0b3I6Omluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlu
c3RhbmNlRGVzY3JpcHRvclN0cmlkZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5z
dGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRJbnN0YW5jZURlc2NyaXB0
b3JTdHJpZGUoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5zdGFu
Y2VEZXNjcmlwdG9yU3RyaWRlXyksIGluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpbnN0YW5jZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJ
bnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Omluc3RhbmNlQ291bnQoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChpbnN0YW5jZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldEluc3Rh
bmNlQ291bnQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlQ291bnRfKSwg
aW5zdGFuY2VDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnN0YW5jZWRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6c2V0SW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcyhjb25zdCBOUzo6QXJy
YXkqIGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlZEFjY2VsZXJh
dGlvblN0cnVjdHVyZXNfKSwgaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcyk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpbnN0YW5jZURlc2NyaXB0b3JUeXBlCitfTVRMX0lOTElORSBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGUgTVRMOjpJbnN0YW5jZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Omluc3RhbmNlRGVzY3JpcHRvclR5cGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
bnN0YW5jZURlc2NyaXB0b3JUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnN0
YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldEluc3RhbmNlRGVzY3JpcHRv
clR5cGUoTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlIGlu
c3RhbmNlRGVzY3JpcHRvclR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvclR5cGVfKSwgaW5zdGFu
Y2VEZXNjcmlwdG9yVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25UcmFuc2Zvcm1CdWZm
ZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uVHJhbnNmb3JtQnVmZmVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobW90aW9uVHJhbnNmb3JtQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1vdGlvblRyYW5z
Zm9ybUJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogbW90aW9uVHJhbnNmb3JtQnVmZmVyKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRN
b3Rpb25UcmFuc2Zvcm1CdWZmZXJfKSwgbW90aW9uVHJhbnNmb3JtQnVmZmVyKTsKK30KKworLy8g
cHJvcGVydHk6IG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rp
b25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25UcmFu
c2Zvcm1CdWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNl
QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9uVHJhbnNmb3JtQnVmZmVy
T2Zmc2V0KE5TOjpVSW50ZWdlciBtb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlv
blRyYW5zZm9ybUJ1ZmZlck9mZnNldF8pLCBtb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQpOwor
fQorCisvLyBwcm9wZXJ0eTogbW90aW9uVHJhbnNmb3JtQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90
aW9uVHJhbnNmb3JtQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25UcmFuc2Zvcm1D
b3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25UcmFuc2Zvcm1Db3VudChOUzo6VUludGVnZXIg
bW90aW9uVHJhbnNmb3JtQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvblRyYW5zZm9ybUNvdW50XyksIG1vdGlvblRy
YW5zZm9ybUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgorX01UTF9J
TkxJTkUgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6
SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMSW5zdGFuY2VBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChkZXNjcmlwdG9yKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBzaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmU6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzaXplKSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNv
ZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wZmY0YzljOGJkMWVkNDI4YTQzZjdlZjJlMTZjNjkyOGMxNTQ5
Y2MzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcApAQCAtMCwwICsx
LDE0NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNs
dWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHA+CisKKyNpbmNsdWRlICJNVExBcmd1bWVudC5ocHAiCisjaW5jbHVkZSAiTVRMQ29tbWFuZEVu
Y29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTEhlYXAuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNl
LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29t
bWFuZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFjY2VsZXJhdGlvblN0cnVjdHVy
ZUNvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rlcj4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIGJ1
aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVy
ZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBjbGFzcyBCdWZmZXIqIHNjcmF0Y2hCdWZm
ZXIsIE5TOjpVSW50ZWdlciBzY3JhdGNoQnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgcmVmaXRB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBz
b3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEJ1ZmZl
ciogc2NyYXRjaEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNjcmF0Y2hCdWZmZXJPZmZzZXQpOworCisg
ICAgdm9pZCBjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZSogc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBjbGFzcyBBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUqIGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0dXJlKTsKKwor
ICAgIHZvaWQgd3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplKGNvbnN0IGNs
YXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBj
bGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCk7CisKKyAgICB2b2lkIHdy
aXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZShjb25zdCBjbGFzcyBBY2NlbGVy
YXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgY2xhc3MgQnVmZmVy
KiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE1UTDo6RGF0YVR5cGUgc2l6ZURhdGFUeXBl
KTsKKworICAgIHZvaWQgY29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3Qg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRp
b25TdHJ1Y3R1cmUpOworCisgICAgdm9pZCB1cGRhdGVGZW5jZShjb25zdCBjbGFzcyBGZW5jZSog
ZmVuY2UpOworCisgICAgdm9pZCB3YWl0Rm9yRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNl
KTsKKworICAgIHZvaWQgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3VyY2UqIHJlc291cmNl
LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCB1c2VSZXNvdXJjZXMoTVRM
OjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZXNvdXJj
ZVVzYWdlIHVzYWdlKTsKKworICAgIHZvaWQgdXNlSGVhcChjb25zdCBjbGFzcyBIZWFwKiBoZWFw
KTsKKworICAgIHZvaWQgdXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIg
Y291bnQpOworCisgICAgdm9pZCBzYW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IGNsYXNzIENv
dW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUluZGV4
LCBib29sIGJhcnJpZXIpOworfTsKKworfQorCisvLyBtZXRob2Q6IGJ1aWxkQWNjZWxlcmF0aW9u
U3RydWN0dXJlOmRlc2NyaXB0b3I6c2NyYXRjaEJ1ZmZlcjpzY3JhdGNoQnVmZmVyT2Zmc2V0Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVy
OjpidWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IE1UTDo6QnVmZmVyKiBzY3JhdGNoQnVm
ZmVyLCBOUzo6VUludGVnZXIgc2NyYXRjaEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVpbGRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVfZGVzY3JpcHRvcl9zY3JhdGNoQnVmZmVyX3NjcmF0Y2hCdWZmZXJPZmZzZXRfKSwg
YWNjZWxlcmF0aW9uU3RydWN0dXJlLCBkZXNjcmlwdG9yLCBzY3JhdGNoQnVmZmVyLCBzY3JhdGNo
QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiByZWZpdEFjY2VsZXJhdGlvblN0cnVjdHVy
ZTpkZXNjcmlwdG9yOmRlc3RpbmF0aW9uOnNjcmF0Y2hCdWZmZXI6c2NyYXRjaEJ1ZmZlck9mZnNl
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5j
b2Rlcjo6cmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1U
TDo6QnVmZmVyKiBzY3JhdGNoQnVmZmVyLCBOUzo6VUludGVnZXIgc2NyYXRjaEJ1ZmZlck9mZnNl
dCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfZGVzY3JpcHRvcl9kZXN0aW5hdGlvbl9zY3Jh
dGNoQnVmZmVyX3NjcmF0Y2hCdWZmZXJPZmZzZXRfKSwgc291cmNlQWNjZWxlcmF0aW9uU3RydWN0
dXJlLCBkZXNjcmlwdG9yLCBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSwgc2NyYXRj
aEJ1ZmZlciwgc2NyYXRjaEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogY29weUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZTp0b0FjY2VsZXJhdGlvblN0cnVjdHVyZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6Y29weUFjY2VsZXJh
dGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogc291cmNlQWNj
ZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogZGVz
dGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmVf
dG9BY2NlbGVyYXRpb25TdHJ1Y3R1cmVfKSwgc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBk
ZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSk7Cit9CisKKy8vIG1ldGhvZDogd3JpdGVD
b21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6d3Jp
dGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplKGNvbnN0IE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1UTDo6QnVmZmVyKiBi
dWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlU2l6ZV90b0J1ZmZlcl9vZmZzZXRfKSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBidWZm
ZXIsIG9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogd3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDpzaXplRGF0YVR5cGU6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OndyaXRlQ29tcGFj
dGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBO
Uzo6VUludGVnZXIgb2Zmc2V0LCBNVEw6OkRhdGFUeXBlIHNpemVEYXRhVHlwZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod3JpdGVDb21w
YWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplX3RvQnVmZmVyX29mZnNldF9zaXplRGF0YVR5
cGVfKSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBidWZmZXIsIG9mZnNldCwgc2l6ZURhdGFUeXBl
KTsKK30KKworLy8gbWV0aG9kOiBjb3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlvblN0cnVjdHVyZTp0
b0FjY2VsZXJhdGlvblN0cnVjdHVyZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6Y29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25TdHJ1
Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJhdGlv
blN0cnVjdHVyZSwgY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGRlc3RpbmF0aW9u
QWNjZWxlcmF0aW9uU3RydWN0dXJlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlvblN0cnVjdHVy
ZV90b0FjY2VsZXJhdGlvblN0cnVjdHVyZV8pLCBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0dXJlKTsKK30KKworLy8gbWV0aG9kOiB1cGRh
dGVGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21t
YW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVwZGF0ZUZl
bmNlXyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB3YWl0Rm9yRmVuY2U6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OndhaXRGb3JG
ZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2FpdEZvckZlbmNlXyksIGZlbmNlKTsKK30K
KworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZTp1c2FnZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3VyY2UoY29uc3QgTVRM
OjpSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVzb3Vy
Y2VfdXNhZ2VfKSwgcmVzb3VyY2UsIHVzYWdlKTsKK30KKworLy8gbWV0aG9kOiB1c2VSZXNvdXJj
ZXM6Y291bnQ6dXNhZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNb
XSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJlc291
cmNlc19jb3VudF91c2FnZV8pLCByZXNvdXJjZXMsIGNvdW50LCB1c2FnZSk7Cit9CisKKy8vIG1l
dGhvZDogdXNlSGVhcDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcChjb25zdCBNVEw6OkhlYXAqIGhlYXApCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBf
KSwgaGVhcCk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcHM6Y291bnQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OnVzZUhlYXBzKE1U
TDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwc19jb3VudF8pLCBo
ZWFwcywgY291bnQpOworfQorCisvLyBtZXRob2Q6IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRT
YW1wbGVJbmRleDp3aXRoQmFycmllcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6c2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBN
VEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBs
ZUluZGV4LCBib29sIGJhcnJpZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50ZXJzSW5CdWZmZXJfYXRTYW1wbGVJbmRl
eF93aXRoQmFycmllcl8pLCBzYW1wbGVCdWZmZXIsIHNhbXBsZUluZGV4LCBiYXJyaWVyKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJl
NzY3ZGM5MTVjYzFiYjkwYzQxOGFiNDA3ODAyYjUwZDljMTU3YjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlVHlwZXMuaHBwCkBAIC0wLDAgKzEsMTY5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVUeXBlcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdt
YSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisj
aW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRPdXRwdXRE
ZXNjcmlwdG9yLmhwcCIKKworI2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHAiCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3Bh
Y2UgTVRMCit7CitzdHJ1Y3QgUGFja2VkRmxvYXQzCit7CisgICAgUGFja2VkRmxvYXQzKCk7Cisg
ICAgUGFja2VkRmxvYXQzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOworCisgICAgZmxvYXQm
IG9wZXJhdG9yW10oaW50IGlkeCk7CisgICAgZmxvYXQgIG9wZXJhdG9yW10oaW50IGlkeCkgY29u
c3Q7CisKKyAgICB1bmlvbgorICAgIHsKKyAgICAgICAgc3RydWN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZsb2F0IHg7CisgICAgICAgICAgICBmbG9hdCB5OworICAgICAgICAgICAgZmxvYXQg
ejsKKyAgICAgICAgfTsKKworICAgICAgICBmbG9hdCBlbGVtZW50c1szXTsKKyAgICB9OworfSBf
TVRMX1BBQ0tFRDsKKworc3RydWN0IFBhY2tlZEZsb2F0NHgzCit7CisgICAgUGFja2VkRmxvYXQ0
eDMoKTsKKyAgICBQYWNrZWRGbG9hdDR4Myhjb25zdCBQYWNrZWRGbG9hdDMmIGNvbDAsIGNvbnN0
IFBhY2tlZEZsb2F0MyYgY29sMSwgY29uc3QgUGFja2VkRmxvYXQzJiBjb2wyLCBjb25zdCBQYWNr
ZWRGbG9hdDMmIGNvbDMpOworCisgICAgUGFja2VkRmxvYXQzJiAgICAgICBvcGVyYXRvcltdKGlu
dCBpZHgpOworICAgIGNvbnN0IFBhY2tlZEZsb2F0MyYgb3BlcmF0b3JbXShpbnQgaWR4KSBjb25z
dDsKKworICAgIFBhY2tlZEZsb2F0MyAgICAgICAgY29sdW1uc1s0XTsKK30gX01UTF9QQUNLRUQ7
CisKK3N0cnVjdCBBeGlzQWxpZ25lZEJvdW5kaW5nQm94Cit7CisgICAgQXhpc0FsaWduZWRCb3Vu
ZGluZ0JveCgpOworICAgIEF4aXNBbGlnbmVkQm91bmRpbmdCb3goUGFja2VkRmxvYXQzIHApOwor
ICAgIEF4aXNBbGlnbmVkQm91bmRpbmdCb3goUGFja2VkRmxvYXQzIG1pbiwgUGFja2VkRmxvYXQz
IG1heCk7CisKKyAgICBQYWNrZWRGbG9hdDMgbWluOworICAgIFBhY2tlZEZsb2F0MyBtYXg7Cit9
IF9NVExfUEFDS0VEOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpQYWNrZWRGbG9hdDM6OlBhY2tlZEZsb2F0Mygp
CisgICAgOiB4KDAuMGYpCisgICAgLCB5KDAuMGYpCisgICAgLCB6KDAuMGYpCit7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElO
RSBNVEw6OlBhY2tlZEZsb2F0Mzo6UGFja2VkRmxvYXQzKGZsb2F0IF94LCBmbG9hdCBfeSwgZmxv
YXQgX3opCisgICAgOiB4KF94KQorICAgICwgeShfeSkKKyAgICAsIHooX3opCit7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElO
RSBmbG9hdCYgTVRMOjpQYWNrZWRGbG9hdDM6Om9wZXJhdG9yW10oaW50IGlkeCkKK3sKKyAgICBy
ZXR1cm4gZWxlbWVudHNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIGZsb2F0IE1UTDo6UGFja2VkRmxvYXQzOjpv
cGVyYXRvcltdKGludCBpZHgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVsZW1lbnRzW2lkeF07Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRM
X0lOTElORSBNVEw6OlBhY2tlZEZsb2F0NHgzOjpQYWNrZWRGbG9hdDR4MygpCit7CisgICAgY29s
dW1uc1swXSA9IFBhY2tlZEZsb2F0MygwLjBmLCAwLjBmLCAwLjBmKTsKKyAgICBjb2x1bW5zWzFd
ID0gUGFja2VkRmxvYXQzKDAuMGYsIDAuMGYsIDAuMGYpOworICAgIGNvbHVtbnNbMl0gPSBQYWNr
ZWRGbG9hdDMoMC4wZiwgMC4wZiwgMC4wZik7CisgICAgY29sdW1uc1szXSA9IFBhY2tlZEZsb2F0
MygwLjBmLCAwLjBmLCAwLjBmKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6UGFja2VkRmxvYXQ0eDM6OlBhY2tl
ZEZsb2F0NHgzKGNvbnN0IFBhY2tlZEZsb2F0MyYgY29sMCwgY29uc3QgUGFja2VkRmxvYXQzJiBj
b2wxLCBjb25zdCBQYWNrZWRGbG9hdDMmIGNvbDIsIGNvbnN0IFBhY2tlZEZsb2F0MyYgY29sMykK
K3sKKyAgICBjb2x1bW5zWzBdID0gY29sMDsKKyAgICBjb2x1bW5zWzFdID0gY29sMTsKKyAgICBj
b2x1bW5zWzJdID0gY29sMjsKKyAgICBjb2x1bW5zWzNdID0gY29sMzsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6
UGFja2VkRmxvYXQzJiBNVEw6OlBhY2tlZEZsb2F0NHgzOjpvcGVyYXRvcltdKGludCBpZHgpCit7
CisgICAgcmV0dXJuIGNvbHVtbnNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIGNvbnN0IE1UTDo6UGFja2VkRmxv
YXQzJiBNVEw6OlBhY2tlZEZsb2F0NHgzOjpvcGVyYXRvcltdKGludCBpZHgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNvbHVtbnNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6QXhpc0FsaWduZWRCb3VuZGlu
Z0JveDo6QXhpc0FsaWduZWRCb3VuZGluZ0JveCgpCisgICAgOiBtaW4oSU5GSU5JVFksIElORklO
SVRZLCBJTkZJTklUWSkKKyAgICAsIG1heCgtSU5GSU5JVFksIC1JTkZJTklUWSwgLUlORklOSVRZ
KQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX01UTF9JTkxJTkUgTVRMOjpBeGlzQWxpZ25lZEJvdW5kaW5nQm94OjpBeGlzQWxpZ25lZEJv
dW5kaW5nQm94KFBhY2tlZEZsb2F0MyBwKQorICAgIDogbWluKHApCisgICAgLCBtYXgocCkKK3sK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19N
VExfSU5MSU5FIE1UTDo6QXhpc0FsaWduZWRCb3VuZGluZ0JveDo6QXhpc0FsaWduZWRCb3VuZGlu
Z0JveChQYWNrZWRGbG9hdDMgX21pbiwgUGFja2VkRmxvYXQzIF9tYXgpCisgICAgOiBtaW4oX21p
bikKKyAgICAsIG1heChfbWF4KQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExBcmd1bWVudC5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNTdmZTA4MDI4ZTIwMDA3MzRm
MjIyZDI1ODA0YmI4MmM2YTdmY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwCkBAIC0wLDAgKzEsNjU1IEBACisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRh
bC9NVExBcmd1bWVudC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKyNp
bmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5T
OjpVSW50ZWdlciwgRGF0YVR5cGUpIHsKKyAgICBEYXRhVHlwZU5vbmUgPSAwLAorICAgIERhdGFU
eXBlU3RydWN0ID0gMSwKKyAgICBEYXRhVHlwZUFycmF5ID0gMiwKKyAgICBEYXRhVHlwZUZsb2F0
ID0gMywKKyAgICBEYXRhVHlwZUZsb2F0MiA9IDQsCisgICAgRGF0YVR5cGVGbG9hdDMgPSA1LAor
ICAgIERhdGFUeXBlRmxvYXQ0ID0gNiwKKyAgICBEYXRhVHlwZUZsb2F0MngyID0gNywKKyAgICBE
YXRhVHlwZUZsb2F0MngzID0gOCwKKyAgICBEYXRhVHlwZUZsb2F0Mng0ID0gOSwKKyAgICBEYXRh
VHlwZUZsb2F0M3gyID0gMTAsCisgICAgRGF0YVR5cGVGbG9hdDN4MyA9IDExLAorICAgIERhdGFU
eXBlRmxvYXQzeDQgPSAxMiwKKyAgICBEYXRhVHlwZUZsb2F0NHgyID0gMTMsCisgICAgRGF0YVR5
cGVGbG9hdDR4MyA9IDE0LAorICAgIERhdGFUeXBlRmxvYXQ0eDQgPSAxNSwKKyAgICBEYXRhVHlw
ZUhhbGYgPSAxNiwKKyAgICBEYXRhVHlwZUhhbGYyID0gMTcsCisgICAgRGF0YVR5cGVIYWxmMyA9
IDE4LAorICAgIERhdGFUeXBlSGFsZjQgPSAxOSwKKyAgICBEYXRhVHlwZUhhbGYyeDIgPSAyMCwK
KyAgICBEYXRhVHlwZUhhbGYyeDMgPSAyMSwKKyAgICBEYXRhVHlwZUhhbGYyeDQgPSAyMiwKKyAg
ICBEYXRhVHlwZUhhbGYzeDIgPSAyMywKKyAgICBEYXRhVHlwZUhhbGYzeDMgPSAyNCwKKyAgICBE
YXRhVHlwZUhhbGYzeDQgPSAyNSwKKyAgICBEYXRhVHlwZUhhbGY0eDIgPSAyNiwKKyAgICBEYXRh
VHlwZUhhbGY0eDMgPSAyNywKKyAgICBEYXRhVHlwZUhhbGY0eDQgPSAyOCwKKyAgICBEYXRhVHlw
ZUludCA9IDI5LAorICAgIERhdGFUeXBlSW50MiA9IDMwLAorICAgIERhdGFUeXBlSW50MyA9IDMx
LAorICAgIERhdGFUeXBlSW50NCA9IDMyLAorICAgIERhdGFUeXBlVUludCA9IDMzLAorICAgIERh
dGFUeXBlVUludDIgPSAzNCwKKyAgICBEYXRhVHlwZVVJbnQzID0gMzUsCisgICAgRGF0YVR5cGVV
SW50NCA9IDM2LAorICAgIERhdGFUeXBlU2hvcnQgPSAzNywKKyAgICBEYXRhVHlwZVNob3J0MiA9
IDM4LAorICAgIERhdGFUeXBlU2hvcnQzID0gMzksCisgICAgRGF0YVR5cGVTaG9ydDQgPSA0MCwK
KyAgICBEYXRhVHlwZVVTaG9ydCA9IDQxLAorICAgIERhdGFUeXBlVVNob3J0MiA9IDQyLAorICAg
IERhdGFUeXBlVVNob3J0MyA9IDQzLAorICAgIERhdGFUeXBlVVNob3J0NCA9IDQ0LAorICAgIERh
dGFUeXBlQ2hhciA9IDQ1LAorICAgIERhdGFUeXBlQ2hhcjIgPSA0NiwKKyAgICBEYXRhVHlwZUNo
YXIzID0gNDcsCisgICAgRGF0YVR5cGVDaGFyNCA9IDQ4LAorICAgIERhdGFUeXBlVUNoYXIgPSA0
OSwKKyAgICBEYXRhVHlwZVVDaGFyMiA9IDUwLAorICAgIERhdGFUeXBlVUNoYXIzID0gNTEsCisg
ICAgRGF0YVR5cGVVQ2hhcjQgPSA1MiwKKyAgICBEYXRhVHlwZUJvb2wgPSA1MywKKyAgICBEYXRh
VHlwZUJvb2wyID0gNTQsCisgICAgRGF0YVR5cGVCb29sMyA9IDU1LAorICAgIERhdGFUeXBlQm9v
bDQgPSA1NiwKKyAgICBEYXRhVHlwZVRleHR1cmUgPSA1OCwKKyAgICBEYXRhVHlwZVNhbXBsZXIg
PSA1OSwKKyAgICBEYXRhVHlwZVBvaW50ZXIgPSA2MCwKKyAgICBEYXRhVHlwZVI4VW5vcm0gPSA2
MiwKKyAgICBEYXRhVHlwZVI4U25vcm0gPSA2MywKKyAgICBEYXRhVHlwZVIxNlVub3JtID0gNjQs
CisgICAgRGF0YVR5cGVSMTZTbm9ybSA9IDY1LAorICAgIERhdGFUeXBlUkc4VW5vcm0gPSA2NiwK
KyAgICBEYXRhVHlwZVJHOFNub3JtID0gNjcsCisgICAgRGF0YVR5cGVSRzE2VW5vcm0gPSA2OCwK
KyAgICBEYXRhVHlwZVJHMTZTbm9ybSA9IDY5LAorICAgIERhdGFUeXBlUkdCQThVbm9ybSA9IDcw
LAorICAgIERhdGFUeXBlUkdCQThVbm9ybV9zUkdCID0gNzEsCisgICAgRGF0YVR5cGVSR0JBOFNu
b3JtID0gNzIsCisgICAgRGF0YVR5cGVSR0JBMTZVbm9ybSA9IDczLAorICAgIERhdGFUeXBlUkdC
QTE2U25vcm0gPSA3NCwKKyAgICBEYXRhVHlwZVJHQjEwQTJVbm9ybSA9IDc1LAorICAgIERhdGFU
eXBlUkcxMUIxMEZsb2F0ID0gNzYsCisgICAgRGF0YVR5cGVSR0I5RTVGbG9hdCA9IDc3LAorICAg
IERhdGFUeXBlUmVuZGVyUGlwZWxpbmUgPSA3OCwKKyAgICBEYXRhVHlwZUNvbXB1dGVQaXBlbGlu
ZSA9IDc5LAorICAgIERhdGFUeXBlSW5kaXJlY3RDb21tYW5kQnVmZmVyID0gODAsCisgICAgRGF0
YVR5cGVMb25nID0gODEsCisgICAgRGF0YVR5cGVMb25nMiA9IDgyLAorICAgIERhdGFUeXBlTG9u
ZzMgPSA4MywKKyAgICBEYXRhVHlwZUxvbmc0ID0gODQsCisgICAgRGF0YVR5cGVVTG9uZyA9IDg1
LAorICAgIERhdGFUeXBlVUxvbmcyID0gODYsCisgICAgRGF0YVR5cGVVTG9uZzMgPSA4NywKKyAg
ICBEYXRhVHlwZVVMb25nNCA9IDg4LAorICAgIERhdGFUeXBlVmlzaWJsZUZ1bmN0aW9uVGFibGUg
PSAxMTUsCisgICAgRGF0YVR5cGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlID0gMTE2LAorICAg
IERhdGFUeXBlUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlID0gMTE3LAorICAgIERhdGFU
eXBlSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUgPSAxMTgsCit9OworCitfTVRMX0VOVU0o
TlM6OlVJbnRlZ2VyLCBBcmd1bWVudFR5cGUpIHsKKyAgICBBcmd1bWVudFR5cGVCdWZmZXIgPSAw
LAorICAgIEFyZ3VtZW50VHlwZVRocmVhZGdyb3VwTWVtb3J5ID0gMSwKKyAgICBBcmd1bWVudFR5
cGVUZXh0dXJlID0gMiwKKyAgICBBcmd1bWVudFR5cGVTYW1wbGVyID0gMywKKyAgICBBcmd1bWVu
dFR5cGVJbWFnZWJsb2NrRGF0YSA9IDE2LAorICAgIEFyZ3VtZW50VHlwZUltYWdlYmxvY2sgPSAx
NywKKyAgICBBcmd1bWVudFR5cGVWaXNpYmxlRnVuY3Rpb25UYWJsZSA9IDI0LAorICAgIEFyZ3Vt
ZW50VHlwZVByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZSA9IDI1LAorICAgIEFyZ3VtZW50
VHlwZUluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlID0gMjYsCisgICAgQXJndW1lbnRUeXBl
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSA9IDI3LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50
ZWdlciwgQXJndW1lbnRBY2Nlc3MpIHsKKyAgICBBcmd1bWVudEFjY2Vzc1JlYWRPbmx5ID0gMCwK
KyAgICBBcmd1bWVudEFjY2Vzc1JlYWRXcml0ZSA9IDEsCisgICAgQXJndW1lbnRBY2Nlc3NXcml0
ZU9ubHkgPSAyLAorfTsKKworY2xhc3MgVHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8VHlw
ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVHlwZSogYWxsb2MoKTsKKworICAgIGNs
YXNzIFR5cGUqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgZGF0YVR5
cGUoKSBjb25zdDsKK307CisKK2NsYXNzIFN0cnVjdE1lbWJlciA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8U3RydWN0TWVtYmVyPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTdHJ1Y3RN
ZW1iZXIqICBhbGxvYygpOworCisgICAgY2xhc3MgU3RydWN0TWVtYmVyKiAgICAgICAgIGluaXQo
KTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgb2Zmc2V0KCkgY29uc3Q7CisKKyAgICBNVEw6
OkRhdGFUeXBlICAgICAgICAgICAgICAgZGF0YVR5cGUoKSBjb25zdDsKKworICAgIGNsYXNzIFN0
cnVjdFR5cGUqICAgICAgICAgICBzdHJ1Y3RUeXBlKCk7CisKKyAgICBjbGFzcyBBcnJheVR5cGUq
ICAgICAgICAgICAgYXJyYXlUeXBlKCk7CisKKyAgICBjbGFzcyBUZXh0dXJlUmVmZXJlbmNlVHlw
ZSogdGV4dHVyZVJlZmVyZW5jZVR5cGUoKTsKKworICAgIGNsYXNzIFBvaW50ZXJUeXBlKiAgICAg
ICAgICBwb2ludGVyVHlwZSgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGFy
Z3VtZW50SW5kZXgoKSBjb25zdDsKK307CisKK2NsYXNzIFN0cnVjdFR5cGUgOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPFN0cnVjdFR5cGUsIFR5cGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIFN0cnVjdFR5cGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBTdHJ1Y3RUeXBlKiAgICAgICAg
aW5pdCgpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgIG1lbWJlcnMoKSBjb25zdDsK
KworICAgIGNsYXNzIFN0cnVjdE1lbWJlciogICAgICBtZW1iZXJCeU5hbWUoY29uc3QgTlM6OlN0
cmluZyogbmFtZSk7Cit9OworCitjbGFzcyBBcnJheVR5cGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5j
aW5nPEFycmF5VHlwZSwgVHlwZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQXJyYXlU
eXBlKiAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIEFycmF5VHlwZSogICAgICAgICAgICBpbml0
KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgICAgICAgZWxlbWVudFR5cGUoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBhcnJheUxlbmd0aCgpIGNvbnN0
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIHN0cmlkZSgpIGNvbnN0OworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXhTdHJpZGUoKSBjb25z
dDsKKworICAgIGNsYXNzIFN0cnVjdFR5cGUqICAgICAgICAgICBlbGVtZW50U3RydWN0VHlwZSgp
OworCisgICAgY2xhc3MgQXJyYXlUeXBlKiAgICAgICAgICAgIGVsZW1lbnRBcnJheVR5cGUoKTsK
KworICAgIGNsYXNzIFRleHR1cmVSZWZlcmVuY2VUeXBlKiBlbGVtZW50VGV4dHVyZVJlZmVyZW5j
ZVR5cGUoKTsKKworICAgIGNsYXNzIFBvaW50ZXJUeXBlKiAgICAgICAgICBlbGVtZW50UG9pbnRl
clR5cGUoKTsKK307CisKK2NsYXNzIFBvaW50ZXJUeXBlIDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxQb2ludGVyVHlwZSwgVHlwZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUG9pbnRl
clR5cGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBQb2ludGVyVHlwZSogICAgICAgIGluaXQoKTsK
KworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgZWxlbWVudFR5cGUoKSBjb25zdDsKKwor
ICAgIE1UTDo6QXJndW1lbnRBY2Nlc3MgICAgICAgYWNjZXNzKCkgY29uc3Q7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgIGFsaWdubWVudCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICBkYXRhU2l6ZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICBlbGVtZW50SXNBcmd1bWVudEJ1ZmZlcigpIGNvbnN0OworCisgICAgY2xhc3Mg
U3RydWN0VHlwZSogICAgICAgICBlbGVtZW50U3RydWN0VHlwZSgpOworCisgICAgY2xhc3MgQXJy
YXlUeXBlKiAgICAgICAgICBlbGVtZW50QXJyYXlUeXBlKCk7Cit9OworCitjbGFzcyBUZXh0dXJl
UmVmZXJlbmNlVHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8VGV4dHVyZVJlZmVyZW5jZVR5
cGUsIFR5cGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFRleHR1cmVSZWZlcmVuY2VU
eXBlKiBhbGxvYygpOworCisgICAgY2xhc3MgVGV4dHVyZVJlZmVyZW5jZVR5cGUqICAgICAgICBp
bml0KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVE
YXRhVHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpUZXh0dXJlVHlwZSAgICAgICAgICAgICAgICAg
ICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpBcmd1bWVudEFjY2VzcyAgICAgICAg
ICAgICAgICBhY2Nlc3MoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaXNEZXB0aFRleHR1cmUoKSBjb25zdDsKK307CisKK2NsYXNzIEFyZ3VtZW50IDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxBcmd1bWVudD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y2xhc3MgQXJndW1lbnQqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBcmd1bWVudCogICAgICAgIGlu
aXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworCisgICAg
TVRMOjpBcmd1bWVudFR5cGUgICAgICB0eXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OkFyZ3VtZW50
QWNjZXNzICAgIGFjY2VzcygpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICBp
bmRleCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICBhY3RpdmUoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgYnVmZmVyQWxpZ25tZW50KCkgY29uc3Q7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgIGJ1ZmZlckRhdGFTaXplKCkgY29uc3Q7CisK
KyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgIGJ1ZmZlckRhdGFUeXBlKCkgY29uc3Q7CisKKyAg
ICBjbGFzcyBTdHJ1Y3RUeXBlKiAgICAgIGJ1ZmZlclN0cnVjdFR5cGUoKSBjb25zdDsKKworICAg
IGNsYXNzIFBvaW50ZXJUeXBlKiAgICAgYnVmZmVyUG9pbnRlclR5cGUoKSBjb25zdDsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgdGhyZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgdGhyZWFkZ3JvdXBNZW1vcnlEYXRhU2l6
ZSgpIGNvbnN0OworCisgICAgTVRMOjpUZXh0dXJlVHlwZSAgICAgICB0ZXh0dXJlVHlwZSgpIGNv
bnN0OworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAgICB0ZXh0dXJlRGF0YVR5cGUoKSBjb25z
dDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgaXNEZXB0aFRleHR1cmUoKSBjb25zdDsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgYXJyYXlMZW5ndGgoKSBjb25zdDsKK307CisK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VHlwZSogTVRM
OjpUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VHlw
ZT4oX01UTF9QUklWQVRFX0NMUyhNVExUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpUeXBlKiBNVEw6OlR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6VHlwZT4oKTsKK30KKworLy8gcHJvcGVydHk6IGRhdGFUeXBlCitf
TVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6VHlwZTo6ZGF0YVR5cGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZGF0YVR5cGUpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6U3RydWN0TWVtYmVyKiBNVEw6OlN0cnVjdE1lbWJlcjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlN0cnVjdE1lbWJlcj4oX01UTF9Q
UklWQVRFX0NMUyhNVExTdHJ1Y3RNZW1iZXIpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OlN0cnVjdE1lbWJlciogTVRMOjpTdHJ1Y3RNZW1iZXI6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U3RydWN0TWVtYmVyPigpOworfQorCisv
LyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpTdHJ1Y3RNZW1i
ZXI6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpT
dHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6
IG9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6U3RydWN0TWVtYmVyOjpvZmZz
ZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvZmZzZXQpKTsKK30KKworLy8gcHJvcGVydHk6IGRh
dGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6U3RydWN0TWVtYmVyOjpkYXRh
VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRh
VHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChkYXRhVHlwZSkpOworfQorCisvLyBtZXRob2Q6
IHN0cnVjdFR5cGUKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpTdHJ1Y3RNZW1i
ZXI6OnN0cnVjdFR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
U3RydWN0VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RydWN0VHlwZSkpOworfQorCisv
LyBtZXRob2Q6IGFycmF5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpBcnJheVR5cGUqIE1UTDo6U3Ry
dWN0TWVtYmVyOjphcnJheVR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6QXJyYXlUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcnJheVR5cGUpKTsKK30K
KworLy8gbWV0aG9kOiB0ZXh0dXJlUmVmZXJlbmNlVHlwZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0
dXJlUmVmZXJlbmNlVHlwZSogTVRMOjpTdHJ1Y3RNZW1iZXI6OnRleHR1cmVSZWZlcmVuY2VUeXBl
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVSZWZlcmVu
Y2VUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlUmVmZXJlbmNlVHlwZSkpOwor
fQorCisvLyBtZXRob2Q6IHBvaW50ZXJUeXBlCitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJUeXBl
KiBNVEw6OlN0cnVjdE1lbWJlcjo6cG9pbnRlclR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6UG9pbnRlclR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBv
aW50ZXJUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhcmd1bWVudEluZGV4CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpTdHJ1Y3RNZW1iZXI6OmFyZ3VtZW50SW5kZXgoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChhcmd1bWVudEluZGV4KSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OlN0cnVjdFR5cGUqIE1UTDo6U3RydWN0VHlwZTo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlN0cnVjdFR5cGU+KF9NVExf
UFJJVkFURV9DTFMoTVRMU3RydWN0VHlwZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpTdHJ1Y3RUeXBlOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlN0cnVjdFR5cGU+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBtZW1iZXJzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6U3RydWN0VHlwZTo6bWVt
YmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtZW1iZXJzKSk7Cit9CisKKy8vIG1ldGhvZDogbWVt
YmVyQnlOYW1lOgorX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RNZW1iZXIqIE1UTDo6U3RydWN0VHlw
ZTo6bWVtYmVyQnlOYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RNZW1iZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG1lbWJlckJ5TmFtZV8pLCBuYW1lKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MK
K19NVExfSU5MSU5FIE1UTDo6QXJyYXlUeXBlKiBNVEw6OkFycmF5VHlwZTo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFycmF5VHlwZT4oX01UTF9QUklWQVRF
X0NMUyhNVExBcnJheVR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBN
VEw6OkFycmF5VHlwZSogTVRMOjpBcnJheVR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6QXJyYXlUeXBlPigpOworfQorCisvLyBwcm9wZXJ0eTogZWxlbWVu
dFR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpBcnJheVR5cGU6OmVsZW1lbnRU
eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFU
eXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRUeXBlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBhcnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJyYXlUeXBl
OjphcnJheUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFycmF5TGVuZ3RoKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBzdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFycmF5
VHlwZTo6c3RyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RyaWRlKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBhcmd1bWVudEluZGV4U3RyaWRlCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpBcnJheVR5cGU6OmFyZ3VtZW50SW5kZXhTdHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChh
cmd1bWVudEluZGV4U3RyaWRlKSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVudFN0cnVjdFR5cGUK
K19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpBcnJheVR5cGU6OmVsZW1lbnRTdHJ1
Y3RUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0cnVjdFR5
cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRTdHJ1Y3RUeXBlKSk7Cit9CisKKy8v
IG1ldGhvZDogZWxlbWVudEFycmF5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpBcnJheVR5cGUqIE1U
TDo6QXJyYXlUeXBlOjplbGVtZW50QXJyYXlUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkFycmF5VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZWxlbWVu
dEFycmF5VHlwZSkpOworfQorCisvLyBtZXRob2Q6IGVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlw
ZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZSogTVRMOjpBcnJheVR5cGU6
OmVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlwZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoZWxlbWVudFRleHR1cmVSZWZlcmVuY2VUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVu
dFBvaW50ZXJUeXBlCitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJUeXBlKiBNVEw6OkFycmF5VHlw
ZTo6ZWxlbWVudFBvaW50ZXJUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlBvaW50ZXJUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50UG9pbnRl
clR5cGUpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
UG9pbnRlclR5cGUqIE1UTDo6UG9pbnRlclR5cGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8TVRMOjpQb2ludGVyVHlwZT4oX01UTF9QUklWQVRFX0NMUyhNVExQb2lu
dGVyVHlwZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UG9pbnRl
clR5cGUqIE1UTDo6UG9pbnRlclR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6UG9pbnRlclR5cGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbGVtZW50VHlw
ZQorX01UTF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OlBvaW50ZXJUeXBlOjplbGVtZW50VHlw
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlw
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50VHlwZSkpOworfQorCisvLyBwcm9wZXJ0
eTogYWNjZXNzCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50QWNjZXNzIE1UTDo6UG9pbnRlclR5
cGU6OmFjY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBcmd1bWVudEFjY2Vzcz4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nlc3MpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGFsaWdubWVudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UG9p
bnRlclR5cGU6OmFsaWdubWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsaWdubWVudCkpOwor
fQorCisvLyBwcm9wZXJ0eTogZGF0YVNpemUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OlBvaW50ZXJUeXBlOjpkYXRhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRhdGFTaXplKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBlbGVtZW50SXNBcmd1bWVudEJ1ZmZlcgorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OlBvaW50ZXJUeXBlOjplbGVtZW50SXNBcmd1bWVudEJ1ZmZlcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChlbGVtZW50SXNBcmd1bWVudEJ1ZmZlcikpOworfQorCisvLyBtZXRob2Q6IGVsZW1lbnRT
dHJ1Y3RUeXBlCitfTVRMX0lOTElORSBNVEw6OlN0cnVjdFR5cGUqIE1UTDo6UG9pbnRlclR5cGU6
OmVsZW1lbnRTdHJ1Y3RUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlN0cnVjdFR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRTdHJ1Y3RUeXBl
KSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVudEFycmF5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpB
cnJheVR5cGUqIE1UTDo6UG9pbnRlclR5cGU6OmVsZW1lbnRBcnJheVR5cGUoKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJyYXlUeXBlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChlbGVtZW50QXJyYXlUeXBlKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlKiBNVEw6OlRleHR1cmVSZWZl
cmVuY2VUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6
VGV4dHVyZVJlZmVyZW5jZVR5cGU+KF9NVExfUFJJVkFURV9DTFMoTVRMVGV4dHVyZVJlZmVyZW5j
ZVR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVS
ZWZlcmVuY2VUeXBlKiBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlPigpOworfQor
CisvLyBwcm9wZXJ0eTogdGV4dHVyZURhdGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBl
IE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGU6OnRleHR1cmVEYXRhVHlwZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh0ZXh0dXJlRGF0YVR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVU
eXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVUeXBlIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5
cGU6OnRleHR1cmVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRleHR1cmVUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVUeXBlKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRBY2Nl
c3MgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6YWNjZXNzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGFjY2VzcykpOworfQorCisvLyBwcm9wZXJ0eTogaXNEZXB0aFRleHR1cmUKK19N
VExfSU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6aXNEZXB0aFRleHR1cmUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaXNEZXB0aFRleHR1cmUpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnQqIE1UTDo6QXJndW1lbnQ6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBcmd1bWVudD4oX01UTF9QUklW
QVRFX0NMUyhNVExBcmd1bWVudCkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5F
IE1UTDo6QXJndW1lbnQqIE1UTDo6QXJndW1lbnQ6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6QXJndW1lbnQ+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitf
TVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkFyZ3VtZW50OjpuYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0eXBlCitfTVRMX0lOTElORSBNVEw6
OkFyZ3VtZW50VHlwZSBNVEw6OkFyZ3VtZW50Ojp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50VHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh0eXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6
QXJndW1lbnRBY2Nlc3MgTVRMOjpBcmd1bWVudDo6YWNjZXNzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGFjY2VzcykpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXgKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50OjppbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGluZGV4KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY3RpdmUKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpBcmd1bWVudDo6YWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzQWN0aXZlKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBidWZmZXJBbGlnbm1lbnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFy
Z3VtZW50OjpidWZmZXJBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXJBbGln
bm1lbnQpKTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckRhdGFTaXplCitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpBcmd1bWVudDo6YnVmZmVyRGF0YVNpemUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChidWZmZXJEYXRhU2l6ZSkpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyRGF0YVR5
cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpBcmd1bWVudDo6YnVmZmVyRGF0YVR5
cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5
cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVyRGF0YVR5cGUpKTsKK30KKworLy8gcHJv
cGVydHk6IGJ1ZmZlclN0cnVjdFR5cGUKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRM
OjpBcmd1bWVudDo6YnVmZmVyU3RydWN0VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChi
dWZmZXJTdHJ1Y3RUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJQb2ludGVyVHlwZQor
X01UTF9JTkxJTkUgTVRMOjpQb2ludGVyVHlwZSogTVRMOjpBcmd1bWVudDo6YnVmZmVyUG9pbnRl
clR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UG9p
bnRlclR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlclBvaW50ZXJUeXBlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiB0aHJlYWRncm91cE1lbW9yeUFsaWdubWVudAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6OnRocmVhZGdyb3VwTWVtb3J5QWxpZ25tZW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQpKTsKK30KKwor
Ly8gcHJvcGVydHk6IHRocmVhZGdyb3VwTWVtb3J5RGF0YVNpemUKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OkFyZ3VtZW50Ojp0aHJlYWRncm91cE1lbW9yeURhdGFTaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodGhyZWFkZ3JvdXBNZW1vcnlEYXRhU2l6ZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogdGV4dHVyZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVR5cGUgTVRMOjpBcmd1
bWVudDo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZVR5cGUp
KTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVEYXRhVHlwZQorX01UTF9JTkxJTkUgTVRMOjpE
YXRhVHlwZSBNVEw6OkFyZ3VtZW50Ojp0ZXh0dXJlRGF0YVR5cGUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodGV4dHVyZURhdGFUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBpc0RlcHRoVGV4dHVy
ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkFyZ3VtZW50Ojppc0RlcHRoVGV4dHVyZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChpc0RlcHRoVGV4dHVyZSkpOworfQorCisvLyBwcm9wZXJ0eTogYXJyYXlMZW5ndGgK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50OjphcnJheUxlbmd0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGFycmF5TGVuZ3RoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnRFbmNvZGVyLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudEVuY29kZXIuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBjZWNjN2Q5NTY3NTJjNjMzMWE2MzA3ZGE1MDg5MWE3MWQyYzEwNGQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
QXJndW1lbnRFbmNvZGVyLmhwcApAQCAtMCwwICsxLDI1MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQXJndW1lbnRFbmNv
ZGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5o
cHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExD
b21wdXRlUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5o
cHAiCisjaW5jbHVkZSAiTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUmVuZGVyUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorI2lu
Y2x1ZGUgIk1UTFRleHR1cmUuaHBwIgorI2luY2x1ZGUgIk1UTFZpc2libGVGdW5jdGlvblRhYmxl
LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQXJndW1lbnRFbmNvZGVyIDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxBcmd1bWVudEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgY2xhc3Mg
RGV2aWNlKiAgICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAg
ICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldExhYmVs
KGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ZW5jb2RlZExlbmd0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICBhbGln
bm1lbnQoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0QXJndW1lbnRC
dWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBhcmd1bWVudEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEFyZ3VtZW50QnVmZmVyKGNv
bnN0IGNsYXNzIEJ1ZmZlciogYXJndW1lbnRCdWZmZXIsIE5TOjpVSW50ZWdlciBzdGFydE9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGFycmF5RWxlbWVudCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
c2V0QnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zm
c2V0c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBz
ZXRUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFRleHR1cmVzKE1UTDo6VGV4dHVy
ZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgc2V0U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0U2Ft
cGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdl
KTsKKworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgY29uc3RhbnREYXRhKE5TOjpVSW50ZWdl
ciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFJlbmRlclBpcGVsaW5l
U3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUsIE5TOjpVSW50
ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFJlbmRlclBpcGVs
aW5lU3RhdGVzKE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVzLCBOUzo6UmFuZ2Ug
cmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRDb21wdXRlUGlwZWxpbmVT
dGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUsIE5TOjpVSW50
ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldENvbXB1dGVQaXBl
bGluZVN0YXRlcyhNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZXMsIE5TOjpSYW5n
ZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEluZGlyZWN0Q29tbWFu
ZEJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFu
ZEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVycyhNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciog
YnVmZmVycywgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
c2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVy
ZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgY2xh
c3MgQXJndW1lbnRFbmNvZGVyKiBuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGluZGV4
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGUo
Y29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5jdGlvblRhYmxlLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRWaXNp
YmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5j
dGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBp
bmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVzKGNvbnN0IEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7Cit9OworCit9CisKKy8vIHByb3BlcnR5
OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6
ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRl
dmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpBcmd1bWVudEVuY29kZXI6Omxh
YmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5n
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogZW5jb2RlZExlbmd0aAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnRFbmNvZGVyOjplbmNvZGVkTGVuZ3Ro
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlZExlbmd0aCkpOworfQorCisvLyBwcm9wZXJ0
eTogYWxpZ25tZW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudEVuY29k
ZXI6OmFsaWdubWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsaWdubWVudCkpOworfQorCisv
LyBtZXRob2Q6IHNldEFyZ3VtZW50QnVmZmVyOm9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBcmd1bWVudEVuY29kZXI6OnNldEFyZ3VtZW50QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBh
cmd1bWVudEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QXJndW1lbnRCdWZmZXJfb2Zm
c2V0XyksIGFyZ3VtZW50QnVmZmVyLCBvZmZzZXQpOworfQorCisvLyBtZXRob2Q6IHNldEFyZ3Vt
ZW50QnVmZmVyOnN0YXJ0T2Zmc2V0OmFycmF5RWxlbWVudDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBcmd1bWVudEVuY29kZXI6OnNldEFyZ3VtZW50QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBh
cmd1bWVudEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHN0YXJ0T2Zmc2V0LCBOUzo6VUludGVnZXIgYXJy
YXlFbGVtZW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRBcmd1bWVudEJ1ZmZlcl9zdGFydE9mZnNldF9hcnJheUVsZW1lbnRfKSwg
YXJndW1lbnRCdWZmZXIsIHN0YXJ0T2Zmc2V0LCBhcnJheUVsZW1lbnQpOworfQorCisvLyBtZXRo
b2Q6IHNldEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1
bWVudEVuY29kZXI6OnNldEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUlu
dGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcl9vZmZzZXRfYXRJbmRl
eF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEJ1ZmZlcnM6
b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVy
OjpzZXRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdlciBv
ZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5nZV8p
LCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGV4dHVyZTph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0VGV4dHVy
ZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGV4
dHVyZV9hdEluZGV4XyksIHRleHR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUZXh0
dXJlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpz
ZXRUZXh0dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1cmVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDog
c2V0U2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRF
bmNvZGVyOjpzZXRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIs
IE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRlX2F0SW5kZXhfKSwgc2FtcGxlciwg
aW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZXM6d2l0aFJhbmdlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0U2FtcGxlclN0YXRlcyhNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVyU3Rh
dGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IGNvbnN0
YW50RGF0YUF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkKiBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6
Y29uc3RhbnREYXRhKE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb25zdGFudERhdGFBdElu
ZGV4XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRSZW5kZXJQaXBlbGluZVN0YXRlOmF0
SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRSZW5kZXJQ
aXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUsIE5T
OjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZV9hdEluZGV4XyksIHBpcGVs
aW5lLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXM6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0UmVuZGVy
UGlwZWxpbmVTdGF0ZXMoTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBwaXBlbGluZXMsIE5TOjpS
YW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXNfd2l0aFJhbmdlXyksIHBpcGVsaW5l
cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldENvbXB1dGVQaXBlbGluZVN0YXRlOmF0SW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRDb21wdXRlUGlw
ZWxpbmVTdGF0ZShjb25zdCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZSwgTlM6
OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZV9hdEluZGV4XyksIHBpcGVs
aW5lLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzOndp
dGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldENvbXB1
dGVQaXBlbGluZVN0YXRlcyhNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZXMsIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzX3dpdGhSYW5nZV8pLCBwaXBl
bGluZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXI6
YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldEluZGly
ZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJl
Y3RDb21tYW5kQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGlyZWN0Q29tbWFuZEJ1
ZmZlcl9hdEluZGV4XyksIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgaW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0SW5kaXJlY3RDb21tYW5kQnVmZmVycyhNVEw6
OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogYnVmZmVycywgTlM6OlJhbmdlIHJhbmdlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRp
cmVjdENvbW1hbmRCdWZmZXJzX3dpdGhSYW5nZV8pLCBidWZmZXJzLCByYW5nZSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3Qg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJ
bnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRJbmRleF8pLCBhY2NlbGVy
YXRpb25TdHJ1Y3R1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29k
ZXJGb3JCdWZmZXJBdEluZGV4OgorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEVuY29kZXIqIE1U
TDo6QXJndW1lbnRFbmNvZGVyOjpuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGluZGV4
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRFbmNvZGVy
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBcmd1bWVudEVuY29kZXJGb3JCdWZmZXJBdElu
ZGV4XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0VmlzaWJs
ZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJsZUZ1
bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVf
YXRJbmRleF8pLCB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6
IHNldFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QXJndW1lbnRFbmNvZGVyOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpW
aXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJsZUZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSBy
YW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhSYW5nZV8pLCB2aXNpYmxlRnVuY3Rp
b25UYWJsZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0SW5kZXhfKSwgaW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6
OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoUmFuZ2VfKSwgaW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MTQyZDM3NGMzNWJlMzlkNjY2MmU4MTRiNzcxOWUzNDY4NTJjNWZjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJpbmFyeUFyY2hpdmUu
aHBwCkBAIC0wLDAgKzEsMTM4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBCaW5hcnlBcmNoaXZlRXJy
b3IpIHsKKyAgICBCaW5hcnlBcmNoaXZlRXJyb3JOb25lID0gMCwKKyAgICBCaW5hcnlBcmNoaXZl
RXJyb3JJbnZhbGlkRmlsZSA9IDEsCisgICAgQmluYXJ5QXJjaGl2ZUVycm9yVW5leHBlY3RlZEVs
ZW1lbnQgPSAyLAorICAgIEJpbmFyeUFyY2hpdmVFcnJvckNvbXBpbGF0aW9uRmFpbHVyZSA9IDMs
Cit9OworCitjbGFzcyBCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWlu
ZzxCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCaW5hcnlBcmNo
aXZlRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpVUkwqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXJsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRVcmwoY29uc3QgTlM6OlVSTCogdXJsKTsKK307CisKK2NsYXNz
IEJpbmFyeUFyY2hpdmUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEJpbmFyeUFyY2hpdmU+Cit7
CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRGV2
aWNlKiBkZXZpY2UoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgYWRkQ29tcHV0ZVBpcGVs
aW5lRnVuY3Rpb25zKGNvbnN0IGNsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGJvb2wgICAgICAgICAgYWRkUmVuZGVy
UGlwZWxpbmVGdW5jdGlvbnMoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29sICAgICAgICAgIGFkZFRp
bGVSZW5kZXJQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29sICAg
ICAgICAgIHNlcmlhbGl6ZVRvVVJMKGNvbnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiogZXJy
b3IpOworCisgICAgYm9vbCAgICAgICAgICBhZGRGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlv
bkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IGNsYXNzIExpYnJhcnkqIGxpYnJhcnksIE5T
OjpFcnJvcioqIGVycm9yKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIE1UTDo6QmluYXJ5QXJjaGl2
ZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExCaW5hcnlBcmNo
aXZlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3I6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QmluYXJ5QXJjaGl2ZURl
c2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB1cmwKK19NVExfSU5MSU5FIE5TOjpVUkwq
IE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3I6OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVSTCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXJs
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcjo6
c2V0VXJsKGNvbnN0IE5TOjpVUkwqIHVybCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VXJsXyksIHVybCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpCaW5hcnlBcmNoaXZlOjps
YWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmlu
Zyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkJpbmFyeUFyY2hpdmU6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5F
IE1UTDo6RGV2aWNlKiBNVEw6OkJpbmFyeUFyY2hpdmU6OmRldmljZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGRldmljZSkpOworfQorCisvLyBtZXRob2Q6IGFkZENvbXB1dGVQaXBlbGluZUZ1bmN0
aW9uc1dpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkJpbmFyeUFy
Y2hpdmU6OmFkZENvbXB1dGVQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBNVEw6OkNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRk
Q29tcHV0ZVBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRv
ciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IGFkZFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0
aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6
YWRkUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnMoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRkUmVuZGVyUGlw
ZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7
Cit9CisKKy8vIG1ldGhvZDogYWRkVGlsZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2Ny
aXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6YWRkVGls
ZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zKGNvbnN0IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGRUaWxlUmVu
ZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBl
cnJvcik7Cit9CisKKy8vIG1ldGhvZDogc2VyaWFsaXplVG9VUkw6ZXJyb3I6CitfTVRMX0lOTElO
RSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6c2VyaWFsaXplVG9VUkwoY29uc3QgTlM6OlVSTCog
dXJsLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNlcmlhbGl6ZVRvVVJMX2Vycm9yXyksIHVy
bCwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IGFkZEZ1bmN0aW9uV2l0aERlc2NyaXB0b3I6bGli
cmFyeTplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpCaW5hcnlBcmNoaXZlOjphZGRGdW5j
dGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgTVRM
OjpMaWJyYXJ5KiBsaWJyYXJ5LCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFkZEZ1bmN0aW9u
V2l0aERlc2NyaXB0b3JfbGlicmFyeV9lcnJvcl8pLCBkZXNjcmlwdG9yLCBsaWJyYXJ5LCBlcnJv
cik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhODZiNmE5NTAx
YzY4NTNmMGM4ZjVhMGJiMGFiN2ViNjAzNzdjMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcApA
QCAtMCwwICsxLDI0NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5k
RW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7
CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBCbGl0T3B0aW9uKSB7CisgICAgQmxpdE9wdGlv
bk5vbmUgPSAwLAorICAgIEJsaXRPcHRpb25EZXB0aEZyb21EZXB0aFN0ZW5jaWwgPSAxLAorICAg
IEJsaXRPcHRpb25TdGVuY2lsRnJvbURlcHRoU3RlbmNpbCA9IDIsCisgICAgQmxpdE9wdGlvblJv
d0xpbmVhclBWUlRDID0gNCwKK307CisKK2NsYXNzIEJsaXRDb21tYW5kRW5jb2RlciA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8QmxpdENvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rlcj4KK3sK
K3B1YmxpYzoKKyAgICB2b2lkIHN5bmNocm9uaXplUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3Vy
Y2UqIHJlc291cmNlKTsKKworICAgIHZvaWQgc3luY2hyb25pemVUZXh0dXJlKGNvbnN0IGNsYXNz
IFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6OlVJbnRlZ2VyIGxldmVs
KTsKKworICAgIHZvaWQgY29weUZyb21UZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNvdXJj
ZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxl
dmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25z
dCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRMOjpPcmlnaW4gZGVz
dGluYXRpb25PcmlnaW4pOworCisgICAgdm9pZCBjb3B5RnJvbUJ1ZmZlcihjb25zdCBjbGFzcyBC
dWZmZXIqIHNvdXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgTlM6OlVJbnRl
Z2VyIHNvdXJjZUJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJJbWFnZSwg
TVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IGNsYXNzIFRleHR1cmUqIGRlc3RpbmF0aW9uVGV4
dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBkZXN0aW5hdGlvbk9yaWdpbik7CisKKyAgICB2b2lkIGNv
cHlGcm9tQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUludGVn
ZXIgc291cmNlT2Zmc2V0LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJSb3csIE5TOjpVSW50
ZWdlciBzb3VyY2VCeXRlc1BlckltYWdlLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgY2xh
c3MgVGV4dHVyZSogZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25T
bGljZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3RpbmF0
aW9uT3JpZ2luLCBNVEw6OkJsaXRPcHRpb24gb3B0aW9ucyk7CisKKyAgICB2b2lkIGNvcHlGcm9t
VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIg
c291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZlbCwgTVRMOjpPcmlnaW4gc291cmNl
T3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBkZXN0aW5h
dGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIg
ZGVzdGluYXRpb25CeXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJJ
bWFnZSk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiBz
b3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3Vy
Y2VMZXZlbCwgTVRMOjpPcmlnaW4gc291cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwg
Y29uc3QgY2xhc3MgQnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3Rp
bmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25CeXRlc1BlclJvdywgTlM6OlVJ
bnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZSwgTVRMOjpCbGl0T3B0aW9uIG9wdGlvbnMp
OworCisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcHMoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVy
ZSk7CisKKyAgICB2b2lkIGZpbGxCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5T
OjpSYW5nZSByYW5nZSwgdWludDhfdCB2YWx1ZSk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4dHVy
ZShjb25zdCBjbGFzcyBUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNl
U2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZlbCwgY29uc3QgY2xhc3MgVGV4dHVyZSogZGVz
dGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGljZSwgTlM6OlVJbnRl
Z2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZUNvdW50LCBOUzo6VUludGVn
ZXIgbGV2ZWxDb3VudCk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4dHVyZShjb25zdCBjbGFzcyBU
ZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBjb25zdCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRl
eHR1cmUpOworCisgICAgdm9pZCBjb3B5RnJvbUJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIHNv
dXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgY29uc3QgY2xhc3MgQnVmZmVy
KiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6
VUludGVnZXIgc2l6ZSk7CisKKyAgICB2b2lkIHVwZGF0ZUZlbmNlKGNvbnN0IGNsYXNzIEZlbmNl
KiBmZW5jZSk7CisKKyAgICB2b2lkIHdhaXRGb3JGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVu
Y2UpOworCisgICAgdm9pZCBnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnMoY29uc3QgY2xhc3MgVGV4
dHVyZSogdGV4dHVyZSwgTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbWlwTGV2ZWws
IE5TOjpVSW50ZWdlciBzbGljZSwgYm9vbCByZXNldENvdW50ZXJzLCBjb25zdCBjbGFzcyBCdWZm
ZXIqIGNvdW50ZXJzQnVmZmVyLCBOUzo6VUludGVnZXIgY291bnRlcnNCdWZmZXJPZmZzZXQpOwor
CisgICAgdm9pZCByZXNldFRleHR1cmVBY2Nlc3NDb3VudGVycyhjb25zdCBjbGFzcyBUZXh0dXJl
KiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBtaXBMZXZlbCwgTlM6
OlVJbnRlZ2VyIHNsaWNlKTsKKworICAgIHZvaWQgb3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vz
cyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlKTsKKworICAgIHZvaWQgb3B0aW1pemVDb250
ZW50c0ZvckdQVUFjY2Vzcyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVn
ZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZlbCk7CisKKyAgICB2b2lkIG9wdGltaXplQ29udGVu
dHNGb3JDUFVBY2Nlc3MoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSk7CisKKyAgICB2b2lk
IG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3MoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVy
ZSwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBOUzo6VUludGVnZXIgbGV2ZWwpOworCisgICAgdm9pZCBy
ZXNldENvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBi
dWZmZXIsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkIGNvcHlJbmRpcmVjdENvbW1hbmRC
dWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBzb3VyY2UsIE5TOjpSYW5n
ZSBzb3VyY2VSYW5nZSwgY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBkZXN0aW5h
dGlvbiwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uSW5kZXgpOworCisgICAgdm9pZCBvcHRpbWl6
ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIq
IGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgc2Ft
cGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1w
bGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKTsKKworICAg
IHZvaWQgcmVzb2x2ZUNvdW50ZXJzKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNh
bXBsZUJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGRlc3RpbmF0
aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZzZXQpOworfTsKKworfQorCisv
LyBtZXRob2Q6IHN5bmNocm9uaXplUmVzb3VyY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpzeW5jaHJvbml6ZVJlc291cmNlKGNvbnN0IE1UTDo6UmVzb3VyY2Uq
IHJlc291cmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzeW5jaHJvbml6ZVJlc291cmNlXyksIHJlc291cmNlKTsKK30KKworLy8gbWV0
aG9kOiBzeW5jaHJvbml6ZVRleHR1cmU6c2xpY2U6bGV2ZWw6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QmxpdENvbW1hbmRFbmNvZGVyOjpzeW5jaHJvbml6ZVRleHR1cmUoY29uc3QgTVRMOjpUZXh0
dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZlbCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3lu
Y2hyb25pemVUZXh0dXJlX3NsaWNlX2xldmVsXyksIHRleHR1cmUsIHNsaWNlLCBsZXZlbCk7Cit9
CisKKy8vIG1ldGhvZDogY29weUZyb21UZXh0dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNv
dXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvVGV4dHVyZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0
aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENv
bW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiBzb3VyY2VU
ZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZl
bCwgTVRMOjpPcmlnaW4gc291cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3Qg
TVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlv
blNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRMOjpPcmlnaW4gZGVzdGlu
YXRpb25PcmlnaW4pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF9zb3Vy
Y2VPcmlnaW5fc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGljZV9kZXN0aW5hdGlv
bkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luXyksIHNvdXJjZVRleHR1cmUsIHNvdXJjZVNsaWNlLCBz
b3VyY2VMZXZlbCwgc291cmNlT3JpZ2luLCBzb3VyY2VTaXplLCBkZXN0aW5hdGlvblRleHR1cmUs
IGRlc3RpbmF0aW9uU2xpY2UsIGRlc3RpbmF0aW9uTGV2ZWwsIGRlc3RpbmF0aW9uT3JpZ2luKTsK
K30KKworLy8gbWV0aG9kOiBjb3B5RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6c291cmNlQnl0ZXNQ
ZXJSb3c6c291cmNlQnl0ZXNQZXJJbWFnZTpzb3VyY2VTaXplOnRvVGV4dHVyZTpkZXN0aW5hdGlv
blNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbUJ1ZmZlcihjb25zdCBNVEw6OkJ1
ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUludGVnZXIgc291cmNlT2Zmc2V0LCBOUzo6VUludGVn
ZXIgc291cmNlQnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBzb3VyY2VCeXRlc1BlckltYWdlLCBN
VEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1
cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRp
b25MZXZlbCwgTVRMOjpPcmlnaW4gZGVzdGluYXRpb25PcmlnaW4pCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tQnVmZmVyX3Nv
dXJjZU9mZnNldF9zb3VyY2VCeXRlc1BlclJvd19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJjZVNp
emVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5hdGlv
bk9yaWdpbl8pLCBzb3VyY2VCdWZmZXIsIHNvdXJjZU9mZnNldCwgc291cmNlQnl0ZXNQZXJSb3cs
IHNvdXJjZUJ5dGVzUGVySW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RpbmF0aW9uVGV4dHVyZSwgZGVz
dGluYXRpb25TbGljZSwgZGVzdGluYXRpb25MZXZlbCwgZGVzdGluYXRpb25PcmlnaW4pOworfQor
CisvLyBtZXRob2Q6IGNvcHlGcm9tQnVmZmVyOnNvdXJjZU9mZnNldDpzb3VyY2VCeXRlc1BlclJv
dzpzb3VyY2VCeXRlc1BlckltYWdlOnNvdXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xp
Y2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0aW5hdGlvbk9yaWdpbjpvcHRpb25zOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Y29weUZyb21CdWZmZXIoY29uc3QgTVRM
OjpCdWZmZXIqIHNvdXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgTlM6OlVJ
bnRlZ2VyIHNvdXJjZUJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJJbWFn
ZSwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IE1UTDo6VGV4dHVyZSogZGVzdGluYXRpb25U
ZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGljZSwgTlM6OlVJbnRlZ2VyIGRlc3Rp
bmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3RpbmF0aW9uT3JpZ2luLCBNVEw6OkJsaXRPcHRp
b24gb3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoY29weUZyb21CdWZmZXJfc291cmNlT2Zmc2V0X3NvdXJjZUJ5dGVzUGVyUm93
X3NvdXJjZUJ5dGVzUGVySW1hZ2Vfc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGlj
ZV9kZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luX29wdGlvbnNfKSwgc291cmNlQnVm
ZmVyLCBzb3VyY2VPZmZzZXQsIHNvdXJjZUJ5dGVzUGVyUm93LCBzb3VyY2VCeXRlc1BlckltYWdl
LCBzb3VyY2VTaXplLCBkZXN0aW5hdGlvblRleHR1cmUsIGRlc3RpbmF0aW9uU2xpY2UsIGRlc3Rp
bmF0aW9uTGV2ZWwsIGRlc3RpbmF0aW9uT3JpZ2luLCBvcHRpb25zKTsKK30KKworLy8gbWV0aG9k
OiBjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291cmNlT3JpZ2luOnNv
dXJjZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVzdGluYXRpb25CeXRlc1BlclJv
dzpkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENv
bW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiBzb3VyY2VU
ZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZl
bCwgTVRMOjpPcmlnaW4gc291cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3Qg
TVRMOjpCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25P
ZmZzZXQsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIg
ZGVzdGluYXRpb25CeXRlc1BlckltYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291
cmNlTGV2ZWxfc291cmNlT3JpZ2luX3NvdXJjZVNpemVfdG9CdWZmZXJfZGVzdGluYXRpb25PZmZz
ZXRfZGVzdGluYXRpb25CeXRlc1BlclJvd19kZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2VfKSwgc291
cmNlVGV4dHVyZSwgc291cmNlU2xpY2UsIHNvdXJjZUxldmVsLCBzb3VyY2VPcmlnaW4sIHNvdXJj
ZVNpemUsIGRlc3RpbmF0aW9uQnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNldCwgZGVzdGluYXRpb25C
eXRlc1BlclJvdywgZGVzdGluYXRpb25CeXRlc1BlckltYWdlKTsKK30KKworLy8gbWV0aG9kOiBj
b3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291cmNlT3JpZ2luOnNvdXJj
ZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVzdGluYXRpb25CeXRlc1BlclJvdzpk
ZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6b3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpC
bGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tVGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHNv
dXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJj
ZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBj
b25zdCBNVEw6OkJ1ZmZlciogZGVzdGluYXRpb25CdWZmZXIsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvbk9mZnNldCwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3csIE5TOjpVSW50
ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2UsIE1UTDo6QmxpdE9wdGlvbiBvcHRpb25zKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNlTGV2ZWxfc291cmNlT3JpZ2luX3NvdXJj
ZVNpemVfdG9CdWZmZXJfZGVzdGluYXRpb25PZmZzZXRfZGVzdGluYXRpb25CeXRlc1BlclJvd19k
ZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2Vfb3B0aW9uc18pLCBzb3VyY2VUZXh0dXJlLCBzb3VyY2VT
bGljZSwgc291cmNlTGV2ZWwsIHNvdXJjZU9yaWdpbiwgc291cmNlU2l6ZSwgZGVzdGluYXRpb25C
dWZmZXIsIGRlc3RpbmF0aW9uT2Zmc2V0LCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBkZXN0aW5h
dGlvbkJ5dGVzUGVySW1hZ2UsIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IGdlbmVyYXRlTWlw
bWFwc0ZvclRleHR1cmU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVy
OjpnZW5lcmF0ZU1pcG1hcHMoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChnZW5lcmF0ZU1p
cG1hcHNGb3JUZXh0dXJlXyksIHRleHR1cmUpOworfQorCisvLyBtZXRob2Q6IGZpbGxCdWZmZXI6
cmFuZ2U6dmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpm
aWxsQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpSYW5nZSByYW5nZSwgdWlu
dDhfdCB2YWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZmlsbEJ1ZmZlcl9yYW5nZV92YWx1ZV8pLCBidWZmZXIsIHJhbmdlLCB2YWx1
ZSk7Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21UZXh0dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxl
dmVsOnRvVGV4dHVyZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6c2xpY2VDb3Vu
dDpsZXZlbENvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6
Y29weUZyb21UZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6OlVJ
bnRlZ2VyIHNvdXJjZVNsaWNlLCBOUzo6VUludGVnZXIgc291cmNlTGV2ZWwsIGNvbnN0IE1UTDo6
VGV4dHVyZSogZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGlj
ZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZUNvdW50
LCBOUzo6VUludGVnZXIgbGV2ZWxDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJjZVNsaWNlX3Nv
dXJjZUxldmVsX3RvVGV4dHVyZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfc2xp
Y2VDb3VudF9sZXZlbENvdW50XyksIHNvdXJjZVRleHR1cmUsIHNvdXJjZVNsaWNlLCBzb3VyY2VM
ZXZlbCwgZGVzdGluYXRpb25UZXh0dXJlLCBkZXN0aW5hdGlvblNsaWNlLCBkZXN0aW5hdGlvbkxl
dmVsLCBzbGljZUNvdW50LCBsZXZlbENvdW50KTsKK30KKworLy8gbWV0aG9kOiBjb3B5RnJvbVRl
eHR1cmU6dG9UZXh0dXJlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rl
cjo6Y29weUZyb21UZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwgY29u
c3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tVGV4dHVyZV90b1Rl
eHR1cmVfKSwgc291cmNlVGV4dHVyZSwgZGVzdGluYXRpb25UZXh0dXJlKTsKK30KKworLy8gbWV0
aG9kOiBjb3B5RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZz
ZXQ6c2l6ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlG
cm9tQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBzb3VyY2VCdWZmZXIsIE5TOjpVSW50ZWdlciBz
b3VyY2VPZmZzZXQsIGNvbnN0IE1UTDo6QnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIgc2l6ZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUZyb21CdWZm
ZXJfc291cmNlT2Zmc2V0X3RvQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0X3NpemVfKSwgc291cmNl
QnVmZmVyLCBzb3VyY2VPZmZzZXQsIGRlc3RpbmF0aW9uQnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNl
dCwgc2l6ZSk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlRmVuY2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjp1cGRhdGVGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBm
ZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRob2Q6IHdhaXRGb3JGZW5j
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OndhaXRGb3JGZW5j
ZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2FpdEZvckZlbmNlXyksIGZlbmNlKTsKK30KKwor
Ly8gbWV0aG9kOiBnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExldmVsOnNsaWNl
OnJlc2V0Q291bnRlcnM6Y291bnRlcnNCdWZmZXI6Y291bnRlcnNCdWZmZXJPZmZzZXQ6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpnZXRUZXh0dXJlQWNjZXNzQ291
bnRlcnMoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5T
OjpVSW50ZWdlciBtaXBMZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBib29sIHJlc2V0Q291bnRl
cnMsIGNvbnN0IE1UTDo6QnVmZmVyKiBjb3VudGVyc0J1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvdW50
ZXJzQnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnNfcmVnaW9uX21pcExldmVs
X3NsaWNlX3Jlc2V0Q291bnRlcnNfY291bnRlcnNCdWZmZXJfY291bnRlcnNCdWZmZXJPZmZzZXRf
KSwgdGV4dHVyZSwgcmVnaW9uLCBtaXBMZXZlbCwgc2xpY2UsIHJlc2V0Q291bnRlcnMsIGNvdW50
ZXJzQnVmZmVyLCBjb3VudGVyc0J1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXRU
ZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExldmVsOnNsaWNlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6cmVzZXRUZXh0dXJlQWNjZXNzQ291bnRlcnMo
Y29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50
ZWdlciBtaXBMZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldFRleHR1cmVBY2Nlc3NDb3Vu
dGVyc19yZWdpb25fbWlwTGV2ZWxfc2xpY2VfKSwgdGV4dHVyZSwgcmVnaW9uLCBtaXBMZXZlbCwg
c2xpY2UpOworfQorCisvLyBtZXRob2Q6IG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3M6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUNvbnRlbnRz
Rm9yR1BVQWNjZXNzKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3B0aW1pemVDb250ZW50
c0ZvckdQVUFjY2Vzc18pLCB0ZXh0dXJlKTsKK30KKworLy8gbWV0aG9kOiBvcHRpbWl6ZUNvbnRl
bnRzRm9yR1BVQWNjZXNzOnNsaWNlOmxldmVsOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRD
b21tYW5kRW5jb2Rlcjo6b3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vzcyhjb25zdCBNVEw6OlRl
eHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6OlVJbnRlZ2VyIGxldmVsKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChv
cHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzX3NsaWNlX2xldmVsXyksIHRleHR1cmUsIHNsaWNl
LCBsZXZlbCk7Cit9CisKKy8vIG1ldGhvZDogb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2VzczoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6Om9wdGltaXplQ29udGVu
dHNGb3JDUFVBY2Nlc3MoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChvcHRpbWl6ZUNvbnRl
bnRzRm9yQ1BVQWNjZXNzXyksIHRleHR1cmUpOworfQorCisvLyBtZXRob2Q6IG9wdGltaXplQ29u
dGVudHNGb3JDUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzKGNvbnN0IE1UTDo6
VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBOUzo6VUludGVnZXIgbGV2ZWwp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3Nfc2xpY2VfbGV2ZWxfKSwgdGV4dHVyZSwgc2xp
Y2UsIGxldmVsKTsKK30KKworLy8gbWV0aG9kOiByZXNldENvbW1hbmRzSW5CdWZmZXI6d2l0aFJh
bmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6cmVzZXRDb21t
YW5kc0luQnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBidWZmZXIsIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocmVzZXRDb21tYW5kc0luQnVmZmVyX3dpdGhSYW5nZV8pLCBidWZmZXIs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBjb3B5SW5kaXJlY3RDb21tYW5kQnVmZmVyOnNvdXJj
ZVJhbmdlOmRlc3RpbmF0aW9uOmRlc3RpbmF0aW9uSW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IE1U
TDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBzb3VyY2UsIE5TOjpSYW5nZSBzb3VyY2VSYW5nZSwg
Y29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGRlc3RpbmF0aW9uLCBOUzo6VUludGVn
ZXIgZGVzdGluYXRpb25JbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoY29weUluZGlyZWN0Q29tbWFuZEJ1ZmZlcl9zb3VyY2VSYW5n
ZV9kZXN0aW5hdGlvbl9kZXN0aW5hdGlvbkluZGV4XyksIHNvdXJjZSwgc291cmNlUmFuZ2UsIGRl
c3RpbmF0aW9uLCBkZXN0aW5hdGlvbkluZGV4KTsKK30KKworLy8gbWV0aG9kOiBvcHRpbWl6ZUlu
ZGlyZWN0Q29tbWFuZEJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6
OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6UmFuZ2Ug
cmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG9wdGltaXplSW5kaXJlY3RDb21tYW5kQnVmZmVyX3dpdGhSYW5nZV8pLCBpbmRpcmVj
dENvbW1hbmRCdWZmZXIsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzYW1wbGVDb3VudGVyc0lu
QnVmZmVyOmF0U2FtcGxlSW5kZXg6d2l0aEJhcnJpZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QmxpdENvbW1hbmRFbmNvZGVyOjpzYW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IE1UTDo6Q291
bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6VUludGVnZXIgc2FtcGxlSW5kZXgs
IGJvb2wgYmFycmllcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcl9hdFNhbXBsZUluZGV4X3dpdGhC
YXJyaWVyXyksIHNhbXBsZUJ1ZmZlciwgc2FtcGxlSW5kZXgsIGJhcnJpZXIpOworfQorCisvLyBt
ZXRob2Q6IHJlc29sdmVDb3VudGVyczppblJhbmdlOmRlc3RpbmF0aW9uQnVmZmVyOmRlc3RpbmF0
aW9uT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6cmVz
b2x2ZUNvdW50ZXJzKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVy
LCBOUzo6UmFuZ2UgcmFuZ2UsIGNvbnN0IE1UTDo6QnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvbHZlQ291bnRlcnNfaW5SYW5nZV9k
ZXN0aW5hdGlvbkJ1ZmZlcl9kZXN0aW5hdGlvbk9mZnNldF8pLCBzYW1wbGVCdWZmZXIsIHJhbmdl
LCBkZXN0aW5hdGlvbkJ1ZmZlciwgZGVzdGluYXRpb25PZmZzZXQpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRQYXNzLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFzcy5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzhlYWUzMWQ3MTI0ZGJhMzQ0MTAzZTdhNzNkNzk1NmQ0YmE1MzE2MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFz
cy5ocHAKQEAgLTAsMCArMSwxNjUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEJsaXRQYXNzLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJp
dmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1l
c3BhY2UgTVRMCit7CitjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEJsaXRQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCbGl0UGFzc1Nh
bXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xh
c3MgQ291bnRlclNhbXBsZUJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBs
ZUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVCdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNh
bXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0
YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVu
Y29kZXJTYW1wbGVJbmRleCk7Cit9OworCitjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEJsaXRQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBh
bGxvYygpOworCisgICAgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBh
dHRhY2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIEJsaXRQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdl
ciBhdHRhY2htZW50SW5kZXgpOworfTsKKworY2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yIDogcHVi
bGljIE5TOjpDb3B5aW5nPEJsaXRQYXNzRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGFsbG9jKCk7
CisKKyAgICBjbGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IqICAgICAg
ICAgICAgICAgICAgICAgYmxpdFBhc3NEZXNjcmlwdG9yKCk7CisKKyAgICBjbGFzcyBCbGl0UGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIHNhbXBsZUJ1ZmZlckF0dGFj
aG1lbnRzKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1U
TDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpC
bGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXIKK19NVExfSU5M
SU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0
dGFjaG1lbnREZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpC
bGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTYW1wbGVCdWZmZXIo
Y29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZUJ1
ZmZlcl8pLCBzYW1wbGVCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRPZkVuY29kZXJT
YW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QmxpdFBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3I6OnNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZFbmNv
ZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXhfKSwgc3RhcnRPZkVu
Y29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmRPZkVuY29kZXJTYW1wbGVJ
bmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChlbmRPZkVuY29kZXJTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0RW5k
T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleF8pLCBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCk7
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpCbGl0UGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJ
TkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1U
TDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdElu
ZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IqIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhl
ZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVj
dDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdFBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpC
bGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6
VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0Xyks
IGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzRGVzY3JpcHRvciogTVRMOjpCbGl0UGFzc0Rl
c2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpC
bGl0UGFzc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NEZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc0Rlc2Ny
aXB0b3IqIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6aW5pdDxNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYmxpdFBhc3NEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzRGVz
Y3JpcHRvciogTVRMOjpCbGl0UGFzc0Rlc2NyaXB0b3I6OmJsaXRQYXNzRGVzY3JpcHRvcigpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGl0UGFzc0Rlc2NyaXB0b3Iq
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEJsaXRQYXNzRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9T
RUwoYmxpdFBhc3NEZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXJB
dHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXJB
dHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCdWZmZXIuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYxYmRkZWZlYTc3MGQ1NDczZTMzZjFhYzRhYmIyNjQ2MmJmY2Y0NWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhw
cApAQCAtMCwwICsxLDEwMSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQnVmZmVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAy
MDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBw
IgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5o
cHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAi
TVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBCdWZmZXIgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPEJ1ZmZlciwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgTlM6
OlVJbnRlZ2VyICAgbGVuZ3RoKCkgY29uc3Q7CisKKyAgICB2b2lkKiAgICAgICAgICBjb250ZW50
cygpOworCisgICAgdm9pZCAgICAgICAgICAgZGlkTW9kaWZ5UmFuZ2UoTlM6OlJhbmdlIHJhbmdl
KTsKKworICAgIGNsYXNzIFRleHR1cmUqIG5ld1RleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBi
eXRlc1BlclJvdyk7CisKKyAgICB2b2lkICAgICAgICAgICBhZGREZWJ1Z01hcmtlcihjb25zdCBO
Uzo6U3RyaW5nKiBtYXJrZXIsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAg
ICByZW1vdmVBbGxEZWJ1Z01hcmtlcnMoKTsKKworICAgIGNsYXNzIEJ1ZmZlciogIHJlbW90ZVN0
b3JhZ2VCdWZmZXIoKSBjb25zdDsKKworICAgIGNsYXNzIEJ1ZmZlciogIG5ld1JlbW90ZUJ1ZmZl
clZpZXdGb3JEZXZpY2UoY29uc3QgY2xhc3MgRGV2aWNlKiBkZXZpY2UpOworfTsKKworfQorCisv
LyBwcm9wZXJ0eTogbGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpCdWZmZXI6
Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxlbmd0aCkpOworfQorCisvLyBtZXRob2Q6
IGNvbnRlbnRzCitfTVRMX0lOTElORSB2b2lkKiBNVEw6OkJ1ZmZlcjo6Y29udGVudHMoKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGNvbnRlbnRzKSk7Cit9CisKKy8vIG1ldGhvZDogZGlkTW9kaWZ5UmFuZ2U6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6QnVmZmVyOjpkaWRNb2RpZnlSYW5nZShOUzo6UmFuZ2UgcmFuZ2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRp
ZE1vZGlmeVJhbmdlXyksIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBuZXdUZXh0dXJlV2l0aERl
c2NyaXB0b3I6b2Zmc2V0OmJ5dGVzUGVyUm93OgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBN
VEw6OkJ1ZmZlcjo6bmV3VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNj
cmlwdG9yLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3cpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3Jfb2Zmc2V0X2J5dGVzUGVyUm93
XyksIGRlc2NyaXB0b3IsIG9mZnNldCwgYnl0ZXNQZXJSb3cpOworfQorCisvLyBtZXRob2Q6IGFk
ZERlYnVnTWFya2VyOnJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlcjo6YWRkRGVi
dWdNYXJrZXIoY29uc3QgTlM6OlN0cmluZyogbWFya2VyLCBOUzo6UmFuZ2UgcmFuZ2UpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFkZERl
YnVnTWFya2VyX3JhbmdlXyksIG1hcmtlciwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHJlbW92
ZUFsbERlYnVnTWFya2VycworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlcjo6cmVtb3ZlQWxs
RGVidWdNYXJrZXJzKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocmVtb3ZlQWxsRGVidWdNYXJrZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5
OiByZW1vdGVTdG9yYWdlQnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpCdWZm
ZXI6OnJlbW90ZVN0b3JhZ2VCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZW1vdGVTdG9y
YWdlQnVmZmVyKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVtb3RlQnVmZmVyVmlld0ZvckRldmlj
ZToKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkJ1ZmZlcjo6bmV3UmVtb3RlQnVmZmVy
Vmlld0ZvckRldmljZShjb25zdCBNVEw6OkRldmljZSogZGV2aWNlKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdSZW1vdGVCdWZmZXJWaWV3Rm9yRGV2aWNlXyksIGRldmljZSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1hbmFnZXIuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVNYW5hZ2Vy
LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xOGUxMGY1YzIzNGIwZjFlNDY2MDY0N2QxZWFiOTAwMDA0MjlkODc0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTENhcHR1cmVNYW5hZ2VyLmhwcApAQCAtMCwwICsxLDIyMCBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ2FwdHVyZU1h
bmFnZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdl
LmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExDYXB0dXJlTWFuYWdlci5ocHAiCisKK25h
bWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6SW50ZWdlciwgQ2FwdHVyZUVycm9yKSB7Cisg
ICAgQ2FwdHVyZUVycm9yTm90U3VwcG9ydGVkID0gMSwKKyAgICBDYXB0dXJlRXJyb3JBbHJlYWR5
Q2FwdHVyaW5nID0gMiwKKyAgICBDYXB0dXJlRXJyb3JJbnZhbGlkRGVzY3JpcHRvciA9IDMsCit9
OworCitfTVRMX0VOVU0oTlM6OkludGVnZXIsIENhcHR1cmVEZXN0aW5hdGlvbikgeworICAgIENh
cHR1cmVEZXN0aW5hdGlvbkRldmVsb3BlclRvb2xzID0gMSwKKyAgICBDYXB0dXJlRGVzdGluYXRp
b25HUFVUcmFjZURvY3VtZW50ID0gMiwKK307CisKK2NsYXNzIENhcHR1cmVEZXNjcmlwdG9yIDog
cHVibGljIE5TOjpDb3B5aW5nPENhcHR1cmVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0
YXRpYyBjbGFzcyBDYXB0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIENhcHR1
cmVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXB0dXJlT2JqZWN0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRDYXB0dXJlT2JqZWN0KGlkIGNhcHR1cmVPYmplY3QpOworCisgICAg
TVRMOjpDYXB0dXJlRGVzdGluYXRpb24gICAgICAgICBkZXN0aW5hdGlvbigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVzdGluYXRpb24oTVRMOjpDYXB0
dXJlRGVzdGluYXRpb24gZGVzdGluYXRpb24pOworCisgICAgTlM6OlVSTCogICAgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXRVUkwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldE91dHB1dFVSTChjb25zdCBOUzo6VVJMKiBvdXRwdXRVUkwpOworfTsKKwor
Y2xhc3MgQ2FwdHVyZU1hbmFnZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENhcHR1cmVNYW5h
Z2VyPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDYXB0dXJlTWFuYWdlciogYWxsb2Mo
KTsKKworICAgIHN0YXRpYyBjbGFzcyBDYXB0dXJlTWFuYWdlciogc2hhcmVkQ2FwdHVyZU1hbmFn
ZXIoKTsKKworICAgIE1UTDo6Q2FwdHVyZU1hbmFnZXIqICAgICAgICAgaW5pdCgpOworCisgICAg
Y2xhc3MgQ2FwdHVyZVNjb3BlKiAgICAgICAgICBuZXdDYXB0dXJlU2NvcGUoY29uc3QgY2xhc3Mg
RGV2aWNlKiBkZXZpY2UpOworCisgICAgY2xhc3MgQ2FwdHVyZVNjb3BlKiAgICAgICAgICBuZXdD
YXB0dXJlU2NvcGUoY29uc3QgY2xhc3MgQ29tbWFuZFF1ZXVlKiBjb21tYW5kUXVldWUpOworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0Rlc3RpbmF0aW9uKE1UTDo6
Q2FwdHVyZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKTsKKworICAgIGJvb2wgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhcnRDYXB0dXJlKGNvbnN0IGNsYXNzIENhcHR1cmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0Q2FwdHVyZShjb25zdCBjbGFzcyBEZXZpY2UqIGRldmljZSk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q2FwdHVyZShjb25zdCBjbGFzcyBD
b21tYW5kUXVldWUqIGNvbW1hbmRRdWV1ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0Q2FwdHVyZShjb25zdCBjbGFzcyBDYXB0dXJlU2NvcGUqIGNhcHR1cmVTY29w
ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BDYXB0dXJlKCk7CisK
KyAgICBjbGFzcyBDYXB0dXJlU2NvcGUqICAgICAgICAgIGRlZmF1bHRDYXB0dXJlU2NvcGUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlZmF1bHRDYXB0dXJl
U2NvcGUoY29uc3QgY2xhc3MgQ2FwdHVyZVNjb3BlKiBkZWZhdWx0Q2FwdHVyZVNjb3BlKTsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgaXNDYXB0dXJpbmcoKSBjb25zdDsKK307
CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVy
ZURlc2NyaXB0b3IqIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDYXB0dXJlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRF
X0NMUyhNVExDYXB0dXJlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3IqIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q2FwdHVyZURlc2NyaXB0
b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBjYXB0dXJlT2JqZWN0CitfTVRMX0lOTElORSBpZCBN
VEw6OkNhcHR1cmVEZXNjcmlwdG9yOjpjYXB0dXJlT2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxpZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjYXB0dXJl
T2JqZWN0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlRGVzY3JpcHRvcjo6
c2V0Q2FwdHVyZU9iamVjdChpZCBjYXB0dXJlT2JqZWN0KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDYXB0dXJlT2JqZWN0XyksIGNh
cHR1cmVPYmplY3QpOworfQorCisvLyBwcm9wZXJ0eTogZGVzdGluYXRpb24KK19NVExfSU5MSU5F
IE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OmRlc3RpbmF0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNhcHR1
cmVEZXN0aW5hdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXN0aW5hdGlvbikpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OnNldERlc3RpbmF0aW9u
KE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXN0aW5hdGlvbl8pLCBk
ZXN0aW5hdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBvdXRwdXRVUkwKK19NVExfSU5MSU5FIE5T
OjpVUkwqIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6Om91dHB1dFVSTCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVSTCo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwob3V0cHV0VVJMKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlRGVzY3Jp
cHRvcjo6c2V0T3V0cHV0VVJMKGNvbnN0IE5TOjpVUkwqIG91dHB1dFVSTCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3V0cHV0VVJM
XyksIG91dHB1dFVSTCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OkNhcHR1cmVNYW5hZ2VyKiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q2FwdHVyZU1hbmFnZXI+KF9NVExfUFJJ
VkFURV9DTFMoTVRMQ2FwdHVyZU1hbmFnZXIpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogc2hh
cmVkQ2FwdHVyZU1hbmFnZXIKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVyZU1hbmFnZXIqIE1UTDo6
Q2FwdHVyZU1hbmFnZXI6OnNoYXJlZENhcHR1cmVNYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNhcHR1cmVNYW5hZ2VyKj4oX01UTF9QUklWQVRFX0NMUyhN
VExDYXB0dXJlTWFuYWdlciksIF9NVExfUFJJVkFURV9TRUwoc2hhcmVkQ2FwdHVyZU1hbmFnZXIp
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVNYW5hZ2Vy
KiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OkNhcHR1cmVNYW5hZ2VyPigpOworfQorCisvLyBtZXRob2Q6IG5ld0NhcHR1cmVT
Y29wZVdpdGhEZXZpY2U6CitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVTY29wZSogTVRMOjpDYXB0
dXJlTWFuYWdlcjo6bmV3Q2FwdHVyZVNjb3BlKGNvbnN0IE1UTDo6RGV2aWNlKiBkZXZpY2UpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDYXB0dXJlU2NvcGUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhEZXZpY2VfKSwgZGV2aWNlKTsK
K30KKworLy8gbWV0aG9kOiBuZXdDYXB0dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlOgorX01UTF9J
TkxJTkUgTVRMOjpDYXB0dXJlU2NvcGUqIE1UTDo6Q2FwdHVyZU1hbmFnZXI6Om5ld0NhcHR1cmVT
Y29wZShjb25zdCBNVEw6OkNvbW1hbmRRdWV1ZSogY29tbWFuZFF1ZXVlKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q2FwdHVyZVNjb3BlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdDYXB0dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlXyksIGNvbW1hbmRRdWV1ZSk7
Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNEZXN0aW5hdGlvbjoKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpDYXB0dXJlTWFuYWdlcjo6c3VwcG9ydHNEZXN0aW5hdGlvbihNVEw6OkNhcHR1cmVEZXN0
aW5hdGlvbiBkZXN0aW5hdGlvbikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNh
ZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c0Rlc3RpbmF0aW9uXyksIGRl
c3RpbmF0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRvcjpl
cnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDYXB0dXJlTWFuYWdlcjo6c3RhcnRDYXB0dXJl
KGNvbnN0IE1UTDo6Q2FwdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVy
cm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRv
ciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IHN0YXJ0Q2FwdHVyZVdpdGhEZXZpY2U6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN0YXJ0Q2FwdHVyZShjb25zdCBNVEw6
OkRldmljZSogZGV2aWNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdGFydENhcHR1cmVXaXRoRGV2aWNlXyksIGRldmljZSk7Cit9CisK
Ky8vIG1ldGhvZDogc3RhcnRDYXB0dXJlV2l0aENvbW1hbmRRdWV1ZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDYXB0dXJlTWFuYWdlcjo6c3RhcnRDYXB0dXJlKGNvbnN0IE1UTDo6Q29tbWFuZFF1
ZXVlKiBjb21tYW5kUXVldWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0Q2FwdHVyZVdpdGhDb21tYW5kUXVldWVfKSwgY29tbWFu
ZFF1ZXVlKTsKK30KKworLy8gbWV0aG9kOiBzdGFydENhcHR1cmVXaXRoU2NvcGU6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN0YXJ0Q2FwdHVyZShjb25zdCBNVEw6OkNh
cHR1cmVTY29wZSogY2FwdHVyZVNjb3BlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFydENhcHR1cmVXaXRoU2NvcGVfKSwgY2FwdHVy
ZVNjb3BlKTsKK30KKworLy8gbWV0aG9kOiBzdG9wQ2FwdHVyZQorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNhcHR1cmVNYW5hZ2VyOjpzdG9wQ2FwdHVyZSgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3BDYXB0dXJlKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBkZWZhdWx0Q2FwdHVyZVNjb3BlCitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVT
Y29wZSogTVRMOjpDYXB0dXJlTWFuYWdlcjo6ZGVmYXVsdENhcHR1cmVTY29wZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDYXB0dXJlU2NvcGUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGRlZmF1bHRDYXB0dXJlU2NvcGUpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpzZXREZWZhdWx0Q2FwdHVyZVNjb3BlKGNvbnN0
IE1UTDo6Q2FwdHVyZVNjb3BlKiBkZWZhdWx0Q2FwdHVyZVNjb3BlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZWZhdWx0Q2FwdHVy
ZVNjb3BlXyksIGRlZmF1bHRDYXB0dXJlU2NvcGUpOworfQorCisvLyBwcm9wZXJ0eTogaXNDYXB0
dXJpbmcKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDYXB0dXJlTWFuYWdlcjo6aXNDYXB0dXJpbmco
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaXNDYXB0dXJpbmcpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlU2NvcGUuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVTY29wZS5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjM2MDIzNWExNDg2MWI4ZWNiY2ZmY2Y0MDJkNWEzY2ExMjQ1MTk5OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlU2Nv
cGUuaHBwCkBAIC0wLDAgKzEsOTIgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTENhcHR1cmVTY29wZS5ocHAKKy8vCisvLyBD
b3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5o
cHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlICIuLi9Gb3VuZGF0aW9u
L05TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICIuLi9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcCIKKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFj
ZSBNVEwKK3sKK2NsYXNzIENhcHR1cmVTY29wZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q2Fw
dHVyZVNjb3BlPgoreworcHVibGljOgorICAgIGNsYXNzIERldmljZSogICAgICAgZGV2aWNlKCkg
Y29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBwTGFiZWwpOworCisg
ICAgY2xhc3MgQ29tbWFuZFF1ZXVlKiBjb21tYW5kUXVldWUoKSBjb25zdDsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgYmVnaW5TY29wZSgpOworICAgIHZvaWQgICAgICAgICAgICAgICAgZW5k
U2NvcGUoKTsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpDYXB0dXJlU2NvcGU6OmRl
dmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGV2aWNlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6Q2FwdHVyZVNjb3BlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlU2NvcGU6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcq
IHBMYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0TGFiZWxfKSwgcExhYmVsKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZFF1ZXVl
KiBNVEw6OkNhcHR1cmVTY29wZTo6Y29tbWFuZFF1ZXVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxDb21tYW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGNvbW1hbmRRdWV1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVTY29wZTo6YmVnaW5T
Y29wZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChiZWdpblNjb3BlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZVNj
b3BlOjplbmRTY29wZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChlbmRTY29wZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMGZjOThlNTExYmY2YTNhZjMwZDM0M2Q0YmIzZjY1YjU1NGFmMTIwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRCdWZm
ZXIuaHBwCkBAIC0wLDAgKzEsNDY1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcAorLy8KKy8v
IENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1U
TERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAi
TVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgor
CisjaW5jbHVkZSAiTVRMQ29tbWFuZEJ1ZmZlci5ocHAiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ29tbWFuZEJ1ZmZl
clN0YXR1cykgeworICAgIENvbW1hbmRCdWZmZXJTdGF0dXNOb3RFbnF1ZXVlZCA9IDAsCisgICAg
Q29tbWFuZEJ1ZmZlclN0YXR1c0VucXVldWVkID0gMSwKKyAgICBDb21tYW5kQnVmZmVyU3RhdHVz
Q29tbWl0dGVkID0gMiwKKyAgICBDb21tYW5kQnVmZmVyU3RhdHVzU2NoZWR1bGVkID0gMywKKyAg
ICBDb21tYW5kQnVmZmVyU3RhdHVzQ29tcGxldGVkID0gNCwKKyAgICBDb21tYW5kQnVmZmVyU3Rh
dHVzRXJyb3IgPSA1LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ29tbWFuZEJ1ZmZl
ckVycm9yKSB7CisgICAgQ29tbWFuZEJ1ZmZlckVycm9yTm9uZSA9IDAsCisgICAgQ29tbWFuZEJ1
ZmZlckVycm9yVGltZW91dCA9IDIsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yUGFnZUZhdWx0ID0g
MywKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JBY2Nlc3NSZXZva2VkID0gNCwKKyAgICBDb21tYW5k
QnVmZmVyRXJyb3JCbGFja2xpc3RlZCA9IDQsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yTm90UGVy
bWl0dGVkID0gNywKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JPdXRPZk1lbW9yeSA9IDgsCisgICAg
Q29tbWFuZEJ1ZmZlckVycm9ySW52YWxpZFJlc291cmNlID0gOSwKKyAgICBDb21tYW5kQnVmZmVy
RXJyb3JNZW1vcnlsZXNzID0gMTAsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yRGV2aWNlUmVtb3Zl
ZCA9IDExLAorICAgIENvbW1hbmRCdWZmZXJFcnJvclN0YWNrT3ZlcmZsb3cgPSAxMiwKK307CisK
K19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIENvbW1hbmRCdWZmZXJFcnJvck9wdGlvbikgewor
ICAgIENvbW1hbmRCdWZmZXJFcnJvck9wdGlvbk5vbmUgPSAwLAorICAgIENvbW1hbmRCdWZmZXJF
cnJvck9wdGlvbkVuY29kZXJFeGVjdXRpb25TdGF0dXMgPSAxLAorfTsKKworX01UTF9FTlVNKE5T
OjpJbnRlZ2VyLCBDb21tYW5kRW5jb2RlckVycm9yU3RhdGUpIHsKKyAgICBDb21tYW5kRW5jb2Rl
ckVycm9yU3RhdGVVbmtub3duID0gMCwKKyAgICBDb21tYW5kRW5jb2RlckVycm9yU3RhdGVDb21w
bGV0ZWQgPSAxLAorICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZUFmZmVjdGVkID0gMiwKKyAg
ICBDb21tYW5kRW5jb2RlckVycm9yU3RhdGVQZW5kaW5nID0gMywKKyAgICBDb21tYW5kRW5jb2Rl
ckVycm9yU3RhdGVGYXVsdGVkID0gNCwKK307CisKK2NsYXNzIENvbW1hbmRCdWZmZXJEZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPgoreworcHVi
bGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsK
KworICAgIGNsYXNzIENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW5lZFJlZmVyZW5j
ZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFJldGFpbmVkUmVmZXJlbmNlcyhib29sIHJldGFpbmVkUmVmZXJlbmNlcyk7CisKKyAgICBNVEw6
OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbiAgICAgICAgIGVycm9yT3B0aW9ucygpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JPcHRpb25z
KE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uIGVycm9yT3B0aW9ucyk7Cit9OworCitjbGFz
cyBDb21tYW5kQnVmZmVyRW5jb2RlckluZm8gOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbW1h
bmRCdWZmZXJFbmNvZGVySW5mbz4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgICAgICAg
ICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAg
ICAgICAgZGVidWdTaWducG9zdHMoKSBjb25zdDsKKworICAgIE1UTDo6Q29tbWFuZEVuY29kZXJF
cnJvclN0YXRlIGVycm9yU3RhdGUoKSBjb25zdDsKK307CisKK19NVExfRU5VTShOUzo6VUludGVn
ZXIsIERpc3BhdGNoVHlwZSkgeworICAgIERpc3BhdGNoVHlwZVNlcmlhbCA9IDAsCisgICAgRGlz
cGF0Y2hUeXBlQ29uY3VycmVudCA9IDEsCit9OworCitjbGFzcyBDb21tYW5kQnVmZmVyOworCit1
c2luZyBDb21tYW5kQnVmZmVySGFuZGxlciA9IHZvaWQgKF4pKENvbW1hbmRCdWZmZXIqKTsKKwor
dXNpbmcgSGFuZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkKENvbW1hbmRCdWZmZXIq
KT47CisKK2NsYXNzIENvbW1hbmRCdWZmZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbW1h
bmRCdWZmZXI+Cit7CitwdWJsaWM6CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZFNjaGVkdWxlZEhhbmRsZXIoY29uc3QgSGFuZGxlckZ1bmN0aW9uJiBm
dW5jdGlvbik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkQ29tcGxldGVkSGFuZGxlcihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKTsK
KworICAgIGNsYXNzIERldmljZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2Uo
KSBjb25zdDsKKworICAgIGNsYXNzIENvbW1hbmRRdWV1ZSogICAgICAgICAgICAgICAgICAgICAg
ICBjb21tYW5kUXVldWUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXRhaW5lZFJlZmVyZW5jZXMoKSBjb25zdDsKKworICAgIE1UTDo6
Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uICAgICAgICAgICAgICBlcnJvck9wdGlvbnMoKSBjb25z
dDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJl
bCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisKKyAgICBDRlRpbWVJbnRlcnZh
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsU3RhcnRUaW1lKCkgY29uc3Q7CisK
KyAgICBDRlRpbWVJbnRlcnZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsRW5k
VGltZSgpIGNvbnN0OworCisgICAgY2xhc3MgTG9nQ29udGFpbmVyKiAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ3MoKSBjb25zdDsKKworICAgIENGVGltZUludGVydmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHUFVTdGFydFRpbWUoKSBjb25zdDsKKworICAgIENGVGltZUludGVydmFs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUFVFbmRUaW1lKCkgY29uc3Q7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5xdWV1ZSgpOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdCgpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFNjaGVk
dWxlZEhhbmRsZXIoY29uc3QgTVRMOjpDb21tYW5kQnVmZmVySGFuZGxlciBibG9jayk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudERyYXdh
YmxlKGNvbnN0IGNsYXNzIERyYXdhYmxlKiBkcmF3YWJsZSk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudERyYXdhYmxlQXRUaW1lKGNvbnN0
IGNsYXNzIERyYXdhYmxlKiBkcmF3YWJsZSwgQ0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9uVGlt
ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJl
c2VudERyYXdhYmxlQWZ0ZXJNaW5pbXVtRHVyYXRpb24oY29uc3QgY2xhc3MgRHJhd2FibGUqIGRy
YXdhYmxlLCBDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbik7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdFVudGlsU2NoZWR1bGVkKCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29tcGxldGVkSGFu
ZGxlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJIYW5kbGVyIGJsb2NrKTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0VW50aWxDb21wbGV0ZWQo
KTsKKworICAgIE1UTDo6Q29tbWFuZEJ1ZmZlclN0YXR1cyAgICAgICAgICAgICAgICAgICBzdGF0
dXMoKSBjb25zdDsKKworICAgIE5TOjpFcnJvciogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcigpIGNvbnN0OworCisgICAgY2xhc3MgQmxpdENvbW1hbmRFbmNvZGVyKiAgICAg
ICAgICAgICAgICAgIGJsaXRDb21tYW5kRW5jb2RlcigpOworCisgICAgY2xhc3MgUmVuZGVyQ29t
bWFuZEVuY29kZXIqICAgICAgICAgICAgICAgIHJlbmRlckNvbW1hbmRFbmNvZGVyKGNvbnN0IGNs
YXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVzY3JpcHRvcik7CisKKyAgICBj
bGFzcyBDb21wdXRlQ29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAgY29tcHV0ZUNvbW1hbmRF
bmNvZGVyKGNvbnN0IGNsYXNzIENvbXB1dGVQYXNzRGVzY3JpcHRvciogY29tcHV0ZVBhc3NEZXNj
cmlwdG9yKTsKKworICAgIGNsYXNzIEJsaXRDb21tYW5kRW5jb2RlciogICAgICAgICAgICAgICAg
ICBibGl0Q29tbWFuZEVuY29kZXIoY29uc3QgY2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yKiBibGl0
UGFzc0Rlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQ29tcHV0ZUNvbW1hbmRFbmNvZGVyKiAgICAg
ICAgICAgICAgIGNvbXB1dGVDb21tYW5kRW5jb2RlcigpOworCisgICAgY2xhc3MgQ29tcHV0ZUNv
bW1hbmRFbmNvZGVyKiAgICAgICAgICAgICAgIGNvbXB1dGVDb21tYW5kRW5jb2RlcihNVEw6OkRp
c3BhdGNoVHlwZSBkaXNwYXRjaFR5cGUpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVuY29kZVdhaXQoY29uc3QgY2xhc3MgRXZlbnQqIGV2ZW50LCB1
aW50NjRfdCB2YWx1ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5jb2RlU2lnbmFsRXZlbnQoY29uc3QgY2xhc3MgRXZlbnQqIGV2ZW50LCB1aW50
NjRfdCB2YWx1ZSk7CisKKyAgICBjbGFzcyBQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyKiAg
ICAgICAgcGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBjbGFzcyBSZW5kZXJQYXNz
RGVzY3JpcHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3IpOworCisgICAgY2xhc3MgUmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyKiAgICAgICAgIHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcigp
OworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKiAgICAgICAgIHJlc291
cmNlU3RhdGVDb21tYW5kRW5jb2Rlcihjb25zdCBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc0Rlc2Ny
aXB0b3IqIHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciogYWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFu
ZEVuY29kZXIoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoRGVidWdHcm91cChjb25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpOworCisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcERlYnVnR3JvdXAoKTsK
K307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21tYW5kQnVmZmVyRGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21tYW5kQnVmZmVyRGVzY3JpcHRvcikpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2Ny
aXB0b3IqIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiByZXRhaW5lZFJlZmVyZW5jZXMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpD
b21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6cmV0YWluZWRSZWZlcmVuY2VzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHJldGFpbmVkUmVmZXJlbmNlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3I6OnNldFJldGFpbmVkUmVmZXJlbmNlcyhib29sIHJldGFpbmVkUmVm
ZXJlbmNlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0UmV0YWluZWRSZWZlcmVuY2VzXyksIHJldGFpbmVkUmVmZXJlbmNlcyk7Cit9
CisKKy8vIHByb3BlcnR5OiBlcnJvck9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1
ZmZlckVycm9yT3B0aW9uIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmVycm9yT3B0aW9u
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5k
QnVmZmVyRXJyb3JPcHRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXJyb3JPcHRpb25zKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6c2V0
RXJyb3JPcHRpb25zKE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uIGVycm9yT3B0aW9ucykK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RXJyb3JPcHRpb25zXyksIGVycm9yT3B0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJl
bAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21tYW5kQnVmZmVyRW5jb2RlckluZm86
OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTog
ZGVidWdTaWducG9zdHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpDb21tYW5kQnVmZmVy
RW5jb2RlckluZm86OmRlYnVnU2lnbnBvc3RzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlYnVnU2ln
bnBvc3RzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBlcnJvclN0YXRlCitfTVRMX0lOTElORSBNVEw6
OkNvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZSBNVEw6OkNvbW1hbmRCdWZmZXJFbmNvZGVySW5mbzo6
ZXJyb3JTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpDb21tYW5kRW5jb2RlckVycm9yU3RhdGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXJyb3JT
dGF0ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YWRkU2No
ZWR1bGVkSGFuZGxlcihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKQoreworICAgIF9f
YmxvY2sgSGFuZGxlckZ1bmN0aW9uIGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIGFk
ZFNjaGVkdWxlZEhhbmRsZXIoXihNVEw6OkNvbW1hbmRCdWZmZXIqIHBDb21tYW5kQnVmZmVyKSB7
IGJsb2NrRnVuY3Rpb24ocENvbW1hbmRCdWZmZXIpOyB9KTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmFkZENvbXBsZXRlZEhhbmRsZXIoY29uc3QgSGFuZGxlckZ1
bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIEhhbmRsZXJGdW5jdGlvbiBibG9ja0Z1
bmN0aW9uID0gZnVuY3Rpb247CisKKyAgICBhZGRDb21wbGV0ZWRIYW5kbGVyKF4oTVRMOjpDb21t
YW5kQnVmZmVyKiBwQ29tbWFuZEJ1ZmZlcikgeyBibG9ja0Z1bmN0aW9uKHBDb21tYW5kQnVmZmVy
KTsgfSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNl
KiBNVEw6OkNvbW1hbmRCdWZmZXI6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmlj
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogY29tbWFuZFF1ZXVlCitfTVRMX0lOTElORSBNVEw6OkNv
bW1hbmRRdWV1ZSogTVRMOjpDb21tYW5kQnVmZmVyOjpjb21tYW5kUXVldWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZFF1ZXVlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChjb21tYW5kUXVldWUpKTsKK30KKworLy8gcHJvcGVydHk6IHJldGFp
bmVkUmVmZXJlbmNlcworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkNvbW1hbmRCdWZmZXI6OnJldGFp
bmVkUmVmZXJlbmNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXRhaW5lZFJlZmVyZW5jZXMpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGVycm9yT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVy
RXJyb3JPcHRpb24gTVRMOjpDb21tYW5kQnVmZmVyOjplcnJvck9wdGlvbnMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0
aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVycm9yT3B0aW9ucykpOworfQorCisvLyBwcm9w
ZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJp
bmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21tYW5kQnVmZmVyOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eToga2VybmVsU3RhcnRUaW1lCitf
TVRMX0lOTElORSBDRlRpbWVJbnRlcnZhbCBNVEw6OkNvbW1hbmRCdWZmZXI6Omtlcm5lbFN0YXJ0
VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Q0ZUaW1lSW50
ZXJ2YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoa2VybmVsU3RhcnRUaW1lKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBrZXJuZWxFbmRUaW1lCitfTVRMX0lOTElORSBDRlRpbWVJbnRlcnZhbCBNVEw6
OkNvbW1hbmRCdWZmZXI6Omtlcm5lbEVuZFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPENGVGltZUludGVydmFsPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGtl
cm5lbEVuZFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGxvZ3MKK19NVExfSU5MSU5FIE1UTDo6
TG9nQ29udGFpbmVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmxvZ3MoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TG9nQ29udGFpbmVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChsb2dzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBHUFVTdGFydFRpbWUKK19NVExf
SU5MSU5FIENGVGltZUludGVydmFsIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6R1BVU3RhcnRUaW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxDRlRpbWVJbnRlcnZhbD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChHUFVTdGFydFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6
IEdQVUVuZFRpbWUKK19NVExfSU5MSU5FIENGVGltZUludGVydmFsIE1UTDo6Q29tbWFuZEJ1ZmZl
cjo6R1BVRW5kVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Q0ZUaW1lSW50ZXJ2YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoR1BVRW5kVGltZSkpOworfQor
CisvLyBtZXRob2Q6IGVucXVldWUKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVy
OjplbnF1ZXVlKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZW5xdWV1ZSkpOworfQorCisvLyBtZXRob2Q6IGNvbW1pdAorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmNvbW1pdCgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbW1pdCkpOworfQorCisvLyBt
ZXRob2Q6IGFkZFNjaGVkdWxlZEhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFu
ZEJ1ZmZlcjo6YWRkU2NoZWR1bGVkSGFuZGxlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJIYW5k
bGVyIGJsb2NrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChhZGRTY2hlZHVsZWRIYW5kbGVyXyksIGJsb2NrKTsKK30KKworLy8gbWV0aG9k
OiBwcmVzZW50RHJhd2FibGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
cHJlc2VudERyYXdhYmxlKGNvbnN0IE1UTDo6RHJhd2FibGUqIGRyYXdhYmxlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVzZW50RHJh
d2FibGVfKSwgZHJhd2FibGUpOworfQorCisvLyBtZXRob2Q6IHByZXNlbnREcmF3YWJsZTphdFRp
bWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cHJlc2VudERyYXdhYmxl
QXRUaW1lKGNvbnN0IE1UTDo6RHJhd2FibGUqIGRyYXdhYmxlLCBDRlRpbWVJbnRlcnZhbCBwcmVz
ZW50YXRpb25UaW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChwcmVzZW50RHJhd2FibGVfYXRUaW1lXyksIGRyYXdhYmxlLCBwcmVzZW50
YXRpb25UaW1lKTsKK30KKworLy8gbWV0aG9kOiBwcmVzZW50RHJhd2FibGU6YWZ0ZXJNaW5pbXVt
RHVyYXRpb246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cHJlc2VudERy
YXdhYmxlQWZ0ZXJNaW5pbXVtRHVyYXRpb24oY29uc3QgTVRMOjpEcmF3YWJsZSogZHJhd2FibGUs
IENGVGltZUludGVydmFsIGR1cmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVzZW50RHJhd2FibGVfYWZ0ZXJNaW5pbXVtRHVy
YXRpb25fKSwgZHJhd2FibGUsIGR1cmF0aW9uKTsKK30KKworLy8gbWV0aG9kOiB3YWl0VW50aWxT
Y2hlZHVsZWQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjp3YWl0VW50aWxT
Y2hlZHVsZWQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh3YWl0VW50aWxTY2hlZHVsZWQpKTsKK30KKworLy8gbWV0aG9kOiBhZGRDb21w
bGV0ZWRIYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmFkZENv
bXBsZXRlZEhhbmRsZXIoY29uc3QgTVRMOjpDb21tYW5kQnVmZmVySGFuZGxlciBibG9jaykKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRk
Q29tcGxldGVkSGFuZGxlcl8pLCBibG9jayk7Cit9CisKKy8vIG1ldGhvZDogd2FpdFVudGlsQ29t
cGxldGVkCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6d2FpdFVudGlsQ29t
cGxldGVkKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwod2FpdFVudGlsQ29tcGxldGVkKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGF0dXMK
K19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlclN0YXR1cyBNVEw6OkNvbW1hbmRCdWZmZXI6
OnN0YXR1cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpD
b21tYW5kQnVmZmVyU3RhdHVzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXR1cykpOworfQor
CisvLyBwcm9wZXJ0eTogZXJyb3IKK19NVExfSU5MSU5FIE5TOjpFcnJvciogTVRMOjpDb21tYW5k
QnVmZmVyOjplcnJvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OkVycm9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlcnJvcikpOworfQorCisvLyBtZXRo
b2Q6IGJsaXRDb21tYW5kRW5jb2RlcgorX01UTF9JTkxJTkUgTVRMOjpCbGl0Q29tbWFuZEVuY29k
ZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YmxpdENvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcio+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYmxpdENvbW1hbmRFbmNvZGVyKSk7Cit9CisKKy8vIG1ldGhvZDogcmVu
ZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cmVuZGVyQ29tbWFuZEVuY29kZXIo
Y29uc3QgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3IpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3Jp
cHRvcl8pLCByZW5kZXJQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogY29tcHV0ZUNv
bW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVDb21t
YW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpjb21wdXRlQ29tbWFuZEVuY29kZXIoY29u
c3QgTVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3IqIGNvbXB1dGVQYXNzRGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rl
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tcHV0ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2Ny
aXB0b3JfKSwgY29tcHV0ZVBhc3NEZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBibGl0Q29t
bWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6QmxpdENvbW1hbmRF
bmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmJsaXRDb21tYW5kRW5jb2Rlcihjb25zdCBNVEw6
OkJsaXRQYXNzRGVzY3JpcHRvciogYmxpdFBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChibGl0Q29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8pLCBibGl0UGFzc0Rl
c2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IGNvbXB1dGVDb21tYW5kRW5jb2RlcgorX01UTF9J
TkxJTkUgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6Y29t
cHV0ZUNvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tcHV0
ZUNvbW1hbmRFbmNvZGVyKSk7Cit9CisKKy8vIG1ldGhvZDogY29tcHV0ZUNvbW1hbmRFbmNvZGVy
V2l0aERpc3BhdGNoVHlwZToKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVy
KiBNVEw6OkNvbW1hbmRCdWZmZXI6OmNvbXB1dGVDb21tYW5kRW5jb2RlcihNVEw6OkRpc3BhdGNo
VHlwZSBkaXNwYXRjaFR5cGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbXB1dGVD
b21tYW5kRW5jb2RlcldpdGhEaXNwYXRjaFR5cGVfKSwgZGlzcGF0Y2hUeXBlKTsKK30KKworLy8g
bWV0aG9kOiBlbmNvZGVXYWl0Rm9yRXZlbnQ6dmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tbWFuZEJ1ZmZlcjo6ZW5jb2RlV2FpdChjb25zdCBNVEw6OkV2ZW50KiBldmVudCwgdWludDY0
X3QgdmFsdWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGVuY29kZVdhaXRGb3JFdmVudF92YWx1ZV8pLCBldmVudCwgdmFsdWUpOworfQor
CisvLyBtZXRob2Q6IGVuY29kZVNpZ25hbEV2ZW50OnZhbHVlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNvbW1hbmRCdWZmZXI6OmVuY29kZVNpZ25hbEV2ZW50KGNvbnN0IE1UTDo6RXZlbnQqIGV2
ZW50LCB1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlU2lnbmFsRXZlbnRfdmFsdWVfKSwgZXZlbnQsIHZh
bHVlKTsKK30KKworLy8gbWV0aG9kOiBwYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERl
c2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIq
IE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBN
VEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVzY3JpcHRvcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29k
ZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXJX
aXRoRGVzY3JpcHRvcl8pLCByZW5kZXJQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDog
cmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3Rh
dGVDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpyZXNvdXJjZVN0YXRlQ29tbWFu
ZEVuY29kZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3Vy
Y2VTdGF0ZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXIpKTsKK30KKworLy8gbWV0aG9kOiByZXNvdXJjZVN0YXRlQ29tbWFu
ZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZUNv
bW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OnJlc291cmNlU3RhdGVDb21tYW5kRW5j
b2Rlcihjb25zdCBNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogcmVzb3VyY2VTdGF0
ZVBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNv
dXJjZVN0YXRlQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8pLCByZXNvdXJjZVN0YXRlUGFz
c0Rlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IGFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1h
bmRFbmNvZGVyCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRF
bmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRF
bmNvZGVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlcikpOworfQorCisvLyBtZXRob2Q6IHB1c2hE
ZWJ1Z0dyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OnB1c2hEZWJ1
Z0dyb3VwKGNvbnN0IE5TOjpTdHJpbmcqIHN0cmluZykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHVzaERlYnVnR3JvdXBfKSwgc3RyaW5n
KTsKK30KKworLy8gbWV0aG9kOiBwb3BEZWJ1Z0dyb3VwCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tbWFuZEJ1ZmZlcjo6cG9wRGVidWdHcm91cCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBvcERlYnVnR3JvdXApKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kRW5j
b2Rlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tbWFu
ZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMWYzOTJiYjRmNjAxNGE5MTNlMWNhMjU1MzAxYWY0
YWU2OGMxZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQ29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsMTAxIEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExD
b21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9PUFRJT05T
KE5TOjpVSW50ZWdlciwgUmVzb3VyY2VVc2FnZSkgeworICAgIFJlc291cmNlVXNhZ2VSZWFkID0g
MSwKKyAgICBSZXNvdXJjZVVzYWdlV3JpdGUgPSAyLAorICAgIFJlc291cmNlVXNhZ2VTYW1wbGUg
PSA0LAorfTsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgQmFycmllclNjb3BlKSB7Cisg
ICAgQmFycmllclNjb3BlQnVmZmVycyA9IDEsCisgICAgQmFycmllclNjb3BlVGV4dHVyZXMgPSAy
LAorICAgIEJhcnJpZXJTY29wZVJlbmRlclRhcmdldHMgPSA0LAorfTsKKworY2xhc3MgQ29tbWFu
ZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbW1hbmRFbmNvZGVyPgoreworcHVi
bGljOgorICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5n
KiAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6
U3RyaW5nKiBsYWJlbCk7CisKKyAgICB2b2lkICAgICAgICAgIGVuZEVuY29kaW5nKCk7CisKKyAg
ICB2b2lkICAgICAgICAgIGluc2VydERlYnVnU2lnbnBvc3QoY29uc3QgTlM6OlN0cmluZyogc3Ry
aW5nKTsKKworICAgIHZvaWQgICAgICAgICAgcHVzaERlYnVnR3JvdXAoY29uc3QgTlM6OlN0cmlu
Zyogc3RyaW5nKTsKKworICAgIHZvaWQgICAgICAgICAgcG9wRGVidWdHcm91cCgpOworfTsKKwor
fQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpD
b21tYW5kRW5jb2Rlcjo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21t
YW5kRW5jb2Rlcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kRW5jb2Rlcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0
cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gbWV0aG9kOiBlbmRFbmNv
ZGluZworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRFbmNvZGVyOjplbmRFbmNvZGluZygp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGVuZEVuY29kaW5nKSk7Cit9CisKKy8vIG1ldGhvZDogaW5zZXJ0RGVidWdTaWducG9zdDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVidWdTaWducG9zdChj
b25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc2VydERlYnVnU2lnbnBvc3RfKSwgc3RyaW5nKTsK
K30KKworLy8gbWV0aG9kOiBwdXNoRGVidWdHcm91cDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21tYW5kRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXAoY29uc3QgTlM6OlN0cmluZyogc3RyaW5nKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChw
dXNoRGVidWdHcm91cF8pLCBzdHJpbmcpOworfQorCisvLyBtZXRob2Q6IHBvcERlYnVnR3JvdXAK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kRW5jb2Rlcjo6cG9wRGVidWdHcm91cCgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBv
cERlYnVnR3JvdXApKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTENvbW1hbmRRdWV1ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU0YTE2ZTE0YTYz
Y2VjYzNlYzRiYzc0ZWJiZjA4NWE0NjVkNjViZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBwCkBAIC0wLDAg
KzEsODkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIE1ldGFsL01UTENvbW1hbmRRdWV1ZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0y
MDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNp
bmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgor
CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAor
eworY2xhc3MgQ29tbWFuZFF1ZXVlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21tYW5kUXVl
dWU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgbGFiZWwoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJl
bCk7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIGNs
YXNzIENvbW1hbmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIoKTsKKworICAgIGNsYXNzIENvbW1hbmRC
dWZmZXIqIGNvbW1hbmRCdWZmZXIoY29uc3QgY2xhc3MgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcldp
dGhVbnJldGFpbmVkUmVmZXJlbmNlcygpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgaW5z
ZXJ0RGVidWdDYXB0dXJlQm91bmRhcnkoKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGxhYmVs
CitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNvbW1hbmRRdWV1ZTo6bGFiZWwoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21t
YW5kUXVldWU6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBs
YWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNl
KiBNVEw6OkNvbW1hbmRRdWV1ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNl
KSk7Cit9CisKKy8vIG1ldGhvZDogY29tbWFuZEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpDb21t
YW5kQnVmZmVyKiBNVEw6OkNvbW1hbmRRdWV1ZTo6Y29tbWFuZEJ1ZmZlcigpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5kQnVmZmVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChjb21tYW5kQnVmZmVyKSk7Cit9CisKKy8vIG1ldGhvZDogY29tbWFuZEJ1ZmZl
cldpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyKiBNVEw6OkNv
bW1hbmRRdWV1ZTo6Y29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
Q29tbWFuZEJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZEJ1ZmZlcldpdGhE
ZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IGNvbW1hbmRCdWZmZXJX
aXRoVW5yZXRhaW5lZFJlZmVyZW5jZXMKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlciog
TVRMOjpDb21tYW5kUXVldWU6OmNvbW1hbmRCdWZmZXJXaXRoVW5yZXRhaW5lZFJlZmVyZW5jZXMo
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZEJ1ZmZlcio+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZEJ1ZmZlcldpdGhVbnJldGFpbmVkUmVmZXJl
bmNlcykpOworfQorCisvLyBtZXRob2Q6IGluc2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZFF1ZXVlOjppbnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFy
eSgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluc2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhw
cCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29tbWFu
ZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYTllZjc4YjFlMGMzMTRkY2NjZmVkMDRjODYzODgx
ZGE4ZmJjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcApAQCAtMCwwICsxLDMzNyBAQAor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0
YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIw
MjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2lu
Y2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisK
KyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQnVm
ZmVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExD
b21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMSGVhcC5ocHAiCisjaW5jbHVkZSAiTVRM
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBw
IgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBwIgor
I2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlICJNVExWaXNpYmxlRnVuY3Rpb25UYWJs
ZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK3N0cnVjdCBEaXNwYXRjaFRocmVhZGdyb3Vwc0lu
ZGlyZWN0QXJndW1lbnRzCit7CisgICAgdWludDMyX3QgdGhyZWFkZ3JvdXBzUGVyR3JpZFszXTsK
K30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBTdGFnZUluUmVnaW9uSW5kaXJlY3RBcmd1bWVudHMK
K3sKKyAgICB1aW50MzJfdCBzdGFnZUluT3JpZ2luWzNdOworICAgIHVpbnQzMl90IHN0YWdlSW5T
aXplWzNdOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgQ29tcHV0ZUNvbW1hbmRFbmNvZGVyIDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRlQ29tbWFuZEVuY29kZXIsIENvbW1hbmRFbmNv
ZGVyPgoreworcHVibGljOgorICAgIE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSgpIGNv
bnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29u
c3QgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHN0YXRlKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgIHNldEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0QnVmZmVyKGNv
bnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVn
ZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0QnVmZmVyT2Zmc2V0KE5TOjpV
SW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICBzZXRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdl
ciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBz
ZXRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSog
dmlzaWJsZUZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgVmlz
aWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFu
Z2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgSW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdl
IHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldEFjY2VsZXJhdGlvblN0cnVjdHVy
ZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVy
ZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNl
dFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4
dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFNh
bXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdl
ciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGVzKE1UTDo6
U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgc2V0U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2Ft
cGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIg
aW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0U2FtcGxlclN0YXRlcyhNVEw6OlNh
bXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0
IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldEltYWdlYmxv
Y2tXaWR0aChOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgc2V0U3RhZ2VJblJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24pOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgc2V0U3RhZ2VJblJlZ2lvbihjb25zdCBjbGFzcyBCdWZm
ZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgZGlzcGF0Y2hUaHJlYWRncm91cHMoTVRMOjpTaXplIHRo
cmVhZGdyb3Vwc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgZGlzcGF0Y2hUaHJlYWRncm91cHMoY29uc3QgY2xhc3MgQnVm
ZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0LCBN
VEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
IGRpc3BhdGNoVGhyZWFkcyhNVEw6OlNpemUgdGhyZWFkc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJl
YWRzUGVyVGhyZWFkZ3JvdXApOworCisgICAgdm9pZCAgICAgICAgICAgICAgdXBkYXRlRmVuY2Uo
Y29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHdhaXRG
b3JGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVuY2UpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3VyY2UqIHJlc291cmNlLCBNVEw6OlJlc291
cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgdXNlUmVzb3VyY2VzKE1U
TDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3Vy
Y2VVc2FnZSB1c2FnZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICB1c2VIZWFwKGNvbnN0IGNs
YXNzIEhlYXAqIGhlYXApOworCisgICAgdm9pZCAgICAgICAgICAgICAgdXNlSGVhcHMoTVRMOjpI
ZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVm
ZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5TOjpSYW5nZSBleGVjdXRpb25SYW5nZSk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBjbGFz
cyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZGJ1ZmZlciwgY29uc3QgY2xh
c3MgQnVmZmVyKiBpbmRpcmVjdFJhbmdlQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZm
ZXJPZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgICAgICAgbWVtb3J5QmFycmllcihNVEw6OkJh
cnJpZXJTY29wZSBzY29wZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBtZW1vcnlCYXJyaWVy
KE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBjbGFzcyBDb3Vu
dGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwg
Ym9vbCBiYXJyaWVyKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGRpc3BhdGNoVHlwZQorX01U
TF9JTkxJTkUgTVRMOjpEaXNwYXRjaFR5cGUgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRp
c3BhdGNoVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpEaXNwYXRjaFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGlzcGF0Y2hUeXBlKSk7Cit9
CisKKy8vIG1ldGhvZDogc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25z
dCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBzdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVfKSwgc3RhdGUpOworfQorCisvLyBtZXRob2Q6IHNldEJ5dGVzOmxlbmd0aDphdEluZGV4Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0Qnl0ZXMoY29u
c3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0Qnl0ZXNfbGVuZ3RoX2F0SW5kZXhfKSwgYnl0ZXMsIGxlbmd0aCwgaW5kZXgpOworfQorCisv
LyBtZXRob2Q6IHNldEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVm
ZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcl9v
ZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6
IHNldEJ1ZmZlck9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVD
b21tYW5kRW5jb2Rlcjo6c2V0QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpV
SW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0QnVmZmVyT2Zmc2V0X2F0SW5kZXhfKSwgb2Zmc2V0LCBpbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcnMoTVRMOjpCdWZm
ZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJh
bmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJh
bmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZlcklu
ZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0Vmlz
aWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJs
ZUZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0
aW9uVGFibGVfYXRCdWZmZXJJbmRleF8pLCB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgYnVmZmVySW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVy
UmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRW
aXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlz
aWJsZUZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9u
VGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCB2aXNpYmxlRnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsK
K30KKworLy8gbWV0aG9kOiBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOmF0QnVmZmVySW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgaW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNv
bnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193
aXRoQnVmZmVyUmFuZ2VfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsKK30K
KworLy8gbWV0aG9kOiBzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEFjY2VsZXJhdGlv
blN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9u
U3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFjY2VsZXJhdGlvblN0cnVj
dHVyZV9hdEJ1ZmZlckluZGV4XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgYnVmZmVySW5kZXgp
OworfQorCisvLyBtZXRob2Q6IHNldFRleHR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJl
KiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVfYXRJbmRleF8pLCB0ZXh0
dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGV4dHVyZXM6d2l0aFJhbmdlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0VGV4dHVyZXMoTVRM
OjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVzX3dpdGhS
YW5nZV8pLCB0ZXh0dXJlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0
ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6
c2V0U2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUlu
dGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFNhbXBsZXJTdGF0ZV9hdEluZGV4XyksIHNhbXBsZXIsIGluZGV4KTsK
K30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZXMoTVRMOjpT
YW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRl
c193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRTYW1w
bGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENs
YW1wLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RN
YXhDbGFtcF9hdEluZGV4XyksIHNhbXBsZXIsIGxvZE1pbkNsYW1wLCBsb2RNYXhDbGFtcCwgaW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1h
eENsYW1wczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRF
bmNvZGVyOjpzZXRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBj
b25zdCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBz
X3dpdGhSYW5nZV8pLCBzYW1wbGVycywgbG9kTWluQ2xhbXBzLCBsb2RNYXhDbGFtcHMsIHJhbmdl
KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aDphdEluZGV4Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0VGhyZWFkZ3Jv
dXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aF9hdEluZGV4XyksIGxlbmd0aCwgaW5kZXgpOworfQor
CisvLyBtZXRob2Q6IHNldEltYWdlYmxvY2tXaWR0aDpoZWlnaHQ6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRJbWFnZWJsb2NrV2lkdGgoTlM6OlVJbnRl
Z2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbWFnZWJsb2NrV2lkdGhfaGVpZ2h0
XyksIHdpZHRoLCBoZWlnaHQpOworfQorCisvLyBtZXRob2Q6IHNldFN0YWdlSW5SZWdpb246Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRTdGFnZUluUmVn
aW9uKE1UTDo6UmVnaW9uIHJlZ2lvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhZ2VJblJlZ2lvbl8pLCByZWdpb24pOworfQor
CisvLyBtZXRob2Q6IHNldFN0YWdlSW5SZWdpb25XaXRoSW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RC
dWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVy
OjpzZXRTdGFnZUluUmVnaW9uKGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6
OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGFnZUluUmVnaW9uV2l0aEluZGly
ZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIGluZGlyZWN0QnVmZmVyLCBpbmRpcmVj
dEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogZGlzcGF0Y2hUaHJlYWRncm91cHM6dGhy
ZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5k
RW5jb2Rlcjo6ZGlzcGF0Y2hUaHJlYWRncm91cHMoTVRMOjpTaXplIHRocmVhZGdyb3Vwc1Blckdy
aWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVGhyZWFkZ3JvdXBz
X3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCB0aHJlYWRncm91cHNQZXJHcmlkLCB0aHJlYWRzUGVy
VGhyZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IGRpc3BhdGNoVGhyZWFkZ3JvdXBzV2l0aElu
ZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OnRocmVhZHNQZXJUaHJlYWRncm91cDoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNoVGhy
ZWFkZ3JvdXBzKGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IGluZGlyZWN0QnVmZmVyT2Zmc2V0LCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChk
aXNwYXRjaFRocmVhZGdyb3Vwc1dpdGhJbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNl
dF90aHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVy
T2Zmc2V0LCB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IGRpc3BhdGNo
VGhyZWFkczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaFRocmVhZHMoTVRMOjpTaXplIHRocmVhZHNQZXJH
cmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkaXNwYXRjaFRocmVhZHNfdGhy
ZWFkc1BlclRocmVhZGdyb3VwXyksIHRocmVhZHNQZXJHcmlkLCB0aHJlYWRzUGVyVGhyZWFkZ3Jv
dXApOworfQorCisvLyBtZXRob2Q6IHVwZGF0ZUZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVu
Y2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHVwZGF0ZUZlbmNlXyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB3YWl0Rm9yRmVuY2U6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp3YWl0Rm9yRmVu
Y2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdhaXRGb3JGZW5jZV8pLCBmZW5jZSk7Cit9CisK
Ky8vIG1ldGhvZDogdXNlUmVzb3VyY2U6dXNhZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjp1c2VSZXNvdXJjZShjb25zdCBNVEw6OlJlc291cmNlKiByZXNv
dXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZV91c2FnZV8pLCByZXNv
dXJjZSwgdXNhZ2UpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlczpjb3VudDp1c2FnZToK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNl
cyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJl
c291cmNlVXNhZ2UgdXNhZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJlc291cmNlc19jb3VudF91c2FnZV8pLCByZXNvdXJjZXMs
IGNvdW50LCB1c2FnZSk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnVzZUhlYXAoY29uc3QgTVRMOjpIZWFwKiBo
ZWFwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh1c2VIZWFwXyksIGhlYXApOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXBzOmNvdW50Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcHMoTVRM
OjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBzX2NvdW50XyksIGhl
YXBzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXI6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6ZXhl
Y3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGlu
ZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlJhbmdlIGV4ZWN1dGlvblJhbmdlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChleGVjdXRlQ29t
bWFuZHNJbkJ1ZmZlcl93aXRoUmFuZ2VfKSwgaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBleGVjdXRp
b25SYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXI6aW5kaXJl
Y3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjpleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBNVEw6Oklu
ZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kYnVmZmVyLCBjb25zdCBNVEw6OkJ1
ZmZlciogaW5kaXJlY3RSYW5nZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zm
c2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZl
ck9mZnNldF8pLCBpbmRpcmVjdENvbW1hbmRidWZmZXIsIGluZGlyZWN0UmFuZ2VCdWZmZXIsIGlu
ZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiBtZW1vcnlCYXJyaWVyV2l0aFNj
b3BlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6bWVtb3J5
QmFycmllcihNVEw6OkJhcnJpZXJTY29wZSBzY29wZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtb3J5QmFycmllcldpdGhTY29wZV8p
LCBzY29wZSk7Cit9CisKKy8vIG1ldGhvZDogbWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXM6Y291
bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjptZW1vcnlC
YXJyaWVyKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1l
bW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzX2NvdW50XyksIHJlc291cmNlcywgY291bnQpOworfQor
CisvLyBtZXRob2Q6IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRTYW1wbGVJbmRleDp3aXRoQmFy
cmllcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNhbXBs
ZUNvdW50ZXJzSW5CdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVC
dWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3Vu
dGVyc0luQnVmZmVyX2F0U2FtcGxlSW5kZXhfd2l0aEJhcnJpZXJfKSwgc2FtcGxlQnVmZmVyLCBz
YW1wbGVJbmRleCwgYmFycmllcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2Q0YjUy
Njc2ZGRiMDFkNmY1ODk4YzVkNzMxNTFhZTNmNzQ2M2VlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcApAQCAt
MCwwICsxLDE4MSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwCisvLworLy8gQ29weXJpZ2h0IDIw
MjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAi
CisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhw
cCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJN
VExDb21tYW5kQnVmZmVyLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQ29tcHV0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxD
b21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvdW50ZXJTYW1wbGVC
dWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVCdWZmZXIoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0U2FtcGxlQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIq
IHNhbXBsZUJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9m
RW5jb2RlclNhbXBsZUluZGV4KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZF
bmNvZGVyU2FtcGxlSW5kZXgpOworfTsKKworY2xhc3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvbXB1
dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVj
dChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChj
b25zdCBjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBh
dHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIENv
bXB1dGVQYXNzRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxDb21wdXRlUGFzc0Rlc2Ny
aXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvbXB1dGVQYXNzRGVzY3JpcHRv
ciogICAgICAgICAgICAgICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBhc3NE
ZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0
aWMgY2xhc3MgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGNvbXB1
dGVQYXNzRGVzY3JpcHRvcigpOworCisgICAgTVRMOjpEaXNwYXRjaFR5cGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaFR5cGUoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERp
c3BhdGNoVHlwZShNVEw6OkRpc3BhdGNoVHlwZSBkaXNwYXRjaFR5cGUpOworCisgICAgY2xhc3Mg
Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBzYW1wbGVC
dWZmZXJBdHRhY2htZW50cygpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpD
b21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBw
cm9wZXJ0eTogc2FtcGxlQnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZm
ZXIqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2Ft
cGxlQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkNvdW50ZXJTYW1wbGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZl
cikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U2FtcGxlQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRlclNh
bXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVCdWZmZXJfKSwgc2FtcGxlQnVmZmVy
KTsKK30KKworLy8gcHJvcGVydHk6IHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I6OnN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdGFydE9m
RW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4XyksIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5k
ZXgpOworfQorCisvLyBwcm9wZXJ0eTogZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I6OmVuZE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNv
bXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldEVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RW5k
T2ZFbmNvZGVyU2FtcGxlSW5kZXhfKSwgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5KiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpDb21wdXRlUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhv
ZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBhdHRh
Y2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21w
dXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudEluZGV4KTsKK30K
KworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRl
UGFzc0Rlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRo
b2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yKiBNVEw6OkNv
bXB1dGVQYXNzRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6Omlu
aXQ8TVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGNvbXB1dGVQYXNzRGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc0Rlc2Ny
aXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjpjb21wdXRlUGFzc0Rlc2NyaXB0b3Io
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBhc3NEZXNj
cmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21wdXRlUGFzc0Rlc2NyaXB0b3IpLCBfTVRM
X1BSSVZBVEVfU0VMKGNvbXB1dGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0eTog
ZGlzcGF0Y2hUeXBlCitfTVRMX0lOTElORSBNVEw6OkRpc3BhdGNoVHlwZSBNVEw6OkNvbXB1dGVQ
YXNzRGVzY3JpcHRvcjo6ZGlzcGF0Y2hUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkRpc3BhdGNoVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChk
aXNwYXRjaFR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQYXNzRGVz
Y3JpcHRvcjo6c2V0RGlzcGF0Y2hUeXBlKE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RGlzcGF0Y2hUeXBlXyksIGRpc3BhdGNoVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1w
bGVCdWZmZXJBdHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9y
OjpzYW1wbGVCdWZmZXJBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRz
KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ29tcHV0ZVBpcGVsaW5lLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlNTZkN2ZmZDJlM2VmNzQ3
Yjk1YmU1NDA5MjhiZTZmZjAyODAyNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcApAQCAtMCwwICsx
LDM1NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIw
LTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgor
I2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAi
CisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRM
VHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBDb21wdXRlUGlwZWxpbmVSZWZs
ZWN0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9u
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9u
KiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogICAgICAg
IGluaXQoKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudHMoKSBjb25zdDsKK307CisKK2NsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Ig
OiBwdWJsaWMgTlM6OkNvcHlpbmc8Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4KK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogYWxsb2MoKTsK
KworICAgIGNsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisK
KyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXB1dGVGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb21wdXRlRnVuY3Rpb24oY29uc3QgY2xh
c3MgRnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbik7CisKKyAgICBib29sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhl
Y3V0aW9uV2lkdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0VGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lk
dGgoYm9vbCB0aHJlYWRHcm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCk7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VG90YWxU
aHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0TWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoTlM6OlVJ
bnRlZ2VyIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKTsKKworICAgIGNsYXNzIFN0YWdl
SW5wdXRPdXRwdXREZXNjcmlwdG9yKiAgICAgICBzdGFnZUlucHV0RGVzY3JpcHRvcigpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFnZUlu
cHV0RGVzY3JpcHRvcihjb25zdCBjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogc3Rh
Z2VJbnB1dERlc2NyaXB0b3IpOworCisgICAgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9y
QXJyYXkqICAgIGJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0SW5k
aXJlY3RDb21tYW5kQnVmZmVycyhib29sIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKTsK
KworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRMaWJy
YXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0SW5zZXJ0TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogaW5zZXJ0TGlicmFyaWVzKTsK
KworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVsb2FkZWRM
aWJyYXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogcHJlbG9hZGVkTGli
cmFyaWVzKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
aW5hcnlBcmNoaXZlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hp
dmVzKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl
dCgpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiAgICAgICAgICAgICAgICAgIGxpbmtl
ZEZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRMaW5rZWRGdW5jdGlvbnMoY29uc3QgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiBs
aW5rZWRGdW5jdGlvbnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VwcG9ydEFkZGluZ0JpbmFyeUZ1
bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heENhbGxTdGFja0RlcHRoKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heENh
bGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhDYWxsU3RhY2tEZXB0aCk7Cit9OworCitjbGFz
cyBDb21wdXRlUGlwZWxpbmVTdGF0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q29tcHV0ZVBp
cGVsaW5lU3RhdGU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAg
ICAgICAgbGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNzIERldmljZSogICAgICAgICAgICAgICAg
ICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdDsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgIHRocmVhZEV4ZWN1dGlvbldpZHRoKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBzdGF0aWNUaHJlYWRncm91cE1l
bW9yeUxlbmd0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgaW1hZ2VibG9ja01lbW9yeUxlbmd0aChNVEw6OlNpemUgaW1hZ2VibG9ja0RpbWVuc2lvbnMp
OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEluZGlyZWN0
Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGNsYXNzIEZ1bmN0aW9uSGFuZGxlKiAgICAg
ICAgICAgIGZ1bmN0aW9uSGFuZGxlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBmdW5jdGlvbik7CisK
KyAgICBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogICAgICBuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZShjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpOworCisg
ICAgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqICAgICAgbmV3VmlzaWJsZUZ1bmN0aW9uVGFi
bGUoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KTsKKworICAgIGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIG5ld0ludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiBNVEw6OkNvbXB1dGVQ
aXBlbGluZVJlZmxlY3Rpb246OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uPihfTVRMX1BSSVZBVEVfQ0xTKE1UTENv
bXB1dGVQaXBlbGluZVJlZmxlY3Rpb24pKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lO
TElORSBNVEw6OkNvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIE1UTDo6Q29tcHV0ZVBpcGVsaW5l
UmVmbGVjdGlvbjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpD
b21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uPigpOworfQorCisvLyBwcm9wZXJ0eTogYXJndW1lbnRz
CitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbjo6
YXJndW1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50cykpOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIE1U
TDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPigpOworfQorCisvLyBw
cm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRMYWJl
bChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBw
cm9wZXJ0eTogY29tcHV0ZUZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6
OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OmNvbXB1dGVGdW5jdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoY29tcHV0ZUZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRDb21wdXRlRnVuY3Rpb24oY29uc3QgTVRM
OjpGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlRnVuY3Rpb25fKSwgY29tcHV0
ZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVP
ZlRocmVhZEV4ZWN1dGlvbldpZHRoCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcjo6dGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9u
V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhl
Y3V0aW9uV2lkdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3I6OnNldFRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlv
bldpZHRoKGJvb2wgdGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lk
dGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoXyks
IHRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKTsKK30KKwor
Ly8gcHJvcGVydHk6IG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhUb3RhbFRocmVh
ZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFRvdGFsVGhyZWFkc1Bl
clRocmVhZGdyb3VwKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cChOUzo6VUludGVn
ZXIgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwXyksIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKTsKK30KKworLy8gcHJv
cGVydHk6IHN0YWdlSW5wdXREZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlN0YWdlSW5wdXRP
dXRwdXREZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnN0YWdlSW5w
dXREZXNjcmlwdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dGFnZUlucHV0RGVzY3JpcHRvcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3RhZ2VJbnB1dERlc2NyaXB0b3IoY29uc3QgTVRMOjpT
dGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogc3RhZ2VJbnB1dERlc2NyaXB0b3IpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YWdl
SW5wdXREZXNjcmlwdG9yXyksIHN0YWdlSW5wdXREZXNjcmlwdG9yKTsKK30KKworLy8gcHJvcGVy
dHk6IGJ1ZmZlcnMKK19NVExfSU5MSU5FIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJy
YXkqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6YnVmZmVycygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0
b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVycykpOworfQorCisvLyBwcm9w
ZXJ0eTogc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVy
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldFN1
cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKGJvb2wgc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1
ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzXyksIHN1cHBvcnRJbmRpcmVj
dENvbW1hbmRCdWZmZXJzKTsKK30KKworLy8gcHJvcGVydHk6IGluc2VydExpYnJhcmllcworX01U
TF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6Omluc2Vy
dExpYnJhcmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnNlcnRMaWJyYXJpZXMpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldEluc2Vy
dExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIGluc2VydExpYnJhcmllcykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5zZXJ0TGli
cmFyaWVzXyksIGluc2VydExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiBwcmVsb2FkZWRM
aWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yOjpwcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlbG9hZGVk
TGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yOjpzZXRQcmVsb2FkZWRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiBwcmVsb2Fk
ZWRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFByZWxvYWRlZExpYnJhcmllc18pLCBwcmVsb2FkZWRMaWJyYXJpZXMp
OworfQorCisvLyBwcm9wZXJ0eTogYmluYXJ5QXJjaGl2ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJh
eSogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpiaW5hcnlBcmNoaXZlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChiaW5hcnlBcmNoaXZlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMoY29uc3QgTlM6
OkFycmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmluYXJ5QXJjaGl2
ZXMpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcjo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldCkpOworfQorCisvLyBwcm9wZXJ0eTog
bGlua2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogTVRMOjpD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpsaW5rZWRGdW5jdGlvbnMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlua2VkRnVuY3Rpb25zKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChsaW5rZWRGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldExpbmtlZEZ1bmN0aW9ucyhjb25z
dCBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogbGlua2VkRnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMaW5rZWRGdW5jdGlv
bnNfKSwgbGlua2VkRnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRBZGRpbmdC
aW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yOjpzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rp
b25zKGJvb2wgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFkZGluZ0Jp
bmFyeUZ1bmN0aW9uc18pLCBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8g
cHJvcGVydHk6IG1heENhbGxTdGFja0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG1heENhbGxTdGFja0RlcHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhDYWxsU3RhY2tEZXB0aChOUzo6
VUludGVnZXIgbWF4Q2FsbFN0YWNrRGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heENhbGxTdGFja0RlcHRoXyksIG1heENh
bGxTdGFja0RlcHRoKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6
U3RyaW5nKiBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRM
OjpEZXZpY2UqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OmRldmljZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VG90YWxUaHJlYWRzUGVy
VGhyZWFkZ3JvdXAKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBlbGlu
ZVN0YXRlOjptYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0
aHJlYWRFeGVjdXRpb25XaWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lU3RhdGU6OnRocmVhZEV4ZWN1dGlvbldpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwodGhyZWFkRXhlY3V0aW9uV2lkdGgpKTsKK30KKworLy8gcHJvcGVydHk6IHN0YXRpY1RocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpDb21wdXRl
UGlwZWxpbmVTdGF0ZTo6c3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdGF0aWNUaHJlYWRncm91cE1lbW9yeUxlbmd0aCkpOworfQorCisvLyBtZXRo
b2Q6IGltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zOgorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OmltYWdlYmxvY2tNZW1vcnlMZW5n
dGgoTVRMOjpTaXplIGltYWdlYmxvY2tEaW1lbnNpb25zKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbWFnZWJs
b2NrTWVtb3J5TGVuZ3RoRm9yRGltZW5zaW9uc18pLCBpbWFnZWJsb2NrRGltZW5zaW9ucyk7Cit9
CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycworX01UTF9JTkxJ
TkUgYm9vbCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpzdXBwb3J0SW5kaXJlY3RDb21tYW5k
QnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMp
KTsKK30KKworLy8gbWV0aG9kOiBmdW5jdGlvbkhhbmRsZVdpdGhGdW5jdGlvbjoKK19NVExfSU5M
SU5FIE1UTDo6RnVuY3Rpb25IYW5kbGUqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OmZ1bmN0
aW9uSGFuZGxlKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGZ1bmN0aW9uKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25IYW5kbGUqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGZ1bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uXyksIGZ1bmN0aW9uKTsKK30KKworLy8g
bWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rp
b25zOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSogTVRMOjpD
b21wdXRlUGlwZWxpbmVTdGF0ZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTlM6OkFy
cmF5KiBmdW5jdGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnNfZXJyb3JfKSwgZnVuY3Rpb25zLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3VmlzaWJs
ZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6VmlzaWJsZUZ1
bmN0aW9uVGFibGUqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Om5ld1Zpc2libGVGdW5jdGlv
blRhYmxlKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmlzaWJsZUZ1bmN0
aW9uVGFibGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Zpc2libGVGdW5jdGlvblRhYmxl
V2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3SW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlKiBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpuZXdJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRv
cik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ291bnRlcnMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TENvdW50ZXJzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTY1YzFkOGVhMDE4MTZkZDdkZmI2OTQ4MWQ3YTI4
ZGI2NDE3YjUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTENvdW50ZXJzLmhwcApAQCAtMCwwICsxLDI1OCBAQAorLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ291bnRl
cnMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisKK25hbWVzcGFjZSBN
VEwKK3sKKworX01UTF9DT05TVCggTlM6OkVycm9yRG9tYWluLCBDb3VudGVyRXJyb3JEb21haW4g
KTsKKwordXNpbmcgQ29tbW9uQ291bnRlciA9IE5TOjpTdHJpbmcqOworCitfTVRMX0NPTlNUKCBD
b21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVGltZXN0YW1wICk7CitfTVRMX0NPTlNUKCBDb21t
b25Db3VudGVyLCBDb21tb25Db3VudGVyVGVzc2VsbGF0aW9uSW5wdXRQYXRjaGVzICk7CitfTVRM
X0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVmVydGV4SW52b2NhdGlvbnMgKTsK
K19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJQb3N0VGVzc2VsbGF0aW9u
VmVydGV4SW52b2NhdGlvbnMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNv
dW50ZXJDbGlwcGVySW52b2NhdGlvbnMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENv
bW1vbkNvdW50ZXJDbGlwcGVyUHJpbWl0aXZlc091dCApOworX01UTF9DT05TVCggQ29tbW9uQ291
bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50SW52b2NhdGlvbnMgKTsKK19NVExfQ09OU1QoIENv
bW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJGcmFnbWVudHNQYXNzZWQgKTsKK19NVExfQ09OU1Qo
IENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJDb21wdXRlS2VybmVsSW52b2NhdGlvbnMgKTsK
K19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUb3RhbEN5Y2xlcyApOwor
X01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclZlcnRleEN5Y2xlcyApOwor
X01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclRlc3NlbGxhdGlvbkN5Y2xl
cyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclBvc3RUZXNzZWxs
YXRpb25WZXJ0ZXhDeWNsZXMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNv
dW50ZXJGcmFnbWVudEN5Y2xlcyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9u
Q291bnRlclJlbmRlclRhcmdldFdyaXRlQ3ljbGVzICk7CisKK3VzaW5nIENvbW1vbkNvdW50ZXJT
ZXQgPSBOUzo6U3RyaW5nKjsKKworX01UTF9DT05TVCggQ29tbW9uQ291bnRlclNldCwgQ29tbW9u
Q291bnRlclNldFRpbWVzdGFtcCApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlclNldCwgQ29t
bW9uQ291bnRlclNldFN0YWdlVXRpbGl6YXRpb24gKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50
ZXJTZXQsIENvbW1vbkNvdW50ZXJTZXRTdGF0aXN0aWMgKTsKKworc3RydWN0IENvdW50ZXJSZXN1
bHRUaW1lc3RhbXAKK3sKKyAgICB1aW50NjRfdCB0aW1lc3RhbXA7Cit9IF9NVExfUEFDS0VEOwor
CitzdHJ1Y3QgQ291bnRlclJlc3VsdFN0YWdlVXRpbGl6YXRpb24KK3sKKyAgICB1aW50NjRfdCB0
b3RhbEN5Y2xlczsKKyAgICB1aW50NjRfdCB2ZXJ0ZXhDeWNsZXM7CisgICAgdWludDY0X3QgdGVz
c2VsbGF0aW9uQ3ljbGVzOworICAgIHVpbnQ2NF90IHBvc3RUZXNzZWxsYXRpb25WZXJ0ZXhDeWNs
ZXM7CisgICAgdWludDY0X3QgZnJhZ21lbnRDeWNsZXM7CisgICAgdWludDY0X3QgcmVuZGVyVGFy
Z2V0Q3ljbGVzOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IENvdW50ZXJSZXN1bHRTdGF0aXN0
aWMKK3sKKyAgICB1aW50NjRfdCB0ZXNzZWxsYXRpb25JbnB1dFBhdGNoZXM7CisgICAgdWludDY0
X3QgdmVydGV4SW52b2NhdGlvbnM7CisgICAgdWludDY0X3QgcG9zdFRlc3NlbGxhdGlvblZlcnRl
eEludm9jYXRpb25zOworICAgIHVpbnQ2NF90IGNsaXBwZXJJbnZvY2F0aW9uczsKKyAgICB1aW50
NjRfdCBjbGlwcGVyUHJpbWl0aXZlc091dDsKKyAgICB1aW50NjRfdCBmcmFnbWVudEludm9jYXRp
b25zOworICAgIHVpbnQ2NF90IGZyYWdtZW50c1Bhc3NlZDsKKyAgICB1aW50NjRfdCBjb21wdXRl
S2VybmVsSW52b2NhdGlvbnM7Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBDb3VudGVyIDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxDb3VudGVyPgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcq
IG5hbWUoKSBjb25zdDsKK307CisKK2NsYXNzIENvdW50ZXJTZXQgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPENvdW50ZXJTZXQ+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogbmFtZSgpIGNv
bnN0OworCisgICAgTlM6OkFycmF5KiAgY291bnRlcnMoKSBjb25zdDsKK307CisKK2NsYXNzIENv
dW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPENvdW50ZXJT
YW1wbGVCdWZmZXJEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb3Vu
dGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIENvdW50ZXJT
YW1wbGVCdWZmZXJEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQ291bnRl
clNldCogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyU2V0KCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb3VudGVyU2V0
KGNvbnN0IGNsYXNzIENvdW50ZXJTZXQqIGNvdW50ZXJTZXQpOworCisgICAgTlM6OlN0cmluZyog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6
OlN0cmluZyogbGFiZWwpOworCisgICAgTVRMOjpTdG9yYWdlTW9kZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBz
dG9yYWdlTW9kZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxlQ291
bnQpOworfTsKKworY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8Q291bnRlclNhbXBsZUJ1ZmZlcj4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBEZXZpY2Uq
IGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICBsYWJlbCgpIGNvbnN0OworCisg
ICAgTlM6OlVJbnRlZ2VyICBzYW1wbGVDb3VudCgpIGNvbnN0OworCisgICAgTlM6OkRhdGEqICAg
ICByZXNvbHZlQ291bnRlclJhbmdlKE5TOjpSYW5nZSByYW5nZSk7Cit9OworCitfTVRMX0VOVU0o
TlM6OkludGVnZXIsIENvdW50ZXJTYW1wbGVCdWZmZXJFcnJvcikgeworICAgIENvdW50ZXJTYW1w
bGVCdWZmZXJFcnJvck91dE9mTWVtb3J5ID0gMCwKKyAgICBDb3VudGVyU2FtcGxlQnVmZmVyRXJy
b3JJbnZhbGlkID0gMSwKK307CisKK30KKworX01UTF9QUklWQVRFX0RFRl9TVFIoIE5TOjpFcnJv
ckRvbWFpbiwgQ291bnRlckVycm9yRG9tYWluICk7CisKK19NVExfUFJJVkFURV9ERUZfU1RSKCBN
VEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUaW1lc3RhbXAgKTsKK19NVExfUFJJVkFU
RV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUZXNzZWxsYXRpb25J
bnB1dFBhdGNoZXMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIs
IENvbW1vbkNvdW50ZXJWZXJ0ZXhJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIo
IE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclBvc3RUZXNzZWxsYXRpb25WZXJ0ZXhJ
bnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwg
Q29tbW9uQ291bnRlckNsaXBwZXJJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIo
IE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckNsaXBwZXJQcmltaXRpdmVzT3V0ICk7
CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVy
RnJhZ21lbnRJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9u
Q291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50c1Bhc3NlZCApOworX01UTF9QUklWQVRFX0RF
Rl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckNvbXB1dGVLZXJuZWxJbnZv
Y2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29t
bW9uQ291bnRlclRvdGFsQ3ljbGVzICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21t
b25Db3VudGVyLCBDb21tb25Db3VudGVyVmVydGV4Q3ljbGVzICk7CitfTVRMX1BSSVZBVEVfREVG
X1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVGVzc2VsbGF0aW9uQ3ljbGVz
ICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3Vu
dGVyUG9zdFRlc3NlbGxhdGlvblZlcnRleEN5Y2xlcyApOworX01UTF9QUklWQVRFX0RFRl9TVFIo
IE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50Q3ljbGVzICk7CitfTVRM
X1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyUmVuZGVy
VGFyZ2V0V3JpdGVDeWNsZXMgKTsKKworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9u
Q291bnRlclNldCwgQ29tbW9uQ291bnRlclNldFRpbWVzdGFtcCApOworX01UTF9QUklWQVRFX0RF
Rl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlclNldCwgQ29tbW9uQ291bnRlclNldFN0YWdlVXRpbGl6
YXRpb24gKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXJTZXQsIENv
bW1vbkNvdW50ZXJTZXRTdGF0aXN0aWMgKTsKKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5M
SU5FIE5TOjpTdHJpbmcqIE1UTDo6Q291bnRlcjo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyog
TVRMOjpDb3VudGVyU2V0OjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBjb3VudGVycworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkNvdW50
ZXJTZXQ6OmNvdW50ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvdW50ZXJzKSk7Cit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZm
ZXJEZXNjcmlwdG9yKiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZl
ckRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQ291bnRlclNhbXBsZUJ1ZmZlckRlc2Ny
aXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJT
YW1wbGVCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9y
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvdW50ZXJTYW1w
bGVCdWZmZXJEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogY291bnRlclNldAorX01U
TF9JTkxJTkUgTVRMOjpDb3VudGVyU2V0KiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlw
dG9yOjpjb3VudGVyU2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkNvdW50ZXJTZXQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvdW50ZXJTZXQpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9y
OjpzZXRDb3VudGVyU2V0KGNvbnN0IE1UTDo6Q291bnRlclNldCogY291bnRlclNldCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q291
bnRlclNldF8pLCBjb3VudGVyU2V0KTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjpsYWJl
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogc3RvcmFn
ZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6U3RvcmFnZU1vZGUgTVRMOjpDb3VudGVyU2FtcGxlQnVm
ZmVyRGVzY3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6U3RvcmFnZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3Rv
cmFnZU1vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZm
ZXJEZXNjcmlwdG9yOjpzZXRTdG9yYWdlTW9kZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2Rl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTdG9yYWdlTW9kZV8pLCBzdG9yYWdlTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1w
bGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZl
ckRlc2NyaXB0b3I6OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291
bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNj
cmlwdG9yOjpzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxlQ291bnQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBs
ZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9J
TkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcjo6ZGV2aWNlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01U
TF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyOjpsYWJlbCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNvdW50
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyOjpzYW1w
bGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50KSk7Cit9CisKKy8vIG1l
dGhvZDogcmVzb2x2ZUNvdW50ZXJSYW5nZToKK19NVExfSU5MSU5FIE5TOjpEYXRhKiBNVEw6OkNv
dW50ZXJTYW1wbGVCdWZmZXI6OnJlc29sdmVDb3VudGVyUmFuZ2UoTlM6OlJhbmdlIHJhbmdlKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpEYXRhKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChyZXNvbHZlQ291bnRlclJhbmdlXyksIHJhbmdlKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NjJlN2EyY2M5MDQzMmFiMGQyZmQ0OGI5ZmUxOGMwZDUzNWI5N2NhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlZmluZXMu
aHBwCkBAIC0wLDAgKzEsNDEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTERlZmluZXMuaHBwCisvLworLy8gQ29weXJpZ2h0
IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNEZWZp
bmVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNkZWZpbmUgX01UTF9FWFBPUlQgX05TX0VYUE9SVAorI2RlZmluZSBfTVRMX0VYVEVSTiBf
TlNfRVhURVJOCisjZGVmaW5lIF9NVExfSU5MSU5FIF9OU19JTkxJTkUKKyNkZWZpbmUgX01UTF9Q
QUNLRUQgX05TX1BBQ0tFRAorCisjZGVmaW5lIF9NVExfQ09OU1QodHlwZSwgbmFtZSkgX05TX0NP
TlNUKHR5cGUsIG5hbWUpCisjZGVmaW5lIF9NVExfRU5VTSh0eXBlLCBuYW1lKSBfTlNfRU5VTSh0
eXBlLCBuYW1lKQorI2RlZmluZSBfTVRMX09QVElPTlModHlwZSwgbmFtZSkgX05TX09QVElPTlMo
dHlwZSwgbmFtZSkKKworI2RlZmluZSBfTVRMX1ZBTElEQVRFX1NJWkUobnMsIG5hbWUpIF9OU19W
QUxJREFURV9TSVpFKG5zLCBuYW1lKQorI2RlZmluZSBfTVRMX1ZBTElEQVRFX0VOVU0obnMsIG5h
bWUpIF9OU19WQUxJREFURV9FTlVNKG5zLCBuYW1lKQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTERlcHRoU3RlbmNpbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ3NzRk
Y2VjMDFlODU5YTEwMDFkZjM5MmRiMzNiYmJlNjgyOTEyNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBwCkBA
IC0wLDAgKzEsMjY5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBNZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBwCisvLworLy8gQ29weXJpZ2h0
IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5o
cHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRl
LmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRl
ICJNVExEZXB0aFN0ZW5jaWwuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6
OlVJbnRlZ2VyLCBDb21wYXJlRnVuY3Rpb24pIHsKKyAgICBDb21wYXJlRnVuY3Rpb25OZXZlciA9
IDAsCisgICAgQ29tcGFyZUZ1bmN0aW9uTGVzcyA9IDEsCisgICAgQ29tcGFyZUZ1bmN0aW9uRXF1
YWwgPSAyLAorICAgIENvbXBhcmVGdW5jdGlvbkxlc3NFcXVhbCA9IDMsCisgICAgQ29tcGFyZUZ1
bmN0aW9uR3JlYXRlciA9IDQsCisgICAgQ29tcGFyZUZ1bmN0aW9uTm90RXF1YWwgPSA1LAorICAg
IENvbXBhcmVGdW5jdGlvbkdyZWF0ZXJFcXVhbCA9IDYsCisgICAgQ29tcGFyZUZ1bmN0aW9uQWx3
YXlzID0gNywKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFN0ZW5jaWxPcGVyYXRpb24p
IHsKKyAgICBTdGVuY2lsT3BlcmF0aW9uS2VlcCA9IDAsCisgICAgU3RlbmNpbE9wZXJhdGlvblpl
cm8gPSAxLAorICAgIFN0ZW5jaWxPcGVyYXRpb25SZXBsYWNlID0gMiwKKyAgICBTdGVuY2lsT3Bl
cmF0aW9uSW5jcmVtZW50Q2xhbXAgPSAzLAorICAgIFN0ZW5jaWxPcGVyYXRpb25EZWNyZW1lbnRD
bGFtcCA9IDQsCisgICAgU3RlbmNpbE9wZXJhdGlvbkludmVydCA9IDUsCisgICAgU3RlbmNpbE9w
ZXJhdGlvbkluY3JlbWVudFdyYXAgPSA2LAorICAgIFN0ZW5jaWxPcGVyYXRpb25EZWNyZW1lbnRX
cmFwID0gNywKK307CisKK2NsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPFN0ZW5jaWxEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTdGVu
Y2lsRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiAg
ICAgICAgaW5pdCgpOworCisgICAgTVRMOjpDb21wYXJlRnVuY3Rpb24gICAgICAgICAgICBzdGVu
Y2lsQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdGVuY2lsQ29tcGFyZUZ1bmN0aW9uKE1UTDo6Q29tcGFyZUZ1bmN0aW9uIHN0
ZW5jaWxDb21wYXJlRnVuY3Rpb24pOworCisgICAgTVRMOjpTdGVuY2lsT3BlcmF0aW9uICAgICAg
ICAgICBzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbEZhaWx1cmVPcGVyYXRpb24oTVRMOjpTdGVuY2ls
T3BlcmF0aW9uIHN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uKTsKKworICAgIE1UTDo6U3RlbmNpbE9w
ZXJhdGlvbiAgICAgICAgICAgZGVwdGhGYWlsdXJlT3BlcmF0aW9uKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aEZhaWx1cmVPcGVyYXRpb24oTVRM
OjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoRmFpbHVyZU9wZXJhdGlvbik7CisKKyAgICBNVEw6OlN0
ZW5jaWxPcGVyYXRpb24gICAgICAgICAgIGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24oKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoU3RlbmNpbFBh
c3NPcGVyYXRpb24oTVRMOjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRp
b24pOworCisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICByZWFkTWFzaygpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVhZE1hc2sodWlu
dDMyX3QgcmVhZE1hc2spOworCisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZU1hc2soKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFdyaXRlTWFzayh1aW50MzJfdCB3cml0ZU1hc2spOworfTsKKworY2xhc3MgRGVwdGhTdGVuY2ls
RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsK
KworICAgIE1UTDo6Q29tcGFyZUZ1bmN0aW9uICAgICAgICAgICAgICAgICBkZXB0aENvbXBhcmVG
dW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXREZXB0aENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBh
cmVGdW5jdGlvbik7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVwdGhXcml0ZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RGVwdGhXcml0ZUVuYWJsZWQoYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCk7
CisKKyAgICBjbGFzcyBTdGVuY2lsRGVzY3JpcHRvciogICAgICAgICAgICAgZnJvbnRGYWNlU3Rl
bmNpbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRGcm9udEZhY2VTdGVuY2lsKGNvbnN0IGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiBmcm9udEZh
Y2VTdGVuY2lsKTsKKworICAgIGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiAgICAgICAgICAgICBi
YWNrRmFjZVN0ZW5jaWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0QmFja0ZhY2VTdGVuY2lsKGNvbnN0IGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9y
KiBiYWNrRmFjZVN0ZW5jaWwpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKK307CisKK2NsYXNzIERl
cHRoU3RlbmNpbFN0YXRlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxEZXB0aFN0ZW5jaWxTdGF0
ZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisKKyAgICBj
bGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3JpcHRvciogTVRMOjpTdGVuY2ls
RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OlN0ZW5jaWxEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0ZW5jaWxEZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3Jp
cHRvciogTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpTdGVuY2lsRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6
IHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6Q29tcGFyZUZ1bmN0aW9u
IE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnN0ZW5jaWxDb21wYXJlRnVuY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcGFyZUZ1bmN0aW9uPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24pKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRTdGVuY2lsQ29tcGFyZUZ1
bmN0aW9uKE1UTDo6Q29tcGFyZUZ1bmN0aW9uIHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24pCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0
ZW5jaWxDb21wYXJlRnVuY3Rpb25fKSwgc3RlbmNpbENvbXBhcmVGdW5jdGlvbik7Cit9CisKKy8v
IHByb3BlcnR5OiBzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbgorX01UTF9JTkxJTkUgTVRMOjpTdGVu
Y2lsT3BlcmF0aW9uIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnN0ZW5jaWxGYWlsdXJlT3BlcmF0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5j
aWxPcGVyYXRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlbmNpbEZhaWx1cmVPcGVyYXRp
b24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRT
dGVuY2lsRmFpbHVyZU9wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24gc3RlbmNpbEZhaWx1
cmVPcGVyYXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uXyksIHN0ZW5jaWxGYWlsdXJl
T3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoRmFpbHVyZU9wZXJhdGlvbgorX01U
TF9JTkxJTkUgTVRMOjpTdGVuY2lsT3BlcmF0aW9uIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OmRl
cHRoRmFpbHVyZU9wZXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpTdGVuY2lsT3BlcmF0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRo
RmFpbHVyZU9wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RlbmNpbERl
c2NyaXB0b3I6OnNldERlcHRoRmFpbHVyZU9wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24g
ZGVwdGhGYWlsdXJlT3BlcmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aEZhaWx1cmVPcGVyYXRpb25fKSwgZGVwdGhG
YWlsdXJlT3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoU3RlbmNpbFBhc3NPcGVy
YXRpb24KK19NVExfSU5MSU5FIE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBNVEw6OlN0ZW5jaWxEZXNj
cmlwdG9yOjpkZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5jaWxPcGVyYXRpb24+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24o
TVRMOjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24pCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRo
U3RlbmNpbFBhc3NPcGVyYXRpb25fKSwgZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbik7Cit9CisK
Ky8vIHByb3BlcnR5OiByZWFkTWFzaworX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpTdGVuY2ls
RGVzY3JpcHRvcjo6cmVhZE1hc2soKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlYWRNYXNrKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6c2V0UmVhZE1hc2sodWlu
dDMyX3QgcmVhZE1hc2spCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFJlYWRNYXNrXyksIHJlYWRNYXNrKTsKK30KKworLy8gcHJvcGVy
dHk6IHdyaXRlTWFzaworX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpTdGVuY2lsRGVzY3JpcHRv
cjo6d3JpdGVNYXNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1
aW50MzJfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3cml0ZU1hc2spKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRXcml0ZU1hc2sodWludDMyX3Qg
d3JpdGVNYXNrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRXcml0ZU1hc2tfKSwgd3JpdGVNYXNrKTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvciogTVRM
OjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhN
VExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9J
TkxJTkUgTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBNVEw6OkRlcHRoU3RlbmNpbERlc2Ny
aXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RGVwdGhT
dGVuY2lsRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoQ29tcGFyZUZ1bmN0
aW9uCitfTVRMX0lOTElORSBNVEw6OkNvbXBhcmVGdW5jdGlvbiBNVEw6OkRlcHRoU3RlbmNpbERl
c2NyaXB0b3I6OmRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXBhcmVGdW5jdGlvbj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChkZXB0aENvbXBhcmVGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oTVRMOjpDb21w
YXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlRnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoQ29tcGFyZUZ1bmN0aW9u
XyksIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoV3JpdGVF
bmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVw
dGhXcml0ZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNEZXB0aFdyaXRlRW5hYmxlZCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhX
cml0ZUVuYWJsZWQoYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhXcml0ZUVuYWJsZWRf
KSwgZGVwdGhXcml0ZUVuYWJsZWQpOworfQorCisvLyBwcm9wZXJ0eTogZnJvbnRGYWNlU3RlbmNp
bAorX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3JpcHRvciogTVRMOjpEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yOjpmcm9udEZhY2VTdGVuY2lsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChmcm9udEZhY2VTdGVuY2lsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRGcm9udEZhY2VTdGVuY2lsKGNvbnN0IE1UTDo6U3RlbmNp
bERlc2NyaXB0b3IqIGZyb250RmFjZVN0ZW5jaWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyb250RmFjZVN0ZW5jaWxfKSwgZnJv
bnRGYWNlU3RlbmNpbCk7Cit9CisKKy8vIHByb3BlcnR5OiBiYWNrRmFjZVN0ZW5jaWwKK19NVExf
SU5MSU5FIE1UTDo6U3RlbmNpbERlc2NyaXB0b3IqIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRv
cjo6YmFja0ZhY2VTdGVuY2lsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChiYWNr
RmFjZVN0ZW5jaWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRlcHRoU3RlbmNpbERl
c2NyaXB0b3I6OnNldEJhY2tGYWNlU3RlbmNpbChjb25zdCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9y
KiBiYWNrRmFjZVN0ZW5jaWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEJhY2tGYWNlU3RlbmNpbF8pLCBiYWNrRmFjZVN0ZW5jaWwp
OworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVs
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpz
ZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQor
CisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RGVwdGhT
dGVuY2lsU3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisv
LyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpEZXB0aFN0
ZW5jaWxTdGF0ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGV2aWNl
LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXZpY2UuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZjZDBkNzc2NGY5NmQyNDYxMDQzNTY2MzA1YTgwYWM3YmVlZTk2NmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RGV2aWNlLmhwcApAQCAtMCwwICsxLDEyNTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTERldmljZS5ocHAKKy8vCisvLyBD
b3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExE
ZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1U
TFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKwor
I2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKyNpbmNsdWRlICJNVExEZXZpY2UuaHBwIgorI2lu
Y2x1ZGUgIk1UTFBpeGVsRm9ybWF0LmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisj
aW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorI2luY2x1
ZGUgPElPU3VyZmFjZS9JT1N1cmZhY2VSZWYuaD4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBGZWF0dXJlU2V0KSB7Cisg
ICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92MSA9IDAsCisgICAgRmVhdHVyZVNldF9pT1Nf
R1BVRmFtaWx5Ml92MSA9IDEsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92MiA9IDIs
CisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92MiA9IDMsCisgICAgRmVhdHVyZVNldF9p
T1NfR1BVRmFtaWx5M192MSA9IDQsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92MyA9
IDUsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92MyA9IDYsCisgICAgRmVhdHVyZVNl
dF9pT1NfR1BVRmFtaWx5M192MiA9IDcsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92
NCA9IDgsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92NCA9IDksCisgICAgRmVhdHVy
ZVNldF9pT1NfR1BVRmFtaWx5M192MyA9IDEwLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWls
eTRfdjEgPSAxMSwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkxX3Y1ID0gMTIsCisgICAg
RmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92NSA9IDEzLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQ
VUZhbWlseTNfdjQgPSAxNCwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHk0X3YyID0gMTUs
CisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5NV92MSA9IDE2LAorICAgIEZlYXR1cmVTZXRf
bWFjT1NfR1BVRmFtaWx5MV92MSA9IDEwMDAwLAorICAgIEZlYXR1cmVTZXRfT1NYX0dQVUZhbWls
eTFfdjEgPSAxMDAwMCwKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTFfdjIgPSAxMDAw
MSwKKyAgICBGZWF0dXJlU2V0X09TWF9HUFVGYW1pbHkxX3YyID0gMTAwMDEsCisgICAgRmVhdHVy
ZVNldF9PU1hfUmVhZFdyaXRlVGV4dHVyZVRpZXIyID0gMTAwMDIsCisgICAgRmVhdHVyZVNldF9t
YWNPU19SZWFkV3JpdGVUZXh0dXJlVGllcjIgPSAxMDAwMiwKKyAgICBGZWF0dXJlU2V0X21hY09T
X0dQVUZhbWlseTFfdjMgPSAxMDAwMywKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTFf
djQgPSAxMDAwNCwKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTJfdjEgPSAxMDAwNSwK
KyAgICBGZWF0dXJlU2V0X3dhdGNoT1NfR1BVRmFtaWx5MV92MSA9IDIwMDAwLAorICAgIEZlYXR1
cmVTZXRfV2F0Y2hPU19HUFVGYW1pbHkxX3YxID0gMjAwMDAsCisgICAgRmVhdHVyZVNldF93YXRj
aE9TX0dQVUZhbWlseTJfdjEgPSAyMDAwMSwKKyAgICBGZWF0dXJlU2V0X1dhdGNoT1NfR1BVRmFt
aWx5Ml92MSA9IDIwMDAxLAorICAgIEZlYXR1cmVTZXRfdHZPU19HUFVGYW1pbHkxX3YxID0gMzAw
MDAsCisgICAgRmVhdHVyZVNldF9UVk9TX0dQVUZhbWlseTFfdjEgPSAzMDAwMCwKKyAgICBGZWF0
dXJlU2V0X3R2T1NfR1BVRmFtaWx5MV92MiA9IDMwMDAxLAorICAgIEZlYXR1cmVTZXRfdHZPU19H
UFVGYW1pbHkxX3YzID0gMzAwMDIsCisgICAgRmVhdHVyZVNldF90dk9TX0dQVUZhbWlseTJfdjEg
PSAzMDAwMywKKyAgICBGZWF0dXJlU2V0X3R2T1NfR1BVRmFtaWx5MV92NCA9IDMwMDA0LAorICAg
IEZlYXR1cmVTZXRfdHZPU19HUFVGYW1pbHkyX3YyID0gMzAwMDUsCit9OworCitfTVRMX0VOVU0o
TlM6OkludGVnZXIsIEdQVUZhbWlseSkgeworICAgIEdQVUZhbWlseUFwcGxlMSA9IDEwMDEsCisg
ICAgR1BVRmFtaWx5QXBwbGUyID0gMTAwMiwKKyAgICBHUFVGYW1pbHlBcHBsZTMgPSAxMDAzLAor
ICAgIEdQVUZhbWlseUFwcGxlNCA9IDEwMDQsCisgICAgR1BVRmFtaWx5QXBwbGU1ID0gMTAwNSwK
KyAgICBHUFVGYW1pbHlBcHBsZTYgPSAxMDA2LAorICAgIEdQVUZhbWlseUFwcGxlNyA9IDEwMDcs
CisgICAgR1BVRmFtaWx5QXBwbGU4ID0gMTAwOCwKKyAgICBHUFVGYW1pbHlNYWMxID0gMjAwMSwK
KyAgICBHUFVGYW1pbHlNYWMyID0gMjAwMiwKKyAgICBHUFVGYW1pbHlDb21tb24xID0gMzAwMSwK
KyAgICBHUFVGYW1pbHlDb21tb24yID0gMzAwMiwKKyAgICBHUFVGYW1pbHlDb21tb24zID0gMzAw
MywKKyAgICBHUFVGYW1pbHlNYWNDYXRhbHlzdDEgPSA0MDAxLAorICAgIEdQVUZhbWlseU1hY0Nh
dGFseXN0MiA9IDQwMDIsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBEZXZpY2VMb2Nh
dGlvbikgeworICAgIERldmljZUxvY2F0aW9uQnVpbHRJbiA9IDAsCisgICAgRGV2aWNlTG9jYXRp
b25TbG90ID0gMSwKKyAgICBEZXZpY2VMb2NhdGlvbkV4dGVybmFsID0gMiwKKyAgICBEZXZpY2VM
b2NhdGlvblVuc3BlY2lmaWVkID0gTlM6OlVJbnRlZ2VyTWF4LAorfTsKKworX01UTF9PUFRJT05T
KE5TOjpVSW50ZWdlciwgUGlwZWxpbmVPcHRpb24pIHsKKyAgICBQaXBlbGluZU9wdGlvbk5vbmUg
PSAwLAorICAgIFBpcGVsaW5lT3B0aW9uQXJndW1lbnRJbmZvID0gMSwKKyAgICBQaXBlbGluZU9w
dGlvbkJ1ZmZlclR5cGVJbmZvID0gMiwKKyAgICBQaXBlbGluZU9wdGlvbkZhaWxPbkJpbmFyeUFy
Y2hpdmVNaXNzID0gNCwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFJlYWRXcml0ZVRl
eHR1cmVUaWVyKSB7CisgICAgUmVhZFdyaXRlVGV4dHVyZVRpZXJOb25lID0gMCwKKyAgICBSZWFk
V3JpdGVUZXh0dXJlVGllcjEgPSAxLAorICAgIFJlYWRXcml0ZVRleHR1cmVUaWVyMiA9IDIsCit9
OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBBcmd1bWVudEJ1ZmZlcnNUaWVyKSB7CisgICAg
QXJndW1lbnRCdWZmZXJzVGllcjEgPSAwLAorICAgIEFyZ3VtZW50QnVmZmVyc1RpZXIyID0gMSwK
K307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFNwYXJzZVRleHR1cmVSZWdpb25BbGlnbm1l
bnRNb2RlKSB7CisgICAgU3BhcnNlVGV4dHVyZVJlZ2lvbkFsaWdubWVudE1vZGVPdXR3YXJkID0g
MCwKKyAgICBTcGFyc2VUZXh0dXJlUmVnaW9uQWxpZ25tZW50TW9kZUlud2FyZCA9IDEsCit9Owor
CitzdHJ1Y3QgQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMKK3sKKyAgICBOUzo6VUludGVnZXIg
YWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZTsKKyAgICBOUzo6VUludGVnZXIgYnVpbGRTY3JhdGNo
QnVmZmVyU2l6ZTsKKyAgICBOUzo6VUludGVnZXIgcmVmaXRTY3JhdGNoQnVmZmVyU2l6ZTsKK30g
X01UTF9QQUNLRUQ7CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIENvdW50ZXJTYW1wbGluZ1Bv
aW50KSB7CisgICAgQ291bnRlclNhbXBsaW5nUG9pbnRBdFN0YWdlQm91bmRhcnkgPSAwLAorICAg
IENvdW50ZXJTYW1wbGluZ1BvaW50QXREcmF3Qm91bmRhcnkgPSAxLAorICAgIENvdW50ZXJTYW1w
bGluZ1BvaW50QXREaXNwYXRjaEJvdW5kYXJ5ID0gMiwKKyAgICBDb3VudGVyU2FtcGxpbmdQb2lu
dEF0VGlsZURpc3BhdGNoQm91bmRhcnkgPSAzLAorICAgIENvdW50ZXJTYW1wbGluZ1BvaW50QXRC
bGl0Qm91bmRhcnkgPSA0LAorfTsKKworc3RydWN0IFNpemVBbmRBbGlnbgoreworICAgIE5TOjpV
SW50ZWdlciBzaXplOworICAgIE5TOjpVSW50ZWdlciBhbGlnbjsKK30gX01UTF9QQUNLRUQ7CisK
K2NsYXNzIEFyZ3VtZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBcmd1bWVudERl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFyZ3VtZW50RGVzY3JpcHRv
ciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFyZ3VtZW50RGVzY3JpcHRvciogICAgICAgIGluaXQo
KTsKKworICAgIHN0YXRpYyBjbGFzcyBBcmd1bWVudERlc2NyaXB0b3IqIGFyZ3VtZW50RGVzY3Jp
cHRvcigpOworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGUo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREYXRhVHlw
ZShNVEw6OkRhdGFUeXBlIGRhdGFUeXBlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgIGluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0SW5kZXgoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICAgICAgIGFycmF5TGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFycmF5TGVu
Z3RoKTsKKworICAgIE1UTDo6QXJndW1lbnRBY2Nlc3MgICAgICAgICAgICAgIGFjY2VzcygpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFjY2VzcyhNVEw6
OkFyZ3VtZW50QWNjZXNzIGFjY2Vzcyk7CisKKyAgICBNVEw6OlRleHR1cmVUeXBlICAgICAgICAg
ICAgICAgICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFRleHR1cmVUeXBlKE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRCbG9ja0FsaWdu
bWVudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENv
bnN0YW50QmxvY2tBbGlnbm1lbnQoTlM6OlVJbnRlZ2VyIGNvbnN0YW50QmxvY2tBbGlnbm1lbnQp
OworfTsKKwordXNpbmcgRGV2aWNlTm90aWZpY2F0aW9uTmFtZSA9IE5TOjpTdHJpbmcqOworCitf
TVRMX0NPTlNUKERldmljZU5vdGlmaWNhdGlvbk5hbWUsIERldmljZVdhc0FkZGVkTm90aWZpY2F0
aW9uKTsKKworX01UTF9DT05TVChEZXZpY2VOb3RpZmljYXRpb25OYW1lLCBEZXZpY2VSZW1vdmFs
UmVxdWVzdGVkTm90aWZpY2F0aW9uKTsKKworX01UTF9DT05TVChEZXZpY2VOb3RpZmljYXRpb25O
YW1lLCBEZXZpY2VXYXNSZW1vdmVkTm90aWZpY2F0aW9uKTsKKwordXNpbmcgRGV2aWNlTm90aWZp
Y2F0aW9uSGFuZGxlckJsb2NrID0gdm9pZCAoXikoY2xhc3MgRGV2aWNlKiBwRGV2aWNlLCBEZXZp
Y2VOb3RpZmljYXRpb25OYW1lIG5vdGlmeU5hbWUpOworCit1c2luZyBEZXZpY2VOb3RpZmljYXRp
b25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgRGV2aWNlKiBwRGV2
aWNlLCBEZXZpY2VOb3RpZmljYXRpb25OYW1lIG5vdGlmeU5hbWUpPjsKKwordXNpbmcgQXV0b3Jl
bGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiA9IGNsYXNzIENvbXB1dGVQaXBlbGluZVJl
ZmxlY3Rpb24qOworCit1c2luZyBBdXRvcmVsZWFzZWRSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24g
PSBjbGFzcyBSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qOworCit1c2luZyBOZXdMaWJyYXJ5Q29t
cGxldGlvbkhhbmRsZXIgPSB2b2lkICheKShjbGFzcyBMaWJyYXJ5KiwgTlM6OkVycm9yKik7CisK
K3VzaW5nIE5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlv
bjx2b2lkKGNsYXNzIExpYnJhcnkqLCBOUzo6RXJyb3IqKT47CisKK3VzaW5nIE5ld1JlbmRlclBp
cGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlciA9IHZvaWQgKF4pKGNsYXNzIFJlbmRlclBpcGVs
aW5lU3RhdGUqLCBOUzo6RXJyb3IqKTsKKwordXNpbmcgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZUNv
bXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgUmVuZGVy
UGlwZWxpbmVTdGF0ZSosIE5TOjpFcnJvciopPjsKKwordXNpbmcgTmV3UmVuZGVyUGlwZWxpbmVT
dGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSB2b2lkICheKShjbGFzcyBSZW5k
ZXJQaXBlbGluZVN0YXRlKiwgY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiwgTlM6OkVy
cm9yKik7CisKK3VzaW5nIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBs
ZXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgUmVuZGVyUGlw
ZWxpbmVTdGF0ZSosIGNsYXNzIFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiosIE5TOjpFcnJvciop
PjsKKwordXNpbmcgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlciA9IHZv
aWQgKF4pKGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiwgTlM6OkVycm9yKik7CisKK3VzaW5n
IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0ZDo6
ZnVuY3Rpb248dm9pZChjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSosIE5TOjpFcnJvciopPjsK
KwordXNpbmcgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25I
YW5kbGVyID0gdm9pZCAoXikoY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUqLCBjbGFzcyBDb21w
dXRlUGlwZWxpbmVSZWZsZWN0aW9uKiwgTlM6OkVycm9yKik7CisKK3VzaW5nIE5ld0NvbXB1dGVQ
aXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uID0gc3Rk
OjpmdW5jdGlvbjx2b2lkKGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiwgY2xhc3MgQ29tcHV0
ZVBpcGVsaW5lUmVmbGVjdGlvbiosIE5TOjpFcnJvciopPjsKKwordXNpbmcgVGltZXN0YW1wID0g
c3RkOjp1aW50NjRfdDsKKworTVRMOjpEZXZpY2UqIENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2Uo
KTsKKworTlM6OkFycmF5KiAgIENvcHlBbGxEZXZpY2VzKCk7CisKK05TOjpBcnJheSogICBDb3B5
QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBEZXZpY2VO
b3RpZmljYXRpb25IYW5kbGVyQmxvY2sgaGFuZGxlcik7CisKK05TOjpBcnJheSogICBDb3B5QWxs
RGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBjb25zdCBEZXZp
Y2VOb3RpZmljYXRpb25IYW5kbGVyRnVuY3Rpb24mIGhhbmRsZXIpOworCit2b2lkICAgICAgICAg
UmVtb3ZlRGV2aWNlT2JzZXJ2ZXIoY29uc3QgTlM6Ok9iamVjdCogcE9ic2VydmVyKTsKKworY2xh
c3MgRGV2aWNlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxEZXZpY2U+Cit7CitwdWJsaWM6Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IE5TOjpT
dHJpbmcqIHBTb3VyY2UsIGNvbnN0IGNsYXNzIENvbXBpbGVPcHRpb25zKiBwT3B0aW9ucywgY29u
c3QgTmV3TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVy
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25z
dCBjbGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3QgTVRM
OjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZW5kZXJQaXBlbGlu
ZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3Is
IGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBj
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKiBwRGVzY3JpcHRvciwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29t
cGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IqIHBEZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBj
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IGNvbnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYg
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogcEZ1bmN0aW9u
LCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdp
dGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRv
ciwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVy
KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIZWFkbGVzcygpIGNv
bnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7
CisKKyAgICB1aW50NjRfdCAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5SUQoKSBjb25z
dDsKKworICAgIE1UTDo6U2l6ZSAgICAgICAgICAgICAgICAgICAgICAgbWF4VGhyZWFkc1BlclRo
cmVhZGdyb3VwKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvd1Bvd2VyKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlYWRsZXNzKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlbW92YWJsZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoYXNVbmlmaWVkTWVtb3J5KCkgY29uc3Q7CisKKyAgICB1aW50NjRfdCAgICAgICAgICAgICAg
ICAgICAgICAgIHJlY29tbWVuZGVkTWF4V29ya2luZ1NldFNpemUoKSBjb25zdDsKKworICAgIE1U
TDo6RGV2aWNlTG9jYXRpb24gICAgICAgICAgICAgbG9jYXRpb24oKSBjb25zdDsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25OdW1iZXIoKSBjb25zdDsKKwor
ICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgbWF4VHJhbnNmZXJSYXRlKCkgY29u
c3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoMjRTdGVuY2ls
OFBpeGVsRm9ybWF0U3VwcG9ydGVkKCkgY29uc3Q7CisKKyAgICBNVEw6OlJlYWRXcml0ZVRleHR1
cmVUaWVyICAgICAgIHJlYWRXcml0ZVRleHR1cmVTdXBwb3J0KCkgY29uc3Q7CisKKyAgICBNVEw6
OkFyZ3VtZW50QnVmZmVyc1RpZXIgICAgICAgIGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQoKSBjb25z
dDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyT3JkZXJHcm91
cHNTdXBwb3J0ZWQoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5nKCkgY29uc3Q7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzMzJCaXRNU0FBKCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUXVlcnlUZXh0dXJlTE9EKCkg
Y29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzQkNU
ZXh0dXJlQ29tcHJlc3Npb24oKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9uKCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcnljZW50cmljQ29vcmRzU3VwcG9ydGVk
KCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRz
U2hhZGVyQmFyeWNlbnRyaWNDb29yZGluYXRlcygpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50QWxsb2NhdGVkU2l6ZSgpIGNvbnN0OworCisgICAg
Y2xhc3MgQ29tbWFuZFF1ZXVlKiAgICAgICAgICAgICBuZXdDb21tYW5kUXVldWUoKTsKKworICAg
IGNsYXNzIENvbW1hbmRRdWV1ZSogICAgICAgICAgICAgbmV3Q29tbWFuZFF1ZXVlKE5TOjpVSW50
ZWdlciBtYXhDb21tYW5kQnVmZmVyQ291bnQpOworCisgICAgTVRMOjpTaXplQW5kQWxpZ24gICAg
ICAgICAgICAgICBoZWFwVGV4dHVyZVNpemVBbmRBbGlnbihjb25zdCBjbGFzcyBUZXh0dXJlRGVz
Y3JpcHRvciogZGVzYyk7CisKKyAgICBNVEw6OlNpemVBbmRBbGlnbiAgICAgICAgICAgICAgIGhl
YXBCdWZmZXJTaXplQW5kQWxpZ24oTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9w
dGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBIZWFwKiAgICAgICAgICAgICAgICAgICAgIG5l
d0hlYXAoY29uc3QgY2xhc3MgSGVhcERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xh
c3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICBuZXdCdWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0
aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBCdWZmZXIqICAg
ICAgICAgICAgICAgICAgIG5ld0J1ZmZlcihjb25zdCB2b2lkKiBwb2ludGVyLCBOUzo6VUludGVn
ZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zKTsKKworICAgIGNsYXNzIEJ1
ZmZlciogICAgICAgICAgICAgICAgICAgbmV3QnVmZmVyKGNvbnN0IHZvaWQqIHBvaW50ZXIsIE5T
OjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMsIGNvbnN0IHZv
aWQgKF5kZWFsbG9jYXRvcikodm9pZCosIE5TOjpVSW50ZWdlcikpOworCisgICAgY2xhc3MgRGVw
dGhTdGVuY2lsU3RhdGUqICAgICAgICBuZXdEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBjbGFzcyBE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNzIFRleHR1cmUq
ICAgICAgICAgICAgICAgICAgbmV3VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlRGVzY3JpcHRv
ciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgICAgIG5l
d1RleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0
IElPU3VyZmFjZVJlZiBpb3N1cmZhY2UsIE5TOjpVSW50ZWdlciBwbGFuZSk7CisKKyAgICBjbGFz
cyBUZXh0dXJlKiAgICAgICAgICAgICAgICAgIG5ld1NoYXJlZFRleHR1cmUoY29uc3QgY2xhc3Mg
VGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAg
ICAgICAgICAgICAgICBuZXdTaGFyZWRUZXh0dXJlKGNvbnN0IGNsYXNzIFNoYXJlZFRleHR1cmVI
YW5kbGUqIHNoYXJlZEhhbmRsZSk7CisKKyAgICBjbGFzcyBTYW1wbGVyU3RhdGUqICAgICAgICAg
ICAgIG5ld1NhbXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyRGVzY3JpcHRvciogZGVzY3Jp
cHRvcik7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5ld0RlZmF1bHRM
aWJyYXJ5KCk7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5ld0RlZmF1
bHRMaWJyYXJ5KGNvbnN0IE5TOjpCdW5kbGUqIGJ1bmRsZSwgTlM6OkVycm9yKiogZXJyb3IpOwor
CisgICAgY2xhc3MgTGlicmFyeSogICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IE5T
OjpTdHJpbmcqIGZpbGVwYXRoLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBMaWJy
YXJ5KiAgICAgICAgICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6
RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5l
d0xpYnJhcnkoY29uc3QgZGlzcGF0Y2hfZGF0YV90IGRhdGEsIE5TOjpFcnJvcioqIGVycm9yKTsK
KworICAgIGNsYXNzIExpYnJhcnkqICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBO
Uzo6U3RyaW5nKiBzb3VyY2UsIGNvbnN0IGNsYXNzIENvbXBpbGVPcHRpb25zKiBvcHRpb25zLCBO
Uzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogc291cmNlLCBjb25zdCBjbGFzcyBDb21waWxl
T3B0aW9ucyogb3B0aW9ucywgY29uc3QgTVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIg
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xhc3MgTGlicmFyeSogICAgICAgICAgICAgICAg
ICBuZXdMaWJyYXJ5KGNvbnN0IGNsYXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3TGlicmFyeShjb25zdCBjbGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlcik7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiAgICAgIG5l
d1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBl
bGluZVN0YXRlKiAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlv
bnMsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiByZWZs
ZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3Mg
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9u
IG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9u
Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xhc3MgQ29tcHV0
ZVBpcGVsaW5lU3RhdGUqICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBG
dW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFz
cyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0
IGNsYXNzIEZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0
aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiBy
ZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0aW9u
KiBjb21wdXRlRnVuY3Rpb24sIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21w
bGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0
aW9uKiBjb21wdXRlRnVuY3Rpb24sIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3Qg
TVRMOjpOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRs
ZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUq
ICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0
IE1UTDo6QXV0b3JlbGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwg
TlM6OkVycm9yKiogZXJyb3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1U
TDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVy
IGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGNsYXNzIEZlbmNlKiAgICAgICAgICAgICAgICAg
ICAgbmV3RmVuY2UoKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw
cG9ydHNGZWF0dXJlU2V0KE1UTDo6RmVhdHVyZVNldCBmZWF0dXJlU2V0KTsKKworICAgIGJvb2wg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNGYW1pbHkoTVRMOjpHUFVGYW1pbHkg
Z3B1RmFtaWx5KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9y
dHNUZXh0dXJlU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWluaW11bUxpbmVhclRleHR1cmVBbGlnbm1l
bnRGb3JQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGZvcm1hdCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgIG1pbmltdW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9y
UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBmb3JtYXQpOworCisgICAgY2xhc3MgUmVuZGVy
UGlwZWxpbmVTdGF0ZSogICAgICBuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFRp
bGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRp
b24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRSZW5kZXJQaXBlbGluZVJlZmxlY3Rp
b24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9u
IG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9u
Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICBtYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0Owor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBtYXhBcmd1bWVudEJ1ZmZlclNh
bXBsZXJDb3VudCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9ncmFtbWFibGVTYW1wbGVQb3NpdGlvbnNTdXBwb3J0ZWQoKSBjb25zdDsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9ucyhN
VEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAg
ICBjbGFzcyBBcmd1bWVudEVuY29kZXIqICAgICAgICAgIG5ld0FyZ3VtZW50RW5jb2Rlcihjb25z
dCBOUzo6QXJyYXkqIGFyZ3VtZW50cyk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1cHBvcnRzUmFzdGVyaXphdGlvblJhdGVNYXAoTlM6OlVJbnRlZ2VyIGxheWVyQ291
bnQpOworCisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXAqICAgICBuZXdSYXN0ZXJpemF0
aW9uUmF0ZU1hcChjb25zdCBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpOworCisgICAgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiAgICBuZXdJbmRp
cmVjdENvbW1hbmRCdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3Jp
cHRvciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG1heENvdW50LCBNVEw6OlJlc291cmNlT3B0
aW9ucyBvcHRpb25zKTsKKworICAgIGNsYXNzIEV2ZW50KiAgICAgICAgICAgICAgICAgICAgbmV3
RXZlbnQoKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50KiAgICAgICAgICAgICAgbmV3U2hhcmVk
RXZlbnQoKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50KiAgICAgICAgICAgICAgbmV3U2hhcmVk
RXZlbnQoY29uc3QgY2xhc3MgU2hhcmVkRXZlbnRIYW5kbGUqIHNoYXJlZEV2ZW50SGFuZGxlKTsK
KworICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgcGVlckdyb3VwSUQoKSBjb25z
dDsKKworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgcGVlckluZGV4KCkgY29u
c3Q7CisKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb3VudCgpIGNv
bnN0OworCisgICAgTVRMOjpTaXplICAgICAgICAgICAgICAgICAgICAgICBzcGFyc2VUaWxlU2l6
ZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlLCBNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBOUzo6VUludGVnZXIgc2FtcGxlQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICBzcGFyc2VUaWxlU2l6ZUluQnl0ZXMoKSBjb25zdDsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFNwYXJzZVBpeGVsUmVnaW9ucyhjb25z
dCBNVEw6OlJlZ2lvbiogcGl4ZWxSZWdpb25zLCBNVEw6OlJlZ2lvbiogdGlsZVJlZ2lvbnMsIE1U
TDo6U2l6ZSB0aWxlU2l6ZSwgTVRMOjpTcGFyc2VUZXh0dXJlUmVnaW9uQWxpZ25tZW50TW9kZSBt
b2RlLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucyk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnZlcnRTcGFyc2VUaWxlUmVnaW9ucyhjb25zdCBNVEw6OlJlZ2lvbiog
dGlsZVJlZ2lvbnMsIE1UTDo6UmVnaW9uKiBwaXhlbFJlZ2lvbnMsIE1UTDo6U2l6ZSB0aWxlU2l6
ZSwgTlM6OlVJbnRlZ2VyIG51bVJlZ2lvbnMpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgICAgICBtYXhCdWZmZXJMZW5ndGgoKSBjb25zdDsKKworICAgIE5TOjpBcnJheSogICAg
ICAgICAgICAgICAgICAgICAgY291bnRlclNldHMoKSBjb25zdDsKKworICAgIGNsYXNzIENvdW50
ZXJTYW1wbGVCdWZmZXIqICAgICAgbmV3Q291bnRlclNhbXBsZUJ1ZmZlcihjb25zdCBjbGFzcyBD
b3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJy
b3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVUaW1lc3Rh
bXBzKE1UTDo6VGltZXN0YW1wKiBjcHVUaW1lc3RhbXAsIE1UTDo6VGltZXN0YW1wKiBncHVUaW1l
c3RhbXApOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0Nv
dW50ZXJTYW1wbGluZyhNVEw6OkNvdW50ZXJTYW1wbGluZ1BvaW50IHNhbXBsaW5nUG9pbnQpOwor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1ZlcnRleEFtcGxp
ZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgY291bnQpOworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0c0R5bmFtaWNMaWJyYXJpZXMoKSBjb25zdDsKKworICAg
IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNSZW5kZXJEeW5hbWljTGli
cmFyaWVzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBEeW5hbWljTGlicmFyeSogICAgICAgICAgIG5l
d0R5bmFtaWNMaWJyYXJ5KGNvbnN0IGNsYXNzIExpYnJhcnkqIGxpYnJhcnksIE5TOjpFcnJvcioq
IGVycm9yKTsKKworICAgIGNsYXNzIER5bmFtaWNMaWJyYXJ5KiAgICAgICAgICAgbmV3RHluYW1p
Y0xpYnJhcnkoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBj
bGFzcyBCaW5hcnlBcmNoaXZlKiAgICAgICAgICAgIG5ld0JpbmFyeUFyY2hpdmUoY29uc3QgY2xh
c3MgQmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNSYXl0cmFj
aW5nKCkgY29uc3Q7CisKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemVzIGFjY2Vs
ZXJhdGlvblN0cnVjdHVyZVNpemVzKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJl
KiAgICBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoTlM6OlVJbnRlZ2VyIHNpemUpOworCisgICAg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiAgICBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmUo
Y29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcik7
CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRnVuY3Rpb25Q
b2ludGVycygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyKCkgY29uc3Q7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5kZXIoKSBj
b25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNQcmlt
aXRpdmVNb3Rpb25CbHVyKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvciogTVRMOjpBcmd1bWVudERl
c2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpB
cmd1bWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQXJndW1lbnREZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudERlc2Ny
aXB0b3IqIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6aW5pdDxNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYXJndW1lbnREZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RGVz
Y3JpcHRvciogTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OmFyZ3VtZW50RGVzY3JpcHRvcigpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcmd1bWVudERlc2NyaXB0b3Iq
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFyZ3VtZW50RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9T
RUwoYXJndW1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkYXRhVHlwZQorX01U
TF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6ZGF0YVR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGF0YVR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0RGF0YVR5cGUoTVRMOjpEYXRhVHlwZSBkYXRh
VHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0RGF0YVR5cGVfKSwgZGF0YVR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXgK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6aW5kZXgo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QXJndW1lbnREZXNjcmlwdG9yOjpzZXRJbmRleChOUzo6VUludGVnZXIgaW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldElu
ZGV4XyksIGluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IGFycmF5TGVuZ3RoCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OmFycmF5TGVuZ3RoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFycmF5
TGVuZ3RoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRBcnJheUxlbmd0aF8pLCBhcnJheUxlbmd0aCk7Cit9CisKKy8vIHByb3BlcnR5
OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRBY2Nlc3MgTVRMOjpBcmd1bWVudERl
c2NyaXB0b3I6OmFjY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpBcmd1bWVudEFjY2Vzcz4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nlc3MpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0QWNjZXNz
KE1UTDo6QXJndW1lbnRBY2Nlc3MgYWNjZXNzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRBY2Nlc3NfKSwgYWNjZXNzKTsKK30KKwor
Ly8gcHJvcGVydHk6IHRleHR1cmVUeXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVUeXBlIE1U
TDo6QXJndW1lbnREZXNjcmlwdG9yOjp0ZXh0dXJlVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh0ZXh0dXJlVHlwZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRE
ZXNjcmlwdG9yOjpzZXRUZXh0dXJlVHlwZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRUZXh0dXJlVHlwZV8pLCB0ZXh0dXJlVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb25zdGFu
dEJsb2NrQWxpZ25tZW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudERl
c2NyaXB0b3I6OmNvbnN0YW50QmxvY2tBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b25zdGFudEJsb2NrQWxpZ25tZW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1
bWVudERlc2NyaXB0b3I6OnNldENvbnN0YW50QmxvY2tBbGlnbm1lbnQoTlM6OlVJbnRlZ2VyIGNv
bnN0YW50QmxvY2tBbGlnbm1lbnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0YW50QmxvY2tBbGlnbm1lbnRfKSwgY29uc3Rh
bnRCbG9ja0FsaWdubWVudCk7Cit9CisKKyNpZiBkZWZpbmVkKE1UTF9QUklWQVRFX0lNUExFTUVO
VEFUSU9OKQorCitleHRlcm4gIkMiIE1UTDo6RGV2aWNlKiBNVExDcmVhdGVTeXN0ZW1EZWZhdWx0
RGV2aWNlKCk7CisKK2V4dGVybiAiQyIgTlM6OkFycmF5KiAgIE1UTENvcHlBbGxEZXZpY2VzKCk7
CisKK2V4dGVybiAiQyIgTlM6OkFycmF5KiAgIE1UTENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVy
KE5TOjpPYmplY3QqKiwgTVRMOjpEZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyQmxvY2spOworCitl
eHRlcm4gIkMiIHZvaWQgICAgICAgICBNVExSZW1vdmVEZXZpY2VPYnNlcnZlcihjb25zdCBOUzo6
T2JqZWN0Kik7CisKKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KKworTVRMOjpEZXZp
Y2UqIE1UTDo6Q3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpCit7CisgICAgcmV0dXJuIDo6TVRM
Q3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOworfQorCitOUzo6QXJyYXkqIE1UTDo6Q29weUFs
bERldmljZXMoKQoreworI2lmIFRBUkdFVF9PU19PU1gKKyAgICByZXR1cm4gOjpNVExDb3B5QWxs
RGV2aWNlcygpOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAvLyBUQVJHRVRf
T1NfT1NYCit9CisKK05TOjpBcnJheSogTVRMOjpDb3B5QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihO
Uzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBEZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyQmxvY2sg
aGFuZGxlcikKK3sKKyNpZiBUQVJHRVRfT1NfT1NYCisgICAgcmV0dXJuIDo6TVRMQ29weUFsbERl
dmljZXNXaXRoT2JzZXJ2ZXIocE91dE9ic2VydmVyLCBoYW5kbGVyKTsKKyNlbHNlCisgICAgKHZv
aWQpcE91dE9ic2VydmVyOworICAgICh2b2lkKWhhbmRsZXI7CisKKyAgICByZXR1cm4gbnVsbHB0
cjsKKyNlbmRpZiAvLyBUQVJHRVRfT1NfT1NYCit9CisKK05TOjpBcnJheSogTVRMOjpDb3B5QWxs
RGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBjb25zdCBEZXZp
Y2VOb3RpZmljYXRpb25IYW5kbGVyRnVuY3Rpb24mIGhhbmRsZXIpCit7CisgICAgX19ibG9jayBE
ZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyRnVuY3Rpb24gZnVuY3Rpb24gPSBoYW5kbGVyOworCisg
ICAgcmV0dXJuIENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKHBPdXRPYnNlcnZlciwgXihEZXZp
Y2UqIHBEZXZpY2UsIERldmljZU5vdGlmaWNhdGlvbk5hbWUgcE5vdGlmaWNhdGlvbk5hbWUpIHsg
ZnVuY3Rpb24ocERldmljZSwgcE5vdGlmaWNhdGlvbk5hbWUpOyB9KTsKK30KKwordm9pZCBNVEw6
OlJlbW92ZURldmljZU9ic2VydmVyKGNvbnN0IE5TOjpPYmplY3QqIHBPYnNlcnZlcikKK3sKKyNp
ZiBUQVJHRVRfT1NfT1NYCisgICAgOjpNVExSZW1vdmVEZXZpY2VPYnNlcnZlcihwT2JzZXJ2ZXIp
OworI2VuZGlmIC8vIFRBUkdFVF9PU19PU1gKK30KKworI2VuZGlmIC8vIE1UTF9QUklWQVRFX0lN
UExFTUVOVEFUSU9OCisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0xpYnJhcnko
Y29uc3QgTlM6OlN0cmluZyogcFNvdXJjZSwgY29uc3QgQ29tcGlsZU9wdGlvbnMqIHBPcHRpb25z
LCBjb25zdCBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgX19ibG9jayBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlv
biBibG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdM
aWJyYXJ5KHBTb3VyY2UsIHBPcHRpb25zLCBeKExpYnJhcnkqIHBMaWJyYXJ5LCBOUzo6RXJyb3Iq
IHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBMaWJyYXJ5LCBwRXJyb3IpOyB9KTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBjbGFz
cyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3QgTVRMOjpOZXdM
aWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgX19ibG9jayBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9ja0NvbXBs
ZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdMaWJyYXJ5KHBEZXNj
cmlwdG9yLCBeKExpYnJhcnkqIHBMaWJyYXJ5LCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0Nv
bXBsZXRpb25IYW5kbGVyKHBMaWJyYXJ5LCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBOZXdSZW5kZXJQaXBlbGluZVN0YXRl
Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgX19i
bG9jayBOZXdSZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9j
a0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdSZW5kZXJQ
aXBlbGluZVN0YXRlKHBEZXNjcmlwdG9yLCBeKFJlbmRlclBpcGVsaW5lU3RhdGUqIHBQaXBlbGlu
ZVN0YXRlLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBQaXBl
bGluZVN0YXRlLCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmlj
ZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iq
IHBEZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5kZXJQaXBl
bGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVm
bGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9
IGNvbXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShwRGVzY3Jp
cHRvciwgb3B0aW9ucywgXihSZW5kZXJQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgY2xh
c3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJy
b3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24s
IHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlKGNvbnN0IFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIHBEZXNj
cmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5kZXJQaXBlbGluZVN0
YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlv
bkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBs
ZXRpb25IYW5kbGVyOworCisgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShwRGVzY3JpcHRvciwg
b3B0aW9ucywgXihSZW5kZXJQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgY2xhc3MgUmVu
ZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpIHsg
YmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24sIHBFcnJv
cik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogcEZ1bmN0aW9uLCBjb25zdCBOZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIF9fYmxvY2sgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFu
ZGxlckZ1bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsK
KworICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKHBGdW5jdGlvbiwgXihDb21wdXRlUGlwZWxp
bmVTdGF0ZSogcFBpcGVsaW5lU3RhdGUsIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxl
dGlvbkhhbmRsZXIocFBpcGVsaW5lU3RhdGUsIHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBGdW5jdGlv
biogcEZ1bmN0aW9uLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhS
ZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9ja0NvbXBsZXRpb25IYW5kbGVy
ID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShwRnVu
Y3Rpb24sIG9wdGlvbnMsIF4oQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBQaXBlbGluZVN0YXRlLCBD
b21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJyb3Ip
IHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24sIHBF
cnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZShjb25zdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRv
ciwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIF9fYmxvY2sgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNv
bXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRp
b25IYW5kbGVyOworCisgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUocERlc2NyaXB0b3IsIG9w
dGlvbnMsIF4oQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBQaXBlbGluZVN0YXRlLCBDb21wdXRlUGlw
ZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tD
b21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24sIHBFcnJvcik7IH0p
OworfQorCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjppc0hlYWRsZXNzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaGVhZGxlc3MoKTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExf
SU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RGV2aWNlOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZWdpc3RyeUlECitfTVRMX0lOTElORSB1aW50
NjRfdCBNVEw6OkRldmljZTo6cmVnaXN0cnlJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVnaXN0cnlJ
RCkpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lO
TElORSBNVEw6OlNpemUgTVRMOjpEZXZpY2U6Om1heFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG1heFRocmVhZHNQZXJUaHJlYWRncm91cCkpOworfQorCisvLyBwcm9w
ZXJ0eTogbG93UG93ZXIKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6Omxvd1Bvd2VyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGlzTG93UG93ZXIpKTsKK30KKworLy8gcHJvcGVydHk6IGhlYWRsZXNzCitf
TVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpoZWFkbGVzcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0hl
YWRsZXNzKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZW1vdmFibGUKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpEZXZpY2U6OnJlbW92YWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1JlbW92YWJsZSkpOworfQor
CisvLyBwcm9wZXJ0eTogaGFzVW5pZmllZE1lbW9yeQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRl
dmljZTo6aGFzVW5pZmllZE1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChoYXNVbmlmaWVkTWVtb3J5KSk7
Cit9CisKKy8vIHByb3BlcnR5OiByZWNvbW1lbmRlZE1heFdvcmtpbmdTZXRTaXplCitfTVRMX0lO
TElORSB1aW50NjRfdCBNVEw6OkRldmljZTo6cmVjb21tZW5kZWRNYXhXb3JraW5nU2V0U2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwocmVjb21tZW5kZWRNYXhXb3JraW5nU2V0U2l6ZSkpOworfQorCisv
LyBwcm9wZXJ0eTogbG9jYXRpb24KK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlTG9jYXRpb24gTVRM
OjpEZXZpY2U6OmxvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZUxvY2F0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxvY2F0aW9u
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBsb2NhdGlvbk51bWJlcgorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6RGV2aWNlOjpsb2NhdGlvbk51bWJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxvY2F0aW9uTnVtYmVyKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUcmFuc2ZlclJhdGUKK19N
VExfSU5MSU5FIHVpbnQ2NF90IE1UTDo6RGV2aWNlOjptYXhUcmFuc2ZlclJhdGUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQ2NF90Pih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG1heFRyYW5zZmVyUmF0ZSkpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGgyNFN0
ZW5jaWw4UGl4ZWxGb3JtYXRTdXBwb3J0ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6
OmRlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
c0RlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkKSk7Cit9CisKKy8vIHByb3BlcnR5
OiByZWFkV3JpdGVUZXh0dXJlU3VwcG9ydAorX01UTF9JTkxJTkUgTVRMOjpSZWFkV3JpdGVUZXh0
dXJlVGllciBNVEw6OkRldmljZTo6cmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVhZFdyaXRlVGV4dHVyZVRpZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQKK19NVExfSU5MSU5FIE1UTDo6QXJn
dW1lbnRCdWZmZXJzVGllciBNVEw6OkRldmljZTo6YXJndW1lbnRCdWZmZXJzU3VwcG9ydCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcmd1bWVudEJ1ZmZl
cnNUaWVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQpKTsK
K30KKworLy8gcHJvcGVydHk6IHJhc3Rlck9yZGVyR3JvdXBzU3VwcG9ydGVkCitfTVRMX0lOTElO
RSBib29sIE1UTDo6RGV2aWNlOjpyYXN0ZXJPcmRlckdyb3Vwc1N1cHBvcnRlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYXJlUmFzdGVyT3JkZXJHcm91cHNTdXBwb3J0ZWQpKTsKK30KKworLy8gcHJvcGVy
dHk6IHN1cHBvcnRzMzJCaXRGbG9hdEZpbHRlcmluZworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRl
dmljZTo6c3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBw
b3J0czMyQml0RmxvYXRGaWx0ZXJpbmcpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzMzJC
aXRNU0FBCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0czMyQml0TVNBQSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHMzMkJpdE1TQUEpKTsKK30KKworLy8gcHJvcGVydHk6
IHN1cHBvcnRzUXVlcnlUZXh0dXJlTE9ECitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpz
dXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNRdWVyeVRl
eHR1cmVMT0QpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzQkNUZXh0dXJlQ29tcHJlc3Np
b24KK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzQkNUZXh0dXJlQ29tcHJl
c3Npb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzQkNUZXh0dXJlQ29tcHJlc3Npb24pKTsK
K30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzUHVsbE1vZGVsSW50ZXJwb2xhdGlvbgorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1B1bGxNb2RlbEludGVycG9sYXRpb24pKTsKK30KKwor
Ly8gcHJvcGVydHk6IGJhcnljZW50cmljQ29vcmRzU3VwcG9ydGVkCitfTVRMX0lOTElORSBib29s
IE1UTDo6RGV2aWNlOjpiYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYXJlQmFyeWNlbnRyaWNDb29yZHNTdXBwb3J0ZWQpKTsKK30KKworLy8gcHJvcGVydHk6IHN1
cHBvcnRzU2hhZGVyQmFyeWNlbnRyaWNDb29yZGluYXRlcworX01UTF9JTkxJTkUgYm9vbCBNVEw6
OkRldmljZTo6c3VwcG9ydHNTaGFkZXJCYXJ5Y2VudHJpY0Nvb3JkaW5hdGVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdXBwb3J0c1NoYWRlckJhcnljZW50cmljQ29vcmRpbmF0ZXMpKTsKK30KKworLy8g
cHJvcGVydHk6IGN1cnJlbnRBbGxvY2F0ZWRTaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpEZXZpY2U6OmN1cnJlbnRBbGxvY2F0ZWRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
Y3VycmVudEFsbG9jYXRlZFNpemUpKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21tYW5kUXVldWUK
K19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZFF1ZXVlKiBNVEw6OkRldmljZTo6bmV3Q29tbWFuZFF1
ZXVlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRRdWV1
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tbWFuZFF1ZXVlKSk7Cit9CisKKy8vIG1l
dGhvZDogbmV3Q29tbWFuZFF1ZXVlV2l0aE1heENvbW1hbmRCdWZmZXJDb3VudDoKK19NVExfSU5M
SU5FIE1UTDo6Q29tbWFuZFF1ZXVlKiBNVEw6OkRldmljZTo6bmV3Q29tbWFuZFF1ZXVlKE5TOjpV
SW50ZWdlciBtYXhDb21tYW5kQnVmZmVyQ291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpDb21tYW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Nv
bW1hbmRRdWV1ZVdpdGhNYXhDb21tYW5kQnVmZmVyQ291bnRfKSwgbWF4Q29tbWFuZEJ1ZmZlckNv
dW50KTsKK30KKworLy8gbWV0aG9kOiBoZWFwVGV4dHVyZVNpemVBbmRBbGlnbldpdGhEZXNjcmlw
dG9yOgorX01UTF9JTkxJTkUgTVRMOjpTaXplQW5kQWxpZ24gTVRMOjpEZXZpY2U6OmhlYXBUZXh0
dXJlU2l6ZUFuZEFsaWduKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIGRlc2MpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplQW5kQWxpZ24+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaGVhcFRleHR1cmVTaXplQW5kQWxpZ25XaXRoRGVzY3JpcHRvcl8pLCBk
ZXNjKTsKK30KKworLy8gbWV0aG9kOiBoZWFwQnVmZmVyU2l6ZUFuZEFsaWduV2l0aExlbmd0aDpv
cHRpb25zOgorX01UTF9JTkxJTkUgTVRMOjpTaXplQW5kQWxpZ24gTVRMOjpEZXZpY2U6OmhlYXBC
dWZmZXJTaXplQW5kQWxpZ24oTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlv
bnMgb3B0aW9ucykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemVB
bmRBbGlnbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChoZWFwQnVmZmVyU2l6ZUFuZEFsaWduV2l0
aExlbmd0aF9vcHRpb25zXyksIGxlbmd0aCwgb3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogbmV3
SGVhcFdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpIZWFwKiBNVEw6OkRldmljZTo6
bmV3SGVhcChjb25zdCBNVEw6OkhlYXBEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGVhcCo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3SGVhcFdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6
IG5ld0J1ZmZlcldpdGhMZW5ndGg6b3B0aW9uczoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBN
VEw6OkRldmljZTo6bmV3QnVmZmVyKE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VP
cHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpC
dWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9u
c18pLCBsZW5ndGgsIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IG5ld0J1ZmZlcldpdGhCeXRl
czpsZW5ndGg6b3B0aW9uczoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkRldmljZTo6
bmV3QnVmZmVyKGNvbnN0IHZvaWQqIHBvaW50ZXIsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6
UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhCeXRl
c19sZW5ndGhfb3B0aW9uc18pLCBwb2ludGVyLCBsZW5ndGgsIG9wdGlvbnMpOworfQorCisvLyBt
ZXRob2Q6IG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weTpsZW5ndGg6b3B0aW9uczpkZWFsbG9jYXRv
cjoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkRldmljZTo6bmV3QnVmZmVyKGNvbnN0
IHZvaWQqIHBvaW50ZXIsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25z
IG9wdGlvbnMsIGNvbnN0IHZvaWQgKF5kZWFsbG9jYXRvcikodm9pZCosIE5TOjpVSW50ZWdlcikp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weV9sZW5ndGhfb3B0aW9uc19k
ZWFsbG9jYXRvcl8pLCBwb2ludGVyLCBsZW5ndGgsIG9wdGlvbnMsIGRlYWxsb2NhdG9yKTsKK30K
KworLy8gbWV0aG9kOiBuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9yOgorX01UTF9J
TkxJTkUgTVRMOjpEZXB0aFN0ZW5jaWxTdGF0ZSogTVRMOjpEZXZpY2U6Om5ld0RlcHRoU3RlbmNp
bFN0YXRlKGNvbnN0IE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRlcHRoU3RlbmNpbFN0YXRlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9y
XyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRv
cjoKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpEZXZpY2U6Om5ld1RleHR1cmUoY29u
c3QgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1RleHR1cmVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBu
ZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6aW9zdXJmYWNlOnBsYW5lOgorX01UTF9JTkxJTkUgTVRM
OjpUZXh0dXJlKiBNVEw6OkRldmljZTo6bmV3VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmVEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBJT1N1cmZhY2VSZWYgaW9zdXJmYWNlLCBOUzo6VUlu
dGVnZXIgcGxhbmUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0
dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3JfaW9z
dXJmYWNlX3BsYW5lXyksIGRlc2NyaXB0b3IsIGlvc3VyZmFjZSwgcGxhbmUpOworfQorCisvLyBt
ZXRob2Q6IG5ld1NoYXJlZFRleHR1cmVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6
VGV4dHVyZSogTVRMOjpEZXZpY2U6Om5ld1NoYXJlZFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJl
RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1NoYXJlZFRleHR1cmVX
aXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRU
ZXh0dXJlV2l0aEhhbmRsZToKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpEZXZpY2U6
Om5ld1NoYXJlZFRleHR1cmUoY29uc3QgTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlKiBzaGFyZWRI
YW5kbGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdTaGFyZWRUZXh0dXJlV2l0aEhhbmRsZV8pLCBzaGFy
ZWRIYW5kbGUpOworfQorCisvLyBtZXRob2Q6IG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlwdG9y
OgorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdTYW1wbGVy
U3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNhbXBsZXJTdGF0ZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7
Cit9CisKKy8vIG1ldGhvZDogbmV3RGVmYXVsdExpYnJhcnkKK19NVExfSU5MSU5FIE1UTDo6TGli
cmFyeSogTVRMOjpEZXZpY2U6Om5ld0RlZmF1bHRMaWJyYXJ5KCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d0RlZmF1bHRMaWJyYXJ5KSk7Cit9CisKKy8vIG1ldGhvZDogbmV3RGVmYXVsdExpYnJhcnlXaXRo
QnVuZGxlOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3
RGVmYXVsdExpYnJhcnkoY29uc3QgTlM6OkJ1bmRsZSogYnVuZGxlLCBOUzo6RXJyb3IqKiBlcnJv
cikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld0RlZmF1bHRMaWJyYXJ5V2l0aEJ1bmRsZV9lcnJvcl8pLCBi
dW5kbGUsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdMaWJyYXJ5V2l0aEZpbGU6ZXJyb3I6
CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0
IE5TOjpTdHJpbmcqIGZpbGVwYXRoLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0xpYnJhcnlXaXRoRmlsZV9lcnJvcl8pLCBmaWxlcGF0aCwgZXJyb3IpOworfQorCisvLyBt
ZXRob2Q6IG5ld0xpYnJhcnlXaXRoVVJMOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5
KiBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioq
IGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlicmFyeSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhVUkxfZXJyb3JfKSwgdXJsLCBl
cnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3TGlicmFyeVdpdGhEYXRhOmVycm9yOgorX01UTF9J
TkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBkaXNwYXRj
aF9kYXRhX3QgZGF0YSwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdMaWJy
YXJ5V2l0aERhdGFfZXJyb3JfKSwgZGF0YSwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld0xp
YnJhcnlXaXRoU291cmNlOm9wdGlvbnM6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkq
IE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IE5TOjpTdHJpbmcqIHNvdXJjZSwgY29uc3Qg
TVRMOjpDb21waWxlT3B0aW9ucyogb3B0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdMaWJyYXJ5V2l0aFNvdXJjZV9vcHRpb25zX2Vycm9yXyksIHNvdXJjZSwgb3B0
aW9ucywgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld0xpYnJhcnlXaXRoU291cmNlOm9wdGlv
bnM6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdM
aWJyYXJ5KGNvbnN0IE5TOjpTdHJpbmcqIHNvdXJjZSwgY29uc3QgTVRMOjpDb21waWxlT3B0aW9u
cyogb3B0aW9ucywgY29uc3QgTVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG5ld0xpYnJhcnlXaXRoU291cmNlX29wdGlvbnNfY29tcGxldGlvbkhhbmRs
ZXJfKSwgc291cmNlLCBvcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhv
ZDogbmV3TGlicmFyeVdpdGhTdGl0Y2hlZERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBN
VEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IE1UTDo6U3RpdGNoZWRM
aWJyYXJ5RGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlw
dG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3TGlicmFyeVdpdGhTdGl0Y2hlZERlc2Ny
aXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpu
ZXdMaWJyYXJ5KGNvbnN0IE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogZGVzY3JpcHRv
ciwgY29uc3QgTVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0xpYnJhcnlXaXRoU3RpdGNoZWREZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXyks
IGRlc2NyaXB0b3IsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OlJl
bmRlclBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNv
bnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3Iq
KiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBp
cGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1l
dGhvZDogbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVj
dGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogTVRMOjpE
ZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3Qg
TVRMOjpBdXRvcmVsZWFzZWRSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5T
OjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UmVuZGVyUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8pLCBkZXNj
cmlwdG9yLCBvcHRpb25zLCByZWZsZWN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBN
VEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgTVRMOjpOZXdS
ZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8pLCBk
ZXNjcmlwdG9yLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0
IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5l
T3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZs
ZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVs
aW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXyksIGRlc2Ny
aXB0b3IsIG9wdGlvbnMsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdD
b21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6
Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZShjb25zdCBNVEw6OkZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE5TOjpFcnJvcioqIGVycm9y
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBpcGVsaW5l
U3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0
aEZ1bmN0aW9uX2Vycm9yXyksIGNvbXB1dGVGdW5jdGlvbiwgZXJyb3IpOworfQorCisvLyBtZXRo
b2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOm9wdGlvbnM6cmVmbGVjdGlv
bjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2
aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OkZ1bmN0aW9uKiBjb21wdXRl
RnVuY3Rpb24sIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVs
ZWFzZWRDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBl
cnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQaXBl
bGluZVN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZVdpdGhGdW5jdGlvbl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfKSwgY29tcHV0ZUZ1bmN0aW9u
LCBvcHRpb25zLCByZWZsZWN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0
ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb246Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OkZ1
bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5l
U3RhdGVXaXRoRnVuY3Rpb25fY29tcGxldGlvbkhhbmRsZXJfKSwgY29tcHV0ZUZ1bmN0aW9uLCBj
b21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVXaXRoRnVuY3Rpb246b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6RnVuY3Rp
b24qIGNvbXB1dGVGdW5jdGlvbiwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBN
VEw6Ok5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxl
ciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25f
b3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8pLCBjb21wdXRlRnVuY3Rpb24sIG9wdGlvbnMsIGNv
bXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVjdGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1U
TDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZShjb25zdCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1U
TDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRDb21wdXRl
UGlwZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlw
dG9yX29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBvcHRpb25zLCByZWZs
ZWN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoRGVzY3JpcHRvcjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlv
bnMsIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBs
ZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdp
dGhEZXNjcmlwdG9yX29wdGlvbnNfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgb3B0
aW9ucywgY29tcGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0ZlbmNlCitfTVRM
X0lOTElORSBNVEw6OkZlbmNlKiBNVEw6OkRldmljZTo6bmV3RmVuY2UoKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RmVuY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0ZlbmNlKSk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNGZWF0dXJlU2V0OgorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNGZWF0dXJlU2V0KE1UTDo6RmVhdHVyZVNl
dCBmZWF0dXJlU2V0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzRmVhdHVyZVNldF8pLCBmZWF0dXJlU2V0
KTsKK30KKworLy8gbWV0aG9kOiBzdXBwb3J0c0ZhbWlseToKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpEZXZpY2U6OnN1cHBvcnRzRmFtaWx5KE1UTDo6R1BVRmFtaWx5IGdwdUZhbWlseSkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzdXBwb3J0c0ZhbWlseV8pLCBncHVGYW1pbHkpOworfQorCisvLyBtZXRob2Q6IHN1cHBv
cnRzVGV4dHVyZVNhbXBsZUNvdW50OgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3Vw
cG9ydHNUZXh0dXJlU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHN1cHBvcnRzVGV4dHVyZVNhbXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8g
bWV0aG9kOiBtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9ybWF0OgorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2aWNlOjptaW5pbXVtTGluZWFyVGV4dHVyZUFs
aWdubWVudEZvclBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgZm9ybWF0KQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9ybWF0XyksIGZvcm1h
dCk7Cit9CisKKy8vIG1ldGhvZDogbWluaW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhl
bEZvcm1hdDoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6bWluaW11bVRl
eHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGZvcm1h
dCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobWluaW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZv
cm1hdF8pLCBmb3JtYXQpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3RhdGVX
aXRoVGlsZURlc2NyaXB0b3I6b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOgorX01UTF9JTkxJTkUg
TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVT
dGF0ZShjb25zdCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3Is
IE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVz
Y3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfKSwgZGVzY3JpcHRvciwgb3B0aW9ucywg
cmVmbGVjdGlvbiwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVXaXRoVGlsZURlc2NyaXB0b3I6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0
aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0
aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVsaW5l
U3RhdGVXaXRoVGlsZURlc2NyaXB0b3Jfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8pLCBkZXNj
cmlwdG9yLCBvcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIHByb3BlcnR5OiBt
YXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
RGV2aWNlOjptYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG1heFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhBcmd1
bWVudEJ1ZmZlclNhbXBsZXJDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2
aWNlOjptYXhBcmd1bWVudEJ1ZmZlclNhbXBsZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG1heEFyZ3VtZW50QnVmZmVyU2FtcGxlckNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBwcm9n
cmFtbWFibGVTYW1wbGVQb3NpdGlvbnNTdXBwb3J0ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpE
ZXZpY2U6OnByb2dyYW1tYWJsZVNhbXBsZVBvc2l0aW9uc1N1cHBvcnRlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoYXJlUHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRpb25zU3VwcG9ydGVkKSk7Cit9CisKKy8v
IG1ldGhvZDogZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9uczpjb3VudDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpEZXZpY2U6OmdldERlZmF1bHRTYW1wbGVQb3NpdGlvbnMoTVRMOjpTYW1wbGVQb3Np
dGlvbiogcG9zaXRpb25zLCBOUzo6VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdldERlZmF1bHRTYW1wbGVQb3Np
dGlvbnNfY291bnRfKSwgcG9zaXRpb25zLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogbmV3QXJn
dW1lbnRFbmNvZGVyV2l0aEFyZ3VtZW50czoKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRFbmNv
ZGVyKiBNVEw6OkRldmljZTo6bmV3QXJndW1lbnRFbmNvZGVyKGNvbnN0IE5TOjpBcnJheSogYXJn
dW1lbnRzKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRF
bmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJn
dW1lbnRzXyksIGFyZ3VtZW50cyk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNSYXN0ZXJpemF0
aW9uUmF0ZU1hcFdpdGhMYXllckNvdW50OgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6
c3VwcG9ydHNSYXN0ZXJpemF0aW9uUmF0ZU1hcChOUzo6VUludGVnZXIgbGF5ZXJDb3VudCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdXBwb3J0c1Jhc3Rlcml6YXRpb25SYXRlTWFwV2l0aExheWVyQ291bnRfKSwgbGF5
ZXJDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmFzdGVyaXphdGlvblJhdGVNYXBXaXRoRGVz
Y3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXAqIE1UTDo6RGV2
aWNlOjpuZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcChjb25zdCBNVEw6OlJhc3Rlcml6YXRpb25SYXRl
TWFwRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQor
CisvLyBtZXRob2Q6IG5ld0luZGlyZWN0Q29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yOm1heENv
bW1hbmRDb3VudDpvcHRpb25zOgorX01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZm
ZXIqIE1UTDo6RGV2aWNlOjpuZXdJbmRpcmVjdENvbW1hbmRCdWZmZXIoY29uc3QgTVRMOjpJbmRp
cmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6VUludGVnZXIgbWF4
Q291bnQsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG5ld0luZGlyZWN0Q29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yX21heENvbW1h
bmRDb3VudF9vcHRpb25zXyksIGRlc2NyaXB0b3IsIG1heENvdW50LCBvcHRpb25zKTsKK30KKwor
Ly8gbWV0aG9kOiBuZXdFdmVudAorX01UTF9JTkxJTkUgTVRMOjpFdmVudCogTVRMOjpEZXZpY2U6
Om5ld0V2ZW50KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkV2ZW50
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdFdmVudCkpOworfQorCisvLyBtZXRob2Q6IG5l
d1NoYXJlZEV2ZW50CitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50KiBNVEw6OkRldmljZTo6
bmV3U2hhcmVkRXZlbnQoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
U2hhcmVkRXZlbnQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1NoYXJlZEV2ZW50KSk7Cit9
CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlOgorX01UTF9JTkxJTkUgTVRM
OjpTaGFyZWRFdmVudCogTVRMOjpEZXZpY2U6Om5ld1NoYXJlZEV2ZW50KGNvbnN0IE1UTDo6U2hh
cmVkRXZlbnRIYW5kbGUqIHNoYXJlZEV2ZW50SGFuZGxlKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6U2hhcmVkRXZlbnQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1NoYXJlZEV2ZW50V2l0aEhhbmRsZV8pLCBzaGFyZWRFdmVudEhhbmRsZSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBwZWVyR3JvdXBJRAorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpEZXZpY2U6OnBl
ZXJHcm91cElEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50
NjRfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwZWVyR3JvdXBJRCkpOworfQorCisvLyBwcm9w
ZXJ0eTogcGVlckluZGV4CitfTVRMX0lOTElORSB1aW50MzJfdCBNVEw6OkRldmljZTo6cGVlcklu
ZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50MzJfdD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChwZWVySW5kZXgpKTsKK30KKworLy8gcHJvcGVydHk6IHBl
ZXJDb3VudAorX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpEZXZpY2U6OnBlZXJDb3VudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDMyX3Q+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocGVlckNvdW50KSk7Cit9CisKKy8vIG1ldGhvZDogc3BhcnNlVGlsZVNp
emVXaXRoVGV4dHVyZVR5cGU6cGl4ZWxGb3JtYXQ6c2FtcGxlQ291bnQ6CitfTVRMX0lOTElORSBN
VEw6OlNpemUgTVRMOjpEZXZpY2U6OnNwYXJzZVRpbGVTaXplKE1UTDo6VGV4dHVyZVR5cGUgdGV4
dHVyZVR5cGUsIE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciBzYW1w
bGVDb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemU+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc3BhcnNlVGlsZVNpemVXaXRoVGV4dHVyZVR5cGVfcGl4ZWxG
b3JtYXRfc2FtcGxlQ291bnRfKSwgdGV4dHVyZVR5cGUsIHBpeGVsRm9ybWF0LCBzYW1wbGVDb3Vu
dCk7Cit9CisKKy8vIHByb3BlcnR5OiBzcGFyc2VUaWxlU2l6ZUluQnl0ZXMKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6c3BhcnNlVGlsZVNpemVJbkJ5dGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc3BhcnNlVGlsZVNpemVJbkJ5dGVzKSk7Cit9CisKKy8vIG1ldGhvZDog
Y29udmVydFNwYXJzZVBpeGVsUmVnaW9uczp0b1RpbGVSZWdpb25zOndpdGhUaWxlU2l6ZTphbGln
bm1lbnRNb2RlOm51bVJlZ2lvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpjb252
ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zKGNvbnN0IE1UTDo6UmVnaW9uKiBwaXhlbFJlZ2lvbnMsIE1U
TDo6UmVnaW9uKiB0aWxlUmVnaW9ucywgTVRMOjpTaXplIHRpbGVTaXplLCBNVEw6OlNwYXJzZVRl
eHR1cmVSZWdpb25BbGlnbm1lbnRNb2RlIG1vZGUsIE5TOjpVSW50ZWdlciBudW1SZWdpb25zKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zX3RvVGlsZVJlZ2lvbnNfd2l0aFRpbGVTaXplX2FsaWdu
bWVudE1vZGVfbnVtUmVnaW9uc18pLCBwaXhlbFJlZ2lvbnMsIHRpbGVSZWdpb25zLCB0aWxlU2l6
ZSwgbW9kZSwgbnVtUmVnaW9ucyk7Cit9CisKKy8vIG1ldGhvZDogY29udmVydFNwYXJzZVRpbGVS
ZWdpb25zOnRvUGl4ZWxSZWdpb25zOndpdGhUaWxlU2l6ZTpudW1SZWdpb25zOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkRldmljZTo6Y29udmVydFNwYXJzZVRpbGVSZWdpb25zKGNvbnN0IE1UTDo6
UmVnaW9uKiB0aWxlUmVnaW9ucywgTVRMOjpSZWdpb24qIHBpeGVsUmVnaW9ucywgTVRMOjpTaXpl
IHRpbGVTaXplLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29udmVydFNwYXJzZVRpbGVSZWdp
b25zX3RvUGl4ZWxSZWdpb25zX3dpdGhUaWxlU2l6ZV9udW1SZWdpb25zXyksIHRpbGVSZWdpb25z
LCBwaXhlbFJlZ2lvbnMsIHRpbGVTaXplLCBudW1SZWdpb25zKTsKK30KKworLy8gcHJvcGVydHk6
IG1heEJ1ZmZlckxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2aWNlOjpt
YXhCdWZmZXJMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhCdWZmZXJMZW5ndGgpKTsK
K30KKworLy8gcHJvcGVydHk6IGNvdW50ZXJTZXRzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1U
TDo6RGV2aWNlOjpjb3VudGVyU2V0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3VudGVyU2V0cykp
OworfQorCisvLyBtZXRob2Q6IG5ld0NvdW50ZXJTYW1wbGVCdWZmZXJXaXRoRGVzY3JpcHRvcjpl
cnJvcjoKK19NVExfSU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpEZXZpY2U6
Om5ld0NvdW50ZXJTYW1wbGVCdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdDb3VudGVyU2FtcGxlQnVmZmVyV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwg
ZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IHNhbXBsZVRpbWVzdGFtcHM6Z3B1
VGltZXN0YW1wOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6c2FtcGxlVGltZXN0YW1w
cyhNVEw6OlRpbWVzdGFtcCogY3B1VGltZXN0YW1wLCBNVEw6OlRpbWVzdGFtcCogZ3B1VGltZXN0
YW1wKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzYW1wbGVUaW1lc3RhbXBzX2dwdVRpbWVzdGFtcF8pLCBjcHVUaW1lc3RhbXAsIGdwdVRp
bWVzdGFtcCk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNDb3VudGVyU2FtcGxpbmc6CitfTVRM
X0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c0NvdW50ZXJTYW1wbGluZyhNVEw6OkNv
dW50ZXJTYW1wbGluZ1BvaW50IHNhbXBsaW5nUG9pbnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNDb3Vu
dGVyU2FtcGxpbmdfKSwgc2FtcGxpbmdQb2ludCk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNW
ZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQ6CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpz
dXBwb3J0c1ZlcnRleEFtcGxpZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgY291bnQpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc3VwcG9ydHNWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfKSwgY291bnQpOworfQorCisv
LyBwcm9wZXJ0eTogc3VwcG9ydHNEeW5hbWljTGlicmFyaWVzCitfTVRMX0lOTElORSBib29sIE1U
TDo6RGV2aWNlOjpzdXBwb3J0c0R5bmFtaWNMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1
cHBvcnRzRHluYW1pY0xpYnJhcmllcykpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNSZW5k
ZXJEeW5hbWljTGlicmFyaWVzCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0
c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzUmVuZGVy
RHluYW1pY0xpYnJhcmllcykpOworfQorCisvLyBtZXRob2Q6IG5ld0R5bmFtaWNMaWJyYXJ5OmVy
cm9yOgorX01UTF9JTkxJTkUgTVRMOjpEeW5hbWljTGlicmFyeSogTVRMOjpEZXZpY2U6Om5ld0R5
bmFtaWNMaWJyYXJ5KGNvbnN0IE1UTDo6TGlicmFyeSogbGlicmFyeSwgTlM6OkVycm9yKiogZXJy
b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEeW5hbWljTGlicmFy
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RHluYW1pY0xpYnJhcnlfZXJyb3JfKSwgbGli
cmFyeSwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld0R5bmFtaWNMaWJyYXJ5V2l0aFVSTDpl
cnJvcjoKK19NVExfSU5MSU5FIE1UTDo6RHluYW1pY0xpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdE
eW5hbWljTGlicmFyeShjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioqIGVycm9yKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RHluYW1pY0xpYnJhcnkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld0R5bmFtaWNMaWJyYXJ5V2l0aFVSTF9lcnJvcl8pLCB1cmws
IGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdCaW5hcnlBcmNoaXZlV2l0aERlc2NyaXB0b3I6
ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkJpbmFyeUFyY2hpdmUqIE1UTDo6RGV2aWNlOjpuZXdC
aW5hcnlBcmNoaXZlKGNvbnN0IE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIGRlc2NyaXB0
b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6QmluYXJ5QXJjaGl2ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QmluYXJ5QXJj
aGl2ZVdpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8g
cHJvcGVydHk6IHN1cHBvcnRzUmF5dHJhY2luZworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmlj
ZTo6c3VwcG9ydHNSYXl0cmFjaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1JheXRyYWNp
bmcpKTsKK30KKworLy8gbWV0aG9kOiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplc1dpdGhEZXNj
cmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplcyBNVEw6
OkRldmljZTo6YWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMoY29uc3QgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXM+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXNXaXRoRGVzY3JpcHRvcl8pLCBk
ZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRo
U2l6ZToKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBNVEw6OkRldmlj
ZTo6bmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlKE5TOjpVSW50ZWdlciBzaXplKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRoU2l6ZV8pLCBz
aXplKTsKK30KKworLy8gbWV0aG9kOiBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRoRGVzY3Jp
cHRvcjoKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBNVEw6OkRldmlj
ZTo6bmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9
CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnMKK19NVExfSU5MSU5FIGJv
b2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzRnVuY3Rpb25Qb2ludGVycygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0
c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNl
OjpzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyKSk7Cit9CisKKy8vIHByb3BlcnR5OiBz
dXBwb3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNl
OjpzdXBwb3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0
c1JheXRyYWNpbmdGcm9tUmVuZGVyKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c1ByaW1p
dGl2ZU1vdGlvbkJsdXIKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUHJp
bWl0aXZlTW90aW9uQmx1cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNQcmltaXRpdmVNb3Rp
b25CbHVyKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMRHJhd2FibGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTERyYXdhYmxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzQwOTc2MDQxMzdmZTMwYmVlNzBiMmQx
NTVkMzE3YzYyYmI5NjljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTERyYXdhYmxlLmhwcApAQCAtMCwwICsxLDk5IEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExE
cmF3YWJsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlk
Z2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKworbmFtZXNwYWNlIE1UTAorewordXNpbmcg
RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyID0gdm9pZCAoXikoY2xhc3MgRHJhd2FibGUqKTsKKwor
dXNpbmcgRHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZv
aWQoY2xhc3MgRHJhd2FibGUqKT47CisKK2NsYXNzIERyYXdhYmxlIDogcHVibGljIE5TOjpSZWZl
cmVuY2luZzxEcmF3YWJsZT4KK3sKK3B1YmxpYzoKKyAgICB2b2lkICAgICAgICAgICBhZGRQcmVz
ZW50ZWRIYW5kbGVyKGNvbnN0IE1UTDo6RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyRnVuY3Rpb24m
IGZ1bmN0aW9uKTsKKworICAgIHZvaWQgICAgICAgICAgIHByZXNlbnQoKTsKKworICAgIHZvaWQg
ICAgICAgICAgIHByZXNlbnRBdFRpbWUoQ0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9uVGltZSk7
CisKKyAgICB2b2lkICAgICAgICAgICBwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb24oQ0ZUaW1l
SW50ZXJ2YWwgZHVyYXRpb24pOworCisgICAgdm9pZCAgICAgICAgICAgYWRkUHJlc2VudGVkSGFu
ZGxlcihjb25zdCBNVEw6OkRyYXdhYmxlUHJlc2VudGVkSGFuZGxlciBibG9jayk7CisKKyAgICBD
RlRpbWVJbnRlcnZhbCBwcmVzZW50ZWRUaW1lKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIg
ICBkcmF3YWJsZUlEKCkgY29uc3Q7Cit9OworCit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpE
cmF3YWJsZTo6YWRkUHJlc2VudGVkSGFuZGxlcihjb25zdCBNVEw6OkRyYXdhYmxlUHJlc2VudGVk
SGFuZGxlckZ1bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIERyYXdhYmxlUHJlc2Vu
dGVkSGFuZGxlckZ1bmN0aW9uIGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIGFkZFBy
ZXNlbnRlZEhhbmRsZXIoXihEcmF3YWJsZSogcERyYXdhYmxlKSB7IGJsb2NrRnVuY3Rpb24ocERy
YXdhYmxlKTsgfSk7Cit9CisKKy8vIG1ldGhvZDogcHJlc2VudAorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkRyYXdhYmxlOjpwcmVzZW50KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudCkpOworfQorCisvLyBtZXRob2Q6IHByZXNl
bnRBdFRpbWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6OnByZXNlbnRBdFRpbWUo
Q0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9uVGltZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudEF0VGltZV8pLCBwcmVzZW50
YXRpb25UaW1lKTsKK30KKworLy8gbWV0aG9kOiBwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb246
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6OnByZXNlbnRBZnRlck1pbmltdW1EdXJh
dGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudEFmdGVyTWluaW11bUR1cmF0aW9u
XyksIGR1cmF0aW9uKTsKK30KKworLy8gbWV0aG9kOiBhZGRQcmVzZW50ZWRIYW5kbGVyOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkRyYXdhYmxlOjphZGRQcmVzZW50ZWRIYW5kbGVyKGNvbnN0IE1U
TDo6RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyIGJsb2NrKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGRQcmVzZW50ZWRIYW5kbGVyXyks
IGJsb2NrKTsKK30KKworLy8gcHJvcGVydHk6IHByZXNlbnRlZFRpbWUKK19NVExfSU5MSU5FIENG
VGltZUludGVydmFsIE1UTDo6RHJhd2FibGU6OnByZXNlbnRlZFRpbWUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPENGVGltZUludGVydmFsPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHByZXNlbnRlZFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGRyYXdhYmxlSUQK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRyYXdhYmxlOjpkcmF3YWJsZUlEKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZHJhd2FibGVJRCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFtaWNMaWJyYXJ5LmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEeW5hbWljTGlicmFyeS5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDg5Yjk5OTBkNWY2YmYxNzk0NzJlYjFhMzQ0MjYzM2QwOTQxZGI3OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEeW5h
bWljTGlicmFyeS5ocHAKQEAgLTAsMCArMSw4MiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRHluYW1pY0xpYnJhcnkuaHBw
CisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNp
bmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIER5bmFt
aWNMaWJyYXJ5RXJyb3IpIHsKKyAgICBEeW5hbWljTGlicmFyeUVycm9yTm9uZSA9IDAsCisgICAg
RHluYW1pY0xpYnJhcnlFcnJvckludmFsaWRGaWxlID0gMSwKKyAgICBEeW5hbWljTGlicmFyeUVy
cm9yQ29tcGlsYXRpb25GYWlsdXJlID0gMiwKKyAgICBEeW5hbWljTGlicmFyeUVycm9yVW5yZXNv
bHZlZEluc3RhbGxOYW1lID0gMywKKyAgICBEeW5hbWljTGlicmFyeUVycm9yRGVwZW5kZW5jeUxv
YWRGYWlsdXJlID0gNCwKKyAgICBEeW5hbWljTGlicmFyeUVycm9yVW5zdXBwb3J0ZWQgPSA1LAor
fTsKKworY2xhc3MgRHluYW1pY0xpYnJhcnkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPER5bmFt
aWNMaWJyYXJ5PgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKwor
ICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgIGlu
c3RhbGxOYW1lKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgIHNlcmlhbGl6ZVRvVVJMKGNv
bnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiogZXJyb3IpOworfTsKKworfQorCisvLyBwcm9w
ZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RHluYW1pY0xpYnJhcnk6
OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6RHluYW1pY0xpYnJhcnk6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVs
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5M
SU5FIE1UTDo6RGV2aWNlKiBNVEw6OkR5bmFtaWNMaWJyYXJ5OjpkZXZpY2UoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbGxOYW1lCitfTVRM
X0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkR5bmFtaWNMaWJyYXJ5OjppbnN0YWxsTmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaW5zdGFsbE5hbWUpKTsKK30KKworLy8gbWV0aG9kOiBzZXJpYWxp
emVUb1VSTDplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEeW5hbWljTGlicmFyeTo6c2Vy
aWFsaXplVG9VUkwoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNlcmlhbGl6ZVRvVVJMX2Vycm9yXyksIHVybCwgZXJyb3IpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEV2ZW50LmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExFdmVudC5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE5
ZmFjMjM1MThmODZhNTFlNDIwYTQ5ODQ2NzY0YzVlMGRmNThlZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExFdmVudC5ocHAKQEAgLTAs
MCArMSwxNjMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIE1ldGFsL01UTEV2ZW50LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRXZlbnQu
aHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBFdmVudCA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8RXZlbnQ+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBjb25z
dDsKKworICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
IHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKK307CisKK2NsYXNzIFNoYXJlZEV2
ZW50TGlzdGVuZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFNoYXJlZEV2ZW50TGlzdGVuZXI+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFNoYXJlZEV2ZW50TGlzdGVuZXIqIGFsbG9j
KCk7CisKKyAgICBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIqICAgICAgICAgaW5pdCgpOworCisg
ICAgTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyKiAgICAgICAgIGluaXQoY29uc3QgZGlzcGF0Y2hf
cXVldWVfdCBkaXNwYXRjaFF1ZXVlKTsKKworICAgIGRpc3BhdGNoX3F1ZXVlX3QgICAgICAgICAg
ICAgICAgICBkaXNwYXRjaFF1ZXVlKCkgY29uc3Q7Cit9OworCit1c2luZyBTaGFyZWRFdmVudE5v
dGlmaWNhdGlvbkJsb2NrID0gdm9pZCAoXikoU2hhcmVkRXZlbnQqIHBFdmVudCwgc3RkOjp1aW50
NjRfdCB2YWx1ZSk7CisKK2NsYXNzIFNoYXJlZEV2ZW50IDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxTaGFyZWRFdmVudCwgRXZlbnQ+Cit7CitwdWJsaWM6CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgIG5vdGlmeUxpc3RlbmVyKGNvbnN0IGNsYXNzIFNoYXJlZEV2ZW50TGlzdGVuZXIqIGxp
c3RlbmVyLCB1aW50NjRfdCB2YWx1ZSwgY29uc3QgTVRMOjpTaGFyZWRFdmVudE5vdGlmaWNhdGlv
bkJsb2NrIGJsb2NrKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50SGFuZGxlKiBuZXdTaGFyZWRF
dmVudEhhbmRsZSgpOworCisgICAgdWludDY0X3QgICAgICAgICAgICAgICAgIHNpZ25hbGVkVmFs
dWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgc2V0U2lnbmFsZWRWYWx1
ZSh1aW50NjRfdCBzaWduYWxlZFZhbHVlKTsKK307CisKK2NsYXNzIFNoYXJlZEV2ZW50SGFuZGxl
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxTaGFyZWRFdmVudEhhbmRsZT4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgU2hhcmVkRXZlbnRIYW5kbGUqIGFsbG9jKCk7CisKKyAgICBjbGFz
cyBTaGFyZWRFdmVudEhhbmRsZSogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKK307CisKK3N0cnVjdCBTaGFyZWRFdmVu
dEhhbmRsZVByaXZhdGUKK3sKK30gX01UTF9QQUNLRUQ7CisKK30KKworLy8gcHJvcGVydHk6IGRl
dmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6RXZlbnQ6OmRldmljZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExf
SU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RXZlbnQ6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RXZlbnQ6OnNldExhYmVsKGNv
bnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIqIE1U
TDo6U2hhcmVkRXZlbnRMaXN0ZW5lcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI+KF9NVExfUFJJVkFURV9DTFMoTVRMU2hh
cmVkRXZlbnRMaXN0ZW5lcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6U2hhcmVkRXZlbnRMaXN0ZW5lciogTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyOjppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI+
KCk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhEaXNwYXRjaFF1ZXVlOgorX01UTF9JTkxJTkUg
TVRMOjpTaGFyZWRFdmVudExpc3RlbmVyKiBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI6OmluaXQo
Y29uc3QgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lcio+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoaW5pdFdpdGhEaXNwYXRjaFF1ZXVlXyksIGRpc3BhdGNoUXVldWUpOworfQorCisv
LyBwcm9wZXJ0eTogZGlzcGF0Y2hRdWV1ZQorX01UTF9JTkxJTkUgZGlzcGF0Y2hfcXVldWVfdCBN
VEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI6OmRpc3BhdGNoUXVldWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGRpc3BhdGNoX3F1ZXVlX3Q+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZGlzcGF0Y2hRdWV1ZSkpOworfQorCisvLyBtZXRob2Q6IG5vdGlmeUxpc3RlbmVy
OmF0VmFsdWU6YmxvY2s6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2hhcmVkRXZlbnQ6Om5vdGlm
eUxpc3RlbmVyKGNvbnN0IE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIHVpbnQ2
NF90IHZhbHVlLCBjb25zdCBNVEw6OlNoYXJlZEV2ZW50Tm90aWZpY2F0aW9uQmxvY2sgYmxvY2sp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5vdGlmeUxpc3RlbmVyX2F0VmFsdWVfYmxvY2tfKSwgbGlzdGVuZXIsIHZhbHVlLCBibG9jayk7
Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkRXZlbnRIYW5kbGUKK19NVExfSU5MSU5FIE1UTDo6
U2hhcmVkRXZlbnRIYW5kbGUqIE1UTDo6U2hhcmVkRXZlbnQ6Om5ld1NoYXJlZEV2ZW50SGFuZGxl
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNoYXJlZEV2ZW50SGFu
ZGxlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdTaGFyZWRFdmVudEhhbmRsZSkpOworfQor
CisvLyBwcm9wZXJ0eTogc2lnbmFsZWRWYWx1ZQorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpT
aGFyZWRFdmVudDo6c2lnbmFsZWRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2lnbmFsZWRWYWx1
ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2hhcmVkRXZlbnQ6OnNldFNpZ25hbGVk
VmFsdWUodWludDY0X3Qgc2lnbmFsZWRWYWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2lnbmFsZWRWYWx1ZV8pLCBzaWduYWxl
ZFZhbHVlKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
U2hhcmVkRXZlbnRIYW5kbGUqIE1UTDo6U2hhcmVkRXZlbnRIYW5kbGU6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTaGFyZWRFdmVudEhhbmRsZT4oX01UTF9Q
UklWQVRFX0NMUyhNVExTaGFyZWRFdmVudEhhbmRsZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6U2hhcmVkRXZlbnRIYW5kbGUqIE1UTDo6U2hhcmVkRXZlbnRIYW5k
bGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U2hhcmVkRXZl
bnRIYW5kbGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0
cmluZyogTVRMOjpTaGFyZWRFdmVudEhhbmRsZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxhYmVsKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMRmVuY2UuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEZlbmNlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzZlOTMxNGU1MzkzNWQyNDE2NjE5ZWNiMDMwMDM2
MDhmNGM4ZjVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEZlbmNlLmhwcApAQCAtMCwwICsxLDU3IEBACisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExGZW5jZS5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2lu
Y2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
LmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgRmVuY2UgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPEZlbmNlPgoreworcHVibGljOgorICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29u
c3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7Cit9OworCit9CisKKy8vIHByb3Bl
cnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkZlbmNlOjpkZXZpY2Uo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVs
CitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZlbmNlOjpsYWJlbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZlbmNlOjpzZXRM
YWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9u
Q29uc3RhbnRWYWx1ZXMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2MDg1NTRlYzQ2MmI3
YTU0YjI3ZTdmZGIyMzMzM2M3NjAxYTMzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAK
QEAgLTAsMCArMSw4NSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJN
VExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUg
Ik1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4K
KworI2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3Mg
RnVuY3Rpb25Db25zdGFudFZhbHVlcyA6IHB1YmxpYyBOUzo6Q29weWluZzxGdW5jdGlvbkNvbnN0
YW50VmFsdWVzPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvbkNvbnN0YW50
VmFsdWVzKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25Db25zdGFudFZhbHVlcyogICAg
ICAgIGluaXQoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudFZhbHVlKGNvbnN0IHZvaWQqIHZhbHVlLCBNVEw6OkRhdGFUeXBlIHR5cGUsIE5T
OjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnRWYWx1ZXMoY29uc3Qgdm9pZCogdmFsdWVzLCBNVEw6OkRhdGFUeXBl
IHR5cGUsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnRWYWx1ZShjb25zdCB2b2lkKiB2YWx1ZSwgTVRMOjpEYXRh
VHlwZSB0eXBlLCBjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBNVEw6
OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6YWxsb2M8TVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIE1UTDo6RnVuY3Rpb25Db25zdGFudFZh
bHVlczo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlv
bkNvbnN0YW50VmFsdWVzPigpOworfQorCisvLyBtZXRob2Q6IHNldENvbnN0YW50VmFsdWU6dHlw
ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6
OnNldENvbnN0YW50VmFsdWUoY29uc3Qgdm9pZCogdmFsdWUsIE1UTDo6RGF0YVR5cGUgdHlwZSwg
TlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRDb25zdGFudFZhbHVlX3R5cGVfYXRJbmRleF8pLCB2YWx1
ZSwgdHlwZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldENvbnN0YW50VmFsdWVzOnR5cGU6
d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6
OnNldENvbnN0YW50VmFsdWVzKGNvbnN0IHZvaWQqIHZhbHVlcywgTVRMOjpEYXRhVHlwZSB0eXBl
LCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0YW50VmFsdWVzX3R5cGVfd2l0aFJhbmdlXyksIHZh
bHVlcywgdHlwZSwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldENvbnN0YW50VmFsdWU6dHlw
ZTp3aXRoTmFtZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVz
OjpzZXRDb25zdGFudFZhbHVlKGNvbnN0IHZvaWQqIHZhbHVlLCBNVEw6OkRhdGFUeXBlIHR5cGUs
IGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0YW50VmFsdWVfdHlwZV93aXRoTmFtZV8p
LCB2YWx1ZSwgdHlwZSwgbmFtZSk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXQKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzOjpyZXNldCgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rp
b25EZXNjcmlwdG9yLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ZjAwZDY3ODM0YmRiYjM5ODY4
ZTU0ZjkzZmY5M2FlNTZhYWVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcApAQCAtMCwwICsx
LDE1NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcAorLy8KKy8vIENvcHlyaWdodCAy
MDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBw
IgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5o
cHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAi
TVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9PUFRJ
T05TKE5TOjpVSW50ZWdlciwgRnVuY3Rpb25PcHRpb25zKSB7CisgICAgRnVuY3Rpb25PcHRpb25O
b25lID0gMCwKKyAgICBGdW5jdGlvbk9wdGlvbkNvbXBpbGVUb0JpbmFyeSA9IDEsCit9OworCitj
bGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8RnVuY3Rpb25EZXNj
cmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7
CisKKyAgICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBmdW5jdGlvbkRlc2NyaXB0
b3IoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgIG5hbWUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXROYW1lKGNvbnN0IE5T
OjpTdHJpbmcqIG5hbWUpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICAg
c3BlY2lhbGl6ZWROYW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3BlY2lhbGl6ZWROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIHNwZWNpYWxpemVkTmFt
ZSk7CisKKyAgICBjbGFzcyBGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiAgICBjb25zdGFudFZhbHVl
cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0
YW50VmFsdWVzKGNvbnN0IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFs
dWVzKTsKKworICAgIE1UTDo6RnVuY3Rpb25PcHRpb25zICAgICAgICAgICAgIG9wdGlvbnMoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPcHRpb25zKE1U
TDo6RnVuY3Rpb25PcHRpb25zIG9wdGlvbnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAg
ICAgICAgICAgICAgYmluYXJ5QXJjaGl2ZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFy
eUFyY2hpdmVzKTsKK307CisKK2NsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciA6
IHB1YmxpYyBOUzo6Q29weWluZzxJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IsIE1UTDo6
RnVuY3Rpb25EZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBJbnRlcnNl
Y3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbnRlcnNlY3Rp
b25GdW5jdGlvbkRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7Cit9OworCit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogTVRM
OjpGdW5jdGlvbkRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rp
b25EZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpG
dW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcj4oKTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogZnVuY3Rpb25EZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6
OkZ1bmN0aW9uRGVzY3JpcHRvciogTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OmZ1bmN0aW9uRGVz
Y3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlv
bkRlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEZ1bmN0aW9uRGVzY3JpcHRvciksIF9N
VExfUFJJVkFURV9TRUwoZnVuY3Rpb25EZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBu
YW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6bmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpzZXROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dE5hbWVfKSwgbmFtZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzcGVjaWFsaXplZE5hbWUKK19NVExf
SU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpzcGVjaWFsaXplZE5h
bWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNwZWNpYWxpemVkTmFtZSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpzZXRTcGVjaWFsaXplZE5hbWUoY29u
c3QgTlM6OlN0cmluZyogc3BlY2lhbGl6ZWROYW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTcGVjaWFsaXplZE5hbWVfKSwgc3Bl
Y2lhbGl6ZWROYW1lKTsKK30KKworLy8gcHJvcGVydHk6IGNvbnN0YW50VmFsdWVzCitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9y
Ojpjb25zdGFudFZhbHVlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b25zdGFudFZhbHVlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25EZXNj
cmlwdG9yOjpzZXRDb25zdGFudFZhbHVlcyhjb25zdCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1
ZXMqIGNvbnN0YW50VmFsdWVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRDb25zdGFudFZhbHVlc18pLCBjb25zdGFudFZhbHVlcyk7
Cit9CisKKy8vIHByb3BlcnR5OiBvcHRpb25zCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uT3B0
aW9ucyBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6b3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbk9wdGlvbnM+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwob3B0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rp
b25EZXNjcmlwdG9yOjpzZXRPcHRpb25zKE1UTDo6RnVuY3Rpb25PcHRpb25zIG9wdGlvbnMpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dE9wdGlvbnNfKSwgb3B0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlBcmNoaXZlcwor
X01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6YmluYXJ5QXJj
aGl2ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJh
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYmluYXJ5QXJjaGl2ZXMpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMoY29u
c3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmluYXJ5
QXJjaGl2ZXMpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25EZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1U
TDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTElu
dGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBNVEw6OkludGVy
c2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3I+KCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25I
YW5kbGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0
aW9uSGFuZGxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGYzODUxNDM3YzcxZTgwZGE5ODdlZWNlOThiZDFh
ODA4YzNlMmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEZ1bmN0aW9uSGFuZGxlLmhwcApAQCAtMCwwICsxLDYxIEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExG
dW5jdGlvbkhhbmRsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTExpYnJhcnkuaHBwIgorCitu
YW1lc3BhY2UgTVRMCit7CitjbGFzcyBGdW5jdGlvbkhhbmRsZSA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8RnVuY3Rpb25IYW5kbGU+Cit7CitwdWJsaWM6CisgICAgTVRMOjpGdW5jdGlvblR5cGUg
ZnVuY3Rpb25UeXBlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICBuYW1lKCkgY29u
c3Q7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICBkZXZpY2UoKSBjb25zdDsKK307CisKK30KKwor
Ly8gcHJvcGVydHk6IGZ1bmN0aW9uVHlwZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblR5cGUg
TVRMOjpGdW5jdGlvbkhhbmRsZTo6ZnVuY3Rpb25UeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uVHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTChmdW5jdGlvblR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5F
IE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb25IYW5kbGU6Om5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpE
ZXZpY2UqIE1UTDo6RnVuY3Rpb25IYW5kbGU6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGRldmljZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EzOGRjOWRhYmQ2MWVhYmJl
ZmUwZTRiZGMzNWUyOTNlMjcwODE1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAKQEAgLTAsMCArMSwxMTQg
QEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8v
IE1ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUg
Ik1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNs
dWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25M
b2cuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBGdW5j
dGlvbkxvZ1R5cGUpIHsKKyAgICBGdW5jdGlvbkxvZ1R5cGVWYWxpZGF0aW9uID0gMCwKK307CisK
K2NsYXNzIExvZ0NvbnRhaW5lciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8TG9nQ29udGFpbmVy
LCBOUzo6RmFzdEVudW1lcmF0aW9uPgoreworcHVibGljOgorfTsKKworY2xhc3MgRnVuY3Rpb25M
b2dEZWJ1Z0xvY2F0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbkxvZ0RlYnVn
TG9jYXRpb24+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogIGZ1bmN0aW9uTmFtZSgpIGNv
bnN0OworCisgICAgTlM6OlVSTCogICAgIFVSTCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2Vy
IGxpbmUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciBjb2x1bW4oKSBjb25zdDsKK307CisK
K2NsYXNzIEZ1bmN0aW9uTG9nIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbkxvZz4K
K3sKK3B1YmxpYzoKKyAgICBNVEw6OkZ1bmN0aW9uTG9nVHlwZSAgICAgICAgICAgIHR5cGUoKSBj
b25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgZW5jb2RlckxhYmVs
KCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogICAgICAgICAgICAgICAgIGZ1bmN0aW9u
KCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24qIGRlYnVnTG9j
YXRpb24oKSBjb25zdDsKK307CisKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uTmFtZQorX01U
TF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb246OmZ1bmN0
aW9uTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0
cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25OYW1lKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBVUkwKK19NVExfSU5MSU5FIE5TOjpVUkwqIE1UTDo6RnVuY3Rpb25Mb2dEZWJ1Z0xv
Y2F0aW9uOjpVUkwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVUkwqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKFVSTCkpOworfQorCisvLyBwcm9wZXJ0eTog
bGluZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0
aW9uOjpsaW5lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGluZSkpOworfQorCisvLyBwcm9wZXJ0
eTogY29sdW1uCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpGdW5jdGlvbkxvZ0RlYnVn
TG9jYXRpb246OmNvbHVtbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbHVtbikpOworfQorCisv
LyBwcm9wZXJ0eTogdHlwZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkxvZ1R5cGUgTVRMOjpG
dW5jdGlvbkxvZzo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpGdW5jdGlvbkxvZ1R5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHlwZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogZW5jb2RlckxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBN
VEw6OkZ1bmN0aW9uTG9nOjplbmNvZGVyTGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuY29k
ZXJMYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6
RnVuY3Rpb24qIE1UTDo6RnVuY3Rpb25Mb2c6OmZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChmdW5jdGlvbikpOworfQorCisvLyBwcm9wZXJ0eTogZGVidWdMb2NhdGlvbgorX01UTF9J
TkxJTkUgTVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24qIE1UTDo6RnVuY3Rpb25Mb2c6OmRl
YnVnTG9jYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZWJ1
Z0xvY2F0aW9uKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWRj
YjQ5NmNlZDZiZDdhMzJiNTE2YzJiMmYzNTY1Yzc5YjYxZGQxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3RpdGNoaW5n
LmhwcApAQCAtMCwwICsxLDMwNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwCisvLwor
Ly8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
TVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRl
ICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+
CisKKyNpbmNsdWRlICJNVExGdW5jdGlvblN0aXRjaGluZy5ocHAiCisKK25hbWVzcGFjZSBNVEwK
K3sKK2NsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlIDogcHVibGljIE5TOjpSZWZlcmVu
Y2luZzxGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZT4KK3sKK307CisKK2NsYXNzIEZ1bmN0aW9u
U3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxG
dW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZSwgRnVuY3Rpb25TdGl0Y2hpbmdB
dHRyaWJ1dGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5n
QXR0cmlidXRlQWx3YXlzSW5saW5lKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0
Y2hpbmdBdHRyaWJ1dGVBbHdheXNJbmxpbmUqICAgICAgICBpbml0KCk7Cit9OworCitjbGFzcyBG
dW5jdGlvblN0aXRjaGluZ05vZGUgOiBwdWJsaWMgTlM6OkNvcHlpbmc8RnVuY3Rpb25TdGl0Y2hp
bmdOb2RlPgoreworfTsKKworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlLCBGdW5jdGlvblN0
aXRjaGluZ05vZGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3RpdGNo
aW5nSW5wdXROb2RlKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdJbnB1
dE5vZGUqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFyZ3VtZW50SW5kZXgoTlM6OlVJbnRlZ2VyIGFy
Z3VtZW50SW5kZXgpOworCisgICAgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSogICAg
ICAgICBpbml0KE5TOjpVSW50ZWdlciBhcmd1bWVudCk7Cit9OworCitjbGFzcyBGdW5jdGlvblN0
aXRjaGluZ0Z1bmN0aW9uTm9kZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25TdGl0
Y2hpbmdGdW5jdGlvbk5vZGUsIEZ1bmN0aW9uU3RpdGNoaW5nTm9kZT4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSogICAgICAgIGluaXQoKTsK
KworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TmFtZShjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKKworICAgIE5TOjpBcnJheSogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBcmd1bWVudHMoY29uc3Qg
TlM6OkFycmF5KiBhcmd1bWVudHMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250cm9sRGVwZW5kZW5jaWVzKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250cm9sRGVwZW5kZW5j
aWVzKGNvbnN0IE5TOjpBcnJheSogY29udHJvbERlcGVuZGVuY2llcyk7CisKKyAgICBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiAgICAgICAgIGluaXQoY29uc3QgTlM6OlN0cmlu
ZyogbmFtZSwgY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMsIGNvbnN0IE5TOjpBcnJheSogY29u
dHJvbERlcGVuZGVuY2llcyk7Cit9OworCitjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0dyYXBoIDog
cHVibGljIE5TOjpDb3B5aW5nPEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIGFsbG9jKCk7CisKKyAgICBj
bGFzcyBGdW5jdGlvblN0aXRjaGluZ0dyYXBoKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0
cmluZyogICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGdW5jdGlvbk5hbWUoY29u
c3QgTlM6OlN0cmluZyogZnVuY3Rpb25OYW1lKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXROb2Rlcyhjb25zdCBOUzo6QXJyYXkqIG5vZGVzKTsKKworICAg
IGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBvdXRwdXROb2RlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE91dHB1dE5vZGUo
Y29uc3QgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIG91dHB1dE5vZGUpOwor
CisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmli
dXRlcyhjb25zdCBOUzo6QXJyYXkqIGF0dHJpYnV0ZXMpOworCisgICAgTVRMOjpGdW5jdGlvblN0
aXRjaGluZ0dyYXBoKiAgICAgICAgIGluaXQoY29uc3QgTlM6OlN0cmluZyogZnVuY3Rpb25OYW1l
LCBjb25zdCBOUzo6QXJyYXkqIG5vZGVzLCBjb25zdCBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0Z1
bmN0aW9uTm9kZSogb3V0cHV0Tm9kZSwgY29uc3QgTlM6OkFycmF5KiBhdHRyaWJ1dGVzKTsKK307
CisKK2NsYXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8
U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFN0aXRjaGVk
TGlicmFyeURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25HcmFwaHMoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnVuY3Rpb25HcmFwaHMoY29u
c3QgTlM6OkFycmF5KiBmdW5jdGlvbkdyYXBocyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkq
IGZ1bmN0aW9ucyk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKiBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lOjphbGxvYygpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdh
eXNJbmxpbmU+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVB
bHdheXNJbmxpbmUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKiBNVEw6OkZ1bmN0aW9uU3RpdGNo
aW5nQXR0cmlidXRlQWx3YXlzSW5saW5lOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6aW5pdDxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lPigpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0
aXRjaGluZ0lucHV0Tm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZTo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5n
SW5wdXROb2RlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2Rl
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRj
aGluZ0lucHV0Tm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZTo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0
Tm9kZT4oKTsKK30KKworLy8gcHJvcGVydHk6IGFyZ3VtZW50SW5kZXgKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlOjphcmd1bWVudEluZGV4
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJndW1lbnRJbmRleCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU6OnNldEFyZ3VtZW50SW5kZXgo
TlM6OlVJbnRlZ2VyIGFyZ3VtZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFyZ3VtZW50SW5kZXhfKSwgYXJndW1lbnRJ
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhBcmd1bWVudEluZGV4OgorX01UTF9JTkxJ
TkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGlu
Z0lucHV0Tm9kZTo6aW5pdChOUzo6VUludGVnZXIgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaW5pdFdpdGhBcmd1bWVudEluZGV4XyksIGFyZ3VtZW50KTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdGdW5jdGlvbk5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpGdW5jdGlvblN0aXRj
aGluZ0Z1bmN0aW9uTm9kZT4oX01UTF9QUklWQVRFX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0Z1
bmN0aW9uTm9kZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlv
bk5vZGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RnVuY3Rp
b25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRM
X0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpu
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5n
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6c2V0TmFtZShjb25zdCBOUzo6U3Ry
aW5nKiBuYW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXROYW1lXyksIG5hbWUpOworfQorCisvLyBwcm9wZXJ0eTogYXJndW1lbnRz
CitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5v
ZGU6OmFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcmd1bWVudHMpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpzZXRBcmd1
bWVudHMoY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFyZ3VtZW50c18pLCBhcmd1bWVu
dHMpOworfQorCisvLyBwcm9wZXJ0eTogY29udHJvbERlcGVuZGVuY2llcworX01UTF9JTkxJTkUg
TlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpjb250cm9sRGVw
ZW5kZW5jaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbnRyb2xEZXBlbmRlbmNpZXMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpz
ZXRDb250cm9sRGVwZW5kZW5jaWVzKGNvbnN0IE5TOjpBcnJheSogY29udHJvbERlcGVuZGVuY2ll
cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0Q29udHJvbERlcGVuZGVuY2llc18pLCBjb250cm9sRGVwZW5kZW5jaWVzKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0V2l0aE5hbWU6YXJndW1lbnRzOmNvbnRyb2xEZXBlbmRlbmNpZXM6Citf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBNVEw6OkZ1bmN0
aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjppbml0KGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUsIGNv
bnN0IE5TOjpBcnJheSogYXJndW1lbnRzLCBjb25zdCBOUzo6QXJyYXkqIGNvbnRyb2xEZXBlbmRl
bmNpZXMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvblN0
aXRjaGluZ0Z1bmN0aW9uTm9kZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5pdFdpdGhOYW1l
X2FyZ3VtZW50c19jb250cm9sRGVwZW5kZW5jaWVzXyksIG5hbWUsIGFyZ3VtZW50cywgY29udHJv
bERlcGVuZGVuY2llcyk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFw
aDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9u
U3RpdGNoaW5nR3JhcGg+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdHcmFw
aCkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdHcmFwaCogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg+KCk7Cit9
CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvbk5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6ZnVuY3Rpb25OYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChmdW5jdGlvbk5hbWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9u
U3RpdGNoaW5nR3JhcGg6OnNldEZ1bmN0aW9uTmFtZShjb25zdCBOUzo6U3RyaW5nKiBmdW5jdGlv
bk5hbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldEZ1bmN0aW9uTmFtZV8pLCBmdW5jdGlvbk5hbWUpOworfQorCisvLyBwcm9wZXJ0
eTogbm9kZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dy
YXBoOjpub2RlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChub2RlcykpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6c2V0Tm9kZXMoY29uc3QgTlM6OkFy
cmF5KiBub2RlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0Tm9kZXNfKSwgbm9kZXMpOworfQorCisvLyBwcm9wZXJ0eTogb3V0cHV0
Tm9kZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSogTVRM
OjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpvdXRwdXROb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2Rl
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvdXRwdXROb2RlKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpzZXRPdXRwdXROb2RlKGNvbnN0IE1U
TDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIG91dHB1dE5vZGUpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE91dHB1dE5v
ZGVfKSwgb3V0cHV0Tm9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBhdHRyaWJ1dGVzCitfTVRMX0lO
TElORSBOUzo6QXJyYXkqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6YXR0cmlidXRlcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChhdHRyaWJ1dGVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpzZXRBdHRyaWJ1dGVzKGNvbnN0IE5TOjpBcnJh
eSogYXR0cmlidXRlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0QXR0cmlidXRlc18pLCBhdHRyaWJ1dGVzKTsKK30KKworLy8gbWV0
aG9kOiBpbml0V2l0aEZ1bmN0aW9uTmFtZTpub2RlczpvdXRwdXROb2RlOmF0dHJpYnV0ZXM6Citf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdHcmFwaDo6aW5pdChjb25zdCBOUzo6U3RyaW5nKiBmdW5jdGlvbk5hbWUsIGNvbnN0IE5T
OjpBcnJheSogbm9kZXMsIGNvbnN0IE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUq
IG91dHB1dE5vZGUsIGNvbnN0IE5TOjpBcnJheSogYXR0cmlidXRlcykKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGluaXRXaXRoRnVuY3Rpb25OYW1lX25vZGVzX291dHB1dE5vZGVfYXR0
cmlidXRlc18pLCBmdW5jdGlvbk5hbWUsIG5vZGVzLCBvdXRwdXROb2RlLCBhdHRyaWJ1dGVzKTsK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6U3RpdGNoZWRM
aWJyYXJ5RGVzY3JpcHRvciogTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yOjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdGl0Y2hlZExpYnJhcnlE
ZXNjcmlwdG9yKiBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcj4o
KTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uR3JhcGhzCitfTVRMX0lOTElORSBOUzo6QXJy
YXkqIE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcjo6ZnVuY3Rpb25HcmFwaHMoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZnVuY3Rpb25HcmFwaHMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I6OnNldEZ1bmN0aW9uR3JhcGhzKGNvbnN0IE5T
OjpBcnJheSogZnVuY3Rpb25HcmFwaHMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uR3JhcGhzXyksIGZ1bmN0aW9uR3Jh
cGhzKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5
KiBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I6OmZ1bmN0aW9ucygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChmdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0aXRjaGVk
TGlicmFyeURlc2NyaXB0b3I6OnNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9u
cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0RnVuY3Rpb25zXyksIGZ1bmN0aW9ucyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJpZGdlLmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFkZXJCcmlkZ2UuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgxMDA4NWRkYTU3YjQxZTM5NDA4MzM4MmMwYjk5MDJjYzUxMzRlMzcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJp
ZGdlLmhwcApAQCAtMCwwICsxLDIwNDcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEhlYWRlckJyaWRnZS5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKK25hbWVzcGFjZSBNVEw6OlByaXZhdGU6OkNsYXNzCit7CisKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xl
R2VvbWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlv
blN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTEFyZ3VtZW50KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFyZ3VtZW50RGVzY3Jp
cHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBcnJheVR5cGUpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMQXR0cmlidXRlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEF0dHJpYnV0
ZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQXR0cmlidXRlRGVzY3JpcHRv
ckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9y
KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJsaXRQYXNzRGVzY3JpcHRvcik7CitfTVRMX1BS
SVZBVEVfREVGX0NMUyhNVExCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDYXB0dXJlRGVzY3JpcHRvcik7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExDYXB0dXJlTWFuYWdlcik7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExDb21tYW5kQnVmZmVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhN
VExDb21waWxlT3B0aW9ucyk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDb21wdXRlUGFzc0Rl
c2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tcHV0ZVBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTENvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMRnVu
Y3Rpb25Db25zdGFudCk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvbkNvbnN0YW50
VmFsdWVzKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEZ1bmN0aW9uRGVzY3JpcHRvcik7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lu
bGluZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9u
Tm9kZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0dyYXBoKTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTEhlYXBEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcik7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExMaW5rZWRGdW5jdGlvbnMpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMTW90aW9uS2V5ZnJhbWVEYXRhKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1U
TFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQb2lu
dGVyVHlwZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQcmltaXRpdmVBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSYXN0ZXJpemF0aW9u
UmF0ZUxheWVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSYXN0ZXJpemF0
aW9uUmF0ZU1hcERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmFzdGVyaXph
dGlvblJhdGVTYW1wbGVBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZB
VEVfREVGX0NMUyhNVExSZW5kZXJQYXNzRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NM
UyhNVExSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc1N0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVf
REVGX0NMUyhNVExSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24pOworX01UTF9QUklWQVRFX0RFRl9D
TFMoTVRMUmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpOwor
X01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNhbXBsZXJE
ZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNoYXJlZEV2ZW50SGFuZGxlKTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNoYXJlZEV2ZW50TGlzdGVuZXIpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMU2hhcmVkVGV4dHVyZUhhbmRsZSk7CitfTVRMX1BSSVZBVEVfREVGX0NM
UyhNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhN
VExTdGVuY2lsRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExTdGl0Y2hlZExp
YnJhcnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFN0cnVjdE1lbWJlcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExTdHJ1Y3RUeXBlKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTFRleHR1cmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFRleHR1
cmVSZWZlcmVuY2VUeXBlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFRpbGVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMVHlwZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWZXJ0ZXhB
dHRyaWJ1dGUpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
QXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4QnVmZmVyTGF5b3V0RGVzY3Jp
cHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4RGVzY3JpcHRvcik7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpOwor
Cit9CisKK25hbWVzcGFjZSBNVEw6OlByaXZhdGU6OlByb3RvY29sCit7CisKK19NVExfUFJJVkFU
RV9ERUZfUFJPKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZSk7CitfTVRMX1BSSVZBVEVfREVGX1BS
TyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcik7CitfTVRMX1BSSVZBVEVf
REVGX1BSTyhNVExBcmd1bWVudEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQmlu
YXJ5QXJjaGl2ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExCbGl0Q29tbWFuZEVuY29kZXIp
OworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQnVmZmVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJP
KE1UTENvbW1hbmRCdWZmZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ29tbWFuZEJ1ZmZl
ckVuY29kZXJJbmZvKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvbW1hbmRFbmNvZGVyKTsK
K19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvbW1hbmRRdWV1ZSk7CitfTVRMX1BSSVZBVEVfREVG
X1BSTyhNVExDb21wdXRlQ29tbWFuZEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRM
Q29tcHV0ZVBpcGVsaW5lU3RhdGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ291bnRlcik7
CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExDb3VudGVyU2FtcGxlQnVmZmVyKTsKK19NVExfUFJJ
VkFURV9ERUZfUFJPKE1UTENvdW50ZXJTZXQpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRGVw
dGhTdGVuY2lsU3RhdGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRGV2aWNlKTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTERyYXdhYmxlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTER5
bmFtaWNMaWJyYXJ5KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEV2ZW50KTsKK19NVExfUFJJ
VkFURV9ERUZfUFJPKE1UTEZlbmNlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0aW9u
KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0aW9uSGFuZGxlKTsKK19NVExfUFJJVkFU
RV9ERUZfUFJPKE1UTEZ1bmN0aW9uTG9nKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0
aW9uTG9nRGVidWdMb2NhdGlvbik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvblN0
aXRjaGluZ0F0dHJpYnV0ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvblN0aXRj
aGluZ05vZGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMSGVhcCk7CitfTVRMX1BSSVZBVEVf
REVGX1BSTyhNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8o
TVRMSW5kaXJlY3RDb21wdXRlQ29tbWFuZCk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExJbmRp
cmVjdFJlbmRlckNvbW1hbmQpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMSW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExMaWJyYXJ5KTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTExvZ0NvbnRhaW5lcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhN
VExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1U
TFJhc3Rlcml6YXRpb25SYXRlTWFwKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTFJlbmRlckNv
bW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTFJlbmRlclBpcGVsaW5lU3Rh
dGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMUmVzb3VyY2UpOworX01UTF9QUklWQVRFX0RF
Rl9QUk8oTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZf
UFJPKE1UTFNhbXBsZXJTdGF0ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExTaGFyZWRFdmVu
dCk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExUZXh0dXJlKTsKK19NVExfUFJJVkFURV9ERUZf
UFJPKE1UTFZpc2libGVGdW5jdGlvblRhYmxlKTsKKworfQorCituYW1lc3BhY2UgTVRMOjpQcml2
YXRlOjpTZWxlY3RvcgoreworCitfTVRMX1BSSVZBVEVfREVGX1NFTChHUFVFbmRUaW1lLAorICAg
ICJHUFVFbmRUaW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChHUFVTdGFydFRpbWUsCisgICAg
IkdQVVN0YXJ0VGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoVVJMLAorICAgICJVUkwiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVy
LAorICAgICJhY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXNXaXRoRGVzY3JpcHRvcl8sCisg
ICAgImFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemVzV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChhY2Nlc3MsCisgICAgImFjY2VzcyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoYWRkQ29tcGxldGVkSGFuZGxlcl8sCisgICAgImFkZENvbXBsZXRlZEhhbmRsZXI6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChhZGRDb21wdXRlUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3Jp
cHRvcl9lcnJvcl8sCisgICAgImFkZENvbXB1dGVQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlw
dG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWRkRGVidWdNYXJrZXJfcmFuZ2Vf
LAorICAgICJhZGREZWJ1Z01hcmtlcjpyYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFk
ZEZ1bmN0aW9uV2l0aERlc2NyaXB0b3JfbGlicmFyeV9lcnJvcl8sCisgICAgImFkZEZ1bmN0aW9u
V2l0aERlc2NyaXB0b3I6bGlicmFyeTplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFk
ZFByZXNlbnRlZEhhbmRsZXJfLAorICAgICJhZGRQcmVzZW50ZWRIYW5kbGVyOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoYWRkUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcl9l
cnJvcl8sCisgICAgImFkZFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6ZXJy
b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRTY2hlZHVsZWRIYW5kbGVyXywKKyAgICAi
YWRkU2NoZWR1bGVkSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFkZFRpbGVSZW5k
ZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAiYWRkVGlsZVJl
bmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChhbGlnbm1lbnQsCisgICAgImFsaWdubWVudCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoYWxsb2NhdGVkU2l6ZSwKKyAgICAiYWxsb2NhdGVkU2l6ZSIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24sCisg
ICAgImFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChhbGxvd0dQVU9wdGltaXplZENvbnRlbnRzLAorICAgICJhbGxvd0dQ
VU9wdGltaXplZENvbnRlbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhbHBoYUJsZW5kT3Bl
cmF0aW9uLAorICAgICJhbHBoYUJsZW5kT3BlcmF0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChhcmVCYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBvcnRlZCwKKyAgICAiYXJlQmFyeWNlbnRyaWNDb29y
ZHNTdXBwb3J0ZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFyZVByb2dyYW1tYWJsZVNhbXBs
ZVBvc2l0aW9uc1N1cHBvcnRlZCwKKyAgICAiYXJlUHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRpb25z
U3VwcG9ydGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmVSYXN0ZXJPcmRlckdyb3Vwc1N1
cHBvcnRlZCwKKyAgICAiYXJlUmFzdGVyT3JkZXJHcm91cHNTdXBwb3J0ZWQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQsCisgICAgImFyZ3VtZW50QnVmZmVy
c1N1cHBvcnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFyZ3VtZW50RGVzY3JpcHRvciwKKyAg
ICAiYXJndW1lbnREZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmd1bWVudElu
ZGV4LAorICAgICJhcmd1bWVudEluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmd1bWVu
dEluZGV4U3RyaWRlLAorICAgICJhcmd1bWVudEluZGV4U3RyaWRlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChhcmd1bWVudHMsCisgICAgImFyZ3VtZW50cyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoYXJyYXlMZW5ndGgsCisgICAgImFycmF5TGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChhcnJheVR5cGUsCisgICAgImFycmF5VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXR0
cmlidXRlSW5kZXgsCisgICAgImF0dHJpYnV0ZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChhdHRyaWJ1dGVUeXBlLAorICAgICJhdHRyaWJ1dGVUeXBlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChhdHRyaWJ1dGVzLAorICAgICJhdHRyaWJ1dGVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChiYWNrRmFjZVN0ZW5jaWwsCisgICAgImJhY2tGYWNlU3RlbmNpbCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYmluYXJ5QXJjaGl2ZXMsCisgICAgImJpbmFyeUFyY2hpdmVzIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChiaW5hcnlGdW5jdGlvbnMsCisgICAgImJpbmFyeUZ1bmN0aW9ucyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoYmxpdENvbW1hbmRFbmNvZGVyLAorICAgICJibGl0Q29tbWFu
ZEVuY29kZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJsaXRDb21tYW5kRW5jb2RlcldpdGhE
ZXNjcmlwdG9yXywKKyAgICAiYmxpdENvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChibGl0UGFzc0Rlc2NyaXB0b3IsCisgICAgImJsaXRQYXNzRGVz
Y3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYm9yZGVyQ29sb3IsCisgICAgImJvcmRl
ckNvbG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChib3VuZGluZ0JveEJ1ZmZlciwKKyAgICAi
Ym91bmRpbmdCb3hCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94QnVm
ZmVyT2Zmc2V0LAorICAgICJib3VuZGluZ0JveEJ1ZmZlck9mZnNldCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYm91bmRpbmdCb3hCdWZmZXJzLAorICAgICJib3VuZGluZ0JveEJ1ZmZlcnMiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94Q291bnQsCisgICAgImJvdW5kaW5nQm94
Q291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94U3RyaWRlLAorICAgICJi
b3VuZGluZ0JveFN0cmlkZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVyLAorICAgICJi
dWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlckFsaWdubWVudCwKKyAgICAiYnVm
ZmVyQWxpZ25tZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZmZXJCeXRlc1BlclJvdywK
KyAgICAiYnVmZmVyQnl0ZXNQZXJSb3ciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlckRh
dGFTaXplLAorICAgICJidWZmZXJEYXRhU2l6ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVm
ZmVyRGF0YVR5cGUsCisgICAgImJ1ZmZlckRhdGFUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChidWZmZXJJbmRleCwKKyAgICAiYnVmZmVySW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGJ1ZmZlck9mZnNldCwKKyAgICAiYnVmZmVyT2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChidWZmZXJQb2ludGVyVHlwZSwKKyAgICAiYnVmZmVyUG9pbnRlclR5cGUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGJ1ZmZlclN0cnVjdFR5cGUsCisgICAgImJ1ZmZlclN0cnVjdFR5cGUiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlcnMsCisgICAgImJ1ZmZlcnMiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlX2Rlc2NyaXB0b3Jfc2NyYXRj
aEJ1ZmZlcl9zY3JhdGNoQnVmZmVyT2Zmc2V0XywKKyAgICAiYnVpbGRBY2NlbGVyYXRpb25TdHJ1
Y3R1cmU6ZGVzY3JpcHRvcjpzY3JhdGNoQnVmZmVyOnNjcmF0Y2hCdWZmZXJPZmZzZXQ6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChjYXB0dXJlT2JqZWN0LAorICAgICJjYXB0dXJlT2JqZWN0Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChjbGVhckJhcnJpZXIsCisgICAgImNsZWFyQmFycmllciIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoY2xlYXJDb2xvciwKKyAgICAiY2xlYXJDb2xvciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY2xlYXJEZXB0aCwKKyAgICAiY2xlYXJEZXB0aCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoY2xlYXJTdGVuY2lsLAorICAgICJjbGVhclN0ZW5jaWwiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNvbG9yQXR0YWNobWVudHMsCisgICAgImNvbG9yQXR0YWNobWVu
dHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbHVtbiwKKyAgICAiY29sdW1uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChjb21tYW5kQnVmZmVyLAorICAgICJjb21tYW5kQnVmZmVyIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChjb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3JfLAorICAgICJj
b21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21t
YW5kQnVmZmVyV2l0aFVucmV0YWluZWRSZWZlcmVuY2VzLAorICAgICJjb21tYW5kQnVmZmVyV2l0
aFVucmV0YWluZWRSZWZlcmVuY2VzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21tYW5kUXVl
dWUsCisgICAgImNvbW1hbmRRdWV1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWFuZFR5
cGVzLAorICAgICJjb21tYW5kVHlwZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbW1pdCwK
KyAgICAiY29tbWl0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21wYXJlRnVuY3Rpb24sCisg
ICAgImNvbXBhcmVGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tcHV0ZUNvbW1h
bmRFbmNvZGVyLAorICAgICJjb21wdXRlQ29tbWFuZEVuY29kZXIiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXywKKyAgICAiY29tcHV0
ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChj
b21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGlzcGF0Y2hUeXBlXywKKyAgICAiY29tcHV0ZUNvbW1h
bmRFbmNvZGVyV2l0aERpc3BhdGNoVHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbXB1
dGVGdW5jdGlvbiwKKyAgICAiY29tcHV0ZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChjb21wdXRlUGFzc0Rlc2NyaXB0b3IsCisgICAgImNvbXB1dGVQYXNzRGVzY3JpcHRvciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY29uY3VycmVudERpc3BhdGNoVGhyZWFkZ3JvdXBzX3RocmVh
ZHNQZXJUaHJlYWRncm91cF8sCisgICAgImNvbmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3Vwczp0
aHJlYWRzUGVyVGhyZWFkZ3JvdXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb25jdXJyZW50
RGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJlYWRncm91cF8sCisgICAgImNvbmN1cnJlbnRE
aXNwYXRjaFRocmVhZHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoY29uc3RhbnRCbG9ja0FsaWdubWVudCwKKyAgICAiY29uc3RhbnRCbG9ja0FsaWdubWVu
dCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29uc3RhbnREYXRhQXRJbmRleF8sCisgICAgImNv
bnN0YW50RGF0YUF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb25zdGFudFZhbHVl
cywKKyAgICAiY29uc3RhbnRWYWx1ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbnRlbnRz
LAorICAgICJjb250ZW50cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29udHJvbERlcGVuZGVu
Y2llcywKKyAgICAiY29udHJvbERlcGVuZGVuY2llcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
Y29udmVydFNwYXJzZVBpeGVsUmVnaW9uc190b1RpbGVSZWdpb25zX3dpdGhUaWxlU2l6ZV9hbGln
bm1lbnRNb2RlX251bVJlZ2lvbnNfLAorICAgICJjb252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zOnRv
VGlsZVJlZ2lvbnM6d2l0aFRpbGVTaXplOmFsaWdubWVudE1vZGU6bnVtUmVnaW9uczoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNvbnZlcnRTcGFyc2VUaWxlUmVnaW9uc190b1BpeGVsUmVnaW9u
c193aXRoVGlsZVNpemVfbnVtUmVnaW9uc18sCisgICAgImNvbnZlcnRTcGFyc2VUaWxlUmVnaW9u
czp0b1BpeGVsUmVnaW9uczp3aXRoVGlsZVNpemU6bnVtUmVnaW9uczoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGNvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfdG9BY2NlbGVyYXRpb25TdHJ1Y3R1
cmVfLAorICAgICJjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlOnRvQWNjZWxlcmF0aW9uU3RydWN0
dXJlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVfdG9BY2NlbGVyYXRpb25TdHJ1Y3R1cmVfLAorICAgICJjb3B5QW5kQ29tcGFjdEFj
Y2VsZXJhdGlvblN0cnVjdHVyZTp0b0FjY2VsZXJhdGlvblN0cnVjdHVyZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGNvcHlGcm9tQnVmZmVyX3NvdXJjZU9mZnNldF9zb3VyY2VCeXRlc1BlclJv
d19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJjZVNpemVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xp
Y2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5hdGlvbk9yaWdpbl8sCisgICAgImNvcHlGcm9tQnVm
ZmVyOnNvdXJjZU9mZnNldDpzb3VyY2VCeXRlc1BlclJvdzpzb3VyY2VCeXRlc1BlckltYWdlOnNv
dXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0
aW5hdGlvbk9yaWdpbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvcHlGcm9tQnVmZmVyX3Nv
dXJjZU9mZnNldF9zb3VyY2VCeXRlc1BlclJvd19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJjZVNp
emVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5hdGlv
bk9yaWdpbl9vcHRpb25zXywKKyAgICAiY29weUZyb21CdWZmZXI6c291cmNlT2Zmc2V0OnNvdXJj
ZUJ5dGVzUGVyUm93OnNvdXJjZUJ5dGVzUGVySW1hZ2U6c291cmNlU2l6ZTp0b1RleHR1cmU6ZGVz
dGluYXRpb25TbGljZTpkZXN0aW5hdGlvbkxldmVsOmRlc3RpbmF0aW9uT3JpZ2luOm9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbUJ1ZmZlcl9zb3VyY2VPZmZzZXRfdG9C
dWZmZXJfZGVzdGluYXRpb25PZmZzZXRfc2l6ZV8sCisgICAgImNvcHlGcm9tQnVmZmVyOnNvdXJj
ZU9mZnNldDp0b0J1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDpzaXplOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJjZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJjZU9y
aWdpbl9zb3VyY2VTaXplX3RvQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0X2Rlc3RpbmF0aW9uQnl0
ZXNQZXJSb3dfZGVzdGluYXRpb25CeXRlc1BlckltYWdlXywKKyAgICAiY29weUZyb21UZXh0dXJl
OnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNvdXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvQnVmZmVy
OmRlc3RpbmF0aW9uT2Zmc2V0OmRlc3RpbmF0aW9uQnl0ZXNQZXJSb3c6ZGVzdGluYXRpb25CeXRl
c1BlckltYWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJj
ZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJjZU9yaWdpbl9zb3VyY2VTaXplX3RvQnVmZmVyX2Rlc3Rp
bmF0aW9uT2Zmc2V0X2Rlc3RpbmF0aW9uQnl0ZXNQZXJSb3dfZGVzdGluYXRpb25CeXRlc1Blcklt
YWdlX29wdGlvbnNfLAorICAgICJjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2
ZWw6c291cmNlT3JpZ2luOnNvdXJjZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVz
dGluYXRpb25CeXRlc1BlclJvdzpkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6b3B0aW9uczoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VM
ZXZlbF9zb3VyY2VPcmlnaW5fc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGljZV9k
ZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luXywKKyAgICAiY29weUZyb21UZXh0dXJl
OnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNvdXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvVGV4dHVy
ZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNl
TGV2ZWxfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9zbGljZUNv
dW50X2xldmVsQ291bnRfLAorICAgICJjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNl
TGV2ZWw6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpzbGljZUNv
dW50OmxldmVsQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbVRleHR1cmVf
dG9UZXh0dXJlXywKKyAgICAiY29weUZyb21UZXh0dXJlOnRvVGV4dHVyZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGNvcHlJbmRpcmVjdENvbW1hbmRCdWZmZXJfc291cmNlUmFuZ2VfZGVzdGlu
YXRpb25fZGVzdGluYXRpb25JbmRleF8sCisgICAgImNvcHlJbmRpcmVjdENvbW1hbmRCdWZmZXI6
c291cmNlUmFuZ2U6ZGVzdGluYXRpb246ZGVzdGluYXRpb25JbmRleDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXJfb2Zmc2V0XywKKyAgICAiY29weVBh
cmFtZXRlckRhdGFUb0J1ZmZlcjpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3Vu
dGVyU2V0LAorICAgICJjb3VudGVyU2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3VudGVy
U2V0cywKKyAgICAiY291bnRlclNldHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvdW50ZXJz
LAorICAgICJjb3VudGVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY3B1Q2FjaGVNb2RlLAor
ICAgICJjcHVDYWNoZU1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGN1cnJlbnRBbGxvY2F0
ZWRTaXplLAorICAgICJjdXJyZW50QWxsb2NhdGVkU2l6ZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZGF0YSwKKyAgICAiZGF0YSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGF0YVNpemUsCisg
ICAgImRhdGFTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkYXRhVHlwZSwKKyAgICAiZGF0
YVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlYWxsb2MsCisgICAgImRlYWxsb2MiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRlYnVnTG9jYXRpb24sCisgICAgImRlYnVnTG9jYXRpb24i
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlYnVnU2lnbnBvc3RzLAorICAgICJkZWJ1Z1NpZ25w
b3N0cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVmYXVsdENhcHR1cmVTY29wZSwKKyAgICAi
ZGVmYXVsdENhcHR1cmVTY29wZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVmYXVsdFJhc3Rl
clNhbXBsZUNvdW50LAorICAgICJkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGRlcHRoLAorICAgICJkZXB0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
ZGVwdGhBdHRhY2htZW50LAorICAgICJkZXB0aEF0dGFjaG1lbnQiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0LAorICAgICJkZXB0aEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVwdGhDb21wYXJlRnVuY3Rpb24s
CisgICAgImRlcHRoQ29tcGFyZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0
aEZhaWx1cmVPcGVyYXRpb24sCisgICAgImRlcHRoRmFpbHVyZU9wZXJhdGlvbiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZGVwdGhQbGFuZSwKKyAgICAiZGVwdGhQbGFuZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZGVwdGhSZXNvbHZlRmlsdGVyLAorICAgICJkZXB0aFJlc29sdmVGaWx0ZXIi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24sCisgICAg
ImRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlc2Ny
aXB0b3IsCisgICAgImRlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlc3RpbmF0
aW9uLAorICAgICJkZXN0aW5hdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVzdGluYXRp
b25BbHBoYUJsZW5kRmFjdG9yLAorICAgICJkZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IsCisgICAgImRl
c3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRldmljZSwK
KyAgICAiZGV2aWNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkaWRNb2RpZnlSYW5nZV8sCisg
ICAgImRpZE1vZGlmeVJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hRdWV1
ZSwKKyAgICAiZGlzcGF0Y2hRdWV1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hU
aHJlYWRncm91cHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAiZGlzcGF0Y2hUaHJlYWRn
cm91cHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlz
cGF0Y2hUaHJlYWRncm91cHNXaXRoSW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRf
dGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAiZGlzcGF0Y2hUaHJlYWRncm91cHNXaXRoSW5k
aXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJlYWRn
cm91cF8sCisgICAgImRpc3BhdGNoVGhyZWFkczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChkaXNwYXRjaFRocmVhZHNQZXJUaWxlXywKKyAgICAiZGlzcGF0
Y2hUaHJlYWRzUGVyVGlsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRpc3BhdGNoVHlwZSwK
KyAgICAiZGlzcGF0Y2hUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3SW5kZXhlZFBh
dGNoZXNfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQb2lu
dEluZGV4QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVy
X2luZGlyZWN0QnVmZmVyT2Zmc2V0XywKKyAgICAiZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNoSW5k
ZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1ZmZlcjpj
b250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZl
ck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRj
aFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0
X2NvbnRyb2xQb2ludEluZGV4QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2lu
c3RhbmNlQ291bnRfYmFzZUluc3RhbmNlXywKKyAgICAiZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNo
U3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6
Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQ6aW5z
dGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3SW5k
ZXhlZFBhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJ
bmRleEJ1ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9jb250cm9sUG9pbnRJbmRl
eEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV90ZXNzZWxsYXRpb25GYWN0
b3JCdWZmZXJfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0X3Rlc3NlbGxhdGlvbkZhY3Rv
ckJ1ZmZlckluc3RhbmNlU3RyaWRlXywKKyAgICAiZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNoU3Rh
cnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6Y29u
dHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFu
Y2VDb3VudDpiYXNlSW5zdGFuY2U6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOnRlc3NlbGxhdGlv
bkZhY3RvckJ1ZmZlck9mZnNldDp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlk
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRleENv
dW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF8sCisgICAgImRyYXdJ
bmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1
ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZl
c19pbmRleENvdW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbnN0
YW5jZUNvdW50XywKKyAgICAiZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4Q291bnQ6aW5kZXhU
eXBlOmluZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5
cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlVmVydGV4
X2Jhc2VJbnN0YW5jZV8sCisgICAgImRyYXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50Omlu
ZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VW
ZXJ0ZXg6YmFzZUluc3RhbmNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd0luZGV4ZWRQ
cmltaXRpdmVzX2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbmRpcmVj
dEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8sCisgICAgImRyYXdJbmRleGVkUHJpbWl0aXZl
czppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6
aW5kaXJlY3RCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UGF0Y2hl
c19wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5kaXJlY3RCdWZmZXJf
aW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJkcmF3UGF0Y2hlczpwYXRjaEluZGV4QnVmZmVy
OnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZz
ZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNo
Q291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291
bnRfYmFzZUluc3RhbmNlXywKKyAgICAiZHJhd1BhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENvdW50
OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJh
c2VJbnN0YW5jZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdQYXRjaGVzX3BhdGNoU3Rh
cnRfcGF0Y2hDb3VudF9wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5z
dGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyX3Rlc3NlbGxh
dGlvbkZhY3RvckJ1ZmZlck9mZnNldF90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0
cmlkZV8sCisgICAgImRyYXdQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4
QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6
dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlck9mZnNldDp0
ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlkZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGRyYXdQcmltaXRpdmVzX2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0
XywKKyAgICAiZHJhd1ByaW1pdGl2ZXM6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZz
ZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92
ZXJ0ZXhDb3VudF8sCisgICAgImRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0OnZlcnRleENvdW50
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVy
dGV4Q291bnRfaW5zdGFuY2VDb3VudF8sCisgICAgImRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0
OnZlcnRleENvdW50Omluc3RhbmNlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3
UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0ZXhDb3VudF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0
YW5jZV8sCisgICAgImRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0OnZlcnRleENvdW50Omluc3Rh
bmNlQ291bnQ6YmFzZUluc3RhbmNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd2FibGVJ
RCwKKyAgICAiZHJhd2FibGVJRCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudEFycmF5
VHlwZSwKKyAgICAiZWxlbWVudEFycmF5VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxl
bWVudElzQXJndW1lbnRCdWZmZXIsCisgICAgImVsZW1lbnRJc0FyZ3VtZW50QnVmZmVyIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChlbGVtZW50UG9pbnRlclR5cGUsCisgICAgImVsZW1lbnRQb2lu
dGVyVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudFN0cnVjdFR5cGUsCisgICAg
ImVsZW1lbnRTdHJ1Y3RUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbGVtZW50VGV4dHVy
ZVJlZmVyZW5jZVR5cGUsCisgICAgImVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlwZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudFR5cGUsCisgICAgImVsZW1lbnRUeXBlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChlbmNvZGVTaWduYWxFdmVudF92YWx1ZV8sCisgICAgImVuY29kZVNp
Z25hbEV2ZW50OnZhbHVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZW5jb2RlV2FpdEZvckV2
ZW50X3ZhbHVlXywKKyAgICAiZW5jb2RlV2FpdEZvckV2ZW50OnZhbHVlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZW5jb2RlZExlbmd0aCwKKyAgICAiZW5jb2RlZExlbmd0aCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZW5jb2RlckxhYmVsLAorICAgICJlbmNvZGVyTGFiZWwiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGVuZEVuY29kaW5nLAorICAgICJlbmRFbmNvZGluZyIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgsCisgICAgImVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmRPZkZyYWdtZW50U2FtcGxl
SW5kZXgsCisgICAgImVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleCwKKyAgICAiZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRl
eCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZW5xdWV1ZSwKKyAgICAiZW5xdWV1ZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoZXJyb3IsCisgICAgImVycm9yIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChlcnJvck9wdGlvbnMsCisgICAgImVycm9yT3B0aW9ucyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoZXJyb3JTdGF0ZSwKKyAgICAiZXJyb3JTdGF0ZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXJfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJP
ZmZzZXRfLAorICAgICJleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjppbmRpcmVjdEJ1ZmZlcjppbmRp
cmVjdEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGV4ZWN1dGVDb21tYW5k
c0luQnVmZmVyX3dpdGhSYW5nZV8sCisgICAgImV4ZWN1dGVDb21tYW5kc0luQnVmZmVyOndpdGhS
YW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZhc3RNYXRoRW5hYmxlZCwKKyAgICAiZmFz
dE1hdGhFbmFibGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmaWxsQnVmZmVyX3JhbmdlX3Zh
bHVlXywKKyAgICAiZmlsbEJ1ZmZlcjpyYW5nZTp2YWx1ZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGZpcnN0TWlwbWFwSW5UYWlsLAorICAgICJmaXJzdE1pcG1hcEluVGFpbCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZm9ybWF0LAorICAgICJmb3JtYXQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywKKyAgICAiZnJhZ21lbnRBZGRp
dGlvbmFsQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmcmFnbWVudEFy
Z3VtZW50cywKKyAgICAiZnJhZ21lbnRBcmd1bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGZyYWdtZW50QnVmZmVycywKKyAgICAiZnJhZ21lbnRCdWZmZXJzIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChmcmFnbWVudEZ1bmN0aW9uLAorICAgICJmcmFnbWVudEZ1bmN0aW9uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChmcmFnbWVudExpbmtlZEZ1bmN0aW9ucywKKyAgICAiZnJhZ21lbnRM
aW5rZWRGdW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZyYWdtZW50UHJlbG9hZGVk
TGlicmFyaWVzLAorICAgICJmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZnJvbnRGYWNlU3RlbmNpbCwKKyAgICAiZnJvbnRGYWNlU3RlbmNpbCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb24sCisgICAgImZ1bmN0aW9uIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChmdW5jdGlvbkNvbnN0YW50c0RpY3Rpb25hcnksCisgICAgImZ1bmN0aW9u
Q29uc3RhbnRzRGljdGlvbmFyeSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25Db3Vu
dCwKKyAgICAiZnVuY3Rpb25Db3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25E
ZXNjcmlwdG9yLAorICAgICJmdW5jdGlvbkRlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGZ1bmN0aW9uR3JhcGhzLAorICAgICJmdW5jdGlvbkdyYXBocyIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb25fLAorICAgICJmdW5jdGlvbkhhbmRs
ZVdpdGhGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9uSGFuZGxlV2l0
aEZ1bmN0aW9uX3N0YWdlXywKKyAgICAiZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb246c3RhZ2U6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbk5hbWUsCisgICAgImZ1bmN0aW9uTmFt
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25OYW1lcywKKyAgICAiZnVuY3Rpb25O
YW1lcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25UeXBlLAorICAgICJmdW5jdGlv
blR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9ucywKKyAgICAiZnVuY3Rpb25z
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZW5lcmF0ZU1pcG1hcHNGb3JUZXh0dXJlXywKKyAg
ICAiZ2VuZXJhdGVNaXBtYXBzRm9yVGV4dHVyZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdl
b21ldHJ5RGVzY3JpcHRvcnMsCisgICAgImdlb21ldHJ5RGVzY3JpcHRvcnMiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGdldEJ5dGVzX2J5dGVzUGVyUm93X2J5dGVzUGVySW1hZ2VfZnJvbVJlZ2lv
bl9taXBtYXBMZXZlbF9zbGljZV8sCisgICAgImdldEJ5dGVzOmJ5dGVzUGVyUm93OmJ5dGVzUGVy
SW1hZ2U6ZnJvbVJlZ2lvbjptaXBtYXBMZXZlbDpzbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGdldEJ5dGVzX2J5dGVzUGVyUm93X2Zyb21SZWdpb25fbWlwbWFwTGV2ZWxfLAorICAgICJn
ZXRCeXRlczpieXRlc1BlclJvdzpmcm9tUmVnaW9uOm1pcG1hcExldmVsOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9uc19jb3VudF8sCisgICAgImdldERl
ZmF1bHRTYW1wbGVQb3NpdGlvbnM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXRT
YW1wbGVQb3NpdGlvbnNfY291bnRfLAorICAgICJnZXRTYW1wbGVQb3NpdGlvbnM6Y291bnQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnNfcmVnaW9uX21p
cExldmVsX3NsaWNlX3Jlc2V0Q291bnRlcnNfY291bnRlcnNCdWZmZXJfY291bnRlcnNCdWZmZXJP
ZmZzZXRfLAorICAgICJnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExldmVsOnNs
aWNlOnJlc2V0Q291bnRlcnM6Y291bnRlcnNCdWZmZXI6Y291bnRlcnNCdWZmZXJPZmZzZXQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChncm91cHMsCisgICAgImdyb3VwcyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoaGFzVW5pZmllZE1lbW9yeSwKKyAgICAiaGFzVW5pZmllZE1lbW9yeSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaGF6YXJkVHJhY2tpbmdNb2RlLAorICAgICJoYXphcmRUcmFj
a2luZ01vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhlYXAsCisgICAgImhlYXAiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGhlYXBCdWZmZXJTaXplQW5kQWxpZ25XaXRoTGVuZ3RoX29wdGlv
bnNfLAorICAgICJoZWFwQnVmZmVyU2l6ZUFuZEFsaWduV2l0aExlbmd0aDpvcHRpb25zOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaGVhcE9mZnNldCwKKyAgICAiaGVhcE9mZnNldCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoaGVhcFRleHR1cmVTaXplQW5kQWxpZ25XaXRoRGVzY3JpcHRvcl8s
CisgICAgImhlYXBUZXh0dXJlU2l6ZUFuZEFsaWduV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChoZWlnaHQsCisgICAgImhlaWdodCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoaG9yaXpvbnRhbCwKKyAgICAiaG9yaXpvbnRhbCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aG9yaXpvbnRhbFNhbXBsZVN0b3JhZ2UsCisgICAgImhvcml6b250YWxTYW1wbGVTdG9yYWdlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbWFnZWJsb2NrTWVtb3J5TGVuZ3RoRm9yRGltZW5zaW9u
c18sCisgICAgImltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCwKKyAgICAiaW1hZ2VibG9ja1Nh
bXBsZUxlbmd0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5kZXgsCisgICAgImluZGV4Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbmRleEJ1ZmZlciwKKyAgICAiaW5kZXhCdWZmZXIiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGluZGV4QnVmZmVySW5kZXgsCisgICAgImluZGV4QnVmZmVy
SW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGV4QnVmZmVyT2Zmc2V0LAorICAgICJp
bmRleEJ1ZmZlck9mZnNldCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5kZXhUeXBlLAorICAg
ICJpbmRleFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGlyZWN0Q29tcHV0ZUNvbW1h
bmRBdEluZGV4XywKKyAgICAiaW5kaXJlY3RDb21wdXRlQ29tbWFuZEF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChpbmRpcmVjdFJlbmRlckNvbW1hbmRBdEluZGV4XywKKyAgICAiaW5k
aXJlY3RSZW5kZXJDb21tYW5kQXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaGVy
aXRCdWZmZXJzLAorICAgICJpbmhlcml0QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aW5oZXJpdFBpcGVsaW5lU3RhdGUsCisgICAgImluaGVyaXRQaXBlbGluZVN0YXRlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChpbml0LAorICAgICJpbml0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChpbml0V2l0aEFyZ3VtZW50SW5kZXhfLAorICAgICJpbml0V2l0aEFyZ3VtZW50SW5kZXg6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aERpc3BhdGNoUXVldWVfLAorICAgICJpbml0
V2l0aERpc3BhdGNoUXVldWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEZ1bmN0
aW9uTmFtZV9ub2Rlc19vdXRwdXROb2RlX2F0dHJpYnV0ZXNfLAorICAgICJpbml0V2l0aEZ1bmN0
aW9uTmFtZTpub2RlczpvdXRwdXROb2RlOmF0dHJpYnV0ZXM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpbml0V2l0aE5hbWVfYXJndW1lbnRzX2NvbnRyb2xEZXBlbmRlbmNpZXNfLAorICAgICJp
bml0V2l0aE5hbWU6YXJndW1lbnRzOmNvbnRyb2xEZXBlbmRlbmNpZXM6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChpbml0V2l0aFNhbXBsZUNvdW50XywKKyAgICAiaW5pdFdpdGhTYW1wbGVDb3Vu
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoU2FtcGxlQ291bnRfaG9yaXpvbnRh
bF92ZXJ0aWNhbF8sCisgICAgImluaXRXaXRoU2FtcGxlQ291bnQ6aG9yaXpvbnRhbDp2ZXJ0aWNh
bDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlucHV0UHJpbWl0aXZlVG9wb2xvZ3ksCisgICAg
ImlucHV0UHJpbWl0aXZlVG9wb2xvZ3kiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluc2VydERl
YnVnQ2FwdHVyZUJvdW5kYXJ5LAorICAgICJpbnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFyeSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaW5zZXJ0RGVidWdTaWducG9zdF8sCisgICAgImluc2VydERl
YnVnU2lnbnBvc3Q6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnNlcnRMaWJyYXJpZXMsCisg
ICAgImluc2VydExpYnJhcmllcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5zdGFsbE5hbWUs
CisgICAgImluc3RhbGxOYW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZUNvdW50
LAorICAgICJpbnN0YW5jZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZURl
c2NyaXB0b3JCdWZmZXIsCisgICAgImluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlciIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0LAorICAgICJpbnN0
YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluc3Rh
bmNlRGVzY3JpcHRvclN0cmlkZSwKKyAgICAiaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZURlc2NyaXB0b3JUeXBlLAorICAgICJpbnN0YW5j
ZURlc2NyaXB0b3JUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZWRBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVzLAorICAgICJpbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRv
ciwKKyAgICAiaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQsCisgICAgImludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlvc3Vy
ZmFjZSwKKyAgICAiaW9zdXJmYWNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpb3N1cmZhY2VQ
bGFuZSwKKyAgICAiaW9zdXJmYWNlUGxhbmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzQWN0
aXZlLAorICAgICJpc0FjdGl2ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNBbGlhc2FibGUs
CisgICAgImlzQWxpYXNhYmxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0FscGhhVG9Db3Zl
cmFnZUVuYWJsZWQsCisgICAgImlzQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoaXNBbHBoYVRvT25lRW5hYmxlZCwKKyAgICAiaXNBbHBoYVRvT25lRW5hYmxl
ZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNCbGVuZGluZ0VuYWJsZWQsCisgICAgImlzQmxl
bmRpbmdFbmFibGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0NhcHR1cmluZywKKyAgICAi
aXNDYXB0dXJpbmciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzRGVwdGgyNFN0ZW5jaWw4UGl4
ZWxGb3JtYXRTdXBwb3J0ZWQsCisgICAgImlzRGVwdGgyNFN0ZW5jaWw4UGl4ZWxGb3JtYXRTdXBw
b3J0ZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzRGVwdGhUZXh0dXJlLAorICAgICJpc0Rl
cHRoVGV4dHVyZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNEZXB0aFdyaXRlRW5hYmxlZCwK
KyAgICAiaXNEZXB0aFdyaXRlRW5hYmxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNGcmFt
ZWJ1ZmZlck9ubHksCisgICAgImlzRnJhbWVidWZmZXJPbmx5Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpc0hlYWRsZXNzLAorICAgICJpc0hlYWRsZXNzIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChpc0xvd1Bvd2VyLAorICAgICJpc0xvd1Bvd2VyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChp
c1BhdGNoQ29udHJvbFBvaW50RGF0YSwKKyAgICAiaXNQYXRjaENvbnRyb2xQb2ludERhdGEiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGlzUGF0Y2hEYXRhLAorICAgICJpc1BhdGNoRGF0YSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaXNSYXN0ZXJpemF0aW9uRW5hYmxlZCwKKyAgICAiaXNSYXN0
ZXJpemF0aW9uRW5hYmxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNSZW1vdmFibGUsCisg
ICAgImlzUmVtb3ZhYmxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc1NoYXJlYWJsZSwKKyAg
ICAiaXNTaGFyZWFibGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzU3BhcnNlLAorICAgICJp
c1NwYXJzZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNUZXNzZWxsYXRpb25GYWN0b3JTY2Fs
ZUVuYWJsZWQsCisgICAgImlzVGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChrZXJuZWxFbmRUaW1lLAorICAgICJrZXJuZWxFbmRUaW1lIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChrZXJuZWxTdGFydFRpbWUsCisgICAgImtlcm5lbFN0YXJ0VGlt
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGFiZWwsCisgICAgImxhYmVsIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChsYW5ndWFnZVZlcnNpb24sCisgICAgImxhbmd1YWdlVmVyc2lvbiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobGF5ZXJBdEluZGV4XywKKyAgICAibGF5ZXJBdEluZGV4OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobGF5ZXJDb3VudCwKKyAgICAibGF5ZXJDb3VudCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobGF5ZXJzLAorICAgICJsYXllcnMiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGxheW91dHMsCisgICAgImxheW91dHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGxlbmd0aCwKKyAgICAibGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsZXZlbCwKKyAg
ICAibGV2ZWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxpYnJhcmllcywKKyAgICAibGlicmFy
aWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsaWJyYXJ5VHlwZSwKKyAgICAibGlicmFyeVR5
cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxpbmUsCisgICAgImxpbmUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGxpbmtlZEZ1bmN0aW9ucywKKyAgICAibGlua2VkRnVuY3Rpb25zIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChsb2FkQWN0aW9uLAorICAgICJsb2FkQWN0aW9uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChsb2NhdGlvbiwKKyAgICAibG9jYXRpb24iKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGxvY2F0aW9uTnVtYmVyLAorICAgICJsb2NhdGlvbk51bWJlciIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobG9kQXZlcmFnZSwKKyAgICAibG9kQXZlcmFnZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobG9kTWF4Q2xhbXAsCisgICAgImxvZE1heENsYW1wIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChsb2RNaW5DbGFtcCwKKyAgICAibG9kTWluQ2xhbXAiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGxvZ3MsCisgICAgImxvZ3MiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1hZ0Zp
bHRlciwKKyAgICAibWFnRmlsdGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYWtlQWxpYXNh
YmxlLAorICAgICJtYWtlQWxpYXNhYmxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXBQaHlz
aWNhbFRvU2NyZWVuQ29vcmRpbmF0ZXNfZm9yTGF5ZXJfLAorICAgICJtYXBQaHlzaWNhbFRvU2Ny
ZWVuQ29vcmRpbmF0ZXM6Zm9yTGF5ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXBTY3Jl
ZW5Ub1BoeXNpY2FsQ29vcmRpbmF0ZXNfZm9yTGF5ZXJfLAorICAgICJtYXBTY3JlZW5Ub1BoeXNp
Y2FsQ29vcmRpbmF0ZXM6Zm9yTGF5ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhBbmlz
b3Ryb3B5LAorICAgICJtYXhBbmlzb3Ryb3B5Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhB
cmd1bWVudEJ1ZmZlclNhbXBsZXJDb3VudCwKKyAgICAibWF4QXJndW1lbnRCdWZmZXJTYW1wbGVy
Q291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heEF2YWlsYWJsZVNpemVXaXRoQWxpZ25t
ZW50XywKKyAgICAibWF4QXZhaWxhYmxlU2l6ZVdpdGhBbGlnbm1lbnQ6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChtYXhCdWZmZXJMZW5ndGgsCisgICAgIm1heEJ1ZmZlckxlbmd0aCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobWF4Q2FsbFN0YWNrRGVwdGgsCisgICAgIm1heENhbGxTdGFja0Rl
cHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudCwK
KyAgICAibWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgsCisgICAgIm1heEZyYWdtZW50Q2FsbFN0YWNrRGVw
dGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudCwKKyAg
ICAibWF4S2VybmVsQnVmZmVyQmluZENvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhT
YW1wbGVDb3VudCwKKyAgICAibWF4U2FtcGxlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1heFRlc3NlbGxhdGlvbkZhY3RvciwKKyAgICAibWF4VGVzc2VsbGF0aW9uRmFjdG9yIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChtYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCwKKyAgICAibWF4
VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFRocmVh
ZHNQZXJUaHJlYWRncm91cCwKKyAgICAibWF4VGhyZWFkc1BlclRocmVhZGdyb3VwIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCwKKyAgICAibWF4
VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFRy
YW5zZmVyUmF0ZSwKKyAgICAibWF4VHJhbnNmZXJSYXRlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQsCisgICAgIm1heFZlcnRleEFtcGxpZmljYXRp
b25Db3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VmVydGV4QnVmZmVyQmluZENvdW50
LAorICAgICJtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1heFZlcnRleENhbGxTdGFja0RlcHRoLAorICAgICJtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobWVtYmVyQnlOYW1lXywKKyAgICAibWVtYmVyQnlOYW1l
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWVtYmVycywKKyAgICAibWVtYmVycyIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXNfY291bnRfLAorICAg
ICJtZW1vcnlCYXJyaWVyV2l0aFJlc291cmNlczpjb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzX2NvdW50X2FmdGVyU3RhZ2VzX2JlZm9yZVN0
YWdlc18sCisgICAgIm1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzOmNvdW50OmFmdGVyU3RhZ2Vz
OmJlZm9yZVN0YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1lbW9yeUJhcnJpZXJXaXRo
U2NvcGVfLAorICAgICJtZW1vcnlCYXJyaWVyV2l0aFNjb3BlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobWVtb3J5QmFycmllcldpdGhTY29wZV9hZnRlclN0YWdlc19iZWZvcmVTdGFnZXNfLAor
ICAgICJtZW1vcnlCYXJyaWVyV2l0aFNjb3BlOmFmdGVyU3RhZ2VzOmJlZm9yZVN0YWdlczoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG1pbkZpbHRlciwKKyAgICAibWluRmlsdGVyIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9y
bWF0XywKKyAgICAibWluaW11bUxpbmVhclRleHR1cmVBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1pbmltdW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9y
UGl4ZWxGb3JtYXRfLAorICAgICJtaW5pbXVtVGV4dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVs
Rm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWlwRmlsdGVyLAorICAgICJtaXBGaWx0
ZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1pcG1hcExldmVsQ291bnQsCisgICAgIm1pcG1h
cExldmVsQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1vdGlvbkVuZEJvcmRlck1vZGUs
CisgICAgIm1vdGlvbkVuZEJvcmRlck1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1vdGlv
bkVuZFRpbWUsCisgICAgIm1vdGlvbkVuZFRpbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1v
dGlvbktleWZyYW1lQ291bnQsCisgICAgIm1vdGlvbktleWZyYW1lQ291bnQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKG1vdGlvblN0YXJ0Qm9yZGVyTW9kZSwKKyAgICAibW90aW9uU3RhcnRCb3Jk
ZXJNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25TdGFydFRpbWUsCisgICAgIm1v
dGlvblN0YXJ0VGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobW90aW9uVHJhbnNmb3JtQnVm
ZmVyLAorICAgICJtb3Rpb25UcmFuc2Zvcm1CdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCwKKyAgICAibW90aW9uVHJhbnNmb3JtQnVmZmVy
T2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25UcmFuc2Zvcm1Db3VudCwKKyAg
ICAibW90aW9uVHJhbnNmb3JtQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG11dGFiaWxp
dHksCisgICAgIm11dGFiaWxpdHkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5hbWUsCisgICAg
Im5hbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZVdp
dGhEZXNjcmlwdG9yXywKKyAgICAibmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aERlc2NyaXB0
b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRo
U2l6ZV8sCisgICAgIm5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZVdpdGhTaXplOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobmV3QXJndW1lbnRFbmNvZGVyRm9yQnVmZmVyQXRJbmRleF8sCisgICAg
Im5ld0FyZ3VtZW50RW5jb2RlckZvckJ1ZmZlckF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzXywKKyAgICAibmV3QXJndW1lbnRF
bmNvZGVyV2l0aEFyZ3VtZW50czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FyZ3VtZW50
RW5jb2RlcldpdGhCdWZmZXJJbmRleF8sCisgICAgIm5ld0FyZ3VtZW50RW5jb2RlcldpdGhCdWZm
ZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FyZ3VtZW50RW5jb2RlcldpdGhC
dWZmZXJJbmRleF9yZWZsZWN0aW9uXywKKyAgICAibmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZl
ckluZGV4OnJlZmxlY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCaW5hcnlBcmNo
aXZlV2l0aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJuZXdCaW5hcnlBcmNoaXZlV2l0aERlc2Ny
aXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZmZXJXaXRoQnl0ZXNf
bGVuZ3RoX29wdGlvbnNfLAorICAgICJuZXdCdWZmZXJXaXRoQnl0ZXM6bGVuZ3RoOm9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHlfbGVuZ3Ro
X29wdGlvbnNfZGVhbGxvY2F0b3JfLAorICAgICJuZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHk6bGVu
Z3RoOm9wdGlvbnM6ZGVhbGxvY2F0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZm
ZXJXaXRoTGVuZ3RoX29wdGlvbnNfLAorICAgICJuZXdCdWZmZXJXaXRoTGVuZ3RoOm9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZmZXJXaXRoTGVuZ3RoX29wdGlvbnNfb2Zm
c2V0XywKKyAgICAibmV3QnVmZmVyV2l0aExlbmd0aDpvcHRpb25zOm9mZnNldDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhDb21tYW5kUXVldWVfLAorICAgICJu
ZXdDYXB0dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3Q2FwdHVyZVNjb3BlV2l0aERldmljZV8sCisgICAgIm5ld0NhcHR1cmVTY29wZVdpdGhEZXZp
Y2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21tYW5kUXVldWUsCisgICAgIm5ld0Nv
bW1hbmRRdWV1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tbWFuZFF1ZXVlV2l0aE1h
eENvbW1hbmRCdWZmZXJDb3VudF8sCisgICAgIm5ld0NvbW1hbmRRdWV1ZVdpdGhNYXhDb21tYW5k
QnVmZmVyQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXywKKyAgICAibmV3Q29tcHV0
ZVBpcGVsaW5lU3RhdGVXaXRoQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uczplcnJvcjoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jf
b3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
V2l0aERlc2NyaXB0b3I6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jfb3B0aW9uc19y
ZWZsZWN0aW9uX2Vycm9yXywKKyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3Jp
cHRvcjpvcHRpb25zOnJlZmxlY3Rpb246ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChu
ZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9jb21wbGV0aW9uSGFuZGxlcl8sCisg
ICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOmNvbXBsZXRpb25IYW5kbGVy
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVu
Y3Rpb25fZXJyb3JfLAorICAgICJuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpl
cnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0
aEZ1bmN0aW9uX29wdGlvbnNfY29tcGxldGlvbkhhbmRsZXJfLAorICAgICJuZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25fb3B0
aW9uc19yZWZsZWN0aW9uX2Vycm9yXywKKyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRo
RnVuY3Rpb246b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3Q291bnRlclNhbXBsZUJ1ZmZlcldpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3
Q291bnRlclNhbXBsZUJ1ZmZlcldpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3RGVmYXVsdExpYnJhcnksCisgICAgIm5ld0RlZmF1bHRMaWJyYXJ5Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChuZXdEZWZhdWx0TGlicmFyeVdpdGhCdW5kbGVfZXJyb3JfLAor
ICAgICJuZXdEZWZhdWx0TGlicmFyeVdpdGhCdW5kbGU6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9yXywKKyAgICAibmV3RGVw
dGhTdGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d0R5bmFtaWNMaWJyYXJ5X2Vycm9yXywKKyAgICAibmV3RHluYW1pY0xpYnJhcnk6ZXJyb3I6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdEeW5hbWljTGlicmFyeVdpdGhVUkxfZXJyb3JfLAor
ICAgICJuZXdEeW5hbWljTGlicmFyeVdpdGhVUkw6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdFdmVudCwKKyAgICAibmV3RXZlbnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d0ZlbmNlLAorICAgICJuZXdGZW5jZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RnVuY3Rp
b25XaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0Z1bmN0aW9uV2l0
aERlc2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChu
ZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3RnVuY3Rpb25XaXRoRGVz
Y3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0Z1bmN0aW9uV2l0aE5h
bWVfLAorICAgICJuZXdGdW5jdGlvbldpdGhOYW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3RnVuY3Rpb25XaXRoTmFtZV9jb25zdGFudFZhbHVlc19jb21wbGV0aW9uSGFuZGxlcl8sCisg
ICAgIm5ld0Z1bmN0aW9uV2l0aE5hbWU6Y29uc3RhbnRWYWx1ZXM6Y29tcGxldGlvbkhhbmRsZXI6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdGdW5jdGlvbldpdGhOYW1lX2NvbnN0YW50VmFs
dWVzX2Vycm9yXywKKyAgICAibmV3RnVuY3Rpb25XaXRoTmFtZTpjb25zdGFudFZhbHVlczplcnJv
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0hlYXBXaXRoRGVzY3JpcHRvcl8sCisgICAg
Im5ld0hlYXBXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0luZGly
ZWN0Q29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yX21heENvbW1hbmRDb3VudF9vcHRpb25zXywK
KyAgICAibmV3SW5kaXJlY3RDb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6bWF4Q29tbWFuZENv
dW50Om9wdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3Jfc3RhZ2VfLAorICAgICJuZXdJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5k
bGVyXywKKyAgICAibmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpjb21wbGV0
aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0
aW9uV2l0aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldp
dGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdp
dGhEYXRhX2Vycm9yXywKKyAgICAibmV3TGlicmFyeVdpdGhEYXRhOmVycm9yOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhGaWxlX2Vycm9yXywKKyAgICAibmV3TGlicmFy
eVdpdGhGaWxlOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhT
b3VyY2Vfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0xpYnJhcnlXaXRoU291
cmNlOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChu
ZXdMaWJyYXJ5V2l0aFNvdXJjZV9vcHRpb25zX2Vycm9yXywKKyAgICAibmV3TGlicmFyeVdpdGhT
b3VyY2U6b3B0aW9uczplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlX
aXRoU3RpdGNoZWREZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3TGlicmFy
eVdpdGhTdGl0Y2hlZERlc2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcl9lcnJvcl8sCisgICAg
Im5ld0xpYnJhcnlXaXRoU3RpdGNoZWREZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3TGlicmFyeVdpdGhVUkxfZXJyb3JfLAorICAgICJuZXdMaWJyYXJ5V2l0aFVS
TDplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1Jhc3Rlcml6YXRpb25SYXRlTWFw
V2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhEZXNjcmlw
dG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVtb3RlQnVmZmVyVmlld0ZvckRldmlj
ZV8sCisgICAgIm5ld1JlbW90ZUJ1ZmZlclZpZXdGb3JEZXZpY2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRldmljZV8sCisgICAgIm5ld1JlbW90ZVRl
eHR1cmVWaWV3Rm9yRGV2aWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXywKKyAgICAibmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zOmVycm9yOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlw
dG9yX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhE
ZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfY29tcGxldGlv
bkhhbmRsZXJfLAorICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0
aW9uczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1JlbmRl
clBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfLAor
ICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0aW9uczpyZWZsZWN0
aW9uOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0
ZVdpdGhUaWxlRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVzY3JpcHRvcjpvcHRpb25zOmNvbXBsZXRpb25I
YW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdp
dGhUaWxlRGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfLAorICAgICJuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVjdGlvbjplcnJv
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlwdG9y
XywKKyAgICAibmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdTaGFyZWRFdmVudCwKKyAgICAibmV3U2hhcmVkRXZlbnQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKG5ld1NoYXJlZEV2ZW50SGFuZGxlLAorICAgICJuZXdTaGFyZWRFdmVudEhh
bmRsZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlXywK
KyAgICAibmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3U2hhcmVkVGV4dHVyZUhhbmRsZSwKKyAgICAibmV3U2hhcmVkVGV4dHVyZUhhbmRsZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobmV3U2hhcmVkVGV4dHVyZVdpdGhEZXNjcmlwdG9yXywKKyAg
ICAibmV3U2hhcmVkVGV4dHVyZVdpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3U2hhcmVkVGV4dHVyZVdpdGhIYW5kbGVfLAorICAgICJuZXdTaGFyZWRUZXh0dXJlV2l0
aEhhbmRsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVWaWV3V2l0aFBpeGVs
Rm9ybWF0XywKKyAgICAibmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdF90ZXh0dXJlVHlwZV9s
ZXZlbHNfc2xpY2VzXywKKyAgICAibmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6dGV4dHVy
ZVR5cGU6bGV2ZWxzOnNsaWNlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVW
aWV3V2l0aFBpeGVsRm9ybWF0X3RleHR1cmVUeXBlX2xldmVsc19zbGljZXNfc3dpenpsZV8sCisg
ICAgIm5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0OnRleHR1cmVUeXBlOmxldmVsczpzbGlj
ZXM6c3dpenpsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVXaXRoRGVzY3Jp
cHRvcl8sCisgICAgIm5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcl9pb3N1cmZhY2VfcGxhbmVfLAorICAgICJu
ZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6aW9zdXJmYWNlOnBsYW5lOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yX29mZnNldF8sCisgICAgIm5ld1RleHR1
cmVXaXRoRGVzY3JpcHRvcjpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdUZXh0
dXJlV2l0aERlc2NyaXB0b3Jfb2Zmc2V0X2J5dGVzUGVyUm93XywKKyAgICAibmV3VGV4dHVyZVdp
dGhEZXNjcmlwdG9yOm9mZnNldDpieXRlc1BlclJvdzoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdWaXNpYmxl
RnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3
VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcl9zdGFnZV8sCisgICAgIm5ld1Zpc2li
bGVGdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChub2RlcywKKyAgICAibm9kZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5vcm1hbGl6
ZWRDb29yZGluYXRlcywKKyAgICAibm9ybWFsaXplZENvb3JkaW5hdGVzIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChub3RpZnlMaXN0ZW5lcl9hdFZhbHVlX2Jsb2NrXywKKyAgICAibm90aWZ5TGlz
dGVuZXI6YXRWYWx1ZTpibG9jazoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9iamVjdEF0SW5k
ZXhlZFN1YnNjcmlwdF8sCisgICAgIm9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG9mZnNldCwKKyAgICAib2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChvcGFxdWUsCisgICAgIm9wYXF1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3B0aW1p
emVDb250ZW50c0ZvckNQVUFjY2Vzc18sCisgICAgIm9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nl
c3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNz
X3NsaWNlX2xldmVsXywKKyAgICAib3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2VzczpzbGljZTps
ZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nl
c3NfLAorICAgICJvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwob3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vzc19zbGljZV9sZXZlbF8sCisgICAg
Im9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChvcHRpbWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcl93aXRoUmFuZ2VfLAorICAg
ICJvcHRpbWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcjp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChvcHRpb25zLAorICAgICJvcHRpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChvdXRwdXROb2RlLAorICAgICJvdXRwdXROb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChv
dXRwdXRVUkwsCisgICAgIm91dHB1dFVSTCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGFyYWxs
ZWxSZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXywKKyAgICAicGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
cGFyYW1ldGVyQnVmZmVyU2l6ZUFuZEFsaWduLAorICAgICJwYXJhbWV0ZXJCdWZmZXJTaXplQW5k
QWxpZ24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhcmVudFJlbGF0aXZlTGV2ZWwsCisgICAg
InBhcmVudFJlbGF0aXZlTGV2ZWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhcmVudFJlbGF0
aXZlU2xpY2UsCisgICAgInBhcmVudFJlbGF0aXZlU2xpY2UiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHBhcmVudFRleHR1cmUsCisgICAgInBhcmVudFRleHR1cmUiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHBhdGNoQ29udHJvbFBvaW50Q291bnQsCisgICAgInBhdGNoQ29udHJvbFBvaW50Q291
bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhdGNoVHlwZSwKKyAgICAicGF0Y2hUeXBlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChwZWVyQ291bnQsCisgICAgInBlZXJDb3VudCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocGVlckdyb3VwSUQsCisgICAgInBlZXJHcm91cElEIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChwZWVySW5kZXgsCisgICAgInBlZXJJbmRleCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwocGh5c2ljYWxHcmFudWxhcml0eSwKKyAgICAicGh5c2ljYWxHcmFudWxhcml0
eSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGh5c2ljYWxTaXplRm9yTGF5ZXJfLAorICAgICJw
aHlzaWNhbFNpemVGb3JMYXllcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBpeGVsRm9ybWF0
LAorICAgICJwaXhlbEZvcm1hdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocG9pbnRlclR5cGUs
CisgICAgInBvaW50ZXJUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwb3BEZWJ1Z0dyb3Vw
LAorICAgICJwb3BEZWJ1Z0dyb3VwIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwcmVsb2FkZWRM
aWJyYXJpZXMsCisgICAgInByZWxvYWRlZExpYnJhcmllcyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocHJlcHJvY2Vzc29yTWFjcm9zLAorICAgICJwcmVwcm9jZXNzb3JNYWNyb3MiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHByZXNlbnQsCisgICAgInByZXNlbnQiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHByZXNlbnRBZnRlck1pbmltdW1EdXJhdGlvbl8sCisgICAgInByZXNlbnRBZnRlck1p
bmltdW1EdXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnRBdFRpbWVfLAor
ICAgICJwcmVzZW50QXRUaW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudERyYXdh
YmxlXywKKyAgICAicHJlc2VudERyYXdhYmxlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJl
c2VudERyYXdhYmxlX2FmdGVyTWluaW11bUR1cmF0aW9uXywKKyAgICAicHJlc2VudERyYXdhYmxl
OmFmdGVyTWluaW11bUR1cmF0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudERy
YXdhYmxlX2F0VGltZV8sCisgICAgInByZXNlbnREcmF3YWJsZTphdFRpbWU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChwcmVzZW50ZWRUaW1lLAorICAgICJwcmVzZW50ZWRUaW1lIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChwcmVzZXJ2ZUludmFyaWFuY2UsCisgICAgInByZXNlcnZlSW52YXJp
YW5jZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJpdmF0ZUZ1bmN0aW9ucywKKyAgICAicHJp
dmF0ZUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHVzaERlYnVnR3JvdXBfLAor
ICAgICJwdXNoRGVidWdHcm91cDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJBZGRyZXNzTW9k
ZSwKKyAgICAickFkZHJlc3NNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyYXN0ZXJTYW1w
bGVDb3VudCwKKyAgICAicmFzdGVyU2FtcGxlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHJhc3Rlcml6YXRpb25SYXRlTWFwLAorICAgICJyYXN0ZXJpemF0aW9uUmF0ZU1hcCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVl
blNpemVfLAorICAgICJyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRv
cldpdGhTY3JlZW5TaXplX2xheWVyXywKKyAgICAicmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlw
dG9yV2l0aFNjcmVlblNpemU6bGF5ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyYXN0ZXJp
emF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZV9sYXllckNvdW50X2xheWVyc18s
CisgICAgInJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOmxheWVy
Q291bnQ6bGF5ZXJzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVhZE1hc2ssCisgICAgInJl
YWRNYXNrIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZWFkV3JpdGVUZXh0dXJlU3VwcG9ydCwK
KyAgICAicmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJl
Y29tbWVuZGVkTWF4V29ya2luZ1NldFNpemUsCisgICAgInJlY29tbWVuZGVkTWF4V29ya2luZ1Nl
dFNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlZml0QWNjZWxlcmF0aW9uU3RydWN0dXJl
X2Rlc2NyaXB0b3JfZGVzdGluYXRpb25fc2NyYXRjaEJ1ZmZlcl9zY3JhdGNoQnVmZmVyT2Zmc2V0
XywKKyAgICAicmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6ZGVzY3JpcHRvcjpkZXN0aW5hdGlv
bjpzY3JhdGNoQnVmZmVyOnNjcmF0Y2hCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChyZWdpc3RyeUlELAorICAgICJyZWdpc3RyeUlEIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChyZW1vdGVTdG9yYWdlQnVmZmVyLAorICAgICJyZW1vdGVTdG9yYWdlQnVmZmVyIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChyZW1vdGVTdG9yYWdlVGV4dHVyZSwKKyAgICAicmVtb3RlU3RvcmFn
ZVRleHR1cmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbW92ZUFsbERlYnVnTWFya2VycywK
KyAgICAicmVtb3ZlQWxsRGVidWdNYXJrZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZW5k
ZXJDb21tYW5kRW5jb2RlciwKKyAgICAicmVuZGVyQ29tbWFuZEVuY29kZXIiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3JfLAorICAgICJy
ZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocmVuZGVyUGFzc0Rlc2NyaXB0b3IsCisgICAgInJlbmRlclBhc3NEZXNjcmlwdG9yIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChyZW5kZXJUYXJnZXRBcnJheUxlbmd0aCwKKyAgICAicmVuZGVy
VGFyZ2V0QXJyYXlMZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbmRlclRhcmdldEhl
aWdodCwKKyAgICAicmVuZGVyVGFyZ2V0SGVpZ2h0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChy
ZW5kZXJUYXJnZXRXaWR0aCwKKyAgICAicmVuZGVyVGFyZ2V0V2lkdGgiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHJlcGxhY2VSZWdpb25fbWlwbWFwTGV2ZWxfc2xpY2Vfd2l0aEJ5dGVzX2J5dGVz
UGVyUm93X2J5dGVzUGVySW1hZ2VfLAorICAgICJyZXBsYWNlUmVnaW9uOm1pcG1hcExldmVsOnNs
aWNlOndpdGhCeXRlczpieXRlc1BlclJvdzpieXRlc1BlckltYWdlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwocmVwbGFjZVJlZ2lvbl9taXBtYXBMZXZlbF93aXRoQnl0ZXNfYnl0ZXNQZXJSb3df
LAorICAgICJyZXBsYWNlUmVnaW9uOm1pcG1hcExldmVsOndpdGhCeXRlczpieXRlc1BlclJvdzoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlcXVpcmVkLAorICAgICJyZXF1aXJlZCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocmVzZXQsCisgICAgInJlc2V0Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChyZXNldENvbW1hbmRzSW5CdWZmZXJfd2l0aFJhbmdlXywKKyAgICAicmVzZXRDb21tYW5k
c0luQnVmZmVyOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc2V0VGV4dHVy
ZUFjY2Vzc0NvdW50ZXJzX3JlZ2lvbl9taXBMZXZlbF9zbGljZV8sCisgICAgInJlc2V0VGV4dHVy
ZUFjY2Vzc0NvdW50ZXJzOnJlZ2lvbjptaXBMZXZlbDpzbGljZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHJlc2V0V2l0aFJhbmdlXywKKyAgICAicmVzZXRXaXRoUmFuZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChyZXNvbHZlQ291bnRlclJhbmdlXywKKyAgICAicmVzb2x2ZUNvdW50ZXJS
YW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc29sdmVDb3VudGVyc19pblJhbmdlX2Rl
c3RpbmF0aW9uQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0XywKKyAgICAicmVzb2x2ZUNvdW50ZXJz
OmluUmFuZ2U6ZGVzdGluYXRpb25CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChyZXNvbHZlRGVwdGhQbGFuZSwKKyAgICAicmVzb2x2ZURlcHRoUGxhbmUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc29sdmVMZXZlbCwKKyAgICAicmVzb2x2ZUxldmVs
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNvbHZlU2xpY2UsCisgICAgInJlc29sdmVTbGlj
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb2x2ZVRleHR1cmUsCisgICAgInJlc29sdmVU
ZXh0dXJlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZU9wdGlvbnMsCisgICAgInJl
c291cmNlT3B0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb3VyY2VTdGF0ZUNvbW1h
bmRFbmNvZGVyLAorICAgICJyZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXywK
KyAgICAicmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IsCisgICAgInJlc291
cmNlU3RhdGVQYXNzRGVzY3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmV0YWluZWRS
ZWZlcmVuY2VzLAorICAgICJyZXRhaW5lZFJlZmVyZW5jZXMiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHJnYkJsZW5kT3BlcmF0aW9uLAorICAgICJyZ2JCbGVuZE9wZXJhdGlvbiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwocm9vdFJlc291cmNlLAorICAgICJyb290UmVzb3VyY2UiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNBZGRyZXNzTW9kZSwKKyAgICAic0FkZHJlc3NNb2RlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzYW1wbGVCdWZmZXIsCisgICAgInNhbXBsZUJ1ZmZlciIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2FtcGxlQnVmZmVyQXR0YWNobWVudHMsCisgICAgInNhbXBsZUJ1
ZmZlckF0dGFjaG1lbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzYW1wbGVDb3VudCwKKyAg
ICAic2FtcGxlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNhbXBsZUNvdW50ZXJzSW5C
dWZmZXJfYXRTYW1wbGVJbmRleF93aXRoQmFycmllcl8sCisgICAgInNhbXBsZUNvdW50ZXJzSW5C
dWZmZXI6YXRTYW1wbGVJbmRleDp3aXRoQmFycmllcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNhbXBsZVRpbWVzdGFtcHNfZ3B1VGltZXN0YW1wXywKKyAgICAic2FtcGxlVGltZXN0YW1wczpn
cHVUaW1lc3RhbXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzY3JlZW5TaXplLAorICAgICJz
Y3JlZW5TaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXJpYWxpemVUb1VSTF9lcnJvcl8s
CisgICAgInNlcmlhbGl6ZVRvVVJMOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRBY2NlbGVyYXRp
b25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFj
Y2VsZXJhdGlvblN0cnVjdHVyZV9hdEluZGV4XywKKyAgICAic2V0QWNjZWxlcmF0aW9uU3RydWN0
dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBY2Nlc3NfLAorICAgICJz
ZXRBY2Nlc3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBbGxvd0R1cGxpY2F0ZUludGVy
c2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbl8sCisgICAgInNldEFsbG93RHVwbGljYXRlSW50ZXJz
ZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QWxs
b3dHUFVPcHRpbWl6ZWRDb250ZW50c18sCisgICAgInNldEFsbG93R1BVT3B0aW1pemVkQ29udGVu
dHM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBbHBoYUJsZW5kT3BlcmF0aW9uXywKKyAg
ICAic2V0QWxwaGFCbGVuZE9wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFs
cGhhVG9Db3ZlcmFnZUVuYWJsZWRfLAorICAgICJzZXRBbHBoYVRvQ292ZXJhZ2VFbmFibGVkOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QWxwaGFUb09uZUVuYWJsZWRfLAorICAgICJzZXRB
bHBoYVRvT25lRW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFyZ3VtZW50QnVm
ZmVyX29mZnNldF8sCisgICAgInNldEFyZ3VtZW50QnVmZmVyOm9mZnNldDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEFyZ3VtZW50QnVmZmVyX3N0YXJ0T2Zmc2V0X2FycmF5RWxlbWVudF8s
CisgICAgInNldEFyZ3VtZW50QnVmZmVyOnN0YXJ0T2Zmc2V0OmFycmF5RWxlbWVudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEFyZ3VtZW50SW5kZXhfLAorICAgICJzZXRBcmd1bWVudElu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QXJndW1lbnRzXywKKyAgICAic2V0QXJn
dW1lbnRzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QXJyYXlMZW5ndGhfLAorICAgICJz
ZXRBcnJheUxlbmd0aDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEF0dHJpYnV0ZXNfLAor
ICAgICJzZXRBdHRyaWJ1dGVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QmFja0ZhY2VT
dGVuY2lsXywKKyAgICAic2V0QmFja0ZhY2VTdGVuY2lsOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0QmFycmllciwKKyAgICAic2V0QmFycmllciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0QmluYXJ5QXJjaGl2ZXNfLAorICAgICJzZXRCaW5hcnlBcmNoaXZlczoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEJpbmFyeUZ1bmN0aW9uc18sCisgICAgInNldEJpbmFyeUZ1bmN0aW9u
czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJsZW5kQ29sb3JSZWRfZ3JlZW5fYmx1ZV9h
bHBoYV8sCisgICAgInNldEJsZW5kQ29sb3JSZWQ6Z3JlZW46Ymx1ZTphbHBoYToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEJsZW5kaW5nRW5hYmxlZF8sCisgICAgInNldEJsZW5kaW5nRW5h
YmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJvcmRlckNvbG9yXywKKyAgICAic2V0
Qm9yZGVyQ29sb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCb3VuZGluZ0JveEJ1ZmZl
cl8sCisgICAgInNldEJvdW5kaW5nQm94QnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXRfLAorICAgICJzZXRCb3VuZGluZ0JveEJ1ZmZlck9m
ZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyc18sCisg
ICAgInNldEJvdW5kaW5nQm94QnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJv
dW5kaW5nQm94Q291bnRfLAorICAgICJzZXRCb3VuZGluZ0JveENvdW50OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0Qm91bmRpbmdCb3hTdHJpZGVfLAorICAgICJzZXRCb3VuZGluZ0JveFN0
cmlkZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJ1ZmZlcl8sCisgICAgInNldEJ1ZmZl
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8sCisg
ICAgInNldEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEJ1ZmZlckluZGV4XywKKyAgICAic2V0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRCdWZmZXJPZmZzZXRfYXRJbmRleF8sCisgICAgInNldEJ1ZmZlck9mZnNldDphdElu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5n
ZV8sCisgICAgInNldEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRCeXRlc19sZW5ndGhfYXRJbmRleF8sCisgICAgInNldEJ5dGVzOmxlbmd0aDph
dEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q2FwdHVyZU9iamVjdF8sCisgICAg
InNldENhcHR1cmVPYmplY3Q6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDbGVhckNvbG9y
XywKKyAgICAic2V0Q2xlYXJDb2xvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENsZWFy
RGVwdGhfLAorICAgICJzZXRDbGVhckRlcHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
Q2xlYXJTdGVuY2lsXywKKyAgICAic2V0Q2xlYXJTdGVuY2lsOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0Q29sb3JTdG9yZUFjdGlvbl9hdEluZGV4XywKKyAgICAic2V0Q29sb3JTdG9yZUFj
dGlvbjphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29sb3JTdG9yZUFjdGlv
bk9wdGlvbnNfYXRJbmRleF8sCisgICAgInNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zOmF0SW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb21tYW5kVHlwZXNfLAorICAgICJzZXRD
b21tYW5kVHlwZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb21wYXJlRnVuY3Rpb25f
LAorICAgICJzZXRDb21wYXJlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRD
b21wdXRlRnVuY3Rpb25fLAorICAgICJzZXRDb21wdXRlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZV8sCisgICAgInNldENvbXB1dGVQaXBl
bGluZVN0YXRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVfYXRJbmRleF8sCisgICAgInNldENvbXB1dGVQaXBlbGluZVN0YXRlOmF0SW5kZXg6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZXNfd2l0aFJhbmdlXywK
KyAgICAic2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldENvbnN0YW50QmxvY2tBbGlnbm1lbnRfLAorICAgICJzZXRDb25zdGFudEJs
b2NrQWxpZ25tZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29uc3RhbnRWYWx1ZV90
eXBlX2F0SW5kZXhfLAorICAgICJzZXRDb25zdGFudFZhbHVlOnR5cGU6YXRJbmRleDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldENvbnN0YW50VmFsdWVfdHlwZV93aXRoTmFtZV8sCisgICAg
InNldENvbnN0YW50VmFsdWU6dHlwZTp3aXRoTmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldENvbnN0YW50VmFsdWVzXywKKyAgICAic2V0Q29uc3RhbnRWYWx1ZXM6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRDb25zdGFudFZhbHVlc190eXBlX3dpdGhSYW5nZV8sCisgICAgInNl
dENvbnN0YW50VmFsdWVzOnR5cGU6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0Q29udHJvbERlcGVuZGVuY2llc18sCisgICAgInNldENvbnRyb2xEZXBlbmRlbmNpZXM6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb3VudGVyU2V0XywKKyAgICAic2V0Q291bnRlclNl
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENwdUNhY2hlTW9kZV8sCisgICAgInNldENw
dUNhY2hlTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEN1bGxNb2RlXywKKyAgICAi
c2V0Q3VsbE1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREYXRhVHlwZV8sCisgICAg
InNldERhdGFUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVmYXVsdENhcHR1cmVT
Y29wZV8sCisgICAgInNldERlZmF1bHRDYXB0dXJlU2NvcGU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXREZWZhdWx0UmFzdGVyU2FtcGxlQ291bnRfLAorICAgICJzZXREZWZhdWx0UmFzdGVy
U2FtcGxlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aF8sCisgICAgInNl
dERlcHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhBdHRhY2htZW50XywKKyAg
ICAic2V0RGVwdGhBdHRhY2htZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhB
dHRhY2htZW50UGl4ZWxGb3JtYXRfLAorICAgICJzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1h
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoQmlhc19zbG9wZVNjYWxlX2NsYW1w
XywKKyAgICAic2V0RGVwdGhCaWFzOnNsb3BlU2NhbGU6Y2xhbXA6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXREZXB0aENsaXBNb2RlXywKKyAgICAic2V0RGVwdGhDbGlwTW9kZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uXywKKyAgICAic2V0RGVw
dGhDb21wYXJlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aEZhaWx1
cmVPcGVyYXRpb25fLAorICAgICJzZXREZXB0aEZhaWx1cmVPcGVyYXRpb246Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXREZXB0aFBsYW5lXywKKyAgICAic2V0RGVwdGhQbGFuZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoUmVzb2x2ZUZpbHRlcl8sCisgICAgInNldERlcHRo
UmVzb2x2ZUZpbHRlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoU3RlbmNpbFBh
c3NPcGVyYXRpb25fLAorICAgICJzZXREZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhTdGVuY2lsU3RhdGVfLAorICAgICJzZXREZXB0aFN0
ZW5jaWxTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoU3RvcmVBY3Rpb25f
LAorICAgICJzZXREZXB0aFN0b3JlQWN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnNfLAorICAgICJzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9u
czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoV3JpdGVFbmFibGVkXywKKyAgICAi
c2V0RGVwdGhXcml0ZUVuYWJsZWQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXN0aW5h
dGlvbl8sCisgICAgInNldERlc3RpbmF0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yXywKKyAgICAic2V0RGVzdGluYXRpb25BbHBoYUJs
ZW5kRmFjdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVzdGluYXRpb25SR0JCbGVu
ZEZhY3Rvcl8sCisgICAgInNldERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXREaXNwYXRjaFR5cGVfLAorICAgICJzZXREaXNwYXRjaFR5cGU6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleF8sCisgICAg
InNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4XywKKyAgICAic2V0RW5kT2ZGcmFnbWVudFNhbXBsZUlu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleF8s
CisgICAgInNldEVuZE9mVmVydGV4U2FtcGxlSW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRFcnJvck9wdGlvbnNfLAorICAgICJzZXRFcnJvck9wdGlvbnM6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRGYXN0TWF0aEVuYWJsZWRfLAorICAgICJzZXRGYXN0TWF0aEVuYWJsZWQ6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGb3JtYXRfLAorICAgICJzZXRGb3JtYXQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZV9h
dEJ1ZmZlckluZGV4XywKKyAgICAic2V0RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRC
dWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50QWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9uc18sCisgICAgInNldEZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0
aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50QnVmZmVyX29mZnNldF9h
dEluZGV4XywKKyAgICAic2V0RnJhZ21lbnRCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEJ1ZmZlck9mZnNldF9hdEluZGV4XywKKyAgICAi
c2V0RnJhZ21lbnRCdWZmZXJPZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEZyYWdtZW50QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5nZV8sCisgICAgInNldEZyYWdtZW50
QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZy
YWdtZW50Qnl0ZXNfbGVuZ3RoX2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudEJ5dGVzOmxlbmd0
aDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRGdW5jdGlvbl8s
CisgICAgInNldEZyYWdtZW50RnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRG
cmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNl
dEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193
aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50
TGlua2VkRnVuY3Rpb25zXywKKyAgICAic2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnM6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFByZWxvYWRlZExpYnJhcmllc18sCisgICAg
InNldEZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVfYXRJbmRleF8sCisgICAgInNldEZyYWdtZW50U2FtcGxl
clN0YXRlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFNhbXBs
ZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdEluZGV4XywKKyAgICAic2V0RnJhZ21l
bnRTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9k
TWF4Q2xhbXBzX3dpdGhSYW5nZV8sCisgICAgInNldEZyYWdtZW50U2FtcGxlclN0YXRlczpsb2RN
aW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEZyYWdtZW50U2FtcGxlclN0YXRlc193aXRoUmFuZ2VfLAorICAgICJzZXRGcmFnbWVudFNh
bXBsZXJTdGF0ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21l
bnRUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudFRleHR1cmU6YXRJbmRleDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50VGV4dHVyZXNfd2l0aFJhbmdlXywKKyAg
ICAic2V0RnJhZ21lbnRUZXh0dXJlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJz
ZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVy
UmFuZ2VfLAorICAgICJzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVy
UmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcm9udEZhY2VTdGVuY2lsXywKKyAg
ICAic2V0RnJvbnRGYWNlU3RlbmNpbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyb250
RmFjaW5nV2luZGluZ18sCisgICAgInNldEZyb250RmFjaW5nV2luZGluZzoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEZ1bmN0aW9uX2F0SW5kZXhfLAorICAgICJzZXRGdW5jdGlvbjphdElu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnVuY3Rpb25Db3VudF8sCisgICAgInNl
dEZ1bmN0aW9uQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGdW5jdGlvbkdyYXBo
c18sCisgICAgInNldEZ1bmN0aW9uR3JhcGhzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RnVuY3Rpb25OYW1lXywKKyAgICAic2V0RnVuY3Rpb25OYW1lOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0RnVuY3Rpb25zXywKKyAgICAic2V0RnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0RnVuY3Rpb25zX3dpdGhSYW5nZV8sCisgICAgInNldEZ1bmN0aW9uczp3aXRo
UmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRHZW9tZXRyeURlc2NyaXB0b3JzXywK
KyAgICAic2V0R2VvbWV0cnlEZXNjcmlwdG9yczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEdyb3Vwc18sCisgICAgInNldEdyb3VwczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEhh
emFyZFRyYWNraW5nTW9kZV8sCisgICAgInNldEhhemFyZFRyYWNraW5nTW9kZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEhlaWdodF8sCisgICAgInNldEhlaWdodDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEltYWdlYmxvY2tTYW1wbGVMZW5ndGhfLAorICAgICJzZXRJbWFnZWJs
b2NrU2FtcGxlTGVuZ3RoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW1hZ2VibG9ja1dp
ZHRoX2hlaWdodF8sCisgICAgInNldEltYWdlYmxvY2tXaWR0aDpoZWlnaHQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRJbmRleF8sCisgICAgInNldEluZGV4OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0SW5kZXhCdWZmZXJfLAorICAgICJzZXRJbmRleEJ1ZmZlcjoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEluZGV4QnVmZmVySW5kZXhfLAorICAgICJzZXRJbmRleEJ1ZmZl
ckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kZXhCdWZmZXJPZmZzZXRfLAor
ICAgICJzZXRJbmRleEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldElu
ZGV4VHlwZV8sCisgICAgInNldEluZGV4VHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEluZGlyZWN0Q29tbWFuZEJ1ZmZlcl9hdEluZGV4XywKKyAgICAic2V0SW5kaXJlY3RDb21tYW5k
QnVmZmVyOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmRpcmVjdENvbW1h
bmRCdWZmZXJzX3dpdGhSYW5nZV8sCisgICAgInNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnM6d2l0
aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5oZXJpdEJ1ZmZlcnNfLAorICAg
ICJzZXRJbmhlcml0QnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluaGVyaXRQ
aXBlbGluZVN0YXRlXywKKyAgICAic2V0SW5oZXJpdFBpcGVsaW5lU3RhdGU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRJbnB1dFByaW1pdGl2ZVRvcG9sb2d5XywKKyAgICAic2V0SW5wdXRQ
cmltaXRpdmVUb3BvbG9neToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluc2VydExpYnJh
cmllc18sCisgICAgInNldEluc2VydExpYnJhcmllczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEluc3RhbGxOYW1lXywKKyAgICAic2V0SW5zdGFsbE5hbWU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRJbnN0YW5jZUNvdW50XywKKyAgICAic2V0SW5zdGFuY2VDb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcl8sCisgICAgInNl
dEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldElu
c3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldF8sCisgICAgInNldEluc3RhbmNlRGVzY3JpcHRv
ckJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlRGVzY3Jp
cHRvclN0cmlkZV8sCisgICAgInNldEluc3RhbmNlRGVzY3JpcHRvclN0cmlkZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvclR5cGVfLAorICAgICJzZXRJbnN0
YW5jZURlc2NyaXB0b3JUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFuY2Vk
QWNjZWxlcmF0aW9uU3RydWN0dXJlc18sCisgICAgInNldEluc3RhbmNlZEFjY2VsZXJhdGlvblN0
cnVjdHVyZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
OmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlX2F0SW5kZXhfLAorICAgICJzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlT2Zmc2V0XywKKyAgICAic2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dp
dGhCdWZmZXJSYW5nZV8sCisgICAgInNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzOndpdGhC
dWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVzX3dpdGhSYW5nZV8sCisgICAgInNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVz
OndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEtlcm5lbEJ1ZmZlcl9vZmZz
ZXRfYXRJbmRleF8sCisgICAgInNldEtlcm5lbEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldExhYmVsXywKKyAgICAic2V0TGFiZWw6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRMYW5ndWFnZVZlcnNpb25fLAorICAgICJzZXRMYW5ndWFnZVZlcnNp
b246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMYXllcl9hdEluZGV4XywKKyAgICAic2V0
TGF5ZXI6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldExldmVsXywKKyAgICAi
c2V0TGV2ZWw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMaWJyYXJpZXNfLAorICAgICJz
ZXRMaWJyYXJpZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMaWJyYXJ5VHlwZV8sCisg
ICAgInNldExpYnJhcnlUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TGlua2VkRnVu
Y3Rpb25zXywKKyAgICAic2V0TGlua2VkRnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0TG9hZEFjdGlvbl8sCisgICAgInNldExvYWRBY3Rpb246Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRMb2RBdmVyYWdlXywKKyAgICAic2V0TG9kQXZlcmFnZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldExvZE1heENsYW1wXywKKyAgICAic2V0TG9kTWF4Q2xhbXA6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRMb2RNaW5DbGFtcF8sCisgICAgInNldExvZE1pbkNsYW1w
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWFnRmlsdGVyXywKKyAgICAic2V0TWFnRmls
dGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4QW5pc290cm9weV8sCisgICAgInNl
dE1heEFuaXNvdHJvcHk6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhDYWxsU3RhY2tE
ZXB0aF8sCisgICAgInNldE1heENhbGxTdGFja0RlcHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0TWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnRfLAorICAgICJzZXRNYXhGcmFnbWVudEJ1
ZmZlckJpbmRDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heEZyYWdtZW50Q2Fs
bFN0YWNrRGVwdGhfLAorICAgICJzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRoOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4S2VybmVsQnVmZmVyQmluZENvdW50XywKKyAgICAic2V0
TWF4S2VybmVsQnVmZmVyQmluZENvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4
VGVzc2VsbGF0aW9uRmFjdG9yXywKKyAgICAic2V0TWF4VGVzc2VsbGF0aW9uRmFjdG9yOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXBfLAor
ICAgICJzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldE1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudF8sCisgICAgInNldE1heFZlcnRl
eEFtcGxpZmljYXRpb25Db3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heFZlcnRl
eEJ1ZmZlckJpbmRDb3VudF8sCisgICAgInNldE1heFZlcnRleEJ1ZmZlckJpbmRDb3VudDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heFZlcnRleENhbGxTdGFja0RlcHRoXywKKyAgICAi
c2V0TWF4VmVydGV4Q2FsbFN0YWNrRGVwdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRN
aW5GaWx0ZXJfLAorICAgICJzZXRNaW5GaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRNaXBGaWx0ZXJfLAorICAgICJzZXRNaXBGaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRNaXBtYXBMZXZlbENvdW50XywKKyAgICAic2V0TWlwbWFwTGV2ZWxDb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvbkVuZEJvcmRlck1vZGVfLAorICAgICJzZXRNb3Rp
b25FbmRCb3JkZXJNb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9uRW5kVGlt
ZV8sCisgICAgInNldE1vdGlvbkVuZFRpbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRN
b3Rpb25LZXlmcmFtZUNvdW50XywKKyAgICAic2V0TW90aW9uS2V5ZnJhbWVDb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvblN0YXJ0Qm9yZGVyTW9kZV8sCisgICAgInNldE1v
dGlvblN0YXJ0Qm9yZGVyTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvblN0
YXJ0VGltZV8sCisgICAgInNldE1vdGlvblN0YXJ0VGltZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlcl8sCisgICAgInNldE1vdGlvblRyYW5zZm9ybUJ1
ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlck9m
ZnNldF8sCisgICAgInNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldE1vdGlvblRyYW5zZm9ybUNvdW50XywKKyAgICAic2V0TW90aW9uVHJh
bnNmb3JtQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNdXRhYmlsaXR5XywKKyAg
ICAic2V0TXV0YWJpbGl0eToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE5hbWVfLAorICAg
ICJzZXROYW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Tm9kZXNfLAorICAgICJzZXRO
b2RlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE5vcm1hbGl6ZWRDb29yZGluYXRlc18s
CisgICAgInNldE5vcm1hbGl6ZWRDb29yZGluYXRlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfLAorICAgICJzZXRPYmplY3Q6YXRJbmRleGVk
U3Vic2NyaXB0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T2Zmc2V0XywKKyAgICAic2V0
T2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3BhcXVlXywKKyAgICAic2V0T3Bh
cXVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rp
b25GdW5jdGlvbldpdGhTaWduYXR1cmVfYXRJbmRleF8sCisgICAgInNldE9wYXF1ZVRyaWFuZ2xl
SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aFNpZ25h
dHVyZV93aXRoUmFuZ2VfLAorICAgICJzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0
aW9uV2l0aFNpZ25hdHVyZTp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRP
cHRpb25zXywKKyAgICAic2V0T3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE91
dHB1dE5vZGVfLAorICAgICJzZXRPdXRwdXROb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0T3V0cHV0VVJMXywKKyAgICAic2V0T3V0cHV0VVJMOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0UGl4ZWxGb3JtYXRfLAorICAgICJzZXRQaXhlbEZvcm1hdDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFByZWxvYWRlZExpYnJhcmllc18sCisgICAgInNldFByZWxvYWRlZExpYnJh
cmllczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFByZXByb2Nlc3Nvck1hY3Jvc18sCisg
ICAgInNldFByZXByb2Nlc3Nvck1hY3JvczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFBy
ZXNlcnZlSW52YXJpYW5jZV8sCisgICAgInNldFByZXNlcnZlSW52YXJpYW5jZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFByaXZhdGVGdW5jdGlvbnNfLAorICAgICJzZXRQcml2YXRlRnVu
Y3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UHVyZ2VhYmxlU3RhdGVfLAorICAg
ICJzZXRQdXJnZWFibGVTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJBZGRyZXNz
TW9kZV8sCisgICAgInNldFJBZGRyZXNzTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFJhc3RlclNhbXBsZUNvdW50XywKKyAgICAic2V0UmFzdGVyU2FtcGxlQ291bnQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRSYXN0ZXJpemF0aW9uRW5hYmxlZF8sCisgICAgInNldFJhc3Rl
cml6YXRpb25FbmFibGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmFzdGVyaXphdGlv
blJhdGVNYXBfLAorICAgICJzZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFJlYWRNYXNrXywKKyAgICAic2V0UmVhZE1hc2s6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRSZW5kZXJQaXBlbGluZVN0YXRlXywKKyAgICAic2V0UmVuZGVyUGlwZWxp
bmVTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlbmRlclBpcGVsaW5lU3RhdGVf
YXRJbmRleF8sCisgICAgInNldFJlbmRlclBpcGVsaW5lU3RhdGU6YXRJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFJlbmRlclBpcGVsaW5lU3RhdGVzX3dpdGhSYW5nZV8sCisgICAg
InNldFJlbmRlclBpcGVsaW5lU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoXywKKyAgICAic2V0UmVuZGVyVGFyZ2V0QXJy
YXlMZW5ndGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZW5kZXJUYXJnZXRIZWlnaHRf
LAorICAgICJzZXRSZW5kZXJUYXJnZXRIZWlnaHQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRSZW5kZXJUYXJnZXRXaWR0aF8sCisgICAgInNldFJlbmRlclRhcmdldFdpZHRoOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0UmVzb2x2ZURlcHRoUGxhbmVfLAorICAgICJzZXRSZXNvbHZl
RGVwdGhQbGFuZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlc29sdmVMZXZlbF8sCisg
ICAgInNldFJlc29sdmVMZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlc29sdmVT
bGljZV8sCisgICAgInNldFJlc29sdmVTbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFJlc29sdmVUZXh0dXJlXywKKyAgICAic2V0UmVzb2x2ZVRleHR1cmU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRSZXNvdXJjZU9wdGlvbnNfLAorICAgICJzZXRSZXNvdXJjZU9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZXRhaW5lZFJlZmVyZW5jZXNfLAorICAgICJz
ZXRSZXRhaW5lZFJlZmVyZW5jZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZ2JCbGVu
ZE9wZXJhdGlvbl8sCisgICAgInNldFJnYkJsZW5kT3BlcmF0aW9uOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U0FkZHJlc3NNb2RlXywKKyAgICAic2V0U0FkZHJlc3NNb2RlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlQnVmZmVyXywKKyAgICAic2V0U2FtcGxlQnVmZmVy
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlQ291bnRfLAorICAgICJzZXRTYW1w
bGVDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNhbXBsZVBvc2l0aW9uc19jb3Vu
dF8sCisgICAgInNldFNhbXBsZVBvc2l0aW9uczpjb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFNhbXBsZXJTdGF0ZV9hdEluZGV4XywKKyAgICAic2V0U2FtcGxlclN0YXRlOmF0SW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTYW1wbGVyU3RhdGVfbG9kTWluQ2xhbXBf
bG9kTWF4Q2xhbXBfYXRJbmRleF8sCisgICAgInNldFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDps
b2RNYXhDbGFtcDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlclN0
YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBzX3dpdGhSYW5nZV8sCisgICAgInNldFNhbXBs
ZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldFNhbXBs
ZXJTdGF0ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2Npc3NvclJl
Y3RfLAorICAgICJzZXRTY2lzc29yUmVjdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNj
aXNzb3JSZWN0c19jb3VudF8sCisgICAgInNldFNjaXNzb3JSZWN0czpjb3VudDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFNjcmVlblNpemVfLAorICAgICJzZXRTY3JlZW5TaXplOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2lnbmFsZWRWYWx1ZV8sCisgICAgInNldFNpZ25hbGVk
VmFsdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTaXplXywKKyAgICAic2V0U2l6ZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNsaWNlXywKKyAgICAic2V0U2xpY2U6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yXywKKyAgICAic2V0
U291cmNlQWxwaGFCbGVuZEZhY3RvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNvdXJj
ZVJHQkJsZW5kRmFjdG9yXywKKyAgICAic2V0U291cmNlUkdCQmxlbmRGYWN0b3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTcGVjaWFsaXplZE5hbWVfLAorICAgICJzZXRTcGVjaWFsaXpl
ZE5hbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGFnZUluUmVnaW9uXywKKyAgICAi
c2V0U3RhZ2VJblJlZ2lvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0YWdlSW5SZWdp
b25XaXRoSW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJzZXRTdGFn
ZUluUmVnaW9uV2l0aEluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0U3RhZ2VJbnB1dERlc2NyaXB0b3JfLAorICAgICJzZXRTdGFn
ZUlucHV0RGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0YXJ0T2ZFbmNv
ZGVyU2FtcGxlSW5kZXhfLAorICAgICJzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4OiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXhfLAorICAg
ICJzZXRTdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleF8sCisgICAgInNldFN0YXJ0T2ZWZXJ0ZXhTYW1w
bGVJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxBdHRhY2htZW50XywK
KyAgICAic2V0U3RlbmNpbEF0dGFjaG1lbnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRT
dGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0XywKKyAgICAic2V0U3RlbmNpbEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxDb21wYXJlRnVu
Y3Rpb25fLAorICAgICJzZXRTdGVuY2lsQ29tcGFyZUZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U3RlbmNpbEZhaWx1cmVPcGVyYXRpb25fLAorICAgICJzZXRTdGVuY2lsRmFp
bHVyZU9wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxGcm9udFJl
ZmVyZW5jZVZhbHVlX2JhY2tSZWZlcmVuY2VWYWx1ZV8sCisgICAgInNldFN0ZW5jaWxGcm9udFJl
ZmVyZW5jZVZhbHVlOmJhY2tSZWZlcmVuY2VWYWx1ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1ZV8sCisgICAgInNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxSZXNvbHZlRmlsdGVyXywKKyAg
ICAic2V0U3RlbmNpbFJlc29sdmVGaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRT
dGVuY2lsU3RvcmVBY3Rpb25fLAorICAgICJzZXRTdGVuY2lsU3RvcmVBY3Rpb246Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zXywKKyAgICAic2V0
U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0
ZXBGdW5jdGlvbl8sCisgICAgInNldFN0ZXBGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFN0ZXBSYXRlXywKKyAgICAic2V0U3RlcFJhdGU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRTdG9yYWdlTW9kZV8sCisgICAgInNldFN0b3JhZ2VNb2RlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0U3RvcmVBY3Rpb25fLAorICAgICJzZXRTdG9yZUFjdGlvbjoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFN0b3JlQWN0aW9uT3B0aW9uc18sCisgICAgInNldFN0b3Jl
QWN0aW9uT3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0cmlkZV8sCisgICAg
InNldFN0cmlkZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN1cHBvcnRBZGRpbmdCaW5h
cnlGdW5jdGlvbnNfLAorICAgICJzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rp
b25zXywKKyAgICAic2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9u
c18sCisgICAgInNldFN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzXywKKyAgICAic2V0U3Vw
cG9ydEFyZ3VtZW50QnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN1cHBvcnRJ
bmRpcmVjdENvbW1hbmRCdWZmZXJzXywKKyAgICAic2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1
ZmZlcnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTd2l6emxlXywKKyAgICAic2V0U3dp
enpsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRBZGRyZXNzTW9kZV8sCisgICAgInNl
dFRBZGRyZXNzTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbkNv
bnRyb2xQb2ludEluZGV4VHlwZV8sCisgICAgInNldFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludElu
ZGV4VHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvckJ1
ZmZlcl9vZmZzZXRfaW5zdGFuY2VTdHJpZGVfLAorICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JC
dWZmZXI6b2Zmc2V0Omluc3RhbmNlU3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0XywKKyAgICAic2V0VGVzc2VsbGF0aW9uRmFjdG9yRm9y
bWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVf
LAorICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZF8sCisgICAgInNldFRlc3NlbGxh
dGlvbkZhY3RvclNjYWxlRW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3Nl
bGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbl8sCisgICAgInNldFRlc3NlbGxhdGlvbkZhY3RvclN0
ZXBGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbk91dHB1
dFdpbmRpbmdPcmRlcl8sCisgICAgInNldFRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVfLAor
ICAgICJzZXRUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0VGV4dHVyZV8sCisgICAgInNldFRleHR1cmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRUZXh0dXJlOmF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRUZXh0dXJlVHlwZV8sCisgICAgInNldFRleHR1cmVUeXBlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGV4dHVyZXNfd2l0aFJhbmdlXywKKyAgICAic2V0
VGV4dHVyZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGhyZWFkR3Jv
dXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGhfLAorICAgICJzZXRUaHJlYWRH
cm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoXywKKyAgICAic2V0VGhyZWFkZ3Jv
dXBNZW1vcnlMZW5ndGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaHJlYWRncm91cE1l
bW9yeUxlbmd0aF9hdEluZGV4XywKKyAgICAic2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGg6YXRJ
bmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3Ro
X29mZnNldF9hdEluZGV4XywKKyAgICAic2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGg6b2Zmc2V0
OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaHJlYWRncm91cFNpemVNYXRj
aGVzVGlsZVNpemVfLAorICAgICJzZXRUaHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemU6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVm
ZmVySW5kZXhfLAorICAgICJzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVmZmVySW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0
aW9uc18sCisgICAgInNldFRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0VGlsZUJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8sCisgICAgInNldFRp
bGVCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxl
QnVmZmVyT2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRUaWxlQnVmZmVyT2Zmc2V0OmF0SW5kZXg6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQnVmZmVyc19vZmZzZXRzX3dpdGhSYW5n
ZV8sCisgICAgInNldFRpbGVCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0VGlsZUJ5dGVzX2xlbmd0aF9hdEluZGV4XywKKyAgICAic2V0VGlsZUJ5
dGVzOmxlbmd0aDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZUZ1bmN0
aW9uXywKKyAgICAic2V0VGlsZUZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VGlsZUhlaWdodF8sCisgICAgInNldFRpbGVIZWlnaHQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XywKKyAgICAi
c2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoQnVm
ZmVyUmFuZ2VfLAorICAgICJzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1
ZmZlclJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9h
dEluZGV4XywKKyAgICAic2V0VGlsZVNhbXBsZXJTdGF0ZTphdEluZGV4OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9h
dEluZGV4XywKKyAgICAic2V0VGlsZVNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RNYXhDbGFt
cDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZXNf
bG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfLAorICAgICJzZXRUaWxlU2FtcGxl
clN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldFRp
bGVTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRp
bGVUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRUaWxlVGV4dHVyZTphdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVRleHR1cmVzX3dpdGhSYW5nZV8sCisgICAgInNldFRp
bGVUZXh0dXJlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlVmlz
aWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldFRpbGVWaXNpYmxlRnVu
Y3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGls
ZVZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRUaWxlVmlz
aWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFRpbGVXaWR0aF8sCisgICAgInNldFRpbGVXaWR0aDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFRyaWFuZ2xlQ291bnRfLAorICAgICJzZXRUcmlhbmdsZUNvdW50OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VHJpYW5nbGVGaWxsTW9kZV8sCisgICAgInNldFRyaWFuZ2xl
RmlsbE1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUeXBlXywKKyAgICAic2V0VHlw
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFVybF8sCisgICAgInNldFVybDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFVzYWdlXywKKyAgICAic2V0VXNhZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZmZXJJbmRl
eF8sCisgICAgInNldFZlcnRleEFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9u
c18sCisgICAgInNldFZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfdmlld01hcHBpbmdzXywK
KyAgICAic2V0VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50OnZpZXdNYXBwaW5nczoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcl8sCisgICAgInNldFZlcnRleEJ1ZmZlcjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8s
CisgICAgInNldFZlcnRleEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFZlcnRleEJ1ZmZlck9mZnNldF8sCisgICAgInNldFZlcnRleEJ1ZmZlck9mZnNl
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlck9mZnNldF9hdEluZGV4
XywKKyAgICAic2V0VmVydGV4QnVmZmVyT2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRWZXJ0ZXhCdWZmZXJzXywKKyAgICAic2V0VmVydGV4QnVmZmVyczoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfLAor
ICAgICJzZXRWZXJ0ZXhCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0VmVydGV4Qnl0ZXNfbGVuZ3RoX2F0SW5kZXhfLAorICAgICJzZXRWZXJ0ZXhC
eXRlczpsZW5ndGg6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleERl
c2NyaXB0b3JfLAorICAgICJzZXRWZXJ0ZXhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0VmVydGV4RnVuY3Rpb25fLAorICAgICJzZXRWZXJ0ZXhGdW5jdGlvbjoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRC
dWZmZXJJbmRleF8sCisgICAgInNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRC
dWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldFZlcnRleEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFZlcnRleExpbmtlZEZ1bmN0aW9uc18sCisgICAgInNldFZlcnRleExpbmtlZEZ1bmN0
aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFByZWxvYWRlZExpYnJhcmll
c18sCisgICAgInNldFZlcnRleFByZWxvYWRlZExpYnJhcmllczoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZV9hdEluZGV4XywKKyAgICAic2V0VmVydGV4U2Ft
cGxlclN0YXRlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhTYW1w
bGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRleF8sCisgICAgInNldFZlcnRl
eFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RNYXhDbGFtcDphdEluZGV4OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4
Q2xhbXBzX3dpdGhSYW5nZV8sCisgICAgInNldFZlcnRleFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xh
bXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRW
ZXJ0ZXhTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldFZlcnRleFNhbXBsZXJTdGF0
ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U3RyaWRlXywK
KyAgICAic2V0VmVydGV4U3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4
VGV4dHVyZV9hdEluZGV4XywKKyAgICAic2V0VmVydGV4VGV4dHVyZTphdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4VGV4dHVyZXNfd2l0aFJhbmdlXywKKyAgICAic2V0
VmVydGV4VGV4dHVyZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVy
dGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldFZlcnRleFZp
c2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXywKKyAgICAi
c2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFZpZXdwb3J0XywKKyAgICAic2V0Vmlld3BvcnQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRWaWV3cG9ydHNfY291bnRfLAorICAgICJzZXRWaWV3cG9ydHM6
Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaXNpYmlsaXR5UmVzdWx0QnVmZmVy
XywKKyAgICAic2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFZpc2liaWxpdHlSZXN1bHRNb2RlX29mZnNldF8sCisgICAgInNldFZpc2liaWxpdHlS
ZXN1bHRNb2RlOm9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZpc2libGVGdW5j
dGlvblRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTph
dEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9u
VGFibGVfYXRJbmRleF8sCisgICAgInNldFZpc2libGVGdW5jdGlvblRhYmxlOmF0SW5kZXg6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZl
clJhbmdlXywKKyAgICAic2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZpc2libGVGdW5jdGlvblRhYmxlc193aXRoUmFu
Z2VfLAorICAgICJzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aFJhbmdlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0V2lkdGhfLAorICAgICJzZXRXaWR0aDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFdyaXRlTWFza18sCisgICAgInNldFdyaXRlTWFzazoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNoYXJlZENhcHR1cmVNYW5hZ2VyLAorICAgICJzaGFyZWRDYXB0dXJlTWFu
YWdlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2lnbmFsZWRWYWx1ZSwKKyAgICAic2lnbmFs
ZWRWYWx1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2l6ZSwKKyAgICAic2l6ZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2xpY2UsCisgICAgInNsaWNlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzb3VyY2VBbHBoYUJsZW5kRmFjdG9yLAorICAgICJzb3VyY2VBbHBoYUJsZW5kRmFjdG9y
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzb3VyY2VSR0JCbGVuZEZhY3RvciwKKyAgICAic291
cmNlUkdCQmxlbmRGYWN0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNwYXJzZVRpbGVTaXpl
SW5CeXRlcywKKyAgICAic3BhcnNlVGlsZVNpemVJbkJ5dGVzIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzcGFyc2VUaWxlU2l6ZVdpdGhUZXh0dXJlVHlwZV9waXhlbEZvcm1hdF9zYW1wbGVDb3Vu
dF8sCisgICAgInNwYXJzZVRpbGVTaXplV2l0aFRleHR1cmVUeXBlOnBpeGVsRm9ybWF0OnNhbXBs
ZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3BlY2lhbGl6ZWROYW1lLAorICAgICJz
cGVjaWFsaXplZE5hbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YWdlSW5wdXRBdHRyaWJ1
dGVzLAorICAgICJzdGFnZUlucHV0QXR0cmlidXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c3RhZ2VJbnB1dERlc2NyaXB0b3IsCisgICAgInN0YWdlSW5wdXREZXNjcmlwdG9yIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciwKKyAgICAic3RhZ2VJ
bnB1dE91dHB1dERlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YXJ0Q2FwdHVy
ZVdpdGhDb21tYW5kUXVldWVfLAorICAgICJzdGFydENhcHR1cmVXaXRoQ29tbWFuZFF1ZXVlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3JfZXJyb3Jf
LAorICAgICJzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHN0YXJ0Q2FwdHVyZVdpdGhEZXZpY2VfLAorICAgICJzdGFydENhcHR1cmVXaXRo
RGV2aWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRDYXB0dXJlV2l0aFNjb3BlXywK
KyAgICAic3RhcnRDYXB0dXJlV2l0aFNjb3BlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3Rh
cnRPZkVuY29kZXJTYW1wbGVJbmRleCwKKyAgICAic3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgsCisgICAg
InN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFy
dE9mVmVydGV4U2FtcGxlSW5kZXgsCisgICAgInN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgsCisgICAg
InN0YXRpY1RocmVhZGdyb3VwTWVtb3J5TGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dGF0dXMsCisgICAgInN0YXR1cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlbmNpbEF0dGFj
aG1lbnQsCisgICAgInN0ZW5jaWxBdHRhY2htZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0LAorICAgICJzdGVuY2lsQXR0YWNobWVudFBpeGVs
Rm9ybWF0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uLAor
ICAgICJzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGVu
Y2lsRmFpbHVyZU9wZXJhdGlvbiwKKyAgICAic3RlbmNpbEZhaWx1cmVPcGVyYXRpb24iKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHN0ZW5jaWxSZXNvbHZlRmlsdGVyLAorICAgICJzdGVuY2lsUmVz
b2x2ZUZpbHRlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlcEZ1bmN0aW9uLAorICAgICJz
dGVwRnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0ZXBSYXRlLAorICAgICJzdGVw
UmF0ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RvcENhcHR1cmUsCisgICAgInN0b3BDYXB0
dXJlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdG9yYWdlTW9kZSwKKyAgICAic3RvcmFnZU1v
ZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0b3JlQWN0aW9uLAorICAgICJzdG9yZUFjdGlv
biIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RvcmVBY3Rpb25PcHRpb25zLAorICAgICJzdG9y
ZUFjdGlvbk9wdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0cmlkZSwKKyAgICAic3Ry
aWRlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdHJ1Y3RUeXBlLAorICAgICJzdHJ1Y3RUeXBl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zLAor
ICAgICJzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMsCisgICAgInN1cHBvcnRBZGRp
bmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9y
dEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucywKKyAgICAic3VwcG9ydEFkZGluZ1ZlcnRleEJp
bmFyeUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydEFyZ3VtZW50QnVm
ZmVycywKKyAgICAic3VwcG9ydEFyZ3VtZW50QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMsCisgICAgInN1cHBvcnRJbmRpcmVjdENv
bW1hbmRCdWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0czMyQml0RmxvYXRG
aWx0ZXJpbmcsCisgICAgInN1cHBvcnRzMzJCaXRGbG9hdEZpbHRlcmluZyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc3VwcG9ydHMzMkJpdE1TQUEsCisgICAgInN1cHBvcnRzMzJCaXRNU0FBIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uLAorICAg
ICJzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dXBwb3J0c0NvdW50ZXJTYW1wbGluZ18sCisgICAgInN1cHBvcnRzQ291bnRlclNhbXBsaW5nOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNEZXN0aW5hdGlvbl8sCisgICAgInN1cHBv
cnRzRGVzdGluYXRpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c0R5bmFtaWNM
aWJyYXJpZXMsCisgICAgInN1cHBvcnRzRHluYW1pY0xpYnJhcmllcyIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc3VwcG9ydHNGYW1pbHlfLAorICAgICJzdXBwb3J0c0ZhbWlseToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzRmVhdHVyZVNldF8sCisgICAgInN1cHBvcnRzRmVhdHVy
ZVNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVycywK
KyAgICAic3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyLAorICAgICJzdXBwb3J0c0Z1bmN0aW9u
UG9pbnRlcnNGcm9tUmVuZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c1ByaW1p
dGl2ZU1vdGlvbkJsdXIsCisgICAgInN1cHBvcnRzUHJpbWl0aXZlTW90aW9uQmx1ciIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9uLAorICAgICJz
dXBwb3J0c1B1bGxNb2RlbEludGVycG9sYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1
cHBvcnRzUXVlcnlUZXh0dXJlTE9ELAorICAgICJzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhMYXll
ckNvdW50XywKKyAgICAic3VwcG9ydHNSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhMYXllckNvdW50
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNSYXl0cmFjaW5nLAorICAgICJzdXBw
b3J0c1JheXRyYWNpbmciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzUmF5dHJhY2lu
Z0Zyb21SZW5kZXIsCisgICAgInN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5kZXIiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzUmVuZGVyRHluYW1pY0xpYnJhcmllcywKKyAgICAic3Vw
cG9ydHNSZW5kZXJEeW5hbWljTGlicmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBw
b3J0c1NoYWRlckJhcnljZW50cmljQ29vcmRpbmF0ZXMsCisgICAgInN1cHBvcnRzU2hhZGVyQmFy
eWNlbnRyaWNDb29yZGluYXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNUZXh0
dXJlU2FtcGxlQ291bnRfLAorICAgICJzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzVmVydGV4QW1wbGlmaWNhdGlvbkNvdW50XywKKyAg
ICAic3VwcG9ydHNWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzd2l6emxlLAorICAgICJzd2l6emxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzeW5j
aHJvbml6ZVJlc291cmNlXywKKyAgICAic3luY2hyb25pemVSZXNvdXJjZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHN5bmNocm9uaXplVGV4dHVyZV9zbGljZV9sZXZlbF8sCisgICAgInN5bmNo
cm9uaXplVGV4dHVyZTpzbGljZTpsZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRBZGRy
ZXNzTW9kZSwKKyAgICAidEFkZHJlc3NNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0YWls
U2l6ZUluQnl0ZXMsCisgICAgInRhaWxTaXplSW5CeXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwodGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlLAorICAgICJ0ZXNzZWxsYXRpb25D
b250cm9sUG9pbnRJbmRleFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlv
bkZhY3RvckZvcm1hdCwKKyAgICAidGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTCh0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24sCisgICAgInRlc3Nl
bGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGVzc2Vs
bGF0aW9uT3V0cHV0V2luZGluZ09yZGVyLAorICAgICJ0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5n
T3JkZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUs
CisgICAgInRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHRleHR1cmUsCisgICAgInRleHR1cmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRleHR1cmUy
RERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXRfd2lkdGhfaGVpZ2h0X21pcG1hcHBlZF8sCisgICAg
InRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6d2lkdGg6aGVpZ2h0Om1pcG1hcHBl
ZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRleHR1cmVCYXJyaWVyLAorICAgICJ0ZXh0dXJl
QmFycmllciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZUJ1ZmZlckRlc2NyaXB0b3JX
aXRoUGl4ZWxGb3JtYXRfd2lkdGhfcmVzb3VyY2VPcHRpb25zX3VzYWdlXywKKyAgICAidGV4dHVy
ZUJ1ZmZlckRlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6d2lkdGg6cmVzb3VyY2VPcHRpb25zOnVz
YWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0aFBp
eGVsRm9ybWF0X3NpemVfbWlwbWFwcGVkXywKKyAgICAidGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0
aFBpeGVsRm9ybWF0OnNpemU6bWlwbWFwcGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4
dHVyZURhdGFUeXBlLAorICAgICJ0ZXh0dXJlRGF0YVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHRleHR1cmVSZWZlcmVuY2VUeXBlLAorICAgICJ0ZXh0dXJlUmVmZXJlbmNlVHlwZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZVR5cGUsCisgICAgInRleHR1cmVUeXBlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRFeGVjdXRpb25XaWR0aCwKKyAgICAidGhyZWFkRXhl
Y3V0aW9uV2lkdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRocmVhZEdyb3VwU2l6ZUlzTXVs
dGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoLAorICAgICJ0aHJlYWRHcm91cFNpemVJc011bHRp
cGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGhyZWFk
Z3JvdXBNZW1vcnlBbGlnbm1lbnQsCisgICAgInRocmVhZGdyb3VwTWVtb3J5QWxpZ25tZW50Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRncm91cE1lbW9yeURhdGFTaXplLAorICAgICJ0
aHJlYWRncm91cE1lbW9yeURhdGFTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRn
cm91cE1lbW9yeUxlbmd0aCwKKyAgICAidGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSwKKyAgICAidGhy
ZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aWxl
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywKKyAgICAidGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5j
dGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVBcmd1bWVudHMsCisgICAgInRpbGVB
cmd1bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVCdWZmZXJzLAorICAgICJ0aWxl
QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGlsZUZ1bmN0aW9uLAorICAgICJ0aWxl
RnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVIZWlnaHQsCisgICAgInRpbGVI
ZWlnaHQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVXaWR0aCwKKyAgICAidGlsZVdpZHRo
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0cmlhbmdsZUNvdW50LAorICAgICJ0cmlhbmdsZUNv
dW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0eXBlLAorICAgICJ0eXBlIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTCh1cGRhdGVGZW5jZV8sCisgICAgInVwZGF0ZUZlbmNlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodXBkYXRlRmVuY2VfYWZ0ZXJTdGFnZXNfLAorICAgICJ1cGRhdGVGZW5j
ZTphZnRlclN0YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVwZGF0ZVRleHR1cmVNYXBw
aW5nX21vZGVfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJ1cGRh
dGVUZXh0dXJlTWFwcGluZzptb2RlOmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXBkYXRlVGV4dHVyZU1hcHBpbmdfbW9kZV9yZWdp
b25fbWlwTGV2ZWxfc2xpY2VfLAorICAgICJ1cGRhdGVUZXh0dXJlTWFwcGluZzptb2RlOnJlZ2lv
bjptaXBMZXZlbDpzbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVwZGF0ZVRleHR1cmVN
YXBwaW5nc19tb2RlX3JlZ2lvbnNfbWlwTGV2ZWxzX3NsaWNlc19udW1SZWdpb25zXywKKyAgICAi
dXBkYXRlVGV4dHVyZU1hcHBpbmdzOm1vZGU6cmVnaW9uczptaXBMZXZlbHM6c2xpY2VzOm51bVJl
Z2lvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1cmwsCisgICAgInVybCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodXNhZ2UsCisgICAgInVzYWdlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TCh1c2VIZWFwXywKKyAgICAidXNlSGVhcDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZUhl
YXBfc3RhZ2VzXywKKyAgICAidXNlSGVhcDpzdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TCh1c2VIZWFwc19jb3VudF8sCisgICAgInVzZUhlYXBzOmNvdW50OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwodXNlSGVhcHNfY291bnRfc3RhZ2VzXywKKyAgICAidXNlSGVhcHM6Y291bnQ6c3Rh
Z2VzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlUmVzb3VyY2VfdXNhZ2VfLAorICAgICJ1
c2VSZXNvdXJjZTp1c2FnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZVJlc291cmNlX3Vz
YWdlX3N0YWdlc18sCisgICAgInVzZVJlc291cmNlOnVzYWdlOnN0YWdlczoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHVzZVJlc291cmNlc19jb3VudF91c2FnZV8sCisgICAgInVzZVJlc291cmNl
czpjb3VudDp1c2FnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZVJlc291cmNlc19jb3Vu
dF91c2FnZV9zdGFnZXNfLAorICAgICJ1c2VSZXNvdXJjZXM6Y291bnQ6dXNhZ2U6c3RhZ2VzOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlZFNpemUsCisgICAgInVzZWRTaXplIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLAorICAgICJ2
ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2
ZXJ0ZXhBcmd1bWVudHMsCisgICAgInZlcnRleEFyZ3VtZW50cyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodmVydGV4QXR0cmlidXRlcywKKyAgICAidmVydGV4QXR0cmlidXRlcyIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodmVydGV4QnVmZmVyLAorICAgICJ2ZXJ0ZXhCdWZmZXIiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHZlcnRleEJ1ZmZlck9mZnNldCwKKyAgICAidmVydGV4QnVmZmVyT2Zm
c2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhCdWZmZXJzLAorICAgICJ2ZXJ0ZXhC
dWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhEZXNjcmlwdG9yLAorICAgICJ2
ZXJ0ZXhEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhGdW5jdGlvbiwK
KyAgICAidmVydGV4RnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleExpbmtl
ZEZ1bmN0aW9ucywKKyAgICAidmVydGV4TGlua2VkRnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTCh2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMsCisgICAgInZlcnRleFByZWxvYWRlZExp
YnJhcmllcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGV4U3RyaWRlLAorICAgICJ2ZXJ0
ZXhTdHJpZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRpY2FsLAorICAgICJ2ZXJ0aWNh
bCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGljYWxTYW1wbGVTdG9yYWdlLAorICAgICJ2
ZXJ0aWNhbFNhbXBsZVN0b3JhZ2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZpc2liaWxpdHlS
ZXN1bHRCdWZmZXIsCisgICAgInZpc2liaWxpdHlSZXN1bHRCdWZmZXIiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciwKKyAgICAidmlzaWJsZUZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0Rm9yRmVu
Y2VfLAorICAgICJ3YWl0Rm9yRmVuY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0Rm9y
RmVuY2VfYmVmb3JlU3RhZ2VzXywKKyAgICAid2FpdEZvckZlbmNlOmJlZm9yZVN0YWdlczoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHdhaXRVbnRpbENvbXBsZXRlZCwKKyAgICAid2FpdFVudGls
Q29tcGxldGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0VW50aWxTY2hlZHVsZWQsCisg
ICAgIndhaXRVbnRpbFNjaGVkdWxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwod2lkdGgsCisg
ICAgIndpZHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3cml0ZUNvbXBhY3RlZEFjY2VsZXJh
dGlvblN0cnVjdHVyZVNpemVfdG9CdWZmZXJfb2Zmc2V0XywKKyAgICAid3JpdGVDb21wYWN0ZWRB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZV90b0J1ZmZl
cl9vZmZzZXRfc2l6ZURhdGFUeXBlXywKKyAgICAid3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDpzaXplRGF0YVR5cGU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTCh3cml0ZU1hc2ssCisgICAgIndyaXRlTWFzayIpOworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWIyYzNlMTJmZTQ4MDc5YmU5NDBhYjgzZTI2OWQ4YmJmMTVlNTljMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFwLmhwcApAQCAt
MCwwICsxLDI4MiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWV0YWwvTVRMSGVhcC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNs
dWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisj
aW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEhlYXAu
aHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01U
TF9FTlVNKE5TOjpJbnRlZ2VyLCBIZWFwVHlwZSkgeworICAgIEhlYXBUeXBlQXV0b21hdGljID0g
MCwKKyAgICBIZWFwVHlwZVBsYWNlbWVudCA9IDEsCisgICAgSGVhcFR5cGVTcGFyc2UgPSAyLAor
fTsKKworY2xhc3MgSGVhcERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SGVhcERlc2Ny
aXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEhlYXBEZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgSGVhcERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgIHNpemUoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFNpemUoTlM6OlVJbnRlZ2VyIHNpemUpOworCisgICAgTVRM
OjpTdG9yYWdlTW9kZSAgICAgICAgICAgICBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBz
dG9yYWdlTW9kZSk7CisKKyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAgICAgICAgIGNwdUNhY2hl
TW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3B1Q2Fj
aGVNb2RlKE1UTDo6Q1BVQ2FjaGVNb2RlIGNwdUNhY2hlTW9kZSk7CisKKyAgICBNVEw6OkhhemFy
ZFRyYWNraW5nTW9kZSAgICAgIGhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGF6YXJkVHJhY2tpbmdNb2RlKE1UTDo6SGF6YXJk
VHJhY2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSk7CisKKyAgICBNVEw6OlJlc291cmNlT3B0
aW9ucyAgICAgICAgIHJlc291cmNlT3B0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0UmVzb3VyY2VPcHRpb25zKE1UTDo6UmVzb3VyY2VPcHRpb25zIHJl
c291cmNlT3B0aW9ucyk7CisKKyAgICBNVEw6OkhlYXBUeXBlICAgICAgICAgICAgICAgIHR5cGUo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldFR5cGUoTVRMOjpI
ZWFwVHlwZSB0eXBlKTsKK307CisKK2NsYXNzIEhlYXAgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5n
PEhlYXA+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgbGFiZWwoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCk7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgICBkZXZpY2UoKSBjb25z
dDsKKworICAgIE1UTDo6U3RvcmFnZU1vZGUgICAgICAgIHN0b3JhZ2VNb2RlKCkgY29uc3Q7CisK
KyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAgICBjcHVDYWNoZU1vZGUoKSBjb25zdDsKKworICAg
IE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0OworCisg
ICAgTVRMOjpSZXNvdXJjZU9wdGlvbnMgICAgcmVzb3VyY2VPcHRpb25zKCkgY29uc3Q7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICBzaXplKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICB1c2VkU2l6ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgY3VycmVudEFsbG9jYXRlZFNpemUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgIG1heEF2YWlsYWJsZVNpemUoTlM6OlVJbnRlZ2VyIGFsaWdubWVudCk7CisKKyAg
ICBjbGFzcyBCdWZmZXIqICAgICAgICAgICBuZXdCdWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0aCwg
TVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAg
ICAgICBuZXdUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjKTsKKwor
ICAgIE1UTDo6UHVyZ2VhYmxlU3RhdGUgICAgIHNldFB1cmdlYWJsZVN0YXRlKE1UTDo6UHVyZ2Vh
YmxlU3RhdGUgc3RhdGUpOworCisgICAgTVRMOjpIZWFwVHlwZSAgICAgICAgICAgdHlwZSgpIGNv
bnN0OworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgbmV3QnVmZmVyKE5TOjpVSW50ZWdl
ciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMsIE5TOjpVSW50ZWdlciBvZmZz
ZXQpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgbmV3VGV4dHVyZShjb25zdCBjbGFz
cyBUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG9mZnNldCk7Cit9
OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkhlYXBE
ZXNjcmlwdG9yKiBNVEw6OkhlYXBEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6SGVhcERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRM
SGVhcERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OkhlYXBEZXNjcmlwdG9yKiBNVEw6OkhlYXBEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkhlYXBEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9w
ZXJ0eTogc2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SGVhcERlc2NyaXB0b3I6
OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzaXplKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0U2l6ZShOUzo6VUludGVnZXIgc2l6ZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2l6
ZV8pLCBzaXplKTsKK30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VNb2RlCitfTVRMX0lOTElORSBN
VEw6OlN0b3JhZ2VNb2RlIE1UTDo6SGVhcERlc2NyaXB0b3I6OnN0b3JhZ2VNb2RlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JhZ2VNb2RlPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN0b3JhZ2VNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBzdG9y
YWdlTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0U3RvcmFnZU1vZGVfKSwgc3RvcmFnZU1vZGUpOworfQorCisvLyBwcm9wZXJ0
eTogY3B1Q2FjaGVNb2RlCitfTVRMX0lOTElORSBNVEw6OkNQVUNhY2hlTW9kZSBNVEw6OkhlYXBE
ZXNjcmlwdG9yOjpjcHVDYWNoZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6Q1BVQ2FjaGVNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNwdUNh
Y2hlTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6OnNl
dENwdUNhY2hlTW9kZShNVEw6OkNQVUNhY2hlTW9kZSBjcHVDYWNoZU1vZGUpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENwdUNhY2hl
TW9kZV8pLCBjcHVDYWNoZU1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogaGF6YXJkVHJhY2tpbmdN
b2RlCitfTVRMX0lOTElORSBNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBNVEw6OkhlYXBEZXNjcmlw
dG9yOjpoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGhhemFyZFRyYWNraW5nTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERl
c2NyaXB0b3I6OnNldEhhemFyZFRyYWNraW5nTW9kZShNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBo
YXphcmRUcmFja2luZ01vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEhhemFyZFRyYWNraW5nTW9kZV8pLCBoYXphcmRUcmFja2lu
Z01vZGUpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb3VyY2VPcHRpb25zCitfTVRMX0lOTElORSBN
VEw6OlJlc291cmNlT3B0aW9ucyBNVEw6OkhlYXBEZXNjcmlwdG9yOjpyZXNvdXJjZU9wdGlvbnMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VP
cHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc291cmNlT3B0aW9ucykpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6OnNldFJlc291cmNlT3B0aW9ucyhN
VEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc291cmNlT3B0aW9uc18p
LCByZXNvdXJjZU9wdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogdHlwZQorX01UTF9JTkxJTkUg
TVRMOjpIZWFwVHlwZSBNVEw6OkhlYXBEZXNjcmlwdG9yOjp0eXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkhlYXBUeXBlPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXBEZXNjcmlwdG9y
OjpzZXRUeXBlKE1UTDo6SGVhcFR5cGUgdHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHlwZV8pLCB0eXBlKTsKK30KKworLy8g
cHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkhlYXA6OmxhYmVs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6SGVhcDo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxh
YmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2Uq
IE1UTDo6SGVhcDo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBzdG9yYWdlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTdG9yYWdlTW9kZSBN
VEw6OkhlYXA6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlN0b3JhZ2VNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3JhZ2VN
b2RlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjcHVDYWNoZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6
Q1BVQ2FjaGVNb2RlIE1UTDo6SGVhcDo6Y3B1Q2FjaGVNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNQVUNhY2hlTW9kZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChjcHVDYWNoZU1vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IGhhemFyZFRyYWNraW5n
TW9kZQorX01UTF9JTkxJTkUgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgTVRMOjpIZWFwOjpoYXph
cmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhhemFyZFRy
YWNraW5nTW9kZSkpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb3VyY2VPcHRpb25zCitfTVRMX0lO
TElORSBNVEw6OlJlc291cmNlT3B0aW9ucyBNVEw6OkhlYXA6OnJlc291cmNlT3B0aW9ucygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZU9wdGlv
bnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzb3VyY2VPcHRpb25zKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBzaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpIZWFwOjpzaXplKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2l6ZSkpOworfQorCisvLyBwcm9wZXJ0eTogdXNlZFNpemUK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkhlYXA6OnVzZWRTaXplKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodXNlZFNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IGN1cnJlbnRBbGxvY2F0
ZWRTaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpIZWFwOjpjdXJyZW50QWxsb2Nh
dGVkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGN1cnJlbnRBbGxvY2F0ZWRTaXplKSk7Cit9
CisKKy8vIG1ldGhvZDogbWF4QXZhaWxhYmxlU2l6ZVdpdGhBbGlnbm1lbnQ6CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpIZWFwOjptYXhBdmFpbGFibGVTaXplKE5TOjpVSW50ZWdlciBh
bGlnbm1lbnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heEF2YWlsYWJsZVNpemVXaXRoQWxpZ25tZW50Xyks
IGFsaWdubWVudCk7Cit9CisKKy8vIG1ldGhvZDogbmV3QnVmZmVyV2l0aExlbmd0aDpvcHRpb25z
OgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6SGVhcDo6bmV3QnVmZmVyKE5TOjpVSW50
ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9uc18pLCBsZW5ndGgsIG9wdGlvbnMpOworfQorCisv
LyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6VGV4
dHVyZSogTVRMOjpIZWFwOjpuZXdUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3Iq
IGRlc2MpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3JfKSwgZGVzYyk7
Cit9CisKKy8vIG1ldGhvZDogc2V0UHVyZ2VhYmxlU3RhdGU6CitfTVRMX0lOTElORSBNVEw6OlB1
cmdlYWJsZVN0YXRlIE1UTDo6SGVhcDo6c2V0UHVyZ2VhYmxlU3RhdGUoTVRMOjpQdXJnZWFibGVT
dGF0ZSBzdGF0ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlB1cmdl
YWJsZVN0YXRlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFB1cmdlYWJsZVN0YXRlXyksIHN0
YXRlKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5MSU5FIE1UTDo6SGVhcFR5cGUg
TVRMOjpIZWFwOjp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkhlYXBUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8g
bWV0aG9kOiBuZXdCdWZmZXJXaXRoTGVuZ3RoOm9wdGlvbnM6b2Zmc2V0OgorX01UTF9JTkxJTkUg
TVRMOjpCdWZmZXIqIE1UTDo6SGVhcDo6bmV3QnVmZmVyKE5TOjpVSW50ZWdlciBsZW5ndGgsIE1U
TDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMsIE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9uc19vZmZzZXRfKSwgbGVuZ3RoLCBvcHRp
b25zLCBvZmZzZXQpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjpv
ZmZzZXQ6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6SGVhcDo6bmV3VGV4dHVyZShj
b25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6VUludGVnZXIgb2Zm
c2V0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yX29mZnNldF8pLCBk
ZXNjcmlwdG9yLCBvZmZzZXQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YWEzYTM1OTc3YjAxZTJiMDBiMjZhMThhOTUyNzM0ZDU1MzdhZDUxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTElu
ZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAKQEAgLTAsMCArMSwxODkgQEAKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEluZGlyZWN0
Q29tbWFuZEJ1ZmZlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFuZEJ1
ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7
CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBJbmRpcmVjdENvbW1hbmRUeXBlKSB7CisgICAg
SW5kaXJlY3RDb21tYW5kVHlwZURyYXcgPSAxLAorICAgIEluZGlyZWN0Q29tbWFuZFR5cGVEcmF3
SW5kZXhlZCA9IDIsCisgICAgSW5kaXJlY3RDb21tYW5kVHlwZURyYXdQYXRjaGVzID0gNCwKKyAg
ICBJbmRpcmVjdENvbW1hbmRUeXBlRHJhd0luZGV4ZWRQYXRjaGVzID0gOCwKKyAgICBJbmRpcmVj
dENvbW1hbmRUeXBlQ29uY3VycmVudERpc3BhdGNoID0gMzIsCisgICAgSW5kaXJlY3RDb21tYW5k
VHlwZUNvbmN1cnJlbnREaXNwYXRjaFRocmVhZHMgPSA2NCwKK307CisKK3N0cnVjdCBJbmRpcmVj
dENvbW1hbmRCdWZmZXJFeGVjdXRpb25SYW5nZQoreworICAgIHVpbnQzMl90IGxvY2F0aW9uOwor
ICAgIHVpbnQzMl90IGxlbmd0aDsKK30gX01UTF9QQUNLRUQ7CisKK2NsYXNzIEluZGlyZWN0Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SW5kaXJlY3RDb21tYW5k
QnVmZmVyRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgSW5kaXJlY3RD
b21tYW5kQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEluZGlyZWN0Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkluZGlyZWN0
Q29tbWFuZFR5cGUgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZFR5cGVzKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbW1h
bmRUeXBlcyhNVEw6OkluZGlyZWN0Q29tbWFuZFR5cGUgY29tbWFuZFR5cGVzKTsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0UGlwZWxp
bmVTdGF0ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZShib29sIGluaGVyaXRQaXBlbGluZVN0
YXRlKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmhlcml0QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRJbmhlcml0QnVmZmVycyhib29sIGluaGVyaXRCdWZmZXJz
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4VmVydGV4QnVmZmVyQmluZENvdW50KE5T
OjpVSW50ZWdlciBtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEZyYWdtZW50QnVmZmVyQmluZENv
dW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldE1heEZyYWdtZW50QnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhGcmFn
bWVudEJ1ZmZlckJpbmRDb3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heEtlcm5l
bEJ1ZmZlckJpbmRDb3VudChOUzo6VUludGVnZXIgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KTsK
K307CisKK2NsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNp
bmc8SW5kaXJlY3RDb21tYW5kQnVmZmVyLCBSZXNvdXJjZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICBzaXplKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNldChOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgY2xhc3Mg
SW5kaXJlY3RSZW5kZXJDb21tYW5kKiAgaW5kaXJlY3RSZW5kZXJDb21tYW5kKE5TOjpVSW50ZWdl
ciBjb21tYW5kSW5kZXgpOworCisgICAgY2xhc3MgSW5kaXJlY3RDb21wdXRlQ29tbWFuZCogaW5k
aXJlY3RDb21wdXRlQ29tbWFuZChOUzo6VUludGVnZXIgY29tbWFuZEluZGV4KTsKK307CisKK30K
KworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6SW5kaXJlY3RDb21t
YW5kQnVmZmVyRGVzY3JpcHRvciogTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9y
OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6SW5kaXJlY3RD
b21tYW5kQnVmZmVyRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExJbmRpcmVjdENvbW1h
bmRCdWZmZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OkluZGlyZWN0Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0
PE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVy
dHk6IGNvbW1hbmRUeXBlcworX01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdENvbW1hbmRUeXBlIE1U
TDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6Y29tbWFuZFR5cGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGlyZWN0Q29tbWFuZFR5
cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZFR5cGVzKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRDb21tYW5k
VHlwZXMoTVRMOjpJbmRpcmVjdENvbW1hbmRUeXBlIGNvbW1hbmRUeXBlcykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tbWFuZFR5
cGVzXyksIGNvbW1hbmRUeXBlcyk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmhlcml0UGlwZWxpbmVT
dGF0ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0
b3I6OmluaGVyaXRQaXBlbGluZVN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluaGVyaXRQaXBlbGluZVN0
YXRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJE
ZXNjcmlwdG9yOjpzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZShib29sIGluaGVyaXRQaXBlbGluZVN0
YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZV8pLCBpbmhlcml0UGlwZWxpbmVTdGF0ZSk7Cit9
CisKKy8vIHByb3BlcnR5OiBpbmhlcml0QnVmZmVycworX01UTF9JTkxJTkUgYm9vbCBNVEw6Oklu
ZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmluaGVyaXRCdWZmZXJzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluaGVyaXRCdWZmZXJzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVj
dENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRJbmhlcml0QnVmZmVycyhib29sIGluaGVyaXRC
dWZmZXJzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRJbmhlcml0QnVmZmVyc18pLCBpbmhlcml0QnVmZmVycyk7Cit9CisKKy8vIHBy
b3BlcnR5OiBtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6Om1heFZlcnRleEJ1ZmZlckJp
bmRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFZlcnRleEJ1ZmZlckJpbmRDb3VudCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3Jp
cHRvcjo6c2V0TWF4VmVydGV4QnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhWZXJ0ZXhC
dWZmZXJCaW5kQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldE1heFZlcnRleEJ1ZmZlckJpbmRDb3VudF8pLCBtYXhWZXJ0ZXhC
dWZmZXJCaW5kQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogbWF4RnJhZ21lbnRCdWZmZXJCaW5k
Q291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZl
ckRlc2NyaXB0b3I6Om1heEZyYWdtZW50QnVmZmVyQmluZENvdW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNldE1heEZyYWdtZW50QnVm
ZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
TWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnRfKSwgbWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQp
OworfQorCisvLyBwcm9wZXJ0eTogbWF4S2VybmVsQnVmZmVyQmluZENvdW50CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjptYXhL
ZXJuZWxCdWZmZXJCaW5kQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhLZXJuZWxCdWZm
ZXJCaW5kQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3I6OnNldE1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudChOUzo6VUludGVn
ZXIgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhLZXJuZWxCdWZmZXJCaW5kQ291bnRf
KSwgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHNpemUKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlcjo6c2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNpemUpKTsKK30KKworLy8gbWV0aG9kOiByZXNldFdpdGhS
YW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXI6OnJlc2V0
KE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwocmVzZXRXaXRoUmFuZ2VfKSwgcmFuZ2UpOworfQorCisvLyBtZXRo
b2Q6IGluZGlyZWN0UmVuZGVyQ29tbWFuZEF0SW5kZXg6CitfTVRMX0lOTElORSBNVEw6OkluZGly
ZWN0UmVuZGVyQ29tbWFuZCogTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXI6OmluZGlyZWN0UmVu
ZGVyQ29tbWFuZChOUzo6VUludGVnZXIgY29tbWFuZEluZGV4KQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChpbmRpcmVjdFJlbmRlckNvbW1hbmRBdEluZGV4XyksIGNvbW1hbmRJbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogaW5kaXJlY3RDb21wdXRlQ29tbWFuZEF0SW5kZXg6CitfTVRMX0lO
TElORSBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQqIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVm
ZmVyOjppbmRpcmVjdENvbXB1dGVDb21tYW5kKE5TOjpVSW50ZWdlciBjb21tYW5kSW5kZXgpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRpcmVjdENvbXB1dGVDb21t
YW5kKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRpcmVjdENvbXB1dGVDb21tYW5kQXRJbmRl
eF8pLCBjb21tYW5kSW5kZXgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA2ZDUyZmQ3ZGNlMTIxNmZhNDcwZWYyOThiYWQwMWZkMzBhNjE3NDgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
SW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSwxODcgQEAKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEluZGly
ZWN0Q29tbWFuZEVuY29kZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJ
bmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRM
SGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZW5kZXJDb21tYW5k
RW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBw
IgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgSW5k
aXJlY3RSZW5kZXJDb21tYW5kIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxJbmRpcmVjdFJlbmRl
ckNvbW1hbmQ+Cit7CitwdWJsaWM6CisgICAgdm9pZCBzZXRSZW5kZXJQaXBlbGluZVN0YXRlKGNv
bnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lU3RhdGUpOworCisgICAgdm9p
ZCBzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdl
ciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldEZyYWdtZW50QnVm
ZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6
VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVt
YmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUlu
dGVnZXIgcGF0Y2hDb3VudCwgY29uc3QgY2xhc3MgQnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBO
Uzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNl
Q291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UsIGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVm
ZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VTdHJpZGUpOwor
CisgICAgdm9pZCBkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hD
b250cm9sUG9pbnRzLCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNo
Q291bnQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogY29udHJvbFBvaW50
SW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UsIGNv
bnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVn
ZXIgaW5zdGFuY2VTdHJpZGUpOworCisgICAgdm9pZCBkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1p
dGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUlu
dGVnZXIgdmVydGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVn
ZXIgYmFzZUluc3RhbmNlKTsKKworICAgIHZvaWQgZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6
UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRM
OjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyLCBO
Uzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50
LCBOUzo6SW50ZWdlciBiYXNlVmVydGV4LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKTsKKwor
ICAgIHZvaWQgcmVzZXQoKTsKK307CisKK2NsYXNzIEluZGlyZWN0Q29tcHV0ZUNvbW1hbmQgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPEluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ+Cit7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlw
ZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSk7CisKKyAgICB2b2lkIHNldEtlcm5lbEJ1ZmZlcihj
b25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRl
Z2VyIGluZGV4KTsKKworICAgIHZvaWQgY29uY3VycmVudERpc3BhdGNoVGhyZWFkZ3JvdXBzKE1U
TDo6U2l6ZSB0aHJlYWRncm91cHNQZXJHcmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdy
b3VwKTsKKworICAgIHZvaWQgY29uY3VycmVudERpc3BhdGNoVGhyZWFkcyhNVEw6OlNpemUgdGhy
ZWFkc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworCisgICAgdm9p
ZCBzZXRCYXJyaWVyKCk7CisKKyAgICB2b2lkIGNsZWFyQmFycmllcigpOworCisgICAgdm9pZCBz
ZXRJbWFnZWJsb2NrV2lkdGgoTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0
KTsKKworICAgIHZvaWQgcmVzZXQoKTsKKworICAgIHZvaWQgc2V0VGhyZWFkZ3JvdXBNZW1vcnlM
ZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZv
aWQgc2V0U3RhZ2VJblJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24pOworfTsKKworfQorCisvLyBt
ZXRob2Q6IHNldFJlbmRlclBpcGVsaW5lU3RhdGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5k
aXJlY3RSZW5kZXJDb21tYW5kOjpzZXRSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6UmVu
ZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZV8p
LCBwaXBlbGluZVN0YXRlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhCdWZmZXI6b2Zmc2V0
OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kOjpz
ZXRWZXJ0ZXhCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJfb2Zmc2V0X2F0SW5kZXhf
KSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEJ1
ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJlbmRl
ckNvbW1hbmQ6OnNldEZyYWdtZW50QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5T
OjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRCdWZmZXJf
b2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBkcmF3UGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRj
aEluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOnRlc3NlbGxhdGlv
bkZhY3RvckJ1ZmZlcjp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXQ6dGVzc2VsbGF0aW9u
RmFjdG9yQnVmZmVySW5zdGFuY2VTdHJpZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJl
Y3RSZW5kZXJDb21tYW5kOjpkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENv
bnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVnZXIgcGF0Y2hD
b3VudCwgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBw
YXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJ
bnRlZ2VyIGJhc2VJbnN0YW5jZSwgY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3UGF0Y2hlc19wYXRj
aFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0
X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlX3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcl90ZXNz
ZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXRfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVySW5zdGFu
Y2VTdHJpZGVfKSwgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIHBhdGNoU3RhcnQsIHBhdGNo
Q291bnQsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNl
Q291bnQsIGJhc2VJbnN0YW5jZSwgYnVmZmVyLCBvZmZzZXQsIGluc3RhbmNlU3RyaWRlKTsKK30K
KworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENvdW50OnBh
dGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1
ZmZlcjpjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VJbnN0
YW5jZTp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXI6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zm
c2V0OnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3RhbmNlU3RyaWRlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6ZHJhd0luZGV4ZWRQYXRjaGVzKE5TOjpV
SW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRlZ2VyIHBhdGNoU3Rh
cnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBNVEw6OkJ1ZmZlciogcGF0Y2hJbmRl
eEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IE1UTDo6
QnVmZmVyKiBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvbnRyb2xQb2lu
dEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRl
Z2VyIGJhc2VJbnN0YW5jZSwgY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFBhdGNoZXNf
cGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZlck9m
ZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9jb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNl
dF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJfdGVz
c2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0X3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3Rh
bmNlU3RyaWRlXyksIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBwYXRjaFN0YXJ0LCBwYXRj
aENvdW50LCBwYXRjaEluZGV4QnVmZmVyLCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb250cm9s
UG9pbnRJbmRleEJ1ZmZlciwgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNl
Q291bnQsIGJhc2VJbnN0YW5jZSwgYnVmZmVyLCBvZmZzZXQsIGluc3RhbmNlU3RyaWRlKTsKK30K
KworLy8gbWV0aG9kOiBkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDppbnN0
YW5jZUNvdW50OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJl
bmRlckNvbW1hbmQ6OmRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVU
eXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRy
YXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50X2luc3RhbmNlQ291bnRfYmFzZUlu
c3RhbmNlXyksIHByaW1pdGl2ZVR5cGUsIHZlcnRleFN0YXJ0LCB2ZXJ0ZXhDb3VudCwgaW5zdGFu
Y2VDb3VudCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFByaW1p
dGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6
aW5zdGFuY2VDb3VudDpiYXNlVmVydGV4OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQ6OmRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlBy
aW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6
SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6
VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBO
Uzo6SW50ZWdlciBiYXNlVmVydGV4LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5k
ZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZm
ZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlVmVydGV4X2Jhc2VJbnN0YW5jZV8pLCBwcmltaXRp
dmVUeXBlLCBpbmRleENvdW50LCBpbmRleFR5cGUsIGluZGV4QnVmZmVyLCBpbmRleEJ1ZmZlck9m
ZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZVZlcnRleCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8g
bWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFu
ZDo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChyZXNldCkpOworfQorCisvLyBtZXRob2Q6IHNldENvbXB1dGVQaXBlbGluZVN0
YXRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnNldENv
bXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBpcGVs
aW5lU3RhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldENvbXB1dGVQaXBlbGluZVN0YXRlXyksIHBpcGVsaW5lU3RhdGUpOworfQor
CisvLyBtZXRob2Q6IHNldEtlcm5lbEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRLZXJuZWxCdWZmZXIoY29uc3Qg
TVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRLZXJuZWxCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGlu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRncm91cHM6dGhy
ZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0
ZUNvbW1hbmQ6OmNvbmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3VwcyhNVEw6OlNpemUgdGhyZWFk
Z3JvdXBzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29uY3VycmVu
dERpc3BhdGNoVGhyZWFkZ3JvdXBzX3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCB0aHJlYWRncm91
cHNQZXJHcmlkLCB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IGNvbmN1
cnJlbnREaXNwYXRjaFRocmVhZHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OmNvbmN1cnJlbnREaXNwYXRjaFRocmVh
ZHMoTVRMOjpTaXplIHRocmVhZHNQZXJHcmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdy
b3VwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCB0
aHJlYWRzUGVyR3JpZCwgdGhyZWFkc1BlclRocmVhZGdyb3VwKTsKK30KKworLy8gbWV0aG9kOiBz
ZXRCYXJyaWVyCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6
c2V0QmFycmllcigpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEJhcnJpZXIpKTsKK30KKworLy8gbWV0aG9kOiBjbGVhckJhcnJpZXIK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpjbGVhckJhcnJp
ZXIoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChjbGVhckJhcnJpZXIpKTsKK30KKworLy8gbWV0aG9kOiBzZXRJbWFnZWJsb2NrV2lkdGg6
aGVpZ2h0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnNl
dEltYWdlYmxvY2tXaWR0aChOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEltYWdlYmxvY2tXaWR0aF9oZWlnaHRfKSwgd2lkdGgsIGhlaWdodCk7Cit9CisKKy8vIG1l
dGhvZDogcmVzZXQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5k
OjpyZXNldCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHJlc2V0KSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGhyZWFkZ3JvdXBNZW1vcnlM
ZW5ndGg6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21t
YW5kOjpzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoX2F0SW5kZXhfKSwgbGVu
Z3RoLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RhZ2VJblJlZ2lvbjoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRTdGFnZUluUmVnaW9uKE1U
TDo6UmVnaW9uIHJlZ2lvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0U3RhZ2VJblJlZ2lvbl8pLCByZWdpb24pOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyMzgzNWQxZGI3
OGFkODJkZjQ3NmQyNjBjMzJkYmQ5Y2JlODEzNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZS5ocHAKQEAgLTAsMCArMSwxNTcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUu
aHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIK
KyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0
aW9uSGFuZGxlLmhwcCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhw
cCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisjaW5jbHVkZSAiTVRMVmlzaWJsZUZ1bmN0
aW9uVGFibGUuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX09QVElPTlMoTlM6OlVJbnRl
Z2VyLCBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZSkgeworICAgIEludGVyc2VjdGlvbkZ1
bmN0aW9uU2lnbmF0dXJlTm9uZSA9IDAsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1
cmVJbnN0YW5jaW5nID0gMSwKKyAgICBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZVRyaWFu
Z2xlRGF0YSA9IDIsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVXb3JsZFNwYWNl
RGF0YSA9IDQsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVJbnN0YW5jZU1vdGlv
biA9IDgsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVQcmltaXRpdmVNb3Rpb24g
PSAxNiwKKyAgICBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZUV4dGVuZGVkTGltaXRzID0g
MzIsCit9OworCitjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciA6IHB1
YmxpYyBOUzo6Q29weWluZzxJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2Ny
aXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVz
Y3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlRGVzY3JpcHRvciogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0
b3IoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb25Db3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnVuY3Rpb25Db3VudChOUzo6VUludGVnZXIg
ZnVuY3Rpb25Db3VudCk7Cit9OworCitjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlIDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBSZXNvdXJj
ZT4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZv
aWQgc2V0QnVmZmVycyhjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJ
bnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgc2V0RnVuY3Rp
b24oY29uc3QgY2xhc3MgRnVuY3Rpb25IYW5kbGUqIGZ1bmN0aW9uLCBOUzo6VUludGVnZXIgaW5k
ZXgpOworCisgICAgdm9pZCBzZXRGdW5jdGlvbnMoY29uc3QgY2xhc3MgRnVuY3Rpb25IYW5kbGUq
IGZ1bmN0aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCBzZXRPcGFxdWVUcmlh
bmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1
cmUgc2lnbmF0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBzZXRPcGFxdWVU
cmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWdu
YXR1cmUgc2lnbmF0dXJlLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCBzZXRWaXNpYmxl
RnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25U
YWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgc2V0VmlzaWJsZUZ1
bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRh
Ymxlc1tdLCBOUzo6UmFuZ2UgYnVmZmVyUmFuZ2UpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVz
Y3JpcHRvciogTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogTVRMOjpJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4oKTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IK
K19NVExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIE1U
TDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OmludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NM
UyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9T
RUwoaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVy
dHk6IGZ1bmN0aW9uQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yOjpmdW5jdGlvbkNvdW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZnVuY3Rpb25Db3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OnNldEZ1bmN0aW9uQ291bnQoTlM6OlVJ
bnRlZ2VyIGZ1bmN0aW9uQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uQ291bnRfKSwgZnVuY3Rpb25Db3VudCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6OnNldEJ1ZmZlcihjb25zdCBNVEw6
OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQor
CisvLyBtZXRob2Q6IHNldEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTo6c2V0QnVmZmVycyhjb25zdCBNVEw6
OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfKSwgYnVmZmVycywgb2Zmc2V0
cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZ1bmN0aW9uOmF0SW5kZXg6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb24oY29u
c3QgTVRMOjpGdW5jdGlvbkhhbmRsZSogZnVuY3Rpb24sIE5TOjpVSW50ZWdlciBpbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RnVuY3Rpb25fYXRJbmRleF8pLCBmdW5jdGlvbiwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNl
dEZ1bmN0aW9uczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb25zKGNvbnN0IE1UTDo6RnVuY3Rpb25IYW5kbGUqIGZ1
bmN0aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uc193aXRoUmFuZ2VfKSwgZnVu
Y3Rpb25zLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNl
Y3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOjpzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlv
bkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmUgc2lnbmF0dXJlLCBO
Uzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb25X
aXRoU2lnbmF0dXJlX2F0SW5kZXhfKSwgc2lnbmF0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmU6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6
OnNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb24oTVRMOjpJbnRlcnNlY3Rpb25G
dW5jdGlvblNpZ25hdHVyZSBzaWduYXR1cmUsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3BhcXVlVHJp
YW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmVfd2l0aFJhbmdlXyksIHNpZ25h
dHVyZSwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZpc2libGVGdW5jdGlvblRhYmxlOmF0
QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZTo6c2V0VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25U
YWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaXNpYmxl
RnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIGZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4
KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJh
bmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6OnNl
dFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiBm
dW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgYnVmZmVyUmFuZ2UpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZpc2libGVGdW5jdGlv
blRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgZnVuY3Rpb25UYWJsZXMsIGJ1ZmZlclJhbmdlKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExM
aWJyYXJ5LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaWJy
YXJ5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xYTUyNjdhMTZmYzE5ZDQxOTYxYWVmZjljMDlmYWM3ZDAxMDk3
MmM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTExpYnJhcnkuaHBwCkBAIC0wLDAgKzEsNjIxIEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExMaWJyYXJ5LmhwcAor
Ly8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5j
bHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aHBwPgorCisjaW5jbHVkZSAiTVRMQXJndW1lbnQuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9u
RGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMTGlicmFyeS5ocHAiCisjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgUGF0
Y2hUeXBlKSB7CisgICAgUGF0Y2hUeXBlTm9uZSA9IDAsCisgICAgUGF0Y2hUeXBlVHJpYW5nbGUg
PSAxLAorICAgIFBhdGNoVHlwZVF1YWQgPSAyLAorfTsKKworY2xhc3MgVmVydGV4QXR0cmlidXRl
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxWZXJ0ZXhBdHRyaWJ1dGU+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIFZlcnRleEF0dHJpYnV0ZSogYWxsb2MoKTsKKworICAgIGNsYXNzIFZl
cnRleEF0dHJpYnV0ZSogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAg
ICAgICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZUluZGV4KCkgY29uc3Q7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVUeXBlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY3RpdmUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdGNoRGF0YSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGF0Y2hDb250cm9sUG9pbnREYXRhKCkgY29uc3Q7Cit9OworCitjbGFzcyBBdHRyaWJ1
dGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEF0dHJpYnV0ZT4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgQXR0cmlidXRlKiBhbGxvYygpOworCisgICAgY2xhc3MgQXR0cmlidXRlKiAg
ICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgbmFtZSgpIGNvbnN0
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgYXR0cmlidXRlSW5kZXgoKSBjb25zdDsK
KworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgIGF0dHJpYnV0ZVR5cGUoKSBjb25zdDsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSgpIGNvbnN0OworCisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgcGF0Y2hEYXRhKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICBwYXRjaENvbnRyb2xQb2ludERhdGEoKSBjb25zdDsKK307CisKK19NVExfRU5V
TShOUzo6VUludGVnZXIsIEZ1bmN0aW9uVHlwZSkgeworICAgIEZ1bmN0aW9uVHlwZVZlcnRleCA9
IDEsCisgICAgRnVuY3Rpb25UeXBlRnJhZ21lbnQgPSAyLAorICAgIEZ1bmN0aW9uVHlwZUtlcm5l
bCA9IDMsCisgICAgRnVuY3Rpb25UeXBlVmlzaWJsZSA9IDUsCisgICAgRnVuY3Rpb25UeXBlSW50
ZXJzZWN0aW9uID0gNiwKK307CisKK2NsYXNzIEZ1bmN0aW9uQ29uc3RhbnQgOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPEZ1bmN0aW9uQ29uc3RhbnQ+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIEZ1bmN0aW9uQ29uc3RhbnQqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBGdW5jdGlvbkNvbnN0
YW50KiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAg
IG5hbWUoKSBjb25zdDsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgICAgICB0eXBl
KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgaW5kZXgoKSBj
b25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCgpIGNv
bnN0OworfTsKKwordXNpbmcgQXV0b3JlbGVhc2VkQXJndW1lbnQgPSBjbGFzcyBBcmd1bWVudCo7
CisKK2NsYXNzIEZ1bmN0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbj4KK3sK
K3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7
CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTVRM
OjpGdW5jdGlvblR5cGUgICAgICBmdW5jdGlvblR5cGUoKSBjb25zdDsKKworICAgIE1UTDo6UGF0
Y2hUeXBlICAgICAgICAgcGF0Y2hUeXBlKCkgY29uc3Q7CisKKyAgICBOUzo6SW50ZWdlciAgICAg
ICAgICAgIHBhdGNoQ29udHJvbFBvaW50Q291bnQoKSBjb25zdDsKKworICAgIE5TOjpBcnJheSog
ICAgICAgICAgICAgdmVydGV4QXR0cmlidXRlcygpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAg
ICAgICAgICAgICBzdGFnZUlucHV0QXR0cmlidXRlcygpIGNvbnN0OworCisgICAgTlM6OlN0cmlu
ZyogICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAgICBOUzo6RGljdGlvbmFyeSogICAgICAg
IGZ1bmN0aW9uQ29uc3RhbnRzRGljdGlvbmFyeSgpIGNvbnN0OworCisgICAgY2xhc3MgQXJndW1l
bnRFbmNvZGVyKiBuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsK
KworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlciogbmV3QXJndW1lbnRFbmNvZGVyKE5TOjpVSW50
ZWdlciBidWZmZXJJbmRleCwgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRBcmd1bWVudCogcmVmbGVj
dGlvbik7CisKKyAgICBNVEw6OkZ1bmN0aW9uT3B0aW9ucyAgIG9wdGlvbnMoKSBjb25zdDsKK307
CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIExhbmd1YWdlVmVyc2lvbikgeworICAgIExhbmd1
YWdlVmVyc2lvbjFfMCA9IDY1NTM2LAorICAgIExhbmd1YWdlVmVyc2lvbjFfMSA9IDY1NTM3LAor
ICAgIExhbmd1YWdlVmVyc2lvbjFfMiA9IDY1NTM4LAorICAgIExhbmd1YWdlVmVyc2lvbjJfMCA9
IDEzMTA3MiwKKyAgICBMYW5ndWFnZVZlcnNpb24yXzEgPSAxMzEwNzMsCisgICAgTGFuZ3VhZ2VW
ZXJzaW9uMl8yID0gMTMxMDc0LAorICAgIExhbmd1YWdlVmVyc2lvbjJfMyA9IDEzMTA3NSwKKyAg
ICBMYW5ndWFnZVZlcnNpb24yXzQgPSAxMzEwNzYsCit9OworCitfTVRMX0VOVU0oTlM6OkludGVn
ZXIsIExpYnJhcnlUeXBlKSB7CisgICAgTGlicmFyeVR5cGVFeGVjdXRhYmxlID0gMCwKKyAgICBM
aWJyYXJ5VHlwZUR5bmFtaWMgPSAxLAorfTsKKworY2xhc3MgQ29tcGlsZU9wdGlvbnMgOiBwdWJs
aWMgTlM6OkNvcHlpbmc8Q29tcGlsZU9wdGlvbnM+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIENvbXBpbGVPcHRpb25zKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcGlsZU9wdGlvbnMq
ICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6RGljdGlvbmFyeSogICAgICAgICAgICAgIHByZXBy
b2Nlc3Nvck1hY3JvcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0UHJlcHJvY2Vzc29yTWFjcm9zKGNvbnN0IE5TOjpEaWN0aW9uYXJ5KiBwcmVwcm9jZXNzb3JN
YWNyb3MpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBmYXN0TWF0aEVuYWJs
ZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZhc3RNYXRo
RW5hYmxlZChib29sIGZhc3RNYXRoRW5hYmxlZCk7CisKKyAgICBNVEw6Okxhbmd1YWdlVmVyc2lv
biAgICAgICAgIGxhbmd1YWdlVmVyc2lvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0TGFuZ3VhZ2VWZXJzaW9uKE1UTDo6TGFuZ3VhZ2VWZXJzaW9uIGxhbmd1
YWdlVmVyc2lvbik7CisKKyAgICBNVEw6OkxpYnJhcnlUeXBlICAgICAgICAgICAgIGxpYnJhcnlU
eXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMaWJyYXJ5
VHlwZShNVEw6OkxpYnJhcnlUeXBlIGxpYnJhcnlUeXBlKTsKKworICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgICAgICAgICAgaW5zdGFsbE5hbWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEluc3RhbGxOYW1lKGNvbnN0IE5TOjpTdHJpbmcqIGluc3RhbGxOYW1l
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgbGlicmFyaWVzKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMaWJyYXJpZXMoY29uc3QgTlM6
OkFycmF5KiBsaWJyYXJpZXMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBw
cmVzZXJ2ZUludmFyaWFuY2UoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFByZXNlcnZlSW52YXJpYW5jZShib29sIHByZXNlcnZlSW52YXJpYW5jZSk7Cit9Owor
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBMaWJyYXJ5RXJyb3IpIHsKKyAgICBMaWJyYXJ5RXJy
b3JVbnN1cHBvcnRlZCA9IDEsCisgICAgTGlicmFyeUVycm9yQ29tcGlsZUZhaWx1cmUgPSAzLAor
ICAgIExpYnJhcnlFcnJvckNvbXBpbGVXYXJuaW5nID0gNCwKKyAgICBMaWJyYXJ5RXJyb3JGdW5j
dGlvbk5vdEZvdW5kID0gNSwKKyAgICBMaWJyYXJ5RXJyb3JGaWxlTm90Rm91bmQgPSA2LAorfTsK
KworY2xhc3MgTGlicmFyeSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8TGlicmFyeT4KK3sKK3B1
YmxpYzoKKyAgICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcq
IHBGdW5jdGlvbk5hbWUsIGNvbnN0IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIHBDb25z
dGFudFZhbHVlcywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgbmV3RnVuY3Rpb24oY29uc3QgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBwRGVz
Y3JpcHRvciwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5T
OjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb24oY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVu
Y3Rpb25EZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1
bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVy
KTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERl
dmljZSogICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogIG5ld0Z1bmN0
aW9uKGNvbnN0IE5TOjpTdHJpbmcqIGZ1bmN0aW9uTmFtZSk7CisKKyAgICBjbGFzcyBGdW5jdGlv
biogIG5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUsIGNvbnN0IGNsYXNzIEZ1bmN0
aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFsdWVzLCBOUzo6RXJyb3IqKiBlcnJvcik7CisK
KyAgICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUs
IGNvbnN0IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFsdWVzLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uRGVzY3Jp
cHRvciogZGVzY3JpcHRvciwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShNVEw6OkZ1bmN0aW9u
KiwgTlM6OkVycm9yKikpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICBuZXdGdW5jdGlvbihjb25z
dCBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb24oY29uc3Qg
Y2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSk7CisKKyAgICBj
bGFzcyBGdW5jdGlvbiogIG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKGNvbnN0IGNsYXNzIEludGVy
c2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3Ip
OworCisgICAgTlM6OkFycmF5KiAgICAgICBmdW5jdGlvbk5hbWVzKCkgY29uc3Q7CisKKyAgICBN
VEw6OkxpYnJhcnlUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgaW5z
dGFsbE5hbWUoKSBjb25zdDsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRlKiBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlZlcnRleEF0dHJpYnV0
ZT4oX01UTF9QUklWQVRFX0NMUyhNVExWZXJ0ZXhBdHRyaWJ1dGUpKTsKK30KKworLy8gbWV0aG9k
OiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0ZSogTVRMOjpWZXJ0ZXhBdHRy
aWJ1dGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VmVydGV4
QXR0cmlidXRlPigpOworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0
cmluZyogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5h
bWUpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJpYnV0ZUluZGV4CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OmF0dHJpYnV0ZUluZGV4KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYXR0cmlidXRlSW5kZXgpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJpYnV0
ZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OmF0
dHJpYnV0ZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0cmlidXRlVHlwZSkpOworfQor
CisvLyBwcm9wZXJ0eTogYWN0aXZlCitfTVRMX0lOTElORSBib29sIE1UTDo6VmVydGV4QXR0cmli
dXRlOjphY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNBY3RpdmUpKTsKK30KKworLy8gcHJvcGVydHk6
IHBhdGNoRGF0YQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6cGF0Y2hE
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGlzUGF0Y2hEYXRhKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXRj
aENvbnRyb2xQb2ludERhdGEKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6
OnBhdGNoQ29udHJvbFBvaW50RGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1BhdGNoQ29udHJvbFBvaW50
RGF0YSkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpB
dHRyaWJ1dGUqIE1UTDo6QXR0cmlidXRlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6QXR0cmlidXRlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEF0dHJpYnV0ZSkp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlKiBNVEw6
OkF0dHJpYnV0ZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpB
dHRyaWJ1dGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3Ry
aW5nKiBNVEw6OkF0dHJpYnV0ZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlSW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OkF0dHJpYnV0ZTo6YXR0cmlidXRlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChh
dHRyaWJ1dGVJbmRleCkpOworfQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlVHlwZQorX01UTF9J
TkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OkF0dHJpYnV0ZTo6YXR0cmlidXRlVHlwZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTChhdHRyaWJ1dGVUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY3Rp
dmUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpBdHRyaWJ1dGU6OmFjdGl2ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChpc0FjdGl2ZSkpOworfQorCisvLyBwcm9wZXJ0eTogcGF0Y2hEYXRhCitfTVRMX0lOTElORSBi
b29sIE1UTDo6QXR0cmlidXRlOjpwYXRjaERhdGEoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNQYXRjaERhdGEp
KTsKK30KKworLy8gcHJvcGVydHk6IHBhdGNoQ29udHJvbFBvaW50RGF0YQorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkF0dHJpYnV0ZTo6cGF0Y2hDb250cm9sUG9pbnREYXRhKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGlzUGF0Y2hDb250cm9sUG9pbnREYXRhKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQqIE1UTDo6RnVuY3Rpb25Db25zdGFu
dDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9u
Q29uc3RhbnQ+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25Db25zdGFudCkpOworfQorCisv
LyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25Db25zdGFudCogTVRMOjpG
dW5jdGlvbkNvbnN0YW50Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OkZ1bmN0aW9uQ29uc3RhbnQ+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ6Om5hbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5MSU5FIE1U
TDo6RGF0YVR5cGUgTVRMOjpGdW5jdGlvbkNvbnN0YW50Ojp0eXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpGdW5jdGlvbkNvbnN0YW50OjppbmRleCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluZGV4KSk7Cit9CisKKy8vIHByb3BlcnR5OiByZXF1aXJlZAorX01UTF9JTkxJTkUgYm9v
bCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ6OnJlcXVpcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlcXVpcmVk
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRM
OjpGdW5jdGlvbjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyog
bGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01U
TF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6RnVuY3Rpb246OmRldmljZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25UeXBlCitfTVRM
X0lOTElORSBNVEw6OkZ1bmN0aW9uVHlwZSBNVEw6OkZ1bmN0aW9uOjpmdW5jdGlvblR5cGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25UeXBl
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uVHlwZSkpOworfQorCisvLyBwcm9wZXJ0
eTogcGF0Y2hUeXBlCitfTVRMX0lOTElORSBNVEw6OlBhdGNoVHlwZSBNVEw6OkZ1bmN0aW9uOjpw
YXRjaFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UGF0Y2hUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhdGNoVHlwZSkpOworfQorCisvLyBw
cm9wZXJ0eTogcGF0Y2hDb250cm9sUG9pbnRDb3VudAorX01UTF9JTkxJTkUgTlM6OkludGVnZXIg
TVRMOjpGdW5jdGlvbjo6cGF0Y2hDb250cm9sUG9pbnRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocGF0Y2hDb250cm9sUG9pbnRDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4QXR0
cmlidXRlcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uOjp2ZXJ0ZXhBdHRy
aWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJy
YXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleEF0dHJpYnV0ZXMpKTsKK30KKworLy8g
cHJvcGVydHk6IHN0YWdlSW5wdXRBdHRyaWJ1dGVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1U
TDo6RnVuY3Rpb246OnN0YWdlSW5wdXRBdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0
YWdlSW5wdXRBdHRyaWJ1dGVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElO
RSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
YW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvbkNvbnN0YW50c0RpY3Rpb25hcnkKK19N
VExfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBNVEw6OkZ1bmN0aW9uOjpmdW5jdGlvbkNvbnN0YW50
c0RpY3Rpb25hcnkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpEaWN0aW9uYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkNvbnN0YW50c0Rp
Y3Rpb25hcnkpKTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVy
SW5kZXg6CitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RW5jb2RlciogTVRMOjpGdW5jdGlvbjo6
bmV3QXJndW1lbnRFbmNvZGVyKE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50RW5jb2Rlcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4XyksIGJ1ZmZlcklu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXg6
cmVmbGVjdGlvbjoKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRFbmNvZGVyKiBNVEw6OkZ1bmN0
aW9uOjpuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4LCBjb25zdCBN
VEw6OkF1dG9yZWxlYXNlZEFyZ3VtZW50KiByZWZsZWN0aW9uKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXhfcmVmbGVjdGlvbl8pLCBidWZm
ZXJJbmRleCwgcmVmbGVjdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBvcHRpb25zCitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uT3B0aW9ucyBNVEw6OkZ1bmN0aW9uOjpvcHRpb25zKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uT3B0aW9ucz4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChvcHRpb25zKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvbXBpbGVPcHRpb25zKiBNVEw6OkNvbXBpbGVPcHRp
b25zOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcGls
ZU9wdGlvbnM+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcGlsZU9wdGlvbnMpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXBpbGVPcHRpb25zKiBNVEw6OkNvbXBp
bGVPcHRpb25zOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNv
bXBpbGVPcHRpb25zPigpOworfQorCisvLyBwcm9wZXJ0eTogcHJlcHJvY2Vzc29yTWFjcm9zCitf
TVRMX0lOTElORSBOUzo6RGljdGlvbmFyeSogTVRMOjpDb21waWxlT3B0aW9uczo6cHJlcHJvY2Vz
c29yTWFjcm9zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
RGljdGlvbmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlcHJvY2Vzc29yTWFjcm9zKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9uczo6c2V0UHJlcHJvY2Vz
c29yTWFjcm9zKGNvbnN0IE5TOjpEaWN0aW9uYXJ5KiBwcmVwcm9jZXNzb3JNYWNyb3MpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFBy
ZXByb2Nlc3Nvck1hY3Jvc18pLCBwcmVwcm9jZXNzb3JNYWNyb3MpOworfQorCisvLyBwcm9wZXJ0
eTogZmFzdE1hdGhFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcGlsZU9wdGlvbnM6
OmZhc3RNYXRoRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChmYXN0TWF0aEVuYWJsZWQpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXBpbGVPcHRpb25zOjpzZXRGYXN0TWF0aEVuYWJsZWQo
Ym9vbCBmYXN0TWF0aEVuYWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZhc3RNYXRoRW5hYmxlZF8pLCBmYXN0TWF0aEVuYWJs
ZWQpOworfQorCisvLyBwcm9wZXJ0eTogbGFuZ3VhZ2VWZXJzaW9uCitfTVRMX0lOTElORSBNVEw6
Okxhbmd1YWdlVmVyc2lvbiBNVEw6OkNvbXBpbGVPcHRpb25zOjpsYW5ndWFnZVZlcnNpb24oKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGFuZ3VhZ2VWZXJz
aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhbmd1YWdlVmVyc2lvbikpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q29tcGlsZU9wdGlvbnM6OnNldExhbmd1YWdlVmVyc2lvbihNVEw6
Okxhbmd1YWdlVmVyc2lvbiBsYW5ndWFnZVZlcnNpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhbmd1YWdlVmVyc2lvbl8pLCBs
YW5ndWFnZVZlcnNpb24pOworfQorCisvLyBwcm9wZXJ0eTogbGlicmFyeVR5cGUKK19NVExfSU5M
SU5FIE1UTDo6TGlicmFyeVR5cGUgTVRMOjpDb21waWxlT3B0aW9uczo6bGlicmFyeVR5cGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlicmFyeVR5cGU+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGlicmFyeVR5cGUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkNvbXBpbGVPcHRpb25zOjpzZXRMaWJyYXJ5VHlwZShNVEw6OkxpYnJhcnlUeXBl
IGxpYnJhcnlUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRMaWJyYXJ5VHlwZV8pLCBsaWJyYXJ5VHlwZSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBpbnN0YWxsTmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21waWxl
T3B0aW9uczo6aW5zdGFsbE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbGxOYW1lKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9uczo6c2V0SW5zdGFsbE5h
bWUoY29uc3QgTlM6OlN0cmluZyogaW5zdGFsbE5hbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbGxOYW1lXyksIGluc3Rh
bGxOYW1lKTsKK30KKworLy8gcHJvcGVydHk6IGxpYnJhcmllcworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OkNvbXBpbGVPcHRpb25zOjpsaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9uczo6
c2V0TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogbGlicmFyaWVzKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMaWJyYXJpZXNfKSwg
bGlicmFyaWVzKTsKK30KKworLy8gcHJvcGVydHk6IHByZXNlcnZlSW52YXJpYW5jZQorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkNvbXBpbGVPcHRpb25zOjpwcmVzZXJ2ZUludmFyaWFuY2UoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwocHJlc2VydmVJbnZhcmlhbmNlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21waWxlT3B0aW9uczo6c2V0UHJlc2VydmVJbnZhcmlhbmNlKGJvb2wgcHJlc2VydmVJbnZh
cmlhbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRQcmVzZXJ2ZUludmFyaWFuY2VfKSwgcHJlc2VydmVJbnZhcmlhbmNlKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpT
dHJpbmcqIHBGdW5jdGlvbk5hbWUsIGNvbnN0IEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIHBDb25z
dGFudFZhbHVlcywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sg
c3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uICogcEZ1bmN0aW9uLCBOUzo6RXJyb3IgKiBwRXJy
b3IpPiBibG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBu
ZXdGdW5jdGlvbihwRnVuY3Rpb25OYW1lLCBwQ29uc3RhbnRWYWx1ZXMsIF4oRnVuY3Rpb24qIHBG
dW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwRnVu
Y3Rpb24sIHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6
bmV3RnVuY3Rpb24oY29uc3QgRnVuY3Rpb25EZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3Qg
c3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVycm9y
KT4mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sgc3RkOjpmdW5jdGlvbjx2b2lk
KEZ1bmN0aW9uICogcEZ1bmN0aW9uLCBOUzo6RXJyb3IgKiBwRXJyb3IpPiBibG9ja0NvbXBsZXRp
b25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdGdW5jdGlvbihwRGVzY3Jp
cHRvciwgXihGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0Nv
bXBsZXRpb25IYW5kbGVyKHBGdW5jdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpMaWJyYXJ5OjpuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbihjb25zdCBJbnRlcnNl
Y3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoRnVuY3Rpb24qIHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpPiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgX19ibG9jayBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb24gKiBw
RnVuY3Rpb24sIE5TOjpFcnJvciAqIHBFcnJvcik+IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBj
b21wbGV0aW9uSGFuZGxlcjsKKworICAgIG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKHBEZXNjcmlw
dG9yLCBeKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29t
cGxldGlvbkhhbmRsZXIocEZ1bmN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKworLy8gcHJvcGVydHk6
IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkxpYnJhcnk6OmxhYmVsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGli
cmFyeTo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVs
KTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1U
TDo6TGlicmFyeTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisK
Ky8vIG1ldGhvZDogbmV3RnVuY3Rpb25XaXRoTmFtZToKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rp
b24qIE1UTDo6TGlicmFyeTo6bmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0cmluZyogZnVuY3Rpb25O
YW1lKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Z1bmN0aW9uV2l0aE5hbWVfKSwgZnVuY3Rpb25OYW1l
KTsKK30KKworLy8gbWV0aG9kOiBuZXdGdW5jdGlvbldpdGhOYW1lOmNvbnN0YW50VmFsdWVzOmVy
cm9yOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpMaWJyYXJ5OjpuZXdGdW5jdGlv
bihjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1
ZXMqIGNvbnN0YW50VmFsdWVzLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdGdW5jdGlvbldpdGhOYW1lX2NvbnN0YW50VmFsdWVzX2Vycm9yXyksIG5hbWUsIGNvbnN0YW50
VmFsdWVzLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3RnVuY3Rpb25XaXRoTmFtZTpjb25z
dGFudFZhbHVlczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaWJy
YXJ5OjpuZXdGdW5jdGlvbihjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBNVEw6OkZ1bmN0
aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFsdWVzLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVuY3Rpb25XaXRoTmFtZV9jb25z
dGFudFZhbHVlc19jb21wbGV0aW9uSGFuZGxlcl8pLCBuYW1lLCBjb25zdGFudFZhbHVlcywgY29t
cGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0
b3I6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6bmV3
RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpGdW5jdGlvbiosIE5TOjpFcnJvciopKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdGdW5j
dGlvbldpdGhEZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXyksIGRlc2NyaXB0b3IsIGNvbXBs
ZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9y
OmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpMaWJyYXJ5OjpuZXdGdW5j
dGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9y
KiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlv
bio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9lcnJv
cl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3SW50ZXJzZWN0aW9u
RnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpMaWJyYXJ5OjpuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbihjb25zdCBNVEw6OkludGVy
c2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShNVEw6OkZ1bmN0aW9uKiwgTlM6OkVycm9yKikpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0
aW9uV2l0aERlc2NyaXB0b3JfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgY29tcGxl
dGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uV2l0
aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6OkxpYnJh
cnk6Om5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2Ny
aXB0b3IsIGVycm9yKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uTmFtZXMKK19NVExfSU5M
SU5FIE5TOjpBcnJheSogTVRMOjpMaWJyYXJ5OjpmdW5jdGlvbk5hbWVzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGZ1bmN0aW9uTmFtZXMpKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5M
SU5FIE1UTDo6TGlicmFyeVR5cGUgTVRMOjpMaWJyYXJ5Ojp0eXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnlUeXBlPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbGxOYW1lCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkxpYnJhcnk6Omluc3RhbGxOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChpbnN0YWxsTmFtZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHAgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlua2VkRnVuY3Rpb25zLmhwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NjMxOWE1YTk0MWJmZDgzODdhNjI3NzYxMDg2ZWM5NmMyNjBlZWNmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0
aW9ucy5ocHAKQEAgLTAsMCArMSwxMTUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHAKKy8v
CisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1
ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhw
cD4KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgTGlua2VkRnVuY3Rpb25zIDogcHVibGljIE5T
OjpDb3B5aW5nPExpbmtlZEZ1bmN0aW9ucz4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
TGlua2VkRnVuY3Rpb25zKiBhbGxvYygpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiAg
ICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogbGlua2Vk
RnVuY3Rpb25zKCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGdW5jdGlv
bnMoY29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAg
ICAgICAgICAgICAgYmluYXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0QmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogYmluYXJ5
RnVuY3Rpb25zKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgIGdyb3Vwcygp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEdyb3Vwcyhjb25z
dCBOUzo6QXJyYXkqIGdyb3Vwcyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAg
ICBwcml2YXRlRnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0UHJpdmF0ZUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIHByaXZhdGVGdW5jdGlv
bnMpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6TGlua2VkRnVuY3Rpb25zPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTExpbmtlZEZ1bmN0aW9ucykpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpMaW5rZWRGdW5jdGlvbnM+KCk7
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGxpbmtlZEZ1bmN0aW9ucworX01UTF9JTkxJTkUgTVRM
OjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpsaW5rZWRGdW5jdGlvbnMo
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlua2VkRnVuY3Rpb25z
Kj4oX01UTF9QUklWQVRFX0NMUyhNVExMaW5rZWRGdW5jdGlvbnMpLCBfTVRMX1BSSVZBVEVfU0VM
KGxpbmtlZEZ1bmN0aW9ucykpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25zCitfTVRMX0lO
TElORSBOUzo6QXJyYXkqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpmdW5jdGlvbnMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaW5r
ZWRGdW5jdGlvbnM6OnNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9ucykKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RnVuY3Rpb25zXyksIGZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlGdW5jdGlv
bnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpMaW5rZWRGdW5jdGlvbnM6OmJpbmFyeUZ1
bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChiaW5hcnlGdW5jdGlvbnMpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6c2V0QmluYXJ5RnVuY3Rpb25zKGNv
bnN0IE5TOjpBcnJheSogYmluYXJ5RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCaW5hcnlGdW5jdGlvbnNfKSwgYmlu
YXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IGdyb3VwcworX01UTF9JTkxJTkUgTlM6
OkFycmF5KiBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6Z3JvdXBzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGdyb3VwcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpz
ZXRHcm91cHMoY29uc3QgTlM6OkFycmF5KiBncm91cHMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEdyb3Vwc18pLCBncm91cHMpOwor
fQorCisvLyBwcm9wZXJ0eTogcHJpdmF0ZUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5
KiBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6cHJpdmF0ZUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChwcml2YXRlRnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaW5r
ZWRGdW5jdGlvbnM6OnNldFByaXZhdGVGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiBwcml2YXRl
RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRQcml2YXRlRnVuY3Rpb25zXyksIHByaXZhdGVGdW5jdGlvbnMpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBhcmFs
bGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA0MzdiNGM4Yzk3ZDE1MmRjYjYyYTAwMTJkNGVmNjU0OGJkNWE0N2YKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSw5NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExI
ZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVy
LmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQYXNzLmhwcCIKKworbmFtZXNwYWNlIE1UTAorewor
Y2xhc3MgUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNp
bmc8UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlciwgQ29tbWFuZEVuY29kZXI+Cit7CitwdWJs
aWM6CisgICAgY2xhc3MgUmVuZGVyQ29tbWFuZEVuY29kZXIqIHJlbmRlckNvbW1hbmRFbmNvZGVy
KCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29sb3JTdG9yZUFjdGlv
bihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUludGVnZXIgY29sb3JBdHRhY2ht
ZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoU3Rv
cmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbik7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24g
c3RvcmVBY3Rpb24pOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbG9y
U3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0
aW9ucywgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3Jl
QWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlv
bk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zKTsKK307CisKK30KKworLy8gbWV0aG9kOiByZW5k
ZXJDb21tYW5kRW5jb2RlcgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlciog
TVRMOjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpyZW5kZXJDb21tYW5kRW5jb2Rlcigp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJDb21tYW5kRW5j
b2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyQ29tbWFuZEVuY29kZXIpKTsKK30K
KworLy8gbWV0aG9kOiBzZXRDb2xvclN0b3JlQWN0aW9uOmF0SW5kZXg6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Q29sb3JTdG9yZUFjdGlv
bihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUludGVnZXIgY29sb3JBdHRhY2ht
ZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldENvbG9yU3RvcmVBY3Rpb25fYXRJbmRleF8pLCBzdG9yZUFjdGlvbiwgY29s
b3JBdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoU3RvcmVBY3Rpb246
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
RGVwdGhTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFN0
b3JlQWN0aW9uXyksIHN0b3JlQWN0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzZXRTdGVuY2lsU3Rv
cmVBY3Rpb246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5j
b2Rlcjo6c2V0U3RlbmNpbFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24p
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFN0ZW5jaWxTdG9yZUFjdGlvbl8pLCBzdG9yZUFjdGlvbik7Cit9CisKKy8vIG1ldGhvZDog
c2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnM6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9u
cyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMsIE5TOjpVSW50ZWdl
ciBjb2xvckF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnNfYXRJbmRl
eF8pLCBzdG9yZUFjdGlvbk9wdGlvbnMsIGNvbG9yQXR0YWNobWVudEluZGV4KTsKK30KKworLy8g
bWV0aG9kOiBzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9u
cyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoU3Rv
cmVBY3Rpb25PcHRpb25zXyksIHN0b3JlQWN0aW9uT3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDog
c2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQYXJh
bGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zKE1U
TDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFN0b3Jl
QWN0aW9uT3B0aW9uc18pLCBzdG9yZUFjdGlvbk9wdGlvbnMpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBpcGVsaW5lLmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXBlbGluZS5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmEzYzk0NzczOTZhZDdjMzE2ZDZiNmNkYmVmMmEyMDhjNGY5ODc4OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXBlbGluZS5o
cHAKQEAgLTAsMCArMSwxMDkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFBpcGVsaW5lLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVk
ZSAiTVRMUGlwZWxpbmUuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJ
bnRlZ2VyLCBNdXRhYmlsaXR5KSB7CisgICAgTXV0YWJpbGl0eURlZmF1bHQgPSAwLAorICAgIE11
dGFiaWxpdHlNdXRhYmxlID0gMSwKKyAgICBNdXRhYmlsaXR5SW1tdXRhYmxlID0gMiwKK307CisK
K2NsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFBpcGVs
aW5lQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFBpcGVsaW5lQnVmZmVy
RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6TXV0YWJpbGl0eSAgICAgICAg
ICAgICAgICAgICAgICAgIG11dGFiaWxpdHkoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRNdXRhYmlsaXR5KE1UTDo6TXV0YWJpbGl0eSBtdXRh
YmlsaXR5KTsKK307CisKK2NsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5IDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheT4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqIGFs
bG9jKCk7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogICAgICAg
IGluaXQoKTsKKworICAgIGNsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciogICAgICAgICAg
ICAgb2JqZWN0KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3IqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsK
K307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UGlw
ZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcjo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlBpcGVsaW5lQnVmZmVy
RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3Ip
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVy
RGVzY3JpcHRvciogTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yPigp
OworfQorCisvLyBwcm9wZXJ0eTogbXV0YWJpbGl0eQorX01UTF9JTkxJTkUgTVRMOjpNdXRhYmls
aXR5IE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yOjptdXRhYmlsaXR5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Ok11dGFiaWxpdHk+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobXV0YWJpbGl0eSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yOjpzZXRNdXRhYmlsaXR5KE1UTDo6TXV0YWJpbGl0eSBt
dXRhYmlsaXR5KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRNdXRhYmlsaXR5XyksIG11dGFiaWxpdHkpOworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JB
cnJheSogTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFy
cmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRl
c2NyaXB0b3JBcnJheSogTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2Ny
aXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6
CitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciogTVRMOjpQaXBlbGlu
ZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpcGVsaW5lQnVmZmVyRGVz
Y3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0
XyksIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vi
c2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFy
cmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqIGJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0
XyksIGJ1ZmZlciwgYnVmZmVySW5kZXgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBpeGVsRm9ybWF0LmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXhlbEZvcm1hdC5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMy
MGM4MjllYmEwNTIyN2M1Yzk0NTkzZjQ3YmJiNzZmMTEyNDFjZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXhlbEZvcm1hdC5ocHAK
QEAgLTAsMCArMSwxNzMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFBpeGVsRm9ybWF0LmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1lc3Bh
Y2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQaXhlbEZvcm1hdCkgeworICAgIFBp
eGVsRm9ybWF0SW52YWxpZCA9IDAsCisgICAgUGl4ZWxGb3JtYXRBOFVub3JtID0gMSwKKyAgICBQ
aXhlbEZvcm1hdFI4VW5vcm0gPSAxMCwKKyAgICBQaXhlbEZvcm1hdFI4VW5vcm1fc1JHQiA9IDEx
LAorICAgIFBpeGVsRm9ybWF0UjhTbm9ybSA9IDEyLAorICAgIFBpeGVsRm9ybWF0UjhVaW50ID0g
MTMsCisgICAgUGl4ZWxGb3JtYXRSOFNpbnQgPSAxNCwKKyAgICBQaXhlbEZvcm1hdFIxNlVub3Jt
ID0gMjAsCisgICAgUGl4ZWxGb3JtYXRSMTZTbm9ybSA9IDIyLAorICAgIFBpeGVsRm9ybWF0UjE2
VWludCA9IDIzLAorICAgIFBpeGVsRm9ybWF0UjE2U2ludCA9IDI0LAorICAgIFBpeGVsRm9ybWF0
UjE2RmxvYXQgPSAyNSwKKyAgICBQaXhlbEZvcm1hdFJHOFVub3JtID0gMzAsCisgICAgUGl4ZWxG
b3JtYXRSRzhVbm9ybV9zUkdCID0gMzEsCisgICAgUGl4ZWxGb3JtYXRSRzhTbm9ybSA9IDMyLAor
ICAgIFBpeGVsRm9ybWF0Ukc4VWludCA9IDMzLAorICAgIFBpeGVsRm9ybWF0Ukc4U2ludCA9IDM0
LAorICAgIFBpeGVsRm9ybWF0QjVHNlI1VW5vcm0gPSA0MCwKKyAgICBQaXhlbEZvcm1hdEExQkdS
NVVub3JtID0gNDEsCisgICAgUGl4ZWxGb3JtYXRBQkdSNFVub3JtID0gNDIsCisgICAgUGl4ZWxG
b3JtYXRCR1I1QTFVbm9ybSA9IDQzLAorICAgIFBpeGVsRm9ybWF0UjMyVWludCA9IDUzLAorICAg
IFBpeGVsRm9ybWF0UjMyU2ludCA9IDU0LAorICAgIFBpeGVsRm9ybWF0UjMyRmxvYXQgPSA1NSwK
KyAgICBQaXhlbEZvcm1hdFJHMTZVbm9ybSA9IDYwLAorICAgIFBpeGVsRm9ybWF0UkcxNlNub3Jt
ID0gNjIsCisgICAgUGl4ZWxGb3JtYXRSRzE2VWludCA9IDYzLAorICAgIFBpeGVsRm9ybWF0Ukcx
NlNpbnQgPSA2NCwKKyAgICBQaXhlbEZvcm1hdFJHMTZGbG9hdCA9IDY1LAorICAgIFBpeGVsRm9y
bWF0UkdCQThVbm9ybSA9IDcwLAorICAgIFBpeGVsRm9ybWF0UkdCQThVbm9ybV9zUkdCID0gNzEs
CisgICAgUGl4ZWxGb3JtYXRSR0JBOFNub3JtID0gNzIsCisgICAgUGl4ZWxGb3JtYXRSR0JBOFVp
bnQgPSA3MywKKyAgICBQaXhlbEZvcm1hdFJHQkE4U2ludCA9IDc0LAorICAgIFBpeGVsRm9ybWF0
QkdSQThVbm9ybSA9IDgwLAorICAgIFBpeGVsRm9ybWF0QkdSQThVbm9ybV9zUkdCID0gODEsCisg
ICAgUGl4ZWxGb3JtYXRSR0IxMEEyVW5vcm0gPSA5MCwKKyAgICBQaXhlbEZvcm1hdFJHQjEwQTJV
aW50ID0gOTEsCisgICAgUGl4ZWxGb3JtYXRSRzExQjEwRmxvYXQgPSA5MiwKKyAgICBQaXhlbEZv
cm1hdFJHQjlFNUZsb2F0ID0gOTMsCisgICAgUGl4ZWxGb3JtYXRCR1IxMEEyVW5vcm0gPSA5NCwK
KyAgICBQaXhlbEZvcm1hdFJHMzJVaW50ID0gMTAzLAorICAgIFBpeGVsRm9ybWF0UkczMlNpbnQg
PSAxMDQsCisgICAgUGl4ZWxGb3JtYXRSRzMyRmxvYXQgPSAxMDUsCisgICAgUGl4ZWxGb3JtYXRS
R0JBMTZVbm9ybSA9IDExMCwKKyAgICBQaXhlbEZvcm1hdFJHQkExNlNub3JtID0gMTEyLAorICAg
IFBpeGVsRm9ybWF0UkdCQTE2VWludCA9IDExMywKKyAgICBQaXhlbEZvcm1hdFJHQkExNlNpbnQg
PSAxMTQsCisgICAgUGl4ZWxGb3JtYXRSR0JBMTZGbG9hdCA9IDExNSwKKyAgICBQaXhlbEZvcm1h
dFJHQkEzMlVpbnQgPSAxMjMsCisgICAgUGl4ZWxGb3JtYXRSR0JBMzJTaW50ID0gMTI0LAorICAg
IFBpeGVsRm9ybWF0UkdCQTMyRmxvYXQgPSAxMjUsCisgICAgUGl4ZWxGb3JtYXRCQzFfUkdCQSA9
IDEzMCwKKyAgICBQaXhlbEZvcm1hdEJDMV9SR0JBX3NSR0IgPSAxMzEsCisgICAgUGl4ZWxGb3Jt
YXRCQzJfUkdCQSA9IDEzMiwKKyAgICBQaXhlbEZvcm1hdEJDMl9SR0JBX3NSR0IgPSAxMzMsCisg
ICAgUGl4ZWxGb3JtYXRCQzNfUkdCQSA9IDEzNCwKKyAgICBQaXhlbEZvcm1hdEJDM19SR0JBX3NS
R0IgPSAxMzUsCisgICAgUGl4ZWxGb3JtYXRCQzRfUlVub3JtID0gMTQwLAorICAgIFBpeGVsRm9y
bWF0QkM0X1JTbm9ybSA9IDE0MSwKKyAgICBQaXhlbEZvcm1hdEJDNV9SR1Vub3JtID0gMTQyLAor
ICAgIFBpeGVsRm9ybWF0QkM1X1JHU25vcm0gPSAxNDMsCisgICAgUGl4ZWxGb3JtYXRCQzZIX1JH
QkZsb2F0ID0gMTUwLAorICAgIFBpeGVsRm9ybWF0QkM2SF9SR0JVZmxvYXQgPSAxNTEsCisgICAg
UGl4ZWxGb3JtYXRCQzdfUkdCQVVub3JtID0gMTUyLAorICAgIFBpeGVsRm9ybWF0QkM3X1JHQkFV
bm9ybV9zUkdCID0gMTUzLAorICAgIFBpeGVsRm9ybWF0UFZSVENfUkdCXzJCUFAgPSAxNjAsCisg
ICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JfMkJQUF9zUkdCID0gMTYxLAorICAgIFBpeGVsRm9ybWF0
UFZSVENfUkdCXzRCUFAgPSAxNjIsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JfNEJQUF9zUkdC
ID0gMTYzLAorICAgIFBpeGVsRm9ybWF0UFZSVENfUkdCQV8yQlBQID0gMTY0LAorICAgIFBpeGVs
Rm9ybWF0UFZSVENfUkdCQV8yQlBQX3NSR0IgPSAxNjUsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19S
R0JBXzRCUFAgPSAxNjYsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JBXzRCUFBfc1JHQiA9IDE2
NywKKyAgICBQaXhlbEZvcm1hdEVBQ19SMTFVbm9ybSA9IDE3MCwKKyAgICBQaXhlbEZvcm1hdEVB
Q19SMTFTbm9ybSA9IDE3MiwKKyAgICBQaXhlbEZvcm1hdEVBQ19SRzExVW5vcm0gPSAxNzQsCisg
ICAgUGl4ZWxGb3JtYXRFQUNfUkcxMVNub3JtID0gMTc2LAorICAgIFBpeGVsRm9ybWF0RUFDX1JH
QkE4ID0gMTc4LAorICAgIFBpeGVsRm9ybWF0RUFDX1JHQkE4X3NSR0IgPSAxNzksCisgICAgUGl4
ZWxGb3JtYXRFVEMyX1JHQjggPSAxODAsCisgICAgUGl4ZWxGb3JtYXRFVEMyX1JHQjhfc1JHQiA9
IDE4MSwKKyAgICBQaXhlbEZvcm1hdEVUQzJfUkdCOEExID0gMTgyLAorICAgIFBpeGVsRm9ybWF0
RVRDMl9SR0I4QTFfc1JHQiA9IDE4MywKKyAgICBQaXhlbEZvcm1hdEFTVENfNHg0X3NSR0IgPSAx
ODYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzV4NF9zUkdCID0gMTg3LAorICAgIFBpeGVsRm9ybWF0
QVNUQ181eDVfc1JHQiA9IDE4OCwKKyAgICBQaXhlbEZvcm1hdEFTVENfNng1X3NSR0IgPSAxODks
CisgICAgUGl4ZWxGb3JtYXRBU1RDXzZ4Nl9zUkdCID0gMTkwLAorICAgIFBpeGVsRm9ybWF0QVNU
Q184eDVfc1JHQiA9IDE5MiwKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg2X3NSR0IgPSAxOTMsCisg
ICAgUGl4ZWxGb3JtYXRBU1RDXzh4OF9zUkdCID0gMTk0LAorICAgIFBpeGVsRm9ybWF0QVNUQ18x
MHg1X3NSR0IgPSAxOTUsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDZfc1JHQiA9IDE5NiwKKyAg
ICBQaXhlbEZvcm1hdEFTVENfMTB4OF9zUkdCID0gMTk3LAorICAgIFBpeGVsRm9ybWF0QVNUQ18x
MHgxMF9zUkdCID0gMTk4LAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMngxMF9zUkdCID0gMTk5LAor
ICAgIFBpeGVsRm9ybWF0QVNUQ18xMngxMl9zUkdCID0gMjAwLAorICAgIFBpeGVsRm9ybWF0QVNU
Q180eDRfTERSID0gMjA0LAorICAgIFBpeGVsRm9ybWF0QVNUQ181eDRfTERSID0gMjA1LAorICAg
IFBpeGVsRm9ybWF0QVNUQ181eDVfTERSID0gMjA2LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDVf
TERSID0gMjA3LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDZfTERSID0gMjA4LAorICAgIFBpeGVs
Rm9ybWF0QVNUQ184eDVfTERSID0gMjEwLAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDZfTERSID0g
MjExLAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDhfTERSID0gMjEyLAorICAgIFBpeGVsRm9ybWF0
QVNUQ18xMHg1X0xEUiA9IDIxMywKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4Nl9MRFIgPSAyMTQs
CisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDhfTERSID0gMjE1LAorICAgIFBpeGVsRm9ybWF0QVNU
Q18xMHgxMF9MRFIgPSAyMTYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEyeDEwX0xEUiA9IDIxNywK
KyAgICBQaXhlbEZvcm1hdEFTVENfMTJ4MTJfTERSID0gMjE4LAorICAgIFBpeGVsRm9ybWF0QVNU
Q180eDRfSERSID0gMjIyLAorICAgIFBpeGVsRm9ybWF0QVNUQ181eDRfSERSID0gMjIzLAorICAg
IFBpeGVsRm9ybWF0QVNUQ181eDVfSERSID0gMjI0LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDVf
SERSID0gMjI1LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDZfSERSID0gMjI2LAorICAgIFBpeGVs
Rm9ybWF0QVNUQ184eDVfSERSID0gMjI4LAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDZfSERSID0g
MjI5LAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDhfSERSID0gMjMwLAorICAgIFBpeGVsRm9ybWF0
QVNUQ18xMHg1X0hEUiA9IDIzMSwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4Nl9IRFIgPSAyMzIs
CisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDhfSERSID0gMjMzLAorICAgIFBpeGVsRm9ybWF0QVNU
Q18xMHgxMF9IRFIgPSAyMzQsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEyeDEwX0hEUiA9IDIzNSwK
KyAgICBQaXhlbEZvcm1hdEFTVENfMTJ4MTJfSERSID0gMjM2LAorICAgIFBpeGVsRm9ybWF0R0JH
UjQyMiA9IDI0MCwKKyAgICBQaXhlbEZvcm1hdEJHUkc0MjIgPSAyNDEsCisgICAgUGl4ZWxGb3Jt
YXREZXB0aDE2VW5vcm0gPSAyNTAsCisgICAgUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXQgPSAyNTIs
CisgICAgUGl4ZWxGb3JtYXRTdGVuY2lsOCA9IDI1MywKKyAgICBQaXhlbEZvcm1hdERlcHRoMjRV
bm9ybV9TdGVuY2lsOCA9IDI1NSwKKyAgICBQaXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2ls
OCA9IDI2MCwKKyAgICBQaXhlbEZvcm1hdFgzMl9TdGVuY2lsOCA9IDI2MSwKKyAgICBQaXhlbEZv
cm1hdFgyNF9TdGVuY2lsOCA9IDI2MiwKKyAgICBQaXhlbEZvcm1hdEJHUkExMF9YUiA9IDU1MiwK
KyAgICBQaXhlbEZvcm1hdEJHUkExMF9YUl9zUkdCID0gNTUzLAorICAgIFBpeGVsRm9ybWF0QkdS
MTBfWFIgPSA1NTQsCisgICAgUGl4ZWxGb3JtYXRCR1IxMF9YUl9zUkdCID0gNTU1LAorfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBy
aXZhdGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFByaXZh
dGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZhNmFhYmVlNzQyNzQwZWFkNTFkYjE1ZGEyYTczYmRlYWU3ODZk
NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMUHJpdmF0ZS5ocHAKQEAgLTAsMCArMSwxMzUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFByaXZhdGUuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorCisjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIF9NVExfUFJJVkFURV9D
TFMoc3ltYm9sKSAoUHJpdmF0ZTo6Q2xhc3M6OnNfayMjc3ltYm9sKQorI2RlZmluZSBfTVRMX1BS
SVZBVEVfU0VMKGFjY2Vzc29yKSAoUHJpdmF0ZTo6U2VsZWN0b3I6OnNfayMjYWNjZXNzb3IpCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaWYgZGVm
aW5lZChNVExfUFJJVkFURV9JTVBMRU1FTlRBVElPTikKKworI2RlZmluZSBfTVRMX1BSSVZBVEVf
VklTSUJJTElUWSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorI2RlZmlu
ZSBfTVRMX1BSSVZBVEVfSU1QT1JUIF9fYXR0cmlidXRlX18oKHdlYWtfaW1wb3J0KSkKKworI2lm
IF9fT0JKQ19fCisjZGVmaW5lIF9NVExfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wp
ICgoX19icmlkZ2Ugdm9pZCopb2JqY19sb29rVXBDbGFzcygjc3ltYm9sKSkKKyNlbHNlCisjZGVm
aW5lIF9NVExfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpIG9iamNfbG9va1VwQ2xh
c3MoI3N5bWJvbCkKKyNlbmRpZiAvLyBfX09CSkNfXworCisjZGVmaW5lIF9NVExfUFJJVkFURV9E
RUZfQ0xTKHN5bWJvbCkgdm9pZCogc19rIyNzeW1ib2wgX01UTF9QUklWQVRFX1ZJU0lCSUxJVFkg
PSBfTVRMX1BSSVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKTsKKyNkZWZpbmUgX01UTF9Q
UklWQVRFX0RFRl9QUk8oc3ltYm9sKQorI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX1NFTChhY2Nl
c3Nvciwgc3ltYm9sKSBTRUwgc19rIyNhY2Nlc3NvciBfTVRMX1BSSVZBVEVfVklTSUJJTElUWSA9
IHNlbF9yZWdpc3Rlck5hbWUoc3ltYm9sKTsKKworI2lmIGRlZmluZWQoX19NQUNfMTBfMTYpIHx8
IGRlZmluZWQoX19NQUNfMTFfMCkgfHwgZGVmaW5lZChfX01BQ18xMl8wKSB8fCBkZWZpbmVkKF9f
SVBIT05FXzE0XzApIHx8IGRlZmluZWQoX19JUEhPTkVfMTVfMCkgfHwgZGVmaW5lZChfX1RWT1Nf
MTRfMCkgfHwgZGVmaW5lZChfX1RWT1NfMTVfMCkKKworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVG
X1NUUih0eXBlLCBzeW1ib2wpICAgICAgICAgICAgICAgICAgXAorICAgIF9NVExfRVhURVJOIHR5
cGUgY29uc3QgTVRMIyNzeW1ib2wgX01UTF9QUklWQVRFX0lNUE9SVDsgXAorICAgIHR5cGUgY29u
c3QgICAgICAgICAgICAgICAgICAgICAgICAgTVRMOjpzeW1ib2wgPSAobnVsbHB0ciAhPSAmTVRM
IyNzeW1ib2wpID8gTVRMIyNzeW1ib2wgOiBudWxscHRyOworCisjZWxzZQorCisjaW5jbHVkZSA8
ZGxmY24uaD4KKworbmFtZXNwYWNlIE1UTAoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBfVHlwZT4KKyAgICBpbmxpbmUgX1R5cGUgY29uc3QgTG9hZFN5
bWJvbChjb25zdCBjaGFyKiBwU3ltYm9sKQorICAgIHsKKyAgICAgICAgY29uc3QgX1R5cGUqIHBB
ZGRyZXNzID0gc3RhdGljX2Nhc3Q8X1R5cGUqPihkbHN5bShSVExEX0RFRkFVTFQsIHBTeW1ib2wp
KTsKKworICAgICAgICByZXR1cm4gcEFkZHJlc3MgPyAqcEFkZHJlc3MgOiBudWxscHRyOworICAg
IH0KKworfSAvLyBQcml2YXRlCit9IC8vIE1UTAorCisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZf
U1RSKHR5cGUsIHN5bWJvbCkgXAorICAgIF9NVExfRVhURVJOIHR5cGUgY29uc3QgTVRMIyNzeW1i
b2w7ICAgIFwKKyAgICB0eXBlIGNvbnN0ICAgICAgICAgICAgIE1UTDo6c3ltYm9sID0gUHJpdmF0
ZTo6TG9hZFN5bWJvbDx0eXBlPigiTVRMIiAjc3ltYm9sKTsKKworI2VuZGlmIC8vIGRlZmluZWQo
X19NQUNfMTBfMTYpIHx8IGRlZmluZWQoX19NQUNfMTFfMCkgfHwgZGVmaW5lZChfX01BQ18xMl8w
KSB8fCBkZWZpbmVkKF9fSVBIT05FXzE0XzApIHx8IGRlZmluZWQoX19JUEhPTkVfMTVfMCkgfHwg
ZGVmaW5lZChfX1RWT1NfMTRfMCkgfHwgZGVmaW5lZChfX1RWT1NfMTVfMCkKKworI2Vsc2UKKwor
I2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX0NMUyhzeW1ib2wpIGV4dGVybiB2b2lkKiBzX2sjI3N5
bWJvbDsKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9QUk8oc3ltYm9sKQorI2RlZmluZSBfTVRM
X1BSSVZBVEVfREVGX1NFTChhY2Nlc3Nvciwgc3ltYm9sKSBleHRlcm4gU0VMIHNfayMjYWNjZXNz
b3I7CisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfU1RSKHR5cGUsIHN5bWJvbCkKKworI2VuZGlm
IC8vIE1UTF9QUklWQVRFX0lNUExFTUVOVEFUSU9OCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTVRMCit7CituYW1lc3BhY2UgUHJp
dmF0ZQoreworICAgIG5hbWVzcGFjZSBDbGFzcworICAgIHsKKworICAgIH0gLy8gQ2xhc3MKK30g
Ly8gUHJpdmF0ZQorfSAvLyBNVEwKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBNVEwKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7Cisg
ICAgbmFtZXNwYWNlIFByb3RvY29sCisgICAgeworCisgICAgfSAvLyBQcm90b2NvbAorfSAvLyBQ
cml2YXRlCit9IC8vIE1UTAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworbmFtZXNwYWNlIE1UTAoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAgICBu
YW1lc3BhY2UgU2VsZWN0b3IKKyAgICB7CisKKyAgICAgICAgX01UTF9QUklWQVRFX0RFRl9TRUwo
YmVnaW5TY29wZSwKKyAgICAgICAgICAgICJiZWdpblNjb3BlIik7CisgICAgICAgIF9NVExfUFJJ
VkFURV9ERUZfU0VMKGVuZFNjb3BlLAorICAgICAgICAgICAgImVuZFNjb3BlIik7CisgICAgfSAv
LyBDbGFzcworfSAvLyBQcml2YXRlCit9IC8vIE1UTAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU4NjY5NTQ1Y2IyYzhlYTMzMDkxY2ZlNWE5ZjhlYzE4NmJiYTEyYmUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmFzdGVyaXph
dGlvblJhdGUuaHBwCkBAIC0wLDAgKzEsMzg2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5o
cHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgor
I2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTERldmljZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMu
aHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFy
cmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFy
cmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSog
ICAgICAgIGluaXQoKTsKKworICAgIE5TOjpOdW1iZXIqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgTlM6Ok51bWJlciog
dmFsdWUsIE5TOjpVSW50ZWdlciBpbmRleCk7Cit9OworCitjbGFzcyBSYXN0ZXJpemF0aW9uUmF0
ZUxheWVyRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSYXN0ZXJpemF0aW9uUmF0ZUxh
eWVyRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmFzdGVyaXphdGlv
blJhdGVMYXllckRlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTGF5ZXJEZXNjcmlwdG9yKiAgICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6UmFzdGVyaXph
dGlvblJhdGVMYXllckRlc2NyaXB0b3IqICAgICAgICAgaW5pdChNVEw6OlNpemUgc2FtcGxlQ291
bnQpOworCisgICAgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogICAgICAg
ICBpbml0KE1UTDo6U2l6ZSBzYW1wbGVDb3VudCwgY29uc3QgZmxvYXQqIGhvcml6b250YWwsIGNv
bnN0IGZsb2F0KiB2ZXJ0aWNhbCk7CisKKyAgICBNVEw6OlNpemUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50KCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFNhbXBsZUNvdW50KCkgY29u
c3Q7CisKKyAgICBmbG9hdCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhvcml6b250YWxTYW1wbGVTdG9yYWdlKCkgY29uc3Q7CisKKyAgICBmbG9hdCogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsU2FtcGxlU3RvcmFnZSgpIGNv
bnN0OworCisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogICAgICAgICAg
ICBob3Jpem9udGFsKCkgY29uc3Q7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBs
ZUFycmF5KiAgICAgICAgICAgIHZlcnRpY2FsKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbXBsZUNvdW50KE1UTDo6U2l6
ZSBzYW1wbGVDb3VudCk7Cit9OworCitjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkg
OiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheT4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KiBh
bGxvYygpOworCisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KiAgICAgICAg
aW5pdCgpOworCisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqICAg
b2JqZWN0KE5TOjpVSW50ZWdlciBsYXllckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBSYXN0ZXJpemF0
aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogbGF5ZXIsIE5TOjpVSW50ZWdlciBsYXllckluZGV4KTsK
K307CisKK2NsYXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6
Q29weWluZzxSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAg
c3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsK
KworICAgIHN0YXRpYyBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIHJhc3Rl
cml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcihNVEw6OlNpemUgc2NyZWVuU2l6ZSk7CisKKyAgICBz
dGF0aWMgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiByYXN0ZXJpemF0aW9u
UmF0ZU1hcERlc2NyaXB0b3IoTVRMOjpTaXplIHNjcmVlblNpemUsIGNvbnN0IGNsYXNzIFJhc3Rl
cml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBsYXllcik7CisKKyAgICBzdGF0aWMgY2xhc3Mg
UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3IoTVRMOjpTaXplIHNjcmVlblNpemUsIE5TOjpVSW50ZWdlciBsYXllckNvdW50LCBNVEw6
OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBjb25zdCogbGF5ZXJzKTsKKworICAg
IGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiAgICAgIGxheWVyKE5TOjpV
SW50ZWdlciBsYXllckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldExheWVyKGNvbnN0IGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5
ZXJEZXNjcmlwdG9yKiBsYXllciwgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpOworCisgICAgY2xh
c3MgUmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KiAgICAgICAgICAgbGF5ZXJzKCkgY29uc3Q7
CisKKyAgICBNVEw6OlNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3Jl
ZW5TaXplKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0U2NyZWVuU2l6ZShNVEw6OlNpemUgc2NyZWVuU2l6ZSk7CisKKyAgICBOUzo6
U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExhYmVs
KGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxheWVyQ291bnQoKSBjb25zdDsKK307CisKK2NsYXNzIFJh
c3Rlcml6YXRpb25SYXRlTWFwIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSYXN0ZXJpemF0aW9u
UmF0ZU1hcD4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBEZXZpY2UqICAgICBkZXZpY2UoKSBjb25z
dDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgIGxhYmVsKCkgY29uc3Q7CisKKyAgICBNVEw6OlNp
emUgICAgICAgICBzY3JlZW5TaXplKCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemUgICAgICAgICBw
aHlzaWNhbEdyYW51bGFyaXR5KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICBsYXll
ckNvdW50KCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemVBbmRBbGlnbiBwYXJhbWV0ZXJCdWZmZXJT
aXplQW5kQWxpZ24oKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgIGNvcHlQYXJhbWV0
ZXJEYXRhVG9CdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBv
ZmZzZXQpOworCisgICAgTVRMOjpTaXplICAgICAgICAgcGh5c2ljYWxTaXplKE5TOjpVSW50ZWdl
ciBsYXllckluZGV4KTsKKworICAgIE1UTDo6Q29vcmRpbmF0ZTJEIG1hcFNjcmVlblRvUGh5c2lj
YWxDb29yZGluYXRlcyhNVEw6OkNvb3JkaW5hdGUyRCBzY3JlZW5Db29yZGluYXRlcywgTlM6OlVJ
bnRlZ2VyIGxheWVySW5kZXgpOworCisgICAgTVRMOjpDb29yZGluYXRlMkQgbWFwUGh5c2ljYWxU
b1NjcmVlbkNvb3JkaW5hdGVzKE1UTDo6Q29vcmRpbmF0ZTJEIHBoeXNpY2FsQ29vcmRpbmF0ZXMs
IE5TOjpVSW50ZWdlciBsYXllckluZGV4KTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogTVRM
OjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheT4oX01UTF9Q
UklWQVRFX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5
KiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXk6OmluaXQoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheT4oKTsK
K30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBO
Uzo6TnVtYmVyKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXk6Om9iamVjdChOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6Ok51
bWJlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0Xyks
IGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXk6OnNldE9i
amVjdChjb25zdCBOUzo6TnVtYmVyKiB2YWx1ZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmpl
Y3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIHZhbHVlLCBpbmRleCk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNj
cmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjphbGxvYygpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVMYXllckRl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJE
ZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJh
c3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yPigpOworfQorCisvLyBtZXRob2Q6IGluaXRX
aXRoU2FtcGxlQ291bnQ6CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJE
ZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjppbml0KE1U
TDo6U2l6ZSBzYW1wbGVDb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChpbml0V2l0aFNhbXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8gbWV0aG9k
OiBpbml0V2l0aFNhbXBsZUNvdW50Omhvcml6b250YWw6dmVydGljYWw6CitfTVRMX0lOTElORSBN
VEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTGF5ZXJEZXNjcmlwdG9yOjppbml0KE1UTDo6U2l6ZSBzYW1wbGVDb3VudCwgY29uc3QgZmxv
YXQqIGhvcml6b250YWwsIGNvbnN0IGZsb2F0KiB2ZXJ0aWNhbCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChpbml0V2l0aFNhbXBsZUNvdW50X2hvcml6b250YWxfdmVy
dGljYWxfKSwgc2FtcGxlQ291bnQsIGhvcml6b250YWwsIHZlcnRpY2FsKTsKK30KKworLy8gcHJv
cGVydHk6IHNhbXBsZUNvdW50CitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
YW1wbGVDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogbWF4U2FtcGxlQ291bnQKK19NVExfSU5M
SU5FIE1UTDo6U2l6ZSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjptYXhT
YW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFNhbXBsZUNvdW50KSk7Cit9CisKKy8v
IHByb3BlcnR5OiBob3Jpem9udGFsU2FtcGxlU3RvcmFnZQorX01UTF9JTkxJTkUgZmxvYXQqIE1U
TDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6Omhvcml6b250YWxTYW1wbGVTdG9y
YWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxmbG9hdCo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoaG9yaXpvbnRhbFNhbXBsZVN0b3JhZ2UpKTsKK30KKworLy8g
cHJvcGVydHk6IHZlcnRpY2FsU2FtcGxlU3RvcmFnZQorX01UTF9JTkxJTkUgZmxvYXQqIE1UTDo6
UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6OnZlcnRpY2FsU2FtcGxlU3RvcmFnZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHZlcnRpY2FsU2FtcGxlU3RvcmFnZSkpOworfQorCisvLyBwcm9wZXJ0
eTogaG9yaXpvbnRhbAorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFy
cmF5KiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjpob3Jpem9udGFsKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRp
b25SYXRlU2FtcGxlQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhvcml6b250YWwpKTsK
K30KKworLy8gcHJvcGVydHk6IHZlcnRpY2FsCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlU2FtcGxlQXJyYXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6
OnZlcnRpY2FsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZl
cnRpY2FsKSk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2FtcGxlQ291bnQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50
KE1UTDo6U2l6ZSBzYW1wbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlQ291bnRfKSwgc2FtcGxlQ291bnQpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZUxheWVyQXJyYXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5OjphbGxv
YygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmFzdGVyaXphdGlvblJh
dGVMYXllckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJB
cnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXph
dGlvblJhdGVMYXllckFycmF5KiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheTo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZUxheWVyQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0
OgorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogTVRM
OjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgbGF5ZXJJ
bmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdElu
ZGV4ZWRTdWJzY3JpcHRfKSwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0
OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZUxheWVyQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5
ZXJEZXNjcmlwdG9yKiBsYXllciwgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9h
dEluZGV4ZWRTdWJzY3JpcHRfKSwgbGF5ZXIsIGxheWVySW5kZXgpOworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNj
cmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRv
cikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlv
blJhdGVNYXBEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHJhc3Rlcml6YXRp
b25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOgorX01UTF9JTkxJTkUgTVRMOjpSYXN0
ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNj
cmlwdG9yOjpyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IoTVRMOjpTaXplIHNjcmVlblNp
emUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcERlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRl
TWFwRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwocmFzdGVyaXphdGlvblJhdGVNYXBEZXNj
cmlwdG9yV2l0aFNjcmVlblNpemVfKSwgc2NyZWVuU2l6ZSk7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOmxheWVyOgor
X01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIE1UTDo6UmFz
dGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0
b3IoTVRMOjpTaXplIHNjcmVlblNpemUsIGNvbnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3IqIGxheWVyKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExS
YXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHJhc3Rlcml6
YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplX2xheWVyXyksIHNjcmVlblNpemUs
IGxheWVyKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogcmFzdGVyaXphdGlvblJhdGVNYXBEZXNj
cmlwdG9yV2l0aFNjcmVlblNpemU6bGF5ZXJDb3VudDpsYXllcnM6CitfTVRMX0lOTElORSBNVEw6
OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1h
cERlc2NyaXB0b3I6OnJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcihNVEw6OlNpemUgc2Ny
ZWVuU2l6ZSwgTlM6OlVJbnRlZ2VyIGxheWVyQ291bnQsIE1UTDo6UmFzdGVyaXphdGlvblJhdGVM
YXllckRlc2NyaXB0b3IqIGNvbnN0KiBsYXllcnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9T
RUwocmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemVfbGF5ZXJDb3Vu
dF9sYXllcnNfKSwgc2NyZWVuU2l6ZSwgbGF5ZXJDb3VudCwgbGF5ZXJzKTsKK30KKworLy8gbWV0
aG9kOiBsYXllckF0SW5kZXg6CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5
ZXJEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6bGF5ZXIo
TlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobGF5ZXJBdEluZGV4XyksIGxheWVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNl
dExheWVyOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVN
YXBEZXNjcmlwdG9yOjpzZXRMYXllcihjb25zdCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJE
ZXNjcmlwdG9yKiBsYXllciwgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExheWVyX2F0SW5k
ZXhfKSwgbGF5ZXIsIGxheWVySW5kZXgpOworfQorCisvLyBwcm9wZXJ0eTogbGF5ZXJzCitfTVRM
X0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheSogTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZU1hcERlc2NyaXB0b3I6OmxheWVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGxheWVycykpOworfQorCisvLyBwcm9wZXJ0eTogc2NyZWVuU2l6ZQor
X01UTF9JTkxJTkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9y
OjpzY3JlZW5TaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlNpemU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2NyZWVuU2l6ZSkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpzZXRTY3Jl
ZW5TaXplKE1UTDo6U2l6ZSBzY3JlZW5TaXplKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTY3JlZW5TaXplXyksIHNjcmVlblNpemUp
OworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6
UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJhc3Rlcml6YXRpb25SYXRl
TWFwRGVzY3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVs
XyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGxheWVyQ291bnQKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6bGF5ZXJDb3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxheWVyQ291bnQpKTsKK30KKworLy8gcHJvcGVydHk6
IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVN
YXA6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6UmFzdGVyaXphdGlvblJh
dGVNYXA6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9w
ZXJ0eTogc2NyZWVuU2l6ZQorX01UTF9JTkxJTkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlv
blJhdGVNYXA6OnNjcmVlblNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzY3JlZW5TaXplKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBwaHlzaWNhbEdyYW51bGFyaXR5CitfTVRMX0lOTElORSBNVEw6OlNp
emUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcDo6cGh5c2ljYWxHcmFudWxhcml0eSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHBoeXNpY2FsR3JhbnVsYXJpdHkpKTsKK30KKworLy8gcHJvcGVydHk6IGxh
eWVyQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJhc3Rlcml6YXRpb25SYXRl
TWFwOjpsYXllckNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGF5ZXJDb3VudCkpOworfQor
CisvLyBwcm9wZXJ0eTogcGFyYW1ldGVyQnVmZmVyU2l6ZUFuZEFsaWduCitfTVRMX0lOTElORSBN
VEw6OlNpemVBbmRBbGlnbiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpwYXJhbWV0ZXJCdWZm
ZXJTaXplQW5kQWxpZ24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6U2l6ZUFuZEFsaWduPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhcmFtZXRlckJ1ZmZl
clNpemVBbmRBbGlnbikpOworfQorCisvLyBtZXRob2Q6IGNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZm
ZXI6b2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpj
b3B5UGFyYW1ldGVyRGF0YVRvQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpV
SW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXJfb2Zmc2V0XyksIGJ1ZmZl
ciwgb2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiBwaHlzaWNhbFNpemVGb3JMYXllcjoKK19NVExf
SU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpwaHlzaWNhbFNpemUo
TlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBoeXNpY2FsU2l6ZUZvckxheWVy
XyksIGxheWVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IG1hcFNjcmVlblRvUGh5c2ljYWxDb29y
ZGluYXRlczpmb3JMYXllcjoKK19NVExfSU5MSU5FIE1UTDo6Q29vcmRpbmF0ZTJEIE1UTDo6UmFz
dGVyaXphdGlvblJhdGVNYXA6Om1hcFNjcmVlblRvUGh5c2ljYWxDb29yZGluYXRlcyhNVEw6OkNv
b3JkaW5hdGUyRCBzY3JlZW5Db29yZGluYXRlcywgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb29yZGluYXRlMkQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobWFwU2NyZWVuVG9QaHlzaWNhbENvb3JkaW5hdGVzX2ZvckxheWVy
XyksIHNjcmVlbkNvb3JkaW5hdGVzLCBsYXllckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBtYXBQ
aHlzaWNhbFRvU2NyZWVuQ29vcmRpbmF0ZXM6Zm9yTGF5ZXI6CitfTVRMX0lOTElORSBNVEw6OkNv
b3JkaW5hdGUyRCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjptYXBQaHlzaWNhbFRvU2NyZWVu
Q29vcmRpbmF0ZXMoTVRMOjpDb29yZGluYXRlMkQgcGh5c2ljYWxDb29yZGluYXRlcywgTlM6OlVJ
bnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpDb29yZGluYXRlMkQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWFwUGh5c2ljYWxUb1NjcmVl
bkNvb3JkaW5hdGVzX2ZvckxheWVyXyksIHBoeXNpY2FsQ29vcmRpbmF0ZXMsIGxheWVySW5kZXgp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJkYTg1NjEz
NWQ5N2FiZDJkODU2ZjA0NmU4YzczNjAyMzJjNmRlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJDb21tYW5kRW5jb2Rlci5o
cHAKQEAgLTAsMCArMSw5NTggQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBw
PgorCisjaW5jbHVkZSAiTVRMQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kRW5jb2Rl
ci5ocHAiCisjaW5jbHVkZSAiTVRMSGVhcC5ocHAiCisjaW5jbHVkZSAiTVRMSW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBw
IgorI2luY2x1ZGUgIk1UTFJlbmRlclBhc3MuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhw
cCIKKyNpbmNsdWRlICJNVExTYW1wbGVyLmhwcCIKKyNpbmNsdWRlICJNVExTdGFnZUlucHV0T3V0
cHV0RGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAi
TVRMVHlwZXMuaHBwIgorI2luY2x1ZGUgIk1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCIKKwor
bmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgUHJpbWl0aXZlVHlwZSkg
eworICAgIFByaW1pdGl2ZVR5cGVQb2ludCA9IDAsCisgICAgUHJpbWl0aXZlVHlwZUxpbmUgPSAx
LAorICAgIFByaW1pdGl2ZVR5cGVMaW5lU3RyaXAgPSAyLAorICAgIFByaW1pdGl2ZVR5cGVUcmlh
bmdsZSA9IDMsCisgICAgUHJpbWl0aXZlVHlwZVRyaWFuZ2xlU3RyaXAgPSA0LAorfTsKKworX01U
TF9FTlVNKE5TOjpVSW50ZWdlciwgVmlzaWJpbGl0eVJlc3VsdE1vZGUpIHsKKyAgICBWaXNpYmls
aXR5UmVzdWx0TW9kZURpc2FibGVkID0gMCwKKyAgICBWaXNpYmlsaXR5UmVzdWx0TW9kZUJvb2xl
YW4gPSAxLAorICAgIFZpc2liaWxpdHlSZXN1bHRNb2RlQ291bnRpbmcgPSAyLAorfTsKKworc3Ry
dWN0IFNjaXNzb3JSZWN0Cit7CisgICAgTlM6OlVJbnRlZ2VyIHg7CisgICAgTlM6OlVJbnRlZ2Vy
IHk7CisgICAgTlM6OlVJbnRlZ2VyIHdpZHRoOworICAgIE5TOjpVSW50ZWdlciBoZWlnaHQ7Cit9
IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgVmlld3BvcnQKK3sKKyAgICBkb3VibGUgb3JpZ2luWDsK
KyAgICBkb3VibGUgb3JpZ2luWTsKKyAgICBkb3VibGUgd2lkdGg7CisgICAgZG91YmxlIGhlaWdo
dDsKKyAgICBkb3VibGUgem5lYXI7CisgICAgZG91YmxlIHpmYXI7Cit9IF9NVExfUEFDS0VEOwor
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBDdWxsTW9kZSkgeworICAgIEN1bGxNb2RlTm9uZSA9
IDAsCisgICAgQ3VsbE1vZGVGcm9udCA9IDEsCisgICAgQ3VsbE1vZGVCYWNrID0gMiwKK307CisK
K19NVExfRU5VTShOUzo6VUludGVnZXIsIFdpbmRpbmcpIHsKKyAgICBXaW5kaW5nQ2xvY2t3aXNl
ID0gMCwKKyAgICBXaW5kaW5nQ291bnRlckNsb2Nrd2lzZSA9IDEsCit9OworCitfTVRMX0VOVU0o
TlM6OlVJbnRlZ2VyLCBEZXB0aENsaXBNb2RlKSB7CisgICAgRGVwdGhDbGlwTW9kZUNsaXAgPSAw
LAorICAgIERlcHRoQ2xpcE1vZGVDbGFtcCA9IDEsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRl
Z2VyLCBUcmlhbmdsZUZpbGxNb2RlKSB7CisgICAgVHJpYW5nbGVGaWxsTW9kZUZpbGwgPSAwLAor
ICAgIFRyaWFuZ2xlRmlsbE1vZGVMaW5lcyA9IDEsCit9OworCitzdHJ1Y3QgRHJhd1ByaW1pdGl2
ZXNJbmRpcmVjdEFyZ3VtZW50cworeworICAgIHVpbnQzMl90IHZlcnRleENvdW50OworICAgIHVp
bnQzMl90IGluc3RhbmNlQ291bnQ7CisgICAgdWludDMyX3QgdmVydGV4U3RhcnQ7CisgICAgdWlu
dDMyX3QgYmFzZUluc3RhbmNlOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IERyYXdJbmRleGVk
UHJpbWl0aXZlc0luZGlyZWN0QXJndW1lbnRzCit7CisgICAgdWludDMyX3QgaW5kZXhDb3VudDsK
KyAgICB1aW50MzJfdCBpbnN0YW5jZUNvdW50OworICAgIHVpbnQzMl90IGluZGV4U3RhcnQ7Cisg
ICAgaW50MzJfdCAgYmFzZVZlcnRleDsKKyAgICB1aW50MzJfdCBiYXNlSW5zdGFuY2U7Cit9IF9N
VExfUEFDS0VEOworCitzdHJ1Y3QgVmVydGV4QW1wbGlmaWNhdGlvblZpZXdNYXBwaW5nCit7Cisg
ICAgdWludDMyX3Qgdmlld3BvcnRBcnJheUluZGV4T2Zmc2V0OworICAgIHVpbnQzMl90IHJlbmRl
clRhcmdldEFycmF5SW5kZXhPZmZzZXQ7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgRHJhd1Bh
dGNoSW5kaXJlY3RBcmd1bWVudHMKK3sKKyAgICB1aW50MzJfdCBwYXRjaENvdW50OworICAgIHVp
bnQzMl90IGluc3RhbmNlQ291bnQ7CisgICAgdWludDMyX3QgcGF0Y2hTdGFydDsKKyAgICB1aW50
MzJfdCBiYXNlSW5zdGFuY2U7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgUXVhZFRlc3NlbGxh
dGlvbkZhY3RvcnNIYWxmCit7CisgICAgdWludDE2X3QgZWRnZVRlc3NlbGxhdGlvbkZhY3Rvcls0
XTsKKyAgICB1aW50MTZfdCBpbnNpZGVUZXNzZWxsYXRpb25GYWN0b3JbMl07Cit9IF9NVExfUEFD
S0VEOworCitzdHJ1Y3QgVHJpYW5nbGVUZXNzZWxsYXRpb25GYWN0b3JzSGFsZgoreworICAgIHVp
bnQxNl90IGVkZ2VUZXNzZWxsYXRpb25GYWN0b3JbM107CisgICAgdWludDE2X3QgaW5zaWRlVGVz
c2VsbGF0aW9uRmFjdG9yOworfSBfTVRMX1BBQ0tFRDsKKworX01UTF9PUFRJT05TKE5TOjpVSW50
ZWdlciwgUmVuZGVyU3RhZ2VzKSB7CisgICAgUmVuZGVyU3RhZ2VWZXJ0ZXggPSAxLAorICAgIFJl
bmRlclN0YWdlRnJhZ21lbnQgPSAyLAorICAgIFJlbmRlclN0YWdlVGlsZSA9IDQsCit9OworCitj
bGFzcyBSZW5kZXJDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVy
Q29tbWFuZEVuY29kZXIsIENvbW1hbmRFbmNvZGVyPgoreworcHVibGljOgorICAgIHZvaWQgICAg
ICAgICBzZXRSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lU3Rh
dGUqIHBpcGVsaW5lU3RhdGUpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleEJ5dGVzKGNv
bnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIq
IGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAg
IHZvaWQgICAgICAgICBzZXRWZXJ0ZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhCdWZmZXJz
KE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5T
OjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4VGV4dHVyZShjb25z
dCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9p
ZCAgICAgICAgIHNldFZlcnRleFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwgTlM6
OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhTYW1wbGVyU3RhdGUo
Y29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpOwor
CisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3Rh
dGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0
VmVydGV4U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxv
YXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIgaW5kZXgpOwor
CisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3Rh
dGUqIHNhbXBsZXJzW10sIGNvbnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBs
b2RNYXhDbGFtcHNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRW
ZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJs
ZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQg
ICAgICAgICBzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgVmlzaWJs
ZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAg
ICB2b2lkICAgICAgICAgc2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBj
bGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
LCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRl
eEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7
CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0
IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6
VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZpZXdwb3J0KE1U
TDo6Vmlld3BvcnQgdmlld3BvcnQpOworCisgICAgdm9pZCAgICAgICAgIHNldFZpZXdwb3J0cyhj
b25zdCBNVEw6OlZpZXdwb3J0KiB2aWV3cG9ydHMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAg
ICB2b2lkICAgICAgICAgc2V0RnJvbnRGYWNpbmdXaW5kaW5nKE1UTDo6V2luZGluZyBmcm9udEZh
Y2luZ1dpbmRpbmcpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleEFtcGxpZmljYXRpb25D
b3VudChOUzo6VUludGVnZXIgY291bnQsIGNvbnN0IE1UTDo6VmVydGV4QW1wbGlmaWNhdGlvblZp
ZXdNYXBwaW5nKiB2aWV3TWFwcGluZ3MpOworCisgICAgdm9pZCAgICAgICAgIHNldEN1bGxNb2Rl
KE1UTDo6Q3VsbE1vZGUgY3VsbE1vZGUpOworCisgICAgdm9pZCAgICAgICAgIHNldERlcHRoQ2xp
cE1vZGUoTVRMOjpEZXB0aENsaXBNb2RlIGRlcHRoQ2xpcE1vZGUpOworCisgICAgdm9pZCAgICAg
ICAgIHNldERlcHRoQmlhcyhmbG9hdCBkZXB0aEJpYXMsIGZsb2F0IHNsb3BlU2NhbGUsIGZsb2F0
IGNsYW1wKTsKKworICAgIHZvaWQgICAgICAgICBzZXRTY2lzc29yUmVjdChNVEw6OlNjaXNzb3JS
ZWN0IHJlY3QpOworCisgICAgdm9pZCAgICAgICAgIHNldFNjaXNzb3JSZWN0cyhjb25zdCBNVEw6
OlNjaXNzb3JSZWN0KiBzY2lzc29yUmVjdHMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0VHJpYW5nbGVGaWxsTW9kZShNVEw6OlRyaWFuZ2xlRmlsbE1vZGUgZmls
bE1vZGUpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50Qnl0ZXMoY29uc3Qgdm9pZCog
Ynl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0RnJhZ21lbnRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIs
IE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0RnJhZ21lbnRCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJ
bnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudEJ1ZmZlcnMoTVRM
OjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJh
bmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFRleHR1cmUoY29uc3Qg
Y2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQg
ICAgICAgICBzZXRGcmFnbWVudFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwgTlM6
OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFNhbXBsZXJTdGF0
ZShjb25zdCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRleCk7
CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxl
clN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAg
IHNldEZyYWdtZW50U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxl
ciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIgaW5k
ZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50U2FtcGxlclN0YXRlcyhNVEw6OlNh
bXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0
IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAg
ICAgIHNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3MgVmlzaWJsZUZ1
bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisK
KyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3Qg
VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7
CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
KGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
c2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcyhjb25zdCBjbGFzcyBJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3Ry
dWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNl
dEJsZW5kQ29sb3JSZWQoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQg
YWxwaGEpOworCisgICAgdm9pZCAgICAgICAgIHNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGNs
YXNzIERlcHRoU3RlbmNpbFN0YXRlKiBkZXB0aFN0ZW5jaWxTdGF0ZSk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0U3RlbmNpbFJlZmVyZW5jZVZhbHVlKHVpbnQzMl90IHJlZmVyZW5jZVZhbHVlKTsK
KworICAgIHZvaWQgICAgICAgICBzZXRTdGVuY2lsRnJvbnRSZWZlcmVuY2VWYWx1ZSh1aW50MzJf
dCBmcm9udFJlZmVyZW5jZVZhbHVlLCB1aW50MzJfdCBiYWNrUmVmZXJlbmNlVmFsdWUpOworCisg
ICAgdm9pZCAgICAgICAgIHNldFZpc2liaWxpdHlSZXN1bHRNb2RlKE1UTDo6VmlzaWJpbGl0eVJl
c3VsdE1vZGUgbW9kZSwgTlM6OlVJbnRlZ2VyIG9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAg
c2V0Q29sb3JTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUlu
dGVnZXIgY29sb3JBdHRhY2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldERlcHRo
U3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbik7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0U3RlbmNpbFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24p
OworCisgICAgdm9pZCAgICAgICAgIHNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3Rv
cmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucywgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0
YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXREZXB0aFN0b3JlQWN0aW9uT3B0
aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpOworCisgICAg
dm9pZCAgICAgICAgIHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlv
bk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zKTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UHJp
bWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZl
cnRleFN0YXJ0LCBOUzo6VUludGVnZXIgdmVydGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5j
ZUNvdW50KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2
ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUludGVn
ZXIgdmVydGV4Q291bnQpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdJbmRleGVkUHJpbWl0aXZl
cyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4Q291
bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRleEJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFu
Y2VDb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6
UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRM
OjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyLCBO
Uzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQ
cmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIg
dmVydGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCwgTlM6OlVJbnRlZ2VyIGluc3Rh
bmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisgICAgdm9pZCAgICAgICAg
IGRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwg
TlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3Qg
Y2xhc3MgQnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0
LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OkludGVnZXIgYmFzZVZlcnRleCwgTlM6
OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7CisKKyAgICB2b2lkICAgICAgICAgZHJhd1ByaW1pdGl2
ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciog
aW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAg
ICB2b2lkICAgICAgICAgZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBw
cmltaXRpdmVUeXBlLCBNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IGNsYXNzIEJ1ZmZl
ciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgY2xh
c3MgQnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zm
c2V0KTsKKworICAgIHZvaWQgICAgICAgICB0ZXh0dXJlQmFycmllcigpOworCisgICAgdm9pZCAg
ICAgICAgIHVwZGF0ZUZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBmZW5jZSwgTVRMOjpSZW5kZXJT
dGFnZXMgc3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICB3YWl0Rm9yRmVuY2UoY29uc3QgY2xh
c3MgRmVuY2UqIGZlbmNlLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpOworCisgICAgdm9pZCAg
ICAgICAgIHNldFRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKTsK
KworICAgIHZvaWQgICAgICAgICBzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZShmbG9hdCBzY2Fs
ZSk7CisKKyAgICB2b2lkICAgICAgICAgZHJhd1BhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9m
UGF0Y2hDb250cm9sUG9pbnRzLCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2Vy
IHBhdGNoQ291bnQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50
LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UGF0
Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIGNvbnN0IGNsYXNz
IEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJP
ZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBp
bmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgZHJhd0luZGV4ZWRQYXRj
aGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRlZ2Vy
IHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBjbGFzcyBCdWZmZXIq
IHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBj
b25zdCBjbGFzcyBCdWZmZXIqIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIg
Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50
LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKTsKKworICAgIHZvaWQgICAgICAgICBkcmF3SW5k
ZXhlZFBhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBjb25z
dCBjbGFzcyBCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4
QnVmZmVyT2Zmc2V0LCBjb25zdCBjbGFzcyBCdWZmZXIqIGNvbnRyb2xQb2ludEluZGV4QnVmZmVy
LCBOUzo6VUludGVnZXIgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNz
IEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNl
dCk7CisKKyAgICBOUzo6VUludGVnZXIgdGlsZVdpZHRoKCkgY29uc3Q7CisKKyAgICBOUzo6VUlu
dGVnZXIgdGlsZUhlaWdodCgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVCeXRl
cyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZl
ciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisg
ICAgdm9pZCAgICAgICAgIHNldFRpbGVCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlQnVmZmVycyhN
VEw6OkJ1ZmZlciogYnVmZmVycywgY29uc3QgTlM6OlVJbnRlZ2VyKiBvZmZzZXRzLCBOUzo6UmFu
Z2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVUZXh0dXJlKGNvbnN0IGNsYXNz
IFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAg
ICAgc2V0VGlsZVRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJh
bmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlU2FtcGxlclN0YXRlKGNvbnN0IGNsYXNz
IFNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQg
ICAgICAgICBzZXRUaWxlU2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNb
XSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlU2FtcGxlclN0
YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAs
IGZsb2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAg
ICAgIHNldFRpbGVTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBj
b25zdCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5T
OjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZVZpc2libGVGdW5jdGlv
blRhYmxlKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlLCBO
Uzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVWaXNp
YmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0
aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGls
ZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlcklu
ZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZXMoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRU
aWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVy
ZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisg
ICAgdm9pZCAgICAgICAgIGRpc3BhdGNoVGhyZWFkc1BlclRpbGUoTVRMOjpTaXplIHRocmVhZHNQ
ZXJUaWxlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChO
Uzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5k
ZXgpOworCisgICAgdm9pZCAgICAgICAgIHVzZVJlc291cmNlKGNvbnN0IGNsYXNzIFJlc291cmNl
KiByZXNvdXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKTsKKworICAgIHZvaWQgICAgICAg
ICB1c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBj
b3VudCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKTsKKworICAgIHZvaWQgICAgICAgICB1c2VS
ZXNvdXJjZShjb25zdCBjbGFzcyBSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2Fn
ZSB1c2FnZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICB1
c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzLCBOUzo6VUludGVnZXIgY291bnQs
IE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKTsKKwor
ICAgIHZvaWQgICAgICAgICB1c2VIZWFwKGNvbnN0IGNsYXNzIEhlYXAqIGhlYXApOworCisgICAg
dm9pZCAgICAgICAgIHVzZUhlYXBzKE1UTDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2VyIGNv
dW50KTsKKworICAgIHZvaWQgICAgICAgICB1c2VIZWFwKGNvbnN0IGNsYXNzIEhlYXAqIGhlYXAs
IE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcyk7CisKKyAgICB2b2lkICAgICAgICAgdXNlSGVhcHMo
TVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVuZGVyU3RhZ2Vz
IHN0YWdlcyk7CisKKyAgICB2b2lkICAgICAgICAgZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29u
c3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5T
OjpSYW5nZSBleGVjdXRpb25SYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgZXhlY3V0ZUNvbW1h
bmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENv
bW1hbmRidWZmZXIsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RSYW5nZUJ1ZmZlciwgTlM6
OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAgICBtZW1v
cnlCYXJyaWVyKE1UTDo6QmFycmllclNjb3BlIHNjb3BlLCBNVEw6OlJlbmRlclN0YWdlcyBhZnRl
ciwgTVRMOjpSZW5kZXJTdGFnZXMgYmVmb3JlKTsKKworICAgIHZvaWQgICAgICAgICBtZW1vcnlC
YXJyaWVyKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1U
TDo6UmVuZGVyU3RhZ2VzIGFmdGVyLCBNVEw6OlJlbmRlclN0YWdlcyBiZWZvcmUpOworCisgICAg
dm9pZCAgICAgICAgIHNhbXBsZUNvdW50ZXJzSW5CdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNh
bXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6VUludGVnZXIgc2FtcGxlSW5kZXgsIGJvb2wg
YmFycmllcik7Cit9OworCit9CisKKy8vIG1ldGhvZDogc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZToK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0UmVuZGVyUGlw
ZWxpbmVTdGF0ZShjb25zdCBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lU3RhdGUp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFJlbmRlclBpcGVsaW5lU3RhdGVfKSwgcGlwZWxpbmVTdGF0ZSk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0VmVydGV4Qnl0ZXM6bGVuZ3RoOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBO
Uzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEJ5dGVzX2xl
bmd0aF9hdEluZGV4XyksIGJ5dGVzLCBsZW5ndGgsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBz
ZXRWZXJ0ZXhCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVm
ZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEJ1
ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldFZlcnRleEJ1ZmZlck9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRl
Z2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJPZmZzZXRfYXRJ
bmRleF8pLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhCdWZmZXJz
Om9mZnNldHM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRF
bmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5T
OjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4QnVmZmVyc19v
ZmZzZXRzX3dpdGhSYW5nZV8pLCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1l
dGhvZDogc2V0VmVydGV4VGV4dHVyZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSog
dGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhUZXh0dXJlX2F0SW5kZXhfKSwg
dGV4dHVyZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFRleHR1cmVzOndpdGhS
YW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVy
dGV4VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFZlcnRleFRleHR1cmVzX3dpdGhSYW5nZV8pLCB0ZXh0dXJlcywgcmFuZ2UpOworfQorCisvLyBt
ZXRob2Q6IHNldFZlcnRleFNhbXBsZXJTdGF0ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhTYW1wbGVyU3RhdGUoY29uc3QgTVRM
OjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4U2Ft
cGxlclN0YXRlX2F0SW5kZXhfKSwgc2FtcGxlciwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNl
dFZlcnRleFNhbXBsZXJTdGF0ZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0
YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZXNf
d2l0aFJhbmdlXyksIHNhbXBsZXJzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4
U2FtcGxlclN0YXRlOmxvZE1pbkNsYW1wOmxvZE1heENsYW1wOmF0SW5kZXg6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFNhbXBsZXJTdGF0ZShj
b25zdCBNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0
IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZV9s
b2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdEluZGV4XyksIHNhbXBsZXIsIGxvZE1pbkNsYW1wLCBs
b2RNYXhDbGFtcCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFNhbXBsZXJTdGF0
ZXM6bG9kTWluQ2xhbXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFNhbXBsZXJTdGF0ZXMoTVRMOjpT
YW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNvbnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25z
dCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhTYW1wbGVy
U3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBs
b2RNaW5DbGFtcHMsIGxvZE1heENsYW1wcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZl
cnRleFZpc2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxl
KGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50
ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJ
bmRleF8pLCBmdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9u
VGFibGVzKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10s
IE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhCdWZm
ZXJSYW5nZV8pLCBmdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZl
cnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4SW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZShjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4SW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIGludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6
YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6c2V0VmVydGV4QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VmVydGV4QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfKSwgYWNjZWxl
cmF0aW9uU3RydWN0dXJlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Vmlld3Bv
cnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZpZXdw
b3J0KE1UTDo6Vmlld3BvcnQgdmlld3BvcnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZpZXdwb3J0XyksIHZpZXdwb3J0KTsKK30K
KworLy8gbWV0aG9kOiBzZXRWaWV3cG9ydHM6Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZpZXdwb3J0cyhjb25zdCBNVEw6OlZpZXdwb3J0KiB2
aWV3cG9ydHMsIE5TOjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Vmlld3BvcnRzX2NvdW50XyksIHZpZXdw
b3J0cywgY291bnQpOworfQorCisvLyBtZXRob2Q6IHNldEZyb250RmFjaW5nV2luZGluZzoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJvbnRGYWNpbmdX
aW5kaW5nKE1UTDo6V2luZGluZyBmcm9udEZhY2luZ1dpbmRpbmcpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyb250RmFjaW5nV2lu
ZGluZ18pLCBmcm9udEZhY2luZ1dpbmRpbmcpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEFt
cGxpZmljYXRpb25Db3VudDp2aWV3TWFwcGluZ3M6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleEFtcGxpZmljYXRpb25Db3VudChOUzo6VUludGVn
ZXIgY291bnQsIGNvbnN0IE1UTDo6VmVydGV4QW1wbGlmaWNhdGlvblZpZXdNYXBwaW5nKiB2aWV3
TWFwcGluZ3MpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFZlcnRleEFtcGxpZmljYXRpb25Db3VudF92aWV3TWFwcGluZ3NfKSwgY291
bnQsIHZpZXdNYXBwaW5ncyk7Cit9CisKKy8vIG1ldGhvZDogc2V0Q3VsbE1vZGU6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEN1bGxNb2RlKE1UTDo6Q3Vs
bE1vZGUgY3VsbE1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEN1bGxNb2RlXyksIGN1bGxNb2RlKTsKK30KKworLy8gbWV0aG9k
OiBzZXREZXB0aENsaXBNb2RlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRF
bmNvZGVyOjpzZXREZXB0aENsaXBNb2RlKE1UTDo6RGVwdGhDbGlwTW9kZSBkZXB0aENsaXBNb2Rl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXREZXB0aENsaXBNb2RlXyksIGRlcHRoQ2xpcE1vZGUpOworfQorCisvLyBtZXRob2Q6IHNl
dERlcHRoQmlhczpzbG9wZVNjYWxlOmNsYW1wOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aEJpYXMoZmxvYXQgZGVwdGhCaWFzLCBmbG9hdCBzbG9w
ZVNjYWxlLCBmbG9hdCBjbGFtcCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhCaWFzX3Nsb3BlU2NhbGVfY2xhbXBfKSwgZGVw
dGhCaWFzLCBzbG9wZVNjYWxlLCBjbGFtcCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2Npc3NvclJl
Y3Q6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFNjaXNz
b3JSZWN0KE1UTDo6U2Npc3NvclJlY3QgcmVjdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2Npc3NvclJlY3RfKSwgcmVjdCk7Cit9
CisKKy8vIG1ldGhvZDogc2V0U2Npc3NvclJlY3RzOmNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTY2lzc29yUmVjdHMoY29uc3QgTVRMOjpTY2lz
c29yUmVjdCogc2Npc3NvclJlY3RzLCBOUzo6VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNjaXNzb3JSZWN0
c19jb3VudF8pLCBzY2lzc29yUmVjdHMsIGNvdW50KTsKK30KKworLy8gbWV0aG9kOiBzZXRUcmlh
bmdsZUZpbGxNb2RlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpzZXRUcmlhbmdsZUZpbGxNb2RlKE1UTDo6VHJpYW5nbGVGaWxsTW9kZSBmaWxsTW9kZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VHJpYW5nbGVGaWxsTW9kZV8pLCBmaWxsTW9kZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21l
bnRCeXRlczpsZW5ndGg6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRCeXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJbnRl
Z2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEJ5dGVzX2xlbmd0aF9h
dEluZGV4XyksIGJ5dGVzLCBsZW5ndGgsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFn
bWVudEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEJ1
ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldEZyYWdtZW50QnVmZmVyT2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50QnVmZmVyT2Zmc2V0KE5TOjpV
SW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRCdWZmZXJPZmZz
ZXRfYXRJbmRleF8pLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVu
dEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50QnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVyc1td
LCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdt
ZW50QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5nZV8pLCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7
Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRUZXh0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50VGV4dHVyZShjb25z
dCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRU
ZXh0dXJlX2F0SW5kZXhfKSwgdGV4dHVyZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZy
YWdtZW50VGV4dHVyZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4dHVyZXNb
XSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFRleHR1cmVzX3dpdGhSYW5nZV8pLCB0ZXh0
dXJlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50U2FtcGxlclN0YXRlOmF0
SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZy
YWdtZW50U2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlX2F0SW5kZXhfKSwgc2FtcGxl
ciwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50U2FtcGxlclN0YXRlczp3aXRo
UmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZy
YWdtZW50U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJh
bmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXNfd2l0aFJhbmdlXyksIHNhbXBsZXJz
LCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGU6bG9kTWlu
Q2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVy
U3RhdGUqIHNhbXBsZXIsIGZsb2F0IGxvZE1pbkNsYW1wLCBmbG9hdCBsb2RNYXhDbGFtcCwgTlM6
OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RN
YXhDbGFtcF9hdEluZGV4XyksIHNhbXBsZXIsIGxvZE1pbkNsYW1wLCBsb2RNYXhDbGFtcCwgaW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50U2FtcGxlclN0YXRlczpsb2RNaW5DbGFt
cHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRl
KiBzYW1wbGVyc1tdLCBjb25zdCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9k
TWF4Q2xhbXBzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzX2xv
ZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBsb2RNaW5DbGFt
cHMsIGxvZE1heENsYW1wcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50Vmlz
aWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25z
dCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIg
YnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRl
eF8pLCBmdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJh
Z21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFZpc2libGVGdW5jdGlv
blRhYmxlcyhjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlc1td
LCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhC
dWZmZXJSYW5nZV8pLCBmdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNl
dEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBp
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZy
YWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIGludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFn
bWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGlu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgaW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25z
dCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6
VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0
QnVmZmVySW5kZXhfKSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBidWZmZXJJbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0QmxlbmRDb2xvclJlZDpncmVlbjpibHVlOmFscGhhOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRCbGVuZENvbG9yUmVkKGZsb2F0
IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCbGVuZENvbG9y
UmVkX2dyZWVuX2JsdWVfYWxwaGFfKSwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworfQorCisv
LyBtZXRob2Q6IHNldERlcHRoU3RlbmNpbFN0YXRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBNVEw6OkRlcHRo
U3RlbmNpbFN0YXRlKiBkZXB0aFN0ZW5jaWxTdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhTdGVuY2lsU3RhdGVfKSwg
ZGVwdGhTdGVuY2lsU3RhdGUpOworfQorCisvLyBtZXRob2Q6IHNldFN0ZW5jaWxSZWZlcmVuY2VW
YWx1ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0U3Rl
bmNpbFJlZmVyZW5jZVZhbHVlKHVpbnQzMl90IHJlZmVyZW5jZVZhbHVlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsUmVm
ZXJlbmNlVmFsdWVfKSwgcmVmZXJlbmNlVmFsdWUpOworfQorCisvLyBtZXRob2Q6IHNldFN0ZW5j
aWxGcm9udFJlZmVyZW5jZVZhbHVlOmJhY2tSZWZlcmVuY2VWYWx1ZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0U3RlbmNpbEZyb250UmVmZXJlbmNlVmFs
dWUodWludDMyX3QgZnJvbnRSZWZlcmVuY2VWYWx1ZSwgdWludDMyX3QgYmFja1JlZmVyZW5jZVZh
bHVlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRTdGVuY2lsRnJvbnRSZWZlcmVuY2VWYWx1ZV9iYWNrUmVmZXJlbmNlVmFsdWVfKSwg
ZnJvbnRSZWZlcmVuY2VWYWx1ZSwgYmFja1JlZmVyZW5jZVZhbHVlKTsKK30KKworLy8gbWV0aG9k
OiBzZXRWaXNpYmlsaXR5UmVzdWx0TW9kZTpvZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZpc2liaWxpdHlSZXN1bHRNb2RlKE1UTDo6VmlzaWJp
bGl0eVJlc3VsdE1vZGUgbW9kZSwgTlM6OlVJbnRlZ2VyIG9mZnNldCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJpbGl0eVJl
c3VsdE1vZGVfb2Zmc2V0XyksIG1vZGUsIG9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Q29s
b3JTdG9yZUFjdGlvbjphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRDb2xvclN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rp
b24sIE5TOjpVSW50ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29sb3JTdG9yZUFjdGlv
bl9hdEluZGV4XyksIHN0b3JlQWN0aW9uLCBjb2xvckF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0RGVwdGhTdG9yZUFjdGlvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0RGVwdGhTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0
b3JlQWN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXREZXB0aFN0b3JlQWN0aW9uXyksIHN0b3JlQWN0aW9uKTsKK30KKworLy8g
bWV0aG9kOiBzZXRTdGVuY2lsU3RvcmVBY3Rpb246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldFN0ZW5jaWxTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9u
IHN0b3JlQWN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTdGVuY2lsU3RvcmVBY3Rpb25fKSwgc3RvcmVBY3Rpb24pOworfQor
CisvLyBtZXRob2Q6IHNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zOmF0SW5kZXg6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldENvbG9yU3RvcmVBY3Rpb25P
cHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucywgTlM6OlVJ
bnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9uc19h
dEluZGV4XyksIHN0b3JlQWN0aW9uT3B0aW9ucywgY29sb3JBdHRhY2htZW50SW5kZXgpOworfQor
CisvLyBtZXRob2Q6IHNldERlcHRoU3RvcmVBY3Rpb25PcHRpb25zOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9ucyhN
VEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoU3RvcmVB
Y3Rpb25PcHRpb25zXyksIHN0b3JlQWN0aW9uT3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogc2V0
U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0
aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlv
bnNfKSwgc3RvcmVBY3Rpb25PcHRpb25zKTsKK30KKworLy8gbWV0aG9kOiBkcmF3UHJpbWl0aXZl
czp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDppbnN0YW5jZUNvdW50OgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2
ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUludGVn
ZXIgdmVydGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3UHJpbWl0aXZl
c192ZXJ0ZXhTdGFydF92ZXJ0ZXhDb3VudF9pbnN0YW5jZUNvdW50XyksIHByaW1pdGl2ZVR5cGUs
IHZlcnRleFN0YXJ0LCB2ZXJ0ZXhDb3VudCwgaW5zdGFuY2VDb3VudCk7Cit9CisKKy8vIG1ldGhv
ZDogZHJhd1ByaW1pdGl2ZXM6dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0
aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50
ZWdlciB2ZXJ0ZXhDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVydGV4Q291bnRf
KSwgcHJpbWl0aXZlVHlwZSwgdmVydGV4U3RhcnQsIHZlcnRleENvdW50KTsKK30KKworLy8gbWV0
aG9kOiBkcmF3SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZm
ZXI6aW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0
aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRl
eFR5cGUgaW5kZXhUeXBlLCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50
ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdJ
bmRleGVkUHJpbWl0aXZlc19pbmRleENvdW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1
ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50XyksIHByaW1pdGl2ZVR5cGUsIGluZGV4Q291bnQsIGlu
ZGV4VHlwZSwgaW5kZXhCdWZmZXIsIGluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50KTsK
K30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhDb3VudDppbmRleFR5
cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2
ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhU
eXBlIGluZGV4VHlwZSwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVn
ZXIgaW5kZXhCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRleENvdW50X2lu
ZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF8pLCBwcmltaXRpdmVUeXBlLCBp
bmRleENvdW50LCBpbmRleFR5cGUsIGluZGV4QnVmZmVyLCBpbmRleEJ1ZmZlck9mZnNldCk7Cit9
CisKKy8vIG1ldGhvZDogZHJhd1ByaW1pdGl2ZXM6dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6aW5z
dGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OmRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVU
eXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRy
YXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50X2luc3RhbmNlQ291bnRfYmFzZUlu
c3RhbmNlXyksIHByaW1pdGl2ZVR5cGUsIHZlcnRleFN0YXJ0LCB2ZXJ0ZXhDb3VudCwgaW5zdGFu
Y2VDb3VudCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFByaW1p
dGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6
aW5zdGFuY2VDb3VudDpiYXNlVmVydGV4OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJp
bWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJ
bmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpV
SW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5T
OjpJbnRlZ2VyIGJhc2VWZXJ0ZXgsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdJbmRl
eGVkUHJpbWl0aXZlc19pbmRleENvdW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZl
ck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VWZXJ0ZXhfYmFzZUluc3RhbmNlXyksIHByaW1pdGl2
ZVR5cGUsIGluZGV4Q291bnQsIGluZGV4VHlwZSwgaW5kZXhCdWZmZXIsIGluZGV4QnVmZmVyT2Zm
c2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlVmVydGV4LCBiYXNlSW5zdGFuY2UpOworfQorCisvLyBt
ZXRob2Q6IGRyYXdQcmltaXRpdmVzOmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UHJpbWl0
aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgY29uc3QgTVRMOjpCdWZmZXIq
IGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQ
cmltaXRpdmVzX2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIHByaW1pdGl2
ZVR5cGUsIGluZGlyZWN0QnVmZmVyLCBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1l
dGhvZDogZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1
ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd0luZGV4ZWRQcmltaXRpdmVz
KE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBNVEw6OkluZGV4VHlwZSBpbmRleFR5
cGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVm
ZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdl
ciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0luZGV4ZWRQcmltaXRpdmVzX2luZGV4VHlwZV9p
bmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZl
ck9mZnNldF8pLCBwcmltaXRpdmVUeXBlLCBpbmRleFR5cGUsIGluZGV4QnVmZmVyLCBpbmRleEJ1
ZmZlck9mZnNldCwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKwor
Ly8gbWV0aG9kOiB0ZXh0dXJlQmFycmllcgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjp0ZXh0dXJlQmFycmllcigpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVCYXJyaWVyKSk7Cit9CisKKy8v
IG1ldGhvZDogdXBkYXRlRmVuY2U6YWZ0ZXJTdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVwZGF0ZUZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNl
LCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVwZGF0ZUZlbmNlX2FmdGVyU3RhZ2VzXyksIGZl
bmNlLCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6IHdhaXRGb3JGZW5jZTpiZWZvcmVTdGFnZXM6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OndhaXRGb3JGZW5j
ZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3YWl0
Rm9yRmVuY2VfYmVmb3JlU3RhZ2VzXyksIGZlbmNlLCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6
IHNldFRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcjpvZmZzZXQ6aW5zdGFuY2VTdHJpZGU6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRlc3NlbGxhdGlvbkZh
Y3RvckJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0
LCBOUzo6VUludGVnZXIgaW5zdGFuY2VTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZl
cl9vZmZzZXRfaW5zdGFuY2VTdHJpZGVfKSwgYnVmZmVyLCBvZmZzZXQsIGluc3RhbmNlU3RyaWRl
KTsKK30KKworLy8gbWV0aG9kOiBzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGVzc2VsbGF0aW9uRmFjdG9y
U2NhbGUoZmxvYXQgc2NhbGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlXyksIHNjYWxlKTsK
K30KKworLy8gbWV0aG9kOiBkcmF3UGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJ
bmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3Rh
bmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UGF0
Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdl
ciBwYXRjaFN0YXJ0LCBOUzo6VUludGVnZXIgcGF0Y2hDb3VudCwgY29uc3QgTVRMOjpCdWZmZXIq
IHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBO
Uzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJh
d1BhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRl
eEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV8pLCBudW1iZXJPZlBhdGNo
Q29udHJvbFBvaW50cywgcGF0Y2hTdGFydCwgcGF0Y2hDb3VudCwgcGF0Y2hJbmRleEJ1ZmZlciwg
cGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZUluc3RhbmNlKTsKK30K
KworLy8gbWV0aG9kOiBkcmF3UGF0Y2hlczpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZm
ZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQYXRjaGVzKE5TOjpVSW50ZWdl
ciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5k
ZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6
OkJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNl
dCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoZHJhd1BhdGNoZXNfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2lu
ZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIG51bWJlck9mUGF0Y2hDb250cm9s
UG9pbnRzLCBwYXRjaEluZGV4QnVmZmVyLCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBpbmRpcmVj
dEJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworfQorCisvLyBtZXRob2Q6IGRyYXdJbmRl
eGVkUGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaElu
ZGV4QnVmZmVyT2Zmc2V0OmNvbnRyb2xQb2ludEluZGV4QnVmZmVyOmNvbnRyb2xQb2ludEluZGV4
QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRl
Z2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwg
TlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQsIGNvbnN0IE1UTDo6QnVmZmVyKiBwYXRjaEluZGV4QnVm
ZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgTVRMOjpCdWZm
ZXIqIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgY29udHJvbFBvaW50SW5k
ZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIg
YmFzZUluc3RhbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFBhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3Bh
dGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1
ZmZlcl9jb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0
YW5jZV8pLCBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgcGF0Y2hTdGFydCwgcGF0Y2hDb3Vu
dCwgcGF0Y2hJbmRleEJ1ZmZlciwgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29udHJvbFBvaW50
SW5kZXhCdWZmZXIsIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50
LCBiYXNlSW5zdGFuY2UpOworfQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUGF0Y2hlczpwYXRj
aEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6Y29udHJvbFBvaW50SW5kZXhCdWZm
ZXI6Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RC
dWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
OmRyYXdJbmRleGVkUGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2lu
dHMsIGNvbnN0IE1UTDo6QnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0
Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgTVRMOjpCdWZmZXIqIGNvbnRyb2xQb2ludEluZGV4
QnVmZmVyLCBOUzo6VUludGVnZXIgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0
IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVy
T2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChkcmF3SW5kZXhlZFBhdGNoZXNfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVm
ZmVyT2Zmc2V0X2NvbnRyb2xQb2ludEluZGV4QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVy
T2Zmc2V0X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIG51bWJlck9mUGF0
Y2hDb250cm9sUG9pbnRzLCBwYXRjaEluZGV4QnVmZmVyLCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0
LCBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQs
IGluZGlyZWN0QnVmZmVyLCBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5
OiB0aWxlV2lkdGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlckNvbW1hbmRF
bmNvZGVyOjp0aWxlV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aWxlV2lkdGgpKTsKK30K
KworLy8gcHJvcGVydHk6IHRpbGVIZWlnaHQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp0aWxlSGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
dGlsZUhlaWdodCkpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVCeXRlczpsZW5ndGg6YXRJbmRl
eDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZUJ5
dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIg
aW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFRpbGVCeXRlc19sZW5ndGhfYXRJbmRleF8pLCBieXRlcywgbGVuZ3RoLCBpbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZUJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZUJ1ZmZlcihjb25z
dCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIg
aW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFRpbGVCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGlu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlQnVmZmVyT2Zmc2V0OmF0SW5kZXg6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVCdWZmZXJPZmZz
ZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlQnVmZmVy
T2Zmc2V0X2F0SW5kZXhfKSwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGls
ZUJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnNldFRpbGVCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzLCBjb25z
dCBOUzo6VUludGVnZXIqIG9mZnNldHMsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUJ1ZmZlcnNf
b2Zmc2V0c193aXRoUmFuZ2VfKSwgYnVmZmVycywgb2Zmc2V0cywgcmFuZ2UpOworfQorCisvLyBt
ZXRob2Q6IHNldFRpbGVUZXh0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4
dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlVGV4dHVyZV9hdEluZGV4XyksIHRleHR1
cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlVGV4dHVyZXM6d2l0aFJhbmdlOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlVGV4dHVy
ZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVUZXh0
dXJlc193aXRoUmFuZ2VfKSwgdGV4dHVyZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRU
aWxlU2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnNldFRpbGVTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUq
IHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9hdEluZGV4
XyksIHNhbXBsZXIsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlU2FtcGxlclN0YXRl
czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
OnNldFRpbGVTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6
UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywg
cmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6
bG9kTWF4Q2xhbXA6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6c2V0VGlsZVNhbXBsZXJTdGF0ZShjb25zdCBNVEw6OlNhbXBsZXJTdGF0ZSogc2Ft
cGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIg
aW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRl
eF8pLCBzYW1wbGVyLCBsb2RNaW5DbGFtcCwgbG9kTWF4Q2xhbXAsIGluZGV4KTsKK30KKworLy8g
bWV0aG9kOiBzZXRUaWxlU2FtcGxlclN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndp
dGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
VGlsZVNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNvbnN0IGZs
b2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6OlJhbmdl
IHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRUaWxlU2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBzX3dp
dGhSYW5nZV8pLCBzYW1wbGVycywgbG9kTWluQ2xhbXBzLCBsb2RNYXhDbGFtcHMsIHJhbmdlKTsK
K30KKworLy8gbWV0aG9kOiBzZXRUaWxlVmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRl
eDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZVZp
c2libGVGdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0
aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZVZpc2libGVGdW5jdGlv
blRhYmxlX2F0QnVmZmVySW5kZXhfKSwgZnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQor
CisvLyBtZXRob2Q6IHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdl
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlVmlz
aWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0
aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxl
c193aXRoQnVmZmVyUmFuZ2VfKSwgZnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsKK30KKworLy8gbWV0
aG9kOiBzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlSW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGlu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGls
ZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8pLCBpbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZUludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXyksIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzLCBy
YW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZUFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1
ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VGlsZUFjY2VsZXJhdGlvblN0cnVjdHVyZV9hdEJ1ZmZlckluZGV4XyksIGFjY2VsZXJhdGlvblN0
cnVjdHVyZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IGRpc3BhdGNoVGhyZWFkc1Bl
clRpbGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRpc3Bh
dGNoVGhyZWFkc1BlclRpbGUoTVRMOjpTaXplIHRocmVhZHNQZXJUaWxlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkaXNwYXRjaFRocmVh
ZHNQZXJUaWxlXyksIHRocmVhZHNQZXJUaWxlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaHJlYWRn
cm91cE1lbW9yeUxlbmd0aDpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRl
Z2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRU
aHJlYWRncm91cE1lbW9yeUxlbmd0aF9vZmZzZXRfYXRJbmRleF8pLCBsZW5ndGgsIG9mZnNldCwg
aW5kZXgpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlOnVzYWdlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1c2VSZXNvdXJjZShjb25zdCBNVEw6OlJl
c291cmNlKiByZXNvdXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZV91
c2FnZV8pLCByZXNvdXJjZSwgdXNhZ2UpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlczpj
b3VudDp1c2FnZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
dXNlUmVzb3VyY2VzKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291
bnQsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVzb3VyY2VzX2NvdW50X3VzYWdlXyks
IHJlc291cmNlcywgY291bnQsIHVzYWdlKTsKK30KKworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZTp1
c2FnZTpzdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
OnVzZVJlc291cmNlKGNvbnN0IE1UTDo6UmVzb3VyY2UqIHJlc291cmNlLCBNVEw6OlJlc291cmNl
VXNhZ2UgdXNhZ2UsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVzb3VyY2VfdXNhZ2Vf
c3RhZ2VzXyksIHJlc291cmNlLCB1c2FnZSwgc3RhZ2VzKTsKK30KKworLy8gbWV0aG9kOiB1c2VS
ZXNvdXJjZXM6Y291bnQ6dXNhZ2U6c3RhZ2VzOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjp1c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzLCBO
Uzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSwgTVRMOjpSZW5kZXJT
dGFnZXMgc3RhZ2VzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZXNfY291bnRfdXNhZ2Vfc3RhZ2VzXyksIHJlc291cmNl
cywgY291bnQsIHVzYWdlLCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXA6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVzZUhlYXAoY29uc3QgTVRM
OjpIZWFwKiBoZWFwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh1c2VIZWFwXyksIGhlYXApOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXBz
OmNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1c2VI
ZWFwcyhNVEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlSGVhcHNfY291
bnRfKSwgaGVhcHMsIGNvdW50KTsKK30KKworLy8gbWV0aG9kOiB1c2VIZWFwOnN0YWdlczoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcChjb25zdCBN
VEw6OkhlYXAqIGhlYXAsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlSGVhcF9zdGFnZXNf
KSwgaGVhcCwgc3RhZ2VzKTsKK30KKworLy8gbWV0aG9kOiB1c2VIZWFwczpjb3VudDpzdGFnZXM6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVzZUhlYXBzKE1U
TDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlbmRlclN0YWdlcyBz
dGFnZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHVzZUhlYXBzX2NvdW50X3N0YWdlc18pLCBoZWFwcywgY291bnQsIHN0YWdlcyk7Cit9
CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXI6d2l0aFJhbmdlOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpleGVjdXRlQ29tbWFuZHNJbkJ1
ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVm
ZmVyLCBOUzo6UmFuZ2UgZXhlY3V0aW9uUmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyX3dp
dGhSYW5nZV8pLCBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIGV4ZWN1dGlvblJhbmdlKTsKK30KKwor
Ly8gbWV0aG9kOiBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjppbmRpcmVjdEJ1ZmZlcjppbmRpcmVj
dEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6ZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZm
ZXIqIGluZGlyZWN0Q29tbWFuZGJ1ZmZlciwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGlyZWN0UmFu
Z2VCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXhlY3V0ZUNvbW1h
bmRzSW5CdWZmZXJfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgaW5kaXJl
Y3RDb21tYW5kYnVmZmVyLCBpbmRpcmVjdFJhbmdlQnVmZmVyLCBpbmRpcmVjdEJ1ZmZlck9mZnNl
dCk7Cit9CisKKy8vIG1ldGhvZDogbWVtb3J5QmFycmllcldpdGhTY29wZTphZnRlclN0YWdlczpi
ZWZvcmVTdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
Om1lbW9yeUJhcnJpZXIoTVRMOjpCYXJyaWVyU2NvcGUgc2NvcGUsIE1UTDo6UmVuZGVyU3RhZ2Vz
IGFmdGVyLCBNVEw6OlJlbmRlclN0YWdlcyBiZWZvcmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1lbW9yeUJhcnJpZXJXaXRoU2NvcGVf
YWZ0ZXJTdGFnZXNfYmVmb3JlU3RhZ2VzXyksIHNjb3BlLCBhZnRlciwgYmVmb3JlKTsKK30KKwor
Ly8gbWV0aG9kOiBtZW1vcnlCYXJyaWVyV2l0aFJlc291cmNlczpjb3VudDphZnRlclN0YWdlczpi
ZWZvcmVTdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
Om1lbW9yeUJhcnJpZXIoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBj
b3VudCwgTVRMOjpSZW5kZXJTdGFnZXMgYWZ0ZXIsIE1UTDo6UmVuZGVyU3RhZ2VzIGJlZm9yZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXNfY291bnRfYWZ0ZXJTdGFnZXNfYmVmb3JlU3RhZ2Vz
XyksIHJlc291cmNlcywgY291bnQsIGFmdGVyLCBiZWZvcmUpOworfQorCisvLyBtZXRob2Q6IHNh
bXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRTYW1wbGVJbmRleDp3aXRoQmFycmllcjoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2FtcGxlQ291bnRlcnNJbkJ1ZmZl
cihjb25zdCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIHNhbXBsZUluZGV4LCBib29sIGJhcnJpZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50ZXJzSW5CdWZmZXJfYXRT
YW1wbGVJbmRleF93aXRoQmFycmllcl8pLCBzYW1wbGVCdWZmZXIsIHNhbXBsZUluZGV4LCBiYXJy
aWVyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExSZW5kZXJQYXNzLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExSZW5kZXJQYXNzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTc1MWVhYWU1NWUwZDg0YzkwM2YzMzcx
ZDI1YjEyOTkyNTM5N2RjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBhc3MuaHBwCkBAIC0wLDAgKzEsNzg2IEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9N
VExSZW5kZXJQYXNzLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
Ly8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRl
ckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMUmVuZGVyUGFzcy5ocHAiCisK
K25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIExvYWRBY3Rpb24pIHsK
KyAgICBMb2FkQWN0aW9uRG9udENhcmUgPSAwLAorICAgIExvYWRBY3Rpb25Mb2FkID0gMSwKKyAg
ICBMb2FkQWN0aW9uQ2xlYXIgPSAyLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU3Rv
cmVBY3Rpb24pIHsKKyAgICBTdG9yZUFjdGlvbkRvbnRDYXJlID0gMCwKKyAgICBTdG9yZUFjdGlv
blN0b3JlID0gMSwKKyAgICBTdG9yZUFjdGlvbk11bHRpc2FtcGxlUmVzb2x2ZSA9IDIsCisgICAg
U3RvcmVBY3Rpb25TdG9yZUFuZE11bHRpc2FtcGxlUmVzb2x2ZSA9IDMsCisgICAgU3RvcmVBY3Rp
b25Vbmtub3duID0gNCwKKyAgICBTdG9yZUFjdGlvbkN1c3RvbVNhbXBsZURlcHRoU3RvcmUgPSA1
LAorfTsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgU3RvcmVBY3Rpb25PcHRpb25zKSB7
CisgICAgU3RvcmVBY3Rpb25PcHRpb25Ob25lID0gMCwKKyAgICBTdG9yZUFjdGlvbk9wdGlvblZh
bGlkTWFzayA9IDEsCisgICAgU3RvcmVBY3Rpb25PcHRpb25DdXN0b21TYW1wbGVQb3NpdGlvbnMg
PSAxLAorfTsKKworc3RydWN0IENsZWFyQ29sb3IKK3sKKyAgICBzdGF0aWMgQ2xlYXJDb2xvciBN
YWtlKGRvdWJsZSByZWQsIGRvdWJsZSBncmVlbiwgZG91YmxlIGJsdWUsIGRvdWJsZSBhbHBoYSk7
CisKKyAgICBDbGVhckNvbG9yKCkgPSBkZWZhdWx0OworCisgICAgQ2xlYXJDb2xvcihkb3VibGUg
cmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpOworCisgICAgZG91
YmxlIHJlZDsKKyAgICBkb3VibGUgZ3JlZW47CisgICAgZG91YmxlIGJsdWU7CisgICAgZG91Ymxl
IGFscGhhOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
cj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dHVyZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSog
dGV4dHVyZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsZXZlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldExldmVsKE5TOjpVSW50ZWdlciBsZXZlbCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljZSgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNsaWNlKE5T
OjpVSW50ZWdlciBzbGljZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXB0aFBsYW5lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVwdGhQbGFuZShOUzo6VUludGVnZXIgZGVw
dGhQbGFuZSk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNvbHZlVGV4dHVyZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFJlc29sdmVUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1
cmUqIHJlc29sdmVUZXh0dXJlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc29sdmVMZXZlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc29sdmVMZXZlbChOUzo6VUludGVn
ZXIgcmVzb2x2ZUxldmVsKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc29sdmVTbGljZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc29sdmVTbGljZShOUzo6VUludGVnZXIg
cmVzb2x2ZVNsaWNlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc29sdmVEZXB0aFBsYW5lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzb2x2ZURlcHRoUGxhbmUoTlM6OlVJ
bnRlZ2VyIHJlc29sdmVEZXB0aFBsYW5lKTsKKworICAgIE1UTDo6TG9hZEFjdGlvbiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYWRBY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2FkQWN0aW9uKE1UTDo6TG9h
ZEFjdGlvbiBsb2FkQWN0aW9uKTsKKworICAgIE1UTDo6U3RvcmVBY3Rpb24gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0b3JlQWN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFj
dGlvbiBzdG9yZUFjdGlvbik7CisKKyAgICBNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyAgICAgICAg
ICAgICAgICAgICAgICBzdG9yZUFjdGlvbk9wdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdG9yZUFjdGlvbk9wdGlvbnMo
TVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zKTsKK307CisKK2NsYXNz
IFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5n
PFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLCBNVEw6OlJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6
Q2xlYXJDb2xvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJDb2xvcigp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0Q2xlYXJDb2xvcihNVEw6OkNsZWFyQ29sb3IgY2xlYXJDb2xvcik7Cit9OworCitf
TVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlcikgewor
ICAgIE11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyU2FtcGxlMCA9IDAsCisgICAgTXVsdGlz
YW1wbGVEZXB0aFJlc29sdmVGaWx0ZXJNaW4gPSAxLAorICAgIE11bHRpc2FtcGxlRGVwdGhSZXNv
bHZlRmlsdGVyTWF4ID0gMiwKK307CisKK2NsYXNzIFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yLCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ciogICAgICAgIGluaXQoKTsKKworICAgIGRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xlYXJEZXB0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q2xlYXJEZXB0aChkb3VibGUg
Y2xlYXJEZXB0aCk7CisKKyAgICBNVEw6Ok11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyICAg
ICAgICAgICAgICAgIGRlcHRoUmVzb2x2ZUZpbHRlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVwdGhSZXNvbHZlRmls
dGVyKE1UTDo6TXVsdGlzYW1wbGVEZXB0aFJlc29sdmVGaWx0ZXIgZGVwdGhSZXNvbHZlRmlsdGVy
KTsKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIE11bHRpc2FtcGxlU3RlbmNpbFJlc29s
dmVGaWx0ZXIpIHsKKyAgICBNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyU2FtcGxlMCA9
IDAsCisgICAgTXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZpbHRlckRlcHRoUmVzb2x2ZWRTYW1w
bGUgPSAxLAorfTsKKworY2xhc3MgUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRv
ciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlw
dG9yLCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciogYWxs
b2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3Iq
ICAgICAgICBpbml0KCk7CisKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xlYXJTdGVuY2lsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENsZWFyU3RlbmNpbCh1
aW50MzJfdCBjbGVhclN0ZW5jaWwpOworCisgICAgTVRMOjpNdWx0aXNhbXBsZVN0ZW5jaWxSZXNv
bHZlRmlsdGVyICAgICAgICAgICAgICAgIHN0ZW5jaWxSZXNvbHZlRmlsdGVyKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFN0ZW5jaWxSZXNvbHZlRmlsdGVyKE1UTDo6TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZpbHRl
ciBzdGVuY2lsUmVzb2x2ZUZpbHRlcik7Cit9OworCitjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBj
bGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOwor
CisgICAgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogICAg
ICAgIGluaXQoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2Ns
YXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBO
Uzo6Q29weWluZzxSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I+Cit7
CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvdW50
ZXJTYW1wbGVCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZUJ1ZmZl
cigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFNhbXBsZUJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2FtcGxl
QnVmZmVyKiBzYW1wbGVCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0U3RhcnRPZlZlcnRleFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFy
dE9mVmVydGV4U2FtcGxlSW5kZXgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEVuZE9mVmVydGV4U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mVmVy
dGV4U2FtcGxlSW5kZXgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleChOUzo6VUludGVnZXIgc3RhcnRP
ZkZyYWdtZW50U2FtcGxlSW5kZXgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRP
ZkZyYWdtZW50U2FtcGxlSW5kZXgpOworfTsKKworY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRl
clBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgUmVuZGVy
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3Qo
TlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25z
dCBjbGFzcyBSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFj
aG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworfTsKKworY2xhc3MgUmVuZGVy
UGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVyUGFzc0Rlc2NyaXB0b3I+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yKiAgICAg
ICAgICAgICAgICAgICAgIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzRGVzY3JpcHRv
ciogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNz
IFJlbmRlclBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIHJlbmRlclBhc3NEZXNj
cmlwdG9yKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ckFycmF5KiAgICAgICAgY29sb3JBdHRhY2htZW50cygpIGNvbnN0OworCisgICAgY2xhc3MgUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICAgIGRlcHRoQXR0YWNo
bWVudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXREZXB0aEF0dGFjaG1lbnQoY29uc3QgY2xhc3MgUmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlcHRoQXR0YWNobWVudCk7CisKKyAgICBjbGFz
cyBSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgICAgc3RlbmNp
bEF0dGFjaG1lbnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbEF0dGFjaG1lbnQoY29uc3QgY2xhc3Mg
UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciogc3RlbmNpbEF0dGFjaG1lbnQp
OworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZpc2liaWxpdHlSZXN1bHRCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmlzaWJpbGl0eVJl
c3VsdEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIHZpc2liaWxpdHlSZXN1bHRCdWZmZXIpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbmRlclRhcmdldEFycmF5TGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlbmRlclRhcmdldEFy
cmF5TGVuZ3RoKE5TOjpVSW50ZWdlciByZW5kZXJUYXJnZXRBcnJheUxlbmd0aCk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1h
Z2VibG9ja1NhbXBsZUxlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbWFnZWJsb2NrU2FtcGxlTGVuZ3Ro
KE5TOjpVSW50ZWdlciBpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoKTsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRncm91cE1l
bW9yeUxlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUlu
dGVnZXIgdGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVXaWR0aCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRUaWxlV2lkdGgoTlM6OlVJbnRlZ2VyIHRpbGVXaWR0aCk7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZUhlaWdodCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRUaWxlSGVpZ2h0KE5TOjpVSW50ZWdlciB0aWxlSGVpZ2h0KTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVmYXVsdFJhc3RlclNhbXBs
ZUNvdW50KE5TOjpVSW50ZWdlciBkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRl
clRhcmdldFdpZHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlbmRlclRhcmdldFdpZHRoKE5TOjpVSW50ZWdl
ciByZW5kZXJUYXJnZXRXaWR0aCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGFyZ2V0SGVpZ2h0KCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFJlbmRlclRhcmdldEhlaWdodChOUzo6VUludGVnZXIgcmVuZGVyVGFyZ2V0SGVpZ2h0KTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTYW1wbGVQb3NpdGlvbnMoY29uc3QgTVRMOjpTYW1wbGVQb3NpdGlvbiogcG9zaXRp
b25zLCBOUzo6VUludGVnZXIgY291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNhbXBsZVBvc2l0aW9ucyhNVEw6OlNh
bXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICBjbGFz
cyBSYXN0ZXJpemF0aW9uUmF0ZU1hcCogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVy
aXphdGlvblJhdGVNYXAoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmFzdGVyaXphdGlvblJhdGVNYXAoY29uc3Qg
Y2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXAqIHJhc3Rlcml6YXRpb25SYXRlTWFwKTsKKworICAg
IGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBz
YW1wbGVCdWZmZXJBdHRhY2htZW50cygpIGNvbnN0OworfTsKKworfQorCitfTVRMX0lOTElORSBN
VEw6OkNsZWFyQ29sb3IgTVRMOjpDbGVhckNvbG9yOjpNYWtlKGRvdWJsZSByZWQsIGRvdWJsZSBn
cmVlbiwgZG91YmxlIGJsdWUsIGRvdWJsZSBhbHBoYSkKK3sKKyAgICByZXR1cm4gQ2xlYXJDb2xv
cihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6Q2xlYXJD
b2xvcjo6Q2xlYXJDb2xvcihkb3VibGUgX3JlZCwgZG91YmxlIF9ncmVlbiwgZG91YmxlIF9ibHVl
LCBkb3VibGUgX2FscGhhKQorICAgIDogcmVkKF9yZWQpCisgICAgLCBncmVlbihfZ3JlZW4pCisg
ICAgLCBibHVlKF9ibHVlKQorICAgICwgYWxwaGEoX2FscGhhKQoreworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IqIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
cikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlCitfTVRMX0lO
TElORSBNVEw6OlRleHR1cmUqIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjp0
ZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRl
eHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmUpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0VGV4dHVyZShj
b25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVfKSwgdGV4dHVyZSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBsZXZlbAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpsZXZlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxl
dmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3I6OnNldExldmVsKE5TOjpVSW50ZWdlciBsZXZlbCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGV2ZWxfKSwgbGV2ZWwp
OworfQorCisvLyBwcm9wZXJ0eTogc2xpY2UKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2xpY2UoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzbGljZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yOjpzZXRTbGljZShOUzo6VUludGVnZXIgc2xpY2UpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNsaWNlXyks
IHNsaWNlKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoUGxhbmUKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6ZGVwdGhQbGFuZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRoUGxhbmUpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0RGVwdGhQbGFuZShOUzo6
VUludGVnZXIgZGVwdGhQbGFuZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhQbGFuZV8pLCBkZXB0aFBsYW5lKTsKK30KKwor
Ly8gcHJvcGVydHk6IHJlc29sdmVUZXh0dXJlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1U
TDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpyZXNvbHZlVGV4dHVyZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChyZXNvbHZlVGV4dHVyZSkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRSZXNvbHZlVGV4dHVyZShj
b25zdCBNVEw6OlRleHR1cmUqIHJlc29sdmVUZXh0dXJlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZXNvbHZlVGV4dHVyZV8pLCBy
ZXNvbHZlVGV4dHVyZSk7Cit9CisKKy8vIHByb3BlcnR5OiByZXNvbHZlTGV2ZWwKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6cmVz
b2x2ZUxldmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzb2x2ZUxldmVsKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFJl
c29sdmVMZXZlbChOUzo6VUludGVnZXIgcmVzb2x2ZUxldmVsKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZXNvbHZlTGV2ZWxfKSwg
cmVzb2x2ZUxldmVsKTsKK30KKworLy8gcHJvcGVydHk6IHJlc29sdmVTbGljZQorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpyZXNv
bHZlU2xpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvbHZlU2xpY2UpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UmVz
b2x2ZVNsaWNlKE5TOjpVSW50ZWdlciByZXNvbHZlU2xpY2UpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc29sdmVTbGljZV8pLCBy
ZXNvbHZlU2xpY2UpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb2x2ZURlcHRoUGxhbmUKK19NVExf
SU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6
cmVzb2x2ZURlcHRoUGxhbmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvbHZlRGVwdGhQbGFu
ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yOjpzZXRSZXNvbHZlRGVwdGhQbGFuZShOUzo6VUludGVnZXIgcmVzb2x2ZURlcHRoUGxh
bmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFJlc29sdmVEZXB0aFBsYW5lXyksIHJlc29sdmVEZXB0aFBsYW5lKTsKK30KKworLy8g
cHJvcGVydHk6IGxvYWRBY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6TG9hZEFjdGlvbiBNVEw6OlJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bG9hZEFjdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMb2FkQWN0aW9uPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGxvYWRBY3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0TG9hZEFjdGlvbihNVEw6OkxvYWRBY3Rpb24g
bG9hZEFjdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0TG9hZEFjdGlvbl8pLCBsb2FkQWN0aW9uKTsKK30KKworLy8gcHJvcGVy
dHk6IHN0b3JlQWN0aW9uCitfTVRMX0lOTElORSBNVEw6OlN0b3JlQWN0aW9uIE1UTDo6UmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzdG9yZUFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdG9yZUFjdGlvbj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdG9yZUFjdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9u
IHN0b3JlQWN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTdG9yZUFjdGlvbl8pLCBzdG9yZUFjdGlvbik7Cit9CisKKy8vIHBy
b3BlcnR5OiBzdG9yZUFjdGlvbk9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6U3RvcmVBY3Rpb25P
cHRpb25zIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzdG9yZUFjdGlvbk9w
dGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3Rv
cmVBY3Rpb25PcHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3JlQWN0aW9uT3B0aW9u
cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yOjpzZXRTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3Rv
cmVBY3Rpb25PcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRTdG9yZUFjdGlvbk9wdGlvbnNfKSwgc3RvcmVBY3Rpb25PcHRp
b25zKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRF
X0NMUyhNVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBjbGVhckNvbG9yCitfTVRM
X0lOTElORSBNVEw6OkNsZWFyQ29sb3IgTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcjo6Y2xlYXJDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpDbGVhckNvbG9yPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNsZWFyQ29sb3Ip
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpzZXRDbGVhckNvbG9yKE1UTDo6Q2xlYXJDb2xvciBjbGVhckNvbG9yKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRD
bGVhckNvbG9yXyksIGNsZWFyQ29sb3IpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogTVRM
OjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVy
dHk6IGNsZWFyRGVwdGgKK19NVExfSU5MSU5FIGRvdWJsZSBNVEw6OlJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckRlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxkb3VibGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY2xlYXJEZXB0
aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldENsZWFyRGVwdGgoZG91YmxlIGNsZWFyRGVwdGgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENsZWFyRGVw
dGhfKSwgY2xlYXJEZXB0aCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXB0aFJlc29sdmVGaWx0ZXIK
K19NVExfSU5MSU5FIE1UTDo6TXVsdGlzYW1wbGVEZXB0aFJlc29sdmVGaWx0ZXIgTVRMOjpSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6ZGVwdGhSZXNvbHZlRmlsdGVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Ok11bHRpc2FtcGxlRGVw
dGhSZXNvbHZlRmlsdGVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRoUmVzb2x2ZUZpbHRl
cikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldERlcHRoUmVzb2x2ZUZpbHRlcihNVEw6Ok11bHRpc2FtcGxlRGVwdGhS
ZXNvbHZlRmlsdGVyIGRlcHRoUmVzb2x2ZUZpbHRlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhSZXNvbHZlRmlsdGVyXyks
IGRlcHRoUmVzb2x2ZUZpbHRlcik7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6
UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERl
c2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50
RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVu
ZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzU3RlbmNp
bEF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBjbGVhclN0ZW5jaWwKK19NVExfSU5MSU5FIHVpbnQzMl90IE1UTDo6UmVu
ZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjo6Y2xlYXJTdGVuY2lsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50MzJfdD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChjbGVhclN0ZW5jaWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I6OnNldENsZWFyU3RlbmNpbCh1aW50
MzJfdCBjbGVhclN0ZW5jaWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldENsZWFyU3RlbmNpbF8pLCBjbGVhclN0ZW5jaWwpOworfQor
CisvLyBwcm9wZXJ0eTogc3RlbmNpbFJlc29sdmVGaWx0ZXIKK19NVExfSU5MSU5FIE1UTDo6TXVs
dGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZpbHRlciBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNo
bWVudERlc2NyaXB0b3I6OnN0ZW5jaWxSZXNvbHZlRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Ok11bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlbmNpbFJlc29sdmVGaWx0ZXIpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0
b3I6OnNldFN0ZW5jaWxSZXNvbHZlRmlsdGVyKE1UTDo6TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2
ZUZpbHRlciBzdGVuY2lsUmVzb2x2ZUZpbHRlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFJlc29sdmVGaWx0ZXJfKSwg
c3RlbmNpbFJlc29sdmVGaWx0ZXIpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01U
TF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBN
VEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lO
TElORSBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlw
dDoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iq
IE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5T
OjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnRJbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5
OjpzZXRPYmplY3QoY29uc3QgTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0
SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0
dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
cikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1Nh
bXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmluaXQ8TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I+KCk7
Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6Q291bnRl
clNhbXBsZUJ1ZmZlciogTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3I6OnNhbXBsZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
YW1wbGVCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U2FtcGxlQnVmZmVyKGNvbnN0IE1UTDo6
Q291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVCdWZmZXJfKSwgc2Ft
cGxlQnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleAor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yOjpzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3Rh
cnRPZlZlcnRleFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mVmVydGV4U2FtcGxlSW5k
ZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleF8pLCBzdGFydE9mVmVydGV4U2FtcGxlSW5k
ZXgpOworfQorCisvLyBwcm9wZXJ0eTogZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yOjplbmRPZlZlcnRleFNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5k
T2ZWZXJ0ZXhTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRFbmRPZlZlcnRleFNhbXBs
ZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZlZlcnRleFNhbXBsZUluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRFbmRPZlZlcnRl
eFNhbXBsZUluZGV4XyksIGVuZE9mVmVydGV4U2FtcGxlSW5kZXgpOworfQorCisvLyBwcm9wZXJ0
eTogc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZkZy
YWdtZW50U2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFydE9mRnJhZ21lbnRT
YW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRl
eChOUzo6VUludGVnZXIgc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZGcmFn
bWVudFNhbXBsZUluZGV4XyksIHN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4KTsKK30KKworLy8g
cHJvcGVydHk6IGVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRl
Z2VyIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjplbmRP
ZkZyYWdtZW50U2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmRPZkZyYWdtZW50
U2FtcGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0RW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4
KE5TOjpVSW50ZWdlciBlbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEVuZE9mRnJhZ21lbnRT
YW1wbGVJbmRleF8pLCBlbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgpOworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojph
bGxvYzxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpS
ZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5k
ZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4
ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5k
ZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9i
amVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBN
VEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVu
dCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNj
cmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvciogTVRMOjpS
ZW5kZXJQYXNzRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojph
bGxvYzxNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRl
clBhc3NEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRM
OjpSZW5kZXJQYXNzRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRv
cj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogcmVuZGVyUGFzc0Rlc2NyaXB0b3IKK19NVExf
SU5MSU5FIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0
b3I6OnJlbmRlclBhc3NEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5k
ZXJQYXNzRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwocmVuZGVyUGFzc0Rlc2NyaXB0b3Ip
KTsKK30KKworLy8gcHJvcGVydHk6IGNvbG9yQXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1UTDo6
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQYXNz
RGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb2xvckF0dGFjaG1lbnRzKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBkZXB0aEF0dGFjaG1lbnQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmRlcHRo
QXR0YWNobWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoZGVwdGhBdHRhY2htZW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJQYXNzRGVzY3JpcHRvcjo6c2V0RGVwdGhBdHRhY2htZW50KGNvbnN0IE1UTDo6UmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGRlcHRoQXR0YWNobWVudCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhBdHRh
Y2htZW50XyksIGRlcHRoQXR0YWNobWVudCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGVuY2lsQXR0
YWNobWVudAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNj
cmlwdG9yKiBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzdGVuY2lsQXR0YWNobWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQYXNzU3Rl
bmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVuY2ls
QXR0YWNobWVudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OnNldFN0ZW5jaWxBdHRhY2htZW50KGNvbnN0IE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxB
dHRhY2htZW50RGVzY3JpcHRvciogc3RlbmNpbEF0dGFjaG1lbnQpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxBdHRhY2ht
ZW50XyksIHN0ZW5jaWxBdHRhY2htZW50KTsKK30KKworLy8gcHJvcGVydHk6IHZpc2liaWxpdHlS
ZXN1bHRCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OlJlbmRlclBhc3NEZXNj
cmlwdG9yOjp2aXNpYmlsaXR5UmVzdWx0QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmlz
aWJpbGl0eVJlc3VsdEJ1ZmZlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGFzc0Rlc2NyaXB0b3I6OnNldFZpc2liaWxpdHlSZXN1bHRCdWZmZXIoY29uc3QgTVRMOjpCdWZm
ZXIqIHZpc2liaWxpdHlSZXN1bHRCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZpc2liaWxpdHlSZXN1bHRCdWZmZXJfKSwg
dmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5OiByZW5kZXJUYXJnZXRB
cnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OnJlbmRlclRhcmdldEFycmF5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVu
ZGVyVGFyZ2V0QXJyYXlMZW5ndGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
clBhc3NEZXNjcmlwdG9yOjpzZXRSZW5kZXJUYXJnZXRBcnJheUxlbmd0aChOUzo6VUludGVnZXIg
cmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoXyksIHJl
bmRlclRhcmdldEFycmF5TGVuZ3RoKTsKK30KKworLy8gcHJvcGVydHk6IGltYWdlYmxvY2tTYW1w
bGVMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlw
dG9yOjppbWFnZWJsb2NrU2FtcGxlTGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW1hZ2Vi
bG9ja1NhbXBsZUxlbmd0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFz
c0Rlc2NyaXB0b3I6OnNldEltYWdlYmxvY2tTYW1wbGVMZW5ndGgoTlM6OlVJbnRlZ2VyIGltYWdl
YmxvY2tTYW1wbGVMZW5ndGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEltYWdlYmxvY2tTYW1wbGVMZW5ndGhfKSwgaW1hZ2VibG9j
a1NhbXBsZUxlbmd0aCk7Cit9CisKKy8vIHByb3BlcnR5OiB0aHJlYWRncm91cE1lbW9yeUxlbmd0
aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnRo
cmVhZGdyb3VwTWVtb3J5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFkZ3JvdXBN
ZW1vcnlMZW5ndGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNj
cmlwdG9yOjpzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIgdGhyZWFkZ3Jv
dXBNZW1vcnlMZW5ndGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoXyksIHRocmVhZGdyb3Vw
TWVtb3J5TGVuZ3RoKTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVXaWR0aAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnRpbGVXaWR0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHRpbGVXaWR0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFRpbGVXaWR0aChOUzo6VUludGVnZXIgdGlsZVdpZHRo
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRUaWxlV2lkdGhfKSwgdGlsZVdpZHRoKTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVIZWln
aHQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjp0
aWxlSGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUhlaWdodCkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFRpbGVIZWlnaHQoTlM6
OlVJbnRlZ2VyIHRpbGVIZWlnaHQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVIZWlnaHRfKSwgdGlsZUhlaWdodCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpkZWZhdWx0UmFzdGVyU2FtcGxlQ291
bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXREZWZhdWx0
UmFzdGVyU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RGVmYXVsdFJhc3RlclNhbXBsZUNvdW50XyksIGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCk7
Cit9CisKKy8vIHByb3BlcnR5OiByZW5kZXJUYXJnZXRXaWR0aAorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnJlbmRlclRhcmdldFdpZHRoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwocmVuZGVyVGFyZ2V0V2lkdGgpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRSZW5kZXJUYXJnZXRXaWR0aChOUzo6
VUludGVnZXIgcmVuZGVyVGFyZ2V0V2lkdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlbmRlclRhcmdldFdpZHRoXyksIHJlbmRl
clRhcmdldFdpZHRoKTsKK30KKworLy8gcHJvcGVydHk6IHJlbmRlclRhcmdldEhlaWdodAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnJlbmRlclRh
cmdldEhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlbmRlclRhcmdldEhlaWdodCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFJlbmRl
clRhcmdldEhlaWdodChOUzo6VUludGVnZXIgcmVuZGVyVGFyZ2V0SGVpZ2h0KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZW5kZXJU
YXJnZXRIZWlnaHRfKSwgcmVuZGVyVGFyZ2V0SGVpZ2h0KTsKK30KKworLy8gbWV0aG9kOiBzZXRT
YW1wbGVQb3NpdGlvbnM6Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rl
c2NyaXB0b3I6OnNldFNhbXBsZVBvc2l0aW9ucyhjb25zdCBNVEw6OlNhbXBsZVBvc2l0aW9uKiBw
b3NpdGlvbnMsIE5TOjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlUG9zaXRpb25zX2NvdW50Xyks
IHBvc2l0aW9ucywgY291bnQpOworfQorCisvLyBtZXRob2Q6IGdldFNhbXBsZVBvc2l0aW9uczpj
b3VudDoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9y
OjpnZXRTYW1wbGVQb3NpdGlvbnMoTVRMOjpTYW1wbGVQb3NpdGlvbiogcG9zaXRpb25zLCBOUzo6
VUludGVnZXIgY291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdldFNhbXBsZVBvc2l0aW9uc19jb3VudF8p
LCBwb3NpdGlvbnMsIGNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHJhc3Rlcml6YXRpb25SYXRl
TWFwCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwKiBNVEw6OlJlbmRlclBh
c3NEZXNjcmlwdG9yOjpyYXN0ZXJpemF0aW9uUmF0ZU1hcCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcCo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocmFzdGVyaXphdGlvblJhdGVNYXApKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcChj
b25zdCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwKiByYXN0ZXJpemF0aW9uUmF0ZU1hcCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
UmFzdGVyaXphdGlvblJhdGVNYXBfKSwgcmFzdGVyaXphdGlvblJhdGVNYXApOworfQorCisvLyBw
cm9wZXJ0eTogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVy
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGFz
c0Rlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVCdWZmZXJB
dHRhY2htZW50cykpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQaXBlbGluZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQxZGI2ZjZi
MzdlMDJmZTNiNmE2ZjA2ZGI5MzBhNmYyM2NhZTFjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQaXBlbGluZS5ocHAKQEAg
LTAsMCArMSwxMjEyIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBNZXRhbC9NVExSZW5kZXJQaXBlbGluZS5ocHAKKy8vCisvLyBDb3B5cmln
aHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVz
LmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZh
dGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1
ZGUgIk1UTFBpeGVsRm9ybWF0LmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJDb21tYW5kRW5jb2Rl
ci5ocHAiCisjaW5jbHVkZSAiTVRMUmVuZGVyUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTFR5
cGVzLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQmxl
bmRGYWN0b3IpIHsKKyAgICBCbGVuZEZhY3Rvclplcm8gPSAwLAorICAgIEJsZW5kRmFjdG9yT25l
ID0gMSwKKyAgICBCbGVuZEZhY3RvclNvdXJjZUNvbG9yID0gMiwKKyAgICBCbGVuZEZhY3Rvck9u
ZU1pbnVzU291cmNlQ29sb3IgPSAzLAorICAgIEJsZW5kRmFjdG9yU291cmNlQWxwaGEgPSA0LAor
ICAgIEJsZW5kRmFjdG9yT25lTWludXNTb3VyY2VBbHBoYSA9IDUsCisgICAgQmxlbmRGYWN0b3JE
ZXN0aW5hdGlvbkNvbG9yID0gNiwKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzRGVzdGluYXRpb25D
b2xvciA9IDcsCisgICAgQmxlbmRGYWN0b3JEZXN0aW5hdGlvbkFscGhhID0gOCwKKyAgICBCbGVu
ZEZhY3Rvck9uZU1pbnVzRGVzdGluYXRpb25BbHBoYSA9IDksCisgICAgQmxlbmRGYWN0b3JTb3Vy
Y2VBbHBoYVNhdHVyYXRlZCA9IDEwLAorICAgIEJsZW5kRmFjdG9yQmxlbmRDb2xvciA9IDExLAor
ICAgIEJsZW5kRmFjdG9yT25lTWludXNCbGVuZENvbG9yID0gMTIsCisgICAgQmxlbmRGYWN0b3JC
bGVuZEFscGhhID0gMTMsCisgICAgQmxlbmRGYWN0b3JPbmVNaW51c0JsZW5kQWxwaGEgPSAxNCwK
KyAgICBCbGVuZEZhY3RvclNvdXJjZTFDb2xvciA9IDE1LAorICAgIEJsZW5kRmFjdG9yT25lTWlu
dXNTb3VyY2UxQ29sb3IgPSAxNiwKKyAgICBCbGVuZEZhY3RvclNvdXJjZTFBbHBoYSA9IDE3LAor
ICAgIEJsZW5kRmFjdG9yT25lTWludXNTb3VyY2UxQWxwaGEgPSAxOCwKK307CisKK19NVExfRU5V
TShOUzo6VUludGVnZXIsIEJsZW5kT3BlcmF0aW9uKSB7CisgICAgQmxlbmRPcGVyYXRpb25BZGQg
PSAwLAorICAgIEJsZW5kT3BlcmF0aW9uU3VidHJhY3QgPSAxLAorICAgIEJsZW5kT3BlcmF0aW9u
UmV2ZXJzZVN1YnRyYWN0ID0gMiwKKyAgICBCbGVuZE9wZXJhdGlvbk1pbiA9IDMsCisgICAgQmxl
bmRPcGVyYXRpb25NYXggPSA0LAorfTsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgQ29s
b3JXcml0ZU1hc2spIHsKKyAgICBDb2xvcldyaXRlTWFza05vbmUgPSAwLAorICAgIENvbG9yV3Jp
dGVNYXNrQWxwaGEgPSAxLAorICAgIENvbG9yV3JpdGVNYXNrQmx1ZSA9IDIsCisgICAgQ29sb3JX
cml0ZU1hc2tHcmVlbiA9IDQsCisgICAgQ29sb3JXcml0ZU1hc2tSZWQgPSA4LAorICAgIENvbG9y
V3JpdGVNYXNrQWxsID0gMTUsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQcmltaXRp
dmVUb3BvbG9neUNsYXNzKSB7CisgICAgUHJpbWl0aXZlVG9wb2xvZ3lDbGFzc1Vuc3BlY2lmaWVk
ID0gMCwKKyAgICBQcmltaXRpdmVUb3BvbG9neUNsYXNzUG9pbnQgPSAxLAorICAgIFByaW1pdGl2
ZVRvcG9sb2d5Q2xhc3NMaW5lID0gMiwKKyAgICBQcmltaXRpdmVUb3BvbG9neUNsYXNzVHJpYW5n
bGUgPSAzLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVGVzc2VsbGF0aW9uUGFydGl0
aW9uTW9kZSkgeworICAgIFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVQb3cyID0gMCwKKyAgICBU
ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlSW50ZWdlciA9IDEsCisgICAgVGVzc2VsbGF0aW9uUGFy
dGl0aW9uTW9kZUZyYWN0aW9uYWxPZGQgPSAyLAorICAgIFRlc3NlbGxhdGlvblBhcnRpdGlvbk1v
ZGVGcmFjdGlvbmFsRXZlbiA9IDMsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBUZXNz
ZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24pIHsKKyAgICBUZXNzZWxsYXRpb25GYWN0b3JTdGVw
RnVuY3Rpb25Db25zdGFudCA9IDAsCisgICAgVGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9u
UGVyUGF0Y2ggPSAxLAorICAgIFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvblBlckluc3Rh
bmNlID0gMiwKKyAgICBUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb25QZXJQYXRjaEFuZFBl
ckluc3RhbmNlID0gMywKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFRlc3NlbGxhdGlv
bkZhY3RvckZvcm1hdCkgeworICAgIFRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdEhhbGYgPSAwLAor
fTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5k
ZXhUeXBlKSB7CisgICAgVGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlTm9uZSA9IDAs
CisgICAgVGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlVUludDE2ID0gMSwKKyAgICBU
ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGVVSW50MzIgPSAyLAorfTsKKworY2xhc3Mg
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KiBhbGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpQaXhlbEZvcm1hdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQaXhl
bEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KTsKKworICAgIGJvb2wgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kaW5nRW5hYmxl
ZCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEJsZW5kaW5nRW5hYmxlZChib29sIGJsZW5kaW5nRW5hYmxlZCk7CisK
KyAgICBNVEw6OkJsZW5kRmFjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzb3VyY2VSR0JCbGVuZEZhY3RvcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNvdXJjZVJHQkJsZW5kRmFjdG9y
KE1UTDo6QmxlbmRGYWN0b3Igc291cmNlUkdCQmxlbmRGYWN0b3IpOworCisgICAgTVRMOjpCbGVu
ZEZhY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25S
R0JCbGVuZEZhY3RvcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IoTVRM
OjpCbGVuZEZhY3RvciBkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKTsKKworICAgIE1UTDo6Qmxl
bmRPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYkJsZW5kT3Bl
cmF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0UmdiQmxlbmRPcGVyYXRpb24oTVRMOjpCbGVuZE9wZXJhdGlv
biByZ2JCbGVuZE9wZXJhdGlvbik7CisKKyAgICBNVEw6OkJsZW5kRmFjdG9yICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBbHBoYUJsZW5kRmFjdG9yKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0U291cmNlQWxwaGFCbGVuZEZhY3RvcihNVEw6OkJsZW5kRmFjdG9yIHNvdXJjZUFscGhh
QmxlbmRGYWN0b3IpOworCisgICAgTVRMOjpCbGVuZEZhY3RvciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0RGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKE1UTDo6QmxlbmRGYWN0b3IgZGVzdGluYXRp
b25BbHBoYUJsZW5kRmFjdG9yKTsKKworICAgIE1UTDo6QmxlbmRPcGVyYXRpb24gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhQmxlbmRPcGVyYXRpb24oKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRBbHBoYUJsZW5kT3BlcmF0aW9uKE1UTDo6QmxlbmRPcGVyYXRpb24gYWxwaGFCbGVuZE9wZXJh
dGlvbik7CisKKyAgICBNVEw6OkNvbG9yV3JpdGVNYXNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3cml0ZU1hc2soKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRXcml0ZU1hc2soTVRMOjpDb2xvcldy
aXRlTWFzayB3cml0ZU1hc2spOworfTsKKworY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9u
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogYWxsb2Mo
KTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogICAgICAgIGluaXQoKTsK
KworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEFyZ3Vt
ZW50cygpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhZ21lbnRBcmd1bWVudHMoKSBjb25zdDsKKworICAgIE5TOjpBcnJheSogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbGVBcmd1bWVudHMoKSBjb25zdDsKK307CisKK2NsYXNzIFJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciogICAgICAgICAgICAgIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0
cmluZyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIEZ1bmN0
aW9uKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhGdW5jdGlvbigp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRWZXJ0ZXhGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbiogdmVydGV4RnVu
Y3Rpb24pOworCisgICAgY2xhc3MgRnVuY3Rpb24qICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYWdtZW50RnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnJhZ21lbnRGdW5jdGlvbihj
b25zdCBjbGFzcyBGdW5jdGlvbiogZnJhZ21lbnRGdW5jdGlvbik7CisKKyAgICBjbGFzcyBWZXJ0
ZXhEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4RGVzY3JpcHRv
cigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRWZXJ0ZXhEZXNjcmlwdG9yKGNvbnN0IGNsYXNzIFZlcnRleERlc2NyaXB0
b3IqIHZlcnRleERlc2NyaXB0b3IpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbXBsZUNv
dW50KE5TOjpVSW50ZWdlciBzYW1wbGVDb3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyU2FtcGxlQ291bnQoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0UmFzdGVyU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHJhc3RlclNhbXBsZUNvdW50KTsK
KworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbHBoYVRvQ292ZXJhZ2VFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFscGhhVG9Db3ZlcmFnZUVuYWJs
ZWQoYm9vbCBhbHBoYVRvQ292ZXJhZ2VFbmFibGVkKTsKKworICAgIGJvb2wgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYVRvT25lRW5hYmxlZCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRBbHBoYVRvT25lRW5hYmxlZChib29sIGFscGhhVG9PbmVFbmFibGVkKTsKKworICAg
IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXN0
ZXJpemF0aW9uRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSYXN0ZXJpemF0aW9uRW5hYmxlZChib29sIHJh
c3Rlcml6YXRpb25FbmFibGVkKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0TWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KE5TOjpVSW50ZWdlciBtYXhWZXJ0ZXhB
bXBsaWZpY2F0aW9uQ291bnQpOworCisgICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkqIGNvbG9yQXR0YWNobWVudHMoKSBjb25zdDsKKworICAgIE1U
TDo6UGl4ZWxGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aEF0
dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1h
dChNVEw6OlBpeGVsRm9ybWF0IGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KTsKKworICAgIE1U
TDo6UGl4ZWxGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVuY2ls
QXR0YWNobWVudFBpeGVsRm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZW5jaWxBdHRhY2htZW50UGl4ZWxG
b3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KTsKKwor
ICAgIE1UTDo6UHJpbWl0aXZlVG9wb2xvZ3lDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICBp
bnB1dFByaW1pdGl2ZVRvcG9sb2d5KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElucHV0UHJpbWl0aXZlVG9wb2xvZ3ko
TVRMOjpQcmltaXRpdmVUb3BvbG9neUNsYXNzIGlucHV0UHJpbWl0aXZlVG9wb2xvZ3kpOworCisg
ICAgTVRMOjpUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlICAgICAgICAgICAgICAgICAgICAgIHRl
c3NlbGxhdGlvblBhcnRpdGlvbk1vZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGVzc2VsbGF0aW9uUGFydGl0aW9u
TW9kZShNVEw6OlRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUgdGVzc2VsbGF0aW9uUGFydGl0aW9u
TW9kZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF4VGVzc2VsbGF0aW9uRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heFRlc3NlbGxhdGlv
bkZhY3RvcihOUzo6VUludGVnZXIgbWF4VGVzc2VsbGF0aW9uRmFjdG9yKTsKKworICAgIGJvb2wg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXNzZWxsYXRp
b25GYWN0b3JTY2FsZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVF
bmFibGVkKGJvb2wgdGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkKTsKKworICAgIE1UTDo6
VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICB0ZXNzZWxsYXRp
b25GYWN0b3JGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KE1UTDo6
VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0IHRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCk7CisKKyAg
ICBNVEw6OlRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSAgICAgICAgICAgICAgdGVz
c2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRlc3NlbGxhdGlvbkNv
bnRyb2xQb2ludEluZGV4VHlwZShNVEw6OlRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlw
ZSB0ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUpOworCisgICAgTVRMOjpUZXNzZWxs
YXRpb25GYWN0b3JTdGVwRnVuY3Rpb24gICAgICAgICAgICAgICAgIHRlc3NlbGxhdGlvbkZhY3Rv
clN0ZXBGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24o
TVRMOjpUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24gdGVzc2VsbGF0aW9uRmFjdG9yU3Rl
cEZ1bmN0aW9uKTsKKworICAgIE1UTDo6V2luZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
VGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyKE1UTDo6V2luZGluZyB0ZXNzZWxsYXRpb25P
dXRwdXRXaW5kaW5nT3JkZXIpOworCisgICAgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9y
QXJyYXkqICAgICAgICAgICAgICAgIHZlcnRleEJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGNsYXNz
IFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiAgICAgICAgICAgICAgICBmcmFnbWVudEJ1
ZmZlcnMoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRTdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycyhib29sIHN1cHBvcnRJbmRpcmVjdENvbW1h
bmRCdWZmZXJzKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiaW5hcnlBcmNoaXZlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhj
b25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hpdmVzKTsKKworICAgIE5TOjpBcnJheSogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJp
ZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0VmVydGV4UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSog
dmVydGV4UHJlbG9hZGVkTGlicmFyaWVzKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcygp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRGcmFnbWVudFByZWxvYWRlZExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIGZy
YWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKTsKKworICAgIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0VmVydGV4TGlua2VkRnVuY3Rpb25zKGNvbnN0IGNsYXNzIExpbmtlZEZ1bmN0aW9ucyog
dmVydGV4TGlua2VkRnVuY3Rpb25zKTsKKworICAgIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudExpbmtlZEZ1bmN0aW9ucygpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRGcmFnbWVudExpbmtlZEZ1bmN0aW9ucyhjb25zdCBjbGFzcyBMaW5rZWRGdW5jdGlvbnMq
IGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVu
Y3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMoYm9v
bCBzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zKTsKKworICAgIGJvb2wgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QWRkaW5nRnJh
Z21lbnRCaW5hcnlGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50Qmlu
YXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKTsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhWZXJ0ZXhDYWxsU3RhY2tE
ZXB0aChOUzo6VUludGVnZXIgbWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEZyYWdtZW50
Q2FsbFN0YWNrRGVwdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aChOUzo6
VUludGVnZXIgbWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTsKK307CisKK2Ns
YXNzIFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWlu
ZzxSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNsYXNzIFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvciogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvciogICAgICAgIGluaXQo
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWZXJ0ZXhBZGRpdGlvbmFs
QmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogdmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1
bmN0aW9ucyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGcmFnbWVu
dEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiBmcmFnbWVudEFkZGl0
aW9uYWxCaW5hcnlGdW5jdGlvbnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRUaWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIHRpbGVBZGRp
dGlvbmFsQmluYXJ5RnVuY3Rpb25zKTsKK307CisKK2NsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUg
OiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRlclBpcGVsaW5lU3RhdGU+Cit7CitwdWJsaWM6
CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKwor
ICAgIGNsYXNzIERldmljZSogICAgICAgICAgICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgbWF4VG90YWxUaHJlYWRzUGVyVGhy
ZWFkZ3JvdXAoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICAgICAgICAgaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCgpIGNvbnN0Owor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgaW1hZ2VibG9ja01lbW9yeUxl
bmd0aChNVEw6OlNpemUgaW1hZ2VibG9ja0RpbWVuc2lvbnMpOworCisgICAgYm9vbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25z
dDsKKworICAgIGNsYXNzIEZ1bmN0aW9uSGFuZGxlKiAgICAgICAgICAgIGZ1bmN0aW9uSGFuZGxl
KGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBmdW5jdGlvbiwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2Up
OworCisgICAgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqICAgICAgbmV3VmlzaWJsZUZ1bmN0
aW9uVGFibGUoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNj
cmlwdG9yLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZSk7CisKKyAgICBjbGFzcyBJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlKiBuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNz
IEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlJl
bmRlclN0YWdlcyBzdGFnZSk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiAgICAg
ICBuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRnVuY3Rp
b25zRGVzY3JpcHRvciogYWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywgTlM6OkVycm9yKiogZXJy
b3IpOworfTsKKworY2xhc3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
QXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNs
YXNzIFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAgICAgICAg
aW5pdCgpOworCisgICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpOwor
fTsKKworY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciA6
IHB1YmxpYyBOUzo6Q29weWluZzxUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgVGlsZVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAg
IE1UTDo6UGl4ZWxGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwaXhlbEZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0KTsKK307CisKK2NsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8VGlsZVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAg
IHN0YXRpYyBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
QXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBUaWxlUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3Qo
TlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29u
c3QgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYXR0
YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7Cit9OworCitjbGFzcyBUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFRpbGVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFRpbGVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IqICAgICAgICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3Mg
VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICBpbml0KCk7
CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJl
bCk7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbGVGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlsZUZ1bmN0aW9uKGNvbnN0
IGNsYXNzIEZ1bmN0aW9uKiB0aWxlRnVuY3Rpb24pOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXN0ZXJTYW1wbGVDb3VudCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0UmFzdGVyU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHJhc3RlclNhbXBs
ZUNvdW50KTsKKworICAgIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSogY29sb3JBdHRhY2htZW50cygpIGNvbnN0OworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRncm91
cFNpemVNYXRjaGVzVGlsZVNpemUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRocmVhZGdyb3VwU2l6ZU1hdGNo
ZXNUaWxlU2l6ZShib29sIHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSk7CisKKyAgICBj
bGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogICAgICAgICAgICAgICAgICAgIHRp
bGVCdWZmZXJzKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cChOUzo6VUludGVnZXIg
bWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXApOworCisgICAgTlM6OkFycmF5KiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlBcmNoaXZlcygpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0QmluYXJ5QXJjaGl2ZXMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZl
cyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByZWxvYWRlZExpYnJhcmllcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJlbG9hZGVkTGli
cmFyaWVzKGNvbnN0IE5TOjpBcnJheSogcHJlbG9hZGVkTGlicmFyaWVzKTsKKworICAgIGNsYXNz
IExpbmtlZEZ1bmN0aW9ucyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua2Vk
RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRMaW5rZWRGdW5jdGlvbnMoY29uc3QgY2xhc3MgTGlu
a2VkRnVuY3Rpb25zKiBsaW5rZWRGdW5jdGlvbnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QWRkaW5nQmluYXJ5
RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKGJv
b2wgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucyk7CisKKyAgICBOUzo6VUludGVnZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heENhbGxTdGFja0RlcHRo
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRNYXhDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4Q2FsbFN0
YWNrRGVwdGgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxv
YygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBN
VEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBwaXhlbEZvcm1hdAorX01UTF9J
TkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcjo6cGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3JtYXQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGl4ZWxG
b3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0UGl4ZWxGb3JtYXRfKSwgcGl4ZWxGb3JtYXQpOworfQorCisvLyBwcm9wZXJ0
eTogYmxlbmRpbmdFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpibGVuZGluZ0VuYWJsZWQoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
aXNCbGVuZGluZ0VuYWJsZWQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0QmxlbmRpbmdFbmFibGVkKGJvb2wg
YmxlbmRpbmdFbmFibGVkKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRCbGVuZGluZ0VuYWJsZWRfKSwgYmxlbmRpbmdFbmFibGVkKTsK
K30KKworLy8gcHJvcGVydHk6IHNvdXJjZVJHQkJsZW5kRmFjdG9yCitfTVRMX0lOTElORSBNVEw6
OkJsZW5kRmFjdG9yIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
Ojpzb3VyY2VSR0JCbGVuZEZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpCbGVuZEZhY3Rvcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzb3VyY2VS
R0JCbGVuZEZhY3RvcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTb3VyY2VSR0JCbGVuZEZhY3RvcihNVEw6
OkJsZW5kRmFjdG9yIHNvdXJjZVJHQkJsZW5kRmFjdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTb3VyY2VSR0JCbGVuZEZhY3Rv
cl8pLCBzb3VyY2VSR0JCbGVuZEZhY3Rvcik7Cit9CisKKy8vIHByb3BlcnR5OiBkZXN0aW5hdGlv
blJHQkJsZW5kRmFjdG9yCitfTVRMX0lOTElORSBNVEw6OkJsZW5kRmFjdG9yIE1UTDo6UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpkZXN0aW5hdGlvblJHQkJsZW5kRmFj
dG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsZW5k
RmFjdG9yPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3Ip
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c2V0RGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcihNVEw6OkJsZW5kRmFj
dG9yIGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0
b3JfKSwgZGVzdGluYXRpb25SR0JCbGVuZEZhY3Rvcik7Cit9CisKKy8vIHByb3BlcnR5OiByZ2JC
bGVuZE9wZXJhdGlvbgorX01UTF9JTkxJTkUgTVRMOjpCbGVuZE9wZXJhdGlvbiBNVEw6OlJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cmdiQmxlbmRPcGVyYXRpb24oKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxlbmRPcGVyYXRp
b24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmdiQmxlbmRPcGVyYXRpb24pKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cjo6c2V0UmdiQmxlbmRPcGVyYXRpb24oTVRMOjpCbGVuZE9wZXJhdGlvbiByZ2JCbGVuZE9wZXJh
dGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0UmdiQmxlbmRPcGVyYXRpb25fKSwgcmdiQmxlbmRPcGVyYXRpb24pOworfQorCisv
LyBwcm9wZXJ0eTogc291cmNlQWxwaGFCbGVuZEZhY3RvcgorX01UTF9JTkxJTkUgTVRMOjpCbGVu
ZEZhY3RvciBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c291
cmNlQWxwaGFCbGVuZEZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpCbGVuZEZhY3Rvcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzb3VyY2VBbHBo
YUJsZW5kRmFjdG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFNvdXJjZUFscGhhQmxlbmRGYWN0b3IoTVRM
OjpCbGVuZEZhY3RvciBzb3VyY2VBbHBoYUJsZW5kRmFjdG9yKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTb3VyY2VBbHBoYUJsZW5k
RmFjdG9yXyksIHNvdXJjZUFscGhhQmxlbmRGYWN0b3IpOworfQorCisvLyBwcm9wZXJ0eTogZGVz
dGluYXRpb25BbHBoYUJsZW5kRmFjdG9yCitfTVRMX0lOTElORSBNVEw6OkJsZW5kRmFjdG9yIE1U
TDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpkZXN0aW5hdGlvbkFs
cGhhQmxlbmRGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6QmxlbmRGYWN0b3I+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVzdGluYXRpb25BbHBo
YUJsZW5kRmFjdG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldERlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3Rv
cihNVEw6OkJsZW5kRmFjdG9yIGRlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvcikKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVzdGlu
YXRpb25BbHBoYUJsZW5kRmFjdG9yXyksIGRlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3Rvcik7Cit9
CisKKy8vIHByb3BlcnR5OiBhbHBoYUJsZW5kT3BlcmF0aW9uCitfTVRMX0lOTElORSBNVEw6OkJs
ZW5kT3BlcmF0aW9uIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
OjphbHBoYUJsZW5kT3BlcmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkJsZW5kT3BlcmF0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFscGhh
QmxlbmRPcGVyYXRpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0QWxwaGFCbGVuZE9wZXJhdGlvbihNVEw6
OkJsZW5kT3BlcmF0aW9uIGFscGhhQmxlbmRPcGVyYXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFscGhhQmxlbmRPcGVyYXRp
b25fKSwgYWxwaGFCbGVuZE9wZXJhdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiB3cml0ZU1hc2sK
K19NVExfSU5MSU5FIE1UTDo6Q29sb3JXcml0ZU1hc2sgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I6OndyaXRlTWFzaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb2xvcldyaXRlTWFzaz4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh3cml0ZU1hc2spKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0V3JpdGVNYXNrKE1UTDo6Q29sb3JXcml0
ZU1hc2sgd3JpdGVNYXNrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRXcml0ZU1hc2tfKSwgd3JpdGVNYXNrKTsKK30KKworLy8gc3Rh
dGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0
aW9uKiBNVEw6OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbjo6YWxsb2MoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbj4oX01UTF9Q
UklWQVRFX0NMUyhNVExSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24pKTsKK30KKworLy8gbWV0aG9k
OiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogTVRMOjpS
ZW5kZXJQaXBlbGluZVJlZmxlY3Rpb246OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uPigpOworfQorCisvLyBwcm9wZXJ0
eTogdmVydGV4QXJndW1lbnRzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlw
ZWxpbmVSZWZsZWN0aW9uOjp2ZXJ0ZXhBcmd1bWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVy
dGV4QXJndW1lbnRzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudEFyZ3VtZW50cworX01U
TF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbjo6ZnJhZ21l
bnRBcmd1bWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnJhZ21lbnRBcmd1bWVudHMpKTsKK30K
KworLy8gcHJvcGVydHk6IHRpbGVBcmd1bWVudHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRM
OjpSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb246OnRpbGVBcmd1bWVudHMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodGlsZUFyZ3VtZW50cykpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01U
TF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1U
TDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUg
TlM6OlN0cmluZyogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4RnVuY3Rpb24KK19NVExf
SU5MSU5FIE1UTDo6RnVuY3Rpb24qIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0
ZXhGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpGdW5jdGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVydGV4RnVuY3Rpb24pKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VmVy
dGV4RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbiogdmVydGV4RnVuY3Rpb24pCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRl
eEZ1bmN0aW9uXyksIHZlcnRleEZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGZyYWdtZW50
RnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb24qIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpmcmFnbWVudEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFn
bWVudEZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OnNldEZyYWdtZW50RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbiogZnJh
Z21lbnRGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRGdW5jdGlvbl8pLCBmcmFnbWVudEZ1bmN0aW9uKTsK
K30KKworLy8gcHJvcGVydHk6IHZlcnRleERlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6VmVy
dGV4RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnZlcnRleERlc2Ny
aXB0b3IoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmVy
dGV4RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVydGV4RGVzY3JpcHRvcikp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpz
ZXRWZXJ0ZXhEZXNjcmlwdG9yKGNvbnN0IE1UTDo6VmVydGV4RGVzY3JpcHRvciogdmVydGV4RGVz
Y3JpcHRvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VmVydGV4RGVzY3JpcHRvcl8pLCB2ZXJ0ZXhEZXNjcmlwdG9yKTsKK30KKwor
Ly8gcHJvcGVydHk6IHNhbXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2FtcGxlQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6c2V0U2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRTYW1wbGVDb3VudF8pLCBzYW1wbGVDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiByYXN0ZXJT
YW1wbGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpyYXN0ZXJTYW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJhc3Rl
clNhbXBsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OnNldFJhc3RlclNhbXBsZUNvdW50KE5TOjpVSW50ZWdlciByYXN0ZXJTYW1w
bGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0UmFzdGVyU2FtcGxlQ291bnRfKSwgcmFzdGVyU2FtcGxlQ291bnQpOworfQor
CisvLyBwcm9wZXJ0eTogYWxwaGFUb0NvdmVyYWdlRW5hYmxlZAorX01UTF9JTkxJTkUgYm9vbCBN
VEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6YWxwaGFUb0NvdmVyYWdlRW5hYmxlZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChpc0FscGhhVG9Db3ZlcmFnZUVuYWJsZWQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0QWxwaGFUb0NvdmVyYWdlRW5h
YmxlZChib29sIGFscGhhVG9Db3ZlcmFnZUVuYWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFscGhhVG9Db3ZlcmFnZUVuYWJs
ZWRfKSwgYWxwaGFUb0NvdmVyYWdlRW5hYmxlZCk7Cit9CisKKy8vIHByb3BlcnR5OiBhbHBoYVRv
T25lRW5hYmxlZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6YWxwaGFUb09uZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNBbHBoYVRvT25lRW5hYmxlZCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpz
ZXRBbHBoYVRvT25lRW5hYmxlZChib29sIGFscGhhVG9PbmVFbmFibGVkKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRBbHBoYVRvT25l
RW5hYmxlZF8pLCBhbHBoYVRvT25lRW5hYmxlZCk7Cit9CisKKy8vIHByb3BlcnR5OiByYXN0ZXJp
emF0aW9uRW5hYmxlZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6cmFzdGVyaXphdGlvbkVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNSYXN0ZXJpemF0aW9u
RW5hYmxlZCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpzZXRSYXN0ZXJpemF0aW9uRW5hYmxlZChib29sIHJhc3Rlcml6YXRpb25FbmFibGVk
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRSYXN0ZXJpemF0aW9uRW5hYmxlZF8pLCByYXN0ZXJpemF0aW9uRW5hYmxlZCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bWF4VmVydGV4QW1wbGlm
aWNhdGlvbkNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VmVydGV4QW1wbGlmaWNhdGlv
bkNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OnNldE1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgbWF4VmVy
dGV4QW1wbGlmaWNhdGlvbkNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfKSwg
bWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IGNvbG9yQXR0
YWNobWVudHMKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpjb2xvckF0dGFj
aG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChjb2xvckF0dGFjaG1lbnRzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXB0aEF0
dGFjaG1lbnRQaXhlbEZvcm1hdAorX01UTF9JTkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3JtYXQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0RGVwdGhB
dHRhY2htZW50UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBkZXB0aEF0dGFjaG1lbnRQaXhl
bEZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXRfKSwgZGVwdGhBdHRhY2htZW50
UGl4ZWxGb3JtYXQpOworfQorCisvLyBwcm9wZXJ0eTogc3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZv
cm1hdAorX01UTF9JTkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6c3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXhlbEZvcm1hdD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFN0ZW5jaWxBdHRhY2htZW50
UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0XyksIHN0ZW5jaWxBdHRhY2htZW50UGl4
ZWxGb3JtYXQpOworfQorCisvLyBwcm9wZXJ0eTogaW5wdXRQcmltaXRpdmVUb3BvbG9neQorX01U
TF9JTkxJTkUgTVRMOjpQcmltaXRpdmVUb3BvbG9neUNsYXNzIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjppbnB1dFByaW1pdGl2ZVRvcG9sb2d5KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlByaW1pdGl2ZVRvcG9sb2d5Q2xhc3M+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaW5wdXRQcmltaXRpdmVUb3BvbG9neSkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRJbnB1dFByaW1pdGl2ZVRv
cG9sb2d5KE1UTDo6UHJpbWl0aXZlVG9wb2xvZ3lDbGFzcyBpbnB1dFByaW1pdGl2ZVRvcG9sb2d5
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRJbnB1dFByaW1pdGl2ZVRvcG9sb2d5XyksIGlucHV0UHJpbWl0aXZlVG9wb2xvZ3kpOwor
fQorCisvLyBwcm9wZXJ0eTogdGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZQorX01UTF9JTkxJTkUg
TVRMOjpUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjp0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGU+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRpb25Q
YXJ0aXRpb25Nb2RlKE1UTDo6VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSB0ZXNzZWxsYXRpb25Q
YXJ0aXRpb25Nb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlXyksIHRlc3NlbGxhdGlv
blBhcnRpdGlvbk1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VGVzc2VsbGF0aW9uRmFjdG9y
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
Om1heFRlc3NlbGxhdGlvbkZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFRlc3NlbGxh
dGlvbkZhY3RvcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpzZXRNYXhUZXNzZWxsYXRpb25GYWN0b3IoTlM6OlVJbnRlZ2VyIG1heFRlc3Nl
bGxhdGlvbkZhY3RvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0TWF4VGVzc2VsbGF0aW9uRmFjdG9yXyksIG1heFRlc3NlbGxhdGlv
bkZhY3Rvcik7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJs
ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRlc3Nl
bGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1Rlc3NlbGxhdGlvbkZh
Y3RvclNjYWxlRW5hYmxlZCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQoYm9vbCB0
ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxl
RW5hYmxlZF8pLCB0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQpOworfQorCisvLyBwcm9w
ZXJ0eTogdGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0CitfTVRMX0lOTElORSBNVEw6OlRlc3NlbGxh
dGlvbkZhY3RvckZvcm1hdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2VsbGF0
aW9uRmFjdG9yRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0
ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KE1UTDo6
VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0IHRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVz
c2VsbGF0aW9uRmFjdG9yRm9ybWF0XyksIHRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCk7Cit9CisK
Ky8vIHByb3BlcnR5OiB0ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUKK19NVExfSU5M
SU5FIE1UTDo6VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjp0ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGVzc2VsbGF0aW9uQ29u
dHJvbFBvaW50SW5kZXhUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRlc3NlbGxhdGlvbkNv
bnRyb2xQb2ludEluZGV4VHlwZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUo
TVRMOjpUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUgdGVzc2VsbGF0aW9uQ29udHJv
bFBvaW50SW5kZXhUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGVfKSwg
dGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlKTsKK30KKworLy8gcHJvcGVydHk6IHRl
c3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbgorX01UTF9JTkxJTkUgTVRMOjpUZXNzZWxsYXRp
b25GYWN0b3JTdGVwRnVuY3Rpb24gTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRlc3Nl
bGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFRlc3NlbGxh
dGlvbkZhY3RvclN0ZXBGdW5jdGlvbihNVEw6OlRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlv
biB0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclN0
ZXBGdW5jdGlvbl8pLCB0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24pOworfQorCisvLyBw
cm9wZXJ0eTogdGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyCitfTVRMX0lOTElORSBNVEw6
OldpbmRpbmcgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRlc3NlbGxhdGlvbk91dHB1
dFdpbmRpbmdPcmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpXaW5kaW5nPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRlc3NlbGxhdGlvbk91dHB1dFdp
bmRpbmdPcmRlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIoTVRMOjpXaW5kaW5n
IHRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uT3V0cHV0V2lu
ZGluZ09yZGVyXyksIHRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcik7Cit9CisKKy8vIHBy
b3BlcnR5OiB2ZXJ0ZXhCdWZmZXJzCitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVz
Y3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dmVydGV4QnVmZmVy
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXBlbGlu
ZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVydGV4QnVm
ZmVycykpOworfQorCisvLyBwcm9wZXJ0eTogZnJhZ21lbnRCdWZmZXJzCitfTVRMX0lOTElORSBN
VEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6ZnJhZ21lbnRCdWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChmcmFnbWVudEJ1ZmZlcnMpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBv
cnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3VwcG9ydEluZGlyZWN0
Q29tbWFuZEJ1ZmZlcnMoYm9vbCBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycykKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3Vw
cG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnNfKSwgc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZl
cnMpOworfQorCisvLyBwcm9wZXJ0eTogYmluYXJ5QXJjaGl2ZXMKK19NVExfSU5MSU5FIE5TOjpB
cnJheSogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmJpbmFyeUFyY2hpdmVzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGJpbmFyeUFyY2hpdmVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEJpbmFyeUFyY2hpdmVzKGNvbnN0IE5T
OjpBcnJheSogYmluYXJ5QXJjaGl2ZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJpbmFyeUFyY2hpdmVzXyksIGJpbmFyeUFyY2hp
dmVzKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleFByZWxvYWRlZExpYnJhcmllcworX01UTF9J
TkxJTkUgTlM6OkFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dmVydGV4UHJl
bG9hZGVkTGlicmFyaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleFByZWxvYWRlZExpYnJh
cmllcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjpzZXRWZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiB2ZXJ0ZXhQ
cmVsb2FkZWRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFByZWxvYWRlZExpYnJhcmllc18pLCB2ZXJ0ZXhQ
cmVsb2FkZWRMaWJyYXJpZXMpOworfQorCisvLyBwcm9wZXJ0eTogZnJhZ21lbnRQcmVsb2FkZWRM
aWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OmZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZy
YWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKGNv
bnN0IE5TOjpBcnJheSogZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50UHJl
bG9hZGVkTGlicmFyaWVzXyksIGZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKTsKK30KKworLy8g
cHJvcGVydHk6IHZlcnRleExpbmtlZEZ1bmN0aW9ucworX01UTF9JTkxJTkUgTVRMOjpMaW5rZWRG
dW5jdGlvbnMqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhMaW5rZWRGdW5j
dGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlu
a2VkRnVuY3Rpb25zKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhMaW5rZWRGdW5jdGlv
bnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6c2V0VmVydGV4TGlua2VkRnVuY3Rpb25zKGNvbnN0IE1UTDo6TGlua2VkRnVuY3Rpb25zKiB2
ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleExpbmtlZEZ1bmN0aW9uc18pLCB2ZXJ0ZXhM
aW5rZWRGdW5jdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogZnJhZ21lbnRMaW5rZWRGdW5jdGlv
bnMKK19NVExfSU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6ZnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlua2VkRnVuY3Rpb25zKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChmcmFnbWVudExpbmtlZEZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRGcmFnbWVudExpbmtlZEZ1bmN0
aW9ucyhjb25zdCBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogZnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEZyYWdtZW50TGlua2VkRnVuY3Rpb25zXyksIGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKTsK
K30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMKK19N
VExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnN1cHBvcnRBZGRp
bmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRBZGRpbmdW
ZXJ0ZXhCaW5hcnlGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9u
cyhib29sIHN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN1cHBvcnRBZGRp
bmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnNfKSwgc3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0
aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5j
dGlvbnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnN1
cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3Vw
cG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFN1cHBvcnRBZGRpbmdGcmFnbWVu
dEJpbmFyeUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9u
cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zXyksIHN1cHBvcnRBZGRp
bmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhWZXJ0ZXhD
YWxsU3RhY2tEZXB0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjptYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG1heFZlcnRleENhbGxTdGFja0RlcHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldE1heFZlcnRleENhbGxTdGFja0RlcHRoKE5T
OjpVSW50ZWdlciBtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4VmVydGV4Q2FsbFN0YWNr
RGVwdGhfKSwgbWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgpOworfQorCisvLyBwcm9wZXJ0eTogbWF4
RnJhZ21lbnRDYWxsU3RhY2tEZXB0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhGcmFnbWVudENh
bGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRN
YXhGcmFnbWVudENhbGxTdGFja0RlcHRoXyksIG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgpOwor
fQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpyZXNldCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvciog
TVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlw
dG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBl
bGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNj
cmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRl
clBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRl
eEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpS
ZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I6OnZlcnRleEFkZGl0aW9uYWxCaW5hcnlG
dW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpB
cnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0
aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlv
bnNEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5T
OjpBcnJheSogdmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4QWRkaXRp
b25hbEJpbmFyeUZ1bmN0aW9uc18pLCB2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKTsK
K30KKworLy8gcHJvcGVydHk6IGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucworX01U
TF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRv
cjo6ZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yOjpzZXRGcmFnbWVudEFk
ZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiBmcmFnbWVudEFkZGl0aW9u
YWxCaW5hcnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uc18p
LCBmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTog
dGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRM
OjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I6OnRpbGVBZGRpdGlvbmFsQmluYXJ5
RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rp
b25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9u
c0Rlc2NyaXB0b3I6OnNldFRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpB
cnJheSogdGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVBZGRpdGlvbmFsQmlu
YXJ5RnVuY3Rpb25zXyksIHRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8g
cHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlJlbmRlclBpcGVs
aW5lU3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBw
cm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpSZW5kZXJQaXBl
bGluZVN0YXRlOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKwor
Ly8gcHJvcGVydHk6IG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjptYXhUb3RhbFRocmVhZHNQZXJU
aHJlYWRncm91cCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFRvdGFsVGhyZWFkc1BlclRocmVh
ZGdyb3VwKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNp
emUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjp0aHJlYWRncm91
cFNpemVNYXRjaGVzVGlsZVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFkZ3JvdXBTaXplTWF0Y2hl
c1RpbGVTaXplKSk7Cit9CisKKy8vIHByb3BlcnR5OiBpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoCitf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjppbWFnZWJs
b2NrU2FtcGxlTGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW1hZ2VibG9ja1NhbXBsZUxl
bmd0aCkpOworfQorCisvLyBtZXRob2Q6IGltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNp
b25zOgorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6
aW1hZ2VibG9ja01lbW9yeUxlbmd0aChNVEw6OlNpemUgaW1hZ2VibG9ja0RpbWVuc2lvbnMpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zXyksIGltYWdl
YmxvY2tEaW1lbnNpb25zKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRJbmRpcmVjdENvbW1h
bmRCdWZmZXJzCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6c3Vw
cG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRJbmRp
cmVjdENvbW1hbmRCdWZmZXJzKSk7Cit9CisKKy8vIG1ldGhvZDogZnVuY3Rpb25IYW5kbGVXaXRo
RnVuY3Rpb246c3RhZ2U6CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBNVEw6OlJl
bmRlclBpcGVsaW5lU3RhdGU6OmZ1bmN0aW9uSGFuZGxlKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGZ1
bmN0aW9uLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uSGFuZGxlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChm
dW5jdGlvbkhhbmRsZVdpdGhGdW5jdGlvbl9zdGFnZV8pLCBmdW5jdGlvbiwgc3RhZ2UpOworfQor
CisvLyBtZXRob2Q6IG5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6
CitfTVRMX0lOTElORSBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiBNVEw6OlJlbmRlclBpcGVs
aW5lU3RhdGU6Om5ld1Zpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZSkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZpc2libGVGdW5jdGlvblRh
YmxlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZVdpdGhE
ZXNjcmlwdG9yX3N0YWdlXyksIGRlc2NyaXB0b3IsIHN0YWdlKTsKK30KKworLy8gbWV0aG9kOiBu
ZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6CitfTVRMX0lO
TElORSBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIE1UTDo6UmVuZGVyUGlwZWxpbmVT
dGF0ZTo6bmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OkludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlJlbmRlclN0YWdlcyBz
dGFnZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0ludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcl9zdGFnZV8pLCBkZXNjcmlwdG9yLCBzdGFnZSk7Cit9
CisKKy8vIG1ldGhvZDogbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5
RnVuY3Rpb25zOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBN
VEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRM
OjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3IqIGFkZGl0aW9uYWxCaW5hcnlGdW5j
dGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXyks
IGFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMsIGVycm9yKTsKK30KKworLy8gc3RhdGljIG1ldGhv
ZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRF
X0NMUyhNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSkpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7
Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUg
TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVn
ZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudEluZGV4KTsK
K30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5
OjpzZXRPYmplY3QoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVj
dF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudCwgYXR0YWNobWVudEluZGV4KTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cj4oX01UTF9QUklWQVRFX0NMUyhNVExUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpUaWxl
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0Ojppbml0PE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHBpeGVsRm9ybWF0CitfTVRMX0lOTElORSBN
VEw6OlBpeGVsRm9ybWF0IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcjo6cGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6UGl4ZWxGb3JtYXQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGl4ZWxGb3Jt
YXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I6OnNldFBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFBpeGVsRm9ybWF0XyksIHBpeGVsRm9ybWF0KTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBN
VEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRM
OjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmluaXQo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VGlsZVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVj
dEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudElu
ZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGlsZVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
b2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OnNldE9i
amVjdChjb25zdCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9h
dEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudCwgYXR0YWNobWVudEluZGV4KTsKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VGlsZVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VGlsZVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBO
Uzo6U3RyaW5nKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmxhYmVsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGls
ZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFi
ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVGdW5jdGlvbgor
X01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjp0aWxlRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRpbGVGdW5jdGlvbikp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6c2V0VGlsZUZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb24qIHRpbGVGdW5jdGlvbikKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VGlsZUZ1bmN0aW9uXyksIHRpbGVGdW5jdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiByYXN0ZXJT
YW1wbGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGlsZVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6cmFzdGVyU2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChy
YXN0ZXJTYW1wbGVDb3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0UmFzdGVyU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHJh
c3RlclNhbXBsZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRSYXN0ZXJTYW1wbGVDb3VudF8pLCByYXN0ZXJTYW1wbGVDb3Vu
dCk7Cit9CisKKy8vIHByb3BlcnR5OiBjb2xvckF0dGFjaG1lbnRzCitfTVRMX0lOTElORSBNVEw6
OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29s
b3JBdHRhY2htZW50cykpOworfQorCisvLyBwcm9wZXJ0eTogdGhyZWFkZ3JvdXBTaXplTWF0Y2hl
c1RpbGVTaXplCitfTVRMX0lOTElORSBib29sIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6dGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRocmVh
ZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1Rp
bGVTaXplKGJvb2wgdGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaHJlYWRncm91
cFNpemVNYXRjaGVzVGlsZVNpemVfKSwgdGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKTsK
K30KKworLy8gcHJvcGVydHk6IHRpbGVCdWZmZXJzCitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5l
QnVmZmVyRGVzY3JpcHRvckFycmF5KiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OnRpbGVCdWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh0aWxlQnVmZmVycykpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VG90YWxUaHJlYWRzUGVyVGhy
ZWFkZ3JvdXAKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRpbGVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6Om1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXApKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldE1heFRvdGFsVGhy
ZWFkc1BlclRocmVhZGdyb3VwKE5TOjpVSW50ZWdlciBtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRn
cm91cCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0TWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgbWF4VG90YWxUaHJlYWRz
UGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBwcm9wZXJ0eTogYmluYXJ5QXJjaGl2ZXMKK19NVExf
SU5MSU5FIE5TOjpBcnJheSogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpiaW5h
cnlBcmNoaXZlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChiaW5hcnlBcmNoaXZlcykpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0Qmlu
YXJ5QXJjaGl2ZXMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJj
aGl2ZXNfKSwgYmluYXJ5QXJjaGl2ZXMpOworfQorCisvLyBwcm9wZXJ0eTogcHJlbG9hZGVkTGli
cmFyaWVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6cHJlbG9hZGVkTGlicmFyaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByZWxvYWRl
ZExpYnJhcmllcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6c2V0UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogcHJl
bG9hZGVkTGlicmFyaWVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRQcmVsb2FkZWRMaWJyYXJpZXNfKSwgcHJlbG9hZGVkTGlicmFy
aWVzKTsKK30KKworLy8gcHJvcGVydHk6IGxpbmtlZEZ1bmN0aW9ucworX01UTF9JTkxJTkUgTVRM
OjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bGlu
a2VkRnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkxpbmtlZEZ1bmN0aW9ucyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGlua2VkRnVuY3Rp
b25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpzZXRMaW5rZWRGdW5jdGlvbnMoY29uc3QgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIGxp
bmtlZEZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0TGlua2VkRnVuY3Rpb25zXyksIGxpbmtlZEZ1bmN0aW9ucyk7Cit9
CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zCitfTVRMX0lOTElO
RSBib29sIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c3VwcG9ydEFkZGluZ0Jp
bmFyeUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VT
YWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0
aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6c2V0U3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRp
bmdCaW5hcnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnNfKSwgc3Vw
cG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhDYWxsU3Rh
Y2tEZXB0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6bWF4Q2FsbFN0YWNrRGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhD
YWxsU3RhY2tEZXB0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4Q2FsbFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1heENh
bGxTdGFja0RlcHRoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRNYXhDYWxsU3RhY2tEZXB0aF8pLCBtYXhDYWxsU3RhY2tEZXB0aCk7
Cit9CisKKy8vIG1ldGhvZDogcmVzZXQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjpyZXNldCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2UuaHBwIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlLmhwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mM2UyNjhiMTc5NDgyOWUxYTUwMTZmNjNkMWRiZDQ5OWFjMDVlOWQ2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlLmhw
cApAQCAtMCwwICsxLDE3OCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUmVzb3VyY2UuaHBwCisvLworLy8gQ29weXJpZ2h0
IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5o
cHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRl
LmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRl
ICJNVExSZXNvdXJjZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUlu
dGVnZXIsIFB1cmdlYWJsZVN0YXRlKSB7CisgICAgUHVyZ2VhYmxlU3RhdGVLZWVwQ3VycmVudCA9
IDEsCisgICAgUHVyZ2VhYmxlU3RhdGVOb25Wb2xhdGlsZSA9IDIsCisgICAgUHVyZ2VhYmxlU3Rh
dGVWb2xhdGlsZSA9IDMsCisgICAgUHVyZ2VhYmxlU3RhdGVFbXB0eSA9IDQsCit9OworCitfTVRM
X0VOVU0oTlM6OlVJbnRlZ2VyLCBDUFVDYWNoZU1vZGUpIHsKKyAgICBDUFVDYWNoZU1vZGVEZWZh
dWx0Q2FjaGUgPSAwLAorICAgIENQVUNhY2hlTW9kZVdyaXRlQ29tYmluZWQgPSAxLAorfTsKKwor
X01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU3RvcmFnZU1vZGUpIHsKKyAgICBTdG9yYWdlTW9kZVNo
YXJlZCA9IDAsCisgICAgU3RvcmFnZU1vZGVNYW5hZ2VkID0gMSwKKyAgICBTdG9yYWdlTW9kZVBy
aXZhdGUgPSAyLAorICAgIFN0b3JhZ2VNb2RlTWVtb3J5bGVzcyA9IDMsCit9OworCitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBIYXphcmRUcmFja2luZ01vZGUpIHsKKyAgICBIYXphcmRUcmFja2lu
Z01vZGVEZWZhdWx0ID0gMCwKKyAgICBIYXphcmRUcmFja2luZ01vZGVVbnRyYWNrZWQgPSAxLAor
ICAgIEhhemFyZFRyYWNraW5nTW9kZVRyYWNrZWQgPSAyLAorfTsKKworX01UTF9PUFRJT05TKE5T
OjpVSW50ZWdlciwgUmVzb3VyY2VPcHRpb25zKSB7CisgICAgUmVzb3VyY2VTdG9yYWdlTW9kZVNo
YXJlZCA9IDAsCisgICAgUmVzb3VyY2VIYXphcmRUcmFja2luZ01vZGVEZWZhdWx0ID0gMCwKKyAg
ICBSZXNvdXJjZUNQVUNhY2hlTW9kZURlZmF1bHRDYWNoZSA9IDAsCisgICAgUmVzb3VyY2VPcHRp
b25DUFVDYWNoZU1vZGVEZWZhdWx0ID0gMCwKKyAgICBSZXNvdXJjZUNQVUNhY2hlTW9kZVdyaXRl
Q29tYmluZWQgPSAxLAorICAgIFJlc291cmNlT3B0aW9uQ1BVQ2FjaGVNb2RlV3JpdGVDb21iaW5l
ZCA9IDEsCisgICAgUmVzb3VyY2VTdG9yYWdlTW9kZU1hbmFnZWQgPSAxNiwKKyAgICBSZXNvdXJj
ZVN0b3JhZ2VNb2RlUHJpdmF0ZSA9IDMyLAorICAgIFJlc291cmNlU3RvcmFnZU1vZGVNZW1vcnls
ZXNzID0gNDgsCisgICAgUmVzb3VyY2VIYXphcmRUcmFja2luZ01vZGVVbnRyYWNrZWQgPSAyNTYs
CisgICAgUmVzb3VyY2VIYXphcmRUcmFja2luZ01vZGVUcmFja2VkID0gNTEyLAorfTsKKworY2xh
c3MgUmVzb3VyY2UgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlc291cmNlPgoreworcHVibGlj
OgorICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisg
ICAgY2xhc3MgRGV2aWNlKiAgICAgICAgICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBNVEw6OkNQ
VUNhY2hlTW9kZSAgICAgICBjcHVDYWNoZU1vZGUoKSBjb25zdDsKKworICAgIE1UTDo6U3RvcmFn
ZU1vZGUgICAgICAgIHN0b3JhZ2VNb2RlKCkgY29uc3Q7CisKKyAgICBNVEw6OkhhemFyZFRyYWNr
aW5nTW9kZSBoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdDsKKworICAgIE1UTDo6UmVzb3VyY2VP
cHRpb25zICAgIHJlc291cmNlT3B0aW9ucygpIGNvbnN0OworCisgICAgTVRMOjpQdXJnZWFibGVT
dGF0ZSAgICAgc2V0UHVyZ2VhYmxlU3RhdGUoTVRMOjpQdXJnZWFibGVTdGF0ZSBzdGF0ZSk7CisK
KyAgICBjbGFzcyBIZWFwKiAgICAgICAgICAgICBoZWFwKCkgY29uc3Q7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICBoZWFwT2Zmc2V0KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIg
ICAgICAgICAgICBhbGxvY2F0ZWRTaXplKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICBtYWtlQWxpYXNhYmxlKCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICBp
c0FsaWFzYWJsZSgpOworfTsKKworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5F
IE5TOjpTdHJpbmcqIE1UTDo6UmVzb3VyY2U6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChs
YWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2U6OnNldExhYmVsKGNv
bnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OlJlc291cmNlOjpkZXZp
Y2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNl
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGNw
dUNhY2hlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpDUFVDYWNoZU1vZGUgTVRMOjpSZXNvdXJjZTo6
Y3B1Q2FjaGVNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkNQVUNhY2hlTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChjcHVDYWNoZU1vZGUpKTsK
K30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VNb2RlCitfTVRMX0lOTElORSBNVEw6OlN0b3JhZ2VN
b2RlIE1UTDo6UmVzb3VyY2U6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JhZ2VNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHN0b3JhZ2VNb2RlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBoYXphcmRUcmFja2luZ01vZGUKK19N
VExfSU5MSU5FIE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIE1UTDo6UmVzb3VyY2U6OmhhemFyZFRy
YWNraW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpIYXphcmRUcmFja2luZ01vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaGF6YXJkVHJhY2tp
bmdNb2RlKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZXNvdXJjZU9wdGlvbnMKK19NVExfSU5MSU5F
IE1UTDo6UmVzb3VyY2VPcHRpb25zIE1UTDo6UmVzb3VyY2U6OnJlc291cmNlT3B0aW9ucygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZU9wdGlv
bnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzb3VyY2VPcHRpb25zKSk7Cit9CisKKy8vIG1l
dGhvZDogc2V0UHVyZ2VhYmxlU3RhdGU6CitfTVRMX0lOTElORSBNVEw6OlB1cmdlYWJsZVN0YXRl
IE1UTDo6UmVzb3VyY2U6OnNldFB1cmdlYWJsZVN0YXRlKE1UTDo6UHVyZ2VhYmxlU3RhdGUgc3Rh
dGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQdXJnZWFibGVTdGF0
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRQdXJnZWFibGVTdGF0ZV8pLCBzdGF0ZSk7Cit9
CisKKy8vIHByb3BlcnR5OiBoZWFwCitfTVRMX0lOTElORSBNVEw6OkhlYXAqIE1UTDo6UmVzb3Vy
Y2U6OmhlYXAoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
SGVhcCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaGVhcCkpOworfQorCisvLyBwcm9wZXJ0eTog
aGVhcE9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVzb3VyY2U6OmhlYXBP
ZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChoZWFwT2Zmc2V0KSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBhbGxvY2F0ZWRTaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZXNvdXJj
ZTo6YWxsb2NhdGVkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsbG9jYXRlZFNpemUpKTsK
K30KKworLy8gbWV0aG9kOiBtYWtlQWxpYXNhYmxlCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVz
b3VyY2U6Om1ha2VBbGlhc2FibGUoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChtYWtlQWxpYXNhYmxlKSk7Cit9CisKKy8vIG1ldGhvZDog
aXNBbGlhc2FibGUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZXNvdXJjZTo6aXNBbGlhc2FibGUo
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoaXNBbGlhc2FibGUpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVDb21t
YW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY4M2FjMWY4YjE2YmQ1ZTViMWJhM2I3YmUyMmVm
Nzc5NGY0OWI5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEs
OTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIE1ldGFsL01UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5
cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZp
bmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFBy
aXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2lu
Y2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVyLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9F
TlVNKE5TOjpVSW50ZWdlciwgU3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlKSB7CisgICAgU3BhcnNl
VGV4dHVyZU1hcHBpbmdNb2RlTWFwID0gMCwKKyAgICBTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGVV
bm1hcCA9IDEsCit9OworCitzdHJ1Y3QgTWFwSW5kaXJlY3RBcmd1bWVudHMKK3sKKyAgICB1aW50
MzJfdCByZWdpb25PcmlnaW5YOworICAgIHVpbnQzMl90IHJlZ2lvbk9yaWdpblk7CisgICAgdWlu
dDMyX3QgcmVnaW9uT3JpZ2luWjsKKyAgICB1aW50MzJfdCByZWdpb25TaXplV2lkdGg7CisgICAg
dWludDMyX3QgcmVnaW9uU2l6ZUhlaWdodDsKKyAgICB1aW50MzJfdCByZWdpb25TaXplRGVwdGg7
CisgICAgdWludDMyX3QgbWlwTWFwTGV2ZWw7CisgICAgdWludDMyX3Qgc2xpY2VJZDsKK30gX01U
TF9QQUNLRUQ7CisKK2NsYXNzIFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBO
Uzo6UmVmZXJlbmNpbmc8UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rl
cj4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVNYXBwaW5ncyhjb25zdCBjbGFz
cyBUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBNVEw6OlNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZSBt
b2RlLCBjb25zdCBNVEw6OlJlZ2lvbiogcmVnaW9ucywgY29uc3QgTlM6OlVJbnRlZ2VyKiBtaXBM
ZXZlbHMsIGNvbnN0IE5TOjpVSW50ZWdlciogc2xpY2VzLCBOUzo6VUludGVnZXIgbnVtUmVnaW9u
cyk7CisKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVNYXBwaW5nKGNvbnN0IGNsYXNzIFRleHR1cmUq
IHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlIG1vZGUsIGNvbnN0
IE1UTDo6UmVnaW9uIHJlZ2lvbiwgY29uc3QgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBjb25zdCBO
Uzo6VUludGVnZXIgc2xpY2UpOworCisgICAgdm9pZCB1cGRhdGVUZXh0dXJlTWFwcGluZyhjb25z
dCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBNVEw6OlNwYXJzZVRleHR1cmVNYXBwaW5n
TW9kZSBtb2RlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVn
ZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworCisgICAgdm9pZCB1cGRhdGVGZW5jZShjb25zdCBj
bGFzcyBGZW5jZSogZmVuY2UpOworCisgICAgdm9pZCB3YWl0Rm9yRmVuY2UoY29uc3QgY2xhc3Mg
RmVuY2UqIGZlbmNlKTsKK307CisKK30KKworLy8gbWV0aG9kOiB1cGRhdGVUZXh0dXJlTWFwcGlu
Z3M6bW9kZTpyZWdpb25zOm1pcExldmVsczpzbGljZXM6bnVtUmVnaW9uczoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXI6OnVwZGF0ZVRleHR1cmVNYXBw
aW5ncyhjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVy
ZU1hcHBpbmdNb2RlIG1vZGUsIGNvbnN0IE1UTDo6UmVnaW9uKiByZWdpb25zLCBjb25zdCBOUzo6
VUludGVnZXIqIG1pcExldmVscywgY29uc3QgTlM6OlVJbnRlZ2VyKiBzbGljZXMsIE5TOjpVSW50
ZWdlciBudW1SZWdpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh1cGRhdGVUZXh0dXJlTWFwcGluZ3NfbW9kZV9yZWdpb25zX21pcExl
dmVsc19zbGljZXNfbnVtUmVnaW9uc18pLCB0ZXh0dXJlLCBtb2RlLCByZWdpb25zLCBtaXBMZXZl
bHMsIHNsaWNlcywgbnVtUmVnaW9ucyk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlVGV4dHVyZU1h
cHBpbmc6bW9kZTpyZWdpb246bWlwTGV2ZWw6c2xpY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyOjp1cGRhdGVUZXh0dXJlTWFwcGluZyhjb25zdCBN
VEw6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdNb2Rl
IG1vZGUsIGNvbnN0IE1UTDo6UmVnaW9uIHJlZ2lvbiwgY29uc3QgTlM6OlVJbnRlZ2VyIG1pcExl
dmVsLCBjb25zdCBOUzo6VUludGVnZXIgc2xpY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVwZGF0ZVRleHR1cmVNYXBwaW5nX21vZGVf
cmVnaW9uX21pcExldmVsX3NsaWNlXyksIHRleHR1cmUsIG1vZGUsIHJlZ2lvbiwgbWlwTGV2ZWws
IHNsaWNlKTsKK30KKworLy8gbWV0aG9kOiB1cGRhdGVUZXh0dXJlTWFwcGluZzptb2RlOmluZGly
ZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
c291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcjo6dXBkYXRlVGV4dHVyZU1hcHBpbmcoY29uc3QgTVRM
OjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBNVEw6OlNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZSBt
b2RlLCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRp
cmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwodXBkYXRlVGV4dHVyZU1hcHBpbmdfbW9kZV9pbmRpcmVjdEJ1ZmZl
cl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8pLCB0ZXh0dXJlLCBtb2RlLCBpbmRpcmVjdEJ1ZmZlciwg
aW5kaXJlY3RCdWZmZXJPZmZzZXQpOworfQorCisvLyBtZXRob2Q6IHVwZGF0ZUZlbmNlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcjo6dXBkYXRlRmVu
Y2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVwZGF0ZUZlbmNlXyksIGZlbmNlKTsKK30KKwor
Ly8gbWV0aG9kOiB3YWl0Rm9yRmVuY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyOjp3YWl0Rm9yRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2Up
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHdhaXRGb3JGZW5jZV8pLCBmZW5jZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVQYXNzLmhwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mYzc3MGY2NDAyMTMxN2QwMjQ5Y2VhZWVmMWI1ZTZjYjQ0OGFjYWE4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291
cmNlU3RhdGVQYXNzLmhwcApAQCAtMCwwICsxLDE2NSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZVBh
c3MuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIFJlc291cmNlU3RhdGVQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVz
b3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFz
cyBDb3VudGVyU2FtcGxlQnVmZmVyKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2FtcGxlQnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbXBsZUJ1ZmZlcihjb25z
dCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRP
ZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRl
eCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4KTsKK307CisKK2NsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PgoreworcHVi
bGljOgorICAgIHN0YXRpYyBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7
CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7
CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgUmVzb3VyY2VTdGF0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRl
Z2VyIGF0dGFjaG1lbnRJbmRleCk7Cit9OworCitjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc0Rlc2Ny
aXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3Iq
ICAgICAgICAgICAgICAgICAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIFJlc291cmNlU3RhdGVQ
YXNzRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCgpOworCisgICAg
c3RhdGljIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogICAgICAgICAgICAgICAg
ICAgICByZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IoKTsKKworICAgIGNsYXNzIFJlc291cmNl
U3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogc2FtcGxlQnVm
ZmVyQXR0YWNobWVudHMoKSBjb25zdDsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxs
b2MKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1U
TDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oX01U
TF9QUklWQVRFX0NMUyhNVExSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZXNv
dXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlc291
cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1
ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBNVEw6OlJlc291cmNl
U3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2Ft
cGxlQnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVCdWZmZXIpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3I6OnNldFNhbXBsZUJ1ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1wbGVC
dWZmZXIqIHNhbXBsZUJ1ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlQnVmZmVyXyksIHNhbXBsZUJ1ZmZlcik7Cit9
CisKKy8vIHByb3BlcnR5OiBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0
U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgc3RhcnRPZkVuY29kZXJTYW1w
bGVJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleF8pLCBzdGFydE9mRW5jb2RlclNh
bXBsZUluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IGVuZE9mRW5jb2RlclNhbXBsZUluZGV4Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjplbmRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yOjpzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZFbmNvZGVy
U2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4XyksIGVuZE9mRW5jb2RlclNh
bXBsZUluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5
KiBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlc291
cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9Q
UklWQVRFX0NMUyhNVExSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJl
c291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRM
OjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVzb3VyY2VTdGF0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBt
ZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZXNvdXJj
ZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6Om9iamVjdChO
Uzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0Xyks
IGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1
YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OlJlc291
cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQs
IE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3Jp
cHRfKSwgYXR0YWNobWVudCwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhv
ZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKiBN
VEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcj4oX01UTF9Q
UklWQVRFX0NMUyhNVExSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciog
TVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0Ojppbml0PE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yPigpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiByZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IKK19NVExfSU5M
SU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKiBNVEw6OlJlc291cmNlU3RhdGVQ
YXNzRGVzY3JpcHRvcjo6cmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcio+
KF9NVExfUFJJVkFURV9DTFMoTVRMUmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKSwgX01UTF9Q
UklWQVRFX1NFTChyZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVy
dHk6IHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3Rh
dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZXNvdXJj
ZVN0YXRlUGFzc0Rlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlU3RhdGVQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2FtcGxlQnVmZmVyQXR0YWNobWVudHMpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExTYW1wbGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExTYW1wbGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGU3OTE1
MmUxNWE4N2E0ZWEyOWUwY2U2OWUyYjQ2YzkwMDQ1MjNlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFNhbXBsZXIuaHBwCkBAIC0wLDAg
KzEsMzEwIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vCisvLyBNZXRhbC9NVExTYW1wbGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRGVwdGhT
dGVuY2lsLmhwcCIKKyNpbmNsdWRlICJNVExTYW1wbGVyLmhwcCIKKworbmFtZXNwYWNlIE1UTAor
eworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU2FtcGxlck1pbk1hZ0ZpbHRlcikgeworICAgIFNh
bXBsZXJNaW5NYWdGaWx0ZXJOZWFyZXN0ID0gMCwKKyAgICBTYW1wbGVyTWluTWFnRmlsdGVyTGlu
ZWFyID0gMSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFNhbXBsZXJNaXBGaWx0ZXIp
IHsKKyAgICBTYW1wbGVyTWlwRmlsdGVyTm90TWlwbWFwcGVkID0gMCwKKyAgICBTYW1wbGVyTWlw
RmlsdGVyTmVhcmVzdCA9IDEsCisgICAgU2FtcGxlck1pcEZpbHRlckxpbmVhciA9IDIsCit9Owor
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBTYW1wbGVyQWRkcmVzc01vZGUpIHsKKyAgICBTYW1w
bGVyQWRkcmVzc01vZGVDbGFtcFRvRWRnZSA9IDAsCisgICAgU2FtcGxlckFkZHJlc3NNb2RlTWly
cm9yQ2xhbXBUb0VkZ2UgPSAxLAorICAgIFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdCA9IDIsCisg
ICAgU2FtcGxlckFkZHJlc3NNb2RlTWlycm9yUmVwZWF0ID0gMywKKyAgICBTYW1wbGVyQWRkcmVz
c01vZGVDbGFtcFRvWmVybyA9IDQsCisgICAgU2FtcGxlckFkZHJlc3NNb2RlQ2xhbXBUb0JvcmRl
ckNvbG9yID0gNSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFNhbXBsZXJCb3JkZXJD
b2xvcikgeworICAgIFNhbXBsZXJCb3JkZXJDb2xvclRyYW5zcGFyZW50QmxhY2sgPSAwLAorICAg
IFNhbXBsZXJCb3JkZXJDb2xvck9wYXF1ZUJsYWNrID0gMSwKKyAgICBTYW1wbGVyQm9yZGVyQ29s
b3JPcGFxdWVXaGl0ZSA9IDIsCit9OworCitjbGFzcyBTYW1wbGVyRGVzY3JpcHRvciA6IHB1Ymxp
YyBOUzo6Q29weWluZzxTYW1wbGVyRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y2xhc3MgU2FtcGxlckRlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBTYW1wbGVyRGVz
Y3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciAg
ICAgICAgbWluRmlsdGVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRNaW5GaWx0ZXIoTVRMOjpTYW1wbGVyTWluTWFnRmlsdGVyIG1pbkZpbHRlcik7CisK
KyAgICBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgICAgICAgIG1hZ0ZpbHRlcigpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWFnRmlsdGVyKE1UTDo6U2Ft
cGxlck1pbk1hZ0ZpbHRlciBtYWdGaWx0ZXIpOworCisgICAgTVRMOjpTYW1wbGVyTWlwRmlsdGVy
ICAgICAgICAgICBtaXBGaWx0ZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldE1pcEZpbHRlcihNVEw6OlNhbXBsZXJNaXBGaWx0ZXIgbWlwRmlsdGVyKTsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWF4QW5pc290cm9weSgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4QW5pc290cm9w
eShOUzo6VUludGVnZXIgbWF4QW5pc290cm9weSk7CisKKyAgICBNVEw6OlNhbXBsZXJBZGRyZXNz
TW9kZSAgICAgICAgIHNBZGRyZXNzTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0U0FkZHJlc3NNb2RlKE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIHNB
ZGRyZXNzTW9kZSk7CisKKyAgICBNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZSAgICAgICAgIHRBZGRy
ZXNzTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
VEFkZHJlc3NNb2RlKE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIHRBZGRyZXNzTW9kZSk7CisKKyAg
ICBNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZSAgICAgICAgIHJBZGRyZXNzTW9kZSgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UkFkZHJlc3NNb2RlKE1UTDo6
U2FtcGxlckFkZHJlc3NNb2RlIHJBZGRyZXNzTW9kZSk7CisKKyAgICBNVEw6OlNhbXBsZXJCb3Jk
ZXJDb2xvciAgICAgICAgIGJvcmRlckNvbG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRCb3JkZXJDb2xvcihNVEw6OlNhbXBsZXJCb3JkZXJDb2xvciBi
b3JkZXJDb2xvcik7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1h
bGl6ZWRDb29yZGluYXRlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0Tm9ybWFsaXplZENvb3JkaW5hdGVzKGJvb2wgbm9ybWFsaXplZENvb3JkaW5hdGVz
KTsKKworICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9kTWluQ2xhbXAoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExvZE1pbkNsYW1w
KGZsb2F0IGxvZE1pbkNsYW1wKTsKKworICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbG9kTWF4Q2xhbXAoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldExvZE1heENsYW1wKGZsb2F0IGxvZE1heENsYW1wKTsKKworICAgIGJvb2wgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9kQXZlcmFnZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0TG9kQXZlcmFnZShib29sIGxvZEF2ZXJhZ2UpOworCisg
ICAgTVRMOjpDb21wYXJlRnVuY3Rpb24gICAgICAgICAgICBjb21wYXJlRnVuY3Rpb24oKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbXBhcmVGdW5jdGlv
bihNVEw6OkNvbXBhcmVGdW5jdGlvbiBjb21wYXJlRnVuY3Rpb24pOworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QXJndW1lbnRCdWZmZXJzKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0QXJndW1lbnRCdWZm
ZXJzKGJvb2wgc3VwcG9ydEFyZ3VtZW50QnVmZmVycyk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAg
ICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7Cit9OworCitjbGFz
cyBTYW1wbGVyU3RhdGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFNhbXBsZXJTdGF0ZT4KK3sK
K3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisKKyAgICBjbGFzcyBE
ZXZpY2UqIGRldmljZSgpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxv
YworX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyRGVzY3JpcHRvciogTVRMOjpTYW1wbGVyRGVzY3Jp
cHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlNhbXBs
ZXJEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFNhbXBsZXJEZXNjcmlwdG9yKSk7Cit9
CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyRGVzY3JpcHRvciog
TVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmluaXQ8TVRMOjpTYW1wbGVyRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IG1pbkZp
bHRlcgorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyTWluTWFnRmlsdGVyIE1UTDo6U2FtcGxlckRl
c2NyaXB0b3I6Om1pbkZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpTYW1wbGVyTWluTWFnRmlsdGVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1p
bkZpbHRlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6
OnNldE1pbkZpbHRlcihNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgbWluRmlsdGVyKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNaW5G
aWx0ZXJfKSwgbWluRmlsdGVyKTsKK30KKworLy8gcHJvcGVydHk6IG1hZ0ZpbHRlcgorX01UTF9J
TkxJTkUgTVRMOjpTYW1wbGVyTWluTWFnRmlsdGVyIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6Om1h
Z0ZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpT
YW1wbGVyTWluTWFnRmlsdGVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1hZ0ZpbHRlcikpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldE1hZ0ZpbHRl
cihNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgbWFnRmlsdGVyKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYWdGaWx0ZXJfKSwgbWFn
RmlsdGVyKTsKK30KKworLy8gcHJvcGVydHk6IG1pcEZpbHRlcgorX01UTF9JTkxJTkUgTVRMOjpT
YW1wbGVyTWlwRmlsdGVyIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6Om1pcEZpbHRlcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyTWlwRmlsdGVy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1pcEZpbHRlcikpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldE1pcEZpbHRlcihNVEw6OlNhbXBsZXJNaXBG
aWx0ZXIgbWlwRmlsdGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRNaXBGaWx0ZXJfKSwgbWlwRmlsdGVyKTsKK30KKworLy8gcHJv
cGVydHk6IG1heEFuaXNvdHJvcHkKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlNhbXBs
ZXJEZXNjcmlwdG9yOjptYXhBbmlzb3Ryb3B5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4QW5p
c290cm9weSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6
OnNldE1heEFuaXNvdHJvcHkoTlM6OlVJbnRlZ2VyIG1heEFuaXNvdHJvcHkpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heEFuaXNv
dHJvcHlfKSwgbWF4QW5pc290cm9weSk7Cit9CisKKy8vIHByb3BlcnR5OiBzQWRkcmVzc01vZGUK
K19NVExfSU5MSU5FIE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIE1UTDo6U2FtcGxlckRlc2NyaXB0
b3I6OnNBZGRyZXNzTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpTYW1wbGVyQWRkcmVzc01vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc0FkZHJl
c3NNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6
c2V0U0FkZHJlc3NNb2RlKE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIHNBZGRyZXNzTW9kZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
U0FkZHJlc3NNb2RlXyksIHNBZGRyZXNzTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0QWRkcmVz
c01vZGUKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIE1UTDo6U2FtcGxlckRl
c2NyaXB0b3I6OnRBZGRyZXNzTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpTYW1wbGVyQWRkcmVzc01vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
dEFkZHJlc3NNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3Jp
cHRvcjo6c2V0VEFkZHJlc3NNb2RlKE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIHRBZGRyZXNzTW9k
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VEFkZHJlc3NNb2RlXyksIHRBZGRyZXNzTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBy
QWRkcmVzc01vZGUKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIE1UTDo6U2Ft
cGxlckRlc2NyaXB0b3I6OnJBZGRyZXNzTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyQWRkcmVzc01vZGU+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwockFkZHJlc3NNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVy
RGVzY3JpcHRvcjo6c2V0UkFkZHJlc3NNb2RlKE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIHJBZGRy
ZXNzTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0UkFkZHJlc3NNb2RlXyksIHJBZGRyZXNzTW9kZSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBib3JkZXJDb2xvcgorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyQm9yZGVyQ29sb3IgTVRM
OjpTYW1wbGVyRGVzY3JpcHRvcjo6Ym9yZGVyQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2FtcGxlckJvcmRlckNvbG9yPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGJvcmRlckNvbG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1w
bGVyRGVzY3JpcHRvcjo6c2V0Qm9yZGVyQ29sb3IoTVRMOjpTYW1wbGVyQm9yZGVyQ29sb3IgYm9y
ZGVyQ29sb3IpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEJvcmRlckNvbG9yXyksIGJvcmRlckNvbG9yKTsKK30KKworLy8gcHJvcGVy
dHk6IG5vcm1hbGl6ZWRDb29yZGluYXRlcworX01UTF9JTkxJTkUgYm9vbCBNVEw6OlNhbXBsZXJE
ZXNjcmlwdG9yOjpub3JtYWxpemVkQ29vcmRpbmF0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobm9ybWFsaXpl
ZENvb3JkaW5hdGVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3Jp
cHRvcjo6c2V0Tm9ybWFsaXplZENvb3JkaW5hdGVzKGJvb2wgbm9ybWFsaXplZENvb3JkaW5hdGVz
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXROb3JtYWxpemVkQ29vcmRpbmF0ZXNfKSwgbm9ybWFsaXplZENvb3JkaW5hdGVzKTsKK30K
KworLy8gcHJvcGVydHk6IGxvZE1pbkNsYW1wCitfTVRMX0lOTElORSBmbG9hdCBNVEw6OlNhbXBs
ZXJEZXNjcmlwdG9yOjpsb2RNaW5DbGFtcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobG9kTWluQ2xhbXApKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRMb2RNaW5D
bGFtcChmbG9hdCBsb2RNaW5DbGFtcCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TG9kTWluQ2xhbXBfKSwgbG9kTWluQ2xhbXApOwor
fQorCisvLyBwcm9wZXJ0eTogbG9kTWF4Q2xhbXAKK19NVExfSU5MSU5FIGZsb2F0IE1UTDo6U2Ft
cGxlckRlc2NyaXB0b3I6OmxvZE1heENsYW1wKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxmbG9hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChsb2RNYXhDbGFtcCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldExvZE1h
eENsYW1wKGZsb2F0IGxvZE1heENsYW1wKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMb2RNYXhDbGFtcF8pLCBsb2RNYXhDbGFtcCk7
Cit9CisKKy8vIHByb3BlcnR5OiBsb2RBdmVyYWdlCitfTVRMX0lOTElORSBib29sIE1UTDo6U2Ft
cGxlckRlc2NyaXB0b3I6OmxvZEF2ZXJhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobG9kQXZlcmFnZSkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldExvZEF2ZXJh
Z2UoYm9vbCBsb2RBdmVyYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRMb2RBdmVyYWdlXyksIGxvZEF2ZXJhZ2UpOworfQorCisv
LyBwcm9wZXJ0eTogY29tcGFyZUZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OkNvbXBhcmVGdW5j
dGlvbiBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpjb21wYXJlRnVuY3Rpb24oKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcGFyZUZ1bmN0aW9uPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGNvbXBhcmVGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBh
cmVGdW5jdGlvbiBjb21wYXJlRnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbXBhcmVGdW5jdGlvbl8pLCBjb21wYXJl
RnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydEFyZ3VtZW50QnVmZmVycworX01U
TF9JTkxJTkUgYm9vbCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzdXBwb3J0QXJndW1lbnRCdWZm
ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0QXJndW1lbnRCdWZmZXJzKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0U3VwcG9ydEFyZ3VtZW50
QnVmZmVycyhib29sIHN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN1cHBvcnRBcmd1bWVudEJ1
ZmZlcnNfKSwgc3VwcG9ydEFyZ3VtZW50QnVmZmVycyk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJl
bAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bGFiZWwo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBO
Uzo6U3RyaW5nKiBNVEw6OlNhbXBsZXJTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxhYmVsKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2
aWNlKiBNVEw6OlNhbXBsZXJTdGF0ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2
aWNlKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NzkyNDRlMjRlMDIxOTM5MjNhM2M0MTczZDE2ZDk1MGMxZWU0MTJhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFN0YWdl
SW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcApAQCAtMCwwICsxLDM4MSBAQAorLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMU3RhZ2VJ
bnB1dE91dHB1dERlc2NyaXB0b3IuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBs
ZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAi
TVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1
ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvci5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6
VUludGVnZXIsIEF0dHJpYnV0ZUZvcm1hdCkgeworICAgIEF0dHJpYnV0ZUZvcm1hdEludmFsaWQg
PSAwLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyMiA9IDEsCisgICAgQXR0cmlidXRlRm9ybWF0
VUNoYXIzID0gMiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVQ2hhcjQgPSAzLAorICAgIEF0dHJpYnV0
ZUZvcm1hdENoYXIyID0gNCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRDaGFyMyA9IDUsCisgICAgQXR0
cmlidXRlRm9ybWF0Q2hhcjQgPSA2LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyMk5vcm1hbGl6
ZWQgPSA3LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyM05vcm1hbGl6ZWQgPSA4LAorICAgIEF0
dHJpYnV0ZUZvcm1hdFVDaGFyNE5vcm1hbGl6ZWQgPSA5LAorICAgIEF0dHJpYnV0ZUZvcm1hdENo
YXIyTm9ybWFsaXplZCA9IDEwLAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXIzTm9ybWFsaXplZCA9
IDExLAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXI0Tm9ybWFsaXplZCA9IDEyLAorICAgIEF0dHJp
YnV0ZUZvcm1hdFVTaG9ydDIgPSAxMywKKyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQzID0gMTQs
CisgICAgQXR0cmlidXRlRm9ybWF0VVNob3J0NCA9IDE1LAorICAgIEF0dHJpYnV0ZUZvcm1hdFNo
b3J0MiA9IDE2LAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0MyA9IDE3LAorICAgIEF0dHJpYnV0
ZUZvcm1hdFNob3J0NCA9IDE4LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydDJOb3JtYWxpemVk
ID0gMTksCisgICAgQXR0cmlidXRlRm9ybWF0VVNob3J0M05vcm1hbGl6ZWQgPSAyMCwKKyAgICBB
dHRyaWJ1dGVGb3JtYXRVU2hvcnQ0Tm9ybWFsaXplZCA9IDIxLAorICAgIEF0dHJpYnV0ZUZvcm1h
dFNob3J0Mk5vcm1hbGl6ZWQgPSAyMiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydDNOb3JtYWxp
emVkID0gMjMsCisgICAgQXR0cmlidXRlRm9ybWF0U2hvcnQ0Tm9ybWFsaXplZCA9IDI0LAorICAg
IEF0dHJpYnV0ZUZvcm1hdEhhbGYyID0gMjUsCisgICAgQXR0cmlidXRlRm9ybWF0SGFsZjMgPSAy
NiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRIYWxmNCA9IDI3LAorICAgIEF0dHJpYnV0ZUZvcm1hdEZs
b2F0ID0gMjgsCisgICAgQXR0cmlidXRlRm9ybWF0RmxvYXQyID0gMjksCisgICAgQXR0cmlidXRl
Rm9ybWF0RmxvYXQzID0gMzAsCisgICAgQXR0cmlidXRlRm9ybWF0RmxvYXQ0ID0gMzEsCisgICAg
QXR0cmlidXRlRm9ybWF0SW50ID0gMzIsCisgICAgQXR0cmlidXRlRm9ybWF0SW50MiA9IDMzLAor
ICAgIEF0dHJpYnV0ZUZvcm1hdEludDMgPSAzNCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRJbnQ0ID0g
MzUsCisgICAgQXR0cmlidXRlRm9ybWF0VUludCA9IDM2LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVJ
bnQyID0gMzcsCisgICAgQXR0cmlidXRlRm9ybWF0VUludDMgPSAzOCwKKyAgICBBdHRyaWJ1dGVG
b3JtYXRVSW50NCA9IDM5LAorICAgIEF0dHJpYnV0ZUZvcm1hdEludDEwMTAxMDJOb3JtYWxpemVk
ID0gNDAsCisgICAgQXR0cmlidXRlRm9ybWF0VUludDEwMTAxMDJOb3JtYWxpemVkID0gNDEsCisg
ICAgQXR0cmlidXRlRm9ybWF0VUNoYXI0Tm9ybWFsaXplZF9CR1JBID0gNDIsCisgICAgQXR0cmli
dXRlRm9ybWF0VUNoYXIgPSA0NSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRDaGFyID0gNDYsCisgICAg
QXR0cmlidXRlRm9ybWF0VUNoYXJOb3JtYWxpemVkID0gNDcsCisgICAgQXR0cmlidXRlRm9ybWF0
Q2hhck5vcm1hbGl6ZWQgPSA0OCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQgPSA0OSwKKyAg
ICBBdHRyaWJ1dGVGb3JtYXRTaG9ydCA9IDUwLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydE5v
cm1hbGl6ZWQgPSA1MSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydE5vcm1hbGl6ZWQgPSA1MiwK
KyAgICBBdHRyaWJ1dGVGb3JtYXRIYWxmID0gNTMsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRl
Z2VyLCBJbmRleFR5cGUpIHsKKyAgICBJbmRleFR5cGVVSW50MTYgPSAwLAorICAgIEluZGV4VHlw
ZVVJbnQzMiA9IDEsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBTdGVwRnVuY3Rpb24p
IHsKKyAgICBTdGVwRnVuY3Rpb25Db25zdGFudCA9IDAsCisgICAgU3RlcEZ1bmN0aW9uUGVyVmVy
dGV4ID0gMSwKKyAgICBTdGVwRnVuY3Rpb25QZXJJbnN0YW5jZSA9IDIsCisgICAgU3RlcEZ1bmN0
aW9uUGVyUGF0Y2ggPSAzLAorICAgIFN0ZXBGdW5jdGlvblBlclBhdGNoQ29udHJvbFBvaW50ID0g
NCwKKyAgICBTdGVwRnVuY3Rpb25UaHJlYWRQb3NpdGlvbkluR3JpZFggPSA1LAorICAgIFN0ZXBG
dW5jdGlvblRocmVhZFBvc2l0aW9uSW5HcmlkWSA9IDYsCisgICAgU3RlcEZ1bmN0aW9uVGhyZWFk
UG9zaXRpb25JbkdyaWRYSW5kZXhlZCA9IDcsCisgICAgU3RlcEZ1bmN0aW9uVGhyZWFkUG9zaXRp
b25JbkdyaWRZSW5kZXhlZCA9IDgsCit9OworCitjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9y
IDogcHVibGljIE5TOjpDb3B5aW5nPEJ1ZmZlckxheW91dERlc2NyaXB0b3I+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAg
ICBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZSgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdHJpZGUoTlM6OlVJbnRlZ2Vy
IHN0cmlkZSk7CisKKyAgICBNVEw6OlN0ZXBGdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgc3Rl
cEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFN0ZXBGdW5jdGlvbihNVEw6OlN0ZXBGdW5jdGlvbiBzdGVwRnVuY3Rpb24pOworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBSYXRlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZXBSYXRlKE5T
OjpVSW50ZWdlciBzdGVwUmF0ZSk7Cit9OworCitjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9y
QXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJh
eT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvckFy
cmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiAg
ICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvciogICAgICAg
ICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgQnVmZmVyTGF5
b3V0RGVzY3JpcHRvciogYnVmZmVyRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2Ns
YXNzIEF0dHJpYnV0ZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QXR0cmlidXRlRGVz
Y3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRv
ciogYWxsb2MoKTsKKworICAgIGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3IqICAgICAgICBpbml0
KCk7CisKKyAgICBNVEw6OkF0dHJpYnV0ZUZvcm1hdCAgICAgICAgICAgICAgZm9ybWF0KCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZvcm1hdChNVEw6
OkF0dHJpYnV0ZUZvcm1hdCBmb3JtYXQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICAgICAgIG9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCk7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgICAgYnVmZmVySW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QnVmZmVySW5kZXgoTlM6OlVJbnRlZ2VyIGJ1
ZmZlckluZGV4KTsKK307CisKK2NsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8QXR0cmlidXRlRGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAg
ICBjbGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBj
bGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2Vy
IGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dE9iamVjdChjb25zdCBjbGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9yKiBhdHRyaWJ1dGVEZXNjLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworfTsKKworY2xhc3MgU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0
b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqICAgICAgICBpbml0
KCk7CisKKyAgICBzdGF0aWMgY2xhc3MgU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIHN0YWdl
SW5wdXRPdXRwdXREZXNjcmlwdG9yKCk7CisKKyAgICBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlw
dG9yQXJyYXkqICAgICAgIGxheW91dHMoKSBjb25zdDsKKworICAgIGNsYXNzIEF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheSogICAgICAgICAgYXR0cmlidXRlcygpIGNvbnN0OworCisgICAgTVRMOjpJ
bmRleFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleFR5cGUoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluZGV4VHlwZShN
VEw6OkluZGV4VHlwZSBpbmRleFR5cGUpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleEJ1ZmZlckluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmRleEJ1ZmZlckluZGV4KE5TOjpV
SW50ZWdlciBpbmRleEJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzZXQoKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogTVRMOjpCdWZm
ZXJMYXlvdXREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExCdWZm
ZXJMYXlvdXREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3I6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QnVmZmVyTGF5b3V0
RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHN0cmlkZQorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RyaWRlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCdWZmZXJM
YXlvdXREZXNjcmlwdG9yOjpzZXRTdHJpZGUoTlM6OlVJbnRlZ2VyIHN0cmlkZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RyaWRl
XyksIHN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGVwRnVuY3Rpb24KK19NVExfSU5MSU5F
IE1UTDo6U3RlcEZ1bmN0aW9uIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RlcEZ1bmN0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZXBG
dW5jdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVwRnVuY3Rpb24pKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnNldFN0ZXBGdW5jdGlv
bihNVEw6OlN0ZXBGdW5jdGlvbiBzdGVwRnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0ZXBGdW5jdGlvbl8pLCBzdGVw
RnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogc3RlcFJhdGUKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnN0ZXBSYXRlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc3RlcFJhdGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZl
ckxheW91dERlc2NyaXB0b3I6OnNldFN0ZXBSYXRlKE5TOjpVSW50ZWdlciBzdGVwUmF0ZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
U3RlcFJhdGVfKSwgc3RlcFJhdGUpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01U
TF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqIE1UTDo6QnVmZmVyTGF5
b3V0RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1U
TEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiBNVEw6OkJ1ZmZlckxh
eW91dERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6Omlu
aXQ8TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDog
b2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yKiBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpV
SW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1
ZmZlckxheW91dERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5k
ZXhlZFN1YnNjcmlwdF8pLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5k
ZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlw
dG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGJ1
ZmZlckRlc2MsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlw
dF8pLCBidWZmZXJEZXNjLCBpbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3IqIE1UTDo6QXR0cmlidXRlRGVzY3Jp
cHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkF0dHJp
YnV0ZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQXR0cmlidXRlRGVzY3JpcHRvcikp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlRGVzY3Jp
cHRvciogTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6aW5pdDxNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBmb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlRm9ybWF0IE1UTDo6QXR0cmli
dXRlRGVzY3JpcHRvcjo6Zm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkF0dHJpYnV0ZUZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChmb3Jt
YXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OnNl
dEZvcm1hdChNVEw6OkF0dHJpYnV0ZUZvcm1hdCBmb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZvcm1hdF8pLCBmb3JtYXQp
OworfQorCisvLyBwcm9wZXJ0eTogb2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpBdHRyaWJ1dGVEZXNjcmlwdG9yOjpvZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvZmZz
ZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OnNl
dE9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPZmZzZXRfKSwgb2Zmc2V0KTsKK30KKwor
Ly8gcHJvcGVydHk6IGJ1ZmZlckluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpB
dHRyaWJ1dGVEZXNjcmlwdG9yOjpidWZmZXJJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1
ZmZlckluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBdHRyaWJ1dGVEZXNjcmlw
dG9yOjpzZXRCdWZmZXJJbmRleChOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcklu
ZGV4XyksIGJ1ZmZlckluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExf
SU5MSU5FIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiBNVEw6OkF0dHJpYnV0ZURlc2Ny
aXB0b3JBcnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExBdHRyaWJ1dGVE
ZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QXR0cmlidXRlRGVz
Y3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlw
dDoKK19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpBdHRyaWJ1dGVE
ZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgaW5kZXgpOworfQorCisv
LyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpBdHRy
aWJ1dGVEZXNjcmlwdG9yKiBhdHRyaWJ1dGVEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9i
amVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0cmlidXRlRGVzYywgaW5kZXgpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTdGFnZUlucHV0T3V0cHV0
RGVzY3JpcHRvciogTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlw
dG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKSk7Cit9
CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVz
Y3JpcHRvciogTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcj4o
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogc3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IKK19N
VExfSU5MSU5FIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIE1UTDo6U3RhZ2VJbnB1
dE91dHB1dERlc2NyaXB0b3I6OnN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9y
Kj4oX01UTF9QUklWQVRFX0NMUyhNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciksIF9NVExf
UFJJVkFURV9TRUwoc3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVy
dHk6IGxheW91dHMKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5
KiBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjpsYXlvdXRzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JB
cnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGF5b3V0cykpOworfQorCisvLyBwcm9wZXJ0
eTogYXR0cmlidXRlcworX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkq
IE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OmF0dHJpYnV0ZXMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvckFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhdHRyaWJ1dGVzKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBpbmRleFR5cGUKK19NVExfSU5MSU5FIE1UTDo6SW5kZXhUeXBlIE1UTDo6U3RhZ2VJbnB1
dE91dHB1dERlc2NyaXB0b3I6OmluZGV4VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRleFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5k
ZXhUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVz
Y3JpcHRvcjo6c2V0SW5kZXhUeXBlKE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhU
eXBlXyksIGluZGV4VHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleEJ1ZmZlckluZGV4Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6
aW5kZXhCdWZmZXJJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4QnVmZmVySW5kZXgp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9y
OjpzZXRJbmRleEJ1ZmZlckluZGV4KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlckluZGV4KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJ
bmRleEJ1ZmZlckluZGV4XyksIGluZGV4QnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHJl
c2V0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OnJl
c2V0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwocmVzZXQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExUZXh0dXJlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExUZXh0dXJlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTJiYTQ5MGU3YWY4NzVjNjIzZGYx
ODAwMThjNDAxNGNlNDAwMzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFRleHR1cmUuaHBwCkBAIC0wLDAgKzEsNjU4IEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9N
VExUZXh0dXJlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8K
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJy
aWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMUGl4ZWxGb3JtYXQuaHBwIgorI2lu
Y2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKyNpbmNs
dWRlICJNVExUeXBlcy5ocHAiCisjaW5jbHVkZSA8SU9TdXJmYWNlL0lPU3VyZmFjZVJlZi5oPgor
CituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBUZXh0dXJlVHlwZSkg
eworICAgIFRleHR1cmVUeXBlMUQgPSAwLAorICAgIFRleHR1cmVUeXBlMURBcnJheSA9IDEsCisg
ICAgVGV4dHVyZVR5cGUyRCA9IDIsCisgICAgVGV4dHVyZVR5cGUyREFycmF5ID0gMywKKyAgICBU
ZXh0dXJlVHlwZTJETXVsdGlzYW1wbGUgPSA0LAorICAgIFRleHR1cmVUeXBlQ3ViZSA9IDUsCisg
ICAgVGV4dHVyZVR5cGVDdWJlQXJyYXkgPSA2LAorICAgIFRleHR1cmVUeXBlM0QgPSA3LAorICAg
IFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZUFycmF5ID0gOCwKKyAgICBUZXh0dXJlVHlwZVRleHR1
cmVCdWZmZXIgPSA5LAorfTsKKworX01UTF9FTlVNKHVpbnQ4X3QsIFRleHR1cmVTd2l6emxlKSB7
CisgICAgVGV4dHVyZVN3aXp6bGVaZXJvID0gMCwKKyAgICBUZXh0dXJlU3dpenpsZU9uZSA9IDEs
CisgICAgVGV4dHVyZVN3aXp6bGVSZWQgPSAyLAorICAgIFRleHR1cmVTd2l6emxlR3JlZW4gPSAz
LAorICAgIFRleHR1cmVTd2l6emxlQmx1ZSA9IDQsCisgICAgVGV4dHVyZVN3aXp6bGVBbHBoYSA9
IDUsCit9OworCitzdHJ1Y3QgVGV4dHVyZVN3aXp6bGVDaGFubmVscworeworICAgIE1UTDo6VGV4
dHVyZVN3aXp6bGUgcmVkOworICAgIE1UTDo6VGV4dHVyZVN3aXp6bGUgZ3JlZW47CisgICAgTVRM
OjpUZXh0dXJlU3dpenpsZSBibHVlOworICAgIE1UTDo6VGV4dHVyZVN3aXp6bGUgYWxwaGE7Cit9
IF9NVExfUEFDS0VEOworCitjbGFzcyBTaGFyZWRUZXh0dXJlSGFuZGxlIDogcHVibGljIE5TOjpS
ZWZlcmVuY2luZzxTaGFyZWRUZXh0dXJlSGFuZGxlPgoreworcHVibGljOgorICAgIHN0YXRpYyBj
bGFzcyBTaGFyZWRUZXh0dXJlSGFuZGxlKiBhbGxvYygpOworCisgICAgY2xhc3MgU2hhcmVkVGV4
dHVyZUhhbmRsZSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIERldmljZSogICAgICAgICAg
ICAgICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAg
ICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworfTsKKworc3RydWN0IFNoYXJlZFRleHR1cmVIYW5k
bGVQcml2YXRlCit7Cit9IF9NVExfUEFDS0VEOworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2Vy
LCBUZXh0dXJlVXNhZ2UpIHsKKyAgICBUZXh0dXJlVXNhZ2VVbmtub3duID0gMCwKKyAgICBUZXh0
dXJlVXNhZ2VTaGFkZXJSZWFkID0gMSwKKyAgICBUZXh0dXJlVXNhZ2VTaGFkZXJXcml0ZSA9IDIs
CisgICAgVGV4dHVyZVVzYWdlUmVuZGVyVGFyZ2V0ID0gNCwKKyAgICBUZXh0dXJlVXNhZ2VQaXhl
bEZvcm1hdFZpZXcgPSAxNiwKK307CisKK19NVExfRU5VTShOUzo6SW50ZWdlciwgVGV4dHVyZUNv
bXByZXNzaW9uVHlwZSkgeworICAgIFRleHR1cmVDb21wcmVzc2lvblR5cGVMb3NzbGVzcyA9IDAs
CisgICAgVGV4dHVyZUNvbXByZXNzaW9uVHlwZUxvc3N5ID0gMSwKK307CisKK2NsYXNzIFRleHR1
cmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFRleHR1cmVEZXNjcmlwdG9yPgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGlj
IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiB0ZXh0dXJlMkREZXNjcmlwdG9yKE1UTDo6UGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdo
dCwgYm9vbCBtaXBtYXBwZWQpOworCisgICAgc3RhdGljIGNsYXNzIFRleHR1cmVEZXNjcmlwdG9y
KiB0ZXh0dXJlQ3ViZURlc2NyaXB0b3IoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6
OlVJbnRlZ2VyIHNpemUsIGJvb2wgbWlwbWFwcGVkKTsKKworICAgIHN0YXRpYyBjbGFzcyBUZXh0
dXJlRGVzY3JpcHRvciogdGV4dHVyZUJ1ZmZlckRlc2NyaXB0b3IoTVRMOjpQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBNVEw6OlJlc291cmNlT3B0aW9ucyByZXNv
dXJjZU9wdGlvbnMsIE1UTDo6VGV4dHVyZVVzYWdlIHVzYWdlKTsKKworICAgIE1UTDo6VGV4dHVy
ZVR5cGUgICAgICAgICAgICAgICAgdGV4dHVyZVR5cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRleHR1cmVUeXBlKE1UTDo6VGV4dHVyZVR5cGUgdGV4
dHVyZVR5cGUpOworCisgICAgTVRMOjpQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICBwaXhlbEZv
cm1hdCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGl4
ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCk7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgIHdpZHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRXaWR0aChOUzo6VUludGVnZXIgd2lkdGgpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBoZWlnaHQoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEhlaWdodChOUzo6VUludGVnZXIgaGVpZ2h0KTsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgZGVwdGgoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoKE5TOjpVSW50ZWdlciBk
ZXB0aCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIG1pcG1hcExldmVs
Q291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1p
cG1hcExldmVsQ291bnQoTlM6OlVJbnRlZ2VyIG1pcG1hcExldmVsQ291bnQpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBzYW1wbGVDb3VudCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FtcGxlQ291bnQoTlM6OlVJbnRlZ2Vy
IHNhbXBsZUNvdW50KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgYXJy
YXlMZW5ndGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdlciBhcnJheUxlbmd0aCk7CisKKyAgICBNVEw6OlJlc291
cmNlT3B0aW9ucyAgICAgICAgICAgIHJlc291cmNlT3B0aW9ucygpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzb3VyY2VPcHRpb25zKE1UTDo6UmVzb3Vy
Y2VPcHRpb25zIHJlc291cmNlT3B0aW9ucyk7CisKKyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAg
ICAgICAgICAgIGNwdUNhY2hlTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0Q3B1Q2FjaGVNb2RlKE1UTDo6Q1BVQ2FjaGVNb2RlIGNwdUNhY2hlTW9k
ZSk7CisKKyAgICBNVEw6OlN0b3JhZ2VNb2RlICAgICAgICAgICAgICAgIHN0b3JhZ2VNb2RlKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdG9yYWdlTW9k
ZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKTsKKworICAgIE1UTDo6SGF6YXJkVHJhY2tp
bmdNb2RlICAgICAgICAgaGF6YXJkVHJhY2tpbmdNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRIYXphcmRUcmFja2luZ01vZGUoTVRMOjpIYXphcmRU
cmFja2luZ01vZGUgaGF6YXJkVHJhY2tpbmdNb2RlKTsKKworICAgIE1UTDo6VGV4dHVyZVVzYWdl
ICAgICAgICAgICAgICAgdXNhZ2UoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFVzYWdlKE1UTDo6VGV4dHVyZVVzYWdlIHVzYWdlKTsKKworICAgIGJvb2wg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cygpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWxsb3dHUFVPcHRp
bWl6ZWRDb250ZW50cyhib29sIGFsbG93R1BVT3B0aW1pemVkQ29udGVudHMpOworCisgICAgTVRM
OjpUZXh0dXJlU3dpenpsZUNoYW5uZWxzICAgICBzd2l6emxlKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTd2l6emxlKE1UTDo6VGV4dHVyZVN3aXp6bGVD
aGFubmVscyBzd2l6emxlKTsKK307CisKK2NsYXNzIFRleHR1cmUgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPFRleHR1cmUsIFJlc291cmNlPgoreworcHVibGljOgorICAgIGNsYXNzIFJlc291cmNl
KiAgICAgICAgICAgICByb290UmVzb3VyY2UoKSBjb25zdDsKKworICAgIGNsYXNzIFRleHR1cmUq
ICAgICAgICAgICAgICBwYXJlbnRUZXh0dXJlKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIg
ICAgICAgICAgICAgICAgcGFyZW50UmVsYXRpdmVMZXZlbCgpIGNvbnN0OworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgIHBhcmVudFJlbGF0aXZlU2xpY2UoKSBjb25zdDsKKworICAg
IGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICBidWZmZXIoKSBjb25zdDsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgICAgICBidWZmZXJPZmZzZXQoKSBjb25zdDsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgICAgICBidWZmZXJCeXRlc1BlclJvdygpIGNvbnN0OworCisgICAg
SU9TdXJmYWNlUmVmICAgICAgICAgICAgICAgIGlvc3VyZmFjZSgpIGNvbnN0OworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGlvc3VyZmFjZVBsYW5lKCkgY29uc3Q7CisKKyAgICBN
VEw6OlRleHR1cmVUeXBlICAgICAgICAgICAgdGV4dHVyZVR5cGUoKSBjb25zdDsKKworICAgIE1U
TDo6UGl4ZWxGb3JtYXQgICAgICAgICAgICBwaXhlbEZvcm1hdCgpIGNvbnN0OworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgIHdpZHRoKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgaGVpZ2h0KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAg
ICAgICAgICAgICAgZGVwdGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICBtaXBtYXBMZXZlbENvdW50KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICAgICAgc2FtcGxlQ291bnQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICBhcnJheUxlbmd0aCgpIGNvbnN0OworCisgICAgTVRMOjpUZXh0dXJlVXNhZ2UgICAg
ICAgICAgIHVzYWdlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAg
c2hhcmVhYmxlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWVidWZmZXJPbmx5KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
Zmlyc3RNaXBtYXBJblRhaWwoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICB0YWlsU2l6ZUluQnl0ZXMoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAg
ICAgICAgICBpc1NwYXJzZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgIGFsbG93R1BVT3B0aW1pemVkQ29udGVudHMoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICBnZXRCeXRlcyhjb25zdCB2b2lkKiBwaXhlbEJ5dGVzLCBOUzo6VUlu
dGVnZXIgYnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBieXRlc1BlckltYWdlLCBNVEw6OlJlZ2lv
biByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlKTsKKworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlUmVnaW9uKE1UTDo6UmVnaW9uIHJl
Z2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVsLCBOUzo6VUludGVnZXIgc2xpY2UsIGNvbnN0IHZvaWQq
IHBpeGVsQnl0ZXMsIE5TOjpVSW50ZWdlciBieXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGJ5dGVz
UGVySW1hZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIGdldEJ5dGVzKGNv
bnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50ZWdlciBieXRlc1BlclJvdywgTVRMOjpSZWdp
b24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcGxhY2VSZWdpb24oTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIg
bGV2ZWwsIGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50ZWdlciBieXRlc1BlclJvdyk7
CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgbmV3VGV4dHVyZVZpZXcoTVRMOjpQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAg
ICAgbmV3VGV4dHVyZVZpZXcoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTVRMOjpUZXh0
dXJlVHlwZSB0ZXh0dXJlVHlwZSwgTlM6OlJhbmdlIGxldmVsUmFuZ2UsIE5TOjpSYW5nZSBzbGlj
ZVJhbmdlKTsKKworICAgIGNsYXNzIFNoYXJlZFRleHR1cmVIYW5kbGUqICBuZXdTaGFyZWRUZXh0
dXJlSGFuZGxlKCk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgcmVtb3RlU3Rv
cmFnZVRleHR1cmUoKSBjb25zdDsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICBu
ZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRldmljZShjb25zdCBjbGFzcyBEZXZpY2UqIGRldmljZSk7
CisKKyAgICBNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgc3dpenpsZSgpIGNvbnN0OworCisg
ICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgICAgIG5ld1RleHR1cmVWaWV3KE1UTDo6UGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQsIE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUsIE5TOjpSYW5n
ZSBsZXZlbFJhbmdlLCBOUzo6UmFuZ2Ugc2xpY2VSYW5nZSwgTVRMOjpUZXh0dXJlU3dpenpsZUNo
YW5uZWxzIHN3aXp6bGUpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01U
TF9JTkxJTkUgTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlKiBNVEw6OlNoYXJlZFRleHR1cmVIYW5k
bGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTaGFyZWRU
ZXh0dXJlSGFuZGxlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFNoYXJlZFRleHR1cmVIYW5kbGUpKTsK
K30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlNoYXJlZFRleHR1cmVIYW5k
bGUqIE1UTDo6U2hhcmVkVGV4dHVyZUhhbmRsZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlPigpOworfQorCisvLyBwcm9wZXJ0
eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpTaGFyZWRUZXh0dXJlSGFu
ZGxlOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJv
cGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlNoYXJlZFRleHR1cmVI
YW5kbGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogTVRM
OjpUZXh0dXJlRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojph
bGxvYzxNVEw6OlRleHR1cmVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRleHR1cmVE
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpUZXh0
dXJlRGVzY3JpcHRvciogTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpUZXh0dXJlRGVzY3JpcHRvcj4oKTsKK30KKworLy8g
c3RhdGljIG1ldGhvZDogdGV4dHVyZTJERGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdDp3aWR0aDpo
ZWlnaHQ6bWlwbWFwcGVkOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogTVRM
OjpUZXh0dXJlRGVzY3JpcHRvcjo6dGV4dHVyZTJERGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIGJv
b2wgbWlwbWFwcGVkKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4
dHVyZURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRleHR1cmVEZXNjcmlwdG9yKSwg
X01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlMkREZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0X3dpZHRo
X2hlaWdodF9taXBtYXBwZWRfKSwgcGl4ZWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG1pcG1hcHBl
ZCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHRleHR1cmVDdWJlRGVzY3JpcHRvcldpdGhQaXhl
bEZvcm1hdDpzaXplOm1pcG1hcHBlZDoKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZURlc2NyaXB0
b3IqIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnRleHR1cmVDdWJlRGVzY3JpcHRvcihNVEw6OlBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBOUzo6VUludGVnZXIgc2l6ZSwgYm9vbCBtaXBtYXBwZWQp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlRGVzY3JpcHRv
cio+KF9NVExfUFJJVkFURV9DTFMoTVRMVGV4dHVyZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVf
U0VMKHRleHR1cmVDdWJlRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdF9zaXplX21pcG1hcHBlZF8p
LCBwaXhlbEZvcm1hdCwgc2l6ZSwgbWlwbWFwcGVkKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
dGV4dHVyZUJ1ZmZlckRlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6d2lkdGg6cmVzb3VyY2VPcHRp
b25zOnVzYWdlOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogTVRMOjpUZXh0
dXJlRGVzY3JpcHRvcjo6dGV4dHVyZUJ1ZmZlckRlc2NyaXB0b3IoTVRMOjpQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBNVEw6OlJlc291cmNlT3B0aW9ucyByZXNv
dXJjZU9wdGlvbnMsIE1UTDo6VGV4dHVyZVVzYWdlIHVzYWdlKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTFRleHR1cmVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlQnVmZmVyRGVz
Y3JpcHRvcldpdGhQaXhlbEZvcm1hdF93aWR0aF9yZXNvdXJjZU9wdGlvbnNfdXNhZ2VfKSwgcGl4
ZWxGb3JtYXQsIHdpZHRoLCByZXNvdXJjZU9wdGlvbnMsIHVzYWdlKTsKK30KKworLy8gcHJvcGVy
dHk6IHRleHR1cmVUeXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVUeXBlIE1UTDo6VGV4dHVy
ZURlc2NyaXB0b3I6OnRleHR1cmVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1
cmVUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6
c2V0VGV4dHVyZVR5cGUoTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGV4dHVyZVR5
cGVfKSwgdGV4dHVyZVR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogcGl4ZWxGb3JtYXQKK19NVExf
SU5MSU5FIE1UTDo6UGl4ZWxGb3JtYXQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6cGl4ZWxGb3Jt
YXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGl4ZWxG
b3JtYXQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGl4ZWxGb3JtYXQpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRQaXhlbEZvcm1hdChNVEw6OlBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRQaXhlbEZvcm1hdF8pLCBwaXhlbEZvcm1hdCk7Cit9
CisKKy8vIHByb3BlcnR5OiB3aWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4
dHVyZURlc2NyaXB0b3I6OndpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2lkdGgpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRXaWR0aChOUzo6
VUludGVnZXIgd2lkdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFdpZHRoXyksIHdpZHRoKTsKK30KKworLy8gcHJvcGVydHk6IGhl
aWdodAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6Omhl
aWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhlaWdodCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldEhlaWdodChOUzo6VUludGVnZXIgaGVpZ2h0
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRIZWlnaHRfKSwgaGVpZ2h0KTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoCitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6ZGVwdGgoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChkZXB0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVy
ZURlc2NyaXB0b3I6OnNldERlcHRoKE5TOjpVSW50ZWdlciBkZXB0aCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhfKSwgZGVw
dGgpOworfQorCisvLyBwcm9wZXJ0eTogbWlwbWFwTGV2ZWxDb3VudAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6Om1pcG1hcExldmVsQ291bnQoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChtaXBtYXBMZXZlbENvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0TWlwbWFwTGV2ZWxDb3VudChOUzo6VUludGVn
ZXIgbWlwbWFwTGV2ZWxDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWlwbWFwTGV2ZWxDb3VudF8pLCBtaXBtYXBMZXZlbENv
dW50KTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzYW1wbGVDb3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVy
ZURlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50KE5TOjpVSW50ZWdlciBzYW1wbGVDb3VudCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
U2FtcGxlQ291bnRfKSwgc2FtcGxlQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogYXJyYXlMZW5n
dGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjphcnJh
eUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFycmF5TGVuZ3RoKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0QXJyYXlMZW5ndGgoTlM6OlVJ
bnRlZ2VyIGFycmF5TGVuZ3RoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRBcnJheUxlbmd0aF8pLCBhcnJheUxlbmd0aCk7Cit9CisK
Ky8vIHByb3BlcnR5OiByZXNvdXJjZU9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VP
cHRpb25zIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnJlc291cmNlT3B0aW9ucygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZU9wdGlvbnM+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwocmVzb3VyY2VPcHRpb25zKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0UmVzb3VyY2VPcHRpb25zKE1UTDo6UmVz
b3VyY2VPcHRpb25zIHJlc291cmNlT3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVzb3VyY2VPcHRpb25zXyksIHJlc291
cmNlT3B0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBjcHVDYWNoZU1vZGUKK19NVExfSU5MSU5F
IE1UTDo6Q1BVQ2FjaGVNb2RlIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmNwdUNhY2hlTW9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDUFVDYWNoZU1v
ZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY3B1Q2FjaGVNb2RlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0Q3B1Q2FjaGVNb2RlKE1UTDo6Q1BV
Q2FjaGVNb2RlIGNwdUNhY2hlTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q3B1Q2FjaGVNb2RlXyksIGNwdUNhY2hlTW9kZSk7
Cit9CisKKy8vIHByb3BlcnR5OiBzdG9yYWdlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTdG9yYWdl
TW9kZSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzdG9yYWdlTW9kZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdG9yYWdlTW9kZT4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdG9yYWdlTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4
dHVyZURlc2NyaXB0b3I6OnNldFN0b3JhZ2VNb2RlKE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1v
ZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFN0b3JhZ2VNb2RlXyksIHN0b3JhZ2VNb2RlKTsKK30KKworLy8gcHJvcGVydHk6IGhh
emFyZFRyYWNraW5nTW9kZQorX01UTF9JTkxJTkUgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgTVRM
OjpUZXh0dXJlRGVzY3JpcHRvcjo6aGF6YXJkVHJhY2tpbmdNb2RlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkhhemFyZFRyYWNraW5nTW9kZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTChoYXphcmRUcmFja2luZ01vZGUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRIYXphcmRUcmFja2luZ01vZGUoTVRMOjpI
YXphcmRUcmFja2luZ01vZGUgaGF6YXJkVHJhY2tpbmdNb2RlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRIYXphcmRUcmFja2luZ01v
ZGVfKSwgaGF6YXJkVHJhY2tpbmdNb2RlKTsKK30KKworLy8gcHJvcGVydHk6IHVzYWdlCitfTVRM
X0lOTElORSBNVEw6OlRleHR1cmVVc2FnZSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjp1c2FnZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVXNh
Z2U+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNhZ2UpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRVc2FnZShNVEw6OlRleHR1cmVVc2FnZSB1c2Fn
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VXNhZ2VfKSwgdXNhZ2UpOworfQorCisvLyBwcm9wZXJ0eTogYWxsb3dHUFVPcHRpbWl6
ZWRDb250ZW50cworX01UTF9JTkxJTkUgYm9vbCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjphbGxv
d0dQVU9wdGltaXplZENvbnRlbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsbG93R1BVT3B0aW1pemVkQ29u
dGVudHMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpz
ZXRBbGxvd0dQVU9wdGltaXplZENvbnRlbnRzKGJvb2wgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50
cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0QWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50c18pLCBhbGxvd0dQVU9wdGltaXplZENvbnRl
bnRzKTsKK30KKworLy8gcHJvcGVydHk6IHN3aXp6bGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVy
ZVN3aXp6bGVDaGFubmVscyBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzd2l6emxlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVTd2l6emxlQ2hh
bm5lbHM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3dpenpsZSkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFN3aXp6bGUoTVRMOjpUZXh0dXJlU3dp
enpsZUNoYW5uZWxzIHN3aXp6bGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN3aXp6bGVfKSwgc3dpenpsZSk7Cit9CisKKy8vIHBy
b3BlcnR5OiByb290UmVzb3VyY2UKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2UqIE1UTDo6VGV4
dHVyZTo6cm9vdFJlc291cmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJlc291cmNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyb290UmVzb3VyY2Up
KTsKK30KKworLy8gcHJvcGVydHk6IHBhcmVudFRleHR1cmUKK19NVExfSU5MSU5FIE1UTDo6VGV4
dHVyZSogTVRMOjpUZXh0dXJlOjpwYXJlbnRUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHBhcmVudFRleHR1cmUpKTsKK30KKworLy8gcHJvcGVydHk6IHBhcmVudFJlbGF0aXZlTGV2ZWwK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OnBhcmVudFJlbGF0aXZlTGV2
ZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChwYXJlbnRSZWxhdGl2ZUxldmVsKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBwYXJlbnRSZWxhdGl2ZVNsaWNlCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpUZXh0dXJlOjpwYXJlbnRSZWxhdGl2ZVNsaWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
cGFyZW50UmVsYXRpdmVTbGljZSkpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyCitfTVRMX0lO
TElORSBNVEw6OkJ1ZmZlciogTVRMOjpUZXh0dXJlOjpidWZmZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChidWZmZXIpKTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlck9mZnNldAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6YnVmZmVyT2Zmc2V0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYnVmZmVyT2Zmc2V0KSk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJCeXRlc1Bl
clJvdworX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6YnVmZmVyQnl0ZXNQ
ZXJSb3coKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXJCeXRlc1BlclJvdykpOworfQorCisv
LyBwcm9wZXJ0eTogaW9zdXJmYWNlCitfTVRMX0lOTElORSBJT1N1cmZhY2VSZWYgTVRMOjpUZXh0
dXJlOjppb3N1cmZhY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PElPU3VyZmFjZVJlZj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpb3N1cmZhY2UpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGlvc3VyZmFjZVBsYW5lCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpUZXh0dXJlOjppb3N1cmZhY2VQbGFuZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlvc3VyZmFj
ZVBsYW5lKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlVHlwZQorX01UTF9JTkxJTkUgTVRM
OjpUZXh0dXJlVHlwZSBNVEw6OlRleHR1cmU6OnRleHR1cmVUeXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVUeXBlPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHRleHR1cmVUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwaXhlbEZvcm1hdAor
X01UTF9JTkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBNVEw6OlRleHR1cmU6OnBpeGVsRm9ybWF0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBpeGVsRm9ybWF0KSk7Cit9CisKKy8vIHByb3BlcnR5
OiB3aWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6d2lkdGgoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhp
cywgX01UTF9QUklWQVRFX1NFTCh3aWR0aCkpOworfQorCisvLyBwcm9wZXJ0eTogaGVpZ2h0Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjpoZWlnaHQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChoZWlnaHQpKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjpkZXB0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGRlcHRoKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtaXBtYXBMZXZlbENvdW50CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjptaXBtYXBMZXZlbENvdW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobWlwbWFwTGV2ZWxDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxl
Q291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OnNhbXBsZUNvdW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnQpKTsKK30KKworLy8gcHJvcGVydHk6
IGFycmF5TGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjphcnJh
eUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFycmF5TGVuZ3RoKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiB1c2FnZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlVXNhZ2UgTVRMOjpUZXh0dXJl
Ojp1c2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpU
ZXh0dXJlVXNhZ2U+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNhZ2UpKTsKK30KKworLy8gcHJv
cGVydHk6IHNoYXJlYWJsZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlRleHR1cmU6OnNoYXJlYWJs
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChpc1NoYXJlYWJsZSkpOworfQorCisvLyBwcm9wZXJ0eTogZnJhbWVi
dWZmZXJPbmx5CitfTVRMX0lOTElORSBib29sIE1UTDo6VGV4dHVyZTo6ZnJhbWVidWZmZXJPbmx5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGlzRnJhbWVidWZmZXJPbmx5KSk7Cit9CisKKy8vIHByb3BlcnR5OiBm
aXJzdE1pcG1hcEluVGFpbAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6
Zmlyc3RNaXBtYXBJblRhaWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmaXJzdE1pcG1hcEluVGFp
bCkpOworfQorCisvLyBwcm9wZXJ0eTogdGFpbFNpemVJbkJ5dGVzCitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpUZXh0dXJlOjp0YWlsU2l6ZUluQnl0ZXMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh0YWlsU2l6ZUluQnl0ZXMpKTsKK30KKworLy8gcHJvcGVydHk6IGlzU3BhcnNlCitfTVRM
X0lOTElORSBib29sIE1UTDo6VGV4dHVyZTo6aXNTcGFyc2UoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNTcGFy
c2UpKTsKK30KKworLy8gcHJvcGVydHk6IGFsbG93R1BVT3B0aW1pemVkQ29udGVudHMKK19NVExf
SU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJlOjphbGxvd0dQVU9wdGltaXplZENvbnRlbnRzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGFsbG93R1BVT3B0aW1pemVkQ29udGVudHMpKTsKK30KKworLy8gbWV0aG9kOiBn
ZXRCeXRlczpieXRlc1BlclJvdzpieXRlc1BlckltYWdlOmZyb21SZWdpb246bWlwbWFwTGV2ZWw6
c2xpY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZTo6Z2V0Qnl0ZXMoY29uc3Qgdm9p
ZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgYnl0
ZXNQZXJJbWFnZSwgTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIE5TOjpV
SW50ZWdlciBzbGljZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZ2V0Qnl0ZXNfYnl0ZXNQZXJSb3dfYnl0ZXNQZXJJbWFnZV9mcm9tUmVn
aW9uX21pcG1hcExldmVsX3NsaWNlXyksIHBpeGVsQnl0ZXMsIGJ5dGVzUGVyUm93LCBieXRlc1Bl
ckltYWdlLCByZWdpb24sIGxldmVsLCBzbGljZSk7Cit9CisKKy8vIG1ldGhvZDogcmVwbGFjZVJl
Z2lvbjptaXBtYXBMZXZlbDpzbGljZTp3aXRoQnl0ZXM6Ynl0ZXNQZXJSb3c6Ynl0ZXNQZXJJbWFn
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlOjpyZXBsYWNlUmVnaW9uKE1UTDo6UmVn
aW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVsLCBOUzo6VUludGVnZXIgc2xpY2UsIGNvbnN0
IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50ZWdlciBieXRlc1BlclJvdywgTlM6OlVJbnRlZ2Vy
IGJ5dGVzUGVySW1hZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHJlcGxhY2VSZWdpb25fbWlwbWFwTGV2ZWxfc2xpY2Vfd2l0aEJ5dGVz
X2J5dGVzUGVyUm93X2J5dGVzUGVySW1hZ2VfKSwgcmVnaW9uLCBsZXZlbCwgc2xpY2UsIHBpeGVs
Qnl0ZXMsIGJ5dGVzUGVyUm93LCBieXRlc1BlckltYWdlKTsKK30KKworLy8gbWV0aG9kOiBnZXRC
eXRlczpieXRlc1BlclJvdzpmcm9tUmVnaW9uOm1pcG1hcExldmVsOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlRleHR1cmU6OmdldEJ5dGVzKGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50
ZWdlciBieXRlc1BlclJvdywgTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGdldEJ5dGVzX2J5dGVzUGVyUm93X2Zyb21SZWdpb25fbWlwbWFwTGV2ZWxfKSwgcGl4ZWxCeXRl
cywgYnl0ZXNQZXJSb3csIHJlZ2lvbiwgbGV2ZWwpOworfQorCisvLyBtZXRob2Q6IHJlcGxhY2VS
ZWdpb246bWlwbWFwTGV2ZWw6d2l0aEJ5dGVzOmJ5dGVzUGVyUm93OgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlRleHR1cmU6OnJlcGxhY2VSZWdpb24oTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUlu
dGVnZXIgbGV2ZWwsIGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50ZWdlciBieXRlc1Bl
clJvdykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwocmVwbGFjZVJlZ2lvbl9taXBtYXBMZXZlbF93aXRoQnl0ZXNfYnl0ZXNQZXJSb3dfKSwg
cmVnaW9uLCBsZXZlbCwgcGl4ZWxCeXRlcywgYnl0ZXNQZXJSb3cpOworfQorCisvLyBtZXRob2Q6
IG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0OgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJl
KiBNVEw6OlRleHR1cmU6Om5ld1RleHR1cmVWaWV3KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdF8pLCBwaXhl
bEZvcm1hdCk7Cit9CisKKy8vIG1ldGhvZDogbmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6
dGV4dHVyZVR5cGU6bGV2ZWxzOnNsaWNlczoKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRM
OjpUZXh0dXJlOjpuZXdUZXh0dXJlVmlldyhNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBN
VEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlLCBOUzo6UmFuZ2UgbGV2ZWxSYW5nZSwgTlM6OlJh
bmdlIHNsaWNlUmFuZ2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpU
ZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZv
cm1hdF90ZXh0dXJlVHlwZV9sZXZlbHNfc2xpY2VzXyksIHBpeGVsRm9ybWF0LCB0ZXh0dXJlVHlw
ZSwgbGV2ZWxSYW5nZSwgc2xpY2VSYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkVGV4
dHVyZUhhbmRsZQorX01UTF9JTkxJTkUgTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlKiBNVEw6OlRl
eHR1cmU6Om5ld1NoYXJlZFRleHR1cmVIYW5kbGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6U2hhcmVkVGV4dHVyZUhhbmRsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3U2hhcmVkVGV4dHVyZUhhbmRsZSkpOworfQorCisvLyBwcm9wZXJ0eTogcmVtb3RlU3Rv
cmFnZVRleHR1cmUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpUZXh0dXJlOjpyZW1v
dGVTdG9yYWdlVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZW1vdGVTdG9yYWdlVGV4
dHVyZSkpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbW90ZVRleHR1cmVWaWV3Rm9yRGV2aWNlOgor
X01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OlRleHR1cmU6Om5ld1JlbW90ZVRleHR1cmVW
aWV3Rm9yRGV2aWNlKGNvbnN0IE1UTDo6RGV2aWNlKiBkZXZpY2UpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRldmljZV8pLCBkZXZpY2UpOworfQorCisvLyBwcm9wZXJ0
eTogc3dpenpsZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlU3dpenpsZUNoYW5uZWxzIE1UTDo6
VGV4dHVyZTo6c3dpenpsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpUZXh0dXJlU3dpenpsZUNoYW5uZWxzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN3
aXp6bGUpKTsKK30KKworLy8gbWV0aG9kOiBuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdDp0
ZXh0dXJlVHlwZTpsZXZlbHM6c2xpY2VzOnN3aXp6bGU6CitfTVRMX0lOTElORSBNVEw6OlRleHR1
cmUqIE1UTDo6VGV4dHVyZTo6bmV3VGV4dHVyZVZpZXcoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSwgTlM6OlJhbmdlIGxldmVsUmFuZ2Us
IE5TOjpSYW5nZSBzbGljZVJhbmdlLCBNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgc3dpenps
ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0X3RleHR1cmVU
eXBlX2xldmVsc19zbGljZXNfc3dpenpsZV8pLCBwaXhlbEZvcm1hdCwgdGV4dHVyZVR5cGUsIGxl
dmVsUmFuZ2UsIHNsaWNlUmFuZ2UsIHN3aXp6bGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUeXBlcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY4YzRkOWEy
YzM4YTU5ZTU0OTNjZTg4OWQwZDVlMmQzN2FlYThmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUeXBlcy5ocHAKQEAgLTAsMCArMSwx
NjMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIE1ldGFsL01UTFR5cGVzLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUg
SW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1U
TEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRl
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgor
CituYW1lc3BhY2UgTVRMCit7CitzdHJ1Y3QgT3JpZ2luCit7CisgICAgT3JpZ2luKCkgPSBkZWZh
dWx0OworCisgICAgT3JpZ2luKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJ
bnRlZ2VyIHopOworCisgICAgc3RhdGljIE9yaWdpbiBNYWtlKE5TOjpVSW50ZWdlciB4LCBOUzo6
VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHopOworCisgICAgTlM6OlVJbnRlZ2VyICB4OworICAg
IE5TOjpVSW50ZWdlciAgeTsKKyAgICBOUzo6VUludGVnZXIgIHo7Cit9IF9NVExfUEFDS0VEOwor
CitzdHJ1Y3QgU2l6ZQoreworICAgIFNpemUoKSA9IGRlZmF1bHQ7CisKKyAgICBTaXplKE5TOjpV
SW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRlcHRoKTsK
KworICAgIHN0YXRpYyBTaXplICBNYWtlKE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2Vy
IGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRlcHRoKTsKKworICAgIE5TOjpVSW50ZWdlciB3aWR0aDsK
KyAgICBOUzo6VUludGVnZXIgaGVpZ2h0OworICAgIE5TOjpVSW50ZWdlciBkZXB0aDsKK30gX01U
TF9QQUNLRUQ7CisKK3N0cnVjdCBSZWdpb24KK3sKKyAgICBSZWdpb24oKSA9IGRlZmF1bHQ7CisK
KyAgICBSZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB3aWR0aCk7CisKKyAgICBS
ZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgd2lkdGgs
IE5TOjpVSW50ZWdlciBoZWlnaHQpOworCisgICAgUmVnaW9uKE5TOjpVSW50ZWdlciB4LCBOUzo6
VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHosIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRl
Z2VyIGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRlcHRoKTsKKworICAgIHN0YXRpYyBSZWdpb24gTWFr
ZTFEKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgd2lkdGgpOworCisgICAgc3RhdGljIFJl
Z2lvbiBNYWtlMkQoTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIg
d2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpOworCisgICAgc3RhdGljIFJlZ2lvbiBNYWtlM0Qo
TlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgeiwgTlM6OlVJbnRl
Z2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpOworCisg
ICAgTVRMOjpPcmlnaW4gICBvcmlnaW47CisgICAgTVRMOjpTaXplICAgICBzaXplOworfSBfTVRM
X1BBQ0tFRDsKKworc3RydWN0IFNhbXBsZVBvc2l0aW9uOworCit1c2luZyBDb29yZGluYXRlMkQg
PSBTYW1wbGVQb3NpdGlvbjsKKworc3RydWN0IFNhbXBsZVBvc2l0aW9uCit7CisgICAgU2FtcGxl
UG9zaXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBTYW1wbGVQb3NpdGlvbihmbG9hdCBfeCwgZmxv
YXQgX3kpOworCisgICAgc3RhdGljIFNhbXBsZVBvc2l0aW9uIE1ha2UoZmxvYXQgeCwgZmxvYXQg
eSk7CisKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgeDsKKyAgICBmbG9hdCAgICAgICAgICAg
ICAgICAgeTsKK30gX01UTF9QQUNLRUQ7CisKK30KKworX01UTF9JTkxJTkUgTVRMOjpPcmlnaW46
Ok9yaWdpbihOUzo6VUludGVnZXIgX3gsIE5TOjpVSW50ZWdlciBfeSwgTlM6OlVJbnRlZ2VyIF96
KQorICAgIDogeChfeCkKKyAgICAsIHkoX3kpCisgICAgLCB6KF96KQoreworfQorCitfTVRMX0lO
TElORSBNVEw6Ok9yaWdpbiBNVEw6Ok9yaWdpbjo6TWFrZShOUzo6VUludGVnZXIgeCwgTlM6OlVJ
bnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6KQoreworICAgIHJldHVybiBPcmlnaW4oeCwgeSwgeik7
Cit9CisKK19NVExfSU5MSU5FIE1UTDo6U2l6ZTo6U2l6ZShOUzo6VUludGVnZXIgX3dpZHRoLCBO
Uzo6VUludGVnZXIgX2hlaWdodCwgTlM6OlVJbnRlZ2VyIF9kZXB0aCkKKyAgICA6IHdpZHRoKF93
aWR0aCkKKyAgICAsIGhlaWdodChfaGVpZ2h0KQorICAgICwgZGVwdGgoX2RlcHRoKQoreworfQor
CitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpTaXplOjpNYWtlKE5TOjpVSW50ZWdlciB3aWR0
aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRlcHRoKQoreworICAgIHJldHVy
biBTaXplKHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKK30KKworX01UTF9JTkxJTkUgTVRMOjpSZWdp
b246OlJlZ2lvbihOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHdpZHRoKQorICAgIDogb3Jp
Z2luKHgsIDAsIDApCisgICAgLCBzaXplKHdpZHRoLCAxLCAxKQoreworfQorCitfTVRMX0lOTElO
RSBNVEw6OlJlZ2lvbjo6UmVnaW9uKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6
OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KQorICAgIDogb3JpZ2luKHgsIHks
IDApCisgICAgLCBzaXplKHdpZHRoLCBoZWlnaHQsIDEpCit7Cit9CisKK19NVExfSU5MSU5FIE1U
TDo6UmVnaW9uOjpSZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUlu
dGVnZXIgeiwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUlu
dGVnZXIgZGVwdGgpCisgICAgOiBvcmlnaW4oeCwgeSwgeikKKyAgICAsIHNpemUod2lkdGgsIGhl
aWdodCwgZGVwdGgpCit7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6UmVnaW9uIE1UTDo6UmVnaW9u
OjpNYWtlMUQoTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB3aWR0aCkKK3sKKyAgICByZXR1
cm4gUmVnaW9uKHgsIHdpZHRoKTsKK30KKworX01UTF9JTkxJTkUgTVRMOjpSZWdpb24gTVRMOjpS
ZWdpb246Ok1ha2UyRChOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdl
ciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCkKK3sKKyAgICByZXR1cm4gUmVnaW9uKHgsIHks
IHdpZHRoLCBoZWlnaHQpOworfQorCitfTVRMX0lOTElORSBNVEw6OlJlZ2lvbiBNVEw6OlJlZ2lv
bjo6TWFrZTNEKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHos
IE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRl
cHRoKQoreworICAgIHJldHVybiBSZWdpb24oeCwgeSwgeiwgd2lkdGgsIGhlaWdodCwgZGVwdGgp
OworfQorCitfTVRMX0lOTElORSBNVEw6OlNhbXBsZVBvc2l0aW9uOjpTYW1wbGVQb3NpdGlvbihm
bG9hdCBfeCwgZmxvYXQgX3kpCisgICAgOiB4KF94KQorICAgICwgeShfeSkKK3sKK30KKworX01U
TF9JTkxJTkUgTVRMOjpTYW1wbGVQb3NpdGlvbiBNVEw6OlNhbXBsZVBvc2l0aW9uOjpNYWtlKGZs
b2F0IHgsIGZsb2F0IHkpCit7CisgICAgcmV0dXJuIFNhbXBsZVBvc2l0aW9uKHgsIHkpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZlcnRl
eERlc2NyaXB0b3IuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TFZlcnRleERlc2NyaXB0b3IuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxN2Y4MjNhYTBhZjk1MzBiMjVjMzMx
YTlmNTZkMTI1NjY3NjM4NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMVmVydGV4RGVzY3JpcHRvci5ocHAKQEAgLTAsMCArMSwzNDQg
QEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8v
IE1ldGFsL01UTFZlcnRleERlc2NyaXB0b3IuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAy
MSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5j
bHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKwor
I2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExWZXJ0
ZXhEZXNjcmlwdG9yLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50
ZWdlciwgVmVydGV4Rm9ybWF0KSB7CisgICAgVmVydGV4Rm9ybWF0SW52YWxpZCA9IDAsCisgICAg
VmVydGV4Rm9ybWF0VUNoYXIyID0gMSwKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hhcjMgPSAyLAorICAg
IFZlcnRleEZvcm1hdFVDaGFyNCA9IDMsCisgICAgVmVydGV4Rm9ybWF0Q2hhcjIgPSA0LAorICAg
IFZlcnRleEZvcm1hdENoYXIzID0gNSwKKyAgICBWZXJ0ZXhGb3JtYXRDaGFyNCA9IDYsCisgICAg
VmVydGV4Rm9ybWF0VUNoYXIyTm9ybWFsaXplZCA9IDcsCisgICAgVmVydGV4Rm9ybWF0VUNoYXIz
Tm9ybWFsaXplZCA9IDgsCisgICAgVmVydGV4Rm9ybWF0VUNoYXI0Tm9ybWFsaXplZCA9IDksCisg
ICAgVmVydGV4Rm9ybWF0Q2hhcjJOb3JtYWxpemVkID0gMTAsCisgICAgVmVydGV4Rm9ybWF0Q2hh
cjNOb3JtYWxpemVkID0gMTEsCisgICAgVmVydGV4Rm9ybWF0Q2hhcjROb3JtYWxpemVkID0gMTIs
CisgICAgVmVydGV4Rm9ybWF0VVNob3J0MiA9IDEzLAorICAgIFZlcnRleEZvcm1hdFVTaG9ydDMg
PSAxNCwKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQ0ID0gMTUsCisgICAgVmVydGV4Rm9ybWF0U2hv
cnQyID0gMTYsCisgICAgVmVydGV4Rm9ybWF0U2hvcnQzID0gMTcsCisgICAgVmVydGV4Rm9ybWF0
U2hvcnQ0ID0gMTgsCisgICAgVmVydGV4Rm9ybWF0VVNob3J0Mk5vcm1hbGl6ZWQgPSAxOSwKKyAg
ICBWZXJ0ZXhGb3JtYXRVU2hvcnQzTm9ybWFsaXplZCA9IDIwLAorICAgIFZlcnRleEZvcm1hdFVT
aG9ydDROb3JtYWxpemVkID0gMjEsCisgICAgVmVydGV4Rm9ybWF0U2hvcnQyTm9ybWFsaXplZCA9
IDIyLAorICAgIFZlcnRleEZvcm1hdFNob3J0M05vcm1hbGl6ZWQgPSAyMywKKyAgICBWZXJ0ZXhG
b3JtYXRTaG9ydDROb3JtYWxpemVkID0gMjQsCisgICAgVmVydGV4Rm9ybWF0SGFsZjIgPSAyNSwK
KyAgICBWZXJ0ZXhGb3JtYXRIYWxmMyA9IDI2LAorICAgIFZlcnRleEZvcm1hdEhhbGY0ID0gMjcs
CisgICAgVmVydGV4Rm9ybWF0RmxvYXQgPSAyOCwKKyAgICBWZXJ0ZXhGb3JtYXRGbG9hdDIgPSAy
OSwKKyAgICBWZXJ0ZXhGb3JtYXRGbG9hdDMgPSAzMCwKKyAgICBWZXJ0ZXhGb3JtYXRGbG9hdDQg
PSAzMSwKKyAgICBWZXJ0ZXhGb3JtYXRJbnQgPSAzMiwKKyAgICBWZXJ0ZXhGb3JtYXRJbnQyID0g
MzMsCisgICAgVmVydGV4Rm9ybWF0SW50MyA9IDM0LAorICAgIFZlcnRleEZvcm1hdEludDQgPSAz
NSwKKyAgICBWZXJ0ZXhGb3JtYXRVSW50ID0gMzYsCisgICAgVmVydGV4Rm9ybWF0VUludDIgPSAz
NywKKyAgICBWZXJ0ZXhGb3JtYXRVSW50MyA9IDM4LAorICAgIFZlcnRleEZvcm1hdFVJbnQ0ID0g
MzksCisgICAgVmVydGV4Rm9ybWF0SW50MTAxMDEwMk5vcm1hbGl6ZWQgPSA0MCwKKyAgICBWZXJ0
ZXhGb3JtYXRVSW50MTAxMDEwMk5vcm1hbGl6ZWQgPSA0MSwKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hh
cjROb3JtYWxpemVkX0JHUkEgPSA0MiwKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hhciA9IDQ1LAorICAg
IFZlcnRleEZvcm1hdENoYXIgPSA0NiwKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hhck5vcm1hbGl6ZWQg
PSA0NywKKyAgICBWZXJ0ZXhGb3JtYXRDaGFyTm9ybWFsaXplZCA9IDQ4LAorICAgIFZlcnRleEZv
cm1hdFVTaG9ydCA9IDQ5LAorICAgIFZlcnRleEZvcm1hdFNob3J0ID0gNTAsCisgICAgVmVydGV4
Rm9ybWF0VVNob3J0Tm9ybWFsaXplZCA9IDUxLAorICAgIFZlcnRleEZvcm1hdFNob3J0Tm9ybWFs
aXplZCA9IDUyLAorICAgIFZlcnRleEZvcm1hdEhhbGYgPSA1MywKK307CisKK19NVExfRU5VTShO
Uzo6VUludGVnZXIsIFZlcnRleFN0ZXBGdW5jdGlvbikgeworICAgIFZlcnRleFN0ZXBGdW5jdGlv
bkNvbnN0YW50ID0gMCwKKyAgICBWZXJ0ZXhTdGVwRnVuY3Rpb25QZXJWZXJ0ZXggPSAxLAorICAg
IFZlcnRleFN0ZXBGdW5jdGlvblBlckluc3RhbmNlID0gMiwKKyAgICBWZXJ0ZXhTdGVwRnVuY3Rp
b25QZXJQYXRjaCA9IDMsCisgICAgVmVydGV4U3RlcEZ1bmN0aW9uUGVyUGF0Y2hDb250cm9sUG9p
bnQgPSA0LAorfTsKKworY2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvciA6IHB1Ymxp
YyBOUzo6Q29weWluZzxWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBhbGxvYygpOwor
CisgICAgY2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGUo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0U3RyaWRlKE5TOjpVSW50ZWdlciBzdHJpZGUpOworCisgICAgTVRMOjpWZXJ0ZXhTdGVwRnVu
Y3Rpb24gICAgICAgICAgICAgICAgICAgIHN0ZXBGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVwRnVuY3Rpb24oTVRM
OjpWZXJ0ZXhTdGVwRnVuY3Rpb24gc3RlcEZ1bmN0aW9uKTsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwUmF0ZSgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVwUmF0ZShOUzo6VUlu
dGVnZXIgc3RlcFJhdGUpOworfTsKKworY2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRv
ckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91
dERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91
dERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIFZlcnRleEJ1ZmZl
ckxheW91dERlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgaW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0T2JqZWN0KGNvbnN0IGNsYXNzIFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGJ1ZmZl
ckRlc2MsIE5TOjpVSW50ZWdlciBpbmRleCk7Cit9OworCitjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiAgICAgICAg
aW5pdCgpOworCisgICAgTVRMOjpWZXJ0ZXhGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgIGZv
cm1hdCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRGb3JtYXQoTVRMOjpWZXJ0ZXhGb3JtYXQgZm9ybWF0KTsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2Zmc2V0KE5TOjpVSW50ZWdlciBv
ZmZzZXQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1
ZmZlckluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEJ1ZmZlckluZGV4KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7Cit9OworCitj
bGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5j
aW5nPFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAg
Y2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisg
ICAgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5T
OjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvciogYXR0cmlidXRlRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2NsYXNzIFZl
cnRleERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VmVydGV4RGVzY3JpcHRvcj4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4RGVzY3JpcHRvciogICAgICAgICAgIGFs
bG9jKCk7CisKKyAgICBjbGFzcyBWZXJ0ZXhEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgIGlu
aXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBWZXJ0ZXhEZXNjcmlwdG9yKiAgICAgICAgICAgdmVy
dGV4RGVzY3JpcHRvcigpOworCisgICAgY2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRv
ckFycmF5KiBsYXlvdXRzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNj
cmlwdG9yQXJyYXkqICAgIGF0dHJpYnV0ZXMoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTsKK307CisKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3Jp
cHRvciogTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRv
cj4oX01UTF9QUklWQVRFX0NMUyhNVExWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKSk7Cit9
CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yKiBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3Jp
cHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHN0cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJbnRl
Z2VyIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RyaWRlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpWZXJ0ZXhC
dWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzZXRTdHJpZGUoTlM6OlVJbnRlZ2VyIHN0cmlkZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
U3RyaWRlXyksIHN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGVwRnVuY3Rpb24KK19NVExf
SU5MSU5FIE1UTDo6VmVydGV4U3RlcEZ1bmN0aW9uIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVz
Y3JpcHRvcjo6c3RlcEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlZlcnRleFN0ZXBGdW5jdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dGVwRnVuY3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRleEJ1ZmZlckxh
eW91dERlc2NyaXB0b3I6OnNldFN0ZXBGdW5jdGlvbihNVEw6OlZlcnRleFN0ZXBGdW5jdGlvbiBz
dGVwRnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFN0ZXBGdW5jdGlvbl8pLCBzdGVwRnVuY3Rpb24pOworfQorCisvLyBw
cm9wZXJ0eTogc3RlcFJhdGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlZlcnRleEJ1
ZmZlckxheW91dERlc2NyaXB0b3I6OnN0ZXBSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3Rl
cFJhdGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERl
c2NyaXB0b3I6OnNldFN0ZXBSYXRlKE5TOjpVSW50ZWdlciBzdGVwUmF0ZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlcFJhdGVf
KSwgc3RlcFJhdGUpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUg
TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqIE1UTDo6VmVydGV4QnVmZmVy
TGF5b3V0RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZB
VEVfQ0xTKE1UTFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRv
ckFycmF5KiBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNj
cmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0
OgorX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBNVEw6OlZl
cnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBpbmRl
eCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleEJ1ZmZlckxh
eW91dERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1
YnNjcmlwdF8pLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1
YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0
b3IqIGJ1ZmZlckRlc2MsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1
YnNjcmlwdF8pLCBidWZmZXJEZXNjLCBpbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IqIE1UTDo6VmVy
dGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMo
TVRMVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhBdHRy
aWJ1dGVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBmb3Jt
YXQKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4Rm9ybWF0IE1UTDo6VmVydGV4QXR0cmlidXRlRGVz
Y3JpcHRvcjo6Zm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlZlcnRleEZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChmb3JtYXQpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OnNldEZv
cm1hdChNVEw6OlZlcnRleEZvcm1hdCBmb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZvcm1hdF8pLCBmb3JtYXQpOworfQor
CisvLyBwcm9wZXJ0eTogb2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpWZXJ0
ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjpvZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvZmZz
ZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0
b3I6OnNldE9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPZmZzZXRfKSwgb2Zmc2V0KTsK
K30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjpidWZmZXJJbmRleCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGJ1ZmZlckluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpWZXJ0
ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjpzZXRCdWZmZXJJbmRleChOUzo6VUludGVnZXIgYnVmZmVy
SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldEJ1ZmZlckluZGV4XyksIGJ1ZmZlckluZGV4KTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFy
cmF5KiBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JB
cnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkp
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0
ZURlc2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VmVydGV4QXR0cmlidXRl
RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNj
cmlwdDoKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpW
ZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgaW5kZXgp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3Jp
cHRfKSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3Jp
cHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5
OjpzZXRPYmplY3QoY29uc3QgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiBhdHRyaWJ1
dGVEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRf
KSwgYXR0cmlidXRlRGVzYywgaW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhEZXNjcmlwdG9yKiBNVEw6OlZlcnRleERlc2NyaXB0b3I6
OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpWZXJ0ZXhEZXNj
cmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleERlc2NyaXB0b3IpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleERlc2NyaXB0b3IqIE1UTDo6VmVy
dGV4RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpWZXJ0ZXhEZXNjcmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiB2ZXJ0ZXhEZXNj
cmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlZlcnRleERlc2NyaXB0b3IqIE1UTDo6VmVydGV4RGVz
Y3JpcHRvcjo6dmVydGV4RGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpWZXJ0ZXhEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExWZXJ0ZXhE
ZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhEZXNjcmlwdG9yKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBsYXlvdXRzCitfTVRMX0lOTElORSBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERl
c2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhEZXNjcmlwdG9yOjpsYXlvdXRzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleEJ1ZmZlckxheW91dERl
c2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGF5b3V0cykpOworfQorCisv
LyBwcm9wZXJ0eTogYXR0cmlidXRlcworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yQXJyYXkqIE1UTDo6VmVydGV4RGVzY3JpcHRvcjo6YXR0cmlidXRlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0ZXMpKTsKK30K
KworLy8gbWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRleERlc2NyaXB0
b3I6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwocmVzZXQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIzNGQzYTFhNmNlMTBiOTI1Y2Y2MTI1NmZlZDUxNmRjMzMwYmRkMTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmlz
aWJsZUZ1bmN0aW9uVGFibGUuaHBwCkBAIC0wLDAgKzEsOTYgQEAKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFZpc2libGVGdW5j
dGlvblRhYmxlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8K
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJy
aWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25IYW5kbGUuaHBwIgor
I2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgVmlz
aWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFZpc2libGVG
dW5jdGlvblRhYmxlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmlz
aWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgVmlzaWJs
ZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNs
YXNzIFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciogdmlzaWJsZUZ1bmN0aW9uVGFibGVE
ZXNjcmlwdG9yKCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbkNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnVuY3Rpb25Db3VudChOUzo6VUludGVnZXIgZnVu
Y3Rpb25Db3VudCk7Cit9OworCitjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSA6IHB1YmxpYyBO
Uzo6UmVmZXJlbmNpbmc8VmlzaWJsZUZ1bmN0aW9uVGFibGUsIFJlc291cmNlPgoreworcHVibGlj
OgorICAgIHZvaWQgc2V0RnVuY3Rpb24oY29uc3QgY2xhc3MgRnVuY3Rpb25IYW5kbGUqIGZ1bmN0
aW9uLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBzZXRGdW5jdGlvbnMoY29uc3Qg
Y2xhc3MgRnVuY3Rpb25IYW5kbGUqIGZ1bmN0aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworfTsK
KworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWaXNpYmxl
RnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlw
dG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VmlzaWJs
ZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZpc2libGVGdW5j
dGlvblRhYmxlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5F
IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBNVEw6OlZpc2libGVGdW5jdGlv
blRhYmxlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8
TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IHZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpW
aXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVE
ZXNjcmlwdG9yOjp2aXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IoKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9y
Kj4oX01UTF9QUklWQVRFX0NMUyhNVExWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpLCBf
TVRMX1BSSVZBVEVfU0VMKHZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcikpOworfQorCisv
LyBwcm9wZXJ0eTogZnVuY3Rpb25Db3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yOjpmdW5jdGlvbkNvdW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZnVuY3Rpb25Db3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yOjpzZXRGdW5jdGlvbkNvdW50KE5TOjpVSW50
ZWdlciBmdW5jdGlvbkNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRGdW5jdGlvbkNvdW50XyksIGZ1bmN0aW9uQ291bnQpOwor
fQorCisvLyBtZXRob2Q6IHNldEZ1bmN0aW9uOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6VmlzaWJsZUZ1bmN0aW9uVGFibGU6OnNldEZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb25I
YW5kbGUqIGZ1bmN0aW9uLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uX2F0SW5kZXhf
KSwgZnVuY3Rpb24sIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGdW5jdGlvbnM6d2l0aFJh
bmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlOjpzZXRGdW5j
dGlvbnMoY29uc3QgTVRMOjpGdW5jdGlvbkhhbmRsZSogZnVuY3Rpb25zW10sIE5TOjpSYW5nZSBy
YW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0RnVuY3Rpb25zX3dpdGhSYW5nZV8pLCBmdW5jdGlvbnMsIHJhbmdlKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NZXRhbC5ocHAg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTWV0YWwuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk2YTM2MDY2YjU5MjUzZGJkN2RhY2ViNzQ2YzBjOTQxNDMzZmZjZGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTWV0YWwuaHBwCkBA
IC0wLDAgKzEsODAgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIE1ldGFsL01ldGFsLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwIgor
I2luY2x1ZGUgIk1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcCIKKyNp
bmNsdWRlICJNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAiCisjaW5jbHVkZSAiTVRM
QXJndW1lbnQuaHBwIgorI2luY2x1ZGUgIk1UTEFyZ3VtZW50RW5jb2Rlci5ocHAiCisjaW5jbHVk
ZSAiTVRMQmluYXJ5QXJjaGl2ZS5ocHAiCisjaW5jbHVkZSAiTVRMQmxpdENvbW1hbmRFbmNvZGVy
LmhwcCIKKyNpbmNsdWRlICJNVExCbGl0UGFzcy5ocHAiCisjaW5jbHVkZSAiTVRMQnVmZmVyLmhw
cCIKKyNpbmNsdWRlICJNVExDYXB0dXJlTWFuYWdlci5ocHAiCisjaW5jbHVkZSAiTVRMQ2FwdHVy
ZVNjb3BlLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJN
VExDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMQ29tbWFuZFF1ZXVlLmhwcCIKKyNp
bmNsdWRlICJNVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbXB1
dGVQYXNzLmhwcCIKKyNpbmNsdWRlICJNVExDb21wdXRlUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUg
Ik1UTENvdW50ZXJzLmhwcCIKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExEZXB0aFN0ZW5jaWwuaHBwIgorI2luY2x1ZGUgIk1UTERldmljZS5ocHAiCisjaW5jbHVkZSAi
TVRMRHJhd2FibGUuaHBwIgorI2luY2x1ZGUgIk1UTER5bmFtaWNMaWJyYXJ5LmhwcCIKKyNpbmNs
dWRlICJNVExFdmVudC5ocHAiCisjaW5jbHVkZSAiTVRMRmVuY2UuaHBwIgorI2luY2x1ZGUgIk1U
TEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9uRGVzY3Jp
cHRvci5ocHAiCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25IYW5kbGUuaHBwIgorI2luY2x1ZGUgIk1U
TEZ1bmN0aW9uTG9nLmhwcCIKKyNpbmNsdWRlICJNVExGdW5jdGlvblN0aXRjaGluZy5ocHAiCisj
aW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExIZWFwLmhwcCIKKyNp
bmNsdWRlICJNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTEluZGly
ZWN0Q29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTEludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGUuaHBwIgorI2luY2x1ZGUgIk1UTExpYnJhcnkuaHBwIgorI2luY2x1ZGUgIk1UTExpbmtl
ZEZ1bmN0aW9ucy5ocHAiCisjaW5jbHVkZSAiTVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rl
ci5ocHAiCisjaW5jbHVkZSAiTVRMUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTFBpeGVsRm9y
bWF0LmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKyNpbmNsdWRlICJNVExSYXN0ZXJp
emF0aW9uUmF0ZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIgor
I2luY2x1ZGUgIk1UTFJlbmRlclBhc3MuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlclBpcGVsaW5l
LmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZVN0YXRlUGFzcy5o
cHAiCisjaW5jbHVkZSAiTVRMU2FtcGxlci5ocHAiCisjaW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91
dHB1dERlc2NyaXB0b3IuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBwIgorI2luY2x1ZGUg
Ik1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlICJNVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCIKKyNpbmNs
dWRlICJNVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FEZWZpbmVzLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBRGVmaW5lcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFmN2Vm
ZmUzYTE4M2ViMjI2YjdlMGE5MDZlNDJiMjlhYWZkMDEyNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBRGVmaW5lcy5ocHAKQEAg
LTAsMCArMSw0MSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gUXVhcnR6Q29yZS9DQURlZmluZXMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIw
MjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNEZWZpbmVz
LmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNkZWZpbmUgX0NBX0VYUE9SVCBfTlNfRVhQT1JUCisjZGVmaW5lIF9DQV9FWFRFUk4gX05TX0VY
VEVSTgorI2RlZmluZSBfQ0FfSU5MSU5FIF9OU19JTkxJTkUKKyNkZWZpbmUgX0NBX1BBQ0tFRCBf
TlNfUEFDS0VECisKKyNkZWZpbmUgX0NBX0NPTlNUKHR5cGUsIG5hbWUpIF9OU19DT05TVCh0eXBl
LCBuYW1lKQorI2RlZmluZSBfQ0FfRU5VTSh0eXBlLCBuYW1lKSBfTlNfRU5VTSh0eXBlLCBuYW1l
KQorI2RlZmluZSBfQ0FfT1BUSU9OUyh0eXBlLCBuYW1lKSBfTlNfT1BUSU9OUyh0eXBlLCBuYW1l
KQorCisjZGVmaW5lIF9DQV9WQUxJREFURV9TSVpFKG5zLCBuYW1lKSBfTlNfVkFMSURBVEVfU0la
RShucywgbmFtZSkKKyNkZWZpbmUgX0NBX1ZBTElEQVRFX0VOVU0obnMsIG5hbWUpIF9OU19WQUxJ
REFURV9FTlVNKG5zLCBuYW1lKQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9R
dWFydHpDb3JlL0NBTWV0YWxEcmF3YWJsZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvUXVhcnR6Q29yZS9DQU1ldGFsRHJhd2FibGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMDg3NTcy
MWNhOTgwNGZmZGMzNGJhNDVlZjU5NTQyMzA5NzRhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQU1ldGFsRHJhd2FibGUuaHBw
CkBAIC0wLDAgKzEsNTcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8KKy8vIFF1YXJ0ekNvcmUvQ0FNZXRhbERyYXdhYmxlLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICIuLi9NZXRhbC9NVExE
cmF3YWJsZS5ocHAiCisjaW5jbHVkZSAiLi4vTWV0YWwvTVRMVGV4dHVyZS5ocHAiCisKKyNpbmNs
dWRlICJDQURlZmluZXMuaHBwIgorI2luY2x1ZGUgIkNBUHJpdmF0ZS5ocHAiCisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgQ0EKK3sK
K2NsYXNzIE1ldGFsRHJhd2FibGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPE1ldGFsRHJhd2Fi
bGUsIE1UTDo6RHJhd2FibGU+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgTWV0YWxMYXllciogbGF5
ZXIoKSBjb25zdDsKKyAgICBNVEw6OlRleHR1cmUqICAgICB0ZXh0dXJlKCkgY29uc3Q7Cit9Owor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX0NB
X0lOTElORSBDQTo6TWV0YWxMYXllciogQ0E6Ok1ldGFsRHJhd2FibGU6OmxheWVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNZXRhbExheWVyKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChsYXllcikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX0NBX0lOTElORSBNVEw6OlRleHR1cmUqIENBOjpNZXRhbERy
YXdhYmxlOjp0ZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmUpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FQcml2YXRlLmhw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lNjQ1M2VjMzFkMTRiOWQ0ZjU3M2I5ZTkzZDc4ZGU5NGI4OTUxMjA1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNv
cmUvQ0FQcml2YXRlLmhwcApAQCAtMCwwICsxLDEwOSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBw
CisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIkNB
RGVmaW5lcy5ocHAiCisKKyNpbmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgX0NBX1BSSVZBVEVf
Q0xTKHN5bWJvbCkgKFByaXZhdGU6OkNsYXNzOjpzX2sjI3N5bWJvbCkKKyNkZWZpbmUgX0NBX1BS
SVZBVEVfU0VMKGFjY2Vzc29yKSAoUHJpdmF0ZTo6U2VsZWN0b3I6OnNfayMjYWNjZXNzb3IpCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaWYgZGVm
aW5lZChDQV9QUklWQVRFX0lNUExFTUVOVEFUSU9OKQorCisjZGVmaW5lIF9DQV9QUklWQVRFX1ZJ
U0lCSUxJVFkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKKyNkZWZpbmUg
X0NBX1BSSVZBVEVfSU1QT1JUIF9fYXR0cmlidXRlX18oKHdlYWtfaW1wb3J0KSkKKworI2lmIF9f
T0JKQ19fCisjZGVmaW5lIF9DQV9QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgKChf
X2JyaWRnZSB2b2lkKilvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wpKQorI2Vsc2UKKyNkZWZpbmUg
X0NBX1BSSVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKSBvYmpjX2xvb2tVcENsYXNzKCNz
eW1ib2wpCisjZW5kaWYgLy8gX19PQkpDX18KKworI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfQ0xT
KHN5bWJvbCkgdm9pZCogc19rIyNzeW1ib2wgX0NBX1BSSVZBVEVfVklTSUJJTElUWSA9IF9DQV9Q
UklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCk7CisjZGVmaW5lIF9DQV9QUklWQVRFX0RF
Rl9QUk8oc3ltYm9sKQorI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1i
b2wpIFNFTCBzX2sjI2FjY2Vzc29yIF9DQV9QUklWQVRFX1ZJU0lCSUxJVFkgPSBzZWxfcmVnaXN0
ZXJOYW1lKHN5bWJvbCk7CisjZGVmaW5lIF9DQV9QUklWQVRFX0RFRl9TVFIodHlwZSwgc3ltYm9s
KSAgICAgICAgICAgICAgICBcCisgICAgX0NBX0VYVEVSTiB0eXBlIGNvbnN0IENBIyNzeW1ib2wg
X0NBX1BSSVZBVEVfSU1QT1JUOyBcCisgICAgdHlwZSBjb25zdCAgICAgICAgICAgICAgICAgICAg
ICAgQ0E6OnN5bWJvbCA9IChudWxscHRyICE9ICZDQSMjc3ltYm9sKSA/IENBIyNzeW1ib2wgOiBu
dWxscHRyOworCisjZWxzZQorCisjZGVmaW5lIF9DQV9QUklWQVRFX0RFRl9DTFMoc3ltYm9sKSBl
eHRlcm4gdm9pZCogc19rIyNzeW1ib2w7CisjZGVmaW5lIF9DQV9QUklWQVRFX0RFRl9QUk8oc3lt
Ym9sKQorI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIGV4dGVy
biBTRUwgc19rIyNhY2Nlc3NvcjsKKyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX1NUUih0eXBlLCBz
eW1ib2wpCisKKyNlbmRpZiAvLyBDQV9QUklWQVRFX0lNUExFTUVOVEFUSU9OCisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgQ0EKK3sK
K25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFtZXNwYWNlIENsYXNzCisgICAgeworCisgICAg
fSAvLyBDbGFzcworfSAvLyBQcml2YXRlCit9IC8vIENBCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgQ0EKK3sKK25hbWVzcGFjZSBQ
cml2YXRlCit7CisgICAgbmFtZXNwYWNlIFByb3RvY29sCisgICAgeworCisgICAgICAgIF9DQV9Q
UklWQVRFX0RFRl9QUk8oQ0FNZXRhbERyYXdhYmxlKTsKKworICAgIH0gLy8gUHJvdG9jb2wKK30g
Ly8gUHJpdmF0ZQorfSAvLyBDQQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIENBCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAg
IG5hbWVzcGFjZSBTZWxlY3RvcgorICAgIHsKKworICAgICAgICBfQ0FfUFJJVkFURV9ERUZfU0VM
KGxheWVyLAorICAgICAgICAgICAgImxheWVyIik7CisgICAgICAgIF9DQV9QUklWQVRFX0RFRl9T
RUwodGV4dHVyZSwKKyAgICAgICAgICAgICJ0ZXh0dXJlIik7CisKKyAgICB9IC8vIENsYXNzCit9
IC8vIFByaXZhdGUKK30gLy8gQ0EKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
UXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9RdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMWViNDY3YjE2YmI4MGZk
ZmQxOTZhYThiOTNiZmVkYzU0NDcxOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcApAQCAtMCwwICsxLDI3
IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIkNBTWV0YWxEcmF3YWJsZS5ocHAiCisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1JFQURNRS5tZCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk1MDcxNTVlYjc3ZmMyNDdmNDYzYjU0
MmFmOWJlZjBlZWQ3Mzg1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9SRUFETUUubWQKQEAgLTAsMCArMSwyNDUgQEAKKyMjIEFib3V0CisKKyoqbWV0
YWwtY3BwKiogaXMgYSBsb3cgb3ZlcmhlYWQgYW5kIGhlYWRlciBvbmx5IEMrKyBpbnRlcmZhY2Ug
Zm9yIE1ldGFsIHRoYXQgaGVscHMgZGV2ZWxvcGVycyBhZGQgTWV0YWwgZnVuY3Rpb25hbGl0eSB0
byBncmFwaGljcyBhcHBsaWNhdGlvbnMgdGhhdCBhcmUgd3JpdHRlbiBpbiBDKysgKHN1Y2ggYXMg
Z2FtZSBlbmdpbmVzKS4gKiptZXRhbC1jcHAqKiByZW1vdmVzIHRoZSBuZWVkIHRvIGNyZWF0ZSBh
IHNoaW0gYW5kIGFsbG93cyBkZXZlbG9wZXJzIHRvIGNhbGwgTWV0YWwgZnVuY3Rpb25zIGRpcmVj
dGx5IGZyb20gYW55d2hlcmUgaW4gdGhlaXIgZXhpc3RpbmcgQysrIGNvZGUuCisKKworIyMgSGln
aGxpZ2h0cworCistIERyb3AgaW4gQysrIGFsdGVybmF0aXZlIGludGVyZmFjZSB0byB0aGUgTWV0
YWwgT2JqZWN0aXZlLUMgaGVhZGVycy4KKy0gRGlyZWN0IG1hcHBpbmcgb2YgYWxsIE1ldGFsIE9i
amVjdGl2ZS1DIGNsYXNzZXMsIGNvbnN0YW50cyBhbmQgZW51bXMgdG8gQysrIGluIHRoZSBNVEwg
QysrIG5hbWVzcGFjZS4KKy0gTm8gbWVhc3VyYWJsZSBvdmVyaGVhZCBjb21wYXJlZCB0byBjYWxs
aW5nIE1ldGFsIE9iamVjdGl2ZS1DIGhlYWRlcnMsIGR1ZSB0byBpbmxpbmluZyBvZiBDKysgZnVu
Y3Rpb24gY2FsbHMuCistIE5vIHVzYWdlIG9mIHdyYXBwZXIgY29udGFpbmVycyB0aGF0IHJlcXVp
cmUgYWRkaXRpb25hbCBhbGxvY2F0aW9ucy4KKy0gUmVxdWlyZXMgQysrMTcgZHVlIHRvIHRoZSB1
c2FnZSBvZiBgY29uc3RleHByYCBpbiBgTlM6Ok9iamVjdGAuCistIElkZW50aWNhbCBoZWFkZXIg
ZmlsZXMgYW5kIGZ1bmN0aW9uL2NvbnN0YW50L2VudW0gYXZhaWxhYmlsaXR5IGZvciBpT1MsIG1h
Y09TIGFuZCB0dk9TLgorLSBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogQWxsIGBib29sIE1UTDo6
RGV2aWNlOjpzdXBwb3J0cy4uLigpYCBmdW5jdGlvbnMgY2hlY2sgaWYgdGhlaXIgcmVxdWlyZWQg
c2VsZWN0b3JzIGV4aXN0IGFuZCBhdXRvbWF0aWNhbGx5IHJldHVybiBgZmFsc2VgIGlmIG5vdC4K
Ky0gU3RyaW5nIChgRXJyb3JEb21haW5gKSBjb25zdGFudHMgYXJlIHdlYWsgbGlua2VkIGFuZCBh
dXRvbWF0aWNhbGx5IHNldCB0byBgbnVsbHB0cmAgaWYgbm90IGF2YWlsYWJsZS4KKworIyMgTWVt
b3J5IEFsbG9jYXRpb24gUG9saWN5CisKKyoqbWV0YWwtY3BwKiogZm9sbG93cyB0aGUgb2JqZWN0
IGFsbG9jYXRpb24gcG9saWNpZXMgb2YgQ29jb2EgYW5kIENvY29hIFRvdWNoLiBVbmRlcnN0YW5k
aW5nIHRob3NlIHJ1bGVzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHdoZW4gdXNpbmcgbWV0YWwt
Y3BwLCBhcyBDKysgb2JqZWN0cyBhcmUgbm90IGVsaWdpYmxlIGZvciBhdXRvbWF0aWMgcmVmZXJl
bmNlIGNvdW50aW5nIChBUkMpLgorCisqKm1ldGFsLWNwcCoqIG9iamVjdHMgYXJlIHJlZmVyZW5j
ZSBjb3VudGVkLiBUbyBoZWxwIGNvbnZleSBhbmQgbWFuYWdlIG9iamVjdCBsaWZlY3ljbGVzLCB0
aGUgZm9sbG93aW5nIGNvbnZlbnRpb25zIGFyZSBvYnNlcnZlZDoKKworMS4gKllvdSBvd24gYW55
IG9iamVjdCByZXR1cm5lZCBieSBtZXRob2RzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGgqIGBhbGxv
Y2AgKiwqIGBuZXdgICosKiBgY29weWAgKiwgb3IqIGBtdXRhYmxlQ29weWAuIFRoZSBtZXRob2Qg
cmV0dXJucyB0aGVzZSBvYmplY3RzIHdpdGggYHJldGFpbkNvdW50YCBlcXVhbHMgdG8gYDFgLgor
Mi4gKllvdSBjYW4gdGFrZSBvd25lcnNoaXAgb2YgYW4gb2JqZWN0IGJ5IGNhbGxpbmcgaXRzKiBg
YGByZXRhaW4oKWBgYCAqbWV0aG9kKi4gQSByZWNlaXZlZCBvYmplY3QgaXMgbm9ybWFsbHkgZ3Vh
cmFudGVlZCB0byByZW1haW4gdmFsaWQgd2l0aGluIHRoZSBtZXRob2QgaXQgd2FzIHJlY2VpdmVk
IGluLiBZb3UgdXNlIGByZXRhaW5gIGluIHR3byBzaXR1YXRpb25zOiAoMSkgSW4gdGhlIGltcGxl
bWVudGF0aW9uIG9mIGFuIGFjY2Vzc29yIG1ldGhvZCAoYSBzZXR0ZXIpIG9yIHRvIHRha2Ugb3du
ZXJzaGlwIG9mIGFuIG9iamVjdDsgYW5kICgyKSBUbyBwcmV2ZW50IGFuIG9iamVjdCBmcm9tIGJl
aW5nIGRlYWxsb2NhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2Ygc29tZSBvdGhlciBvcGVyYXRpb24u
CiszLiAqV2hlbiB5b3Ugbm8gbG9uZ2VyIG5lZWQgaXQsIHlvdSBtdXN0IHJlbGlucXVpc2ggb3du
ZXJzaGlwIG9mIGFuIG9iamVjdCB5b3Ugb3duKi4gWW91IHJlbGlucXVpc2ggb3duZXJzaGlwIGJ5
IGNhbGxpbmcgaXRzIGByZWxlYXNlKClgIG9yIGBhdXRvcmVsZWFzZSgpYCBtZXRob2QuCis0LiAq
WW91IG11c3Qgbm90IHJlbGlucXVpc2ggb3duZXJzaGlwIG9mIGFuIG9iamVjdCB5b3UgZG8gbm90
IG93biouCisKK1doZW4gYW4gb2JqZWN0J3MgYHJldGFpbkNvdW50YCByZWFjaGVzIGAwYCwgdGhl
IG9iamVjdCBpcyBpbW1lZGlhdGVseSBkZWFsbG9jYXRlZC4gSXQgaXMgaWxsZWdhbCB0byBjYWxs
IG1ldGhvZHMgb24gYSBkZWFsbG9jYXRlZCBvYmplY3QgYW5kIGl0IG1heSBsZWFkIHRvIGFuIGFw
cGxpY2F0aW9uIGNyYXNoLgorCisjIyMgQXV0b3JlbGVhc2VQb29scyBhbmQgT2JqZWN0cworCitT
ZXZlcmFsIG1ldGhvZHMgdGhhdCBjcmVhdGUgdGVtcG9yYXJ5IG9iamVjdHMgaW4gKiptZXRhbC1j
cHAqKiBhZGQgdGhlbSB0byBhbiBgQXV0b3JlbGVhc2VQb29sYCB0byBoZWxwIG1hbmFnZSB0aGVp
ciBsaWZldGltZXMuIEluIHRoZXNlIHNpdHVhdGlvbnMsIGFmdGVyICoqbWV0YWwtY3BwKiogY3Jl
YXRlcyB0aGUgb2JqZWN0LCBpdCBhZGRzIGl0IHRvIGFuIGBBdXRvcmVsZWFzZVBvb2xgLCB3aGlj
aCB3aWxsIHJlbGVhc2UgaXRzIG9iamVjdHMgd2hlbiB5b3UgcmVsZWFzZSAob3IgZHJhaW4pIGl0
LgorCitCeSBhZGRpbmcgdGVtcG9yYXJ5IG9iamVjdHMgdG8gYW4gQXV0b3JlbGVhc2VQb29sLCB5
b3UgZG8gbm90IG5lZWQgdG8gZXhwbGljaXRseSBjYWxsIGByZWxlYXNlKClgIHRvIGRlYWxsb2Nh
dGUgdGhlbS4gSW5zdGVhZCwgeW91IGNhbiByZWx5IG9uIHRoZSBgQXV0b3JlbGVhc2VQb29sYCB0
byBpbXBsaWNpdGx5IG1hbmFnZSB0aG9zZSBsaWZldGltZXMuCisKK0lmIHlvdSBjcmVhdGUgYW4g
b2JqZWN0IHdpdGggYSBtZXRob2QgdGhhdCBkb2VzIG5vdCBiZWdpbiB3aXRoIGBhbGxvY2AsIGBu
ZXdgLCBgY29weWAsIG9yIGBtdXRhYmxlQ29weWAsIHRoZSBjcmVhdGluZyBtZXRob2QgYWRkcyB0
aGUgb2JqZWN0IHRvIGFuIGF1dG9yZWxlYXNlIHBvb2wuCisKK1RoZSB0eXBpY2FsIHNjb3BlIG9m
IGFuIGBBdXRvcmVsZWFzZVBvb2xgIGlzIG9uZSBmcmFtZSBvZiByZW5kZXJpbmcgZm9yIHRoZSBt
YWluIHRocmVhZCBvZiB0aGUgcHJvZ3JhbS4gV2hlbiB0aGUgdGhyZWFkIHJldHVybnMgY29udHJv
bCB0byB0aGUgUnVuTG9vcCAoYW4gb2JqZWN0IHJlc3BvbnNpYmxlIGZvciByZWNlaXZpbmcgaW5w
dXQgYW5kIGV2ZW50cyBmcm9tIHRoZSB3aW5kb3dpbmcgc3lzdGVtKSwgdGhlIHBvb2wgaXMgKmRy
YWluZWQqLCByZWxlYXNpbmcgaXRzIG9iamVjdHMuCisKK1lvdSBjYW4gY3JlYXRlIGFuZCBtYW5h
Z2UgYWRkaXRpb25hbCBgQXV0b3JlbGVhc2VQb29sYHMgYXQgc21hbGxlciBzY29wZXMgdG8gcmVk
dWNlIHlvdXIgcHJvZ3JhbSdzIHdvcmtpbmcgc2V0LCBhbmQgeW91IGFyZSByZXF1aXJlZCB0byBk
byBzbyBmb3IgYW55IGFkZGl0aW9uYWwgdGhyZWFkcyB5b3VyIHByb2dyYW0gY3JlYXRlcy4KKwor
SWYgYW4gb2JqZWN0J3MgbGlmZWN5Y2xlIG5lZWRzIHRvIGJlIGV4dGVuZGVkIGJleW9uZCB0aGUg
YEF1dG9yZWxlYXNlUG9vbGAncyBzY29wZSwgeW91IGNhbiBjbGFpbSBvd25lcnNoaXAgb2YgaXQg
KGF2b2lkaW5nIGl0cyByZWxlYXNlIGJleW9uZCB0aGUgcG9vbCdzIHNjb3BlKSBieSBjYWxsaW5n
IGl0cyBgcmV0YWluKClgIG1ldGhvZCBiZWZvcmUgaXRzIHBvb2wgaXMgZHJhaW5lZC4gSW4gdGhl
c2UgY2FzZXMsIHlvdSB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgdGhlIGFwcHJvcHJp
YXRlIGByZWxlYXNlKClgIGNhbGwgb24gdGhlIG9iamVjdCBhZnRlciB5b3Ugbm8gbG9uZ2VyIG5l
ZWQgaXQuIAorCitZb3UgY2FuIGZpbmQgYSBtb3JlLWRldGFpbGVkIGludHJvZHVjdGlvbiB0byB0
aGUgbWVtb3J5IG1hbmFnZW1lbnQgcnVsZXMgaGVyZTogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUu
Y29tL2xpYnJhcnkvYXJjaGl2ZS9kb2N1bWVudGF0aW9uL0NvY29hL0NvbmNlcHR1YWwvTWVtb3J5
TWdtdC9BcnRpY2xlcy9tbVJ1bGVzLmh0bWwuCisKK0ZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhl
IGFwcGxpY2F0aW9uJ3MgUnVuTG9vcCwgcGxlYXNlIGZpbmQgaXRzIGRvY3VtZW50YXRpb24gaGVy
ZTogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vZm91bmRhdGlvbi9u
c3J1bmxvb3AKKworIyMjIFVzZSBhbmQgZGVidWcgQXV0b3JlbGVhc2VQb29scworCitXaGVuIHlv
dSBjcmVhdGUgYW4gYXV0b3JlbGVhc2VkIG9iamVjdCBhbmQgdGhlcmUgaXMgbm8gZW5jbG9zaW5n
IGBBdXRvcmVsZWFzZVBvb2xgLCB0aGUgb2JqZWN0IGlzIGxlYWtlZC4KKworVG8gcHJldmVudCB0
aGlzLCB5b3Ugbm9ybWFsbHkgY3JlYXRlIGFuIGBBdXRvcmVsZWFzZVBvb2xgIGluIHlvdXIgcHJv
Z3JhbSdzIGBtYWluYCBmdW5jdGlvbiwgYW5kIGluIHRoZSBlbnRyeSBmdW5jdGlvbiBmb3IgZXZl
cnkgdGhyZWFkIHlvdSBjcmVhdGUuIFlvdSBtYXkgYWxzbyBjcmVhdGUgYWRkaXRpb25hbCBgQXV0
b3JlbGVhc2VQb29sYHMgdG8gYXZvaWQgZ3Jvd2luZyB5b3VyIHByb2dyYW0ncyBoaWdoIG1lbW9y
eSB3YXRlcm1hcmsgd2hlbiB5b3UgY3JlYXRlIHNldmVyYWwgYXV0b3JlbGVhc2VkIG9iamVjdHMs
IHN1Y2ggYXMgd2hlbiByZW5kZXJpbmcuCisKK1VzZSB0aGUgRW52aXJvbm1lbnQgVmFyaWFibGUg
YE9CSkNfREVCVUdfTUlTU0lOR19QT09MUz1ZRVNgIHRvIHByaW50IGEgcnVudGltZSB3YXJuaW5n
IHdoZW4gYW4gYXV0b3JlbGVhc2VkIG9iamVjdCBpcyBsZWFrZWQgYmVjYXVzZSBubyBlbmNsb3Np
bmcgYEF1dG9yZWxlYXNlUG9vbGAgaXMgYXZhaWxhYmxlIGZvciBpdHMgdGhyZWFkLgorCitZb3Ug
Y2FuIGFsc28gcnVuIGBsZWFrcyAtLWF1dG9yZWxlYXNlUG9vbHNgIG9uIGEgbWVtZ3JhcGggZmls
ZSBvciBhIHByb2Nlc3MgSUQgKG1hY09TIG9ubHkpIHRvIHZpZXcgYSBsaXN0aW5nIG9mIHlvdXIg
cHJvZ3JhbSdzIGBBdXRvcmVsZWFzZVBvb2xgcyBhbmQgYWxsIG9iamVjdHMgdGhleSBjb250YWlu
LgorCisjIyMgbnVsbHB0cgorCitTaW1pbGFyIHRvIE9iamVjdGl2ZS1DLCBpdCBpcyBsZWdhbCB0
byBjYWxsIGFueSBtZXRob2QsIGluY2x1ZGluZyBgcmV0YWluKClgIGFuZCBgcmVsZWFzZSgpYCwg
b24gYG51bGxwdHJgICJvYmplY3RzIi4gV2hpbGUgY2FsbGluZyBtZXRob2RzIG9uIGBudWxscHRy
YCBzdGlsbCBkb2VzIGluY3VyIGluIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIHRoZSBlZmZlY3Rp
dmUgcmVzdWx0IGlzIGVxdWl2YWxlbnQgb2YgYSBOT1AuCisKK0NvbnZlcnNlbHksIGRvIG5vdCBh
c3N1bWUgdGhhdCBiZWNhdXNlIGNhbGxpbmcgYSBtZXRob2Qgb24gYSBwb2ludGVyIGRpZCBub3Qg
cmVzdWx0IGluIGEgY3Jhc2gsIHRoYXQgdGhlIHBvaW50ZWQtdG8gb2JqZWN0IGlzIHZhbGlkLgor
CisjIyBBZGRpbmcgbWV0YWwtY3BwIHRvIGEgUHJvamVjdAorCitTaW1wbHkgaW5jbHVkZSBgTWV0
YWwvTWV0YWwuaHBwYC4gVG8gZW5zdXJlIHRoYXQgdGhlIHNlbGVjdG9yIGFuZCBjbGFzcyBzeW1i
b2xzIGFyZSBsaW5rZWQsIGFkZCB0byBvbmUgb2YgeW91ciBjcHAgZmlsZXM6CisKK2BgYGNwcAor
I2RlZmluZSBOU19QUklWQVRFX0lNUExFTUVOVEFUSU9OCisjZGVmaW5lIE1UTF9QUklWQVRFX0lN
UExFTUVOVEFUSU9OCisKKyNpbmNsdWRlICJNZXRhbC9NZXRhbC5ocHAiCitgYGAKKworSWYgeW91
IHdhbnQgdG8gdXNlIHRoZSBRdWFydHpDb3JlIHdyYXBwZXIsIGFkZDoKKworYGBgY3BwCisjZGVm
aW5lIENBX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKworI2luY2x1ZGUgIlF1YXJ0ekNvcmUvUXVh
cnR6Q29yZS5ocHAiCitgYGAKKworIyMgR2VuZXJhdGluZyBhIFNpbmdsZSBIZWFkZXIgRmlsZQor
CitQdXJlbHkgb3B0aW9uYWw6IFlvdSBjYW4gZ2VuZXJhdGUgYSBzaW5nbGUgaGVhZGVyIGZpbGUg
dGhhdCBjb250YWlucyBhbGwgKiptZXRhbC1jcHAqKiBoZWFkZXJzIHZpYToKKworYGBgc2hlbGwK
Ky4vU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkgRm91bmRhdGlvbi9Gb3VuZGF0aW9u
LmhwcCBRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwIE1ldGFsL01ldGFsLmhwcAorYGBgCisKK0J5
IGRlZmF1bHQgdGhlIGdlbmVyYXRlZCBoZWFkZXIgZmlsZSB3aWxsIGJlIHdyaXR0ZW4gdG8gYC4v
U2luZ2xlSGVhZGVyL01ldGFsLmhwcGAKKworIyMgRXhhbXBsZXMKKworIyMjIyBDcmVhdGluZyB0
aGUgZGV2aWNlCisKKyMjIyMjIyBPYmplY3RpdmUtQyAod2l0aCBhdXRvbWF0aWMgcmVmZXJlbmNl
IGNvdW50aW5nKQorCitgYGBvYmpjCitpZDwgTVRMRGV2aWNlID4gZGV2aWNlID0gTVRMQ3JlYXRl
U3lzdGVtRGVmYXVsdERldmljZSgpOworCisvLyAuLi4KK2BgYAorCisjIyMjIyMgT2JqZWN0aXZl
LUMKKworYGBgb2JqYworaWQ8IE1UTERldmljZSA+IGRldmljZSA9IE1UTENyZWF0ZVN5c3RlbURl
ZmF1bHREZXZpY2UoKTsKKworLy8gLi4uCisKK1tkZXZpY2UgcmVsZWFzZV07CitgYGAKKworIyMj
IyMjIEMrKworCitgYGBjcHAKK01UTDo6RGV2aWNlKiBwRGV2aWNlID0gTVRMOjpDcmVhdGVTeXN0
ZW1EZWZhdWx0RGV2aWNlKCk7CisKKy8vIC4uLgorCitwRGV2aWNlLT5yZWxlYXNlKCk7CitgYGAK
KworIyMjIyBNZXRhbCBmdW5jdGlvbiBjYWxscyBtYXAgZGlyZWN0bHkgdG8gQysrCisKKyMjIyMj
IyBPYmplY3RpdmUtQyAod2l0aCBhdXRvbWF0aWMgcmVmZXJlbmNlIGNvdW50aW5nKQorCitgYGBv
YmpjCitNVExTYW1wbGVyRGVzY3JpcHRvciogc2FtcGxlckRlc2NyaXB0b3IgPSBbW01UTFNhbXBs
ZXJEZXNjcmlwdG9yIGFsbG9jXSBpbml0XTsKKworW3NhbXBsZXJEZXNjcmlwdG9yIHNldFNBZGRy
ZXNzTW9kZTogTVRMU2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0XTsKK1tzYW1wbGVyRGVzY3JpcHRv
ciBzZXRUQWRkcmVzc01vZGU6IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxl
ckRlc2NyaXB0b3Igc2V0UkFkZHJlc3NNb2RlOiBNVExTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXRd
OworW3NhbXBsZXJEZXNjcmlwdG9yIHNldE1hZ0ZpbHRlcjogTVRMU2FtcGxlck1pbk1hZ0ZpbHRl
ckxpbmVhcl07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0TWluRmlsdGVyOiBNVExTYW1wbGVyTWlu
TWFnRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRNaXBGaWx0ZXI6IE1UTFNh
bXBsZXJNaXBGaWx0ZXJMaW5lYXJdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldFN1cHBvcnRBcmd1
bWVudEJ1ZmZlcnM6IFlFU107CisKK2lkPCBNVExTYW1wbGVyU3RhdGUgPiBzYW1wbGVyU3RhdGUg
PSBbZGV2aWNlIG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlwdG9yOnNhbXBsZXJEZXNjcmlwdG9y
XTsKK2BgYAorCisjIyMjIyMgT2JqZWN0aXZlLUMKKworYGBgb2JqYworTVRMU2FtcGxlckRlc2Ny
aXB0b3IqIHNhbXBsZXJEZXNjcmlwdG9yID0gW1tNVExTYW1wbGVyRGVzY3JpcHRvciBhbGxvY10g
aW5pdF07CisKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRTQWRkcmVzc01vZGU6IE1UTFNhbXBsZXJB
ZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0VEFkZHJlc3NNb2RlOiBN
VExTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXRdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldFJBZGRy
ZXNzTW9kZTogTVRMU2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0XTsKK1tzYW1wbGVyRGVzY3JpcHRv
ciBzZXRNYWdGaWx0ZXI6IE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5lYXJdOworW3NhbXBsZXJE
ZXNjcmlwdG9yIHNldE1pbkZpbHRlcjogTVRMU2FtcGxlck1pbk1hZ0ZpbHRlckxpbmVhcl07Citb
c2FtcGxlckRlc2NyaXB0b3Igc2V0TWlwRmlsdGVyOiBNVExTYW1wbGVyTWlwRmlsdGVyTGluZWFy
XTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzOiBZRVNdOwor
CitpZDwgTVRMU2FtcGxlclN0YXRlID4gc2FtcGxlclN0YXRlID0gW2RldmljZSBuZXdTYW1wbGVy
U3RhdGVXaXRoRGVzY3JpcHRvcjpzYW1wbGVyRGVzY3JpcHRvcl07CisKK1tzYW1wbGVyRGVzY3Jp
cHRvciByZWxlYXNlXTsKKworLy8gLi4uCisKK1tzYW1wbGVyU3RhdGUgcmVsZWFzZV07CitgYGAK
KworIyMjIyMjIEMrKworCitgYGBjcHAKK01UTDo6U2FtcGxlckRlc2NyaXB0b3IqIHBTYW1wbGVy
RGVzY3JpcHRvciA9IE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmFsbG9jKCktPmluaXQoKTsKKwor
cFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRTQWRkcmVzc01vZGUoIE1UTDo6U2FtcGxlckFkZHJlc3NN
b2RlUmVwZWF0ICk7CitwU2FtcGxlckRlc2NyaXB0b3ItPnNldFRBZGRyZXNzTW9kZSggTVRMOjpT
YW1wbGVyQWRkcmVzc01vZGVSZXBlYXQgKTsKK3BTYW1wbGVyRGVzY3JpcHRvci0+c2V0UkFkZHJl
c3NNb2RlKCBNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdCApOworcFNhbXBsZXJEZXNjcmlw
dG9yLT5zZXRNYWdGaWx0ZXIoIE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlckxpbmVhciApOworcFNh
bXBsZXJEZXNjcmlwdG9yLT5zZXRNaW5GaWx0ZXIoIE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlckxp
bmVhciApOworcFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRNaXBGaWx0ZXIoIE1UTDo6U2FtcGxlck1p
cEZpbHRlckxpbmVhciApOworcFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRTdXBwb3J0QXJndW1lbnRC
dWZmZXJzKCB0cnVlICk7CisKK01UTDo6U2FtcGxlclN0YXRlKiBwU2FtcGxlclN0YXRlID0gcERl
dmljZS0+bmV3U2FtcGxlclN0YXRlKCBwU2FtcGxlckRlc2NyaXB0b3IgKTsKKworcFNhbXBsZXJE
ZXNjcmlwdG9yLT5yZWxlYXNlKCk7CisKKy8vIC4uLgorCitwU2FtcGxlclN0YXRlLT5yZWxlYXNl
KCk7CitgYGAKKworIyMjIyBBIHN1YnNldCBvZiBiaW5kaW5ncyBmb3IgRm91bmRhdGlvbiBjbGFz
c2VzIGlzIHByb3ZpZGVkIGZvciBzZWFtbGVzcyBpbnRlZ3JhdGlvbgorCisjIyMjIyMgT2JqZWN0
aXZlLUMgKHdpdGggYXV0b21hdGljIHJlZmVyZW5jZSBjb3VudGluZykKKworYGBgb2JqYworTlNB
dXRvcmVsZWFzZVBvb2wqICBwb29sICAgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0
XTsKK05TU3RyaW5nKiAgICAgICAgICAgc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3Ry
aW5nOiAiSGVsbG8gV29ybGQiIGVuY29kaW5nOiBOU0FTQ0lJU3RyaW5nRW5jb2RpbmddOworCitw
cmludGYoICJzdHJpbmcgPSBcIiVzXCJcbiIsIFtzdHJpbmcgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6
IE5TQVNDSUlTdHJpbmdFbmNvZGluZ10gKTsKK2BgYAorCisjIyMjIyMgT2JqZWN0aXZlLUMKKwor
YGBgb2JqYworTlNBdXRvcmVsZWFzZVBvb2wqIHBvb2wgICA9IFtbTlNBdXRvcmVsZWFzZVBvb2wg
YWxsb2NdIGluaXRdOworTlNTdHJpbmcqICAgICAgICAgIHN0cmluZyA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ1N0cmluZzogIkhlbGxvIFdvcmxkIiBlbmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29k
aW5nXTsKKwkJCQkJCQkJCitwcmludGYoICJzdHJpbmcgPSBcIiVzXCJcbiIsIFtzdHJpbmcgY1N0
cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVNDSUlTdHJpbmdFbmNvZGluZ10gKTsKKworW3Bvb2wgcmVs
ZWFzZV07CitgYGAKKworIyMjIyMjIEMrKworCitgYGBjcHAKK05TOjpBdXRvcmVsZWFzZVBvb2wq
IHBQb29sICAgPSBOUzo6QXV0b3JlbGVhc2VQb29sOjphbGxvYygpLT5pbml0KCk7CitOUzo6U3Ry
aW5nKiAgICAgICAgICBwU3RyaW5nID0gTlM6OlN0cmluZzo6c3RyaW5nKCAiSGVsbG8gV29ybGQi
LCBOUzo6QVNDSUlTdHJpbmdFbmNvZGluZyApOworCitwcmludGYoICJwU3RyaW5nID0gXCIlc1wi
XG4iLCBwU3RyaW5nLT5jU3RyaW5nKCBOUzo6QVNDSUlTdHJpbmdFbmNvZGluZyApICk7CisKK3BQ
b29sLT5yZWxlYXNlKCk7CitgYGAKKworIyMjIyAgSW50ZXJvcGVyYWJpbGl0eSB3aXRoIENvcmVG
b3VuZGF0aW9uCisKK2BgYGNwcAorTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdl
b21ldHJ5RGVzY3JpcHRvciogcEdlb0Rlc2NyaXB0b3IgID0gTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6YWxsb2MoKS0+aW5pdCgpOworQ0ZUeXBl
UmVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRv
cnNbXSAgID0geyAoIENGVHlwZVJlZiApKCBwR2VvRGVzY3JpcHRvciApIH07CitOUzo6QXJyYXkq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwR2VvRGVzY3JpcHRv
cnMgPSAoIE5TOjpBcnJheSogKSggQ0ZBcnJheUNyZWF0ZSgga0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZGVzY3JpcHRvcnMsIFNJWkVPRl9BUlJBWSggZGVzY3JpcHRvcnMpLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzICkgKTsKKworLy8gLi4uCisKK3BHZW9EZXNjcmlwdG9ycy0+cmVsZWFzZSgpOworYGBg
CisKKyMjIyMgQWNjZXNzaW5nIGEgQ0FNZXRhbERyYXdhYmxlCisKK2BgYG9iamMKKyNpbXBvcnQg
PFF1YXJ0ekNvcmUvQ0FNZXRhbExheWVyLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaHBwPgorCisvLyAuLi4KKworQ0FNZXRhbExheWVyKiAgICAgICAgIG1ldGFsTGF5ZXIgICAg
ICAgICA9IC8qIGdldCB5b3VyIGxheWVyIGZyb20geW91ciB2aWV3ICovOworaWQ8IENBTWV0YWxE
cmF3YWJsZSA+IG1ldGFsRHJhd2FibGUgICAgICA9IFttZXRhbExheWVyIG5leHREcmF3YWJsZV07
CitDQTo6TWV0YWxEcmF3YWJsZSogICAgcE1ldGFsQ3BwRHJhd2FibGUgID0gKCBfX2JyaWRnZSBD
QTo6TWV0YWxEcmF3YWJsZSogKSBtZXRhbERyYXdhYmxlOworCisvLyAuLi4KK2BgYApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1NpbmdsZUhlYWRlci9NYWtlU2lu
Z2xlSGVhZGVyLnB5IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1NpbmdsZUhlYWRl
ci9NYWtlU2luZ2xlSGVhZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1OGU0OWVjNzc2YWM5OWY3MDkwNWY2
YTUxZDc2OWQwNzUzOWU1NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkKQEAgLTAsMCArMSwy
NzEgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIworIyBTaW5nbGVIZWFkZXIvTWFrZVNpbmdsZUhlYWRlci5weQor
IworIyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKyMKKyMgTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBkYXRldGltZQoraW1w
b3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1w
b3J0IHN5cworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworY2xhc3MgSGVhZGVyUHJlZml4KCBvYmplY3QgKToKKwlfX3RlbXBsYXRlIAkJCT0gKCAnLy9c
bicKKwkJCQkJCQknLy8ge2ZpbGV9XG4nCisJCQkJCQkJJy8vXG4nCisJCQkJCQkJJy8vIHttZXRh
X2RhdGF9XG4nCisJCQkJCQkJJy8vXG4nCisJCQkJCQkJJy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLlxuJworCQkJCQkJCScvL1xuJworCQkJCQkJCScvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTtcbicKKwkJCQkJ
CQknLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLlxuJworCQkJCQkJCScvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXRcbicKKwkJCQkJCQknLy9cbicKKwkJCQkJCQknLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuJworCQkJCQkJCScvL1xuJworCQkJCQkJ
CScvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlXG4nCisJCQkJCQkJJy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsXG4nCisJCQkJCQkJJy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLlxuJworCQkJCQkJCScvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4nCisJCQkJCQkJJy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuJworCQkJCQkJCScvL1xuJworCQkJCQkJCSdc
bicgKQorCisJX190ZW1wbGF0ZV9jb21taXQJPQknQXV0b2dlbmVyYXRlZCBmcm9tIGNvbW1pdCB7
Y29tbWl0fS4nCisJX190ZW1wbGF0ZV9kYXRlCQk9CSdBdXRvZ2VuZXJhdGVkIG9uICVCICVkLCAl
WS4nCisKKwlkZWYgX19pbml0X18oIHNlbGYsIGZpbGUgKToKKwkJc2VsZi5fX2ZpbGUgPSBmaWxl
CisKKwlkZWYgX19zdHJfXyggc2VsZiApOgorCQlyZXR1cm4gc2VsZi5fX3RlbXBsYXRlLmZvcm1h
dCggZmlsZSA9IHNlbGYuX19maWxlLCBtZXRhX2RhdGEgPSBzZWxmLl9fbWV0YV9kYXRhX3N0cmlu
ZygpICkKKworCWRlZiBfX2dldF9jb21taXRfaGFzaCggc2VsZiApOgorCQlnaXRfY29tbWl0X2hh
c2ggPSBOb25lCisKKwkJdHJ5OgorCQkJZ2l0X2RpcgkJCT0gb3MucGF0aC5kaXJuYW1lKCBvcy5w
YXRoLnJlYWxwYXRoKCBfX2ZpbGVfXyApICkKKwkJCXByb2MgCQkJPSBzdWJwcm9jZXNzLlBvcGVu
KCBbICdnaXQnLCAncmV2LXBhcnNlJywgJ0hFQUQnIF0sIGN3ZCA9IGdpdF9kaXIsIHN0ZG91dCA9
IHN1YnByb2Nlc3MuUElQRSwgc3RkZXJyID0gc3VicHJvY2Vzcy5QSVBFICkKKwkJCWdpdF9jb21t
aXRfaGFzaCA9IHByb2Muc3Rkb3V0LnJlYWQoKS5kZWNvZGUoICd1dGYtOCcsICdyZXBsYWNlJyAp
LnN0cmlwKCkKKwkJZXhjZXB0OgorCQkJbG9nZ2luZy5lcnJvciggJ0ZhaWxlZCB0byBkZXRlcm1p
bmUgZ2l0IGNvbW1pdCBoYXNoIScgKQorCQkJcGFzcworCisJCXJldHVybiBnaXRfY29tbWl0X2hh
c2gKKworCWRlZiBfX2dldF9jb21taXRfc3RyaW5nKCBzZWxmICk6CisJCW1ldGFfZGF0YQkJPSBO
b25lCisJCWdpdF9jb21taXRfaGFzaAk9IHNlbGYuX19nZXRfY29tbWl0X2hhc2goKQorCisJCWlm
IGdpdF9jb21taXRfaGFzaDoKKwkJCW1ldGFfZGF0YSA9IHNlbGYuX190ZW1wbGF0ZV9jb21taXQu
Zm9ybWF0KCBjb21taXQgPSBnaXRfY29tbWl0X2hhc2ggKQorCisJCXJldHVybiBtZXRhX2RhdGEK
KworCWRlZiBfX2dldF9kYXRlX3N0cmluZyggc2VsZiApOgorCQl0b2RheSA9IGRhdGV0aW1lLmRh
dGUudG9kYXkoKQorIAorCQlyZXR1cm4gdG9kYXkuc3RyZnRpbWUoIHNlbGYuX190ZW1wbGF0ZV9k
YXRlICkKKworCWRlZiBfX21ldGFfZGF0YV9zdHJpbmcoIHNlbGYgKToKKwkJbWV0YV9kYXRhID0g
c2VsZi5fX2dldF9jb21taXRfc3RyaW5nKCkKKworCQlpZiBub3QgbWV0YV9kYXRhOgorCQkJbWV0
YV9kYXRhID0gc2VsZi5fX2dldF9kYXRlX3N0cmluZygpCisKKwkJcmV0dXJuIG1ldGFfZGF0YQor
CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3Mg
U2luZ2xlSGVhZGVyKCBvYmplY3QgKToKKwlfX3ByYWdtYV9vbmNlID0gJyNwcmFnbWEgb25jZVxu
XG4nCisKKwlkZWYgX19pbml0X18oIHNlbGYgKToKKwkJc2VsZi5fX2hlYWRlcl9wYXRocyA9IGxp
c3QoKQorCisJZGVmIF9fc3RyX18oIHNlbGYgKToKKwkJcmV0dXJuIHNlbGYucHJvY2VzcygpCisK
KwlkZWYgYXBwZW5kKCBzZWxmLCBoZWFkZXJfcGF0aCApOgorCQlzZWxmLl9faGVhZGVyX3BhdGhz
LmFwcGVuZCggaGVhZGVyX3BhdGggKQorCisJZGVmIHByb2Nlc3MoIHNlbGYgKToKKwkJb3V0X2hl
YWRlciAJCQkJPSBzZWxmLl9fcHJhZ21hX29uY2UKKworCQlzZWxmLl9faW5jbHVkZWRfaGVhZGVy
cwk9IHNldCgpCisJCXNlbGYuX19iYXNlX3BhdGggCQk9IGxpc3QoKQorCisJCWZvciBoZWFkZXJf
cGF0aCBpbiBzZWxmLl9faGVhZGVyX3BhdGhzOgorCQkJb3V0X2hlYWRlciArPSBzZWxmLl9fcHJv
Y2Vzc19oZWFkZXIoIGhlYWRlcl9wYXRoICkKKworCQlyZXR1cm4gc2VsZi5fX3N0cmlwX2VtcHR5
X2xpbmVzKCBvdXRfaGVhZGVyICkKKworCWRlZiBfX3JlYWRfaGVhZGVyKCBzZWxmLCBwYXRoICk6
CisJCXBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKCBwYXRoICkKKworCQl0cnk6CisJCQlmID0gb3Bl
biggcGF0aCwgJ3InICkKKwkJZXhjZXB0OgorCQkJcmFpc2UgUnVudGltZUVycm9yKCAnRmFpbGVk
IHRvIG9wZW4gZmlsZSBcIicgKyBwYXRoICsgJ1wiIGZvciByZWFkIScgKQorCisJCXJldHVybiBm
LnJlYWQoKQorCisJZGVmIF9fc3RyaXBfcHJhZ21hX29uY2UoIHNlbGYsIGhlYWRlciApOgorCQly
ZXR1cm4gcmUuc3ViKCAnXFxzKiNwcmFnbWEgb25jZVxzKlxcL1xcLy0qXFxuJywgJycsIGhlYWRl
ciApCisKKwlkZWYgX19zdHJpcF9jb21tZW50cyggc2VsZiwgaGVhZGVyICk6CisJCXJldHVybiBy
ZS5zdWIoICdeLy8uKlxcbicsICcnLCBoZWFkZXIsIGZsYWdzID0gcmUuTVVMVElMSU5FICkKKwor
CWRlZiBfX3N0cmlwX2VtcHR5X2xpbmVzKCBzZWxmLCBoZWFkZXIgKToKKwkJcmV0dXJuIHJlLnN1
YiggJ1xcblxcbisnLCAnXFxuXFxuJywgaGVhZGVyLCBmbGFncyA9IHJlLk1VTFRJTElORSApCisK
KwlkZWYgX19zdWJzdGl0dXRlX2luY2x1ZGVfZGlyZWN0aXZlKCBzZWxmLCBtYXRjaCApOgorCQlo
ZWFkZXJfcGF0aCA9IG1hdGNoLmdyb3VwKCAnSEVBREVSX1BBVEgnICkKKworCQlsb2dnaW5nLmlu
Zm8oICdcdFN1YnN0aXR1dGluZyBcIicgKyBoZWFkZXJfcGF0aCArICdcIi4uLicgKQorCisJCXJl
dHVybiBzZWxmLl9fcHJvY2Vzc19oZWFkZXIoIG9zLnBhdGguam9pbiggc2VsZi5fX2Jhc2VfcGF0
aFstMV0sIGhlYWRlcl9wYXRoICkgKQorCisJZGVmIF9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2
ZXMoIHNlbGYsIGhlYWRlciApOgorCQlyZXR1cm4gcmUuc3ViKCAnXlxccyojaW5jbHVkZVxcc1xc
Iig/UDxIRUFERVJfUEFUSD5cXFMqKVxcIicsIHNlbGYuX19zdWJzdGl0dXRlX2luY2x1ZGVfZGly
ZWN0aXZlLCBoZWFkZXIsIGZsYWdzID0gcmUuTVVMVElMSU5FICkKKworCWRlZiBfX3Byb2Nlc3Nf
Zm91bmRhdGlvbl9kaXJlY3RpdmVzKCBzZWxmLCBoZWFkZXIgKToKKwkJaWYgaGVhZGVyLmZpbmQo
IiNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPiIpICE9IC0xOgorCQkJbG9nZ2lu
Zy5pbmZvKCAnXHRTdWJzdGl0dXRpbmcgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+Li4uJyAp
CisJCQlyZXR1cm4gaGVhZGVyLnJlcGxhY2UoIiNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaHBwPiIsIHNlbGYuX19wcm9jZXNzX2hlYWRlciggb3MucGF0aC5qb2luKCBzZWxmLl9fYmFz
ZV9wYXRoWy0xXSwgIi4uL0ZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAiICkgKSApCisJCXJldHVy
biBoZWFkZXIKKworCisJZGVmIF9fcHJvY2Vzc19oZWFkZXIoIHNlbGYsIGhlYWRlcl9wYXRoICk6
CisJCW91dF9oZWFkZXIgPSAnJwkJCisKKwkJaGVhZGVyX3BhdGggPSBvcy5wYXRoLnJlYWxwYXRo
KCBoZWFkZXJfcGF0aCApCisKKwkJaWYgbm90IGhlYWRlcl9wYXRoIGluIHNlbGYuX19pbmNsdWRl
ZF9oZWFkZXJzOgorCQkJbG9nZ2luZy5pbmZvKCAnUHJvY2Vzc2luZyBcIicgKyBoZWFkZXJfcGF0
aCArICdcIi4uLicgKQorCisJCQlzZWxmLl9fYmFzZV9wYXRoLmFwcGVuZCggb3MucGF0aC5kaXJu
YW1lKCBoZWFkZXJfcGF0aCApICkKKwkJCXNlbGYuX19pbmNsdWRlZF9oZWFkZXJzLmFkZCggaGVh
ZGVyX3BhdGggKQorCQkJCisJCQlvdXRfaGVhZGVyID0gc2VsZi5fX3JlYWRfaGVhZGVyKCBoZWFk
ZXJfcGF0aCApCisJCQlvdXRfaGVhZGVyID0gc2VsZi5fX3N0cmlwX3ByYWdtYV9vbmNlKCBvdXRf
aGVhZGVyICkKKwkJCW91dF9oZWFkZXIgPSBzZWxmLl9fc3RyaXBfY29tbWVudHMoIG91dF9oZWFk
ZXIgKQorCQkJb3V0X2hlYWRlciA9IHNlbGYuX19wcm9jZXNzX2luY2x1ZGVfZGlyZWN0aXZlcygg
b3V0X2hlYWRlciApCisJCQlvdXRfaGVhZGVyID0gc2VsZi5fX3Byb2Nlc3NfZm91bmRhdGlvbl9k
aXJlY3RpdmVzKCBvdXRfaGVhZGVyICkKKworCQkJc2VsZi5fX2Jhc2VfcGF0aC5wb3AoKQorCQll
bHNlOgorCQkJbG9nZ2luZy5pbmZvKCAnXHRTa2lwcGluZyBcIicgKyBoZWFkZXJfcGF0aCArICdc
Ii4uLicgKQorCisJCXJldHVybiBvdXRfaGVhZGVyCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitkZWYgY3JlYXRlX2FyZ3VtZW50X3BhcnNlcigpOgor
CXBhcnNlciAJCQk9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKwliYXNlX3BhdGggCQk9IG9z
LnBhdGguZGlybmFtZSggb3MucGF0aC5yZWFscGF0aCggX19maWxlX18gKSApCisJb3V0cHV0X3Bh
dGgJCT0gb3MucGF0aC5qb2luKCBiYXNlX3BhdGgsICdNZXRhbC5ocHAnICkKKworCXBhcnNlci5h
ZGRfYXJndW1lbnQoICctbycsICctLW91dHB1dCcsICBkZXN0ID0gJ291dHB1dF9wYXRoJywgbWV0
YXZhciA9ICdQQVRIJywgZGVmYXVsdCA9IG91dHB1dF9wYXRoLCBoZWxwID0gJ091dHB1dCBwYXRo
IGZvciB0aGUgc2luZ2xlIGhlYWRlciBmaWxlLicgKQorCXBhcnNlci5hZGRfYXJndW1lbnQoICct
dicsICctLXZlcmJvc2UnLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsICBoZWxwID0gJ1Nob3cgdmVy
Ym9zZSBvdXRwdXQuJyApCisJcGFyc2VyLmFkZF9hcmd1bWVudCggZGVzdCA9ICdoZWFkZXJfcGF0
aHMnLCBtZXRhdmFyID0gJ0hFQURFUl9GSUxFJywgbmFyZ3M9JysnLCBoZWxwID0gJ0lucHV0IGhl
YWRlciBmaWxlLicgKQorCisJcmV0dXJuIHBhcnNlcgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVmIHBhcnNlX2FyZ3VtZW50cygpOgorCXBhcnNl
cgk9IGNyZWF0ZV9hcmd1bWVudF9wYXJzZXIoKQorCWFyZ3MJPSBwYXJzZXIucGFyc2VfYXJncygp
CisKKwlpZiBhcmdzLnZlcmJvc2U6CisJCWxvZ2dpbmcuZ2V0TG9nZ2VyKCkuc2V0TGV2ZWwoIGxv
Z2dpbmcuSU5GTyApCisJZWxzZToKKwkJbG9nZ2luZy5nZXRMb2dnZXIoKS5zZXRMZXZlbCggbG9n
Z2luZy5FUlJPUiApCisKKwlyZXR1cm4gYXJncworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVmIG1ha2VfaGVhZGVyKCBhcmdzICk6CisJcHJlZml4
ID0gSGVhZGVyUHJlZml4KCBvcy5wYXRoLmJhc2VuYW1lKCBhcmdzLm91dHB1dF9wYXRoICkgKQor
CWhlYWRlciA9IFNpbmdsZUhlYWRlcigpCisJCisJZm9yIGhlYWRlcl9wYXRoIGluIGFyZ3MuaGVh
ZGVyX3BhdGhzOgorCQloZWFkZXIuYXBwZW5kKCBoZWFkZXJfcGF0aCApCisKKwlyZXR1cm4gc3Ry
KCBwcmVmaXggKSArIHN0ciggaGVhZGVyICkKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlZiBtYWtlX2RpciggcGF0aCApOgorCXRyeToKKwkJaWYg
bm90IG9zLnBhdGguZXhpc3RzKCBwYXRoICk6CisJCQlvcy5tYWtlZGlycyggcGF0aCApCisJZXhj
ZXB0IG9zLmVycm9yOgorCQlwYXNzCisJZXhjZXB0OgorCQlyYWlzZQorCisjLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVmIHdyaXRlX2hlYWRlciggYXJn
cywgY29udGVudCApOgorCXBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKCBhcmdzLm91dHB1dF9wYXRo
ICkKKworCWxvZ2dpbmcuaW5mbyggJ1dyaXRpbmcgXCInICsgcGF0aCArICdcIi4uLicgKQorCisJ
bWFrZV9kaXIoIG9zLnBhdGguZGlybmFtZSggcGF0aCApICkKKworCXRyeToKKwkJZiA9IG9wZW4o
IHBhdGgsICd3JyApCisJZXhjZXB0OgorCQlyYWlzZSBSdW50aW1lRXJyb3IoICdGYWlsZWQgdG8g
b3BlbiBmaWxlIFwiJyArIHBhdGggKyAnXCIgZm9yIHdyaXRlIScgKQorCisJZi53cml0ZSggY29u
dGVudCApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorCXJlc3VsdCA9IC0xCisJCisJdHJ5OgorCQlp
ZiBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkubG93ZXIoKSA9PSAnYXNjaWknOgorCQkJcmVsb2Fk
KCBzeXMgKQorCQkJc3lzLnNldGRlZmF1bHRlbmNvZGluZyggJ3V0Zi04JyApCisKKwkJYXJncyAJ
PSBwYXJzZV9hcmd1bWVudHMoKQorCQloZWFkZXIgCT0gbWFrZV9oZWFkZXIoIGFyZ3MgKQorCisJ
CXdyaXRlX2hlYWRlciggYXJncywgaGVhZGVyICkKKworCQlyZXN1bHQgPSAwCisKKwlleGNlcHQg
KCBLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCApOgorCSAJcGFzcworCWV4Y2VwdDoKKwkg
CXJhaXNlCisKKwlzeXMuZXhpdCggcmVzdWx0ICkKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNzc1MzZiNmEwYWQ2NDNlMzJhMThlYTBmZDRjYTM3NDkzM2U3MWE1
Ny4uZDMyODJlOTkzMzA4YjhmYWVkODhmM2MzNTAzNmUzMjViNGUyN2FjMSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDIyLTAyLTE2ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYkdQVV0gSW50ZWdyYXRlIE1ldGFsLWNwcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2Njk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWV0YWwtY3BwIGZpbGVzIHNob3VsZCBub3QgYmUg
c3R5bGUtY2hlY2tlZC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
ci5weToKKwogMjAyMi0wMi0xNiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+
CiAKICAgICAgICAgQnJva2VuIHBpcGVzIGR1cmluZyBpT1Mgc2ltdWxhdG9yIHRlc3RpbmcKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRleCBkZDU1ZjgzOTI4NjBhYmZm
ZGY0NTk5MDZlMTIyZWZmNjZhMWMwYzA1Li5hYjc4OWQ3MWM5YTExZWYwYjNiZDdhZDZiNjcyZDI3
ZjI4ZTViYTMwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC00
MDIsNyArNDAyLDggQEAgX1NLSVBQRURfRklMRVNfV0lUSF9XQVJOSU5HID0gWwogICAgIG9zLnBh
dGguam9pbignU291cmNlJywgJ1dlYktpdCcsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxl
JywgJ0FQSScsICd3cGUnLCAnd2Via2l0LXdlYi1leHRlbnNpb24uaCcpLAogICAgIG9zLnBhdGgu
am9pbignU291cmNlJywgJ1dlYktpdCcsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywg
J0FQSScsICd3cGUnLCAnRE9NJywgJ3dlYmtpdGRvbS5oJyksCiAgICAgb3MucGF0aC5qb2luKCdT
b3VyY2UnLCAnV2ViR1BVJywgJ1dlYkdQVScsICdXZWJHUFUuaCcpLAotICAgIG9zLnBhdGguam9p
bignU291cmNlJywgJ1dlYkdQVScsICdXZWJHUFUnLCAnV2ViR1BVRXh0LmgnKV0KKyAgICBvcy5w
YXRoLmpvaW4oJ1NvdXJjZScsICdXZWJHUFUnLCAnV2ViR1BVJywgJ1dlYkdQVUV4dC5oJyksCisg
ICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViR1BVJywgJ1dlYkdQVScsICdtZXRhbC1jcHAn
LCAnU2luZ2xlSGVhZGVyJywgJ01ha2VTaW5nbGVIZWFkZXIucHknKV0KIAogIyBGaWxlcyB0byBz
a2lwIHRoYXQgYXJlIG1vcmUgY29tbW9uIG9yIG9idmlvdXMuCiAjCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452297</attachid>
            <date>2022-02-16 20:15:43 -0800</date>
            <delta_ts>2022-02-17 16:03:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236697-20220216201541.patch</filename>
            <type>text/plain</type>
            <size>983944</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDM3NmI4MThiMWQ5Mzc5Zjkz
M2E1YjQ5YzdkNmMwYzFiYTcxYTFmMGQuLjdjMmYxYjFmNDQ0ZDk1ZWJiMTM1ODdjNzlmOWVmMjY1
MWU1NzJkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDIyLTAyLTE2ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW50
ZWdyYXRlIE1ldGFsLWNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2Njk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWV0YWwtY3BwIGlzIGEgbG93LW92ZXJoZWFkIEMrKyBpbnRlcmZhY2UgZm9yIE1l
dGFsLgorICAgICAgICBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbWV0YWwvY3BwLworCisg
ICAgICAgIE1ldGFsLWNwcCBpc24ndCBhIGxpYnJhcnkgcGVyLXNlLCBidXQgaXMgaW5zdGVhZCBq
dXN0IGEgY29sbGVjdGlvbiBvZiBmaWxlcyB3aGljaCB1c2VycworICAgICAgICBhcmUgc3VwcG9z
ZWQgdG8ganVzdCBjb3B5IGludG8gdGhlaXIgcHJvamVjdC4gVGhpcyBkb2VzIGp1c3QgdGhhdCwg
YW5kIGhvb2tzIHVwIGFsbCB0aGUKKyAgICAgICAgbmVjZXNzYXJ5IGZsYWdzIGFuZCBwYXRocyBh
bmQgZXZlcnl0aGluZy4KKworICAgICAgICBUaGlzIHVzZXMgdGhlICJzaW5nbGUgaGVhZGVyIGFs
dGVybmF0aXZlIiBkZXNjcmliZWQgb24gdGhhdCB3ZWJwYWdlLCBhbmQgY3JlYXRlcyB0aGUKKyAg
ICAgICAgc2luZ2xlIGZpbGUgYXMgYSBidWlsZCBzdGVwLgorCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvV2ViR1BVLnhjY29uZmlnOgorICAgICAgICAqIFdlYkdQVS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYkdQVS9NZXRhbC5jcHA6IEFkZGVkLgorICAgICAgICAq
IFdlYkdQVS9jb25maWcuaDoKKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
Rm91bmRhdGlvbi5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU0FycmF5LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3Vu
ZGF0aW9uL05TQXV0b3JlbGVhc2VQb29sLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21l
dGFsLWNwcC9Gb3VuZGF0aW9uL05TQnVuZGxlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0YS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGljdGlvbmFyeS5ocHA6IEFkZGVkLgorICAg
ICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0VudW1lcmF0b3IuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFcnJvci5ocHA6IEFk
ZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0xvY2suaHBwOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOb3RpZmljYXRp
b24uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNO
dW1iZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNPYmpDUnVudGltZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9OU09iamVjdC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAv
Rm91bmRhdGlvbi9OU1ByaXZhdGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNQcm9jZXNzSW5mby5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1JhbmdlLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJHUFUvbWV0YWwtY3BwL0xJQ0VOU0UudHh0OiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHA6IEFkZGVkLgorICAg
ICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29t
bWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAg
ICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0Q29tbWFuZEVuY29kZXIu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRQYXNz
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCdWZmZXIu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVN
YW5hZ2VyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExD
YXB0dXJlU2NvcGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTENvbW1hbmRCdWZmZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTENvbW1hbmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgor
ICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQaXBlbGluZS5o
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ291bnRlcnMu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlZmluZXMu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlcHRoU3Rl
bmNpbC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGV2
aWNlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEcmF3
YWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHlu
YW1pY0xpYnJhcnkuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEV2ZW50LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExGZW5jZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkhhbmRsZS5ocHA6IEFkZGVkLgorICAg
ICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Mb2cuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3RpdGNoaW5nLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFkZXJCcmlk
Z2UuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEhlYXAu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0
Q29tbWFuZEJ1ZmZlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHA6IEFkZGVk
LgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlicmFyeS5ocHA6IEFkZGVk
LgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlua2VkRnVuY3Rpb25zLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQYXJhbGxlbFJl
bmRlckNvbW1hbmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExQaXBlbGluZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMUGl4ZWxGb3JtYXQuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFByaXZhdGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRlLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVk
LgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGFzcy5ocHA6IEFk
ZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGlwZWxpbmUu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNl
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJj
ZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVQYXNzLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExTYW1wbGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHA6IEFk
ZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVGV4dHVyZS5ocHA6IEFk
ZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVHlwZXMuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZlcnRleERlc2NyaXB0b3Iu
aHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZpc2libGVG
dW5jdGlvblRhYmxlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NZXRhbC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29y
ZS9DQURlZmluZXMuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL1F1YXJ0
ekNvcmUvQ0FNZXRhbERyYXdhYmxlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFs
LWNwcC9RdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9t
ZXRhbC1jcHAvUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcDogQWRkZWQuCisgICAgICAgICogV2Vi
R1BVL21ldGFsLWNwcC9SRUFETUUubWQ6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1j
cHAvU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHk6IEFkZGVkLgorICAgICAgICAoSGVh
ZGVyUHJlZml4KToKKyAgICAgICAgKEhlYWRlclByZWZpeC5fX2luaXRfXyk6CisgICAgICAgIChI
ZWFkZXJQcmVmaXguX19zdHJfXyk6CisgICAgICAgIChIZWFkZXJQcmVmaXguX19nZXRfY29tbWl0
X2hhc2gpOgorICAgICAgICAoSGVhZGVyUHJlZml4Ll9fZ2V0X2NvbW1pdF9zdHJpbmcpOgorICAg
ICAgICAoSGVhZGVyUHJlZml4Ll9fZ2V0X2RhdGVfc3RyaW5nKToKKyAgICAgICAgKF9fbWV0YV9k
YXRhX3N0cmluZyk6CisgICAgICAgIChTaW5nbGVIZWFkZXIpOgorICAgICAgICAoU2luZ2xlSGVh
ZGVyLl9faW5pdF9fKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cl9fKToKKyAgICAgICAg
KFNpbmdsZUhlYWRlci5hcHBlbmQpOgorICAgICAgICAoU2luZ2xlSGVhZGVyLnByb2Nlc3MpOgor
ICAgICAgICAoU2luZ2xlSGVhZGVyLl9fcmVhZF9oZWFkZXIpOgorICAgICAgICAoU2luZ2xlSGVh
ZGVyLl9fc3RyaXBfcHJhZ21hX29uY2UpOgorICAgICAgICAoU2luZ2xlSGVhZGVyLl9fc3RyaXBf
Y29tbWVudHMpOgorICAgICAgICAoU2luZ2xlSGVhZGVyLl9fc3RyaXBfZW1wdHlfbGluZXMpOgor
ICAgICAgICAoU2luZ2xlSGVhZGVyLl9fc3Vic3RpdHV0ZV9pbmNsdWRlX2RpcmVjdGl2ZSk6Cisg
ICAgICAgIChTaW5nbGVIZWFkZXIuX19wcm9jZXNzX2luY2x1ZGVfZGlyZWN0aXZlcyk6CisgICAg
ICAgIChTaW5nbGVIZWFkZXIuX19wcm9jZXNzX2ZvdW5kYXRpb25fZGlyZWN0aXZlcyk6CisgICAg
ICAgIChTaW5nbGVIZWFkZXIuX19wcm9jZXNzX2hlYWRlcik6CisgICAgICAgIChjcmVhdGVfYXJn
dW1lbnRfcGFyc2VyKToKKyAgICAgICAgKHBhcnNlX2FyZ3VtZW50cyk6CisgICAgICAgIChtYWtl
X2hlYWRlcik6CisgICAgICAgIChtYWtlX2Rpcik6CisgICAgICAgICh3cml0ZV9oZWFkZXIpOgor
CiAyMDIyLTAyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dlYkdQVV0gVXBkYXRlIElETHMgYW5kIHN0dWJzIHRvIGxhdGVzdCB2ZXJzaW9u
IG9mIHRoZSBzcGVjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0NvbmZpZ3VyYXRpb25zL1dl
YkdQVS54Y2NvbmZpZyBiL1NvdXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29u
ZmlnCmluZGV4IGQ0NTU5ZWU5OGIyNjQxYjU3ZWQzYjA2ZWYzY2UyNmI2YjIzZGNjYmMuLmY5NDZl
NmZmYTYwZTc2MzY0NjdkZjY0YjVmOWUwMDg5MzViMDhkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJHUFUv
Q29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnCkBAIC0yMyw3ICsyMywxMCBAQAogCiAjaW5j
bHVkZSAiVmVyc2lvbi54Y2NvbmZpZyIKIAorV0FSTklOR19DRkxBR1MgPSAtV2FsbCAtV2V4dHJh
IC1XY2FzdC1xdWFsIC1XY2hhci1zdWJzY3JpcHRzIC1XY29uZGl0aW9uYWwtdW5pbml0aWFsaXpl
ZCAtV2V4dHJhLXRva2VucyAtV2Zvcm1hdD0yIC1XaW5pdC1zZWxmIC1XbWlzc2luZy1mb3JtYXQt
YXR0cmlidXRlIC1XbWlzc2luZy1ub3JldHVybiAtV3BvaW50ZXItYXJpdGggLVdyZWR1bmRhbnQt
ZGVjbHMgLVd3cml0ZS1zdHJpbmdzIC1XZXhpdC10aW1lLWRlc3RydWN0b3JzIC1XdGF1dG9sb2dp
Y2FsLWNvbXBhcmUgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaCAtV3ZsYSAtV2xpdGVyYWwtY29udmVy
c2lvbiAtV3RocmVhZC1zYWZldHkgLVduby10eXBlZGVmLXJlZGVmaW5pdGlvbiAtV25vLWlnbm9y
ZWQtcXVhbGlmaWVyczsKKwogSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIkKEJVSUxUX1BST0RVQ1RT
X0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoaW5oZXJpdGVkKTsKK1NZU1RFTV9IRUFERVJfU0VB
UkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkdQVS9t
ZXRhbC1jcHAgJChpbmhlcml0ZWQpOwogCiBJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CiAK
QEAgLTY5LDMgKzcyLDcgQEAgTU9EVUxFTUFQX0ZJTEUgPSBXZWJHUFUvV2ViR1BVLm1vZHVsZW1h
cDsKIAogU1VQUE9SVFNfVEVYVF9CQVNFRF9BUEkgPSBZRVM7CiBUQVBJX1ZFUklGWV9NT0RFID0g
UGVkYW50aWM7CisKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLVhsaW5rZXIgLW5vX3dh
cm5faW5pdHM7CisKK0hFQURFUk1BUF9JTkNMVURFU19QUk9KRUNUX0hFQURFUlMgPSBOTzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNm
NDBjNjM4YmU4M2ZkNTcyNTNlMzEwY2NmNTZjMGM2YTQ5MDE2ZTEuLjE5Y2IwY2NiZDExYTk1MGM2
ODQxYjFmYTY3ZWVjNGIzYjMxNmM3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMyw3ICszLDcgQEAKIAlhcmNoaXZlVmVyc2lvbiA9
IDE7CiAJY2xhc3NlcyA9IHsKIAl9OwotCW9iamVjdFZlcnNpb24gPSA1NTsKKwlvYmplY3RWZXJz
aW9uID0gNTE7CiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KQEAgLTExLDYgKzExLDcgQEAKIAkJMUMwMjNENDAyNzQ0OTA3MDAwMURCNzM0IC8qIGxpYndn
c2wuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
RUJEN0YyMjcxNkIyQ0MwMEE1MjU0RCAvKiBsaWJ3Z3NsLmEgKi87IH07CiAJCTFDMDIzRDRCMjc0
NDk1QjkwMDFEQjczNCAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAyM0Q0QTI3NDQ5NUI5MDAxREI3
MzQgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQkxQzJDRURFRTI3MUU4QTcz
MDBFREMxNkYgLyogTWV0YWwuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyQ0VERUQyNzFFOEE3MzAwRURDMTZGIC8qIE1ldGFsLmZy
YW1ld29yayAqLzsgfTsKKwkJMUM1MzFBMjUyN0JEREY1NTAwQ0QxMjdFIC8qIE1ldGFsLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTMxQTI0MjdC
RERGNTUwMENEMTI3RSAvKiBNZXRhbC5jcHAgKi87IH07CiAJCTFDNUFDQTk0MjczQTQxQzIwMDk1
RjhENSAvKiBJbnN0YW5jZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDNUFDQTkyMjczQTQxQzIwMDk1RjhENSAvKiBJbnN0YW5jZS5tbSAqLzsgfTsK
IAkJMUM1QUNBQjYyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBpcGVsaW5lLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBOTgyNzNBNDI2RDAw
OTVGOEQ1IC8qIFJlbmRlclBpcGVsaW5lLm1tICovOyB9OwogCQkxQzVBQ0FCQjI3M0E0MjZEMDA5
NUY4RDUgLyogQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM1QUNBOUQyNzNBNDI2RDAwOTVGOEQ1IC8qIEJ1ZmZlci5tbSAqLzsgfTsKQEAg
LTcxLDYgKzcyLDkxIEBACiAJCTFDMDIzRDQ3Mjc0NDkxNkQwMDFEQjczNCAvKiBXR1NMVW5pdFRl
c3RzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdHU0xVbml0VGVzdHMueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDIzRDRBMjc0NDk1QjkwMDFEQjczNCAvKiBKYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUMyQ0VERUQy
NzFFOEE3MzAwRURDMTZGIC8qIE1ldGFsLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gTWV0
YWwuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9NZXRhbC5mcmFt
ZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQkxQzUzMTlDRDI3QkRERDZFMDBDRDEy
N0UgLyogTVRMVHlwZXMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFR5cGVzLmhwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5Q0UyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJl
c291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmVzb3Vy
Y2VTdGF0ZUNvbW1hbmRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzE5Q0YyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuaDsgcGF0aCA9IE1UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEMDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ29t
cHV0ZVBpcGVsaW5lLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDb21wdXRlUGlwZWxpbmUuaHBw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEMTI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMRnVuY3Rpb25IYW5kbGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEZ1bmN0aW9uSGFu
ZGxlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDIyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTERyYXdhYmxlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExEcmF3YWJsZS5o
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQzMjdCRERENkUwMENEMTI3
RSAvKiBNVExEeW5hbWljTGlicmFyeS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRHluYW1pY0xp
YnJhcnkuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlENDI3QkRERDZF
MDBDRDEyN0UgLyogTVRMQ29tcHV0ZVBhc3MuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTENvbXB1
dGVQYXNzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDUyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0
aCA9IE1UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzUzMTlENjI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGlwZWxpbmUuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE1UTFBpcGVsaW5lLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1MzE5RDcyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmg7IHBhdGggPSBNVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQ4MjdCRERENkUwMENEMTI3RSAvKiBNVExCbGl0
Q29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEJsaXRDb21tYW5kRW5jb2Rl
ci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQ5MjdCRERENkUwMENE
MTI3RSAvKiBNVExDYXB0dXJlTWFuYWdlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ2FwdHVy
ZU1hbmFnZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEQTI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1U
TENvbW1hbmRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5
REIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1ldGFsLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNZXRhbC5o
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOURDMjdCRERENkUwMENEMTI3
RSAvKiBNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0g
TVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzUzMTlERDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQWNjZWxlcmF0aW9uU3RydWN0
dXJlVHlwZXMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5
cGVzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5REUyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzUzMTlERjI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmFzdGVyaXph
dGlvblJhdGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFJhc3Rlcml6YXRpb25SYXRlLmhwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTAyN0JEREQ2RTAwQ0QxMjdFIC8q
IE1UTExpbmtlZEZ1bmN0aW9ucy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMTGlua2VkRnVuY3Rp
b25zLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTEyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTFRleHR1cmUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFRleHR1cmUuaHBw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFMjI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMU2FtcGxlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMU2FtcGxlci5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUUzMjdCRERENkUwMENEMTI3RSAvKiBNVExE
ZXB0aFN0ZW5jaWwuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTERlcHRoU3RlbmNpbC5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUU0MjdCRERENkUwMENEMTI3RSAvKiBN
VExBcmd1bWVudEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEFyZ3VtZW50RW5jb2Rl
ci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUU1MjdCRERENkUwMENE
MTI3RSAvKiBNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MzE5RTYyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFZpc2libGVGdW5jdGlvblRh
YmxlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUU3MjdCRERENkUwMENEMTI3RSAvKiBN
VExQcml2YXRlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExQcml2YXRlLmhwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTgyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlc291
cmNlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExSZXNvdXJjZS5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTMxOUU5MjdCRERENkUwMENEMTI3RSAvKiBNVExBY2NlbGVyYXRp
b25TdHJ1Y3R1cmUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEFjY2VsZXJhdGlvblN0cnVjdHVy
ZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUVBMjdCRERENkUwMENE
MTI3RSAvKiBNVExEZXZpY2UuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTERldmljZS5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUVCMjdCRERENkUwMENEMTI3RSAvKiBN
VExBcmd1bWVudC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQXJndW1lbnQuaHBwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFQzI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVu
Y3Rpb25Mb2cuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEZ1bmN0aW9uTG9nLmhwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RUQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEJ1
ZmZlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQnVmZmVyLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RUUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlbmRlclBhc3Mu
aHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFJlbmRlclBhc3MuaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzUzMTlFRjI3QkRERDZFMDBDRDEyN0UgLyogTVRMSGVhcC5ocHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5oOyBwYXRoID0gTVRMSGVhcC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNTMxOUYwMjdCRERENkUwMENEMTI3RSAvKiBNVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmg7IHBhdGggPSBNVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1MzE5RjEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uU3RpdGNo
aW5nLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExGdW5jdGlvblN0aXRjaGluZy5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUYyMjdCRERENkUwMENEMTI3RSAvKiBNVExM
aWJyYXJ5LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExMaWJyYXJ5LmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFBpeGVsRm9y
bWF0LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExQaXhlbEZvcm1hdC5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUY0MjdCRERENkUwMENEMTI3RSAvKiBNVExGZW5jZS5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRmVuY2UuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzUzMTlGNTI3QkRERDZFMDBDRDEyN0UgLyogTVRMSW5kaXJlY3RDb21tYW5kQnVm
ZmVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGNjI3QkRERDZFMDBDRDEyN0UgLyog
TVRMUmVuZGVyUGlwZWxpbmUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFJlbmRlclBpcGVsaW5l
LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjcyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1UTENvbW1hbmRRdWV1ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ29tbWFuZFF1
ZXVlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjgyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRM
RnVuY3Rpb25EZXNjcmlwdG9yLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzE5RjkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRF
bmNvZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21t
YW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZBMjdC
RERENkUwMENEMTI3RSAvKiBNVExCbGl0UGFzcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQmxp
dFBhc3MuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGQjI3QkRERDZF
MDBDRDEyN0UgLyogTVRMRXZlbnQuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEV2ZW50LmhwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RkMyN0JEREQ2RTAwQ0QxMjdFIC8q
IE1UTEJpbmFyeUFyY2hpdmUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEJpbmFyeUFyY2hpdmUu
aHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGRDI3QkRERDZFMDBDRDEy
N0UgLyogTVRMQ2FwdHVyZVNjb3BlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDYXB0dXJlU2Nv
cGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGRTI3QkRERDZFMDBD
RDEyN0UgLyogTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBN
VExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzUzMTlGRjI3QkRERDZFMDBDRDEyN0UgLyogTVRMSGVhZGVyQnJpZGdlLmhwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lmg7IHBhdGggPSBNVExIZWFkZXJCcmlkZ2UuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMUEwMDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ291bnRlcnMuaHBwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
aDsgcGF0aCA9IE1UTENvdW50ZXJzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzFBMDEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTERlZmluZXMuaHBwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0
aCA9IE1UTERlZmluZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEw
MjI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTFJlc291cmNlU3RhdGVQYXNzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzFBMDMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENvbW1hbmRCdWZmZXIuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE1UTENvbW1hbmRCdWZmZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzUzMUEwNTI3QkRERDZFMDBDRDEyN0UgLyogTlNTdHJpbmcuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE5TU3RyaW5nLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzFBMDYyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRGljdGlvbmFyeS5ocHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBw
YXRoID0gTlNEaWN0aW9uYXJ5LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzFBMDcyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TTG9jay5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNM
b2NrLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMDgyN0JEREQ2RTAw
Q0QxMjdFIC8qIE5TUHJvY2Vzc0luZm8uaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TUHJvY2Vzc0lu
Zm8uaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwOTI3QkRERDZFMDBD
RDEyN0UgLyogTlNFcnJvci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNFcnJvci5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTBBMjdCRERENkUwMENEMTI3RSAvKiBOU09i
akNSdW50aW1lLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU09iakNSdW50aW1lLmhwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMEIyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TT2Jq
ZWN0LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU09iamVjdC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNTMxQTBDMjdCRERENkUwMENEMTI3RSAvKiBOU05vdGlmaWNhdGlvbi5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNOb3RpZmljYXRpb24uaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzUzMUEwRDI3QkRERDZFMDBDRDEyN0UgLyogTlNQcml2YXRlLmhwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmg7IHBhdGggPSBOU1ByaXZhdGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMUEwRTI3QkRERDZFMDBDRDEyN0UgLyogTlNVUkwuaHBwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0
aCA9IE5TVVJMLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMEYyN0JE
REQ2RTAwQ0QxMjdFIC8qIE5TQXV0b3JlbGVhc2VQb29sLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBO
U0F1dG9yZWxlYXNlUG9vbC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMx
QTEwMjdCRERENkUwMENEMTI3RSAvKiBOU1JhbmdlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU1Jh
bmdlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMTEyN0JEREQ2RTAw
Q0QxMjdFIC8qIE5TVHlwZXMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TVHlwZXMuaHBwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExMjI3QkRERDZFMDBDRDEyN0UgLyogTlNE
YXRhLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0RhdGEuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzUzMUExMzI3QkRERDZFMDBDRDEyN0UgLyogTlNOdW1iZXIuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE5TTnVtYmVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzFBMTQyN0JEREQ2RTAwQ0QxMjdFIC8qIEZvdW5kYXRpb24uaHBwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0
aCA9IEZvdW5kYXRpb24uaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEx
NTI3QkRERDZFMDBDRDEyN0UgLyogTlNEYXRlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0RhdGUu
aHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExNjI3QkRERDZFMDBDRDEy
N0UgLyogTlNEZWZpbmVzLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0RlZmluZXMuaHBwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExNzI3QkRERDZFMDBDRDEyN0UgLyogTlNC
dW5kbGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TQnVuZGxlLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMTgyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRW51bWVyYXRvci5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNFbnVtZXJhdG9yLmhwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1MzFBMTkyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TQXJyYXkuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE5TQXJyYXkuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzUzMUExQTI3QkRERDZFMDBDRDEyN0UgLyogUkVBRE1FLm1kICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gbmV0LmRhcmluZ2ZpcmViYWxsLm1hcmtkb3du
OyBwYXRoID0gUkVBRE1FLm1kOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEx
QzI3QkRERDZFMDBDRDEyN0UgLyogUXVhcnR6Q29yZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gUXVh
cnR6Q29yZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFEMjdCRERE
NkUwMENEMTI3RSAvKiBDQVByaXZhdGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IENBUHJpdmF0ZS5o
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFFMjdCRERENkUwMENEMTI3
RSAvKiBDQU1ldGFsRHJhd2FibGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IENBTWV0YWxEcmF3YWJs
ZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFGMjdCRERENkUwMENE
MTI3RSAvKiBDQURlZmluZXMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IENBRGVmaW5lcy5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTIwMjdCRERENkUwMENEMTI3RSAvKiBM
SUNFTlNFLnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBMSUNFTlNFLnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1MzFBMjIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1ha2VTaW5nbGVIZWFkZXIucHkgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5w
eXRob247IHBhdGggPSBNYWtlU2luZ2xlSGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzUzMUEyNDI3QkRERjU1MDBDRDEyN0UgLyogTWV0YWwuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWV0YWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEy
QTI3QkRFMDY3MDBDRDEyN0UgLyogTWV0YWwuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1ldGFsLmhw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1QUNBOTIyNzNBNDFDMjAwOTVGOEQ1
IC8qIEluc3RhbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5zdGFuY2UubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNUFDQTk2MjczQTQyNkQwMDk1RjhENSAvKiBTdXJm
YWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1cmZhY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1QUNBOTcyNzNBNDI2RDAwOTVGOEQ1IC8qIFN3YXBD
aGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTd2FwQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NSw2ICsyNzEsMTUzIEBACiAJCQlwYXRoID0g
V0dTTFVuaXRUZXN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTFDNTMx
OUNCMjdCRERENkUwMENEMTI3RSAvKiBtZXRhbC1jcHAgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTMxQTA0MjdCRERENkUwMENEMTI3RSAvKiBGb3Vu
ZGF0aW9uICovLAorCQkJCTFDNTMxOUNDMjdCRERENkUwMENEMTI3RSAvKiBNZXRhbCAqLywKKwkJ
CQkxQzUzMUExQjI3QkRERDZFMDBDRDEyN0UgLyogUXVhcnR6Q29yZSAqLywKKwkJCQkxQzUzMUEy
MTI3QkRERDZFMDBDRDEyN0UgLyogU2luZ2xlSGVhZGVyICovLAorCQkJCTFDNTMxQTIwMjdCRERE
NkUwMENEMTI3RSAvKiBMSUNFTlNFLnR4dCAqLywKKwkJCQkxQzUzMUExQTI3QkRERDZFMDBDRDEy
N0UgLyogUkVBRE1FLm1kICovLAorCQkJKTsKKwkJCXBhdGggPSAibWV0YWwtY3BwIjsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDNTMxOUNDMjdCRERENkUwMENEMTI3RSAv
KiBNZXRhbCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MUM1MzE5REIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1ldGFsLmhwcCAqLywKKwkJCQkxQzUzMTlFOTI3
QkRERDZFMDBDRDEyN0UgLyogTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcCAqLywKKwkJCQkx
QzUzMTlGOTI3QkRERDZFMDBDRDEyN0UgLyogTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFu
ZEVuY29kZXIuaHBwICovLAorCQkJCTFDNTMxOUREMjdCRERENkUwMENEMTI3RSAvKiBNVExBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAgKi8sCisJCQkJMUM1MzE5RUIyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1UTEFyZ3VtZW50LmhwcCAqLywKKwkJCQkxQzUzMTlFNDI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMQXJndW1lbnRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlGQzI3QkRERDZFMDBDRDEy
N0UgLyogTVRMQmluYXJ5QXJjaGl2ZS5ocHAgKi8sCisJCQkJMUM1MzE5RDgyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5RkEyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTEJsaXRQYXNzLmhwcCAqLywKKwkJCQkxQzUzMTlFRDI3QkRERDZFMDBD
RDEyN0UgLyogTVRMQnVmZmVyLmhwcCAqLywKKwkJCQkxQzUzMTlEOTI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMQ2FwdHVyZU1hbmFnZXIuaHBwICovLAorCQkJCTFDNTMxOUZEMjdCRERENkUwMENEMTI3
RSAvKiBNVExDYXB0dXJlU2NvcGUuaHBwICovLAorCQkJCTFDNTMxQTAzMjdCRERENkUwMENEMTI3
RSAvKiBNVExDb21tYW5kQnVmZmVyLmhwcCAqLywKKwkJCQkxQzUzMTlEQTI3QkRERDZFMDBDRDEy
N0UgLyogTVRMQ29tbWFuZEVuY29kZXIuaHBwICovLAorCQkJCTFDNTMxOUY3MjdCRERENkUwMENE
MTI3RSAvKiBNVExDb21tYW5kUXVldWUuaHBwICovLAorCQkJCTFDNTMxOUZFMjdCRERENkUwMENE
MTI3RSAvKiBNVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwICovLAorCQkJCTFDNTMxOUQ0MjdC
RERENkUwMENEMTI3RSAvKiBNVExDb21wdXRlUGFzcy5ocHAgKi8sCisJCQkJMUM1MzE5RDAyN0JE
REQ2RTAwQ0QxMjdFIC8qIE1UTENvbXB1dGVQaXBlbGluZS5ocHAgKi8sCisJCQkJMUM1MzFBMDAy
N0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENvdW50ZXJzLmhwcCAqLywKKwkJCQkxQzUzMUEwMTI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMRGVmaW5lcy5ocHAgKi8sCisJCQkJMUM1MzE5RTMyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTERlcHRoU3RlbmNpbC5ocHAgKi8sCisJCQkJMUM1MzE5RUEyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTERldmljZS5ocHAgKi8sCisJCQkJMUM1MzE5RDIyN0JEREQ2RTAwQ0QxMjdF
IC8qIE1UTERyYXdhYmxlLmhwcCAqLywKKwkJCQkxQzUzMTlEMzI3QkRERDZFMDBDRDEyN0UgLyog
TVRMRHluYW1pY0xpYnJhcnkuaHBwICovLAorCQkJCTFDNTMxOUZCMjdCRERENkUwMENEMTI3RSAv
KiBNVExFdmVudC5ocHAgKi8sCisJCQkJMUM1MzE5RjQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZl
bmNlLmhwcCAqLywKKwkJCQkxQzUzMTlENTI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVuY3Rpb25D
b25zdGFudFZhbHVlcy5ocHAgKi8sCisJCQkJMUM1MzE5RjgyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAgKi8sCisJCQkJMUM1MzE5RDEyN0JEREQ2RTAwQ0QxMjdF
IC8qIE1UTEZ1bmN0aW9uSGFuZGxlLmhwcCAqLywKKwkJCQkxQzUzMTlFQzI3QkRERDZFMDBDRDEy
N0UgLyogTVRMRnVuY3Rpb25Mb2cuaHBwICovLAorCQkJCTFDNTMxOUYxMjdCRERENkUwMENEMTI3
RSAvKiBNVExGdW5jdGlvblN0aXRjaGluZy5ocHAgKi8sCisJCQkJMUM1MzE5RkYyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTEhlYWRlckJyaWRnZS5ocHAgKi8sCisJCQkJMUM1MzE5RUYyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTEhlYXAuaHBwICovLAorCQkJCTFDNTMxOUY1MjdCRERENkUwMENEMTI3RSAv
KiBNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwICovLAorCQkJCTFDNTMxOUNGMjdCRERENkUw
MENEMTI3RSAvKiBNVExJbmRpcmVjdENvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlF
NTI3QkRERDZFMDBDRDEyN0UgLyogTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAgKi8s
CisJCQkJMUM1MzE5RjIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTExpYnJhcnkuaHBwICovLAorCQkJ
CTFDNTMxOUUwMjdCRERENkUwMENEMTI3RSAvKiBNVExMaW5rZWRGdW5jdGlvbnMuaHBwICovLAor
CQkJCTFDNTMxOURFMjdCRERENkUwMENEMTI3RSAvKiBNVExQYXJhbGxlbFJlbmRlckNvbW1hbmRF
bmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlENjI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGlwZWxp
bmUuaHBwICovLAorCQkJCTFDNTMxOUYzMjdCRERENkUwMENEMTI3RSAvKiBNVExQaXhlbEZvcm1h
dC5ocHAgKi8sCisJCQkJMUM1MzE5RTcyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFByaXZhdGUuaHBw
ICovLAorCQkJCTFDNTMxOURGMjdCRERENkUwMENEMTI3RSAvKiBNVExSYXN0ZXJpemF0aW9uUmF0
ZS5ocHAgKi8sCisJCQkJMUM1MzE5RDcyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlbmRlckNvbW1h
bmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlFRTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVu
ZGVyUGFzcy5ocHAgKi8sCisJCQkJMUM1MzE5RjYyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlbmRl
clBpcGVsaW5lLmhwcCAqLywKKwkJCQkxQzUzMTlFODI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVz
b3VyY2UuaHBwICovLAorCQkJCTFDNTMxOUNFMjdCRERENkUwMENEMTI3RSAvKiBNVExSZXNvdXJj
ZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwICovLAorCQkJCTFDNTMxQTAyMjdCRERENkUwMENEMTI3
RSAvKiBNVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAgKi8sCisJCQkJMUM1MzE5RTIyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTFNhbXBsZXIuaHBwICovLAorCQkJCTFDNTMxOURDMjdCRERENkUwMENEMTI3
RSAvKiBNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAgKi8sCisJCQkJMUM1MzE5RTEy
N0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFRleHR1cmUuaHBwICovLAorCQkJCTFDNTMxOUNEMjdCRERE
NkUwMENEMTI3RSAvKiBNVExUeXBlcy5ocHAgKi8sCisJCQkJMUM1MzE5RjAyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1UTFZlcnRleERlc2NyaXB0b3IuaHBwICovLAorCQkJCTFDNTMxOUU2MjdCRERENkUw
MENEMTI3RSAvKiBNVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAgKi8sCisJCQkpOworCQkJcGF0
aCA9IE1ldGFsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUM1MzFBMDQy
N0JEREQ2RTAwQ0QxMjdFIC8qIEZvdW5kYXRpb24gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTMxQTE0MjdCRERENkUwMENEMTI3RSAvKiBGb3VuZGF0
aW9uLmhwcCAqLywKKwkJCQkxQzUzMUExOTI3QkRERDZFMDBDRDEyN0UgLyogTlNBcnJheS5ocHAg
Ki8sCisJCQkJMUM1MzFBMEYyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TQXV0b3JlbGVhc2VQb29sLmhw
cCAqLywKKwkJCQkxQzUzMUExNzI3QkRERDZFMDBDRDEyN0UgLyogTlNCdW5kbGUuaHBwICovLAor
CQkJCTFDNTMxQTEyMjdCRERENkUwMENEMTI3RSAvKiBOU0RhdGEuaHBwICovLAorCQkJCTFDNTMx
QTE1MjdCRERENkUwMENEMTI3RSAvKiBOU0RhdGUuaHBwICovLAorCQkJCTFDNTMxQTE2MjdCRERE
NkUwMENEMTI3RSAvKiBOU0RlZmluZXMuaHBwICovLAorCQkJCTFDNTMxQTA2MjdCRERENkUwMENE
MTI3RSAvKiBOU0RpY3Rpb25hcnkuaHBwICovLAorCQkJCTFDNTMxQTE4MjdCRERENkUwMENEMTI3
RSAvKiBOU0VudW1lcmF0b3IuaHBwICovLAorCQkJCTFDNTMxQTA5MjdCRERENkUwMENEMTI3RSAv
KiBOU0Vycm9yLmhwcCAqLywKKwkJCQkxQzUzMUEwNzI3QkRERDZFMDBDRDEyN0UgLyogTlNMb2Nr
LmhwcCAqLywKKwkJCQkxQzUzMUEwQzI3QkRERDZFMDBDRDEyN0UgLyogTlNOb3RpZmljYXRpb24u
aHBwICovLAorCQkJCTFDNTMxQTEzMjdCRERENkUwMENEMTI3RSAvKiBOU051bWJlci5ocHAgKi8s
CisJCQkJMUM1MzFBMEEyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TT2JqQ1J1bnRpbWUuaHBwICovLAor
CQkJCTFDNTMxQTBCMjdCRERENkUwMENEMTI3RSAvKiBOU09iamVjdC5ocHAgKi8sCisJCQkJMUM1
MzFBMEQyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TUHJpdmF0ZS5ocHAgKi8sCisJCQkJMUM1MzFBMDgy
N0JEREQ2RTAwQ0QxMjdFIC8qIE5TUHJvY2Vzc0luZm8uaHBwICovLAorCQkJCTFDNTMxQTEwMjdC
RERENkUwMENEMTI3RSAvKiBOU1JhbmdlLmhwcCAqLywKKwkJCQkxQzUzMUEwNTI3QkRERDZFMDBD
RDEyN0UgLyogTlNTdHJpbmcuaHBwICovLAorCQkJCTFDNTMxQTExMjdCRERENkUwMENEMTI3RSAv
KiBOU1R5cGVzLmhwcCAqLywKKwkJCQkxQzUzMUEwRTI3QkRERDZFMDBDRDEyN0UgLyogTlNVUkwu
aHBwICovLAorCQkJKTsKKwkJCXBhdGggPSBGb3VuZGF0aW9uOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKwkJMUM1MzFBMUIyN0JEREQ2RTAwQ0QxMjdFIC8qIFF1YXJ0ekNvcmUg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTMxQTFG
MjdCRERENkUwMENEMTI3RSAvKiBDQURlZmluZXMuaHBwICovLAorCQkJCTFDNTMxQTFFMjdCRERE
NkUwMENEMTI3RSAvKiBDQU1ldGFsRHJhd2FibGUuaHBwICovLAorCQkJCTFDNTMxQTFEMjdCRERE
NkUwMENEMTI3RSAvKiBDQVByaXZhdGUuaHBwICovLAorCQkJCTFDNTMxQTFDMjdCRERENkUwMENE
MTI3RSAvKiBRdWFydHpDb3JlLmhwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gUXVhcnR6Q29yZTsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDNTMxQTIxMjdCRERENkUwMENE
MTI3RSAvKiBTaW5nbGVIZWFkZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTFDNTMxQTIyMjdCRERENkUwMENEMTI3RSAvKiBNYWtlU2luZ2xlSGVhZGVy
LnB5ICovLAorCQkJKTsKKwkJCXBhdGggPSBTaW5nbGVIZWFkZXI7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworCQkxQzUzMUEyNjI3QkRERkUxMDBDRDEyN0UgLyogRGVyaXZlZFNv
dXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFD
NTMxQTI4MjdCREUwMzMwMENEMTI3RSAvKiBtZXRhbC1jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9
IERlcml2ZWRTb3VyY2VzOworCQkJcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkdQVTsKKwkJCXNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7CisJCX07CisJCTFDNTMxQTI4MjdCREUwMzMw
MENEMTI3RSAvKiBtZXRhbC1jcHAgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTFDNTMxQTI5MjdCREUwNDkwMENEMTI3RSAvKiBNZXRhbCAqLywKKwkJCSk7
CisJCQlwYXRoID0gIm1ldGFsLWNwcCI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQkxQzUzMUEyOTI3QkRFMDQ5MDBDRDEyN0UgLyogTWV0YWwgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTMxQTJBMjdCREUwNjcwMENEMTI3RSAv
KiBNZXRhbC5ocHAgKi8sCisJCQkpOworCQkJcGF0aCA9IE1ldGFsOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUNFQkQ3RDkyNzE2QUZCQTAwQTUyNTREID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIxMSw2ICs0NDQsOCBAQAogCQkxQ0VC
RDdFNTI3MTZBRkJBMDBBNTI1NEQgLyogV2ViR1BVICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEyNjI3QkRERkUxMDBDRDEyN0UgLyogRGVyaXZl
ZFNvdXJjZXMgKi8sCisJCQkJMUM1MzE5Q0IyN0JEREQ2RTAwQ0QxMjdFIC8qIG1ldGFsLWNwcCAq
LywKIAkJCQkxQzVBQ0FCMjI3M0E0MjZEMDA5NUY4RDUgLyogQWRhcHRlci5oICovLAogCQkJCTFD
NUFDQUE5MjczQTQyNkQwMDk1RjhENSAvKiBBZGFwdGVyLm1tICovLAogCQkJCTFDNUFDQUQ1Mjcz
QTRENzAwMDk1RjhENSAvKiBCaW5kR3JvdXAuaCAqLywKQEAgLTIzMyw2ICs0NjgsNyBAQAogCQkJ
CTFDRUJEODBCMjcxNkMzNzkwMEE1MjU0RCAvKiBFeHBvcnRNYWNyb3MuaCAqLywKIAkJCQkxQzVB
Q0FBMDI3M0E0MjZEMDA5NUY4RDUgLyogSW5zdGFuY2UuaCAqLywKIAkJCQkxQzVBQ0E5MjI3M0E0
MUMyMDA5NUY4RDUgLyogSW5zdGFuY2UubW0gKi8sCisJCQkJMUM1MzFBMjQyN0JEREY1NTAwQ0Qx
MjdFIC8qIE1ldGFsLmNwcCAqLywKIAkJCQkxQzVBQ0FEQTI3M0E0RTcxMDA5NUY4RDUgLyogUGlw
ZWxpbmVMYXlvdXQuaCAqLywKIAkJCQkxQzVBQ0FFNDI3M0E1NUREMDA5NUY4RDUgLyogUGlwZWxp
bmVMYXlvdXQubW0gKi8sCiAJCQkJMUM1QUNBQUMyNzNBNDI2RDAwOTVGOEQ1IC8qIFF1ZXJ5U2V0
LmggKi8sCkBAIC0yNzEsMTMgKzUwNywxMyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUNFQkQ4
MDcyNzE2QzJDMDAwQTUyNTREIC8qIEFTVC5oICovLAogCQkJCTFDRUJEODA0MjcxNkJGQUIwMEE1
MjU0RCAvKiBjb25maWcuaCAqLywKLQkJCQkzMzhCQjJEMzI3QjZCNjZDMDBFMDY2QUIgLyogTGV4
ZXIuaCAqLywKIAkJCQkzMzhCQjJENTI3QjZCNjg3MDBFMDY2QUIgLyogTGV4ZXIuY3BwICovLAor
CQkJCTMzOEJCMkQzMjdCNkI2NkMwMEUwNjZBQiAvKiBMZXhlci5oICovLAogCQkJCTMzOEJCMkQx
MjdCNkI2M0YwMEUwNjZBQiAvKiBTb3VyY2VTcGFuLmggKi8sCi0JCQkJMzM4QkIyQ0QyN0I2QjYw
MjAwRTA2NkFCIC8qIFRva2VuLmggKi8sCiAJCQkJMzM4QkIyQ0YyN0I2QjYxQjAwRTA2NkFCIC8q
IFRva2VuLmNwcCAqLywKLQkJCQkxQ0VCRDdGNzI3MTZCMzQ0MDBBNTI1NEQgLyogV0dTTC5oICov
LAorCQkJCTMzOEJCMkNEMjdCNkI2MDIwMEUwNjZBQiAvKiBUb2tlbi5oICovLAogCQkJCTFDRUJE
ODAyMjcxNkJGODIwMEE1MjU0RCAvKiBXR1NMLmNwcCAqLywKKwkJCQkxQ0VCRDdGNzI3MTZCMzQ0
MDBBNTI1NEQgLyogV0dTTC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBXR1NMOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMyNyw4ICs1NjMsOCBAQAogCQkJaXNhID0gUEJYSGVhZGVy
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMg
PSAoCi0JCQkJMzM4QkIyRDIyN0I2QjYzRjAwRTA2NkFCIC8qIFNvdXJjZVNwYW4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMzOEJCMkQ0MjdCNkI2NkMwMEUwNjZBQiAvKiBMZXhlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMzM4QkIyRDIyN0I2QjYzRjAwRTA2NkFCIC8qIFNvdXJjZVNwYW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMzOEJCMkNFMjdCNkI2MDIwMEUwNjZBQiAvKiBUb2tlbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUNFQkQ3RjgyNzE2QjM0NDAwQTUyNTREIC8qIFdHU0wuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKQEAgLTM1OSw2ICs1OTUsNyBAQAogCQkJaXNhID0gUEJYTmF0aXZlVGFy
Z2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFDRUJEN0VBMjcxNkFGQkEwMEE1MjU0
RCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiV2ViR1BV
IiAqLzsKIAkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTFDNTMxQTIzMjdCREREQjUwMENEMTI3RSAv
KiBTaGVsbFNjcmlwdCAqLywKIAkJCQkxQ0VCRDdERTI3MTZBRkJBMDBBNTI1NEQgLyogSGVhZGVy
cyAqLywKIAkJCQkxQ0VCRDdERjI3MTZBRkJBMDBBNTI1NEQgLyogU291cmNlcyAqLywKIAkJCQkx
Q0VCRDdFMDI3MTZBRkJBMDBBNTI1NEQgLyogRnJhbWV3b3JrcyAqLywKQEAgLTQ1MCw2ICs2ODcs
MTA1IEBACiAvKiBFbmQgUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTFDNTMxQTIzMjdCRERE
QjUwMENEMTI3RSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRo
cyA9ICgKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL1NpbmdsZUhlYWRlci9NYWtl
U2luZ2xlSGVhZGVyLnB5IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAv
Rm91bmRhdGlvbi9OU0FycmF5LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TQXV0b3JlbGVhc2VQb29sLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQnVuZGxlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0YS5ocHAiLAorCQkJCSIkKFNSQ1JPT1Qp
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGUuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGljdGlvbmFyeS5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0VudW1lcmF0b3IuaHBw
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFcnJvci5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0xvY2su
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOb3Rp
ZmljYXRpb24uaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNOdW1iZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNPYmpDUnVudGltZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU09iamVjdC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRh
bC1jcHAvRm91bmRhdGlvbi9OU1ByaXZhdGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQcm9jZXNzSW5mby5ocHAiLAorCQkJCSIkKFNSQ1JPT1Qp
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1JhbmdlLmhwcCIsCisJCQkJIiQoU1JDUk9P
VCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwIiwKKwkJCQkiJChT
UkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwIiwKKwkJCQkiJChT
UkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0
aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudC5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnRFbmNvZGVyLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNo
aXZlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0
Q29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEJsaXRQYXNzLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExCdWZmZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTENhcHR1cmVNYW5hZ2VyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExDYXB0dXJlU2NvcGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRCdWZmZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBwIiwKKwkJCQki
JChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVDb21tYW5kRW5jb2Rl
ci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0
ZVBhc3MuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENv
bXB1dGVQaXBlbGluZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMQ291bnRlcnMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTERlZmluZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTERlcHRoU3RlbmNpbC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMRGV2aWNlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExEcmF3YWJsZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMRHluYW1pY0xpYnJhcnkuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEV2ZW50LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExGZW5jZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAiLAorCQkJCSIkKFNSQ1JP
T1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkhhbmRsZS5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25M
b2cuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0
aW9uU3RpdGNoaW5nLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExIZWFkZXJCcmlkZ2UuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEhlYXAuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAiLAorCQkJCSIk
KFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGli
cmFyeS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlu
a2VkRnVuY3Rpb25zLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXBlbGluZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1Qp
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGl4ZWxGb3JtYXQuaHBwIiwKKwkJCQkiJChTUkNS
T09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFByaXZhdGUuaHBwIiwKKwkJCQkiJChTUkNS
T09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRlLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJDb21tYW5kRW5j
b2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVu
ZGVyUGFzcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
UmVuZGVyUGlwZWxpbmUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFJlc291cmNlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVQYXNzLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExTYW1wbGVyLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExTdGFnZUlucHV0T3V0cHV0RGVz
Y3JpcHRvci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
VGV4dHVyZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
VHlwZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZl
cnRleERlc2NyaXB0b3IuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NZXRhbC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRh
bC1jcHAvUXVhcnR6Q29yZS9DQURlZmluZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FNZXRhbERyYXdhYmxlLmhwcCIsCisJCQkJIiQoU1JDUk9P
VCkvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHAiLAorCQkJCSIkKFNS
Q1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcCIsCisJCQkp
OworCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlvdXRwdXRQYXRocyA9ICgK
KwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwuaHBwIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2Rp
ciAtcCAke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbFxuXG5jZCBXZWJHUFUvbWV0YWwtY3BwXG4uL1NpbmdsZUhlYWRlci9NYWtlU2luZ2xl
SGVhZGVyLnB5IC1vICR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01ldGFsLmhwcCBGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwIFF1YXJ0
ekNvcmUvUXVhcnR6Q29yZS5ocHAgTWV0YWwvTWV0YWwuaHBwXG4iOworCQl9OwogCQk2NTc3RkZD
ODI3NkFDQTA2MDAxMUFFQzggLyogQ3JlYXRlIFN5bWxpbmsgdG8gQWx0IFJvb3QgUGF0aCAqLyA9
IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDg7CkBAIC00OTQsNiArODMwLDcgQEAKIAkJCQkxQzVBQ0FDMDI3M0E0MjZEMDA5NUY4RDUg
LyogQ29tcHV0ZVBpcGVsaW5lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1QUNBQzEyNzNBNDI2
RDAwOTVGOEQ1IC8qIERldmljZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQTk0MjczQTQx
QzIwMDk1RjhENSAvKiBJbnN0YW5jZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNTMxQTI1MjdC
RERGNTUwMENEMTI3RSAvKiBNZXRhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0FFNTI3
M0E1NUREMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
QzVBQ0FCRDI3M0E0MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQzVBQ0FDQjI3M0E0MjZFMDA5NUY4RDUgLyogUXVldWUubW0gaW4gU291cmNlcyAqLywKQEAg
LTUxNSw4ICs4NTIsOCBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAogCQkJCTMzOEJCMkQ2MjdCNkI2ODcwMEUwNjZBQiAvKiBMZXhlci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQkxQ0VCRDgwMzI3MTZCRjgyMDBBNTI1NEQgLyogV0dTTC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzMzhCQjJEMDI3QjZCNjFCMDBFMDY2QUIgLyogVG9rZW4uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMUNFQkQ4MDMyNzE2QkY4MjAwQTUyNTREIC8qIFdHU0wuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9NZXRhbC5jcHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9NZXRhbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRmYjY0ZTEzYTI5ZjMy
ZjhmYTNkNTFiYmFkZDllOTVlZjNkYzQwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL01ldGFsLmNwcApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2RlZmluZSBOU19QUklWQVRFX0lNUExFTUVOVEFU
SU9OCisjZGVmaW5lIENBX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKyNkZWZpbmUgTVRMX1BSSVZB
VEVfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlIDxNZXRhbC9NZXRhbC5ocHA+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL2Nv
bmZpZy5oCmluZGV4IDhjMTI3YTk0MzQwYTdkN2FjMDI5OWJiZjQyN2ExMjc2ZTUxNTY3M2IuLjQ2
NWYxZjUzYWU0Nzg4OWRlMDg2YzkwNmM0NjAwYmZmMjUxZGM5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL2NvbmZpZy5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL2NvbmZp
Zy5oCkBAIC0yNSw4ICsyNSwyMSBAQAogCiAjaW5jbHVkZSAiRXhwb3J0TWFjcm9zLmgiCiAKK25h
bWVzcGFjZSBNVEwgeworY2xhc3MgRnVuY3Rpb247Cit9CisKK25hbWVzcGFjZSBOUyB7CitjbGFz
cyBTdHJpbmc7CitjbGFzcyBVUkw7Cit9CisKKyNpbmNsdWRlIDxNZXRhbC9NZXRhbC5ocHA+CisK
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiAjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5
cGUuaD4KIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDgyNTJlOWIxNjY0ZDliZDg2MTIx
NDRlNWJiMGM0YWU2NmUyODU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAKQEAgLTAsMCArMSw0NSBAQAor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUg
SW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNpbmNsdWRlICJOU0FycmF5LmhwcCIKKyNpbmNsdWRlICJOU0F1dG9yZWxlYXNl
UG9vbC5ocHAiCisjaW5jbHVkZSAiTlNCdW5kbGUuaHBwIgorI2luY2x1ZGUgIk5TRGF0YS5ocHAi
CisjaW5jbHVkZSAiTlNEYXRlLmhwcCIKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk5TRGljdGlvbmFyeS5ocHAiCisjaW5jbHVkZSAiTlNFbnVtZXJhdG9yLmhwcCIKKyNpbmNs
dWRlICJOU0Vycm9yLmhwcCIKKyNpbmNsdWRlICJOU0xvY2suaHBwIgorI2luY2x1ZGUgIk5TTm90
aWZpY2F0aW9uLmhwcCIKKyNpbmNsdWRlICJOU051bWJlci5ocHAiCisjaW5jbHVkZSAiTlNPYmpl
Y3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNQcm9jZXNzSW5m
by5ocHAiCisjaW5jbHVkZSAiTlNSYW5nZS5ocHAiCisjaW5jbHVkZSAiTlNTdHJpbmcuaHBwIgor
I2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorI2luY2x1ZGUgIk5TVVJMLmhwcCIKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0FycmF5LmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXJyYXkuaHBwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg3MzBkZjk5NDk2N2FmMjNmMjhkNWM3NDVmZGE0Y2FkOTcyMDQwYjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0FycmF5Lmhw
cApAQCAtMCwwICsxLDExNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0FycmF5LmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5j
bHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIEFycmF5IDogcHVibGljIENvcHlp
bmc8QXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIEFycmF5KiBhcnJheSgpOworICAgIHN0
YXRpYyBBcnJheSogYXJyYXkoY29uc3QgT2JqZWN0KiBwT2JqZWN0KTsKKyAgICBzdGF0aWMgQXJy
YXkqIGFycmF5KGNvbnN0IE9iamVjdCogY29uc3QqIHBPYmplY3RzLCBVSW50ZWdlciBjb3VudCk7
CisKKyAgICBzdGF0aWMgQXJyYXkqIGFsbG9jKCk7CisKKyAgICBBcnJheSogICAgICAgIGluaXQo
KTsKKyAgICBBcnJheSogICAgICAgIGluaXQoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMs
IFVJbnRlZ2VyIGNvdW50KTsKKyAgICBBcnJheSogICAgICAgIGluaXQoY29uc3QgY2xhc3MgQ29k
ZXIqIHBDb2Rlcik7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdCA9IE9iamVjdD4KKyAg
ICBfT2JqZWN0KiBvYmplY3QoVUludGVnZXIgaW5kZXgpIGNvbnN0OworICAgIFVJbnRlZ2VyIGNv
dW50KCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpBcnJheTo6YXJyYXkoKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4oX05TX1BSSVZBVEVfQ0xT
KE5TQXJyYXkpLCBfTlNfUFJJVkFURV9TRUwoYXJyYXkpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBO
Uzo6QXJyYXk6OmFycmF5KGNvbnN0IE9iamVjdCogcE9iamVjdCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KF9OU19QUklWQVRFX0NMUyhOU0FycmF5KSwgX05TX1BS
SVZBVEVfU0VMKGFycmF5V2l0aE9iamVjdF8pLCBwT2JqZWN0KTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5
KiBOUzo6QXJyYXk6OmFycmF5KGNvbnN0IE9iamVjdCogY29uc3QqIHBPYmplY3RzLCBVSW50ZWdl
ciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KF9OU19Q
UklWQVRFX0NMUyhOU0FycmF5KSwgX05TX1BSSVZBVEVfU0VMKGFycmF5V2l0aE9iamVjdHNfY291
bnRfKSwgcE9iamVjdHMsIGNvdW50KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBOUzo6QXJyYXk6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8QXJyYXk+KF9OU19QUklWQVRF
X0NMUyhOU0FycmF5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5Ojppbml0KCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxBcnJheT4oKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5
KiBOUzo6QXJyYXk6OmluaXQoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMsIFVJbnRlZ2Vy
IGNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGluaXRXaXRoT2JqZWN0c19jb3VudF8pLCBwT2JqZWN0cywgY291bnQp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpBcnJheTo6aW5pdChjb25zdCBjbGFzcyBDb2Rlciog
cENvZGVyKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQ29kZXJfKSwgcENvZGVyKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE5TOjpBcnJheTo6Y291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY291bnQpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRl
IDxjbGFzcyBfT2JqZWN0PgorX05TX0lOTElORSBfT2JqZWN0KiBOUzo6QXJyYXk6Om9iamVjdChV
SW50ZWdlciBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxf
T2JqZWN0Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhfKSwgaW5kZXgpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXV0b3Jl
bGVhc2VQb29sLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TQXV0b3JlbGVhc2VQb29sLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjM4M2E1NWZlMDYyYmUyNWFjODUw
OGZkZDZiNDk1ZTMyYjhkZjhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNBdXRvcmVsZWFzZVBvb2wuaHBwCkBAIC0wLDAgKzEs
ODMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIEZvdW5kYXRpb24vTlNBdXRvcmVsZWFzZVBvb2wuaHBwCisvLworLy8gQ29weXJpZ2h0IDIw
MjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVk
ZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNU
eXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIEF1dG9yZWxlYXNlUG9vbCA6IHB1YmxpYyBPYmpl
Y3QKK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgQXV0b3JlbGVhc2VQb29sKiBhbGxvYygpOworICAg
IEF1dG9yZWxlYXNlUG9vbCogICAgICAgIGluaXQoKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgIGRyYWluKCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBhZGRPYmplY3Qo
T2JqZWN0KiBwT2JqZWN0KTsKKworICAgIHN0YXRpYyB2b2lkICAgICAgICAgICAgIHNob3dQb29s
cygpOworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OkF1dG9yZWxlYXNlUG9vbCogTlM6OkF1dG9yZWxlYXNlUG9v
bDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxBdXRvcmVsZWFzZVBv
b2w+KF9OU19QUklWQVRFX0NMUyhOU0F1dG9yZWxlYXNlUG9vbCkpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXV0
b3JlbGVhc2VQb29sKiBOUzo6QXV0b3JlbGVhc2VQb29sOjppbml0KCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6aW5pdDxBdXRvcmVsZWFzZVBvb2w+KCk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkF1
dG9yZWxlYXNlUG9vbDo6ZHJhaW4oKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGRyYWluKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkF1dG9yZWxl
YXNlUG9vbDo6YWRkT2JqZWN0KE9iamVjdCogcE9iamVjdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhZGRPYmplY3RfKSwgcE9iamVjdCk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIHZvaWQgTlM6OkF1dG9yZWxlYXNlUG9vbDo6c2hvd1Bvb2xzKCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KF9OU19QUklWQVRFX0NMUyhOU0F1dG9yZWxlYXNlUG9v
bCksIF9OU19QUklWQVRFX1NFTChzaG93UG9vbHMpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0J1bmRsZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0J1bmRsZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU4YzUz
OTViYjAxMTZiZjIxMTkwY2UxNzNmMDEwNjg4ZWRlOTI3ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQnVuZGxlLmhwcApAQCAt
MCwwICsxLDM3NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gRm91bmRhdGlvbi9OU0J1bmRsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAy
MC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRl
ICJOU05vdGlmaWNhdGlvbi5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUg
Ik5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitfTlNfQ09OU1QoTm90aWZpY2F0aW9uTmFtZSwgQnVu
ZGxlRGlkTG9hZE5vdGlmaWNhdGlvbik7CitfTlNfQ09OU1QoTm90aWZpY2F0aW9uTmFtZSwgQnVu
ZGxlUmVzb3VyY2VSZXF1ZXN0TG93RGlza1NwYWNlTm90aWZpY2F0aW9uKTsKKworY2xhc3MgU3Ry
aW5nKiBMb2NhbGl6ZWRTdHJpbmcoY29uc3QgU3RyaW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqKTsK
K2NsYXNzIFN0cmluZyogTG9jYWxpemVkU3RyaW5nRnJvbVRhYmxlKGNvbnN0IFN0cmluZyogcEtl
eSwgY29uc3QgU3RyaW5nKiBwVGJsLCBjb25zdCBTdHJpbmcqKTsKK2NsYXNzIFN0cmluZyogTG9j
YWxpemVkU3RyaW5nRnJvbVRhYmxlSW5CdW5kbGUoY29uc3QgU3RyaW5nKiBwS2V5LCBjb25zdCBT
dHJpbmcqIHBUYmwsIGNvbnN0IGNsYXNzIEJ1bmRsZSogcEJkbGUsIGNvbnN0IFN0cmluZyopOwor
Y2xhc3MgU3RyaW5nKiBMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGNvbnN0IFN0cmlu
ZyogcEtleSwgY29uc3QgU3RyaW5nKiBwVGJsLCBjb25zdCBjbGFzcyBCdW5kbGUqIHBCZGxlLCBj
b25zdCBTdHJpbmcqIHBWYWwsIGNvbnN0IFN0cmluZyopOworCitjbGFzcyBCdW5kbGUgOiBwdWJs
aWMgUmVmZXJlbmNpbmc8QnVuZGxlPgoreworcHVibGljOgorICAgIHN0YXRpYyBCdW5kbGUqICAg
IG1haW5CdW5kbGUoKTsKKworICAgIHN0YXRpYyBCdW5kbGUqICAgIGJ1bmRsZShjb25zdCBjbGFz
cyBTdHJpbmcqIHBQYXRoKTsKKyAgICBzdGF0aWMgQnVuZGxlKiAgICBidW5kbGUoY29uc3QgY2xh
c3MgVVJMKiBwVVJMKTsKKworICAgIHN0YXRpYyBCdW5kbGUqICAgIGFsbG9jKCk7CisKKyAgICBC
dW5kbGUqICAgICAgICAgICBpbml0KGNvbnN0IGNsYXNzIFN0cmluZyogcFBhdGgpOworICAgIEJ1
bmRsZSogICAgICAgICAgIGluaXQoY29uc3QgY2xhc3MgVVJMKiBwVVJMKTsKKworICAgIGNsYXNz
IEFycmF5KiAgICAgIGFsbEJ1bmRsZXMoKSBjb25zdDsKKyAgICBjbGFzcyBBcnJheSogICAgICBh
bGxGcmFtZXdvcmtzKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICBsb2FkKCk7Cisg
ICAgYm9vbCAgICAgICAgICAgICAgdW5sb2FkKCk7CisKKyAgICBib29sICAgICAgICAgICAgICBp
c0xvYWRlZCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgcHJlZmxpZ2h0QW5kUmV0
dXJuRXJyb3IoY2xhc3MgRXJyb3IqKiBwRXJyb3IpIGNvbnN0OworICAgIGJvb2wgICAgICAgICAg
ICAgIGxvYWRBbmRSZXR1cm5FcnJvcihjbGFzcyBFcnJvcioqIHBFcnJvcik7CisKKyAgICBjbGFz
cyBVUkwqICAgICAgICBidW5kbGVVUkwoKSBjb25zdDsKKyAgICBjbGFzcyBVUkwqICAgICAgICBy
ZXNvdXJjZVVSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAgICAgIGV4ZWN1dGFibGVVUkwo
KSBjb25zdDsKKyAgICBjbGFzcyBVUkwqICAgICAgICBVUkxGb3JBdXhpbGlhcnlFeGVjdXRhYmxl
KGNvbnN0IGNsYXNzIFN0cmluZyogcEV4ZWN1dGFibGVOYW1lKSBjb25zdDsKKworICAgIGNsYXNz
IFVSTCogICAgICAgIHByaXZhdGVGcmFtZXdvcmtzVVJMKCkgY29uc3Q7CisgICAgY2xhc3MgVVJM
KiAgICAgICAgc2hhcmVkRnJhbWV3b3Jrc1VSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAg
ICAgIHNoYXJlZFN1cHBvcnRVUkwoKSBjb25zdDsKKyAgICBjbGFzcyBVUkwqICAgICAgICBidWls
dEluUGx1Z0luc1VSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAgICAgIGFwcFN0b3JlUmVj
ZWlwdFVSTCgpIGNvbnN0OworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgYnVuZGxlUGF0aCgpIGNv
bnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIHJlc291cmNlUGF0aCgpIGNvbnN0OworICAgIGNs
YXNzIFN0cmluZyogICAgIGV4ZWN1dGFibGVQYXRoKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5n
KiAgICAgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGUoY29uc3QgY2xhc3MgU3RyaW5nKiBwRXhl
Y3V0YWJsZU5hbWUpIGNvbnN0OworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgcHJpdmF0ZUZyYW1l
d29ya3NQYXRoKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgc2hhcmVkRnJhbWV3b3Jr
c1BhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICBzaGFyZWRTdXBwb3J0UGF0aCgp
IGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIGJ1aWx0SW5QbHVnSW5zUGF0aCgpIGNvbnN0
OworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgYnVuZGxlSWRlbnRpZmllcigpIGNvbnN0OworICAg
IGNsYXNzIERpY3Rpb25hcnkqIGluZm9EaWN0aW9uYXJ5KCkgY29uc3Q7CisgICAgY2xhc3MgRGlj
dGlvbmFyeSogbG9jYWxpemVkSW5mb0RpY3Rpb25hcnkoKSBjb25zdDsKKyAgICBjbGFzcyBPYmpl
Y3QqICAgICBvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleShjb25zdCBjbGFzcyBTdHJpbmcqIHBL
ZXkpOworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNsYXNz
IFN0cmluZyogcEtleSwgY29uc3QgY2xhc3MgU3RyaW5nKiBwVmFsdWUgPSBudWxscHRyLCBjb25z
dCBjbGFzcyBTdHJpbmcqIHBUYWJsZU5hbWUgPSBudWxscHRyKSBjb25zdDsKK307Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfUFJJVkFU
RV9ERUZfQ09OU1QoTlM6Ok5vdGlmaWNhdGlvbk5hbWUsIEJ1bmRsZURpZExvYWROb3RpZmljYXRp
b24pOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpOb3RpZmljYXRpb25OYW1lLCBCdW5kbGVS
ZXNvdXJjZVJlcXVlc3RMb3dEaXNrU3BhY2VOb3RpZmljYXRpb24pOworCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5n
KiBOUzo6TG9jYWxpemVkU3RyaW5nKGNvbnN0IFN0cmluZyogcEtleSwgY29uc3QgU3RyaW5nKikK
K3sKKyAgICByZXR1cm4gQnVuZGxlOjptYWluQnVuZGxlKCktPmxvY2FsaXplZFN0cmluZyhwS2V5
LCBudWxscHRyLCBudWxscHRyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkxvY2FsaXplZFN0
cmluZ0Zyb21UYWJsZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwgY29u
c3QgU3RyaW5nKikKK3sKKyAgICByZXR1cm4gQnVuZGxlOjptYWluQnVuZGxlKCktPmxvY2FsaXpl
ZFN0cmluZyhwS2V5LCBudWxscHRyLCBwVGJsKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6Okxv
Y2FsaXplZFN0cmluZ0Zyb21UYWJsZUluQnVuZGxlKGNvbnN0IFN0cmluZyogcEtleSwgY29uc3Qg
U3RyaW5nKiBwVGJsLCBjb25zdCBCdW5kbGUqIHBCZGwsIGNvbnN0IFN0cmluZyopCit7CisgICAg
cmV0dXJuIHBCZGwtPmxvY2FsaXplZFN0cmluZyhwS2V5LCBudWxscHRyLCBwVGJsKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlN0cmluZyogTlM6OkxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoY29uc3Qg
U3RyaW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNvbnN0IEJ1bmRsZSogcEJkbCwgY29u
c3QgU3RyaW5nKiBwVmFsLCBjb25zdCBTdHJpbmcqKQoreworICAgIHJldHVybiBwQmRsLT5sb2Nh
bGl6ZWRTdHJpbmcocEtleSwgcFZhbCwgcFRibCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpCdW5kbGUqIE5TOjpC
dW5kbGU6Om1haW5CdW5kbGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1
bmRsZSo+KF9OU19QUklWQVRFX0NMUyhOU0J1bmRsZSksIF9OU19QUklWQVRFX1NFTChtYWluQnVu
ZGxlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpCdW5kbGUqIE5TOjpCdW5kbGU6OmJ1bmRsZShjb25zdCBjbGFz
cyBTdHJpbmcqIHBQYXRoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1bmRs
ZSo+KF9OU19QUklWQVRFX0NMUyhOU0J1bmRsZSksIF9OU19QUklWQVRFX1NFTChidW5kbGVXaXRo
UGF0aF8pLCBwUGF0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpCdW5kbGUqIE5TOjpCdW5kbGU6OmJ1bmRsZShj
b25zdCBjbGFzcyBVUkwqIHBVUkwpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
QnVuZGxlKj4oX05TX1BSSVZBVEVfQ0xTKE5TQnVuZGxlKSwgX05TX1BSSVZBVEVfU0VMKGJ1bmRs
ZVdpdGhVUkxfKSwgcFVSTCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpCdW5kbGUqIE5TOjpCdW5kbGU6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5kbGUqPihfTlNfUFJJVkFU
RV9DTFMoTlNCdW5kbGUpLCBfTlNfUFJJVkFURV9TRUwoYWxsb2MpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkJ1
bmRsZSogTlM6OkJ1bmRsZTo6aW5pdChjb25zdCBTdHJpbmcqIHBQYXRoKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1bmRsZSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0
V2l0aFBhdGhfKSwgcFBhdGgpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QnVuZGxlKiBOUzo6QnVuZGxlOjppbml0
KGNvbnN0IFVSTCogcFVSTCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5k
bGUqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhVUkxfKSwgcFVSTCk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpBcnJheSogTlM6OkJ1bmRsZTo6YWxsQnVuZGxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYWxsQnVu
ZGxlcykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpCdW5kbGU6OmFsbEZyYW1ld29ya3MoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGFsbEZyYW1ld29ya3MpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6QnVuZGxlOjps
b2FkKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwobG9hZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpCdW5kbGU6OnVubG9hZCgpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKHVubG9hZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpCdW5kbGU6OmlzTG9hZGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwoaXNMb2FkZWQpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6QnVuZGxlOjpwcmVmbGlnaHRBbmRS
ZXR1cm5FcnJvcihFcnJvcioqIHBFcnJvcikgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocHJlZmxpZ2h0QW5kUmV0dXJu
RXJyb3JfKSwgcEVycm9yKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6QnVuZGxlOjpsb2FkQW5kUmV0dXJu
RXJyb3IoRXJyb3IqKiBwRXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvYWRBbmRSZXR1cm5FcnJvcl8pLCBwRXJyb3Ip
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpidW5kbGVVUkwoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChi
dW5kbGVVUkwpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6cmVzb3VyY2VVUkwoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChyZXNvdXJjZVVSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpl
eGVjdXRhYmxlVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxV
UkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZXhlY3V0YWJsZVVSTCkpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
VVJMKiBOUzo6QnVuZGxlOjpVUkxGb3JBdXhpbGlhcnlFeGVjdXRhYmxlKGNvbnN0IFN0cmluZyog
cEV4ZWN1dGFibGVOYW1lKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChVUkxGb3JBdXhpbGlhcnlFeGVjdXRhYmxlXyks
IHBFeGVjdXRhYmxlTmFtZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OnByaXZhdGVG
cmFtZXdvcmtzVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxV
UkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocHJpdmF0ZUZyYW1ld29ya3NVUkwpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6c2hhcmVkRnJhbWV3b3Jrc1VSTCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KHNoYXJlZEZyYW1ld29ya3NVUkwpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6c2hh
cmVkU3VwcG9ydFVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHNoYXJlZFN1cHBvcnRVUkwpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlVSTCogTlM6OkJ1bmRsZTo6YnVpbHRJblBsdWdJbnNVUkwoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChidWls
dEluUGx1Z0luc1VSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjphcHBTdG9yZVJl
Y2VpcHRVUkwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChhcHBTdG9yZVJlY2VpcHRVUkwpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OlN0cmluZyogTlM6OkJ1bmRsZTo6YnVuZGxlUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGJ1bmRsZVBh
dGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6cmVzb3VyY2VQYXRoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwocmVzb3VyY2VQYXRoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5k
bGU6OmV4ZWN1dGFibGVQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZXhlY3V0YWJsZVBhdGgpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6cGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGUo
Y29uc3QgU3RyaW5nKiBwRXhlY3V0YWJsZU5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHBhdGhGb3JBdXhp
bGlhcnlFeGVjdXRhYmxlXyksIHBFeGVjdXRhYmxlTmFtZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcq
IE5TOjpCdW5kbGU6OnByaXZhdGVGcmFtZXdvcmtzUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHByaXZh
dGVGcmFtZXdvcmtzUGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpzaGFy
ZWRGcmFtZXdvcmtzUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHNoYXJlZEZyYW1ld29ya3NQYXRoKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OnNoYXJlZFN1cHBvcnRQYXRoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwoc2hhcmVkU3VwcG9ydFBhdGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6
OkJ1bmRsZTo6YnVpbHRJblBsdWdJbnNQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnVpbHRJblBsdWdJ
bnNQYXRoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OmJ1bmRsZUlkZW50aWZp
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChidW5kbGVJZGVudGlmaWVyKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0
aW9uYXJ5KiBOUzo6QnVuZGxlOjppbmZvRGljdGlvbmFyeSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChp
bmZvRGljdGlvbmFyeSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkJ1bmRsZTo6bG9j
YWxpemVkSW5mb0RpY3Rpb25hcnkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPERpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkSW5mb0Rp
Y3Rpb25hcnkpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok9iamVjdCogTlM6OkJ1bmRsZTo6b2JqZWN0Rm9ySW5m
b0RpY3Rpb25hcnlLZXkoY29uc3QgU3RyaW5nKiBwS2V5KQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE9iamVjdCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChvYmplY3RGb3JJbmZv
RGljdGlvbmFyeUtleV8pLCBwS2V5KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6
bG9jYWxpemVkU3RyaW5nKGNvbnN0IFN0cmluZyogcEtleSwgY29uc3QgU3RyaW5nKiBwVmFsdWUg
LyogPSBudWxscHRyICovLCBjb25zdCBTdHJpbmcqIHBUYWJsZU5hbWUgLyogPSBudWxscHRyICov
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChsb2NhbGl6ZWRTdHJpbmdGb3JLZXlfdmFsdWVfdGFibGVfKSwgcEtl
eSwgcFZhbHVlLCBwVGFibGVOYW1lKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvRm91bmRhdGlvbi9OU0RhdGEuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNEYXRhLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzY5OWU0NzQ0ZjgxM2Q2ZWZk
Y2Q1ZjZiNzQ2NzNlZmVjYTAzZTdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRhLmhwcApAQCAtMCwwICsxLDU0IEBACisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3Vu
ZGF0aW9uL05TRGF0YS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNl
IE5TCit7CitjbGFzcyBEYXRhIDogcHVibGljIENvcHlpbmc8RGF0YT4KK3sKK3B1YmxpYzoKKyAg
ICB2b2lkKiAgICBtdXRhYmxlQnl0ZXMoKSBjb25zdDsKKyAgICBVSW50ZWdlciBsZW5ndGgoKSBj
b25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIHZvaWQqIE5TOjpEYXRhOjptdXRhYmxlQnl0ZXMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQqPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwobXV0YWJsZUJ5dGVzKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6RGF0YTo6bGVu
Z3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGxlbmd0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0ZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlNmM4M2FmN2M1
YzNhZjc4NzMyNDVjOTZlMDM3MDU4NjViOTY2MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGUuaHBwCkBAIC0wLDAgKzEs
NDAgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIEZvdW5kYXRpb24vTlNEYXRlLmhwcAorLy8KKy8vIFNlZSBMSUNFTlNFLnR4dCBmb3IgdGhp
cyBwcm9qZWN0IGxpY2Vuc2luZyBpbmZvcm1hdGlvbi4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVz
LmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhwcCIK
KyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworCit1c2luZyBUaW1lSW50ZXJ2YWwg
PSBkb3VibGU7CisKK2NsYXNzIERhdGUgOiBwdWJsaWMgQ29weWluZzxEYXRlPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBEYXRlKiBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93KFRpbWVJbnRl
cnZhbCBzZWNzKTsKK307CisKK30gLy8gTlMKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRhdGUqIE5TOjpEYXRlOjpkYXRl
V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93KE5TOjpUaW1lSW50ZXJ2YWwgc2VjcykKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkRhdGUqPihfTlNfUFJJVkFURV9DTFMo
TlNEYXRlKSwgX05TX1BSSVZBVEVfU0VMKGRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3dfKSwg
c2Vjcyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHAgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RlZmluZXMuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRj
OTY5ODljYjVkYTVmYTEwYzk4YTMyOWMxMzNiMDdhZTgyZGExYWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RlZmluZXMuaHBw
CkBAIC0wLDAgKzEsNDEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgX05TX1dFQUtfSU1QT1JUIF9fYXR0
cmlidXRlX18oKHdlYWtfaW1wb3J0KSkKKyNkZWZpbmUgX05TX0VYUE9SVCBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCisjZGVmaW5lIF9OU19FWFRFUk4gZXh0ZXJuICJDIiBf
TlNfRVhQT1JUCisjZGVmaW5lIF9OU19JTkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5
c19pbmxpbmUpKQorI2RlZmluZSBfTlNfUEFDS0VEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpCisK
KyNkZWZpbmUgX05TX0NPTlNUKHR5cGUsIG5hbWUpIF9OU19FWFRFUk4gdHlwZSBjb25zdCBuYW1l
OworI2RlZmluZSBfTlNfRU5VTSh0eXBlLCBuYW1lKSBlbnVtIG5hbWUgOiB0eXBlCisjZGVmaW5l
IF9OU19PUFRJT05TKHR5cGUsIG5hbWUpIFwKKyAgICB1c2luZyBuYW1lID0gdHlwZTsgICAgICAg
ICAgXAorICAgIGVudW0gOiBuYW1lCisKKyNkZWZpbmUgX05TX0NBU1RfVE9fVUlOVCh2YWx1ZSkg
c3RhdGljX2Nhc3Q8TlM6OlVJbnRlZ2VyPih2YWx1ZSkKKyNkZWZpbmUgX05TX1ZBTElEQVRFX1NJ
WkUobnMsIG5hbWUpIHN0YXRpY19hc3NlcnQoc2l6ZW9mKG5zOjpuYW1lKSA9PSBzaXplb2YobnMj
I25hbWUpLCAic2l6ZSBtaXNtYXRjaCAiICNucyAiOjoiICNuYW1lKQorI2RlZmluZSBfTlNfVkFM
SURBVEVfRU5VTShucywgbmFtZSkgc3RhdGljX2Fzc2VydChfTlNfQ0FTVF9UT19VSU5UKG5zOjpu
YW1lKSA9PSBfTlNfQ0FTVF9UT19VSU5UKG5zIyNuYW1lKSwgInZhbHVlIG1pc21hdGNoICIgI25z
ICI6OiIgI25hbWUpCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNEaWN0aW9uYXJ5LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3Vu
ZGF0aW9uL05TRGljdGlvbmFyeS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NiZTJiZDgzZDNkNDFlNTVlYmI2
OTUxNjFmOTBlMTA4NWI1Mzk0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGljdGlvbmFyeS5ocHAKQEAgLTAsMCArMSwxMjgg
QEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8v
IEZvdW5kYXRpb24vTlNEaWN0aW9uYXJ5LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0VudW1lcmF0b3IuaHBwIgorI2luY2x1ZGUgIk5T
T2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworY2xhc3MgRGlj
dGlvbmFyeSA6IHB1YmxpYyBOUzo6Q29weWluZzxEaWN0aW9uYXJ5PgoreworcHVibGljOgorICAg
IHN0YXRpYyBEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5KCk7CisgICAgc3RhdGljIERpY3Rpb25hcnkq
IGRpY3Rpb25hcnkoY29uc3QgT2JqZWN0KiBwT2JqZWN0LCBjb25zdCBPYmplY3QqIHBLZXkpOwor
ICAgIHN0YXRpYyBEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5KGNvbnN0IE9iamVjdCogY29uc3QqIHBP
YmplY3RzLCBjb25zdCBPYmplY3QqIGNvbnN0KiBwS2V5cywgVUludGVnZXIgY291bnQpOworCisg
ICAgc3RhdGljIERpY3Rpb25hcnkqIGFsbG9jKCk7CisKKyAgICBEaWN0aW9uYXJ5KiAgICAgICAg
aW5pdCgpOworICAgIERpY3Rpb25hcnkqICAgICAgICBpbml0KGNvbnN0IE9iamVjdCogY29uc3Qq
IHBPYmplY3RzLCBjb25zdCBPYmplY3QqIGNvbnN0KiBwS2V5cywgVUludGVnZXIgY291bnQpOwor
ICAgIERpY3Rpb25hcnkqICAgICAgICBpbml0KGNvbnN0IGNsYXNzIENvZGVyKiBwQ29kZXIpOwor
CisgICAgdGVtcGxhdGUgPGNsYXNzIF9LZXlUeXBlID0gT2JqZWN0PgorICAgIEVudW1lcmF0b3I8
X0tleVR5cGU+KiBrZXlFbnVtZXJhdG9yKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
X09iamVjdCA9IE9iamVjdD4KKyAgICBfT2JqZWN0KiBvYmplY3QoY29uc3QgT2JqZWN0KiBwS2V5
KSBjb25zdDsKKyAgICBVSW50ZWdlciBjb3VudCgpIGNvbnN0OworfTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRp
Y3Rpb25hcnkqIE5TOjpEaWN0aW9uYXJ5OjpkaWN0aW9uYXJ5KCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4oX05TX1BSSVZBVEVfQ0xTKE5TRGljdGlvbmFy
eSksIF9OU19QUklWQVRFX1NFTChkaWN0aW9uYXJ5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5
KiBOUzo6RGljdGlvbmFyeTo6ZGljdGlvbmFyeShjb25zdCBPYmplY3QqIHBPYmplY3QsIGNvbnN0
IE9iamVjdCogcEtleSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9u
YXJ5Kj4oX05TX1BSSVZBVEVfQ0xTKE5TRGljdGlvbmFyeSksIF9OU19QUklWQVRFX1NFTChkaWN0
aW9uYXJ5V2l0aE9iamVjdF9mb3JLZXlfKSwgcE9iamVjdCwgcEtleSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpE
aWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6ZGljdGlvbmFyeShjb25zdCBPYmplY3QqIGNvbnN0
KiBwT2JqZWN0cywgY29uc3QgT2JqZWN0KiBjb25zdCogcEtleXMsIFVJbnRlZ2VyIGNvdW50KQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPihfTlNfUFJJVkFU
RV9DTFMoTlNEaWN0aW9uYXJ5KSwgX05TX1BSSVZBVEVfU0VMKGRpY3Rpb25hcnlXaXRoT2JqZWN0
c19mb3JLZXlzX2NvdW50XyksCisgICAgICAgIHBPYmplY3RzLCBwS2V5cywgY291bnQpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8RGljdGlvbmFyeT4oX05TX1BSSVZBVEVfQ0xTKE5TRGljdGlv
bmFyeSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6OmluaXQoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PERpY3Rpb25hcnk+KCk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6aW5pdChjb25zdCBPYmplY3QqIGNvbnN0KiBw
T2JqZWN0cywgY29uc3QgT2JqZWN0KiBjb25zdCogcEtleXMsIFVJbnRlZ2VyIGNvdW50KQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJ
VkFURV9TRUwoaW5pdFdpdGhPYmplY3RzX2ZvcktleXNfY291bnRfKSwgcE9iamVjdHMsIHBLZXlz
LCBjb3VudCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6aW5pdChj
b25zdCBjbGFzcyBDb2RlciogcENvZGVyKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPERpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhDb2Rlcl8pLCBw
Q29kZXIpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKwordGVtcGxhdGUgPGNsYXNzIF9LZXlUeXBlPgorX05TX0lOTElORSBOUzo6RW51bWVyYXRv
cjxfS2V5VHlwZT4qIE5TOjpEaWN0aW9uYXJ5OjprZXlFbnVtZXJhdG9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxFbnVtZXJhdG9yPF9LZXlUeXBlPio+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChrZXlFbnVtZXJhdG9yKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdD4K
K19OU19JTkxJTkUgX09iamVjdCogTlM6OkRpY3Rpb25hcnk6Om9iamVjdChjb25zdCBPYmplY3Qq
IHBLZXkpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8X09iamVjdCo+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChvYmplY3RGb3JLZXlfKSwgcEtleSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpVSW50ZWdlciBOUzo6RGljdGlvbmFyeTo6Y291bnQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY291bnQp
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vu
dW1lcmF0b3IuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNFbnVtZXJhdG9yLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTU5NmMwNGRkYWZhODAxZmFlYjUxYzc4NjJj
ZWQ4MzBkMDEyNmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcApAQCAtMCwwICsxLDc4IEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0
aW9uL05TRW51bWVyYXRvci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNw
YWNlIE5TCit7CitzdHJ1Y3QgRmFzdEVudW1lcmF0aW9uU3RhdGUKK3sKKyAgICB1bnNpZ25lZCBs
b25nICBzdGF0ZTsKKyAgICBPYmplY3QqKiAgICAgICBpdGVtc1B0cjsKKyAgICB1bnNpZ25lZCBs
b25nKiBtdXRhdGlvbnNQdHI7CisgICAgdW5zaWduZWQgbG9uZyAgZXh0cmFbNV07Cit9IF9OU19Q
QUNLRUQ7CisKK2NsYXNzIEZhc3RFbnVtZXJhdGlvbiA6IHB1YmxpYyBSZWZlcmVuY2luZzxGYXN0
RW51bWVyYXRpb24+Cit7CitwdWJsaWM6CisgICAgTlM6OlVJbnRlZ2VyIGNvdW50QnlFbnVtZXJh
dGluZyhGYXN0RW51bWVyYXRpb25TdGF0ZSogcFN0YXRlLCBPYmplY3QqKiBwQnVmZmVyLCBOUzo6
VUludGVnZXIgbGVuKTsKK307CisKK3RlbXBsYXRlIDxjbGFzcyBfT2JqZWN0VHlwZT4KK2NsYXNz
IEVudW1lcmF0b3IgOiBwdWJsaWMgUmVmZXJlbmNpbmc8RW51bWVyYXRvcjxfT2JqZWN0VHlwZT4s
IEZhc3RFbnVtZXJhdGlvbj4KK3sKK3B1YmxpYzoKKyAgICBfT2JqZWN0VHlwZSogbmV4dE9iamVj
dCgpOworICAgIGNsYXNzIEFycmF5KiBhbGxPYmplY3RzKCk7Cit9OworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUlu
dGVnZXIgTlM6OkZhc3RFbnVtZXJhdGlvbjo6Y291bnRCeUVudW1lcmF0aW5nKEZhc3RFbnVtZXJh
dGlvblN0YXRlKiBwU3RhdGUsIE9iamVjdCoqIHBCdWZmZXIsIE5TOjpVSW50ZWdlciBsZW4pCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklW
QVRFX1NFTChjb3VudEJ5RW51bWVyYXRpbmdXaXRoU3RhdGVfb2JqZWN0c19jb3VudF8pLCBwU3Rh
dGUsIHBCdWZmZXIsIGxlbik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdFR5cGU+CitfTlNfSU5MSU5F
IF9PYmplY3RUeXBlKiBOUzo6RW51bWVyYXRvcjxfT2JqZWN0VHlwZT46Om5leHRPYmplY3QoKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPF9PYmplY3RUeXBlKj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKG5leHRPYmplY3QpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfT2JqZWN0VHlwZT4KK19O
U19JTkxJTkUgTlM6OkFycmF5KiBOUzo6RW51bWVyYXRvcjxfT2JqZWN0VHlwZT46OmFsbE9iamVj
dHMoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGFsbE9iamVjdHMpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vycm9yLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlYmY5ODE4YWM3Yzg4
YTFlNWJkZTYzZWZkZDExNjBjMmQ0YTQxNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vycm9yLmhwcApAQCAtMCwwICsxLDE3
MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwor
Ly8gRm91bmRhdGlvbi9OU0Vycm9yLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0
LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNw
YWNlIE5TCit7Cit1c2luZyBFcnJvckRvbWFpbiA9IGNsYXNzIFN0cmluZyo7CisKK19OU19DT05T
VChFcnJvckRvbWFpbiwgQ29jb2FFcnJvckRvbWFpbik7CitfTlNfQ09OU1QoRXJyb3JEb21haW4s
IFBPU0lYRXJyb3JEb21haW4pOworX05TX0NPTlNUKEVycm9yRG9tYWluLCBPU1N0YXR1c0Vycm9y
RG9tYWluKTsKK19OU19DT05TVChFcnJvckRvbWFpbiwgTWFjaEVycm9yRG9tYWluKTsKKwordXNp
bmcgRXJyb3JVc2VySW5mb0tleSA9IGNsYXNzIFN0cmluZyo7CisKK19OU19DT05TVChFcnJvclVz
ZXJJbmZvS2V5LCBVbmRlcmx5aW5nRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9L
ZXksIExvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5
LCBMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlcklu
Zm9LZXksIExvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbkVycm9yS2V5KTsKK19OU19DT05TVChF
cnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnNFcnJvcktleSk7CitfTlNf
Q09OU1QoRXJyb3JVc2VySW5mb0tleSwgUmVjb3ZlcnlBdHRlbXB0ZXJFcnJvcktleSk7CitfTlNf
Q09OU1QoRXJyb3JVc2VySW5mb0tleSwgSGVscEFuY2hvckVycm9yS2V5KTsKK19OU19DT05TVChF
cnJvclVzZXJJbmZvS2V5LCBEZWJ1Z0Rlc2NyaXB0aW9uRXJyb3JLZXkpOworX05TX0NPTlNUKEVy
cm9yVXNlckluZm9LZXksIExvY2FsaXplZEZhaWx1cmVFcnJvcktleSk7CitfTlNfQ09OU1QoRXJy
b3JVc2VySW5mb0tleSwgU3RyaW5nRW5jb2RpbmdFcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JV
c2VySW5mb0tleSwgVVJMRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIEZp
bGVQYXRoRXJyb3JLZXkpOworCitjbGFzcyBFcnJvciA6IHB1YmxpYyBDb3B5aW5nPEVycm9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBFcnJvciogICAgIGVycm9yKEVycm9yRG9tYWluIGRvbWFp
biwgSW50ZWdlciBjb2RlLCBjbGFzcyBEaWN0aW9uYXJ5KiBwRGljdGlvbmFyeSk7CisKKyAgICBz
dGF0aWMgRXJyb3IqICAgICBhbGxvYygpOworICAgIEVycm9yKiAgICAgICAgICAgIGluaXQoKTsK
KyAgICBFcnJvciogICAgICAgICAgICBpbml0KEVycm9yRG9tYWluIGRvbWFpbiwgSW50ZWdlciBj
b2RlLCBjbGFzcyBEaWN0aW9uYXJ5KiBwRGljdGlvbmFyeSk7CisKKyAgICBJbnRlZ2VyICAgICAg
ICAgICBjb2RlKCkgY29uc3Q7CisgICAgRXJyb3JEb21haW4gICAgICAgZG9tYWluKCkgY29uc3Q7
CisgICAgY2xhc3MgRGljdGlvbmFyeSogdXNlckluZm8oKSBjb25zdDsKKworICAgIGNsYXNzIFN0
cmluZyogICAgIGxvY2FsaXplZERlc2NyaXB0aW9uKCkgY29uc3Q7CisgICAgY2xhc3MgQXJyYXkq
ICAgICAgbG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5n
KiAgICAgbG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uKCkgY29uc3Q7CisgICAgY2xhc3MgU3Ry
aW5nKiAgICAgbG9jYWxpemVkRmFpbHVyZVJlYXNvbigpIGNvbnN0OworfTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19QUklWQVRFX0RF
Rl9DT05TVChOUzo6RXJyb3JEb21haW4sIENvY29hRXJyb3JEb21haW4pOworX05TX1BSSVZBVEVf
REVGX0NPTlNUKE5TOjpFcnJvckRvbWFpbiwgUE9TSVhFcnJvckRvbWFpbik7CitfTlNfUFJJVkFU
RV9ERUZfQ09OU1QoTlM6OkVycm9yRG9tYWluLCBPU1N0YXR1c0Vycm9yRG9tYWluKTsKK19OU19Q
UklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JEb21haW4sIE1hY2hFcnJvckRvbWFpbik7CisKK19O
U19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgVW5kZXJseWluZ0Vycm9y
S2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgTG9jYWxp
emVkRGVzY3JpcHRpb25LZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJ
bmZvS2V5LCBMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVG
X0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25F
cnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIExv
Y2FsaXplZFJlY292ZXJ5T3B0aW9uc0Vycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChO
Uzo6RXJyb3JVc2VySW5mb0tleSwgUmVjb3ZlcnlBdHRlbXB0ZXJFcnJvcktleSk7CitfTlNfUFJJ
VkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIEhlbHBBbmNob3JFcnJvcktleSk7
CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIERlYnVnRGVzY3Jp
cHRpb25FcnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9L
ZXksIExvY2FsaXplZEZhaWx1cmVFcnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6
OkVycm9yVXNlckluZm9LZXksIFN0cmluZ0VuY29kaW5nRXJyb3JLZXkpOworX05TX1BSSVZBVEVf
REVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBVUkxFcnJvcktleSk7CitfTlNfUFJJVkFU
RV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIEZpbGVQYXRoRXJyb3JLZXkpOworCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6RXJyb3IqIE5TOjpFcnJvcjo6ZXJyb3IoRXJyb3JEb21haW4gZG9tYWluLCBJbnRlZ2Vy
IGNvZGUsIGNsYXNzIERpY3Rpb25hcnkqIHBEaWN0aW9uYXJ5KQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPEVycm9yKj4oX05TX1BSSVZBVEVfQ0xTKE5TRXJyb3IpLCBfTlNfUFJJ
VkFURV9TRUwoZXJyb3JXaXRoRG9tYWluX2NvZGVfdXNlckluZm9fKSwgZG9tYWluLCBjb2RlLCBw
RGljdGlvbmFyeSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpFcnJvciogTlM6OkVycm9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6YWxsb2M8RXJyb3I+KF9OU19QUklWQVRFX0NMUyhOU0Vycm9yKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpFcnJvciogTlM6OkVycm9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0Ojppbml0PEVycm9yPigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RXJyb3IqIE5TOjpFcnJvcjo6aW5pdChF
cnJvckRvbWFpbiBkb21haW4sIEludGVnZXIgY29kZSwgY2xhc3MgRGljdGlvbmFyeSogcERpY3Rp
b25hcnkpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RXJyb3IqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoaW5pdFdpdGhEb21haW5fY29kZV91c2VySW5mb18pLCBkb21haW4sIGNv
ZGUsIHBEaWN0aW9uYXJ5KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkludGVnZXIgTlM6OkVycm9yOjpjb2RlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxJbnRlZ2VyPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoY29kZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RXJyb3JEb21haW4gTlM6OkVycm9y
Ojpkb21haW4oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEVycm9y
RG9tYWluPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZG9tYWluKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0
aW9uYXJ5KiBOUzo6RXJyb3I6OnVzZXJJbmZvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVzZXJJbmZv
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpFcnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24o
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChsb2NhbGl6ZWREZXNjcmlwdGlvbikpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJy
YXkqIE5TOjpFcnJvcjo6bG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChs
b2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnMpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkVycm9y
Ojpsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb2NhbGl6ZWRS
ZWNvdmVyeVN1Z2dlc3Rpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkVycm9yOjpsb2Nh
bGl6ZWRGYWlsdXJlUmVhc29uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkRmFpbHVyZVJlYXNv
bikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
TG9jay5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0xv
Y2suaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYyN2RlMDgxOTRmMzQyNDg5OGZjMWZiMjM3NWY2MjNkNDg3OGI0
NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9OU0xvY2suaHBwCkBAIC0wLDAgKzEsMTA1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TTG9jay5ocHAK
Ky8vCisvLyBTZWUgTElDRU5TRS50eHQgZm9yIHRoaXMgcHJvamVjdCBsaWNlbnNpbmcgaW5mb3Jt
YXRpb24uCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3Qu
aHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisj
aW5jbHVkZSAiTlNEYXRlLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNz
LCBjbGFzcyBfQmFzZSA9IGNsYXNzIE9iamVjdD4KK2NsYXNzIExvY2tpbmcgOiBwdWJsaWMgX0Jh
c2UKK3sKK3B1YmxpYzoKKyAgICB2b2lkIGxvY2soKTsKKyAgICB2b2lkIHVubG9jaygpOworfTsK
KworY2xhc3MgQ29uZGl0aW9uIDogcHVibGljIExvY2tpbmc8Q29uZGl0aW9uPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBDb25kaXRpb24qIGFsbG9jKCk7CisKKyAgICBDb25kaXRpb24qICAgICAg
ICBpbml0KCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICB3YWl0KCk7CisgICAgYm9vbCAgICAg
ICAgICAgICAgd2FpdFVudGlsRGF0ZShEYXRlKiBwTGltaXQpOworICAgIHZvaWQgICAgICAgICAg
ICAgIHNpZ25hbCgpOworICAgIHZvaWQgICAgICAgICAgICAgIGJyb2FkY2FzdCgpOworfTsKKwor
fSAvLyBOUworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KwordGVtcGxhdGU8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSAvKiA9IE5TOjpPYmplY3QgKi8+
CitfTlNfSU5MSU5FIHZvaWQgTlM6OkxvY2tpbmc8X0NsYXNzLCBfQmFzZT46OmxvY2soKQorewor
ICAgIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChs
b2NrKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCit0ZW1wbGF0ZTxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9CYXNlIC8qID0gTlM6Ok9iamVjdCAq
Lz4KK19OU19JTkxJTkUgdm9pZCBOUzo6TG9ja2luZzxfQ2xhc3MsIF9CYXNlPjo6dW5sb2NrKCkK
K3sKKyAgICBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwodW5sb2NrKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpDb25kaXRpb24qIE5TOjpDb25kaXRpb246OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TlM6OkNvbmRpdGlvbj4oX05TX1BS
SVZBVEVfQ0xTKE5TQ29uZGl0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpDb25kaXRpb24qIE5TOjpDb25k
aXRpb246OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE5TOjpDb25kaXRp
b24+KCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkNvbmRpdGlvbjo6d2FpdCgpCit7CisgICAgTlM6Ok9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHdhaXQpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgYm9vbCBOUzo6Q29uZGl0aW9uOjp3YWl0VW50aWxEYXRlKE5TOjpEYXRlKiBwTGltaXQp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTCh3YWl0VW50aWxEYXRlXyksIHBMaW1pdCk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkNv
bmRpdGlvbjo6c2lnbmFsKCkKK3sKKyAgICBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwoc2lnbmFsKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkNvbmRpdGlv
bjo6YnJvYWRjYXN0KCkKK3sKKyAgICBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoYnJvYWRjYXN0KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90
aWZpY2F0aW9uLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TTm90aWZpY2F0aW9uLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWJiYzlmNTgwNmI2NjUwMWQzNzk1NGI4
ZWY1MGU2MzJmNWMyZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOb3RpZmljYXRpb24uaHBwCkBAIC0wLDAgKzEsNjcgQEAK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZv
dW5kYXRpb24vTlNOb3RpZmljYXRpb24uaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNEaWN0
aW9uYXJ5LmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNTdHJpbmcu
aHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7Cit1c2luZyBOb3RpZmljYXRp
b25OYW1lID0gY2xhc3MgU3RyaW5nKjsKKworY2xhc3MgTm90aWZpY2F0aW9uIDogcHVibGljIE5T
OjpSZWZlcmVuY2luZzxOb3RpZmljYXRpb24+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyog
ICAgIG5hbWUoKSBjb25zdDsKKyAgICBOUzo6T2JqZWN0KiAgICAgb2JqZWN0KCkgY29uc3Q7Cisg
ICAgTlM6OkRpY3Rpb25hcnkqIHVzZXJJbmZvKCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3Ry
aW5nKiBOUzo6Tm90aWZpY2F0aW9uOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG5hbWUpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6Ok9iamVjdCogTlM6Ok5vdGlmaWNhdGlvbjo6b2JqZWN0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6T2JqZWN0Kj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKG9iamVjdCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6Ok5vdGlmaWNh
dGlvbjo6dXNlckluZm8oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpEaWN0aW9uYXJ5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVzZXJJbmZvKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOdW1iZXIuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOdW1iZXIuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhkMGY2NmYzNzRmYmMzOTYxZDU1NTY0NjE2MDFmMGVlNzQ5ZWJmNDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU051bWJlci5ocHAKQEAgLTAsMCArMSw1MDEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNOdW1iZXIuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TT2Jq
Q1J1bnRpbWUuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1R5cGVz
LmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K25hbWVzcGFjZSBOUworeworY2xhc3MgVmFsdWUgOiBwdWJsaWMgQ29weWluZzxWYWx1ZT4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgVmFsdWUqIHZhbHVlKGNvbnN0IHZvaWQqIHBWYWx1ZSwgY29u
c3QgY2hhciogcFR5cGUpOworICAgIHN0YXRpYyBWYWx1ZSogdmFsdWUoY29uc3Qgdm9pZCogcFBv
aW50ZXIpOworCisgICAgc3RhdGljIFZhbHVlKiBhbGxvYygpOworCisgICAgVmFsdWUqICAgICAg
ICBpbml0KGNvbnN0IHZvaWQqIHBWYWx1ZSwgY29uc3QgY2hhciogcFR5cGUpOworICAgIFZhbHVl
KiAgICAgICAgaW5pdChjb25zdCBjbGFzcyBDb2RlciogcENvZGVyKTsKKworICAgIHZvaWQgICAg
ICAgICAgZ2V0VmFsdWUodm9pZCogcFZhbHVlLCBVSW50ZWdlciBzaXplKSBjb25zdDsKKyAgICBj
b25zdCBjaGFyKiAgIG9iakNUeXBlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgIGlzRXF1
YWxUb1ZhbHVlKFZhbHVlKiBwVmFsdWUpIGNvbnN0OworICAgIHZvaWQqICAgICAgICAgcG9pbnRl
clZhbHVlKCkgY29uc3Q7Cit9OworCitjbGFzcyBOdW1iZXIgOiBwdWJsaWMgQ29weWluZzxOdW1i
ZXIsIFZhbHVlPgoreworcHVibGljOgorICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIoY2hh
ciB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcih1bnNpZ25lZCBjaGFyIHZh
bHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKHNob3J0IHZhbHVlKTsKKyAgICBz
dGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKHVuc2lnbmVkIHNob3J0IHZhbHVlKTsKKyAgICBzdGF0
aWMgTnVtYmVyKiAgICAgbnVtYmVyKGludCB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAg
IG51bWJlcih1bnNpZ25lZCBpbnQgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1i
ZXIobG9uZyB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcih1bnNpZ25lZCBs
b25nIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGxvbmcgbG9uZyB2YWx1
ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcgdmFs
dWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIoZmxvYXQgdmFsdWUpOworICAgIHN0
YXRpYyBOdW1iZXIqICAgICBudW1iZXIoZG91YmxlIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVy
KiAgICAgbnVtYmVyKGJvb2wgdmFsdWUpOworCisgICAgc3RhdGljIE51bWJlciogICAgIGFsbG9j
KCk7CisKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdChjb25zdCBjbGFzcyBDb2RlciogcENv
ZGVyKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdChjaGFyIHZhbHVlKTsKKyAgICBOdW1i
ZXIqICAgICAgICAgICAgaW5pdCh1bnNpZ25lZCBjaGFyIHZhbHVlKTsKKyAgICBOdW1iZXIqICAg
ICAgICAgICAgaW5pdChzaG9ydCB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQo
dW5zaWduZWQgc2hvcnQgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KGludCB2
YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQodW5zaWduZWQgaW50IHZhbHVlKTsK
KyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdChsb25nIHZhbHVlKTsKKyAgICBOdW1iZXIqICAg
ICAgICAgICAgaW5pdCh1bnNpZ25lZCBsb25nIHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAgICAg
ICAgaW5pdChsb25nIGxvbmcgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KHVu
c2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQoZmxv
YXQgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KGRvdWJsZSB2YWx1ZSk7Cisg
ICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQoYm9vbCB2YWx1ZSk7CisKKyAgICBjaGFyICAgICAg
ICAgICAgICAgY2hhclZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgY2hhciAgICAgIHVuc2ln
bmVkQ2hhclZhbHVlKCkgY29uc3Q7CisgICAgc2hvcnQgICAgICAgICAgICAgIHNob3J0VmFsdWUo
KSBjb25zdDsKKyAgICB1bnNpZ25lZCBzaG9ydCAgICAgdW5zaWduZWRTaG9ydFZhbHVlKCkgY29u
c3Q7CisgICAgaW50ICAgICAgICAgICAgICAgIGludFZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWdu
ZWQgaW50ICAgICAgIHVuc2lnbmVkSW50VmFsdWUoKSBjb25zdDsKKyAgICBsb25nICAgICAgICAg
ICAgICAgbG9uZ1ZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9uZyAgICAgIHVuc2lnbmVk
TG9uZ1ZhbHVlKCkgY29uc3Q7CisgICAgbG9uZyBsb25nICAgICAgICAgIGxvbmdMb25nVmFsdWUo
KSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdW5zaWduZWRMb25nTG9uZ1ZhbHVlKCkg
Y29uc3Q7CisgICAgZmxvYXQgICAgICAgICAgICAgIGZsb2F0VmFsdWUoKSBjb25zdDsKKyAgICBk
b3VibGUgICAgICAgICAgICAgZG91YmxlVmFsdWUoKSBjb25zdDsKKyAgICBib29sICAgICAgICAg
ICAgICAgYm9vbFZhbHVlKCkgY29uc3Q7CisgICAgSW50ZWdlciAgICAgICAgICAgIGludGVnZXJW
YWx1ZSgpIGNvbnN0OworICAgIFVJbnRlZ2VyICAgICAgICAgICB1bnNpZ25lZEludGVnZXJWYWx1
ZSgpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgICBzdHJpbmdWYWx1ZSgpIGNvbnN0Owor
CisgICAgQ29tcGFyaXNvblJlc3VsdCAgIGNvbXBhcmUoY29uc3QgTnVtYmVyKiBwT3RoZXJOdW1i
ZXIpIGNvbnN0OworICAgIGJvb2wgICAgICAgICAgICAgICBpc0VxdWFsVG9OdW1iZXIoY29uc3Qg
TnVtYmVyKiBwTnVtYmVyKSBjb25zdDsKKworICAgIGNsYXNzIFN0cmluZyogICAgICBkZXNjcmlw
dGlvbldpdGhMb2NhbGUoY29uc3QgT2JqZWN0KiBwTG9jYWxlKSBjb25zdDsKK307Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpWYWx1ZSogTlM6OlZhbHVlOjp2YWx1ZShjb25zdCB2b2lkKiBwVmFsdWUsIGNvbnN0IGNo
YXIqIHBUeXBlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFZhbHVlKj4oX05T
X1BSSVZBVEVfQ0xTKE5TVmFsdWUpLCBfTlNfUFJJVkFURV9TRUwodmFsdWVXaXRoQnl0ZXNfb2Jq
Q1R5cGVfKSwgcFZhbHVlLCBwVHlwZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpWYWx1ZSogTlM6OlZhbHVlOjp2
YWx1ZShjb25zdCB2b2lkKiBwUG9pbnRlcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxWYWx1ZSo+KF9OU19QUklWQVRFX0NMUyhOU1ZhbHVlKSwgX05TX1BSSVZBVEVfU0VMKHZh
bHVlV2l0aFBvaW50ZXJfKSwgcFBvaW50ZXIpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VmFsdWUqIE5TOjpWYWx1
ZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxWYWx1ZT4oX05TX1BS
SVZBVEVfQ0xTKE5TVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlZhbHVlKiBOUzo6VmFsdWU6OmluaXQo
Y29uc3Qgdm9pZCogcFZhbHVlLCBjb25zdCBjaGFyKiBwVHlwZSkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxWYWx1ZSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aEJ5
dGVzX29iakNUeXBlXyksIHBWYWx1ZSwgcFR5cGUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VmFsdWUqIE5TOjpW
YWx1ZTo6aW5pdChjb25zdCBjbGFzcyBDb2RlciogcENvZGVyKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFZhbHVlKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQ29k
ZXJfKSwgcENvZGVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6VmFsdWU6OmdldFZhbHVlKHZvaWQqIHBW
YWx1ZSwgVUludGVnZXIgc2l6ZSkgY29uc3QKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChnZXRWYWx1ZV9zaXplXyksIHBWYWx1ZSwgc2l6ZSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIGNvbnN0IGNoYXIqIE5TOjpWYWx1ZTo6b2JqQ1R5cGUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNvbnN0IGNoYXIqPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwob2JqQ1R5cGUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6VmFsdWU6OmlzRXF1YWxUb1ZhbHVl
KFZhbHVlKiBwVmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzRXF1YWxUb1ZhbHVlXyksIHBWYWx1ZSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIHZvaWQqIE5TOjpWYWx1ZTo6cG9pbnRlclZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHBvaW50
ZXJWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIoY2hhciB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJ
VkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aENoYXJfKSwgdmFs
dWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIodW5zaWduZWQgY2hh
ciB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNf
UFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFVuc2lnbmVk
Q2hhcl8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcihz
aG9ydCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihf
TlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFNob3J0
XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKHVuc2ln
bmVkIHNob3J0IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJl
cio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRo
VW5zaWduZWRTaG9ydF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6
Om51bWJlcihpbnQgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVt
YmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldp
dGhJbnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIo
dW5zaWduZWQgaW50IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51
bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJX
aXRoVW5zaWduZWRJbnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVy
OjpudW1iZXIobG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
dW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVy
V2l0aExvbmdfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1i
ZXIodW5zaWduZWQgbG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVt
YmVyV2l0aFVuc2lnbmVkTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpO
dW1iZXI6Om51bWJlcihsb25nIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BSSVZBVEVf
U0VMKG51bWJlcldpdGhMb25nTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5T
OjpOdW1iZXI6Om51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwg
X05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhVbnNpZ25lZExvbmdMb25nXyksIHZhbHVlKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKGZsb2F0IHZhbHVlKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051
bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoRmxvYXRfKSwgdmFsdWUpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIoZG91YmxlIHZhbHVlKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJl
ciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoRG91YmxlXyksIHZhbHVlKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKGJvb2wgdmFsdWUpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwg
X05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhCb29sXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51
bWJlciogTlM6Ok51bWJlcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxOdW1iZXI+KF9OU19QUklWQVRFX0NMUyhOU051bWJlcikpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVy
KiBOUzo6TnVtYmVyOjppbml0KGNvbnN0IENvZGVyKiBwQ29kZXIpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRo
Q29kZXJfKSwgcENvZGVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChj
aGFyIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aENoYXJfKSwgdmFsdWUpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KHVuc2lnbmVkIGNoYXIgdmFsdWUpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlu
aXRXaXRoVW5zaWduZWRDaGFyXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51
bWJlcjo6aW5pdChzaG9ydCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhTaG9ydF8pLCB2YWx1ZSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQodW5zaWduZWQgc2hvcnQgdmFs
dWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGluaXRXaXRoVW5zaWduZWRTaG9ydF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoaW50IHZhbHVlKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aElu
dF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQodW5zaWdu
ZWQgaW50IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aFVuc2lnbmVkSW50XyksIHZhbHVlKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChsb25nIHZhbHVlKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChp
bml0V2l0aExvbmdfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpp
bml0KHVuc2lnbmVkIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoVW5zaWduZWRMb25nXyks
IHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChsb25nIGxvbmcg
dmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGluaXRXaXRoTG9uZ0xvbmdfKSwgdmFsdWUpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoaW5pdFdpdGhVbnNpZ25lZExvbmdMb25nXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJl
ciogTlM6Ok51bWJlcjo6aW5pdChmbG9hdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhGbG9hdF8p
LCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoZG91YmxlIHZh
bHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChpbml0V2l0aERvdWJsZV8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1i
ZXIqIE5TOjpOdW1iZXI6OmluaXQoYm9vbCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhCb29sXyks
IHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgY2hhciBOUzo6TnVtYmVyOjpjaGFyVmFsdWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNoYXI+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChjaGFyVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgdW5zaWduZWQgY2hhciBOUzo6TnVtYmVyOjp1bnNpZ25l
ZENoYXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5z
aWduZWQgY2hhcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVuc2lnbmVkQ2hhclZhbHVlKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIHNob3J0IE5TOjpOdW1iZXI6OnNob3J0VmFsdWUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPHNob3J0Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc2hvcnRW
YWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSB1bnNpZ25lZCBzaG9ydCBOUzo6TnVtYmVyOjp1bnNpZ25lZFNob3J0
VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVk
IHNob3J0Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwodW5zaWduZWRTaG9ydFZhbHVlKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIGludCBOUzo6TnVtYmVyOjppbnRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8aW50Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW50VmFsdWUpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgdW5zaWduZWQgaW50IE5TOjpOdW1iZXI6OnVuc2lnbmVkSW50VmFsdWUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVkIGludD4odGhpcywgX05T
X1BSSVZBVEVfU0VMKHVuc2lnbmVkSW50VmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgbG9uZyBOUzo6TnVtYmVy
Ojpsb25nVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGxv
bmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb25nVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdW5zaWduZWQg
bG9uZyBOUzo6TnVtYmVyOjp1bnNpZ25lZExvbmdWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5zaWduZWQgbG9uZz4odGhpcywgX05TX1BSSVZBVEVfU0VM
KHVuc2lnbmVkTG9uZ1ZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGxvbmcgbG9uZyBOUzo6TnVtYmVyOjpsb25n
TG9uZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxsb25n
IGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb25nTG9uZ1ZhbHVlKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVu
c2lnbmVkIGxvbmcgbG9uZyBOUzo6TnVtYmVyOjp1bnNpZ25lZExvbmdMb25nVmFsdWUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVkIGxvbmcgbG9uZz4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZSkpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBm
bG9hdCBOUzo6TnVtYmVyOjpmbG9hdFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxmbG9hdD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGZsb2F0VmFsdWUpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgZG91YmxlIE5TOjpOdW1iZXI6OmRvdWJsZVZhbHVlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxkb3VibGU+KHRoaXMsIF9OU19QUklWQVRFX1NFTChk
b3VibGVWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpOdW1iZXI6OmJvb2xWYWx1ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGJvb2xWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6SW50ZWdlciBOUzo6TnVtYmVyOjppbnRl
Z2VyVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEludGVn
ZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbnRlZ2VyVmFsdWUpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE5TOjpOdW1iZXI6OnVuc2lnbmVkSW50ZWdlclZhbHVlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KHVuc2lnbmVkSW50ZWdlclZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpOdW1iZXI6
OnN0cmluZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxT
dHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc3RyaW5nVmFsdWUpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OkNvbXBhcmlzb25SZXN1bHQgTlM6Ok51bWJlcjo6Y29tcGFyZShjb25zdCBOdW1iZXIqIHBPdGhl
ck51bWJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxDb21wYXJp
c29uUmVzdWx0Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY29tcGFyZV8pLCBwT3RoZXJOdW1iZXIp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBib29sIE5TOjpOdW1iZXI6OmlzRXF1YWxUb051bWJlcihjb25zdCBOdW1iZXIq
IHBOdW1iZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGlzRXF1YWxUb051bWJlcl8pLCBwTnVtYmVyKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlN0cmluZyogTlM6Ok51bWJlcjo6ZGVzY3JpcHRpb25XaXRoTG9jYWxlKGNvbnN0IE9i
amVjdCogcExvY2FsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxT
dHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGVzY3JpcHRpb25XaXRoTG9jYWxlXyksIHBM
b2NhbGUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TT2JqQ1J1bnRpbWUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNPYmpDUnVudGltZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhlNjUwNjZlNThjYTcwNTc0MjBl
NmY1ODllNzk1YTJlZGZjNmFlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqQ1J1bnRpbWUuaHBwCkBAIC0wLDAgKzEsNDMg
QEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8v
IEZvdW5kYXRpb24vTlNPYmpDUnVudGltZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU1R5
cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK25hbWVzcGFjZSBOUworeworCitfTlNfRU5VTShJbnRlZ2VyLCBDb21wYXJpc29uUmVzdWx0
KSB7CisgICAgT3JkZXJlZEFzY2VuZGluZyA9IC0xLAorICAgIE9yZGVyZWRTYW1lID0gMCwKKyAg
ICBPcmRlcmVkRGVzY2VuZGluZyA9IDEsCit9OworCitjb25zdCBJbnRlZ2VyIE5vdEZvdW5kID0g
SW50ZWdlck1heDsKKworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3Vu
ZGF0aW9uL05TT2JqZWN0LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3Vu
ZGF0aW9uL05TT2JqZWN0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGUxYzYzMmM5ZDViYTFlYjY0NDdhYTJl
OWFiNTMwMWZhYjZmMjUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNPYmplY3QuaHBwCkBAIC0wLDAgKzEsMjk3IEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0
aW9uL05TT2JqZWN0LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
Ly8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJh
Z21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisj
aW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKyNpbmNsdWRlIDxvYmpjL21lc3NhZ2UuaD4KKyNpbmNs
dWRlIDxvYmpjL3J1bnRpbWUuaD4KKworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7
Cit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSA9IGNsYXNzIE9iamVjdD4KK2Ns
YXNzIFJlZmVyZW5jaW5nIDogcHVibGljIF9CYXNlCit7CitwdWJsaWM6CisgICAgX0NsYXNzKiAg
cmV0YWluKCk7CisgICAgdm9pZCAgICAgcmVsZWFzZSgpOworCisgICAgX0NsYXNzKiAgYXV0b3Jl
bGVhc2UoKTsKKworICAgIFVJbnRlZ2VyIHJldGFpbkNvdW50KCkgY29uc3Q7Cit9OworCit0ZW1w
bGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSA9IGNsYXNzIE9iamVjdD4KK2NsYXNzIENv
cHlpbmcgOiBwdWJsaWMgUmVmZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT4KK3sKK3B1YmxpYzoKKyAg
ICBfQ2xhc3MqIGNvcHkoKSBjb25zdDsKK307CisKK2NsYXNzIE9iamVjdCA6IHB1YmxpYyBSZWZl
cmVuY2luZzxPYmplY3QsIG9iamNfb2JqZWN0PgoreworcHVibGljOgorICAgIFVJbnRlZ2VyICAg
ICAgaGFzaCgpIGNvbnN0OworICAgIGJvb2wgICAgICAgICAgaXNFcXVhbChjb25zdCBPYmplY3Qq
IHBPYmplY3QpIGNvbnN0OworCisgICAgY2xhc3MgU3RyaW5nKiBkZXNjcmlwdGlvbigpIGNvbnN0
OworICAgIGNsYXNzIFN0cmluZyogZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OworCitwcm90ZWN0
ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFJlZmVyZW5jaW5nPE9iamVjdCwgb2JqY19vYmplY3Q+Owor
CisgICAgdGVtcGxhdGUgPGNsYXNzIF9DbGFzcz4KKyAgICBzdGF0aWMgX0NsYXNzKiBhbGxvYyhj
b25zdCBjaGFyKiBwQ2xhc3NOYW1lKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzPgorICAg
IHN0YXRpYyBfQ2xhc3MqIGFsbG9jKGNvbnN0IHZvaWQqIHBDbGFzcyk7CisgICAgdGVtcGxhdGUg
PGNsYXNzIF9DbGFzcz4KKyAgICBfQ2xhc3MqIGluaXQoKTsKKworICAgIHRlbXBsYXRlIDxjbGFz
cyBfRHN0PgorICAgIHN0YXRpYyBfRHN0ICAgICAgICAgICAgICAgICAgIGJyaWRnaW5nQ2FzdChj
b25zdCB2b2lkKiBwT2JqKTsKKyAgICBzdGF0aWMgY2xhc3MgTWV0aG9kU2lnbmF0dXJlKiBtZXRo
b2RTaWduYXR1cmVGb3JTZWxlY3Rvcihjb25zdCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IpOwor
ICAgIHN0YXRpYyBib29sICAgICAgICAgICAgICAgICAgIHJlc3BvbmRzVG9TZWxlY3Rvcihjb25z
dCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfVHlw
ZT4KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZG9lc1JlcXVpcmVNc2dTZW5kU3RyZXQoKTsK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUuLi4gX0FyZ3M+CisgICAgc3Rh
dGljIF9SZXQgc2VuZE1lc3NhZ2UoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yLCBfQXJn
cy4uLiBhcmdzKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUuLi4gX0Fy
Z3M+CisgICAgc3RhdGljIF9SZXQgc2VuZE1lc3NhZ2VTYWZlKGNvbnN0IHZvaWQqIHBPYmosIFNF
TCBzZWxlY3RvciwgX0FyZ3MuLi4gYXJncyk7CisKK3ByaXZhdGU6CisgICAgT2JqZWN0KCkgPSBk
ZWxldGU7CisgICAgT2JqZWN0KGNvbnN0IE9iamVjdCYpID0gZGVsZXRlOworICAgIH5PYmplY3Qo
KSA9IGRlbGV0ZTsKKworICAgIE9iamVjdCYgb3BlcmF0b3I9KGNvbnN0IE9iamVjdCYpID0gZGVs
ZXRlOworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9CYXNlIC8qID0gT2JqZWN0ICov
PgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpSZWZlcmVuY2luZzxfQ2xhc3MsIF9CYXNlPjo6cmV0
YWluKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxfQ2xhc3MqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwocmV0YWluKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFz
ZSAvKiA9IE9iamVjdCAqLz4KK19OU19JTkxJTkUgdm9pZCBOUzo6UmVmZXJlbmNpbmc8X0NsYXNz
LCBfQmFzZT46OnJlbGVhc2UoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX05TX1BSSVZBVEVfU0VMKHJlbGVhc2UpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNz
IF9CYXNlIC8qID0gT2JqZWN0ICovPgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpSZWZlcmVuY2lu
ZzxfQ2xhc3MsIF9CYXNlPjo6YXV0b3JlbGVhc2UoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPF9DbGFzcyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhdXRvcmVsZWFzZSkpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVt
cGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgLyogPSBPYmplY3QgKi8+CitfTlNfSU5M
SU5FIE5TOjpVSW50ZWdlciBOUzo6UmVmZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT46OnJldGFpbkNv
dW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKHJldGFpbkNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNz
LCBjbGFzcyBfQmFzZSAvKiA9IE9iamVjdCAqLz4KK19OU19JTkxJTkUgX0NsYXNzKiBOUzo6Q29w
eWluZzxfQ2xhc3MsIF9CYXNlPjo6Y29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8X0NsYXNzKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNvcHkpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRl
IDxjbGFzcyBfRHN0PgorX05TX0lOTElORSBfRHN0IE5TOjpPYmplY3Q6OmJyaWRnaW5nQ2FzdChj
b25zdCB2b2lkKiBwT2JqKQoreworI2lmIF9fT0JKQ19fCisgICAgcmV0dXJuIChfX2JyaWRnZSBf
RHN0KXBPYmo7CisjZWxzZQorICAgIHJldHVybiAoX0RzdClwT2JqOworI2VuZGlmIC8vIF9fT0JK
Q19fCit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1R5cGU+CitfTlNfSU5MSU5FIGNvbnN0ZXhwciBib29sIE5T
OjpPYmplY3Q6OmRvZXNSZXF1aXJlTXNnU2VuZFN0cmV0KCkKK3sKKyNpZiAoZGVmaW5lZChfX2kz
ODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSkKKyAgICBjb25zdGV4cHIgc2l6ZV90IGtTdHJ1
Y3RMaW1pdCA9IChzaXplb2Yoc3RkOjp1aW50cHRyX3QpIDw8IDEpOworCisgICAgcmV0dXJuIHNp
emVvZihfVHlwZSkgPiBrU3RydWN0TGltaXQ7CisjZWxpZiBkZWZpbmVkKF9fYXJtNjRfXykKKyAg
ICByZXR1cm4gZmFsc2U7CisjZWxpZiBkZWZpbmVkKF9fYXJtX18pCisgICAgY29uc3RleHByIHNp
emVfdCBrU3RydWN0TGltaXQgPSBzaXplb2Yoc3RkOjp1aW50cHRyX3QpOworCisgICAgcmV0dXJu
IHN0ZDo6aXNfY2xhc3MoX1R5cGUpICYmIChzaXplb2YoX1R5cGUpID4ga1N0cnVjdExpbWl0KTsK
KyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSEiCisjZW5kaWYKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRl
IDw+CitfTlNfSU5MSU5FIGNvbnN0ZXhwciBib29sIE5TOjpPYmplY3Q6OmRvZXNSZXF1aXJlTXNn
U2VuZFN0cmV0PHZvaWQ+KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
X1JldCwgdHlwZW5hbWUuLi4gX0FyZ3M+CitfTlNfSU5MSU5FIF9SZXQgTlM6Ok9iamVjdDo6c2Vu
ZE1lc3NhZ2UoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yLCBfQXJncy4uLiBhcmdzKQor
eworI2lmIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pKQorICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19mbG9hdGluZ19wb2ludDxfUmV0PigpKQorICAgIHsKKyAgICAg
ICAgdXNpbmcgU2VuZE1lc3NhZ2VQcm9jRnByZXQgPSBfUmV0ICgqKShjb25zdCB2b2lkKiwgU0VM
LCBfQXJncy4uLik7CisKKyAgICAgICAgY29uc3QgU2VuZE1lc3NhZ2VQcm9jRnByZXQgcFByb2Mg
PSByZWludGVycHJldF9jYXN0PFNlbmRNZXNzYWdlUHJvY0ZwcmV0Pigmb2JqY19tc2dTZW5kX2Zw
cmV0KTsKKworICAgICAgICByZXR1cm4gKCpwUHJvYykocE9iaiwgc2VsZWN0b3IsIGFyZ3MuLi4p
OworICAgIH0KKyAgICBlbHNlCisjZW5kaWYgLy8gKCBkZWZpbmVkKCBfX2kzODZfXyApICB8fCBk
ZWZpbmVkKCBfX3g4Nl82NF9fICkgICkKKyNpZiAhZGVmaW5lZChfX2FybTY0X18pCisgICAgICAg
IGlmIGNvbnN0ZXhwciAoZG9lc1JlcXVpcmVNc2dTZW5kU3RyZXQ8X1JldD4oKSkKKyAgICB7Cisg
ICAgICAgIHVzaW5nIFNlbmRNZXNzYWdlUHJvY1N0cmV0ID0gdm9pZCAoKikoX1JldCosIGNvbnN0
IHZvaWQqLCBTRUwsIF9BcmdzLi4uKTsKKworICAgICAgICBjb25zdCBTZW5kTWVzc2FnZVByb2NT
dHJldCBwUHJvYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2VuZE1lc3NhZ2VQcm9jU3RyZXQ+KCZvYmpj
X21zZ1NlbmRfc3RyZXQpOworICAgICAgICBfUmV0ICAgICAgICAgICAgICAgICAgICAgICByZXQ7
CisKKyAgICAgICAgKCpwUHJvYykoJnJldCwgcE9iaiwgc2VsZWN0b3IsIGFyZ3MuLi4pOworCisg
ICAgICAgIHJldHVybiByZXQ7CisgICAgfQorICAgIGVsc2UKKyNlbmRpZiAvLyAhZGVmaW5lZCgg
X19hcm02NF9fICkKKyAgICB7CisgICAgICAgIHVzaW5nIFNlbmRNZXNzYWdlUHJvYyA9IF9SZXQg
KCopKGNvbnN0IHZvaWQqLCBTRUwsIF9BcmdzLi4uKTsKKworICAgICAgICBjb25zdCBTZW5kTWVz
c2FnZVByb2MgcFByb2MgPSByZWludGVycHJldF9jYXN0PFNlbmRNZXNzYWdlUHJvYz4oJm9iamNf
bXNnU2VuZCk7CisKKyAgICAgICAgcmV0dXJuICgqcFByb2MpKHBPYmosIHNlbGVjdG9yLCBhcmdz
Li4uKTsKKyAgICB9Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpNZXRob2RTaWduYXR1cmUqIE5TOjpPYmplY3Q6Om1l
dGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yKGNvbnN0IHZvaWQqIHBPYmosIFNFTCBzZWxlY3RvcikK
K3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8TWV0aG9kU2lnbmF0dXJlKj4ocE9iaiwgX05TX1BS
SVZBVEVfU0VMKG1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yXyksIHNlbGVjdG9yKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgYm9vbCBOUzo6T2JqZWN0OjpyZXNwb25kc1RvU2VsZWN0b3IoY29uc3Qgdm9pZCogcE9iaiwg
U0VMIHNlbGVjdG9yKQoreworICAgIHJldHVybiBzZW5kTWVzc2FnZTxib29sPihwT2JqLCBfTlNf
UFJJVkFURV9TRUwocmVzcG9uZHNUb1NlbGVjdG9yXyksIHNlbGVjdG9yKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBfUmV0LCB0eXBlbmFtZS4uLiBfQXJncz4KK19OU19JTkxJTkUgX1JldCBOUzo6T2JqZWN0
OjpzZW5kTWVzc2FnZVNhZmUoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yLCBfQXJncy4u
LiBhcmdzKQoreworICAgIGlmICgocmVzcG9uZHNUb1NlbGVjdG9yKHBPYmosIHNlbGVjdG9yKSkg
fHwgKG51bGxwdHIgIT0gbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3IocE9iaiwgc2VsZWN0b3Ip
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZTxfUmV0PihwT2JqLCBzZWxlY3Rv
ciwgYXJncy4uLik7CisgICAgfQorCisgICAgaWYgY29uc3RleHByICghc3RkOjppc192b2lkPF9S
ZXQ+Ojp2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFz
cyBfQ2xhc3M+CitfTlNfSU5MSU5FIF9DbGFzcyogTlM6Ok9iamVjdDo6YWxsb2MoY29uc3QgY2hh
ciogcENsYXNzTmFtZSkKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8X0NsYXNzKj4ob2JqY19s
b29rVXBDbGFzcyhwQ2xhc3NOYW1lKSwgX05TX1BSSVZBVEVfU0VMKGFsbG9jKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8
Y2xhc3MgX0NsYXNzPgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpPYmplY3Q6OmFsbG9jKGNvbnN0
IHZvaWQqIHBDbGFzcykKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8X0NsYXNzKj4ocENsYXNz
LCBfTlNfUFJJVkFURV9TRUwoYWxsb2MpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3M+CitfTlNfSU5M
SU5FIF9DbGFzcyogTlM6Ok9iamVjdDo6aW5pdCgpCit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdl
PF9DbGFzcyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0KSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50
ZWdlciBOUzo6T2JqZWN0OjpoYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8
VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChoYXNoKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6
Ok9iamVjdDo6aXNFcXVhbChjb25zdCBPYmplY3QqIHBPYmplY3QpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpc0VxdWFsXyksIHBP
YmplY3QpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6T2JqZWN0OjpkZXNjcmlwdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChkZXNjcmlwdGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6T2JqZWN0OjpkZWJ1
Z0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2VTYWZlPFN0cmlu
Zyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkZWJ1Z0Rlc2NyaXB0aW9uKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQcml2YXRlLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYThhNGZhNTY3MjIzMjMyMjA2NTRhMWUwYTViMTMxMTFlOGNhNzg3MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
UHJpdmF0ZS5ocHAKQEAgLTAsMCArMSw0ODggQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNQcml2YXRlLmhwcAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlIDxvYmpjL3J1
bnRpbWUuaD4KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNkZWZpbmUgX05TX1BSSVZBVEVfQ0xTKHN5bWJvbCkgKFByaXZhdGU6OkNsYXNzOjpzX2sj
I3N5bWJvbCkKKyNkZWZpbmUgX05TX1BSSVZBVEVfU0VMKGFjY2Vzc29yKSAoUHJpdmF0ZTo6U2Vs
ZWN0b3I6OnNfayMjYWNjZXNzb3IpCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjaWYgZGVmaW5lZChOU19QUklWQVRFX0lNUExFTUVOVEFUSU9OKQor
CisjZGVmaW5lIF9OU19QUklWQVRFX1ZJU0lCSUxJVFkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiaGlkZGVuIikpKQorI2RlZmluZSBfTlNfUFJJVkFURV9JTVBPUlQgX19hdHRyaWJ1dGVfXygo
d2Vha19pbXBvcnQpKQorCisjaWYgX19PQkpDX18KKyNkZWZpbmUgX05TX1BSSVZBVEVfT0JKQ19M
T09LVVBfQ0xBU1Moc3ltYm9sKSAoKF9fYnJpZGdlIHZvaWQqKW9iamNfbG9va1VwQ2xhc3MoI3N5
bWJvbCkpCisjZWxzZQorI2RlZmluZSBfTlNfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1i
b2wpIG9iamNfbG9va1VwQ2xhc3MoI3N5bWJvbCkKKyNlbmRpZiAvLyBfX09CSkNfXworCisjZGVm
aW5lIF9OU19QUklWQVRFX0RFRl9DTFMoc3ltYm9sKSB2b2lkKiBzX2sjI3N5bWJvbCBfTlNfUFJJ
VkFURV9WSVNJQklMSVRZID0gX05TX1BSSVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKTsK
KyNkZWZpbmUgX05TX1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9OU19QUklWQVRF
X0RFRl9TRUwoYWNjZXNzb3IsIHN5bWJvbCkgU0VMIHNfayMjYWNjZXNzb3IgX05TX1BSSVZBVEVf
VklTSUJJTElUWSA9IHNlbF9yZWdpc3Rlck5hbWUoc3ltYm9sKTsKKyNkZWZpbmUgX05TX1BSSVZB
VEVfREVGX0NPTlNUKHR5cGUsIHN5bWJvbCkgICAgICAgICAgICAgIFwKKyAgICBfTlNfRVhURVJO
IHR5cGUgY29uc3QgTlMjI3N5bWJvbCBfTlNfUFJJVkFURV9JTVBPUlQ7IFwKKyAgICB0eXBlIGNv
bnN0ICAgICAgICAgICAgICAgICAgICAgICBOUzo6c3ltYm9sID0gKG51bGxwdHIgIT0gJk5TIyNz
eW1ib2wpID8gTlMjI3N5bWJvbCA6IG51bGxwdHI7CisKKyNlbHNlCisKKyNkZWZpbmUgX05TX1BS
SVZBVEVfREVGX0NMUyhzeW1ib2wpIGV4dGVybiB2b2lkKiBzX2sjI3N5bWJvbDsKKyNkZWZpbmUg
X05TX1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9TRUwo
YWNjZXNzb3IsIHN5bWJvbCkgZXh0ZXJuIFNFTCBzX2sjI2FjY2Vzc29yOworI2RlZmluZSBfTlNf
UFJJVkFURV9ERUZfQ09OU1QodHlwZSwgc3ltYm9sKQorCisjZW5kaWYgLy8gTlNfUFJJVkFURV9J
TVBMRU1FTlRBVElPTgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworbmFtZXNwYWNlIE5TCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVz
cGFjZSBDbGFzcworICAgIHsKKworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TQXJyYXkp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TQXV0b3JlbGVhc2VQb29sKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU0J1bmRsZSk7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9DTFMoTlNDb25kaXRpb24pOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TRGF0ZSk7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNEaWN0aW9uYXJ5KTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX0NMUyhOU0Vycm9yKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhO
U051bWJlcik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNPYmplY3QpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TUHJvY2Vzc0luZm8pOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfQ0xTKE5TU3RyaW5nKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU1VSTCk7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNWYWx1ZSk7CisKKyAgICB9IC8vIENsYXNz
Cit9IC8vIFByaXZhdGUKK30gLy8gTVRMCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7
CisgICAgbmFtZXNwYWNlIFByb3RvY29sCisgICAgeworCisgICAgfSAvLyBQcm90b2NvbAorfSAv
LyBQcml2YXRlCit9IC8vIE5TCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAg
bmFtZXNwYWNlIFNlbGVjdG9yCisgICAgeworCisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
YWRkT2JqZWN0XywKKyAgICAgICAgICAgICJhZGRPYmplY3Q6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoYWN0aXZlUHJvY2Vzc29yQ291bnQsCisgICAgICAgICAgICAiYWN0aXZlUHJv
Y2Vzc29yQ291bnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhbGxCdW5kbGVzLAor
ICAgICAgICAgICAgImFsbEJ1bmRsZXMiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChh
bGxGcmFtZXdvcmtzLAorICAgICAgICAgICAgImFsbEZyYW1ld29ya3MiKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTChhbGxPYmplY3RzLAorICAgICAgICAgICAgImFsbE9iamVjdHMiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhbGxvYywKKyAgICAgICAgICAgICJhbGxvYyIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFwcFN0b3JlUmVjZWlwdFVSTCwKKyAgICAg
ICAgICAgICJhcHBTdG9yZVJlY2VpcHRVUkwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChhcmd1bWVudHMsCisgICAgICAgICAgICAiYXJndW1lbnRzIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoYXJyYXksCisgICAgICAgICAgICAiYXJyYXkiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChhcnJheVdpdGhPYmplY3RfLAorICAgICAgICAgICAgImFycmF5V2l0aE9i
amVjdDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhcnJheVdpdGhPYmplY3RzX2Nv
dW50XywKKyAgICAgICAgICAgICJhcnJheVdpdGhPYmplY3RzOmNvdW50OiIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWQsCisg
ICAgICAgICAgICAiYXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKGF1dG9yZWxlYXNlLAorICAgICAgICAgICAgImF1dG9yZWxl
YXNlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYmVnaW5BY3Rpdml0eVdpdGhPcHRp
b25zX3JlYXNvbl8sCisgICAgICAgICAgICAiYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOnJlYXNv
bjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChib29sVmFsdWUsCisgICAgICAgICAg
ICAiYm9vbFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYnJvYWRjYXN0LAor
ICAgICAgICAgICAgImJyb2FkY2FzdCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1
aWx0SW5QbHVnSW5zUGF0aCwKKyAgICAgICAgICAgICJidWlsdEluUGx1Z0luc1BhdGgiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidWlsdEluUGx1Z0luc1VSTCwKKyAgICAgICAgICAg
ICJidWlsdEluUGx1Z0luc1VSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRs
ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAiYnVuZGxlSWRlbnRpZmllciIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRsZVBhdGgsCisgICAgICAgICAgICAiYnVuZGxlUGF0aCIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRsZVVSTCwKKyAgICAgICAgICAgICJi
dW5kbGVVUkwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidW5kbGVXaXRoUGF0aF8s
CisgICAgICAgICAgICAiYnVuZGxlV2l0aFBhdGg6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoYnVuZGxlV2l0aFVSTF8sCisgICAgICAgICAgICAiYnVuZGxlV2l0aFVSTDoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjaGFyYWN0ZXJBdEluZGV4XywKKyAgICAgICAgICAg
ICJjaGFyYWN0ZXJBdEluZGV4OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNoYXJW
YWx1ZSwKKyAgICAgICAgICAgICJjaGFyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChjb3VudEJ5RW51bWVyYXRpbmdXaXRoU3RhdGVfb2JqZWN0c19jb3VudF8sCisgICAgICAg
ICAgICAiY291bnRCeUVudW1lcmF0aW5nV2l0aFN0YXRlOm9iamVjdHM6Y291bnQ6Iik7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9TRUwoY1N0cmluZ1VzaW5nRW5jb2RpbmdfLAorICAgICAgICAg
ICAgImNTdHJpbmdVc2luZ0VuY29kaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGNvZGUsCisgICAgICAgICAgICAiY29kZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGNvbXBhcmVfLAorICAgICAgICAgICAgImNvbXBhcmU6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoY29weSwKKyAgICAgICAgICAgICJjb3B5Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoY291bnQsCisgICAgICAgICAgICAiY291bnQiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93XywKKyAgICAgICAgICAgICJk
YXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGRlc2NyaXB0aW9uV2l0aExvY2FsZV8sCisgICAgICAgICAgICAiZGVzY3JpcHRpb25XaXRo
TG9jYWxlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRpc2FibGVBdXRvbWF0aWNU
ZXJtaW5hdGlvbl8sCisgICAgICAgICAgICAiZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uOiIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbiwK
KyAgICAgICAgICAgICJkaXNhYmxlU3VkZGVuVGVybWluYXRpb24iKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChkZWJ1Z0Rlc2NyaXB0aW9uLAorICAgICAgICAgICAgImRlYnVnRGVzY3Jp
cHRpb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRpY3Rp
b25hcnksCisgICAgICAgICAgICAiZGljdGlvbmFyeSIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGRpY3Rpb25hcnlXaXRoT2JqZWN0X2ZvcktleV8sCisgICAgICAgICAgICAiZGljdGlv
bmFyeVdpdGhPYmplY3Q6Zm9yS2V5OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRp
Y3Rpb25hcnlXaXRoT2JqZWN0c19mb3JLZXlzX2NvdW50XywKKyAgICAgICAgICAgICJkaWN0aW9u
YXJ5V2l0aE9iamVjdHM6Zm9yS2V5czpjb3VudDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChkb21haW4sCisgICAgICAgICAgICAiZG9tYWluIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoZG91YmxlVmFsdWUsCisgICAgICAgICAgICAiZG91YmxlVmFsdWUiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChkcmFpbiwKKyAgICAgICAgICAgICJkcmFpbiIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGVuYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uXywKKyAg
ICAgICAgICAgICJlbmFibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjoiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChlbmFibGVTdWRkZW5UZXJtaW5hdGlvbiwKKyAgICAgICAgICAgICJlbmFi
bGVTdWRkZW5UZXJtaW5hdGlvbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGVuZEFj
dGl2aXR5XywKKyAgICAgICAgICAgICJlbmRBY3Rpdml0eToiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChlbnZpcm9ubWVudCwKKyAgICAgICAgICAgICJlbnZpcm9ubWVudCIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGVycm9yV2l0aERvbWFpbl9jb2RlX3VzZXJJbmZvXywK
KyAgICAgICAgICAgICJlcnJvcldpdGhEb21haW46Y29kZTp1c2VySW5mbzoiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChleGVjdXRhYmxlUGF0aCwKKyAgICAgICAgICAgICJleGVjdXRh
YmxlUGF0aCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGV4ZWN1dGFibGVVUkwsCisg
ICAgICAgICAgICAiZXhlY3V0YWJsZVVSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwKKyAgICAgICAgICAgICJmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChmaWxlVVJMV2l0aFBhdGhf
LAorICAgICAgICAgICAgImZpbGVVUkxXaXRoUGF0aDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChmbG9hdFZhbHVlLAorICAgICAgICAgICAgImZsb2F0VmFsdWUiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChmdWxsVXNlck5hbWUsCisgICAgICAgICAgICAiZnVsbFVzZXJO
YW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZ2V0VmFsdWVfc2l6ZV8sCisgICAg
ICAgICAgICAiZ2V0VmFsdWU6c2l6ZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChn
bG9iYWxseVVuaXF1ZVN0cmluZywKKyAgICAgICAgICAgICJnbG9iYWxseVVuaXF1ZVN0cmluZyIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGhhc2gsCisgICAgICAgICAgICAiaGFzaCIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGhvc3ROYW1lLAorICAgICAgICAgICAgImhv
c3ROYW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5mb0RpY3Rpb25hcnksCisg
ICAgICAgICAgICAiaW5mb0RpY3Rpb25hcnkiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChpbml0LAorICAgICAgICAgICAgImluaXQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChpbml0RmlsZVVSTFdpdGhQYXRoXywKKyAgICAgICAgICAgICJpbml0RmlsZVVSTFdpdGhQYXRo
OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoQm9vbF8sCisgICAgICAg
ICAgICAiaW5pdFdpdGhCb29sOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRX
aXRoQnl0ZXNfb2JqQ1R5cGVfLAorICAgICAgICAgICAgImluaXRXaXRoQnl0ZXM6b2JqQ1R5cGU6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhCeXRlc05vQ29weV9sZW5n
dGhfZW5jb2RpbmdfZnJlZVdoZW5Eb25lXywKKyAgICAgICAgICAgICJpbml0V2l0aEJ5dGVzTm9D
b3B5Omxlbmd0aDplbmNvZGluZzpmcmVlV2hlbkRvbmU6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoaW5pdFdpdGhDaGFyXywKKyAgICAgICAgICAgICJpbml0V2l0aENoYXI6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhDb2Rlcl8sCisgICAgICAgICAgICAi
aW5pdFdpdGhDb2RlcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aENT
dHJpbmdfZW5jb2RpbmdfLAorICAgICAgICAgICAgImluaXRXaXRoQ1N0cmluZzplbmNvZGluZzoi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aERvbWFpbl9jb2RlX3VzZXJJ
bmZvXywKKyAgICAgICAgICAgICJpbml0V2l0aERvbWFpbjpjb2RlOnVzZXJJbmZvOiIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoRG91YmxlXywKKyAgICAgICAgICAgICJp
bml0V2l0aERvdWJsZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEZs
b2F0XywKKyAgICAgICAgICAgICJpbml0V2l0aEZsb2F0OiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKGluaXRXaXRoSW50XywKKyAgICAgICAgICAgICJpbml0V2l0aEludDoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aExvbmdfLAorICAgICAgICAgICAgImlu
aXRXaXRoTG9uZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aExvbmdM
b25nXywKKyAgICAgICAgICAgICJpbml0V2l0aExvbmdMb25nOiIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKGluaXRXaXRoT2JqZWN0c19jb3VudF8sCisgICAgICAgICAgICAiaW5pdFdp
dGhPYmplY3RzOmNvdW50OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRo
T2JqZWN0c19mb3JLZXlzX2NvdW50XywKKyAgICAgICAgICAgICJpbml0V2l0aE9iamVjdHM6Zm9y
S2V5czpjb3VudDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aFBhdGhf
LAorICAgICAgICAgICAgImluaXRXaXRoUGF0aDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChpbml0V2l0aFNob3J0XywKKyAgICAgICAgICAgICJpbml0V2l0aFNob3J0OiIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoU3RyaW5nXywKKyAgICAgICAgICAgICJp
bml0V2l0aFN0cmluZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aFVu
c2lnbmVkQ2hhcl8sCisgICAgICAgICAgICAiaW5pdFdpdGhVbnNpZ25lZENoYXI6Iik7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZEludF8sCisgICAgICAgICAg
ICAiaW5pdFdpdGhVbnNpZ25lZEludDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChp
bml0V2l0aFVuc2lnbmVkTG9uZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhVbnNpZ25lZExvbmc6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZExvbmdMb25n
XywKKyAgICAgICAgICAgICJpbml0V2l0aFVuc2lnbmVkTG9uZ0xvbmc6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZFNob3J0XywKKyAgICAgICAgICAgICJp
bml0V2l0aFVuc2lnbmVkU2hvcnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5p
dFdpdGhVUkxfLAorICAgICAgICAgICAgImluaXRXaXRoVVJMOiIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKGludGVnZXJWYWx1ZSwKKyAgICAgICAgICAgICJpbnRlZ2VyVmFsdWUiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbnRWYWx1ZSwKKyAgICAgICAgICAgICJpbnRW
YWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlzRXF1YWxfLAorICAgICAgICAg
ICAgImlzRXF1YWw6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaXNFcXVhbFRvTnVt
YmVyXywKKyAgICAgICAgICAgICJpc0VxdWFsVG9OdW1iZXI6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoaXNFcXVhbFRvU3RyaW5nXywKKyAgICAgICAgICAgICJpc0VxdWFsVG9TdHJp
bmc6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaXNFcXVhbFRvVmFsdWVfLAorICAg
ICAgICAgICAgImlzRXF1YWxUb1ZhbHVlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGlzaU9TQXBwT25NYWMsCisgICAgICAgICAgICAiaXNpT1NBcHBPbk1hYyIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGlzTG9hZGVkLAorICAgICAgICAgICAgImlzTG9hZGVkIik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaXNMb3dQb3dlck1vZGVFbmFibGVkLAorICAgICAg
ICAgICAgImlzTG93UG93ZXJNb2RlRW5hYmxlZCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGlzTWFjQ2F0YWx5c3RBcHAsCisgICAgICAgICAgICAiaXNNYWNDYXRhbHlzdEFwcCIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNp
b25fLAorICAgICAgICAgICAgImlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNpb246Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoa2V5RW51bWVyYXRvciwKKyAgICAgICAgICAgICJr
ZXlFbnVtZXJhdG9yIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobGVuZ3RoLAorICAg
ICAgICAgICAgImxlbmd0aCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxlbmd0aE9m
Qnl0ZXNVc2luZ0VuY29kaW5nXywKKyAgICAgICAgICAgICJsZW5ndGhPZkJ5dGVzVXNpbmdFbmNv
ZGluZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2FkLAorICAgICAgICAgICAg
ImxvYWQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2FkQW5kUmV0dXJuRXJyb3Jf
LAorICAgICAgICAgICAgImxvYWRBbmRSZXR1cm5FcnJvcjoiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChsb2NhbGl6ZWREZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICJsb2NhbGl6ZWRE
ZXNjcmlwdGlvbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZEZhaWx1
cmVSZWFzb24sCisgICAgICAgICAgICAibG9jYWxpemVkRmFpbHVyZVJlYXNvbiIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZEluZm9EaWN0aW9uYXJ5LAorICAgICAgICAg
ICAgImxvY2FsaXplZEluZm9EaWN0aW9uYXJ5Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwobG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zLAorICAgICAgICAgICAgImxvY2FsaXplZFJlY292
ZXJ5T3B0aW9ucyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZFJlY292
ZXJ5U3VnZ2VzdGlvbiwKKyAgICAgICAgICAgICJsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24i
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2NhbGl6ZWRTdHJpbmdGb3JLZXlfdmFs
dWVfdGFibGVfLAorICAgICAgICAgICAgImxvY2FsaXplZFN0cmluZ0ZvcktleTp2YWx1ZTp0YWJs
ZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2NrLAorICAgICAgICAgICAgImxv
Y2siKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb25nVmFsdWUsCisgICAgICAgICAg
ICAibG9uZ1ZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobG9uZ0xvbmdWYWx1
ZSwKKyAgICAgICAgICAgICJsb25nTG9uZ1ZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwobWFpbkJ1bmRsZSwKKyAgICAgICAgICAgICJtYWluQnVuZGxlIik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwobWF4aW11bUxlbmd0aE9mQnl0ZXNVc2luZ0VuY29kaW5nXywKKyAg
ICAgICAgICAgICJtYXhpbXVtTGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwobWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3JfLAorICAgICAg
ICAgICAgIm1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKG11dGFibGVCeXRlcywKKyAgICAgICAgICAgICJtdXRhYmxlQnl0ZXMiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChuYW1lLAorICAgICAgICAgICAgIm5hbWUiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChuZXh0T2JqZWN0LAorICAgICAgICAgICAgIm5leHRP
YmplY3QiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoQm9vbF8sCisg
ICAgICAgICAgICAibnVtYmVyV2l0aEJvb2w6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwobnVtYmVyV2l0aENoYXJfLAorICAgICAgICAgICAgIm51bWJlcldpdGhDaGFyOiIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhEb3VibGVfLAorICAgICAgICAgICAg
Im51bWJlcldpdGhEb3VibGU6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVy
V2l0aEZsb2F0XywKKyAgICAgICAgICAgICJudW1iZXJXaXRoRmxvYXQ6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aEludF8sCisgICAgICAgICAgICAibnVtYmVyV2l0
aEludDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoTG9uZ18sCisg
ICAgICAgICAgICAibnVtYmVyV2l0aExvbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwobnVtYmVyV2l0aExvbmdMb25nXywKKyAgICAgICAgICAgICJudW1iZXJXaXRoTG9uZ0xvbmc6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aFNob3J0XywKKyAgICAg
ICAgICAgICJudW1iZXJXaXRoU2hvcnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
bnVtYmVyV2l0aFVuc2lnbmVkQ2hhcl8sCisgICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVk
Q2hhcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoVW5zaWduZWRJ
bnRfLAorICAgICAgICAgICAgIm51bWJlcldpdGhVbnNpZ25lZEludDoiKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoVW5zaWduZWRMb25nXywKKyAgICAgICAgICAgICJu
dW1iZXJXaXRoVW5zaWduZWRMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51
bWJlcldpdGhVbnNpZ25lZExvbmdMb25nXywKKyAgICAgICAgICAgICJudW1iZXJXaXRoVW5zaWdu
ZWRMb25nTG9uZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoVW5z
aWduZWRTaG9ydF8sCisgICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkU2hvcnQ6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob2JqQ1R5cGUsCisgICAgICAgICAgICAib2JqQ1R5
cGUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChvYmplY3QsCisgICAgICAgICAgICAi
b2JqZWN0Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob2JqZWN0QXRJbmRleF8sCisg
ICAgICAgICAgICAib2JqZWN0QXRJbmRleDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleV8sCisgICAgICAgICAgICAib2JqZWN0Rm9ySW5m
b0RpY3Rpb25hcnlLZXk6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob2JqZWN0Rm9y
S2V5XywKKyAgICAgICAgICAgICJvYmplY3RGb3JLZXk6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwob3BlcmF0aW5nU3lzdGVtLAorICAgICAgICAgICAgIm9wZXJhdGluZ1N5c3RlbSIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG9wZXJhdGluZ1N5c3RlbVZlcnNpb24sCisg
ICAgICAgICAgICAib3BlcmF0aW5nU3lzdGVtVmVyc2lvbiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKG9wZXJhdGluZ1N5c3RlbVZlcnNpb25TdHJpbmcsCisgICAgICAgICAgICAib3Bl
cmF0aW5nU3lzdGVtVmVyc2lvblN0cmluZyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlXywKKyAgICAgICAgICAgICJwYXRoRm9yQXV4aWxp
YXJ5RXhlY3V0YWJsZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwZXJmb3JtQWN0
aXZpdHlXaXRoT3B0aW9uc19yZWFzb25fdXNpbmdCbG9ja18sCisgICAgICAgICAgICAicGVyZm9y
bUFjdGl2aXR5V2l0aE9wdGlvbnM6cmVhc29uOnVzaW5nQmxvY2s6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwocGVyZm9ybUV4cGlyaW5nQWN0aXZpdHlXaXRoUmVhc29uX3VzaW5nQmxv
Y2tfLAorICAgICAgICAgICAgInBlcmZvcm1FeHBpcmluZ0FjdGl2aXR5V2l0aFJlYXNvbjp1c2lu
Z0Jsb2NrOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBoeXNpY2FsTWVtb3J5LAor
ICAgICAgICAgICAgInBoeXNpY2FsTWVtb3J5Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwocG9pbnRlclZhbHVlLAorICAgICAgICAgICAgInBvaW50ZXJWYWx1ZSIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKHByZWZsaWdodEFuZFJldHVybkVycm9yXywKKyAgICAgICAgICAg
ICJwcmVmbGlnaHRBbmRSZXR1cm5FcnJvcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChwcml2YXRlRnJhbWV3b3Jrc1BhdGgsCisgICAgICAgICAgICAicHJpdmF0ZUZyYW1ld29ya3NQ
YXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJpdmF0ZUZyYW1ld29ya3NVUkws
CisgICAgICAgICAgICAicHJpdmF0ZUZyYW1ld29ya3NVUkwiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChwcm9jZXNzSWRlbnRpZmllciwKKyAgICAgICAgICAgICJwcm9jZXNzSWRlbnRp
ZmllciIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHByb2Nlc3NJbmZvLAorICAgICAg
ICAgICAgInByb2Nlc3NJbmZvIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJvY2Vz
c05hbWUsCisgICAgICAgICAgICAicHJvY2Vzc05hbWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChwcm9jZXNzb3JDb3VudCwKKyAgICAgICAgICAgICJwcm9jZXNzb3JDb3VudCIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHJhbmdlT2ZTdHJpbmdfb3B0aW9uc18sCisgICAg
ICAgICAgICAicmFuZ2VPZlN0cmluZzpvcHRpb25zOiIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKHJlbGVhc2UsCisgICAgICAgICAgICAicmVsZWFzZSIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKHJlc291cmNlUGF0aCwKKyAgICAgICAgICAgICJyZXNvdXJjZVBhdGgiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVVSTCwKKyAgICAgICAgICAgICJy
ZXNvdXJjZVVSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHJlc3BvbmRzVG9TZWxl
Y3Rvcl8sCisgICAgICAgICAgICAicmVzcG9uZHNUb1NlbGVjdG9yOiIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKHJldGFpbiwKKyAgICAgICAgICAgICJyZXRhaW4iKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChyZXRhaW5Db3VudCwKKyAgICAgICAgICAgICJyZXRhaW5Db3Vu
dCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHNldEF1dG9tYXRpY1Rlcm1pbmF0aW9u
U3VwcG9ydEVuYWJsZWRfLAorICAgICAgICAgICAgInNldEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3Vw
cG9ydEVuYWJsZWQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2V0UHJvY2Vzc05h
bWVfLAorICAgICAgICAgICAgInNldFByb2Nlc3NOYW1lOiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKHNoYXJlZEZyYW1ld29ya3NQYXRoLAorICAgICAgICAgICAgInNoYXJlZEZyYW1l
d29ya3NQYXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2hhcmVkRnJhbWV3b3Jr
c1VSTCwKKyAgICAgICAgICAgICJzaGFyZWRGcmFtZXdvcmtzVVJMIik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoc2hhcmVkU3VwcG9ydFBhdGgsCisgICAgICAgICAgICAic2hhcmVkU3Vw
cG9ydFBhdGgiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzaGFyZWRTdXBwb3J0VVJM
LAorICAgICAgICAgICAgInNoYXJlZFN1cHBvcnRVUkwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChzaG9ydFZhbHVlLAorICAgICAgICAgICAgInNob3J0VmFsdWUiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChzaG93UG9vbHMsCisgICAgICAgICAgICAic2hvd1Bvb2xzIik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2lnbmFsLAorICAgICAgICAgICAgInNpZ25h
bCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHN0cmluZywKKyAgICAgICAgICAgICJz
dHJpbmciKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzdHJpbmdWYWx1ZSwKKyAgICAg
ICAgICAgICJzdHJpbmdWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHN0cmlu
Z1dpdGhTdHJpbmdfLAorICAgICAgICAgICAgInN0cmluZ1dpdGhTdHJpbmc6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoc3RyaW5nV2l0aENTdHJpbmdfZW5jb2RpbmdfLAorICAgICAg
ICAgICAgInN0cmluZ1dpdGhDU3RyaW5nOmVuY29kaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nXywKKyAgICAgICAgICAgICJzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzeXN0ZW1V
cHRpbWUsCisgICAgICAgICAgICAic3lzdGVtVXB0aW1lIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwodGhlcm1hbFN0YXRlLAorICAgICAgICAgICAgInRoZXJtYWxTdGF0ZSIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVubG9hZCwKKyAgICAgICAgICAgICJ1bmxvYWQiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bmxvY2ssCisgICAgICAgICAgICAidW5sb2Nr
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodW5zaWduZWRDaGFyVmFsdWUsCisgICAg
ICAgICAgICAidW5zaWduZWRDaGFyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TCh1bnNpZ25lZEludGVnZXJWYWx1ZSwKKyAgICAgICAgICAgICJ1bnNpZ25lZEludGVnZXJWYWx1
ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVuc2lnbmVkSW50VmFsdWUsCisgICAg
ICAgICAgICAidW5zaWduZWRJbnRWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHVuc2lnbmVkTG9uZ1ZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkTG9uZ1ZhbHVlIik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodW5zaWduZWRMb25nTG9uZ1ZhbHVlLAorICAgICAg
ICAgICAgInVuc2lnbmVkTG9uZ0xvbmdWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKHVuc2lnbmVkU2hvcnRWYWx1ZSwKKyAgICAgICAgICAgICJ1bnNpZ25lZFNob3J0VmFsdWUi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChVUkxGb3JBdXhpbGlhcnlFeGVjdXRhYmxl
XywKKyAgICAgICAgICAgICJVUkxGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOiIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKHVzZXJJbmZvLAorICAgICAgICAgICAgInVzZXJJbmZvIik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodXNlck5hbWUsCisgICAgICAgICAgICAidXNlck5h
bWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChVVEY4U3RyaW5nLAorICAgICAgICAg
ICAgIlVURjhTdHJpbmciKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh2YWx1ZVdpdGhC
eXRlc19vYmpDVHlwZV8sCisgICAgICAgICAgICAidmFsdWVXaXRoQnl0ZXM6b2JqQ1R5cGU6Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodmFsdWVXaXRoUG9pbnRlcl8sCisgICAgICAg
ICAgICAidmFsdWVXaXRoUG9pbnRlcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh3
YWl0LAorICAgICAgICAgICAgIndhaXQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh3
YWl0VW50aWxEYXRlXywKKyAgICAgICAgICAgICJ3YWl0VW50aWxEYXRlOiIpOworICAgIH0gLy8g
Q2xhc3MKK30gLy8gUHJpdmF0ZQorfSAvLyBNVEwKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU1Byb2Nlc3NJbmZvLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUHJvY2Vzc0luZm8uaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4
ZTMxNDdmZThhN2M2OGQyZmFjYzNhNmVkNDc3ZjY3NTFlZTVkZTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1Byb2Nlc3NJbmZv
LmhwcApAQCAtMCwwICsxLDM1NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU1Byb2Nlc3NJbmZvLmhwcAorLy8KKy8v
IENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk5TTm90aWZpY2F0aW9uLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5o
cHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKwor
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK19OU19DT05TVChOb3RpZmljYXRpb25O
YW1lLCBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbik7CitfTlNf
Q09OU1QoTm90aWZpY2F0aW9uTmFtZSwgUHJvY2Vzc0luZm9Qb3dlclN0YXRlRGlkQ2hhbmdlTm90
aWZpY2F0aW9uKTsKKworX05TX0VOVU0oTlM6OkludGVnZXIsIFByb2Nlc3NJbmZvVGhlcm1hbFN0
YXRlKSB7CisgICAgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVOb21pbmFsID0gMCwKKyAgICBQcm9j
ZXNzSW5mb1RoZXJtYWxTdGF0ZUZhaXIgPSAxLAorICAgIFByb2Nlc3NJbmZvVGhlcm1hbFN0YXRl
U2VyaW91cyA9IDIsCisgICAgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVDcml0aWNhbCA9IDMKK307
CisKK19OU19PUFRJT05TKHN0ZDo6dWludDY0X3QsIEFjdGl2aXR5T3B0aW9ucykgeworICAgIEFj
dGl2aXR5SWRsZURpc3BsYXlTbGVlcERpc2FibGVkID0gKDFVTEwgPDwgNDApLAorICAgIEFjdGl2
aXR5SWRsZVN5c3RlbVNsZWVwRGlzYWJsZWQgPSAoMVVMTCA8PCAyMCksCisgICAgQWN0aXZpdHlT
dWRkZW5UZXJtaW5hdGlvbkRpc2FibGVkID0gKDFVTEwgPDwgMTQpLAorICAgIEFjdGl2aXR5QXV0
b21hdGljVGVybWluYXRpb25EaXNhYmxlZCA9ICgxVUxMIDw8IDE1KSwKKyAgICBBY3Rpdml0eVVz
ZXJJbml0aWF0ZWQgPSAoMHgwMEZGRkZGRlVMTCB8IEFjdGl2aXR5SWRsZVN5c3RlbVNsZWVwRGlz
YWJsZWQpLAorICAgIEFjdGl2aXR5VXNlckluaXRpYXRlZEFsbG93aW5nSWRsZVN5c3RlbVNsZWVw
ID0gKEFjdGl2aXR5VXNlckluaXRpYXRlZCAmIH5BY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2Fi
bGVkKSwKKyAgICBBY3Rpdml0eUJhY2tncm91bmQgPSAweDAwMDAwMEZGVUxMLAorICAgIEFjdGl2
aXR5TGF0ZW5jeUNyaXRpY2FsID0gMHhGRjAwMDAwMDAwVUxMLAorfTsKKworY2xhc3MgUHJvY2Vz
c0luZm8gOiBwdWJsaWMgUmVmZXJlbmNpbmc8UHJvY2Vzc0luZm8+Cit7CitwdWJsaWM6CisgICAg
c3RhdGljIFByb2Nlc3NJbmZvKiAgICAgcHJvY2Vzc0luZm8oKTsKKworICAgIGNsYXNzIEFycmF5
KiAgICAgICAgICAgIGFyZ3VtZW50cygpIGNvbnN0OworICAgIGNsYXNzIERpY3Rpb25hcnkqICAg
ICAgIGVudmlyb25tZW50KCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgICAgICAgaG9z
dE5hbWUoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBwcm9jZXNzTmFtZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIHNldFByb2Nlc3NOYW1lKGNvbnN0
IFN0cmluZyogcFN0cmluZyk7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0lk
ZW50aWZpZXIoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBnbG9iYWxseVVu
aXF1ZVN0cmluZygpIGNvbnN0OworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgICAgICAgdXNlck5h
bWUoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBmdWxsVXNlck5hbWUoKSBj
b25zdDsKKworICAgIFVJbnRlZ2VyICAgICAgICAgICAgICAgIG9wZXJhdGluZ1N5c3RlbSgpIGNv
bnN0OworICAgIE9wZXJhdGluZ1N5c3RlbVZlcnNpb24gIG9wZXJhdGluZ1N5c3RlbVZlcnNpb24o
KSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBvcGVyYXRpbmdTeXN0ZW1WZXJz
aW9uU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgaXNPcGVyYXRp
bmdTeXN0ZW1BdExlYXN0VmVyc2lvbihPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIHZlcnNpb24pIGNv
bnN0OworCisgICAgVUludGVnZXIgICAgICAgICAgICAgICAgcHJvY2Vzc29yQ291bnQoKSBjb25z
dDsKKyAgICBVSW50ZWdlciAgICAgICAgICAgICAgICBhY3RpdmVQcm9jZXNzb3JDb3VudCgpIGNv
bnN0OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAgICAgIHBoeXNpY2FsTWVtb3J5KCkgY29uc3Q7
CisgICAgVGltZUludGVydmFsICAgICAgICAgICAgc3lzdGVtVXB0aW1lKCkgY29uc3Q7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICBkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKTsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICBlbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uKGNv
bnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbik7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ZW5hYmxlQXV0b21hdGljVGVybWluYXRpb24oY29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uKTsK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRF
bmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgc2V0QXV0b21hdGlj
VGVybWluYXRpb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQpOworCisgICAgY2xhc3MgT2Jq
ZWN0KiAgICAgICAgICAgYmVnaW5BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgY29u
c3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uKTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBl
bmRBY3Rpdml0eShjbGFzcyBPYmplY3QqIHBBY3Rpdml0eSk7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgcGVyZm9ybUFjdGl2aXR5KEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zLCBjb25zdCBj
bGFzcyBTdHJpbmcqIHBSZWFzb24sIHZvaWQgKF5ibG9jaykodm9pZCkpOworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgIHBlcmZvcm1BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywg
Y29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4m
IGZ1bmMpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1FeHBpcmluZ0FjdGl2
aXR5KGNvbnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbiwgdm9pZCAoXmJsb2NrKShib29sIGV4cGly
ZWQpKTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBwZXJmb3JtRXhwaXJpbmdBY3Rpdml0
eShjb25zdCBjbGFzcyBTdHJpbmcqIHBSZWFzb24sIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChi
b29sIGV4cGlyZWQpPiYgZnVuYyk7CisKKyAgICBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZSB0aGVy
bWFsU3RhdGUoKSBjb25zdDsKKyAgICBib29sICAgICAgICAgICAgICAgICAgICBpc0xvd1Bvd2Vy
TW9kZUVuYWJsZWQoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGlzaU9T
QXBwT25NYWMoKSBjb25zdDsKKyAgICBib29sICAgICAgICAgICAgICAgICAgICBpc01hY0NhdGFs
eXN0QXBwKCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpOb3RpZmljYXRpb25O
YW1lLCBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbik7CitfTlNf
UFJJVkFURV9ERUZfQ09OU1QoTlM6Ok5vdGlmaWNhdGlvbk5hbWUsIFByb2Nlc3NJbmZvUG93ZXJT
dGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbik7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpQcm9jZXNzSW5mbyogTlM6OlBy
b2Nlc3NJbmZvOjpwcm9jZXNzSW5mbygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8UHJvY2Vzc0luZm8qPihfTlNfUFJJVkFURV9DTFMoTlNQcm9jZXNzSW5mbyksIF9OU19QUklW
QVRFX1NFTChwcm9jZXNzSW5mbykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpQcm9jZXNzSW5m
bzo6YXJndW1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxB
cnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhcmd1bWVudHMpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRp
Y3Rpb25hcnkqIE5TOjpQcm9jZXNzSW5mbzo6ZW52aXJvbm1lbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoZW52aXJvbm1lbnQpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZvOjpo
b3N0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5n
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGhvc3ROYW1lKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcq
IE5TOjpQcm9jZXNzSW5mbzo6cHJvY2Vzc05hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwcm9jZXNzTmFt
ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6c2V0UHJvY2Vzc05hbWUoY29uc3Qg
U3RyaW5nKiBwU3RyaW5nKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X05TX1BSSVZBVEVfU0VMKHNldFByb2Nlc3NOYW1lXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBpbnQg
TlM6OlByb2Nlc3NJbmZvOjpwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8aW50Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc0lk
ZW50aWZpZXIpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZvOjpnbG9iYWxs
eVVuaXF1ZVN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGdsb2JhbGx5VW5pcXVlU3RyaW5nKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6dXNlck5hbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJ
VkFURV9TRUwodXNlck5hbWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZv
OjpmdWxsVXNlck5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
U2FmZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZnVsbFVzZXJOYW1lKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpVSW50ZWdlciBOUzo6UHJvY2Vzc0luZm86Om9wZXJhdGluZ1N5c3RlbSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChvcGVyYXRpbmdTeXN0ZW0pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok9wZXJhdGluZ1N5c3Rl
bVZlcnNpb24gTlM6OlByb2Nlc3NJbmZvOjpvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxPcGVyYXRpbmdTeXN0ZW1WZXJzaW9u
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwob3BlcmF0aW5nU3lzdGVtVmVyc2lvbikpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6U3RyaW5nKiBOUzo6UHJvY2Vzc0luZm86Om9wZXJhdGluZ1N5c3RlbVZlcnNpb25TdHJp
bmcoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uU3RyaW5nKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIGJvb2wgTlM6OlByb2Nlc3NJbmZvOjppc09wZXJhdGluZ1N5c3RlbUF0TGVhc3RWZXJzaW9u
KE9wZXJhdGluZ1N5c3RlbVZlcnNpb24gdmVyc2lvbikgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaXNPcGVyYXRpbmdT
eXN0ZW1BdExlYXN0VmVyc2lvbl8pLCB2ZXJzaW9uKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5T
OjpQcm9jZXNzSW5mbzo6cHJvY2Vzc29yQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc29y
Q291bnQpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpQcm9jZXNzSW5mbzo6YWN0aXZlUHJv
Y2Vzc29yQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJ
bnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYWN0aXZlUHJvY2Vzc29yQ291bnQpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgdW5zaWduZWQgbG9uZyBsb25nIE5TOjpQcm9jZXNzSW5mbzo6cGh5c2ljYWxNZW1vcnko
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVkIGxvbmcg
bG9uZz4odGhpcywgX05TX1BSSVZBVEVfU0VMKHBoeXNpY2FsTWVtb3J5KSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpUaW1lSW50ZXJ2YWwgTlM6OlByb2Nlc3NJbmZvOjpzeXN0ZW1VcHRpbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFRpbWVJbnRlcnZhbD4odGhpcywgX05TX1BS
SVZBVEVfU0VMKHN5c3RlbVVwdGltZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6
ZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlU2Fm
ZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZvOjplbmFibGVTdWRkZW5UZXJtaW5hdGlvbigp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJ
bmZvOjpkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb24oY29uc3QgU3RyaW5nKiBwUmVhc29uKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb25fKSwgcFJlYXNvbik7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQg
TlM6OlByb2Nlc3NJbmZvOjplbmFibGVBdXRvbWF0aWNUZXJtaW5hdGlvbihjb25zdCBTdHJpbmcq
IHBSZWFzb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGVuYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uXyksIHBSZWFzb24pOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBib29sIE5TOjpQcm9jZXNzSW5mbzo6YXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5h
YmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChhdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVk
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZvOjpzZXRBdXRvbWF0aWNUZXJtaW5hdGlv
blN1cHBvcnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
U2FmZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc2V0QXV0b21hdGljVGVybWluYXRpb25T
dXBwb3J0RW5hYmxlZF8pLCBlbmFibGVkKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok9iamVjdCogTlM6OlByb2Nl
c3NJbmZvOjpiZWdpbkFjdGl2aXR5KEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zLCBjb25zdCBTdHJp
bmcqIHBSZWFzb24pCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8T2JqZWN0Kj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uc19yZWFzb25fKSwg
b3B0aW9ucywgcFJlYXNvbik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZvOjplbmRBY3Rp
dml0eShPYmplY3QqIHBBY3Rpdml0eSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChlbmRBY3Rpdml0eV8pLCBwQWN0aXZpdHkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6cGVyZm9ybUFjdGl2aXR5KEFjdGl2aXR5T3B0aW9ucyBv
cHRpb25zLCBjb25zdCBTdHJpbmcqIHBSZWFzb24sIHZvaWQgKF5ibG9jaykodm9pZCkpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocGVyZm9y
bUFjdGl2aXR5V2l0aE9wdGlvbnNfcmVhc29uX3VzaW5nQmxvY2tfKSwgb3B0aW9ucywgcFJlYXNv
biwgYmxvY2spOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6cGVyZm9ybUFjdGl2aXR5
KEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zLCBjb25zdCBTdHJpbmcqIHBSZWFzb24sIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgX19ibG9jayBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gYmxvY2tGdW5jdGlvbiA9IGZ1bmN0aW9uOworCisgICAgcGVyZm9ybUFjdGl2
aXR5KG9wdGlvbnMsIHBSZWFzb24sIF4oKSB7IGJsb2NrRnVuY3Rpb24oKTsgfSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IHZvaWQgTlM6OlByb2Nlc3NJbmZvOjpwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShjb25zdCBTdHJp
bmcqIHBSZWFzb24sIHZvaWQgKF5ibG9jaykoYm9vbCBleHBpcmVkKSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlU2FmZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocGVyZm9ybUV4cGly
aW5nQWN0aXZpdHlXaXRoUmVhc29uX3VzaW5nQmxvY2tfKSwgcFJlYXNvbiwgYmxvY2spOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6cGVyZm9ybUV4cGlyaW5nQWN0aXZpdHkoY29uc3Qg
U3RyaW5nKiBwUmVhc29uLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBleHBpcmVkKT4m
IGZ1bmN0aW9uKQoreworICAgIF9fYmxvY2sgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wgZXhwaXJl
ZCk+IGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIHBlcmZvcm1FeHBpcmluZ0FjdGl2
aXR5KHBSZWFzb24sIF4oYm9vbCBleHBpcmVkKSB7IGJsb2NrRnVuY3Rpb24oZXhwaXJlZCk7IH0p
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6UHJvY2Vzc0luZm9UaGVybWFsU3RhdGUgTlM6OlByb2Nlc3NJbmZvOjp0
aGVybWFsU3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFBy
b2Nlc3NJbmZvVGhlcm1hbFN0YXRlPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodGhlcm1hbFN0YXRl
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIGJvb2wgTlM6OlByb2Nlc3NJbmZvOjppc0xvd1Bvd2VyTW9kZUVuYWJsZWQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaXNMb3dQb3dlck1vZGVFbmFibGVkKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wg
TlM6OlByb2Nlc3NJbmZvOjppc2lPU0FwcE9uTWFjKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzaU9TQXBw
T25NYWMpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6UHJvY2Vzc0luZm86OmlzTWFjQ2F0YWx5c3RBcHAo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaXNNYWNDYXRhbHlzdEFwcCkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUmFuZ2UuaHBwIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI0
NjdkNjBjZWUzM2FiMjhiMDgxZTBkMmRkNTM3Mjg3NjViMGE4YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUmFuZ2UuaHBwCkBA
IC0wLDAgKzEsODMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNSYW5nZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAy
MC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRl
ICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK25hbWVzcGFjZSBOUworeworc3RydWN0IFJhbmdlCit7CisgICAgc3RhdGljIFJh
bmdlIE1ha2UoVUludGVnZXIgbG9jLCBVSW50ZWdlciBsZW4pOworCisgICAgUmFuZ2UoVUludGVn
ZXIgbG9jLCBVSW50ZWdlciBsZW4pOworCisgICAgYm9vbCAgICAgRXF1YWwoY29uc3QgUmFuZ2Um
IHJhbmdlKSBjb25zdDsKKyAgICBib29sICAgICBMb2NhdGlvbkluUmFuZ2UoVUludGVnZXIgbG9j
KSBjb25zdDsKKyAgICBVSW50ZWdlciBNYXgoKSBjb25zdDsKKworICAgIFVJbnRlZ2VyIGxvY2F0
aW9uOworICAgIFVJbnRlZ2VyIGxlbmd0aDsKK30gX05TX1BBQ0tFRDsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlJh
bmdlOjpSYW5nZShVSW50ZWdlciBsb2MsIFVJbnRlZ2VyIGxlbikKKyAgICA6IGxvY2F0aW9uKGxv
YykKKyAgICAsIGxlbmd0aChsZW4pCit7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpSYW5nZSBOUzo6UmFuZ2U6Ok1h
a2UoVUludGVnZXIgbG9jLCBVSW50ZWdlciBsZW4pCit7CisgICAgcmV0dXJuIFJhbmdlKGxvYywg
bGVuKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgYm9vbCBOUzo6UmFuZ2U6OkVxdWFsKGNvbnN0IFJhbmdlJiByYW5nZSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKGxvY2F0aW9uID09IHJhbmdlLmxvY2F0aW9uKSAmJiAobGVu
Z3RoID09IHJhbmdlLmxlbmd0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlJhbmdlOjpMb2NhdGlvbklu
UmFuZ2UoVUludGVnZXIgbG9jKSBjb25zdAoreworICAgIHJldHVybiAoIShsb2MgPCBsb2NhdGlv
bikpICYmICgobG9jIC0gbG9jYXRpb24pIDwgbGVuZ3RoKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2Vy
IE5TOjpSYW5nZTo6TWF4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbG9jYXRpb24gKyBsZW5ndGg7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNTdHJp
bmcuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNTdHJp
bmcuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgyOWRlY2I5MDFmNzM1ZTE0ZTg3ZjBlYmU4ZmQ5MTdhYTRlMDJm
OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9OU1N0cmluZy5ocHAKQEAgLTAsMCArMSwyNDUgQEAKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNTdHJpbmcu
aHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUg
Ik5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJp
dmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNSYW5nZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAi
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1l
c3BhY2UgTlMKK3sKK19OU19FTlVNKE5TOjpVSW50ZWdlciwgU3RyaW5nRW5jb2RpbmcpIHsKKyAg
ICBBU0NJSVN0cmluZ0VuY29kaW5nID0gMSwKKyAgICBORVhUU1RFUFN0cmluZ0VuY29kaW5nID0g
MiwKKyAgICBKYXBhbmVzZUVVQ1N0cmluZ0VuY29kaW5nID0gMywKKyAgICBVVEY4U3RyaW5nRW5j
b2RpbmcgPSA0LAorICAgIElTT0xhdGluMVN0cmluZ0VuY29kaW5nID0gNSwKKyAgICBTeW1ib2xT
dHJpbmdFbmNvZGluZyA9IDYsCisgICAgTm9uTG9zc3lBU0NJSVN0cmluZ0VuY29kaW5nID0gNywK
KyAgICBTaGlmdEpJU1N0cmluZ0VuY29kaW5nID0gOCwKKyAgICBJU09MYXRpbjJTdHJpbmdFbmNv
ZGluZyA9IDksCisgICAgVW5pY29kZVN0cmluZ0VuY29kaW5nID0gMTAsCisgICAgV2luZG93c0NQ
MTI1MVN0cmluZ0VuY29kaW5nID0gMTEsCisgICAgV2luZG93c0NQMTI1MlN0cmluZ0VuY29kaW5n
ID0gMTIsCisgICAgV2luZG93c0NQMTI1M1N0cmluZ0VuY29kaW5nID0gMTMsCisgICAgV2luZG93
c0NQMTI1NFN0cmluZ0VuY29kaW5nID0gMTQsCisgICAgV2luZG93c0NQMTI1MFN0cmluZ0VuY29k
aW5nID0gMTUsCisgICAgSVNPMjAyMkpQU3RyaW5nRW5jb2RpbmcgPSAyMSwKKyAgICBNYWNPU1Jv
bWFuU3RyaW5nRW5jb2RpbmcgPSAzMCwKKworICAgIFVURjE2U3RyaW5nRW5jb2RpbmcgPSBVbmlj
b2RlU3RyaW5nRW5jb2RpbmcsCisKKyAgICBVVEYxNkJpZ0VuZGlhblN0cmluZ0VuY29kaW5nID0g
MHg5MDAwMDEwMCwKKyAgICBVVEYxNkxpdHRsZUVuZGlhblN0cmluZ0VuY29kaW5nID0gMHg5NDAw
MDEwMCwKKworICAgIFVURjMyU3RyaW5nRW5jb2RpbmcgPSAweDhjMDAwMTAwLAorICAgIFVURjMy
QmlnRW5kaWFuU3RyaW5nRW5jb2RpbmcgPSAweDk4MDAwMTAwLAorICAgIFVURjMyTGl0dGxlRW5k
aWFuU3RyaW5nRW5jb2RpbmcgPSAweDljMDAwMTAwCit9OworCitfTlNfT1BUSU9OUyhOUzo6VUlu
dGVnZXIsIFN0cmluZ0NvbXBhcmVPcHRpb25zKSB7CisgICAgQ2FzZUluc2Vuc2l0aXZlU2VhcmNo
ID0gMSwKKyAgICBMaXRlcmFsU2VhcmNoID0gMiwKKyAgICBCYWNrd2FyZHNTZWFyY2ggPSA0LAor
ICAgIEFuY2hvcmVkU2VhcmNoID0gOCwKKyAgICBOdW1lcmljU2VhcmNoID0gNjQsCisgICAgRGlh
Y3JpdGljSW5zZW5zaXRpdmVTZWFyY2ggPSAxMjgsCisgICAgV2lkdGhJbnNlbnNpdGl2ZVNlYXJj
aCA9IDI1NiwKKyAgICBGb3JjZWRPcmRlcmluZ1NlYXJjaCA9IDUxMiwKKyAgICBSZWd1bGFyRXhw
cmVzc2lvblNlYXJjaCA9IDEwMjQKK307CisKK3VzaW5nIHVuaWNoYXIgPSB1bnNpZ25lZCBzaG9y
dDsKKworY2xhc3MgU3RyaW5nIDogcHVibGljIENvcHlpbmc8U3RyaW5nPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBTdHJpbmcqIHN0cmluZygpOworICAgIHN0YXRpYyBTdHJpbmcqIHN0cmluZyhj
b25zdCBTdHJpbmcqIHBTdHJpbmcpOworICAgIHN0YXRpYyBTdHJpbmcqIHN0cmluZyhjb25zdCBj
aGFyKiBwU3RyaW5nLCBTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7CisKKyAgICBzdGF0aWMgU3Ry
aW5nKiBhbGxvYygpOworICAgIFN0cmluZyogICAgICAgIGluaXQoKTsKKyAgICBTdHJpbmcqICAg
ICAgICBpbml0KGNvbnN0IFN0cmluZyogcFN0cmluZyk7CisgICAgU3RyaW5nKiAgICAgICAgaW5p
dChjb25zdCBjaGFyKiBwU3RyaW5nLCBTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7CisgICAgU3Ry
aW5nKiAgICAgICAgaW5pdCh2b2lkKiBwQnl0ZXMsIFVJbnRlZ2VyIGxlbiwgU3RyaW5nRW5jb2Rp
bmcgZW5jb2RpbmcsIGJvb2wgZnJlZUJ1ZmZlcik7CisKKyAgICB1bmljaGFyICAgICAgICBjaGFy
YWN0ZXIoVUludGVnZXIgaW5kZXgpIGNvbnN0OworICAgIFVJbnRlZ2VyICAgICAgIGxlbmd0aCgp
IGNvbnN0OworCisgICAgY29uc3QgY2hhciogICAgY1N0cmluZyhTdHJpbmdFbmNvZGluZyBlbmNv
ZGluZykgY29uc3Q7CisgICAgY29uc3QgY2hhciogICAgdXRmOFN0cmluZygpIGNvbnN0OworICAg
IFVJbnRlZ2VyICAgICAgIG1heGltdW1MZW5ndGhPZkJ5dGVzKFN0cmluZ0VuY29kaW5nIGVuY29k
aW5nKSBjb25zdDsKKyAgICBVSW50ZWdlciAgICAgICBsZW5ndGhPZkJ5dGVzKFN0cmluZ0VuY29k
aW5nIGVuY29kaW5nKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgIGlzRXF1YWxUb1N0cmlu
Zyhjb25zdCBTdHJpbmcqIHBTdHJpbmcpIGNvbnN0OworICAgIFJhbmdlICAgICAgICAgIHJhbmdl
T2ZTdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nLCBTdHJpbmdDb21wYXJlT3B0aW9ucyBvcHRp
b25zKSBjb25zdDsKKworICAgIGNvbnN0IGNoYXIqICAgIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigpIGNvbnN0OworCisgICAgU3RyaW5nKiAgICAgICAgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmco
Y29uc3QgU3RyaW5nKiBwU3RyaW5nKSBjb25zdDsKKworfTsKKwordGVtcGxhdGU8IHN0ZDo6c2l6
ZV90IF9TdHJpbmdMZW4gPgorY29uc3RleHByIGNvbnN0IFN0cmluZyogTWFrZUNvbnN0YW50U3Ry
aW5nKCBjb25zdCBjaGFyICggJnN0ciApW19TdHJpbmdMZW5dICkKK3sKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDwgY29uc3QgU3RyaW5nKiA+KCBfX0NGU3RyaW5nTWFrZUNvbnN0YW50U3Ry
aW5nKCBzdHIgKSApOworfQorCit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OnN0cmlu
ZygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4oX05TX1BSSVZB
VEVfQ0xTKE5TU3RyaW5nKSwgX05TX1BSSVZBVEVfU0VMKHN0cmluZykpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
U3RyaW5nKiBOUzo6U3RyaW5nOjpzdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KF9OU19QUklWQVRFX0NMUyhOU1N0
cmluZyksIF9OU19QUklWQVRFX1NFTChzdHJpbmdXaXRoU3RyaW5nXyksIHBTdHJpbmcpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjpzdHJpbmcoY29uc3QgY2hhciogcFN0cmluZywg
U3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8U3RyaW5nKj4oX05TX1BSSVZBVEVfQ0xTKE5TU3RyaW5nKSwgX05TX1BSSVZBVEVfU0VMKHN0
cmluZ1dpdGhDU3RyaW5nX2VuY29kaW5nXyksIHBTdHJpbmcsIGVuY29kaW5nKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlN0cmluZyogTlM6OlN0cmluZzo6YWxsb2MoKQoreworICAgIHJldHVybiBPYmplY3Q6OmFs
bG9jPFN0cmluZz4oX05TX1BSSVZBVEVfQ0xTKE5TU3RyaW5nKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJp
bmcqIE5TOjpTdHJpbmc6OmluaXQoKQoreworICAgIHJldHVybiBPYmplY3Q6OmluaXQ8U3RyaW5n
PigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KGNvbnN0IFN0cmluZyog
cFN0cmluZykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhTdHJpbmdfKSwgcFN0cmluZyk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpTdHJpbmcqIE5TOjpTdHJpbmc6OmluaXQoY29uc3QgY2hhciogcFN0cmluZywgU3RyaW5nRW5j
b2RpbmcgZW5jb2RpbmcpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5n
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQ1N0cmluZ19lbmNvZGluZ18pLCBwU3Ry
aW5nLCBlbmNvZGluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OmluaXQodm9p
ZCogcEJ5dGVzLCBVSW50ZWdlciBsZW4sIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nLCBib29sIGZy
ZWVCdWZmZXIpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQnl0ZXNOb0NvcHlfbGVuZ3RoX2VuY29kaW5nX2Zy
ZWVXaGVuRG9uZV8pLCBwQnl0ZXMsIGxlbiwgZW5jb2RpbmcsIGZyZWVCdWZmZXIpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6dW5pY2hhciBOUzo6U3RyaW5nOjpjaGFyYWN0ZXIoVUludGVnZXIgaW5kZXgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5pY2hhcj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKGNoYXJhY3RlckF0SW5kZXhfKSwgaW5kZXgpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVn
ZXIgTlM6OlN0cmluZzo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxlbmd0aCkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBjb25zdCBjaGFyKiBOUzo6U3RyaW5nOjpjU3RyaW5nKFN0cmluZ0VuY29kaW5nIGVuY29kaW5n
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNvbnN0IGNoYXIqPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwoY1N0cmluZ1VzaW5nRW5jb2RpbmdfKSwgZW5jb2RpbmcpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBjb25zdCBjaGFyKiBOUzo6U3RyaW5nOjp1dGY4U3RyaW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxjb25zdCBjaGFyKj4odGhpcywgX05TX1BSSVZB
VEVfU0VMKFVURjhTdHJpbmcpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpTdHJpbmc6Om1h
eGltdW1MZW5ndGhPZkJ5dGVzKFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwobWF4aW11bUxlbmd0aE9mQnl0ZXNVc2luZ0VuY29kaW5nXyksIGVuY29kaW5nKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE5TOjpTdHJpbmc6Omxlbmd0aE9mQnl0ZXMoU3RyaW5nRW5jb2Rpbmcg
ZW5jb2RpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVn
ZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZ18pLCBl
bmNvZGluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlN0cmluZzo6aXNFcXVhbFRvU3RyaW5nKGNvbnN0
IE5TOjpTdHJpbmcqIHBTdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzRXF1YWxUb1N0cmluZ18pLCBwU3Ry
aW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgTlM6OlJhbmdlIE5TOjpTdHJpbmc6OnJhbmdlT2ZTdHJpbmcoY29uc3Qg
TlM6OlN0cmluZyogcFN0cmluZywgTlM6OlN0cmluZ0NvbXBhcmVPcHRpb25zIG9wdGlvbnMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8UmFuZ2U+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChyYW5nZU9mU3RyaW5nX29wdGlvbnNfKSwgcFN0cmluZywgb3B0aW9ucyk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IGNvbnN0IGNoYXIqIE5TOjpTdHJpbmc6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Y29uc3QgY2hhcio+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0
cmluZyogTlM6OlN0cmluZzo6c3RyaW5nQnlBcHBlbmRpbmdTdHJpbmcoY29uc3QgU3RyaW5nKiBw
U3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJp
bmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmdfKSwgcFN0
cmluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNUeXBlcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9O
U1R5cGVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjhhZGExMmNlOGZiZmIzY2E5NmI4ZDU4NTYyMjQ2MTcx
OWU4N2U0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L0ZvdW5kYXRpb24vTlNUeXBlcy5ocHAKQEAgLTAsMCArMSw1MSBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU1R5cGVz
LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRl
ICJOU0RlZmluZXMuaHBwIgorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KKyNpbmNsdWRlIDxjc3RkaW50PgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7Cit1c2luZyBUaW1lSW50ZXJ2YWwg
PSBkb3VibGU7CisKK3VzaW5nIEludGVnZXIgPSBzdGQ6OmludHB0cl90OwordXNpbmcgVUludGVn
ZXIgPSBzdGQ6OnVpbnRwdHJfdDsKKworY29uc3QgSW50ZWdlciAgSW50ZWdlck1heCA9IElOVFBU
Ul9NQVg7Citjb25zdCBJbnRlZ2VyICBJbnRlZ2VyTWluID0gSU5UUFRSX01JTjsKK2NvbnN0IFVJ
bnRlZ2VyIFVJbnRlZ2VyTWF4ID0gVUlOVFBUUl9NQVg7CisKK3N0cnVjdCBPcGVyYXRpbmdTeXN0
ZW1WZXJzaW9uCit7CisgICAgSW50ZWdlciBtYWpvclZlcnNpb247CisgICAgSW50ZWdlciBtaW5v
clZlcnNpb247CisgICAgSW50ZWdlciBwYXRjaFZlcnNpb247Cit9IF9OU19QQUNLRUQ7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjExMGU3YTIwNzcwNzM0ZGZkYTJjZGU3NzRkYWE0YzQzMjI0ZGRiZDAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1VS
TC5ocHAKQEAgLTAsMCArMSw5MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU1VSTC5ocHAKKy8vCisvLyBDb3B5cmln
aHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNp
bmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhwcCIKKyNpbmNsdWRl
ICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK25hbWVzcGFjZSBOUworeworY2xhc3MgVVJMIDogcHVibGljIENvcHlpbmc8VVJM
PgoreworcHVibGljOgorICAgIHN0YXRpYyBVUkwqIGZpbGVVUkxXaXRoUGF0aChjb25zdCBjbGFz
cyBTdHJpbmcqIHBQYXRoKTsKKworICAgIHN0YXRpYyBVUkwqIGFsbG9jKCk7CisgICAgVVJMKiAg
ICAgICAgaW5pdCgpOworICAgIFVSTCogICAgICAgIGluaXQoY29uc3QgY2xhc3MgU3RyaW5nKiBw
U3RyaW5nKTsKKyAgICBVUkwqICAgICAgICBpbml0RmlsZVVSTFdpdGhQYXRoKGNvbnN0IGNsYXNz
IFN0cmluZyogcFBhdGgpOworCisgICAgY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjpmaWxlVVJMV2l0aFBh
dGgoY29uc3QgU3RyaW5nKiBwUGF0aCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxVUkwqPihfTlNfUFJJVkFURV9DTFMoTlNVUkwpLCBfTlNfUFJJVkFURV9TRUwoZmlsZVVSTFdp
dGhQYXRoXyksIHBQYXRoKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OlVSTDo6YWxsb2MoKQorewor
ICAgIHJldHVybiBPYmplY3Q6OmFsbG9jPFVSTD4oX05TX1BSSVZBVEVfQ0xTKE5TVVJMKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpVUkwqIE5TOjpVUkw6OmluaXQoKQoreworICAgIHJldHVybiBPYmplY3Q6Omlu
aXQ8VVJMPigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjppbml0KGNvbnN0IFN0cmluZyog
cFN0cmluZykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoaW5pdFdpdGhTdHJpbmdfKSwgcFN0cmluZyk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpV
UkwqIE5TOjpVUkw6OmluaXRGaWxlVVJMV2l0aFBhdGgoY29uc3QgU3RyaW5nKiBwUGF0aCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoaW5pdEZpbGVVUkxXaXRoUGF0aF8pLCBwUGF0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGNvbnN0IGNoYXIqIE5T
OjpVUkw6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8Y29uc3QgY2hhcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTElDRU5TRS50eHQgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTElDRU5T
RS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWU3NDNjNjdlOWZkMzY0OWNjMGUxYzg2YjkxMTFlZTFlYTI1OTM5
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9MSUNF
TlNFLnR4dApAQCAtMCwwICsxLDIwMiBAQAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBcGFjaGUgTGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAy
LjAsIEphbnVhcnkgMjAwNAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzLworCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBS
T0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KKworICAgMS4gRGVmaW5pdGlvbnMuCisKKyAgICAg
ICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCBy
ZXByb2R1Y3Rpb24sCisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlv
bnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KKworICAgICAgIkxpY2Vuc29yIiBzaGFs
bCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAg
IHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KKworICAg
ICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRp
dHkgYW5kIGFsbAorICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJv
bGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50
aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKKyAgICAgICJjb250cm9s
IiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQor
ICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkg
Y29udHJhY3Qgb3IKKyAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkg
cGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQorICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBv
ciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworICAgICAgIllv
dSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQor
ICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KKwor
ICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFr
aW5nIG1vZGlmaWNhdGlvbnMsCisgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNv
ZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCisgICAgICBzb3VyY2UsIGFuZCBjb25m
aWd1cmF0aW9uIGZpbGVzLgorCisgICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZv
cm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAorICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJh
bnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAorICAgICAgbm90IGxpbWl0
ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAorICAg
ICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgorCisgICAgICAiV29yayIg
c2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgor
ICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBp
bmRpY2F0ZWQgYnkgYQorICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGlu
IG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCisgICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBp
biB0aGUgQXBwZW5kaXggYmVsb3cpLgorCisgICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwg
bWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0CisgICAgICBmb3JtLCB0
aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2gg
dGhlCisgICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25z
LCBvciBvdGhlciBtb2RpZmljYXRpb25zCisgICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFu
IG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcworICAgICAgb2Yg
dGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRo
YXQgcmVtYWluCisgICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQg
YnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZh
dGl2ZSBXb3JrcyB0aGVyZW9mLgorCisgICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFu
eSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZworICAgICAgdGhlIG9yaWdpbmFsIHZlcnNp
b24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucworICAgICAg
dG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRp
b25hbGx5CisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUg
V29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCisgICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9y
IExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKKyAgICAgIHRo
ZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAi
c3VibWl0dGVkIgorICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBv
ciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAorICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0
cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KKyAgICAgIGNv
bW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250
cm9sIHN5c3RlbXMsCisgICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBt
YW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQorICAgICAgTGljZW5zb3IgZm9yIHRoZSBw
dXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0CisgICAgICBl
eGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90
aGVyd2lzZQorICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3du
ZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCisKKyAgICAgICJDb250cmlidXRvciIgc2hhbGwg
bWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBv
biBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNl
bnNvciBhbmQKKyAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3Jr
LgorCisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVy
bXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRv
ciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9u
LWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICBj
b3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBv
ZiwKKyAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2Us
IGFuZCBkaXN0cmlidXRlIHRoZQorICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtz
IGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KKworICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vu
c2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExp
Y2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWws
CisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVl
LCBpcnJldm9jYWJsZQorICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBw
YXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCisgICAgICB1c2UsIG9mZmVyIHRvIHNl
bGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKKyAgICAg
IHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBs
aWNlbnNhYmxlCisgICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5
IGluZnJpbmdlZCBieSB0aGVpcgorICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNv
bWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQorICAgICAgd2l0aCB0aGUgV29yayB0
byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKKyAgICAg
IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGlu
ZyBhCisgICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxl
Z2luZyB0aGF0IHRoZSBXb3JrCisgICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQg
d2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAorICAgICAgb3IgY29udHJpYnV0b3J5
IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworICAgICAgZ3Jh
bnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWlu
YXRlCisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKKyAg
IDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3Bp
ZXMgb2YgdGhlCisgICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkg
bWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3Vy
Y2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CisgICAgICBtZWV0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczoKKworICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJl
Y2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKKyAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29w
eSBvZiB0aGlzIExpY2Vuc2U7IGFuZAorCisgICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1v
ZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgICAgICAgc3RhdGlu
ZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCisKKyAgICAgIChjKSBZb3UgbXVzdCBy
ZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcworICAgICAg
ICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJr
LCBhbmQKKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3Jt
IG9mIHRoZSBXb3JrLAorICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8g
bm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKKyAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3Jr
czsgYW5kCisKKyAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQg
ZmlsZSBhcyBwYXJ0IG9mIGl0cworICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVy
aXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKKyAgICAgICAgICBpbmNsdWRl
IGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKKyAg
ICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMg
dGhhdCBkbyBub3QKKyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0
aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKKyAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBs
YWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAorICAgICAgICAgIGFz
IHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IK
KyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJp
dmF0aXZlIFdvcmtzOyBvciwKKyAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBi
eSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCisgICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0
aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCisgICAgICAg
ICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5
IGFuZAorICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlv
dXIgb3duIGF0dHJpYnV0aW9uCisgICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBX
b3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKKyAgICAgICAgICBvciBhcyBhbiBh
ZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKKyAgICAg
ICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBj
b25zdHJ1ZWQKKyAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgIFlv
dSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRp
b25zIGFuZAorICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5z
ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBk
aXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgorICAgICAgZm9yIGFueSBzdWNo
IERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCisgICAgICBy
ZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBs
aWVzIHdpdGgKKyAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisK
KyAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5
IHN0YXRlIG90aGVyd2lzZSwKKyAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBz
dWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaworICAgICAgYnkgWW91IHRvIHRoZSBM
aWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAg
IHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25z
LgorICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwg
c3VwZXJzZWRlIG9yIG1vZGlmeQorICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNl
bnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKKyAgICAgIHdpdGggTGljZW5zb3Ig
cmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KKworICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBM
aWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQorICAgICAg
bmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhl
IExpY2Vuc29yLAorICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBj
dXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCisgICAgICBvcmlnaW4gb2YgdGhlIFdvcmsg
YW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KKworICAgNy4g
RGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yCisgICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdv
cmsgKGFuZCBlYWNoCisgICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9u
cykgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorICAgICAgaW1wbGllZCwgaW5j
bHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMK
KyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJ
VE5FU1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVz
cG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQorICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVz
aW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CisgICAgICByaXNr
cyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlz
IExpY2Vuc2UuCisKKyAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBh
bmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAorICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRp
bmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCisgICAgICB1bmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQor
ICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkg
Q29udHJpYnV0b3IgYmUKKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGlu
ZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKKyAgICAgIGluY2lkZW50YWwsIG9yIGNv
bnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQorICAgICAg
cmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8g
dXNlIHRoZQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2Vz
IGZvciBsb3NzIG9mIGdvb2R3aWxsLAorICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFp
bHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKKyAgICAgIG90aGVyIGNvbW1lcmNp
YWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhh
cyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KKworICAg
OS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRp
c3RyaWJ1dGluZworICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZ
b3UgbWF5IGNob29zZSB0byBvZmZlciwKKyAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2Nl
cHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCisgICAgICBvciBvdGhlciBs
aWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcwor
ICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlv
dSBtYXkgYWN0IG9ubHkKKyAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xl
IHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCisgICAgICBvZiBhbnkgb3RoZXIgQ29udHJp
YnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCisgICAgICBkZWZlbmQs
IGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKKyAg
ICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmli
dXRvciBieSByZWFzb24KKyAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5
IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgorCisgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElP
TlMKKworICAgQVBQRU5ESVg6IEhvdyB0byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91
ciB3b3JrLgorCisgICAgICBUbyBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3Jr
LCBhdHRhY2ggdGhlIGZvbGxvd2luZworICAgICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRoIHRo
ZSBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tldHMgIltdIgorICAgICAgcmVwbGFjZWQgd2l0aCB5
b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKKyAgICAgIHRo
ZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJp
YXRlCisgICAgICBjb21tZW50IHN5bnRheCBmb3IgdGhlIGZpbGUgZm9ybWF0LiBXZSBhbHNvIHJl
Y29tbWVuZCB0aGF0IGEKKyAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24g
b2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKKyAgICAgIHNhbWUgInByaW50ZWQgcGFnZSIg
YXMgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIGVhc2llcgorICAgICAgaWRlbnRpZmljYXRpb24g
d2l0aGluIHRoaXJkLXBhcnR5IGFyY2hpdmVzLgorCisgICBDb3B5cmlnaHQgwqkgMjAyMSBBcHBs
ZSBJbmMuCisKKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKworICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNj
ZWxlcmF0aW9uU3RydWN0dXJlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNDU2Yzg3MTIy
N2RiOWM0MjBiMTdhYTcxNTdmOGY4NTFlZGU2ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhw
cApAQCAtMCwwICsxLDkzMiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBw
PgorCisjaW5jbHVkZSAiTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcCIKKyNpbmNsdWRlICJN
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2Uu
aHBwIgorI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcCIKKworbmFt
ZXNwYWNlIE1UTAoreworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlVXNhZ2UpIHsKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZU5vbmUgPSAwLAor
ICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlUmVmaXQgPSAxLAorICAgIEFjY2VsZXJhdGlv
blN0cnVjdHVyZVVzYWdlUHJlZmVyRmFzdEJ1aWxkID0gMiwKKyAgICBBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVVc2FnZUV4dGVuZGVkTGltaXRzID0gNCwKK307CisKK19NVExfT1BUSU9OUyh1aW50MzJf
dCwgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25zKSB7CisgICAgQWNjZWxlcmF0
aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25Ob25lID0gMCwKKyAgICBBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVJbnN0YW5jZU9wdGlvbkRpc2FibGVUcmlhbmdsZUN1bGxpbmcgPSAxLAorICAgIEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlT3B0aW9uVHJpYW5nbGVGcm9udEZhY2luZ1dpbmRpbmdD
b3VudGVyQ2xvY2t3aXNlID0gMiwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9w
dGlvbk9wYXF1ZSA9IDQsCisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25O
b25PcGFxdWUgPSA4LAorfTsKKworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRv
ciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlw
dG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRv
ciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2Ug
ICAgICAgICAgICAgICB1c2FnZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRVc2FnZShNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZVVzYWdlIHVzYWdlKTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5
RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9t
ZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlT2Zmc2V0KE5TOjpVSW50ZWdlciBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
T2Zmc2V0KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wYXF1ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9wYXF1ZShib29sIG9wYXF1ZSk7CisK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbigpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uKGJvb2wgYWxs
b3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24pOworCisgICAgTlM6OlN0
cmluZyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7Cit9OworCitfTVRMX0VO
VU0odWludDMyX3QsIE1vdGlvbkJvcmRlck1vZGUpIHsKKyAgICBNb3Rpb25Cb3JkZXJNb2RlQ2xh
bXAgPSAwLAorICAgIE1vdGlvbkJvcmRlck1vZGVWYW5pc2ggPSAxLAorfTsKKworY2xhc3MgUHJp
bWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWlu
ZzxQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yLCBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFBy
aW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBj
bGFzcyBQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiAgICAgICAgaW5p
dCgpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdlb21ldHJ5RGVzY3JpcHRvcnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0R2VvbWV0cnlEZXNj
cmlwdG9ycyhjb25zdCBOUzo6QXJyYXkqIGdlb21ldHJ5RGVzY3JpcHRvcnMpOworCisgICAgTVRM
OjpNb3Rpb25Cb3JkZXJNb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlv
blN0YXJ0Qm9yZGVyTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNb3Rpb25TdGFydEJvcmRlck1vZGUoTVRM
OjpNb3Rpb25Cb3JkZXJNb2RlIG1vdGlvblN0YXJ0Qm9yZGVyTW9kZSk7CisKKyAgICBNVEw6Ok1v
dGlvbkJvcmRlck1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW90aW9uRW5k
Qm9yZGVyTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRNb3Rpb25FbmRCb3JkZXJNb2RlKE1UTDo6TW90aW9u
Qm9yZGVyTW9kZSBtb3Rpb25FbmRCb3JkZXJNb2RlKTsKKworICAgIGZsb2F0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25TdGFydFRpbWUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0TW90aW9uU3RhcnRUaW1lKGZsb2F0IG1vdGlvblN0YXJ0VGltZSk7CisKKyAg
ICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bW90aW9uRW5kVGltZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNb3Rpb25FbmRUaW1lKGZsb2F0IG1vdGlvbkVu
ZFRpbWUpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vdGlvbktleWZyYW1lQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW90aW9uS2V5
ZnJhbWVDb3VudChOUzo6VUludGVnZXIgbW90aW9uS2V5ZnJhbWVDb3VudCk7CisKKyAgICBzdGF0
aWMgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiAgZGVzY3Jp
cHRvcigpOworfTsKKworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRy
eURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3IsIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0
cnlEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNz
IEFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiAgICAgICAg
aW5pdCgpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZl
cnRleEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIHZlcnRleEJ1ZmZlcik7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZlcnRleEJ1ZmZlck9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4QnVmZmVyT2Zm
c2V0KE5TOjpVSW50ZWdlciB2ZXJ0ZXhCdWZmZXJPZmZzZXQpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhT
dHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleFN0cmlkZShOUzo6VUludGVnZXIgdmVy
dGV4U3RyaWRlKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEluZGV4QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleEJ1ZmZlck9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhCdWZmZXJPZmZz
ZXQoTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0KTsKKworICAgIE1UTDo6SW5kZXhUeXBl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhUeXBl
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRJbmRleFR5cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBl
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHJpYW5nbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VHJpYW5n
bGVDb3VudChOUzo6VUludGVnZXIgdHJpYW5nbGVDb3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogIGRlc2NyaXB0
b3IoKTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEFjY2VsZXJhdGlvblN0cnVjdHVyZUJv
dW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yLCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdl
b21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQWNjZWxlcmF0
aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAg
ICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRv
ciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3hCdWZmZXIoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEJvdW5kaW5nQm94QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciog
Ym91bmRpbmdCb3hCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGluZ0JveEJ1ZmZlck9mZnNl
dCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXQoTlM6OlVJ
bnRlZ2VyIGJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdC
b3hTdHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJvdW5kaW5nQm94U3RyaWRlKE5TOjpV
SW50ZWdlciBib3VuZGluZ0JveFN0cmlkZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94Q291
bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJvdW5kaW5nQm94Q291bnQoTlM6OlVJbnRlZ2Vy
IGJvdW5kaW5nQm94Q291bnQpOworCisgICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitj
bGFzcyBNb3Rpb25LZXlmcmFtZURhdGEgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPE1vdGlvbktl
eWZyYW1lRGF0YT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgTW90aW9uS2V5ZnJhbWVE
YXRhKiBhbGxvYygpOworCisgICAgY2xhc3MgTW90aW9uS2V5ZnJhbWVEYXRhKiAgICAgICAgaW5p
dCgpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICAgYnVmZmVyKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QnVmZmVyKGNvbnN0
IGNsYXNzIEJ1ZmZlciogYnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgICAgIG9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldE9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIHN0YXRpYyBNVEw6Ok1v
dGlvbktleWZyYW1lRGF0YSogIGRhdGEoKTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5n
PEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yLCBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9t
ZXRyeURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAg
IE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmVydGV4QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVy
dGV4QnVmZmVycyhjb25zdCBOUzo6QXJyYXkqIHZlcnRleEJ1ZmZlcnMpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ZXJ0ZXhTdHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleFN0cmlk
ZShOUzo6VUludGVnZXIgdmVydGV4U3RyaWRlKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhCdWZm
ZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluZGV4QnVmZmVyKGNvbnN0IGNsYXNzIEJ1
ZmZlciogaW5kZXhCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEJ1ZmZlck9mZnNldCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2Vy
IGluZGV4QnVmZmVyT2Zmc2V0KTsKKworICAgIE1UTDo6SW5kZXhUeXBlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhUeXBlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRJbmRleFR5cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKTsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHJpYW5nbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0VHJpYW5nbGVDb3VudChOUzo6VUludGVnZXIgdHJpYW5nbGVDb3VudCk7CisKKyAgICBzdGF0
aWMgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3Jp
cHRvciogIGRlc2NyaXB0b3IoKTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZU1v
dGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEFj
Y2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yLCBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hH
ZW9tZXRyeURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsK
KworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3hCdWZmZXJzKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRCb3VuZGluZ0JveEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiBib3VuZGlu
Z0JveEJ1ZmZlcnMpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGluZ0JveFN0cmlkZSgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hTdHJpZGUoTlM6OlVJbnRlZ2Vy
IGJvdW5kaW5nQm94U3RyaWRlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3hDb3Vu
dCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hDb3VudChOUzo6VUlu
dGVnZXIgYm91bmRpbmdCb3hDb3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogIGRlc2NyaXB0b3Io
KTsKK307CisKK3N0cnVjdCBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3IK
K3sKKyAgICBNVEw6OlBhY2tlZEZsb2F0NHgzICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zv
cm1hdGlvbk1hdHJpeDsKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlT3B0
aW9ucyBvcHRpb25zOworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hc2s7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldDsKKyAgICB1aW50MzJfdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbmRleDsKK30gX01U
TF9QQUNLRUQ7CisKK3N0cnVjdCBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2VySURJbnN0YW5jZURl
c2NyaXB0b3IKK3sKKyAgICBNVEw6OlBhY2tlZEZsb2F0NHgzICAgICAgICAgICAgICAgICAgICAg
ICB0cmFuc2Zvcm1hdGlvbk1hdHJpeDsKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUlu
c3RhbmNlT3B0aW9ucyBvcHRpb25zOworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hc2s7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldDsKKyAgICB1aW50MzJfdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbmRl
eDsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySUQ7
Cit9IF9NVExfUEFDS0VEOworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlKSB7CisgICAgQWNjZWxlcmF0aW9uU3RydWN0
dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlwZURlZmF1bHQgPSAwLAorICAgIEFjY2VsZXJhdGlvblN0
cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGVVc2VySUQgPSAxLAorICAgIEFjY2VsZXJhdGlv
blN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGVNb3Rpb24gPSAyLAorfTsKKworc3RydWN0
IEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkluc3RhbmNlRGVzY3JpcHRvcgoreworICAgIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25zIG9wdGlvbnM7CisgICAgdWlu
dDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzazsKKyAgICB1aW50MzJf
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlT2Zmc2V0OworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFjY2VsZXJhdGlvblN0cnVjdHVyZUluZGV4OworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVzZXJJRDsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtb3Rpb25UcmFuc2Zvcm1zU3RhcnRJbmRleDsKKyAgICB1aW50MzJf
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25UcmFuc2Zvcm1zQ291bnQ7
CisgICAgTVRMOjpNb3Rpb25Cb3JkZXJNb2RlICAgICAgICAgICAgICAgICAgICAgbW90aW9uU3Rh
cnRCb3JkZXJNb2RlOworICAgIE1UTDo6TW90aW9uQm9yZGVyTW9kZSAgICAgICAgICAgICAgICAg
ICAgIG1vdGlvbkVuZEJvcmRlck1vZGU7CisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW90aW9uU3RhcnRUaW1lOworICAgIGZsb2F0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbkVuZFRpbWU7Cit9IF9NVExfUEFDS0VEOworCitj
bGFzcyBJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6
OkNvcHlpbmc8SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yLCBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIEluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIEluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogICAgICAg
IGluaXQoKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluc3Rh
bmNlRGVzY3JpcHRvckJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGluc3RhbmNlRGVzY3JpcHRv
ckJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVz
Y3JpcHRvckJ1ZmZlck9mZnNldCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZURlc2NyaXB0b3JTdHJpZGUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRJbnN0YW5jZURlc2NyaXB0b3JTdHJpZGUoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVz
Y3JpcHRvclN0cmlkZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VD
b3VudChOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZWRBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJl
cyhjb25zdCBOUzo6QXJyYXkqIGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMpOworCisg
ICAgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlICAgICAg
aW5zdGFuY2VEZXNjcmlwdG9yVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluc3RhbmNlRGVzY3JpcHRvclR5
cGUoTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlIGluc3Rh
bmNlRGVzY3JpcHRvclR5cGUpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbW90aW9uVHJhbnNmb3JtQnVmZmVyKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogbW90aW9uVHJhbnNm
b3JtQnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dE1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgbW90aW9uVHJhbnNmb3Jt
QnVmZmVyT2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vdGlvblRyYW5zZm9ybUNvdW50KCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW90
aW9uVHJhbnNmb3JtQ291bnQoTlM6OlVJbnRlZ2VyIG1vdGlvblRyYW5zZm9ybUNvdW50KTsKKwor
ICAgIHN0YXRpYyBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciog
IGRlc2NyaXB0b3IoKTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlLCBSZXNvdXJjZT4KK3sKK3B1
YmxpYzoKKyAgICBOUzo6VUludGVnZXIgc2l6ZSgpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVE
ZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogdXNhZ2UK
K19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2UgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjp1c2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh1c2FnZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0VXNhZ2UoTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVVc2FnZSB1c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VXNhZ2VfKSwgdXNhZ2UpOworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9t
ZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlw
dG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFj
Y2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNj
cmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OmludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlT2Zmc2V0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZz
ZXQoTlM6OlVJbnRlZ2VyIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXRfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9m
ZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBvcGFxdWUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6Om9wYXF1ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChvcGFxdWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPcGFx
dWVfKSwgb3BhcXVlKTsKK30KKworLy8gcHJvcGVydHk6IGFsbG93RHVwbGljYXRlSW50ZXJzZWN0
aW9uRnVuY3Rpb25JbnZvY2F0aW9uCitfTVRMX0lOTElORSBib29sIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjphbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1
bmN0aW9uSW52b2NhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlv
bkZ1bmN0aW9uSW52b2NhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRBbGxvd0R1cGxpY2F0ZUludGVy
c2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbihib29sIGFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9u
RnVuY3Rpb25JbnZvY2F0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRBbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9u
SW52b2NhdGlvbl8pLCBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlv
bik7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNj
cmlwdG9yKiBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpQcmltaXRpdmVBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFByaW1pdGl2
ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0
CitfTVRMX0lOTElORSBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0
b3IqIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpQcmltaXRpdmVBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogZ2VvbWV0cnlEZXNj
cmlwdG9ycworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3I6Omdlb21ldHJ5RGVzY3JpcHRvcnMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoZ2VvbWV0cnlEZXNjcmlwdG9ycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0R2VvbWV0cnlEZXNj
cmlwdG9ycyhjb25zdCBOUzo6QXJyYXkqIGdlb21ldHJ5RGVzY3JpcHRvcnMpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEdlb21ldHJ5
RGVzY3JpcHRvcnNfKSwgZ2VvbWV0cnlEZXNjcmlwdG9ycyk7Cit9CisKKy8vIHByb3BlcnR5OiBt
b3Rpb25TdGFydEJvcmRlck1vZGUKK19NVExfSU5MSU5FIE1UTDo6TW90aW9uQm9yZGVyTW9kZSBN
VEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvblN0YXJ0
Qm9yZGVyTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpNb3Rpb25Cb3JkZXJNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvblN0YXJ0Qm9y
ZGVyTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0
aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9uU3RhcnRCb3JkZXJNb2RlKE1UTDo6TW90
aW9uQm9yZGVyTW9kZSBtb3Rpb25TdGFydEJvcmRlck1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvblN0YXJ0Qm9yZGVy
TW9kZV8pLCBtb3Rpb25TdGFydEJvcmRlck1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9u
RW5kQm9yZGVyTW9kZQorX01UTF9JTkxJTkUgTVRMOjpNb3Rpb25Cb3JkZXJNb2RlIE1UTDo6UHJp
bWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uRW5kQm9yZGVyTW9k
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpNb3Rpb25C
b3JkZXJNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvbkVuZEJvcmRlck1vZGUpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3I6OnNldE1vdGlvbkVuZEJvcmRlck1vZGUoTVRMOjpNb3Rpb25Cb3JkZXJNb2Rl
IG1vdGlvbkVuZEJvcmRlck1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvbkVuZEJvcmRlck1vZGVfKSwgbW90aW9uRW5k
Qm9yZGVyTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25TdGFydFRpbWUKK19NVExfSU5M
SU5FIGZsb2F0IE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6
bW90aW9uU3RhcnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxmbG9hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25TdGFydFRpbWUpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2Ny
aXB0b3I6OnNldE1vdGlvblN0YXJ0VGltZShmbG9hdCBtb3Rpb25TdGFydFRpbWUpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlv
blN0YXJ0VGltZV8pLCBtb3Rpb25TdGFydFRpbWUpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9u
RW5kVGltZQorX01UTF9JTkxJTkUgZmxvYXQgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25FbmRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxmbG9hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25FbmRU
aW1lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25FbmRUaW1lKGZsb2F0IG1vdGlvbkVuZFRpbWUp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE1vdGlvbkVuZFRpbWVfKSwgbW90aW9uRW5kVGltZSk7Cit9CisKKy8vIHByb3BlcnR5OiBt
b3Rpb25LZXlmcmFtZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpQcmltaXRp
dmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25LZXlmcmFtZUNvdW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobW90aW9uS2V5ZnJhbWVDb3VudCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6
c2V0TW90aW9uS2V5ZnJhbWVDb3VudChOUzo6VUludGVnZXIgbW90aW9uS2V5ZnJhbWVDb3VudCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TW90aW9uS2V5ZnJhbWVDb3VudF8pLCBtb3Rpb25LZXlmcmFtZUNvdW50KTsKK30KKworLy8g
c3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpQcmltaXRpdmVBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0
cnVjdHVyZURlc2NyaXB0b3I6OmRlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcio+
KF9NVExfUFJJVkFURV9DTFMoTVRMUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3Jp
cHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3JpcHRvcikpOworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmds
ZUdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdl
b21ldHJ5RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlE
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmds
ZUdlb21ldHJ5RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEJ1ZmZlcgor
X01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5n
bGVHZW9tZXRyeURlc2NyaXB0b3I6OnZlcnRleEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHZlcnRleEJ1ZmZlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFZlcnRleEJ1ZmZlcihjb25z
dCBNVEw6OkJ1ZmZlciogdmVydGV4QnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJfKSwgdmVydGV4QnVm
ZmVyKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3I6OnZlcnRleEJ1ZmZlck9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRl
eEJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFZlcnRleEJ1ZmZlck9mZnNl
dChOUzo6VUludGVnZXIgdmVydGV4QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJPZmZzZXRf
KSwgdmVydGV4QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleFN0cmlkZQor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5n
bGVHZW9tZXRyeURlc2NyaXB0b3I6OnZlcnRleFN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHZlcnRleFN0cmlkZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFZlcnRleFN0cmlkZShOUzo6
VUludGVnZXIgdmVydGV4U3RyaWRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhTdHJpZGVfKSwgdmVydGV4U3RyaWRlKTsK
K30KKworLy8gcHJvcGVydHk6IGluZGV4QnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciog
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5k
ZXhCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleEJ1ZmZlcikpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3I6OnNldEluZGV4QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlcikK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0SW5kZXhCdWZmZXJfKSwgaW5kZXhCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhC
dWZmZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjppbmRleEJ1ZmZlck9mZnNldCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4QnVmZmVyT2Zmc2V0KSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
cjo6c2V0SW5kZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRJbmRleEJ1ZmZlck9mZnNldF8pLCBpbmRleEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBpbmRleFR5cGUKK19NVExfSU5MSU5FIE1UTDo6SW5kZXhUeXBlIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluZGV4VHlwZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRleFR5cGU+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaW5kZXhUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0SW5k
ZXhUeXBlKE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhUeXBlXyksIGluZGV4VHlw
ZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0cmlhbmdsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
cjo6dHJpYW5nbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRyaWFuZ2xlQ291bnQpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xl
R2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRUcmlhbmdsZUNvdW50KE5TOjpVSW50ZWdlciB0cmlhbmds
ZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRUcmlhbmdsZUNvdW50XyksIHRyaWFuZ2xlQ291bnQpOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2Vv
bWV0cnlEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3JpcHRv
cikpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKSk7Cit9CisKKy8v
IG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3Vu
ZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3Vu
ZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVz
Y3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGJvdW5kaW5nQm94QnVmZmVyCitfTVRMX0lO
TElORSBNVEw6OkJ1ZmZlciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdl
b21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChib3VuZGluZ0JveEJ1ZmZlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OnNldEJvdW5kaW5n
Qm94QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBib3VuZGluZ0JveEJ1ZmZlcikKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Qm91bmRp
bmdCb3hCdWZmZXJfKSwgYm91bmRpbmdCb3hCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogYm91
bmRpbmdCb3hCdWZmZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjpib3VuZGluZ0Jv
eEJ1ZmZlck9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJvdW5kaW5nQm94QnVmZmVyT2Zm
c2V0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVC
b3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXQo
TlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3VuZGluZ0JveEJ1ZmZl
ck9mZnNldF8pLCBib3VuZGluZ0JveEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBi
b3VuZGluZ0JveFN0cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94U3Ry
aWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hTdHJpZGUpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveFN0cmlkZShOUzo6VUludGVnZXIgYm91bmRpbmdC
b3hTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEJvdW5kaW5nQm94U3RyaWRlXyksIGJvdW5kaW5nQm94U3RyaWRlKTsKK30K
KworLy8gcHJvcGVydHk6IGJvdW5kaW5nQm94Q291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9y
Ojpib3VuZGluZ0JveENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hDb3Vu
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91
bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OnNldEJvdW5kaW5nQm94Q291bnQoTlM6OlVJbnRl
Z2VyIGJvdW5kaW5nQm94Q291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94Q291bnRfKSwgYm91bmRpbmdCb3hD
b3VudCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmRl
c2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlw
dG9yKSwgX01UTF9QUklWQVRFX1NFTChkZXNjcmlwdG9yKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6Ok1vdGlvbktleWZyYW1lRGF0YSogTVRMOjpNb3Rp
b25LZXlmcmFtZURhdGE6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpNb3Rpb25LZXlmcmFtZURhdGE+KF9NVExfUFJJVkFURV9DTFMoTVRMTW90aW9uS2V5ZnJh
bWVEYXRhKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpNb3Rpb25L
ZXlmcmFtZURhdGEqIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6Ok1vdGlvbktleWZyYW1lRGF0YT4oKTsKK30KKworLy8g
cHJvcGVydHk6IGJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6TW90aW9uS2V5
ZnJhbWVEYXRhOjpidWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXIpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6Ok1vdGlvbktleWZyYW1lRGF0YTo6c2V0QnVmZmVyKGNvbnN0
IE1UTDo6QnVmZmVyKiBidWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcl8pLCBidWZmZXIpOworfQorCisvLyBwcm9w
ZXJ0eTogb2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpNb3Rpb25LZXlmcmFt
ZURhdGE6Om9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9mZnNldCkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjpzZXRPZmZzZXQoTlM6OlVJbnRl
Z2VyIG9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0T2Zmc2V0XyksIG9mZnNldCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGRhdGEKK19NVExfSU5MSU5FIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhKiBNVEw6Ok1vdGlvbktl
eWZyYW1lRGF0YTo6ZGF0YSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpNb3Rpb25LZXlmcmFtZURhdGEqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTE1vdGlvbktleWZyYW1l
RGF0YSksIF9NVExfUFJJVkFURV9TRUwoZGF0YSkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Ucmlhbmds
ZUdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Ucmlh
bmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlE
ZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlv
blRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5
RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21l
dHJ5RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcj4o
KTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEJ1ZmZlcnMKK19NVExfSU5MSU5FIE5TOjpBcnJh
eSogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6dmVydGV4QnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZmZXJzKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25U
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VmVydGV4QnVmZmVycyhjb25zdCBOUzo6QXJy
YXkqIHZlcnRleEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEJ1ZmZlcnNfKSwgdmVydGV4QnVmZmVycyk7Cit9
CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhTdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9y
Ojp2ZXJ0ZXhTdHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhTdHJpZGUpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFu
Z2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRl
eFN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VmVydGV4U3RyaWRlXyksIHZlcnRleFN0cmlkZSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBpbmRleEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluZGV4QnVmZmVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXhCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjpzZXRJbmRleEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dEluZGV4QnVmZmVyXyksIGluZGV4QnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4QnVm
ZmVyT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5kZXhCdWZmZXJPZmZzZXQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleEJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRy
eURlc2NyaXB0b3I6OnNldEluZGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZl
ck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0SW5kZXhCdWZmZXJPZmZzZXRfKSwgaW5kZXhCdWZmZXJPZmZzZXQpOworfQor
CisvLyBwcm9wZXJ0eTogaW5kZXhUeXBlCitfTVRMX0lOTElORSBNVEw6OkluZGV4VHlwZSBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpp
bmRleFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
SW5kZXhUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4VHlwZSkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9t
ZXRyeURlc2NyaXB0b3I6OnNldEluZGV4VHlwZShNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dEluZGV4VHlwZV8pLCBpbmRleFR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogdHJpYW5nbGVDb3Vu
dAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90
aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnRyaWFuZ2xlQ291bnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh0cmlhbmdsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0
VHJpYW5nbGVDb3VudChOUzo6VUludGVnZXIgdHJpYW5nbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHJpYW5nbGVDb3Vu
dF8pLCB0cmlhbmdsZUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgor
X01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21l
dHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdl
b21ldHJ5RGVzY3JpcHRvcjo6ZGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5
RGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90
aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGRlc2NyaXB0
b3IpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0
b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcj4oX01UTF9Q
UklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21l
dHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3Iq
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2Ny
aXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9
CisKKy8vIHByb3BlcnR5OiBib3VuZGluZ0JveEJ1ZmZlcnMKK19NVExfSU5MSU5FIE5TOjpBcnJh
eSogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVz
Y3JpcHRvcjo6Ym91bmRpbmdCb3hCdWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJvdW5kaW5n
Qm94QnVmZmVycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OnNldEJvdW5kaW5nQm94
QnVmZmVycyhjb25zdCBOUzo6QXJyYXkqIGJvdW5kaW5nQm94QnVmZmVycykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Qm91bmRpbmdC
b3hCdWZmZXJzXyksIGJvdW5kaW5nQm94QnVmZmVycyk7Cit9CisKKy8vIHByb3BlcnR5OiBib3Vu
ZGluZ0JveFN0cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94
U3RyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hTdHJpZGUpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5n
Qm94R2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveFN0cmlkZShOUzo6VUludGVnZXIg
Ym91bmRpbmdCb3hTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94U3RyaWRlXyksIGJvdW5kaW5nQm94U3Ry
aWRlKTsKK30KKworLy8gcHJvcGVydHk6IGJvdW5kaW5nQm94Q291bnQKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yOjpib3VuZGluZ0JveENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
Ym91bmRpbmdCb3hDb3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OnNldEJvdW5k
aW5nQm94Q291bnQoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94Q291bnQpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94
Q291bnRfKSwgYm91bmRpbmdCb3hDb3VudCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGRlc2Ny
aXB0b3IKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRp
bmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9u
Qm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmRlc2NyaXB0b3IoKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91
bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJh
dGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKSwgX01UTF9Q
UklWQVRFX1NFTChkZXNjcmlwdG9yKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciog
TVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0
cnVjdHVyZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMSW5zdGFuY2VBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJ
TkUgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6SW5z
dGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcgor
X01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVEZXNjcmlwdG9yOjppbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0SW5zdGFuY2VE
ZXNjcmlwdG9yQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBpbnN0YW5jZURlc2NyaXB0b3JCdWZm
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcl8pLCBpbnN0YW5jZURlc2NyaXB0b3JCdWZm
ZXIpOworfQorCisvLyBwcm9wZXJ0eTogaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3I6Omluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpz
ZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVz
Y3JpcHRvckJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0Xyks
IGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnN0
YW5jZURlc2NyaXB0b3JTdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6Okluc3Rh
bmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5zdGFuY2VEZXNjcmlwdG9yU3Ry
aWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3I6OnNldEluc3RhbmNlRGVzY3JpcHRvclN0cmlkZShOUzo6VUludGVnZXIgaW5zdGFu
Y2VEZXNjcmlwdG9yU3RyaWRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRJbnN0YW5jZURlc2NyaXB0b3JTdHJpZGVfKSwgaW5zdGFu
Y2VEZXNjcmlwdG9yU3RyaWRlKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbmNlQ291bnQKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJl
RGVzY3JpcHRvcjo6aW5zdGFuY2VDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbmNl
Q291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0SW5zdGFuY2VDb3VudChOUzo6VUludGVnZXIgaW5zdGFu
Y2VDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0SW5zdGFuY2VDb3VudF8pLCBpbnN0YW5jZUNvdW50KTsKK30KKworLy8gcHJv
cGVydHk6IGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMKK19NVExfSU5MSU5FIE5TOjpB
cnJheSogTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Omluc3Rh
bmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFuY2Vk
QWNjZWxlcmF0aW9uU3RydWN0dXJlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5z
dGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRJbnN0YW5jZWRBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVzKGNvbnN0IE5TOjpBcnJheSogaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0SW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlc18pLCBpbnN0YW5jZWRB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVzKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbmNlRGVzY3Jp
cHRvclR5cGUKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VE
ZXNjcmlwdG9yVHlwZSBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRv
cjo6aW5zdGFuY2VEZXNjcmlwdG9yVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JU
eXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbmNlRGVzY3JpcHRvclR5cGUpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6c2V0SW5zdGFuY2VEZXNjcmlwdG9yVHlwZShNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGUgaW5zdGFuY2VEZXNjcmlwdG9yVHlwZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5z
dGFuY2VEZXNjcmlwdG9yVHlwZV8pLCBpbnN0YW5jZURlc2NyaXB0b3JUeXBlKTsKK30KKworLy8g
cHJvcGVydHk6IG1vdGlvblRyYW5zZm9ybUJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIq
IE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25UcmFu
c2Zvcm1CdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25UcmFuc2Zvcm1CdWZmZXIp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0
dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVy
KiBtb3Rpb25UcmFuc2Zvcm1CdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlcl8pLCBtb3Rp
b25UcmFuc2Zvcm1CdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uVHJhbnNmb3JtQnVm
ZmVyT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJbnN0YW5jZUFjY2VsZXJh
dGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlw
dG9yOjpzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG1vdGlvblRy
YW5zZm9ybUJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0XyksIG1v
dGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25UcmFu
c2Zvcm1Db3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SW5zdGFuY2VBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25UcmFuc2Zvcm1Db3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG1vdGlvblRyYW5zZm9ybUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1vdGlv
blRyYW5zZm9ybUNvdW50KE5TOjpVSW50ZWdlciBtb3Rpb25UcmFuc2Zvcm1Db3VudCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TW90
aW9uVHJhbnNmb3JtQ291bnRfKSwgbW90aW9uVHJhbnNmb3JtQ291bnQpOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6Okluc3RhbmNlQWNjZWxlcmF0
aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3I6OmRlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKj4oX01UTF9Q
UklWQVRFX0NMUyhNVExJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IpLCBf
TVRMX1BSSVZBVEVfU0VMKGRlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IHNpemUKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZTo6c2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNpemUpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5k
RW5jb2Rlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNj
ZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmZjRjOWM4
YmQxZWQ0MjhhNDNmN2VmMmUxNmM2OTI4YzE1NDljYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJl
Q29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsMTQ0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFw
cGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRl
ICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5j
bHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFyZ3VtZW50
LmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMSGVh
cC5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7Citj
bGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVm
ZXJlbmNpbmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIsIENvbW1hbmRFbmNv
ZGVyPgoreworcHVibGljOgorICAgIHZvaWQgYnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29u
c3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNv
bnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNv
bnN0IGNsYXNzIEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNjcmF0Y2hCdWZm
ZXJPZmZzZXQpOworCisgICAgdm9pZCByZWZpdEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBj
bGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwg
Y29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwg
Y29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBkZXN0aW5hdGlvbkFjY2VsZXJhdGlv
blN0cnVjdHVyZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBzY3JhdGNoQnVmZmVyLCBOUzo6VUludGVn
ZXIgc2NyYXRjaEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkIGNvcHlBY2NlbGVyYXRpb25TdHJ1
Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBzb3VyY2VBY2NlbGVyYXRp
b25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogZGVzdGluYXRp
b25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUpOworCisgICAgdm9pZCB3cml0ZUNvbXBhY3RlZEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZVNpemUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBh
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUlu
dGVnZXIgb2Zmc2V0KTsKKworICAgIHZvaWQgd3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVTaXplKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9u
U3RydWN0dXJlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNl
dCwgTVRMOjpEYXRhVHlwZSBzaXplRGF0YVR5cGUpOworCisgICAgdm9pZCBjb3B5QW5kQ29tcGFj
dEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUq
IHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlKiBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSk7CisKKyAgICB2b2lkIHVw
ZGF0ZUZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBmZW5jZSk7CisKKyAgICB2b2lkIHdhaXRGb3JG
ZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVuY2UpOworCisgICAgdm9pZCB1c2VSZXNvdXJjZShj
b25zdCBjbGFzcyBSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSk7
CisKKyAgICB2b2lkIHVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6
OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCB1
c2VIZWFwKGNvbnN0IGNsYXNzIEhlYXAqIGhlYXApOworCisgICAgdm9pZCB1c2VIZWFwcyhNVEw6
OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICB2b2lkIHNhbXBsZUNv
dW50ZXJzSW5CdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVm
ZmVyLCBOUzo6VUludGVnZXIgc2FtcGxlSW5kZXgsIGJvb2wgYmFycmllcik7Cit9OworCit9CisK
Ky8vIG1ldGhvZDogYnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6ZGVzY3JpcHRvcjpzY3JhdGNo
QnVmZmVyOnNjcmF0Y2hCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OmJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJl
KGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwg
Y29uc3QgTVRMOjpCdWZmZXIqIHNjcmF0Y2hCdWZmZXIsIE5TOjpVSW50ZWdlciBzY3JhdGNoQnVm
ZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChidWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZV9kZXNjcmlwdG9yX3NjcmF0Y2hC
dWZmZXJfc2NyYXRjaEJ1ZmZlck9mZnNldF8pLCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGRlc2Ny
aXB0b3IsIHNjcmF0Y2hCdWZmZXIsIHNjcmF0Y2hCdWZmZXJPZmZzZXQpOworfQorCisvLyBtZXRo
b2Q6IHJlZml0QWNjZWxlcmF0aW9uU3RydWN0dXJlOmRlc2NyaXB0b3I6ZGVzdGluYXRpb246c2Ny
YXRjaEJ1ZmZlcjpzY3JhdGNoQnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjpyZWZpdEFjY2VsZXJhdGlvblN0cnVj
dHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogc291cmNlQWNjZWxlcmF0aW9u
U3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IsIGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBkZXN0aW5hdGlvbkFj
Y2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgTVRMOjpCdWZmZXIqIHNjcmF0Y2hCdWZmZXIsIE5T
OjpVSW50ZWdlciBzY3JhdGNoQnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZWZpdEFjY2VsZXJhdGlvblN0cnVjdHVy
ZV9kZXNjcmlwdG9yX2Rlc3RpbmF0aW9uX3NjcmF0Y2hCdWZmZXJfc2NyYXRjaEJ1ZmZlck9mZnNl
dF8pLCBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGRlc2NyaXB0b3IsIGRlc3RpbmF0aW9u
QWNjZWxlcmF0aW9uU3RydWN0dXJlLCBzY3JhdGNoQnVmZmVyLCBzY3JhdGNoQnVmZmVyT2Zmc2V0
KTsKK30KKworLy8gbWV0aG9kOiBjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlOnRvQWNjZWxlcmF0
aW9uU3RydWN0dXJlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlKiBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVy
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoY29weUFjY2VsZXJhdGlvblN0cnVjdHVyZV90b0FjY2VsZXJhdGlvblN0cnVjdHVyZV8pLCBz
b3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0
dXJlKTsKK30KKworLy8gbWV0aG9kOiB3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVy
ZVNpemU6dG9CdWZmZXI6b2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjp3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVj
dHVyZVNpemUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0
cnVjdHVyZSwgY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
d3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplX3RvQnVmZmVyX29mZnNldF8p
LCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGJ1ZmZlciwgb2Zmc2V0KTsKK30KKworLy8gbWV0aG9k
OiB3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemU6dG9CdWZmZXI6b2Zmc2V0
OnNpemVEYXRhVHlwZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVDb21tYW5kRW5jb2Rlcjo6d3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXpl
KGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE1UTDo6RGF0
YVR5cGUgc2l6ZURhdGFUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTCh3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNp
emVfdG9CdWZmZXJfb2Zmc2V0X3NpemVEYXRhVHlwZV8pLCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGJ1ZmZlciwgb2Zmc2V0LCBzaXplRGF0YVR5cGUpOworfQorCisvLyBtZXRob2Q6IGNvcHlBbmRD
b21wYWN0QWNjZWxlcmF0aW9uU3RydWN0dXJlOnRvQWNjZWxlcmF0aW9uU3RydWN0dXJlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjpj
b3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZSogc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlB
bmRDb21wYWN0QWNjZWxlcmF0aW9uU3RydWN0dXJlX3RvQWNjZWxlcmF0aW9uU3RydWN0dXJlXyks
IHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwgZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1
Y3R1cmUpOworfQorCisvLyBtZXRob2Q6IHVwZGF0ZUZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjp1cGRhdGVGZW5jZShjb25z
dCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRo
b2Q6IHdhaXRGb3JGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVDb21tYW5kRW5jb2Rlcjo6d2FpdEZvckZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh3YWl0Rm9yRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlOnVz
YWdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRF
bmNvZGVyOjp1c2VSZXNvdXJjZShjb25zdCBNVEw6OlJlc291cmNlKiByZXNvdXJjZSwgTVRMOjpS
ZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZV91c2FnZV8pLCByZXNvdXJjZSwgdXNhZ2Up
OworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlczpjb3VudDp1c2FnZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3Vy
Y2VzKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6
UmVzb3VyY2VVc2FnZSB1c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVzb3VyY2VzX2NvdW50X3VzYWdlXyksIHJlc291cmNl
cywgY291bnQsIHVzYWdlKTsKK30KKworLy8gbWV0aG9kOiB1c2VIZWFwOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwKGNv
bnN0IE1UTDo6SGVhcCogaGVhcCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodXNlSGVhcF8pLCBoZWFwKTsKK30KKworLy8gbWV0aG9kOiB1
c2VIZWFwczpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVn
ZXIgY291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHVzZUhlYXBzX2NvdW50XyksIGhlYXBzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhv
ZDogc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcjphdFNhbXBsZUluZGV4OndpdGhCYXJyaWVyOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjpz
YW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2Ft
cGxlQnVmZmVyLCBOUzo6VUludGVnZXIgc2FtcGxlSW5kZXgsIGJvb2wgYmFycmllcikKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxl
Q291bnRlcnNJbkJ1ZmZlcl9hdFNhbXBsZUluZGV4X3dpdGhCYXJyaWVyXyksIHNhbXBsZUJ1ZmZl
ciwgc2FtcGxlSW5kZXgsIGJhcnJpZXIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVUeXBlcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU3NjdkYzkxNWNjMWJiOTBjNDE4YWI0MDc4MDJi
NTBkOWMxNTdiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAKQEAgLTAsMCArMSwx
NjkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIE1ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIK
KyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisj
aW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwIgorCisjaW5jbHVkZSAi
Li4vRm91bmRhdGlvbi9OU1JhbmdlLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBNVEwKK3sKK3N0cnVjdCBQYWNrZWRGbG9h
dDMKK3sKKyAgICBQYWNrZWRGbG9hdDMoKTsKKyAgICBQYWNrZWRGbG9hdDMoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeik7CisKKyAgICBmbG9hdCYgb3BlcmF0b3JbXShpbnQgaWR4KTsKKyAgICBm
bG9hdCAgb3BlcmF0b3JbXShpbnQgaWR4KSBjb25zdDsKKworICAgIHVuaW9uCisgICAgeworICAg
ICAgICBzdHJ1Y3QKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgeDsKKyAgICAgICAgICAg
IGZsb2F0IHk7CisgICAgICAgICAgICBmbG9hdCB6OworICAgICAgICB9OworCisgICAgICAgIGZs
b2F0IGVsZW1lbnRzWzNdOworICAgIH07Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgUGFja2Vk
RmxvYXQ0eDMKK3sKKyAgICBQYWNrZWRGbG9hdDR4MygpOworICAgIFBhY2tlZEZsb2F0NHgzKGNv
bnN0IFBhY2tlZEZsb2F0MyYgY29sMCwgY29uc3QgUGFja2VkRmxvYXQzJiBjb2wxLCBjb25zdCBQ
YWNrZWRGbG9hdDMmIGNvbDIsIGNvbnN0IFBhY2tlZEZsb2F0MyYgY29sMyk7CisKKyAgICBQYWNr
ZWRGbG9hdDMmICAgICAgIG9wZXJhdG9yW10oaW50IGlkeCk7CisgICAgY29uc3QgUGFja2VkRmxv
YXQzJiBvcGVyYXRvcltdKGludCBpZHgpIGNvbnN0OworCisgICAgUGFja2VkRmxvYXQzICAgICAg
ICBjb2x1bW5zWzRdOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IEF4aXNBbGlnbmVkQm91bmRp
bmdCb3gKK3sKKyAgICBBeGlzQWxpZ25lZEJvdW5kaW5nQm94KCk7CisgICAgQXhpc0FsaWduZWRC
b3VuZGluZ0JveChQYWNrZWRGbG9hdDMgcCk7CisgICAgQXhpc0FsaWduZWRCb3VuZGluZ0JveChQ
YWNrZWRGbG9hdDMgbWluLCBQYWNrZWRGbG9hdDMgbWF4KTsKKworICAgIFBhY2tlZEZsb2F0MyBt
aW47CisgICAgUGFja2VkRmxvYXQzIG1heDsKK30gX01UTF9QQUNLRUQ7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSBNVEw6
OlBhY2tlZEZsb2F0Mzo6UGFja2VkRmxvYXQzKCkKKyAgICA6IHgoMC4wZikKKyAgICAsIHkoMC4w
ZikKKyAgICAsIHooMC4wZikKK3sKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6UGFja2VkRmxvYXQzOjpQYWNrZWRG
bG9hdDMoZmxvYXQgX3gsIGZsb2F0IF95LCBmbG9hdCBfeikKKyAgICA6IHgoX3gpCisgICAgLCB5
KF95KQorICAgICwgeihfeikKK3sKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIGZsb2F0JiBNVEw6OlBhY2tlZEZsb2F0Mzo6
b3BlcmF0b3JbXShpbnQgaWR4KQoreworICAgIHJldHVybiBlbGVtZW50c1tpZHhdOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJ
TkUgZmxvYXQgTVRMOjpQYWNrZWRGbG9hdDM6Om9wZXJhdG9yW10oaW50IGlkeCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZWxlbWVudHNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6UGFja2VkRmxvYXQ0eDM6
OlBhY2tlZEZsb2F0NHgzKCkKK3sKKyAgICBjb2x1bW5zWzBdID0gUGFja2VkRmxvYXQzKDAuMGYs
IDAuMGYsIDAuMGYpOworICAgIGNvbHVtbnNbMV0gPSBQYWNrZWRGbG9hdDMoMC4wZiwgMC4wZiwg
MC4wZik7CisgICAgY29sdW1uc1syXSA9IFBhY2tlZEZsb2F0MygwLjBmLCAwLjBmLCAwLjBmKTsK
KyAgICBjb2x1bW5zWzNdID0gUGFja2VkRmxvYXQzKDAuMGYsIDAuMGYsIDAuMGYpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJ
TkUgTVRMOjpQYWNrZWRGbG9hdDR4Mzo6UGFja2VkRmxvYXQ0eDMoY29uc3QgUGFja2VkRmxvYXQz
JiBjb2wwLCBjb25zdCBQYWNrZWRGbG9hdDMmIGNvbDEsIGNvbnN0IFBhY2tlZEZsb2F0MyYgY29s
MiwgY29uc3QgUGFja2VkRmxvYXQzJiBjb2wzKQoreworICAgIGNvbHVtbnNbMF0gPSBjb2wwOwor
ICAgIGNvbHVtbnNbMV0gPSBjb2wxOworICAgIGNvbHVtbnNbMl0gPSBjb2wyOworICAgIGNvbHVt
bnNbM10gPSBjb2wzOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpQYWNrZWRGbG9hdDMmIE1UTDo6UGFja2VkRmxv
YXQ0eDM6Om9wZXJhdG9yW10oaW50IGlkeCkKK3sKKyAgICByZXR1cm4gY29sdW1uc1tpZHhdOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01U
TF9JTkxJTkUgY29uc3QgTVRMOjpQYWNrZWRGbG9hdDMmIE1UTDo6UGFja2VkRmxvYXQ0eDM6Om9w
ZXJhdG9yW10oaW50IGlkeCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29sdW1uc1tpZHhdOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9J
TkxJTkUgTVRMOjpBeGlzQWxpZ25lZEJvdW5kaW5nQm94OjpBeGlzQWxpZ25lZEJvdW5kaW5nQm94
KCkKKyAgICA6IG1pbihJTkZJTklUWSwgSU5GSU5JVFksIElORklOSVRZKQorICAgICwgbWF4KC1J
TkZJTklUWSwgLUlORklOSVRZLCAtSU5GSU5JVFkpCit7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSBNVEw6OkF4aXNBbGln
bmVkQm91bmRpbmdCb3g6OkF4aXNBbGlnbmVkQm91bmRpbmdCb3goUGFja2VkRmxvYXQzIHApCisg
ICAgOiBtaW4ocCkKKyAgICAsIG1heChwKQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpBeGlzQWxpZ25lZEJv
dW5kaW5nQm94OjpBeGlzQWxpZ25lZEJvdW5kaW5nQm94KFBhY2tlZEZsb2F0MyBfbWluLCBQYWNr
ZWRGbG9hdDMgX21heCkKKyAgICA6IG1pbihfbWluKQorICAgICwgbWF4KF9tYXgpCit7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50LmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudC5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODA1N2ZlMDgwMjhlMjAwMDczNGYyMjJkMjU4MDRiYjgyYzZhN2ZjZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1
bWVudC5ocHAKQEAgLTAsMCArMSw2NTUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEFyZ3VtZW50LmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMQXJndW1lbnQuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBwIgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBEYXRhVHlwZSkgeworICAg
IERhdGFUeXBlTm9uZSA9IDAsCisgICAgRGF0YVR5cGVTdHJ1Y3QgPSAxLAorICAgIERhdGFUeXBl
QXJyYXkgPSAyLAorICAgIERhdGFUeXBlRmxvYXQgPSAzLAorICAgIERhdGFUeXBlRmxvYXQyID0g
NCwKKyAgICBEYXRhVHlwZUZsb2F0MyA9IDUsCisgICAgRGF0YVR5cGVGbG9hdDQgPSA2LAorICAg
IERhdGFUeXBlRmxvYXQyeDIgPSA3LAorICAgIERhdGFUeXBlRmxvYXQyeDMgPSA4LAorICAgIERh
dGFUeXBlRmxvYXQyeDQgPSA5LAorICAgIERhdGFUeXBlRmxvYXQzeDIgPSAxMCwKKyAgICBEYXRh
VHlwZUZsb2F0M3gzID0gMTEsCisgICAgRGF0YVR5cGVGbG9hdDN4NCA9IDEyLAorICAgIERhdGFU
eXBlRmxvYXQ0eDIgPSAxMywKKyAgICBEYXRhVHlwZUZsb2F0NHgzID0gMTQsCisgICAgRGF0YVR5
cGVGbG9hdDR4NCA9IDE1LAorICAgIERhdGFUeXBlSGFsZiA9IDE2LAorICAgIERhdGFUeXBlSGFs
ZjIgPSAxNywKKyAgICBEYXRhVHlwZUhhbGYzID0gMTgsCisgICAgRGF0YVR5cGVIYWxmNCA9IDE5
LAorICAgIERhdGFUeXBlSGFsZjJ4MiA9IDIwLAorICAgIERhdGFUeXBlSGFsZjJ4MyA9IDIxLAor
ICAgIERhdGFUeXBlSGFsZjJ4NCA9IDIyLAorICAgIERhdGFUeXBlSGFsZjN4MiA9IDIzLAorICAg
IERhdGFUeXBlSGFsZjN4MyA9IDI0LAorICAgIERhdGFUeXBlSGFsZjN4NCA9IDI1LAorICAgIERh
dGFUeXBlSGFsZjR4MiA9IDI2LAorICAgIERhdGFUeXBlSGFsZjR4MyA9IDI3LAorICAgIERhdGFU
eXBlSGFsZjR4NCA9IDI4LAorICAgIERhdGFUeXBlSW50ID0gMjksCisgICAgRGF0YVR5cGVJbnQy
ID0gMzAsCisgICAgRGF0YVR5cGVJbnQzID0gMzEsCisgICAgRGF0YVR5cGVJbnQ0ID0gMzIsCisg
ICAgRGF0YVR5cGVVSW50ID0gMzMsCisgICAgRGF0YVR5cGVVSW50MiA9IDM0LAorICAgIERhdGFU
eXBlVUludDMgPSAzNSwKKyAgICBEYXRhVHlwZVVJbnQ0ID0gMzYsCisgICAgRGF0YVR5cGVTaG9y
dCA9IDM3LAorICAgIERhdGFUeXBlU2hvcnQyID0gMzgsCisgICAgRGF0YVR5cGVTaG9ydDMgPSAz
OSwKKyAgICBEYXRhVHlwZVNob3J0NCA9IDQwLAorICAgIERhdGFUeXBlVVNob3J0ID0gNDEsCisg
ICAgRGF0YVR5cGVVU2hvcnQyID0gNDIsCisgICAgRGF0YVR5cGVVU2hvcnQzID0gNDMsCisgICAg
RGF0YVR5cGVVU2hvcnQ0ID0gNDQsCisgICAgRGF0YVR5cGVDaGFyID0gNDUsCisgICAgRGF0YVR5
cGVDaGFyMiA9IDQ2LAorICAgIERhdGFUeXBlQ2hhcjMgPSA0NywKKyAgICBEYXRhVHlwZUNoYXI0
ID0gNDgsCisgICAgRGF0YVR5cGVVQ2hhciA9IDQ5LAorICAgIERhdGFUeXBlVUNoYXIyID0gNTAs
CisgICAgRGF0YVR5cGVVQ2hhcjMgPSA1MSwKKyAgICBEYXRhVHlwZVVDaGFyNCA9IDUyLAorICAg
IERhdGFUeXBlQm9vbCA9IDUzLAorICAgIERhdGFUeXBlQm9vbDIgPSA1NCwKKyAgICBEYXRhVHlw
ZUJvb2wzID0gNTUsCisgICAgRGF0YVR5cGVCb29sNCA9IDU2LAorICAgIERhdGFUeXBlVGV4dHVy
ZSA9IDU4LAorICAgIERhdGFUeXBlU2FtcGxlciA9IDU5LAorICAgIERhdGFUeXBlUG9pbnRlciA9
IDYwLAorICAgIERhdGFUeXBlUjhVbm9ybSA9IDYyLAorICAgIERhdGFUeXBlUjhTbm9ybSA9IDYz
LAorICAgIERhdGFUeXBlUjE2VW5vcm0gPSA2NCwKKyAgICBEYXRhVHlwZVIxNlNub3JtID0gNjUs
CisgICAgRGF0YVR5cGVSRzhVbm9ybSA9IDY2LAorICAgIERhdGFUeXBlUkc4U25vcm0gPSA2NywK
KyAgICBEYXRhVHlwZVJHMTZVbm9ybSA9IDY4LAorICAgIERhdGFUeXBlUkcxNlNub3JtID0gNjks
CisgICAgRGF0YVR5cGVSR0JBOFVub3JtID0gNzAsCisgICAgRGF0YVR5cGVSR0JBOFVub3JtX3NS
R0IgPSA3MSwKKyAgICBEYXRhVHlwZVJHQkE4U25vcm0gPSA3MiwKKyAgICBEYXRhVHlwZVJHQkEx
NlVub3JtID0gNzMsCisgICAgRGF0YVR5cGVSR0JBMTZTbm9ybSA9IDc0LAorICAgIERhdGFUeXBl
UkdCMTBBMlVub3JtID0gNzUsCisgICAgRGF0YVR5cGVSRzExQjEwRmxvYXQgPSA3NiwKKyAgICBE
YXRhVHlwZVJHQjlFNUZsb2F0ID0gNzcsCisgICAgRGF0YVR5cGVSZW5kZXJQaXBlbGluZSA9IDc4
LAorICAgIERhdGFUeXBlQ29tcHV0ZVBpcGVsaW5lID0gNzksCisgICAgRGF0YVR5cGVJbmRpcmVj
dENvbW1hbmRCdWZmZXIgPSA4MCwKKyAgICBEYXRhVHlwZUxvbmcgPSA4MSwKKyAgICBEYXRhVHlw
ZUxvbmcyID0gODIsCisgICAgRGF0YVR5cGVMb25nMyA9IDgzLAorICAgIERhdGFUeXBlTG9uZzQg
PSA4NCwKKyAgICBEYXRhVHlwZVVMb25nID0gODUsCisgICAgRGF0YVR5cGVVTG9uZzIgPSA4NiwK
KyAgICBEYXRhVHlwZVVMb25nMyA9IDg3LAorICAgIERhdGFUeXBlVUxvbmc0ID0gODgsCisgICAg
RGF0YVR5cGVWaXNpYmxlRnVuY3Rpb25UYWJsZSA9IDExNSwKKyAgICBEYXRhVHlwZUludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUgPSAxMTYsCisgICAgRGF0YVR5cGVQcmltaXRpdmVBY2NlbGVyYXRp
b25TdHJ1Y3R1cmUgPSAxMTcsCisgICAgRGF0YVR5cGVJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVj
dHVyZSA9IDExOCwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIEFyZ3VtZW50VHlwZSkg
eworICAgIEFyZ3VtZW50VHlwZUJ1ZmZlciA9IDAsCisgICAgQXJndW1lbnRUeXBlVGhyZWFkZ3Jv
dXBNZW1vcnkgPSAxLAorICAgIEFyZ3VtZW50VHlwZVRleHR1cmUgPSAyLAorICAgIEFyZ3VtZW50
VHlwZVNhbXBsZXIgPSAzLAorICAgIEFyZ3VtZW50VHlwZUltYWdlYmxvY2tEYXRhID0gMTYsCisg
ICAgQXJndW1lbnRUeXBlSW1hZ2VibG9jayA9IDE3LAorICAgIEFyZ3VtZW50VHlwZVZpc2libGVG
dW5jdGlvblRhYmxlID0gMjQsCisgICAgQXJndW1lbnRUeXBlUHJpbWl0aXZlQWNjZWxlcmF0aW9u
U3RydWN0dXJlID0gMjUsCisgICAgQXJndW1lbnRUeXBlSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1
Y3R1cmUgPSAyNiwKKyAgICBBcmd1bWVudFR5cGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlID0g
MjcsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBBcmd1bWVudEFjY2VzcykgeworICAg
IEFyZ3VtZW50QWNjZXNzUmVhZE9ubHkgPSAwLAorICAgIEFyZ3VtZW50QWNjZXNzUmVhZFdyaXRl
ID0gMSwKKyAgICBBcmd1bWVudEFjY2Vzc1dyaXRlT25seSA9IDIsCit9OworCitjbGFzcyBUeXBl
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxUeXBlPgoreworcHVibGljOgorICAgIHN0YXRpYyBj
bGFzcyBUeXBlKiBhbGxvYygpOworCisgICAgY2xhc3MgVHlwZSogICAgICAgIGluaXQoKTsKKwor
ICAgIE1UTDo6RGF0YVR5cGUgICAgICBkYXRhVHlwZSgpIGNvbnN0OworfTsKKworY2xhc3MgU3Ry
dWN0TWVtYmVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxTdHJ1Y3RNZW1iZXI+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIGNsYXNzIFN0cnVjdE1lbWJlciogIGFsbG9jKCk7CisKKyAgICBjbGFz
cyBTdHJ1Y3RNZW1iZXIqICAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAg
ICAgICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICBvZmZzZXQoKSBjb25zdDsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgICBkYXRh
VHlwZSgpIGNvbnN0OworCisgICAgY2xhc3MgU3RydWN0VHlwZSogICAgICAgICAgIHN0cnVjdFR5
cGUoKTsKKworICAgIGNsYXNzIEFycmF5VHlwZSogICAgICAgICAgICBhcnJheVR5cGUoKTsKKwor
ICAgIGNsYXNzIFRleHR1cmVSZWZlcmVuY2VUeXBlKiB0ZXh0dXJlUmVmZXJlbmNlVHlwZSgpOwor
CisgICAgY2xhc3MgUG9pbnRlclR5cGUqICAgICAgICAgIHBvaW50ZXJUeXBlKCk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgYXJndW1lbnRJbmRleCgpIGNvbnN0OworfTsKKwor
Y2xhc3MgU3RydWN0VHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8U3RydWN0VHlwZSwgVHlw
ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgU3RydWN0VHlwZSogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIFN0cnVjdFR5cGUqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAg
ICAgICAgICAgICAgbWVtYmVycygpIGNvbnN0OworCisgICAgY2xhc3MgU3RydWN0TWVtYmVyKiAg
ICAgIG1lbWJlckJ5TmFtZShjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKK307CisKK2NsYXNzIEFy
cmF5VHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QXJyYXlUeXBlLCBUeXBlPgoreworcHVi
bGljOgorICAgIHN0YXRpYyBjbGFzcyBBcnJheVR5cGUqICAgICBhbGxvYygpOworCisgICAgY2xh
c3MgQXJyYXlUeXBlKiAgICAgICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6RGF0YVR5cGUgICAg
ICAgICAgICAgICBlbGVtZW50VHlwZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgIGFycmF5TGVuZ3RoKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICAgICAgc3RyaWRlKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgYXJndW1lbnRJbmRleFN0cmlkZSgpIGNvbnN0OworCisgICAgY2xhc3MgU3RydWN0VHlwZSog
ICAgICAgICAgIGVsZW1lbnRTdHJ1Y3RUeXBlKCk7CisKKyAgICBjbGFzcyBBcnJheVR5cGUqICAg
ICAgICAgICAgZWxlbWVudEFycmF5VHlwZSgpOworCisgICAgY2xhc3MgVGV4dHVyZVJlZmVyZW5j
ZVR5cGUqIGVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlwZSgpOworCisgICAgY2xhc3MgUG9pbnRl
clR5cGUqICAgICAgICAgIGVsZW1lbnRQb2ludGVyVHlwZSgpOworfTsKKworY2xhc3MgUG9pbnRl
clR5cGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFBvaW50ZXJUeXBlLCBUeXBlPgoreworcHVi
bGljOgorICAgIHN0YXRpYyBjbGFzcyBQb2ludGVyVHlwZSogYWxsb2MoKTsKKworICAgIGNsYXNz
IFBvaW50ZXJUeXBlKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAg
ICAgICBlbGVtZW50VHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpBcmd1bWVudEFjY2VzcyAgICAg
ICBhY2Nlc3MoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgYWxpZ25t
ZW50KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgIGRhdGFTaXplKCkg
Y29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRJc0FyZ3VtZW50
QnVmZmVyKCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJ1Y3RUeXBlKiAgICAgICAgIGVsZW1lbnRT
dHJ1Y3RUeXBlKCk7CisKKyAgICBjbGFzcyBBcnJheVR5cGUqICAgICAgICAgIGVsZW1lbnRBcnJh
eVR5cGUoKTsKK307CisKK2NsYXNzIFRleHR1cmVSZWZlcmVuY2VUeXBlIDogcHVibGljIE5TOjpS
ZWZlcmVuY2luZzxUZXh0dXJlUmVmZXJlbmNlVHlwZSwgVHlwZT4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgVGV4dHVyZVJlZmVyZW5jZVR5cGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBU
ZXh0dXJlUmVmZXJlbmNlVHlwZSogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6RGF0YVR5cGUg
ICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZURhdGFUeXBlKCkgY29uc3Q7CisKKyAgICBNVEw6
OlRleHR1cmVUeXBlICAgICAgICAgICAgICAgICAgIHRleHR1cmVUeXBlKCkgY29uc3Q7CisKKyAg
ICBNVEw6OkFyZ3VtZW50QWNjZXNzICAgICAgICAgICAgICAgIGFjY2VzcygpIGNvbnN0OworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RlcHRoVGV4dHVyZSgpIGNv
bnN0OworfTsKKworY2xhc3MgQXJndW1lbnQgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFyZ3Vt
ZW50PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBcmd1bWVudCogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIEFyZ3VtZW50KiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAg
ICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAgICBNVEw6OkFyZ3VtZW50VHlwZSAgICAgIHR5cGUo
KSBjb25zdDsKKworICAgIE1UTDo6QXJndW1lbnRBY2Nlc3MgICAgYWNjZXNzKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgIGluZGV4KCkgY29uc3Q7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgIGFjdGl2ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICBidWZmZXJBbGlnbm1lbnQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgYnVmZmVyRGF0YVNpemUoKSBjb25zdDsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAg
YnVmZmVyRGF0YVR5cGUoKSBjb25zdDsKKworICAgIGNsYXNzIFN0cnVjdFR5cGUqICAgICAgYnVm
ZmVyU3RydWN0VHlwZSgpIGNvbnN0OworCisgICAgY2xhc3MgUG9pbnRlclR5cGUqICAgICBidWZm
ZXJQb2ludGVyVHlwZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICB0aHJl
YWRncm91cE1lbW9yeUFsaWdubWVudCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICB0aHJlYWRncm91cE1lbW9yeURhdGFTaXplKCkgY29uc3Q7CisKKyAgICBNVEw6OlRleHR1
cmVUeXBlICAgICAgIHRleHR1cmVUeXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OkRhdGFUeXBlICAg
ICAgICAgIHRleHR1cmVEYXRhVHlwZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICBpc0RlcHRoVGV4dHVyZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICBhcnJheUxlbmd0aCgpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxv
YworX01UTF9JTkxJTkUgTVRMOjpUeXBlKiBNVEw6OlR5cGU6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpUeXBlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFR5cGUp
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlR5cGUqIE1UTDo6VHlw
ZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpUeXBlPigpOwor
fQorCisvLyBwcm9wZXJ0eTogZGF0YVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRM
OjpUeXBlOjpkYXRhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChkYXRhVHlwZSkpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RNZW1iZXIq
IE1UTDo6U3RydWN0TWVtYmVyOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6U3RydWN0TWVtYmVyPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0cnVjdE1lbWJlcikp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0TWVtYmVyKiBN
VEw6OlN0cnVjdE1lbWJlcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8
TVRMOjpTdHJ1Y3RNZW1iZXI+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElO
RSBOUzo6U3RyaW5nKiBNVEw6OlN0cnVjdE1lbWJlcjo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTogb2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpTdHJ1Y3RNZW1iZXI6Om9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9m
ZnNldCkpOworfQorCisvLyBwcm9wZXJ0eTogZGF0YVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0
YVR5cGUgTVRMOjpTdHJ1Y3RNZW1iZXI6OmRhdGFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGRhdGFUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogc3RydWN0VHlwZQorX01UTF9JTkxJTkUgTVRM
OjpTdHJ1Y3RUeXBlKiBNVEw6OlN0cnVjdE1lbWJlcjo6c3RydWN0VHlwZSgpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RUeXBlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdHJ1Y3RUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogYXJyYXlUeXBlCitfTVRMX0lO
TElORSBNVEw6OkFycmF5VHlwZSogTVRMOjpTdHJ1Y3RNZW1iZXI6OmFycmF5VHlwZSgpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcnJheVR5cGUqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGFycmF5VHlwZSkpOworfQorCisvLyBtZXRob2Q6IHRleHR1cmVSZWZlcmVu
Y2VUeXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlKiBNVEw6OlN0cnVj
dE1lbWJlcjo6dGV4dHVyZVJlZmVyZW5jZVR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHRleHR1cmVSZWZlcmVuY2VUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogcG9pbnRlclR5cGUK
K19NVExfSU5MSU5FIE1UTDo6UG9pbnRlclR5cGUqIE1UTDo6U3RydWN0TWVtYmVyOjpwb2ludGVy
VHlwZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQb2ludGVyVHlw
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocG9pbnRlclR5cGUpKTsKK30KKworLy8gcHJvcGVy
dHk6IGFyZ3VtZW50SW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlN0cnVjdE1l
bWJlcjo6YXJndW1lbnRJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50SW5kZXgp
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0
VHlwZSogTVRMOjpTdHJ1Y3RUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6U3RydWN0VHlwZT4oX01UTF9QUklWQVRFX0NMUyhNVExTdHJ1Y3RUeXBlKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RUeXBlKiBNVEw6
OlN0cnVjdFR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
U3RydWN0VHlwZT4oKTsKK30KKworLy8gcHJvcGVydHk6IG1lbWJlcnMKK19NVExfSU5MSU5FIE5T
OjpBcnJheSogTVRMOjpTdHJ1Y3RUeXBlOjptZW1iZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1l
bWJlcnMpKTsKK30KKworLy8gbWV0aG9kOiBtZW1iZXJCeU5hbWU6CitfTVRMX0lOTElORSBNVEw6
OlN0cnVjdE1lbWJlciogTVRMOjpTdHJ1Y3RUeXBlOjptZW1iZXJCeU5hbWUoY29uc3QgTlM6OlN0
cmluZyogbmFtZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0cnVj
dE1lbWJlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtYmVyQnlOYW1lXyksIG5hbWUpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBcnJheVR5cGUq
IE1UTDo6QXJyYXlUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6QXJyYXlUeXBlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFycmF5VHlwZSkpOworfQorCisv
LyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QXJyYXlUeXBlKiBNVEw6OkFycmF5VHlw
ZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBcnJheVR5cGU+
KCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbGVtZW50VHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRh
VHlwZSBNVEw6OkFycmF5VHlwZTo6ZWxlbWVudFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZWxlbWVudFR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFycmF5TGVuZ3RoCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpBcnJheVR5cGU6OmFycmF5TGVuZ3RoKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KKworLy8gcHJvcGVydHk6IHN0cmlkZQorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJyYXlUeXBlOjpzdHJpZGUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdHJpZGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFyZ3VtZW50SW5kZXhTdHJpZGUK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFycmF5VHlwZTo6YXJndW1lbnRJbmRleFN0
cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50SW5kZXhTdHJpZGUpKTsKK30KKwor
Ly8gbWV0aG9kOiBlbGVtZW50U3RydWN0VHlwZQorX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RUeXBl
KiBNVEw6OkFycmF5VHlwZTo6ZWxlbWVudFN0cnVjdFR5cGUoKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RydWN0VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZWxlbWVudFN0cnVjdFR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBlbGVtZW50QXJyYXlUeXBlCitf
TVRMX0lOTElORSBNVEw6OkFycmF5VHlwZSogTVRMOjpBcnJheVR5cGU6OmVsZW1lbnRBcnJheVR5
cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJyYXlUeXBlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50QXJyYXlUeXBlKSk7Cit9CisKKy8vIG1ldGhv
ZDogZWxlbWVudFRleHR1cmVSZWZlcmVuY2VUeXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVS
ZWZlcmVuY2VUeXBlKiBNVEw6OkFycmF5VHlwZTo6ZWxlbWVudFRleHR1cmVSZWZlcmVuY2VUeXBl
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVSZWZlcmVu
Y2VUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50VGV4dHVyZVJlZmVyZW5jZVR5
cGUpKTsKK30KKworLy8gbWV0aG9kOiBlbGVtZW50UG9pbnRlclR5cGUKK19NVExfSU5MSU5FIE1U
TDo6UG9pbnRlclR5cGUqIE1UTDo6QXJyYXlUeXBlOjplbGVtZW50UG9pbnRlclR5cGUoKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UG9pbnRlclR5cGUqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRQb2ludGVyVHlwZSkpOworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpQb2ludGVyVHlwZSogTVRMOjpQb2ludGVyVHlw
ZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlBvaW50ZXJU
eXBlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFBvaW50ZXJUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpQb2ludGVyVHlwZSogTVRMOjpQb2ludGVyVHlwZTo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpQb2ludGVyVHlwZT4oKTsK
K30KKworLy8gcHJvcGVydHk6IGVsZW1lbnRUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBl
IE1UTDo6UG9pbnRlclR5cGU6OmVsZW1lbnRUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVs
ZW1lbnRUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6
QXJndW1lbnRBY2Nlc3MgTVRMOjpQb2ludGVyVHlwZTo6YWNjZXNzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGFjY2VzcykpOworfQorCisvLyBwcm9wZXJ0eTogYWxpZ25tZW50CitfTVRM
X0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpQb2ludGVyVHlwZTo6YWxpZ25tZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYWxpZ25tZW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBkYXRhU2l6ZQor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UG9pbnRlclR5cGU6OmRhdGFTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZGF0YVNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IGVsZW1lbnRJ
c0FyZ3VtZW50QnVmZmVyCitfTVRMX0lOTElORSBib29sIE1UTDo6UG9pbnRlclR5cGU6OmVsZW1l
bnRJc0FyZ3VtZW50QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRJc0FyZ3VtZW50QnVmZmVy
KSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVudFN0cnVjdFR5cGUKK19NVExfSU5MSU5FIE1UTDo6
U3RydWN0VHlwZSogTVRMOjpQb2ludGVyVHlwZTo6ZWxlbWVudFN0cnVjdFR5cGUoKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RydWN0VHlwZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZWxlbWVudFN0cnVjdFR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBlbGVtZW50
QXJyYXlUeXBlCitfTVRMX0lOTElORSBNVEw6OkFycmF5VHlwZSogTVRMOjpQb2ludGVyVHlwZTo6
ZWxlbWVudEFycmF5VHlwZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBcnJheVR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRBcnJheVR5cGUpKTsK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVJl
ZmVyZW5jZVR5cGUqIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGU6OmFsbG9jKCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZT4oX01UTF9Q
UklWQVRFX0NMUyhNVExUZXh0dXJlUmVmZXJlbmNlVHlwZSkpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGUqIE1UTDo6VGV4dHVyZVJl
ZmVyZW5jZVR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
VGV4dHVyZVJlZmVyZW5jZVR5cGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlRGF0YVR5
cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6
dGV4dHVyZURhdGFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVEYXRhVHlwZSkp
OworfQorCisvLyBwcm9wZXJ0eTogdGV4dHVyZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVy
ZVR5cGUgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6dGV4dHVyZVR5cGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodGV4dHVyZVR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFjY2Vzcwor
X01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEFjY2VzcyBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBl
OjphY2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QXJndW1lbnRBY2Nlc3M+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWNjZXNzKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpc0RlcHRoVGV4dHVyZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlRleHR1cmVS
ZWZlcmVuY2VUeXBlOjppc0RlcHRoVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0RlcHRoVGV4dHVy
ZSkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBcmd1
bWVudCogTVRMOjpBcmd1bWVudDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojph
bGxvYzxNVEw6OkFyZ3VtZW50PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFyZ3VtZW50KSk7Cit9CisK
Ky8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudCogTVRMOjpBcmd1bWVu
dDo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBcmd1bWVudD4o
KTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6
QXJndW1lbnQ6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJv
cGVydHk6IHR5cGUKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRUeXBlIE1UTDo6QXJndW1lbnQ6
OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJn
dW1lbnRUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVy
dHk6IGFjY2VzcworX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEFjY2VzcyBNVEw6OkFyZ3VtZW50
OjphY2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QXJndW1lbnRBY2Nlc3M+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWNjZXNzKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6
OmluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXgpKTsKK30KKworLy8gcHJvcGVydHk6
IGFjdGl2ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkFyZ3VtZW50OjphY3RpdmUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoaXNBY3RpdmUpKTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckFsaWdubWVudAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6OmJ1ZmZlckFsaWdubWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlckFsaWdubWVudCkpOworfQorCisvLyBwcm9wZXJ0eTog
YnVmZmVyRGF0YVNpemUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50Ojpi
dWZmZXJEYXRhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlckRhdGFTaXplKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBidWZmZXJEYXRhVHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRhVHlw
ZSBNVEw6OkFyZ3VtZW50OjpidWZmZXJEYXRhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChi
dWZmZXJEYXRhVHlwZSkpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyU3RydWN0VHlwZQorX01U
TF9JTkxJTkUgTVRMOjpTdHJ1Y3RUeXBlKiBNVEw6OkFyZ3VtZW50OjpidWZmZXJTdHJ1Y3RUeXBl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0cnVjdFR5
cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlclN0cnVjdFR5cGUpKTsKK30KKworLy8g
cHJvcGVydHk6IGJ1ZmZlclBvaW50ZXJUeXBlCitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJUeXBl
KiBNVEw6OkFyZ3VtZW50OjpidWZmZXJQb2ludGVyVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQb2ludGVyVHlwZSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoYnVmZmVyUG9pbnRlclR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZGdyb3Vw
TWVtb3J5QWxpZ25tZW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudDo6
dGhyZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRn
cm91cE1lbW9yeUFsaWdubWVudCkpOworfQorCisvLyBwcm9wZXJ0eTogdGhyZWFkZ3JvdXBNZW1v
cnlEYXRhU2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6OnRocmVh
ZGdyb3VwTWVtb3J5RGF0YVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRncm91cE1l
bW9yeURhdGFTaXplKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlVHlwZQorX01UTF9JTkxJ
TkUgTVRMOjpUZXh0dXJlVHlwZSBNVEw6OkFyZ3VtZW50Ojp0ZXh0dXJlVHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVHlwZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlVHlwZSkpOworfQorCisvLyBwcm9wZXJ0eTogdGV4dHVy
ZURhdGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6QXJndW1lbnQ6OnRleHR1
cmVEYXRhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlRGF0YVR5cGUpKTsKK30K
KworLy8gcHJvcGVydHk6IGlzRGVwdGhUZXh0dXJlCitfTVRMX0lOTElORSBib29sIE1UTDo6QXJn
dW1lbnQ6OmlzRGVwdGhUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzRGVwdGhUZXh0dXJlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBhcnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6QXJndW1lbnQ6OmFycmF5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5n
dGgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExBcmd1bWVudEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEFyZ3VtZW50RW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNlY2M3ZDk1Njc1MmM2
MzMxYTYzMDdkYTUwODkxYTcxZDJjMTA0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudEVuY29kZXIuaHBwCkBAIC0wLDAg
KzEsMjUwIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vCisvLyBNZXRhbC9NVExBcmd1bWVudEVuY29kZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIw
MjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAi
CisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhw
cCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJN
VExCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbXB1dGVQaXBlbGluZS5ocHAiCisjaW5jbHVk
ZSAiTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQaXBlbGluZS5ocHAiCisj
aW5jbHVkZSAiTVRMU2FtcGxlci5ocHAiCisjaW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5j
bHVkZSAiTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwIgorCituYW1lc3BhY2UgTVRMCit7Citj
bGFzcyBBcmd1bWVudEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFyZ3VtZW50RW5j
b2Rlcj4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgIGRldmljZSgpIGNv
bnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICBlbmNvZGVkTGVuZ3RoKCkgY29uc3Q7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgIGFsaWdubWVudCgpIGNvbnN0OworCisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICBzZXRBcmd1bWVudEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGFy
Z3VtZW50QnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgc2V0QXJndW1lbnRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBhcmd1bWVudEJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIHN0YXJ0T2Zmc2V0LCBOUzo6VUludGVnZXIgYXJyYXlFbGVtZW50
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0QnVmZmVyKGNvbnN0IGNsYXNzIEJ1
ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZm
ZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVy
ZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgc2V0VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFu
Z2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGUoY29uc3Qg
Y2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRl
KiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCogICAgICAgICAgICAg
ICAgICBjb25zdGFudERhdGEoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBSZW5kZXJQaXBl
bGluZVN0YXRlKiBwaXBlbGluZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXMoTVRMOjpSZW5kZXJQaXBlbGlu
ZVN0YXRlKiBwaXBlbGluZXMsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgIHNldENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIENvbXB1dGVQaXBl
bGluZVN0YXRlKiBwaXBlbGluZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzKE1UTDo6Q29tcHV0ZVBpcGVs
aW5lU3RhdGUqIHBpcGVsaW5lcywgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IGNsYXNzIEluZGlyZWN0
Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXJz
KE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBidWZmZXJzLCBOUzo6UmFuZ2UgcmFuZ2UpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29u
c3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5T
OjpVSW50ZWdlciBpbmRleCk7CisKKyAgICBjbGFzcyBBcmd1bWVudEVuY29kZXIqIG5ld0FyZ3Vt
ZW50RW5jb2RlcihOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25U
YWJsZSogdmlzaWJsZUZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgIHNldFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBWaXNp
YmxlRnVuY3Rpb25UYWJsZSogdmlzaWJsZUZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5n
ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGUoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgSW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJh
bmdlKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpE
ZXZpY2UqIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3Ry
aW5nKiBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxh
YmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldExh
YmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8v
IHByb3BlcnR5OiBlbmNvZGVkTGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpB
cmd1bWVudEVuY29kZXI6OmVuY29kZWRMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmNv
ZGVkTGVuZ3RoKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhbGlnbm1lbnQKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6YWxpZ25tZW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYWxpZ25tZW50KSk7Cit9CisKKy8vIG1ldGhvZDogc2V0QXJndW1lbnRCdWZmZXI6
b2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0QXJndW1l
bnRCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGFyZ3VtZW50QnVmZmVyLCBOUzo6VUludGVnZXIg
b2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRBcmd1bWVudEJ1ZmZlcl9vZmZzZXRfKSwgYXJndW1lbnRCdWZmZXIsIG9mZnNl
dCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QXJndW1lbnRCdWZmZXI6c3RhcnRPZmZzZXQ6YXJyYXlF
bGVtZW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0QXJndW1l
bnRCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGFyZ3VtZW50QnVmZmVyLCBOUzo6VUludGVnZXIg
c3RhcnRPZmZzZXQsIE5TOjpVSW50ZWdlciBhcnJheUVsZW1lbnQpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFyZ3VtZW50QnVmZmVy
X3N0YXJ0T2Zmc2V0X2FycmF5RWxlbWVudF8pLCBhcmd1bWVudEJ1ZmZlciwgc3RhcnRPZmZzZXQs
IGFycmF5RWxlbWVudCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyOm9mZnNldDphdEluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0QnVmZmVyKGNvbnN0
IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBp
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0QnVmZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldEJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1
ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJhbmdlKTsK
K30KKworLy8gbWV0aG9kOiBzZXRUZXh0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QXJndW1lbnRFbmNvZGVyOjpzZXRUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVy
ZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXh0dXJlX2F0SW5kZXhfKSwgdGV4dHVyZSwgaW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRleHR1cmVzOndpdGhSYW5nZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4
dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXh0dXJlc193aXRoUmFuZ2VfKSwgdGV4dHVy
ZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVyU3RhdGU6YXRJbmRleDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZShjb25z
dCBNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1w
bGVyU3RhdGVfYXRJbmRleF8pLCBzYW1wbGVyLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRF
bmNvZGVyOjpzZXRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBO
Uzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZXJTdGF0ZXNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBy
YW5nZSk7Cit9CisKKy8vIG1ldGhvZDogY29uc3RhbnREYXRhQXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQqIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpjb25zdGFudERhdGEoTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGNvbnN0YW50RGF0YUF0SW5kZXhfKSwgaW5kZXgpOworfQorCisvLyBtZXRo
b2Q6IHNldFJlbmRlclBpcGVsaW5lU3RhdGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBcmd1bWVudEVuY29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5k
ZXJQaXBlbGluZVN0YXRlKiBwaXBlbGluZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZW5kZXJQ
aXBlbGluZVN0YXRlX2F0SW5kZXhfKSwgcGlwZWxpbmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBzZXRSZW5kZXJQaXBlbGluZVN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QXJndW1lbnRFbmNvZGVyOjpzZXRSZW5kZXJQaXBlbGluZVN0YXRlcyhNVEw6OlJlbmRlclBp
cGVsaW5lU3RhdGUqIHBpcGVsaW5lcywgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZW5kZXJQaXBlbGlu
ZVN0YXRlc193aXRoUmFuZ2VfKSwgcGlwZWxpbmVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDog
c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
cmd1bWVudEVuY29kZXI6OnNldENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0
ZVBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbXB1dGVQ
aXBlbGluZVN0YXRlX2F0SW5kZXhfKSwgcGlwZWxpbmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzKE1UTDo6Q29tcHV0
ZVBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lcywgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlUGlw
ZWxpbmVTdGF0ZXNfd2l0aFJhbmdlXyksIHBpcGVsaW5lcywgcmFuZ2UpOworfQorCisvLyBtZXRo
b2Q6IHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcjphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IE1UTDo6
SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5TOjpVSW50ZWdl
ciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyX2F0SW5kZXhfKSwgaW5kaXJlY3RDb21t
YW5kQnVmZmVyLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0SW5kaXJlY3RDb21tYW5kQnVm
ZmVyczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpz
ZXRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBidWZm
ZXJzLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnNfd2l0aFJhbmdl
XyksIGJ1ZmZlcnMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRBY2NlbGVyYXRpb25TdHJ1
Y3R1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNl
dEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSog
YWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFjY2VsZXJhdGlv
blN0cnVjdHVyZV9hdEluZGV4XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgaW5kZXgpOworfQor
CisvLyBtZXRob2Q6IG5ld0FyZ3VtZW50RW5jb2RlckZvckJ1ZmZlckF0SW5kZXg6CitfTVRMX0lO
TElORSBNVEw6OkFyZ3VtZW50RW5jb2RlciogTVRMOjpBcmd1bWVudEVuY29kZXI6Om5ld0FyZ3Vt
ZW50RW5jb2RlcihOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpBcmd1bWVudEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d0FyZ3VtZW50RW5jb2RlckZvckJ1ZmZlckF0SW5kZXhfKSwgaW5kZXgpOworfQorCisvLyBtZXRo
b2Q6IHNldFZpc2libGVGdW5jdGlvblRhYmxlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QXJndW1lbnRFbmNvZGVyOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OlZp
c2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEluZGV4XyksIHZpc2libGVGdW5jdGlvblRh
YmxlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndp
dGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldFZpc2li
bGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxl
RnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJs
ZXNfd2l0aFJhbmdlXyksIHZpc2libGVGdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBt
ZXRob2Q6IHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUo
Y29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVf
YXRJbmRleF8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBpbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZXMoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVzX3dpdGhSYW5nZV8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJpbmFy
eUFyY2hpdmUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJp
bmFyeUFyY2hpdmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNDJkMzc0YzM1YmUzOWQ2NjYyZTgxNGI3NzE5
ZTM0Njg1MmM1ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQmluYXJ5QXJjaGl2ZS5ocHAKQEAgLTAsMCArMSwxMzggQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01U
TEJpbmFyeUFyY2hpdmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVh
ZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShO
Uzo6VUludGVnZXIsIEJpbmFyeUFyY2hpdmVFcnJvcikgeworICAgIEJpbmFyeUFyY2hpdmVFcnJv
ck5vbmUgPSAwLAorICAgIEJpbmFyeUFyY2hpdmVFcnJvckludmFsaWRGaWxlID0gMSwKKyAgICBC
aW5hcnlBcmNoaXZlRXJyb3JVbmV4cGVjdGVkRWxlbWVudCA9IDIsCisgICAgQmluYXJ5QXJjaGl2
ZUVycm9yQ29tcGlsYXRpb25GYWlsdXJlID0gMywKK307CisKK2NsYXNzIEJpbmFyeUFyY2hpdmVE
ZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciogYWxs
b2MoKTsKKworICAgIGNsYXNzIEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgp
OworCisgICAgTlM6OlVSTCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFVybChjb25z
dCBOUzo6VVJMKiB1cmwpOworfTsKKworY2xhc3MgQmluYXJ5QXJjaGl2ZSA6IHB1YmxpYyBOUzo6
UmVmZXJlbmNpbmc8QmluYXJ5QXJjaGl2ZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAg
IGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCk7CisKKyAgICBjbGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0OworCisgICAg
Ym9vbCAgICAgICAgICBhZGRDb21wdXRlUGlwZWxpbmVGdW5jdGlvbnMoY29uc3QgY2xhc3MgQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpOwor
CisgICAgYm9vbCAgICAgICAgICBhZGRSZW5kZXJQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBjbGFz
cyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIGJvb2wgICAgICAgICAgYWRkVGlsZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zKGNv
bnN0IGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpF
cnJvcioqIGVycm9yKTsKKworICAgIGJvb2wgICAgICAgICAgc2VyaWFsaXplVG9VUkwoY29uc3Qg
TlM6OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29sICAgICAgICAgIGFk
ZEZ1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29u
c3QgY2xhc3MgTGlicmFyeSogbGlicmFyeSwgTlM6OkVycm9yKiogZXJyb3IpOworfTsKKworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpCaW5hcnlBcmNoaXZl
RGVzY3JpcHRvciogTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciogTVRM
OjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVy
dHk6IHVybAorX01UTF9JTkxJTkUgTlM6OlVSTCogTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRv
cjo6dXJsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VVJM
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1cmwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yOjpzZXRVcmwoY29uc3QgTlM6OlVSTCogdXJsKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRVcmxfKSwgdXJsKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6
U3RyaW5nKiBNVEw6OkJpbmFyeUFyY2hpdmU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChs
YWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmluYXJ5QXJjaGl2ZTo6c2V0TGFi
ZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8g
cHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6QmluYXJ5QXJj
aGl2ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIG1l
dGhvZDogYWRkQ29tcHV0ZVBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6ZXJyb3I6Citf
TVRMX0lOTElORSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6YWRkQ29tcHV0ZVBpcGVsaW5lRnVu
Y3Rpb25zKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwg
TlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9v
bD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGRDb21wdXRlUGlwZWxpbmVGdW5jdGlvbnNXaXRo
RGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDog
YWRkUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcjplcnJvcjoKK19NVExfSU5M
SU5FIGJvb2wgTVRMOjpCaW5hcnlBcmNoaXZlOjphZGRSZW5kZXJQaXBlbGluZUZ1bmN0aW9ucyhj
b25zdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9y
KiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChhZGRSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9y
X2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBhZGRUaWxlUmVu
ZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcjplcnJvcjoKK19NVExfSU5MSU5FIGJv
b2wgTVRMOjpCaW5hcnlBcmNoaXZlOjphZGRUaWxlUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnMoY29u
c3QgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJy
b3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGFkZFRpbGVSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNj
cmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBzZXJp
YWxpemVUb1VSTDplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpCaW5hcnlBcmNoaXZlOjpz
ZXJpYWxpemVUb1VSTChjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioqIGVycm9yKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2VyaWFsaXplVG9VUkxfZXJyb3JfKSwgdXJsLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDog
YWRkRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpsaWJyYXJ5OmVycm9yOgorX01UTF9JTkxJTkUgYm9v
bCBNVEw6OkJpbmFyeUFyY2hpdmU6OmFkZEZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb25EZXNj
cmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6OkxpYnJhcnkqIGxpYnJhcnksIE5TOjpFcnJv
cioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoYWRkRnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9saWJyYXJ5X2Vycm9y
XyksIGRlc2NyaXB0b3IsIGxpYnJhcnksIGVycm9yKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRDb21tYW5kRW5jb2Rl
ci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGE4NmI2YTk1MDFjNjg1M2YwYzhmNWEwYmIwYWI3ZWI2MDM3N2Mw
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsMjQ2IEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExCbGl0
Q29tbWFuZEVuY29kZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVh
ZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExCbGl0Q29tbWFuZEVuY29k
ZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExU
eXBlcy5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIs
IEJsaXRPcHRpb24pIHsKKyAgICBCbGl0T3B0aW9uTm9uZSA9IDAsCisgICAgQmxpdE9wdGlvbkRl
cHRoRnJvbURlcHRoU3RlbmNpbCA9IDEsCisgICAgQmxpdE9wdGlvblN0ZW5jaWxGcm9tRGVwdGhT
dGVuY2lsID0gMiwKKyAgICBCbGl0T3B0aW9uUm93TGluZWFyUFZSVEMgPSA0LAorfTsKKworY2xh
c3MgQmxpdENvbW1hbmRFbmNvZGVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxCbGl0Q29tbWFu
ZEVuY29kZXIsIENvbW1hbmRFbmNvZGVyPgoreworcHVibGljOgorICAgIHZvaWQgc3luY2hyb25p
emVSZXNvdXJjZShjb25zdCBjbGFzcyBSZXNvdXJjZSogcmVzb3VyY2UpOworCisgICAgdm9pZCBz
eW5jaHJvbml6ZVRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRl
Z2VyIHNsaWNlLCBOUzo6VUludGVnZXIgbGV2ZWwpOworCisgICAgdm9pZCBjb3B5RnJvbVRleHR1
cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNvdXJj
ZVNsaWNlLCBOUzo6VUludGVnZXIgc291cmNlTGV2ZWwsIE1UTDo6T3JpZ2luIHNvdXJjZU9yaWdp
biwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IGNsYXNzIFRleHR1cmUqIGRlc3RpbmF0aW9u
VGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0
aW5hdGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBkZXN0aW5hdGlvbk9yaWdpbik7CisKKyAgICB2b2lk
IGNvcHlGcm9tQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUlu
dGVnZXIgc291cmNlT2Zmc2V0LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJSb3csIE5TOjpV
SW50ZWdlciBzb3VyY2VCeXRlc1BlckltYWdlLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3Qg
Y2xhc3MgVGV4dHVyZSogZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRp
b25TbGljZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3Rp
bmF0aW9uT3JpZ2luKTsKKworICAgIHZvaWQgY29weUZyb21CdWZmZXIoY29uc3QgY2xhc3MgQnVm
ZmVyKiBzb3VyY2VCdWZmZXIsIE5TOjpVSW50ZWdlciBzb3VyY2VPZmZzZXQsIE5TOjpVSW50ZWdl
ciBzb3VyY2VCeXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIHNvdXJjZUJ5dGVzUGVySW1hZ2UsIE1U
TDo6U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1
cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRp
b25MZXZlbCwgTVRMOjpPcmlnaW4gZGVzdGluYXRpb25PcmlnaW4sIE1UTDo6QmxpdE9wdGlvbiBv
cHRpb25zKTsKKworICAgIHZvaWQgY29weUZyb21UZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUq
IHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNv
dXJjZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXpl
LCBjb25zdCBjbGFzcyBCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVz
dGluYXRpb25PZmZzZXQsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBOUzo6
VUludGVnZXIgZGVzdGluYXRpb25CeXRlc1BlckltYWdlKTsKKworICAgIHZvaWQgY29weUZyb21U
ZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBz
b3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VP
cmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBjbGFzcyBCdWZmZXIqIGRlc3RpbmF0
aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZzZXQsIE5TOjpVSW50ZWdlciBk
ZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25CeXRlc1Blcklt
YWdlLCBNVEw6OkJsaXRPcHRpb24gb3B0aW9ucyk7CisKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFw
cyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlKTsKKworICAgIHZvaWQgZmlsbEJ1ZmZlcihj
b25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlLCB1aW50OF90IHZhbHVl
KTsKKworICAgIHZvaWQgY29weUZyb21UZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNvdXJj
ZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxl
dmVsLCBjb25zdCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdl
ciBkZXN0aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTlM6OlVJ
bnRlZ2VyIHNsaWNlQ291bnQsIE5TOjpVSW50ZWdlciBsZXZlbENvdW50KTsKKworICAgIHZvaWQg
Y29weUZyb21UZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNvdXJjZVRleHR1cmUsIGNvbnN0
IGNsYXNzIFRleHR1cmUqIGRlc3RpbmF0aW9uVGV4dHVyZSk7CisKKyAgICB2b2lkIGNvcHlGcm9t
QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUludGVnZXIgc291
cmNlT2Zmc2V0LCBjb25zdCBjbGFzcyBCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUlu
dGVnZXIgZGVzdGluYXRpb25PZmZzZXQsIE5TOjpVSW50ZWdlciBzaXplKTsKKworICAgIHZvaWQg
dXBkYXRlRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKKworICAgIHZvaWQgd2FpdEZv
ckZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBmZW5jZSk7CisKKyAgICB2b2lkIGdldFRleHR1cmVB
Y2Nlc3NDb3VudGVycyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiBy
ZWdpb24sIE5TOjpVSW50ZWdlciBtaXBMZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBib29sIHJl
c2V0Q291bnRlcnMsIGNvbnN0IGNsYXNzIEJ1ZmZlciogY291bnRlcnNCdWZmZXIsIE5TOjpVSW50
ZWdlciBjb3VudGVyc0J1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkIHJlc2V0VGV4dHVyZUFjY2Vz
c0NvdW50ZXJzKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE1UTDo6UmVnaW9uIHJlZ2lv
biwgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBOUzo6VUludGVnZXIgc2xpY2UpOworCisgICAgdm9p
ZCBvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1
cmUpOworCisgICAgdm9pZCBvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzKGNvbnN0IGNsYXNz
IFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6OlVJbnRlZ2VyIGxldmVs
KTsKKworICAgIHZvaWQgb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vzcyhjb25zdCBjbGFzcyBU
ZXh0dXJlKiB0ZXh0dXJlKTsKKworICAgIHZvaWQgb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vz
cyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgc2xpY2UsIE5TOjpV
SW50ZWdlciBsZXZlbCk7CisKKyAgICB2b2lkIHJlc2V0Q29tbWFuZHNJbkJ1ZmZlcihjb25zdCBj
bGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlKTsKKwor
ICAgIHZvaWQgY29weUluZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENv
bW1hbmRCdWZmZXIqIHNvdXJjZSwgTlM6OlJhbmdlIHNvdXJjZVJhbmdlLCBjb25zdCBjbGFzcyBJ
bmRpcmVjdENvbW1hbmRCdWZmZXIqIGRlc3RpbmF0aW9uLCBOUzo6VUludGVnZXIgZGVzdGluYXRp
b25JbmRleCk7CisKKyAgICB2b2lkIG9wdGltaXplSW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0
IGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6
UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCBzYW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IGNs
YXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBs
ZUluZGV4LCBib29sIGJhcnJpZXIpOworCisgICAgdm9pZCByZXNvbHZlQ291bnRlcnMoY29uc3Qg
Y2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6UmFuZ2UgcmFuZ2Us
IGNvbnN0IGNsYXNzIEJ1ZmZlciogZGVzdGluYXRpb25CdWZmZXIsIE5TOjpVSW50ZWdlciBkZXN0
aW5hdGlvbk9mZnNldCk7Cit9OworCit9CisKKy8vIG1ldGhvZDogc3luY2hyb25pemVSZXNvdXJj
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnN5bmNocm9uaXpl
UmVzb3VyY2UoY29uc3QgTVRMOjpSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN5bmNocm9uaXplUmVzb3Vy
Y2VfKSwgcmVzb3VyY2UpOworfQorCisvLyBtZXRob2Q6IHN5bmNocm9uaXplVGV4dHVyZTpzbGlj
ZTpsZXZlbDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnN5bmNo
cm9uaXplVGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBz
bGljZSwgTlM6OlVJbnRlZ2VyIGxldmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzeW5jaHJvbml6ZVRleHR1cmVfc2xpY2VfbGV2ZWxf
KSwgdGV4dHVyZSwgc2xpY2UsIGxldmVsKTsKK30KKworLy8gbWV0aG9kOiBjb3B5RnJvbVRleHR1
cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291cmNlT3JpZ2luOnNvdXJjZVNpemU6dG9UZXh0
dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0aW5hdGlvbk9yaWdpbjoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tVGV4dHVy
ZShjb25zdCBNVEw6OlRleHR1cmUqIHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VT
bGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4s
IE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBNVEw6OlRleHR1cmUqIGRlc3RpbmF0aW9uVGV4
dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBkZXN0aW5hdGlvbk9yaWdpbikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUZyb21UZXh0dXJl
X3NvdXJjZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJjZU9yaWdpbl9zb3VyY2VTaXplX3RvVGV4dHVy
ZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVzdGluYXRpb25PcmlnaW5fKSwg
c291cmNlVGV4dHVyZSwgc291cmNlU2xpY2UsIHNvdXJjZUxldmVsLCBzb3VyY2VPcmlnaW4sIHNv
dXJjZVNpemUsIGRlc3RpbmF0aW9uVGV4dHVyZSwgZGVzdGluYXRpb25TbGljZSwgZGVzdGluYXRp
b25MZXZlbCwgZGVzdGluYXRpb25PcmlnaW4pOworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tQnVm
ZmVyOnNvdXJjZU9mZnNldDpzb3VyY2VCeXRlc1BlclJvdzpzb3VyY2VCeXRlc1BlckltYWdlOnNv
dXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0
aW5hdGlvbk9yaWdpbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6
OmNvcHlGcm9tQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBzb3VyY2VCdWZmZXIsIE5TOjpVSW50
ZWdlciBzb3VyY2VPZmZzZXQsIE5TOjpVSW50ZWdlciBzb3VyY2VCeXRlc1BlclJvdywgTlM6OlVJ
bnRlZ2VyIHNvdXJjZUJ5dGVzUGVySW1hZ2UsIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBN
VEw6OlRleHR1cmUqIGRlc3RpbmF0aW9uVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9u
U2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBkZXN0aW5h
dGlvbk9yaWdpbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoY29weUZyb21CdWZmZXJfc291cmNlT2Zmc2V0X3NvdXJjZUJ5dGVzUGVyUm93
X3NvdXJjZUJ5dGVzUGVySW1hZ2Vfc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGlj
ZV9kZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luXyksIHNvdXJjZUJ1ZmZlciwgc291
cmNlT2Zmc2V0LCBzb3VyY2VCeXRlc1BlclJvdywgc291cmNlQnl0ZXNQZXJJbWFnZSwgc291cmNl
U2l6ZSwgZGVzdGluYXRpb25UZXh0dXJlLCBkZXN0aW5hdGlvblNsaWNlLCBkZXN0aW5hdGlvbkxl
dmVsLCBkZXN0aW5hdGlvbk9yaWdpbik7Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21CdWZmZXI6
c291cmNlT2Zmc2V0OnNvdXJjZUJ5dGVzUGVyUm93OnNvdXJjZUJ5dGVzUGVySW1hZ2U6c291cmNl
U2l6ZTp0b1RleHR1cmU6ZGVzdGluYXRpb25TbGljZTpkZXN0aW5hdGlvbkxldmVsOmRlc3RpbmF0
aW9uT3JpZ2luOm9wdGlvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNv
ZGVyOjpjb3B5RnJvbUJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6
VUludGVnZXIgc291cmNlT2Zmc2V0LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJSb3csIE5T
OjpVSW50ZWdlciBzb3VyY2VCeXRlc1BlckltYWdlLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29u
c3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRMOjpPcmlnaW4gZGVz
dGluYXRpb25PcmlnaW4sIE1UTDo6QmxpdE9wdGlvbiBvcHRpb25zKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5RnJvbUJ1ZmZlcl9z
b3VyY2VPZmZzZXRfc291cmNlQnl0ZXNQZXJSb3dfc291cmNlQnl0ZXNQZXJJbWFnZV9zb3VyY2VT
aXplX3RvVGV4dHVyZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVzdGluYXRp
b25PcmlnaW5fb3B0aW9uc18pLCBzb3VyY2VCdWZmZXIsIHNvdXJjZU9mZnNldCwgc291cmNlQnl0
ZXNQZXJSb3csIHNvdXJjZUJ5dGVzUGVySW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RpbmF0aW9uVGV4
dHVyZSwgZGVzdGluYXRpb25TbGljZSwgZGVzdGluYXRpb25MZXZlbCwgZGVzdGluYXRpb25Pcmln
aW4sIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tVGV4dHVyZTpzb3VyY2VTbGlj
ZTpzb3VyY2VMZXZlbDpzb3VyY2VPcmlnaW46c291cmNlU2l6ZTp0b0J1ZmZlcjpkZXN0aW5hdGlv
bk9mZnNldDpkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OmRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZToK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tVGV4dHVy
ZShjb25zdCBNVEw6OlRleHR1cmUqIHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VT
bGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4s
IE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBNVEw6OkJ1ZmZlciogZGVzdGluYXRpb25CdWZm
ZXIsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbk9mZnNldCwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0
aW9uQnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNv
cHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF9zb3VyY2VPcmlnaW5fc291cmNl
U2l6ZV90b0J1ZmZlcl9kZXN0aW5hdGlvbk9mZnNldF9kZXN0aW5hdGlvbkJ5dGVzUGVyUm93X2Rl
c3RpbmF0aW9uQnl0ZXNQZXJJbWFnZV8pLCBzb3VyY2VUZXh0dXJlLCBzb3VyY2VTbGljZSwgc291
cmNlTGV2ZWwsIHNvdXJjZU9yaWdpbiwgc291cmNlU2l6ZSwgZGVzdGluYXRpb25CdWZmZXIsIGRl
c3RpbmF0aW9uT2Zmc2V0LCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBkZXN0aW5hdGlvbkJ5dGVz
UGVySW1hZ2UpOworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tVGV4dHVyZTpzb3VyY2VTbGljZTpz
b3VyY2VMZXZlbDpzb3VyY2VPcmlnaW46c291cmNlU2l6ZTp0b0J1ZmZlcjpkZXN0aW5hdGlvbk9m
ZnNldDpkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OmRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZTpvcHRp
b25zOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Y29weUZyb21U
ZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNv
dXJjZVNsaWNlLCBOUzo6VUludGVnZXIgc291cmNlTGV2ZWwsIE1UTDo6T3JpZ2luIHNvdXJjZU9y
aWdpbiwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IE1UTDo6QnVmZmVyKiBkZXN0aW5hdGlv
bkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIgZGVz
dGluYXRpb25CeXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFn
ZSwgTVRMOjpCbGl0T3B0aW9uIG9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9z
b3VyY2VMZXZlbF9zb3VyY2VPcmlnaW5fc291cmNlU2l6ZV90b0J1ZmZlcl9kZXN0aW5hdGlvbk9m
ZnNldF9kZXN0aW5hdGlvbkJ5dGVzUGVyUm93X2Rlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZV9vcHRp
b25zXyksIHNvdXJjZVRleHR1cmUsIHNvdXJjZVNsaWNlLCBzb3VyY2VMZXZlbCwgc291cmNlT3Jp
Z2luLCBzb3VyY2VTaXplLCBkZXN0aW5hdGlvbkJ1ZmZlciwgZGVzdGluYXRpb25PZmZzZXQsIGRl
c3RpbmF0aW9uQnl0ZXNQZXJSb3csIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZSwgb3B0aW9ucyk7
Cit9CisKKy8vIG1ldGhvZDogZ2VuZXJhdGVNaXBtYXBzRm9yVGV4dHVyZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmdlbmVyYXRlTWlwbWFwcyhjb25zdCBNVEw6
OlRleHR1cmUqIHRleHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGdlbmVyYXRlTWlwbWFwc0ZvclRleHR1cmVfKSwgdGV4dHVyZSk7
Cit9CisKKy8vIG1ldGhvZDogZmlsbEJ1ZmZlcjpyYW5nZTp2YWx1ZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmZpbGxCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIq
IGJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlLCB1aW50OF90IHZhbHVlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChmaWxsQnVmZmVyX3Jhbmdl
X3ZhbHVlXyksIGJ1ZmZlciwgcmFuZ2UsIHZhbHVlKTsKK30KKworLy8gbWV0aG9kOiBjb3B5RnJv
bVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xp
Y2U6ZGVzdGluYXRpb25MZXZlbDpzbGljZUNvdW50OmxldmVsQ291bnQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRMOjpU
ZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50
ZWdlciBzb3VyY2VMZXZlbCwgY29uc3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUs
IE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25M
ZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlQ291bnQsIE5TOjpVSW50ZWdlciBsZXZlbENvdW50KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNlTGV2ZWxfdG9UZXh0dXJlX2Rlc3RpbmF0
aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9zbGljZUNvdW50X2xldmVsQ291bnRfKSwgc291cmNl
VGV4dHVyZSwgc291cmNlU2xpY2UsIHNvdXJjZUxldmVsLCBkZXN0aW5hdGlvblRleHR1cmUsIGRl
c3RpbmF0aW9uU2xpY2UsIGRlc3RpbmF0aW9uTGV2ZWwsIHNsaWNlQ291bnQsIGxldmVsQ291bnQp
OworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tVGV4dHVyZTp0b1RleHR1cmU6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRM
OjpUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBjb25zdCBNVEw6OlRleHR1cmUqIGRlc3RpbmF0aW9u
VGV4dHVyZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoY29weUZyb21UZXh0dXJlX3RvVGV4dHVyZV8pLCBzb3VyY2VUZXh0dXJlLCBkZXN0
aW5hdGlvblRleHR1cmUpOworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tQnVmZmVyOnNvdXJjZU9m
ZnNldDp0b0J1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDpzaXplOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Y29weUZyb21CdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIq
IHNvdXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgY29uc3QgTVRMOjpCdWZm
ZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZzZXQsIE5T
OjpVSW50ZWdlciBzaXplKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChjb3B5RnJvbUJ1ZmZlcl9zb3VyY2VPZmZzZXRfdG9CdWZmZXJfZGVz
dGluYXRpb25PZmZzZXRfc2l6ZV8pLCBzb3VyY2VCdWZmZXIsIHNvdXJjZU9mZnNldCwgZGVzdGlu
YXRpb25CdWZmZXIsIGRlc3RpbmF0aW9uT2Zmc2V0LCBzaXplKTsKK30KKworLy8gbWV0aG9kOiB1
cGRhdGVGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnVw
ZGF0ZUZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1cGRhdGVGZW5jZV8pLCBmZW5jZSk7
Cit9CisKKy8vIG1ldGhvZDogd2FpdEZvckZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJs
aXRDb21tYW5kRW5jb2Rlcjo6d2FpdEZvckZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3
YWl0Rm9yRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRob2Q6IGdldFRleHR1cmVBY2Nlc3ND
b3VudGVyczpyZWdpb246bWlwTGV2ZWw6c2xpY2U6cmVzZXRDb3VudGVyczpjb3VudGVyc0J1ZmZl
cjpjb3VudGVyc0J1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFu
ZEVuY29kZXI6OmdldFRleHR1cmVBY2Nlc3NDb3VudGVycyhjb25zdCBNVEw6OlRleHR1cmUqIHRl
eHR1cmUsIE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBOUzo6VUlu
dGVnZXIgc2xpY2UsIGJvb2wgcmVzZXRDb3VudGVycywgY29uc3QgTVRMOjpCdWZmZXIqIGNvdW50
ZXJzQnVmZmVyLCBOUzo6VUludGVnZXIgY291bnRlcnNCdWZmZXJPZmZzZXQpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdldFRleHR1cmVB
Y2Nlc3NDb3VudGVyc19yZWdpb25fbWlwTGV2ZWxfc2xpY2VfcmVzZXRDb3VudGVyc19jb3VudGVy
c0J1ZmZlcl9jb3VudGVyc0J1ZmZlck9mZnNldF8pLCB0ZXh0dXJlLCByZWdpb24sIG1pcExldmVs
LCBzbGljZSwgcmVzZXRDb3VudGVycywgY291bnRlcnNCdWZmZXIsIGNvdW50ZXJzQnVmZmVyT2Zm
c2V0KTsKK30KKworLy8gbWV0aG9kOiByZXNldFRleHR1cmVBY2Nlc3NDb3VudGVyczpyZWdpb246
bWlwTGV2ZWw6c2xpY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVy
OjpyZXNldFRleHR1cmVBY2Nlc3NDb3VudGVycyhjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUs
IE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBOUzo6VUludGVnZXIg
c2xpY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHJlc2V0VGV4dHVyZUFjY2Vzc0NvdW50ZXJzX3JlZ2lvbl9taXBMZXZlbF9zbGljZV8p
LCB0ZXh0dXJlLCByZWdpb24sIG1pcExldmVsLCBzbGljZSk7Cit9CisKKy8vIG1ldGhvZDogb3B0
aW1pemVDb250ZW50c0ZvckdQVUFjY2VzczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29t
bWFuZEVuY29kZXI6Om9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3MoY29uc3QgTVRMOjpUZXh0
dXJlKiB0ZXh0dXJlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzXyksIHRleHR1cmUpOwor
fQorCisvLyBtZXRob2Q6IG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUNvbnRl
bnRzRm9yR1BVQWNjZXNzKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2Vy
IHNsaWNlLCBOUzo6VUludGVnZXIgbGV2ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3Nf
c2xpY2VfbGV2ZWxfKSwgdGV4dHVyZSwgc2xpY2UsIGxldmVsKTsKK30KKworLy8gbWV0aG9kOiBv
cHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRD
b21tYW5kRW5jb2Rlcjo6b3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vzcyhjb25zdCBNVEw6OlRl
eHR1cmUqIHRleHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3NfKSwgdGV4dHVyZSk7
Cit9CisKKy8vIG1ldGhvZDogb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2VzczpzbGljZTpsZXZl
bDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6Om9wdGltaXplQ29u
dGVudHNGb3JDUFVBY2Nlc3MoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVn
ZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vz
c19zbGljZV9sZXZlbF8pLCB0ZXh0dXJlLCBzbGljZSwgbGV2ZWwpOworfQorCisvLyBtZXRob2Q6
IHJlc2V0Q29tbWFuZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QmxpdENvbW1hbmRFbmNvZGVyOjpyZXNldENvbW1hbmRzSW5CdWZmZXIoY29uc3QgTVRMOjpJbmRp
cmVjdENvbW1hbmRCdWZmZXIqIGJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldENvbW1hbmRz
SW5CdWZmZXJfd2l0aFJhbmdlXyksIGJ1ZmZlciwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IGNv
cHlJbmRpcmVjdENvbW1hbmRCdWZmZXI6c291cmNlUmFuZ2U6ZGVzdGluYXRpb246ZGVzdGluYXRp
b25JbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlJ
bmRpcmVjdENvbW1hbmRCdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIHNv
dXJjZSwgTlM6OlJhbmdlIHNvdXJjZVJhbmdlLCBjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1
ZmZlciogZGVzdGluYXRpb24sIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5SW5k
aXJlY3RDb21tYW5kQnVmZmVyX3NvdXJjZVJhbmdlX2Rlc3RpbmF0aW9uX2Rlc3RpbmF0aW9uSW5k
ZXhfKSwgc291cmNlLCBzb3VyY2VSYW5nZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uSW5kZXgp
OworfQorCisvLyBtZXRob2Q6IG9wdGltaXplSW5kaXJlY3RDb21tYW5kQnVmZmVyOndpdGhSYW5n
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6Om9wdGltaXplSW5k
aXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRp
cmVjdENvbW1hbmRCdWZmZXIsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3B0aW1pemVJbmRpcmVjdENvbW1h
bmRCdWZmZXJfd2l0aFJhbmdlXyksIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgcmFuZ2UpOworfQor
CisvLyBtZXRob2Q6IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRTYW1wbGVJbmRleDp3aXRoQmFy
cmllcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnNhbXBsZUNv
dW50ZXJzSW5CdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZm
ZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3VudGVy
c0luQnVmZmVyX2F0U2FtcGxlSW5kZXhfd2l0aEJhcnJpZXJfKSwgc2FtcGxlQnVmZmVyLCBzYW1w
bGVJbmRleCwgYmFycmllcik7Cit9CisKKy8vIG1ldGhvZDogcmVzb2x2ZUNvdW50ZXJzOmluUmFu
Z2U6ZGVzdGluYXRpb25CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpyZXNvbHZlQ291bnRlcnMoY29uc3QgTVRMOjpDb3Vu
dGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpSYW5nZSByYW5nZSwgY29uc3QgTVRM
OjpCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZz
ZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHJlc29sdmVDb3VudGVyc19pblJhbmdlX2Rlc3RpbmF0aW9uQnVmZmVyX2Rlc3RpbmF0aW9u
T2Zmc2V0XyksIHNhbXBsZUJ1ZmZlciwgcmFuZ2UsIGRlc3RpbmF0aW9uQnVmZmVyLCBkZXN0aW5h
dGlvbk9mZnNldCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQmxpdFBhc3MuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEJsaXRQYXNzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGVhZTMxZDcxMjRkYmEzNDQxMDNl
N2E3M2Q3OTU2ZDRiYTUzMTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRQYXNzLmhwcApAQCAtMCwwICsxLDE2NSBAQAorLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwv
TVRMQmxpdFBhc3MuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisv
LworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVy
QnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIEJsaXRQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8Qmxp
dFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYWxs
b2MoKTsKKworICAgIGNsYXNzIEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbXBs
ZUJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRPZkVuY29k
ZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCk7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5kT2ZFbmNvZGVyU2Ft
cGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK307CisKK2Ns
YXNzIEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
ckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCbGl0UGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisK
KyAgICBjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAg
ICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRPYmplY3QoY29uc3QgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7Cit9OworCitj
bGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QmxpdFBhc3NEZXNj
cmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3Iq
ICAgICAgICAgICAgICAgICAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIEJsaXRQYXNzRGVzY3Jp
cHRvciogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNs
YXNzIEJsaXRQYXNzRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICBibGl0UGFzc0Rlc2Ny
aXB0b3IoKTsKKworICAgIGNsYXNzIEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3JBcnJheSogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdDsKK307CisKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QmxpdFBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklW
QVRFX0NMUyhNVExCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9
CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJv
cGVydHk6IHNhbXBsZUJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVy
KiBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNhbXBsZUJ1
ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3Vu
dGVyU2FtcGxlQnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVCdWZmZXIpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldFNhbXBsZUJ1ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZm
ZXIqIHNhbXBsZUJ1ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlQnVmZmVyXyksIHNhbXBsZUJ1ZmZlcik7Cit9CisK
Ky8vIHByb3BlcnR5OiBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpz
dGFydE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhcnRPZkVu
Y29kZXJTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdFBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJ
bmRleChOUzo6VUludGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhcnRPZkVu
Y29kZXJTYW1wbGVJbmRleF8pLCBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK30KKworLy8g
cHJvcGVydHk6IGVuZE9mRW5jb2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjplbmRPZkVu
Y29kZXJTYW1wbGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZE9mRW5jb2RlclNhbXBs
ZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUlu
dGVnZXIgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4
XyksIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxs
b2MKK19NVExfSU5MSU5FIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvckFycmF5KiBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJsaXRQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NM
UyhNVExCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpKTsKK30K
KworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Pigp
OworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5F
IE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpCbGl0
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUlu
dGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnRJbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
QXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudCwgYXR0YWNobWVudEluZGV4
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QmxpdFBh
c3NEZXNjcmlwdG9yKiBNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcj4oX01UTF9QUklW
QVRFX0NMUyhNVExCbGl0UGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OkJsaXRQYXNzRGVzY3JpcHRvciogTVRMOjpCbGl0UGFzc0Rlc2NyaXB0
b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QmxpdFBhc3NE
ZXNjcmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBibGl0UGFzc0Rlc2NyaXB0b3IK
K19NVExfSU5MSU5FIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yKiBNVEw6OkJsaXRQYXNzRGVzY3Jp
cHRvcjo6YmxpdFBhc3NEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBh
c3NEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChibGl0UGFzc0Rlc2NyaXB0b3IpKTsKK30K
KworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzCitfTVRMX0lOTElORSBNVEw6
OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpCbGl0
UGFzc0Rlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQnVmZmVy
QXR0YWNobWVudHMpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExCdWZmZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEJ1ZmZlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFiZGRlZmVhNzcwZDU0NzNlMzNmMWFj
NGFiYjI2NDYyYmZjZjQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExCdWZmZXIuaHBwCkBAIC0wLDAgKzEsMTAxIEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExC
dWZmZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdl
LmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisKK25hbWVzcGFj
ZSBNVEwKK3sKK2NsYXNzIEJ1ZmZlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QnVmZmVyLCBS
ZXNvdXJjZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6VUludGVnZXIgICBsZW5ndGgoKSBjb25zdDsK
KworICAgIHZvaWQqICAgICAgICAgIGNvbnRlbnRzKCk7CisKKyAgICB2b2lkICAgICAgICAgICBk
aWRNb2RpZnlSYW5nZShOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgY2xhc3MgVGV4dHVyZSogbmV3
VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OlVJ
bnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93KTsKKworICAgIHZvaWQgICAg
ICAgICAgIGFkZERlYnVnTWFya2VyKGNvbnN0IE5TOjpTdHJpbmcqIG1hcmtlciwgTlM6OlJhbmdl
IHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgIHJlbW92ZUFsbERlYnVnTWFya2VycygpOwor
CisgICAgY2xhc3MgQnVmZmVyKiAgcmVtb3RlU3RvcmFnZUJ1ZmZlcigpIGNvbnN0OworCisgICAg
Y2xhc3MgQnVmZmVyKiAgbmV3UmVtb3RlQnVmZmVyVmlld0ZvckRldmljZShjb25zdCBjbGFzcyBE
ZXZpY2UqIGRldmljZSk7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBsZW5ndGgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkJ1ZmZlcjo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobGVuZ3RoKSk7Cit9CisKKy8vIG1ldGhvZDogY29udGVudHMKK19NVExfSU5MSU5FIHZvaWQq
IE1UTDo6QnVmZmVyOjpjb250ZW50cygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29udGVudHMpKTsKK30KKworLy8gbWV0
aG9kOiBkaWRNb2RpZnlSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCdWZmZXI6OmRpZE1v
ZGlmeVJhbmdlKE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGlkTW9kaWZ5UmFuZ2VfKSwgcmFuZ2UpOworfQor
CisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjpvZmZzZXQ6Ynl0ZXNQZXJSb3c6
CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6QnVmZmVyOjpuZXdUZXh0dXJlKGNvbnN0
IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpVSW50ZWdlciBvZmZzZXQs
IE5TOjpVSW50ZWdlciBieXRlc1BlclJvdykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1RleHR1cmVXaXRo
RGVzY3JpcHRvcl9vZmZzZXRfYnl0ZXNQZXJSb3dfKSwgZGVzY3JpcHRvciwgb2Zmc2V0LCBieXRl
c1BlclJvdyk7Cit9CisKKy8vIG1ldGhvZDogYWRkRGVidWdNYXJrZXI6cmFuZ2U6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6QnVmZmVyOjphZGREZWJ1Z01hcmtlcihjb25zdCBOUzo6U3RyaW5nKiBt
YXJrZXIsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRkRGVidWdNYXJrZXJfcmFuZ2VfKSwgbWFya2VyLCBy
YW5nZSk7Cit9CisKKy8vIG1ldGhvZDogcmVtb3ZlQWxsRGVidWdNYXJrZXJzCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QnVmZmVyOjpyZW1vdmVBbGxEZWJ1Z01hcmtlcnMoKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZW1vdmVBbGxEZWJ1
Z01hcmtlcnMpKTsKK30KKworLy8gcHJvcGVydHk6IHJlbW90ZVN0b3JhZ2VCdWZmZXIKK19NVExf
SU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkJ1ZmZlcjo6cmVtb3RlU3RvcmFnZUJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHJlbW90ZVN0b3JhZ2VCdWZmZXIpKTsKK30KKworLy8gbWV0aG9k
OiBuZXdSZW1vdGVCdWZmZXJWaWV3Rm9yRGV2aWNlOgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIq
IE1UTDo6QnVmZmVyOjpuZXdSZW1vdGVCdWZmZXJWaWV3Rm9yRGV2aWNlKGNvbnN0IE1UTDo6RGV2
aWNlKiBkZXZpY2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZm
ZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbW90ZUJ1ZmZlclZpZXdGb3JEZXZpY2Vf
KSwgZGV2aWNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExDYXB0dXJlTWFuYWdlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1hbmFnZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZTEwZjVjMjM0
YjBmMWU0NjYwNjQ3ZDFlYWI5MDAwMDQyOWQ4NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1hbmFnZXIuaHBwCkBAIC0w
LDAgKzEsMjIwIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vCisvLyBNZXRhbC9NVExDYXB0dXJlTWFuYWdlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQg
MjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhw
cCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUu
aHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUg
Ik1UTENhcHR1cmVNYW5hZ2VyLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5T
OjpJbnRlZ2VyLCBDYXB0dXJlRXJyb3IpIHsKKyAgICBDYXB0dXJlRXJyb3JOb3RTdXBwb3J0ZWQg
PSAxLAorICAgIENhcHR1cmVFcnJvckFscmVhZHlDYXB0dXJpbmcgPSAyLAorICAgIENhcHR1cmVF
cnJvckludmFsaWREZXNjcmlwdG9yID0gMywKK307CisKK19NVExfRU5VTShOUzo6SW50ZWdlciwg
Q2FwdHVyZURlc3RpbmF0aW9uKSB7CisgICAgQ2FwdHVyZURlc3RpbmF0aW9uRGV2ZWxvcGVyVG9v
bHMgPSAxLAorICAgIENhcHR1cmVEZXN0aW5hdGlvbkdQVVRyYWNlRG9jdW1lbnQgPSAyLAorfTsK
KworY2xhc3MgQ2FwdHVyZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8Q2FwdHVyZURl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENhcHR1cmVEZXNjcmlwdG9y
KiBhbGxvYygpOworCisgICAgY2xhc3MgQ2FwdHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7
CisKKyAgICBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVPYmplY3QoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENhcHR1cmVPYmpl
Y3QoaWQgY2FwdHVyZU9iamVjdCk7CisKKyAgICBNVEw6OkNhcHR1cmVEZXN0aW5hdGlvbiAgICAg
ICAgIGRlc3RpbmF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXREZXN0aW5hdGlvbihNVEw6OkNhcHR1cmVEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbik7
CisKKyAgICBOUzo6VVJMKiAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFVSTCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T3V0cHV0VVJMKGNvbnN0
IE5TOjpVUkwqIG91dHB1dFVSTCk7Cit9OworCitjbGFzcyBDYXB0dXJlTWFuYWdlciA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8Q2FwdHVyZU1hbmFnZXI+Cit7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNsYXNzIENhcHR1cmVNYW5hZ2VyKiBhbGxvYygpOworCisgICAgc3RhdGljIGNsYXNzIENhcHR1
cmVNYW5hZ2VyKiBzaGFyZWRDYXB0dXJlTWFuYWdlcigpOworCisgICAgTVRMOjpDYXB0dXJlTWFu
YWdlciogICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBDYXB0dXJlU2NvcGUqICAgICAgICAg
IG5ld0NhcHR1cmVTY29wZShjb25zdCBjbGFzcyBEZXZpY2UqIGRldmljZSk7CisKKyAgICBjbGFz
cyBDYXB0dXJlU2NvcGUqICAgICAgICAgIG5ld0NhcHR1cmVTY29wZShjb25zdCBjbGFzcyBDb21t
YW5kUXVldWUqIGNvbW1hbmRRdWV1ZSk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1cHBvcnRzRGVzdGluYXRpb24oTVRMOjpDYXB0dXJlRGVzdGluYXRpb24gZGVzdGluYXRp
b24pOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhcHR1cmUoY29u
c3QgY2xhc3MgQ2FwdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXB0dXJlKGNvbnN0
IGNsYXNzIERldmljZSogZGV2aWNlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhcnRDYXB0dXJlKGNvbnN0IGNsYXNzIENvbW1hbmRRdWV1ZSogY29tbWFuZFF1ZXVlKTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXB0dXJlKGNvbnN0IGNs
YXNzIENhcHR1cmVTY29wZSogY2FwdHVyZVNjb3BlKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RvcENhcHR1cmUoKTsKKworICAgIGNsYXNzIENhcHR1cmVTY29wZSogICAg
ICAgICAgZGVmYXVsdENhcHR1cmVTY29wZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RGVmYXVsdENhcHR1cmVTY29wZShjb25zdCBjbGFzcyBDYXB0dXJlU2Nv
cGUqIGRlZmF1bHRDYXB0dXJlU2NvcGUpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgICBpc0NhcHR1cmluZygpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpDYXB0dXJlRGVzY3JpcHRvciogTVRMOjpDYXB0dXJlRGVz
Y3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkNh
cHR1cmVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTENhcHR1cmVEZXNjcmlwdG9yKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpDYXB0dXJlRGVzY3JpcHRv
ciogTVRMOjpDYXB0dXJlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpDYXB0dXJlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGNh
cHR1cmVPYmplY3QKK19NVExfSU5MSU5FIGlkIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OmNhcHR1
cmVPYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGlkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNhcHR1cmVPYmplY3QpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkNhcHR1cmVEZXNjcmlwdG9yOjpzZXRDYXB0dXJlT2JqZWN0KGlkIGNhcHR1cmVP
YmplY3QpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldENhcHR1cmVPYmplY3RfKSwgY2FwdHVyZU9iamVjdCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBkZXN0aW5hdGlvbgorX01UTF9JTkxJTkUgTVRMOjpDYXB0dXJlRGVzdGluYXRpb24gTVRM
OjpDYXB0dXJlRGVzY3JpcHRvcjo6ZGVzdGluYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRlc3RpbmF0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0
dXJlRGVzY3JpcHRvcjo6c2V0RGVzdGluYXRpb24oTVRMOjpDYXB0dXJlRGVzdGluYXRpb24gZGVz
dGluYXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldERlc3RpbmF0aW9uXyksIGRlc3RpbmF0aW9uKTsKK30KKworLy8gcHJvcGVy
dHk6IG91dHB1dFVSTAorX01UTF9JTkxJTkUgTlM6OlVSTCogTVRMOjpDYXB0dXJlRGVzY3JpcHRv
cjo6b3V0cHV0VVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VVJMKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvdXRwdXRVUkwpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVEZXNjcmlwdG9yOjpzZXRPdXRwdXRVUkwoY29uc3QgTlM6
OlVSTCogb3V0cHV0VVJMKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRPdXRwdXRVUkxfKSwgb3V0cHV0VVJMKTsKK30KKworLy8gc3Rh
dGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVyZU1hbmFnZXIqIE1UTDo6
Q2FwdHVyZU1hbmFnZXI6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpDYXB0dXJlTWFuYWdlcj4oX01UTF9QUklWQVRFX0NMUyhNVExDYXB0dXJlTWFuYWdlcikp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBzaGFyZWRDYXB0dXJlTWFuYWdlcgorX01UTF9JTkxJ
TkUgTVRMOjpDYXB0dXJlTWFuYWdlciogTVRMOjpDYXB0dXJlTWFuYWdlcjo6c2hhcmVkQ2FwdHVy
ZU1hbmFnZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q2FwdHVy
ZU1hbmFnZXIqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTENhcHR1cmVNYW5hZ2VyKSwgX01UTF9QUklW
QVRFX1NFTChzaGFyZWRDYXB0dXJlTWFuYWdlcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6Q2FwdHVyZU1hbmFnZXIqIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OmluaXQo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q2FwdHVyZU1hbmFnZXI+KCk7
Cit9CisKKy8vIG1ldGhvZDogbmV3Q2FwdHVyZVNjb3BlV2l0aERldmljZToKK19NVExfSU5MSU5F
IE1UTDo6Q2FwdHVyZVNjb3BlKiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpuZXdDYXB0dXJlU2NvcGUo
Y29uc3QgTVRMOjpEZXZpY2UqIGRldmljZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkNhcHR1cmVTY29wZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q2FwdHVy
ZVNjb3BlV2l0aERldmljZV8pLCBkZXZpY2UpOworfQorCisvLyBtZXRob2Q6IG5ld0NhcHR1cmVT
Y29wZVdpdGhDb21tYW5kUXVldWU6CitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVTY29wZSogTVRM
OjpDYXB0dXJlTWFuYWdlcjo6bmV3Q2FwdHVyZVNjb3BlKGNvbnN0IE1UTDo6Q29tbWFuZFF1ZXVl
KiBjb21tYW5kUXVldWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpD
YXB0dXJlU2NvcGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhD
b21tYW5kUXVldWVfKSwgY29tbWFuZFF1ZXVlKTsKK30KKworLy8gbWV0aG9kOiBzdXBwb3J0c0Rl
c3RpbmF0aW9uOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpzdXBwb3J0
c0Rlc3RpbmF0aW9uKE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHN1cHBvcnRzRGVzdGluYXRpb25fKSwgZGVzdGluYXRpb24pOworfQorCisvLyBtZXRob2Q6
IHN0YXJ0Q2FwdHVyZVdpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6
OkNhcHR1cmVNYW5hZ2VyOjpzdGFydENhcHR1cmUoY29uc3QgTVRMOjpDYXB0dXJlRGVzY3JpcHRv
ciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFydENhcHR1cmVXaXRo
RGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDog
c3RhcnRDYXB0dXJlV2l0aERldmljZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlTWFu
YWdlcjo6c3RhcnRDYXB0dXJlKGNvbnN0IE1UTDo6RGV2aWNlKiBkZXZpY2UpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0Q2FwdHVy
ZVdpdGhEZXZpY2VfKSwgZGV2aWNlKTsKK30KKworLy8gbWV0aG9kOiBzdGFydENhcHR1cmVXaXRo
Q29tbWFuZFF1ZXVlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpzdGFy
dENhcHR1cmUoY29uc3QgTVRMOjpDb21tYW5kUXVldWUqIGNvbW1hbmRRdWV1ZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhcnRDYXB0
dXJlV2l0aENvbW1hbmRRdWV1ZV8pLCBjb21tYW5kUXVldWUpOworfQorCisvLyBtZXRob2Q6IHN0
YXJ0Q2FwdHVyZVdpdGhTY29wZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlTWFuYWdl
cjo6c3RhcnRDYXB0dXJlKGNvbnN0IE1UTDo6Q2FwdHVyZVNjb3BlKiBjYXB0dXJlU2NvcGUpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0
YXJ0Q2FwdHVyZVdpdGhTY29wZV8pLCBjYXB0dXJlU2NvcGUpOworfQorCisvLyBtZXRob2Q6IHN0
b3BDYXB0dXJlCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN0b3BDYXB0
dXJlKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc3RvcENhcHR1cmUpKTsKK30KKworLy8gcHJvcGVydHk6IGRlZmF1bHRDYXB0dXJlU2Nv
cGUKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVyZVNjb3BlKiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpk
ZWZhdWx0Q2FwdHVyZVNjb3BlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkNhcHR1cmVTY29wZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVmYXVsdENh
cHR1cmVTY29wZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6
OnNldERlZmF1bHRDYXB0dXJlU2NvcGUoY29uc3QgTVRMOjpDYXB0dXJlU2NvcGUqIGRlZmF1bHRD
YXB0dXJlU2NvcGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldERlZmF1bHRDYXB0dXJlU2NvcGVfKSwgZGVmYXVsdENhcHR1cmVTY29w
ZSk7Cit9CisKKy8vIHByb3BlcnR5OiBpc0NhcHR1cmluZworX01UTF9JTkxJTkUgYm9vbCBNVEw6
OkNhcHR1cmVNYW5hZ2VyOjppc0NhcHR1cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0NhcHR1cmluZykp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TENhcHR1cmVTY29wZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ2FwdHVyZVNjb3BlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzYwMjM1YTE0ODYxYjhlY2JjZmZjZjQw
MmQ1YTNjYTEyNDUxOTk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVTY29wZS5ocHAKQEAgLTAsMCArMSw5MiBAQAorLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwv
TVRMQ2FwdHVyZVNjb3BlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5j
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
cHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhw
cCIKKworI2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIi4u
L0ZvdW5kYXRpb24vTlNTdHJpbmcuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQ2FwdHVyZVNjb3Bl
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDYXB0dXJlU2NvcGU+Cit7CitwdWJsaWM6CisgICAg
Y2xhc3MgRGV2aWNlKiAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgIHNldExhYmVsKGNv
bnN0IE5TOjpTdHJpbmcqIHBMYWJlbCk7CisKKyAgICBjbGFzcyBDb21tYW5kUXVldWUqIGNvbW1h
bmRRdWV1ZSgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICBiZWdpblNjb3BlKCk7
CisgICAgdm9pZCAgICAgICAgICAgICAgICBlbmRTY29wZSgpOworfTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6
RGV2aWNlKiBNVEw6OkNhcHR1cmVTY29wZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmlj
ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDYXB0dXJlU2NvcGU6OmxhYmVsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVTY29w
ZTo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogcExhYmVsKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBwTGFiZWwp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X01UTF9JTkxJTkUgTVRMOjpDb21tYW5kUXVldWUqIE1UTDo6Q2FwdHVyZVNjb3BlOjpjb21tYW5k
UXVldWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPENvbW1hbmRR
dWV1ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZFF1ZXVlKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6Q2FwdHVyZVNjb3BlOjpiZWdpblNjb3BlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJlZ2luU2NvcGUpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlU2NvcGU6OmVuZFNjb3BlKCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZFNj
b3BlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENv
bW1hbmRCdWZmZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TENvbW1hbmRCdWZmZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZmM5OGU1MTFiZjZhM2FmMzBkMzQzZDRi
YjNmNjViNTU0YWYxMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMQ29tbWFuZEJ1ZmZlci5ocHAKQEAgLTAsMCArMSw0NjUgQEAKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFs
L01UTENvbW1hbmRCdWZmZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJ
bmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRM
SGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExDb21tYW5kQnVmZmVy
LmhwcCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBDb21tYW5kQnVmZmVyU3RhdHVzKSB7CisgICAgQ29tbWFuZEJ1ZmZl
clN0YXR1c05vdEVucXVldWVkID0gMCwKKyAgICBDb21tYW5kQnVmZmVyU3RhdHVzRW5xdWV1ZWQg
PSAxLAorICAgIENvbW1hbmRCdWZmZXJTdGF0dXNDb21taXR0ZWQgPSAyLAorICAgIENvbW1hbmRC
dWZmZXJTdGF0dXNTY2hlZHVsZWQgPSAzLAorICAgIENvbW1hbmRCdWZmZXJTdGF0dXNDb21wbGV0
ZWQgPSA0LAorICAgIENvbW1hbmRCdWZmZXJTdGF0dXNFcnJvciA9IDUsCit9OworCitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBDb21tYW5kQnVmZmVyRXJyb3IpIHsKKyAgICBDb21tYW5kQnVmZmVy
RXJyb3JOb25lID0gMCwKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JUaW1lb3V0ID0gMiwKKyAgICBD
b21tYW5kQnVmZmVyRXJyb3JQYWdlRmF1bHQgPSAzLAorICAgIENvbW1hbmRCdWZmZXJFcnJvckFj
Y2Vzc1Jldm9rZWQgPSA0LAorICAgIENvbW1hbmRCdWZmZXJFcnJvckJsYWNrbGlzdGVkID0gNCwK
KyAgICBDb21tYW5kQnVmZmVyRXJyb3JOb3RQZXJtaXR0ZWQgPSA3LAorICAgIENvbW1hbmRCdWZm
ZXJFcnJvck91dE9mTWVtb3J5ID0gOCwKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JJbnZhbGlkUmVz
b3VyY2UgPSA5LAorICAgIENvbW1hbmRCdWZmZXJFcnJvck1lbW9yeWxlc3MgPSAxMCwKKyAgICBD
b21tYW5kQnVmZmVyRXJyb3JEZXZpY2VSZW1vdmVkID0gMTEsCisgICAgQ29tbWFuZEJ1ZmZlckVy
cm9yU3RhY2tPdmVyZmxvdyA9IDEyLAorfTsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwg
Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uKSB7CisgICAgQ29tbWFuZEJ1ZmZlckVycm9yT3B0aW9u
Tm9uZSA9IDAsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uRW5jb2RlckV4ZWN1dGlvblN0
YXR1cyA9IDEsCit9OworCitfTVRMX0VOVU0oTlM6OkludGVnZXIsIENvbW1hbmRFbmNvZGVyRXJy
b3JTdGF0ZSkgeworICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZVVua25vd24gPSAwLAorICAg
IENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZUNvbXBsZXRlZCA9IDEsCisgICAgQ29tbWFuZEVuY29k
ZXJFcnJvclN0YXRlQWZmZWN0ZWQgPSAyLAorICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZVBl
bmRpbmcgPSAzLAorICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZUZhdWx0ZWQgPSA0LAorfTsK
KworY2xhc3MgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvbW1h
bmRCdWZmZXJEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tbWFuZEJ1ZmZlckRl
c2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldGFpbmVkUmVmZXJlbmNlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmV0YWluZWRSZWZlcmVuY2VzKGJvb2wgcmV0
YWluZWRSZWZlcmVuY2VzKTsKKworICAgIE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uICAg
ICAgICAgZXJyb3JPcHRpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRFcnJvck9wdGlvbnMoTVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRp
b24gZXJyb3JPcHRpb25zKTsKK307CisKK2NsYXNzIENvbW1hbmRCdWZmZXJFbmNvZGVySW5mbyA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q29tbWFuZEJ1ZmZlckVuY29kZXJJbmZvPgoreworcHVi
bGljOgorICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisK
KyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICBkZWJ1Z1NpZ25wb3N0cygpIGNvbnN0
OworCisgICAgTVRMOjpDb21tYW5kRW5jb2RlckVycm9yU3RhdGUgZXJyb3JTdGF0ZSgpIGNvbnN0
OworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgRGlzcGF0Y2hUeXBlKSB7CisgICAgRGlz
cGF0Y2hUeXBlU2VyaWFsID0gMCwKKyAgICBEaXNwYXRjaFR5cGVDb25jdXJyZW50ID0gMSwKK307
CisKK2NsYXNzIENvbW1hbmRCdWZmZXI7CisKK3VzaW5nIENvbW1hbmRCdWZmZXJIYW5kbGVyID0g
dm9pZCAoXikoQ29tbWFuZEJ1ZmZlciopOworCit1c2luZyBIYW5kbGVyRnVuY3Rpb24gPSBzdGQ6
OmZ1bmN0aW9uPHZvaWQoQ29tbWFuZEJ1ZmZlciopPjsKKworY2xhc3MgQ29tbWFuZEJ1ZmZlciA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q29tbWFuZEJ1ZmZlcj4KK3sKK3B1YmxpYzoKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkU2NoZWR1bGVkSGFu
ZGxlcihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDb21wbGV0ZWRIYW5kbGVyKGNvbnN0
IEhhbmRsZXJGdW5jdGlvbiYgZnVuY3Rpb24pOworCisgICAgY2xhc3MgRGV2aWNlKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgY2xhc3MgQ29tbWFu
ZFF1ZXVlKiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRRdWV1ZSgpIGNvbnN0OworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbmVkUmVm
ZXJlbmNlcygpIGNvbnN0OworCisgICAgTVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRpb24gICAg
ICAgICAgICAgIGVycm9yT3B0aW9ucygpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcq
IGxhYmVsKTsKKworICAgIENGVGltZUludGVydmFsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrZXJuZWxTdGFydFRpbWUoKSBjb25zdDsKKworICAgIENGVGltZUludGVydmFsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrZXJuZWxFbmRUaW1lKCkgY29uc3Q7CisKKyAgICBjbGFzcyBM
b2dDb250YWluZXIqICAgICAgICAgICAgICAgICAgICAgICAgbG9ncygpIGNvbnN0OworCisgICAg
Q0ZUaW1lSW50ZXJ2YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQVVN0YXJ0VGltZSgp
IGNvbnN0OworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdQVUVuZFRpbWUoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnF1ZXVlKCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWl0KCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkU2NoZWR1bGVkSGFuZGxlcihjb25zdCBNVEw6OkNvbW1h
bmRCdWZmZXJIYW5kbGVyIGJsb2NrKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmVzZW50RHJhd2FibGUoY29uc3QgY2xhc3MgRHJhd2FibGUqIGRy
YXdhYmxlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmVzZW50RHJhd2FibGVBdFRpbWUoY29uc3QgY2xhc3MgRHJhd2FibGUqIGRyYXdhYmxlLCBD
RlRpbWVJbnRlcnZhbCBwcmVzZW50YXRpb25UaW1lKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50RHJhd2FibGVBZnRlck1pbmltdW1EdXJh
dGlvbihjb25zdCBjbGFzcyBEcmF3YWJsZSogZHJhd2FibGUsIENGVGltZUludGVydmFsIGR1cmF0
aW9uKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
YWl0VW50aWxTY2hlZHVsZWQoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRDb21wbGV0ZWRIYW5kbGVyKGNvbnN0IE1UTDo6Q29tbWFuZEJ1ZmZl
ckhhbmRsZXIgYmxvY2spOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdhaXRVbnRpbENvbXBsZXRlZCgpOworCisgICAgTVRMOjpDb21tYW5kQnVmZmVy
U3RhdHVzICAgICAgICAgICAgICAgICAgIHN0YXR1cygpIGNvbnN0OworCisgICAgTlM6OkVycm9y
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCkgY29uc3Q7CisKKyAgICBj
bGFzcyBCbGl0Q29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAgICAgYmxpdENvbW1hbmRFbmNv
ZGVyKCk7CisKKyAgICBjbGFzcyBSZW5kZXJDb21tYW5kRW5jb2RlciogICAgICAgICAgICAgICAg
cmVuZGVyQ29tbWFuZEVuY29kZXIoY29uc3QgY2xhc3MgUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIHJl
bmRlclBhc3NEZXNjcmlwdG9yKTsKKworICAgIGNsYXNzIENvbXB1dGVDb21tYW5kRW5jb2Rlciog
ICAgICAgICAgICAgICBjb21wdXRlQ29tbWFuZEVuY29kZXIoY29uc3QgY2xhc3MgQ29tcHV0ZVBh
c3NEZXNjcmlwdG9yKiBjb21wdXRlUGFzc0Rlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQmxpdENv
bW1hbmRFbmNvZGVyKiAgICAgICAgICAgICAgICAgIGJsaXRDb21tYW5kRW5jb2Rlcihjb25zdCBj
bGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IqIGJsaXRQYXNzRGVzY3JpcHRvcik7CisKKyAgICBjbGFz
cyBDb21wdXRlQ29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAgY29tcHV0ZUNvbW1hbmRFbmNv
ZGVyKCk7CisKKyAgICBjbGFzcyBDb21wdXRlQ29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAg
Y29tcHV0ZUNvbW1hbmRFbmNvZGVyKE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlV2Fp
dChjb25zdCBjbGFzcyBFdmVudCogZXZlbnQsIHVpbnQ2NF90IHZhbHVlKTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVTaWduYWxFdmVudChj
b25zdCBjbGFzcyBFdmVudCogZXZlbnQsIHVpbnQ2NF90IHZhbHVlKTsKKworICAgIGNsYXNzIFBh
cmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIqICAgICAgICBwYXJhbGxlbFJlbmRlckNvbW1hbmRF
bmNvZGVyKGNvbnN0IGNsYXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVzY3Jp
cHRvcik7CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIqICAgICAgICAg
cmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKCk7CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRl
Q29tbWFuZEVuY29kZXIqICAgICAgICAgcmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0
IGNsYXNzIFJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogcmVzb3VyY2VTdGF0ZVBhc3NEZXNj
cmlwdG9yKTsKKworICAgIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVy
KiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlcigpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hEZWJ1Z0dyb3VwKGNvbnN0IE5T
OjpTdHJpbmcqIHN0cmluZyk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcG9wRGVidWdHcm91cCgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogTVRMOjpD
b21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9J
TkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogTVRMOjpDb21tYW5kQnVmZmVyRGVz
Y3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpDb21t
YW5kQnVmZmVyRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHJldGFpbmVkUmVmZXJl
bmNlcworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpyZXRh
aW5lZFJlZmVyZW5jZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmV0YWluZWRSZWZlcmVuY2VzKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6c2V0UmV0YWlu
ZWRSZWZlcmVuY2VzKGJvb2wgcmV0YWluZWRSZWZlcmVuY2VzKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZXRhaW5lZFJlZmVyZW5j
ZXNfKSwgcmV0YWluZWRSZWZlcmVuY2VzKTsKK30KKworLy8gcHJvcGVydHk6IGVycm9yT3B0aW9u
cworX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRpb24gTVRMOjpDb21tYW5k
QnVmZmVyRGVzY3JpcHRvcjo6ZXJyb3JPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChlcnJvck9wdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRFcnJvck9wdGlvbnMoTVRMOjpDb21tYW5kQnVm
ZmVyRXJyb3JPcHRpb24gZXJyb3JPcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRFcnJvck9wdGlvbnNfKSwgZXJyb3JPcHRp
b25zKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBN
VEw6OkNvbW1hbmRCdWZmZXJFbmNvZGVySW5mbzo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxhYmVsKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZWJ1Z1NpZ25wb3N0cworX01UTF9JTkxJTkUg
TlM6OkFycmF5KiBNVEw6OkNvbW1hbmRCdWZmZXJFbmNvZGVySW5mbzo6ZGVidWdTaWducG9zdHMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZGVidWdTaWducG9zdHMpKTsKK30KKworLy8gcHJvcGVydHk6
IGVycm9yU3RhdGUKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEVuY29kZXJFcnJvclN0YXRlIE1U
TDo6Q29tbWFuZEJ1ZmZlckVuY29kZXJJbmZvOjplcnJvclN0YXRlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZT4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChlcnJvclN0YXRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21tYW5kQnVmZmVyOjphZGRTY2hlZHVsZWRIYW5kbGVyKGNvbnN0IEhhbmRsZXJG
dW5jdGlvbiYgZnVuY3Rpb24pCit7CisgICAgX19ibG9jayBIYW5kbGVyRnVuY3Rpb24gYmxvY2tG
dW5jdGlvbiA9IGZ1bmN0aW9uOworCisgICAgYWRkU2NoZWR1bGVkSGFuZGxlciheKE1UTDo6Q29t
bWFuZEJ1ZmZlciogcENvbW1hbmRCdWZmZXIpIHsgYmxvY2tGdW5jdGlvbihwQ29tbWFuZEJ1ZmZl
cik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YWRkQ29t
cGxldGVkSGFuZGxlcihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKQoreworICAgIF9f
YmxvY2sgSGFuZGxlckZ1bmN0aW9uIGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIGFk
ZENvbXBsZXRlZEhhbmRsZXIoXihNVEw6OkNvbW1hbmRCdWZmZXIqIHBDb21tYW5kQnVmZmVyKSB7
IGJsb2NrRnVuY3Rpb24ocENvbW1hbmRCdWZmZXIpOyB9KTsKK30KKworLy8gcHJvcGVydHk6IGRl
dmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6ZGV2aWNl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb21t
YW5kUXVldWUKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZFF1ZXVlKiBNVEw6OkNvbW1hbmRCdWZm
ZXI6OmNvbW1hbmRRdWV1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpDb21tYW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbW1hbmRRdWV1
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogcmV0YWluZWRSZWZlcmVuY2VzCitfTVRMX0lOTElORSBi
b29sIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cmV0YWluZWRSZWZlcmVuY2VzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHJldGFpbmVkUmVmZXJlbmNlcykpOworfQorCisvLyBwcm9wZXJ0eTogZXJyb3JPcHRpb25zCitf
TVRMX0lOTElORSBNVEw6OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbiBNVEw6OkNvbW1hbmRCdWZm
ZXI6OmVycm9yT3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZXJyb3JPcHRpb25zKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6
OlN0cmluZyogTVRMOjpDb21tYW5kQnVmZmVyOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OnNldExh
YmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8v
IHByb3BlcnR5OiBrZXJuZWxTdGFydFRpbWUKK19NVExfSU5MSU5FIENGVGltZUludGVydmFsIE1U
TDo6Q29tbWFuZEJ1ZmZlcjo6a2VybmVsU3RhcnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxDRlRpbWVJbnRlcnZhbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChrZXJuZWxTdGFydFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGtlcm5lbEVuZFRpbWUKK19N
VExfSU5MSU5FIENGVGltZUludGVydmFsIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6a2VybmVsRW5kVGlt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Q0ZUaW1lSW50ZXJ2
YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoa2VybmVsRW5kVGltZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogbG9ncworX01UTF9JTkxJTkUgTVRMOjpMb2dDb250YWluZXIqIE1UTDo6Q29tbWFuZEJ1
ZmZlcjo6bG9ncygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpMb2dDb250YWluZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxvZ3MpKTsKK30KKworLy8g
cHJvcGVydHk6IEdQVVN0YXJ0VGltZQorX01UTF9JTkxJTkUgQ0ZUaW1lSW50ZXJ2YWwgTVRMOjpD
b21tYW5kQnVmZmVyOjpHUFVTdGFydFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPENGVGltZUludGVydmFsPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKEdQVVN0
YXJ0VGltZSkpOworfQorCisvLyBwcm9wZXJ0eTogR1BVRW5kVGltZQorX01UTF9JTkxJTkUgQ0ZU
aW1lSW50ZXJ2YWwgTVRMOjpDb21tYW5kQnVmZmVyOjpHUFVFbmRUaW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxDRlRpbWVJbnRlcnZhbD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChHUFVFbmRUaW1lKSk7Cit9CisKKy8vIG1ldGhvZDogZW5xdWV1ZQorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmVucXVldWUoKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbnF1ZXVlKSk7Cit9CisK
Ky8vIG1ldGhvZDogY29tbWl0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
Y29tbWl0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoY29tbWl0KSk7Cit9CisKKy8vIG1ldGhvZDogYWRkU2NoZWR1bGVkSGFuZGxlcjoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjphZGRTY2hlZHVsZWRIYW5kbGVy
KGNvbnN0IE1UTDo6Q29tbWFuZEJ1ZmZlckhhbmRsZXIgYmxvY2spCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFkZFNjaGVkdWxlZEhhbmRs
ZXJfKSwgYmxvY2spOworfQorCisvLyBtZXRob2Q6IHByZXNlbnREcmF3YWJsZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGUoY29uc3QgTVRMOjpE
cmF3YWJsZSogZHJhd2FibGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHByZXNlbnREcmF3YWJsZV8pLCBkcmF3YWJsZSk7Cit9CisKKy8v
IG1ldGhvZDogcHJlc2VudERyYXdhYmxlOmF0VGltZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21tYW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGVBdFRpbWUoY29uc3QgTVRMOjpEcmF3YWJsZSog
ZHJhd2FibGUsIENGVGltZUludGVydmFsIHByZXNlbnRhdGlvblRpbWUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByZXNlbnREcmF3YWJs
ZV9hdFRpbWVfKSwgZHJhd2FibGUsIHByZXNlbnRhdGlvblRpbWUpOworfQorCisvLyBtZXRob2Q6
IHByZXNlbnREcmF3YWJsZTphZnRlck1pbmltdW1EdXJhdGlvbjoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21tYW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGVBZnRlck1pbmltdW1EdXJhdGlvbihj
b25zdCBNVEw6OkRyYXdhYmxlKiBkcmF3YWJsZSwgQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24pCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBy
ZXNlbnREcmF3YWJsZV9hZnRlck1pbmltdW1EdXJhdGlvbl8pLCBkcmF3YWJsZSwgZHVyYXRpb24p
OworfQorCisvLyBtZXRob2Q6IHdhaXRVbnRpbFNjaGVkdWxlZAorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNvbW1hbmRCdWZmZXI6OndhaXRVbnRpbFNjaGVkdWxlZCgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdhaXRVbnRpbFNjaGVkdWxl
ZCkpOworfQorCisvLyBtZXRob2Q6IGFkZENvbXBsZXRlZEhhbmRsZXI6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YWRkQ29tcGxldGVkSGFuZGxlcihjb25zdCBNVEw6OkNv
bW1hbmRCdWZmZXJIYW5kbGVyIGJsb2NrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGRDb21wbGV0ZWRIYW5kbGVyXyksIGJsb2NrKTsK
K30KKworLy8gbWV0aG9kOiB3YWl0VW50aWxDb21wbGV0ZWQKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21tYW5kQnVmZmVyOjp3YWl0VW50aWxDb21wbGV0ZWQoKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3YWl0VW50aWxDb21wbGV0ZWQp
KTsKK30KKworLy8gcHJvcGVydHk6IHN0YXR1cworX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVm
ZmVyU3RhdHVzIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6c3RhdHVzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRCdWZmZXJTdGF0dXM+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc3RhdHVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBlcnJvcgorX01UTF9J
TkxJTkUgTlM6OkVycm9yKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmVycm9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6RXJyb3IqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGVycm9yKSk7Cit9CisKKy8vIG1ldGhvZDogYmxpdENvbW1hbmRFbmNvZGVyCitfTVRM
X0lOTElORSBNVEw6OkJsaXRDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpibGl0
Q29tbWFuZEVuY29kZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QmxpdENvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChibGl0Q29tbWFuZEVu
Y29kZXIpKTsKK30KKworLy8gbWV0aG9kOiByZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlw
dG9yOgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5k
QnVmZmVyOjpyZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBNVEw6OlJlbmRlclBhc3NEZXNjcmlw
dG9yKiByZW5kZXJQYXNzRGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChy
ZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXyksIHJlbmRlclBhc3NEZXNjcmlwdG9y
KTsKK30KKworLy8gbWV0aG9kOiBjb21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoK
K19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZm
ZXI6OmNvbXB1dGVDb21tYW5kRW5jb2Rlcihjb25zdCBNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRv
ciogY29tcHV0ZVBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8pLCBjb21wdXRlUGFzc0Rlc2NyaXB0
b3IpOworfQorCisvLyBtZXRob2Q6IGJsaXRDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOgor
X01UTF9JTkxJTkUgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
YmxpdENvbW1hbmRFbmNvZGVyKGNvbnN0IE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yKiBibGl0UGFz
c0Rlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGl0
Q29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJsaXRDb21tYW5kRW5jb2Rl
cldpdGhEZXNjcmlwdG9yXyksIGJsaXRQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDog
Y29tcHV0ZUNvbW1hbmRFbmNvZGVyCitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVDb21tYW5kRW5j
b2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpjb21wdXRlQ29tbWFuZEVuY29kZXIoKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChjb21wdXRlQ29tbWFuZEVuY29kZXIpKTsKK30KKworLy8g
bWV0aG9kOiBjb21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGlzcGF0Y2hUeXBlOgorX01UTF9JTkxJ
TkUgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6Y29tcHV0
ZUNvbW1hbmRFbmNvZGVyKE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcio+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoY29tcHV0ZUNvbW1hbmRFbmNvZGVyV2l0aERpc3BhdGNoVHlw
ZV8pLCBkaXNwYXRjaFR5cGUpOworfQorCisvLyBtZXRob2Q6IGVuY29kZVdhaXRGb3JFdmVudDp2
YWx1ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjplbmNvZGVXYWl0KGNv
bnN0IE1UTDo6RXZlbnQqIGV2ZW50LCB1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlV2FpdEZvckV2ZW50
X3ZhbHVlXyksIGV2ZW50LCB2YWx1ZSk7Cit9CisKKy8vIG1ldGhvZDogZW5jb2RlU2lnbmFsRXZl
bnQ6dmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6ZW5jb2RlU2ln
bmFsRXZlbnQoY29uc3QgTVRMOjpFdmVudCogZXZlbnQsIHVpbnQ2NF90IHZhbHVlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmNvZGVT
aWduYWxFdmVudF92YWx1ZV8pLCBldmVudCwgdmFsdWUpOworfQorCisvLyBtZXRob2Q6IHBhcmFs
bGVsUmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6
UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpwYXJhbGxl
bFJlbmRlckNvbW1hbmRFbmNvZGVyKGNvbnN0IE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3IqIHJl
bmRlclBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
cGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXyksIHJlbmRlclBhc3NE
ZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiByZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIK
K19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1h
bmRCdWZmZXI6OnJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcigpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcikpOworfQorCisv
LyBtZXRob2Q6IHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOgorX01U
TF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1
ZmZlcjo6cmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IE1UTDo6UmVzb3VyY2VTdGF0
ZVBhc3NEZXNjcmlwdG9yKiByZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcldpdGhE
ZXNjcmlwdG9yXyksIHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhv
ZDogYWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIKK19NVExfSU5MSU5FIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
YWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIoKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNv
ZGVyKSk7Cit9CisKKy8vIG1ldGhvZDogcHVzaERlYnVnR3JvdXA6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cHVzaERlYnVnR3JvdXAoY29uc3QgTlM6OlN0cmluZyogc3Ry
aW5nKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChwdXNoRGVidWdHcm91cF8pLCBzdHJpbmcpOworfQorCisvLyBtZXRob2Q6IHBvcERlYnVn
R3JvdXAKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjpwb3BEZWJ1Z0dyb3Vw
KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocG9wRGVidWdHcm91cCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Yx
ZjM5MmJiNGY2MDE0YTkxM2UxY2EyNTUzMDFhZjRhZTY4YzFlNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kRW5jb2Rlci5o
cHAKQEAgLTAsMCArMSwxMDEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTENvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBSZXNvdXJjZVVzYWdl
KSB7CisgICAgUmVzb3VyY2VVc2FnZVJlYWQgPSAxLAorICAgIFJlc291cmNlVXNhZ2VXcml0ZSA9
IDIsCisgICAgUmVzb3VyY2VVc2FnZVNhbXBsZSA9IDQsCit9OworCitfTVRMX09QVElPTlMoTlM6
OlVJbnRlZ2VyLCBCYXJyaWVyU2NvcGUpIHsKKyAgICBCYXJyaWVyU2NvcGVCdWZmZXJzID0gMSwK
KyAgICBCYXJyaWVyU2NvcGVUZXh0dXJlcyA9IDIsCisgICAgQmFycmllclNjb3BlUmVuZGVyVGFy
Z2V0cyA9IDQsCit9OworCitjbGFzcyBDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8Q29tbWFuZEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgRGV2aWNlKiBkZXZp
Y2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIHZvaWQg
ICAgICAgICAgZW5kRW5jb2RpbmcoKTsKKworICAgIHZvaWQgICAgICAgICAgaW5zZXJ0RGVidWdT
aWducG9zdChjb25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpOworCisgICAgdm9pZCAgICAgICAgICBw
dXNoRGVidWdHcm91cChjb25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpOworCisgICAgdm9pZCAgICAg
ICAgICBwb3BEZWJ1Z0dyb3VwKCk7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19N
VExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkNvbW1hbmRFbmNvZGVyOjpkZXZpY2UoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRM
X0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNvbW1hbmRFbmNvZGVyOjpsYWJlbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRF
bmNvZGVyOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFi
ZWwpOworfQorCisvLyBtZXRob2Q6IGVuZEVuY29kaW5nCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tbWFuZEVuY29kZXI6OmVuZEVuY29kaW5nKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5kRW5jb2RpbmcpKTsKK30KKworLy8gbWV0
aG9kOiBpbnNlcnREZWJ1Z1NpZ25wb3N0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRF
bmNvZGVyOjppbnNlcnREZWJ1Z1NpZ25wb3N0KGNvbnN0IE5TOjpTdHJpbmcqIHN0cmluZykKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5z
ZXJ0RGVidWdTaWducG9zdF8pLCBzdHJpbmcpOworfQorCisvLyBtZXRob2Q6IHB1c2hEZWJ1Z0dy
b3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRFbmNvZGVyOjpwdXNoRGVidWdHcm91
cChjb25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHB1c2hEZWJ1Z0dyb3VwXyksIHN0cmluZyk7Cit9
CisKKy8vIG1ldGhvZDogcG9wRGVidWdHcm91cAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1h
bmRFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocG9wRGVidWdHcm91cCkpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRRdWV1ZS5o
cHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tbWFuZFF1ZXVl
LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNTRhMTZlMTRhNjNjZWNjM2VjNGJjNzRlYmJmMDg1YTQ2NWQ2NWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTENvbW1hbmRRdWV1ZS5ocHAKQEAgLTAsMCArMSw4OSBAQAorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ29tbWFuZFF1ZXVl
LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAi
CisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaHBwPgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBDb21tYW5kUXVldWUgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPENvbW1hbmRRdWV1ZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3Ry
aW5nKiAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgIHNl
dExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERldmljZSogICAg
ICAgIGRldmljZSgpIGNvbnN0OworCisgICAgY2xhc3MgQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1
ZmZlcigpOworCisgICAgY2xhc3MgQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcihjb25zdCBj
bGFzcyBDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBD
b21tYW5kQnVmZmVyKiBjb21tYW5kQnVmZmVyV2l0aFVucmV0YWluZWRSZWZlcmVuY2VzKCk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICBpbnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFyeSgpOwor
fTsKKworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6Q29tbWFuZFF1ZXVlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRRdWV1ZTo6c2V0TGFiZWwoY29uc3QgTlM6
OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRl
dmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6Q29tbWFuZFF1ZXVlOjpkZXZpY2Uo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gbWV0aG9kOiBjb21tYW5k
QnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkNvbW1hbmRCdWZmZXIqIE1UTDo6Q29tbWFuZFF1ZXVl
Ojpjb21tYW5kQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkNvbW1hbmRCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbW1hbmRCdWZmZXIpKTsK
K30KKworLy8gbWV0aG9kOiBjb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElO
RSBNVEw6OkNvbW1hbmRCdWZmZXIqIE1UTDo6Q29tbWFuZFF1ZXVlOjpjb21tYW5kQnVmZmVyKGNv
bnN0IE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5kQnVmZmVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChjb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9
CisKKy8vIG1ldGhvZDogY29tbWFuZEJ1ZmZlcldpdGhVbnJldGFpbmVkUmVmZXJlbmNlcworX01U
TF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyKiBNVEw6OkNvbW1hbmRRdWV1ZTo6Y29tbWFuZEJ1
ZmZlcldpdGhVbnJldGFpbmVkUmVmZXJlbmNlcygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpDb21tYW5kQnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb21t
YW5kQnVmZmVyV2l0aFVucmV0YWluZWRSZWZlcmVuY2VzKSk7Cit9CisKKy8vIG1ldGhvZDogaW5z
ZXJ0RGVidWdDYXB0dXJlQm91bmRhcnkKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kUXVl
dWU6Omluc2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zZXJ0RGVidWdDYXB0dXJlQm91bmRh
cnkpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZh
OWVmNzhiMWUwYzMxNGRjY2NmZWQwNGM4NjM4ODFkYThmYmMzNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29tbWFuZEVu
Y29kZXIuaHBwCkBAIC0wLDAgKzEsMzM3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIu
aHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIK
KyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1h
bmRCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRl
ICJNVExIZWFwLmhwcCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhw
cCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisjaW5jbHVkZSAiTVRMU2FtcGxlci5ocHAi
CisjaW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorI2lu
Y2x1ZGUgIk1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCIKKworbmFtZXNwYWNlIE1UTAorewor
c3RydWN0IERpc3BhdGNoVGhyZWFkZ3JvdXBzSW5kaXJlY3RBcmd1bWVudHMKK3sKKyAgICB1aW50
MzJfdCB0aHJlYWRncm91cHNQZXJHcmlkWzNdOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFN0
YWdlSW5SZWdpb25JbmRpcmVjdEFyZ3VtZW50cworeworICAgIHVpbnQzMl90IHN0YWdlSW5Pcmln
aW5bM107CisgICAgdWludDMyX3Qgc3RhZ2VJblNpemVbM107Cit9IF9NVExfUEFDS0VEOworCitj
bGFzcyBDb21wdXRlQ29tbWFuZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbXB1
dGVDb21tYW5kRW5jb2RlciwgQ29tbWFuZEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgTVRMOjpE
aXNwYXRjaFR5cGUgZGlzcGF0Y2hUeXBlKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0
ZSogc3RhdGUpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0Qnl0ZXMoY29uc3Qgdm9pZCog
Ynl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICBzZXRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5T
OjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICBzZXRCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2Vy
IGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldEJ1ZmZlcnMoTVRMOjpCdWZmZXIq
IGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdl
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0
IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgTlM6OlVJ
bnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFZpc2libGVG
dW5jdGlvblRhYmxlcyhjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJsZUZ1
bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZm
ZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlcyhjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgc2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0
cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJl
KiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
c2V0VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgc2V0U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBs
ZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgIHNldFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5T
OjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGUo
Y29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9hdCBsb2RNaW5DbGFtcCwgZmxv
YXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICBzZXRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25z
dCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpS
YW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRUaHJlYWRncm91cE1lbW9y
eUxlbmd0aChOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgc2V0SW1hZ2VibG9ja1dpZHRoKE5TOjpVSW50ZWdlciB3aWR0aCwg
TlM6OlVJbnRlZ2VyIGhlaWdodCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTdGFnZUlu
UmVnaW9uKE1UTDo6UmVnaW9uIHJlZ2lvbik7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRT
dGFnZUluUmVnaW9uKGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50
ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBkaXNw
YXRjaFRocmVhZGdyb3VwcyhNVEw6OlNpemUgdGhyZWFkZ3JvdXBzUGVyR3JpZCwgTVRMOjpTaXpl
IHRocmVhZHNQZXJUaHJlYWRncm91cCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBkaXNwYXRj
aFRocmVhZGdyb3Vwcyhjb25zdCBjbGFzcyBCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUlu
dGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3Jv
dXApOworCisgICAgdm9pZCAgICAgICAgICAgICAgZGlzcGF0Y2hUaHJlYWRzKE1UTDo6U2l6ZSB0
aHJlYWRzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICB1cGRhdGVGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVuY2UpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgd2FpdEZvckZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBm
ZW5jZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICB1c2VSZXNvdXJjZShjb25zdCBjbGFzcyBS
ZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSk7CisKKyAgICB2b2lk
ICAgICAgICAgICAgICB1c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5T
OjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgIHVzZUhlYXAoY29uc3QgY2xhc3MgSGVhcCogaGVhcCk7CisKKyAgICB2b2lk
ICAgICAgICAgICAgICB1c2VIZWFwcyhNVEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdlciBj
b3VudCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihj
b25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwg
TlM6OlJhbmdlIGV4ZWN1dGlvblJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIGV4ZWN1
dGVDb21tYW5kc0luQnVmZmVyKGNvbnN0IGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5k
aXJlY3RDb21tYW5kYnVmZmVyLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGlyZWN0UmFuZ2VCdWZm
ZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICBtZW1vcnlCYXJyaWVyKE1UTDo6QmFycmllclNjb3BlIHNjb3BlKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgIG1lbW9yeUJhcnJpZXIoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10s
IE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzYW1wbGVDb3Vu
dGVyc0luQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUluZGV4LCBib29sIGJhcnJpZXIpOworfTsKKworfQorCisv
LyBwcm9wZXJ0eTogZGlzcGF0Y2hUeXBlCitfTVRMX0lOTElORSBNVEw6OkRpc3BhdGNoVHlwZSBN
VEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6ZGlzcGF0Y2hUeXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRpc3BhdGNoVHlwZT4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChkaXNwYXRjaFR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBzZXRDb21wdXRlUGlw
ZWxpbmVTdGF0ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6
OnNldENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUq
IHN0YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZV8pLCBzdGF0ZSk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0Qnl0ZXM6bGVuZ3RoOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyOjpzZXRCeXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJbnRlZ2Vy
IGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCeXRlc19sZW5ndGhfYXRJbmRleF8pLCBi
eXRlcywgbGVuZ3RoLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyOm9mZnNldDph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0
QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5T
OjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zm
c2V0LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyT2Zmc2V0OmF0SW5kZXg6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRCdWZmZXJPZmZz
ZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJPZmZz
ZXRfYXRJbmRleF8pLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRCdWZmZXJz
Om9mZnNldHM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5k
RW5jb2Rlcjo6c2V0QnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUlu
dGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcnNfb2Zmc2V0c193aXRo
UmFuZ2VfKSwgYnVmZmVycywgb2Zmc2V0cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZp
c2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6
OlZpc2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2Vy
IGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIHZp
c2libGVGdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Vmlz
aWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBN
VEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJh
bmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXyksIHZp
c2libGVGdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3Qg
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
LCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVf
YXRCdWZmZXJJbmRleF8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZl
clJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBpbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEFjY2VsZXJhdGlv
blN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVD
b21tYW5kRW5jb2Rlcjo6c2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZm
ZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfKSwgYWNjZWxl
cmF0aW9uU3RydWN0dXJlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGV4dHVy
ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6
c2V0VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VGV4dHVyZV9hdEluZGV4XyksIHRleHR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBzZXRUZXh0dXJlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNv
bW1hbmRFbmNvZGVyOjpzZXRUZXh0dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpS
YW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1cmVzLCByYW5nZSk7Cit9
CisKKy8vIG1ldGhvZDogc2V0U2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpT
YW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRl
X2F0SW5kZXhfKSwgc2FtcGxlciwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJT
dGF0ZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5j
b2Rlcjo6c2V0U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6
OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFu
Z2UpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RNYXhD
bGFtcDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rl
cjo6c2V0U2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9h
dCBsb2RNaW5DbGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
U2FtcGxlclN0YXRlX2xvZE1pbkNsYW1wX2xvZE1heENsYW1wX2F0SW5kZXhfKSwgc2FtcGxlciwg
bG9kTWluQ2xhbXAsIGxvZE1heENsYW1wLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2Ft
cGxlclN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZXMoTVRM
OjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNvbnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBj
b25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVyU3Rh
dGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBsb2RN
aW5DbGFtcHMsIGxvZE1heENsYW1wcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFRocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyOjpzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIg
bGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoX2F0
SW5kZXhfKSwgbGVuZ3RoLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0SW1hZ2VibG9ja1dp
ZHRoOmhlaWdodDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6
OnNldEltYWdlYmxvY2tXaWR0aChOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWln
aHQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEltYWdlYmxvY2tXaWR0aF9oZWlnaHRfKSwgd2lkdGgsIGhlaWdodCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0U3RhZ2VJblJlZ2lvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRl
Q29tbWFuZEVuY29kZXI6OnNldFN0YWdlSW5SZWdpb24oTVRMOjpSZWdpb24gcmVnaW9uKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRT
dGFnZUluUmVnaW9uXyksIHJlZ2lvbik7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RhZ2VJblJlZ2lv
bldpdGhJbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFN0YWdlSW5SZWdpb24oY29uc3QgTVRM
OjpCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZz
ZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFN0YWdlSW5SZWdpb25XaXRoSW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZz
ZXRfKSwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0
aG9kOiBkaXNwYXRjaFRocmVhZGdyb3Vwczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaFRocmVhZGdyb3Vw
cyhNVEw6OlNpemUgdGhyZWFkZ3JvdXBzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJl
YWRncm91cCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZGlzcGF0Y2hUaHJlYWRncm91cHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXyksIHRo
cmVhZGdyb3Vwc1BlckdyaWQsIHRocmVhZHNQZXJUaHJlYWRncm91cCk7Cit9CisKKy8vIG1ldGhv
ZDogZGlzcGF0Y2hUaHJlYWRncm91cHNXaXRoSW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJP
ZmZzZXQ6dGhyZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1
dGVDb21tYW5kRW5jb2Rlcjo6ZGlzcGF0Y2hUaHJlYWRncm91cHMoY29uc3QgTVRMOjpCdWZmZXIq
IGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQsIE1UTDo6
U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVGhyZWFkZ3JvdXBzV2l0aEluZGly
ZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0X3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCBp
bmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQsIHRocmVhZHNQZXJUaHJlYWRncm91
cCk7Cit9CisKKy8vIG1ldGhvZDogZGlzcGF0Y2hUaHJlYWRzOnRocmVhZHNQZXJUaHJlYWRncm91
cDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNo
VGhyZWFkcyhNVEw6OlNpemUgdGhyZWFkc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhy
ZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRpc3BhdGNoVGhyZWFkc190aHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgdGhyZWFk
c1BlckdyaWQsIHRocmVhZHNQZXJUaHJlYWRncm91cCk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRl
RmVuY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp1cGRh
dGVGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOwor
fQorCisvLyBtZXRob2Q6IHdhaXRGb3JGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21w
dXRlQ29tbWFuZEVuY29kZXI6OndhaXRGb3JGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
d2FpdEZvckZlbmNlXyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZTp1c2Fn
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnVzZVJlc291
cmNlKGNvbnN0IE1UTDo6UmVzb3VyY2UqIHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNh
Z2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHVzZVJlc291cmNlX3VzYWdlXyksIHJlc291cmNlLCB1c2FnZSk7Cit9CisKKy8vIG1ldGhv
ZDogdXNlUmVzb3VyY2VzOmNvdW50OnVzYWdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1
dGVDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3VyY2VzKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1td
LCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVzb3Vy
Y2VzX2NvdW50X3VzYWdlXyksIHJlc291cmNlcywgY291bnQsIHVzYWdlKTsKK30KKworLy8gbWV0
aG9kOiB1c2VIZWFwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rl
cjo6dXNlSGVhcChjb25zdCBNVEw6OkhlYXAqIGhlYXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBfKSwgaGVhcCk7Cit9CisK
Ky8vIG1ldGhvZDogdXNlSGVhcHM6Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwcyhNVEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdl
ciBjb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodXNlSGVhcHNfY291bnRfKSwgaGVhcHMsIGNvdW50KTsKK30KKworLy8gbWV0aG9k
OiBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBN
VEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6UmFu
Z2UgZXhlY3V0aW9uUmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyX3dpdGhSYW5nZV8pLCBp
bmRpcmVjdENvbW1hbmRCdWZmZXIsIGV4ZWN1dGlvblJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBl
eGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNl
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmV4ZWN1dGVD
b21tYW5kc0luQnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVj
dENvbW1hbmRidWZmZXIsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdFJhbmdlQnVmZmVyLCBO
Uzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGV4ZWN1dGVDb21tYW5kc0luQnVmZmVy
X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIGluZGlyZWN0Q29tbWFuZGJ1
ZmZlciwgaW5kaXJlY3RSYW5nZUJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworfQorCisv
LyBtZXRob2Q6IG1lbW9yeUJhcnJpZXJXaXRoU2NvcGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjptZW1vcnlCYXJyaWVyKE1UTDo6QmFycmllclNjb3BlIHNj
b3BlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtZW1vcnlCYXJyaWVyV2l0aFNjb3BlXyksIHNjb3BlKTsKK30KKworLy8gbWV0aG9kOiBt
ZW1vcnlCYXJyaWVyV2l0aFJlc291cmNlczpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21wdXRlQ29tbWFuZEVuY29kZXI6Om1lbW9yeUJhcnJpZXIoTVRMOjpSZXNvdXJjZSogcmVzb3Vy
Y2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXNfY291
bnRfKSwgcmVzb3VyY2VzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogc2FtcGxlQ291bnRlcnNJ
bkJ1ZmZlcjphdFNhbXBsZUluZGV4OndpdGhCYXJyaWVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBNVEw6
OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUlu
ZGV4LCBib29sIGJhcnJpZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50ZXJzSW5CdWZmZXJfYXRTYW1wbGVJbmRleF93
aXRoQmFycmllcl8pLCBzYW1wbGVCdWZmZXIsIHNhbXBsZUluZGV4LCBiYXJyaWVyKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRl
UGFzcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0
ZVBhc3MuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzZDRiNTI2NzZkZGIwMWQ2ZjU4OThjNWQ3MzE1MWFlM2Y3
NDYzZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwCkBAIC0wLDAgKzEsMTgxIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21wdXRl
UGFzcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2Uu
aHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTENvbW1hbmRCdWZmZXIuaHBwIgorCituYW1l
c3BhY2UgTVRMCit7CitjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvbXB1dGVQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBD
b21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgp
OworCisgICAgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNhbXBsZUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVCdWZmZXIoY29u
c3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKTsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0T2ZFbmNvZGVyU2Ft
cGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworCisgICAg
TlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuZE9mRW5jb2RlclNh
bXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9OworCitj
bGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQ29tcHV0ZVBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xh
c3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAgICAg
ICAgaW5pdCgpOworCisgICAgY2xhc3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5k
ZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIENvbXB1dGVQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRh
Y2htZW50SW5kZXgpOworfTsKKworY2xhc3MgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yIDogcHVibGlj
IE5TOjpDb3B5aW5nPENvbXB1dGVQYXNzRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGFsbG9j
KCk7CisKKyAgICBjbGFzcyBDb21wdXRlUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBDb21wdXRlUGFzc0Rlc2NyaXB0
b3IqICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZVBhc3NEZXNjcmlwdG9yKCk7CisKKyAgICBN
VEw6OkRpc3BhdGNoVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
c3BhdGNoVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGlzcGF0Y2hUeXBlKE1UTDo6RGlzcGF0Y2hUeXBl
IGRpc3BhdGNoVHlwZSk7CisKKyAgICBjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkqIHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3Q7Cit9
OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvbXB1
dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0OjphbGxvYzxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpDb21w
dXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXIKK19NVExf
SU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcio+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTYW1w
bGVCdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFNhbXBsZUJ1ZmZlcl8pLCBzYW1wbGVCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRP
ZkVuY29kZXJTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZkVuY29kZXJTYW1w
bGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I6OnNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRl
Z2VyIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5k
ZXhfKSwgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmRP
ZkVuY29kZXJTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZFbmNvZGVyU2FtcGxl
SW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmRPZkVuY29kZXJTYW1wbGVJbmRleCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVu
ZE9mRW5jb2RlclNhbXBsZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleF8pLCBlbmRP
ZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheSogTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9D
TFMoTVRMQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6aW5pdDxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6
CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNj
cmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdElu
ZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpDb21w
dXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6
VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0Xyks
IGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRvciogTVRMOjpDb21wdXRl
UGFzc0Rlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcHV0ZVBh
c3NEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpD
b21wdXRlUGFzc0Rlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRv
cj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogY29tcHV0ZVBhc3NEZXNjcmlwdG9yCitfTVRM
X0lOTElORSBNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRvciogTVRMOjpDb21wdXRlUGFzc0Rlc2Ny
aXB0b3I6OmNvbXB1dGVQYXNzRGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TENvbXB1dGVQYXNzRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoY29tcHV0ZVBhc3NEZXNj
cmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkaXNwYXRjaFR5cGUKK19NVExfSU5MSU5FIE1U
TDo6RGlzcGF0Y2hUeXBlIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjpkaXNwYXRjaFR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGlzcGF0Y2hU
eXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVHlwZSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjpzZXREaXNwYXRjaFR5cGUoTVRM
OjpEaXNwYXRjaFR5cGUgZGlzcGF0Y2hUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREaXNwYXRjaFR5cGVfKSwgZGlzcGF0Y2hU
eXBlKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzCitfTVRMX0lO
TElORSBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eSogTVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2FtcGxlQnVmZmVyQXR0YWNobWVudHMpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBwIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQaXBlbGluZS5ocHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGU1NmQ3ZmZkMmUzZWY3NDdiOTViZTU0MDkyOGJlNmZmMDI4MDI2MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExD
b21wdXRlUGlwZWxpbmUuaHBwCkBAIC0wLDAgKzEsMzU3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21wdXRlUGlwZWxp
bmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisKK25hbWVzcGFjZSBNVEwK
K3sKK2NsYXNzIENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24gOiBwdWJsaWMgTlM6OlJlZmVyZW5j
aW5nPENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIGFsbG9jKCk7CisKKyAgICBjbGFzcyBDb21w
dXRlUGlwZWxpbmVSZWZsZWN0aW9uKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OkFycmF5KiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cygpIGNvbnN0OworfTsKKworY2xh
c3MgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisK
KyAgICBjbGFzcyBGdW5jdGlvbiogICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUZ1bmN0
aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldENvbXB1dGVGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9u
KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRH
cm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaHJlYWRHcm91cFNpemVJ
c011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aChib29sIHRocmVhZEdyb3VwU2l6ZUlzTXVs
dGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhUb3Rh
bFRocmVhZHNQZXJUaHJlYWRncm91cChOUzo6VUludGVnZXIgbWF4VG90YWxUaHJlYWRzUGVyVGhy
ZWFkZ3JvdXApOworCisgICAgY2xhc3MgU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqICAgICAg
IHN0YWdlSW5wdXREZXNjcmlwdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFN0YWdlSW5wdXREZXNjcmlwdG9yKGNvbnN0IGNsYXNzIFN0
YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKiBzdGFnZUlucHV0RGVzY3JpcHRvcik7CisKKyAgICBj
bGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogICAgYnVmZmVycygpIGNvbnN0Owor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRJbmRp
cmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKGJvb2wgc3Vw
cG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluc2VydExpYnJhcmllcygpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnNlcnRMaWJyYXJpZXMoY29uc3Qg
TlM6OkFycmF5KiBpbnNlcnRMaWJyYXJpZXMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByZWxvYWRlZExpYnJhcmllcygpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcmVsb2FkZWRMaWJyYXJpZXMo
Y29uc3QgTlM6OkFycmF5KiBwcmVsb2FkZWRMaWJyYXJpZXMpOworCisgICAgTlM6OkFycmF5KiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeUFyY2hpdmVzKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpbmFyeUFyY2hpdmVz
KGNvbnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7CisKKyAgICBjbGFzcyBMaW5rZWRGdW5j
dGlvbnMqICAgICAgICAgICAgICAgICAgbGlua2VkRnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExpbmtlZEZ1bmN0aW9ucyhj
b25zdCBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqIGxpbmtlZEZ1bmN0aW9ucyk7CisKKyAgICBib29s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1
bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFkZGluZ0Jp
bmFyeUZ1bmN0aW9ucyk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF4Q2FsbFN0YWNrRGVwdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0TWF4Q2FsbFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1h
eENhbGxTdGFja0RlcHRoKTsKK307CisKK2NsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlIDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRlUGlwZWxpbmVTdGF0ZT4KK3sKK3B1YmxpYzoKKyAg
ICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworCisgICAg
Y2xhc3MgRGV2aWNlKiAgICAgICAgICAgICAgICAgICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRn
cm91cCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgdGhy
ZWFkRXhlY3V0aW9uV2lkdGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY1RocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKCkgY29uc3Q7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBpbWFnZWJsb2NrTWVtb3J5TGVuZ3RoKE1U
TDo6U2l6ZSBpbWFnZWJsb2NrRGltZW5zaW9ucyk7CisKKyAgICBib29sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0OworCisg
ICAgY2xhc3MgRnVuY3Rpb25IYW5kbGUqICAgICAgICAgICAgZnVuY3Rpb25IYW5kbGUoY29uc3Qg
Y2xhc3MgRnVuY3Rpb24qIGZ1bmN0aW9uKTsKKworICAgIGNsYXNzIENvbXB1dGVQaXBlbGluZVN0
YXRlKiAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE5TOjpBcnJheSogZnVuY3Rp
b25zLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJs
ZSogICAgICBuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rp
b25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgSW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSogbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVzY3JpcHRvcik7Cit9OworCit9
CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQaXBl
bGluZVJlZmxlY3Rpb24qIE1UTDo6Q29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkNvbXB1dGVQaXBlbGluZVJlZmxl
Y3Rpb24+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbikpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBpcGVsaW5lUmVm
bGVjdGlvbiogTVRMOjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24+KCk7
Cit9CisKKy8vIHByb3BlcnR5OiBhcmd1bWVudHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRM
OjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uOjphcmd1bWVudHMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYXJndW1lbnRzKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUg
TlM6OlN0cmluZyogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBjb21wdXRlRnVuY3Rpb24KK19N
VExfSU5MSU5FIE1UTDo6RnVuY3Rpb24qIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6
Y29tcHV0ZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb21wdXRlRnVuY3Rpb24p
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6
OnNldENvbXB1dGVGdW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24p
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldENvbXB1dGVGdW5jdGlvbl8pLCBjb21wdXRlRnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0
eTogdGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGgKK19NVExf
SU5MSU5FIGJvb2wgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjp0aHJlYWRHcm91cFNp
emVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRH
cm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGhyZWFkR3JvdXBT
aXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGgoYm9vbCB0aHJlYWRHcm91cFNpemVJ
c011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGhyZWFkR3JvdXBTaXplSXNNdWx0
aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGhfKSwgdGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9m
VGhyZWFkRXhlY3V0aW9uV2lkdGgpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VG90YWxUaHJlYWRz
UGVyVGhyZWFkZ3JvdXAKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3I6Om1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXApKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldE1heFRvdGFsVGhy
ZWFkc1BlclRocmVhZGdyb3VwKE5TOjpVSW50ZWdlciBtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRn
cm91cCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0TWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgbWF4VG90YWxUaHJlYWRz
UGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBwcm9wZXJ0eTogc3RhZ2VJbnB1dERlc2NyaXB0b3IK
K19NVExfSU5MSU5FIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c3RhZ2VJbnB1dERlc2NyaXB0b3IoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0
b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YWdlSW5wdXREZXNjcmlwdG9yKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdGFn
ZUlucHV0RGVzY3JpcHRvcihjb25zdCBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKiBz
dGFnZUlucHV0RGVzY3JpcHRvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhZ2VJbnB1dERlc2NyaXB0b3JfKSwgc3RhZ2VJbnB1
dERlc2NyaXB0b3IpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVycworX01UTF9JTkxJTkUgTVRM
OjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yOjpidWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChidWZmZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0SW5kaXJlY3RDb21tYW5k
QnVmZmVycworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6
OnN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0
SW5kaXJlY3RDb21tYW5kQnVmZmVycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMo
Ym9vbCBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEluZGlyZWN0Q29t
bWFuZEJ1ZmZlcnNfKSwgc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpOworfQorCisvLyBw
cm9wZXJ0eTogaW5zZXJ0TGlicmFyaWVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6Q29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6aW5zZXJ0TGlicmFyaWVzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluc2VydExpYnJhcmllcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0SW5zZXJ0TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSog
aW5zZXJ0TGlicmFyaWVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRJbnNlcnRMaWJyYXJpZXNfKSwgaW5zZXJ0TGlicmFyaWVzKTsK
K30KKworLy8gcHJvcGVydHk6IHByZWxvYWRlZExpYnJhcmllcworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnByZWxvYWRlZExpYnJhcmllcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChwcmVsb2FkZWRMaWJyYXJpZXMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldFByZWxvYWRlZExpYnJh
cmllcyhjb25zdCBOUzo6QXJyYXkqIHByZWxvYWRlZExpYnJhcmllcykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UHJlbG9hZGVkTGli
cmFyaWVzXyksIHByZWxvYWRlZExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlB
cmNoaXZlcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3I6OmJpbmFyeUFyY2hpdmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJpbmFyeUFyY2hpdmVz
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
OjpzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hpdmVzKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRC
aW5hcnlBcmNoaXZlc18pLCBiaW5hcnlBcmNoaXZlcyk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXQK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpyZXNldCgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHJlc2V0KSk7Cit9CisKKy8vIHByb3BlcnR5OiBsaW5rZWRGdW5jdGlvbnMKK19NVExfSU5MSU5F
IE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6Omxp
bmtlZEZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpMaW5rZWRGdW5jdGlvbnMqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxpbmtlZEZ1bmN0
aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcjo6c2V0TGlua2VkRnVuY3Rpb25zKGNvbnN0IE1UTDo6TGlua2VkRnVuY3Rpb25zKiBsaW5r
ZWRGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldExpbmtlZEZ1bmN0aW9uc18pLCBsaW5rZWRGdW5jdGlvbnMpOworfQor
CisvLyBwcm9wZXJ0eTogc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnN1cHBvcnRBZGRpbmdCaW5hcnlG
dW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxi
b29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6
OnNldFN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRkaW5nQmluYXJ5
RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zXyksIHN1cHBvcnRBZGRp
bmdCaW5hcnlGdW5jdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogbWF4Q2FsbFN0YWNrRGVwdGgK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6
Om1heENhbGxTdGFja0RlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4Q2FsbFN0YWNrRGVw
dGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3I6OnNldE1heENhbGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhDYWxsU3RhY2tEZXB0aCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TWF4Q2FsbFN0YWNrRGVwdGhfKSwgbWF4Q2FsbFN0YWNrRGVwdGgpOworfQorCisvLyBwcm9w
ZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tcHV0ZVBpcGVsaW5l
U3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9w
ZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpDb21wdXRlUGlwZWxp
bmVTdGF0ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Om1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VG90YWxUaHJlYWRzUGVyVGhyZWFk
Z3JvdXApKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZEV4ZWN1dGlvbldpZHRoCitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZTo6dGhyZWFkRXhlY3V0
aW9uV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRFeGVjdXRpb25XaWR0aCkpOwor
fQorCisvLyBwcm9wZXJ0eTogc3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpzdGF0aWNUaHJlYWRn
cm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXRpY1RocmVhZGdyb3Vw
TWVtb3J5TGVuZ3RoKSk7Cit9CisKKy8vIG1ldGhvZDogaW1hZ2VibG9ja01lbW9yeUxlbmd0aEZv
ckRpbWVuc2lvbnM6CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpDb21wdXRlUGlwZWxp
bmVTdGF0ZTo6aW1hZ2VibG9ja01lbW9yeUxlbmd0aChNVEw6OlNpemUgaW1hZ2VibG9ja0RpbWVu
c2lvbnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25z
XyksIGltYWdlYmxvY2tEaW1lbnNpb25zKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRJbmRp
cmVjdENvbW1hbmRCdWZmZXJzCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcHV0ZVBpcGVsaW5l
U3RhdGU6OnN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycykpOworfQorCisvLyBtZXRob2Q6IGZ1bmN0aW9u
SGFuZGxlV2l0aEZ1bmN0aW9uOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkhhbmRsZSogTVRM
OjpDb21wdXRlUGlwZWxpbmVTdGF0ZTo6ZnVuY3Rpb25IYW5kbGUoY29uc3QgTVRMOjpGdW5jdGlv
biogZnVuY3Rpb24pCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5j
dGlvbkhhbmRsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25IYW5kbGVXaXRoRnVu
Y3Rpb25fKSwgZnVuY3Rpb24pOworfQorCisvLyBtZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0
YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnM6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6
OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpuZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZShjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9ucywgTlM6OkVycm9yKiog
ZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21wdXRlUGlw
ZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVXaXRoQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uc19lcnJvcl8pLCBmdW5jdGlvbnMsIGVycm9y
KTsKK30KKworLy8gbWV0aG9kOiBuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9y
OgorX01UTF9JTkxJTkUgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogTVRMOjpDb21wdXRlUGlw
ZWxpbmVTdGF0ZTo6bmV3VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVu
Y3Rpb25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9y
KTsKK30KKworLy8gbWV0aG9kOiBuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlV2l0aERlc2Ny
aXB0b3I6CitfTVRMX0lOTElORSBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIE1UTDo6
Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Om5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3Qg
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb3VudGVycy5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ291bnRlcnMuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
NjVjMWQ4ZWEwMTgxNmRkN2RmYjY5NDgxZDdhMjhkYjY0MTdiNTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ291bnRlcnMuaHBwCkBA
IC0wLDAgKzEsMjU4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb3VudGVycy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAy
MC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIK
KyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBw
IgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1U
TFJlc291cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworCitfTVRMX0NPTlNUKCBOUzo6RXJy
b3JEb21haW4sIENvdW50ZXJFcnJvckRvbWFpbiApOworCit1c2luZyBDb21tb25Db3VudGVyID0g
TlM6OlN0cmluZyo7CisKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJU
aW1lc3RhbXAgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUZXNz
ZWxsYXRpb25JbnB1dFBhdGNoZXMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1v
bkNvdW50ZXJWZXJ0ZXhJbnZvY2F0aW9ucyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwg
Q29tbW9uQ291bnRlclBvc3RUZXNzZWxsYXRpb25WZXJ0ZXhJbnZvY2F0aW9ucyApOworX01UTF9D
T05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckNsaXBwZXJJbnZvY2F0aW9ucyApOwor
X01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckNsaXBwZXJQcmltaXRpdmVz
T3V0ICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyRnJhZ21lbnRJ
bnZvY2F0aW9ucyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckZy
YWdtZW50c1Bhc3NlZCApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRl
ckNvbXB1dGVLZXJuZWxJbnZvY2F0aW9ucyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwg
Q29tbW9uQ291bnRlclRvdGFsQ3ljbGVzICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBD
b21tb25Db3VudGVyVmVydGV4Q3ljbGVzICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBD
b21tb25Db3VudGVyVGVzc2VsbGF0aW9uQ3ljbGVzICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3Vu
dGVyLCBDb21tb25Db3VudGVyUG9zdFRlc3NlbGxhdGlvblZlcnRleEN5Y2xlcyApOworX01UTF9D
T05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50Q3ljbGVzICk7CitfTVRM
X0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyUmVuZGVyVGFyZ2V0V3JpdGVDeWNs
ZXMgKTsKKwordXNpbmcgQ29tbW9uQ291bnRlclNldCA9IE5TOjpTdHJpbmcqOworCitfTVRMX0NP
TlNUKCBDb21tb25Db3VudGVyU2V0LCBDb21tb25Db3VudGVyU2V0VGltZXN0YW1wICk7CitfTVRM
X0NPTlNUKCBDb21tb25Db3VudGVyU2V0LCBDb21tb25Db3VudGVyU2V0U3RhZ2VVdGlsaXphdGlv
biApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlclNldCwgQ29tbW9uQ291bnRlclNldFN0YXRp
c3RpYyApOworCitzdHJ1Y3QgQ291bnRlclJlc3VsdFRpbWVzdGFtcAoreworICAgIHVpbnQ2NF90
IHRpbWVzdGFtcDsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBDb3VudGVyUmVzdWx0U3RhZ2VV
dGlsaXphdGlvbgoreworICAgIHVpbnQ2NF90IHRvdGFsQ3ljbGVzOworICAgIHVpbnQ2NF90IHZl
cnRleEN5Y2xlczsKKyAgICB1aW50NjRfdCB0ZXNzZWxsYXRpb25DeWNsZXM7CisgICAgdWludDY0
X3QgcG9zdFRlc3NlbGxhdGlvblZlcnRleEN5Y2xlczsKKyAgICB1aW50NjRfdCBmcmFnbWVudEN5
Y2xlczsKKyAgICB1aW50NjRfdCByZW5kZXJUYXJnZXRDeWNsZXM7Cit9IF9NVExfUEFDS0VEOwor
CitzdHJ1Y3QgQ291bnRlclJlc3VsdFN0YXRpc3RpYworeworICAgIHVpbnQ2NF90IHRlc3NlbGxh
dGlvbklucHV0UGF0Y2hlczsKKyAgICB1aW50NjRfdCB2ZXJ0ZXhJbnZvY2F0aW9uczsKKyAgICB1
aW50NjRfdCBwb3N0VGVzc2VsbGF0aW9uVmVydGV4SW52b2NhdGlvbnM7CisgICAgdWludDY0X3Qg
Y2xpcHBlckludm9jYXRpb25zOworICAgIHVpbnQ2NF90IGNsaXBwZXJQcmltaXRpdmVzT3V0Owor
ICAgIHVpbnQ2NF90IGZyYWdtZW50SW52b2NhdGlvbnM7CisgICAgdWludDY0X3QgZnJhZ21lbnRz
UGFzc2VkOworICAgIHVpbnQ2NF90IGNvbXB1dGVLZXJuZWxJbnZvY2F0aW9uczsKK30gX01UTF9Q
QUNLRUQ7CisKK2NsYXNzIENvdW50ZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvdW50ZXI+
Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogbmFtZSgpIGNvbnN0OworfTsKKworY2xhc3Mg
Q291bnRlclNldCA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q291bnRlclNldD4KK3sKK3B1Ymxp
YzoKKyAgICBOUzo6U3RyaW5nKiBuYW1lKCkgY29uc3Q7CisKKyAgICBOUzo6QXJyYXkqICBjb3Vu
dGVycygpIGNvbnN0OworfTsKKworY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3Ig
OiBwdWJsaWMgTlM6OkNvcHlpbmc8Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3IqICAgICAg
ICBpbml0KCk7CisKKyAgICBjbGFzcyBDb3VudGVyU2V0KiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvdW50ZXJTZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldENvdW50ZXJTZXQoY29uc3QgY2xhc3MgQ291bnRlclNldCogY291
bnRlclNldCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisKKyAgICBNVEw6
OlN0b3JhZ2VNb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VNb2RlKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRT
dG9yYWdlTW9kZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKTsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbXBs
ZUNvdW50KE5TOjpVSW50ZWdlciBzYW1wbGVDb3VudCk7Cit9OworCitjbGFzcyBDb3VudGVyU2Ft
cGxlQnVmZmVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb3VudGVyU2FtcGxlQnVmZmVyPgor
eworcHVibGljOgorICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6
U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgIHNhbXBsZUNvdW50
KCkgY29uc3Q7CisKKyAgICBOUzo6RGF0YSogICAgIHJlc29sdmVDb3VudGVyUmFuZ2UoTlM6OlJh
bmdlIHJhbmdlKTsKK307CisKK19NVExfRU5VTShOUzo6SW50ZWdlciwgQ291bnRlclNhbXBsZUJ1
ZmZlckVycm9yKSB7CisgICAgQ291bnRlclNhbXBsZUJ1ZmZlckVycm9yT3V0T2ZNZW1vcnkgPSAw
LAorICAgIENvdW50ZXJTYW1wbGVCdWZmZXJFcnJvckludmFsaWQgPSAxLAorfTsKKworfQorCitf
TVRMX1BSSVZBVEVfREVGX1NUUiggTlM6OkVycm9yRG9tYWluLCBDb3VudGVyRXJyb3JEb21haW4g
KTsKKworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291
bnRlclRpbWVzdGFtcCApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRl
ciwgQ29tbW9uQ291bnRlclRlc3NlbGxhdGlvbklucHV0UGF0Y2hlcyApOworX01UTF9QUklWQVRF
X0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclZlcnRleEludm9jYXRp
b25zICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25D
b3VudGVyUG9zdFRlc3NlbGxhdGlvblZlcnRleEludm9jYXRpb25zICk7CitfTVRMX1BSSVZBVEVf
REVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyQ2xpcHBlckludm9jYXRp
b25zICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25D
b3VudGVyQ2xpcHBlclByaW1pdGl2ZXNPdXQgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6
OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJGcmFnbWVudEludm9jYXRpb25zICk7CitfTVRM
X1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyRnJhZ21l
bnRzUGFzc2VkICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBD
b21tb25Db3VudGVyQ29tcHV0ZUtlcm5lbEludm9jYXRpb25zICk7CitfTVRMX1BSSVZBVEVfREVG
X1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVG90YWxDeWNsZXMgKTsKK19N
VExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJWZXJ0
ZXhDeWNsZXMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENv
bW1vbkNvdW50ZXJUZXNzZWxsYXRpb25DeWNsZXMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBN
VEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJQb3N0VGVzc2VsbGF0aW9uVmVydGV4Q3lj
bGVzICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25D
b3VudGVyRnJhZ21lbnRDeWNsZXMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1v
bkNvdW50ZXIsIENvbW1vbkNvdW50ZXJSZW5kZXJUYXJnZXRXcml0ZUN5Y2xlcyApOworCitfTVRM
X1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyU2V0LCBDb21tb25Db3VudGVyU2V0
VGltZXN0YW1wICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyU2V0
LCBDb21tb25Db3VudGVyU2V0U3RhZ2VVdGlsaXphdGlvbiApOworX01UTF9QUklWQVRFX0RFRl9T
VFIoIE1UTDo6Q29tbW9uQ291bnRlclNldCwgQ29tbW9uQ291bnRlclNldFN0YXRpc3RpYyApOwor
CisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb3VudGVy
OjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBu
YW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNvdW50ZXJTZXQ6Om5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGNvdW50ZXJzCitfTVRM
X0lOTElORSBOUzo6QXJyYXkqIE1UTDo6Q291bnRlclNldDo6Y291bnRlcnMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoY291bnRlcnMpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExf
SU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6Q291bnRlclNh
bXBsZUJ1ZmZlckRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NM
UyhNVExDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6
Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBjb3VudGVyU2V0CitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTZXQqIE1U
TDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OmNvdW50ZXJTZXQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNldCo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoY291bnRlclNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OnNldENvdW50ZXJTZXQoY29uc3QgTVRMOjpD
b3VudGVyU2V0KiBjb3VudGVyU2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb3VudGVyU2V0XyksIGNvdW50ZXJTZXQpOworfQor
CisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q291bnRl
clNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJl
bCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2Ny
aXB0b3I6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJl
bCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdG9yYWdlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTdG9y
YWdlTW9kZSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjpzdG9yYWdlTW9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdG9yYWdlTW9k
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdG9yYWdlTW9kZSkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OnNldFN0b3JhZ2VNb2Rl
KE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0b3JhZ2VNb2RlXyksIHN0b3JhZ2VN
b2RlKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6c2FtcGxlQ291bnQoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50KE5TOjpV
SW50ZWdlciBzYW1wbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlQ291bnRfKSwgc2FtcGxlQ291bnQpOworfQor
CisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpDb3Vu
dGVyU2FtcGxlQnVmZmVyOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsK
K30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNv
dW50ZXJTYW1wbGVCdWZmZXI6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOwor
fQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OkNvdW50ZXJTYW1wbGVCdWZmZXI6OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2FtcGxlQ291bnQpKTsKK30KKworLy8gbWV0aG9kOiByZXNvbHZlQ291bnRlclJhbmdlOgor
X01UTF9JTkxJTkUgTlM6OkRhdGEqIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcjo6cmVzb2x2ZUNv
dW50ZXJSYW5nZShOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OkRhdGEqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc29sdmVDb3VudGVyUmFu
Z2VfKSwgcmFuZ2UpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTERlZmluZXMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTERlZmluZXMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MmU3YTJjYzkwNDMyYWIwZDJmZDQ4
YjlmZTE4YzBkNTM1Yjk3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVmaW5lcy5ocHAKQEAgLTAsMCArMSw0MSBAQAorLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRM
RGVmaW5lcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
aW5jbHVkZSAiLi4vRm91bmRhdGlvbi9OU0RlZmluZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2RlZmluZSBfTVRMX0VYUE9SVCBfTlNf
RVhQT1JUCisjZGVmaW5lIF9NVExfRVhURVJOIF9OU19FWFRFUk4KKyNkZWZpbmUgX01UTF9JTkxJ
TkUgX05TX0lOTElORQorI2RlZmluZSBfTVRMX1BBQ0tFRCBfTlNfUEFDS0VECisKKyNkZWZpbmUg
X01UTF9DT05TVCh0eXBlLCBuYW1lKSBfTlNfQ09OU1QodHlwZSwgbmFtZSkKKyNkZWZpbmUgX01U
TF9FTlVNKHR5cGUsIG5hbWUpIF9OU19FTlVNKHR5cGUsIG5hbWUpCisjZGVmaW5lIF9NVExfT1BU
SU9OUyh0eXBlLCBuYW1lKSBfTlNfT1BUSU9OUyh0eXBlLCBuYW1lKQorCisjZGVmaW5lIF9NVExf
VkFMSURBVEVfU0laRShucywgbmFtZSkgX05TX1ZBTElEQVRFX1NJWkUobnMsIG5hbWUpCisjZGVm
aW5lIF9NVExfVkFMSURBVEVfRU5VTShucywgbmFtZSkgX05TX1ZBTElEQVRFX0VOVU0obnMsIG5h
bWUpCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlcHRoU3Rl
bmNpbC5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVwdGhT
dGVuY2lsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDc3NGRjZWMwMWU4NTlhMTAwMWRmMzkyZGIzM2JiYmU2
ODI5MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTERlcHRoU3RlbmNpbC5ocHAKQEAgLTAsMCArMSwyNjkgQEAKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTERlcHRo
U3RlbmNpbC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlk
Z2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTERlcHRoU3RlbmNpbC5ocHAiCisKK25h
bWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIENvbXBhcmVGdW5jdGlvbikg
eworICAgIENvbXBhcmVGdW5jdGlvbk5ldmVyID0gMCwKKyAgICBDb21wYXJlRnVuY3Rpb25MZXNz
ID0gMSwKKyAgICBDb21wYXJlRnVuY3Rpb25FcXVhbCA9IDIsCisgICAgQ29tcGFyZUZ1bmN0aW9u
TGVzc0VxdWFsID0gMywKKyAgICBDb21wYXJlRnVuY3Rpb25HcmVhdGVyID0gNCwKKyAgICBDb21w
YXJlRnVuY3Rpb25Ob3RFcXVhbCA9IDUsCisgICAgQ29tcGFyZUZ1bmN0aW9uR3JlYXRlckVxdWFs
ID0gNiwKKyAgICBDb21wYXJlRnVuY3Rpb25BbHdheXMgPSA3LAorfTsKKworX01UTF9FTlVNKE5T
OjpVSW50ZWdlciwgU3RlbmNpbE9wZXJhdGlvbikgeworICAgIFN0ZW5jaWxPcGVyYXRpb25LZWVw
ID0gMCwKKyAgICBTdGVuY2lsT3BlcmF0aW9uWmVybyA9IDEsCisgICAgU3RlbmNpbE9wZXJhdGlv
blJlcGxhY2UgPSAyLAorICAgIFN0ZW5jaWxPcGVyYXRpb25JbmNyZW1lbnRDbGFtcCA9IDMsCisg
ICAgU3RlbmNpbE9wZXJhdGlvbkRlY3JlbWVudENsYW1wID0gNCwKKyAgICBTdGVuY2lsT3BlcmF0
aW9uSW52ZXJ0ID0gNSwKKyAgICBTdGVuY2lsT3BlcmF0aW9uSW5jcmVtZW50V3JhcCA9IDYsCisg
ICAgU3RlbmNpbE9wZXJhdGlvbkRlY3JlbWVudFdyYXAgPSA3LAorfTsKKworY2xhc3MgU3RlbmNp
bERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8U3RlbmNpbERlc2NyaXB0b3I+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiBhbGxvYygpOworCisg
ICAgY2xhc3MgU3RlbmNpbERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkNv
bXBhcmVGdW5jdGlvbiAgICAgICAgICAgIHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24oKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZW5jaWxDb21wYXJlRnVu
Y3Rpb24oTVRMOjpDb21wYXJlRnVuY3Rpb24gc3RlbmNpbENvbXBhcmVGdW5jdGlvbik7CisKKyAg
ICBNVEw6OlN0ZW5jaWxPcGVyYXRpb24gICAgICAgICAgIHN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9u
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVuY2ls
RmFpbHVyZU9wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24gc3RlbmNpbEZhaWx1cmVPcGVy
YXRpb24pOworCisgICAgTVRMOjpTdGVuY2lsT3BlcmF0aW9uICAgICAgICAgICBkZXB0aEZhaWx1
cmVPcGVyYXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldERlcHRoRmFpbHVyZU9wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24gZGVwdGhGYWls
dXJlT3BlcmF0aW9uKTsKKworICAgIE1UTDo6U3RlbmNpbE9wZXJhdGlvbiAgICAgICAgICAgZGVw
dGhTdGVuY2lsUGFzc09wZXJhdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVy
YXRpb24gZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbik7CisKKyAgICB1aW50MzJfdCAgICAgICAg
ICAgICAgICAgICAgICAgIHJlYWRNYXNrKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRSZWFkTWFzayh1aW50MzJfdCByZWFkTWFzayk7CisKKyAgICB1aW50
MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlTWFzaygpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0V3JpdGVNYXNrKHVpbnQzMl90IHdyaXRlTWFz
ayk7Cit9OworCitjbGFzcyBEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPERlcHRoU3RlbmNpbERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNz
IERlcHRoU3RlbmNpbERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpDb21wYXJlRnVuY3Rpb24g
ICAgICAgICAgICAgICAgIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKE1U
TDo6Q29tcGFyZUZ1bmN0aW9uIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKTsKKworICAgIGJvb2wgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFdyaXRlRW5hYmxlZCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFdyaXRlRW5h
YmxlZChib29sIGRlcHRoV3JpdGVFbmFibGVkKTsKKworICAgIGNsYXNzIFN0ZW5jaWxEZXNjcmlw
dG9yKiAgICAgICAgICAgICBmcm9udEZhY2VTdGVuY2lsKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZyb250RmFjZVN0ZW5jaWwoY29uc3QgY2xh
c3MgU3RlbmNpbERlc2NyaXB0b3IqIGZyb250RmFjZVN0ZW5jaWwpOworCisgICAgY2xhc3MgU3Rl
bmNpbERlc2NyaXB0b3IqICAgICAgICAgICAgIGJhY2tGYWNlU3RlbmNpbCgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCYWNrRmFjZVN0ZW5jaWwo
Y29uc3QgY2xhc3MgU3RlbmNpbERlc2NyaXB0b3IqIGJhY2tGYWNlU3RlbmNpbCk7CisKKyAgICBO
Uzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0
cmluZyogbGFiZWwpOworfTsKKworY2xhc3MgRGVwdGhTdGVuY2lsU3RhdGUgOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPERlcHRoU3RlbmNpbFN0YXRlPgoreworcHVibGljOgorICAgIE5TOjpTdHJp
bmcqICAgbGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7
Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlN0
ZW5jaWxEZXNjcmlwdG9yKiBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U3RlbmNpbERlc2NyaXB0b3I+KF9NVExfUFJJ
VkFURV9DTFMoTVRMU3RlbmNpbERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yKiBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9y
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlN0ZW5jaWxEZXNj
cmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc3RlbmNpbENvbXBhcmVGdW5jdGlvbgorX01U
TF9JTkxJTkUgTVRMOjpDb21wYXJlRnVuY3Rpb24gTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6c3Rl
bmNpbENvbXBhcmVGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpDb21wYXJlRnVuY3Rpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlbmNp
bENvbXBhcmVGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RlbmNpbERl
c2NyaXB0b3I6OnNldFN0ZW5jaWxDb21wYXJlRnVuY3Rpb24oTVRMOjpDb21wYXJlRnVuY3Rpb24g
c3RlbmNpbENvbXBhcmVGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbENvbXBhcmVGdW5jdGlvbl8pLCBzdGVu
Y2lsQ29tcGFyZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHN0ZW5jaWxGYWlsdXJlT3Bl
cmF0aW9uCitfTVRMX0lOTElORSBNVEw6OlN0ZW5jaWxPcGVyYXRpb24gTVRMOjpTdGVuY2lsRGVz
Y3JpcHRvcjo6c3RlbmNpbEZhaWx1cmVPcGVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RlbmNpbE9wZXJhdGlvbj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnNldFN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uKE1UTDo6
U3RlbmNpbE9wZXJhdGlvbiBzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbEZhaWx1
cmVPcGVyYXRpb25fKSwgc3RlbmNpbEZhaWx1cmVPcGVyYXRpb24pOworfQorCisvLyBwcm9wZXJ0
eTogZGVwdGhGYWlsdXJlT3BlcmF0aW9uCitfTVRMX0lOTElORSBNVEw6OlN0ZW5jaWxPcGVyYXRp
b24gTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhGYWlsdXJlT3BlcmF0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5jaWxPcGVyYXRpb24+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhGYWlsdXJlT3BlcmF0aW9uKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhGYWlsdXJlT3Bl
cmF0aW9uKE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBkZXB0aEZhaWx1cmVPcGVyYXRpb24pCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERl
cHRoRmFpbHVyZU9wZXJhdGlvbl8pLCBkZXB0aEZhaWx1cmVPcGVyYXRpb24pOworfQorCisvLyBw
cm9wZXJ0eTogZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbgorX01UTF9JTkxJTkUgTVRMOjpTdGVu
Y2lsT3BlcmF0aW9uIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoU3RlbmNpbFBhc3NPcGVy
YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3Rl
bmNpbE9wZXJhdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXB0aFN0ZW5jaWxQYXNzT3Bl
cmF0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6
c2V0RGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24gZGVwdGhT
dGVuY2lsUGFzc09wZXJhdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbl8pLCBkZXB0
aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHJlYWRNYXNrCitfTVRM
X0lOTElORSB1aW50MzJfdCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpyZWFkTWFzaygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDMyX3Q+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwocmVhZE1hc2spKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5j
aWxEZXNjcmlwdG9yOjpzZXRSZWFkTWFzayh1aW50MzJfdCByZWFkTWFzaykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVhZE1hc2tf
KSwgcmVhZE1hc2spOworfQorCisvLyBwcm9wZXJ0eTogd3JpdGVNYXNrCitfTVRMX0lOTElORSB1
aW50MzJfdCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjp3cml0ZU1hc2soKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHdyaXRlTWFzaykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RlbmNpbERlc2Ny
aXB0b3I6OnNldFdyaXRlTWFzayh1aW50MzJfdCB3cml0ZU1hc2spCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFdyaXRlTWFza18pLCB3
cml0ZU1hc2spOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3IpKTsK
K30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkRlcHRoU3RlbmNpbERlc2Ny
aXB0b3IqIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPigpOworfQorCisv
LyBwcm9wZXJ0eTogZGVwdGhDb21wYXJlRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6Q29tcGFy
ZUZ1bmN0aW9uIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhDb21wYXJlRnVuY3Rp
b24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcGFy
ZUZ1bmN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRoQ29tcGFyZUZ1bmN0aW9uKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRE
ZXB0aENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmVGdW5j
dGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0RGVwdGhDb21wYXJlRnVuY3Rpb25fKSwgZGVwdGhDb21wYXJlRnVuY3Rpb24pOwor
fQorCisvLyBwcm9wZXJ0eTogZGVwdGhXcml0ZUVuYWJsZWQKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpkZXB0aFdyaXRlRW5hYmxlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChpc0RlcHRoV3JpdGVFbmFibGVkKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0aFdyaXRlRW5hYmxlZChib29sIGRlcHRoV3JpdGVF
bmFibGVkKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXREZXB0aFdyaXRlRW5hYmxlZF8pLCBkZXB0aFdyaXRlRW5hYmxlZCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBmcm9udEZhY2VTdGVuY2lsCitfTVRMX0lOTElORSBNVEw6OlN0ZW5jaWxE
ZXNjcmlwdG9yKiBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmZyb250RmFjZVN0ZW5jaWwo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RlbmNpbERl
c2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZyb250RmFjZVN0ZW5jaWwpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldEZyb250
RmFjZVN0ZW5jaWwoY29uc3QgTVRMOjpTdGVuY2lsRGVzY3JpcHRvciogZnJvbnRGYWNlU3RlbmNp
bCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0RnJvbnRGYWNlU3RlbmNpbF8pLCBmcm9udEZhY2VTdGVuY2lsKTsKK30KKworLy8gcHJv
cGVydHk6IGJhY2tGYWNlU3RlbmNpbAorX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3JpcHRv
ciogTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpiYWNrRmFjZVN0ZW5jaWwoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RlbmNpbERlc2NyaXB0b3Iq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJhY2tGYWNlU3RlbmNpbCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0QmFja0ZhY2VTdGVuY2ls
KGNvbnN0IE1UTDo6U3RlbmNpbERlc2NyaXB0b3IqIGJhY2tGYWNlU3RlbmNpbCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmFja0Zh
Y2VTdGVuY2lsXyksIGJhY2tGYWNlU3RlbmNpbCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAor
X01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpsYWJl
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxh
YmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9J
TkxJTkUgTlM6OlN0cmluZyogTVRMOjpEZXB0aFN0ZW5jaWxTdGF0ZTo6bGFiZWwoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5M
SU5FIE1UTDo6RGV2aWNlKiBNVEw6OkRlcHRoU3RlbmNpbFN0YXRlOjpkZXZpY2UoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXZpY2UuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTERldmljZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmNkMGQ3NzY0Zjk2ZDI0
NjEwNDM1NjYzMDVhODBhYzdiZWVlOTY2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXZpY2UuaHBwCkBAIC0wLDAgKzEsMTI1NCBA
QAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8g
TWV0YWwvTVRMRGV2aWNlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5j
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhl
YWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQXJndW1lbnQuaHBwIgor
I2luY2x1ZGUgIk1UTERldmljZS5ocHAiCisjaW5jbHVkZSAiTVRMUGl4ZWxGb3JtYXQuaHBwIgor
I2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKyNp
bmNsdWRlICJNVExUeXBlcy5ocHAiCisjaW5jbHVkZSA8SU9TdXJmYWNlL0lPU3VyZmFjZVJlZi5o
PgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShO
Uzo6VUludGVnZXIsIEZlYXR1cmVTZXQpIHsKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkx
X3YxID0gMCwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkyX3YxID0gMSwKKyAgICBGZWF0
dXJlU2V0X2lPU19HUFVGYW1pbHkxX3YyID0gMiwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1p
bHkyX3YyID0gMywKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkzX3YxID0gNCwKKyAgICBG
ZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkxX3YzID0gNSwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVG
YW1pbHkyX3YzID0gNiwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkzX3YyID0gNywKKyAg
ICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkxX3Y0ID0gOCwKKyAgICBGZWF0dXJlU2V0X2lPU19H
UFVGYW1pbHkyX3Y0ID0gOSwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkzX3YzID0gMTAs
CisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5NF92MSA9IDExLAorICAgIEZlYXR1cmVTZXRf
aU9TX0dQVUZhbWlseTFfdjUgPSAxMiwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkyX3Y1
ID0gMTMsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5M192NCA9IDE0LAorICAgIEZlYXR1
cmVTZXRfaU9TX0dQVUZhbWlseTRfdjIgPSAxNSwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1p
bHk1X3YxID0gMTYsCisgICAgRmVhdHVyZVNldF9tYWNPU19HUFVGYW1pbHkxX3YxID0gMTAwMDAs
CisgICAgRmVhdHVyZVNldF9PU1hfR1BVRmFtaWx5MV92MSA9IDEwMDAwLAorICAgIEZlYXR1cmVT
ZXRfbWFjT1NfR1BVRmFtaWx5MV92MiA9IDEwMDAxLAorICAgIEZlYXR1cmVTZXRfT1NYX0dQVUZh
bWlseTFfdjIgPSAxMDAwMSwKKyAgICBGZWF0dXJlU2V0X09TWF9SZWFkV3JpdGVUZXh0dXJlVGll
cjIgPSAxMDAwMiwKKyAgICBGZWF0dXJlU2V0X21hY09TX1JlYWRXcml0ZVRleHR1cmVUaWVyMiA9
IDEwMDAyLAorICAgIEZlYXR1cmVTZXRfbWFjT1NfR1BVRmFtaWx5MV92MyA9IDEwMDAzLAorICAg
IEZlYXR1cmVTZXRfbWFjT1NfR1BVRmFtaWx5MV92NCA9IDEwMDA0LAorICAgIEZlYXR1cmVTZXRf
bWFjT1NfR1BVRmFtaWx5Ml92MSA9IDEwMDA1LAorICAgIEZlYXR1cmVTZXRfd2F0Y2hPU19HUFVG
YW1pbHkxX3YxID0gMjAwMDAsCisgICAgRmVhdHVyZVNldF9XYXRjaE9TX0dQVUZhbWlseTFfdjEg
PSAyMDAwMCwKKyAgICBGZWF0dXJlU2V0X3dhdGNoT1NfR1BVRmFtaWx5Ml92MSA9IDIwMDAxLAor
ICAgIEZlYXR1cmVTZXRfV2F0Y2hPU19HUFVGYW1pbHkyX3YxID0gMjAwMDEsCisgICAgRmVhdHVy
ZVNldF90dk9TX0dQVUZhbWlseTFfdjEgPSAzMDAwMCwKKyAgICBGZWF0dXJlU2V0X1RWT1NfR1BV
RmFtaWx5MV92MSA9IDMwMDAwLAorICAgIEZlYXR1cmVTZXRfdHZPU19HUFVGYW1pbHkxX3YyID0g
MzAwMDEsCisgICAgRmVhdHVyZVNldF90dk9TX0dQVUZhbWlseTFfdjMgPSAzMDAwMiwKKyAgICBG
ZWF0dXJlU2V0X3R2T1NfR1BVRmFtaWx5Ml92MSA9IDMwMDAzLAorICAgIEZlYXR1cmVTZXRfdHZP
U19HUFVGYW1pbHkxX3Y0ID0gMzAwMDQsCisgICAgRmVhdHVyZVNldF90dk9TX0dQVUZhbWlseTJf
djIgPSAzMDAwNSwKK307CisKK19NVExfRU5VTShOUzo6SW50ZWdlciwgR1BVRmFtaWx5KSB7Cisg
ICAgR1BVRmFtaWx5QXBwbGUxID0gMTAwMSwKKyAgICBHUFVGYW1pbHlBcHBsZTIgPSAxMDAyLAor
ICAgIEdQVUZhbWlseUFwcGxlMyA9IDEwMDMsCisgICAgR1BVRmFtaWx5QXBwbGU0ID0gMTAwNCwK
KyAgICBHUFVGYW1pbHlBcHBsZTUgPSAxMDA1LAorICAgIEdQVUZhbWlseUFwcGxlNiA9IDEwMDYs
CisgICAgR1BVRmFtaWx5QXBwbGU3ID0gMTAwNywKKyAgICBHUFVGYW1pbHlBcHBsZTggPSAxMDA4
LAorICAgIEdQVUZhbWlseU1hYzEgPSAyMDAxLAorICAgIEdQVUZhbWlseU1hYzIgPSAyMDAyLAor
ICAgIEdQVUZhbWlseUNvbW1vbjEgPSAzMDAxLAorICAgIEdQVUZhbWlseUNvbW1vbjIgPSAzMDAy
LAorICAgIEdQVUZhbWlseUNvbW1vbjMgPSAzMDAzLAorICAgIEdQVUZhbWlseU1hY0NhdGFseXN0
MSA9IDQwMDEsCisgICAgR1BVRmFtaWx5TWFjQ2F0YWx5c3QyID0gNDAwMiwKK307CisKK19NVExf
RU5VTShOUzo6VUludGVnZXIsIERldmljZUxvY2F0aW9uKSB7CisgICAgRGV2aWNlTG9jYXRpb25C
dWlsdEluID0gMCwKKyAgICBEZXZpY2VMb2NhdGlvblNsb3QgPSAxLAorICAgIERldmljZUxvY2F0
aW9uRXh0ZXJuYWwgPSAyLAorICAgIERldmljZUxvY2F0aW9uVW5zcGVjaWZpZWQgPSBOUzo6VUlu
dGVnZXJNYXgsCit9OworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBQaXBlbGluZU9wdGlv
bikgeworICAgIFBpcGVsaW5lT3B0aW9uTm9uZSA9IDAsCisgICAgUGlwZWxpbmVPcHRpb25Bcmd1
bWVudEluZm8gPSAxLAorICAgIFBpcGVsaW5lT3B0aW9uQnVmZmVyVHlwZUluZm8gPSAyLAorICAg
IFBpcGVsaW5lT3B0aW9uRmFpbE9uQmluYXJ5QXJjaGl2ZU1pc3MgPSA0LAorfTsKKworX01UTF9F
TlVNKE5TOjpVSW50ZWdlciwgUmVhZFdyaXRlVGV4dHVyZVRpZXIpIHsKKyAgICBSZWFkV3JpdGVU
ZXh0dXJlVGllck5vbmUgPSAwLAorICAgIFJlYWRXcml0ZVRleHR1cmVUaWVyMSA9IDEsCisgICAg
UmVhZFdyaXRlVGV4dHVyZVRpZXIyID0gMiwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIs
IEFyZ3VtZW50QnVmZmVyc1RpZXIpIHsKKyAgICBBcmd1bWVudEJ1ZmZlcnNUaWVyMSA9IDAsCisg
ICAgQXJndW1lbnRCdWZmZXJzVGllcjIgPSAxLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdl
ciwgU3BhcnNlVGV4dHVyZVJlZ2lvbkFsaWdubWVudE1vZGUpIHsKKyAgICBTcGFyc2VUZXh0dXJl
UmVnaW9uQWxpZ25tZW50TW9kZU91dHdhcmQgPSAwLAorICAgIFNwYXJzZVRleHR1cmVSZWdpb25B
bGlnbm1lbnRNb2RlSW53YXJkID0gMSwKK307CisKK3N0cnVjdCBBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVTaXplcworeworICAgIE5TOjpVSW50ZWdlciBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplOwor
ICAgIE5TOjpVSW50ZWdlciBidWlsZFNjcmF0Y2hCdWZmZXJTaXplOworICAgIE5TOjpVSW50ZWdl
ciByZWZpdFNjcmF0Y2hCdWZmZXJTaXplOworfSBfTVRMX1BBQ0tFRDsKKworX01UTF9FTlVNKE5T
OjpVSW50ZWdlciwgQ291bnRlclNhbXBsaW5nUG9pbnQpIHsKKyAgICBDb3VudGVyU2FtcGxpbmdQ
b2ludEF0U3RhZ2VCb3VuZGFyeSA9IDAsCisgICAgQ291bnRlclNhbXBsaW5nUG9pbnRBdERyYXdC
b3VuZGFyeSA9IDEsCisgICAgQ291bnRlclNhbXBsaW5nUG9pbnRBdERpc3BhdGNoQm91bmRhcnkg
PSAyLAorICAgIENvdW50ZXJTYW1wbGluZ1BvaW50QXRUaWxlRGlzcGF0Y2hCb3VuZGFyeSA9IDMs
CisgICAgQ291bnRlclNhbXBsaW5nUG9pbnRBdEJsaXRCb3VuZGFyeSA9IDQsCit9OworCitzdHJ1
Y3QgU2l6ZUFuZEFsaWduCit7CisgICAgTlM6OlVJbnRlZ2VyIHNpemU7CisgICAgTlM6OlVJbnRl
Z2VyIGFsaWduOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgQXJndW1lbnREZXNjcmlwdG9yIDog
cHVibGljIE5TOjpDb3B5aW5nPEFyZ3VtZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgQXJndW1lbnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQXJn
dW1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIEFyZ3Vt
ZW50RGVzY3JpcHRvciogYXJndW1lbnREZXNjcmlwdG9yKCk7CisKKyAgICBNVEw6OkRhdGFUeXBl
ICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldERhdGFUeXBlKE1UTDo6RGF0YVR5cGUgZGF0YVR5cGUpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgaW5kZXgoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmRleChOUzo6VUludGVnZXIg
aW5kZXgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgYXJyYXlMZW5n
dGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBcnJh
eUxlbmd0aChOUzo6VUludGVnZXIgYXJyYXlMZW5ndGgpOworCisgICAgTVRMOjpBcmd1bWVudEFj
Y2VzcyAgICAgICAgICAgICAgYWNjZXNzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0QWNjZXNzKE1UTDo6QXJndW1lbnRBY2Nlc3MgYWNjZXNzKTsKKwor
ICAgIE1UTDo6VGV4dHVyZVR5cGUgICAgICAgICAgICAgICAgIHRleHR1cmVUeXBlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGV4dHVyZVR5cGUoTVRM
OjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICBjb25zdGFudEJsb2NrQWxpZ25tZW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnRCbG9ja0FsaWdubWVudChOUzo6VUlu
dGVnZXIgY29uc3RhbnRCbG9ja0FsaWdubWVudCk7Cit9OworCit1c2luZyBEZXZpY2VOb3RpZmlj
YXRpb25OYW1lID0gTlM6OlN0cmluZyo7CisKK19NVExfQ09OU1QoRGV2aWNlTm90aWZpY2F0aW9u
TmFtZSwgRGV2aWNlV2FzQWRkZWROb3RpZmljYXRpb24pOworCitfTVRMX0NPTlNUKERldmljZU5v
dGlmaWNhdGlvbk5hbWUsIERldmljZVJlbW92YWxSZXF1ZXN0ZWROb3RpZmljYXRpb24pOworCitf
TVRMX0NPTlNUKERldmljZU5vdGlmaWNhdGlvbk5hbWUsIERldmljZVdhc1JlbW92ZWROb3RpZmlj
YXRpb24pOworCit1c2luZyBEZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyQmxvY2sgPSB2b2lkIChe
KShjbGFzcyBEZXZpY2UqIHBEZXZpY2UsIERldmljZU5vdGlmaWNhdGlvbk5hbWUgbm90aWZ5TmFt
ZSk7CisKK3VzaW5nIERldmljZU5vdGlmaWNhdGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0ZDo6ZnVu
Y3Rpb248dm9pZChjbGFzcyBEZXZpY2UqIHBEZXZpY2UsIERldmljZU5vdGlmaWNhdGlvbk5hbWUg
bm90aWZ5TmFtZSk+OworCit1c2luZyBBdXRvcmVsZWFzZWRDb21wdXRlUGlwZWxpbmVSZWZsZWN0
aW9uID0gY2xhc3MgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbio7CisKK3VzaW5nIEF1dG9yZWxl
YXNlZFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiA9IGNsYXNzIFJlbmRlclBpcGVsaW5lUmVmbGVj
dGlvbio7CisKK3VzaW5nIE5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlciA9IHZvaWQgKF4pKGNs
YXNzIExpYnJhcnkqLCBOUzo6RXJyb3IqKTsKKwordXNpbmcgTmV3TGlicmFyeUNvbXBsZXRpb25I
YW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgTGlicmFyeSosIE5TOjpF
cnJvciopPjsKKwordXNpbmcgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVy
ID0gdm9pZCAoXikoY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSosIE5TOjpFcnJvciopOworCit1
c2luZyBOZXdSZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0
ZDo6ZnVuY3Rpb248dm9pZChjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiwgTlM6OkVycm9yKik+
OworCit1c2luZyBOZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9u
SGFuZGxlciA9IHZvaWQgKF4pKGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqLCBjbGFzcyBSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb24qLCBOUzo6RXJyb3IqKTsKKwordXNpbmcgTmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0ZDo6
ZnVuY3Rpb248dm9pZChjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiwgY2xhc3MgUmVuZGVyUGlw
ZWxpbmVSZWZsZWN0aW9uKiwgTlM6OkVycm9yKik+OworCit1c2luZyBOZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyID0gdm9pZCAoXikoY2xhc3MgQ29tcHV0ZVBpcGVsaW5l
U3RhdGUqLCBOUzo6RXJyb3IqKTsKKwordXNpbmcgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21w
bGV0aW9uSGFuZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNsYXNzIENvbXB1dGVQ
aXBlbGluZVN0YXRlKiwgTlM6OkVycm9yKik+OworCit1c2luZyBOZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSB2b2lkICheKShjbGFzcyBDb21w
dXRlUGlwZWxpbmVTdGF0ZSosIGNsYXNzIENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qLCBOUzo6
RXJyb3IqKTsKKwordXNpbmcgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNv
bXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgQ29tcHV0
ZVBpcGVsaW5lU3RhdGUqLCBjbGFzcyBDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiwgTlM6OkVy
cm9yKik+OworCit1c2luZyBUaW1lc3RhbXAgPSBzdGQ6OnVpbnQ2NF90OworCitNVEw6OkRldmlj
ZSogQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOworCitOUzo6QXJyYXkqICAgQ29weUFsbERl
dmljZXMoKTsKKworTlM6OkFycmF5KiAgIENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKE5TOjpP
YmplY3QqKiBwT3V0T2JzZXJ2ZXIsIERldmljZU5vdGlmaWNhdGlvbkhhbmRsZXJCbG9jayBoYW5k
bGVyKTsKKworTlM6OkFycmF5KiAgIENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKE5TOjpPYmpl
Y3QqKiBwT3V0T2JzZXJ2ZXIsIGNvbnN0IERldmljZU5vdGlmaWNhdGlvbkhhbmRsZXJGdW5jdGlv
biYgaGFuZGxlcik7CisKK3ZvaWQgICAgICAgICBSZW1vdmVEZXZpY2VPYnNlcnZlcihjb25zdCBO
Uzo6T2JqZWN0KiBwT2JzZXJ2ZXIpOworCitjbGFzcyBEZXZpY2UgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPERldmljZT4KK3sKK3B1YmxpYzoKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogcFNvdXJjZSwgY29uc3QgY2xhc3Mg
Q29tcGlsZU9wdGlvbnMqIHBPcHRpb25zLCBjb25zdCBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRs
ZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IGNsYXNzIFN0aXRjaGVkTGlicmFyeURlc2Ny
aXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxl
ckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3QgTmV3UmVuZGVyUGlwZWxpbmVTdGF0
ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25z
dCBjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBQaXBlbGluZU9w
dGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25D
b21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3Qg
Y2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIFBpcGVsaW5l
T3B0aW9uIG9wdGlvbnMsIGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlv
bkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29u
c3QgY2xhc3MgRnVuY3Rpb24qIHBGdW5jdGlvbiwgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNv
bnN0IGNsYXNzIEZ1bmN0aW9uKiBwRnVuY3Rpb24sIFBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNv
bnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxl
ckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIENvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBj
b25zdCBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRs
ZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpc0hlYWRsZXNzKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAg
ICAgICAgICAgICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIHVpbnQ2NF90ICAgICAgICAgICAg
ICAgICAgICAgICAgcmVnaXN0cnlJRCgpIGNvbnN0OworCisgICAgTVRMOjpTaXplICAgICAgICAg
ICAgICAgICAgICAgICBtYXhUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93UG93ZXIoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGxlc3MoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZhYmxlKCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1VuaWZpZWRNZW1vcnkoKSBjb25zdDsK
KworICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgcmVjb21tZW5kZWRNYXhXb3Jr
aW5nU2V0U2l6ZSgpIGNvbnN0OworCisgICAgTVRMOjpEZXZpY2VMb2NhdGlvbiAgICAgICAgICAg
ICBsb2NhdGlvbigpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbk51bWJlcigpIGNvbnN0OworCisgICAgdWludDY0X3QgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhUcmFuc2ZlclJhdGUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVwdGgyNFN0ZW5jaWw4UGl4ZWxGb3JtYXRTdXBwb3J0ZWQoKSBjb25z
dDsKKworICAgIE1UTDo6UmVhZFdyaXRlVGV4dHVyZVRpZXIgICAgICAgcmVhZFdyaXRlVGV4dHVy
ZVN1cHBvcnQoKSBjb25zdDsKKworICAgIE1UTDo6QXJndW1lbnRCdWZmZXJzVGllciAgICAgICAg
YXJndW1lbnRCdWZmZXJzU3VwcG9ydCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByYXN0ZXJPcmRlckdyb3Vwc1N1cHBvcnRlZCgpIGNvbnN0OworCisgICAg
Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0czMyQml0RmxvYXRGaWx0ZXJp
bmcoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9y
dHMzMkJpdE1TQUEoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3VwcG9ydHNRdWVyeVRleHR1cmVMT0QoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3VwcG9ydHNCQ1RleHR1cmVDb21wcmVzc2lvbigpIGNvbnN0Owor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1B1bGxNb2RlbElu
dGVycG9sYXRpb24oKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmFyeWNlbnRyaWNDb29yZHNTdXBwb3J0ZWQoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNTaGFkZXJCYXJ5Y2VudHJpY0Nvb3JkaW5hdGVz
KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRB
bGxvY2F0ZWRTaXplKCkgY29uc3Q7CisKKyAgICBjbGFzcyBDb21tYW5kUXVldWUqICAgICAgICAg
ICAgIG5ld0NvbW1hbmRRdWV1ZSgpOworCisgICAgY2xhc3MgQ29tbWFuZFF1ZXVlKiAgICAgICAg
ICAgICBuZXdDb21tYW5kUXVldWUoTlM6OlVJbnRlZ2VyIG1heENvbW1hbmRCdWZmZXJDb3VudCk7
CisKKyAgICBNVEw6OlNpemVBbmRBbGlnbiAgICAgICAgICAgICAgIGhlYXBUZXh0dXJlU2l6ZUFu
ZEFsaWduKGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjKTsKKworICAgIE1UTDo6
U2l6ZUFuZEFsaWduICAgICAgICAgICAgICAgaGVhcEJ1ZmZlclNpemVBbmRBbGlnbihOUzo6VUlu
dGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zKTsKKworICAgIGNsYXNz
IEhlYXAqICAgICAgICAgICAgICAgICAgICAgbmV3SGVhcChjb25zdCBjbGFzcyBIZWFwRGVzY3Jp
cHRvciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAg
IG5ld0J1ZmZlcihOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRp
b25zKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgbmV3QnVmZmVyKGNv
bnN0IHZvaWQqIHBvaW50ZXIsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRp
b25zIG9wdGlvbnMpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICBuZXdC
dWZmZXIoY29uc3Qgdm9pZCogcG9pbnRlciwgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNv
dXJjZU9wdGlvbnMgb3B0aW9ucywgY29uc3Qgdm9pZCAoXmRlYWxsb2NhdG9yKSh2b2lkKiwgTlM6
OlVJbnRlZ2VyKSk7CisKKyAgICBjbGFzcyBEZXB0aFN0ZW5jaWxTdGF0ZSogICAgICAgIG5ld0Rl
cHRoU3RlbmNpbFN0YXRlKGNvbnN0IGNsYXNzIERlcHRoU3RlbmNpbERlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgICAgICAgICBuZXdUZXh0dXJl
KGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNz
IFRleHR1cmUqICAgICAgICAgICAgICAgICAgbmV3VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJl
RGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgSU9TdXJmYWNlUmVmIGlvc3VyZmFjZSwgTlM6
OlVJbnRlZ2VyIHBsYW5lKTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICAgICAg
bmV3U2hhcmVkVGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRv
cik7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgICAgIG5ld1NoYXJlZFRleHR1
cmUoY29uc3QgY2xhc3MgU2hhcmVkVGV4dHVyZUhhbmRsZSogc2hhcmVkSGFuZGxlKTsKKworICAg
IGNsYXNzIFNhbXBsZXJTdGF0ZSogICAgICAgICAgICAgbmV3U2FtcGxlclN0YXRlKGNvbnN0IGNs
YXNzIFNhbXBsZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNzIExpYnJhcnkq
ICAgICAgICAgICAgICAgICAgbmV3RGVmYXVsdExpYnJhcnkoKTsKKworICAgIGNsYXNzIExpYnJh
cnkqICAgICAgICAgICAgICAgICAgbmV3RGVmYXVsdExpYnJhcnkoY29uc3QgTlM6OkJ1bmRsZSog
YnVuZGxlLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAg
ICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogZmlsZXBhdGgsIE5TOjpFcnJv
cioqIGVycm9yKTsKKworICAgIGNsYXNzIExpYnJhcnkqICAgICAgICAgICAgICAgICAgbmV3TGli
cmFyeShjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGNsYXNz
IExpYnJhcnkqICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBkaXNwYXRjaF9kYXRh
X3QgZGF0YSwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgY2xhc3MgTGlicmFyeSogICAgICAg
ICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IE5TOjpTdHJpbmcqIHNvdXJjZSwgY29uc3QgY2xh
c3MgQ29tcGlsZU9wdGlvbnMqIG9wdGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBOUzo6U3RyaW5n
KiBzb3VyY2UsIGNvbnN0IGNsYXNzIENvbXBpbGVPcHRpb25zKiBvcHRpb25zLCBjb25zdCBNVEw6
Ok5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBj
bGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3QgY2xhc3MgU3Rp
dGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IGNs
YXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IE1UTDo6TmV3
TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGNsYXNz
IFJlbmRlclBpcGVsaW5lU3RhdGUqICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBj
bGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVy
cm9yKTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqICAgICAgbmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0
b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRS
ZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVuZGVyUGlwZWxpbmVT
dGF0ZShjb25zdCBjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNv
bnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVu
ZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpOZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogICAgIG5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE5T
OjpFcnJvcioqIGVycm9yKTsKKworICAgIGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiAgICAg
bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgRnVuY3Rpb24qIGNvbXB1dGVGdW5j
dGlvbiwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6OkF1dG9yZWxlYXNl
ZENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29tcHV0ZVBpcGVs
aW5lU3RhdGUoY29uc3QgY2xhc3MgRnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbiwgY29uc3QgTVRM
OjpOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5k
bGVyKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29tcHV0ZVBp
cGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgRnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbiwgTVRMOjpQ
aXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6Ok5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
V2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAg
ICBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
KGNvbnN0IGNsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6
UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRDb21wdXRlUGlw
ZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNv
bnN0IGNsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UGlw
ZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdp
dGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAg
Y2xhc3MgRmVuY2UqICAgICAgICAgICAgICAgICAgICBuZXdGZW5jZSgpOworCisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0ZlYXR1cmVTZXQoTVRMOjpGZWF0dXJl
U2V0IGZlYXR1cmVTZXQpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dXBwb3J0c0ZhbWlseShNVEw6OkdQVUZhbWlseSBncHVGYW1pbHkpOworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudChOUzo6VUlu
dGVnZXIgc2FtcGxlQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICBtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxG
b3JtYXQgZm9ybWF0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWlu
aW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0
IGZvcm1hdCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiAgICAgIG5ld1JlbmRl
clBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciog
ZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6OkF1dG9y
ZWxlYXNlZFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgTlM6OkVycm9yKiog
ZXJyb3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZW5kZXJQ
aXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpOZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIG1heFRocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgIG1heEFyZ3VtZW50QnVmZmVyU2FtcGxlckNvdW50KCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1tYWJsZVNhbXBsZVBvc2l0aW9u
c1N1cHBvcnRlZCgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZXREZWZhdWx0U2FtcGxlUG9zaXRpb25zKE1UTDo6U2FtcGxlUG9zaXRpb24qIHBvc2l0aW9u
cywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlciogICAg
ICAgICAgbmV3QXJndW1lbnRFbmNvZGVyKGNvbnN0IE5TOjpBcnJheSogYXJndW1lbnRzKTsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNSYXN0ZXJpemF0aW9u
UmF0ZU1hcChOUzo6VUludGVnZXIgbGF5ZXJDb3VudCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0
aW9uUmF0ZU1hcCogICAgIG5ld1Jhc3Rlcml6YXRpb25SYXRlTWFwKGNvbnN0IGNsYXNzIFJhc3Rl
cml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBJbmRp
cmVjdENvbW1hbmRCdWZmZXIqICAgIG5ld0luZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBjbGFz
cyBJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6VUludGVn
ZXIgbWF4Q291bnQsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpOworCisgICAgY2xhc3Mg
RXZlbnQqICAgICAgICAgICAgICAgICAgICBuZXdFdmVudCgpOworCisgICAgY2xhc3MgU2hhcmVk
RXZlbnQqICAgICAgICAgICAgICBuZXdTaGFyZWRFdmVudCgpOworCisgICAgY2xhc3MgU2hhcmVk
RXZlbnQqICAgICAgICAgICAgICBuZXdTaGFyZWRFdmVudChjb25zdCBjbGFzcyBTaGFyZWRFdmVu
dEhhbmRsZSogc2hhcmVkRXZlbnRIYW5kbGUpOworCisgICAgdWludDY0X3QgICAgICAgICAgICAg
ICAgICAgICAgICBwZWVyR3JvdXBJRCgpIGNvbnN0OworCisgICAgdWludDMyX3QgICAgICAgICAg
ICAgICAgICAgICAgICBwZWVySW5kZXgoKSBjb25zdDsKKworICAgIHVpbnQzMl90ICAgICAgICAg
ICAgICAgICAgICAgICAgcGVlckNvdW50KCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemUgICAgICAg
ICAgICAgICAgICAgICAgIHNwYXJzZVRpbGVTaXplKE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5
cGUsIE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciBzYW1wbGVDb3Vu
dCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIHNwYXJzZVRpbGVTaXpl
SW5CeXRlcygpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zKGNvbnN0IE1UTDo6UmVnaW9uKiBwaXhlbFJlZ2lvbnMs
IE1UTDo6UmVnaW9uKiB0aWxlUmVnaW9ucywgTVRMOjpTaXplIHRpbGVTaXplLCBNVEw6OlNwYXJz
ZVRleHR1cmVSZWdpb25BbGlnbm1lbnRNb2RlIG1vZGUsIE5TOjpVSW50ZWdlciBudW1SZWdpb25z
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFNwYXJzZVRp
bGVSZWdpb25zKGNvbnN0IE1UTDo6UmVnaW9uKiB0aWxlUmVnaW9ucywgTVRMOjpSZWdpb24qIHBp
eGVsUmVnaW9ucywgTVRMOjpTaXplIHRpbGVTaXplLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucyk7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIG1heEJ1ZmZlckxlbmd0aCgp
IGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyU2V0
cygpIGNvbnN0OworCisgICAgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogICAgICBuZXdDb3Vu
dGVyU2FtcGxlQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNhbXBsZVRpbWVzdGFtcHMoTVRMOjpUaW1lc3RhbXAqIGNwdVRpbWVz
dGFtcCwgTVRMOjpUaW1lc3RhbXAqIGdwdVRpbWVzdGFtcCk7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzQ291bnRlclNhbXBsaW5nKE1UTDo6Q291bnRlclNh
bXBsaW5nUG9pbnQgc2FtcGxpbmdQb2ludCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1cHBvcnRzVmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KE5TOjpVSW50ZWdlciBj
b3VudCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRHlu
YW1pY0xpYnJhcmllcygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdXBwb3J0c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMoKSBjb25zdDsKKworICAgIGNsYXNz
IER5bmFtaWNMaWJyYXJ5KiAgICAgICAgICAgbmV3RHluYW1pY0xpYnJhcnkoY29uc3QgY2xhc3Mg
TGlicmFyeSogbGlicmFyeSwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgY2xhc3MgRHluYW1p
Y0xpYnJhcnkqICAgICAgICAgICBuZXdEeW5hbWljTGlicmFyeShjb25zdCBOUzo6VVJMKiB1cmws
IE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGNsYXNzIEJpbmFyeUFyY2hpdmUqICAgICAgICAg
ICAgbmV3QmluYXJ5QXJjaGl2ZShjb25zdCBjbGFzcyBCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciog
ZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdXBwb3J0c1JheXRyYWNpbmcoKSBjb25zdDsKKworICAgIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMgYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMoY29uc3Qg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcik7CisKKyAg
ICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqICAgIG5ld0FjY2VsZXJhdGlvblN0cnVjdHVy
ZShOUzo6VUludGVnZXIgc2l6ZSk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUq
ICAgIG5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzKCkgY29uc3Q7CisKKyAgICBib29s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVyc0Zyb21S
ZW5kZXIoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw
cG9ydHNSYXl0cmFjaW5nRnJvbVJlbmRlcigpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0c1ByaW1pdGl2ZU1vdGlvbkJsdXIoKSBjb25zdDsKK307
CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1l
bnREZXNjcmlwdG9yKiBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcj4oX01UTF9QUklW
QVRFX0NMUyhNVExBcmd1bWVudERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvciogTVRMOjpBcmd1bWVudERlc2NyaXB0
b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QXJndW1lbnRE
ZXNjcmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhcmd1bWVudERlc2NyaXB0b3IK
K19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yKiBNVEw6OkFyZ3VtZW50RGVzY3Jp
cHRvcjo6YXJndW1lbnREZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMQXJndW1l
bnREZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChhcmd1bWVudERlc2NyaXB0b3IpKTsKK30K
KworLy8gcHJvcGVydHk6IGRhdGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6
QXJndW1lbnREZXNjcmlwdG9yOjpkYXRhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChkYXRh
VHlwZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjpz
ZXREYXRhVHlwZShNVEw6OkRhdGFUeXBlIGRhdGFUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREYXRhVHlwZV8pLCBkYXRhVHlw
ZSk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6QXJndW1lbnREZXNjcmlwdG9yOjppbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OnNldElu
ZGV4KE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhfKSwgaW5kZXgpOworfQorCisvLyBwcm9w
ZXJ0eTogYXJyYXlMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50
RGVzY3JpcHRvcjo6YXJyYXlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcnJheUxlbmd0
aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjpzZXRB
cnJheUxlbmd0aChOUzo6VUludGVnZXIgYXJyYXlMZW5ndGgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFycmF5TGVuZ3RoXyksIGFy
cmF5TGVuZ3RoKTsKK30KKworLy8gcHJvcGVydHk6IGFjY2VzcworX01UTF9JTkxJTkUgTVRMOjpB
cmd1bWVudEFjY2VzcyBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6YWNjZXNzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGFjY2VzcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QXJndW1lbnREZXNjcmlwdG9yOjpzZXRBY2Nlc3MoTVRMOjpBcmd1bWVudEFjY2VzcyBhY2Nlc3Mp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEFjY2Vzc18pLCBhY2Nlc3MpOworfQorCisvLyBwcm9wZXJ0eTogdGV4dHVyZVR5cGUKK19N
VExfSU5MSU5FIE1UTDo6VGV4dHVyZVR5cGUgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OnRleHR1
cmVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRl
eHR1cmVUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVUeXBlKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OnNldFRleHR1cmVUeXBlKE1U
TDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVUeXBlXyksIHRleHR1cmVUeXBl
KTsKK30KKworLy8gcHJvcGVydHk6IGNvbnN0YW50QmxvY2tBbGlnbm1lbnQKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6Y29uc3RhbnRCbG9ja0FsaWdu
bWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbnN0YW50QmxvY2tBbGlnbm1lbnQpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0Q29uc3RhbnRC
bG9ja0FsaWdubWVudChOUzo6VUludGVnZXIgY29uc3RhbnRCbG9ja0FsaWdubWVudCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29u
c3RhbnRCbG9ja0FsaWdubWVudF8pLCBjb25zdGFudEJsb2NrQWxpZ25tZW50KTsKK30KKworI2lm
IGRlZmluZWQoTVRMX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04pCisKK2V4dGVybiAiQyIgTVRMOjpE
ZXZpY2UqIE1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKTsKKworZXh0ZXJuICJDIiBOUzo6
QXJyYXkqICAgTVRMQ29weUFsbERldmljZXMoKTsKKworZXh0ZXJuICJDIiBOUzo6QXJyYXkqICAg
TVRMQ29weUFsbERldmljZXNXaXRoT2JzZXJ2ZXIoTlM6Ok9iamVjdCoqLCBNVEw6OkRldmljZU5v
dGlmaWNhdGlvbkhhbmRsZXJCbG9jayk7CisKK2V4dGVybiAiQyIgdm9pZCAgICAgICAgIE1UTFJl
bW92ZURldmljZU9ic2VydmVyKGNvbnN0IE5TOjpPYmplY3QqKTsKKworI2luY2x1ZGUgPFRhcmdl
dENvbmRpdGlvbmFscy5oPgorCitNVEw6OkRldmljZSogTVRMOjpDcmVhdGVTeXN0ZW1EZWZhdWx0
RGV2aWNlKCkKK3sKKyAgICByZXR1cm4gOjpNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCk7
Cit9CisKK05TOjpBcnJheSogTVRMOjpDb3B5QWxsRGV2aWNlcygpCit7CisjaWYgVEFSR0VUX09T
X09TWAorICAgIHJldHVybiA6Ok1UTENvcHlBbGxEZXZpY2VzKCk7CisjZWxzZQorICAgIHJldHVy
biBudWxscHRyOworI2VuZGlmIC8vIFRBUkdFVF9PU19PU1gKK30KKworTlM6OkFycmF5KiBNVEw6
OkNvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKE5TOjpPYmplY3QqKiBwT3V0T2JzZXJ2ZXIsIERl
dmljZU5vdGlmaWNhdGlvbkhhbmRsZXJCbG9jayBoYW5kbGVyKQoreworI2lmIFRBUkdFVF9PU19P
U1gKKyAgICByZXR1cm4gOjpNVExDb3B5QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihwT3V0T2JzZXJ2
ZXIsIGhhbmRsZXIpOworI2Vsc2UKKyAgICAodm9pZClwT3V0T2JzZXJ2ZXI7CisgICAgKHZvaWQp
aGFuZGxlcjsKKworICAgIHJldHVybiBudWxscHRyOworI2VuZGlmIC8vIFRBUkdFVF9PU19PU1gK
K30KKworTlM6OkFycmF5KiBNVEw6OkNvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKE5TOjpPYmpl
Y3QqKiBwT3V0T2JzZXJ2ZXIsIGNvbnN0IERldmljZU5vdGlmaWNhdGlvbkhhbmRsZXJGdW5jdGlv
biYgaGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIERldmljZU5vdGlmaWNhdGlvbkhhbmRsZXJGdW5j
dGlvbiBmdW5jdGlvbiA9IGhhbmRsZXI7CisKKyAgICByZXR1cm4gQ29weUFsbERldmljZXNXaXRo
T2JzZXJ2ZXIocE91dE9ic2VydmVyLCBeKERldmljZSogcERldmljZSwgRGV2aWNlTm90aWZpY2F0
aW9uTmFtZSBwTm90aWZpY2F0aW9uTmFtZSkgeyBmdW5jdGlvbihwRGV2aWNlLCBwTm90aWZpY2F0
aW9uTmFtZSk7IH0pOworfQorCit2b2lkIE1UTDo6UmVtb3ZlRGV2aWNlT2JzZXJ2ZXIoY29uc3Qg
TlM6Ok9iamVjdCogcE9ic2VydmVyKQoreworI2lmIFRBUkdFVF9PU19PU1gKKyAgICA6Ok1UTFJl
bW92ZURldmljZU9ic2VydmVyKHBPYnNlcnZlcik7CisjZW5kaWYgLy8gVEFSR0VUX09TX09TWAor
fQorCisjZW5kaWYgLy8gTVRMX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBOUzo6U3RyaW5nKiBwU291cmNlLCBj
b25zdCBDb21waWxlT3B0aW9ucyogcE9wdGlvbnMsIGNvbnN0IE5ld0xpYnJhcnlDb21wbGV0aW9u
SGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld0xp
YnJhcnlDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBj
b21wbGV0aW9uSGFuZGxlcjsKKworICAgIG5ld0xpYnJhcnkocFNvdXJjZSwgcE9wdGlvbnMsIF4o
TGlicmFyeSogcExpYnJhcnksIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhh
bmRsZXIocExpYnJhcnksIHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IGNsYXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3Iq
IHBEZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlckZ1bmN0
aW9uJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld0xpYnJhcnlDb21wbGV0
aW9uSGFuZGxlckZ1bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFu
ZGxlcjsKKworICAgIG5ld0xpYnJhcnkocERlc2NyaXB0b3IsIF4oTGlicmFyeSogcExpYnJhcnks
IE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIocExpYnJhcnksIHBF
cnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQ
aXBlbGluZVN0YXRlKGNvbnN0IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3Is
IGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVD
b21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0
aW9uSGFuZGxlcjsKKworICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUocERlc2NyaXB0b3IsIF4o
UmVuZGVyUGlwZWxpbmVTdGF0ZSogcFBpcGVsaW5lU3RhdGUsIE5TOjpFcnJvciogcEVycm9yKSB7
IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIocFBpcGVsaW5lU3RhdGUsIHBFcnJvcik7IH0pOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNv
bnN0IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIFBpcGVsaW5lT3B0aW9u
IG9wdGlvbnMsIGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBs
ZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sg
TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5j
dGlvbiBibG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBu
ZXdSZW5kZXJQaXBlbGluZVN0YXRlKHBEZXNjcmlwdG9yLCBvcHRpb25zLCBeKFJlbmRlclBpcGVs
aW5lU3RhdGUqIHBQaXBlbGluZVN0YXRlLCBjbGFzcyBSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24q
IHBSZWZsZWN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVy
KHBQaXBlbGluZVN0YXRlLCBwUmVmbGVjdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgVGlsZVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIFBpcGVsaW5lT3B0aW9uIG9wdGlv
bnMsIGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25I
YW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sgTmV3UmVu
ZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBi
bG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlKHBEZXNjcmlwdG9yLCBvcHRpb25zLCBeKFJlbmRlclBpcGVsaW5lU3Rh
dGUqIHBQaXBlbGluZVN0YXRlLCBjbGFzcyBSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qIHBSZWZs
ZWN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBQaXBl
bGluZVN0YXRlLCBwUmVmbGVjdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0
aW9uKiBwRnVuY3Rpb24sIGNvbnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhh
bmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBOZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9u
SGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUocEZ1bmN0aW9uLCBeKENvbXB1dGVQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgTlM6
OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwg
cEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlKGNvbnN0IEZ1bmN0aW9uKiBwRnVuY3Rpb24sIFBpcGVsaW5lT3B0aW9u
IG9wdGlvbnMsIGNvbnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21w
bGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2Nr
IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1
bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKKworICAg
IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKHBGdW5jdGlvbiwgb3B0aW9ucywgXihDb21wdXRlUGlw
ZWxpbmVTdGF0ZSogcFBpcGVsaW5lU3RhdGUsIENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIHBS
ZWZsZWN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBQ
aXBlbGluZVN0YXRlLCBwUmVmbGVjdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IENvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBj
b25zdCBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRs
ZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBOZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9j
a0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZShwRGVzY3JpcHRvciwgb3B0aW9ucywgXihDb21wdXRlUGlwZWxpbmVTdGF0
ZSogcFBpcGVsaW5lU3RhdGUsIENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIHBSZWZsZWN0aW9u
LCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBQaXBlbGluZVN0
YXRlLCBwUmVmbGVjdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpEZXZpY2U6OmlzSGVhZGxlc3MoKSBjb25zdAoreworICAgIHJldHVybiBoZWFkbGVzcygpOwor
fQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpEZXZp
Y2U6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpT
dHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6
IHJlZ2lzdHJ5SUQKK19NVExfSU5MSU5FIHVpbnQ2NF90IE1UTDo6RGV2aWNlOjpyZWdpc3RyeUlE
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50NjRfdD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChyZWdpc3RyeUlEKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhU
aHJlYWRzUGVyVGhyZWFkZ3JvdXAKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OkRldmljZTo6
bWF4VGhyZWFkc1BlclRocmVhZGdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlNpemU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VGhyZWFkc1Bl
clRocmVhZGdyb3VwKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsb3dQb3dlcgorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkRldmljZTo6bG93UG93ZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNMb3dQb3dlcikpOwor
fQorCisvLyBwcm9wZXJ0eTogaGVhZGxlc3MKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6
OmhlYWRsZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzSGVhZGxlc3MpKTsKK30KKworLy8gcHJvcGVydHk6
IHJlbW92YWJsZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6cmVtb3ZhYmxlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGlzUmVtb3ZhYmxlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBoYXNVbmlmaWVkTWVt
b3J5CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpoYXNVbmlmaWVkTWVtb3J5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGhhc1VuaWZpZWRNZW1vcnkpKTsKK30KKworLy8gcHJvcGVydHk6IHJlY29tbWVu
ZGVkTWF4V29ya2luZ1NldFNpemUKK19NVExfSU5MSU5FIHVpbnQ2NF90IE1UTDo6RGV2aWNlOjpy
ZWNvbW1lbmRlZE1heFdvcmtpbmdTZXRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTx1aW50NjRfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZWNvbW1lbmRl
ZE1heFdvcmtpbmdTZXRTaXplKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsb2NhdGlvbgorX01UTF9J
TkxJTkUgTVRMOjpEZXZpY2VMb2NhdGlvbiBNVEw6OkRldmljZTo6bG9jYXRpb24oKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlTG9jYXRpb24+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobG9jYXRpb24pKTsKK30KKworLy8gcHJvcGVydHk6IGxvY2F0
aW9uTnVtYmVyCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpEZXZpY2U6OmxvY2F0aW9u
TnVtYmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobG9jYXRpb25OdW1iZXIpKTsKK30KKworLy8g
cHJvcGVydHk6IG1heFRyYW5zZmVyUmF0ZQorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpEZXZp
Y2U6Om1heFRyYW5zZmVyUmF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dWludDY0X3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VHJhbnNmZXJSYXRlKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBkZXB0aDI0U3RlbmNpbDhQaXhlbEZvcm1hdFN1cHBvcnRlZAor
X01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6ZGVwdGgyNFN0ZW5jaWw4UGl4ZWxGb3JtYXRT
dXBwb3J0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxi
b29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzRGVwdGgyNFN0ZW5jaWw4UGl4ZWxGb3JtYXRT
dXBwb3J0ZWQpKTsKK30KKworLy8gcHJvcGVydHk6IHJlYWRXcml0ZVRleHR1cmVTdXBwb3J0Citf
TVRMX0lOTElORSBNVEw6OlJlYWRXcml0ZVRleHR1cmVUaWVyIE1UTDo6RGV2aWNlOjpyZWFkV3Jp
dGVUZXh0dXJlU3VwcG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpSZWFkV3JpdGVUZXh0dXJlVGllcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZWFk
V3JpdGVUZXh0dXJlU3VwcG9ydCkpOworfQorCisvLyBwcm9wZXJ0eTogYXJndW1lbnRCdWZmZXJz
U3VwcG9ydAorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEJ1ZmZlcnNUaWVyIE1UTDo6RGV2aWNl
Ojphcmd1bWVudEJ1ZmZlcnNTdXBwb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QnVmZmVyc1RpZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYXJndW1lbnRCdWZmZXJzU3VwcG9ydCkpOworfQorCisvLyBwcm9wZXJ0eTogcmFzdGVyT3Jk
ZXJHcm91cHNTdXBwb3J0ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnJhc3Rlck9y
ZGVyR3JvdXBzU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcmVSYXN0ZXJPcmRlckdyb3Vw
c1N1cHBvcnRlZCkpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVy
aW5nCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0czMyQml0RmxvYXRGaWx0
ZXJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzMzJCaXRGbG9hdEZpbHRlcmluZykpOwor
fQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHMzMkJpdE1TQUEKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpEZXZpY2U6OnN1cHBvcnRzMzJCaXRNU0FBKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0czMy
Qml0TVNBQSkpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNRdWVyeVRleHR1cmVMT0QKK19N
VExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUXVlcnlUZXh0dXJlTE9EKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCkpOworfQorCisvLyBwcm9wZXJ0
eTogc3VwcG9ydHNCQ1RleHR1cmVDb21wcmVzc2lvbgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRl
dmljZTo6c3VwcG9ydHNCQ1RleHR1cmVDb21wcmVzc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3Vw
cG9ydHNCQ1RleHR1cmVDb21wcmVzc2lvbikpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNQ
dWxsTW9kZWxJbnRlcnBvbGF0aW9uCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBw
b3J0c1B1bGxNb2RlbEludGVycG9sYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzUHVs
bE1vZGVsSW50ZXJwb2xhdGlvbikpOworfQorCisvLyBwcm9wZXJ0eTogYmFyeWNlbnRyaWNDb29y
ZHNTdXBwb3J0ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OmJhcnljZW50cmljQ29v
cmRzU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNh
ZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcmVCYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBv
cnRlZCkpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNTaGFkZXJCYXJ5Y2VudHJpY0Nvb3Jk
aW5hdGVzCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c1NoYWRlckJhcnlj
ZW50cmljQ29vcmRpbmF0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzU2hhZGVyQmFyeWNl
bnRyaWNDb29yZGluYXRlcykpOworfQorCisvLyBwcm9wZXJ0eTogY3VycmVudEFsbG9jYXRlZFNp
emUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6Y3VycmVudEFsbG9jYXRl
ZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjdXJyZW50QWxsb2NhdGVkU2l6ZSkpOworfQor
CisvLyBtZXRob2Q6IG5ld0NvbW1hbmRRdWV1ZQorX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kUXVl
dWUqIE1UTDo6RGV2aWNlOjpuZXdDb21tYW5kUXVldWUoKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZFF1ZXVlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdDb21tYW5kUXVldWUpKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21tYW5kUXVldWVXaXRoTWF4
Q29tbWFuZEJ1ZmZlckNvdW50OgorX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kUXVldWUqIE1UTDo6
RGV2aWNlOjpuZXdDb21tYW5kUXVldWUoTlM6OlVJbnRlZ2VyIG1heENvbW1hbmRCdWZmZXJDb3Vu
dCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRRdWV1ZSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tbWFuZFF1ZXVlV2l0aE1heENvbW1hbmRCdWZm
ZXJDb3VudF8pLCBtYXhDb21tYW5kQnVmZmVyQ291bnQpOworfQorCisvLyBtZXRob2Q6IGhlYXBU
ZXh0dXJlU2l6ZUFuZEFsaWduV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlNpemVB
bmRBbGlnbiBNVEw6OkRldmljZTo6aGVhcFRleHR1cmVTaXplQW5kQWxpZ24oY29uc3QgTVRMOjpU
ZXh0dXJlRGVzY3JpcHRvciogZGVzYykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlNpemVBbmRBbGlnbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChoZWFwVGV4dHVyZVNp
emVBbmRBbGlnbldpdGhEZXNjcmlwdG9yXyksIGRlc2MpOworfQorCisvLyBtZXRob2Q6IGhlYXBC
dWZmZXJTaXplQW5kQWxpZ25XaXRoTGVuZ3RoOm9wdGlvbnM6CitfTVRMX0lOTElORSBNVEw6OlNp
emVBbmRBbGlnbiBNVEw6OkRldmljZTo6aGVhcEJ1ZmZlclNpemVBbmRBbGlnbihOUzo6VUludGVn
ZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZUFuZEFsaWduPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGhlYXBCdWZmZXJTaXplQW5kQWxpZ25XaXRoTGVuZ3RoX29wdGlvbnNfKSwgbGVuZ3RoLCBv
cHRpb25zKTsKK30KKworLy8gbWV0aG9kOiBuZXdIZWFwV2l0aERlc2NyaXB0b3I6CitfTVRMX0lO
TElORSBNVEw6OkhlYXAqIE1UTDo6RGV2aWNlOjpuZXdIZWFwKGNvbnN0IE1UTDo6SGVhcERlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpIZWFwKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdIZWFwV2l0aERlc2NyaXB0b3JfKSwg
ZGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3QnVmZmVyV2l0aExlbmd0aDpvcHRpb25z
OgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6RGV2aWNlOjpuZXdCdWZmZXIoTlM6OlVJ
bnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3QnVmZmVyV2l0aExlbmd0aF9vcHRpb25zXyksIGxlbmd0aCwgb3B0aW9ucyk7Cit9CisK
Ky8vIG1ldGhvZDogbmV3QnVmZmVyV2l0aEJ5dGVzOmxlbmd0aDpvcHRpb25zOgorX01UTF9JTkxJ
TkUgTVRMOjpCdWZmZXIqIE1UTDo6RGV2aWNlOjpuZXdCdWZmZXIoY29uc3Qgdm9pZCogcG9pbnRl
ciwgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucykKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3QnVmZmVyV2l0aEJ5dGVzX2xlbmd0aF9vcHRpb25zXyksIHBvaW50ZXIs
IGxlbmd0aCwgb3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogbmV3QnVmZmVyV2l0aEJ5dGVzTm9D
b3B5Omxlbmd0aDpvcHRpb25zOmRlYWxsb2NhdG9yOgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIq
IE1UTDo6RGV2aWNlOjpuZXdCdWZmZXIoY29uc3Qgdm9pZCogcG9pbnRlciwgTlM6OlVJbnRlZ2Vy
IGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucywgY29uc3Qgdm9pZCAoXmRlYWxs
b2NhdG9yKSh2b2lkKiwgTlM6OlVJbnRlZ2VyKSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QnVmZmVyV2l0
aEJ5dGVzTm9Db3B5X2xlbmd0aF9vcHRpb25zX2RlYWxsb2NhdG9yXyksIHBvaW50ZXIsIGxlbmd0
aCwgb3B0aW9ucywgZGVhbGxvY2F0b3IpOworfQorCisvLyBtZXRob2Q6IG5ld0RlcHRoU3RlbmNp
bFN0YXRlV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OkRlcHRoU3RlbmNpbFN0YXRl
KiBNVEw6OkRldmljZTo6bmV3RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgTVRMOjpEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6RGVwdGhTdGVuY2lsU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Rl
cHRoU3RlbmNpbFN0YXRlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIG1l
dGhvZDogbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJl
KiBNVEw6OkRldmljZTo6bmV3VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVy
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yXyksIGRl
c2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjppb3N1
cmZhY2U6cGxhbmU6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6RGV2aWNlOjpuZXdU
ZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IElP
U3VyZmFjZVJlZiBpb3N1cmZhY2UsIE5TOjpVSW50ZWdlciBwbGFuZSkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcl9pb3N1cmZhY2VfcGxhbmVfKSwgZGVzY3JpcHRvciwg
aW9zdXJmYWNlLCBwbGFuZSk7Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkVGV4dHVyZVdpdGhE
ZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OkRldmljZTo6bmV3U2hh
cmVkVGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3U2hhcmVkVGV4dHVyZVdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3Ip
OworfQorCisvLyBtZXRob2Q6IG5ld1NoYXJlZFRleHR1cmVXaXRoSGFuZGxlOgorX01UTF9JTkxJ
TkUgTVRMOjpUZXh0dXJlKiBNVEw6OkRldmljZTo6bmV3U2hhcmVkVGV4dHVyZShjb25zdCBNVEw6
OlNoYXJlZFRleHR1cmVIYW5kbGUqIHNoYXJlZEhhbmRsZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1No
YXJlZFRleHR1cmVXaXRoSGFuZGxlXyksIHNoYXJlZEhhbmRsZSk7Cit9CisKKy8vIG1ldGhvZDog
bmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJT
dGF0ZSogTVRMOjpEZXZpY2U6Om5ld1NhbXBsZXJTdGF0ZShjb25zdCBNVEw6OlNhbXBsZXJEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6U2FtcGxlclN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdTYW1wbGVyU3RhdGVX
aXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdEZWZhdWx0
TGlicmFyeQorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3RGVmYXVs
dExpYnJhcnkoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlicmFy
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RGVmYXVsdExpYnJhcnkpKTsKK30KKworLy8g
bWV0aG9kOiBuZXdEZWZhdWx0TGlicmFyeVdpdGhCdW5kbGU6ZXJyb3I6CitfTVRMX0lOTElORSBN
VEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdEZWZhdWx0TGlicmFyeShjb25zdCBOUzo6QnVu
ZGxlKiBidW5kbGUsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6TGlicmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RGVmYXVs
dExpYnJhcnlXaXRoQnVuZGxlX2Vycm9yXyksIGJ1bmRsZSwgZXJyb3IpOworfQorCisvLyBtZXRo
b2Q6IG5ld0xpYnJhcnlXaXRoRmlsZTplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6TGlicmFyeSog
TVRMOjpEZXZpY2U6Om5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogZmlsZXBhdGgsIE5TOjpF
cnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGli
cmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhGaWxlX2Vycm9yXyks
IGZpbGVwYXRoLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3TGlicmFyeVdpdGhVUkw6ZXJy
b3I6CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNv
bnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdM
aWJyYXJ5V2l0aFVSTF9lcnJvcl8pLCB1cmwsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdM
aWJyYXJ5V2l0aERhdGE6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkqIE1UTDo6RGV2
aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IGRpc3BhdGNoX2RhdGFfdCBkYXRhLCBOUzo6RXJyb3IqKiBl
cnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0xpYnJhcnlXaXRoRGF0YV9lcnJvcl8pLCBkYXRhLCBl
cnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3TGlicmFyeVdpdGhTb3VyY2U6b3B0aW9uczplcnJv
cjoKK19NVExfSU5MSU5FIE1UTDo6TGlicmFyeSogTVRMOjpEZXZpY2U6Om5ld0xpYnJhcnkoY29u
c3QgTlM6OlN0cmluZyogc291cmNlLCBjb25zdCBNVEw6OkNvbXBpbGVPcHRpb25zKiBvcHRpb25z
LCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0xpYnJhcnlXaXRoU291cmNl
X29wdGlvbnNfZXJyb3JfKSwgc291cmNlLCBvcHRpb25zLCBlcnJvcik7Cit9CisKKy8vIG1ldGhv
ZDogbmV3TGlicmFyeVdpdGhTb3VyY2U6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogc291
cmNlLCBjb25zdCBNVEw6OkNvbXBpbGVPcHRpb25zKiBvcHRpb25zLCBjb25zdCBNVEw6Ok5ld0xp
YnJhcnlDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhT
b3VyY2Vfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8pLCBzb3VyY2UsIG9wdGlvbnMsIGNvbXBs
ZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVz
Y3JpcHRvcjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6TGlicmFyeSogTVRMOjpEZXZpY2U6Om5l
d0xpYnJhcnkoY29uc3QgTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
LCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0xpYnJhcnlXaXRoU3RpdGNo
ZWREZXNjcmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gbWV0aG9k
OiBuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcjpjb21wbGV0aW9uSGFuZGxlcjoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0xpYnJhcnkoY29uc3QgTVRMOjpTdGl0Y2hl
ZExpYnJhcnlEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld0xpYnJhcnlDb21w
bGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhTdGl0Y2hlZERl
c2NyaXB0b3JfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgY29tcGxldGlvbkhhbmRs
ZXIpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRv
cjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogTVRMOjpEZXZp
Y2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRl
c2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRl
V2l0aERlc2NyaXB0b3I6b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOgorX01UTF9JTkxJTkUgTVRM
OjpSZW5kZXJQaXBlbGluZVN0YXRlKiBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0
ZShjb25zdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTVRMOjpQ
aXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6OkF1dG9yZWxlYXNlZFJlbmRlclBpcGVs
aW5lUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jfb3B0
aW9uc19yZWZsZWN0aW9uX2Vycm9yXyksIGRlc2NyaXB0b3IsIG9wdGlvbnMsIHJlZmxlY3Rpb24s
IGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2Ny
aXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpu
ZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld1JlbmRlclBpcGVsaW5lU3RhdGVDb21wbGV0aW9u
SGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNj
cmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXyksIGRlc2NyaXB0b3IsIGNvbXBsZXRpb25IYW5kbGVy
KTsKK30KKworLy8gbWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6
b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6
Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IqIGRlc2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpO
ZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlv
bnNfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgb3B0aW9ucywgY29tcGxldGlvbkhh
bmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0
aW9uOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSogTVRMOjpE
ZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGNvbXB1
dGVGdW5jdGlvbiwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25fZXJyb3JfKSwgY29tcHV0ZUZ1
bmN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoRnVuY3Rpb246b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpD
b21wdXRlUGlwZWxpbmVTdGF0ZSogTVRMOjpEZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
KGNvbnN0IE1UTDo6RnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbiwgTVRMOjpQaXBlbGluZU9wdGlv
biBvcHRpb25zLCBjb25zdCBNVEw6OkF1dG9yZWxlYXNlZENvbXB1dGVQaXBlbGluZVJlZmxlY3Rp
b24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uX29wdGlvbnNfcmVmbGVj
dGlvbl9lcnJvcl8pLCBjb21wdXRlRnVuY3Rpb24sIG9wdGlvbnMsIHJlZmxlY3Rpb24sIGVycm9y
KTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpj
b21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbiwgY29u
c3QgTVRMOjpOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9jb21wbGV0aW9u
SGFuZGxlcl8pLCBjb21wdXRlRnVuY3Rpb24sIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8g
bWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpvcHRpb25zOmNvbXBs
ZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBp
cGVsaW5lU3RhdGUoY29uc3QgTVRMOjpGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBNVEw6OlBp
cGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXyks
IGNvbXB1dGVGdW5jdGlvbiwgb3B0aW9ucywgY29tcGxldGlvbkhhbmRsZXIpOworfQorCisvLyBt
ZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0aW9uczpyZWZs
ZWN0aW9uOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSogTVRM
OjpEZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBj
b25zdCBNVEw6OkF1dG9yZWxlYXNlZENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rp
b24sIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Nv
bXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jfb3B0aW9uc19yZWZsZWN0aW9uX2Vycm9y
XyksIGRlc2NyaXB0b3IsIG9wdGlvbnMsIHJlZmxlY3Rpb24sIGVycm9yKTsKK30KKworLy8gbWV0
aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6Y29tcGxl
dGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZShjb25zdCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0
b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpOZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jfb3B0aW9uc19jb21wbGV0
aW9uSGFuZGxlcl8pLCBkZXNjcmlwdG9yLCBvcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9
CisKKy8vIG1ldGhvZDogbmV3RmVuY2UKK19NVExfSU5MSU5FIE1UTDo6RmVuY2UqIE1UTDo6RGV2
aWNlOjpuZXdGZW5jZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpG
ZW5jZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RmVuY2UpKTsKK30KKworLy8gbWV0aG9k
OiBzdXBwb3J0c0ZlYXR1cmVTZXQ6CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBw
b3J0c0ZlYXR1cmVTZXQoTVRMOjpGZWF0dXJlU2V0IGZlYXR1cmVTZXQpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3Vw
cG9ydHNGZWF0dXJlU2V0XyksIGZlYXR1cmVTZXQpOworfQorCisvLyBtZXRob2Q6IHN1cHBvcnRz
RmFtaWx5OgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNGYW1pbHkoTVRM
OjpHUFVGYW1pbHkgZ3B1RmFtaWx5KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
U2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzRmFtaWx5XyksIGdwdUZh
bWlseSk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNUZXh0dXJlU2FtcGxlQ291bnQ6CitfTVRM
X0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudChOUzo6
VUludGVnZXIgc2FtcGxlQ291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VT
YWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNUZXh0dXJlU2FtcGxlQ291
bnRfKSwgc2FtcGxlQ291bnQpOworfQorCisvLyBtZXRob2Q6IG1pbmltdW1MaW5lYXJUZXh0dXJl
QWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXQ6CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpE
ZXZpY2U6Om1pbmltdW1MaW5lYXJUZXh0dXJlQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXQoTVRMOjpQ
aXhlbEZvcm1hdCBmb3JtYXQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1pbmltdW1MaW5lYXJUZXh0dXJlQWxp
Z25tZW50Rm9yUGl4ZWxGb3JtYXRfKSwgZm9ybWF0KTsKK30KKworLy8gbWV0aG9kOiBtaW5pbXVt
VGV4dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVsRm9ybWF0OgorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6RGV2aWNlOjptaW5pbXVtVGV4dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVs
Rm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgZm9ybWF0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtaW5pbXVtVGV4
dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVsRm9ybWF0XyksIGZvcm1hdCk7Cit9CisKKy8vIG1l
dGhvZDogbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVzY3JpcHRvcjpvcHRpb25zOnJl
ZmxlY3Rpb246ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqIE1U
TDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6VGlsZVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25z
LCBjb25zdCBNVEw6OkF1dG9yZWxlYXNlZFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVj
dGlvbiwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yX29wdGlvbnNfcmVmbGVjdGlvbl9l
cnJvcl8pLCBkZXNjcmlwdG9yLCBvcHRpb25zLCByZWZsZWN0aW9uLCBlcnJvcik7Cit9CisKKy8v
IG1ldGhvZDogbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVzY3JpcHRvcjpvcHRpb25z
OmNvbXBsZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3UmVu
ZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpOZXdS
ZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVzY3JpcHRvcl9vcHRp
b25zX2NvbXBsZXRpb25IYW5kbGVyXyksIGRlc2NyaXB0b3IsIG9wdGlvbnMsIGNvbXBsZXRpb25I
YW5kbGVyKTsKK30KKworLy8gcHJvcGVydHk6IG1heFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoCitf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpEZXZpY2U6Om1heFRocmVhZGdyb3VwTWVtb3J5
TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgp
KTsKK30KKworLy8gcHJvcGVydHk6IG1heEFyZ3VtZW50QnVmZmVyU2FtcGxlckNvdW50CitfTVRM
X0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpEZXZpY2U6Om1heEFyZ3VtZW50QnVmZmVyU2FtcGxl
ckNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4QXJndW1lbnRCdWZmZXJTYW1wbGVyQ291
bnQpKTsKK30KKworLy8gcHJvcGVydHk6IHByb2dyYW1tYWJsZVNhbXBsZVBvc2l0aW9uc1N1cHBv
cnRlZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6cHJvZ3JhbW1hYmxlU2FtcGxlUG9z
aXRpb25zU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcmVQcm9ncmFtbWFibGVTYW1wbGVQ
b3NpdGlvbnNTdXBwb3J0ZWQpKTsKK30KKworLy8gbWV0aG9kOiBnZXREZWZhdWx0U2FtcGxlUG9z
aXRpb25zOmNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6Z2V0RGVmYXVsdFNh
bXBsZVBvc2l0aW9ucyhNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5TOjpVSW50ZWdl
ciBjb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9uc19jb3VudF8pLCBwb3NpdGlvbnMsIGNv
dW50KTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzOgor
X01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEVuY29kZXIqIE1UTDo6RGV2aWNlOjpuZXdBcmd1bWVu
dEVuY29kZXIoY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpBcmd1bWVudEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0FyZ3VtZW50RW5jb2RlcldpdGhBcmd1bWVudHNfKSwgYXJndW1lbnRzKTsKK30KKwor
Ly8gbWV0aG9kOiBzdXBwb3J0c1Jhc3Rlcml6YXRpb25SYXRlTWFwV2l0aExheWVyQ291bnQ6Citf
TVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c1Jhc3Rlcml6YXRpb25SYXRlTWFw
KE5TOjpVSW50ZWdlciBsYXllckNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzUmFzdGVyaXphdGlv
blJhdGVNYXBXaXRoTGF5ZXJDb3VudF8pLCBsYXllckNvdW50KTsKK30KKworLy8gbWV0aG9kOiBu
ZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpS
YXN0ZXJpemF0aW9uUmF0ZU1hcCogTVRMOjpEZXZpY2U6Om5ld1Jhc3Rlcml6YXRpb25SYXRlTWFw
KGNvbnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJhdGVN
YXAqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Jhc3Rlcml6YXRpb25SYXRlTWFwV2l0aERl
c2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3SW5kaXJlY3RDb21t
YW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6bWF4Q29tbWFuZENvdW50Om9wdGlvbnM6CitfTVRMX0lO
TElORSBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogTVRMOjpEZXZpY2U6Om5ld0luZGlyZWN0
Q29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IsIE5TOjpVSW50ZWdlciBtYXhDb3VudCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMg
b3B0aW9ucykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGlyZWN0
Q29tbWFuZEJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3SW5kaXJlY3RDb21tYW5k
QnVmZmVyV2l0aERlc2NyaXB0b3JfbWF4Q29tbWFuZENvdW50X29wdGlvbnNfKSwgZGVzY3JpcHRv
ciwgbWF4Q291bnQsIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IG5ld0V2ZW50CitfTVRMX0lO
TElORSBNVEw6OkV2ZW50KiBNVEw6OkRldmljZTo6bmV3RXZlbnQoKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RXZlbnQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d0V2ZW50KSk7Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkRXZlbnQKK19NVExfSU5MSU5FIE1U
TDo6U2hhcmVkRXZlbnQqIE1UTDo6RGV2aWNlOjpuZXdTaGFyZWRFdmVudCgpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaGFyZWRFdmVudCo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobmV3U2hhcmVkRXZlbnQpKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRFdmVu
dFdpdGhIYW5kbGU6CitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50KiBNVEw6OkRldmljZTo6
bmV3U2hhcmVkRXZlbnQoY29uc3QgTVRMOjpTaGFyZWRFdmVudEhhbmRsZSogc2hhcmVkRXZlbnRI
YW5kbGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaGFyZWRFdmVu
dCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlXyksIHNo
YXJlZEV2ZW50SGFuZGxlKTsKK30KKworLy8gcHJvcGVydHk6IHBlZXJHcm91cElECitfTVRMX0lO
TElORSB1aW50NjRfdCBNVEw6OkRldmljZTo6cGVlckdyb3VwSUQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQ2NF90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHBlZXJHcm91cElEKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwZWVySW5kZXgKK19NVExfSU5MSU5F
IHVpbnQzMl90IE1UTDo6RGV2aWNlOjpwZWVySW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBlZXJJ
bmRleCkpOworfQorCisvLyBwcm9wZXJ0eTogcGVlckNvdW50CitfTVRMX0lOTElORSB1aW50MzJf
dCBNVEw6OkRldmljZTo6cGVlckNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx1aW50MzJfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwZWVyQ291bnQpKTsK
K30KKworLy8gbWV0aG9kOiBzcGFyc2VUaWxlU2l6ZVdpdGhUZXh0dXJlVHlwZTpwaXhlbEZvcm1h
dDpzYW1wbGVDb3VudDoKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OkRldmljZTo6c3BhcnNl
VGlsZVNpemUoTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSwgTVRMOjpQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzcGFyc2VU
aWxlU2l6ZVdpdGhUZXh0dXJlVHlwZV9waXhlbEZvcm1hdF9zYW1wbGVDb3VudF8pLCB0ZXh0dXJl
VHlwZSwgcGl4ZWxGb3JtYXQsIHNhbXBsZUNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHNwYXJz
ZVRpbGVTaXplSW5CeXRlcworX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2aWNlOjpz
cGFyc2VUaWxlU2l6ZUluQnl0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzcGFyc2VUaWxlU2l6
ZUluQnl0ZXMpKTsKK30KKworLy8gbWV0aG9kOiBjb252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zOnRv
VGlsZVJlZ2lvbnM6d2l0aFRpbGVTaXplOmFsaWdubWVudE1vZGU6bnVtUmVnaW9uczoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6OmNvbnZlcnRTcGFyc2VQaXhlbFJlZ2lvbnMoY29uc3Qg
TVRMOjpSZWdpb24qIHBpeGVsUmVnaW9ucywgTVRMOjpSZWdpb24qIHRpbGVSZWdpb25zLCBNVEw6
OlNpemUgdGlsZVNpemUsIE1UTDo6U3BhcnNlVGV4dHVyZVJlZ2lvbkFsaWdubWVudE1vZGUgbW9k
ZSwgTlM6OlVJbnRlZ2VyIG51bVJlZ2lvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbnZlcnRTcGFyc2VQaXhlbFJlZ2lvbnNfdG9U
aWxlUmVnaW9uc193aXRoVGlsZVNpemVfYWxpZ25tZW50TW9kZV9udW1SZWdpb25zXyksIHBpeGVs
UmVnaW9ucywgdGlsZVJlZ2lvbnMsIHRpbGVTaXplLCBtb2RlLCBudW1SZWdpb25zKTsKK30KKwor
Ly8gbWV0aG9kOiBjb252ZXJ0U3BhcnNlVGlsZVJlZ2lvbnM6dG9QaXhlbFJlZ2lvbnM6d2l0aFRp
bGVTaXplOm51bVJlZ2lvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpjb252ZXJ0
U3BhcnNlVGlsZVJlZ2lvbnMoY29uc3QgTVRMOjpSZWdpb24qIHRpbGVSZWdpb25zLCBNVEw6OlJl
Z2lvbiogcGl4ZWxSZWdpb25zLCBNVEw6OlNpemUgdGlsZVNpemUsIE5TOjpVSW50ZWdlciBudW1S
ZWdpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChjb252ZXJ0U3BhcnNlVGlsZVJlZ2lvbnNfdG9QaXhlbFJlZ2lvbnNfd2l0aFRpbGVT
aXplX251bVJlZ2lvbnNfKSwgdGlsZVJlZ2lvbnMsIHBpeGVsUmVnaW9ucywgdGlsZVNpemUsIG51
bVJlZ2lvbnMpOworfQorCisvLyBwcm9wZXJ0eTogbWF4QnVmZmVyTGVuZ3RoCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpEZXZpY2U6Om1heEJ1ZmZlckxlbmd0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG1heEJ1ZmZlckxlbmd0aCkpOworfQorCisvLyBwcm9wZXJ0eTogY291bnRlclNl
dHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpEZXZpY2U6OmNvdW50ZXJTZXRzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGNvdW50ZXJTZXRzKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3Q291bnRl
clNhbXBsZUJ1ZmZlcldpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpDb3Vu
dGVyU2FtcGxlQnVmZmVyKiBNVEw6OkRldmljZTo6bmV3Q291bnRlclNhbXBsZUJ1ZmZlcihjb25z
dCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJy
b3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvdW50
ZXJTYW1wbGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NvdW50ZXJTYW1wbGVC
dWZmZXJXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8v
IG1ldGhvZDogc2FtcGxlVGltZXN0YW1wczpncHVUaW1lc3RhbXA6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6RGV2aWNlOjpzYW1wbGVUaW1lc3RhbXBzKE1UTDo6VGltZXN0YW1wKiBjcHVUaW1lc3Rh
bXAsIE1UTDo6VGltZXN0YW1wKiBncHVUaW1lc3RhbXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZVRpbWVzdGFtcHNfZ3B1VGlt
ZXN0YW1wXyksIGNwdVRpbWVzdGFtcCwgZ3B1VGltZXN0YW1wKTsKK30KKworLy8gbWV0aG9kOiBz
dXBwb3J0c0NvdW50ZXJTYW1wbGluZzoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1
cHBvcnRzQ291bnRlclNhbXBsaW5nKE1UTDo6Q291bnRlclNhbXBsaW5nUG9pbnQgc2FtcGxpbmdQ
b2ludCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdXBwb3J0c0NvdW50ZXJTYW1wbGluZ18pLCBzYW1wbGluZ1BvaW50
KTsKK30KKworLy8gbWV0aG9kOiBzdXBwb3J0c1ZlcnRleEFtcGxpZmljYXRpb25Db3VudDoKK19N
VExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzVmVydGV4QW1wbGlmaWNhdGlvbkNv
dW50KE5TOjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1ZlcnRleEFtcGxpZmlj
YXRpb25Db3VudF8pLCBjb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c0R5bmFtaWNM
aWJyYXJpZXMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzRHluYW1pY0xp
YnJhcmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNEeW5hbWljTGlicmFyaWVzKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMKK19NVExfSU5M
SU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUmVuZGVyRHluYW1pY0xpYnJhcmllcygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc3VwcG9ydHNSZW5kZXJEeW5hbWljTGlicmFyaWVzKSk7Cit9CisKKy8v
IG1ldGhvZDogbmV3RHluYW1pY0xpYnJhcnk6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkR5bmFt
aWNMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3RHluYW1pY0xpYnJhcnkoY29uc3QgTVRMOjpMaWJy
YXJ5KiBsaWJyYXJ5LCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkR5bmFtaWNMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdEeW5hbWljTGlicmFyeV9lcnJvcl8pLCBsaWJyYXJ5LCBlcnJvcik7Cit9CisKKy8vIG1ldGhv
ZDogbmV3RHluYW1pY0xpYnJhcnlXaXRoVVJMOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpEeW5h
bWljTGlicmFyeSogTVRMOjpEZXZpY2U6Om5ld0R5bmFtaWNMaWJyYXJ5KGNvbnN0IE5TOjpVUkwq
IHVybCwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpEeW5hbWljTGlicmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RHluYW1p
Y0xpYnJhcnlXaXRoVVJMX2Vycm9yXyksIHVybCwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5l
d0JpbmFyeUFyY2hpdmVXaXRoRGVzY3JpcHRvcjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6Qmlu
YXJ5QXJjaGl2ZSogTVRMOjpEZXZpY2U6Om5ld0JpbmFyeUFyY2hpdmUoY29uc3QgTVRMOjpCaW5h
cnlBcmNoaXZlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCaW5hcnlBcmNoaXZlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChuZXdCaW5hcnlBcmNoaXZlV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwg
ZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNSYXl0cmFjaW5n
CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c1JheXRyYWNpbmcoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHN1cHBvcnRzUmF5dHJhY2luZykpOworfQorCisvLyBtZXRob2Q6IGFjY2Vs
ZXJhdGlvblN0cnVjdHVyZVNpemVzV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZVNpemVzIE1UTDo6RGV2aWNlOjphY2NlbGVyYXRpb25TdHJ1Y3R1
cmVTaXplcyhjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVTaXplcz4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2NlbGVyYXRpb25TdHJ1
Y3R1cmVTaXplc1dpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6
IG5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZVdpdGhTaXplOgorX01UTF9JTkxJTkUgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUqIE1UTDo6RGV2aWNlOjpuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmUo
TlM6OlVJbnRlZ2VyIHNpemUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0FjY2Vs
ZXJhdGlvblN0cnVjdHVyZVdpdGhTaXplXyksIHNpemUpOworfQorCisvLyBtZXRob2Q6IG5ld0Fj
Y2VsZXJhdGlvblN0cnVjdHVyZVdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUqIE1UTDo6RGV2aWNlOjpuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmUo
Y29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRo
RGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzRnVu
Y3Rpb25Qb2ludGVycworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNGdW5j
dGlvblBvaW50ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNh
ZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnMp
KTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVyc0Zyb21SZW5kZXIK
K19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzRnVuY3Rpb25Qb2ludGVyc0Zy
b21SZW5kZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxi
b29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVyc0Zyb21S
ZW5kZXIpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5kZXIK
K19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5k
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5kZXIpKTsKK30K
KworLy8gcHJvcGVydHk6IHN1cHBvcnRzUHJpbWl0aXZlTW90aW9uQmx1cgorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNQcmltaXRpdmVNb3Rpb25CbHVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdXBwb3J0c1ByaW1pdGl2ZU1vdGlvbkJsdXIpKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEcmF3YWJsZS5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHJhd2FibGUuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjczNDA5NzYwNDEzN2ZlMzBiZWU3MGIyZDE1NWQzMTdjNjJiYjk2OWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHJhd2FibGUu
aHBwCkBAIC0wLDAgKzEsOTkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTERyYXdhYmxlLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVk
ZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxmdW5jdGlvbmFs
PgorCituYW1lc3BhY2UgTVRMCit7Cit1c2luZyBEcmF3YWJsZVByZXNlbnRlZEhhbmRsZXIgPSB2
b2lkICheKShjbGFzcyBEcmF3YWJsZSopOworCit1c2luZyBEcmF3YWJsZVByZXNlbnRlZEhhbmRs
ZXJGdW5jdGlvbiA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjbGFzcyBEcmF3YWJsZSopPjsKKworY2xh
c3MgRHJhd2FibGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPERyYXdhYmxlPgoreworcHVibGlj
OgorICAgIHZvaWQgICAgICAgICAgIGFkZFByZXNlbnRlZEhhbmRsZXIoY29uc3QgTVRMOjpEcmF3
YWJsZVByZXNlbnRlZEhhbmRsZXJGdW5jdGlvbiYgZnVuY3Rpb24pOworCisgICAgdm9pZCAgICAg
ICAgICAgcHJlc2VudCgpOworCisgICAgdm9pZCAgICAgICAgICAgcHJlc2VudEF0VGltZShDRlRp
bWVJbnRlcnZhbCBwcmVzZW50YXRpb25UaW1lKTsKKworICAgIHZvaWQgICAgICAgICAgIHByZXNl
bnRBZnRlck1pbmltdW1EdXJhdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbik7CisKKyAgICB2
b2lkICAgICAgICAgICBhZGRQcmVzZW50ZWRIYW5kbGVyKGNvbnN0IE1UTDo6RHJhd2FibGVQcmVz
ZW50ZWRIYW5kbGVyIGJsb2NrKTsKKworICAgIENGVGltZUludGVydmFsIHByZXNlbnRlZFRpbWUo
KSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgIGRyYXdhYmxlSUQoKSBjb25zdDsKK307CisK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRyYXdhYmxlOjphZGRQcmVzZW50ZWRIYW5kbGVy
KGNvbnN0IE1UTDo6RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKQor
eworICAgIF9fYmxvY2sgRHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyRnVuY3Rpb24gYmxvY2tGdW5j
dGlvbiA9IGZ1bmN0aW9uOworCisgICAgYWRkUHJlc2VudGVkSGFuZGxlciheKERyYXdhYmxlKiBw
RHJhd2FibGUpIHsgYmxvY2tGdW5jdGlvbihwRHJhd2FibGUpOyB9KTsKK30KKworLy8gbWV0aG9k
OiBwcmVzZW50CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6OnByZXNlbnQoKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVz
ZW50KSk7Cit9CisKKy8vIG1ldGhvZDogcHJlc2VudEF0VGltZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpEcmF3YWJsZTo6cHJlc2VudEF0VGltZShDRlRpbWVJbnRlcnZhbCBwcmVzZW50YXRpb25U
aW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChwcmVzZW50QXRUaW1lXyksIHByZXNlbnRhdGlvblRpbWUpOworfQorCisvLyBtZXRob2Q6
IHByZXNlbnRBZnRlck1pbmltdW1EdXJhdGlvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEcmF3
YWJsZTo6cHJlc2VudEFmdGVyTWluaW11bUR1cmF0aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9u
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb25fKSwgZHVyYXRpb24pOworfQorCisvLyBtZXRo
b2Q6IGFkZFByZXNlbnRlZEhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6
OmFkZFByZXNlbnRlZEhhbmRsZXIoY29uc3QgTVRMOjpEcmF3YWJsZVByZXNlbnRlZEhhbmRsZXIg
YmxvY2spCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGFkZFByZXNlbnRlZEhhbmRsZXJfKSwgYmxvY2spOworfQorCisvLyBwcm9wZXJ0eTog
cHJlc2VudGVkVGltZQorX01UTF9JTkxJTkUgQ0ZUaW1lSW50ZXJ2YWwgTVRMOjpEcmF3YWJsZTo6
cHJlc2VudGVkVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Q0ZUaW1lSW50ZXJ2YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudGVkVGltZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogZHJhd2FibGVJRAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6RHJhd2FibGU6OmRyYXdhYmxlSUQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3YWJsZUlE
KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMRHluYW1pY0xpYnJhcnkuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTER5bmFtaWNMaWJyYXJ5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODliOTk5MGQ1ZjZiZjE3OTQ3
MmViMWEzNDQyNjMzZDA5NDFkYjc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFtaWNMaWJyYXJ5LmhwcApAQCAtMCwwICsxLDgy
IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBNZXRhbC9NVExEeW5hbWljTGlicmFyeS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNs
dWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisj
aW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAorewor
X01UTF9FTlVNKE5TOjpVSW50ZWdlciwgRHluYW1pY0xpYnJhcnlFcnJvcikgeworICAgIER5bmFt
aWNMaWJyYXJ5RXJyb3JOb25lID0gMCwKKyAgICBEeW5hbWljTGlicmFyeUVycm9ySW52YWxpZEZp
bGUgPSAxLAorICAgIER5bmFtaWNMaWJyYXJ5RXJyb3JDb21waWxhdGlvbkZhaWx1cmUgPSAyLAor
ICAgIER5bmFtaWNMaWJyYXJ5RXJyb3JVbnJlc29sdmVkSW5zdGFsbE5hbWUgPSAzLAorICAgIER5
bmFtaWNMaWJyYXJ5RXJyb3JEZXBlbmRlbmN5TG9hZEZhaWx1cmUgPSA0LAorICAgIER5bmFtaWNM
aWJyYXJ5RXJyb3JVbnN1cHBvcnRlZCA9IDUsCit9OworCitjbGFzcyBEeW5hbWljTGlicmFyeSA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RHluYW1pY0xpYnJhcnk+Cit7CitwdWJsaWM6CisgICAg
TlM6OlN0cmluZyogICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgc2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBj
b25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgaW5zdGFsbE5hbWUoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgc2VyaWFsaXplVG9VUkwoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6RXJyb3Iq
KiBlcnJvcik7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6
OlN0cmluZyogTVRMOjpEeW5hbWljTGlicmFyeTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEeW5hbWljTGlicmFyeTo6c2V0
TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKwor
Ly8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6RHluYW1p
Y0xpYnJhcnk6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisv
LyBwcm9wZXJ0eTogaW5zdGFsbE5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RHlu
YW1pY0xpYnJhcnk6Omluc3RhbGxOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnN0YWxsTmFt
ZSkpOworfQorCisvLyBtZXRob2Q6IHNlcmlhbGl6ZVRvVVJMOmVycm9yOgorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkR5bmFtaWNMaWJyYXJ5OjpzZXJpYWxpemVUb1VSTChjb25zdCBOUzo6VVJMKiB1
cmwsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2VyaWFsaXplVG9VUkxfZXJyb3JfKSwgdXJs
LCBlcnJvcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMRXZlbnQuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEV2ZW50LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTlmYWMyMzUxOGY4NmE1MWU0MjBhNDk4NDY3NjRj
NWUwZGY1OGVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEV2ZW50LmhwcApAQCAtMCwwICsxLDE2MyBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRXZlbnQuaHBw
CisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNp
bmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5ocHA+CisKKyNpbmNsdWRlICJNVExFdmVudC5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2Ns
YXNzIEV2ZW50IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxFdmVudD4KK3sKK3B1YmxpYzoKKyAg
ICBjbGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICBsYWJl
bCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyog
bGFiZWwpOworfTsKKworY2xhc3MgU2hhcmVkRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBOUzo6UmVm
ZXJlbmNpbmc8U2hhcmVkRXZlbnRMaXN0ZW5lcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xh
c3MgU2hhcmVkRXZlbnRMaXN0ZW5lciogYWxsb2MoKTsKKworICAgIE1UTDo6U2hhcmVkRXZlbnRM
aXN0ZW5lciogICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIq
ICAgICAgICAgaW5pdChjb25zdCBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUpOworCisg
ICAgZGlzcGF0Y2hfcXVldWVfdCAgICAgICAgICAgICAgICAgIGRpc3BhdGNoUXVldWUoKSBjb25z
dDsKK307CisKK3VzaW5nIFNoYXJlZEV2ZW50Tm90aWZpY2F0aW9uQmxvY2sgPSB2b2lkICheKShT
aGFyZWRFdmVudCogcEV2ZW50LCBzdGQ6OnVpbnQ2NF90IHZhbHVlKTsKKworY2xhc3MgU2hhcmVk
RXZlbnQgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFNoYXJlZEV2ZW50LCBFdmVudD4KK3sKK3B1
YmxpYzoKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgbm90aWZ5TGlzdGVuZXIoY29uc3Qg
Y2xhc3MgU2hhcmVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIHVpbnQ2NF90IHZhbHVlLCBjb25z
dCBNVEw6OlNoYXJlZEV2ZW50Tm90aWZpY2F0aW9uQmxvY2sgYmxvY2spOworCisgICAgY2xhc3Mg
U2hhcmVkRXZlbnRIYW5kbGUqIG5ld1NoYXJlZEV2ZW50SGFuZGxlKCk7CisKKyAgICB1aW50NjRf
dCAgICAgICAgICAgICAgICAgc2lnbmFsZWRWYWx1ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICBzZXRTaWduYWxlZFZhbHVlKHVpbnQ2NF90IHNpZ25hbGVkVmFsdWUpOwor
fTsKKworY2xhc3MgU2hhcmVkRXZlbnRIYW5kbGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFNo
YXJlZEV2ZW50SGFuZGxlPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTaGFyZWRFdmVu
dEhhbmRsZSogYWxsb2MoKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50SGFuZGxlKiAgICAgICAg
aW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNv
bnN0OworfTsKKworc3RydWN0IFNoYXJlZEV2ZW50SGFuZGxlUHJpdmF0ZQoreworfSBfTVRMX1BB
Q0tFRDsKKworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmlj
ZSogTVRMOjpFdmVudDo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpFdmVu
dDo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpT
dHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpFdmVudDo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExh
YmVsXyksIGxhYmVsKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lciogTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyOjphbGxv
YygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U2hhcmVkRXZlbnRMaXN0
ZW5lcj4oX01UTF9QUklWQVRFX0NMUyhNVExTaGFyZWRFdmVudExpc3RlbmVyKSk7Cit9CisKKy8v
IG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyKiBNVEw6
OlNoYXJlZEV2ZW50TGlzdGVuZXI6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lcj4oKTsKK30KKworLy8gbWV0aG9kOiBpbml0V2l0
aERpc3BhdGNoUXVldWU6CitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIqIE1U
TDo6U2hhcmVkRXZlbnRMaXN0ZW5lcjo6aW5pdChjb25zdCBkaXNwYXRjaF9xdWV1ZV90IGRpc3Bh
dGNoUXVldWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaGFyZWRF
dmVudExpc3RlbmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbml0V2l0aERpc3BhdGNoUXVl
dWVfKSwgZGlzcGF0Y2hRdWV1ZSk7Cit9CisKKy8vIHByb3BlcnR5OiBkaXNwYXRjaFF1ZXVlCitf
TVRMX0lOTElORSBkaXNwYXRjaF9xdWV1ZV90IE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lcjo6ZGlz
cGF0Y2hRdWV1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZGlz
cGF0Y2hfcXVldWVfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkaXNwYXRjaFF1ZXVlKSk7Cit9
CisKKy8vIG1ldGhvZDogbm90aWZ5TGlzdGVuZXI6YXRWYWx1ZTpibG9jazoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpTaGFyZWRFdmVudDo6bm90aWZ5TGlzdGVuZXIoY29uc3QgTVRMOjpTaGFyZWRF
dmVudExpc3RlbmVyKiBsaXN0ZW5lciwgdWludDY0X3QgdmFsdWUsIGNvbnN0IE1UTDo6U2hhcmVk
RXZlbnROb3RpZmljYXRpb25CbG9jayBibG9jaykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobm90aWZ5TGlzdGVuZXJfYXRWYWx1ZV9ibG9j
a18pLCBsaXN0ZW5lciwgdmFsdWUsIGJsb2NrKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRF
dmVudEhhbmRsZQorX01UTF9JTkxJTkUgTVRMOjpTaGFyZWRFdmVudEhhbmRsZSogTVRMOjpTaGFy
ZWRFdmVudDo6bmV3U2hhcmVkRXZlbnRIYW5kbGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6U2hhcmVkRXZlbnRIYW5kbGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld1NoYXJlZEV2ZW50SGFuZGxlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzaWduYWxlZFZhbHVl
CitfTVRMX0lOTElORSB1aW50NjRfdCBNVEw6OlNoYXJlZEV2ZW50OjpzaWduYWxlZFZhbHVlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50NjRfdD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzaWduYWxlZFZhbHVlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpTaGFyZWRFdmVudDo6c2V0U2lnbmFsZWRWYWx1ZSh1aW50NjRfdCBzaWduYWxlZFZhbHVl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTaWduYWxlZFZhbHVlXyksIHNpZ25hbGVkVmFsdWUpOworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTaGFyZWRFdmVudEhhbmRsZSogTVRMOjpTaGFy
ZWRFdmVudEhhbmRsZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxN
VEw6OlNoYXJlZEV2ZW50SGFuZGxlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFNoYXJlZEV2ZW50SGFu
ZGxlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTaGFyZWRFdmVu
dEhhbmRsZSogTVRMOjpTaGFyZWRFdmVudEhhbmRsZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TVRMOjpTaGFyZWRFdmVudEhhbmRsZT4oKTsKK30KKworLy8gcHJvcGVy
dHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlNoYXJlZEV2ZW50SGFuZGxl
OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0
cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGZW5jZS5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRmVuY2UuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJj
NmU5MzE0ZTUzOTM1ZDI0MTY2MTllY2IwMzAwMzYwOGY0YzhmNWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRmVuY2UuaHBwCkBAIC0w
LDAgKzEsNTcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIE1ldGFsL01UTEZlbmNlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1lc3BhY2UgTVRMCit7Citj
bGFzcyBGZW5jZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RmVuY2U+Cit7CitwdWJsaWM6Cisg
ICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgbGFi
ZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcq
IGxhYmVsKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRM
OjpEZXZpY2UqIE1UTDo6RmVuY2U6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmlj
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6RmVuY2U6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6RmVuY2U6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVs
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5o
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTYwODU1NGVjNDYyYjdhNTRiMjdlN2ZkYjIzMzMzYzc2MDFhMzMxYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExGdW5jdGlvbkNvbnN0YW50VmFsdWVzLmhwcApAQCAtMCwwICsxLDg1IEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExGdW5j
dGlvbkNvbnN0YW50VmFsdWVzLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUg
SW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1U
TEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRl
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQXJndW1lbnQuaHBw
IgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBGdW5jdGlvbkNvbnN0YW50VmFsdWVzIDogcHVi
bGljIE5TOjpDb3B5aW5nPEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM+Cit7CitwdWJsaWM6CisgICAg
c3RhdGljIGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIGFsbG9jKCk7CisKKyAgICBjbGFz
cyBGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiAgICAgICAgaW5pdCgpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50VmFsdWUoY29uc3Qgdm9pZCog
dmFsdWUsIE1UTDo6RGF0YVR5cGUgdHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudFZhbHVlcyhjb25z
dCB2b2lkKiB2YWx1ZXMsIE1UTDo6RGF0YVR5cGUgdHlwZSwgTlM6OlJhbmdlIHJhbmdlKTsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudFZhbHVl
KGNvbnN0IHZvaWQqIHZhbHVlLCBNVEw6OkRhdGFUeXBlIHR5cGUsIGNvbnN0IE5TOjpTdHJpbmcq
IG5hbWUpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0
KCk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6
OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlczo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9uQ29uc3Rh
bnRWYWx1ZXM+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcykpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25Db25zdGFudFZh
bHVlcyogTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzOjppbml0KCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM+KCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0Q29uc3RhbnRWYWx1ZTp0eXBlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlczo6c2V0Q29uc3RhbnRWYWx1ZShjb25zdCB2b2lk
KiB2YWx1ZSwgTVRMOjpEYXRhVHlwZSB0eXBlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0
YW50VmFsdWVfdHlwZV9hdEluZGV4XyksIHZhbHVlLCB0eXBlLCBpbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0Q29uc3RhbnRWYWx1ZXM6dHlwZTp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlczo6c2V0Q29uc3RhbnRWYWx1ZXMoY29uc3Qgdm9p
ZCogdmFsdWVzLCBNVEw6OkRhdGFUeXBlIHR5cGUsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29uc3Rh
bnRWYWx1ZXNfdHlwZV93aXRoUmFuZ2VfKSwgdmFsdWVzLCB0eXBlLCByYW5nZSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0Q29uc3RhbnRWYWx1ZTp0eXBlOndpdGhOYW1lOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6OnNldENvbnN0YW50VmFsdWUoY29uc3Qgdm9p
ZCogdmFsdWUsIE1UTDo6RGF0YVR5cGUgdHlwZSwgY29uc3QgTlM6OlN0cmluZyogbmFtZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
Q29uc3RhbnRWYWx1ZV90eXBlX3dpdGhOYW1lXyksIHZhbHVlLCB0eXBlLCBuYW1lKTsKK30KKwor
Ly8gbWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRW
YWx1ZXM6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTZmMDBkNjc4MzRiZGJiMzk4NjhlNTRmOTNmZjkzYWU1NmFhZWUyNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5j
dGlvbkRlc2NyaXB0b3IuaHBwCkBAIC0wLDAgKzEsMTU2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExGdW5jdGlvbkRlc2Ny
aXB0b3IuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdl
LmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwIgor
CituYW1lc3BhY2UgTVRMCit7CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBGdW5jdGlvbk9w
dGlvbnMpIHsKKyAgICBGdW5jdGlvbk9wdGlvbk5vbmUgPSAwLAorICAgIEZ1bmN0aW9uT3B0aW9u
Q29tcGlsZVRvQmluYXJ5ID0gMSwKK307CisKK2NsYXNzIEZ1bmN0aW9uRGVzY3JpcHRvciA6IHB1
YmxpYyBOUzo6Q29weWluZzxGdW5jdGlvbkRlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNsYXNzIEZ1bmN0aW9uRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEZ1bmN0
aW9uRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlv
bkRlc2NyaXB0b3IqIGZ1bmN0aW9uRGVzY3JpcHRvcigpOworCisgICAgTlM6OlN0cmluZyogICAg
ICAgICAgICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE5hbWUoY29uc3QgTlM6OlN0cmluZyogbmFtZSk7CisKKyAgICBOUzo6
U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZE5hbWUoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTcGVjaWFsaXplZE5hbWUoY29u
c3QgTlM6OlN0cmluZyogc3BlY2lhbGl6ZWROYW1lKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uQ29u
c3RhbnRWYWx1ZXMqICAgIGNvbnN0YW50VmFsdWVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnRWYWx1ZXMoY29uc3QgY2xhc3MgRnVuY3Rp
b25Db25zdGFudFZhbHVlcyogY29uc3RhbnRWYWx1ZXMpOworCisgICAgTVRMOjpGdW5jdGlvbk9w
dGlvbnMgICAgICAgICAgICAgb3B0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldE9wdGlvbnMoTVRMOjpGdW5jdGlvbk9wdGlvbnMgb3B0aW9ucyk7
CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlBcmNoaXZlcygp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpbmFyeUFy
Y2hpdmVzKGNvbnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMpOworfTsKKworY2xhc3MgSW50
ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEludGVyc2Vj
dGlvbkZ1bmN0aW9uRGVzY3JpcHRvciwgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogYWxs
b2MoKTsKKworICAgIGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogICAgICAg
IGluaXQoKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yKiBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9uRGVzY3JpcHRv
cj4oX01UTF9QUklWQVRFX0NMUyhNVExGdW5jdGlvbkRlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogTVRMOjpGdW5j
dGlvbkRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1U
TDo6RnVuY3Rpb25EZXNjcmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBmdW5jdGlv
bkRlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yKiBNVEw6OkZ1
bmN0aW9uRGVzY3JpcHRvcjo6ZnVuY3Rpb25EZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9D
TFMoTVRMRnVuY3Rpb25EZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkRlc2Ny
aXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcq
IE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1l
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OnNldE5h
bWUoY29uc3QgTlM6OlN0cmluZyogbmFtZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TmFtZV8pLCBuYW1lKTsKK30KKworLy8gcHJv
cGVydHk6IHNwZWNpYWxpemVkTmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5j
dGlvbkRlc2NyaXB0b3I6OnNwZWNpYWxpemVkTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3Bl
Y2lhbGl6ZWROYW1lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkRlc2Ny
aXB0b3I6OnNldFNwZWNpYWxpemVkTmFtZShjb25zdCBOUzo6U3RyaW5nKiBzcGVjaWFsaXplZE5h
bWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFNwZWNpYWxpemVkTmFtZV8pLCBzcGVjaWFsaXplZE5hbWUpOworfQorCisvLyBwcm9w
ZXJ0eTogY29uc3RhbnRWYWx1ZXMKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25Db25zdGFudFZh
bHVlcyogTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OmNvbnN0YW50VmFsdWVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1
ZXMqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbnN0YW50VmFsdWVzKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OnNldENvbnN0YW50VmFsdWVzKGNv
bnN0IE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlcyogY29uc3RhbnRWYWx1ZXMpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0
YW50VmFsdWVzXyksIGNvbnN0YW50VmFsdWVzKTsKK30KKworLy8gcHJvcGVydHk6IG9wdGlvbnMK
K19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25PcHRpb25zIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9y
OjpvcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkZ1bmN0aW9uT3B0aW9ucz4odGhpcywgX01UTF9QUklWQVRFX1NFTChvcHRpb25zKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OnNldE9wdGlvbnMoTVRM
OjpGdW5jdGlvbk9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3B0aW9uc18pLCBvcHRpb25zKTsKK30KKwor
Ly8gcHJvcGVydHk6IGJpbmFyeUFyY2hpdmVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6
RnVuY3Rpb25EZXNjcmlwdG9yOjpiaW5hcnlBcmNoaXZlcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChi
aW5hcnlBcmNoaXZlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25EZXNj
cmlwdG9yOjpzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hpdmVz
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRCaW5hcnlBcmNoaXZlc18pLCBiaW5hcnlBcmNoaXZlcyk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3Jp
cHRvciogTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpJbnRlcnNlY3Rpb25G
dW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yOjpp
bml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uRGVzY3JpcHRvcj4oKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkhhbmRsZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0
ZjM4NTE0MzdjNzFlODBkYTk4N2VlY2U5OGJkMWE4MDhjM2UyZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUu
aHBwCkBAIC0wLDAgKzEsNjEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEZ1bmN0aW9uSGFuZGxlLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMTGlicmFyeS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIEZ1bmN0
aW9uSGFuZGxlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbkhhbmRsZT4KK3sKK3B1
YmxpYzoKKyAgICBNVEw6OkZ1bmN0aW9uVHlwZSBmdW5jdGlvblR5cGUoKSBjb25zdDsKKworICAg
IE5TOjpTdHJpbmcqICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIGNsYXNzIERldmljZSogICAg
IGRldmljZSgpIGNvbnN0OworfTsKKworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25UeXBlCitf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uVHlwZSBNVEw6OkZ1bmN0aW9uSGFuZGxlOjpmdW5jdGlv
blR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVu
Y3Rpb25UeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uVHlwZSkpOworfQorCisv
LyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5jdGlvbkhh
bmRsZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBwcm9wZXJ0
eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpGdW5jdGlvbkhhbmRsZTo6
ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRl
dmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Mb2cuaHBwIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYTM4ZGM5ZGFiZDYxZWFiYmVmZTBlNGJkYzM1ZTI5M2UyNzA4MTU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1
bmN0aW9uTG9nLmhwcApAQCAtMCwwICsxLDExNCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25Mb2cuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNs
dWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHA+CisKKyNpbmNsdWRlICJNVExGdW5jdGlvbkxvZy5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sK
K19NVExfRU5VTShOUzo6VUludGVnZXIsIEZ1bmN0aW9uTG9nVHlwZSkgeworICAgIEZ1bmN0aW9u
TG9nVHlwZVZhbGlkYXRpb24gPSAwLAorfTsKKworY2xhc3MgTG9nQ29udGFpbmVyIDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxMb2dDb250YWluZXIsIE5TOjpGYXN0RW51bWVyYXRpb24+Cit7Citw
dWJsaWM6Cit9OworCitjbGFzcyBGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24gOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPEZ1bmN0aW9uTG9nRGVidWdMb2NhdGlvbj4KK3sKK3B1YmxpYzoKKyAgICBO
Uzo6U3RyaW5nKiAgZnVuY3Rpb25OYW1lKCkgY29uc3Q7CisKKyAgICBOUzo6VVJMKiAgICAgVVJM
KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgbGluZSgpIGNvbnN0OworCisgICAgTlM6OlVJ
bnRlZ2VyIGNvbHVtbigpIGNvbnN0OworfTsKKworY2xhc3MgRnVuY3Rpb25Mb2cgOiBwdWJsaWMg
TlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uTG9nPgoreworcHVibGljOgorICAgIE1UTDo6RnVuY3Rp
b25Mb2dUeXBlICAgICAgICAgICAgdHlwZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICAg
ICAgICAgICAgICAgICAgICBlbmNvZGVyTGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNzIEZ1bmN0
aW9uKiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSBjb25zdDsKKworICAgIGNsYXNzIEZ1bmN0
aW9uTG9nRGVidWdMb2NhdGlvbiogZGVidWdMb2NhdGlvbigpIGNvbnN0OworfTsKKworfQorCisv
LyBwcm9wZXJ0eTogZnVuY3Rpb25OYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1
bmN0aW9uTG9nRGVidWdMb2NhdGlvbjo6ZnVuY3Rpb25OYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChmdW5jdGlvbk5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IFVSTAorX01UTF9JTkxJTkUgTlM6
OlVSTCogTVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb246OlVSTCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVSTCo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoVVJMKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsaW5lCitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb246OmxpbmUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChsaW5lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb2x1bW4KK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OkZ1bmN0aW9uTG9nRGVidWdMb2NhdGlvbjo6Y29sdW1uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoY29sdW1uKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0eXBlCitfTVRMX0lOTElO
RSBNVEw6OkZ1bmN0aW9uTG9nVHlwZSBNVEw6OkZ1bmN0aW9uTG9nOjp0eXBlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uTG9nVHlwZT4odGhp
cywgX01UTF9QUklWQVRFX1NFTCh0eXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmNvZGVyTGFi
ZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb25Mb2c6OmVuY29kZXJMYWJl
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlckxhYmVsKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBmdW5jdGlvbgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpGdW5jdGlvbkxvZzo6
ZnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBkZWJ1Z0xvY2F0aW9uCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uTG9nRGVidWdM
b2NhdGlvbiogTVRMOjpGdW5jdGlvbkxvZzo6ZGVidWdMb2NhdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24q
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlYnVnTG9jYXRpb24pKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvblN0aXRjaGlu
Zy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25T
dGl0Y2hpbmcuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZGNiNDk2Y2VkNmJkN2EzMmI1MTZjMmIyZjM1NjVj
NzliNjFkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwCkBAIC0wLDAgKzEsMzA1IEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9N
VExGdW5jdGlvblN0aXRjaGluZy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVk
ZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEZ1bmN0aW9uU3Rp
dGNoaW5nLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdB
dHRyaWJ1dGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmli
dXRlPgoreworfTsKKworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdheXNJbmxp
bmUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3
YXlzSW5saW5lLCBGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZT4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdheXNJbmxpbmUqIGFsbG9j
KCk7CisKKyAgICBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZSog
ICAgICAgIGluaXQoKTsKK307CisKK2NsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nTm9kZSA6IHB1Ymxp
YyBOUzo6Q29weWluZzxGdW5jdGlvblN0aXRjaGluZ05vZGU+Cit7Cit9OworCitjbGFzcyBGdW5j
dGlvblN0aXRjaGluZ0lucHV0Tm9kZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25T
dGl0Y2hpbmdJbnB1dE5vZGUsIEZ1bmN0aW9uU3RpdGNoaW5nTm9kZT4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUqIGFsbG9jKCk7CisKKyAg
ICBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSogICAgICAgIGluaXQoKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRJbmRleCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
QXJndW1lbnRJbmRleChOUzo6VUludGVnZXIgYXJndW1lbnRJbmRleCk7CisKKyAgICBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlKiAgICAgICAgIGluaXQoTlM6OlVJbnRlZ2VyIGFyZ3Vt
ZW50KTsKK307CisKK2NsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlIDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSwgRnVuY3Rpb25T
dGl0Y2hpbmdOb2RlPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvblN0aXRj
aGluZ0Z1bmN0aW9uTm9kZSogYWxsb2MoKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5n
RnVuY3Rpb25Ob2RlKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5h
bWUpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudHMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEFyZ3VtZW50cyhjb25zdCBOUzo6QXJyYXkqIGFyZ3VtZW50cyk7CisKKyAg
ICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xEZXBl
bmRlbmNpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldENvbnRyb2xEZXBlbmRlbmNpZXMoY29uc3QgTlM6OkFycmF5KiBjb250cm9s
RGVwZW5kZW5jaWVzKTsKKworICAgIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUq
ICAgICAgICAgaW5pdChjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBOUzo6QXJyYXkqIGFy
Z3VtZW50cywgY29uc3QgTlM6OkFycmF5KiBjb250cm9sRGVwZW5kZW5jaWVzKTsKK307CisKK2Ns
YXNzIEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGggOiBwdWJsaWMgTlM6OkNvcHlpbmc8RnVuY3Rpb25T
dGl0Y2hpbmdHcmFwaD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25TdGl0
Y2hpbmdHcmFwaCogYWxsb2MoKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgq
ICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEZ1bmN0aW9uTmFtZShjb25zdCBOUzo6U3RyaW5nKiBmdW5jdGlvbk5hbWUp
OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE5vZGVzKGNv
bnN0IE5TOjpBcnJheSogbm9kZXMpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5j
dGlvbk5vZGUqIG91dHB1dE5vZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0T3V0cHV0Tm9kZShjb25zdCBjbGFzcyBGdW5jdGlvblN0aXRjaGlu
Z0Z1bmN0aW9uTm9kZSogb3V0cHV0Tm9kZSk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKGNvbnN0IE5TOjpBcnJheSogYXR0cmli
dXRlcyk7CisKKyAgICBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqICAgICAgICAgaW5pdChj
b25zdCBOUzo6U3RyaW5nKiBmdW5jdGlvbk5hbWUsIGNvbnN0IE5TOjpBcnJheSogbm9kZXMsIGNv
bnN0IGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBvdXRwdXROb2RlLCBjb25z
dCBOUzo6QXJyYXkqIGF0dHJpYnV0ZXMpOworfTsKKworY2xhc3MgU3RpdGNoZWRMaWJyYXJ5RGVz
Y3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgU3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogICAgICAgIGlu
aXQoKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbkdyYXBocygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRGdW5jdGlvbkdyYXBocyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9uR3JhcGhz
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogZnVuY3Rpb25zKTsKK307CisKK30KKworLy8g
c3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdB
dHRyaWJ1dGVBbHdheXNJbmxpbmUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdh
eXNJbmxpbmU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpG
dW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZT4oX01UTF9QUklWQVRFX0NMUyhN
VExGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZSkpOworfQorCisvLyBtZXRo
b2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdh
eXNJbmxpbmUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdheXNJbmxpbmU6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RnVuY3Rpb25TdGl0Y2hp
bmdBdHRyaWJ1dGVBbHdheXNJbmxpbmU+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlKiBNVEw6OkZ1bmN0
aW9uU3RpdGNoaW5nSW5wdXROb2RlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU+KF9NVExfUFJJVkFURV9DTFMo
TVRMRnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlKiBNVEw6OkZ1bmN0aW9u
U3RpdGNoaW5nSW5wdXROb2RlOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5p
dDxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlPigpOworfQorCisvLyBwcm9wZXJ0eTog
YXJndW1lbnRJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdJbnB1dE5vZGU6OmFyZ3VtZW50SW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcmd1
bWVudEluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvblN0aXRjaGlu
Z0lucHV0Tm9kZTo6c2V0QXJndW1lbnRJbmRleChOUzo6VUludGVnZXIgYXJndW1lbnRJbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0QXJndW1lbnRJbmRleF8pLCBhcmd1bWVudEluZGV4KTsKK30KKworLy8gbWV0aG9kOiBpbml0
V2l0aEFyZ3VtZW50SW5kZXg6CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5w
dXROb2RlKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlOjppbml0KE5TOjpVSW50ZWdl
ciBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0
aW9uU3RpdGNoaW5nSW5wdXROb2RlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbml0V2l0aEFy
Z3VtZW50SW5kZXhfKSwgYXJndW1lbnQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSogTVRMOjpGdW5j
dGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKSk7Cit9CisKKy8vIG1ldGhv
ZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSog
TVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZT4oKTsK
K30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5h
bWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rp
b25Ob2RlOjpzZXROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE5hbWVfKSwgbmFtZSk7
Cit9CisKKy8vIHByb3BlcnR5OiBhcmd1bWVudHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRM
OjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6YXJndW1lbnRzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGFyZ3VtZW50cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25T
dGl0Y2hpbmdGdW5jdGlvbk5vZGU6OnNldEFyZ3VtZW50cyhjb25zdCBOUzo6QXJyYXkqIGFyZ3Vt
ZW50cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0QXJndW1lbnRzXyksIGFyZ3VtZW50cyk7Cit9CisKKy8vIHByb3BlcnR5OiBjb250
cm9sRGVwZW5kZW5jaWVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdGdW5jdGlvbk5vZGU6OmNvbnRyb2xEZXBlbmRlbmNpZXMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoY29udHJvbERlcGVuZGVuY2llcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU6OnNldENvbnRyb2xEZXBlbmRlbmNpZXMoY29uc3Qg
TlM6OkFycmF5KiBjb250cm9sRGVwZW5kZW5jaWVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb250cm9sRGVwZW5kZW5jaWVzXyks
IGNvbnRyb2xEZXBlbmRlbmNpZXMpOworfQorCisvLyBtZXRob2Q6IGluaXRXaXRoTmFtZTphcmd1
bWVudHM6Y29udHJvbERlcGVuZGVuY2llczoKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdGdW5jdGlvbk5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU6Omlu
aXQoY29uc3QgTlM6OlN0cmluZyogbmFtZSwgY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMsIGNv
bnN0IE5TOjpBcnJheSogY29udHJvbERlcGVuZGVuY2llcykKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChpbml0V2l0aE5hbWVfYXJndW1lbnRzX2NvbnRyb2xEZXBlbmRlbmNp
ZXNfKSwgbmFtZSwgYXJndW1lbnRzLCBjb250cm9sRGVwZW5kZW5jaWVzKTsKK30KKworLy8gc3Rh
dGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFw
aCogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaD4oX01UTF9QUklWQVRF
X0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0dyYXBoKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAor
X01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoKiBNVEw6OkZ1bmN0aW9uU3Rp
dGNoaW5nR3JhcGg6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaD4oKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uTmFt
ZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpm
dW5jdGlvbk5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uTmFtZSkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6c2V0RnVuY3Rpb25O
YW1lKGNvbnN0IE5TOjpTdHJpbmcqIGZ1bmN0aW9uTmFtZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnVuY3Rpb25OYW1lXyksIGZ1
bmN0aW9uTmFtZSk7Cit9CisKKy8vIHByb3BlcnR5OiBub2RlcworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg6Om5vZGVzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5vZGVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvblN0aXRjaGlu
Z0dyYXBoOjpzZXROb2Rlcyhjb25zdCBOUzo6QXJyYXkqIG5vZGVzKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXROb2Rlc18pLCBub2Rl
cyk7Cit9CisKKy8vIHByb3BlcnR5OiBvdXRwdXROb2RlCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0
aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg6Om91
dHB1dE5vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG91
dHB1dE5vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5n
R3JhcGg6OnNldE91dHB1dE5vZGUoY29uc3QgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9u
Tm9kZSogb3V0cHV0Tm9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0T3V0cHV0Tm9kZV8pLCBvdXRwdXROb2RlKTsKK30KKworLy8g
cHJvcGVydHk6IGF0dHJpYnV0ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpGdW5jdGlv
blN0aXRjaGluZ0dyYXBoOjphdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0
ZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg6
OnNldEF0dHJpYnV0ZXMoY29uc3QgTlM6OkFycmF5KiBhdHRyaWJ1dGVzKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRBdHRyaWJ1dGVz
XyksIGF0dHJpYnV0ZXMpOworfQorCisvLyBtZXRob2Q6IGluaXRXaXRoRnVuY3Rpb25OYW1lOm5v
ZGVzOm91dHB1dE5vZGU6YXR0cmlidXRlczoKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdHcmFwaCogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjppbml0KGNvbnN0IE5TOjpT
dHJpbmcqIGZ1bmN0aW9uTmFtZSwgY29uc3QgTlM6OkFycmF5KiBub2RlcywgY29uc3QgTVRMOjpG
dW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSogb3V0cHV0Tm9kZSwgY29uc3QgTlM6OkFycmF5
KiBhdHRyaWJ1dGVzKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdHcmFwaCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5pdFdpdGhGdW5j
dGlvbk5hbWVfbm9kZXNfb3V0cHV0Tm9kZV9hdHRyaWJ1dGVzXyksIGZ1bmN0aW9uTmFtZSwgbm9k
ZXMsIG91dHB1dE5vZGUsIGF0dHJpYnV0ZXMpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxv
YworX01UTF9JTkxJTkUgTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBNVEw6OlN0aXRj
aGVkTGlicmFyeURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIE1UTDo6U3RpdGNoZWRMaWJy
YXJ5RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rp
b25HcmFwaHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNj
cmlwdG9yOjpmdW5jdGlvbkdyYXBocygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkdyYXBo
cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRv
cjo6c2V0RnVuY3Rpb25HcmFwaHMoY29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbkdyYXBocykKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RnVuY3Rpb25HcmFwaHNfKSwgZnVuY3Rpb25HcmFwaHMpOworfQorCisvLyBwcm9wZXJ0eTogZnVu
Y3Rpb25zCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3Jp
cHRvcjo6ZnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9ucykpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcjo6c2V0RnVuY3Rp
b25zKGNvbnN0IE5TOjpBcnJheSogZnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGdW5jdGlvbnNfKSwgZnVuY3Rpb25z
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExIZWFkZXJCcmlkZ2UuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEhlYWRlckJyaWRnZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODEwMDg1ZGRhNTdiNDFlMzk0MDgzMzgy
YzBiOTkwMmNjNTEzNGUzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExIZWFkZXJCcmlkZ2UuaHBwCkBAIC0wLDAgKzEsMjA0NyBAQAor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0
YWwvTVRMSGVhZGVyQnJpZGdlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUg
SW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjcHJhZ21hIG9uY2UKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworbmFtZXNwYWNlIE1U
TDo6UHJpdmF0ZTo6Q2xhc3MKK3sKKworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQWNjZWxlcmF0
aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcik7CitfTVRMX1BSSVZB
VEVfREVGX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3IpOwor
X01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRp
bmdCb3hHZW9tZXRyeURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQWNjZWxl
cmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQXJndW1lbnQpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMQXJndW1lbnREZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTEFycmF5VHlwZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBdHRyaWJ1dGUpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMQXR0cmlidXRlRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVf
REVGX0NMUyhNVExBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9D
TFMoTVRMQmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
QmxpdFBhc3NEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJsaXRQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJ
VkFURV9ERUZfQ0xTKE1UTEJ1ZmZlckxheW91dERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMQnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTENhcHR1cmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTENhcHR1
cmVNYW5hZ2VyKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTENvbW1hbmRCdWZmZXJEZXNjcmlw
dG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTENvbXBpbGVPcHRpb25zKTsKK19NVExfUFJJ
VkFURV9ERUZfQ0xTKE1UTENvbXB1dGVQYXNzRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTENvbXB1dGVQaXBlbGluZVJlZmxl
Y3Rpb24pOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ291bnRlclNhbXBsZUJ1ZmZlckRlc2Ny
aXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvbkNvbnN0YW50KTsKK19NVExfUFJJVkFU
RV9ERUZfQ0xTKE1UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMpOworX01UTF9QUklWQVRFX0RFRl9D
TFMoTVRMRnVuY3Rpb25EZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEZ1bmN0
aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMRnVu
Y3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMSGVhcERl
c2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVy
RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExJbnN0YW5jZUFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMSW50ZXJzZWN0
aW9uRnVuY3Rpb25EZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTExp
bmtlZEZ1bmN0aW9ucyk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExNb3Rpb25LZXlmcmFtZURh
dGEpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFBvaW50ZXJUeXBlKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTFByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KTsKK19NVExfUFJJ
VkFURV9ERUZfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcik7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NEZXNj
cmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKTsKK19NVExfUFJJ
VkFURV9ERUZfQ0xTKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGlwZWxpbmVGdW5jdGlv
bnNEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBpcGVsaW5lUmVm
bGVjdGlvbik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZXNvdXJjZVN0YXRlUGFzc0Rlc2Ny
aXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZXNv
dXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMU2FtcGxlckRlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMU2hhcmVkRXZlbnRIYW5kbGUpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMU2hh
cmVkRXZlbnRMaXN0ZW5lcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExTaGFyZWRUZXh0dXJl
SGFuZGxlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlw
dG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFN0ZW5jaWxEZXNjcmlwdG9yKTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMU3RydWN0TWVtYmVyKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFN0
cnVjdFR5cGUpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVGV4dHVyZURlc2NyaXB0b3IpOwor
X01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVGV4dHVyZVJlZmVyZW5jZVR5cGUpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVGlsZVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExUeXBlKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTFZlcnRleEF0dHJpYnV0ZSk7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NM
UyhNVExWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExWZXJ0ZXhEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFZpc2li
bGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcik7CisKK30KKworbmFtZXNwYWNlIE1UTDo6UHJpdmF0
ZTo6UHJvdG9jb2wKK3sKKworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNv
bW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEFyZ3VtZW50RW5jb2Rlcik7
CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExCaW5hcnlBcmNoaXZlKTsKK19NVExfUFJJVkFURV9E
RUZfUFJPKE1UTEJsaXRDb21tYW5kRW5jb2Rlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExC
dWZmZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ29tbWFuZEJ1ZmZlcik7CitfTVRMX1BS
SVZBVEVfREVGX1BSTyhNVExDb21tYW5kQnVmZmVyRW5jb2RlckluZm8pOworX01UTF9QUklWQVRF
X0RFRl9QUk8oTVRMQ29tbWFuZEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ29t
bWFuZFF1ZXVlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvbXB1dGVDb21tYW5kRW5jb2Rl
cik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExDb21wdXRlUGlwZWxpbmVTdGF0ZSk7CitfTVRM
X1BSSVZBVEVfREVGX1BSTyhNVExDb3VudGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENv
dW50ZXJTYW1wbGVCdWZmZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ291bnRlclNldCk7
CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExEZXB0aFN0ZW5jaWxTdGF0ZSk7CitfTVRMX1BSSVZB
VEVfREVGX1BSTyhNVExEZXZpY2UpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRHJhd2FibGUp
OworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRHluYW1pY0xpYnJhcnkpOworX01UTF9QUklWQVRF
X0RFRl9QUk8oTVRMRXZlbnQpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRmVuY2UpOworX01U
TF9QUklWQVRFX0RFRl9QUk8oTVRMRnVuY3Rpb24pOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRM
RnVuY3Rpb25IYW5kbGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRnVuY3Rpb25Mb2cpOwor
X01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uKTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlKTsKK19NVExfUFJJ
VkFURV9ERUZfUFJPKE1UTEZ1bmN0aW9uU3RpdGNoaW5nTm9kZSk7CitfTVRMX1BSSVZBVEVfREVG
X1BSTyhNVExIZWFwKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEluZGlyZWN0Q29tbWFuZEJ1
ZmZlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExJbmRpcmVjdENvbXB1dGVDb21tYW5kKTsK
K19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEluZGlyZWN0UmVuZGVyQ29tbWFuZCk7CitfTVRMX1BS
SVZBVEVfREVGX1BSTyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKTsKK19NVExfUFJJVkFU
RV9ERUZfUFJPKE1UTExpYnJhcnkpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMTG9nQ29udGFp
bmVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29k
ZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMUmFzdGVyaXphdGlvblJhdGVNYXApOworX01U
TF9QUklWQVRFX0RFRl9QUk8oTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIpOworX01UTF9QUklWQVRF
X0RFRl9QUk8oTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhN
VExSZXNvdXJjZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExSZXNvdXJjZVN0YXRlQ29tbWFu
ZEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMU2FtcGxlclN0YXRlKTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTFNoYXJlZEV2ZW50KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1U
TFRleHR1cmUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUp
OworCit9CisKK25hbWVzcGFjZSBNVEw6OlByaXZhdGU6OlNlbGVjdG9yCit7CisKK19NVExfUFJJ
VkFURV9ERUZfU0VMKEdQVUVuZFRpbWUsCisgICAgIkdQVUVuZFRpbWUiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKEdQVVN0YXJ0VGltZSwKKyAgICAiR1BVU3RhcnRUaW1lIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChVUkwsCisgICAgIlVSTCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWNjZWxl
cmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIsCisgICAgImFjY2VsZXJhdGlvblN0cnVjdHVy
ZUNvbW1hbmRFbmNvZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhY2NlbGVyYXRpb25TdHJ1
Y3R1cmVTaXplc1dpdGhEZXNjcmlwdG9yXywKKyAgICAiYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6
ZXNXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFjY2VzcywKKyAgICAi
YWNjZXNzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRDb21wbGV0ZWRIYW5kbGVyXywKKyAg
ICAiYWRkQ29tcGxldGVkSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFkZENvbXB1
dGVQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAiYWRkQ29tcHV0
ZVBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChhZGREZWJ1Z01hcmtlcl9yYW5nZV8sCisgICAgImFkZERlYnVnTWFya2VyOnJhbmdl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWRkRnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9saWJy
YXJ5X2Vycm9yXywKKyAgICAiYWRkRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpsaWJyYXJ5OmVycm9y
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWRkUHJlc2VudGVkSGFuZGxlcl8sCisgICAgImFk
ZFByZXNlbnRlZEhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRSZW5kZXJQaXBl
bGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAiYWRkUmVuZGVyUGlwZWxp
bmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGFkZFNjaGVkdWxlZEhhbmRsZXJfLAorICAgICJhZGRTY2hlZHVsZWRIYW5kbGVyOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoYWRkVGlsZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2Ny
aXB0b3JfZXJyb3JfLAorICAgICJhZGRUaWxlUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVz
Y3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFsaWdubWVudCwKKyAgICAi
YWxpZ25tZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhbGxvY2F0ZWRTaXplLAorICAgICJh
bGxvY2F0ZWRTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhbGxvd0R1cGxpY2F0ZUludGVy
c2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbiwKKyAgICAiYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rp
b25GdW5jdGlvbkludm9jYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFsbG93R1BVT3B0
aW1pemVkQ29udGVudHMsCisgICAgImFsbG93R1BVT3B0aW1pemVkQ29udGVudHMiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGFscGhhQmxlbmRPcGVyYXRpb24sCisgICAgImFscGhhQmxlbmRPcGVy
YXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFyZUJhcnljZW50cmljQ29vcmRzU3VwcG9y
dGVkLAorICAgICJhcmVCYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBvcnRlZCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYXJlUHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRpb25zU3VwcG9ydGVkLAorICAgICJh
cmVQcm9ncmFtbWFibGVTYW1wbGVQb3NpdGlvbnNTdXBwb3J0ZWQiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGFyZVJhc3Rlck9yZGVyR3JvdXBzU3VwcG9ydGVkLAorICAgICJhcmVSYXN0ZXJPcmRl
ckdyb3Vwc1N1cHBvcnRlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXJndW1lbnRCdWZmZXJz
U3VwcG9ydCwKKyAgICAiYXJndW1lbnRCdWZmZXJzU3VwcG9ydCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoYXJndW1lbnREZXNjcmlwdG9yLAorICAgICJhcmd1bWVudERlc2NyaXB0b3IiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGFyZ3VtZW50SW5kZXgsCisgICAgImFyZ3VtZW50SW5kZXgiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGFyZ3VtZW50SW5kZXhTdHJpZGUsCisgICAgImFyZ3VtZW50
SW5kZXhTdHJpZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFyZ3VtZW50cywKKyAgICAiYXJn
dW1lbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcnJheUxlbmd0aCwKKyAgICAiYXJyYXlM
ZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFycmF5VHlwZSwKKyAgICAiYXJyYXlUeXBl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhdHRyaWJ1dGVJbmRleCwKKyAgICAiYXR0cmlidXRl
SW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGF0dHJpYnV0ZVR5cGUsCisgICAgImF0dHJp
YnV0ZVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGF0dHJpYnV0ZXMsCisgICAgImF0dHJp
YnV0ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJhY2tGYWNlU3RlbmNpbCwKKyAgICAiYmFj
a0ZhY2VTdGVuY2lsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChiaW5hcnlBcmNoaXZlcywKKyAg
ICAiYmluYXJ5QXJjaGl2ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJpbmFyeUZ1bmN0aW9u
cywKKyAgICAiYmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChibGl0Q29t
bWFuZEVuY29kZXIsCisgICAgImJsaXRDb21tYW5kRW5jb2RlciIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoYmxpdENvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3JfLAorICAgICJibGl0Q29tbWFu
ZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJsaXRQYXNz
RGVzY3JpcHRvciwKKyAgICAiYmxpdFBhc3NEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChib3JkZXJDb2xvciwKKyAgICAiYm9yZGVyQ29sb3IiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGJvdW5kaW5nQm94QnVmZmVyLAorICAgICJib3VuZGluZ0JveEJ1ZmZlciIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoYm91bmRpbmdCb3hCdWZmZXJPZmZzZXQsCisgICAgImJvdW5kaW5nQm94
QnVmZmVyT2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChib3VuZGluZ0JveEJ1ZmZlcnMs
CisgICAgImJvdW5kaW5nQm94QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYm91bmRp
bmdCb3hDb3VudCwKKyAgICAiYm91bmRpbmdCb3hDb3VudCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoYm91bmRpbmdCb3hTdHJpZGUsCisgICAgImJvdW5kaW5nQm94U3RyaWRlIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChidWZmZXIsCisgICAgImJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoYnVmZmVyQWxpZ25tZW50LAorICAgICJidWZmZXJBbGlnbm1lbnQiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGJ1ZmZlckJ5dGVzUGVyUm93LAorICAgICJidWZmZXJCeXRlc1BlclJvdyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVyRGF0YVNpemUsCisgICAgImJ1ZmZlckRhdGFTaXpl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZmZXJEYXRhVHlwZSwKKyAgICAiYnVmZmVyRGF0
YVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlckluZGV4LAorICAgICJidWZmZXJJ
bmRleCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVyT2Zmc2V0LAorICAgICJidWZmZXJP
ZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlclBvaW50ZXJUeXBlLAorICAgICJi
dWZmZXJQb2ludGVyVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVyU3RydWN0VHlw
ZSwKKyAgICAiYnVmZmVyU3RydWN0VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVy
cywKKyAgICAiYnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVpbGRBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVfZGVzY3JpcHRvcl9zY3JhdGNoQnVmZmVyX3NjcmF0Y2hCdWZmZXJPZmZzZXRf
LAorICAgICJidWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZTpkZXNjcmlwdG9yOnNjcmF0Y2hCdWZm
ZXI6c2NyYXRjaEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNhcHR1cmVP
YmplY3QsCisgICAgImNhcHR1cmVPYmplY3QiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNsZWFy
QmFycmllciwKKyAgICAiY2xlYXJCYXJyaWVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjbGVh
ckNvbG9yLAorICAgICJjbGVhckNvbG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjbGVhckRl
cHRoLAorICAgICJjbGVhckRlcHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjbGVhclN0ZW5j
aWwsCisgICAgImNsZWFyU3RlbmNpbCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29sb3JBdHRh
Y2htZW50cywKKyAgICAiY29sb3JBdHRhY2htZW50cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
Y29sdW1uLAorICAgICJjb2x1bW4iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbW1hbmRCdWZm
ZXIsCisgICAgImNvbW1hbmRCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbW1hbmRC
dWZmZXJXaXRoRGVzY3JpcHRvcl8sCisgICAgImNvbW1hbmRCdWZmZXJXaXRoRGVzY3JpcHRvcjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbW1hbmRCdWZmZXJXaXRoVW5yZXRhaW5lZFJlZmVy
ZW5jZXMsCisgICAgImNvbW1hbmRCdWZmZXJXaXRoVW5yZXRhaW5lZFJlZmVyZW5jZXMiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNvbW1hbmRRdWV1ZSwKKyAgICAiY29tbWFuZFF1ZXVlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChjb21tYW5kVHlwZXMsCisgICAgImNvbW1hbmRUeXBlcyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWl0LAorICAgICJjb21taXQiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGNvbXBhcmVGdW5jdGlvbiwKKyAgICAiY29tcGFyZUZ1bmN0aW9uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChjb21wdXRlQ29tbWFuZEVuY29kZXIsCisgICAgImNvbXB1dGVDb21t
YW5kRW5jb2RlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tcHV0ZUNvbW1hbmRFbmNvZGVy
V2l0aERlc2NyaXB0b3JfLAorICAgICJjb21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRv
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEaXNw
YXRjaFR5cGVfLAorICAgICJjb21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGlzcGF0Y2hUeXBlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tcHV0ZUZ1bmN0aW9uLAorICAgICJjb21wdXRlRnVu
Y3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbXB1dGVQYXNzRGVzY3JpcHRvciwKKyAg
ICAiY29tcHV0ZVBhc3NEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb25jdXJy
ZW50RGlzcGF0Y2hUaHJlYWRncm91cHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAiY29u
Y3VycmVudERpc3BhdGNoVGhyZWFkZ3JvdXBzOnRocmVhZHNQZXJUaHJlYWRncm91cDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNvbmN1cnJlbnREaXNwYXRjaFRocmVhZHNfdGhyZWFkc1BlclRo
cmVhZGdyb3VwXywKKyAgICAiY29uY3VycmVudERpc3BhdGNoVGhyZWFkczp0aHJlYWRzUGVyVGhy
ZWFkZ3JvdXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb25zdGFudEJsb2NrQWxpZ25tZW50
LAorICAgICJjb25zdGFudEJsb2NrQWxpZ25tZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChj
b25zdGFudERhdGFBdEluZGV4XywKKyAgICAiY29uc3RhbnREYXRhQXRJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGNvbnN0YW50VmFsdWVzLAorICAgICJjb25zdGFudFZhbHVlcyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY29udGVudHMsCisgICAgImNvbnRlbnRzIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChjb250cm9sRGVwZW5kZW5jaWVzLAorICAgICJjb250cm9sRGVwZW5kZW5j
aWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zX3Rv
VGlsZVJlZ2lvbnNfd2l0aFRpbGVTaXplX2FsaWdubWVudE1vZGVfbnVtUmVnaW9uc18sCisgICAg
ImNvbnZlcnRTcGFyc2VQaXhlbFJlZ2lvbnM6dG9UaWxlUmVnaW9uczp3aXRoVGlsZVNpemU6YWxp
Z25tZW50TW9kZTpudW1SZWdpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29udmVydFNw
YXJzZVRpbGVSZWdpb25zX3RvUGl4ZWxSZWdpb25zX3dpdGhUaWxlU2l6ZV9udW1SZWdpb25zXywK
KyAgICAiY29udmVydFNwYXJzZVRpbGVSZWdpb25zOnRvUGl4ZWxSZWdpb25zOndpdGhUaWxlU2l6
ZTpudW1SZWdpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUFjY2VsZXJhdGlvblN0
cnVjdHVyZV90b0FjY2VsZXJhdGlvblN0cnVjdHVyZV8sCisgICAgImNvcHlBY2NlbGVyYXRpb25T
dHJ1Y3R1cmU6dG9BY2NlbGVyYXRpb25TdHJ1Y3R1cmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChjb3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlvblN0cnVjdHVyZV90b0FjY2VsZXJhdGlvblN0cnVj
dHVyZV8sCisgICAgImNvcHlBbmRDb21wYWN0QWNjZWxlcmF0aW9uU3RydWN0dXJlOnRvQWNjZWxl
cmF0aW9uU3RydWN0dXJlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUZyb21CdWZmZXJf
c291cmNlT2Zmc2V0X3NvdXJjZUJ5dGVzUGVyUm93X3NvdXJjZUJ5dGVzUGVySW1hZ2Vfc291cmNl
U2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGljZV9kZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0
aW9uT3JpZ2luXywKKyAgICAiY29weUZyb21CdWZmZXI6c291cmNlT2Zmc2V0OnNvdXJjZUJ5dGVz
UGVyUm93OnNvdXJjZUJ5dGVzUGVySW1hZ2U6c291cmNlU2l6ZTp0b1RleHR1cmU6ZGVzdGluYXRp
b25TbGljZTpkZXN0aW5hdGlvbkxldmVsOmRlc3RpbmF0aW9uT3JpZ2luOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoY29weUZyb21CdWZmZXJfc291cmNlT2Zmc2V0X3NvdXJjZUJ5dGVzUGVyUm93
X3NvdXJjZUJ5dGVzUGVySW1hZ2Vfc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGlj
ZV9kZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luX29wdGlvbnNfLAorICAgICJjb3B5
RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6c291cmNlQnl0ZXNQZXJSb3c6c291cmNlQnl0ZXNQZXJJ
bWFnZTpzb3VyY2VTaXplOnRvVGV4dHVyZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2
ZWw6ZGVzdGluYXRpb25PcmlnaW46b3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNv
cHlGcm9tQnVmZmVyX3NvdXJjZU9mZnNldF90b0J1ZmZlcl9kZXN0aW5hdGlvbk9mZnNldF9zaXpl
XywKKyAgICAiY29weUZyb21CdWZmZXI6c291cmNlT2Zmc2V0OnRvQnVmZmVyOmRlc3RpbmF0aW9u
T2Zmc2V0OnNpemU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbVRleHR1cmVfc291
cmNlU2xpY2Vfc291cmNlTGV2ZWxfc291cmNlT3JpZ2luX3NvdXJjZVNpemVfdG9CdWZmZXJfZGVz
dGluYXRpb25PZmZzZXRfZGVzdGluYXRpb25CeXRlc1BlclJvd19kZXN0aW5hdGlvbkJ5dGVzUGVy
SW1hZ2VfLAorICAgICJjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291
cmNlT3JpZ2luOnNvdXJjZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVzdGluYXRp
b25CeXRlc1BlclJvdzpkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChjb3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNlTGV2ZWxfc291cmNlT3Jp
Z2luX3NvdXJjZVNpemVfdG9CdWZmZXJfZGVzdGluYXRpb25PZmZzZXRfZGVzdGluYXRpb25CeXRl
c1BlclJvd19kZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2Vfb3B0aW9uc18sCisgICAgImNvcHlGcm9t
VGV4dHVyZTpzb3VyY2VTbGljZTpzb3VyY2VMZXZlbDpzb3VyY2VPcmlnaW46c291cmNlU2l6ZTp0
b0J1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDpkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OmRlc3RpbmF0
aW9uQnl0ZXNQZXJJbWFnZTpvcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUZy
b21UZXh0dXJlX3NvdXJjZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJjZU9yaWdpbl9zb3VyY2VTaXpl
X3RvVGV4dHVyZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVzdGluYXRpb25P
cmlnaW5fLAorICAgICJjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291
cmNlT3JpZ2luOnNvdXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRp
b25MZXZlbDpkZXN0aW5hdGlvbk9yaWdpbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvcHlG
cm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF90b1RleHR1cmVfZGVzdGluYXRpb25T
bGljZV9kZXN0aW5hdGlvbkxldmVsX3NsaWNlQ291bnRfbGV2ZWxDb3VudF8sCisgICAgImNvcHlG
cm9tVGV4dHVyZTpzb3VyY2VTbGljZTpzb3VyY2VMZXZlbDp0b1RleHR1cmU6ZGVzdGluYXRpb25T
bGljZTpkZXN0aW5hdGlvbkxldmVsOnNsaWNlQ291bnQ6bGV2ZWxDb3VudDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGNvcHlGcm9tVGV4dHVyZV90b1RleHR1cmVfLAorICAgICJjb3B5RnJvbVRl
eHR1cmU6dG9UZXh0dXJlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUluZGlyZWN0Q29t
bWFuZEJ1ZmZlcl9zb3VyY2VSYW5nZV9kZXN0aW5hdGlvbl9kZXN0aW5hdGlvbkluZGV4XywKKyAg
ICAiY29weUluZGlyZWN0Q29tbWFuZEJ1ZmZlcjpzb3VyY2VSYW5nZTpkZXN0aW5hdGlvbjpkZXN0
aW5hdGlvbkluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weVBhcmFtZXRlckRhdGFU
b0J1ZmZlcl9vZmZzZXRfLAorICAgICJjb3B5UGFyYW1ldGVyRGF0YVRvQnVmZmVyOm9mZnNldDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvdW50ZXJTZXQsCisgICAgImNvdW50ZXJTZXQiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGNvdW50ZXJTZXRzLAorICAgICJjb3VudGVyU2V0cyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY291bnRlcnMsCisgICAgImNvdW50ZXJzIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChjcHVDYWNoZU1vZGUsCisgICAgImNwdUNhY2hlTW9kZSIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoY3VycmVudEFsbG9jYXRlZFNpemUsCisgICAgImN1cnJlbnRBbGxvY2F0
ZWRTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkYXRhLAorICAgICJkYXRhIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChkYXRhU2l6ZSwKKyAgICAiZGF0YVNpemUiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGRhdGFUeXBlLAorICAgICJkYXRhVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZGVhbGxvYywKKyAgICAiZGVhbGxvYyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVidWdM
b2NhdGlvbiwKKyAgICAiZGVidWdMb2NhdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVi
dWdTaWducG9zdHMsCisgICAgImRlYnVnU2lnbnBvc3RzIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChkZWZhdWx0Q2FwdHVyZVNjb3BlLAorICAgICJkZWZhdWx0Q2FwdHVyZVNjb3BlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQsCisgICAgImRlZmF1bHRS
YXN0ZXJTYW1wbGVDb3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVwdGgsCisgICAgImRl
cHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0aEF0dGFjaG1lbnQsCisgICAgImRlcHRo
QXR0YWNobWVudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVwdGhBdHRhY2htZW50UGl4ZWxG
b3JtYXQsCisgICAgImRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChkZXB0aENvbXBhcmVGdW5jdGlvbiwKKyAgICAiZGVwdGhDb21wYXJlRnVuY3Rpb24i
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlcHRoRmFpbHVyZU9wZXJhdGlvbiwKKyAgICAiZGVw
dGhGYWlsdXJlT3BlcmF0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0aFBsYW5lLAor
ICAgICJkZXB0aFBsYW5lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0aFJlc29sdmVGaWx0
ZXIsCisgICAgImRlcHRoUmVzb2x2ZUZpbHRlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVw
dGhTdGVuY2lsUGFzc09wZXJhdGlvbiwKKyAgICAiZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVzY3JpcHRvciwKKyAgICAiZGVzY3JpcHRvciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZGVzdGluYXRpb24sCisgICAgImRlc3RpbmF0aW9uIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChkZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IsCisgICAgImRl
c3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVzdGlu
YXRpb25SR0JCbGVuZEZhY3RvciwKKyAgICAiZGVzdGluYXRpb25SR0JCbGVuZEZhY3RvciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZGV2aWNlLAorICAgICJkZXZpY2UiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGRpZE1vZGlmeVJhbmdlXywKKyAgICAiZGlkTW9kaWZ5UmFuZ2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChkaXNwYXRjaFF1ZXVlLAorICAgICJkaXNwYXRjaFF1ZXVlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChkaXNwYXRjaFRocmVhZGdyb3Vwc190aHJlYWRzUGVyVGhyZWFk
Z3JvdXBfLAorICAgICJkaXNwYXRjaFRocmVhZGdyb3Vwczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkaXNwYXRjaFRocmVhZGdyb3Vwc1dpdGhJbmRpcmVj
dEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF90aHJlYWRzUGVyVGhyZWFkZ3JvdXBfLAorICAg
ICJkaXNwYXRjaFRocmVhZGdyb3Vwc1dpdGhJbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9m
ZnNldDp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkaXNw
YXRjaFRocmVhZHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAiZGlzcGF0Y2hUaHJlYWRz
OnRocmVhZHNQZXJUaHJlYWRncm91cDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRpc3BhdGNo
VGhyZWFkc1BlclRpbGVfLAorICAgICJkaXNwYXRjaFRocmVhZHNQZXJUaWxlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hUeXBlLAorICAgICJkaXNwYXRjaFR5cGUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRjaEluZGV4QnVmZmVyX3BhdGNo
SW5kZXhCdWZmZXJPZmZzZXRfY29udHJvbFBvaW50SW5kZXhCdWZmZXJfY29udHJvbFBvaW50SW5k
ZXhCdWZmZXJPZmZzZXRfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAg
ICJkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zm
c2V0OmNvbnRyb2xQb2ludEluZGV4QnVmZmVyOmNvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0
OmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoZHJhd0luZGV4ZWRQYXRjaGVzX3BhdGNoU3RhcnRfcGF0Y2hDb3VudF9wYXRjaEluZGV4
QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfY29udHJvbFBvaW50SW5kZXhCdWZmZXJfY29u
dHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfLAor
ICAgICJkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENvdW50OnBhdGNoSW5kZXhC
dWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1ZmZlcjpjb250
cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VJbnN0YW5jZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNo
Q291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQb2lu
dEluZGV4QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRf
YmFzZUluc3RhbmNlX3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcl90ZXNzZWxsYXRpb25GYWN0b3JC
dWZmZXJPZmZzZXRfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVySW5zdGFuY2VTdHJpZGVfLAorICAg
ICJkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENvdW50OnBhdGNoSW5kZXhCdWZm
ZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1ZmZlcjpjb250cm9s
UG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VJbnN0YW5jZTp0ZXNzZWxs
YXRpb25GYWN0b3JCdWZmZXI6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0OnRlc3NlbGxh
dGlvbkZhY3RvckJ1ZmZlckluc3RhbmNlU3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
ZHJhd0luZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5kZXhUeXBlX2luZGV4QnVmZmVyX2lu
ZGV4QnVmZmVyT2Zmc2V0XywKKyAgICAiZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4Q291bnQ6
aW5kZXhUeXBlOmluZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoZHJhd0luZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5kZXhUeXBlX2luZGV4
QnVmZmVyX2luZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfLAorICAgICJkcmF3SW5kZXhl
ZFByaW1pdGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJP
ZmZzZXQ6aW5zdGFuY2VDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVk
UHJpbWl0aXZlc19pbmRleENvdW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9m
ZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VWZXJ0ZXhfYmFzZUluc3RhbmNlXywKKyAgICAiZHJhd0lu
ZGV4ZWRQcmltaXRpdmVzOmluZGV4Q291bnQ6aW5kZXhUeXBlOmluZGV4QnVmZmVyOmluZGV4QnVm
ZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZVZlcnRleDpiYXNlSW5zdGFuY2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhUeXBlX2luZGV4QnVm
ZmVyX2luZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0
XywKKyAgICAiZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRl
eEJ1ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGRyYXdQYXRjaGVzX3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRl
eEJ1ZmZlck9mZnNldF9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8sCisgICAg
ImRyYXdQYXRjaGVzOnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDppbmRp
cmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGRyYXdQYXRjaGVzX3BhdGNoU3RhcnRfcGF0Y2hDb3VudF9wYXRjaEluZGV4QnVmZmVyX3BhdGNo
SW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfLAorICAgICJkcmF3
UGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4
QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoZHJhd1BhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZm
ZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV90ZXNz
ZWxsYXRpb25GYWN0b3JCdWZmZXJfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0X3Rlc3Nl
bGxhdGlvbkZhY3RvckJ1ZmZlckluc3RhbmNlU3RyaWRlXywKKyAgICAiZHJhd1BhdGNoZXM6cGF0
Y2hTdGFydDpwYXRjaENvdW50OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNl
dDppbnN0YW5jZUNvdW50OmJhc2VJbnN0YW5jZTp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXI6dGVz
c2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0OnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3Rh
bmNlU3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd1ByaW1pdGl2ZXNfaW5kaXJl
Y3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJkcmF3UHJpbWl0aXZlczppbmRp
cmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGRyYXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50XywKKyAgICAiZHJhd1ByaW1p
dGl2ZXM6dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChk
cmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0ZXhDb3VudF9pbnN0YW5jZUNvdW50XywKKyAg
ICAiZHJhd1ByaW1pdGl2ZXM6dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6aW5zdGFuY2VDb3VudDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0X3ZlcnRl
eENvdW50X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlXywKKyAgICAiZHJhd1ByaW1pdGl2ZXM6
dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChkcmF3YWJsZUlELAorICAgICJkcmF3YWJsZUlEIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChlbGVtZW50QXJyYXlUeXBlLAorICAgICJlbGVtZW50QXJyYXlUeXBl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbGVtZW50SXNBcmd1bWVudEJ1ZmZlciwKKyAgICAi
ZWxlbWVudElzQXJndW1lbnRCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVsZW1lbnRQ
b2ludGVyVHlwZSwKKyAgICAiZWxlbWVudFBvaW50ZXJUeXBlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChlbGVtZW50U3RydWN0VHlwZSwKKyAgICAiZWxlbWVudFN0cnVjdFR5cGUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlwZSwKKyAgICAiZWxlbWVu
dFRleHR1cmVSZWZlcmVuY2VUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbGVtZW50VHlw
ZSwKKyAgICAiZWxlbWVudFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVuY29kZVNpZ25h
bEV2ZW50X3ZhbHVlXywKKyAgICAiZW5jb2RlU2lnbmFsRXZlbnQ6dmFsdWU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChlbmNvZGVXYWl0Rm9yRXZlbnRfdmFsdWVfLAorICAgICJlbmNvZGVXYWl0
Rm9yRXZlbnQ6dmFsdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmNvZGVkTGVuZ3RoLAor
ICAgICJlbmNvZGVkTGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmNvZGVyTGFiZWws
CisgICAgImVuY29kZXJMYWJlbCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZW5kRW5jb2Rpbmcs
CisgICAgImVuZEVuY29kaW5nIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmRPZkVuY29kZXJT
YW1wbGVJbmRleCwKKyAgICAiZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCwKKyAgICAiZW5kT2ZGcmFnbWVudFNh
bXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmRPZlZlcnRleFNhbXBsZUluZGV4
LAorICAgICJlbmRPZlZlcnRleFNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChl
bnF1ZXVlLAorICAgICJlbnF1ZXVlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlcnJvciwKKyAg
ICAiZXJyb3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVycm9yT3B0aW9ucywKKyAgICAiZXJy
b3JPcHRpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlcnJvclN0YXRlLAorICAgICJlcnJv
clN0YXRlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcl9p
bmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8sCisgICAgImV4ZWN1dGVDb21tYW5k
c0luQnVmZmVyOmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXJfd2l0aFJhbmdlXywKKyAgICAi
ZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXI6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZmFzdE1hdGhFbmFibGVkLAorICAgICJmYXN0TWF0aEVuYWJsZWQiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGZpbGxCdWZmZXJfcmFuZ2VfdmFsdWVfLAorICAgICJmaWxsQnVmZmVyOnJhbmdl
OnZhbHVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZmlyc3RNaXBtYXBJblRhaWwsCisgICAg
ImZpcnN0TWlwbWFwSW5UYWlsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmb3JtYXQsCisgICAg
ImZvcm1hdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5
RnVuY3Rpb25zLAorICAgICJmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGZyYWdtZW50QXJndW1lbnRzLAorICAgICJmcmFnbWVudEFyZ3Vt
ZW50cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnJhZ21lbnRCdWZmZXJzLAorICAgICJmcmFn
bWVudEJ1ZmZlcnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZyYWdtZW50RnVuY3Rpb24sCisg
ICAgImZyYWdtZW50RnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZyYWdtZW50TGlu
a2VkRnVuY3Rpb25zLAorICAgICJmcmFnbWVudExpbmtlZEZ1bmN0aW9ucyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMsCisgICAgImZyYWdtZW50UHJl
bG9hZGVkTGlicmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmcm9udEZhY2VTdGVuY2ls
LAorICAgICJmcm9udEZhY2VTdGVuY2lsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmdW5jdGlv
biwKKyAgICAiZnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9uQ29uc3Rh
bnRzRGljdGlvbmFyeSwKKyAgICAiZnVuY3Rpb25Db25zdGFudHNEaWN0aW9uYXJ5Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbkNvdW50LAorICAgICJmdW5jdGlvbkNvdW50Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbkRlc2NyaXB0b3IsCisgICAgImZ1bmN0aW9uRGVz
Y3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25HcmFwaHMsCisgICAgImZ1
bmN0aW9uR3JhcGhzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbkhhbmRsZVdpdGhG
dW5jdGlvbl8sCisgICAgImZ1bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb25fc3RhZ2VfLAorICAgICJmdW5j
dGlvbkhhbmRsZVdpdGhGdW5jdGlvbjpzdGFnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1
bmN0aW9uTmFtZSwKKyAgICAiZnVuY3Rpb25OYW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChm
dW5jdGlvbk5hbWVzLAorICAgICJmdW5jdGlvbk5hbWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChmdW5jdGlvblR5cGUsCisgICAgImZ1bmN0aW9uVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZnVuY3Rpb25zLAorICAgICJmdW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdl
bmVyYXRlTWlwbWFwc0ZvclRleHR1cmVfLAorICAgICJnZW5lcmF0ZU1pcG1hcHNGb3JUZXh0dXJl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZ2VvbWV0cnlEZXNjcmlwdG9ycywKKyAgICAiZ2Vv
bWV0cnlEZXNjcmlwdG9ycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZ2V0Qnl0ZXNfYnl0ZXNQ
ZXJSb3dfYnl0ZXNQZXJJbWFnZV9mcm9tUmVnaW9uX21pcG1hcExldmVsX3NsaWNlXywKKyAgICAi
Z2V0Qnl0ZXM6Ynl0ZXNQZXJSb3c6Ynl0ZXNQZXJJbWFnZTpmcm9tUmVnaW9uOm1pcG1hcExldmVs
OnNsaWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZ2V0Qnl0ZXNfYnl0ZXNQZXJSb3dfZnJv
bVJlZ2lvbl9taXBtYXBMZXZlbF8sCisgICAgImdldEJ5dGVzOmJ5dGVzUGVyUm93OmZyb21SZWdp
b246bWlwbWFwTGV2ZWw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXREZWZhdWx0U2FtcGxl
UG9zaXRpb25zX2NvdW50XywKKyAgICAiZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9uczpjb3VudDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdldFNhbXBsZVBvc2l0aW9uc19jb3VudF8sCisgICAg
ImdldFNhbXBsZVBvc2l0aW9uczpjb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdldFRl
eHR1cmVBY2Nlc3NDb3VudGVyc19yZWdpb25fbWlwTGV2ZWxfc2xpY2VfcmVzZXRDb3VudGVyc19j
b3VudGVyc0J1ZmZlcl9jb3VudGVyc0J1ZmZlck9mZnNldF8sCisgICAgImdldFRleHR1cmVBY2Nl
c3NDb3VudGVyczpyZWdpb246bWlwTGV2ZWw6c2xpY2U6cmVzZXRDb3VudGVyczpjb3VudGVyc0J1
ZmZlcjpjb3VudGVyc0J1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdyb3Vw
cywKKyAgICAiZ3JvdXBzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChoYXNVbmlmaWVkTWVtb3J5
LAorICAgICJoYXNVbmlmaWVkTWVtb3J5Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChoYXphcmRU
cmFja2luZ01vZGUsCisgICAgImhhemFyZFRyYWNraW5nTW9kZSIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoaGVhcCwKKyAgICAiaGVhcCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaGVhcEJ1ZmZl
clNpemVBbmRBbGlnbldpdGhMZW5ndGhfb3B0aW9uc18sCisgICAgImhlYXBCdWZmZXJTaXplQW5k
QWxpZ25XaXRoTGVuZ3RoOm9wdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChoZWFwT2Zm
c2V0LAorICAgICJoZWFwT2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChoZWFwVGV4dHVy
ZVNpemVBbmRBbGlnbldpdGhEZXNjcmlwdG9yXywKKyAgICAiaGVhcFRleHR1cmVTaXplQW5kQWxp
Z25XaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhlaWdodCwKKyAgICAi
aGVpZ2h0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChob3Jpem9udGFsLAorICAgICJob3Jpem9u
dGFsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChob3Jpem9udGFsU2FtcGxlU3RvcmFnZSwKKyAg
ICAiaG9yaXpvbnRhbFNhbXBsZVN0b3JhZ2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGltYWdl
YmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zXywKKyAgICAiaW1hZ2VibG9ja01lbW9yeUxl
bmd0aEZvckRpbWVuc2lvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbWFnZWJsb2NrU2Ft
cGxlTGVuZ3RoLAorICAgICJpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChpbmRleCwKKyAgICAiaW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGV4
QnVmZmVyLAorICAgICJpbmRleEJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5kZXhC
dWZmZXJJbmRleCwKKyAgICAiaW5kZXhCdWZmZXJJbmRleCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoaW5kZXhCdWZmZXJPZmZzZXQsCisgICAgImluZGV4QnVmZmVyT2Zmc2V0Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChpbmRleFR5cGUsCisgICAgImluZGV4VHlwZSIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoaW5kaXJlY3RDb21wdXRlQ29tbWFuZEF0SW5kZXhfLAorICAgICJpbmRpcmVjdENv
bXB1dGVDb21tYW5kQXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGlyZWN0UmVu
ZGVyQ29tbWFuZEF0SW5kZXhfLAorICAgICJpbmRpcmVjdFJlbmRlckNvbW1hbmRBdEluZGV4OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5oZXJpdEJ1ZmZlcnMsCisgICAgImluaGVyaXRCdWZm
ZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbmhlcml0UGlwZWxpbmVTdGF0ZSwKKyAgICAi
aW5oZXJpdFBpcGVsaW5lU3RhdGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXQsCisgICAg
ImluaXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoQXJndW1lbnRJbmRleF8sCisg
ICAgImluaXRXaXRoQXJndW1lbnRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXRX
aXRoRGlzcGF0Y2hRdWV1ZV8sCisgICAgImluaXRXaXRoRGlzcGF0Y2hRdWV1ZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGluaXRXaXRoRnVuY3Rpb25OYW1lX25vZGVzX291dHB1dE5vZGVfYXR0
cmlidXRlc18sCisgICAgImluaXRXaXRoRnVuY3Rpb25OYW1lOm5vZGVzOm91dHB1dE5vZGU6YXR0
cmlidXRlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoTmFtZV9hcmd1bWVudHNf
Y29udHJvbERlcGVuZGVuY2llc18sCisgICAgImluaXRXaXRoTmFtZTphcmd1bWVudHM6Y29udHJv
bERlcGVuZGVuY2llczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoU2FtcGxlQ291
bnRfLAorICAgICJpbml0V2l0aFNhbXBsZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aW5pdFdpdGhTYW1wbGVDb3VudF9ob3Jpem9udGFsX3ZlcnRpY2FsXywKKyAgICAiaW5pdFdpdGhT
YW1wbGVDb3VudDpob3Jpem9udGFsOnZlcnRpY2FsOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aW5wdXRQcmltaXRpdmVUb3BvbG9neSwKKyAgICAiaW5wdXRQcmltaXRpdmVUb3BvbG9neSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaW5zZXJ0RGVidWdDYXB0dXJlQm91bmRhcnksCisgICAgImlu
c2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnNlcnRE
ZWJ1Z1NpZ25wb3N0XywKKyAgICAiaW5zZXJ0RGVidWdTaWducG9zdDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGluc2VydExpYnJhcmllcywKKyAgICAiaW5zZXJ0TGlicmFyaWVzIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChpbnN0YWxsTmFtZSwKKyAgICAiaW5zdGFsbE5hbWUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGluc3RhbmNlQ291bnQsCisgICAgImluc3RhbmNlQ291bnQiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlciwKKyAgICAiaW5zdGFu
Y2VEZXNjcmlwdG9yQnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZURlc2Ny
aXB0b3JCdWZmZXJPZmZzZXQsCisgICAgImluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlLAorICAgICJp
bnN0YW5jZURlc2NyaXB0b3JTdHJpZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluc3RhbmNl
RGVzY3JpcHRvclR5cGUsCisgICAgImluc3RhbmNlRGVzY3JpcHRvclR5cGUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMsCisgICAgImluc3Rh
bmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yLAorICAgICJpbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlRGVzY3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZU9mZnNldCwKKyAgICAiaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaW9zdXJmYWNlLAorICAgICJpb3N1cmZhY2UiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGlvc3VyZmFjZVBsYW5lLAorICAgICJpb3N1cmZhY2VQbGFuZSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNBY3RpdmUsCisgICAgImlzQWN0aXZlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChpc0FsaWFzYWJsZSwKKyAgICAiaXNBbGlhc2FibGUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGlzQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCwKKyAgICAiaXNBbHBoYVRv
Q292ZXJhZ2VFbmFibGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0FscGhhVG9PbmVFbmFi
bGVkLAorICAgICJpc0FscGhhVG9PbmVFbmFibGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChp
c0JsZW5kaW5nRW5hYmxlZCwKKyAgICAiaXNCbGVuZGluZ0VuYWJsZWQiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGlzQ2FwdHVyaW5nLAorICAgICJpc0NhcHR1cmluZyIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoaXNEZXB0aDI0U3RlbmNpbDhQaXhlbEZvcm1hdFN1cHBvcnRlZCwKKyAgICAiaXNE
ZXB0aDI0U3RlbmNpbDhQaXhlbEZvcm1hdFN1cHBvcnRlZCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoaXNEZXB0aFRleHR1cmUsCisgICAgImlzRGVwdGhUZXh0dXJlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChpc0RlcHRoV3JpdGVFbmFibGVkLAorICAgICJpc0RlcHRoV3JpdGVFbmFibGVkIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0ZyYW1lYnVmZmVyT25seSwKKyAgICAiaXNGcmFtZWJ1
ZmZlck9ubHkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzSGVhZGxlc3MsCisgICAgImlzSGVh
ZGxlc3MiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzTG93UG93ZXIsCisgICAgImlzTG93UG93
ZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzUGF0Y2hDb250cm9sUG9pbnREYXRhLAorICAg
ICJpc1BhdGNoQ29udHJvbFBvaW50RGF0YSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNQYXRj
aERhdGEsCisgICAgImlzUGF0Y2hEYXRhIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc1Jhc3Rl
cml6YXRpb25FbmFibGVkLAorICAgICJpc1Jhc3Rlcml6YXRpb25FbmFibGVkIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChpc1JlbW92YWJsZSwKKyAgICAiaXNSZW1vdmFibGUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGlzU2hhcmVhYmxlLAorICAgICJpc1NoYXJlYWJsZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoaXNTcGFyc2UsCisgICAgImlzU3BhcnNlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpc1Rlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCwKKyAgICAiaXNUZXNzZWxsYXRp
b25GYWN0b3JTY2FsZUVuYWJsZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGtlcm5lbEVuZFRp
bWUsCisgICAgImtlcm5lbEVuZFRpbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGtlcm5lbFN0
YXJ0VGltZSwKKyAgICAia2VybmVsU3RhcnRUaW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChs
YWJlbCwKKyAgICAibGFiZWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxhbmd1YWdlVmVyc2lv
biwKKyAgICAibGFuZ3VhZ2VWZXJzaW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsYXllckF0
SW5kZXhfLAorICAgICJsYXllckF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsYXll
ckNvdW50LAorICAgICJsYXllckNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsYXllcnMs
CisgICAgImxheWVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGF5b3V0cywKKyAgICAibGF5
b3V0cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGVuZ3RoLAorICAgICJsZW5ndGgiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGxldmVsLAorICAgICJsZXZlbCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobGlicmFyaWVzLAorICAgICJsaWJyYXJpZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGxpYnJhcnlUeXBlLAorICAgICJsaWJyYXJ5VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bGluZSwKKyAgICAibGluZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGlua2VkRnVuY3Rpb25z
LAorICAgICJsaW5rZWRGdW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxvYWRBY3Rp
b24sCisgICAgImxvYWRBY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxvY2F0aW9uLAor
ICAgICJsb2NhdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobG9jYXRpb25OdW1iZXIsCisg
ICAgImxvY2F0aW9uTnVtYmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsb2RBdmVyYWdlLAor
ICAgICJsb2RBdmVyYWdlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsb2RNYXhDbGFtcCwKKyAg
ICAibG9kTWF4Q2xhbXAiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxvZE1pbkNsYW1wLAorICAg
ICJsb2RNaW5DbGFtcCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobG9ncywKKyAgICAibG9ncyIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobWFnRmlsdGVyLAorICAgICJtYWdGaWx0ZXIiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKG1ha2VBbGlhc2FibGUsCisgICAgIm1ha2VBbGlhc2FibGUiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG1hcFBoeXNpY2FsVG9TY3JlZW5Db29yZGluYXRlc19mb3JM
YXllcl8sCisgICAgIm1hcFBoeXNpY2FsVG9TY3JlZW5Db29yZGluYXRlczpmb3JMYXllcjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG1hcFNjcmVlblRvUGh5c2ljYWxDb29yZGluYXRlc19mb3JM
YXllcl8sCisgICAgIm1hcFNjcmVlblRvUGh5c2ljYWxDb29yZGluYXRlczpmb3JMYXllcjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG1heEFuaXNvdHJvcHksCisgICAgIm1heEFuaXNvdHJvcHki
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heEFyZ3VtZW50QnVmZmVyU2FtcGxlckNvdW50LAor
ICAgICJtYXhBcmd1bWVudEJ1ZmZlclNhbXBsZXJDb3VudCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobWF4QXZhaWxhYmxlU2l6ZVdpdGhBbGlnbm1lbnRfLAorICAgICJtYXhBdmFpbGFibGVTaXpl
V2l0aEFsaWdubWVudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heEJ1ZmZlckxlbmd0aCwK
KyAgICAibWF4QnVmZmVyTGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhDYWxsU3Rh
Y2tEZXB0aCwKKyAgICAibWF4Q2FsbFN0YWNrRGVwdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1heEZyYWdtZW50QnVmZmVyQmluZENvdW50LAorICAgICJtYXhGcmFnbWVudEJ1ZmZlckJpbmRD
b3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aCwK
KyAgICAibWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bWF4S2VybmVsQnVmZmVyQmluZENvdW50LAorICAgICJtYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFNhbXBsZUNvdW50LAorICAgICJtYXhTYW1wbGVD
b3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VGVzc2VsbGF0aW9uRmFjdG9yLAorICAg
ICJtYXhUZXNzZWxsYXRpb25GYWN0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFRocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoLAorICAgICJtYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobWF4VGhyZWFkc1BlclRocmVhZGdyb3VwLAorICAgICJtYXhU
aHJlYWRzUGVyVGhyZWFkZ3JvdXAiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFRvdGFsVGhy
ZWFkc1BlclRocmVhZGdyb3VwLAorICAgICJtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VHJhbnNmZXJSYXRlLAorICAgICJtYXhUcmFuc2Zl
clJhdGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFZlcnRleEFtcGxpZmljYXRpb25Db3Vu
dCwKKyAgICAibWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQsCisgICAgIm1heFZlcnRleEJ1ZmZlckJpbmRD
b3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgsCisg
ICAgIm1heFZlcnRleENhbGxTdGFja0RlcHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtZW1i
ZXJCeU5hbWVfLAorICAgICJtZW1iZXJCeU5hbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCht
ZW1iZXJzLAorICAgICJtZW1iZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtZW1vcnlCYXJy
aWVyV2l0aFJlc291cmNlc19jb3VudF8sCisgICAgIm1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2Vz
OmNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWVtb3J5QmFycmllcldpdGhSZXNvdXJj
ZXNfY291bnRfYWZ0ZXJTdGFnZXNfYmVmb3JlU3RhZ2VzXywKKyAgICAibWVtb3J5QmFycmllcldp
dGhSZXNvdXJjZXM6Y291bnQ6YWZ0ZXJTdGFnZXM6YmVmb3JlU3RhZ2VzOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobWVtb3J5QmFycmllcldpdGhTY29wZV8sCisgICAgIm1lbW9yeUJhcnJpZXJX
aXRoU2NvcGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtZW1vcnlCYXJyaWVyV2l0aFNjb3Bl
X2FmdGVyU3RhZ2VzX2JlZm9yZVN0YWdlc18sCisgICAgIm1lbW9yeUJhcnJpZXJXaXRoU2NvcGU6
YWZ0ZXJTdGFnZXM6YmVmb3JlU3RhZ2VzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWluRmls
dGVyLAorICAgICJtaW5GaWx0ZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1pbmltdW1MaW5l
YXJUZXh0dXJlQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXRfLAorICAgICJtaW5pbXVtTGluZWFyVGV4
dHVyZUFsaWdubWVudEZvclBpeGVsRm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWlu
aW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdF8sCisgICAgIm1pbmltdW1U
ZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChtaXBGaWx0ZXIsCisgICAgIm1pcEZpbHRlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bWlwbWFwTGV2ZWxDb3VudCwKKyAgICAibWlwbWFwTGV2ZWxDb3VudCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobW90aW9uRW5kQm9yZGVyTW9kZSwKKyAgICAibW90aW9uRW5kQm9yZGVyTW9kZSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobW90aW9uRW5kVGltZSwKKyAgICAibW90aW9uRW5kVGlt
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobW90aW9uS2V5ZnJhbWVDb3VudCwKKyAgICAibW90
aW9uS2V5ZnJhbWVDb3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobW90aW9uU3RhcnRCb3Jk
ZXJNb2RlLAorICAgICJtb3Rpb25TdGFydEJvcmRlck1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG1vdGlvblN0YXJ0VGltZSwKKyAgICAibW90aW9uU3RhcnRUaW1lIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChtb3Rpb25UcmFuc2Zvcm1CdWZmZXIsCisgICAgIm1vdGlvblRyYW5zZm9ybUJ1
ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0
LAorICAgICJtb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG1vdGlvblRyYW5zZm9ybUNvdW50LAorICAgICJtb3Rpb25UcmFuc2Zvcm1Db3VudCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobXV0YWJpbGl0eSwKKyAgICAibXV0YWJpbGl0eSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmFtZSwKKyAgICAibmFtZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZVdpdGhTaXplXywKKyAgICAibmV3QWNjZWxlcmF0aW9u
U3RydWN0dXJlV2l0aFNpemU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdBcmd1bWVudEVu
Y29kZXJGb3JCdWZmZXJBdEluZGV4XywKKyAgICAibmV3QXJndW1lbnRFbmNvZGVyRm9yQnVmZmVy
QXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FyZ3VtZW50RW5jb2RlcldpdGhB
cmd1bWVudHNfLAorICAgICJuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4XywKKyAg
ICAibmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4X3JlZmxlY3Rpb25fLAorICAg
ICJuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXg6cmVmbGVjdGlvbjoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG5ld0JpbmFyeUFyY2hpdmVXaXRoRGVzY3JpcHRvcl9lcnJvcl8sCisg
ICAgIm5ld0JpbmFyeUFyY2hpdmVXaXRoRGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld0J1ZmZlcldpdGhCeXRlc19sZW5ndGhfb3B0aW9uc18sCisgICAgIm5ld0J1
ZmZlcldpdGhCeXRlczpsZW5ndGg6b3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d0J1ZmZlcldpdGhCeXRlc05vQ29weV9sZW5ndGhfb3B0aW9uc19kZWFsbG9jYXRvcl8sCisgICAg
Im5ld0J1ZmZlcldpdGhCeXRlc05vQ29weTpsZW5ndGg6b3B0aW9uczpkZWFsbG9jYXRvcjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9uc18sCisgICAg
Im5ld0J1ZmZlcldpdGhMZW5ndGg6b3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9uc19vZmZzZXRfLAorICAgICJuZXdCdWZmZXJXaXRoTGVu
Z3RoOm9wdGlvbnM6b2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q2FwdHVyZVNj
b3BlV2l0aENvbW1hbmRRdWV1ZV8sCisgICAgIm5ld0NhcHR1cmVTY29wZVdpdGhDb21tYW5kUXVl
dWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDYXB0dXJlU2NvcGVXaXRoRGV2aWNlXywK
KyAgICAibmV3Q2FwdHVyZVNjb3BlV2l0aERldmljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG5ld0NvbW1hbmRRdWV1ZSwKKyAgICAibmV3Q29tbWFuZFF1ZXVlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdDb21tYW5kUXVldWVXaXRoTWF4Q29tbWFuZEJ1ZmZlckNvdW50XywKKyAgICAi
bmV3Q29tbWFuZFF1ZXVlV2l0aE1heENvbW1hbmRCdWZmZXJDb3VudDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlGdW5j
dGlvbnNfZXJyb3JfLAorICAgICJuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFs
QmluYXJ5RnVuY3Rpb25zOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0
ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXywK
KyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjpvcHRpb25zOmNvbXBs
ZXRpb25IYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5l
U3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfLAorICAgICJuZXdD
b21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVjdGlvbjplcnJv
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1
bmN0aW9uX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoRnVuY3Rpb246Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChu
ZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9lcnJvcl8sCisgICAgIm5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25fb3B0aW9uc19jb21wbGV0aW9u
SGFuZGxlcl8sCisgICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOm9wdGlv
bnM6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfLAorICAg
ICJuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpvcHRpb25zOnJlZmxlY3Rpb246
ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb3VudGVyU2FtcGxlQnVmZmVyV2l0
aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJuZXdDb3VudGVyU2FtcGxlQnVmZmVyV2l0aERlc2Ny
aXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdEZWZhdWx0TGlicmFyeSwK
KyAgICAibmV3RGVmYXVsdExpYnJhcnkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0RlZmF1
bHRMaWJyYXJ5V2l0aEJ1bmRsZV9lcnJvcl8sCisgICAgIm5ld0RlZmF1bHRMaWJyYXJ5V2l0aEJ1
bmRsZTplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0RlcHRoU3RlbmNpbFN0YXRl
V2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9y
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RHluYW1pY0xpYnJhcnlfZXJyb3JfLAorICAg
ICJuZXdEeW5hbWljTGlicmFyeTplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0R5
bmFtaWNMaWJyYXJ5V2l0aFVSTF9lcnJvcl8sCisgICAgIm5ld0R5bmFtaWNMaWJyYXJ5V2l0aFVS
TDplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0V2ZW50LAorICAgICJuZXdFdmVu
dCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RmVuY2UsCisgICAgIm5ld0ZlbmNlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChuZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yX2NvbXBsZXRpb25I
YW5kbGVyXywKKyAgICAibmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpjb21wbGV0aW9uSGFuZGxl
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0b3JfZXJy
b3JfLAorICAgICJuZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobmV3RnVuY3Rpb25XaXRoTmFtZV8sCisgICAgIm5ld0Z1bmN0aW9uV2l0aE5h
bWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdGdW5jdGlvbldpdGhOYW1lX2NvbnN0YW50
VmFsdWVzX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3RnVuY3Rpb25XaXRoTmFtZTpjb25z
dGFudFZhbHVlczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d0Z1bmN0aW9uV2l0aE5hbWVfY29uc3RhbnRWYWx1ZXNfZXJyb3JfLAorICAgICJuZXdGdW5jdGlv
bldpdGhOYW1lOmNvbnN0YW50VmFsdWVzOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3SGVhcFdpdGhEZXNjcmlwdG9yXywKKyAgICAibmV3SGVhcFdpdGhEZXNjcmlwdG9yOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobmV3SW5kaXJlY3RDb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0
b3JfbWF4Q29tbWFuZENvdW50X29wdGlvbnNfLAorICAgICJuZXdJbmRpcmVjdENvbW1hbmRCdWZm
ZXJXaXRoRGVzY3JpcHRvcjptYXhDb21tYW5kQ291bnQ6b3B0aW9uczoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcl8sCisg
ICAgIm5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRv
cl9zdGFnZV8sCisgICAgIm5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRv
cjpzdGFnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9u
V2l0aERlc2NyaXB0b3JfY29tcGxldGlvbkhhbmRsZXJfLAorICAgICJuZXdJbnRlcnNlY3Rpb25G
dW5jdGlvbldpdGhEZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9lcnJvcl8sCisg
ICAgIm5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aERlc2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0aERhdGFfZXJyb3JfLAorICAgICJuZXdMaWJy
YXJ5V2l0aERhdGE6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0
aEZpbGVfZXJyb3JfLAorICAgICJuZXdMaWJyYXJ5V2l0aEZpbGU6ZXJyb3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0aFNvdXJjZV9vcHRpb25zX2NvbXBsZXRpb25IYW5k
bGVyXywKKyAgICAibmV3TGlicmFyeVdpdGhTb3VyY2U6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxl
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlXaXRoU291cmNlX29wdGlvbnNf
ZXJyb3JfLAorICAgICJuZXdMaWJyYXJ5V2l0aFNvdXJjZTpvcHRpb25zOmVycm9yOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhTdGl0Y2hlZERlc2NyaXB0b3JfY29tcGxl
dGlvbkhhbmRsZXJfLAorICAgICJuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcjpjb21w
bGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlXaXRoU3Rp
dGNoZWREZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3TGlicmFyeVdpdGhTdGl0Y2hlZERlc2Ny
aXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0aFVSTF9l
cnJvcl8sCisgICAgIm5ld0xpYnJhcnlXaXRoVVJMOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobmV3UmFzdGVyaXphdGlvblJhdGVNYXBXaXRoRGVzY3JpcHRvcl8sCisgICAgIm5ld1Jh
c3Rlcml6YXRpb25SYXRlTWFwV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChuZXdSZW1vdGVCdWZmZXJWaWV3Rm9yRGV2aWNlXywKKyAgICAibmV3UmVtb3RlQnVmZmVyVmll
d0ZvckRldmljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1JlbW90ZVRleHR1cmVWaWV3
Rm9yRGV2aWNlXywKKyAgICAibmV3UmVtb3RlVGV4dHVyZVZpZXdGb3JEZXZpY2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnNfZXJyb3JfLAorICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aEFkZGl0
aW9uYWxCaW5hcnlGdW5jdGlvbnM6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3JfY29tcGxldGlvbkhhbmRsZXJfLAorICAg
ICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2Ny
aXB0b3JfZXJyb3JfLAorICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6
ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0
aERlc2NyaXB0b3Jfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld1JlbmRlclBp
cGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9y
X29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8sCisgICAgIm5ld1JlbmRlclBpcGVsaW5lU3RhdGVX
aXRoRGVzY3JpcHRvcjpvcHRpb25zOnJlZmxlY3Rpb246ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yX29wdGlvbnNf
Y29tcGxldGlvbkhhbmRsZXJfLAorICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVE
ZXNjcmlwdG9yOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yX29wdGlvbnNfcmVm
bGVjdGlvbl9lcnJvcl8sCisgICAgIm5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoVGlsZURlc2Ny
aXB0b3I6b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdTYW1wbGVyU3RhdGVXaXRo
RGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1NoYXJlZEV2ZW50LAorICAg
ICJuZXdTaGFyZWRFdmVudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3U2hhcmVkRXZlbnRI
YW5kbGUsCisgICAgIm5ld1NoYXJlZEV2ZW50SGFuZGxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChuZXdTaGFyZWRFdmVudFdpdGhIYW5kbGVfLAorICAgICJuZXdTaGFyZWRFdmVudFdpdGhIYW5k
bGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdTaGFyZWRUZXh0dXJlSGFuZGxlLAorICAg
ICJuZXdTaGFyZWRUZXh0dXJlSGFuZGxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdTaGFy
ZWRUZXh0dXJlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdTaGFyZWRUZXh0dXJlV2l0aERlc2Ny
aXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdTaGFyZWRUZXh0dXJlV2l0aEhhbmRs
ZV8sCisgICAgIm5ld1NoYXJlZFRleHR1cmVXaXRoSGFuZGxlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXRfLAorICAgICJuZXdUZXh0dXJlVmll
d1dpdGhQaXhlbEZvcm1hdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVWaWV3
V2l0aFBpeGVsRm9ybWF0X3RleHR1cmVUeXBlX2xldmVsc19zbGljZXNfLAorICAgICJuZXdUZXh0
dXJlVmlld1dpdGhQaXhlbEZvcm1hdDp0ZXh0dXJlVHlwZTpsZXZlbHM6c2xpY2VzOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXRfdGV4dHVyZVR5
cGVfbGV2ZWxzX3NsaWNlc19zd2l6emxlXywKKyAgICAibmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxG
b3JtYXQ6dGV4dHVyZVR5cGU6bGV2ZWxzOnNsaWNlczpzd2l6emxlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yXywKKyAgICAibmV3VGV4dHVyZVdpdGhE
ZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlw
dG9yX2lvc3VyZmFjZV9wbGFuZV8sCisgICAgIm5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjppb3N1
cmZhY2U6cGxhbmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdUZXh0dXJlV2l0aERlc2Ny
aXB0b3Jfb2Zmc2V0XywKKyAgICAibmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOm9mZnNldDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcl9vZmZzZXRfYnl0
ZXNQZXJSb3dfLAorICAgICJuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6b2Zmc2V0OmJ5dGVzUGVy
Um93OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRo
RGVzY3JpcHRvcl8sCisgICAgIm5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZVdpdGhEZXNj
cmlwdG9yX3N0YWdlXywKKyAgICAibmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRv
cjpzdGFnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5vZGVzLAorICAgICJub2RlcyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobm9ybWFsaXplZENvb3JkaW5hdGVzLAorICAgICJub3JtYWxp
emVkQ29vcmRpbmF0ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5vdGlmeUxpc3RlbmVyX2F0
VmFsdWVfYmxvY2tfLAorICAgICJub3RpZnlMaXN0ZW5lcjphdFZhbHVlOmJsb2NrOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XywKKyAgICAib2JqZWN0
QXRJbmRleGVkU3Vic2NyaXB0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob2Zmc2V0LAorICAg
ICJvZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wYXF1ZSwKKyAgICAib3BhcXVlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzXywKKyAg
ICAib3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2VzczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3Nfc2xpY2VfbGV2ZWxfLAorICAgICJvcHRpbWl6
ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzOnNsaWNlOmxldmVsOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwob3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vzc18sCisgICAgIm9wdGltaXplQ29udGVudHNG
b3JHUFVBY2Nlc3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9y
R1BVQWNjZXNzX3NsaWNlX2xldmVsXywKKyAgICAib3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vz
czpzbGljZTpsZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wdGltaXplSW5kaXJlY3RD
b21tYW5kQnVmZmVyX3dpdGhSYW5nZV8sCisgICAgIm9wdGltaXplSW5kaXJlY3RDb21tYW5kQnVm
ZmVyOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wdGlvbnMsCisgICAgIm9w
dGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG91dHB1dE5vZGUsCisgICAgIm91dHB1dE5v
ZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG91dHB1dFVSTCwKKyAgICAib3V0cHV0VVJMIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChwYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERl
c2NyaXB0b3JfLAorICAgICJwYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0
b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwYXJhbWV0ZXJCdWZmZXJTaXplQW5kQWxpZ24s
CisgICAgInBhcmFtZXRlckJ1ZmZlclNpemVBbmRBbGlnbiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocGFyZW50UmVsYXRpdmVMZXZlbCwKKyAgICAicGFyZW50UmVsYXRpdmVMZXZlbCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocGFyZW50UmVsYXRpdmVTbGljZSwKKyAgICAicGFyZW50UmVsYXRp
dmVTbGljZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGFyZW50VGV4dHVyZSwKKyAgICAicGFy
ZW50VGV4dHVyZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGF0Y2hDb250cm9sUG9pbnRDb3Vu
dCwKKyAgICAicGF0Y2hDb250cm9sUG9pbnRDb3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
cGF0Y2hUeXBlLAorICAgICJwYXRjaFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBlZXJD
b3VudCwKKyAgICAicGVlckNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwZWVyR3JvdXBJ
RCwKKyAgICAicGVlckdyb3VwSUQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBlZXJJbmRleCwK
KyAgICAicGVlckluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwaHlzaWNhbEdyYW51bGFy
aXR5LAorICAgICJwaHlzaWNhbEdyYW51bGFyaXR5Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChw
aHlzaWNhbFNpemVGb3JMYXllcl8sCisgICAgInBoeXNpY2FsU2l6ZUZvckxheWVyOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocGl4ZWxGb3JtYXQsCisgICAgInBpeGVsRm9ybWF0Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChwb2ludGVyVHlwZSwKKyAgICAicG9pbnRlclR5cGUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHBvcERlYnVnR3JvdXAsCisgICAgInBvcERlYnVnR3JvdXAiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHByZWxvYWRlZExpYnJhcmllcywKKyAgICAicHJlbG9hZGVkTGli
cmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwcmVwcm9jZXNzb3JNYWNyb3MsCisgICAg
InByZXByb2Nlc3Nvck1hY3JvcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudCwKKyAg
ICAicHJlc2VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudEFmdGVyTWluaW11bUR1
cmF0aW9uXywKKyAgICAicHJlc2VudEFmdGVyTWluaW11bUR1cmF0aW9uOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwocHJlc2VudEF0VGltZV8sCisgICAgInByZXNlbnRBdFRpbWU6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChwcmVzZW50RHJhd2FibGVfLAorICAgICJwcmVzZW50RHJhd2FibGU6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwcmVzZW50RHJhd2FibGVfYWZ0ZXJNaW5pbXVtRHVy
YXRpb25fLAorICAgICJwcmVzZW50RHJhd2FibGU6YWZ0ZXJNaW5pbXVtRHVyYXRpb246Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChwcmVzZW50RHJhd2FibGVfYXRUaW1lXywKKyAgICAicHJlc2Vu
dERyYXdhYmxlOmF0VGltZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnRlZFRpbWUs
CisgICAgInByZXNlbnRlZFRpbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlcnZlSW52
YXJpYW5jZSwKKyAgICAicHJlc2VydmVJbnZhcmlhbmNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChwcml2YXRlRnVuY3Rpb25zLAorICAgICJwcml2YXRlRnVuY3Rpb25zIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChwdXNoRGVidWdHcm91cF8sCisgICAgInB1c2hEZWJ1Z0dyb3VwOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwockFkZHJlc3NNb2RlLAorICAgICJyQWRkcmVzc01vZGUiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHJhc3RlclNhbXBsZUNvdW50LAorICAgICJyYXN0ZXJTYW1wbGVD
b3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmFzdGVyaXphdGlvblJhdGVNYXAsCisgICAg
InJhc3Rlcml6YXRpb25SYXRlTWFwIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyYXN0ZXJpemF0
aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZV8sCisgICAgInJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
cmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemVfbGF5ZXJfLAorICAg
ICJyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZTpsYXllcjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhT
Y3JlZW5TaXplX2xheWVyQ291bnRfbGF5ZXJzXywKKyAgICAicmFzdGVyaXphdGlvblJhdGVNYXBE
ZXNjcmlwdG9yV2l0aFNjcmVlblNpemU6bGF5ZXJDb3VudDpsYXllcnM6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChyZWFkTWFzaywKKyAgICAicmVhZE1hc2siKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHJlYWRXcml0ZVRleHR1cmVTdXBwb3J0LAorICAgICJyZWFkV3JpdGVUZXh0dXJlU3VwcG9y
dCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVjb21tZW5kZWRNYXhXb3JraW5nU2V0U2l6ZSwK
KyAgICAicmVjb21tZW5kZWRNYXhXb3JraW5nU2V0U2l6ZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfZGVzY3JpcHRvcl9kZXN0aW5hdGlvbl9zY3Jh
dGNoQnVmZmVyX3NjcmF0Y2hCdWZmZXJPZmZzZXRfLAorICAgICJyZWZpdEFjY2VsZXJhdGlvblN0
cnVjdHVyZTpkZXNjcmlwdG9yOmRlc3RpbmF0aW9uOnNjcmF0Y2hCdWZmZXI6c2NyYXRjaEJ1ZmZl
ck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlZ2lzdHJ5SUQsCisgICAgInJlZ2lz
dHJ5SUQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbW90ZVN0b3JhZ2VCdWZmZXIsCisgICAg
InJlbW90ZVN0b3JhZ2VCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbW90ZVN0b3Jh
Z2VUZXh0dXJlLAorICAgICJyZW1vdGVTdG9yYWdlVGV4dHVyZSIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwocmVtb3ZlQWxsRGVidWdNYXJrZXJzLAorICAgICJyZW1vdmVBbGxEZWJ1Z01hcmtlcnMi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbmRlckNvbW1hbmRFbmNvZGVyLAorICAgICJyZW5k
ZXJDb21tYW5kRW5jb2RlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVuZGVyQ29tbWFuZEVu
Y29kZXJXaXRoRGVzY3JpcHRvcl8sCisgICAgInJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2Ny
aXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZW5kZXJQYXNzRGVzY3JpcHRvciwKKyAg
ICAicmVuZGVyUGFzc0Rlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbmRlclRh
cmdldEFycmF5TGVuZ3RoLAorICAgICJyZW5kZXJUYXJnZXRBcnJheUxlbmd0aCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwocmVuZGVyVGFyZ2V0SGVpZ2h0LAorICAgICJyZW5kZXJUYXJnZXRIZWln
aHQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbmRlclRhcmdldFdpZHRoLAorICAgICJyZW5k
ZXJUYXJnZXRXaWR0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVwbGFjZVJlZ2lvbl9taXBt
YXBMZXZlbF9zbGljZV93aXRoQnl0ZXNfYnl0ZXNQZXJSb3dfYnl0ZXNQZXJJbWFnZV8sCisgICAg
InJlcGxhY2VSZWdpb246bWlwbWFwTGV2ZWw6c2xpY2U6d2l0aEJ5dGVzOmJ5dGVzUGVyUm93OmJ5
dGVzUGVySW1hZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXBsYWNlUmVnaW9uX21pcG1h
cExldmVsX3dpdGhCeXRlc19ieXRlc1BlclJvd18sCisgICAgInJlcGxhY2VSZWdpb246bWlwbWFw
TGV2ZWw6d2l0aEJ5dGVzOmJ5dGVzUGVyUm93OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVx
dWlyZWQsCisgICAgInJlcXVpcmVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNldCwKKyAg
ICAicmVzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc2V0Q29tbWFuZHNJbkJ1ZmZlcl93
aXRoUmFuZ2VfLAorICAgICJyZXNldENvbW1hbmRzSW5CdWZmZXI6d2l0aFJhbmdlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocmVzZXRUZXh0dXJlQWNjZXNzQ291bnRlcnNfcmVnaW9uX21pcExl
dmVsX3NsaWNlXywKKyAgICAicmVzZXRUZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExl
dmVsOnNsaWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzZXRXaXRoUmFuZ2VfLAorICAg
ICJyZXNldFdpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc29sdmVDb3VudGVy
UmFuZ2VfLAorICAgICJyZXNvbHZlQ291bnRlclJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocmVzb2x2ZUNvdW50ZXJzX2luUmFuZ2VfZGVzdGluYXRpb25CdWZmZXJfZGVzdGluYXRpb25P
ZmZzZXRfLAorICAgICJyZXNvbHZlQ291bnRlcnM6aW5SYW5nZTpkZXN0aW5hdGlvbkJ1ZmZlcjpk
ZXN0aW5hdGlvbk9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc29sdmVEZXB0aFBs
YW5lLAorICAgICJyZXNvbHZlRGVwdGhQbGFuZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVz
b2x2ZUxldmVsLAorICAgICJyZXNvbHZlTGV2ZWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJl
c29sdmVTbGljZSwKKyAgICAicmVzb2x2ZVNsaWNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChy
ZXNvbHZlVGV4dHVyZSwKKyAgICAicmVzb2x2ZVRleHR1cmUiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHJlc291cmNlT3B0aW9ucywKKyAgICAicmVzb3VyY2VPcHRpb25zIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChyZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIsCisgICAgInJlc291cmNlU3Rh
dGVDb21tYW5kRW5jb2RlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb3VyY2VTdGF0ZUNv
bW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3JfLAorICAgICJyZXNvdXJjZVN0YXRlQ29tbWFuZEVu
Y29kZXJXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc291cmNlU3Rh
dGVQYXNzRGVzY3JpcHRvciwKKyAgICAicmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChyZXRhaW5lZFJlZmVyZW5jZXMsCisgICAgInJldGFpbmVkUmVm
ZXJlbmNlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmdiQmxlbmRPcGVyYXRpb24sCisgICAg
InJnYkJsZW5kT3BlcmF0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyb290UmVzb3VyY2Us
CisgICAgInJvb3RSZXNvdXJjZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc0FkZHJlc3NNb2Rl
LAorICAgICJzQWRkcmVzc01vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNhbXBsZUJ1ZmZl
ciwKKyAgICAic2FtcGxlQnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzYW1wbGVCdWZm
ZXJBdHRhY2htZW50cywKKyAgICAic2FtcGxlQnVmZmVyQXR0YWNobWVudHMiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNhbXBsZUNvdW50LAorICAgICJzYW1wbGVDb3VudCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcl9hdFNhbXBsZUluZGV4X3dpdGhCYXJy
aWVyXywKKyAgICAic2FtcGxlQ291bnRlcnNJbkJ1ZmZlcjphdFNhbXBsZUluZGV4OndpdGhCYXJy
aWVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2FtcGxlVGltZXN0YW1wc19ncHVUaW1lc3Rh
bXBfLAorICAgICJzYW1wbGVUaW1lc3RhbXBzOmdwdVRpbWVzdGFtcDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNjcmVlblNpemUsCisgICAgInNjcmVlblNpemUiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNlcmlhbGl6ZVRvVVJMX2Vycm9yXywKKyAgICAic2VyaWFsaXplVG9VUkw6ZXJyb3I6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZm
ZXJJbmRleF8sCisgICAgInNldEFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0SW5kZXhf
LAorICAgICJzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldEFjY2Vzc18sCisgICAgInNldEFjY2VzczoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uXywK
KyAgICAic2V0QWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb246Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBbGxvd0dQVU9wdGltaXplZENvbnRlbnRzXywKKyAg
ICAic2V0QWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEFscGhhQmxlbmRPcGVyYXRpb25fLAorICAgICJzZXRBbHBoYUJsZW5kT3BlcmF0aW9uOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QWxwaGFUb0NvdmVyYWdlRW5hYmxlZF8sCisgICAg
InNldEFscGhhVG9Db3ZlcmFnZUVuYWJsZWQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRB
bHBoYVRvT25lRW5hYmxlZF8sCisgICAgInNldEFscGhhVG9PbmVFbmFibGVkOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0QXJndW1lbnRCdWZmZXJfb2Zmc2V0XywKKyAgICAic2V0QXJndW1l
bnRCdWZmZXI6b2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QXJndW1lbnRCdWZm
ZXJfc3RhcnRPZmZzZXRfYXJyYXlFbGVtZW50XywKKyAgICAic2V0QXJndW1lbnRCdWZmZXI6c3Rh
cnRPZmZzZXQ6YXJyYXlFbGVtZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QXJndW1l
bnRJbmRleF8sCisgICAgInNldEFyZ3VtZW50SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRBcmd1bWVudHNfLAorICAgICJzZXRBcmd1bWVudHM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRBcnJheUxlbmd0aF8sCisgICAgInNldEFycmF5TGVuZ3RoOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0QXR0cmlidXRlc18sCisgICAgInNldEF0dHJpYnV0ZXM6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRCYWNrRmFjZVN0ZW5jaWxfLAorICAgICJzZXRCYWNrRmFjZVN0
ZW5jaWw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCYXJyaWVyLAorICAgICJzZXRCYXJy
aWVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCaW5hcnlBcmNoaXZlc18sCisgICAgInNl
dEJpbmFyeUFyY2hpdmVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QmluYXJ5RnVuY3Rp
b25zXywKKyAgICAic2V0QmluYXJ5RnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0QmxlbmRDb2xvclJlZF9ncmVlbl9ibHVlX2FscGhhXywKKyAgICAic2V0QmxlbmRDb2xvclJl
ZDpncmVlbjpibHVlOmFscGhhOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QmxlbmRpbmdF
bmFibGVkXywKKyAgICAic2V0QmxlbmRpbmdFbmFibGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0Qm9yZGVyQ29sb3JfLAorICAgICJzZXRCb3JkZXJDb2xvcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyXywKKyAgICAic2V0Qm91bmRpbmdCb3hCdWZm
ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCb3VuZGluZ0JveEJ1ZmZlck9mZnNldF8s
CisgICAgInNldEJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0Qm91bmRpbmdCb3hCdWZmZXJzXywKKyAgICAic2V0Qm91bmRpbmdCb3hCdWZmZXJzOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Qm91bmRpbmdCb3hDb3VudF8sCisgICAgInNldEJv
dW5kaW5nQm94Q291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCb3VuZGluZ0JveFN0
cmlkZV8sCisgICAgInNldEJvdW5kaW5nQm94U3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0QnVmZmVyXywKKyAgICAic2V0QnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0QnVmZmVyX29mZnNldF9hdEluZGV4XywKKyAgICAic2V0QnVmZmVyOm9mZnNldDphdEluZGV4
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QnVmZmVySW5kZXhfLAorICAgICJzZXRCdWZm
ZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJ1ZmZlck9mZnNldF9hdEluZGV4
XywKKyAgICAic2V0QnVmZmVyT2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXywKKyAgICAic2V0QnVmZmVyczpvZmZzZXRz
OndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJ5dGVzX2xlbmd0aF9hdElu
ZGV4XywKKyAgICAic2V0Qnl0ZXM6bGVuZ3RoOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRDYXB0dXJlT2JqZWN0XywKKyAgICAic2V0Q2FwdHVyZU9iamVjdDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldENsZWFyQ29sb3JfLAorICAgICJzZXRDbGVhckNvbG9yOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q2xlYXJEZXB0aF8sCisgICAgInNldENsZWFyRGVwdGg6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDbGVhclN0ZW5jaWxfLAorICAgICJzZXRDbGVh
clN0ZW5jaWw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb2xvclN0b3JlQWN0aW9uX2F0
SW5kZXhfLAorICAgICJzZXRDb2xvclN0b3JlQWN0aW9uOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9uc19hdEluZGV4XywKKyAgICAic2V0
Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnM6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldENvbW1hbmRUeXBlc18sCisgICAgInNldENvbW1hbmRUeXBlczoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldENvbXBhcmVGdW5jdGlvbl8sCisgICAgInNldENvbXBhcmVGdW5jdGlvbjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbXB1dGVGdW5jdGlvbl8sCisgICAgInNldENv
bXB1dGVGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbXB1dGVQaXBlbGlu
ZVN0YXRlXywKKyAgICAic2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZV9hdEluZGV4XywKKyAgICAic2V0Q29tcHV0
ZVBpcGVsaW5lU3RhdGU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbXB1
dGVQaXBlbGluZVN0YXRlc193aXRoUmFuZ2VfLAorICAgICJzZXRDb21wdXRlUGlwZWxpbmVTdGF0
ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29uc3RhbnRCbG9ja0Fs
aWdubWVudF8sCisgICAgInNldENvbnN0YW50QmxvY2tBbGlnbm1lbnQ6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRDb25zdGFudFZhbHVlX3R5cGVfYXRJbmRleF8sCisgICAgInNldENvbnN0
YW50VmFsdWU6dHlwZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29uc3Rh
bnRWYWx1ZV90eXBlX3dpdGhOYW1lXywKKyAgICAic2V0Q29uc3RhbnRWYWx1ZTp0eXBlOndpdGhO
YW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29uc3RhbnRWYWx1ZXNfLAorICAgICJz
ZXRDb25zdGFudFZhbHVlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbnN0YW50VmFs
dWVzX3R5cGVfd2l0aFJhbmdlXywKKyAgICAic2V0Q29uc3RhbnRWYWx1ZXM6dHlwZTp3aXRoUmFu
Z2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb250cm9sRGVwZW5kZW5jaWVzXywKKyAg
ICAic2V0Q29udHJvbERlcGVuZGVuY2llczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENv
dW50ZXJTZXRfLAorICAgICJzZXRDb3VudGVyU2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0Q3B1Q2FjaGVNb2RlXywKKyAgICAic2V0Q3B1Q2FjaGVNb2RlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0Q3VsbE1vZGVfLAorICAgICJzZXRDdWxsTW9kZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldERhdGFUeXBlXywKKyAgICAic2V0RGF0YVR5cGU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXREZWZhdWx0Q2FwdHVyZVNjb3BlXywKKyAgICAic2V0RGVmYXVsdENhcHR1
cmVTY29wZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlZmF1bHRSYXN0ZXJTYW1wbGVD
b3VudF8sCisgICAgInNldERlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldERlcHRoXywKKyAgICAic2V0RGVwdGg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXREZXB0aEF0dGFjaG1lbnRfLAorICAgICJzZXREZXB0aEF0dGFjaG1lbnQ6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdF8sCisgICAg
InNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RGVwdGhCaWFzX3Nsb3BlU2NhbGVfY2xhbXBfLAorICAgICJzZXREZXB0aEJpYXM6c2xvcGVT
Y2FsZTpjbGFtcDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoQ2xpcE1vZGVfLAor
ICAgICJzZXREZXB0aENsaXBNb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhD
b21wYXJlRnVuY3Rpb25fLAorICAgICJzZXREZXB0aENvbXBhcmVGdW5jdGlvbjoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldERlcHRoRmFpbHVyZU9wZXJhdGlvbl8sCisgICAgInNldERlcHRo
RmFpbHVyZU9wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoUGxhbmVf
LAorICAgICJzZXREZXB0aFBsYW5lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhS
ZXNvbHZlRmlsdGVyXywKKyAgICAic2V0RGVwdGhSZXNvbHZlRmlsdGVyOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0RGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbl8sCisgICAgInNldERlcHRo
U3RlbmNpbFBhc3NPcGVyYXRpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aFN0
ZW5jaWxTdGF0ZV8sCisgICAgInNldERlcHRoU3RlbmNpbFN0YXRlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0RGVwdGhTdG9yZUFjdGlvbl8sCisgICAgInNldERlcHRoU3RvcmVBY3Rpb246
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9uc18sCisg
ICAgInNldERlcHRoU3RvcmVBY3Rpb25PcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RGVwdGhXcml0ZUVuYWJsZWRfLAorICAgICJzZXREZXB0aFdyaXRlRW5hYmxlZDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldERlc3RpbmF0aW9uXywKKyAgICAic2V0RGVzdGluYXRpb246
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3Jf
LAorICAgICJzZXREZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXREZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yXywKKyAgICAic2V0RGVzdGluYXRp
b25SR0JCbGVuZEZhY3RvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERpc3BhdGNoVHlw
ZV8sCisgICAgInNldERpc3BhdGNoVHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEVu
ZE9mRW5jb2RlclNhbXBsZUluZGV4XywKKyAgICAic2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXg6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRFbmRPZkZyYWdtZW50U2FtcGxlSW5kZXhfLAor
ICAgICJzZXRFbmRPZkZyYWdtZW50U2FtcGxlSW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRFbmRPZlZlcnRleFNhbXBsZUluZGV4XywKKyAgICAic2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJ
bmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEVycm9yT3B0aW9uc18sCisgICAgInNl
dEVycm9yT3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZhc3RNYXRoRW5hYmxl
ZF8sCisgICAgInNldEZhc3RNYXRoRW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEZvcm1hdF8sCisgICAgInNldEZvcm1hdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZy
YWdtZW50QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRGcmFn
bWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0RnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zXywKKyAgICAic2V0
RnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0RnJhZ21lbnRCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudEJ1
ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50
QnVmZmVyT2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudEJ1ZmZlck9mZnNldDphdElu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRCdWZmZXJzX29mZnNldHNf
d2l0aFJhbmdlXywKKyAgICAic2V0RnJhZ21lbnRCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRCeXRlc19sZW5ndGhfYXRJbmRleF8s
CisgICAgInNldEZyYWdtZW50Qnl0ZXM6bGVuZ3RoOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRGcmFnbWVudEZ1bmN0aW9uXywKKyAgICAic2V0RnJhZ21lbnRGdW5jdGlvbjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZV9hdEJ1ZmZlckluZGV4XywKKyAgICAic2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVu
dEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldEZy
YWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnNfLAorICAgICJzZXRG
cmFnbWVudExpbmtlZEZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdt
ZW50UHJlbG9hZGVkTGlicmFyaWVzXywKKyAgICAic2V0RnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJp
ZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZV9hdElu
ZGV4XywKKyAgICAic2V0RnJhZ21lbnRTYW1wbGVyU3RhdGU6YXRJbmRleDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlX2xvZE1pbkNsYW1wX2xvZE1heENs
YW1wX2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDps
b2RNYXhDbGFtcDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRT
YW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNfd2l0aFJhbmdlXywKKyAgICAi
c2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RNYXhDbGFtcHM6d2l0aFJh
bmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzX3dp
dGhSYW5nZV8sCisgICAgInNldEZyYWdtZW50U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFRleHR1cmVfYXRJbmRleF8sCisgICAgInNl
dEZyYWdtZW50VGV4dHVyZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJh
Z21lbnRUZXh0dXJlc193aXRoUmFuZ2VfLAorICAgICJzZXRGcmFnbWVudFRleHR1cmVzOndpdGhS
YW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9u
VGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9uVGFi
bGU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50Vmlz
aWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldEZyYWdtZW50Vmlz
aWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldEZyb250RmFjZVN0ZW5jaWxfLAorICAgICJzZXRGcm9udEZhY2VTdGVuY2lsOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJvbnRGYWNpbmdXaW5kaW5nXywKKyAgICAic2V0RnJv
bnRGYWNpbmdXaW5kaW5nOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnVuY3Rpb25fYXRJ
bmRleF8sCisgICAgInNldEZ1bmN0aW9uOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRGdW5jdGlvbkNvdW50XywKKyAgICAic2V0RnVuY3Rpb25Db3VudDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEZ1bmN0aW9uR3JhcGhzXywKKyAgICAic2V0RnVuY3Rpb25HcmFwaHM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGdW5jdGlvbk5hbWVfLAorICAgICJzZXRGdW5j
dGlvbk5hbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGdW5jdGlvbnNfLAorICAgICJz
ZXRGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGdW5jdGlvbnNfd2l0aFJh
bmdlXywKKyAgICAic2V0RnVuY3Rpb25zOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldEdlb21ldHJ5RGVzY3JpcHRvcnNfLAorICAgICJzZXRHZW9tZXRyeURlc2NyaXB0b3Jz
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0R3JvdXBzXywKKyAgICAic2V0R3JvdXBzOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SGF6YXJkVHJhY2tpbmdNb2RlXywKKyAgICAic2V0
SGF6YXJkVHJhY2tpbmdNb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SGVpZ2h0XywK
KyAgICAic2V0SGVpZ2h0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW1hZ2VibG9ja1Nh
bXBsZUxlbmd0aF8sCisgICAgInNldEltYWdlYmxvY2tTYW1wbGVMZW5ndGg6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRJbWFnZWJsb2NrV2lkdGhfaGVpZ2h0XywKKyAgICAic2V0SW1hZ2Vi
bG9ja1dpZHRoOmhlaWdodDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluZGV4XywKKyAg
ICAic2V0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmRleEJ1ZmZlcl8sCisg
ICAgInNldEluZGV4QnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kZXhCdWZm
ZXJJbmRleF8sCisgICAgInNldEluZGV4QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRJbmRleEJ1ZmZlck9mZnNldF8sCisgICAgInNldEluZGV4QnVmZmVyT2Zmc2V0OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kZXhUeXBlXywKKyAgICAic2V0SW5kZXhUeXBl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyX2F0SW5k
ZXhfLAorICAgICJzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXI6YXRJbmRleDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnNfd2l0aFJhbmdlXywKKyAgICAi
c2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRJbmhlcml0QnVmZmVyc18sCisgICAgInNldEluaGVyaXRCdWZmZXJzOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0SW5oZXJpdFBpcGVsaW5lU3RhdGVfLAorICAgICJzZXRJbmhl
cml0UGlwZWxpbmVTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldElucHV0UHJpbWl0
aXZlVG9wb2xvZ3lfLAorICAgICJzZXRJbnB1dFByaW1pdGl2ZVRvcG9sb2d5OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0SW5zZXJ0TGlicmFyaWVzXywKKyAgICAic2V0SW5zZXJ0TGlicmFy
aWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFsbE5hbWVfLAorICAgICJzZXRJ
bnN0YWxsTmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlQ291bnRfLAor
ICAgICJzZXRJbnN0YW5jZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFu
Y2VEZXNjcmlwdG9yQnVmZmVyXywKKyAgICAic2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0
XywKKyAgICAic2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0SW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlXywKKyAgICAic2V0SW5zdGFu
Y2VEZXNjcmlwdG9yU3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFuY2VE
ZXNjcmlwdG9yVHlwZV8sCisgICAgInNldEluc3RhbmNlRGVzY3JpcHRvclR5cGU6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRJbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzXywKKyAg
ICAic2V0SW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlczoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAg
InNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRJbmRleF8sCisgICAg
InNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXRfLAorICAgICJzZXRJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXywKKyAgICAic2V0SW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aFJhbmdlXywKKyAgICAi
c2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0S2VybmVsQnVmZmVyX29mZnNldF9hdEluZGV4XywKKyAgICAic2V0S2VybmVs
QnVmZmVyOm9mZnNldDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TGFiZWxf
LAorICAgICJzZXRMYWJlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldExhbmd1YWdlVmVy
c2lvbl8sCisgICAgInNldExhbmd1YWdlVmVyc2lvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldExheWVyX2F0SW5kZXhfLAorICAgICJzZXRMYXllcjphdEluZGV4OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0TGV2ZWxfLAorICAgICJzZXRMZXZlbDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldExpYnJhcmllc18sCisgICAgInNldExpYnJhcmllczoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldExpYnJhcnlUeXBlXywKKyAgICAic2V0TGlicmFyeVR5cGU6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRMaW5rZWRGdW5jdGlvbnNfLAorICAgICJzZXRMaW5rZWRGdW5j
dGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMb2FkQWN0aW9uXywKKyAgICAic2V0
TG9hZEFjdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldExvZEF2ZXJhZ2VfLAorICAg
ICJzZXRMb2RBdmVyYWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TG9kTWF4Q2xhbXBf
LAorICAgICJzZXRMb2RNYXhDbGFtcDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldExvZE1p
bkNsYW1wXywKKyAgICAic2V0TG9kTWluQ2xhbXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRNYWdGaWx0ZXJfLAorICAgICJzZXRNYWdGaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRNYXhBbmlzb3Ryb3B5XywKKyAgICAic2V0TWF4QW5pc290cm9weToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldE1heENhbGxTdGFja0RlcHRoXywKKyAgICAic2V0TWF4Q2FsbFN0YWNr
RGVwdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhGcmFnbWVudEJ1ZmZlckJpbmRD
b3VudF8sCisgICAgInNldE1heEZyYWdtZW50QnVmZmVyQmluZENvdW50OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0TWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aF8sCisgICAgInNldE1heEZy
YWdtZW50Q2FsbFN0YWNrRGVwdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhLZXJu
ZWxCdWZmZXJCaW5kQ291bnRfLAorICAgICJzZXRNYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhUZXNzZWxsYXRpb25GYWN0b3JfLAorICAgICJz
ZXRNYXhUZXNzZWxsYXRpb25GYWN0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhU
b3RhbFRocmVhZHNQZXJUaHJlYWRncm91cF8sCisgICAgInNldE1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4VmVydGV4QW1wbGlmaWNh
dGlvbkNvdW50XywKKyAgICAic2V0TWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4VmVydGV4QnVmZmVyQmluZENvdW50XywKKyAgICAic2V0
TWF4VmVydGV4QnVmZmVyQmluZENvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4
VmVydGV4Q2FsbFN0YWNrRGVwdGhfLAorICAgICJzZXRNYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1pbkZpbHRlcl8sCisgICAgInNldE1pbkZpbHRl
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1pcEZpbHRlcl8sCisgICAgInNldE1pcEZp
bHRlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1pcG1hcExldmVsQ291bnRfLAorICAg
ICJzZXRNaXBtYXBMZXZlbENvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9u
RW5kQm9yZGVyTW9kZV8sCisgICAgInNldE1vdGlvbkVuZEJvcmRlck1vZGU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRNb3Rpb25FbmRUaW1lXywKKyAgICAic2V0TW90aW9uRW5kVGltZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvbktleWZyYW1lQ291bnRfLAorICAgICJz
ZXRNb3Rpb25LZXlmcmFtZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9u
U3RhcnRCb3JkZXJNb2RlXywKKyAgICAic2V0TW90aW9uU3RhcnRCb3JkZXJNb2RlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9uU3RhcnRUaW1lXywKKyAgICAic2V0TW90aW9uU3Rh
cnRUaW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9uVHJhbnNmb3JtQnVmZmVy
XywKKyAgICAic2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0XywKKyAgICAic2V0TW90aW9uVHJhbnNm
b3JtQnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9uVHJhbnNm
b3JtQ291bnRfLAorICAgICJzZXRNb3Rpb25UcmFuc2Zvcm1Db3VudDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldE11dGFiaWxpdHlfLAorICAgICJzZXRNdXRhYmlsaXR5OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0TmFtZV8sCisgICAgInNldE5hbWU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXROb2Rlc18sCisgICAgInNldE5vZGVzOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0Tm9ybWFsaXplZENvb3JkaW5hdGVzXywKKyAgICAic2V0Tm9ybWFsaXplZENvb3JkaW5h
dGVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlw
dF8sCisgICAgInNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRPZmZzZXRfLAorICAgICJzZXRPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRPcGFxdWVfLAorICAgICJzZXRPcGFxdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aFNpZ25hdHVyZV9hdElu
ZGV4XywKKyAgICAic2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWdu
YXR1cmU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE9wYXF1ZVRyaWFuZ2xl
SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJlX3dpdGhSYW5nZV8sCisgICAgInNldE9w
YXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJlOndpdGhSYW5nZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE9wdGlvbnNfLAorICAgICJzZXRPcHRpb25zOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3V0cHV0Tm9kZV8sCisgICAgInNldE91dHB1dE5v
ZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRPdXRwdXRVUkxfLAorICAgICJzZXRPdXRw
dXRVUkw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRQaXhlbEZvcm1hdF8sCisgICAgInNl
dFBpeGVsRm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UHJlbG9hZGVkTGlicmFy
aWVzXywKKyAgICAic2V0UHJlbG9hZGVkTGlicmFyaWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0UHJlcHJvY2Vzc29yTWFjcm9zXywKKyAgICAic2V0UHJlcHJvY2Vzc29yTWFjcm9zOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UHJlc2VydmVJbnZhcmlhbmNlXywKKyAgICAic2V0
UHJlc2VydmVJbnZhcmlhbmNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UHJpdmF0ZUZ1
bmN0aW9uc18sCisgICAgInNldFByaXZhdGVGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRQdXJnZWFibGVTdGF0ZV8sCisgICAgInNldFB1cmdlYWJsZVN0YXRlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0UkFkZHJlc3NNb2RlXywKKyAgICAic2V0UkFkZHJlc3NNb2Rl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmFzdGVyU2FtcGxlQ291bnRfLAorICAgICJz
ZXRSYXN0ZXJTYW1wbGVDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJhc3Rlcml6
YXRpb25FbmFibGVkXywKKyAgICAic2V0UmFzdGVyaXphdGlvbkVuYWJsZWQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcF8sCisgICAgInNldFJhc3Rlcml6
YXRpb25SYXRlTWFwOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVhZE1hc2tfLAorICAg
ICJzZXRSZWFkTWFzazoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlbmRlclBpcGVsaW5l
U3RhdGVfLAorICAgICJzZXRSZW5kZXJQaXBlbGluZVN0YXRlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZV9hdEluZGV4XywKKyAgICAic2V0UmVuZGVyUGlw
ZWxpbmVTdGF0ZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVuZGVyUGlw
ZWxpbmVTdGF0ZXNfd2l0aFJhbmdlXywKKyAgICAic2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXM6d2l0
aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVuZGVyVGFyZ2V0QXJyYXlMZW5n
dGhfLAorICAgICJzZXRSZW5kZXJUYXJnZXRBcnJheUxlbmd0aDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFJlbmRlclRhcmdldEhlaWdodF8sCisgICAgInNldFJlbmRlclRhcmdldEhlaWdo
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlbmRlclRhcmdldFdpZHRoXywKKyAgICAi
c2V0UmVuZGVyVGFyZ2V0V2lkdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZXNvbHZl
RGVwdGhQbGFuZV8sCisgICAgInNldFJlc29sdmVEZXB0aFBsYW5lOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0UmVzb2x2ZUxldmVsXywKKyAgICAic2V0UmVzb2x2ZUxldmVsOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0UmVzb2x2ZVNsaWNlXywKKyAgICAic2V0UmVzb2x2ZVNsaWNl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVzb2x2ZVRleHR1cmVfLAorICAgICJzZXRS
ZXNvbHZlVGV4dHVyZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlc291cmNlT3B0aW9u
c18sCisgICAgInNldFJlc291cmNlT3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFJldGFpbmVkUmVmZXJlbmNlc18sCisgICAgInNldFJldGFpbmVkUmVmZXJlbmNlczoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFJnYkJsZW5kT3BlcmF0aW9uXywKKyAgICAic2V0UmdiQmxl
bmRPcGVyYXRpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTQWRkcmVzc01vZGVfLAor
ICAgICJzZXRTQWRkcmVzc01vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTYW1wbGVC
dWZmZXJfLAorICAgICJzZXRTYW1wbGVCdWZmZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRTYW1wbGVDb3VudF8sCisgICAgInNldFNhbXBsZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0U2FtcGxlUG9zaXRpb25zX2NvdW50XywKKyAgICAic2V0U2FtcGxlUG9zaXRpb25z
OmNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlclN0YXRlX2F0SW5kZXhf
LAorICAgICJzZXRTYW1wbGVyU3RhdGU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdEluZGV4XywKKyAgICAi
c2V0U2FtcGxlclN0YXRlOmxvZE1pbkNsYW1wOmxvZE1heENsYW1wOmF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTYW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFt
cHNfd2l0aFJhbmdlXywKKyAgICAic2V0U2FtcGxlclN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4
Q2xhbXBzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNhbXBsZXJTdGF0
ZXNfd2l0aFJhbmdlXywKKyAgICAic2V0U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTY2lzc29yUmVjdF8sCisgICAgInNldFNjaXNzb3JSZWN0OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2Npc3NvclJlY3RzX2NvdW50XywKKyAgICAic2V0
U2Npc3NvclJlY3RzOmNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2NyZWVuU2l6
ZV8sCisgICAgInNldFNjcmVlblNpemU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTaWdu
YWxlZFZhbHVlXywKKyAgICAic2V0U2lnbmFsZWRWYWx1ZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFNpemVfLAorICAgICJzZXRTaXplOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
U2xpY2VfLAorICAgICJzZXRTbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNvdXJj
ZUFscGhhQmxlbmRGYWN0b3JfLAorICAgICJzZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U291cmNlUkdCQmxlbmRGYWN0b3JfLAorICAgICJzZXRT
b3VyY2VSR0JCbGVuZEZhY3RvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNwZWNpYWxp
emVkTmFtZV8sCisgICAgInNldFNwZWNpYWxpemVkTmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFN0YWdlSW5SZWdpb25fLAorICAgICJzZXRTdGFnZUluUmVnaW9uOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0U3RhZ2VJblJlZ2lvbldpdGhJbmRpcmVjdEJ1ZmZlcl9pbmRpcmVj
dEJ1ZmZlck9mZnNldF8sCisgICAgInNldFN0YWdlSW5SZWdpb25XaXRoSW5kaXJlY3RCdWZmZXI6
aW5kaXJlY3RCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGFnZUlu
cHV0RGVzY3JpcHRvcl8sCisgICAgInNldFN0YWdlSW5wdXREZXNjcmlwdG9yOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleF8sCisgICAgInNldFN0
YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGFy
dE9mRnJhZ21lbnRTYW1wbGVJbmRleF8sCisgICAgInNldFN0YXJ0T2ZGcmFnbWVudFNhbXBsZUlu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RhcnRPZlZlcnRleFNhbXBsZUluZGV4
XywKKyAgICAic2V0U3RhcnRPZlZlcnRleFNhbXBsZUluZGV4OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0U3RlbmNpbEF0dGFjaG1lbnRfLAorICAgICJzZXRTdGVuY2lsQXR0YWNobWVudDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXRf
LAorICAgICJzZXRTdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U3RlbmNpbENvbXBhcmVGdW5jdGlvbl8sCisgICAgInNldFN0ZW5jaWxDb21w
YXJlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGVuY2lsRmFpbHVyZU9w
ZXJhdGlvbl8sCisgICAgInNldFN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0U3RlbmNpbEZyb250UmVmZXJlbmNlVmFsdWVfYmFja1JlZmVyZW5jZVZh
bHVlXywKKyAgICAic2V0U3RlbmNpbEZyb250UmVmZXJlbmNlVmFsdWU6YmFja1JlZmVyZW5jZVZh
bHVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RlbmNpbFJlZmVyZW5jZVZhbHVlXywK
KyAgICAic2V0U3RlbmNpbFJlZmVyZW5jZVZhbHVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0U3RlbmNpbFJlc29sdmVGaWx0ZXJfLAorICAgICJzZXRTdGVuY2lsUmVzb2x2ZUZpbHRlcjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxTdG9yZUFjdGlvbl8sCisgICAgInNl
dFN0ZW5jaWxTdG9yZUFjdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxT
dG9yZUFjdGlvbk9wdGlvbnNfLAorICAgICJzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RlcEZ1bmN0aW9uXywKKyAgICAic2V0U3RlcEZ1
bmN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RlcFJhdGVfLAorICAgICJzZXRT
dGVwUmF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0b3JhZ2VNb2RlXywKKyAgICAi
c2V0U3RvcmFnZU1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdG9yZUFjdGlvbl8s
CisgICAgInNldFN0b3JlQWN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RvcmVB
Y3Rpb25PcHRpb25zXywKKyAgICAic2V0U3RvcmVBY3Rpb25PcHRpb25zOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0U3RyaWRlXywKKyAgICAic2V0U3RyaWRlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9uc18sCisgICAgInNldFN1cHBv
cnRBZGRpbmdCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdXBw
b3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnNfLAorICAgICJzZXRTdXBwb3J0QWRkaW5n
RnJhZ21lbnRCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdXBw
b3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zXywKKyAgICAic2V0U3VwcG9ydEFkZGluZ1Zl
cnRleEJpbmFyeUZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN1cHBvcnRB
cmd1bWVudEJ1ZmZlcnNfLAorICAgICJzZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnNfLAorICAg
ICJzZXRTdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFN3aXp6bGVfLAorICAgICJzZXRTd2l6emxlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0VEFkZHJlc3NNb2RlXywKKyAgICAic2V0VEFkZHJlc3NNb2RlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlXywKKyAgICAi
c2V0VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyX29mZnNldF9pbnN0YW5jZVN0cmlkZV8s
CisgICAgInNldFRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcjpvZmZzZXQ6aW5zdGFuY2VTdHJpZGU6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXRfLAor
ICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZV8sCisgICAgInNldFRlc3NlbGxhdGlvbkZhY3Rv
clNjYWxlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2Nh
bGVFbmFibGVkXywKKyAgICAic2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uXywK
KyAgICAic2V0VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0VGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyXywKKyAgICAic2V0VGVz
c2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZV8sCisgICAgInNldFRlc3NlbGxhdGlvblBhcnRpdGlv
bk1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUZXh0dXJlXywKKyAgICAic2V0VGV4
dHVyZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRleHR1cmVfYXRJbmRleF8sCisgICAg
InNldFRleHR1cmU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRleHR1cmVU
eXBlXywKKyAgICAic2V0VGV4dHVyZVR5cGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRU
ZXh0dXJlc193aXRoUmFuZ2VfLAorICAgICJzZXRUZXh0dXJlczp3aXRoUmFuZ2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRUaHJlYWRHcm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVj
dXRpb25XaWR0aF8sCisgICAgInNldFRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4
ZWN1dGlvbldpZHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGhyZWFkZ3JvdXBNZW1v
cnlMZW5ndGhfLAorICAgICJzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoX2F0SW5kZXhfLAorICAgICJz
ZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGhfb2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRU
aHJlYWRncm91cE1lbW9yeUxlbmd0aDpvZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZV8sCisgICAgInNldFRocmVh
ZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRp
bGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldFRpbGVBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zXywKKyAgICAic2V0VGlsZUFkZGl0aW9u
YWxCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQnVmZmVy
X29mZnNldF9hdEluZGV4XywKKyAgICAic2V0VGlsZUJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVCdWZmZXJPZmZzZXRfYXRJbmRleF8sCisgICAg
InNldFRpbGVCdWZmZXJPZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFRpbGVCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXywKKyAgICAic2V0VGlsZUJ1ZmZlcnM6b2Zm
c2V0czp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQnl0ZXNfbGVu
Z3RoX2F0SW5kZXhfLAorICAgICJzZXRUaWxlQnl0ZXM6bGVuZ3RoOmF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRUaWxlRnVuY3Rpb25fLAorICAgICJzZXRUaWxlRnVuY3Rpb246
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlSGVpZ2h0XywKKyAgICAic2V0VGlsZUhl
aWdodDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZUludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldFRpbGVJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRUaWxlU2FtcGxlclN0YXRlX2F0SW5kZXhfLAorICAgICJzZXRUaWxlU2FtcGxl
clN0YXRlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlU2FtcGxlclN0
YXRlX2xvZE1pbkNsYW1wX2xvZE1heENsYW1wX2F0SW5kZXhfLAorICAgICJzZXRUaWxlU2FtcGxl
clN0YXRlOmxvZE1pbkNsYW1wOmxvZE1heENsYW1wOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRUaWxlU2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBzX3dp
dGhSYW5nZV8sCisgICAgInNldFRpbGVTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RNYXhD
bGFtcHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJT
dGF0ZXNfd2l0aFJhbmdlXywKKyAgICAic2V0VGlsZVNhbXBsZXJTdGF0ZXM6d2l0aFJhbmdlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVRleHR1cmVfYXRJbmRleF8sCisgICAgInNl
dFRpbGVUZXh0dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlVGV4
dHVyZXNfd2l0aFJhbmdlXywKKyAgICAic2V0VGlsZVRleHR1cmVzOndpdGhSYW5nZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlcklu
ZGV4XywKKyAgICAic2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlVmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhC
dWZmZXJSYW5nZV8sCisgICAgInNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZl
clJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVdpZHRoXywKKyAgICAic2V0
VGlsZVdpZHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VHJpYW5nbGVDb3VudF8sCisg
ICAgInNldFRyaWFuZ2xlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUcmlhbmds
ZUZpbGxNb2RlXywKKyAgICAic2V0VHJpYW5nbGVGaWxsTW9kZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFR5cGVfLAorICAgICJzZXRUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0VXJsXywKKyAgICAic2V0VXJsOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VXNhZ2Vf
LAorICAgICJzZXRVc2FnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZV9hdEJ1ZmZlckluZGV4XywKKyAgICAic2V0VmVydGV4QWNjZWxlcmF0
aW9uU3RydWN0dXJlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRW
ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zXywKKyAgICAic2V0VmVydGV4QWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEFtcGxp
ZmljYXRpb25Db3VudF92aWV3TWFwcGluZ3NfLAorICAgICJzZXRWZXJ0ZXhBbXBsaWZpY2F0aW9u
Q291bnQ6dmlld01hcHBpbmdzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4QnVm
ZmVyXywKKyAgICAic2V0VmVydGV4QnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VmVydGV4QnVmZmVyX29mZnNldF9hdEluZGV4XywKKyAgICAic2V0VmVydGV4QnVmZmVyOm9mZnNl
dDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4QnVmZmVyT2Zmc2V0
XywKKyAgICAic2V0VmVydGV4QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0VmVydGV4QnVmZmVyT2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRWZXJ0ZXhCdWZmZXJPZmZz
ZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcnNfLAor
ICAgICJzZXRWZXJ0ZXhCdWZmZXJzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4
QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5nZV8sCisgICAgInNldFZlcnRleEJ1ZmZlcnM6b2Zmc2V0
czp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhCeXRlc19sZW5n
dGhfYXRJbmRleF8sCisgICAgInNldFZlcnRleEJ5dGVzOmxlbmd0aDphdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4RGVzY3JpcHRvcl8sCisgICAgInNldFZlcnRleERl
c2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhGdW5jdGlvbl8sCisg
ICAgInNldFZlcnRleEZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XywKKyAgICAic2V0VmVydGV4
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJh
bmdlXywKKyAgICAic2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZl
clJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4TGlua2VkRnVuY3Rpb25z
XywKKyAgICAic2V0VmVydGV4TGlua2VkRnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0VmVydGV4UHJlbG9hZGVkTGlicmFyaWVzXywKKyAgICAic2V0VmVydGV4UHJlbG9hZGVk
TGlicmFyaWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRl
X2F0SW5kZXhfLAorICAgICJzZXRWZXJ0ZXhTYW1wbGVyU3RhdGU6YXRJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhD
bGFtcF9hdEluZGV4XywKKyAgICAic2V0VmVydGV4U2FtcGxlclN0YXRlOmxvZE1pbkNsYW1wOmxv
ZE1heENsYW1wOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhTYW1w
bGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNfd2l0aFJhbmdlXywKKyAgICAic2V0
VmVydGV4U2FtcGxlclN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZXNfd2l0aFJhbmdl
XywKKyAgICAic2V0VmVydGV4U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRWZXJ0ZXhTdHJpZGVfLAorICAgICJzZXRWZXJ0ZXhTdHJpZGU6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRW
ZXJ0ZXhUZXh0dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhU
ZXh0dXJlc193aXRoUmFuZ2VfLAorICAgICJzZXRWZXJ0ZXhUZXh0dXJlczp3aXRoUmFuZ2U6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1
ZmZlckluZGV4XywKKyAgICAic2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJ
bmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFZpc2libGVGdW5jdGlvblRh
Ymxlc193aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJs
ZXM6d2l0aEJ1ZmZlclJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Vmlld3BvcnRf
LAorICAgICJzZXRWaWV3cG9ydDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZpZXdwb3J0
c19jb3VudF8sCisgICAgInNldFZpZXdwb3J0czpjb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFZpc2liaWxpdHlSZXN1bHRCdWZmZXJfLAorICAgICJzZXRWaXNpYmlsaXR5UmVzdWx0
QnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmlzaWJpbGl0eVJlc3VsdE1vZGVf
b2Zmc2V0XywKKyAgICAic2V0VmlzaWJpbGl0eVJlc3VsdE1vZGU6b2Zmc2V0OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisg
ICAgInNldFZpc2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEluZGV4XywKKyAgICAic2V0Vmlz
aWJsZUZ1bmN0aW9uVGFibGU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZp
c2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRWaXNpYmxlRnVu
Y3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhSYW5nZV8sCisgICAgInNldFZpc2libGVGdW5jdGlv
blRhYmxlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRXaWR0aF8sCisg
ICAgInNldFdpZHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0V3JpdGVNYXNrXywKKyAg
ICAic2V0V3JpdGVNYXNrOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2hhcmVkQ2FwdHVyZU1h
bmFnZXIsCisgICAgInNoYXJlZENhcHR1cmVNYW5hZ2VyIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzaWduYWxlZFZhbHVlLAorICAgICJzaWduYWxlZFZhbHVlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzaXplLAorICAgICJzaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzbGljZSwKKyAg
ICAic2xpY2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNvdXJjZUFscGhhQmxlbmRGYWN0b3Is
CisgICAgInNvdXJjZUFscGhhQmxlbmRGYWN0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNv
dXJjZVJHQkJsZW5kRmFjdG9yLAorICAgICJzb3VyY2VSR0JCbGVuZEZhY3RvciIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc3BhcnNlVGlsZVNpemVJbkJ5dGVzLAorICAgICJzcGFyc2VUaWxlU2l6
ZUluQnl0ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNwYXJzZVRpbGVTaXplV2l0aFRleHR1
cmVUeXBlX3BpeGVsRm9ybWF0X3NhbXBsZUNvdW50XywKKyAgICAic3BhcnNlVGlsZVNpemVXaXRo
VGV4dHVyZVR5cGU6cGl4ZWxGb3JtYXQ6c2FtcGxlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzcGVjaWFsaXplZE5hbWUsCisgICAgInNwZWNpYWxpemVkTmFtZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc3RhZ2VJbnB1dEF0dHJpYnV0ZXMsCisgICAgInN0YWdlSW5wdXRBdHRyaWJ1
dGVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFnZUlucHV0RGVzY3JpcHRvciwKKyAgICAi
c3RhZ2VJbnB1dERlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YWdlSW5wdXRP
dXRwdXREZXNjcmlwdG9yLAorICAgICJzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc3RhcnRDYXB0dXJlV2l0aENvbW1hbmRRdWV1ZV8sCisgICAgInN0
YXJ0Q2FwdHVyZVdpdGhDb21tYW5kUXVldWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFy
dENhcHR1cmVXaXRoRGVzY3JpcHRvcl9lcnJvcl8sCisgICAgInN0YXJ0Q2FwdHVyZVdpdGhEZXNj
cmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRDYXB0dXJlV2l0aERl
dmljZV8sCisgICAgInN0YXJ0Q2FwdHVyZVdpdGhEZXZpY2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzdGFydENhcHR1cmVXaXRoU2NvcGVfLAorICAgICJzdGFydENhcHR1cmVXaXRoU2NvcGU6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4LAorICAg
ICJzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFy
dE9mRnJhZ21lbnRTYW1wbGVJbmRleCwKKyAgICAic3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCwKKyAgICAi
c3RhcnRPZlZlcnRleFNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGF0aWNU
aHJlYWRncm91cE1lbW9yeUxlbmd0aCwKKyAgICAic3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5n
dGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YXR1cywKKyAgICAic3RhdHVzIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzdGVuY2lsQXR0YWNobWVudCwKKyAgICAic3RlbmNpbEF0dGFjaG1l
bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQs
CisgICAgInN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24sCisgICAgInN0ZW5jaWxDb21wYXJlRnVuY3Rpb24i
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uLAorICAgICJz
dGVuY2lsRmFpbHVyZU9wZXJhdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlbmNpbFJl
c29sdmVGaWx0ZXIsCisgICAgInN0ZW5jaWxSZXNvbHZlRmlsdGVyIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzdGVwRnVuY3Rpb24sCisgICAgInN0ZXBGdW5jdGlvbiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc3RlcFJhdGUsCisgICAgInN0ZXBSYXRlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzdG9wQ2FwdHVyZSwKKyAgICAic3RvcENhcHR1cmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHN0b3JhZ2VNb2RlLAorICAgICJzdG9yYWdlTW9kZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c3RvcmVBY3Rpb24sCisgICAgInN0b3JlQWN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dG9yZUFjdGlvbk9wdGlvbnMsCisgICAgInN0b3JlQWN0aW9uT3B0aW9ucyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc3RyaWRlLAorICAgICJzdHJpZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHN0cnVjdFR5cGUsCisgICAgInN0cnVjdFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1
cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMsCisgICAgInN1cHBvcnRBZGRpbmdCaW5hcnlGdW5j
dGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFy
eUZ1bmN0aW9ucywKKyAgICAic3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25z
LAorICAgICJzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzdXBwb3J0QXJndW1lbnRCdWZmZXJzLAorICAgICJzdXBwb3J0QXJndW1lbnRC
dWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVm
ZmVycywKKyAgICAic3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHN1cHBvcnRzMzJCaXRGbG9hdEZpbHRlcmluZywKKyAgICAic3VwcG9ydHMzMkJp
dEZsb2F0RmlsdGVyaW5nIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0czMyQml0TVNB
QSwKKyAgICAic3VwcG9ydHMzMkJpdE1TQUEiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBv
cnRzQkNUZXh0dXJlQ29tcHJlc3Npb24sCisgICAgInN1cHBvcnRzQkNUZXh0dXJlQ29tcHJlc3Np
b24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzQ291bnRlclNhbXBsaW5nXywKKyAg
ICAic3VwcG9ydHNDb3VudGVyU2FtcGxpbmc6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBw
b3J0c0Rlc3RpbmF0aW9uXywKKyAgICAic3VwcG9ydHNEZXN0aW5hdGlvbjoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHN1cHBvcnRzRHluYW1pY0xpYnJhcmllcywKKyAgICAic3VwcG9ydHNEeW5h
bWljTGlicmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c0ZhbWlseV8sCisg
ICAgInN1cHBvcnRzRmFtaWx5OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNGZWF0
dXJlU2V0XywKKyAgICAic3VwcG9ydHNGZWF0dXJlU2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzLAorICAgICJzdXBwb3J0c0Z1bmN0aW9uUG9pbnRl
cnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVyc0Zyb21S
ZW5kZXIsCisgICAgInN1cHBvcnRzRnVuY3Rpb25Qb2ludGVyc0Zyb21SZW5kZXIiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzUHJpbWl0aXZlTW90aW9uQmx1ciwKKyAgICAic3VwcG9y
dHNQcmltaXRpdmVNb3Rpb25CbHVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c1B1
bGxNb2RlbEludGVycG9sYXRpb24sCisgICAgInN1cHBvcnRzUHVsbE1vZGVsSW50ZXJwb2xhdGlv
biIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNRdWVyeVRleHR1cmVMT0QsCisgICAg
InN1cHBvcnRzUXVlcnlUZXh0dXJlTE9EIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0
c1Jhc3Rlcml6YXRpb25SYXRlTWFwV2l0aExheWVyQ291bnRfLAorICAgICJzdXBwb3J0c1Jhc3Rl
cml6YXRpb25SYXRlTWFwV2l0aExheWVyQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dXBwb3J0c1JheXRyYWNpbmcsCisgICAgInN1cHBvcnRzUmF5dHJhY2luZyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc3VwcG9ydHNSYXl0cmFjaW5nRnJvbVJlbmRlciwKKyAgICAic3VwcG9ydHNS
YXl0cmFjaW5nRnJvbVJlbmRlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNSZW5k
ZXJEeW5hbWljTGlicmFyaWVzLAorICAgICJzdXBwb3J0c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzU2hhZGVyQmFyeWNlbnRyaWNDb29yZGlu
YXRlcywKKyAgICAic3VwcG9ydHNTaGFkZXJCYXJ5Y2VudHJpY0Nvb3JkaW5hdGVzIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudF8sCisgICAgInN1cHBv
cnRzVGV4dHVyZVNhbXBsZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNW
ZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfLAorICAgICJzdXBwb3J0c1ZlcnRleEFtcGxpZmljYXRp
b25Db3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN3aXp6bGUsCisgICAgInN3aXp6bGUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN5bmNocm9uaXplUmVzb3VyY2VfLAorICAgICJzeW5j
aHJvbml6ZVJlc291cmNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3luY2hyb25pemVUZXh0
dXJlX3NsaWNlX2xldmVsXywKKyAgICAic3luY2hyb25pemVUZXh0dXJlOnNsaWNlOmxldmVsOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwodEFkZHJlc3NNb2RlLAorICAgICJ0QWRkcmVzc01vZGUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRhaWxTaXplSW5CeXRlcywKKyAgICAidGFpbFNpemVJ
bkJ5dGVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJ
bmRleFR5cGUsCisgICAgInRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwodGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0LAorICAgICJ0ZXNzZWxs
YXRpb25GYWN0b3JGb3JtYXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlvbkZh
Y3RvclN0ZXBGdW5jdGlvbiwKKyAgICAidGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIsCisg
ICAgInRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlciIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwodGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSwKKyAgICAidGVzc2VsbGF0aW9uUGFydGl0aW9u
TW9kZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZSwKKyAgICAidGV4dHVyZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZTJERGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdF93
aWR0aF9oZWlnaHRfbWlwbWFwcGVkXywKKyAgICAidGV4dHVyZTJERGVzY3JpcHRvcldpdGhQaXhl
bEZvcm1hdDp3aWR0aDpoZWlnaHQ6bWlwbWFwcGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
dGV4dHVyZUJhcnJpZXIsCisgICAgInRleHR1cmVCYXJyaWVyIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTCh0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdF93aWR0aF9yZXNvdXJj
ZU9wdGlvbnNfdXNhZ2VfLAorICAgICJ0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcldpdGhQaXhlbEZv
cm1hdDp3aWR0aDpyZXNvdXJjZU9wdGlvbnM6dXNhZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TCh0ZXh0dXJlQ3ViZURlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXRfc2l6ZV9taXBtYXBwZWRfLAor
ICAgICJ0ZXh0dXJlQ3ViZURlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6c2l6ZTptaXBtYXBwZWQ6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXh0dXJlRGF0YVR5cGUsCisgICAgInRleHR1cmVE
YXRhVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZVJlZmVyZW5jZVR5cGUsCisg
ICAgInRleHR1cmVSZWZlcmVuY2VUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXh0dXJl
VHlwZSwKKyAgICAidGV4dHVyZVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRocmVhZEV4
ZWN1dGlvbldpZHRoLAorICAgICJ0aHJlYWRFeGVjdXRpb25XaWR0aCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwodGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGgs
CisgICAgInRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRncm91cE1lbW9yeUFsaWdubWVudCwKKyAgICAi
dGhyZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRocmVh
ZGdyb3VwTWVtb3J5RGF0YVNpemUsCisgICAgInRocmVhZGdyb3VwTWVtb3J5RGF0YVNpemUiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoLAorICAgICJ0aHJl
YWRncm91cE1lbW9yeUxlbmd0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGhyZWFkZ3JvdXBT
aXplTWF0Y2hlc1RpbGVTaXplLAorICAgICJ0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLAor
ICAgICJ0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwodGlsZUFyZ3VtZW50cywKKyAgICAidGlsZUFyZ3VtZW50cyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodGlsZUJ1ZmZlcnMsCisgICAgInRpbGVCdWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTCh0aWxlRnVuY3Rpb24sCisgICAgInRpbGVGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodGlsZUhlaWdodCwKKyAgICAidGlsZUhlaWdodCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwodGlsZVdpZHRoLAorICAgICJ0aWxlV2lkdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRy
aWFuZ2xlQ291bnQsCisgICAgInRyaWFuZ2xlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHR5cGUsCisgICAgInR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVwZGF0ZUZlbmNlXywK
KyAgICAidXBkYXRlRmVuY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1cGRhdGVGZW5jZV9h
ZnRlclN0YWdlc18sCisgICAgInVwZGF0ZUZlbmNlOmFmdGVyU3RhZ2VzOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwodXBkYXRlVGV4dHVyZU1hcHBpbmdfbW9kZV9pbmRpcmVjdEJ1ZmZlcl9pbmRp
cmVjdEJ1ZmZlck9mZnNldF8sCisgICAgInVwZGF0ZVRleHR1cmVNYXBwaW5nOm1vZGU6aW5kaXJl
Y3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1
cGRhdGVUZXh0dXJlTWFwcGluZ19tb2RlX3JlZ2lvbl9taXBMZXZlbF9zbGljZV8sCisgICAgInVw
ZGF0ZVRleHR1cmVNYXBwaW5nOm1vZGU6cmVnaW9uOm1pcExldmVsOnNsaWNlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodXBkYXRlVGV4dHVyZU1hcHBpbmdzX21vZGVfcmVnaW9uc19taXBMZXZl
bHNfc2xpY2VzX251bVJlZ2lvbnNfLAorICAgICJ1cGRhdGVUZXh0dXJlTWFwcGluZ3M6bW9kZTpy
ZWdpb25zOm1pcExldmVsczpzbGljZXM6bnVtUmVnaW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHVybCwKKyAgICAidXJsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1c2FnZSwKKyAgICAi
dXNhZ2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZUhlYXBfLAorICAgICJ1c2VIZWFwOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlSGVhcF9zdGFnZXNfLAorICAgICJ1c2VIZWFwOnN0
YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZUhlYXBzX2NvdW50XywKKyAgICAidXNl
SGVhcHM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1c2VIZWFwc19jb3VudF9zdGFn
ZXNfLAorICAgICJ1c2VIZWFwczpjb3VudDpzdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TCh1c2VSZXNvdXJjZV91c2FnZV8sCisgICAgInVzZVJlc291cmNlOnVzYWdlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodXNlUmVzb3VyY2VfdXNhZ2Vfc3RhZ2VzXywKKyAgICAidXNlUmVzb3Vy
Y2U6dXNhZ2U6c3RhZ2VzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlUmVzb3VyY2VzX2Nv
dW50X3VzYWdlXywKKyAgICAidXNlUmVzb3VyY2VzOmNvdW50OnVzYWdlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwodXNlUmVzb3VyY2VzX2NvdW50X3VzYWdlX3N0YWdlc18sCisgICAgInVzZVJl
c291cmNlczpjb3VudDp1c2FnZTpzdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1c2Vk
U2l6ZSwKKyAgICAidXNlZFNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleEFkZGl0
aW9uYWxCaW5hcnlGdW5jdGlvbnMsCisgICAgInZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleEFyZ3VtZW50cywKKyAgICAidmVydGV4
QXJndW1lbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhBdHRyaWJ1dGVzLAorICAg
ICJ2ZXJ0ZXhBdHRyaWJ1dGVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhCdWZmZXIs
CisgICAgInZlcnRleEJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGV4QnVmZmVy
T2Zmc2V0LAorICAgICJ2ZXJ0ZXhCdWZmZXJPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHZlcnRleEJ1ZmZlcnMsCisgICAgInZlcnRleEJ1ZmZlcnMiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHZlcnRleERlc2NyaXB0b3IsCisgICAgInZlcnRleERlc2NyaXB0b3IiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHZlcnRleEZ1bmN0aW9uLAorICAgICJ2ZXJ0ZXhGdW5jdGlvbiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwodmVydGV4TGlua2VkRnVuY3Rpb25zLAorICAgICJ2ZXJ0ZXhMaW5r
ZWRGdW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleFByZWxvYWRlZExpYnJh
cmllcywKKyAgICAidmVydGV4UHJlbG9hZGVkTGlicmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTCh2ZXJ0ZXhTdHJpZGUsCisgICAgInZlcnRleFN0cmlkZSIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodmVydGljYWwsCisgICAgInZlcnRpY2FsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2
ZXJ0aWNhbFNhbXBsZVN0b3JhZ2UsCisgICAgInZlcnRpY2FsU2FtcGxlU3RvcmFnZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwodmlzaWJpbGl0eVJlc3VsdEJ1ZmZlciwKKyAgICAidmlzaWJpbGl0
eVJlc3VsdEJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmlzaWJsZUZ1bmN0aW9uVGFi
bGVEZXNjcmlwdG9yLAorICAgICJ2aXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHdhaXRGb3JGZW5jZV8sCisgICAgIndhaXRGb3JGZW5jZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHdhaXRGb3JGZW5jZV9iZWZvcmVTdGFnZXNfLAorICAgICJ3
YWl0Rm9yRmVuY2U6YmVmb3JlU3RhZ2VzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwod2FpdFVu
dGlsQ29tcGxldGVkLAorICAgICJ3YWl0VW50aWxDb21wbGV0ZWQiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHdhaXRVbnRpbFNjaGVkdWxlZCwKKyAgICAid2FpdFVudGlsU2NoZWR1bGVkIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTCh3aWR0aCwKKyAgICAid2lkdGgiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZV90b0J1ZmZlcl9v
ZmZzZXRfLAorICAgICJ3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemU6dG9C
dWZmZXI6b2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwod3JpdGVDb21wYWN0ZWRBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVTaXplX3RvQnVmZmVyX29mZnNldF9zaXplRGF0YVR5cGVfLAorICAg
ICJ3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemU6dG9CdWZmZXI6b2Zmc2V0
OnNpemVEYXRhVHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHdyaXRlTWFzaywKKyAgICAi
d3JpdGVNYXNrIik7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExIZWFwLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExIZWFwLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjJjM2UxMmZlNDgwNzliZTk0MGFiODNlMjY5
ZDhiYmYxNWU1OWMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEhlYXAuaHBwCkBAIC0wLDAgKzEsMjgyIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExIZWFwLmhw
cAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisj
aW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaHBwPgorCisjaW5jbHVkZSAiTVRMSGVhcC5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2Uu
aHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OkludGVnZXIsIEhlYXBUeXBl
KSB7CisgICAgSGVhcFR5cGVBdXRvbWF0aWMgPSAwLAorICAgIEhlYXBUeXBlUGxhY2VtZW50ID0g
MSwKKyAgICBIZWFwVHlwZVNwYXJzZSA9IDIsCit9OworCitjbGFzcyBIZWFwRGVzY3JpcHRvciA6
IHB1YmxpYyBOUzo6Q29weWluZzxIZWFwRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgSGVhcERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBIZWFwRGVzY3Jp
cHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
c2l6ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2l6ZShO
Uzo6VUludGVnZXIgc2l6ZSk7CisKKyAgICBNVEw6OlN0b3JhZ2VNb2RlICAgICAgICAgICAgIHN0
b3JhZ2VNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRT
dG9yYWdlTW9kZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKTsKKworICAgIE1UTDo6Q1BV
Q2FjaGVNb2RlICAgICAgICAgICAgY3B1Q2FjaGVNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRDcHVDYWNoZU1vZGUoTVRMOjpDUFVDYWNoZU1vZGUgY3B1
Q2FjaGVNb2RlKTsKKworICAgIE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlICAgICAgaGF6YXJkVHJh
Y2tpbmdNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRI
YXphcmRUcmFja2luZ01vZGUoTVRMOjpIYXphcmRUcmFja2luZ01vZGUgaGF6YXJkVHJhY2tpbmdN
b2RlKTsKKworICAgIE1UTDo6UmVzb3VyY2VPcHRpb25zICAgICAgICAgcmVzb3VyY2VPcHRpb25z
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNvdXJjZU9w
dGlvbnMoTVRMOjpSZXNvdXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zKTsKKworICAgIE1UTDo6
SGVhcFR5cGUgICAgICAgICAgICAgICAgdHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0VHlwZShNVEw6OkhlYXBUeXBlIHR5cGUpOworfTsKKworY2xhc3Mg
SGVhcCA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8SGVhcD4KK3sKK3B1YmxpYzoKKyAgICBOUzo6
U3RyaW5nKiAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERl
dmljZSogICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTVRMOjpTdG9yYWdlTW9kZSAg
ICAgICAgc3RvcmFnZU1vZGUoKSBjb25zdDsKKworICAgIE1UTDo6Q1BVQ2FjaGVNb2RlICAgICAg
IGNwdUNhY2hlTW9kZSgpIGNvbnN0OworCisgICAgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgaGF6
YXJkVHJhY2tpbmdNb2RlKCkgY29uc3Q7CisKKyAgICBNVEw6OlJlc291cmNlT3B0aW9ucyAgICBy
ZXNvdXJjZU9wdGlvbnMoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgIHNp
emUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgIHVzZWRTaXplKCkgY29u
c3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICBjdXJyZW50QWxsb2NhdGVkU2l6ZSgp
IGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgbWF4QXZhaWxhYmxlU2l6ZShO
Uzo6VUludGVnZXIgYWxpZ25tZW50KTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgIG5l
d0J1ZmZlcihOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25z
KTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgIG5ld1RleHR1cmUoY29uc3QgY2xhc3Mg
VGV4dHVyZURlc2NyaXB0b3IqIGRlc2MpOworCisgICAgTVRMOjpQdXJnZWFibGVTdGF0ZSAgICAg
c2V0UHVyZ2VhYmxlU3RhdGUoTVRMOjpQdXJnZWFibGVTdGF0ZSBzdGF0ZSk7CisKKyAgICBNVEw6
OkhlYXBUeXBlICAgICAgICAgICB0eXBlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBCdWZmZXIqICAg
ICAgICAgICBuZXdCdWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlv
bnMgb3B0aW9ucywgTlM6OlVJbnRlZ2VyIG9mZnNldCk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAg
ICAgICAgICBuZXdUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yLCBOUzo6VUludGVnZXIgb2Zmc2V0KTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6SGVhcERlc2NyaXB0b3IqIE1UTDo6SGVhcERlc2NyaXB0
b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpIZWFwRGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExIZWFwRGVzY3JpcHRvcikpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6SGVhcERlc2NyaXB0b3IqIE1UTDo6SGVhcERl
c2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6SGVh
cERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzaXplCitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNpemUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXBEZXNjcmlwdG9yOjpzZXRT
aXplKE5TOjpVSW50ZWdlciBzaXplKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTaXplXyksIHNpemUpOworfQorCisvLyBwcm9wZXJ0
eTogc3RvcmFnZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6U3RvcmFnZU1vZGUgTVRMOjpIZWFwRGVz
Y3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6U3RvcmFnZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RvcmFnZU1v
ZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXBEZXNjcmlwdG9yOjpzZXRTdG9y
YWdlTW9kZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdG9yYWdlTW9kZV8pLCBz
dG9yYWdlTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBjcHVDYWNoZU1vZGUKK19NVExfSU5MSU5F
IE1UTDo6Q1BVQ2FjaGVNb2RlIE1UTDo6SGVhcERlc2NyaXB0b3I6OmNwdUNhY2hlTW9kZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDUFVDYWNoZU1vZGU+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY3B1Q2FjaGVNb2RlKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0Q3B1Q2FjaGVNb2RlKE1UTDo6Q1BVQ2FjaGVN
b2RlIGNwdUNhY2hlTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0Q3B1Q2FjaGVNb2RlXyksIGNwdUNhY2hlTW9kZSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBoYXphcmRUcmFja2luZ01vZGUKK19NVExfSU5MSU5FIE1UTDo6SGF6YXJk
VHJhY2tpbmdNb2RlIE1UTDo6SGVhcERlc2NyaXB0b3I6OmhhemFyZFRyYWNraW5nTW9kZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpIYXphcmRUcmFja2lu
Z01vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaGF6YXJkVHJhY2tpbmdNb2RlKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0SGF6YXJkVHJhY2tpbmdN
b2RlKE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SGF6YXJk
VHJhY2tpbmdNb2RlXyksIGhhemFyZFRyYWNraW5nTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBy
ZXNvdXJjZU9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VPcHRpb25zIE1UTDo6SGVh
cERlc2NyaXB0b3I6OnJlc291cmNlT3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZU9wdGlvbnM+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocmVzb3VyY2VPcHRpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpIZWFwRGVz
Y3JpcHRvcjo6c2V0UmVzb3VyY2VPcHRpb25zKE1UTDo6UmVzb3VyY2VPcHRpb25zIHJlc291cmNl
T3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0UmVzb3VyY2VPcHRpb25zXyksIHJlc291cmNlT3B0aW9ucyk7Cit9CisKKy8v
IHByb3BlcnR5OiB0eXBlCitfTVRMX0lOTElORSBNVEw6OkhlYXBUeXBlIE1UTDo6SGVhcERlc2Ny
aXB0b3I6OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6SGVhcFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHlwZSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6OnNldFR5cGUoTVRMOjpIZWFwVHlwZSB0eXBl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRUeXBlXyksIHR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5F
IE5TOjpTdHJpbmcqIE1UTDo6SGVhcDo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVs
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpIZWFwOjpzZXRMYWJlbChjb25zdCBOUzo6
U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogZGV2
aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpIZWFwOjpkZXZpY2UoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VNb2RlCitf
TVRMX0lOTElORSBNVEw6OlN0b3JhZ2VNb2RlIE1UTDo6SGVhcDo6c3RvcmFnZU1vZGUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RvcmFnZU1vZGU+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc3RvcmFnZU1vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IGNw
dUNhY2hlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpDUFVDYWNoZU1vZGUgTVRMOjpIZWFwOjpjcHVD
YWNoZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
Q1BVQ2FjaGVNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNwdUNhY2hlTW9kZSkpOworfQor
CisvLyBwcm9wZXJ0eTogaGF6YXJkVHJhY2tpbmdNb2RlCitfTVRMX0lOTElORSBNVEw6OkhhemFy
ZFRyYWNraW5nTW9kZSBNVEw6OkhlYXA6OmhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpIYXphcmRUcmFja2luZ01vZGU+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoaGF6YXJkVHJhY2tpbmdNb2RlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiByZXNvdXJjZU9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VPcHRpb25zIE1U
TDo6SGVhcDo6cmVzb3VyY2VPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlT3B0aW9ucz4odGhpcywgX01UTF9QUklWQVRFX1NFTChy
ZXNvdXJjZU9wdGlvbnMpKTsKK30KKworLy8gcHJvcGVydHk6IHNpemUKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkhlYXA6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzaXplKSk7
Cit9CisKKy8vIHByb3BlcnR5OiB1c2VkU2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6SGVhcDo6dXNlZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VkU2l6ZSkpOworfQor
CisvLyBwcm9wZXJ0eTogY3VycmVudEFsbG9jYXRlZFNpemUKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OkhlYXA6OmN1cnJlbnRBbGxvY2F0ZWRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoY3VycmVudEFsbG9jYXRlZFNpemUpKTsKK30KKworLy8gbWV0aG9kOiBtYXhBdmFpbGFibGVT
aXplV2l0aEFsaWdubWVudDoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkhlYXA6Om1h
eEF2YWlsYWJsZVNpemUoTlM6OlVJbnRlZ2VyIGFsaWdubWVudCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4
QXZhaWxhYmxlU2l6ZVdpdGhBbGlnbm1lbnRfKSwgYWxpZ25tZW50KTsKK30KKworLy8gbWV0aG9k
OiBuZXdCdWZmZXJXaXRoTGVuZ3RoOm9wdGlvbnM6CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciog
TVRMOjpIZWFwOjpuZXdCdWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9w
dGlvbnMgb3B0aW9ucykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1
ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QnVmZmVyV2l0aExlbmd0aF9vcHRpb25z
XyksIGxlbmd0aCwgb3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogbmV3VGV4dHVyZVdpdGhEZXNj
cmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OkhlYXA6Om5ld1RleHR1cmUo
Y29uc3QgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogZGVzYykKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Rl
eHR1cmVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjKTsKK30KKworLy8gbWV0aG9kOiBzZXRQdXJnZWFi
bGVTdGF0ZToKK19NVExfSU5MSU5FIE1UTDo6UHVyZ2VhYmxlU3RhdGUgTVRMOjpIZWFwOjpzZXRQ
dXJnZWFibGVTdGF0ZShNVEw6OlB1cmdlYWJsZVN0YXRlIHN0YXRlKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UHVyZ2VhYmxlU3RhdGU+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0UHVyZ2VhYmxlU3RhdGVfKSwgc3RhdGUpOworfQorCisvLyBwcm9wZXJ0eTogdHlw
ZQorX01UTF9JTkxJTkUgTVRMOjpIZWFwVHlwZSBNVEw6OkhlYXA6OnR5cGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGVhcFR5cGU+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodHlwZSkpOworfQorCisvLyBtZXRob2Q6IG5ld0J1ZmZlcldpdGhMZW5ndGg6
b3B0aW9uczpvZmZzZXQ6CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpIZWFwOjpuZXdC
dWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucywg
TlM6OlVJbnRlZ2VyIG9mZnNldCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QnVmZmVyV2l0aExlbmd0aF9v
cHRpb25zX29mZnNldF8pLCBsZW5ndGgsIG9wdGlvbnMsIG9mZnNldCk7Cit9CisKKy8vIG1ldGhv
ZDogbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOm9mZnNldDoKK19NVExfSU5MSU5FIE1UTDo6VGV4
dHVyZSogTVRMOjpIZWFwOjpuZXdUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IsIE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0
dXJlV2l0aERlc2NyaXB0b3Jfb2Zmc2V0XyksIGRlc2NyaXB0b3IsIG9mZnNldCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RD
b21tYW5kQnVmZmVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhYTNhMzU5NzdiMDFlMmIw
MGIyNmExOGE5NTI3MzRkNTUzN2FkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcApAQCAt
MCwwICsxLDE4OSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExSZXNv
dXJjZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIs
IEluZGlyZWN0Q29tbWFuZFR5cGUpIHsKKyAgICBJbmRpcmVjdENvbW1hbmRUeXBlRHJhdyA9IDEs
CisgICAgSW5kaXJlY3RDb21tYW5kVHlwZURyYXdJbmRleGVkID0gMiwKKyAgICBJbmRpcmVjdENv
bW1hbmRUeXBlRHJhd1BhdGNoZXMgPSA0LAorICAgIEluZGlyZWN0Q29tbWFuZFR5cGVEcmF3SW5k
ZXhlZFBhdGNoZXMgPSA4LAorICAgIEluZGlyZWN0Q29tbWFuZFR5cGVDb25jdXJyZW50RGlzcGF0
Y2ggPSAzMiwKKyAgICBJbmRpcmVjdENvbW1hbmRUeXBlQ29uY3VycmVudERpc3BhdGNoVGhyZWFk
cyA9IDY0LAorfTsKKworc3RydWN0IEluZGlyZWN0Q29tbWFuZEJ1ZmZlckV4ZWN1dGlvblJhbmdl
Cit7CisgICAgdWludDMyX3QgbG9jYXRpb247CisgICAgdWludDMyX3QgbGVuZ3RoOworfSBfTVRM
X1BBQ0tFRDsKKworY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvciA6IHB1Ymxp
YyBOUzo6Q29weWluZzxJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogICAgICAg
IGluaXQoKTsKKworICAgIE1UTDo6SW5kaXJlY3RDb21tYW5kVHlwZSAgICAgICAgICAgICAgICAg
ICAgICBjb21tYW5kVHlwZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0Q29tbWFuZFR5cGVzKE1UTDo6SW5kaXJlY3RDb21tYW5k
VHlwZSBjb21tYW5kVHlwZXMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluaGVyaXRQaXBlbGluZVN0YXRlKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluaGVyaXRQaXBlbGlu
ZVN0YXRlKGJvb2wgaW5oZXJpdFBpcGVsaW5lU3RhdGUpOworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRCdWZmZXJzKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluaGVy
aXRCdWZmZXJzKGJvb2wgaW5oZXJpdEJ1ZmZlcnMpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFZlcnRleEJ1ZmZlckJpbmRDb3VudCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRNYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQoTlM6OlVJbnRlZ2VyIG1heFZlcnRleEJ1ZmZlckJp
bmRDb3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4RnJhZ21lbnRCdWZmZXJC
aW5kQ291bnQoTlM6OlVJbnRlZ2VyIG1heEZyYWdtZW50QnVmZmVyQmluZENvdW50KTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhLZXJuZWxC
dWZmZXJCaW5kQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0TWF4S2VybmVsQnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdl
ciBtYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQpOworfTsKKworY2xhc3MgSW5kaXJlY3RDb21tYW5k
QnVmZmVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxJbmRpcmVjdENvbW1hbmRCdWZmZXIsIFJl
c291cmNlPgoreworcHVibGljOgorICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgIHNp
emUoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0KE5T
OjpSYW5nZSByYW5nZSk7CisKKyAgICBjbGFzcyBJbmRpcmVjdFJlbmRlckNvbW1hbmQqICBpbmRp
cmVjdFJlbmRlckNvbW1hbmQoTlM6OlVJbnRlZ2VyIGNvbW1hbmRJbmRleCk7CisKKyAgICBjbGFz
cyBJbmRpcmVjdENvbXB1dGVDb21tYW5kKiBpbmRpcmVjdENvbXB1dGVDb21tYW5kKE5TOjpVSW50
ZWdlciBjb21tYW5kSW5kZXgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBNVEw6Oklu
ZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IpKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRl
c2NyaXB0b3IqIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJE
ZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogY29tbWFuZFR5cGVzCitfTVRMX0lOTElO
RSBNVEw6OkluZGlyZWN0Q29tbWFuZFR5cGUgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yOjpjb21tYW5kVHlwZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6SW5kaXJlY3RDb21tYW5kVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b21tYW5kVHlwZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3I6OnNldENvbW1hbmRUeXBlcyhNVEw6OkluZGlyZWN0Q29tbWFuZFR5
cGUgY29tbWFuZFR5cGVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRDb21tYW5kVHlwZXNfKSwgY29tbWFuZFR5cGVzKTsKK30KKwor
Ly8gcHJvcGVydHk6IGluaGVyaXRQaXBlbGluZVN0YXRlCitfTVRMX0lOTElORSBib29sIE1UTDo6
SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6aW5oZXJpdFBpcGVsaW5lU3RhdGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaW5oZXJpdFBpcGVsaW5lU3RhdGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNldEluaGVyaXRQaXBlbGlu
ZVN0YXRlKGJvb2wgaW5oZXJpdFBpcGVsaW5lU3RhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluaGVyaXRQaXBlbGluZVN0YXRl
XyksIGluaGVyaXRQaXBlbGluZVN0YXRlKTsKK30KKworLy8gcHJvcGVydHk6IGluaGVyaXRCdWZm
ZXJzCitfTVRMX0lOTElORSBib29sIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRv
cjo6aW5oZXJpdEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5oZXJpdEJ1ZmZlcnMpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNl
dEluaGVyaXRCdWZmZXJzKGJvb2wgaW5oZXJpdEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluaGVyaXRCdWZmZXJzXyks
IGluaGVyaXRCdWZmZXJzKTsKK30KKworLy8gcHJvcGVydHk6IG1heFZlcnRleEJ1ZmZlckJpbmRD
b3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVy
RGVzY3JpcHRvcjo6bWF4VmVydGV4QnVmZmVyQmluZENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobWF4VmVydGV4QnVmZmVyQmluZENvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRNYXhWZXJ0ZXhCdWZmZXJCaW5k
Q291bnQoTlM6OlVJbnRlZ2VyIG1heFZlcnRleEJ1ZmZlckJpbmRDb3VudCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4VmVydGV4
QnVmZmVyQmluZENvdW50XyksIG1heFZlcnRleEJ1ZmZlckJpbmRDb3VudCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRl
Z2VyIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6bWF4RnJhZ21lbnRCdWZm
ZXJCaW5kQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhGcmFnbWVudEJ1ZmZlckJpbmRD
b3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVy
RGVzY3JpcHRvcjo6c2V0TWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQoTlM6OlVJbnRlZ2VyIG1h
eEZyYWdtZW50QnVmZmVyQmluZENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudF8p
LCBtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhLZXJu
ZWxCdWZmZXJCaW5kQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkluZGlyZWN0
Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6Om1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6c2V0TWF4S2Vy
bmVsQnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudF8pLCBtYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQp
OworfQorCisvLyBwcm9wZXJ0eTogc2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
SW5kaXJlY3RDb21tYW5kQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2l6ZSkp
OworfQorCisvLyBtZXRob2Q6IHJlc2V0V2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkluZGlyZWN0Q29tbWFuZEJ1ZmZlcjo6cmVzZXQoTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldFdpdGhS
YW5nZV8pLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogaW5kaXJlY3RSZW5kZXJDb21tYW5kQXRJ
bmRleDoKK19NVExfSU5MSU5FIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kKiBNVEw6OkluZGly
ZWN0Q29tbWFuZEJ1ZmZlcjo6aW5kaXJlY3RSZW5kZXJDb21tYW5kKE5TOjpVSW50ZWdlciBjb21t
YW5kSW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRpcmVj
dFJlbmRlckNvbW1hbmQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGlyZWN0UmVuZGVyQ29t
bWFuZEF0SW5kZXhfKSwgY29tbWFuZEluZGV4KTsKK30KKworLy8gbWV0aG9kOiBpbmRpcmVjdENv
bXB1dGVDb21tYW5kQXRJbmRleDoKK19NVExfSU5MSU5FIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29t
bWFuZCogTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXI6OmluZGlyZWN0Q29tcHV0ZUNvbW1hbmQo
TlM6OlVJbnRlZ2VyIGNvbW1hbmRJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGluZGlyZWN0Q29tcHV0ZUNvbW1hbmRBdEluZGV4XyksIGNvbW1hbmRJbmRleCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RD
b21tYW5kRW5jb2Rlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZkNTJmZDdkY2UxMjE2
ZmE0NzBlZjI5OGJhZDAxZmQzMGE2MTc0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVjdENvbW1hbmRFbmNvZGVyLmhwcApA
QCAtMCwwICsxLDE4NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJN
VExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUg
Ik1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4K
KworI2luY2x1ZGUgIk1UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExT
dGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgor
CituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBJbmRpcmVjdFJlbmRlckNvbW1hbmQgOiBwdWJsaWMg
TlM6OlJlZmVyZW5jaW5nPEluZGlyZWN0UmVuZGVyQ29tbWFuZD4KK3sKK3B1YmxpYzoKKyAgICB2
b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0
ZSogcGlwZWxpbmVTdGF0ZSk7CisKKyAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcihjb25zdCBjbGFz
cyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4
KTsKKworICAgIHZvaWQgc2V0RnJhZ21lbnRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZm
ZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lk
IGRyYXdQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6
OlVJbnRlZ2VyIHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBjbGFz
cyBCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVy
T2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0
YW5jZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5T
OjpVSW50ZWdlciBpbnN0YW5jZVN0cmlkZSk7CisKKyAgICB2b2lkIGRyYXdJbmRleGVkUGF0Y2hl
cyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBw
YXRjaFN0YXJ0LCBOUzo6VUludGVnZXIgcGF0Y2hDb3VudCwgY29uc3QgY2xhc3MgQnVmZmVyKiBw
YXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29u
c3QgY2xhc3MgQnVmZmVyKiBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGNv
bnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwg
TlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5T
OjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZVN0cmlkZSk7CisKKyAgICB2
b2lkIGRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6
VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCwgTlM6OlVJbnRl
Z2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisgICAgdm9p
ZCBkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUs
IE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0
IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpJbnRlZ2VyIGJhc2VWZXJ0ZXgsIE5T
OjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisgICAgdm9pZCByZXNldCgpOworfTsKKworY2xh
c3MgSW5kaXJlY3RDb21wdXRlQ29tbWFuZCA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8SW5kaXJl
Y3RDb21wdXRlQ29tbWFuZD4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIHNldENvbXB1dGVQaXBlbGlu
ZVN0YXRlKGNvbnN0IGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZVN0YXRlKTsK
KworICAgIHZvaWQgc2V0S2VybmVsQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBO
Uzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBjb25j
dXJyZW50RGlzcGF0Y2hUaHJlYWRncm91cHMoTVRMOjpTaXplIHRocmVhZGdyb3Vwc1BlckdyaWQs
IE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworCisgICAgdm9pZCBjb25jdXJyZW50
RGlzcGF0Y2hUaHJlYWRzKE1UTDo6U2l6ZSB0aHJlYWRzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVh
ZHNQZXJUaHJlYWRncm91cCk7CisKKyAgICB2b2lkIHNldEJhcnJpZXIoKTsKKworICAgIHZvaWQg
Y2xlYXJCYXJyaWVyKCk7CisKKyAgICB2b2lkIHNldEltYWdlYmxvY2tXaWR0aChOUzo6VUludGVn
ZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpOworCisgICAgdm9pZCByZXNldCgpOworCisg
ICAgdm9pZCBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIgbGVuZ3RoLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBzZXRTdGFnZUluUmVnaW9uKE1UTDo6UmVn
aW9uIHJlZ2lvbik7Cit9OworCit9CisKKy8vIG1ldGhvZDogc2V0UmVuZGVyUGlwZWxpbmVTdGF0
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQ6OnNldFJlbmRl
clBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBwaXBlbGluZVN0
YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRSZW5kZXJQaXBlbGluZVN0YXRlXyksIHBpcGVsaW5lU3RhdGUpOworfQorCisvLyBt
ZXRob2Q6IHNldFZlcnRleEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQ6OnNldFZlcnRleEJ1ZmZlcihjb25zdCBNVEw6OkJ1
ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFZlcnRleEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOwor
fQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6c2V0RnJhZ21lbnRCdWZmZXIo
Y29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRl
Z2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRGcmFnbWVudEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9m
ZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IGRyYXdQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0
Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VD
b3VudDpiYXNlSW5zdGFuY2U6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOnRlc3NlbGxhdGlvbkZh
Y3RvckJ1ZmZlck9mZnNldDp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlkZToK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQ6OmRyYXdQYXRjaGVz
KE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRlZ2VyIHBh
dGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBNVEw6OkJ1ZmZlciogcGF0
Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpV
SW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlLCBjb25zdCBN
VEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5z
dGFuY2VTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGRyYXdQYXRjaGVzX3BhdGNoU3RhcnRfcGF0Y2hDb3VudF9wYXRjaEluZGV4
QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2Vf
dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyX3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlck9mZnNldF90
ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlkZV8pLCBudW1iZXJPZlBhdGNoQ29u
dHJvbFBvaW50cywgcGF0Y2hTdGFydCwgcGF0Y2hDb3VudCwgcGF0Y2hJbmRleEJ1ZmZlciwgcGF0
Y2hJbmRleEJ1ZmZlck9mZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZUluc3RhbmNlLCBidWZmZXIs
IG9mZnNldCwgaW5zdGFuY2VTdHJpZGUpOworfQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUGF0
Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVm
ZmVyT2Zmc2V0OmNvbnRyb2xQb2ludEluZGV4QnVmZmVyOmNvbnRyb2xQb2ludEluZGV4QnVmZmVy
T2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZl
cjp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXQ6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVy
SW5zdGFuY2VTdHJpZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21t
YW5kOjpkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9s
UG9pbnRzLCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQs
IGNvbnN0IE1UTDo6QnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJ
bmRleEJ1ZmZlck9mZnNldCwgY29uc3QgTVRMOjpCdWZmZXIqIGNvbnRyb2xQb2ludEluZGV4QnVm
ZmVyLCBOUzo6VUludGVnZXIgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50
ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlLCBjb25zdCBNVEw6
OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFu
Y2VTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJ
bmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQb2ludEluZGV4QnVmZmVy
X2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNl
X3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcl90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXRf
dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVySW5zdGFuY2VTdHJpZGVfKSwgbnVtYmVyT2ZQYXRjaENv
bnRyb2xQb2ludHMsIHBhdGNoU3RhcnQsIHBhdGNoQ291bnQsIHBhdGNoSW5kZXhCdWZmZXIsIHBh
dGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBjb250cm9sUG9p
bnRJbmRleEJ1ZmZlck9mZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZUluc3RhbmNlLCBidWZmZXIs
IG9mZnNldCwgaW5zdGFuY2VTdHJpZGUpOworfQorCisvLyBtZXRob2Q6IGRyYXdQcmltaXRpdmVz
OnZlcnRleFN0YXJ0OnZlcnRleENvdW50Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6ZHJhd1ByaW1pdGl2ZXMo
TVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdGFy
dCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwg
TlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVy
dGV4Q291bnRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfKSwgcHJpbWl0aXZlVHlwZSwgdmVy
dGV4U3RhcnQsIHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBiYXNlSW5zdGFuY2UpOworfQor
CisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlwZTpp
bmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VWZXJ0ZXg6YmFz
ZUluc3RhbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6
ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBO
Uzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBN
VEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpJbnRlZ2VyIGJhc2VWZXJ0ZXgsIE5TOjpV
SW50ZWdlciBiYXNlSW5zdGFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRleENvdW50X2lu
ZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VW
ZXJ0ZXhfYmFzZUluc3RhbmNlXyksIHByaW1pdGl2ZVR5cGUsIGluZGV4Q291bnQsIGluZGV4VHlw
ZSwgaW5kZXhCdWZmZXIsIGluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlVmVy
dGV4LCBiYXNlSW5zdGFuY2UpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kOjpyZXNldCgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRM
OjpDb21wdXRlUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5l
U3RhdGVfKSwgcGlwZWxpbmVTdGF0ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0S2VybmVsQnVmZmVy
Om9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNv
bW1hbmQ6OnNldEtlcm5lbEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUlu
dGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEtlcm5lbEJ1ZmZlcl9vZmZzZXRf
YXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IGNvbmN1
cnJlbnREaXNwYXRjaFRocmVhZGdyb3Vwczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6Y29uY3VycmVudERpc3BhdGNo
VGhyZWFkZ3JvdXBzKE1UTDo6U2l6ZSB0aHJlYWRncm91cHNQZXJHcmlkLCBNVEw6OlNpemUgdGhy
ZWFkc1BlclRocmVhZGdyb3VwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRncm91cHNfdGhyZWFk
c1BlclRocmVhZGdyb3VwXyksIHRocmVhZGdyb3Vwc1BlckdyaWQsIHRocmVhZHNQZXJUaHJlYWRn
cm91cCk7Cit9CisKKy8vIG1ldGhvZDogY29uY3VycmVudERpc3BhdGNoVGhyZWFkczp0aHJlYWRz
UGVyVGhyZWFkZ3JvdXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29t
bWFuZDo6Y29uY3VycmVudERpc3BhdGNoVGhyZWFkcyhNVEw6OlNpemUgdGhyZWFkc1BlckdyaWQs
IE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbmN1cnJlbnREaXNwYXRjaFRocmVh
ZHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXyksIHRocmVhZHNQZXJHcmlkLCB0aHJlYWRzUGVyVGhy
ZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IHNldEJhcnJpZXIKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRCYXJyaWVyKCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmFycmllcikpOwor
fQorCisvLyBtZXRob2Q6IGNsZWFyQmFycmllcgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGly
ZWN0Q29tcHV0ZUNvbW1hbmQ6OmNsZWFyQmFycmllcigpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNsZWFyQmFycmllcikpOworfQorCisv
LyBtZXRob2Q6IHNldEltYWdlYmxvY2tXaWR0aDpoZWlnaHQ6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6c2V0SW1hZ2VibG9ja1dpZHRoKE5TOjpVSW50ZWdl
ciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW1hZ2VibG9ja1dpZHRoX2hlaWdodF8p
LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworLy8gbWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KKworLy8g
bWV0aG9kOiBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aDphdEluZGV4OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnNldFRocmVhZGdyb3VwTWVtb3J5TGVu
Z3RoKE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGhyZWFkZ3Jv
dXBNZW1vcnlMZW5ndGhfYXRJbmRleF8pLCBsZW5ndGgsIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBzZXRTdGFnZUluUmVnaW9uOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0
ZUNvbW1hbmQ6OnNldFN0YWdlSW5SZWdpb24oTVRMOjpSZWdpb24gcmVnaW9uKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGFnZUlu
UmVnaW9uXyksIHJlZ2lvbik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTIzODM1ZDFkYjc4YWQ4MmRmNDc2ZDI2MGMzMmRiZDljYmU4MTM2
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcApAQCAtMCwwICsxLDE1NyBAQAorLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwv
TVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0y
MDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNp
bmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgor
CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEJ1
ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25IYW5kbGUuaHBwIgorI2luY2x1ZGUgIk1U
TEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhw
cCIKKyNpbmNsdWRlICJNVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAiCisKK25hbWVzcGFjZSBN
VEwKK3sKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIEludGVyc2VjdGlvbkZ1bmN0aW9uU2ln
bmF0dXJlKSB7CisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVOb25lID0gMCwKKyAg
ICBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZUluc3RhbmNpbmcgPSAxLAorICAgIEludGVy
c2VjdGlvbkZ1bmN0aW9uU2lnbmF0dXJlVHJpYW5nbGVEYXRhID0gMiwKKyAgICBJbnRlcnNlY3Rp
b25GdW5jdGlvblNpZ25hdHVyZVdvcmxkU3BhY2VEYXRhID0gNCwKKyAgICBJbnRlcnNlY3Rpb25G
dW5jdGlvblNpZ25hdHVyZUluc3RhbmNlTW90aW9uID0gOCwKKyAgICBJbnRlcnNlY3Rpb25GdW5j
dGlvblNpZ25hdHVyZVByaW1pdGl2ZU1vdGlvbiA9IDE2LAorICAgIEludGVyc2VjdGlvbkZ1bmN0
aW9uU2lnbmF0dXJlRXh0ZW5kZWRMaW1pdHMgPSAzMiwKK307CisKK2NsYXNzIEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNz
IEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisg
ICAgc3RhdGljIGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBpbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcigpOworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkNvdW50KCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRGdW5jdGlvbkNvdW50KE5TOjpVSW50ZWdlciBmdW5jdGlvbkNvdW50KTsKK307CisKK2NsYXNz
IEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGUsIFJlc291cmNlPgoreworcHVibGljOgorICAgIHZvaWQgc2V0
QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBzZXRCdWZmZXJzKGNvbnN0IGNsYXNzIEJ1
ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFuZ2Ug
cmFuZ2UpOworCisgICAgdm9pZCBzZXRGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbkhhbmRs
ZSogZnVuY3Rpb24sIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldEZ1bmN0aW9u
cyhjb25zdCBjbGFzcyBGdW5jdGlvbkhhbmRsZSogZnVuY3Rpb25zW10sIE5TOjpSYW5nZSByYW5n
ZSk7CisKKyAgICB2b2lkIHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb24oTVRM
OjpJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZSBzaWduYXR1cmUsIE5TOjpVSW50ZWdlciBp
bmRleCk7CisKKyAgICB2b2lkIHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb24o
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZSBzaWduYXR1cmUsIE5TOjpSYW5nZSBy
YW5nZSk7CisKKyAgICB2b2lkIHNldFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZp
c2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5k
ZXgpOworCisgICAgdm9pZCBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgVmlz
aWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSBidWZmZXJSYW5n
ZSk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6
OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I+KF9NVExfUFJJ
VkFURV9DTFMoTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVEZXNjcmlwdG9yKiBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yOjpp
bml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBpbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
RGVzY3JpcHRvcjo6aW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IoKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
RGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25Db3VudAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6
OmZ1bmN0aW9uQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkNvdW50KSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3Jp
cHRvcjo6c2V0RnVuY3Rpb25Db3VudChOUzo6VUludGVnZXIgZnVuY3Rpb25Db3VudCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnVu
Y3Rpb25Db3VudF8pLCBmdW5jdGlvbkNvdW50KTsKK30KKworLy8gbWV0aG9kOiBzZXRCdWZmZXI6
b2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZTo6c2V0QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdl
ciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyX29mZnNldF9hdEluZGV4Xyks
IGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyczpvZmZz
ZXRzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlOjpzZXRCdWZmZXJzKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5T
OjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyc19vZmZzZXRz
X3dpdGhSYW5nZV8pLCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDog
c2V0RnVuY3Rpb246YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlOjpzZXRGdW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBmdW5j
dGlvbiwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGdW5jdGlvbl9hdEluZGV4XyksIGZ1bmN0aW9u
LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnVuY3Rpb25zOndpdGhSYW5nZToKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOjpzZXRGdW5jdGlvbnMo
Y29uc3QgTVRMOjpGdW5jdGlvbkhhbmRsZSogZnVuY3Rpb25zW10sIE5TOjpSYW5nZSByYW5nZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RnVuY3Rpb25zX3dpdGhSYW5nZV8pLCBmdW5jdGlvbnMsIHJhbmdlKTsKK30KKworLy8gbWV0
aG9kOiBzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aFNpZ25hdHVyZTph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6
OnNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb24oTVRMOjpJbnRlcnNlY3Rpb25G
dW5jdGlvblNpZ25hdHVyZSBzaWduYXR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3BhcXVl
VHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmVfYXRJbmRleF8pLCBzaWdu
YXR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPcGFxdWVUcmlhbmdsZUludGVyc2Vj
dGlvbkZ1bmN0aW9uV2l0aFNpZ25hdHVyZTp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTo6c2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rp
b25GdW5jdGlvbihNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uU2lnbmF0dXJlIHNpZ25hdHVyZSwg
TlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0
aFNpZ25hdHVyZV93aXRoUmFuZ2VfKSwgc2lnbmF0dXJlLCByYW5nZSk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJs
ZShjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUlu
dGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFZpc2libGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhf
KSwgZnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZpc2li
bGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTo6c2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0
IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSBi
dWZmZXJSYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBm
dW5jdGlvblRhYmxlcywgYnVmZmVyUmFuZ2UpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpYnJhcnkuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpYnJhcnkuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNTI2N2Ex
NmZjMTlkNDE5NjFhZWZmOWMwOWZhYzdkMDEwOTcyYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlicmFyeS5ocHAKQEAgLTAsMCAr
MSw2MjEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIE1ldGFsL01UTExpYnJhcnkuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVk
ZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2lu
Y2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExBcmd1bWVu
dC5ocHAiCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcCIKKyNpbmNsdWRlICJN
VExMaWJyYXJ5LmhwcCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCituYW1lc3BhY2UgTVRMCit7
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQYXRjaFR5cGUpIHsKKyAgICBQYXRjaFR5cGVOb25l
ID0gMCwKKyAgICBQYXRjaFR5cGVUcmlhbmdsZSA9IDEsCisgICAgUGF0Y2hUeXBlUXVhZCA9IDIs
Cit9OworCitjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFZl
cnRleEF0dHJpYnV0ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4QXR0cmli
dXRlKiBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4QXR0cmlidXRlKiAgICAgICAgaW5pdCgp
OworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgYXR0cmlidXRlSW5kZXgoKSBjb25zdDsK
KworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVR5cGUoKSBjb25z
dDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSgpIGNvbnN0Owor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hEYXRhKCkgY29uc3Q7CisK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaENvbnRyb2xQb2ludERhdGEo
KSBjb25zdDsKK307CisKK2NsYXNzIEF0dHJpYnV0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8
QXR0cmlidXRlPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBdHRyaWJ1dGUqIGFsbG9j
KCk7CisKKyAgICBjbGFzcyBBdHRyaWJ1dGUqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6U3Ry
aW5nKiAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICBhdHRyaWJ1dGVJbmRleCgpIGNvbnN0OworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAg
ICAgYXR0cmlidXRlVHlwZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
YWN0aXZlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICBwYXRjaERhdGEo
KSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIHBhdGNoQ29udHJvbFBvaW50
RGF0YSgpIGNvbnN0OworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgRnVuY3Rpb25UeXBl
KSB7CisgICAgRnVuY3Rpb25UeXBlVmVydGV4ID0gMSwKKyAgICBGdW5jdGlvblR5cGVGcmFnbWVu
dCA9IDIsCisgICAgRnVuY3Rpb25UeXBlS2VybmVsID0gMywKKyAgICBGdW5jdGlvblR5cGVWaXNp
YmxlID0gNSwKKyAgICBGdW5jdGlvblR5cGVJbnRlcnNlY3Rpb24gPSA2LAorfTsKKworY2xhc3Mg
RnVuY3Rpb25Db25zdGFudCA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25Db25zdGFu
dD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25Db25zdGFudCogYWxsb2Mo
KTsKKworICAgIGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnQqICAgICAgICBpbml0KCk7CisKKyAgICBO
Uzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworCisgICAgTVRMOjpE
YXRhVHlwZSAgICAgICAgICAgICAgICAgIHR5cGUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICBpbmRleCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVpcmVkKCkgY29uc3Q7Cit9OworCit1c2luZyBBdXRvcmVsZWFz
ZWRBcmd1bWVudCA9IGNsYXNzIEFyZ3VtZW50KjsKKworY2xhc3MgRnVuY3Rpb24gOiBwdWJsaWMg
TlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uPgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldExh
YmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERldmljZSogICAgICAg
ICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBNVEw6OkZ1bmN0aW9uVHlwZSAgICAgIGZ1bmN0aW9u
VHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpQYXRjaFR5cGUgICAgICAgICBwYXRjaFR5cGUoKSBj
b25zdDsKKworICAgIE5TOjpJbnRlZ2VyICAgICAgICAgICAgcGF0Y2hDb250cm9sUG9pbnRDb3Vu
dCgpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICB2ZXJ0ZXhBdHRyaWJ1dGVz
KCkgY29uc3Q7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgIHN0YWdlSW5wdXRBdHRyaWJ1
dGVzKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgIG5hbWUoKSBjb25zdDsK
KworICAgIE5TOjpEaWN0aW9uYXJ5KiAgICAgICAgZnVuY3Rpb25Db25zdGFudHNEaWN0aW9uYXJ5
KCkgY29uc3Q7CisKKyAgICBjbGFzcyBBcmd1bWVudEVuY29kZXIqIG5ld0FyZ3VtZW50RW5jb2Rl
cihOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVy
KiBuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4LCBjb25zdCBNVEw6
OkF1dG9yZWxlYXNlZEFyZ3VtZW50KiByZWZsZWN0aW9uKTsKKworICAgIE1UTDo6RnVuY3Rpb25P
cHRpb25zICAgb3B0aW9ucygpIGNvbnN0OworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwg
TGFuZ3VhZ2VWZXJzaW9uKSB7CisgICAgTGFuZ3VhZ2VWZXJzaW9uMV8wID0gNjU1MzYsCisgICAg
TGFuZ3VhZ2VWZXJzaW9uMV8xID0gNjU1MzcsCisgICAgTGFuZ3VhZ2VWZXJzaW9uMV8yID0gNjU1
MzgsCisgICAgTGFuZ3VhZ2VWZXJzaW9uMl8wID0gMTMxMDcyLAorICAgIExhbmd1YWdlVmVyc2lv
bjJfMSA9IDEzMTA3MywKKyAgICBMYW5ndWFnZVZlcnNpb24yXzIgPSAxMzEwNzQsCisgICAgTGFu
Z3VhZ2VWZXJzaW9uMl8zID0gMTMxMDc1LAorICAgIExhbmd1YWdlVmVyc2lvbjJfNCA9IDEzMTA3
NiwKK307CisKK19NVExfRU5VTShOUzo6SW50ZWdlciwgTGlicmFyeVR5cGUpIHsKKyAgICBMaWJy
YXJ5VHlwZUV4ZWN1dGFibGUgPSAwLAorICAgIExpYnJhcnlUeXBlRHluYW1pYyA9IDEsCit9Owor
CitjbGFzcyBDb21waWxlT3B0aW9ucyA6IHB1YmxpYyBOUzo6Q29weWluZzxDb21waWxlT3B0aW9u
cz4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQ29tcGlsZU9wdGlvbnMqIGFsbG9jKCk7
CisKKyAgICBjbGFzcyBDb21waWxlT3B0aW9ucyogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpE
aWN0aW9uYXJ5KiAgICAgICAgICAgICAgcHJlcHJvY2Vzc29yTWFjcm9zKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcmVwcm9jZXNzb3JNYWNyb3MoY29uc3Qg
TlM6OkRpY3Rpb25hcnkqIHByZXByb2Nlc3Nvck1hY3Jvcyk7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgIGZhc3RNYXRoRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0RmFzdE1hdGhFbmFibGVkKGJvb2wgZmFzdE1hdGhFbmFibGVk
KTsKKworICAgIE1UTDo6TGFuZ3VhZ2VWZXJzaW9uICAgICAgICAgbGFuZ3VhZ2VWZXJzaW9uKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMYW5ndWFnZVZlcnNp
b24oTVRMOjpMYW5ndWFnZVZlcnNpb24gbGFuZ3VhZ2VWZXJzaW9uKTsKKworICAgIE1UTDo6TGli
cmFyeVR5cGUgICAgICAgICAgICAgbGlicmFyeVR5cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldExpYnJhcnlUeXBlKE1UTDo6TGlicmFyeVR5cGUgbGlicmFy
eVR5cGUpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICBpbnN0YWxsTmFtZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFsbE5hbWUo
Y29uc3QgTlM6OlN0cmluZyogaW5zdGFsbE5hbWUpOworCisgICAgTlM6OkFycmF5KiAgICAgICAg
ICAgICAgICAgICBsaWJyYXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIGxpYnJhcmllcyk7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlSW52YXJpYW5jZSgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJlc2VydmVJbnZhcmlhbmNlKGJv
b2wgcHJlc2VydmVJbnZhcmlhbmNlKTsKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIExp
YnJhcnlFcnJvcikgeworICAgIExpYnJhcnlFcnJvclVuc3VwcG9ydGVkID0gMSwKKyAgICBMaWJy
YXJ5RXJyb3JDb21waWxlRmFpbHVyZSA9IDMsCisgICAgTGlicmFyeUVycm9yQ29tcGlsZVdhcm5p
bmcgPSA0LAorICAgIExpYnJhcnlFcnJvckZ1bmN0aW9uTm90Rm91bmQgPSA1LAorICAgIExpYnJh
cnlFcnJvckZpbGVOb3RGb3VuZCA9IDYsCit9OworCitjbGFzcyBMaWJyYXJ5IDogcHVibGljIE5T
OjpSZWZlcmVuY2luZzxMaWJyYXJ5PgoreworcHVibGljOgorICAgIHZvaWQgICAgICAgICAgICAg
bmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0cmluZyogcEZ1bmN0aW9uTmFtZSwgY29uc3QgY2xhc3Mg
RnVuY3Rpb25Db25zdGFudFZhbHVlcyogcENvbnN0YW50VmFsdWVzLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoRnVuY3Rpb24qIHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpPiYgY29tcGxl
dGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICBuZXdGdW5jdGlvbihjb25zdCBj
bGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoRnVuY3Rpb24qIHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpPiYgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICBuZXdJbnRlcnNlY3Rpb25GdW5jdGlv
bihjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIHBEZXNjcmlwdG9y
LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb24qIHBGdW5jdGlvbiwgTlM6OkVycm9y
KiBwRXJyb3IpPiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgTlM6OlN0cmluZyogICAgICBs
YWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0
cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRGV2aWNlKiAgICBkZXZpY2UoKSBjb25zdDsKKwor
ICAgIGNsYXNzIEZ1bmN0aW9uKiAgbmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0cmluZyogZnVuY3Rp
b25OYW1lKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uKiAgbmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0
cmluZyogbmFtZSwgY29uc3QgY2xhc3MgRnVuY3Rpb25Db25zdGFudFZhbHVlcyogY29uc3RhbnRW
YWx1ZXMsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZvaWQgICAgICAgICAgICAgbmV3RnVu
Y3Rpb24oY29uc3QgTlM6OlN0cmluZyogbmFtZSwgY29uc3QgY2xhc3MgRnVuY3Rpb25Db25zdGFu
dFZhbHVlcyogY29uc3RhbnRWYWx1ZXMsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpG
dW5jdGlvbiosIE5TOjpFcnJvciopKTsKKworICAgIHZvaWQgICAgICAgICAgICAgbmV3RnVuY3Rp
b24oY29uc3QgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSk7CisKKyAgICBjbGFz
cyBGdW5jdGlvbiogIG5ld0Z1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uRGVzY3JpcHRvciog
ZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgdm9pZCAgICAgICAgICAgICBu
ZXdJbnRlcnNlY3Rpb25GdW5jdGlvbihjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvbkRl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpGdW5j
dGlvbiosIE5TOjpFcnJvciopKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uKiAgbmV3SW50ZXJzZWN0
aW9uRnVuY3Rpb24oY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBOUzo6QXJyYXkqICAgICAgIGZ1
bmN0aW9uTmFtZXMoKSBjb25zdDsKKworICAgIE1UTDo6TGlicmFyeVR5cGUgdHlwZSgpIGNvbnN0
OworCisgICAgTlM6OlN0cmluZyogICAgICBpbnN0YWxsTmFtZSgpIGNvbnN0OworfTsKKworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1
dGUqIE1UTDo6VmVydGV4QXR0cmlidXRlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6VmVydGV4QXR0cmlidXRlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRl
eEF0dHJpYnV0ZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmVy
dGV4QXR0cmlidXRlKiBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGU+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6
bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmlu
Zyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTogYXR0
cmlidXRlSW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlZlcnRleEF0dHJpYnV0
ZTo6YXR0cmlidXRlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhdHRyaWJ1dGVJbmRleCkp
OworfQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlVHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRh
VHlwZSBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6YXR0cmlidXRlVHlwZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChhdHRyaWJ1dGVUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY3RpdmUKK19NVExf
SU5MSU5FIGJvb2wgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OmFjdGl2ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
c0FjdGl2ZSkpOworfQorCisvLyBwcm9wZXJ0eTogcGF0Y2hEYXRhCitfTVRMX0lOTElORSBib29s
IE1UTDo6VmVydGV4QXR0cmlidXRlOjpwYXRjaERhdGEoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNQYXRjaERh
dGEpKTsKK30KKworLy8gcHJvcGVydHk6IHBhdGNoQ29udHJvbFBvaW50RGF0YQorX01UTF9JTkxJ
TkUgYm9vbCBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6cGF0Y2hDb250cm9sUG9pbnREYXRhKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGlzUGF0Y2hDb250cm9sUG9pbnREYXRhKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZSogTVRMOjpBdHRyaWJ1dGU6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBdHRyaWJ1dGU+KF9N
VExfUFJJVkFURV9DTFMoTVRMQXR0cmlidXRlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGUqIE1UTDo6QXR0cmlidXRlOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkF0dHJpYnV0ZT4oKTsKK30KKworLy8gcHJvcGVy
dHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6QXR0cmlidXRlOjpuYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhdHRyaWJ1dGVJ
bmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXR0cmlidXRlOjphdHRyaWJ1dGVJ
bmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0ZUluZGV4KSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBhdHRyaWJ1dGVUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6QXR0
cmlidXRlOjphdHRyaWJ1dGVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0ZVR5
cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFjdGl2ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkF0
dHJpYnV0ZTo6YWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzQWN0aXZlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBwYXRjaERhdGEKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpBdHRyaWJ1dGU6OnBhdGNoRGF0
YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChpc1BhdGNoRGF0YSkpOworfQorCisvLyBwcm9wZXJ0eTogcGF0Y2hD
b250cm9sUG9pbnREYXRhCitfTVRMX0lOTElORSBib29sIE1UTDo6QXR0cmlidXRlOjpwYXRjaENv
bnRyb2xQb2ludERhdGEoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNQYXRjaENvbnRyb2xQb2ludERhdGEpKTsK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25D
b25zdGFudCogTVRMOjpGdW5jdGlvbkNvbnN0YW50OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25Db25zdGFudD4oX01UTF9QUklWQVRFX0NMUyhN
VExGdW5jdGlvbkNvbnN0YW50KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpGdW5jdGlvbkNvbnN0YW50KiBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RnVuY3Rpb25Db25zdGFudD4oKTsKK30K
KworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rp
b25Db25zdGFudDo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBw
cm9wZXJ0eTogdHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OkZ1bmN0aW9uQ29u
c3RhbnQ6OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHlwZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogaW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkZ1bmN0aW9uQ29uc3Rh
bnQ6OmluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXgpKTsKK30KKworLy8gcHJvcGVy
dHk6IHJlcXVpcmVkCitfTVRMX0lOTElORSBib29sIE1UTDo6RnVuY3Rpb25Db25zdGFudDo6cmVx
dWlyZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwocmVxdWlyZWQpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVs
CitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uOjpsYWJlbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9u
OjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOwor
fQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpG
dW5jdGlvbjo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBmdW5jdGlvblR5cGUKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25UeXBlIE1U
TDo6RnVuY3Rpb246OmZ1bmN0aW9uVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvblR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVu
Y3Rpb25UeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXRjaFR5cGUKK19NVExfSU5MSU5FIE1U
TDo6UGF0Y2hUeXBlIE1UTDo6RnVuY3Rpb246OnBhdGNoVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQYXRjaFR5cGU+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwocGF0Y2hUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXRjaENvbnRyb2xQb2ludENv
dW50CitfTVRMX0lOTElORSBOUzo6SW50ZWdlciBNVEw6OkZ1bmN0aW9uOjpwYXRjaENvbnRyb2xQ
b2ludENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChwYXRjaENvbnRyb2xQb2ludENvdW50KSk7
Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhBdHRyaWJ1dGVzCitfTVRMX0lOTElORSBOUzo6QXJy
YXkqIE1UTDo6RnVuY3Rpb246OnZlcnRleEF0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
dmVydGV4QXR0cmlidXRlcykpOworfQorCisvLyBwcm9wZXJ0eTogc3RhZ2VJbnB1dEF0dHJpYnV0
ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpGdW5jdGlvbjo6c3RhZ2VJbnB1dEF0dHJp
YnV0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJh
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhZ2VJbnB1dEF0dHJpYnV0ZXMpKTsKK30KKwor
Ly8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb246
Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJp
bmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGZ1
bmN0aW9uQ29uc3RhbnRzRGljdGlvbmFyeQorX01UTF9JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE1U
TDo6RnVuY3Rpb246OmZ1bmN0aW9uQ29uc3RhbnRzRGljdGlvbmFyeSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkRpY3Rpb25hcnkqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGZ1bmN0aW9uQ29uc3RhbnRzRGljdGlvbmFyeSkpOworfQorCisvLyBtZXRob2Q6
IG5ld0FyZ3VtZW50RW5jb2RlcldpdGhCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIE1UTDo6QXJn
dW1lbnRFbmNvZGVyKiBNVEw6OkZ1bmN0aW9uOjpuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRl
Z2VyIGJ1ZmZlckluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QXJndW1lbnRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBcmd1bWVudEVuY29k
ZXJXaXRoQnVmZmVySW5kZXhfKSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IG5ld0Fy
Z3VtZW50RW5jb2RlcldpdGhCdWZmZXJJbmRleDpyZWZsZWN0aW9uOgorX01UTF9JTkxJTkUgTVRM
OjpBcmd1bWVudEVuY29kZXIqIE1UTDo6RnVuY3Rpb246Om5ld0FyZ3VtZW50RW5jb2RlcihOUzo6
VUludGVnZXIgYnVmZmVySW5kZXgsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkQXJndW1lbnQqIHJl
ZmxlY3Rpb24pCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcmd1bWVu
dEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0FyZ3VtZW50RW5jb2RlcldpdGhC
dWZmZXJJbmRleF9yZWZsZWN0aW9uXyksIGJ1ZmZlckluZGV4LCByZWZsZWN0aW9uKTsKK30KKwor
Ly8gcHJvcGVydHk6IG9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25PcHRpb25zIE1U
TDo6RnVuY3Rpb246Om9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6RnVuY3Rpb25PcHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9wdGlv
bnMpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q29t
cGlsZU9wdGlvbnMqIE1UTDo6Q29tcGlsZU9wdGlvbnM6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21waWxlT3B0aW9ucz4oX01UTF9QUklWQVRFX0NMUyhN
VExDb21waWxlT3B0aW9ucykpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6Q29tcGlsZU9wdGlvbnMqIE1UTDo6Q29tcGlsZU9wdGlvbnM6OmluaXQoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tcGlsZU9wdGlvbnM+KCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBwcmVwcm9jZXNzb3JNYWNyb3MKK19NVExfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBN
VEw6OkNvbXBpbGVPcHRpb25zOjpwcmVwcm9jZXNzb3JNYWNyb3MoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpEaWN0aW9uYXJ5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChwcmVwcm9jZXNzb3JNYWNyb3MpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbXBpbGVPcHRpb25zOjpzZXRQcmVwcm9jZXNzb3JNYWNyb3MoY29uc3QgTlM6OkRpY3Rpb25h
cnkqIHByZXByb2Nlc3Nvck1hY3JvcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UHJlcHJvY2Vzc29yTWFjcm9zXyksIHByZXByb2Nl
c3Nvck1hY3Jvcyk7Cit9CisKKy8vIHByb3BlcnR5OiBmYXN0TWF0aEVuYWJsZWQKK19NVExfSU5M
SU5FIGJvb2wgTVRMOjpDb21waWxlT3B0aW9uczo6ZmFzdE1hdGhFbmFibGVkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGZhc3RNYXRoRW5hYmxlZCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcGls
ZU9wdGlvbnM6OnNldEZhc3RNYXRoRW5hYmxlZChib29sIGZhc3RNYXRoRW5hYmxlZCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RmFz
dE1hdGhFbmFibGVkXyksIGZhc3RNYXRoRW5hYmxlZCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYW5n
dWFnZVZlcnNpb24KK19NVExfSU5MSU5FIE1UTDo6TGFuZ3VhZ2VWZXJzaW9uIE1UTDo6Q29tcGls
ZU9wdGlvbnM6Omxhbmd1YWdlVmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpMYW5ndWFnZVZlcnNpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGFuZ3VhZ2VWZXJzaW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0
aW9uczo6c2V0TGFuZ3VhZ2VWZXJzaW9uKE1UTDo6TGFuZ3VhZ2VWZXJzaW9uIGxhbmd1YWdlVmVy
c2lvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0TGFuZ3VhZ2VWZXJzaW9uXyksIGxhbmd1YWdlVmVyc2lvbik7Cit9CisKKy8vIHBy
b3BlcnR5OiBsaWJyYXJ5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5VHlwZSBNVEw6OkNv
bXBpbGVPcHRpb25zOjpsaWJyYXJ5VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5VHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChsaWJy
YXJ5VHlwZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcGlsZU9wdGlvbnM6OnNl
dExpYnJhcnlUeXBlKE1UTDo6TGlicmFyeVR5cGUgbGlicmFyeVR5cGUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExpYnJhcnlUeXBl
XyksIGxpYnJhcnlUeXBlKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbGxOYW1lCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkNvbXBpbGVPcHRpb25zOjppbnN0YWxsTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaW5zdGFsbE5hbWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbXBpbGVPcHRpb25zOjpzZXRJbnN0YWxsTmFtZShjb25zdCBOUzo6U3RyaW5nKiBpbnN0YWxs
TmFtZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0SW5zdGFsbE5hbWVfKSwgaW5zdGFsbE5hbWUpOworfQorCisvLyBwcm9wZXJ0eTog
bGlicmFyaWVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6Q29tcGlsZU9wdGlvbnM6Omxp
YnJhcmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsaWJyYXJpZXMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNvbXBpbGVPcHRpb25zOjpzZXRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5
KiBsaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldExpYnJhcmllc18pLCBsaWJyYXJpZXMpOworfQorCisvLyBwcm9wZXJ0
eTogcHJlc2VydmVJbnZhcmlhbmNlCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcGlsZU9wdGlv
bnM6OnByZXNlcnZlSW52YXJpYW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVzZXJ2ZUludmFyaWFuY2Up
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXBpbGVPcHRpb25zOjpzZXRQcmVzZXJ2
ZUludmFyaWFuY2UoYm9vbCBwcmVzZXJ2ZUludmFyaWFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFByZXNlcnZlSW52YXJpYW5j
ZV8pLCBwcmVzZXJ2ZUludmFyaWFuY2UpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGli
cmFyeTo6bmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0cmluZyogcEZ1bmN0aW9uTmFtZSwgY29uc3Qg
RnVuY3Rpb25Db25zdGFudFZhbHVlcyogcENvbnN0YW50VmFsdWVzLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoRnVuY3Rpb24qIHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpPiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb24g
KiBwRnVuY3Rpb24sIE5TOjpFcnJvciAqIHBFcnJvcik+IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIg
PSBjb21wbGV0aW9uSGFuZGxlcjsKKworICAgIG5ld0Z1bmN0aW9uKHBGdW5jdGlvbk5hbWUsIHBD
b25zdGFudFZhbHVlcywgXihGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikg
eyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBGdW5jdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpMaWJyYXJ5OjpuZXdGdW5jdGlvbihjb25zdCBGdW5jdGlvbkRl
c2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb24q
IHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpPiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgX19ibG9jayBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb24gKiBwRnVuY3Rpb24sIE5TOjpF
cnJvciAqIHBFcnJvcik+IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxl
cjsKKworICAgIG5ld0Z1bmN0aW9uKHBEZXNjcmlwdG9yLCBeKEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIocEZ1bmN0aW9uLCBw
RXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0ludGVy
c2VjdGlvbkZ1bmN0aW9uKGNvbnN0IEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogcERl
c2NyaXB0b3IsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChGdW5jdGlvbiogcEZ1bmN0aW9uLCBO
Uzo6RXJyb3IqIHBFcnJvcik+JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIHN0
ZDo6ZnVuY3Rpb248dm9pZChGdW5jdGlvbiAqIHBGdW5jdGlvbiwgTlM6OkVycm9yICogcEVycm9y
KT4gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3
SW50ZXJzZWN0aW9uRnVuY3Rpb24ocERlc2NyaXB0b3IsIF4oRnVuY3Rpb24qIHBGdW5jdGlvbiwg
TlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwRnVuY3Rpb24sIHBF
cnJvcik7IH0pOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJp
bmcqIE1UTDo6TGlicmFyeTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaWJyYXJ5OjpzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNl
CitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpMaWJyYXJ5OjpkZXZpY2UoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gbWV0aG9kOiBuZXdGdW5jdGlvbldpdGhO
YW1lOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpMaWJyYXJ5OjpuZXdGdW5jdGlv
bihjb25zdCBOUzo6U3RyaW5nKiBmdW5jdGlvbk5hbWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVu
Y3Rpb25XaXRoTmFtZV8pLCBmdW5jdGlvbk5hbWUpOworfQorCisvLyBtZXRob2Q6IG5ld0Z1bmN0
aW9uV2l0aE5hbWU6Y29uc3RhbnRWYWx1ZXM6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0
aW9uKiBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUsIGNv
bnN0IE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlcyogY29uc3RhbnRWYWx1ZXMsIE5TOjpFcnJv
cioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rp
b24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Z1bmN0aW9uV2l0aE5hbWVfY29uc3RhbnRW
YWx1ZXNfZXJyb3JfKSwgbmFtZSwgY29uc3RhbnRWYWx1ZXMsIGVycm9yKTsKK30KKworLy8gbWV0
aG9kOiBuZXdGdW5jdGlvbldpdGhOYW1lOmNvbnN0YW50VmFsdWVzOmNvbXBsZXRpb25IYW5kbGVy
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpT
dHJpbmcqIG5hbWUsIGNvbnN0IE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlcyogY29uc3RhbnRW
YWx1ZXMsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpGdW5jdGlvbiosIE5TOjpFcnJv
ciopKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdGdW5jdGlvbldpdGhOYW1lX2NvbnN0YW50VmFsdWVzX2NvbXBsZXRpb25IYW5kbGVy
XyksIG5hbWUsIGNvbnN0YW50VmFsdWVzLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1l
dGhvZDogbmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpMaWJyYXJ5OjpuZXdGdW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9u
RGVzY3JpcHRvciogZGVzY3JpcHRvciwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShNVEw6OkZ1
bmN0aW9uKiwgTlM6OkVycm9yKikpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0b3JfY29tcGxldGlv
bkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgY29tcGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRo
b2Q6IG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkZ1
bmN0aW9uKiBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb25EZXNj
cmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30K
KworLy8gbWV0aG9kOiBuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yOmNvbXBs
ZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0ludGVyc2Vj
dGlvbkZ1bmN0aW9uKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6
RXJyb3IqKSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9u
SGFuZGxlcl8pLCBkZXNjcmlwdG9yLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhv
ZDogbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjplcnJvcjoKK19NVExfSU5M
SU5FIE1UTDo6RnVuY3Rpb24qIE1UTDo6TGlicmFyeTo6bmV3SW50ZXJzZWN0aW9uRnVuY3Rpb24o
Y29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5T
OjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9u
V2l0aERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBwcm9w
ZXJ0eTogZnVuY3Rpb25OYW1lcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkxpYnJhcnk6
OmZ1bmN0aW9uTmFtZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25OYW1lcykpOworfQor
CisvLyBwcm9wZXJ0eTogdHlwZQorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5VHlwZSBNVEw6Okxp
YnJhcnk6OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6TGlicmFyeVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHlwZSkpOworfQorCisvLyBw
cm9wZXJ0eTogaW5zdGFsbE5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6TGlicmFy
eTo6aW5zdGFsbE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbGxOYW1lKSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlua2Vk
RnVuY3Rpb25zLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExM
aW5rZWRGdW5jdGlvbnMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MzE5YTVhOTQxYmZkODM4N2E2Mjc3NjEw
ODZlYzk2YzI2MGVlY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMTGlua2VkRnVuY3Rpb25zLmhwcApAQCAtMCwwICsxLDExNSBAQAor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0
YWwvTVRMTGlua2VkRnVuY3Rpb25zLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUg
Ik1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNs
dWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1lc3BhY2UgTVRMCit7CitjbGFz
cyBMaW5rZWRGdW5jdGlvbnMgOiBwdWJsaWMgTlM6OkNvcHlpbmc8TGlua2VkRnVuY3Rpb25zPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMg
Y2xhc3MgTGlua2VkRnVuY3Rpb25zKiBsaW5rZWRGdW5jdGlvbnMoKTsKKworICAgIE5TOjpBcnJh
eSogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9u
cyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICBiaW5hcnlGdW5jdGlvbnMo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCaW5hcnlGdW5j
dGlvbnMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlGdW5jdGlvbnMpOworCisgICAgTlM6OkFycmF5
KiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0R3JvdXBzKGNvbnN0IE5TOjpBcnJheSogZ3JvdXBzKTsKKworICAg
IE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgIHByaXZhdGVGdW5jdGlvbnMoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcml2YXRlRnVuY3Rpb25zKGNv
bnN0IE5TOjpBcnJheSogcHJpdmF0ZUZ1bmN0aW9ucyk7Cit9OworCit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogTVRMOjpMaW5r
ZWRGdW5jdGlvbnM6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpMaW5rZWRGdW5jdGlvbnM+KF9NVExfUFJJVkFURV9DTFMoTVRMTGlua2VkRnVuY3Rpb25zKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpMaW5rZWRGdW5jdGlvbnMq
IE1UTDo6TGlua2VkRnVuY3Rpb25zOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OkxpbmtlZEZ1bmN0aW9ucz4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogbGlu
a2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogTVRMOjpMaW5r
ZWRGdW5jdGlvbnM6OmxpbmtlZEZ1bmN0aW9ucygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpMaW5rZWRGdW5jdGlvbnMqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTExpbmtl
ZEZ1bmN0aW9ucyksIF9NVExfUFJJVkFURV9TRUwobGlua2VkRnVuY3Rpb25zKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBmdW5jdGlvbnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpMaW5rZWRG
dW5jdGlvbnM6OmZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbnMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6c2V0RnVuY3Rpb25zKGNv
bnN0IE5TOjpBcnJheSogZnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGdW5jdGlvbnNfKSwgZnVuY3Rpb25zKTsKK30K
KworLy8gcHJvcGVydHk6IGJpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBN
VEw6OkxpbmtlZEZ1bmN0aW9uczo6YmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGJpbmFyeUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlua2VkRnVu
Y3Rpb25zOjpzZXRCaW5hcnlGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlGdW5jdGlv
bnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEJpbmFyeUZ1bmN0aW9uc18pLCBiaW5hcnlGdW5jdGlvbnMpOworfQorCisvLyBwcm9w
ZXJ0eTogZ3JvdXBzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6TGlua2VkRnVuY3Rpb25z
Ojpncm91cHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpB
cnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZ3JvdXBzKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpMaW5rZWRGdW5jdGlvbnM6OnNldEdyb3Vwcyhjb25zdCBOUzo6QXJyYXkqIGdy
b3VwcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0R3JvdXBzXyksIGdyb3Vwcyk7Cit9CisKKy8vIHByb3BlcnR5OiBwcml2YXRlRnVu
Y3Rpb25zCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpwcml2
YXRlRnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByaXZhdGVGdW5jdGlvbnMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6c2V0UHJpdmF0ZUZ1bmN0
aW9ucyhjb25zdCBOUzo6QXJyYXkqIHByaXZhdGVGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFByaXZhdGVGdW5jdGlv
bnNfKSwgcHJpdmF0ZUZ1bmN0aW9ucyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5kZXJD
b21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQzN2I0YzhjOTdkMTUyZGNiNjJhMDAxMmQ0
ZWY2NTQ4YmQ1YTQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcApAQCAtMCww
ICsxLDk0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vCisvLyBNZXRhbC9NVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8v
IENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1U
TERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAi
TVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgor
CisjaW5jbHVkZSAiTVRMQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlclBh
c3MuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBQYXJhbGxlbFJlbmRlckNvbW1hbmRF
bmNvZGVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNv
ZGVyLCBDb21tYW5kRW5jb2Rlcj4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBSZW5kZXJDb21tYW5k
RW5jb2RlciogcmVuZGVyQ29tbWFuZEVuY29kZXIoKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRDb2xvclN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rp
b24sIE5TOjpVSW50ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0RGVwdGhTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0
b3JlQWN0aW9uKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVuY2ls
U3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbik7CisKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9y
ZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zLCBOUzo6VUludGVnZXIgY29sb3JBdHRh
Y2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRo
U3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0
aW9ucyk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbFN0b3Jl
QWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMp
OworfTsKKworfQorCisvLyBtZXRob2Q6IHJlbmRlckNvbW1hbmRFbmNvZGVyCitfTVRMX0lOTElO
RSBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyKiBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnJlbmRlckNvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChyZW5kZXJDb21tYW5kRW5jb2RlcikpOworfQorCisvLyBtZXRob2Q6IHNldENvbG9yU3RvcmVB
Y3Rpb246YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQYXJhbGxlbFJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRDb2xvclN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rp
b24sIE5TOjpVSW50ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29sb3JTdG9yZUFjdGlv
bl9hdEluZGV4XyksIHN0b3JlQWN0aW9uLCBjb2xvckF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0RGVwdGhTdG9yZUFjdGlvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQYXJh
bGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVB
Y3Rpb24gc3RvcmVBY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoU3RvcmVBY3Rpb25fKSwgc3RvcmVBY3Rpb24pOwor
fQorCisvLyBtZXRob2Q6IHNldFN0ZW5jaWxTdG9yZUFjdGlvbjoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVuY2lsU3RvcmVBY3Rpb24o
TVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFN0b3JlQWN0aW9uXyksIHN0
b3JlQWN0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9uczph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0
b3JlQWN0aW9uT3B0aW9ucywgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRD
b2xvclN0b3JlQWN0aW9uT3B0aW9uc19hdEluZGV4XyksIHN0b3JlQWN0aW9uT3B0aW9ucywgY29s
b3JBdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoU3RvcmVBY3Rpb25P
cHRpb25zOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldERlcHRoU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0
b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnNfKSwgc3RvcmVBY3Rp
b25PcHRpb25zKTsKK30KKworLy8gbWV0aG9kOiBzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25z
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNl
dFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVB
Y3Rpb25PcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zXyksIHN0b3JlQWN0aW9u
T3B0aW9ucyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUGlwZWxpbmUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFBpcGVsaW5lLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTNjOTQ3NzM5NmFkN2MzMTZkNmI2Y2Ri
ZWYyYTIwOGM0Zjk4Nzg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFBpcGVsaW5lLmhwcApAQCAtMCwwICsxLDEwOSBAQAorLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRM
UGlwZWxpbmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJp
ZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExQaXBlbGluZS5ocHAiCisKK25hbWVz
cGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIE11dGFiaWxpdHkpIHsKKyAgICBN
dXRhYmlsaXR5RGVmYXVsdCA9IDAsCisgICAgTXV0YWJpbGl0eU11dGFibGUgPSAxLAorICAgIE11
dGFiaWxpdHlJbW11dGFibGUgPSAyLAorfTsKKworY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcj4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiBhbGxvYygp
OworCisgICAgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOwor
CisgICAgTVRMOjpNdXRhYmlsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgbXV0YWJpbGl0eSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE11
dGFiaWxpdHkoTVRMOjpNdXRhYmlsaXR5IG11dGFiaWxpdHkpOworfTsKKworY2xhc3MgUGlwZWxp
bmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFBpcGVsaW5l
QnVmZmVyRGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFBpcGVsaW5l
QnVmZmVyRGVzY3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgUGlwZWxp
bmVCdWZmZXJEZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGJ1ZmZl
ckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciogYnVmZmVy
LCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6
UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OlBpcGVsaW5lQnVm
ZmVyRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBtdXRhYmls
aXR5CitfTVRMX0lOTElORSBNVEw6Ok11dGFiaWxpdHkgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2Ny
aXB0b3I6Om11dGFiaWxpdHkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6TXV0YWJpbGl0eT4odGhpcywgX01UTF9QUklWQVRFX1NFTChtdXRhYmlsaXR5KSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I6OnNl
dE11dGFiaWxpdHkoTVRMOjpNdXRhYmlsaXR5IG11dGFiaWxpdHkpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE11dGFiaWxpdHlfKSwg
bXV0YWJpbGl0eSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBN
VEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBNVEw6OlBpcGVsaW5lQnVmZmVyRGVz
Y3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1U
TDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUGlw
ZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBNVEw6OlBpcGVsaW5l
QnVmZmVyRGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRo
b2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UGlwZWxpbmVC
dWZmZXJEZXNjcmlwdG9yKiBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5OjpvYmpl
Y3QoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYnVmZmVySW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OlBp
cGVsaW5lQnVmZmVyRGVzY3JpcHRvciogYnVmZmVyLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYnVmZmVyLCBidWZmZXJJbmRleCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGl4
ZWxGb3JtYXQuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBp
eGVsRm9ybWF0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzIwYzgyOWViYTA1MjI3YzVjOTQ1OTNmNDdiYmI3
NmYxMTI0MWNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFBpeGVsRm9ybWF0LmhwcApAQCAtMCwwICsxLDE3MyBAQAorLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUGl4
ZWxGb3JtYXQuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJp
ZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUlu
dGVnZXIsIFBpeGVsRm9ybWF0KSB7CisgICAgUGl4ZWxGb3JtYXRJbnZhbGlkID0gMCwKKyAgICBQ
aXhlbEZvcm1hdEE4VW5vcm0gPSAxLAorICAgIFBpeGVsRm9ybWF0UjhVbm9ybSA9IDEwLAorICAg
IFBpeGVsRm9ybWF0UjhVbm9ybV9zUkdCID0gMTEsCisgICAgUGl4ZWxGb3JtYXRSOFNub3JtID0g
MTIsCisgICAgUGl4ZWxGb3JtYXRSOFVpbnQgPSAxMywKKyAgICBQaXhlbEZvcm1hdFI4U2ludCA9
IDE0LAorICAgIFBpeGVsRm9ybWF0UjE2VW5vcm0gPSAyMCwKKyAgICBQaXhlbEZvcm1hdFIxNlNu
b3JtID0gMjIsCisgICAgUGl4ZWxGb3JtYXRSMTZVaW50ID0gMjMsCisgICAgUGl4ZWxGb3JtYXRS
MTZTaW50ID0gMjQsCisgICAgUGl4ZWxGb3JtYXRSMTZGbG9hdCA9IDI1LAorICAgIFBpeGVsRm9y
bWF0Ukc4VW5vcm0gPSAzMCwKKyAgICBQaXhlbEZvcm1hdFJHOFVub3JtX3NSR0IgPSAzMSwKKyAg
ICBQaXhlbEZvcm1hdFJHOFNub3JtID0gMzIsCisgICAgUGl4ZWxGb3JtYXRSRzhVaW50ID0gMzMs
CisgICAgUGl4ZWxGb3JtYXRSRzhTaW50ID0gMzQsCisgICAgUGl4ZWxGb3JtYXRCNUc2UjVVbm9y
bSA9IDQwLAorICAgIFBpeGVsRm9ybWF0QTFCR1I1VW5vcm0gPSA0MSwKKyAgICBQaXhlbEZvcm1h
dEFCR1I0VW5vcm0gPSA0MiwKKyAgICBQaXhlbEZvcm1hdEJHUjVBMVVub3JtID0gNDMsCisgICAg
UGl4ZWxGb3JtYXRSMzJVaW50ID0gNTMsCisgICAgUGl4ZWxGb3JtYXRSMzJTaW50ID0gNTQsCisg
ICAgUGl4ZWxGb3JtYXRSMzJGbG9hdCA9IDU1LAorICAgIFBpeGVsRm9ybWF0UkcxNlVub3JtID0g
NjAsCisgICAgUGl4ZWxGb3JtYXRSRzE2U25vcm0gPSA2MiwKKyAgICBQaXhlbEZvcm1hdFJHMTZV
aW50ID0gNjMsCisgICAgUGl4ZWxGb3JtYXRSRzE2U2ludCA9IDY0LAorICAgIFBpeGVsRm9ybWF0
UkcxNkZsb2F0ID0gNjUsCisgICAgUGl4ZWxGb3JtYXRSR0JBOFVub3JtID0gNzAsCisgICAgUGl4
ZWxGb3JtYXRSR0JBOFVub3JtX3NSR0IgPSA3MSwKKyAgICBQaXhlbEZvcm1hdFJHQkE4U25vcm0g
PSA3MiwKKyAgICBQaXhlbEZvcm1hdFJHQkE4VWludCA9IDczLAorICAgIFBpeGVsRm9ybWF0UkdC
QThTaW50ID0gNzQsCisgICAgUGl4ZWxGb3JtYXRCR1JBOFVub3JtID0gODAsCisgICAgUGl4ZWxG
b3JtYXRCR1JBOFVub3JtX3NSR0IgPSA4MSwKKyAgICBQaXhlbEZvcm1hdFJHQjEwQTJVbm9ybSA9
IDkwLAorICAgIFBpeGVsRm9ybWF0UkdCMTBBMlVpbnQgPSA5MSwKKyAgICBQaXhlbEZvcm1hdFJH
MTFCMTBGbG9hdCA9IDkyLAorICAgIFBpeGVsRm9ybWF0UkdCOUU1RmxvYXQgPSA5MywKKyAgICBQ
aXhlbEZvcm1hdEJHUjEwQTJVbm9ybSA9IDk0LAorICAgIFBpeGVsRm9ybWF0UkczMlVpbnQgPSAx
MDMsCisgICAgUGl4ZWxGb3JtYXRSRzMyU2ludCA9IDEwNCwKKyAgICBQaXhlbEZvcm1hdFJHMzJG
bG9hdCA9IDEwNSwKKyAgICBQaXhlbEZvcm1hdFJHQkExNlVub3JtID0gMTEwLAorICAgIFBpeGVs
Rm9ybWF0UkdCQTE2U25vcm0gPSAxMTIsCisgICAgUGl4ZWxGb3JtYXRSR0JBMTZVaW50ID0gMTEz
LAorICAgIFBpeGVsRm9ybWF0UkdCQTE2U2ludCA9IDExNCwKKyAgICBQaXhlbEZvcm1hdFJHQkEx
NkZsb2F0ID0gMTE1LAorICAgIFBpeGVsRm9ybWF0UkdCQTMyVWludCA9IDEyMywKKyAgICBQaXhl
bEZvcm1hdFJHQkEzMlNpbnQgPSAxMjQsCisgICAgUGl4ZWxGb3JtYXRSR0JBMzJGbG9hdCA9IDEy
NSwKKyAgICBQaXhlbEZvcm1hdEJDMV9SR0JBID0gMTMwLAorICAgIFBpeGVsRm9ybWF0QkMxX1JH
QkFfc1JHQiA9IDEzMSwKKyAgICBQaXhlbEZvcm1hdEJDMl9SR0JBID0gMTMyLAorICAgIFBpeGVs
Rm9ybWF0QkMyX1JHQkFfc1JHQiA9IDEzMywKKyAgICBQaXhlbEZvcm1hdEJDM19SR0JBID0gMTM0
LAorICAgIFBpeGVsRm9ybWF0QkMzX1JHQkFfc1JHQiA9IDEzNSwKKyAgICBQaXhlbEZvcm1hdEJD
NF9SVW5vcm0gPSAxNDAsCisgICAgUGl4ZWxGb3JtYXRCQzRfUlNub3JtID0gMTQxLAorICAgIFBp
eGVsRm9ybWF0QkM1X1JHVW5vcm0gPSAxNDIsCisgICAgUGl4ZWxGb3JtYXRCQzVfUkdTbm9ybSA9
IDE0MywKKyAgICBQaXhlbEZvcm1hdEJDNkhfUkdCRmxvYXQgPSAxNTAsCisgICAgUGl4ZWxGb3Jt
YXRCQzZIX1JHQlVmbG9hdCA9IDE1MSwKKyAgICBQaXhlbEZvcm1hdEJDN19SR0JBVW5vcm0gPSAx
NTIsCisgICAgUGl4ZWxGb3JtYXRCQzdfUkdCQVVub3JtX3NSR0IgPSAxNTMsCisgICAgUGl4ZWxG
b3JtYXRQVlJUQ19SR0JfMkJQUCA9IDE2MCwKKyAgICBQaXhlbEZvcm1hdFBWUlRDX1JHQl8yQlBQ
X3NSR0IgPSAxNjEsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JfNEJQUCA9IDE2MiwKKyAgICBQ
aXhlbEZvcm1hdFBWUlRDX1JHQl80QlBQX3NSR0IgPSAxNjMsCisgICAgUGl4ZWxGb3JtYXRQVlJU
Q19SR0JBXzJCUFAgPSAxNjQsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JBXzJCUFBfc1JHQiA9
IDE2NSwKKyAgICBQaXhlbEZvcm1hdFBWUlRDX1JHQkFfNEJQUCA9IDE2NiwKKyAgICBQaXhlbEZv
cm1hdFBWUlRDX1JHQkFfNEJQUF9zUkdCID0gMTY3LAorICAgIFBpeGVsRm9ybWF0RUFDX1IxMVVu
b3JtID0gMTcwLAorICAgIFBpeGVsRm9ybWF0RUFDX1IxMVNub3JtID0gMTcyLAorICAgIFBpeGVs
Rm9ybWF0RUFDX1JHMTFVbm9ybSA9IDE3NCwKKyAgICBQaXhlbEZvcm1hdEVBQ19SRzExU25vcm0g
PSAxNzYsCisgICAgUGl4ZWxGb3JtYXRFQUNfUkdCQTggPSAxNzgsCisgICAgUGl4ZWxGb3JtYXRF
QUNfUkdCQThfc1JHQiA9IDE3OSwKKyAgICBQaXhlbEZvcm1hdEVUQzJfUkdCOCA9IDE4MCwKKyAg
ICBQaXhlbEZvcm1hdEVUQzJfUkdCOF9zUkdCID0gMTgxLAorICAgIFBpeGVsRm9ybWF0RVRDMl9S
R0I4QTEgPSAxODIsCisgICAgUGl4ZWxGb3JtYXRFVEMyX1JHQjhBMV9zUkdCID0gMTgzLAorICAg
IFBpeGVsRm9ybWF0QVNUQ180eDRfc1JHQiA9IDE4NiwKKyAgICBQaXhlbEZvcm1hdEFTVENfNXg0
X3NSR0IgPSAxODcsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzV4NV9zUkdCID0gMTg4LAorICAgIFBp
eGVsRm9ybWF0QVNUQ182eDVfc1JHQiA9IDE4OSwKKyAgICBQaXhlbEZvcm1hdEFTVENfNng2X3NS
R0IgPSAxOTAsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzh4NV9zUkdCID0gMTkyLAorICAgIFBpeGVs
Rm9ybWF0QVNUQ184eDZfc1JHQiA9IDE5MywKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg4X3NSR0Ig
PSAxOTQsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDVfc1JHQiA9IDE5NSwKKyAgICBQaXhlbEZv
cm1hdEFTVENfMTB4Nl9zUkdCID0gMTk2LAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMHg4X3NSR0Ig
PSAxOTcsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDEwX3NSR0IgPSAxOTgsCisgICAgUGl4ZWxG
b3JtYXRBU1RDXzEyeDEwX3NSR0IgPSAxOTksCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEyeDEyX3NS
R0IgPSAyMDAsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzR4NF9MRFIgPSAyMDQsCisgICAgUGl4ZWxG
b3JtYXRBU1RDXzV4NF9MRFIgPSAyMDUsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzV4NV9MRFIgPSAy
MDYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzZ4NV9MRFIgPSAyMDcsCisgICAgUGl4ZWxGb3JtYXRB
U1RDXzZ4Nl9MRFIgPSAyMDgsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzh4NV9MRFIgPSAyMTAsCisg
ICAgUGl4ZWxGb3JtYXRBU1RDXzh4Nl9MRFIgPSAyMTEsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzh4
OF9MRFIgPSAyMTIsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDVfTERSID0gMjEzLAorICAgIFBp
eGVsRm9ybWF0QVNUQ18xMHg2X0xEUiA9IDIxNCwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4OF9M
RFIgPSAyMTUsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDEwX0xEUiA9IDIxNiwKKyAgICBQaXhl
bEZvcm1hdEFTVENfMTJ4MTBfTERSID0gMjE3LAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMngxMl9M
RFIgPSAyMTgsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzR4NF9IRFIgPSAyMjIsCisgICAgUGl4ZWxG
b3JtYXRBU1RDXzV4NF9IRFIgPSAyMjMsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzV4NV9IRFIgPSAy
MjQsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzZ4NV9IRFIgPSAyMjUsCisgICAgUGl4ZWxGb3JtYXRB
U1RDXzZ4Nl9IRFIgPSAyMjYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzh4NV9IRFIgPSAyMjgsCisg
ICAgUGl4ZWxGb3JtYXRBU1RDXzh4Nl9IRFIgPSAyMjksCisgICAgUGl4ZWxGb3JtYXRBU1RDXzh4
OF9IRFIgPSAyMzAsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDVfSERSID0gMjMxLAorICAgIFBp
eGVsRm9ybWF0QVNUQ18xMHg2X0hEUiA9IDIzMiwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4OF9I
RFIgPSAyMzMsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDEwX0hEUiA9IDIzNCwKKyAgICBQaXhl
bEZvcm1hdEFTVENfMTJ4MTBfSERSID0gMjM1LAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMngxMl9I
RFIgPSAyMzYsCisgICAgUGl4ZWxGb3JtYXRHQkdSNDIyID0gMjQwLAorICAgIFBpeGVsRm9ybWF0
QkdSRzQyMiA9IDI0MSwKKyAgICBQaXhlbEZvcm1hdERlcHRoMTZVbm9ybSA9IDI1MCwKKyAgICBQ
aXhlbEZvcm1hdERlcHRoMzJGbG9hdCA9IDI1MiwKKyAgICBQaXhlbEZvcm1hdFN0ZW5jaWw4ID0g
MjUzLAorICAgIFBpeGVsRm9ybWF0RGVwdGgyNFVub3JtX1N0ZW5jaWw4ID0gMjU1LAorICAgIFBp
eGVsRm9ybWF0RGVwdGgzMkZsb2F0X1N0ZW5jaWw4ID0gMjYwLAorICAgIFBpeGVsRm9ybWF0WDMy
X1N0ZW5jaWw4ID0gMjYxLAorICAgIFBpeGVsRm9ybWF0WDI0X1N0ZW5jaWw4ID0gMjYyLAorICAg
IFBpeGVsRm9ybWF0QkdSQTEwX1hSID0gNTUyLAorICAgIFBpeGVsRm9ybWF0QkdSQTEwX1hSX3NS
R0IgPSA1NTMsCisgICAgUGl4ZWxGb3JtYXRCR1IxMF9YUiA9IDU1NCwKKyAgICBQaXhlbEZvcm1h
dEJHUjEwX1hSX3NSR0IgPSA1NTUsCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUHJpdmF0ZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUHJpdmF0ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FlNGQ3OWU0
ODcxNmNhMzY3YWRhODUxYTA1ZjVmNDZiMTUwZGMxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQcml2YXRlLmhwcApAQCAtMCwwICsx
LDEzNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMUHJpdmF0ZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFw
cGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisKKyNpbmNsdWRlIDxvYmpj
L3J1bnRpbWUuaD4KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNkZWZpbmUgX01UTF9QUklWQVRFX0NMUyhzeW1ib2wpIChQcml2YXRlOjpDbGFzczo6
c19rIyNzeW1ib2wpCisjZGVmaW5lIF9NVExfUFJJVkFURV9TRUwoYWNjZXNzb3IpIChQcml2YXRl
OjpTZWxlY3Rvcjo6c19rIyNhY2Nlc3NvcikKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBkZWZpbmVkKE1UTF9QUklWQVRFX0lNUExFTUVOVEFU
SU9OKQorCisjZGVmaW5lIF9NVExfUFJJVkFURV9WSVNJQklMSVRZIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImhpZGRlbiIpKSkKKyNkZWZpbmUgX01UTF9QUklWQVRFX0lNUE9SVCBfX2F0dHJp
YnV0ZV9fKCh3ZWFrX2ltcG9ydCkpCisKKyNpZiBfX09CSkNfXworI2RlZmluZSBfTVRMX1BSSVZB
VEVfT0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKSAoKF9fYnJpZGdlIHZvaWQqKW9iamNfbG9va1Vw
Q2xhc3MoI3N5bWJvbCkpCisjZWxzZQorI2RlZmluZSBfTVRMX1BSSVZBVEVfT0JKQ19MT09LVVBf
Q0xBU1Moc3ltYm9sKSBvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wpCisjZW5kaWYgLy8gX19PQkpD
X18KKworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX0NMUyhzeW1ib2wpIHZvaWQqIHNfayMjc3lt
Ym9sIF9NVExfUFJJVkFURV9WSVNJQklMSVRZID0gX01UTF9QUklWQVRFX09CSkNfTE9PS1VQX0NM
QVNTKHN5bWJvbCk7CisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfUFJPKHN5bWJvbCkKKyNkZWZp
bmUgX01UTF9QUklWQVRFX0RFRl9TRUwoYWNjZXNzb3IsIHN5bWJvbCkgU0VMIHNfayMjYWNjZXNz
b3IgX01UTF9QUklWQVRFX1ZJU0lCSUxJVFkgPSBzZWxfcmVnaXN0ZXJOYW1lKHN5bWJvbCk7CisK
KyNpZiBkZWZpbmVkKF9fTUFDXzEwXzE2KSB8fCBkZWZpbmVkKF9fTUFDXzExXzApIHx8IGRlZmlu
ZWQoX19NQUNfMTJfMCkgfHwgZGVmaW5lZChfX0lQSE9ORV8xNF8wKSB8fCBkZWZpbmVkKF9fSVBI
T05FXzE1XzApIHx8IGRlZmluZWQoX19UVk9TXzE0XzApIHx8IGRlZmluZWQoX19UVk9TXzE1XzAp
CisKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9TVFIodHlwZSwgc3ltYm9sKSAgICAgICAgICAg
ICAgICAgIFwKKyAgICBfTVRMX0VYVEVSTiB0eXBlIGNvbnN0IE1UTCMjc3ltYm9sIF9NVExfUFJJ
VkFURV9JTVBPUlQ7IFwKKyAgICB0eXBlIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgIE1U
TDo6c3ltYm9sID0gKG51bGxwdHIgIT0gJk1UTCMjc3ltYm9sKSA/IE1UTCMjc3ltYm9sIDogbnVs
bHB0cjsKKworI2Vsc2UKKworI2luY2x1ZGUgPGRsZmNuLmg+CisKK25hbWVzcGFjZSBNVEwKK3sK
K25hbWVzcGFjZSBQcml2YXRlCit7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1R5cGU+Cisg
ICAgaW5saW5lIF9UeXBlIGNvbnN0IExvYWRTeW1ib2woY29uc3QgY2hhciogcFN5bWJvbCkKKyAg
ICB7CisgICAgICAgIGNvbnN0IF9UeXBlKiBwQWRkcmVzcyA9IHN0YXRpY19jYXN0PF9UeXBlKj4o
ZGxzeW0oUlRMRF9ERUZBVUxULCBwU3ltYm9sKSk7CisKKyAgICAgICAgcmV0dXJuIHBBZGRyZXNz
ID8gKnBBZGRyZXNzIDogbnVsbHB0cjsKKyAgICB9CisKK30gLy8gUHJpdmF0ZQorfSAvLyBNVEwK
KworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX1NUUih0eXBlLCBzeW1ib2wpIFwKKyAgICBfTVRM
X0VYVEVSTiB0eXBlIGNvbnN0IE1UTCMjc3ltYm9sOyAgICBcCisgICAgdHlwZSBjb25zdCAgICAg
ICAgICAgICBNVEw6OnN5bWJvbCA9IFByaXZhdGU6OkxvYWRTeW1ib2w8dHlwZT4oIk1UTCIgI3N5
bWJvbCk7CisKKyNlbmRpZiAvLyBkZWZpbmVkKF9fTUFDXzEwXzE2KSB8fCBkZWZpbmVkKF9fTUFD
XzExXzApIHx8IGRlZmluZWQoX19NQUNfMTJfMCkgfHwgZGVmaW5lZChfX0lQSE9ORV8xNF8wKSB8
fCBkZWZpbmVkKF9fSVBIT05FXzE1XzApIHx8IGRlZmluZWQoX19UVk9TXzE0XzApIHx8IGRlZmlu
ZWQoX19UVk9TXzE1XzApCisKKyNlbHNlCisKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9DTFMo
c3ltYm9sKSBleHRlcm4gdm9pZCogc19rIyNzeW1ib2w7CisjZGVmaW5lIF9NVExfUFJJVkFURV9E
RUZfUFJPKHN5bWJvbCkKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9TRUwoYWNjZXNzb3IsIHN5
bWJvbCkgZXh0ZXJuIFNFTCBzX2sjI2FjY2Vzc29yOworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVG
X1NUUih0eXBlLCBzeW1ib2wpCisKKyNlbmRpZiAvLyBNVExfUFJJVkFURV9JTVBMRU1FTlRBVElP
TgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFt
ZXNwYWNlIE1UTAoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAgICBuYW1lc3BhY2UgQ2xhc3MK
KyAgICB7CisKKyAgICB9IC8vIENsYXNzCit9IC8vIFByaXZhdGUKK30gLy8gTVRMCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTVRM
Cit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBQcm90b2NvbAorICAgIHsK
KworICAgIH0gLy8gUHJvdG9jb2wKK30gLy8gUHJpdmF0ZQorfSAvLyBNVEwKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBNVEwKK3sK
K25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFtZXNwYWNlIFNlbGVjdG9yCisgICAgeworCisg
ICAgICAgIF9NVExfUFJJVkFURV9ERUZfU0VMKGJlZ2luU2NvcGUsCisgICAgICAgICAgICAiYmVn
aW5TY29wZSIpOworICAgICAgICBfTVRMX1BSSVZBVEVfREVGX1NFTChlbmRTY29wZSwKKyAgICAg
ICAgICAgICJlbmRTY29wZSIpOworICAgIH0gLy8gQ2xhc3MKK30gLy8gUHJpdmF0ZQorfSAvLyBN
VEwKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmFzdGVyaXph
dGlvblJhdGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJh
c3Rlcml6YXRpb25SYXRlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODY2OTU0NWNiMmM4ZWEzMzA5MWNmZTVh
OWY4ZWMxODZiYmExMmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRlLmhwcApAQCAtMCwwICsxLDM4NiBA
QAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8g
TWV0YWwvTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAy
MSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5j
bHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKwor
I2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExEZXZp
Y2UuaHBwIgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xh
c3MgUmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8
UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xh
c3MgUmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFJh
c3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6TnVt
YmVyKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBp
bmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0T2JqZWN0KGNvbnN0IE5TOjpOdW1iZXIqIHZhbHVlLCBOUzo6VUludGVnZXIgaW5kZXgpOwor
fTsKKworY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6
OkNvcHlpbmc8UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBhbGxvYygp
OworCisgICAgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogICAgICAgICBp
bml0KCk7CisKKyAgICBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiAgICAg
ICAgIGluaXQoTVRMOjpTaXplIHNhbXBsZUNvdW50KTsKKworICAgIE1UTDo6UmFzdGVyaXphdGlv
blJhdGVMYXllckRlc2NyaXB0b3IqICAgICAgICAgaW5pdChNVEw6OlNpemUgc2FtcGxlQ291bnQs
IGNvbnN0IGZsb2F0KiBob3Jpem9udGFsLCBjb25zdCBmbG9hdCogdmVydGljYWwpOworCisgICAg
TVRMOjpTaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVDb3Vu
dCgpIGNvbnN0OworCisgICAgTVRMOjpTaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhTYW1wbGVDb3VudCgpIGNvbnN0OworCisgICAgZmxvYXQqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsU2FtcGxlU3RvcmFnZSgpIGNv
bnN0OworCisgICAgZmxvYXQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2ZXJ0aWNhbFNhbXBsZVN0b3JhZ2UoKSBjb25zdDsKKworICAgIGNsYXNzIFJhc3Rlcml6YXRp
b25SYXRlU2FtcGxlQXJyYXkqICAgICAgICAgICAgaG9yaXpvbnRhbCgpIGNvbnN0OworCisgICAg
Y2xhc3MgUmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogICAgICAgICAgICB2ZXJ0aWNhbCgp
IGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTYW1wbGVDb3VudChNVEw6OlNpemUgc2FtcGxlQ291bnQpOworfTsKKworY2xhc3Mg
UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSYXN0
ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJh
c3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFJhc3Rlcml6
YXRpb25SYXRlTGF5ZXJBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIFJhc3Rlcml6
YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiAgIG9iamVjdChOUzo6VUludGVnZXIgbGF5ZXJJbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRP
YmplY3QoY29uc3QgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGxheWVy
LCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCk7Cit9OworCitjbGFzcyBSYXN0ZXJpemF0aW9uUmF0
ZU1hcERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmFzdGVyaXphdGlvblJhdGVNYXBE
ZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0
ZU1hcERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1h
cERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xhc3MgUmFzdGVyaXph
dGlvblJhdGVNYXBEZXNjcmlwdG9yKiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IoTVRM
OjpTaXplIHNjcmVlblNpemUpOworCisgICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRl
TWFwRGVzY3JpcHRvciogcmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKE1UTDo6U2l6ZSBz
Y3JlZW5TaXplLCBjb25zdCBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciog
bGF5ZXIpOworCisgICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRv
ciogcmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKE1UTDo6U2l6ZSBzY3JlZW5TaXplLCBO
Uzo6VUludGVnZXIgbGF5ZXJDb3VudCwgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3Jp
cHRvciogY29uc3QqIGxheWVycyk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVy
RGVzY3JpcHRvciogICAgICBsYXllcihOUzo6VUludGVnZXIgbGF5ZXJJbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMYXllcihjb25z
dCBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogbGF5ZXIsIE5TOjpVSW50
ZWdlciBsYXllckluZGV4KTsKKworICAgIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJh
eSogICAgICAgICAgIGxheWVycygpIGNvbnN0OworCisgICAgTVRMOjpTaXplICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuU2l6ZSgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNjcmVlblNpemUoTVRMOjpT
aXplIHNjcmVlblNpemUpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckNv
dW50KCkgY29uc3Q7Cit9OworCitjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcCA6IHB1YmxpYyBO
Uzo6UmVmZXJlbmNpbmc8UmFzdGVyaXphdGlvblJhdGVNYXA+Cit7CitwdWJsaWM6CisgICAgY2xh
c3MgRGV2aWNlKiAgICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICBs
YWJlbCgpIGNvbnN0OworCisgICAgTVRMOjpTaXplICAgICAgICAgc2NyZWVuU2l6ZSgpIGNvbnN0
OworCisgICAgTVRMOjpTaXplICAgICAgICAgcGh5c2ljYWxHcmFudWxhcml0eSgpIGNvbnN0Owor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgbGF5ZXJDb3VudCgpIGNvbnN0OworCisgICAgTVRMOjpT
aXplQW5kQWxpZ24gcGFyYW1ldGVyQnVmZmVyU2l6ZUFuZEFsaWduKCkgY29uc3Q7CisKKyAgICB2
b2lkICAgICAgICAgICAgICBjb3B5UGFyYW1ldGVyRGF0YVRvQnVmZmVyKGNvbnN0IGNsYXNzIEJ1
ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIE1UTDo6U2l6ZSAgICAg
ICAgIHBoeXNpY2FsU2l6ZShOUzo6VUludGVnZXIgbGF5ZXJJbmRleCk7CisKKyAgICBNVEw6OkNv
b3JkaW5hdGUyRCBtYXBTY3JlZW5Ub1BoeXNpY2FsQ29vcmRpbmF0ZXMoTVRMOjpDb29yZGluYXRl
MkQgc2NyZWVuQ29vcmRpbmF0ZXMsIE5TOjpVSW50ZWdlciBsYXllckluZGV4KTsKKworICAgIE1U
TDo6Q29vcmRpbmF0ZTJEIG1hcFBoeXNpY2FsVG9TY3JlZW5Db29yZGluYXRlcyhNVEw6OkNvb3Jk
aW5hdGUyRCBwaHlzaWNhbENvb3JkaW5hdGVzLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCk7Cit9
OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlU2FtcGxlQXJyYXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJh
eTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJhc3Rlcml6
YXRpb25SYXRlU2FtcGxlQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJh
dGVTYW1wbGVBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBs
ZUFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJhc3Rl
cml6YXRpb25SYXRlU2FtcGxlQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRl
eGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTlM6Ok51bWJlciogTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZVNhbXBsZUFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpOdW1iZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZVNhbXBsZUFycmF5OjpzZXRPYmplY3QoY29uc3QgTlM6Ok51bWJlciogdmFsdWUs
IE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCB2YWx1
ZSwgaW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZUxheWVyRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciog
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRv
cj4oKTsKK30KKworLy8gbWV0aG9kOiBpbml0V2l0aFNhbXBsZUNvdW50OgorX01UTF9JTkxJTkUg
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZUxheWVyRGVzY3JpcHRvcjo6aW5pdChNVEw6OlNpemUgc2FtcGxlQ291bnQpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVz
Y3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5pdFdpdGhTYW1wbGVDb3VudF8pLCBz
YW1wbGVDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhTYW1wbGVDb3VudDpob3Jpem9u
dGFsOnZlcnRpY2FsOgorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVz
Y3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6aW5pdChNVEw6
OlNpemUgc2FtcGxlQ291bnQsIGNvbnN0IGZsb2F0KiBob3Jpem9udGFsLCBjb25zdCBmbG9hdCog
dmVydGljYWwpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5pdFdp
dGhTYW1wbGVDb3VudF9ob3Jpem9udGFsX3ZlcnRpY2FsXyksIHNhbXBsZUNvdW50LCBob3Jpem9u
dGFsLCB2ZXJ0aWNhbCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVDb3VudAorX01UTF9JTkxJ
TkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6OnNhbXBs
ZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNp
emU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnQpKTsKK30KKworLy8gcHJvcGVy
dHk6IG1heFNhbXBsZUNvdW50CitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6bWF4U2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NF
TChtYXhTYW1wbGVDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogaG9yaXpvbnRhbFNhbXBsZVN0
b3JhZ2UKK19NVExfSU5MSU5FIGZsb2F0KiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNj
cmlwdG9yOjpob3Jpem9udGFsU2FtcGxlU3RvcmFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhvcml6b250
YWxTYW1wbGVTdG9yYWdlKSk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0aWNhbFNhbXBsZVN0b3Jh
Z2UKK19NVExfSU5MSU5FIGZsb2F0KiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlw
dG9yOjp2ZXJ0aWNhbFNhbXBsZVN0b3JhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPGZsb2F0Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0aWNhbFNhbXBs
ZVN0b3JhZ2UpKTsKK30KKworLy8gcHJvcGVydHk6IGhvcml6b250YWwKK19NVExfSU5MSU5FIE1U
TDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxh
eWVyRGVzY3JpcHRvcjo6aG9yaXpvbnRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5Kj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChob3Jpem9udGFsKSk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0aWNhbAor
X01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjp2ZXJ0aWNhbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0aWNhbCkpOworfQorCisvLyBtZXRob2Q6IHNl
dFNhbXBsZUNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5
ZXJEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3VudChNVEw6OlNpemUgc2FtcGxlQ291bnQpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNh
bXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MK
K19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KiBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTGF5ZXJBcnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheT4oX01UTF9QUklWQVRFX0NM
UyhNVExSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0
CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheSogTVRMOjpSYXN0
ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5PigpOworfQorCisvLyBtZXRo
b2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXph
dGlvblJhdGVMYXllckRlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5
OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcio+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGxheWVySW5kZXgp
OworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5OjpzZXRPYmplY3QoY29u
c3QgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogbGF5ZXIsIE5TOjpVSW50
ZWdlciBsYXllckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGxheWVyLCBs
YXllckluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRl
TWFwRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxN
VEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExS
YXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogTVRMOjpSYXN0
ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0Ojppbml0PE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yPigpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVu
U2l6ZToKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBN
VEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6cmFzdGVyaXphdGlvblJhdGVNYXBE
ZXNjcmlwdG9yKE1UTDo6U2l6ZSBzY3JlZW5TaXplKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKj4oX01UTF9QUklW
QVRFX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVf
U0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplXyksIHNjcmVl
blNpemUpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3JXaXRoU2NyZWVuU2l6ZTpsYXllcjoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlv
blJhdGVNYXBEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6
cmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKE1UTDo6U2l6ZSBzY3JlZW5TaXplLCBjb25z
dCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBsYXllcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3Jp
cHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9y
KSwgX01UTF9QUklWQVRFX1NFTChyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2Ny
ZWVuU2l6ZV9sYXllcl8pLCBzY3JlZW5TaXplLCBsYXllcik7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOmxheWVyQ291
bnQ6bGF5ZXJzOgorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0
b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpyYXN0ZXJpemF0aW9uUmF0
ZU1hcERlc2NyaXB0b3IoTVRMOjpTaXplIHNjcmVlblNpemUsIE5TOjpVSW50ZWdlciBsYXllckNv
dW50LCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBjb25zdCogbGF5ZXJz
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJh
dGVNYXBEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZU1h
cERlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3Jp
cHRvcldpdGhTY3JlZW5TaXplX2xheWVyQ291bnRfbGF5ZXJzXyksIHNjcmVlblNpemUsIGxheWVy
Q291bnQsIGxheWVycyk7Cit9CisKKy8vIG1ldGhvZDogbGF5ZXJBdEluZGV4OgorX01UTF9JTkxJ
TkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZU1hcERlc2NyaXB0b3I6OmxheWVyKE5TOjpVSW50ZWdlciBsYXllckluZGV4KQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxheWVyQXRJbmRleF8pLCBsYXll
ckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRMYXllcjphdEluZGV4OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6c2V0TGF5ZXIoY29uc3Qg
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogbGF5ZXIsIE5TOjpVSW50ZWdl
ciBsYXllckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRMYXllcl9hdEluZGV4XyksIGxheWVyLCBsYXllckluZGV4KTsKK30K
KworLy8gcHJvcGVydHk6IGxheWVycworX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZUxheWVyQXJyYXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpsYXllcnMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXph
dGlvblJhdGVMYXllckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXllcnMpKTsKK30K
KworLy8gcHJvcGVydHk6IHNjcmVlblNpemUKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlJh
c3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6c2NyZWVuU2l6ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNjcmVlblNpemUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTWFwRGVzY3JpcHRvcjo6c2V0U2NyZWVuU2l6ZShNVEw6OlNpemUgc2NyZWVuU2l6ZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0U2NyZWVuU2l6ZV8pLCBzY3JlZW5TaXplKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitf
TVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRv
cjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpT
dHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0
IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5
OiBsYXllckNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcERlc2NyaXB0b3I6OmxheWVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXll
ckNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2
aWNlKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6
U3RyaW5nKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IHNjcmVlblNpemUKK19NVExfSU5MSU5F
IE1UTDo6U2l6ZSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpzY3JlZW5TaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemU+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2NyZWVuU2l6ZSkpOworfQorCisvLyBwcm9wZXJ0eTogcGh5c2ljYWxHcmFu
dWxhcml0eQorX01UTF9JTkxJTkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6
OnBoeXNpY2FsR3JhbnVsYXJpdHkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaHlzaWNhbEdyYW51bGFy
aXR5KSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYXllckNvdW50CitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcDo6bGF5ZXJDb3VudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGxheWVyQ291bnQpKTsKK30KKworLy8gcHJvcGVydHk6IHBhcmFtZXRlckJ1ZmZl
clNpemVBbmRBbGlnbgorX01UTF9JTkxJTkUgTVRMOjpTaXplQW5kQWxpZ24gTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZU1hcDo6cGFyYW1ldGVyQnVmZmVyU2l6ZUFuZEFsaWduKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemVBbmRBbGlnbj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChwYXJhbWV0ZXJCdWZmZXJTaXplQW5kQWxpZ24pKTsKK30KKworLy8gbWV0
aG9kOiBjb3B5UGFyYW1ldGVyRGF0YVRvQnVmZmVyOm9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcDo6Y29weVBhcmFtZXRlckRhdGFUb0J1ZmZlcihjb25z
dCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5UGFyYW1ldGVy
RGF0YVRvQnVmZmVyX29mZnNldF8pLCBidWZmZXIsIG9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDog
cGh5c2ljYWxTaXplRm9yTGF5ZXI6CitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZU1hcDo6cGh5c2ljYWxTaXplKE5TOjpVSW50ZWdlciBsYXllckluZGV4KQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChwaHlzaWNhbFNpemVGb3JMYXllcl8pLCBsYXllckluZGV4KTsKK30KKworLy8gbWV0
aG9kOiBtYXBTY3JlZW5Ub1BoeXNpY2FsQ29vcmRpbmF0ZXM6Zm9yTGF5ZXI6CitfTVRMX0lOTElO
RSBNVEw6OkNvb3JkaW5hdGUyRCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjptYXBTY3JlZW5U
b1BoeXNpY2FsQ29vcmRpbmF0ZXMoTVRMOjpDb29yZGluYXRlMkQgc2NyZWVuQ29vcmRpbmF0ZXMs
IE5TOjpVSW50ZWdlciBsYXllckluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6Q29vcmRpbmF0ZTJEPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1hcFNjcmVlblRv
UGh5c2ljYWxDb29yZGluYXRlc19mb3JMYXllcl8pLCBzY3JlZW5Db29yZGluYXRlcywgbGF5ZXJJ
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogbWFwUGh5c2ljYWxUb1NjcmVlbkNvb3JkaW5hdGVzOmZv
ckxheWVyOgorX01UTF9JTkxJTkUgTVRMOjpDb29yZGluYXRlMkQgTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcDo6bWFwUGh5c2ljYWxUb1NjcmVlbkNvb3JkaW5hdGVzKE1UTDo6Q29vcmRpbmF0ZTJE
IHBoeXNpY2FsQ29vcmRpbmF0ZXMsIE5TOjpVSW50ZWdlciBsYXllckluZGV4KQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29vcmRpbmF0ZTJEPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG1hcFBoeXNpY2FsVG9TY3JlZW5Db29yZGluYXRlc19mb3JMYXllcl8pLCBwaHlz
aWNhbENvb3JkaW5hdGVzLCBsYXllckluZGV4KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29k
ZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhiZGE4NTYxMzVkOTdhYmQyZDg1NmYwNDZlOGM3MzYwMjMyYzZk
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsOTU4IEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExS
ZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVk
ZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEJ1ZmZlci5ocHAi
CisjaW5jbHVkZSAiTVRMQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTEhlYXAuaHBw
IgorI2luY2x1ZGUgIk1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwIgorI2luY2x1ZGUg
Ik1UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQYXNzLmhw
cCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisjaW5jbHVkZSAiTVRMU2FtcGxlci5ocHAi
CisjaW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwIgorI2luY2x1ZGUg
Ik1UTFRleHR1cmUuaHBwIgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlICJNVExW
aXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShO
Uzo6VUludGVnZXIsIFByaW1pdGl2ZVR5cGUpIHsKKyAgICBQcmltaXRpdmVUeXBlUG9pbnQgPSAw
LAorICAgIFByaW1pdGl2ZVR5cGVMaW5lID0gMSwKKyAgICBQcmltaXRpdmVUeXBlTGluZVN0cmlw
ID0gMiwKKyAgICBQcmltaXRpdmVUeXBlVHJpYW5nbGUgPSAzLAorICAgIFByaW1pdGl2ZVR5cGVU
cmlhbmdsZVN0cmlwID0gNCwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFZpc2liaWxp
dHlSZXN1bHRNb2RlKSB7CisgICAgVmlzaWJpbGl0eVJlc3VsdE1vZGVEaXNhYmxlZCA9IDAsCisg
ICAgVmlzaWJpbGl0eVJlc3VsdE1vZGVCb29sZWFuID0gMSwKKyAgICBWaXNpYmlsaXR5UmVzdWx0
TW9kZUNvdW50aW5nID0gMiwKK307CisKK3N0cnVjdCBTY2lzc29yUmVjdAoreworICAgIE5TOjpV
SW50ZWdlciB4OworICAgIE5TOjpVSW50ZWdlciB5OworICAgIE5TOjpVSW50ZWdlciB3aWR0aDsK
KyAgICBOUzo6VUludGVnZXIgaGVpZ2h0OworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFZpZXdw
b3J0Cit7CisgICAgZG91YmxlIG9yaWdpblg7CisgICAgZG91YmxlIG9yaWdpblk7CisgICAgZG91
YmxlIHdpZHRoOworICAgIGRvdWJsZSBoZWlnaHQ7CisgICAgZG91YmxlIHpuZWFyOworICAgIGRv
dWJsZSB6ZmFyOworfSBfTVRMX1BBQ0tFRDsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ3Vs
bE1vZGUpIHsKKyAgICBDdWxsTW9kZU5vbmUgPSAwLAorICAgIEN1bGxNb2RlRnJvbnQgPSAxLAor
ICAgIEN1bGxNb2RlQmFjayA9IDIsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBXaW5k
aW5nKSB7CisgICAgV2luZGluZ0Nsb2Nrd2lzZSA9IDAsCisgICAgV2luZGluZ0NvdW50ZXJDbG9j
a3dpc2UgPSAxLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgRGVwdGhDbGlwTW9kZSkg
eworICAgIERlcHRoQ2xpcE1vZGVDbGlwID0gMCwKKyAgICBEZXB0aENsaXBNb2RlQ2xhbXAgPSAx
LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVHJpYW5nbGVGaWxsTW9kZSkgeworICAg
IFRyaWFuZ2xlRmlsbE1vZGVGaWxsID0gMCwKKyAgICBUcmlhbmdsZUZpbGxNb2RlTGluZXMgPSAx
LAorfTsKKworc3RydWN0IERyYXdQcmltaXRpdmVzSW5kaXJlY3RBcmd1bWVudHMKK3sKKyAgICB1
aW50MzJfdCB2ZXJ0ZXhDb3VudDsKKyAgICB1aW50MzJfdCBpbnN0YW5jZUNvdW50OworICAgIHVp
bnQzMl90IHZlcnRleFN0YXJ0OworICAgIHVpbnQzMl90IGJhc2VJbnN0YW5jZTsKK30gX01UTF9Q
QUNLRUQ7CisKK3N0cnVjdCBEcmF3SW5kZXhlZFByaW1pdGl2ZXNJbmRpcmVjdEFyZ3VtZW50cwor
eworICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CisgICAgdWludDMyX3QgaW5zdGFuY2VDb3VudDsK
KyAgICB1aW50MzJfdCBpbmRleFN0YXJ0OworICAgIGludDMyX3QgIGJhc2VWZXJ0ZXg7CisgICAg
dWludDMyX3QgYmFzZUluc3RhbmNlOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFZlcnRleEFt
cGxpZmljYXRpb25WaWV3TWFwcGluZworeworICAgIHVpbnQzMl90IHZpZXdwb3J0QXJyYXlJbmRl
eE9mZnNldDsKKyAgICB1aW50MzJfdCByZW5kZXJUYXJnZXRBcnJheUluZGV4T2Zmc2V0OworfSBf
TVRMX1BBQ0tFRDsKKworc3RydWN0IERyYXdQYXRjaEluZGlyZWN0QXJndW1lbnRzCit7CisgICAg
dWludDMyX3QgcGF0Y2hDb3VudDsKKyAgICB1aW50MzJfdCBpbnN0YW5jZUNvdW50OworICAgIHVp
bnQzMl90IHBhdGNoU3RhcnQ7CisgICAgdWludDMyX3QgYmFzZUluc3RhbmNlOworfSBfTVRMX1BB
Q0tFRDsKKworc3RydWN0IFF1YWRUZXNzZWxsYXRpb25GYWN0b3JzSGFsZgoreworICAgIHVpbnQx
Nl90IGVkZ2VUZXNzZWxsYXRpb25GYWN0b3JbNF07CisgICAgdWludDE2X3QgaW5zaWRlVGVzc2Vs
bGF0aW9uRmFjdG9yWzJdOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFRyaWFuZ2xlVGVzc2Vs
bGF0aW9uRmFjdG9yc0hhbGYKK3sKKyAgICB1aW50MTZfdCBlZGdlVGVzc2VsbGF0aW9uRmFjdG9y
WzNdOworICAgIHVpbnQxNl90IGluc2lkZVRlc3NlbGxhdGlvbkZhY3RvcjsKK30gX01UTF9QQUNL
RUQ7CisKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIFJlbmRlclN0YWdlcykgeworICAgIFJl
bmRlclN0YWdlVmVydGV4ID0gMSwKKyAgICBSZW5kZXJTdGFnZUZyYWdtZW50ID0gMiwKKyAgICBS
ZW5kZXJTdGFnZVRpbGUgPSA0LAorfTsKKworY2xhc3MgUmVuZGVyQ29tbWFuZEVuY29kZXIgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRlckNvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rl
cj4KK3sKK3B1YmxpYzoKKyAgICB2b2lkICAgICAgICAgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShj
b25zdCBjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiBwaXBlbGluZVN0YXRlKTsKKworICAgIHZv
aWQgICAgICAgICBzZXRWZXJ0ZXhCeXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJbnRlZ2Vy
IGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0
ZXhCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQs
IE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4QnVmZmVy
T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0VmVydGV4QnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25z
dCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAg
ICAgICAgIHNldFZlcnRleFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6
OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhUZXh0dXJlcyhN
VEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0VmVydGV4U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2Ft
cGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhT
YW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFu
Z2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleFNhbXBsZXJTdGF0ZShjb25zdCBjbGFz
cyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIGZsb2F0IGxvZE1pbkNsYW1wLCBmbG9hdCBsb2RNYXhD
bGFtcCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhT
YW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25zdCBmbG9hdCBs
b2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpSYW5nZSByYW5n
ZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29u
c3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdl
ciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4VmlzaWJsZUZ1bmN0
aW9uVGFibGVzKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxl
c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleEludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsK
KworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcyhj
b25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRl
eEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUq
IGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAg
IHZvaWQgICAgICAgICBzZXRWaWV3cG9ydChNVEw6OlZpZXdwb3J0IHZpZXdwb3J0KTsKKworICAg
IHZvaWQgICAgICAgICBzZXRWaWV3cG9ydHMoY29uc3QgTVRMOjpWaWV3cG9ydCogdmlld3BvcnRz
LCBOUzo6VUludGVnZXIgY291bnQpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyb250RmFjaW5n
V2luZGluZyhNVEw6OldpbmRpbmcgZnJvbnRGYWNpbmdXaW5kaW5nKTsKKworICAgIHZvaWQgICAg
ICAgICBzZXRWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQoTlM6OlVJbnRlZ2VyIGNvdW50LCBjb25z
dCBNVEw6OlZlcnRleEFtcGxpZmljYXRpb25WaWV3TWFwcGluZyogdmlld01hcHBpbmdzKTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRDdWxsTW9kZShNVEw6OkN1bGxNb2RlIGN1bGxNb2RlKTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXREZXB0aENsaXBNb2RlKE1UTDo6RGVwdGhDbGlwTW9kZSBkZXB0
aENsaXBNb2RlKTsKKworICAgIHZvaWQgICAgICAgICBzZXREZXB0aEJpYXMoZmxvYXQgZGVwdGhC
aWFzLCBmbG9hdCBzbG9wZVNjYWxlLCBmbG9hdCBjbGFtcCk7CisKKyAgICB2b2lkICAgICAgICAg
c2V0U2Npc3NvclJlY3QoTVRMOjpTY2lzc29yUmVjdCByZWN0KTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRTY2lzc29yUmVjdHMoY29uc3QgTVRMOjpTY2lzc29yUmVjdCogc2Npc3NvclJlY3RzLCBO
Uzo6VUludGVnZXIgY291bnQpOworCisgICAgdm9pZCAgICAgICAgIHNldFRyaWFuZ2xlRmlsbE1v
ZGUoTVRMOjpUcmlhbmdsZUZpbGxNb2RlIGZpbGxNb2RlKTsKKworICAgIHZvaWQgICAgICAgICBz
ZXRGcmFnbWVudEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50QnVmZmVy
KGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUlu
dGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50QnVmZmVyT2Zmc2V0
KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0RnJhZ21lbnRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5T
OjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAg
ICAgc2V0RnJhZ21lbnRUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpV
SW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRUZXh0dXJlcyhN
VEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBz
YW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdt
ZW50U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdl
IHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZShjb25z
dCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIGZsb2F0IGxvZE1pbkNsYW1wLCBmbG9hdCBs
b2RNYXhDbGFtcCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRG
cmFnbWVudFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNvbnN0
IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6OlJh
bmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFZpc2libGVGdW5jdGlv
blRhYmxlKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlLCBO
Uzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50
VmlzaWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0IFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlv
blRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdt
ZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVy
SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZXMoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRGcmFnbWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBjbGFzcyBBY2NlbGVyYXRp
b25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlcklu
ZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRCbGVuZENvbG9yUmVkKGZsb2F0IHJlZCwgZmxv
YXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKTsKKworICAgIHZvaWQgICAgICAgICBz
ZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBjbGFzcyBEZXB0aFN0ZW5jaWxTdGF0ZSogZGVwdGhT
dGVuY2lsU3RhdGUpOworCisgICAgdm9pZCAgICAgICAgIHNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1
ZSh1aW50MzJfdCByZWZlcmVuY2VWYWx1ZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0U3RlbmNp
bEZyb250UmVmZXJlbmNlVmFsdWUodWludDMyX3QgZnJvbnRSZWZlcmVuY2VWYWx1ZSwgdWludDMy
X3QgYmFja1JlZmVyZW5jZVZhbHVlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRWaXNpYmlsaXR5
UmVzdWx0TW9kZShNVEw6OlZpc2liaWxpdHlSZXN1bHRNb2RlIG1vZGUsIE5TOjpVSW50ZWdlciBv
ZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgIHNldENvbG9yU3RvcmVBY3Rpb24oTVRMOjpTdG9y
ZUFjdGlvbiBzdG9yZUFjdGlvbiwgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KTsK
KworICAgIHZvaWQgICAgICAgICBzZXREZXB0aFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24g
c3RvcmVBY3Rpb24pOworCisgICAgdm9pZCAgICAgICAgIHNldFN0ZW5jaWxTdG9yZUFjdGlvbihN
VEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKTsKKworICAgIHZvaWQgICAgICAgICBzZXRDb2xv
clN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9w
dGlvbnMsIE5TOjpVSW50ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMg
c3RvcmVBY3Rpb25PcHRpb25zKTsKKworICAgIHZvaWQgICAgICAgICBzZXRTdGVuY2lsU3RvcmVB
Y3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucyk7
CisKKyAgICB2b2lkICAgICAgICAgZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHBy
aW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRl
eENvdW50LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCk7CisKKyAgICB2b2lkICAgICAgICAg
ZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50
ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50KTsKKworICAgIHZvaWQg
ICAgICAgICBkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2
ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUs
IGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZl
ck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQpOworCisgICAgdm9pZCAgICAgICAg
IGRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwg
TlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3Qg
Y2xhc3MgQnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0
KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUg
cHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUludGVnZXIgdmVy
dGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUlu
c3RhbmNlKTsKKworICAgIHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQ
cmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6
OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIsIE5T
OjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQs
IE5TOjpJbnRlZ2VyIGJhc2VWZXJ0ZXgsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisg
ICAgdm9pZCAgICAgICAgIGRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRp
dmVUeXBlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIg
aW5kaXJlY3RCdWZmZXJPZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdJbmRleGVkUHJp
bWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTVRMOjpJbmRleFR5cGUg
aW5kZXhUeXBlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIg
aW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5T
OjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgdGV4
dHVyZUJhcnJpZXIoKTsKKworICAgIHZvaWQgICAgICAgICB1cGRhdGVGZW5jZShjb25zdCBjbGFz
cyBGZW5jZSogZmVuY2UsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcyk7CisKKyAgICB2b2lkICAg
ICAgICAgd2FpdEZvckZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBmZW5jZSwgTVRMOjpSZW5kZXJT
dGFnZXMgc3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUZXNzZWxsYXRpb25GYWN0b3JC
dWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5T
OjpVSW50ZWdlciBpbnN0YW5jZVN0cmlkZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGVzc2Vs
bGF0aW9uRmFjdG9yU2NhbGUoZmxvYXQgc2NhbGUpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQ
YXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRl
Z2VyIHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBjbGFzcyBCdWZm
ZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0
LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7
CisKKyAgICB2b2lkICAgICAgICAgZHJhd1BhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0
Y2hDb250cm9sUG9pbnRzLCBjb25zdCBjbGFzcyBCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5T
OjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBjbGFzcyBCdWZmZXIqIGlu
ZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworCisgICAg
dm9pZCAgICAgICAgIGRyYXdJbmRleGVkUGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRj
aENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVnZXIgcGF0
Y2hDb3VudCwgY29uc3QgY2xhc3MgQnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVn
ZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgY2xhc3MgQnVmZmVyKiBjb250cm9sUG9p
bnRJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0
LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7
CisKKyAgICB2b2lkICAgICAgICAgZHJhd0luZGV4ZWRQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1i
ZXJPZlBhdGNoQ29udHJvbFBvaW50cywgY29uc3QgY2xhc3MgQnVmZmVyKiBwYXRjaEluZGV4QnVm
ZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgY2xhc3MgQnVm
ZmVyKiBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvbnRyb2xQb2ludElu
ZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6
VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworCisgICAgTlM6OlVJbnRlZ2VyIHRpbGVX
aWR0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyIHRpbGVIZWlnaHQoKSBjb25zdDsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRUaWxlQnl0ZXMoY29uc3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50
ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0
VGlsZUJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlQnVmZmVy
T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0VGlsZUJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnMsIGNvbnN0IE5T
OjpVSW50ZWdlciogb2Zmc2V0cywgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRUaWxlVGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVn
ZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVUZXh0dXJlcyhNVEw6OlRleHR1
cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0
VGlsZVNhbXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpV
SW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZVNhbXBsZXJTdGF0ZXMo
TVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0VGlsZVNhbXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyU3RhdGUq
IHNhbXBsZXIsIGZsb2F0IGxvZE1pbkNsYW1wLCBmbG9hdCBsb2RNYXhDbGFtcCwgTlM6OlVJbnRl
Z2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlU2FtcGxlclN0YXRlcyhNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNv
bnN0IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAg
ICAgICAgIHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVu
Y3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRUaWxlVmlzaWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNz
IFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2Up
OworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNv
bnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0
VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5n
ZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZUFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25z
dCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6
OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBkaXNwYXRjaFRocmVh
ZHNQZXJUaWxlKE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGlsZSk7CisKKyAgICB2b2lkICAgICAgICAg
c2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRl
Z2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICB1c2VS
ZXNvdXJjZShjb25zdCBjbGFzcyBSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2Fn
ZSB1c2FnZSk7CisKKyAgICB2b2lkICAgICAgICAgdXNlUmVzb3VyY2VzKE1UTDo6UmVzb3VyY2Uq
IHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2Fn
ZSk7CisKKyAgICB2b2lkICAgICAgICAgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3VyY2Uq
IHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0
YWdlcyk7CisKKyAgICB2b2lkICAgICAgICAgdXNlUmVzb3VyY2VzKE1UTDo6UmVzb3VyY2UqIHJl
c291cmNlcywgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UsIE1U
TDo6UmVuZGVyU3RhZ2VzIHN0YWdlcyk7CisKKyAgICB2b2lkICAgICAgICAgdXNlSGVhcChjb25z
dCBjbGFzcyBIZWFwKiBoZWFwKTsKKworICAgIHZvaWQgICAgICAgICB1c2VIZWFwcyhNVEw6Okhl
YXAqIGhlYXBzW10sIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgdXNl
SGVhcChjb25zdCBjbGFzcyBIZWFwKiBoZWFwLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpOwor
CisgICAgdm9pZCAgICAgICAgIHVzZUhlYXBzKE1UTDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRl
Z2VyIGNvdW50LCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpOworCisgICAgdm9pZCAgICAgICAg
IGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyKGNvbnN0IGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZl
ciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6UmFuZ2UgZXhlY3V0aW9uUmFuZ2UpOworCisg
ICAgdm9pZCAgICAgICAgIGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyKGNvbnN0IGNsYXNzIEluZGly
ZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kYnVmZmVyLCBjb25zdCBjbGFzcyBCdWZm
ZXIqIGluZGlyZWN0UmFuZ2VCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNl
dCk7CisKKyAgICB2b2lkICAgICAgICAgbWVtb3J5QmFycmllcihNVEw6OkJhcnJpZXJTY29wZSBz
Y29wZSwgTVRMOjpSZW5kZXJTdGFnZXMgYWZ0ZXIsIE1UTDo6UmVuZGVyU3RhZ2VzIGJlZm9yZSk7
CisKKyAgICB2b2lkICAgICAgICAgbWVtb3J5QmFycmllcihNVEw6OlJlc291cmNlKiByZXNvdXJj
ZXNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlbmRlclN0YWdlcyBhZnRlciwgTVRMOjpS
ZW5kZXJTdGFnZXMgYmVmb3JlKTsKKworICAgIHZvaWQgICAgICAgICBzYW1wbGVDb3VudGVyc0lu
QnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6
OlVJbnRlZ2VyIHNhbXBsZUluZGV4LCBib29sIGJhcnJpZXIpOworfTsKKworfQorCisvLyBtZXRo
b2Q6IHNldFJlbmRlclBpcGVsaW5lU3RhdGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQ
aXBlbGluZVN0YXRlKiBwaXBlbGluZVN0YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZW5kZXJQaXBlbGluZVN0YXRlXyksIHBp
cGVsaW5lU3RhdGUpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEJ5dGVzOmxlbmd0aDphdElu
ZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0
ZXhCeXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRl
Z2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRWZXJ0ZXhCeXRlc19sZW5ndGhfYXRJbmRleF8pLCBieXRlcywgbGVuZ3Ro
LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4QnVmZmVyOm9mZnNldDphdEluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhC
dWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6
OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVy
LCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhCdWZmZXJPZmZzZXQ6
YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
VmVydGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VmVydGV4QnVmZmVyT2Zmc2V0X2F0SW5kZXhfKSwgb2Zmc2V0LCBpbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0VmVydGV4QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVycyhNVEw6
OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFZlcnRleEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfKSwgYnVmZmVycywg
b2Zmc2V0cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFRleHR1cmU6YXRJbmRl
eDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4
VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0VmVydGV4VGV4dHVyZV9hdEluZGV4XyksIHRleHR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0
aG9kOiBzZXRWZXJ0ZXhUZXh0dXJlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4
dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhUZXh0dXJlc193aXRoUmFuZ2VfKSwg
dGV4dHVyZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhTYW1wbGVyU3RhdGU6
YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
VmVydGV4U2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZV9hdEluZGV4XyksIHNhbXBsZXIs
IGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzOndpdGhSYW5n
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4
U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJh
bmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFuZ2Up
OworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RN
YXhDbGFtcDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpzZXRWZXJ0ZXhTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBs
ZXIsIGZsb2F0IGxvZE1pbkNsYW1wLCBmbG9hdCBsb2RNYXhDbGFtcCwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRl
eF8pLCBzYW1wbGVyLCBsb2RNaW5DbGFtcCwgbG9kTWF4Q2xhbXAsIGluZGV4KTsKK30KKworLy8g
bWV0aG9kOiBzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RNYXhDbGFtcHM6
d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25z
dCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpS
YW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xh
bXBzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgbG9kTWluQ2xhbXBzLCBsb2RNYXhDbGFtcHMsIHJh
bmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1
ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRh
YmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFZp
c2libGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgZnVuY3Rpb25UYWJsZSwgYnVmZmVy
SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxlczp3
aXRoQnVmZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OlZpc2libGVGdW5j
dGlvblRhYmxlKiBmdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFZp
c2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgZnVuY3Rpb25UYWJsZXMsIHJh
bmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
OmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6VUludGVn
ZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRCdWZm
ZXJJbmRleF8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZl
clJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRW
ZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5n
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXyks
IGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0
VmVydGV4QWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleEFjY2VsZXJhdGlvblN0cnVj
dHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0
dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEFjY2VsZXJhdGlvblN0cnVj
dHVyZV9hdEJ1ZmZlckluZGV4XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgYnVmZmVySW5kZXgp
OworfQorCisvLyBtZXRob2Q6IHNldFZpZXdwb3J0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWaWV3cG9ydChNVEw6OlZpZXdwb3J0IHZpZXdwb3J0KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRWaWV3cG9ydF8pLCB2aWV3cG9ydCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Vmlld3BvcnRzOmNv
dW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWaWV3
cG9ydHMoY29uc3QgTVRMOjpWaWV3cG9ydCogdmlld3BvcnRzLCBOUzo6VUludGVnZXIgY291bnQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFZpZXdwb3J0c19jb3VudF8pLCB2aWV3cG9ydHMsIGNvdW50KTsKK30KKworLy8gbWV0aG9k
OiBzZXRGcm9udEZhY2luZ1dpbmRpbmc6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnNldEZyb250RmFjaW5nV2luZGluZyhNVEw6OldpbmRpbmcgZnJvbnRGYWNp
bmdXaW5kaW5nKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRGcm9udEZhY2luZ1dpbmRpbmdfKSwgZnJvbnRGYWNpbmdXaW5kaW5nKTsK
K30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQ6dmlld01hcHBpbmdz
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhB
bXBsaWZpY2F0aW9uQ291bnQoTlM6OlVJbnRlZ2VyIGNvdW50LCBjb25zdCBNVEw6OlZlcnRleEFt
cGxpZmljYXRpb25WaWV3TWFwcGluZyogdmlld01hcHBpbmdzKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhBbXBsaWZpY2F0
aW9uQ291bnRfdmlld01hcHBpbmdzXyksIGNvdW50LCB2aWV3TWFwcGluZ3MpOworfQorCisvLyBt
ZXRob2Q6IHNldEN1bGxNb2RlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRF
bmNvZGVyOjpzZXRDdWxsTW9kZShNVEw6OkN1bGxNb2RlIGN1bGxNb2RlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDdWxsTW9kZV8p
LCBjdWxsTW9kZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RGVwdGhDbGlwTW9kZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RGVwdGhDbGlwTW9kZShNVEw6
OkRlcHRoQ2xpcE1vZGUgZGVwdGhDbGlwTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhDbGlwTW9kZV8pLCBkZXB0aENs
aXBNb2RlKTsKK30KKworLy8gbWV0aG9kOiBzZXREZXB0aEJpYXM6c2xvcGVTY2FsZTpjbGFtcDoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RGVwdGhCaWFz
KGZsb2F0IGRlcHRoQmlhcywgZmxvYXQgc2xvcGVTY2FsZSwgZmxvYXQgY2xhbXApCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRo
Qmlhc19zbG9wZVNjYWxlX2NsYW1wXyksIGRlcHRoQmlhcywgc2xvcGVTY2FsZSwgY2xhbXApOwor
fQorCisvLyBtZXRob2Q6IHNldFNjaXNzb3JSZWN0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTY2lzc29yUmVjdChNVEw6OlNjaXNzb3JSZWN0IHJlY3Qp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFNjaXNzb3JSZWN0XyksIHJlY3QpOworfQorCisvLyBtZXRob2Q6IHNldFNjaXNzb3JSZWN0
czpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
U2Npc3NvclJlY3RzKGNvbnN0IE1UTDo6U2Npc3NvclJlY3QqIHNjaXNzb3JSZWN0cywgTlM6OlVJ
bnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTY2lzc29yUmVjdHNfY291bnRfKSwgc2Npc3NvclJlY3RzLCBjb3Vu
dCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VHJpYW5nbGVGaWxsTW9kZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VHJpYW5nbGVGaWxsTW9kZShNVEw6OlRy
aWFuZ2xlRmlsbE1vZGUgZmlsbE1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRyaWFuZ2xlRmlsbE1vZGVfKSwgZmlsbE1vZGUp
OworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50Qnl0ZXM6bGVuZ3RoOmF0SW5kZXg6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50Qnl0ZXMo
Y29uc3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0RnJhZ21lbnRCeXRlc19sZW5ndGhfYXRJbmRleF8pLCBieXRlcywgbGVuZ3RoLCBpbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50QnVm
ZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpV
SW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVy
LCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEJ1ZmZlck9mZnNl
dDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXRGcmFnbWVudEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIg
aW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldEZyYWdtZW50QnVmZmVyT2Zmc2V0X2F0SW5kZXhfKSwgb2Zmc2V0LCBpbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1
ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNb
XSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2Vf
KSwgYnVmZmVycywgb2Zmc2V0cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50
VGV4dHVyZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpzZXRGcmFnbWVudFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50VGV4dHVyZV9hdEluZGV4XyksIHRleHR1cmUsIGlu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudFRleHR1cmVzOndpdGhSYW5nZToKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRUZXh0
dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21l
bnRUZXh0dXJlc193aXRoUmFuZ2VfKSwgdGV4dHVyZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9k
OiBzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFNh
bXBsZXJTdGF0ZV9hdEluZGV4XyksIHNhbXBsZXIsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBz
ZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1w
bGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRTYW1wbGVy
U3RhdGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNl
dEZyYWdtZW50U2FtcGxlclN0YXRlOmxvZE1pbkNsYW1wOmxvZE1heENsYW1wOmF0SW5kZXg6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50U2Ft
cGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9hdCBsb2RNaW5D
bGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRT
YW1wbGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRleF8pLCBzYW1wbGVyLCBs
b2RNaW5DbGFtcCwgbG9kTWF4Q2xhbXAsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFn
bWVudFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50U2Ft
cGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9k
TWluQ2xhbXBzW10sIGNvbnN0IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2Up
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEZyYWdtZW50U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBzX3dpdGhS
YW5nZV8pLCBzYW1wbGVycywgbG9kTWluQ2xhbXBzLCBsb2RNYXhDbGFtcHMsIHJhbmdlKTsKK30K
KworLy8gbWV0aG9kOiBzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdt
ZW50VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSog
ZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFZpc2li
bGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgZnVuY3Rpb25UYWJsZSwgYnVmZmVySW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndp
dGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6c2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpWaXNpYmxlRnVu
Y3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVu
dFZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgZnVuY3Rpb25UYWJsZXMs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6c2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6
OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVfYXRCdWZmZXJJbmRleF8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBidWZmZXJJbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
czp3aXRoQnVmZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc1tdLCBO
Uzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0
aEJ1ZmZlclJhbmdlXyksIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRl
eDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21l
bnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUq
IGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFn
bWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZV9hdEJ1ZmZlckluZGV4XyksIGFjY2VsZXJhdGlvblN0
cnVjdHVyZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEJsZW5kQ29sb3JSZWQ6
Z3JlZW46Ymx1ZTphbHBoYToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5j
b2Rlcjo6c2V0QmxlbmRDb2xvclJlZChmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVl
LCBmbG9hdCBhbHBoYSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0QmxlbmRDb2xvclJlZF9ncmVlbl9ibHVlX2FscGhhXyksIHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhKTsKK30KKworLy8gbWV0aG9kOiBzZXREZXB0aFN0ZW5jaWxTdGF0
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RGVwdGhT
dGVuY2lsU3RhdGUoY29uc3QgTVRMOjpEZXB0aFN0ZW5jaWxTdGF0ZSogZGVwdGhTdGVuY2lsU3Rh
dGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldERlcHRoU3RlbmNpbFN0YXRlXyksIGRlcHRoU3RlbmNpbFN0YXRlKTsKK30KKworLy8g
bWV0aG9kOiBzZXRTdGVuY2lsUmVmZXJlbmNlVmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1ZSh1aW50MzJfdCBy
ZWZlcmVuY2VWYWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFJlZmVyZW5jZVZhbHVlXyksIHJlZmVyZW5jZVZhbHVl
KTsKK30KKworLy8gbWV0aG9kOiBzZXRTdGVuY2lsRnJvbnRSZWZlcmVuY2VWYWx1ZTpiYWNrUmVm
ZXJlbmNlVmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
OnNldFN0ZW5jaWxGcm9udFJlZmVyZW5jZVZhbHVlKHVpbnQzMl90IGZyb250UmVmZXJlbmNlVmFs
dWUsIHVpbnQzMl90IGJhY2tSZWZlcmVuY2VWYWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbEZyb250UmVmZXJlbmNl
VmFsdWVfYmFja1JlZmVyZW5jZVZhbHVlXyksIGZyb250UmVmZXJlbmNlVmFsdWUsIGJhY2tSZWZl
cmVuY2VWYWx1ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmlzaWJpbGl0eVJlc3VsdE1vZGU6b2Zm
c2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWaXNp
YmlsaXR5UmVzdWx0TW9kZShNVEw6OlZpc2liaWxpdHlSZXN1bHRNb2RlIG1vZGUsIE5TOjpVSW50
ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFZpc2liaWxpdHlSZXN1bHRNb2RlX29mZnNldF8pLCBtb2RlLCBvZmZz
ZXQpOworfQorCisvLyBtZXRob2Q6IHNldENvbG9yU3RvcmVBY3Rpb246YXRJbmRleDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Q29sb3JTdG9yZUFjdGlv
bihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUludGVnZXIgY29sb3JBdHRhY2ht
ZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldENvbG9yU3RvcmVBY3Rpb25fYXRJbmRleF8pLCBzdG9yZUFjdGlvbiwgY29s
b3JBdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoU3RvcmVBY3Rpb246
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldERlcHRoU3Rv
cmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbikKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhTdG9yZUFjdGlv
bl8pLCBzdG9yZUFjdGlvbik7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RlbmNpbFN0b3JlQWN0aW9u
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVuY2ls
U3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFN0b3Jl
QWN0aW9uXyksIHN0b3JlQWN0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzZXRDb2xvclN0b3JlQWN0
aW9uT3B0aW9uczphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRF
bmNvZGVyOjpzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9u
cyBzdG9yZUFjdGlvbk9wdGlvbnMsIE5TOjpVSW50ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnNfYXRJbmRleF8pLCBzdG9yZUFjdGlvbk9wdGlvbnMs
IGNvbG9yQXR0YWNobWVudEluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXREZXB0aFN0b3JlQWN0
aW9uT3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
c2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVB
Y3Rpb25PcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9uc18pLCBzdG9yZUFjdGlvbk9w
dGlvbnMpOworfQorCisvLyBtZXRob2Q6IHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnM6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFN0ZW5jaWxTdG9y
ZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25z
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zXyksIHN0b3JlQWN0aW9uT3B0aW9ucyk7Cit9
CisKKy8vIG1ldGhvZDogZHJhd1ByaW1pdGl2ZXM6dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6aW5z
dGFuY2VDb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
ZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50
ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50LCBOUzo6VUludGVnZXIg
aW5zdGFuY2VDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVydGV4Q291bnRfaW5z
dGFuY2VDb3VudF8pLCBwcmltaXRpdmVUeXBlLCB2ZXJ0ZXhTdGFydCwgdmVydGV4Q291bnQsIGlu
c3RhbmNlQ291bnQpOworfQorCisvLyBtZXRob2Q6IGRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0
OnZlcnRleENvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJ
bnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUludGVnZXIgdmVydGV4Q291bnQpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQcmltaXRp
dmVzX3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50XyksIHByaW1pdGl2ZVR5cGUsIHZlcnRleFN0YXJ0
LCB2ZXJ0ZXhDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4ZWRQcmltaXRpdmVzOmlu
ZGV4Q291bnQ6aW5kZXhUeXBlOmluZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNl
Q291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdJ
bmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJ
bnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgTVRMOjpC
dWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpV
SW50ZWdlciBpbnN0YW5jZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9p
bmRleFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF8pLCBw
cmltaXRpdmVUeXBlLCBpbmRleENvdW50LCBpbmRleFR5cGUsIGluZGV4QnVmZmVyLCBpbmRleEJ1
ZmZlck9mZnNldCwgaW5zdGFuY2VDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4ZWRQ
cmltaXRpdmVzOmluZGV4Q291bnQ6aW5kZXhUeXBlOmluZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zm
c2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5k
ZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50
ZWdlciBpbmRleENvdW50LCBNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IE1UTDo6QnVm
ZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5k
ZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZm
ZXJPZmZzZXRfKSwgcHJpbWl0aXZlVHlwZSwgaW5kZXhDb3VudCwgaW5kZXhUeXBlLCBpbmRleEJ1
ZmZlciwgaW5kZXhCdWZmZXJPZmZzZXQpOworfQorCisvLyBtZXRob2Q6IGRyYXdQcmltaXRpdmVz
OnZlcnRleFN0YXJ0OnZlcnRleENvdW50Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UHJpbWl0aXZlcyhN
VEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0YXJ0
LCBOUzo6VUludGVnZXIgdmVydGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBO
Uzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0
ZXhDb3VudF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV8pLCBwcmltaXRpdmVUeXBlLCB2ZXJ0
ZXhTdGFydCwgdmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGJhc2VJbnN0YW5jZSk7Cit9CisK
Ky8vIG1ldGhvZDogZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4Q291bnQ6aW5kZXhUeXBlOmlu
ZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZVZlcnRleDpiYXNl
SW5zdGFuY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRy
YXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6
OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgTVRM
OjpCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5T
OjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6SW50ZWdlciBiYXNlVmVydGV4LCBOUzo6VUlu
dGVnZXIgYmFzZUluc3RhbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRl
eFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlVmVy
dGV4X2Jhc2VJbnN0YW5jZV8pLCBwcmltaXRpdmVUeXBlLCBpbmRleENvdW50LCBpbmRleFR5cGUs
IGluZGV4QnVmZmVyLCBpbmRleEJ1ZmZlck9mZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZVZlcnRl
eCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8gbWV0aG9kOiBkcmF3UHJpbWl0aXZlczppbmRpcmVj
dEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1p
dGl2ZVR5cGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3UHJpbWl0aXZlc19pbmRpcmVjdEJ1ZmZlcl9pbmRp
cmVjdEJ1ZmZlck9mZnNldF8pLCBwcmltaXRpdmVUeXBlLCBpbmRpcmVjdEJ1ZmZlciwgaW5kaXJl
Y3RCdWZmZXJPZmZzZXQpOworfQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUHJpbWl0aXZlczpp
bmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6aW5k
aXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OmRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZl
VHlwZSwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kZXhC
dWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgTVRMOjpCdWZmZXIq
IGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdJ
bmRleGVkUHJpbWl0aXZlc19pbmRleFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRf
aW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgcHJpbWl0aXZlVHlwZSwgaW5k
ZXhUeXBlLCBpbmRleEJ1ZmZlciwgaW5kZXhCdWZmZXJPZmZzZXQsIGluZGlyZWN0QnVmZmVyLCBp
bmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogdGV4dHVyZUJhcnJpZXIKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dGV4dHVyZUJhcnJpZXIo
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh0ZXh0dXJlQmFycmllcikpOworfQorCisvLyBtZXRob2Q6IHVwZGF0ZUZlbmNlOmFmdGVyU3Rh
Z2VzOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1cGRhdGVG
ZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1
cGRhdGVGZW5jZV9hZnRlclN0YWdlc18pLCBmZW5jZSwgc3RhZ2VzKTsKK30KKworLy8gbWV0aG9k
OiB3YWl0Rm9yRmVuY2U6YmVmb3JlU3RhZ2VzOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjp3YWl0Rm9yRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UsIE1U
TDo6UmVuZGVyU3RhZ2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2FpdEZvckZlbmNlX2JlZm9yZVN0YWdlc18pLCBmZW5j
ZSwgc3RhZ2VzKTsKK30KKworLy8gbWV0aG9kOiBzZXRUZXNzZWxsYXRpb25GYWN0b3JCdWZmZXI6
b2Zmc2V0Omluc3RhbmNlU3RyaWRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRUZXNzZWxsYXRpb25GYWN0b3JCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIq
IGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRUZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJfb2Zmc2V0X2luc3RhbmNlU3RyaWRlXyksIGJ1
ZmZlciwgb2Zmc2V0LCBpbnN0YW5jZVN0cmlkZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGVzc2Vs
bGF0aW9uRmFjdG9yU2NhbGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlKGZsb2F0IHNjYWxlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXNzZWxs
YXRpb25GYWN0b3JTY2FsZV8pLCBzY2FsZSk7Cit9CisKKy8vIG1ldGhvZDogZHJhd1BhdGNoZXM6
cGF0Y2hTdGFydDpwYXRjaENvdW50OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9m
ZnNldDppbnN0YW5jZUNvdW50OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd1BhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0
Y2hDb250cm9sUG9pbnRzLCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBh
dGNoQ291bnQsIGNvbnN0IE1UTDo6QnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVn
ZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5T
OjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQYXRjaGVzX3BhdGNoU3RhcnRfcGF0Y2hDb3Vu
dF9wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9i
YXNlSW5zdGFuY2VfKSwgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIHBhdGNoU3RhcnQsIHBh
dGNoQ291bnQsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGluc3Rh
bmNlQ291bnQsIGJhc2VJbnN0YW5jZSk7Cit9CisKKy8vIG1ldGhvZDogZHJhd1BhdGNoZXM6cGF0
Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zmc2V0OmluZGlyZWN0QnVmZmVyOmluZGly
ZWN0QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMs
IGNvbnN0IE1UTDo6QnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJ
bmRleEJ1ZmZlck9mZnNldCwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6
VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQYXRjaGVzX3BhdGNoSW5kZXhCdWZm
ZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9m
ZnNldF8pLCBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgcGF0Y2hJbmRleEJ1ZmZlciwgcGF0
Y2hJbmRleEJ1ZmZlck9mZnNldCwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0
KTsKK30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENv
dW50OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJ
bmRleEJ1ZmZlcjpjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJh
c2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
ZHJhd0luZGV4ZWRQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50
cywgTlM6OlVJbnRlZ2VyIHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25z
dCBNVEw6OkJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhC
dWZmZXJPZmZzZXQsIGNvbnN0IE1UTDo6QnVmZmVyKiBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIg
aW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0luZGV4ZWRQYXRj
aGVzX3BhdGNoU3RhcnRfcGF0Y2hDb3VudF9wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZm
ZXJPZmZzZXRfY29udHJvbFBvaW50SW5kZXhCdWZmZXJfY29udHJvbFBvaW50SW5kZXhCdWZmZXJP
ZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfKSwgbnVtYmVyT2ZQYXRjaENvbnRyb2xQ
b2ludHMsIHBhdGNoU3RhcnQsIHBhdGNoQ291bnQsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5k
ZXhCdWZmZXJPZmZzZXQsIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBjb250cm9sUG9pbnRJbmRl
eEJ1ZmZlck9mZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8gbWV0
aG9kOiBkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVy
T2Zmc2V0OmNvbnRyb2xQb2ludEluZGV4QnVmZmVyOmNvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zm
c2V0OmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRl
Z2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBjb25zdCBNVEw6OkJ1ZmZlciogcGF0Y2hJ
bmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IE1U
TDo6QnVmZmVyKiBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvbnRyb2xQ
b2ludEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kaXJlY3RCdWZmZXIs
IE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0luZGV4ZWRQYXRjaGVzX3Bh
dGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1
ZmZlcl9jb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldF9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVj
dEJ1ZmZlck9mZnNldF8pLCBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgcGF0Y2hJbmRleEJ1
ZmZlciwgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29udHJvbFBvaW50SW5kZXhCdWZmZXIsIGNv
bnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0LCBpbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RCdWZm
ZXJPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZVdpZHRoCitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dGlsZVdpZHRoKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodGlsZVdpZHRoKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0aWxlSGVpZ2h0Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dGlsZUhl
aWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRpbGVIZWlnaHQpKTsKK30KKworLy8gbWV0aG9k
OiBzZXRUaWxlQnl0ZXM6bGVuZ3RoOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVCeXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJ
bnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlQnl0ZXNfbGVuZ3RoX2F0
SW5kZXhfKSwgYnl0ZXMsIGxlbmd0aCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVC
dWZmZXI6b2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFu
ZEVuY29kZXI6OnNldFRpbGVCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlQnVmZmVyX29mZnNldF9h
dEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGls
ZUJ1ZmZlck9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRUaWxlQnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpV
SW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0VGlsZUJ1ZmZlck9mZnNldF9hdEluZGV4XyksIG9mZnNldCwgaW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlQnVmZmVy
cyhNVEw6OkJ1ZmZlciogYnVmZmVycywgY29uc3QgTlM6OlVJbnRlZ2VyKiBvZmZzZXRzLCBOUzo6
UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFRpbGVCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMs
IG9mZnNldHMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlVGV4dHVyZTphdEluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlVGV4
dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VGlsZVRleHR1cmVfYXRJbmRleF8pLCB0ZXh0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDog
c2V0VGlsZVRleHR1cmVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0VGlsZVRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwg
TlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRUaWxlVGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1cmVzLCBy
YW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZVNhbXBsZXJTdGF0ZTphdEluZGV4OgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlU2FtcGxlclN0
YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFRpbGVTYW1wbGVyU3RhdGVfYXRJbmRleF8pLCBzYW1wbGVyLCBpbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0VGlsZVNhbXBsZXJTdGF0ZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlU2FtcGxlclN0YXRlcyhNVEw6OlNh
bXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlU2FtcGxlclN0
YXRlc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRU
aWxlU2FtcGxlclN0YXRlOmxvZE1pbkNsYW1wOmxvZE1heENsYW1wOmF0SW5kZXg6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVTYW1wbGVyU3RhdGUo
Y29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIGZsb2F0IGxvZE1pbkNsYW1wLCBmbG9h
dCBsb2RNYXhDbGFtcCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlU2FtcGxlclN0YXRlX2xv
ZE1pbkNsYW1wX2xvZE1heENsYW1wX2F0SW5kZXhfKSwgc2FtcGxlciwgbG9kTWluQ2xhbXAsIGxv
ZE1heENsYW1wLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZVNhbXBsZXJTdGF0ZXM6
bG9kTWluQ2xhbXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxl
clN0YXRlKiBzYW1wbGVyc1tdLCBjb25zdCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxv
YXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZXNf
bG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIGxvZE1pbkNs
YW1wcywgbG9kTWF4Q2xhbXBzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZVZpc2li
bGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6
OlZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVy
SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIGZ1bmN0
aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlVmlzaWJsZUZ1
bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6
OlZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2Up
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXyksIGZ1bmN0aW9u
VGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6c2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6
VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0
QnVmZmVySW5kZXhfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOwor
fQorCisvLyBtZXRob2Q6IHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoQnVm
ZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNl
dFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5n
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBp
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFRp
bGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZUFjY2VsZXJhdGlvblN0cnVjdHVyZShj
b25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBO
Uzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRC
dWZmZXJJbmRleF8pLCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGJ1ZmZlckluZGV4KTsKK30KKwor
Ly8gbWV0aG9kOiBkaXNwYXRjaFRocmVhZHNQZXJUaWxlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaFRocmVhZHNQZXJUaWxlKE1UTDo6U2l6ZSB0
aHJlYWRzUGVyVGlsZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZGlzcGF0Y2hUaHJlYWRzUGVyVGlsZV8pLCB0aHJlYWRzUGVyVGlsZSk7
Cit9CisKKy8vIG1ldGhvZDogc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGg6b2Zmc2V0OmF0SW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoKE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBvZmZz
ZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGhfb2Zmc2V0
X2F0SW5kZXhfKSwgbGVuZ3RoLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiB1c2VS
ZXNvdXJjZTp1c2FnZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6dXNlUmVzb3VyY2UoY29uc3QgTVRMOjpSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3Vy
Y2VVc2FnZSB1c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodXNlUmVzb3VyY2VfdXNhZ2VfKSwgcmVzb3VyY2UsIHVzYWdlKTsKK30K
KworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZXM6Y291bnQ6dXNhZ2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiBy
ZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2Up
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHVzZVJlc291cmNlc19jb3VudF91c2FnZV8pLCByZXNvdXJjZXMsIGNvdW50LCB1c2FnZSk7Cit9
CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2U6dXNhZ2U6c3RhZ2VzOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1c2VSZXNvdXJjZShjb25zdCBNVEw6OlJlc291
cmNlKiByZXNvdXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlLCBNVEw6OlJlbmRlclN0YWdl
cyBzdGFnZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHVzZVJlc291cmNlX3VzYWdlX3N0YWdlc18pLCByZXNvdXJjZSwgdXNhZ2UsIHN0
YWdlcyk7Cit9CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2VzOmNvdW50OnVzYWdlOnN0YWdlczoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3VyY2Vz
KE1UTDo6UmVzb3VyY2UqIHJlc291cmNlcywgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291
cmNlVXNhZ2UgdXNhZ2UsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVzb3VyY2VzX2Nv
dW50X3VzYWdlX3N0YWdlc18pLCByZXNvdXJjZXMsIGNvdW50LCB1c2FnZSwgc3RhZ2VzKTsKK30K
KworLy8gbWV0aG9kOiB1c2VIZWFwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjp1c2VIZWFwKGNvbnN0IE1UTDo6SGVhcCogaGVhcCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlSGVhcF8pLCBoZWFw
KTsKK30KKworLy8gbWV0aG9kOiB1c2VIZWFwczpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6
VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBzX2NvdW50XyksIGhlYXBzLCBjb3VudCk7Cit9CisKKy8v
IG1ldGhvZDogdXNlSGVhcDpzdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnVzZUhlYXAoY29uc3QgTVRMOjpIZWFwKiBoZWFwLCBNVEw6OlJlbmRlclN0
YWdlcyBzdGFnZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHVzZUhlYXBfc3RhZ2VzXyksIGhlYXAsIHN0YWdlcyk7Cit9CisKKy8vIG1l
dGhvZDogdXNlSGVhcHM6Y291bnQ6c3RhZ2VzOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwcyhNVEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdl
ciBjb3VudCwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwc19jb3VudF9zdGFnZXNf
KSwgaGVhcHMsIGNvdW50LCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6IGV4ZWN1dGVDb21tYW5k
c0luQnVmZmVyOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6ZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1h
bmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlJhbmdlIGV4ZWN1dGlvblJhbmdl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcl93aXRoUmFuZ2VfKSwgaW5kaXJlY3RDb21tYW5kQnVm
ZmVyLCBleGVjdXRpb25SYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNvbW1hbmRzSW5C
dWZmZXI6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmV4ZWN1dGVDb21tYW5kc0luQnVmZmVyKGNv
bnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRidWZmZXIsIGNv
bnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdFJhbmdlQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJl
Y3RCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyX2luZGlyZWN0QnVmZmVyX2lu
ZGlyZWN0QnVmZmVyT2Zmc2V0XyksIGluZGlyZWN0Q29tbWFuZGJ1ZmZlciwgaW5kaXJlY3RSYW5n
ZUJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworfQorCisvLyBtZXRob2Q6IG1lbW9yeUJh
cnJpZXJXaXRoU2NvcGU6YWZ0ZXJTdGFnZXM6YmVmb3JlU3RhZ2VzOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjptZW1vcnlCYXJyaWVyKE1UTDo6QmFycmllclNj
b3BlIHNjb3BlLCBNVEw6OlJlbmRlclN0YWdlcyBhZnRlciwgTVRMOjpSZW5kZXJTdGFnZXMgYmVm
b3JlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtZW1vcnlCYXJyaWVyV2l0aFNjb3BlX2FmdGVyU3RhZ2VzX2JlZm9yZVN0YWdlc18pLCBz
Y29wZSwgYWZ0ZXIsIGJlZm9yZSk7Cit9CisKKy8vIG1ldGhvZDogbWVtb3J5QmFycmllcldpdGhS
ZXNvdXJjZXM6Y291bnQ6YWZ0ZXJTdGFnZXM6YmVmb3JlU3RhZ2VzOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjptZW1vcnlCYXJyaWVyKE1UTDo6UmVzb3VyY2Uq
IHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVuZGVyU3RhZ2VzIGFmdGVy
LCBNVEw6OlJlbmRlclN0YWdlcyBiZWZvcmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzX2Nv
dW50X2FmdGVyU3RhZ2VzX2JlZm9yZVN0YWdlc18pLCByZXNvdXJjZXMsIGNvdW50LCBhZnRlciwg
YmVmb3JlKTsKK30KKworLy8gbWV0aG9kOiBzYW1wbGVDb3VudGVyc0luQnVmZmVyOmF0U2FtcGxl
SW5kZXg6d2l0aEJhcnJpZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNhbXBsZUNvdW50ZXJzSW5CdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVm
ZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVy
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzYW1wbGVDb3VudGVyc0luQnVmZmVyX2F0U2FtcGxlSW5kZXhfd2l0aEJhcnJpZXJfKSwgc2Ft
cGxlQnVmZmVyLCBzYW1wbGVJbmRleCwgYmFycmllcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGFzcy5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGFzcy5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODU3NTFlYWFlNTVlMGQ4NGM5MDNmMzM3MWQyNWIxMjk5MjUzOTdkYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQYXNz
LmhwcApAQCAtMCwwICsxLDc4NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUmVuZGVyUGFzcy5ocHAKKy8vCisvLyBDb3B5
cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZp
bmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFBy
aXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2lu
Y2x1ZGUgIk1UTFJlbmRlclBhc3MuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0o
TlM6OlVJbnRlZ2VyLCBMb2FkQWN0aW9uKSB7CisgICAgTG9hZEFjdGlvbkRvbnRDYXJlID0gMCwK
KyAgICBMb2FkQWN0aW9uTG9hZCA9IDEsCisgICAgTG9hZEFjdGlvbkNsZWFyID0gMiwKK307CisK
K19NVExfRU5VTShOUzo6VUludGVnZXIsIFN0b3JlQWN0aW9uKSB7CisgICAgU3RvcmVBY3Rpb25E
b250Q2FyZSA9IDAsCisgICAgU3RvcmVBY3Rpb25TdG9yZSA9IDEsCisgICAgU3RvcmVBY3Rpb25N
dWx0aXNhbXBsZVJlc29sdmUgPSAyLAorICAgIFN0b3JlQWN0aW9uU3RvcmVBbmRNdWx0aXNhbXBs
ZVJlc29sdmUgPSAzLAorICAgIFN0b3JlQWN0aW9uVW5rbm93biA9IDQsCisgICAgU3RvcmVBY3Rp
b25DdXN0b21TYW1wbGVEZXB0aFN0b3JlID0gNSwKK307CisKK19NVExfT1BUSU9OUyhOUzo6VUlu
dGVnZXIsIFN0b3JlQWN0aW9uT3B0aW9ucykgeworICAgIFN0b3JlQWN0aW9uT3B0aW9uTm9uZSA9
IDAsCisgICAgU3RvcmVBY3Rpb25PcHRpb25WYWxpZE1hc2sgPSAxLAorICAgIFN0b3JlQWN0aW9u
T3B0aW9uQ3VzdG9tU2FtcGxlUG9zaXRpb25zID0gMSwKK307CisKK3N0cnVjdCBDbGVhckNvbG9y
Cit7CisgICAgc3RhdGljIENsZWFyQ29sb3IgTWFrZShkb3VibGUgcmVkLCBkb3VibGUgZ3JlZW4s
IGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpOworCisgICAgQ2xlYXJDb2xvcigpID0gZGVmYXVs
dDsKKworICAgIENsZWFyQ29sb3IoZG91YmxlIHJlZCwgZG91YmxlIGdyZWVuLCBkb3VibGUgYmx1
ZSwgZG91YmxlIGFscGhhKTsKKworICAgIGRvdWJsZSByZWQ7CisgICAgZG91YmxlIGdyZWVuOwor
ICAgIGRvdWJsZSBibHVlOworICAgIGRvdWJsZSBhbHBoYTsKK30gX01UTF9QQUNLRUQ7CisKK2Ns
YXNzIFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNz
IFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNs
YXNzIFRleHR1cmUqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRU
ZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMZXZlbChOUzo6VUlu
dGVnZXIgbGV2ZWwpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2xpY2UoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRTbGljZShOUzo6VUludGVnZXIgc2xpY2UpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhQbGFuZSgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dERlcHRoUGxhbmUoTlM6OlVJbnRlZ2VyIGRlcHRoUGxhbmUpOworCisgICAgY2xhc3MgVGV4dHVy
ZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVRleHR1cmUoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNv
bHZlVGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiByZXNvbHZlVGV4dHVyZSk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlTGV2ZWwo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRSZXNvbHZlTGV2ZWwoTlM6OlVJbnRlZ2VyIHJlc29sdmVMZXZlbCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlU2xpY2UoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRSZXNvbHZlU2xpY2UoTlM6OlVJbnRlZ2VyIHJlc29sdmVTbGljZSk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlRGVwdGhQbGFuZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFJlc29sdmVEZXB0aFBsYW5lKE5TOjpVSW50ZWdlciByZXNvbHZlRGVwdGhQbGFuZSk7CisK
KyAgICBNVEw6OkxvYWRBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkQWN0
aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0TG9hZEFjdGlvbihNVEw6OkxvYWRBY3Rpb24gbG9hZEFjdGlvbik7CisKKyAgICBN
VEw6OlN0b3JlQWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUFjdGlvbigp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24pOworCisgICAgTVRM
OjpTdG9yZUFjdGlvbk9wdGlvbnMgICAgICAgICAgICAgICAgICAgICAgc3RvcmVBY3Rpb25PcHRp
b25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3Jl
QWN0aW9uT3B0aW9ucyk7Cit9OworCitjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciwgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iq
ICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkNsZWFyQ29sb3IgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsZWFyQ29sb3IoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENsZWFyQ29sb3IoTVRMOjpDbGVh
ckNvbG9yIGNsZWFyQ29sb3IpOworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgTXVsdGlz
YW1wbGVEZXB0aFJlc29sdmVGaWx0ZXIpIHsKKyAgICBNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZp
bHRlclNhbXBsZTAgPSAwLAorICAgIE11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyTWluID0g
MSwKKyAgICBNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlck1heCA9IDIsCit9OworCitjbGFz
cyBSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWlu
ZzxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciwgTVRMOjpSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBkb3Vi
bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyRGVwdGgo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldENsZWFyRGVwdGgoZG91YmxlIGNsZWFyRGVwdGgpOworCisgICAgTVRMOjpNdWx0
aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlciAgICAgICAgICAgICAgICBkZXB0aFJlc29sdmVGaWx0
ZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldERlcHRoUmVzb2x2ZUZpbHRlcihNVEw6Ok11bHRpc2FtcGxlRGVwdGhSZXNv
bHZlRmlsdGVyIGRlcHRoUmVzb2x2ZUZpbHRlcik7Cit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRl
Z2VyLCBNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyKSB7CisgICAgTXVsdGlzYW1wbGVT
dGVuY2lsUmVzb2x2ZUZpbHRlclNhbXBsZTAgPSAwLAorICAgIE11bHRpc2FtcGxlU3RlbmNpbFJl
c29sdmVGaWx0ZXJEZXB0aFJlc29sdmVkU2FtcGxlID0gMSwKK307CisKK2NsYXNzIFJlbmRlclBh
c3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVy
UGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciwgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBhc3NTdGVu
Y2lsQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNz
U3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgdWludDMy
X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyU3RlbmNp
bCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRDbGVhclN0ZW5jaWwodWludDMyX3QgY2xlYXJTdGVuY2lsKTsKKworICAg
IE1UTDo6TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZpbHRlciAgICAgICAgICAgICAgICBzdGVu
Y2lsUmVzb2x2ZUZpbHRlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVuY2lsUmVzb2x2ZUZpbHRlcihNVEw6Ok11
bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXIgc3RlbmNpbFJlc29sdmVGaWx0ZXIpOworfTsK
KworY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpV
SW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2Vy
IGF0dGFjaG1lbnRJbmRleCk7Cit9OworCitjbGFzcyBSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVyUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBS
ZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAg
ICBjbGFzcyBSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAg
ICBpbml0KCk7CisKKyAgICBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzYW1wbGVCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVCdWZm
ZXIoY29uc3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0T2ZWZXJ0ZXhT
YW1wbGVJbmRleChOUzo6VUludGVnZXIgc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4KTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuZE9mVmVydGV4U2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFbmRPZlZlcnRleFNhbXBs
ZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZlZlcnRleFNhbXBsZUluZGV4KTsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
T2ZGcmFnbWVudFNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRPZkZyYWdtZW50U2Ft
cGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4KTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuZE9mRnJhZ21lbnRT
YW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4KTsKK307CisK
K2NsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5IDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc1Nh
bXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFz
cyBSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAg
IGluaXQoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVu
dEluZGV4KTsKK307CisKK2NsYXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yIDogcHVibGljIE5TOjpD
b3B5aW5nPFJlbmRlclBhc3NEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFz
cyBSZW5kZXJQYXNzRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICBhbGxvYygpOworCisg
ICAgY2xhc3MgUmVuZGVyUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzRGVzY3JpcHRvciogICAgICAg
ICAgICAgICAgICAgICByZW5kZXJQYXNzRGVzY3JpcHRvcigpOworCisgICAgY2xhc3MgUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGNvbG9yQXR0YWNobWVu
dHMoKSBjb25zdDsKKworICAgIGNsYXNzIFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yKiAgICAgICAgICAgICBkZXB0aEF0dGFjaG1lbnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVwdGhBdHRh
Y2htZW50KGNvbnN0IGNsYXNzIFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBk
ZXB0aEF0dGFjaG1lbnQpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50
RGVzY3JpcHRvciogICAgICAgICAgIHN0ZW5jaWxBdHRhY2htZW50KCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0
ZW5jaWxBdHRhY2htZW50KGNvbnN0IGNsYXNzIFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERl
c2NyaXB0b3IqIHN0ZW5jaWxBdHRhY2htZW50KTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5UmVzdWx0QnVmZmVy
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFZpc2liaWxpdHlSZXN1bHRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVy
KiB2aXNpYmlsaXR5UmVzdWx0QnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXRBcnJheUxlbmd0aCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRSZW5kZXJUYXJnZXRBcnJheUxlbmd0aChOUzo6VUludGVnZXIgcmVuZGVy
VGFyZ2V0QXJyYXlMZW5ndGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlYmxvY2tTYW1wbGVMZW5ndGgoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0SW1hZ2VibG9ja1NhbXBsZUxlbmd0aChOUzo6VUludGVnZXIgaW1hZ2VibG9ja1NhbXBs
ZUxlbmd0aCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGhy
ZWFkZ3JvdXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIHRocmVhZGdyb3VwTWVtb3J5TGVuZ3Ro
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aWxlV2lkdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlsZVdpZHRoKE5TOjpVSW50ZWdlciB0
aWxlV2lkdGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbGVIZWlnaHQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlsZUhlaWdodChOUzo6
VUludGVnZXIgdGlsZUhlaWdodCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFJhc3RlclNhbXBsZUNvdW50KCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldERlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgZGVmYXVsdFJh
c3RlclNhbXBsZUNvdW50KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXRXaWR0aCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRS
ZW5kZXJUYXJnZXRXaWR0aChOUzo6VUludGVnZXIgcmVuZGVyVGFyZ2V0V2lkdGgpOworCisgICAg
TlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
bmRlclRhcmdldEhlaWdodCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZW5kZXJUYXJnZXRIZWlnaHQoTlM6OlVJ
bnRlZ2VyIHJlbmRlclRhcmdldEhlaWdodCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FtcGxlUG9zaXRpb25zKGNvbnN0
IE1UTDo6U2FtcGxlUG9zaXRpb24qIHBvc2l0aW9ucywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKwor
ICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZXRTYW1wbGVQb3NpdGlvbnMoTVRMOjpTYW1wbGVQb3NpdGlvbiogcG9zaXRpb25zLCBOUzo6
VUludGVnZXIgY291bnQpOworCisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJhc3Rlcml6YXRpb25SYXRlTWFwKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFJhc3Rlcml6YXRpb25SYXRlTWFwKGNvbnN0IGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwKiBy
YXN0ZXJpemF0aW9uUmF0ZU1hcCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25z
dDsKK307CisKK30KKworX01UTF9JTkxJTkUgTVRMOjpDbGVhckNvbG9yIE1UTDo6Q2xlYXJDb2xv
cjo6TWFrZShkb3VibGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxw
aGEpCit7CisgICAgcmV0dXJuIENsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwor
fQorCitfTVRMX0lOTElORSBNVEw6OkNsZWFyQ29sb3I6OkNsZWFyQ29sb3IoZG91YmxlIF9yZWQs
IGRvdWJsZSBfZ3JlZW4sIGRvdWJsZSBfYmx1ZSwgZG91YmxlIF9hbHBoYSkKKyAgICA6IHJlZChf
cmVkKQorICAgICwgZ3JlZW4oX2dyZWVuKQorICAgICwgYmx1ZShfYmx1ZSkKKyAgICAsIGFscGhh
KF9hbHBoYSkKK3sKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxN
VEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0Ojppbml0PE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisv
LyBwcm9wZXJ0eTogdGV4dHVyZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OlJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6dGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh0ZXh0dXJlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3I6OnNldFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRUZXh0dXJlXyksIHRleHR1cmUpOworfQorCisvLyBwcm9wZXJ0eTogbGV2ZWwKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bGV2
ZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsZXZlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRMZXZlbChOUzo6VUludGVn
ZXIgbGV2ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldExldmVsXyksIGxldmVsKTsKK30KKworLy8gcHJvcGVydHk6IHNsaWNlCitf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3I6OnNsaWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2xpY2UpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U2xpY2UoTlM6
OlVJbnRlZ2VyIHNsaWNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRTbGljZV8pLCBzbGljZSk7Cit9CisKKy8vIHByb3BlcnR5OiBk
ZXB0aFBsYW5lCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3I6OmRlcHRoUGxhbmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXB0aFBs
YW5lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3I6OnNldERlcHRoUGxhbmUoTlM6OlVJbnRlZ2VyIGRlcHRoUGxhbmUpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRo
UGxhbmVfKSwgZGVwdGhQbGFuZSk7Cit9CisKKy8vIHByb3BlcnR5OiByZXNvbHZlVGV4dHVyZQor
X01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvcjo6cmVzb2x2ZVRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzb2x2ZVRleHR1
cmUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcjo6c2V0UmVzb2x2ZVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiByZXNvbHZlVGV4
dHVyZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0UmVzb2x2ZVRleHR1cmVfKSwgcmVzb2x2ZVRleHR1cmUpOworfQorCisvLyBwcm9w
ZXJ0eTogcmVzb2x2ZUxldmVsCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnJlc29sdmVMZXZlbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHJlc29sdmVMZXZlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRSZXNvbHZlTGV2ZWwoTlM6OlVJbnRlZ2VyIHJlc29s
dmVMZXZlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0UmVzb2x2ZUxldmVsXyksIHJlc29sdmVMZXZlbCk7Cit9CisKKy8vIHByb3Bl
cnR5OiByZXNvbHZlU2xpY2UKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvcjo6cmVzb2x2ZVNsaWNlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocmVzb2x2ZVNsaWNlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3I6OnNldFJlc29sdmVTbGljZShOUzo6VUludGVnZXIgcmVzb2x2
ZVNsaWNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRSZXNvbHZlU2xpY2VfKSwgcmVzb2x2ZVNsaWNlKTsKK30KKworLy8gcHJvcGVy
dHk6IHJlc29sdmVEZXB0aFBsYW5lCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnJlc29sdmVEZXB0aFBsYW5lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwocmVzb2x2ZURlcHRoUGxhbmUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UmVzb2x2ZURlcHRoUGxhbmUo
TlM6OlVJbnRlZ2VyIHJlc29sdmVEZXB0aFBsYW5lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZXNvbHZlRGVwdGhQbGFuZV8pLCBy
ZXNvbHZlRGVwdGhQbGFuZSk7Cit9CisKKy8vIHByb3BlcnR5OiBsb2FkQWN0aW9uCitfTVRMX0lO
TElORSBNVEw6OkxvYWRBY3Rpb24gTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6
OmxvYWRBY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6TG9hZEFjdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsb2FkQWN0aW9uKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNl
dExvYWRBY3Rpb24oTVRMOjpMb2FkQWN0aW9uIGxvYWRBY3Rpb24pCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExvYWRBY3Rpb25fKSwg
bG9hZEFjdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBzdG9yZUFjdGlvbgorX01UTF9JTkxJTkUg
TVRMOjpTdG9yZUFjdGlvbiBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c3Rv
cmVBY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
U3RvcmVBY3Rpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RvcmVBY3Rpb24pKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0
U3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RvcmVBY3Rpb25f
KSwgc3RvcmVBY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogc3RvcmVBY3Rpb25PcHRpb25zCitf
TVRMX0lOTElORSBNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBNVEw6OlJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c3RvcmVBY3Rpb25PcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucz4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdG9yZUFjdGlvbk9wdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RvcmVBY3Rpb25PcHRpb25z
KE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RvcmVBY3Rp
b25PcHRpb25zXyksIHN0b3JlQWN0aW9uT3B0aW9ucyk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKiBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisv
LyBwcm9wZXJ0eTogY2xlYXJDb2xvcgorX01UTF9JTkxJTkUgTVRMOjpDbGVhckNvbG9yIE1UTDo6
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyQ29sb3IoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q2xlYXJDb2xvcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChjbGVhckNvbG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJDb2xvcihNVEw6
OkNsZWFyQ29sb3IgY2xlYXJDb2xvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q2xlYXJDb2xvcl8pLCBjbGVhckNvbG9yKTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iq
IE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBjbGVhckRlcHRoCitfTVRMX0lOTElORSBk
b3VibGUgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6Y2xlYXJEZXB0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZG91YmxlPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGNsZWFyRGVwdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRDbGVhckRlcHRoKGRv
dWJsZSBjbGVhckRlcHRoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRDbGVhckRlcHRoXyksIGNsZWFyRGVwdGgpOworfQorCisvLyBw
cm9wZXJ0eTogZGVwdGhSZXNvbHZlRmlsdGVyCitfTVRMX0lOTElORSBNVEw6Ok11bHRpc2FtcGxl
RGVwdGhSZXNvbHZlRmlsdGVyIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3I6OmRlcHRoUmVzb2x2ZUZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChkZXB0aFJlc29sdmVGaWx0ZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXREZXB0aFJlc29sdmVG
aWx0ZXIoTVRMOjpNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlciBkZXB0aFJlc29sdmVGaWx0
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldERlcHRoUmVzb2x2ZUZpbHRlcl8pLCBkZXB0aFJlc29sdmVGaWx0ZXIpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzU3RlbmNp
bEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERl
c2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpS
ZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9k
OiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3IqIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0
dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogY2xlYXJTdGVuY2lsCitf
TVRMX0lOTElORSB1aW50MzJfdCBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3I6OmNsZWFyU3RlbmNpbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dWludDMyX3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY2xlYXJTdGVuY2lsKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNj
cmlwdG9yOjpzZXRDbGVhclN0ZW5jaWwodWludDMyX3QgY2xlYXJTdGVuY2lsKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDbGVhclN0
ZW5jaWxfKSwgY2xlYXJTdGVuY2lsKTsKK30KKworLy8gcHJvcGVydHk6IHN0ZW5jaWxSZXNvbHZl
RmlsdGVyCitfTVRMX0lOTElORSBNVEw6Ok11bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXIg
TVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpzdGVuY2lsUmVzb2x2
ZUZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpN
dWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0
ZW5jaWxSZXNvbHZlRmlsdGVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
YXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdGVuY2lsUmVzb2x2ZUZpbHRlcihN
VEw6Ok11bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXIgc3RlbmNpbFJlc29sdmVGaWx0ZXIp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFN0ZW5jaWxSZXNvbHZlRmlsdGVyXyksIHN0ZW5jaWxSZXNvbHZlRmlsdGVyKTsKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklW
QVRFX0NMUyhNVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9
CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0
aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhl
ZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVj
dDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6UmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBh
dHRhY2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVu
dCwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExf
SU5MSU5FIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBN
VEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
ciogTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQnVm
ZmVyCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIE1UTDo6UmVuZGVyUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXIoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZl
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldFNhbXBsZUJ1ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1
ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0U2FtcGxlQnVmZmVyXyksIHNhbXBsZUJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5
OiBzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZlZlcnRl
eFNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhcnRPZlZlcnRleFNhbXBsZUlu
ZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleChOUzo6VUlu
dGVnZXIgc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGFydE9mVmVydGV4U2FtcGxlSW5k
ZXhfKSwgc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IGVuZE9m
VmVydGV4U2FtcGxlSW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRl
eCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZE9mVmVydGV4U2FtcGxlSW5kZXgpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvcjo6c2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZWZXJ0
ZXhTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleF8pLCBlbmRPZlZlcnRleFNh
bXBsZUluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IHN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I6OnN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6
c2V0U3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZGcmFnbWVu
dFNhbXBsZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleF8pLCBzdGFydE9mRnJh
Z21lbnRTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmRPZkZyYWdtZW50U2FtcGxl
SW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldEVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZGcmFnbWVudFNh
bXBsZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRFbmRPZkZyYWdtZW50U2FtcGxlSW5kZXhfKSwgZW5kT2ZGcmFnbWVudFNh
bXBsZUluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6
UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRo
b2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1U
TDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9
CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRM
OjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVy
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUlu
dGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudElu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5k
ZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudCwgYXR0YWNobWVu
dEluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
UmVuZGVyUGFzc0Rlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRv
cj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3IqIE1UTDo6
UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IHJlbmRlclBhc3NEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NEZXNjcmlw
dG9yKiBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpyZW5kZXJQYXNzRGVzY3JpcHRvcigpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRv
cio+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IpLCBfTVRMX1BSSVZB
VEVfU0VMKHJlbmRlclBhc3NEZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb2xvckF0
dGFjaG1lbnRzCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmNvbG9yQXR0YWNobWVudHMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
Y29sb3JBdHRhY2htZW50cykpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGhBdHRhY2htZW50Citf
TVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6
OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpkZXB0aEF0dGFjaG1lbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRoQXR0YWNobWVudCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldERlcHRoQXR0
YWNobWVudChjb25zdCBNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBk
ZXB0aEF0dGFjaG1lbnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldERlcHRoQXR0YWNobWVudF8pLCBkZXB0aEF0dGFjaG1lbnQpOwor
fQorCisvLyBwcm9wZXJ0eTogc3RlbmNpbEF0dGFjaG1lbnQKK19NVExfSU5MSU5FIE1UTDo6UmVu
ZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVzY3Jp
cHRvcjo6c3RlbmNpbEF0dGFjaG1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcio+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc3RlbmNpbEF0dGFjaG1lbnQpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRTdGVuY2lsQXR0YWNobWVudChj
b25zdCBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IqIHN0ZW5jaWxB
dHRhY2htZW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRTdGVuY2lsQXR0YWNobWVudF8pLCBzdGVuY2lsQXR0YWNobWVudCk7Cit9
CisKKy8vIHByb3BlcnR5OiB2aXNpYmlsaXR5UmVzdWx0QnVmZmVyCitfTVRMX0lOTElORSBNVEw6
OkJ1ZmZlciogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dmlzaWJpbGl0eVJlc3VsdEJ1ZmZl
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZpc2liaWxpdHlSZXN1bHRCdWZmZXIpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRWaXNpYmlsaXR5
UmVzdWx0QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiB2aXNpYmlsaXR5UmVzdWx0QnVmZmVyKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRWaXNpYmlsaXR5UmVzdWx0QnVmZmVyXyksIHZpc2liaWxpdHlSZXN1bHRCdWZmZXIpOworfQor
CisvLyBwcm9wZXJ0eTogcmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpyZW5kZXJUYXJnZXRBcnJheUxlbmd0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlbmRlclRhcmdldEFycmF5TGVuZ3RoKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0UmVuZGVyVGFy
Z2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIHJlbmRlclRhcmdldEFycmF5TGVuZ3RoKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRS
ZW5kZXJUYXJnZXRBcnJheUxlbmd0aF8pLCByZW5kZXJUYXJnZXRBcnJheUxlbmd0aCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6aW1hZ2VibG9ja1NhbXBsZUxlbmd0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGltYWdlYmxvY2tTYW1wbGVMZW5ndGgpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRJbWFnZWJsb2NrU2Ft
cGxlTGVuZ3RoKE5TOjpVSW50ZWdlciBpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbWFnZWJs
b2NrU2FtcGxlTGVuZ3RoXyksIGltYWdlYmxvY2tTYW1wbGVMZW5ndGgpOworfQorCisvLyBwcm9w
ZXJ0eTogdGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjp0aHJlYWRncm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0VGhyZWFkZ3JvdXBNZW1vcnlM
ZW5ndGgoTlM6OlVJbnRlZ2VyIHRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaHJlYWRncm91
cE1lbW9yeUxlbmd0aF8pLCB0aHJlYWRncm91cE1lbW9yeUxlbmd0aCk7Cit9CisKKy8vIHByb3Bl
cnR5OiB0aWxlV2lkdGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NE
ZXNjcmlwdG9yOjp0aWxlV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aWxlV2lkdGgpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRUaWxl
V2lkdGgoTlM6OlVJbnRlZ2VyIHRpbGVXaWR0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZVdpZHRoXyksIHRpbGVXaWR0aCk7
Cit9CisKKy8vIHByb3BlcnR5OiB0aWxlSGVpZ2h0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dGlsZUhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHRpbGVIZWlnaHQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NE
ZXNjcmlwdG9yOjpzZXRUaWxlSGVpZ2h0KE5TOjpVSW50ZWdlciB0aWxlSGVpZ2h0KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxl
SGVpZ2h0XyksIHRpbGVIZWlnaHQpOworfQorCisvLyBwcm9wZXJ0eTogZGVmYXVsdFJhc3RlclNh
bXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3Jp
cHRvcjo6ZGVmYXVsdFJhc3RlclNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVm
YXVsdFJhc3RlclNhbXBsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJQYXNzRGVzY3JpcHRvcjo6c2V0RGVmYXVsdFJhc3RlclNhbXBsZUNvdW50KE5TOjpVSW50ZWdl
ciBkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudF8p
LCBkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogcmVuZGVyVGFy
Z2V0V2lkdGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlw
dG9yOjpyZW5kZXJUYXJnZXRXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlbmRlclRhcmdl
dFdpZHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRv
cjo6c2V0UmVuZGVyVGFyZ2V0V2lkdGgoTlM6OlVJbnRlZ2VyIHJlbmRlclRhcmdldFdpZHRoKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRSZW5kZXJUYXJnZXRXaWR0aF8pLCByZW5kZXJUYXJnZXRXaWR0aCk7Cit9CisKKy8vIHByb3Bl
cnR5OiByZW5kZXJUYXJnZXRIZWlnaHQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJl
bmRlclBhc3NEZXNjcmlwdG9yOjpyZW5kZXJUYXJnZXRIZWlnaHQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChyZW5kZXJUYXJnZXRIZWlnaHQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlclBhc3NEZXNjcmlwdG9yOjpzZXRSZW5kZXJUYXJnZXRIZWlnaHQoTlM6OlVJbnRlZ2VyIHJl
bmRlclRhcmdldEhlaWdodCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyVGFyZ2V0SGVpZ2h0XyksIHJlbmRlclRhcmdldEhl
aWdodCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2FtcGxlUG9zaXRpb25zOmNvdW50OgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRTYW1wbGVQb3NpdGlvbnMo
Y29uc3QgTVRMOjpTYW1wbGVQb3NpdGlvbiogcG9zaXRpb25zLCBOUzo6VUludGVnZXIgY291bnQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFNhbXBsZVBvc2l0aW9uc19jb3VudF8pLCBwb3NpdGlvbnMsIGNvdW50KTsKK30KKworLy8g
bWV0aG9kOiBnZXRTYW1wbGVQb3NpdGlvbnM6Y291bnQ6CitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Z2V0U2FtcGxlUG9zaXRpb25zKE1UTDo6U2Ft
cGxlUG9zaXRpb24qIHBvc2l0aW9ucywgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChnZXRTYW1wbGVQb3NpdGlvbnNfY291bnRfKSwgcG9zaXRpb25zLCBjb3VudCk7Cit9CisKKy8v
IHByb3BlcnR5OiByYXN0ZXJpemF0aW9uUmF0ZU1hcAorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZU1hcCogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6cmFzdGVyaXphdGlvblJh
dGVNYXAoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFz
dGVyaXphdGlvblJhdGVNYXAqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJhc3Rlcml6YXRpb25S
YXRlTWFwKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRv
cjo6c2V0UmFzdGVyaXphdGlvblJhdGVNYXAoY29uc3QgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1h
cCogcmFzdGVyaXphdGlvblJhdGVNYXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJhc3Rlcml6YXRpb25SYXRlTWFwXyksIHJhc3Rl
cml6YXRpb25SYXRlTWFwKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlckF0dGFjaG1l
bnRzCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXJBdHRh
Y2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpS
ZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyQXR0YWNobWVudHMpKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQaXBlbGluZS5o
cHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGlwZWxp
bmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFkMWRiNmY2YjM3ZTAyZmUzYjZhNmYwNmRiOTMwYTZmMjNjYWUx
YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMUmVuZGVyUGlwZWxpbmUuaHBwCkBAIC0wLDAgKzEsMTIxMiBAQAorLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUmVuZGVy
UGlwZWxpbmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJp
ZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExQaXhlbEZvcm1hdC5ocHAiCisjaW5j
bHVkZSAiTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlclBp
cGVsaW5lLmhwcCIKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sK
K19NVExfRU5VTShOUzo6VUludGVnZXIsIEJsZW5kRmFjdG9yKSB7CisgICAgQmxlbmRGYWN0b3Ja
ZXJvID0gMCwKKyAgICBCbGVuZEZhY3Rvck9uZSA9IDEsCisgICAgQmxlbmRGYWN0b3JTb3VyY2VD
b2xvciA9IDIsCisgICAgQmxlbmRGYWN0b3JPbmVNaW51c1NvdXJjZUNvbG9yID0gMywKKyAgICBC
bGVuZEZhY3RvclNvdXJjZUFscGhhID0gNCwKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzU291cmNl
QWxwaGEgPSA1LAorICAgIEJsZW5kRmFjdG9yRGVzdGluYXRpb25Db2xvciA9IDYsCisgICAgQmxl
bmRGYWN0b3JPbmVNaW51c0Rlc3RpbmF0aW9uQ29sb3IgPSA3LAorICAgIEJsZW5kRmFjdG9yRGVz
dGluYXRpb25BbHBoYSA9IDgsCisgICAgQmxlbmRGYWN0b3JPbmVNaW51c0Rlc3RpbmF0aW9uQWxw
aGEgPSA5LAorICAgIEJsZW5kRmFjdG9yU291cmNlQWxwaGFTYXR1cmF0ZWQgPSAxMCwKKyAgICBC
bGVuZEZhY3RvckJsZW5kQ29sb3IgPSAxMSwKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzQmxlbmRD
b2xvciA9IDEyLAorICAgIEJsZW5kRmFjdG9yQmxlbmRBbHBoYSA9IDEzLAorICAgIEJsZW5kRmFj
dG9yT25lTWludXNCbGVuZEFscGhhID0gMTQsCisgICAgQmxlbmRGYWN0b3JTb3VyY2UxQ29sb3Ig
PSAxNSwKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzU291cmNlMUNvbG9yID0gMTYsCisgICAgQmxl
bmRGYWN0b3JTb3VyY2UxQWxwaGEgPSAxNywKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzU291cmNl
MUFscGhhID0gMTgsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBCbGVuZE9wZXJhdGlv
bikgeworICAgIEJsZW5kT3BlcmF0aW9uQWRkID0gMCwKKyAgICBCbGVuZE9wZXJhdGlvblN1YnRy
YWN0ID0gMSwKKyAgICBCbGVuZE9wZXJhdGlvblJldmVyc2VTdWJ0cmFjdCA9IDIsCisgICAgQmxl
bmRPcGVyYXRpb25NaW4gPSAzLAorICAgIEJsZW5kT3BlcmF0aW9uTWF4ID0gNCwKK307CisKK19N
VExfT1BUSU9OUyhOUzo6VUludGVnZXIsIENvbG9yV3JpdGVNYXNrKSB7CisgICAgQ29sb3JXcml0
ZU1hc2tOb25lID0gMCwKKyAgICBDb2xvcldyaXRlTWFza0FscGhhID0gMSwKKyAgICBDb2xvcldy
aXRlTWFza0JsdWUgPSAyLAorICAgIENvbG9yV3JpdGVNYXNrR3JlZW4gPSA0LAorICAgIENvbG9y
V3JpdGVNYXNrUmVkID0gOCwKKyAgICBDb2xvcldyaXRlTWFza0FsbCA9IDE1LAorfTsKKworX01U
TF9FTlVNKE5TOjpVSW50ZWdlciwgUHJpbWl0aXZlVG9wb2xvZ3lDbGFzcykgeworICAgIFByaW1p
dGl2ZVRvcG9sb2d5Q2xhc3NVbnNwZWNpZmllZCA9IDAsCisgICAgUHJpbWl0aXZlVG9wb2xvZ3lD
bGFzc1BvaW50ID0gMSwKKyAgICBQcmltaXRpdmVUb3BvbG9neUNsYXNzTGluZSA9IDIsCisgICAg
UHJpbWl0aXZlVG9wb2xvZ3lDbGFzc1RyaWFuZ2xlID0gMywKK307CisKK19NVExfRU5VTShOUzo6
VUludGVnZXIsIFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUpIHsKKyAgICBUZXNzZWxsYXRpb25Q
YXJ0aXRpb25Nb2RlUG93MiA9IDAsCisgICAgVGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZUludGVn
ZXIgPSAxLAorICAgIFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVGcmFjdGlvbmFsT2RkID0gMiwK
KyAgICBUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlRnJhY3Rpb25hbEV2ZW4gPSAzLAorfTsKKwor
X01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKSB7
CisgICAgVGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uQ29uc3RhbnQgPSAwLAorICAgIFRl
c3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvblBlclBhdGNoID0gMSwKKyAgICBUZXNzZWxsYXRp
b25GYWN0b3JTdGVwRnVuY3Rpb25QZXJJbnN0YW5jZSA9IDIsCisgICAgVGVzc2VsbGF0aW9uRmFj
dG9yU3RlcEZ1bmN0aW9uUGVyUGF0Y2hBbmRQZXJJbnN0YW5jZSA9IDMsCit9OworCitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQpIHsKKyAgICBUZXNzZWxs
YXRpb25GYWN0b3JGb3JtYXRIYWxmID0gMCwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIs
IFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSkgeworICAgIFRlc3NlbGxhdGlvbkNv
bnRyb2xQb2ludEluZGV4VHlwZU5vbmUgPSAwLAorICAgIFRlc3NlbGxhdGlvbkNvbnRyb2xQb2lu
dEluZGV4VHlwZVVJbnQxNiA9IDEsCisgICAgVGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhU
eXBlVUludDMyID0gMiwKK307CisKK2NsYXNzIFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAg
IE1UTDo6UGl4ZWxGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBp
eGVsRm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBibGVuZGluZ0VuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCbGVuZGluZ0VuYWJs
ZWQoYm9vbCBibGVuZGluZ0VuYWJsZWQpOworCisgICAgTVRMOjpCbGVuZEZhY3RvciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUkdCQmxlbmRGYWN0b3IoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTb3VyY2VSR0JCbGVuZEZhY3RvcihNVEw6OkJsZW5kRmFjdG9yIHNvdXJjZVJHQkJs
ZW5kRmFjdG9yKTsKKworICAgIE1UTDo6QmxlbmRGYWN0b3IgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRE
ZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKE1UTDo6QmxlbmRGYWN0b3IgZGVzdGluYXRpb25SR0JC
bGVuZEZhY3Rvcik7CisKKyAgICBNVEw6OkJsZW5kT3BlcmF0aW9uICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZ2JCbGVuZE9wZXJhdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJnYkJsZW5k
T3BlcmF0aW9uKE1UTDo6QmxlbmRPcGVyYXRpb24gcmdiQmxlbmRPcGVyYXRpb24pOworCisgICAg
TVRMOjpCbGVuZEZhY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291
cmNlQWxwaGFCbGVuZEZhY3RvcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNvdXJjZUFscGhhQmxlbmRGYWN0b3Io
TVRMOjpCbGVuZEZhY3RvciBzb3VyY2VBbHBoYUJsZW5kRmFjdG9yKTsKKworICAgIE1UTDo6Qmxl
bmRGYWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9u
QWxwaGFCbGVuZEZhY3RvcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3Rv
cihNVEw6OkJsZW5kRmFjdG9yIGRlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3Rvcik7CisKKyAgICBN
VEw6OkJsZW5kT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBo
YUJsZW5kT3BlcmF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWxwaGFCbGVuZE9wZXJhdGlvbihNVEw6OkJs
ZW5kT3BlcmF0aW9uIGFscGhhQmxlbmRPcGVyYXRpb24pOworCisgICAgTVRMOjpDb2xvcldyaXRl
TWFzayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVNYXNrKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0V3JpdGVNYXNrKE1UTDo6Q29sb3JXcml0ZU1hc2sgd3JpdGVNYXNrKTsKK307CisKK2Ns
YXNzIFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVu
ZGVyUGlwZWxpbmVSZWZsZWN0aW9uPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb24qIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGlu
ZVJlZmxlY3Rpb24qICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ZXJ0ZXhBcmd1bWVudHMoKSBjb25zdDsKKworICAgIE5TOjpBcnJh
eSogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50QXJndW1lbnRzKCkgY29uc3Q7
CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlQXJndW1l
bnRzKCkgY29uc3Q7Cit9OworCitjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBwdWJs
aWMgTlM6OkNvcHlpbmc8UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAg
IHN0YXRpYyBjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqICAgICAgICAgICAgICBhbGxv
YygpOworCisgICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiAgICAgICAgICAgICAg
ICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5n
KiBsYWJlbCk7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmVydGV4RnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4RnVuY3Rpb24oY29u
c3QgY2xhc3MgRnVuY3Rpb24qIHZlcnRleEZ1bmN0aW9uKTsKKworICAgIGNsYXNzIEZ1bmN0aW9u
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudEZ1bmN0aW9uKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEZyYWdtZW50RnVuY3Rpb24oY29uc3QgY2xhc3MgRnVuY3Rpb24qIGZyYWdtZW50
RnVuY3Rpb24pOworCisgICAgY2xhc3MgVmVydGV4RGVzY3JpcHRvciogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZlcnRleERlc2NyaXB0b3IoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4RGVzY3JpcHRv
cihjb25zdCBjbGFzcyBWZXJ0ZXhEZXNjcmlwdG9yKiB2ZXJ0ZXhEZXNjcmlwdG9yKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1w
bGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxlQ291bnQp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJhc3RlclNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJhc3RlclNhbXBsZUNvdW50KE5TOjpV
SW50ZWdlciByYXN0ZXJTYW1wbGVDb3VudCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFUb0NvdmVyYWdlRW5hYmxlZCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRBbHBoYVRvQ292ZXJhZ2VFbmFibGVkKGJvb2wgYWxwaGFUb0NvdmVyYWdlRW5hYmxl
ZCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWxwaGFUb09uZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWxwaGFUb09uZUVuYWJsZWQoYm9v
bCBhbHBoYVRvT25lRW5hYmxlZCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyaXphdGlvbkVuYWJsZWQoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
UmFzdGVyaXphdGlvbkVuYWJsZWQoYm9vbCByYXN0ZXJpemF0aW9uRW5hYmxlZCk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmVy
dGV4QW1wbGlmaWNhdGlvbkNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heFZlcnRleEFtcGxpZmljYXRpb25D
b3VudChOUzo6VUludGVnZXIgbWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KTsKKworICAgIGNs
YXNzIFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBjb2xvckF0
dGFjaG1lbnRzKCkgY29uc3Q7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBkZXB0aEF0dGFj
aG1lbnRQaXhlbEZvcm1hdCk7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRTdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgc3RlbmNp
bEF0dGFjaG1lbnRQaXhlbEZvcm1hdCk7CisKKyAgICBNVEw6OlByaW1pdGl2ZVRvcG9sb2d5Q2xh
c3MgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRQcmltaXRpdmVUb3BvbG9neSgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRJbnB1dFByaW1pdGl2ZVRvcG9sb2d5KE1UTDo6UHJpbWl0aXZlVG9wb2xvZ3lDbGFzcyBp
bnB1dFByaW1pdGl2ZVRvcG9sb2d5KTsKKworICAgIE1UTDo6VGVzc2VsbGF0aW9uUGFydGl0aW9u
TW9kZSAgICAgICAgICAgICAgICAgICAgICB0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUoTVRMOjpUZXNzZWxsYXRpb25QYXJ0aXRp
b25Nb2RlIHRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUpOworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFRlc3NlbGxhdGlvbkZhY3Rv
cigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRNYXhUZXNzZWxsYXRpb25GYWN0b3IoTlM6OlVJbnRlZ2VyIG1heFRlc3Nl
bGxhdGlvbkZhY3Rvcik7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZChib29sIHRlc3NlbGxhdGlvbkZhY3Rv
clNjYWxlRW5hYmxlZCk7CisKKyAgICBNVEw6OlRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCAgICAg
ICAgICAgICAgICAgICAgICAgdGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRl
c3NlbGxhdGlvbkZhY3RvckZvcm1hdChNVEw6OlRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCB0ZXNz
ZWxsYXRpb25GYWN0b3JGb3JtYXQpOworCisgICAgTVRMOjpUZXNzZWxsYXRpb25Db250cm9sUG9p
bnRJbmRleFR5cGUgICAgICAgICAgICAgIHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlw
ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUoTVRMOjpUZXNz
ZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUgdGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5k
ZXhUeXBlKTsKKworICAgIE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uICAgICAg
ICAgICAgICAgICB0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24oKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGVz
c2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1
bmN0aW9uIHRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbik7CisKKyAgICBNVEw6OldpbmRp
bmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzc2VsbGF0aW9uT3V0
cHV0V2luZGluZ09yZGVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRl
cihNVEw6OldpbmRpbmcgdGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyKTsKKworICAgIGNs
YXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiAgICAgICAgICAgICAgICB2ZXJ0ZXhC
dWZmZXJzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJh
eSogICAgICAgICAgICAgICAgZnJhZ21lbnRCdWZmZXJzKCkgY29uc3Q7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEluZGly
ZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZl
cnMoYm9vbCBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycyk7CisKKyAgICBOUzo6QXJyYXkq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5QXJjaGl2ZXMo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0QmluYXJ5QXJjaGl2ZXMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZl
cyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmVydGV4UHJlbG9hZGVkTGlicmFyaWVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleFByZWxvYWRl
ZExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIHZlcnRleFByZWxvYWRlZExpYnJhcmllcyk7CisK
KyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnJhZ21lbnRQcmVsb2FkZWRM
aWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiBmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcyk7CisK
KyAgICBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmVydGV4TGlua2VkRnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleExpbmtlZEZ1bmN0aW9ucyhj
b25zdCBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqIHZlcnRleExpbmtlZEZ1bmN0aW9ucyk7CisKKyAg
ICBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJh
Z21lbnRMaW5rZWRGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMo
Y29uc3QgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiBmcmFnbWVudExpbmtlZEZ1bmN0aW9ucyk7CisK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0QWRk
aW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1
bmN0aW9ucyk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRp
bmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucyk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0TWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1heFZlcnRleENh
bGxTdGFja0RlcHRoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1h
eEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1heEZyYWdtZW50Q2FsbFN0YWNr
RGVwdGgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc2V0KCk7Cit9OworCitjbGFzcyBSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNj
cmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQaXBlbGluZUZ1bmN0
aW9uc0Rlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUZ1bmN0
aW9uc0Rlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rp
b25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0VmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJy
YXkqIHZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpOworCisgICAgTlM6OkFycmF5KiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRBZGRpdGlvbmFsQmlu
YXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0RnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNv
bnN0IE5TOjpBcnJheSogZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKTsKKworICAg
IE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVBZGRp
dGlvbmFsQmluYXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnMoY29uc3QgTlM6OkFycmF5KiB0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyk7Cit9Owor
CitjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSZW5k
ZXJQaXBlbGluZVN0YXRlPgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAg
ICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgICAg
ICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgICAgIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKCkgY29uc3Q7CisKKyAgICBib29s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNp
emUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgIGltYWdl
YmxvY2tTYW1wbGVMZW5ndGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgIGltYWdlYmxvY2tNZW1vcnlMZW5ndGgoTVRMOjpTaXplIGltYWdlYmxvY2tEaW1l
bnNpb25zKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRJ
bmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbkhhbmRs
ZSogICAgICAgICAgICBmdW5jdGlvbkhhbmRsZShjb25zdCBjbGFzcyBGdW5jdGlvbiogZnVuY3Rp
b24sIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlKTsKKworICAgIGNsYXNzIFZpc2libGVGdW5jdGlv
blRhYmxlKiAgICAgIG5ld1Zpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZpc2libGVG
dW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTVRMOjpSZW5kZXJTdGFnZXMgc3Rh
Z2UpOworCisgICAgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogbmV3SW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2UpOworCisgICAgY2xh
c3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSogICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25z
dCBjbGFzcyBSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3IqIGFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKTsKK307CisKK2NsYXNzIFJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4KK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIFJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpV
SW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3Mg
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6
VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIFRpbGVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VGlsZVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYWxs
b2MoKTsKKworICAgIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCk7Cit9OworCitjbGFz
cyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVGlsZVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3Mg
VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAgICAgICAg
aW5pdCgpOworCisgICAgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2ht
ZW50SW5kZXgpOworfTsKKworY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IHB1
YmxpYyBOUzo6Q29weWluZzxUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiAgICAgICAg
ICAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iq
ICAgICAgICAgICAgICAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlRnVuY3Rpb24oKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFRpbGVGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbiogdGlsZUZ1bmN0aW9u
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmFzdGVyU2FtcGxlQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJhc3RlclNhbXBsZUNv
dW50KE5TOjpVSW50ZWdlciByYXN0ZXJTYW1wbGVDb3VudCk7CisKKyAgICBjbGFzcyBUaWxlUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGNvbG9yQXR0YWNobWVu
dHMoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRUaHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUoYm9vbCB0aHJlYWRncm91cFNp
emVNYXRjaGVzVGlsZVNpemUpOworCisgICAgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9y
QXJyYXkqICAgICAgICAgICAgICAgICAgICB0aWxlQnVmZmVycygpIGNvbnN0OworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhU
b3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4VG90YWxUaHJlYWRz
UGVyVGhyZWFkZ3JvdXAoTlM6OlVJbnRlZ2VyIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3Vw
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYmluYXJ5QXJjaGl2ZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpbmFyeUFyY2hpdmVzKGNv
bnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVsb2FkZWRMaWJyYXJpZXMo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFByZWxvYWRlZExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIHByZWxv
YWRlZExpYnJhcmllcyk7CisKKyAgICBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmtlZEZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGlu
a2VkRnVuY3Rpb25zKGNvbnN0IGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogbGlua2VkRnVuY3Rpb25z
KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3Vw
cG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlv
bnMpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4Q2FsbFN0YWNr
RGVwdGgoTlM6OlVJbnRlZ2VyIG1heENhbGxTdGFja0RlcHRoKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTsKK307
CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4oX01U
TF9QUklWQVRFX0NMUyhNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Ip
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1U
TDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBw
cm9wZXJ0eTogcGl4ZWxGb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6UGl4ZWxGb3JtYXQgTVRMOjpS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnBpeGVsRm9ybWF0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBpeGVsRm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFBpeGVs
Rm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFBpeGVsRm9ybWF0XyksIHBp
eGVsRm9ybWF0KTsKK30KKworLy8gcHJvcGVydHk6IGJsZW5kaW5nRW5hYmxlZAorX01UTF9JTkxJ
TkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Ymxl
bmRpbmdFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxi
b29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzQmxlbmRpbmdFbmFibGVkKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3I6OnNldEJsZW5kaW5nRW5hYmxlZChib29sIGJsZW5kaW5nRW5hYmxlZCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmxlbmRpbmdF
bmFibGVkXyksIGJsZW5kaW5nRW5hYmxlZCk7Cit9CisKKy8vIHByb3BlcnR5OiBzb3VyY2VSR0JC
bGVuZEZhY3RvcgorX01UTF9JTkxJTkUgTVRMOjpCbGVuZEZhY3RvciBNVEw6OlJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c291cmNlUkdCQmxlbmRGYWN0b3IoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxlbmRGYWN0b3I+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc291cmNlUkdCQmxlbmRGYWN0b3IpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6
c2V0U291cmNlUkdCQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBzb3VyY2VSR0JCbGVuZEZh
Y3RvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0U291cmNlUkdCQmxlbmRGYWN0b3JfKSwgc291cmNlUkdCQmxlbmRGYWN0b3IpOwor
fQorCisvLyBwcm9wZXJ0eTogZGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcgorX01UTF9JTkxJTkUg
TVRMOjpCbGVuZEZhY3RvciBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6ZGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGVuZEZhY3Rvcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldERlc3RpbmF0aW9u
UkdCQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9y
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXREZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yXyksIGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0
b3IpOworfQorCisvLyBwcm9wZXJ0eTogcmdiQmxlbmRPcGVyYXRpb24KK19NVExfSU5MSU5FIE1U
TDo6QmxlbmRPcGVyYXRpb24gTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I6OnJnYkJsZW5kT3BlcmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkJsZW5kT3BlcmF0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJn
YkJsZW5kT3BlcmF0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFJnYkJsZW5kT3BlcmF0aW9uKE1UTDo6
QmxlbmRPcGVyYXRpb24gcmdiQmxlbmRPcGVyYXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJnYkJsZW5kT3BlcmF0aW9uXyks
IHJnYkJsZW5kT3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHNvdXJjZUFscGhhQmxlbmRG
YWN0b3IKK19NVExfSU5MSU5FIE1UTDo6QmxlbmRGYWN0b3IgTVRMOjpSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNvdXJjZUFscGhhQmxlbmRGYWN0b3IoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxlbmRGYWN0b3I+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc291cmNlQWxwaGFCbGVuZEZhY3RvcikpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpz
ZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yKE1UTDo6QmxlbmRGYWN0b3Igc291cmNlQWxwaGFCbGVu
ZEZhY3RvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0U291cmNlQWxwaGFCbGVuZEZhY3Rvcl8pLCBzb3VyY2VBbHBoYUJsZW5kRmFj
dG9yKTsKK30KKworLy8gcHJvcGVydHk6IGRlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvcgorX01U
TF9JTkxJTkUgTVRMOjpCbGVuZEZhY3RvciBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6ZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsZW5kRmFjdG9yPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGRlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvcikpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpz
ZXREZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBkZXN0aW5hdGlv
bkFscGhhQmxlbmRGYWN0b3IpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldERlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3Rvcl8pLCBkZXN0
aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IpOworfQorCisvLyBwcm9wZXJ0eTogYWxwaGFCbGVuZE9w
ZXJhdGlvbgorX01UTF9JTkxJTkUgTVRMOjpCbGVuZE9wZXJhdGlvbiBNVEw6OlJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxwaGFCbGVuZE9wZXJhdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGVuZE9wZXJhdGlvbj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChhbHBoYUJsZW5kT3BlcmF0aW9uKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldEFscGhhQmxlbmRPcGVyYXRpb24oTVRMOjpCbGVuZE9wZXJhdGlvbiBhbHBoYUJsZW5kT3Bl
cmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRBbHBoYUJsZW5kT3BlcmF0aW9uXyksIGFscGhhQmxlbmRPcGVyYXRpb24pOwor
fQorCisvLyBwcm9wZXJ0eTogd3JpdGVNYXNrCitfTVRMX0lOTElORSBNVEw6OkNvbG9yV3JpdGVN
YXNrIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjp3cml0ZU1h
c2soKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29sb3JX
cml0ZU1hc2s+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod3JpdGVNYXNrKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldFdyaXRlTWFzayhNVEw6OkNvbG9yV3JpdGVNYXNrIHdyaXRlTWFzaykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0V3JpdGVNYXNr
XyksIHdyaXRlTWFzayk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogTVRMOjpSZW5kZXJQaXBlbGluZVJlZmxl
Y3Rpb246OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb24+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGlwZWxpbmVS
ZWZsZWN0aW9uKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb24qIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uOjppbml0
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBpcGVsaW5lUmVm
bGVjdGlvbj4oKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEFyZ3VtZW50cworX01UTF9JTkxJ
TkUgTlM6OkFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbjo6dmVydGV4QXJndW1l
bnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleEFyZ3VtZW50cykpOworfQorCisvLyBwcm9w
ZXJ0eTogZnJhZ21lbnRBcmd1bWVudHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb246OmZyYWdtZW50QXJndW1lbnRzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGZyYWdtZW50QXJndW1lbnRzKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0aWxlQXJndW1lbnRz
CitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uOjp0
aWxlQXJndW1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRpbGVBcmd1bWVudHMpKTsKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4o
X01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciog
TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPigpOworfQorCisvLyBw
cm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJv
cGVydHk6IHZlcnRleEZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dmVydGV4RnVuY3Rpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHZlcnRleEZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFZlcnRleEZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rp
b24qIHZlcnRleEZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhGdW5jdGlvbl8pLCB2ZXJ0ZXhGdW5jdGlvbik7
Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudEZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OkZ1
bmN0aW9uKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZnJhZ21lbnRGdW5jdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbio+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnJhZ21lbnRGdW5jdGlvbikpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRGcmFnbWVudEZ1bmN0
aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGZyYWdtZW50RnVuY3Rpb24pCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50RnVu
Y3Rpb25fKSwgZnJhZ21lbnRGdW5jdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhEZXNj
cmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlZlcnRleERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhEZXNjcmlwdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHZlcnRleERlc2NyaXB0b3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VmVydGV4RGVzY3JpcHRvcihjb25zdCBNVEw6
OlZlcnRleERlc2NyaXB0b3IqIHZlcnRleERlc2NyaXB0b3IpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleERlc2NyaXB0b3Jf
KSwgdmVydGV4RGVzY3JpcHRvcik7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVDb3VudAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzYW1w
bGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50KSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50
KE5TOjpVSW50ZWdlciBzYW1wbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlQ291bnRfKSwgc2FtcGxlQ291bnQp
OworfQorCisvLyBwcm9wZXJ0eTogcmFzdGVyU2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmFzdGVyU2FtcGxlQ291bnQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChyYXN0ZXJTYW1wbGVDb3VudCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRSYXN0ZXJTYW1wbGVD
b3VudChOUzo6VUludGVnZXIgcmFzdGVyU2FtcGxlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJhc3RlclNhbXBsZUNvdW50
XyksIHJhc3RlclNhbXBsZUNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IGFscGhhVG9Db3ZlcmFn
ZUVuYWJsZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OmFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNBbHBoYVRvQ292ZXJhZ2VF
bmFibGVkKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OnNldEFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoYm9vbCBhbHBoYVRvQ292ZXJhZ2VFbmFi
bGVkKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRBbHBoYVRvQ292ZXJhZ2VFbmFibGVkXyksIGFscGhhVG9Db3ZlcmFnZUVuYWJsZWQp
OworfQorCisvLyBwcm9wZXJ0eTogYWxwaGFUb09uZUVuYWJsZWQKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmFscGhhVG9PbmVFbmFibGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGlzQWxwaGFUb09uZUVuYWJsZWQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0QWxwaGFUb09uZUVuYWJsZWQoYm9vbCBhbHBo
YVRvT25lRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0QWxwaGFUb09uZUVuYWJsZWRfKSwgYWxwaGFUb09uZUVuYWJsZWQp
OworfQorCisvLyBwcm9wZXJ0eTogcmFzdGVyaXphdGlvbkVuYWJsZWQKK19NVExfSU5MSU5FIGJv
b2wgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnJhc3Rlcml6YXRpb25FbmFibGVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGlzUmFzdGVyaXphdGlvbkVuYWJsZWQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0UmFzdGVyaXphdGlvbkVuYWJs
ZWQoYm9vbCByYXN0ZXJpemF0aW9uRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmFzdGVyaXphdGlvbkVuYWJsZWRfKSwg
cmFzdGVyaXphdGlvbkVuYWJsZWQpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VmVydGV4QW1wbGlm
aWNhdGlvbkNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6Om1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhWZXJ0ZXhBbXBsaWZpY2F0
aW9uQ291bnQoTlM6OlVJbnRlZ2VyIG1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4
VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50XyksIG1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudCk7
Cit9CisKKy8vIHByb3BlcnR5OiBjb2xvckF0dGFjaG1lbnRzCitfTVRMX0lOTElORSBNVEw6OlJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29sb3JBdHRhY2htZW50cykp
OworfQorCisvLyBwcm9wZXJ0eTogZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQKK19NVExfSU5M
SU5FIE1UTDo6UGl4ZWxGb3JtYXQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmRlcHRo
QXR0YWNobWVudFBpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRoQXR0
YWNobWVudFBpeGVsRm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KE1UTDo6UGl4
ZWxGb3JtYXQgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoQXR0YWNobWVudFBp
eGVsRm9ybWF0XyksIGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KTsKK30KKworLy8gcHJvcGVy
dHk6IHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6UGl4ZWxG
b3JtYXQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnN0ZW5jaWxBdHRhY2htZW50UGl4
ZWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UGl4ZWxGb3JtYXQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlbmNpbEF0dGFjaG1lbnRQaXhl
bEZvcm1hdCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpzZXRTdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQg
c3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZv
cm1hdF8pLCBzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KTsKK30KKworLy8gcHJvcGVydHk6
IGlucHV0UHJpbWl0aXZlVG9wb2xvZ3kKK19NVExfSU5MSU5FIE1UTDo6UHJpbWl0aXZlVG9wb2xv
Z3lDbGFzcyBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6aW5wdXRQcmltaXRpdmVUb3Bv
bG9neSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQcmlt
aXRpdmVUb3BvbG9neUNsYXNzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlucHV0UHJpbWl0aXZl
VG9wb2xvZ3kpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6c2V0SW5wdXRQcmltaXRpdmVUb3BvbG9neShNVEw6OlByaW1pdGl2ZVRvcG9sb2d5
Q2xhc3MgaW5wdXRQcmltaXRpdmVUb3BvbG9neSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5wdXRQcmltaXRpdmVUb3BvbG9neV8p
LCBpbnB1dFByaW1pdGl2ZVRvcG9sb2d5KTsKK30KKworLy8gcHJvcGVydHk6IHRlc3NlbGxhdGlv
blBhcnRpdGlvbk1vZGUKK19NVExfSU5MSU5FIE1UTDo6VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9k
ZSBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2VsbGF0aW9uUGFydGl0aW9uTW9k
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXNzZWxs
YXRpb25QYXJ0aXRpb25Nb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRlc3NlbGxhdGlvblBh
cnRpdGlvbk1vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6c2V0VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZShNVEw6OlRlc3NlbGxhdGlv
blBhcnRpdGlvbk1vZGUgdGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9u
UGFydGl0aW9uTW9kZV8pLCB0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlKTsKK30KKworLy8gcHJv
cGVydHk6IG1heFRlc3NlbGxhdGlvbkZhY3RvcgorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhUZXNzZWxsYXRpb25GYWN0b3IoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChtYXhUZXNzZWxsYXRpb25GYWN0b3IpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4VGVzc2VsbGF0aW9u
RmFjdG9yKE5TOjpVSW50ZWdlciBtYXhUZXNzZWxsYXRpb25GYWN0b3IpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heFRlc3NlbGxh
dGlvbkZhY3Rvcl8pLCBtYXhUZXNzZWxsYXRpb25GYWN0b3IpOworfQorCisvLyBwcm9wZXJ0eTog
dGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaXNUZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGVzc2VsbGF0
aW9uRmFjdG9yU2NhbGVFbmFibGVkKGJvb2wgdGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVk
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWRfKSwgdGVzc2VsbGF0aW9uRmFjdG9y
U2NhbGVFbmFibGVkKTsKK30KKworLy8gcHJvcGVydHk6IHRlc3NlbGxhdGlvbkZhY3RvckZvcm1h
dAorX01UTF9JTkxJTkUgTVRMOjpUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXNzZWxsYXRpb25GYWN0b3JGb3Jt
YXQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFRl
c3NlbGxhdGlvbkZhY3RvckZvcm1hdChNVEw6OlRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCB0ZXNz
ZWxsYXRpb25GYWN0b3JGb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdF8pLCB0ZXNz
ZWxsYXRpb25GYWN0b3JGb3JtYXQpOworfQorCisvLyBwcm9wZXJ0eTogdGVzc2VsbGF0aW9uQ29u
dHJvbFBvaW50SW5kZXhUeXBlCitfTVRMX0lOTElORSBNVEw6OlRlc3NlbGxhdGlvbkNvbnRyb2xQ
b2ludEluZGV4VHlwZSBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2VsbGF0aW9u
Q29udHJvbFBvaW50SW5kZXhUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZT4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh0ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGVzc2Vs
bGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlKE1UTDo6VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50
SW5kZXhUeXBlIHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0
aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlXyksIHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4
VHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24K
K19NVExfSU5MSU5FIE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uIE1UTDo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24oKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGVzc2VsbGF0aW9u
RmFjdG9yU3RlcEZ1bmN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRlc3NlbGxhdGlvbkZh
Y3RvclN0ZXBGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24oTVRMOjpU
ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24gdGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0
aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb25fKSwgdGVzc2VsbGF0aW9uRmFj
dG9yU3RlcEZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHRlc3NlbGxhdGlvbk91dHB1dFdp
bmRpbmdPcmRlcgorX01UTF9JTkxJTkUgTVRMOjpXaW5kaW5nIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjp0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6V2luZGluZz4odGhpcywgX01UTF9QUklW
QVRFX1NFTCh0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGVzc2VsbGF0aW9uT3V0
cHV0V2luZGluZ09yZGVyKE1UTDo6V2luZGluZyB0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3Jk
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcl8pLCB0ZXNzZWxsYXRpb25PdXRw
dXRXaW5kaW5nT3JkZXIpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4QnVmZmVycworX01UTF9J
TkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnZlcnRleEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleEJ1ZmZlcnMpKTsKK30KKworLy8gcHJvcGVydHk6IGZy
YWdtZW50QnVmZmVycworX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JB
cnJheSogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmZyYWdtZW50QnVmZmVycygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXBlbGluZUJ1ZmZl
ckRlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnJhZ21lbnRCdWZmZXJz
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycworX01U
TF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c3VwcG9ydEluZGly
ZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRJbmRpcmVjdENvbW1h
bmRCdWZmZXJzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKGJvb2wgc3VwcG9ydElu
ZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzXyks
IHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKTsKK30KKworLy8gcHJvcGVydHk6IGJpbmFy
eUFyY2hpdmVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpiaW5hcnlBcmNoaXZlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChiaW5hcnlBcmNoaXZl
cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
OjpzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hpdmVzKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRC
aW5hcnlBcmNoaXZlc18pLCBiaW5hcnlBcmNoaXZlcyk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0
ZXhQcmVsb2FkZWRMaWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnZlcnRleFByZWxvYWRlZExpYnJhcmllcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTCh2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VmVydGV4UHJlbG9hZGVkTGlicmFy
aWVzKGNvbnN0IE5TOjpBcnJheSogdmVydGV4UHJlbG9hZGVkTGlicmFyaWVzKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhQ
cmVsb2FkZWRMaWJyYXJpZXNfKSwgdmVydGV4UHJlbG9hZGVkTGlicmFyaWVzKTsKK30KKworLy8g
cHJvcGVydHk6IGZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzCitfTVRMX0lOTElORSBOUzo6QXJy
YXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpmcmFnbWVudFByZWxvYWRlZExpYnJh
cmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcykpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRG
cmFnbWVudFByZWxvYWRlZExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIGZyYWdtZW50UHJlbG9h
ZGVkTGlicmFyaWVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFByZWxvYWRlZExpYnJhcmllc18pLCBmcmFnbWVudFBy
ZWxvYWRlZExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhMaW5rZWRGdW5jdGlv
bnMKK19NVExfSU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6dmVydGV4TGlua2VkRnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpbmtlZEZ1bmN0aW9ucyo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodmVydGV4TGlua2VkRnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFZlcnRleExpbmtlZEZ1bmN0aW9ucyhj
b25zdCBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogdmVydGV4TGlua2VkRnVuY3Rpb25zKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0
ZXhMaW5rZWRGdW5jdGlvbnNfKSwgdmVydGV4TGlua2VkRnVuY3Rpb25zKTsKK30KKworLy8gcHJv
cGVydHk6IGZyYWdtZW50TGlua2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1
bmN0aW9ucyogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmZyYWdtZW50TGlua2VkRnVu
Y3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Okxp
bmtlZEZ1bmN0aW9ucyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnJhZ21lbnRMaW5rZWRGdW5j
dGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6c2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMoY29uc3QgTVRMOjpMaW5rZWRGdW5jdGlv
bnMqIGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudExpbmtlZEZ1bmN0aW9uc18p
LCBmcmFnbWVudExpbmtlZEZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0QWRk
aW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFN1cHBv
cnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRkaW5nVmVydGV4Qmlu
YXJ5RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zXyksIHN1
cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogc3Vw
cG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zCitfTVRMX0lOTElORSBib29sIE1UTDo6
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5j
dGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0
aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjpzZXRTdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0
QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN1cHBvcnRBZGRpbmdGcmFnbWVudEJp
bmFyeUZ1bmN0aW9uc18pLCBzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMpOwor
fQorCisvLyBwcm9wZXJ0eTogbWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bWF4VmVydGV4Q2FsbFN0
YWNrRGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpz
ZXRNYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4VmVydGV4Q2FsbFN0YWNr
RGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldE1heFZlcnRleENhbGxTdGFja0RlcHRoXyksIG1heFZlcnRleENhbGxTdGFja0Rl
cHRoKTsKK30KKworLy8gcHJvcGVydHk6IG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgKK19NVExf
SU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bWF4RnJh
Z21lbnRDYWxsU3RhY2tEZXB0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heEZyYWdtZW50Q2Fs
bFN0YWNrRGVwdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6c2V0TWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4
RnJhZ21lbnRDYWxsU3RhY2tEZXB0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aF8pLCBt
YXhGcmFnbWVudENhbGxTdGFja0RlcHRoKTsKK30KKworLy8gbWV0aG9kOiByZXNldAorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmVzZXQoKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldCkp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQ
aXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNE
ZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6
UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJl
bmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yKiBNVEw6
OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I+
KCk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zCitf
TVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlw
dG9yOjp2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6c2V0VmVydGV4QWRkaXRp
b25hbEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIHZlcnRleEFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfKSwgdmVydGV4
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudEFk
ZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5k
ZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I6OmZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1
bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5j
dGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rp
b25zRGVzY3JpcHRvcjo6c2V0RnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0
IE5TOjpBcnJheSogZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVu
dEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfKSwgZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVu
Y3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25z
CitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNj
cmlwdG9yOjp0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yOjpzZXRUaWxlQWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIHRpbGVBZGRpdGlvbmFsQmluYXJ5RnVu
Y3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRUaWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uc18pLCB0aWxlQWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUg
TlM6OlN0cmluZyogTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpsYWJlbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUg
TVRMOjpEZXZpY2UqIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6ZGV2aWNlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUb3RhbFRocmVhZHNQ
ZXJUaHJlYWRncm91cAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxp
bmVTdGF0ZTo6bWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCkpOworfQorCisvLyBwcm9wZXJ0eTog
dGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVu
ZGVyUGlwZWxpbmVTdGF0ZTo6dGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSkpOworfQorCisvLyBwcm9wZXJ0
eTogaW1hZ2VibG9ja1NhbXBsZUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
UmVuZGVyUGlwZWxpbmVTdGF0ZTo6aW1hZ2VibG9ja1NhbXBsZUxlbmd0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGltYWdlYmxvY2tTYW1wbGVMZW5ndGgpKTsKK30KKworLy8gbWV0aG9kOiBpbWFn
ZWJsb2NrTWVtb3J5TGVuZ3RoRm9yRGltZW5zaW9uczoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OmltYWdlYmxvY2tNZW1vcnlMZW5ndGgoTVRMOjpT
aXplIGltYWdlYmxvY2tEaW1lbnNpb25zKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbWFnZWJsb2NrTWVtb3J5
TGVuZ3RoRm9yRGltZW5zaW9uc18pLCBpbWFnZWJsb2NrRGltZW5zaW9ucyk7Cit9CisKKy8vIHBy
b3BlcnR5OiBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycworX01UTF9JTkxJTkUgYm9vbCBN
VEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OnN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycykpOworfQorCisv
LyBtZXRob2Q6IGZ1bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uOnN0YWdlOgorX01UTF9JTkxJTkUg
TVRMOjpGdW5jdGlvbkhhbmRsZSogTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpmdW5jdGlvbkhh
bmRsZShjb25zdCBNVEw6OkZ1bmN0aW9uKiBmdW5jdGlvbiwgTVRMOjpSZW5kZXJTdGFnZXMgc3Rh
Z2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbkhhbmRs
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb25fc3Rh
Z2VfKSwgZnVuY3Rpb24sIHN0YWdlKTsKK30KKworLy8gbWV0aG9kOiBuZXdWaXNpYmxlRnVuY3Rp
b25UYWJsZVdpdGhEZXNjcmlwdG9yOnN0YWdlOgorX01UTF9JTkxJTkUgTVRMOjpWaXNpYmxlRnVu
Y3Rpb25UYWJsZSogTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpuZXdWaXNpYmxlRnVuY3Rpb25U
YWJsZShjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVzY3JpcHRv
ciwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcl9zdGFnZV8pLCBkZXNjcmlwdG9y
LCBzdGFnZSk7Cit9CisKKy8vIG1ldGhvZDogbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZVdp
dGhEZXNjcmlwdG9yOnN0YWdlOgorX01UTF9JTkxJTkUgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlKiBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6Om5ld0ludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGUoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVz
Y3JpcHRvciwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3Jfc3Rh
Z2VfKSwgZGVzY3JpcHRvciwgc3RhZ2UpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVs
aW5lU3RhdGVXaXRoQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uczplcnJvcjoKK19NVExfSU5MSU5F
IE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNj
cmlwdG9yKiBhZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoQWRkaXRp
b25hbEJpbmFyeUZ1bmN0aW9uc19lcnJvcl8pLCBhZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLCBl
cnJvcik7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lO
TElORSBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBN
VEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5k
ZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vi
c2NyaXB0XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0
SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVn
ZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFj
aG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlRpbGVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVGlsZVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlRpbGVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiBwaXhlbEZvcm1hdAorX01UTF9JTkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBNVEw6OlRpbGVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnBpeGVsRm9ybWF0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHBpeGVsRm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRQaXhl
bEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRQaXhlbEZvcm1hdF8pLCBw
aXhlbEZvcm1hdCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBN
VEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRM
OjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMVGls
ZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8v
IG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lO
TElORSBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1U
TDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpvYmpl
Y3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBh
dHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJz
Y3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIg
YXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1l
bnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIE1UTDo6VGlsZVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojph
bGxvYzxNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMo
TVRMVGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogTVRMOjpUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6aW5pdDxNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNl
dExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisK
Ky8vIHByb3BlcnR5OiB0aWxlRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb24qIE1U
TDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGlsZUZ1bmN0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh0aWxlRnVuY3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFRpbGVGdW5jdGlvbihjb25zdCBNVEw6
OkZ1bmN0aW9uKiB0aWxlRnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVGdW5jdGlvbl8pLCB0aWxlRnVuY3Rpb24p
OworfQorCisvLyBwcm9wZXJ0eTogcmFzdGVyU2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnJhc3RlclNhbXBsZUNv
dW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmFzdGVyU2FtcGxlQ291bnQpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFJhc3Rl
clNhbXBsZUNvdW50KE5TOjpVSW50ZWdlciByYXN0ZXJTYW1wbGVDb3VudCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmFzdGVyU2Ft
cGxlQ291bnRfKSwgcmFzdGVyU2FtcGxlQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogY29sb3JB
dHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6
Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbG9yQXR0YWNobWVudHMpKTsKK30KKworLy8gcHJv
cGVydHk6IHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZQorX01UTF9JTkxJTkUgYm9vbCBN
VEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRocmVhZGdyb3VwU2l6ZU1hdGNoZXNU
aWxlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OnNldFRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZShib29sIHRocmVhZGdyb3VwU2l6ZU1h
dGNoZXNUaWxlU2l6ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0VGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplXyksIHRocmVh
ZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0aWxlQnVmZmVy
cworX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogTVRMOjpU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0aWxlQnVmZmVycygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JB
cnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUJ1ZmZlcnMpKTsKK30KKworLy8gcHJv
cGVydHk6IG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhUb3RhbFRocmVhZHNQ
ZXJUaHJlYWRncm91cCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cChOUzo6VUludGVn
ZXIgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwXyksIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKTsKK30KKworLy8gcHJv
cGVydHk6IGJpbmFyeUFyY2hpdmVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6VGlsZVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6YmluYXJ5QXJjaGl2ZXMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYmluYXJ5QXJjaGl2ZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEJpbmFyeUFyY2hpdmVzKGNvbnN0IE5TOjpBcnJheSog
YmluYXJ5QXJjaGl2ZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEJpbmFyeUFyY2hpdmVzXyksIGJpbmFyeUFyY2hpdmVzKTsKK30K
KworLy8gcHJvcGVydHk6IHByZWxvYWRlZExpYnJhcmllcworX01UTF9JTkxJTkUgTlM6OkFycmF5
KiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnByZWxvYWRlZExpYnJhcmllcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChwcmVsb2FkZWRMaWJyYXJpZXMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFByZWxvYWRlZExp
YnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIHByZWxvYWRlZExpYnJhcmllcykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UHJlbG9hZGVk
TGlicmFyaWVzXyksIHByZWxvYWRlZExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiBsaW5r
ZWRGdW5jdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6OlRpbGVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmxpbmtlZEZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaW5rZWRGdW5jdGlvbnMqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGxpbmtlZEZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TGlua2VkRnVuY3Rpb25zKGNv
bnN0IE1UTDo6TGlua2VkRnVuY3Rpb25zKiBsaW5rZWRGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExpbmtlZEZ1bmN0
aW9uc18pLCBsaW5rZWRGdW5jdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydEFkZGlu
Z0JpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUgYm9vbCBNVEw6OlRpbGVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OnN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFN1cHBvcnRBZGRpbmdCaW5h
cnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdXBwb3J0
QWRkaW5nQmluYXJ5RnVuY3Rpb25zXyksIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMpOwor
fQorCisvLyBwcm9wZXJ0eTogbWF4Q2FsbFN0YWNrRGVwdGgKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6Om1heENhbGxTdGFja0RlcHRo
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4Q2FsbFN0YWNrRGVwdGgpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldE1heENhbGxT
dGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhDYWxsU3RhY2tEZXB0aCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4Q2FsbFN0YWNr
RGVwdGhfKSwgbWF4Q2FsbFN0YWNrRGVwdGgpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmVzZXQoKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChy
ZXNldCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFJlc291cmNlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExSZXNvdXJjZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNlMjY4YjE3OTQ4MjllMWE1MDE2ZjYzZDFk
YmQ0OTlhYzA1ZTlkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZS5ocHAKQEAgLTAsMCArMSwxNzggQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFJl
c291cmNlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRn
ZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3Bh
Y2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQdXJnZWFibGVTdGF0ZSkgeworICAg
IFB1cmdlYWJsZVN0YXRlS2VlcEN1cnJlbnQgPSAxLAorICAgIFB1cmdlYWJsZVN0YXRlTm9uVm9s
YXRpbGUgPSAyLAorICAgIFB1cmdlYWJsZVN0YXRlVm9sYXRpbGUgPSAzLAorICAgIFB1cmdlYWJs
ZVN0YXRlRW1wdHkgPSA0LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ1BVQ2FjaGVN
b2RlKSB7CisgICAgQ1BVQ2FjaGVNb2RlRGVmYXVsdENhY2hlID0gMCwKKyAgICBDUFVDYWNoZU1v
ZGVXcml0ZUNvbWJpbmVkID0gMSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFN0b3Jh
Z2VNb2RlKSB7CisgICAgU3RvcmFnZU1vZGVTaGFyZWQgPSAwLAorICAgIFN0b3JhZ2VNb2RlTWFu
YWdlZCA9IDEsCisgICAgU3RvcmFnZU1vZGVQcml2YXRlID0gMiwKKyAgICBTdG9yYWdlTW9kZU1l
bW9yeWxlc3MgPSAzLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgSGF6YXJkVHJhY2tp
bmdNb2RlKSB7CisgICAgSGF6YXJkVHJhY2tpbmdNb2RlRGVmYXVsdCA9IDAsCisgICAgSGF6YXJk
VHJhY2tpbmdNb2RlVW50cmFja2VkID0gMSwKKyAgICBIYXphcmRUcmFja2luZ01vZGVUcmFja2Vk
ID0gMiwKK307CisKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIFJlc291cmNlT3B0aW9ucykg
eworICAgIFJlc291cmNlU3RvcmFnZU1vZGVTaGFyZWQgPSAwLAorICAgIFJlc291cmNlSGF6YXJk
VHJhY2tpbmdNb2RlRGVmYXVsdCA9IDAsCisgICAgUmVzb3VyY2VDUFVDYWNoZU1vZGVEZWZhdWx0
Q2FjaGUgPSAwLAorICAgIFJlc291cmNlT3B0aW9uQ1BVQ2FjaGVNb2RlRGVmYXVsdCA9IDAsCisg
ICAgUmVzb3VyY2VDUFVDYWNoZU1vZGVXcml0ZUNvbWJpbmVkID0gMSwKKyAgICBSZXNvdXJjZU9w
dGlvbkNQVUNhY2hlTW9kZVdyaXRlQ29tYmluZWQgPSAxLAorICAgIFJlc291cmNlU3RvcmFnZU1v
ZGVNYW5hZ2VkID0gMTYsCisgICAgUmVzb3VyY2VTdG9yYWdlTW9kZVByaXZhdGUgPSAzMiwKKyAg
ICBSZXNvdXJjZVN0b3JhZ2VNb2RlTWVtb3J5bGVzcyA9IDQ4LAorICAgIFJlc291cmNlSGF6YXJk
VHJhY2tpbmdNb2RlVW50cmFja2VkID0gMjU2LAorICAgIFJlc291cmNlSGF6YXJkVHJhY2tpbmdN
b2RlVHJhY2tlZCA9IDUxMiwKK307CisKK2NsYXNzIFJlc291cmNlIDogcHVibGljIE5TOjpSZWZl
cmVuY2luZzxSZXNvdXJjZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAg
ICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNv
bnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERldmljZSogICAgICAgICAgIGRl
dmljZSgpIGNvbnN0OworCisgICAgTVRMOjpDUFVDYWNoZU1vZGUgICAgICAgY3B1Q2FjaGVNb2Rl
KCkgY29uc3Q7CisKKyAgICBNVEw6OlN0b3JhZ2VNb2RlICAgICAgICBzdG9yYWdlTW9kZSgpIGNv
bnN0OworCisgICAgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgaGF6YXJkVHJhY2tpbmdNb2RlKCkg
Y29uc3Q7CisKKyAgICBNVEw6OlJlc291cmNlT3B0aW9ucyAgICByZXNvdXJjZU9wdGlvbnMoKSBj
b25zdDsKKworICAgIE1UTDo6UHVyZ2VhYmxlU3RhdGUgICAgIHNldFB1cmdlYWJsZVN0YXRlKE1U
TDo6UHVyZ2VhYmxlU3RhdGUgc3RhdGUpOworCisgICAgY2xhc3MgSGVhcCogICAgICAgICAgICAg
aGVhcCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgaGVhcE9mZnNldCgp
IGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgYWxsb2NhdGVkU2l6ZSgpIGNv
bnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgbWFrZUFsaWFzYWJsZSgpOworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgaXNBbGlhc2FibGUoKTsKK307CisKK30KKworLy8g
cHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlJlc291cmNlOjps
YWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmlu
Zyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlc291cmNlOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFi
ZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6
OkRldmljZSogTVRMOjpSZXNvdXJjZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2
aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjcHVDYWNoZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6
Q1BVQ2FjaGVNb2RlIE1UTDo6UmVzb3VyY2U6OmNwdUNhY2hlTW9kZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDUFVDYWNoZU1vZGU+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoY3B1Q2FjaGVNb2RlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdG9yYWdlTW9k
ZQorX01UTF9JTkxJTkUgTVRMOjpTdG9yYWdlTW9kZSBNVEw6OlJlc291cmNlOjpzdG9yYWdlTW9k
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdG9yYWdl
TW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdG9yYWdlTW9kZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogaGF6YXJkVHJhY2tpbmdNb2RlCitfTVRMX0lOTElORSBNVEw6OkhhemFyZFRyYWNraW5n
TW9kZSBNVEw6OlJlc291cmNlOjpoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGhhemFyZFRyYWNraW5nTW9kZSkpOworfQorCisvLyBwcm9wZXJ0eTog
cmVzb3VyY2VPcHRpb25zCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlT3B0aW9ucyBNVEw6OlJl
c291cmNlOjpyZXNvdXJjZU9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VPcHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJl
c291cmNlT3B0aW9ucykpOworfQorCisvLyBtZXRob2Q6IHNldFB1cmdlYWJsZVN0YXRlOgorX01U
TF9JTkxJTkUgTVRMOjpQdXJnZWFibGVTdGF0ZSBNVEw6OlJlc291cmNlOjpzZXRQdXJnZWFibGVT
dGF0ZShNVEw6OlB1cmdlYWJsZVN0YXRlIHN0YXRlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UHVyZ2VhYmxlU3RhdGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
UHVyZ2VhYmxlU3RhdGVfKSwgc3RhdGUpOworfQorCisvLyBwcm9wZXJ0eTogaGVhcAorX01UTF9J
TkxJTkUgTVRMOjpIZWFwKiBNVEw6OlJlc291cmNlOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkhlYXAqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGhlYXApKTsKK30KKworLy8gcHJvcGVydHk6IGhlYXBPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlJlc291cmNlOjpoZWFwT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
aGVhcE9mZnNldCkpOworfQorCisvLyBwcm9wZXJ0eTogYWxsb2NhdGVkU2l6ZQorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVzb3VyY2U6OmFsbG9jYXRlZFNpemUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChhbGxvY2F0ZWRTaXplKSk7Cit9CisKKy8vIG1ldGhvZDogbWFrZUFsaWFzYWJs
ZQorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlOjptYWtlQWxpYXNhYmxlKCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWFrZUFs
aWFzYWJsZSkpOworfQorCisvLyBtZXRob2Q6IGlzQWxpYXNhYmxlCitfTVRMX0lOTElORSBib29s
IE1UTDo6UmVzb3VyY2U6OmlzQWxpYXNhYmxlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzQWxpYXNhYmxlKSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3Vy
Y2VTdGF0ZUNvbW1hbmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2
ODNhYzFmOGIxNmJkNWU1YjFiYTNiN2JlMjJlZjc3OTRmNDliOTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZUNv
bW1hbmRFbmNvZGVyLmhwcApAQCAtMCwwICsxLDk0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExSZXNvdXJjZVN0YXRlQ29t
bWFuZEVuY29kZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisv
LworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVy
QnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExDb21tYW5kRW5jb2Rlci5ocHAi
CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFNwYXJzZVRleHR1
cmVNYXBwaW5nTW9kZSkgeworICAgIFNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZU1hcCA9IDAsCisg
ICAgU3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlVW5tYXAgPSAxLAorfTsKKworc3RydWN0IE1hcElu
ZGlyZWN0QXJndW1lbnRzCit7CisgICAgdWludDMyX3QgcmVnaW9uT3JpZ2luWDsKKyAgICB1aW50
MzJfdCByZWdpb25PcmlnaW5ZOworICAgIHVpbnQzMl90IHJlZ2lvbk9yaWdpblo7CisgICAgdWlu
dDMyX3QgcmVnaW9uU2l6ZVdpZHRoOworICAgIHVpbnQzMl90IHJlZ2lvblNpemVIZWlnaHQ7Cisg
ICAgdWludDMyX3QgcmVnaW9uU2l6ZURlcHRoOworICAgIHVpbnQzMl90IG1pcE1hcExldmVsOwor
ICAgIHVpbnQzMl90IHNsaWNlSWQ7Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBSZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlc291cmNlU3RhdGVD
b21tYW5kRW5jb2RlciwgQ29tbWFuZEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgdm9pZCB1cGRh
dGVUZXh0dXJlTWFwcGluZ3MoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgTVRM
OjpTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUgbW9kZSwgY29uc3QgTVRMOjpSZWdpb24qIHJlZ2lv
bnMsIGNvbnN0IE5TOjpVSW50ZWdlciogbWlwTGV2ZWxzLCBjb25zdCBOUzo6VUludGVnZXIqIHNs
aWNlcywgTlM6OlVJbnRlZ2VyIG51bVJlZ2lvbnMpOworCisgICAgdm9pZCB1cGRhdGVUZXh0dXJl
TWFwcGluZyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBNVEw6OlNwYXJzZVRl
eHR1cmVNYXBwaW5nTW9kZSBtb2RlLCBjb25zdCBNVEw6OlJlZ2lvbiByZWdpb24sIGNvbnN0IE5T
OjpVSW50ZWdlciBtaXBMZXZlbCwgY29uc3QgTlM6OlVJbnRlZ2VyIHNsaWNlKTsKKworICAgIHZv
aWQgdXBkYXRlVGV4dHVyZU1hcHBpbmcoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgY29u
c3QgTVRMOjpTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUgbW9kZSwgY29uc3QgY2xhc3MgQnVmZmVy
KiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKwor
ICAgIHZvaWQgdXBkYXRlRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKKworICAgIHZv
aWQgd2FpdEZvckZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBmZW5jZSk7Cit9OworCit9CisKKy8v
IG1ldGhvZDogdXBkYXRlVGV4dHVyZU1hcHBpbmdzOm1vZGU6cmVnaW9uczptaXBMZXZlbHM6c2xp
Y2VzOm51bVJlZ2lvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZUNvbW1h
bmRFbmNvZGVyOjp1cGRhdGVUZXh0dXJlTWFwcGluZ3MoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0
dXJlLCBjb25zdCBNVEw6OlNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZSBtb2RlLCBjb25zdCBNVEw6
OlJlZ2lvbiogcmVnaW9ucywgY29uc3QgTlM6OlVJbnRlZ2VyKiBtaXBMZXZlbHMsIGNvbnN0IE5T
OjpVSW50ZWdlciogc2xpY2VzLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlVGV4dHVy
ZU1hcHBpbmdzX21vZGVfcmVnaW9uc19taXBMZXZlbHNfc2xpY2VzX251bVJlZ2lvbnNfKSwgdGV4
dHVyZSwgbW9kZSwgcmVnaW9ucywgbWlwTGV2ZWxzLCBzbGljZXMsIG51bVJlZ2lvbnMpOworfQor
CisvLyBtZXRob2Q6IHVwZGF0ZVRleHR1cmVNYXBwaW5nOm1vZGU6cmVnaW9uOm1pcExldmVsOnNs
aWNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcjo6
dXBkYXRlVGV4dHVyZU1hcHBpbmcoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBN
VEw6OlNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZSBtb2RlLCBjb25zdCBNVEw6OlJlZ2lvbiByZWdp
b24sIGNvbnN0IE5TOjpVSW50ZWdlciBtaXBMZXZlbCwgY29uc3QgTlM6OlVJbnRlZ2VyIHNsaWNl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh1cGRhdGVUZXh0dXJlTWFwcGluZ19tb2RlX3JlZ2lvbl9taXBMZXZlbF9zbGljZV8pLCB0ZXh0
dXJlLCBtb2RlLCByZWdpb24sIG1pcExldmVsLCBzbGljZSk7Cit9CisKKy8vIG1ldGhvZDogdXBk
YXRlVGV4dHVyZU1hcHBpbmc6bW9kZTppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNl
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXI6OnVw
ZGF0ZVRleHR1cmVNYXBwaW5nKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgTVRM
OjpTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUgbW9kZSwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGly
ZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVwZGF0ZVRleHR1
cmVNYXBwaW5nX21vZGVfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgdGV4
dHVyZSwgbW9kZSwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKwor
Ly8gbWV0aG9kOiB1cGRhdGVGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXI6OnVwZGF0ZUZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1
cGRhdGVGZW5jZV8pLCBmZW5jZSk7Cit9CisKKy8vIG1ldGhvZDogd2FpdEZvckZlbmNlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcjo6d2FpdEZvckZl
bmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3YWl0Rm9yRmVuY2VfKSwgZmVuY2UpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291
cmNlU3RhdGVQYXNzLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExSZXNvdXJjZVN0YXRlUGFzcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM3NzBmNjQwMjEzMTdkMDI0OWNl
YWVlZjFiNWU2Y2I0NDhhY2FhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAKQEAgLTAsMCArMSwx
NjUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIE1ldGFsL01UTFJlc291cmNlU3RhdGVQYXNzLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIw
LTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgor
I2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAi
CisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1lc3BhY2UgTVRM
Cit7CitjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlc291cmNl
U3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAg
ICBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZUJ1ZmZlcigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTYW1wbGVCdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciog
c2FtcGxlQnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRl
Z2VyIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuZE9mRW5jb2RlclNhbXBsZUlu
ZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9OworCitjbGFzcyBS
ZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygp
OworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5T
OjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0
KGNvbnN0IGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworfTsKKwor
Y2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJl
c291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGFsbG9jKCk7
CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBSZXNvdXJjZVN0YXRlUGFz
c0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlw
dG9yKCk7CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXkqIHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3Q7Cit9Owor
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNl
U3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVzb3VyY2VT
dGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVzb3VyY2VTdGF0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I+KCk7
Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6Q291bnRl
clNhbXBsZUJ1ZmZlciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2FtcGxlQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJj
ZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTYW1wbGVCdWZm
ZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBs
ZUJ1ZmZlcl8pLCBzYW1wbGVCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRPZkVuY29k
ZXJTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVzb3VyY2VTdGF0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZkVuY29kZXJTYW1w
bGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6
OlVJbnRlZ2VyIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZFbmNvZGVyU2Ft
cGxlSW5kZXhfKSwgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5
OiBlbmRPZkVuY29kZXJTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZF
bmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmRPZkVuY29kZXJTYW1w
bGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5k
ZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRFbmRPZkVuY29kZXJT
YW1wbGVJbmRleF8pLCBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVzb3VyY2VTdGF0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1ldGhv
ZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3Jp
cHQ6CitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3IqIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlU3RhdGVQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5
OjpzZXRPYmplY3QoY29uc3QgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJ
bmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJl
c291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0
b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZXNvdXJj
ZVN0YXRlUGFzc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVzb3VyY2VTdGF0ZVBh
c3NEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpS
ZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlw
dG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlc291cmNl
U3RhdGVQYXNzRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogcmVzb3VyY2VT
dGF0ZVBhc3NEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVz
Y3JpcHRvciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3I6OnJlc291cmNlU3RhdGVQ
YXNzRGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpS
ZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlc291cmNl
U3RhdGVQYXNzRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwocmVzb3VyY2VTdGF0ZVBhc3NE
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXJBdHRhY2htZW50cwor
X01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yOjpzYW1wbGVC
dWZmZXJBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
U2FtcGxlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMU2Ft
cGxlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTBlNzkxNTJlMTVhODdhNGVhMjllMGNlNjllMmI0NmM5MDA0
NTIzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExTYW1wbGVyLmhwcApAQCAtMCwwICsxLDMxMCBAQAorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMU2FtcGxlci5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2lu
Y2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
LmhwcD4KKworI2luY2x1ZGUgIk1UTERlcHRoU3RlbmNpbC5ocHAiCisjaW5jbHVkZSAiTVRMU2Ft
cGxlci5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFNh
bXBsZXJNaW5NYWdGaWx0ZXIpIHsKKyAgICBTYW1wbGVyTWluTWFnRmlsdGVyTmVhcmVzdCA9IDAs
CisgICAgU2FtcGxlck1pbk1hZ0ZpbHRlckxpbmVhciA9IDEsCit9OworCitfTVRMX0VOVU0oTlM6
OlVJbnRlZ2VyLCBTYW1wbGVyTWlwRmlsdGVyKSB7CisgICAgU2FtcGxlck1pcEZpbHRlck5vdE1p
cG1hcHBlZCA9IDAsCisgICAgU2FtcGxlck1pcEZpbHRlck5lYXJlc3QgPSAxLAorICAgIFNhbXBs
ZXJNaXBGaWx0ZXJMaW5lYXIgPSAyLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU2Ft
cGxlckFkZHJlc3NNb2RlKSB7CisgICAgU2FtcGxlckFkZHJlc3NNb2RlQ2xhbXBUb0VkZ2UgPSAw
LAorICAgIFNhbXBsZXJBZGRyZXNzTW9kZU1pcnJvckNsYW1wVG9FZGdlID0gMSwKKyAgICBTYW1w
bGVyQWRkcmVzc01vZGVSZXBlYXQgPSAyLAorICAgIFNhbXBsZXJBZGRyZXNzTW9kZU1pcnJvclJl
cGVhdCA9IDMsCisgICAgU2FtcGxlckFkZHJlc3NNb2RlQ2xhbXBUb1plcm8gPSA0LAorICAgIFNh
bXBsZXJBZGRyZXNzTW9kZUNsYW1wVG9Cb3JkZXJDb2xvciA9IDUsCit9OworCitfTVRMX0VOVU0o
TlM6OlVJbnRlZ2VyLCBTYW1wbGVyQm9yZGVyQ29sb3IpIHsKKyAgICBTYW1wbGVyQm9yZGVyQ29s
b3JUcmFuc3BhcmVudEJsYWNrID0gMCwKKyAgICBTYW1wbGVyQm9yZGVyQ29sb3JPcGFxdWVCbGFj
ayA9IDEsCisgICAgU2FtcGxlckJvcmRlckNvbG9yT3BhcXVlV2hpdGUgPSAyLAorfTsKKworY2xh
c3MgU2FtcGxlckRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8U2FtcGxlckRlc2NyaXB0
b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFNhbXBsZXJEZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgU2FtcGxlckRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAg
ICBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgICAgICAgIG1pbkZpbHRlcigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWluRmlsdGVyKE1UTDo6U2FtcGxl
ck1pbk1hZ0ZpbHRlciBtaW5GaWx0ZXIpOworCisgICAgTVRMOjpTYW1wbGVyTWluTWFnRmlsdGVy
ICAgICAgICBtYWdGaWx0ZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldE1hZ0ZpbHRlcihNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgbWFnRmlsdGVyKTsK
KworICAgIE1UTDo6U2FtcGxlck1pcEZpbHRlciAgICAgICAgICAgbWlwRmlsdGVyKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNaXBGaWx0ZXIoTVRMOjpT
YW1wbGVyTWlwRmlsdGVyIG1pcEZpbHRlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgIG1heEFuaXNvdHJvcHkoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1heEFuaXNvdHJvcHkoTlM6OlVJbnRlZ2VyIG1heEFuaXNvdHJvcHkp
OworCisgICAgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgICAgICAgICBzQWRkcmVzc01vZGUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNBZGRyZXNzTW9k
ZShNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZSBzQWRkcmVzc01vZGUpOworCisgICAgTVRMOjpTYW1w
bGVyQWRkcmVzc01vZGUgICAgICAgICB0QWRkcmVzc01vZGUoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRBZGRyZXNzTW9kZShNVEw6OlNhbXBsZXJBZGRy
ZXNzTW9kZSB0QWRkcmVzc01vZGUpOworCisgICAgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgICAg
ICAgICByQWRkcmVzc01vZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFJBZGRyZXNzTW9kZShNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZSByQWRkcmVzc01v
ZGUpOworCisgICAgTVRMOjpTYW1wbGVyQm9yZGVyQ29sb3IgICAgICAgICBib3JkZXJDb2xvcigp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm9yZGVyQ29s
b3IoTVRMOjpTYW1wbGVyQm9yZGVyQ29sb3IgYm9yZGVyQ29sb3IpOworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkQ29vcmRpbmF0ZXMoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE5vcm1hbGl6ZWRDb29yZGluYXRl
cyhib29sIG5vcm1hbGl6ZWRDb29yZGluYXRlcyk7CisKKyAgICBmbG9hdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZE1pbkNsYW1wKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRMb2RNaW5DbGFtcChmbG9hdCBsb2RNaW5DbGFtcCk7CisKKyAgICBm
bG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZE1heENsYW1wKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2RNYXhDbGFtcChmbG9hdCBsb2RN
YXhDbGFtcCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZEF2ZXJh
Z2UoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExvZEF2
ZXJhZ2UoYm9vbCBsb2RBdmVyYWdlKTsKKworICAgIE1UTDo6Q29tcGFyZUZ1bmN0aW9uICAgICAg
ICAgICAgY29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRDb21wYXJlRnVuY3Rpb24oTVRMOjpDb21wYXJlRnVuY3Rpb24gY29tcGFy
ZUZ1bmN0aW9uKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9y
dEFyZ3VtZW50QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3VwcG9ydEFyZ3VtZW50QnVmZmVycyhib29sIHN1cHBvcnRBcmd1bWVudEJ1ZmZl
cnMpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6
OlN0cmluZyogbGFiZWwpOworfTsKKworY2xhc3MgU2FtcGxlclN0YXRlIDogcHVibGljIE5TOjpS
ZWZlcmVuY2luZzxTYW1wbGVyU3RhdGU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICBs
YWJlbCgpIGNvbnN0OworCisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBjb25zdDsKK307CisK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlckRl
c2NyaXB0b3IqIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTYW1wbGVyRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NM
UyhNVExTYW1wbGVyRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6U2FtcGxlckRlc2NyaXB0b3IqIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmluaXQo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U2FtcGxlckRlc2NyaXB0b3I+
KCk7Cit9CisKKy8vIHByb3BlcnR5OiBtaW5GaWx0ZXIKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxl
ck1pbk1hZ0ZpbHRlciBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjptaW5GaWx0ZXIoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtaW5GaWx0ZXIpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRNaW5GaWx0ZXIoTVRMOjpTYW1wbGVyTWlu
TWFnRmlsdGVyIG1pbkZpbHRlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWluRmlsdGVyXyksIG1pbkZpbHRlcik7Cit9CisKKy8v
IHByb3BlcnR5OiBtYWdGaWx0ZXIKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRl
ciBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjptYWdGaWx0ZXIoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChtYWdGaWx0ZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNh
bXBsZXJEZXNjcmlwdG9yOjpzZXRNYWdGaWx0ZXIoTVRMOjpTYW1wbGVyTWluTWFnRmlsdGVyIG1h
Z0ZpbHRlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0TWFnRmlsdGVyXyksIG1hZ0ZpbHRlcik7Cit9CisKKy8vIHByb3BlcnR5OiBt
aXBGaWx0ZXIKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlck1pcEZpbHRlciBNVEw6OlNhbXBsZXJE
ZXNjcmlwdG9yOjptaXBGaWx0ZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6U2FtcGxlck1pcEZpbHRlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtaXBG
aWx0ZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpz
ZXRNaXBGaWx0ZXIoTVRMOjpTYW1wbGVyTWlwRmlsdGVyIG1pcEZpbHRlcikKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWlwRmlsdGVy
XyksIG1pcEZpbHRlcik7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhBbmlzb3Ryb3B5CitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bWF4QW5pc290cm9weSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heEFuaXNvdHJvcHkpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRNYXhBbmlzb3Ryb3B5KE5TOjpVSW50ZWdl
ciBtYXhBbmlzb3Ryb3B5KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRNYXhBbmlzb3Ryb3B5XyksIG1heEFuaXNvdHJvcHkpOworfQor
CisvLyBwcm9wZXJ0eTogc0FkZHJlc3NNb2RlCitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJBZGRy
ZXNzTW9kZSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzQWRkcmVzc01vZGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNBZGRyZXNzTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldFNBZGRyZXNzTW9kZShNVEw6OlNhbXBsZXJB
ZGRyZXNzTW9kZSBzQWRkcmVzc01vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNBZGRyZXNzTW9kZV8pLCBzQWRkcmVzc01vZGUp
OworfQorCisvLyBwcm9wZXJ0eTogdEFkZHJlc3NNb2RlCitfTVRMX0lOTElORSBNVEw6OlNhbXBs
ZXJBZGRyZXNzTW9kZSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjp0QWRkcmVzc01vZGUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2FtcGxlckFkZHJlc3NN
b2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRBZGRyZXNzTW9kZSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldFRBZGRyZXNzTW9kZShNVEw6OlNh
bXBsZXJBZGRyZXNzTW9kZSB0QWRkcmVzc01vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRBZGRyZXNzTW9kZV8pLCB0QWRkcmVz
c01vZGUpOworfQorCisvLyBwcm9wZXJ0eTogckFkZHJlc3NNb2RlCitfTVRMX0lOTElORSBNVEw6
OlNhbXBsZXJBZGRyZXNzTW9kZSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpyQWRkcmVzc01vZGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2FtcGxlckFk
ZHJlc3NNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJBZGRyZXNzTW9kZSkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldFJBZGRyZXNzTW9kZShN
VEw6OlNhbXBsZXJBZGRyZXNzTW9kZSByQWRkcmVzc01vZGUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJBZGRyZXNzTW9kZV8pLCBy
QWRkcmVzc01vZGUpOworfQorCisvLyBwcm9wZXJ0eTogYm9yZGVyQ29sb3IKK19NVExfSU5MSU5F
IE1UTDo6U2FtcGxlckJvcmRlckNvbG9yIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmJvcmRlckNv
bG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNhbXBs
ZXJCb3JkZXJDb2xvcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChib3JkZXJDb2xvcikpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldEJvcmRlckNvbG9y
KE1UTDo6U2FtcGxlckJvcmRlckNvbG9yIGJvcmRlckNvbG9yKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3JkZXJDb2xvcl8pLCBi
b3JkZXJDb2xvcik7Cit9CisKKy8vIHByb3BlcnR5OiBub3JtYWxpemVkQ29vcmRpbmF0ZXMKK19N
VExfSU5MSU5FIGJvb2wgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bm9ybWFsaXplZENvb3JkaW5h
dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5vcm1hbGl6ZWRDb29yZGluYXRlcykpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldE5vcm1hbGl6ZWRDb29yZGluYXRl
cyhib29sIG5vcm1hbGl6ZWRDb29yZGluYXRlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Tm9ybWFsaXplZENvb3JkaW5hdGVzXyks
IG5vcm1hbGl6ZWRDb29yZGluYXRlcyk7Cit9CisKKy8vIHByb3BlcnR5OiBsb2RNaW5DbGFtcAor
X01UTF9JTkxJTkUgZmxvYXQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bG9kTWluQ2xhbXAoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGZsb2F0Pih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGxvZE1pbkNsYW1wKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpT
YW1wbGVyRGVzY3JpcHRvcjo6c2V0TG9kTWluQ2xhbXAoZmxvYXQgbG9kTWluQ2xhbXApCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExv
ZE1pbkNsYW1wXyksIGxvZE1pbkNsYW1wKTsKK30KKworLy8gcHJvcGVydHk6IGxvZE1heENsYW1w
CitfTVRMX0lOTElORSBmbG9hdCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpsb2RNYXhDbGFtcCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobG9kTWF4Q2xhbXApKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRMb2RNYXhDbGFtcChmbG9hdCBsb2RNYXhDbGFtcCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
TG9kTWF4Q2xhbXBfKSwgbG9kTWF4Q2xhbXApOworfQorCisvLyBwcm9wZXJ0eTogbG9kQXZlcmFn
ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpsb2RBdmVyYWdlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGxvZEF2ZXJhZ2UpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNh
bXBsZXJEZXNjcmlwdG9yOjpzZXRMb2RBdmVyYWdlKGJvb2wgbG9kQXZlcmFnZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TG9kQXZl
cmFnZV8pLCBsb2RBdmVyYWdlKTsKK30KKworLy8gcHJvcGVydHk6IGNvbXBhcmVGdW5jdGlvbgor
X01UTF9JTkxJTkUgTVRMOjpDb21wYXJlRnVuY3Rpb24gTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6
Y29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkNvbXBhcmVGdW5jdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb21wYXJlRnVu
Y3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpz
ZXRDb21wYXJlRnVuY3Rpb24oTVRMOjpDb21wYXJlRnVuY3Rpb24gY29tcGFyZUZ1bmN0aW9uKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRDb21wYXJlRnVuY3Rpb25fKSwgY29tcGFyZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6
IHN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpTYW1wbGVyRGVz
Y3JpcHRvcjo6c3VwcG9ydEFyZ3VtZW50QnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9y
dEFyZ3VtZW50QnVmZmVycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRl
c2NyaXB0b3I6OnNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMoYm9vbCBzdXBwb3J0QXJndW1lbnRC
dWZmZXJzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzXyksIHN1cHBvcnRBcmd1bWVudEJ1ZmZl
cnMpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6U2FtcGxlckRlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldExhYmVs
KGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpTYW1wbGVyU3RhdGU6
OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTog
ZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpTYW1wbGVyU3RhdGU6OmRldmlj
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2Uq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlw
dG9yLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExTdGFnZUlu
cHV0T3V0cHV0RGVzY3JpcHRvci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc5MjQ0ZTI0ZTAyMTkzOTIzYTNj
NDE3M2QxNmQ5NTBjMWVlNDEyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAKQEAg
LTAsMCArMSwzODEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIE1ldGFsL01UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBw
PgorCisjaW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwIgorCituYW1l
c3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBBdHRyaWJ1dGVGb3JtYXQpIHsK
KyAgICBBdHRyaWJ1dGVGb3JtYXRJbnZhbGlkID0gMCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVQ2hh
cjIgPSAxLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyMyA9IDIsCisgICAgQXR0cmlidXRlRm9y
bWF0VUNoYXI0ID0gMywKKyAgICBBdHRyaWJ1dGVGb3JtYXRDaGFyMiA9IDQsCisgICAgQXR0cmli
dXRlRm9ybWF0Q2hhcjMgPSA1LAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXI0ID0gNiwKKyAgICBB
dHRyaWJ1dGVGb3JtYXRVQ2hhcjJOb3JtYWxpemVkID0gNywKKyAgICBBdHRyaWJ1dGVGb3JtYXRV
Q2hhcjNOb3JtYWxpemVkID0gOCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVQ2hhcjROb3JtYWxpemVk
ID0gOSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRDaGFyMk5vcm1hbGl6ZWQgPSAxMCwKKyAgICBBdHRy
aWJ1dGVGb3JtYXRDaGFyM05vcm1hbGl6ZWQgPSAxMSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRDaGFy
NE5vcm1hbGl6ZWQgPSAxMiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQyID0gMTMsCisgICAg
QXR0cmlidXRlRm9ybWF0VVNob3J0MyA9IDE0LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydDQg
PSAxNSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydDIgPSAxNiwKKyAgICBBdHRyaWJ1dGVGb3Jt
YXRTaG9ydDMgPSAxNywKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydDQgPSAxOCwKKyAgICBBdHRy
aWJ1dGVGb3JtYXRVU2hvcnQyTm9ybWFsaXplZCA9IDE5LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVT
aG9ydDNOb3JtYWxpemVkID0gMjAsCisgICAgQXR0cmlidXRlRm9ybWF0VVNob3J0NE5vcm1hbGl6
ZWQgPSAyMSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydDJOb3JtYWxpemVkID0gMjIsCisgICAg
QXR0cmlidXRlRm9ybWF0U2hvcnQzTm9ybWFsaXplZCA9IDIzLAorICAgIEF0dHJpYnV0ZUZvcm1h
dFNob3J0NE5vcm1hbGl6ZWQgPSAyNCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRIYWxmMiA9IDI1LAor
ICAgIEF0dHJpYnV0ZUZvcm1hdEhhbGYzID0gMjYsCisgICAgQXR0cmlidXRlRm9ybWF0SGFsZjQg
PSAyNywKKyAgICBBdHRyaWJ1dGVGb3JtYXRGbG9hdCA9IDI4LAorICAgIEF0dHJpYnV0ZUZvcm1h
dEZsb2F0MiA9IDI5LAorICAgIEF0dHJpYnV0ZUZvcm1hdEZsb2F0MyA9IDMwLAorICAgIEF0dHJp
YnV0ZUZvcm1hdEZsb2F0NCA9IDMxLAorICAgIEF0dHJpYnV0ZUZvcm1hdEludCA9IDMyLAorICAg
IEF0dHJpYnV0ZUZvcm1hdEludDIgPSAzMywKKyAgICBBdHRyaWJ1dGVGb3JtYXRJbnQzID0gMzQs
CisgICAgQXR0cmlidXRlRm9ybWF0SW50NCA9IDM1LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVJbnQg
PSAzNiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50MiA9IDM3LAorICAgIEF0dHJpYnV0ZUZvcm1h
dFVJbnQzID0gMzgsCisgICAgQXR0cmlidXRlRm9ybWF0VUludDQgPSAzOSwKKyAgICBBdHRyaWJ1
dGVGb3JtYXRJbnQxMDEwMTAyTm9ybWFsaXplZCA9IDQwLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVJ
bnQxMDEwMTAyTm9ybWFsaXplZCA9IDQxLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyNE5vcm1h
bGl6ZWRfQkdSQSA9IDQyLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyID0gNDUsCisgICAgQXR0
cmlidXRlRm9ybWF0Q2hhciA9IDQ2LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyTm9ybWFsaXpl
ZCA9IDQ3LAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXJOb3JtYWxpemVkID0gNDgsCisgICAgQXR0
cmlidXRlRm9ybWF0VVNob3J0ID0gNDksCisgICAgQXR0cmlidXRlRm9ybWF0U2hvcnQgPSA1MCwK
KyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnROb3JtYWxpemVkID0gNTEsCisgICAgQXR0cmlidXRl
Rm9ybWF0U2hvcnROb3JtYWxpemVkID0gNTIsCisgICAgQXR0cmlidXRlRm9ybWF0SGFsZiA9IDUz
LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgSW5kZXhUeXBlKSB7CisgICAgSW5kZXhU
eXBlVUludDE2ID0gMCwKKyAgICBJbmRleFR5cGVVSW50MzIgPSAxLAorfTsKKworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgU3RlcEZ1bmN0aW9uKSB7CisgICAgU3RlcEZ1bmN0aW9uQ29uc3RhbnQg
PSAwLAorICAgIFN0ZXBGdW5jdGlvblBlclZlcnRleCA9IDEsCisgICAgU3RlcEZ1bmN0aW9uUGVy
SW5zdGFuY2UgPSAyLAorICAgIFN0ZXBGdW5jdGlvblBlclBhdGNoID0gMywKKyAgICBTdGVwRnVu
Y3Rpb25QZXJQYXRjaENvbnRyb2xQb2ludCA9IDQsCisgICAgU3RlcEZ1bmN0aW9uVGhyZWFkUG9z
aXRpb25JbkdyaWRYID0gNSwKKyAgICBTdGVwRnVuY3Rpb25UaHJlYWRQb3NpdGlvbkluR3JpZFkg
PSA2LAorICAgIFN0ZXBGdW5jdGlvblRocmVhZFBvc2l0aW9uSW5HcmlkWEluZGV4ZWQgPSA3LAor
ICAgIFN0ZXBGdW5jdGlvblRocmVhZFBvc2l0aW9uSW5HcmlkWUluZGV4ZWQgPSA4LAorfTsKKwor
Y2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxCdWZmZXJM
YXlvdXREZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCdWZmZXJMYXlv
dXREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRv
ciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3RyaWRlKE5TOjpVSW50ZWdlciBzdHJpZGUpOworCisgICAgTVRMOjpTdGVwRnVu
Y3Rpb24gICAgICAgICAgICAgICAgICAgIHN0ZXBGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVwRnVuY3Rpb24oTVRMOjpTdGVw
RnVuY3Rpb24gc3RlcEZ1bmN0aW9uKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGVwUmF0ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRTdGVwUmF0ZShOUzo6VUludGVnZXIgc3RlcFJhdGUpOworfTsKKwor
Y2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIEJ1
ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIEJ1
ZmZlckxheW91dERlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgaW5k
ZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
T2JqZWN0KGNvbnN0IGNsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGJ1ZmZlckRlc2MsIE5T
OjpVSW50ZWdlciBpbmRleCk7Cit9OworCitjbGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9yIDogcHVi
bGljIE5TOjpDb3B5aW5nPEF0dHJpYnV0ZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBdHRy
aWJ1dGVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpBdHRyaWJ1dGVGb3Jt
YXQgICAgICAgICAgICAgIGZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRGb3JtYXQoTVRMOjpBdHRyaWJ1dGVGb3JtYXQgZm9ybWF0KTsKKwor
ICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2Zmc2V0KE5TOjpVSW50ZWdl
ciBvZmZzZXQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZl
ckluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEJ1ZmZlckluZGV4KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7Cit9OworCitjbGFzcyBBdHRy
aWJ1dGVEZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQXR0cmlidXRlRGVz
Y3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvckFy
cmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvciogICAg
ICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgQXR0cmlidXRl
RGVzY3JpcHRvciogYXR0cmlidXRlRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2Ns
YXNzIFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFN0YWdl
SW5wdXRPdXRwdXREZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTdGFn
ZUlucHV0T3V0cHV0RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFN0YWdlSW5wdXRP
dXRwdXREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIFN0YWdl
SW5wdXRPdXRwdXREZXNjcmlwdG9yKiBzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcigpOworCisg
ICAgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiAgICAgICBsYXlvdXRzKCkgY29u
c3Q7CisKKyAgICBjbGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqICAgICAgICAgIGF0dHJp
YnV0ZXMoKSBjb25zdDsKKworICAgIE1UTDo6SW5kZXhUeXBlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXhUeXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRJbmRleFR5cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKTsKKwor
ICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhCdWZmZXJJ
bmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0SW5kZXhCdWZmZXJJbmRleChOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJJbmRleCk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7Cit9
OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZl
ckxheW91dERlc2NyaXB0b3IqIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0
b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQnVmZmVyTGF5b3V0RGVzY3JpcHRvcikpOworfQorCisv
LyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvciog
TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBzdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkJ1ZmZlckxheW91dERl
c2NyaXB0b3I6OnN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0cmlkZSkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c2V0U3RyaWRlKE5T
OjpVSW50ZWdlciBzdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0cmlkZV8pLCBzdHJpZGUpOworfQorCisvLyBwcm9wZXJ0
eTogc3RlcEZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OlN0ZXBGdW5jdGlvbiBNVEw6OkJ1ZmZl
ckxheW91dERlc2NyaXB0b3I6OnN0ZXBGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdGVwRnVuY3Rpb24+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc3RlcEZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCdWZmZXJMYXlv
dXREZXNjcmlwdG9yOjpzZXRTdGVwRnVuY3Rpb24oTVRMOjpTdGVwRnVuY3Rpb24gc3RlcEZ1bmN0
aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRTdGVwRnVuY3Rpb25fKSwgc3RlcEZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6
IHN0ZXBSYXRlCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpCdWZmZXJMYXlvdXREZXNj
cmlwdG9yOjpzdGVwUmF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZXBSYXRlKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzZXRTdGVwUmF0
ZShOUzo6VUludGVnZXIgc3RlcFJhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0ZXBSYXRlXyksIHN0ZXBSYXRlKTsKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyTGF5b3V0RGVz
Y3JpcHRvckFycmF5KiBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkp
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlckxheW91dERl
c2NyaXB0b3JBcnJheSogTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk6OmluaXQoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRv
ckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19N
VExfSU5MSU5FIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogTVRMOjpCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgaW5kZXgpOworfQor
CisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRM
OjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBidWZmZXJEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYnVmZmVyRGVzYywgaW5kZXgpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNj
cmlwdG9yKiBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVf
Q0xTKE1UTEF0dHJpYnV0ZURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3IqIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRv
cjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBdHRyaWJ1dGVE
ZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogZm9ybWF0CitfTVRMX0lOTElORSBNVEw6
OkF0dHJpYnV0ZUZvcm1hdCBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OmZvcm1hdCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBdHRyaWJ1dGVGb3JtYXQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yOjpzZXRGb3JtYXQoTVRMOjpBdHRyaWJ1dGVGb3JtYXQg
Zm9ybWF0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRGb3JtYXRfKSwgZm9ybWF0KTsKK30KKworLy8gcHJvcGVydHk6IG9mZnNldAor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6b2Zmc2V0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2Zmc2V0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yOjpzZXRPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0T2Zmc2V0XyksIG9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJJbmRleAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6YnVmZmVySW5k
ZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXJJbmRleCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6c2V0QnVmZmVySW5kZXgoTlM6OlVJbnRl
Z2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJJbmRleF8pLCBidWZmZXJJbmRleCk7Cit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0
b3JBcnJheSogTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk+KF9N
VExfUFJJVkFURV9DTFMoTVRMQXR0cmlidXRlRGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIE1U
TDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0
aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0
ZURlc2NyaXB0b3IqIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJ
bnRlZ2VyIGluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXR0
cmlidXRlRGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVk
U3Vic2NyaXB0XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVk
U3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJh
eTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvciogYXR0cmlidXRlRGVz
YywgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGF0
dHJpYnV0ZURlc2MsIGluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExf
SU5MSU5FIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIE1UTDo6U3RhZ2VJbnB1dE91
dHB1dERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExTdGFn
ZUlucHV0T3V0cHV0RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIE1UTDo6U3RhZ2VJbnB1dE91dHB1
dERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHN0
YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlN0YWdlSW5wdXRPdXRw
dXREZXNjcmlwdG9yKiBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjpzdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMU3RhZ2VJ
bnB1dE91dHB1dERlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHN0YWdlSW5wdXRPdXRwdXRE
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYXlvdXRzCitfTVRMX0lOTElORSBNVEw6
OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3Jp
cHRvcjo6bGF5b3V0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxheW91dHMpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJpYnV0ZXMKK19NVExfSU5MSU5FIE1U
TDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlw
dG9yOjphdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
YXR0cmlidXRlcykpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhUeXBlCitfTVRMX0lOTElORSBN
VEw6OkluZGV4VHlwZSBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjppbmRleFR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW5kZXhUeXBl
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4VHlwZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OnNldEluZGV4VHlwZShNVEw6Oklu
ZGV4VHlwZSBpbmRleFR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGV4VHlwZV8pLCBpbmRleFR5cGUpOworfQorCisvLyBw
cm9wZXJ0eTogaW5kZXhCdWZmZXJJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OmluZGV4QnVmZmVySW5kZXgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChpbmRleEJ1ZmZlckluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6c2V0SW5kZXhCdWZmZXJJbmRleChOUzo6VUlu
dGVnZXIgaW5kZXhCdWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhCdWZmZXJJbmRleF8pLCBpbmRleEJ1ZmZl
ckluZGV4KTsKK30KKworLy8gbWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0
YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjpyZXNldCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVGV4dHVyZS5ocHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVGV4dHVyZS5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWEyYmE0OTBlN2FmODc1YzYyM2RmMTgwMDE4YzQwMTRjZTQwMDM5MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUZXh0dXJl
LmhwcApAQCAtMCwwICsxLDY1OCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMVGV4dHVyZS5ocHAKKy8vCisvLyBDb3B5cmln
aHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVz
LmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZh
dGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1
ZGUgIk1UTFBpeGVsRm9ybWF0LmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisjaW5j
bHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorI2luY2x1ZGUg
PElPU3VyZmFjZS9JT1N1cmZhY2VSZWYuaD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgVGV4dHVyZVR5cGUpIHsKKyAgICBUZXh0dXJlVHlwZTFEID0gMCwKKyAg
ICBUZXh0dXJlVHlwZTFEQXJyYXkgPSAxLAorICAgIFRleHR1cmVUeXBlMkQgPSAyLAorICAgIFRl
eHR1cmVUeXBlMkRBcnJheSA9IDMsCisgICAgVGV4dHVyZVR5cGUyRE11bHRpc2FtcGxlID0gNCwK
KyAgICBUZXh0dXJlVHlwZUN1YmUgPSA1LAorICAgIFRleHR1cmVUeXBlQ3ViZUFycmF5ID0gNiwK
KyAgICBUZXh0dXJlVHlwZTNEID0gNywKKyAgICBUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGVBcnJh
eSA9IDgsCisgICAgVGV4dHVyZVR5cGVUZXh0dXJlQnVmZmVyID0gOSwKK307CisKK19NVExfRU5V
TSh1aW50OF90LCBUZXh0dXJlU3dpenpsZSkgeworICAgIFRleHR1cmVTd2l6emxlWmVybyA9IDAs
CisgICAgVGV4dHVyZVN3aXp6bGVPbmUgPSAxLAorICAgIFRleHR1cmVTd2l6emxlUmVkID0gMiwK
KyAgICBUZXh0dXJlU3dpenpsZUdyZWVuID0gMywKKyAgICBUZXh0dXJlU3dpenpsZUJsdWUgPSA0
LAorICAgIFRleHR1cmVTd2l6emxlQWxwaGEgPSA1LAorfTsKKworc3RydWN0IFRleHR1cmVTd2l6
emxlQ2hhbm5lbHMKK3sKKyAgICBNVEw6OlRleHR1cmVTd2l6emxlIHJlZDsKKyAgICBNVEw6OlRl
eHR1cmVTd2l6emxlIGdyZWVuOworICAgIE1UTDo6VGV4dHVyZVN3aXp6bGUgYmx1ZTsKKyAgICBN
VEw6OlRleHR1cmVTd2l6emxlIGFscGhhOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgU2hhcmVk
VGV4dHVyZUhhbmRsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8U2hhcmVkVGV4dHVyZUhhbmRs
ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgU2hhcmVkVGV4dHVyZUhhbmRsZSogYWxs
b2MoKTsKKworICAgIGNsYXNzIFNoYXJlZFRleHR1cmVIYW5kbGUqICAgICAgICBpbml0KCk7CisK
KyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlKCkgY29uc3Q7CisK
KyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKK307
CisKK3N0cnVjdCBTaGFyZWRUZXh0dXJlSGFuZGxlUHJpdmF0ZQoreworfSBfTVRMX1BBQ0tFRDsK
KworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgVGV4dHVyZVVzYWdlKSB7CisgICAgVGV4dHVy
ZVVzYWdlVW5rbm93biA9IDAsCisgICAgVGV4dHVyZVVzYWdlU2hhZGVyUmVhZCA9IDEsCisgICAg
VGV4dHVyZVVzYWdlU2hhZGVyV3JpdGUgPSAyLAorICAgIFRleHR1cmVVc2FnZVJlbmRlclRhcmdl
dCA9IDQsCisgICAgVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3ID0gMTYsCit9OworCitfTVRM
X0VOVU0oTlM6OkludGVnZXIsIFRleHR1cmVDb21wcmVzc2lvblR5cGUpIHsKKyAgICBUZXh0dXJl
Q29tcHJlc3Npb25UeXBlTG9zc2xlc3MgPSAwLAorICAgIFRleHR1cmVDb21wcmVzc2lvblR5cGVM
b3NzeSA9IDEsCit9OworCitjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29w
eWluZzxUZXh0dXJlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVGV4
dHVyZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciog
ICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciogdGV4
dHVyZTJERGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBOUzo6VUludGVn
ZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKTsKKworICAgIHN0
YXRpYyBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciogdGV4dHVyZUN1YmVEZXNjcmlwdG9yKE1UTDo6
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciBzaXplLCBib29sIG1pcG1hcHBl
ZCk7CisKKyAgICBzdGF0aWMgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIHRleHR1cmVCdWZmZXJE
ZXNjcmlwdG9yKE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciB3aWR0
aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zLCBNVEw6OlRleHR1cmVVc2Fn
ZSB1c2FnZSk7CisKKyAgICBNVEw6OlRleHR1cmVUeXBlICAgICAgICAgICAgICAgIHRleHR1cmVU
eXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXh0
dXJlVHlwZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlKTsKKworICAgIE1UTDo6UGl4ZWxG
b3JtYXQgICAgICAgICAgICAgICAgcGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICB3aWR0aCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0V2lkdGgoTlM6
OlVJbnRlZ2VyIHdpZHRoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
aGVpZ2h0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRI
ZWlnaHQoTlM6OlVJbnRlZ2VyIGhlaWdodCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgIGRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXREZXB0aChOUzo6VUludGVnZXIgZGVwdGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgICAgICAgICBtaXBtYXBMZXZlbENvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRNaXBtYXBMZXZlbENvdW50KE5TOjpVSW50ZWdlciBt
aXBtYXBMZXZlbENvdW50KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
c2FtcGxlQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFNhbXBsZUNvdW50KE5TOjpVSW50ZWdlciBzYW1wbGVDb3VudCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgIGFycmF5TGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBcnJheUxlbmd0aChOUzo6VUludGVnZXIgYXJy
YXlMZW5ndGgpOworCisgICAgTVRMOjpSZXNvdXJjZU9wdGlvbnMgICAgICAgICAgICByZXNvdXJj
ZU9wdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFJlc291cmNlT3B0aW9ucyhNVEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMpOwor
CisgICAgTVRMOjpDUFVDYWNoZU1vZGUgICAgICAgICAgICAgICBjcHVDYWNoZU1vZGUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENwdUNhY2hlTW9kZShN
VEw6OkNQVUNhY2hlTW9kZSBjcHVDYWNoZU1vZGUpOworCisgICAgTVRMOjpTdG9yYWdlTW9kZSAg
ICAgICAgICAgICAgICBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBzdG9yYWdlTW9k
ZSk7CisKKyAgICBNVEw6OkhhemFyZFRyYWNraW5nTW9kZSAgICAgICAgIGhhemFyZFRyYWNraW5n
TW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGF6
YXJkVHJhY2tpbmdNb2RlKE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9k
ZSk7CisKKyAgICBNVEw6OlRleHR1cmVVc2FnZSAgICAgICAgICAgICAgIHVzYWdlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRVc2FnZShNVEw6OlRleHR1
cmVVc2FnZSB1c2FnZSk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFs
bG93R1BVT3B0aW1pemVkQ29udGVudHMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEFsbG93R1BVT3B0aW1pemVkQ29udGVudHMoYm9vbCBhbGxvd0dQVU9w
dGltaXplZENvbnRlbnRzKTsKKworICAgIE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyAgICAg
c3dpenpsZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
U3dpenpsZShNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgc3dpenpsZSk7Cit9OworCitjbGFz
cyBUZXh0dXJlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxUZXh0dXJlLCBSZXNvdXJjZT4KK3sK
K3B1YmxpYzoKKyAgICBjbGFzcyBSZXNvdXJjZSogICAgICAgICAgICAgcm9vdFJlc291cmNlKCkg
Y29uc3Q7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgcGFyZW50VGV4dHVyZSgp
IGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIHBhcmVudFJlbGF0aXZl
TGV2ZWwoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBwYXJlbnRS
ZWxhdGl2ZVNsaWNlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAg
YnVmZmVyKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgYnVmZmVy
T2Zmc2V0KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgYnVmZmVy
Qnl0ZXNQZXJSb3coKSBjb25zdDsKKworICAgIElPU3VyZmFjZVJlZiAgICAgICAgICAgICAgICBp
b3N1cmZhY2UoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBpb3N1
cmZhY2VQbGFuZSgpIGNvbnN0OworCisgICAgTVRMOjpUZXh0dXJlVHlwZSAgICAgICAgICAgIHRl
eHR1cmVUeXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAgcGl4
ZWxGb3JtYXQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICB3aWR0
aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGhlaWdodCgpIGNv
bnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGRlcHRoKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgbWlwbWFwTGV2ZWxDb3VudCgpIGNvbnN0
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50KCkgY29uc3Q7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgYXJyYXlMZW5ndGgoKSBjb25zdDsK
KworICAgIE1UTDo6VGV4dHVyZVVzYWdlICAgICAgICAgICB1c2FnZSgpIGNvbnN0OworCisgICAg
Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlYWJsZSgpIGNvbnN0OworCisgICAgYm9v
bCAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyT25seSgpIGNvbnN0OworCisgICAg
TlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGZpcnN0TWlwbWFwSW5UYWlsKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgdGFpbFNpemVJbkJ5dGVzKCkgY29uc3Q7
CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgaXNTcGFyc2UoKSBjb25zdDsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0dQVU9wdGltaXplZENvbnRlbnRz
KCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Qnl0ZXMoY29u
c3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93LCBOUzo6VUludGVn
ZXIgYnl0ZXNQZXJJbWFnZSwgTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWws
IE5TOjpVSW50ZWdlciBzbGljZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
cmVwbGFjZVJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZlbCwgTlM6
OlVJbnRlZ2VyIHNsaWNlLCBjb25zdCB2b2lkKiBwaXhlbEJ5dGVzLCBOUzo6VUludGVnZXIgYnl0
ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBieXRlc1BlckltYWdlKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICBnZXRCeXRlcyhjb25zdCB2b2lkKiBwaXhlbEJ5dGVzLCBOUzo6VUlu
dGVnZXIgYnl0ZXNQZXJSb3csIE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVs
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlUmVnaW9uKE1UTDo6
UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVsLCBjb25zdCB2b2lkKiBwaXhlbEJ5dGVz
LCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3cpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAg
ICAgICAgIG5ld1RleHR1cmVWaWV3KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpOworCisg
ICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgICAgIG5ld1RleHR1cmVWaWV3KE1UTDo6UGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQsIE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUsIE5TOjpSYW5n
ZSBsZXZlbFJhbmdlLCBOUzo6UmFuZ2Ugc2xpY2VSYW5nZSk7CisKKyAgICBjbGFzcyBTaGFyZWRU
ZXh0dXJlSGFuZGxlKiAgbmV3U2hhcmVkVGV4dHVyZUhhbmRsZSgpOworCisgICAgY2xhc3MgVGV4
dHVyZSogICAgICAgICAgICAgIHJlbW90ZVN0b3JhZ2VUZXh0dXJlKCkgY29uc3Q7CisKKyAgICBj
bGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgbmV3UmVtb3RlVGV4dHVyZVZpZXdGb3JEZXZpY2Uo
Y29uc3QgY2xhc3MgRGV2aWNlKiBkZXZpY2UpOworCisgICAgTVRMOjpUZXh0dXJlU3dpenpsZUNo
YW5uZWxzIHN3aXp6bGUoKSBjb25zdDsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAg
ICBuZXdUZXh0dXJlVmlldyhNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBNVEw6OlRleHR1
cmVUeXBlIHRleHR1cmVUeXBlLCBOUzo6UmFuZ2UgbGV2ZWxSYW5nZSwgTlM6OlJhbmdlIHNsaWNl
UmFuZ2UsIE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBzd2l6emxlKTsKK307CisKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6U2hhcmVkVGV4dHVyZUhh
bmRsZSogTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6U2hhcmVkVGV4dHVyZUhhbmRsZT4oX01UTF9QUklWQVRFX0NM
UyhNVExTaGFyZWRUZXh0dXJlSGFuZGxlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9J
TkxJTkUgTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlKiBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGU6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U2hhcmVkVGV4dHVy
ZUhhbmRsZT4oKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpE
ZXZpY2UqIE1UTDo6U2hhcmVkVGV4dHVyZUhhbmRsZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6
OlN0cmluZyogTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobGFiZWwpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpUZXh0dXJlRGVzY3JpcHRvcj4o
X01UTF9QUklWQVRFX0NMUyhNVExUZXh0dXJlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIE1UTDo6VGV4dHVyZURl
c2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VGV4
dHVyZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHRleHR1cmUyRERlc2Ny
aXB0b3JXaXRoUGl4ZWxGb3JtYXQ6d2lkdGg6aGVpZ2h0Om1pcG1hcHBlZDoKK19NVExfSU5MSU5F
IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnRleHR1cmUy
RERlc2NyaXB0b3IoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHdp
ZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRF
X0NMUyhNVExUZXh0dXJlRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZTJERGVz
Y3JpcHRvcldpdGhQaXhlbEZvcm1hdF93aWR0aF9oZWlnaHRfbWlwbWFwcGVkXyksIHBpeGVsRm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBtaXBtYXBwZWQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiB0
ZXh0dXJlQ3ViZURlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6c2l6ZTptaXBtYXBwZWQ6CitfTVRM
X0lOTElORSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjp0
ZXh0dXJlQ3ViZURlc2NyaXB0b3IoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJ
bnRlZ2VyIHNpemUsIGJvb2wgbWlwbWFwcGVkKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRleHR1
cmVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlQ3ViZURlc2NyaXB0b3JXaXRo
UGl4ZWxGb3JtYXRfc2l6ZV9taXBtYXBwZWRfKSwgcGl4ZWxGb3JtYXQsIHNpemUsIG1pcG1hcHBl
ZCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHRleHR1cmVCdWZmZXJEZXNjcmlwdG9yV2l0aFBp
eGVsRm9ybWF0OndpZHRoOnJlc291cmNlT3B0aW9uczp1c2FnZToKK19NVExfSU5MSU5FIE1UTDo6
VGV4dHVyZURlc2NyaXB0b3IqIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnRleHR1cmVCdWZmZXJE
ZXNjcmlwdG9yKE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciB3aWR0
aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zLCBNVEw6OlRleHR1cmVVc2Fn
ZSB1c2FnZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVE
ZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExUZXh0dXJlRGVzY3JpcHRvciksIF9NVExf
UFJJVkFURV9TRUwodGV4dHVyZUJ1ZmZlckRlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXRfd2lkdGhf
cmVzb3VyY2VPcHRpb25zX3VzYWdlXyksIHBpeGVsRm9ybWF0LCB3aWR0aCwgcmVzb3VyY2VPcHRp
b25zLCB1c2FnZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlVHlwZQorX01UTF9JTkxJTkUg
TVRMOjpUZXh0dXJlVHlwZSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjp0ZXh0dXJlVHlwZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVHlwZT4o
dGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlVHlwZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFRleHR1cmVUeXBlKE1UTDo6VGV4dHVyZVR5
cGUgdGV4dHVyZVR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVUeXBlXyksIHRleHR1cmVUeXBlKTsKK30KKworLy8g
cHJvcGVydHk6IHBpeGVsRm9ybWF0CitfTVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6
VGV4dHVyZURlc2NyaXB0b3I6OnBpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHBpeGVsRm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3Jp
cHRvcjo6c2V0UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UGl4
ZWxGb3JtYXRfKSwgcGl4ZWxGb3JtYXQpOworfQorCisvLyBwcm9wZXJ0eTogd2lkdGgKK19NVExf
SU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjp3aWR0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHdpZHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0
dXJlRGVzY3JpcHRvcjo6c2V0V2lkdGgoTlM6OlVJbnRlZ2VyIHdpZHRoKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRXaWR0aF8pLCB3
aWR0aCk7Cit9CisKKy8vIHByb3BlcnR5OiBoZWlnaHQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpoZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCho
ZWlnaHQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpz
ZXRIZWlnaHQoTlM6OlVJbnRlZ2VyIGhlaWdodCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SGVpZ2h0XyksIGhlaWdodCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBkZXB0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVy
ZURlc2NyaXB0b3I6OmRlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGgpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXREZXB0aChOUzo6VUlu
dGVnZXIgZGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldERlcHRoXyksIGRlcHRoKTsKK30KKworLy8gcHJvcGVydHk6IG1pcG1h
cExldmVsQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmVEZXNjcmlw
dG9yOjptaXBtYXBMZXZlbENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWlwbWFwTGV2ZWxD
b3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNl
dE1pcG1hcExldmVsQ291bnQoTlM6OlVJbnRlZ2VyIG1pcG1hcExldmVsQ291bnQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1pcG1h
cExldmVsQ291bnRfKSwgbWlwbWFwTGV2ZWxDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1w
bGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6
OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnQpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3VudChO
Uzo6VUludGVnZXIgc2FtcGxlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsK
K30KKworLy8gcHJvcGVydHk6IGFycmF5TGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6YXJyYXlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChhcnJheUxlbmd0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2Ny
aXB0b3I6OnNldEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdlciBhcnJheUxlbmd0aCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QXJyYXlM
ZW5ndGhfKSwgYXJyYXlMZW5ndGgpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb3VyY2VPcHRpb25z
CitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlT3B0aW9ucyBNVEw6OlRleHR1cmVEZXNjcmlwdG9y
OjpyZXNvdXJjZU9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6UmVzb3VyY2VPcHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc291cmNl
T3B0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6
OnNldFJlc291cmNlT3B0aW9ucyhNVEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFJlc291cmNlT3B0aW9uc18pLCByZXNvdXJjZU9wdGlvbnMpOworfQorCisvLyBwcm9wZXJ0
eTogY3B1Q2FjaGVNb2RlCitfTVRMX0lOTElORSBNVEw6OkNQVUNhY2hlTW9kZSBNVEw6OlRleHR1
cmVEZXNjcmlwdG9yOjpjcHVDYWNoZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q1BVQ2FjaGVNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNw
dUNhY2hlTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0
b3I6OnNldENwdUNhY2hlTW9kZShNVEw6OkNQVUNhY2hlTW9kZSBjcHVDYWNoZU1vZGUpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENw
dUNhY2hlTW9kZV8pLCBjcHVDYWNoZU1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogc3RvcmFnZU1v
ZGUKK19NVExfSU5MSU5FIE1UTDo6U3RvcmFnZU1vZGUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6
c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6U3RvcmFnZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RvcmFnZU1vZGUpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRTdG9yYWdlTW9k
ZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdG9yYWdlTW9kZV8pLCBzdG9yYWdl
TW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBoYXphcmRUcmFja2luZ01vZGUKK19NVExfSU5MSU5F
IE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmhhemFyZFRy
YWNraW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpIYXphcmRUcmFja2luZ01vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaGF6YXJkVHJhY2tp
bmdNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6
c2V0SGF6YXJkVHJhY2tpbmdNb2RlKE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIGhhemFyZFRyYWNr
aW5nTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0SGF6YXJkVHJhY2tpbmdNb2RlXyksIGhhemFyZFRyYWNraW5nTW9kZSk7Cit9
CisKKy8vIHByb3BlcnR5OiB1c2FnZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlVXNhZ2UgTVRM
OjpUZXh0dXJlRGVzY3JpcHRvcjo6dXNhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVVzYWdlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVz
YWdlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0
VXNhZ2UoTVRMOjpUZXh0dXJlVXNhZ2UgdXNhZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFVzYWdlXyksIHVzYWdlKTsKK30KKwor
Ly8gcHJvcGVydHk6IGFsbG93R1BVT3B0aW1pemVkQ29udGVudHMKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6YWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChhbGxvd0dQVU9wdGltaXplZENvbnRlbnRzKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0QWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cyhi
b29sIGFsbG93R1BVT3B0aW1pemVkQ29udGVudHMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFsbG93R1BVT3B0aW1pemVkQ29udGVu
dHNfKSwgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cyk7Cit9CisKKy8vIHByb3BlcnR5OiBzd2l6
emxlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgTVRMOjpUZXh0dXJl
RGVzY3JpcHRvcjo6c3dpenpsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpUZXh0dXJlU3dpenpsZUNoYW5uZWxzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHN3aXp6bGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9y
OjpzZXRTd2l6emxlKE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBzd2l6emxlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTd2l6
emxlXyksIHN3aXp6bGUpOworfQorCisvLyBwcm9wZXJ0eTogcm9vdFJlc291cmNlCitfTVRMX0lO
TElORSBNVEw6OlJlc291cmNlKiBNVEw6OlRleHR1cmU6OnJvb3RSZXNvdXJjZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocm9vdFJlc291cmNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXJlbnRU
ZXh0dXJlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6VGV4dHVyZTo6cGFyZW50VGV4
dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0
dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChwYXJlbnRUZXh0dXJlKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBwYXJlbnRSZWxhdGl2ZUxldmVsCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpUZXh0dXJlOjpwYXJlbnRSZWxhdGl2ZUxldmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGFy
ZW50UmVsYXRpdmVMZXZlbCkpOworfQorCisvLyBwcm9wZXJ0eTogcGFyZW50UmVsYXRpdmVTbGlj
ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6cGFyZW50UmVsYXRpdmVT
bGljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhcmVudFJlbGF0aXZlU2xpY2UpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6VGV4dHVy
ZTo6YnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVyKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBidWZmZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6
OmJ1ZmZlck9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlck9mZnNldCkpOworfQor
CisvLyBwcm9wZXJ0eTogYnVmZmVyQnl0ZXNQZXJSb3cKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OlRleHR1cmU6OmJ1ZmZlckJ5dGVzUGVyUm93KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
YnVmZmVyQnl0ZXNQZXJSb3cpKTsKK30KKworLy8gcHJvcGVydHk6IGlvc3VyZmFjZQorX01UTF9J
TkxJTkUgSU9TdXJmYWNlUmVmIE1UTDo6VGV4dHVyZTo6aW9zdXJmYWNlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxJT1N1cmZhY2VSZWY+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoaW9zdXJmYWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBpb3N1cmZhY2VQbGFuZQor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6aW9zdXJmYWNlUGxhbmUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChpb3N1cmZhY2VQbGFuZSkpOworfQorCisvLyBwcm9wZXJ0eTog
dGV4dHVyZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVR5cGUgTVRMOjpUZXh0dXJlOjp0
ZXh0dXJlVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpUZXh0dXJlVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlVHlwZSkpOworfQor
CisvLyBwcm9wZXJ0eTogcGl4ZWxGb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6UGl4ZWxGb3JtYXQg
TVRMOjpUZXh0dXJlOjpwaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpQaXhlbEZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaXhl
bEZvcm1hdCkpOworfQorCisvLyBwcm9wZXJ0eTogd2lkdGgKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OlRleHR1cmU6OndpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2lkdGgpKTsK
K30KKworLy8gcHJvcGVydHk6IGhlaWdodAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
VGV4dHVyZTo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaGVpZ2h0KSk7Cit9CisKKy8v
IHByb3BlcnR5OiBkZXB0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6
ZGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXB0aCkpOworfQorCisvLyBwcm9wZXJ0eTog
bWlwbWFwTGV2ZWxDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6
bWlwbWFwTGV2ZWxDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1pcG1hcExldmVsQ291bnQp
KTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpUZXh0dXJlOjpzYW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBs
ZUNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhcnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6YXJyYXlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChhcnJheUxlbmd0aCkpOworfQorCisvLyBwcm9wZXJ0eTogdXNhZ2UKK19NVExfSU5MSU5FIE1U
TDo6VGV4dHVyZVVzYWdlIE1UTDo6VGV4dHVyZTo6dXNhZ2UoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVVzYWdlPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHVzYWdlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzaGFyZWFibGUKK19NVExfSU5MSU5F
IGJvb2wgTVRMOjpUZXh0dXJlOjpzaGFyZWFibGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNTaGFyZWFibGUp
KTsKK30KKworLy8gcHJvcGVydHk6IGZyYW1lYnVmZmVyT25seQorX01UTF9JTkxJTkUgYm9vbCBN
VEw6OlRleHR1cmU6OmZyYW1lYnVmZmVyT25seSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0ZyYW1lYnVmZmVy
T25seSkpOworfQorCisvLyBwcm9wZXJ0eTogZmlyc3RNaXBtYXBJblRhaWwKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OmZpcnN0TWlwbWFwSW5UYWlsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZmlyc3RNaXBtYXBJblRhaWwpKTsKK30KKworLy8gcHJvcGVydHk6IHRhaWxT
aXplSW5CeXRlcworX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6dGFpbFNp
emVJbkJ5dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGFpbFNpemVJbkJ5dGVzKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpc1NwYXJzZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlRleHR1cmU6Omlz
U3BhcnNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzU3BhcnNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhbGxv
d0dQVU9wdGltaXplZENvbnRlbnRzCitfTVRMX0lOTElORSBib29sIE1UTDo6VGV4dHVyZTo6YWxs
b3dHUFVPcHRpbWl6ZWRDb250ZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhbGxvd0dQVU9wdGltaXplZENv
bnRlbnRzKSk7Cit9CisKKy8vIG1ldGhvZDogZ2V0Qnl0ZXM6Ynl0ZXNQZXJSb3c6Ynl0ZXNQZXJJ
bWFnZTpmcm9tUmVnaW9uOm1pcG1hcExldmVsOnNsaWNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlRleHR1cmU6OmdldEJ5dGVzKGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50ZWdlciBi
eXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVySW1hZ2UsIE1UTDo6UmVnaW9uIHJlZ2lv
biwgTlM6OlVJbnRlZ2VyIGxldmVsLCBOUzo6VUludGVnZXIgc2xpY2UpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdldEJ5dGVzX2J5dGVz
UGVyUm93X2J5dGVzUGVySW1hZ2VfZnJvbVJlZ2lvbl9taXBtYXBMZXZlbF9zbGljZV8pLCBwaXhl
bEJ5dGVzLCBieXRlc1BlclJvdywgYnl0ZXNQZXJJbWFnZSwgcmVnaW9uLCBsZXZlbCwgc2xpY2Up
OworfQorCisvLyBtZXRob2Q6IHJlcGxhY2VSZWdpb246bWlwbWFwTGV2ZWw6c2xpY2U6d2l0aEJ5
dGVzOmJ5dGVzUGVyUm93OmJ5dGVzUGVySW1hZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4
dHVyZTo6cmVwbGFjZVJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZl
bCwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBjb25zdCB2b2lkKiBwaXhlbEJ5dGVzLCBOUzo6VUludGVn
ZXIgYnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBieXRlc1BlckltYWdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXBsYWNlUmVnaW9u
X21pcG1hcExldmVsX3NsaWNlX3dpdGhCeXRlc19ieXRlc1BlclJvd19ieXRlc1BlckltYWdlXyks
IHJlZ2lvbiwgbGV2ZWwsIHNsaWNlLCBwaXhlbEJ5dGVzLCBieXRlc1BlclJvdywgYnl0ZXNQZXJJ
bWFnZSk7Cit9CisKKy8vIG1ldGhvZDogZ2V0Qnl0ZXM6Ynl0ZXNQZXJSb3c6ZnJvbVJlZ2lvbjpt
aXBtYXBMZXZlbDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlOjpnZXRCeXRlcyhjb25z
dCB2b2lkKiBwaXhlbEJ5dGVzLCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3csIE1UTDo6UmVnaW9u
IHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChnZXRCeXRlc19ieXRlc1BlclJvd19mcm9tUmVn
aW9uX21pcG1hcExldmVsXyksIHBpeGVsQnl0ZXMsIGJ5dGVzUGVyUm93LCByZWdpb24sIGxldmVs
KTsKK30KKworLy8gbWV0aG9kOiByZXBsYWNlUmVnaW9uOm1pcG1hcExldmVsOndpdGhCeXRlczpi
eXRlc1BlclJvdzoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlOjpyZXBsYWNlUmVnaW9u
KE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVsLCBjb25zdCB2b2lkKiBwaXhl
bEJ5dGVzLCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3cpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlcGxhY2VSZWdpb25fbWlwbWFwTGV2
ZWxfd2l0aEJ5dGVzX2J5dGVzUGVyUm93XyksIHJlZ2lvbiwgbGV2ZWwsIHBpeGVsQnl0ZXMsIGJ5
dGVzUGVyUm93KTsKK30KKworLy8gbWV0aG9kOiBuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1h
dDoKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpUZXh0dXJlOjpuZXdUZXh0dXJlVmll
dyhNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3VGV4dHVy
ZVZpZXdXaXRoUGl4ZWxGb3JtYXRfKSwgcGl4ZWxGb3JtYXQpOworfQorCisvLyBtZXRob2Q6IG5l
d1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0OnRleHR1cmVUeXBlOmxldmVsczpzbGljZXM6Citf
TVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6VGV4dHVyZTo6bmV3VGV4dHVyZVZpZXcoTVRM
OjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSwg
TlM6OlJhbmdlIGxldmVsUmFuZ2UsIE5TOjpSYW5nZSBzbGljZVJhbmdlKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXRfdGV4dHVyZVR5cGVfbGV2ZWxzX3NsaWNl
c18pLCBwaXhlbEZvcm1hdCwgdGV4dHVyZVR5cGUsIGxldmVsUmFuZ2UsIHNsaWNlUmFuZ2UpOwor
fQorCisvLyBtZXRob2Q6IG5ld1NoYXJlZFRleHR1cmVIYW5kbGUKK19NVExfSU5MSU5FIE1UTDo6
U2hhcmVkVGV4dHVyZUhhbmRsZSogTVRMOjpUZXh0dXJlOjpuZXdTaGFyZWRUZXh0dXJlSGFuZGxl
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNoYXJlZFRleHR1cmVI
YW5kbGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1NoYXJlZFRleHR1cmVIYW5kbGUpKTsK
K30KKworLy8gcHJvcGVydHk6IHJlbW90ZVN0b3JhZ2VUZXh0dXJlCitfTVRMX0lOTElORSBNVEw6
OlRleHR1cmUqIE1UTDo6VGV4dHVyZTo6cmVtb3RlU3RvcmFnZVRleHR1cmUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwocmVtb3RlU3RvcmFnZVRleHR1cmUpKTsKK30KKworLy8gbWV0aG9kOiBuZXdS
ZW1vdGVUZXh0dXJlVmlld0ZvckRldmljZToKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRM
OjpUZXh0dXJlOjpuZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRldmljZShjb25zdCBNVEw6OkRldmlj
ZSogZGV2aWNlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVy
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVtb3RlVGV4dHVyZVZpZXdGb3JEZXZpY2Vf
KSwgZGV2aWNlKTsKK30KKworLy8gcHJvcGVydHk6IHN3aXp6bGUKK19NVExfSU5MSU5FIE1UTDo6
VGV4dHVyZVN3aXp6bGVDaGFubmVscyBNVEw6OlRleHR1cmU6OnN3aXp6bGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVs
cz4odGhpcywgX01UTF9QUklWQVRFX1NFTChzd2l6emxlKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3
VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6dGV4dHVyZVR5cGU6bGV2ZWxzOnNsaWNlczpzd2l6
emxlOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OlRleHR1cmU6Om5ld1RleHR1cmVW
aWV3KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVy
ZVR5cGUsIE5TOjpSYW5nZSBsZXZlbFJhbmdlLCBOUzo6UmFuZ2Ugc2xpY2VSYW5nZSwgTVRMOjpU
ZXh0dXJlU3dpenpsZUNoYW5uZWxzIHN3aXp6bGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJl
Vmlld1dpdGhQaXhlbEZvcm1hdF90ZXh0dXJlVHlwZV9sZXZlbHNfc2xpY2VzX3N3aXp6bGVfKSwg
cGl4ZWxGb3JtYXQsIHRleHR1cmVUeXBlLCBsZXZlbFJhbmdlLCBzbGljZVJhbmdlLCBzd2l6emxl
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExUeXBlcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVHlw
ZXMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc2OGM0ZDlhMmMzOGE1OWU1NDkzY2U4ODlkMGQ1ZTJkMzdhZWE4
ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMVHlwZXMuaHBwCkBAIC0wLDAgKzEsMTYzIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExUeXBlcy5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJN
VExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUg
Ik1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4K
KworI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworc3RydWN0IE9y
aWdpbgoreworICAgIE9yaWdpbigpID0gZGVmYXVsdDsKKworICAgIE9yaWdpbihOUzo6VUludGVn
ZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6KTsKKworICAgIHN0YXRpYyBPcmln
aW4gTWFrZShOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6KTsK
KworICAgIE5TOjpVSW50ZWdlciAgeDsKKyAgICBOUzo6VUludGVnZXIgIHk7CisgICAgTlM6OlVJ
bnRlZ2VyICB6OworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFNpemUKK3sKKyAgICBTaXplKCkg
PSBkZWZhdWx0OworCisgICAgU2l6ZShOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBo
ZWlnaHQsIE5TOjpVSW50ZWdlciBkZXB0aCk7CisKKyAgICBzdGF0aWMgU2l6ZSAgTWFrZShOUzo6
VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIE5TOjpVSW50ZWdlciBkZXB0aCk7
CisKKyAgICBOUzo6VUludGVnZXIgd2lkdGg7CisgICAgTlM6OlVJbnRlZ2VyIGhlaWdodDsKKyAg
ICBOUzo6VUludGVnZXIgZGVwdGg7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgUmVnaW9uCit7
CisgICAgUmVnaW9uKCkgPSBkZWZhdWx0OworCisgICAgUmVnaW9uKE5TOjpVSW50ZWdlciB4LCBO
Uzo6VUludGVnZXIgd2lkdGgpOworCisgICAgUmVnaW9uKE5TOjpVSW50ZWdlciB4LCBOUzo6VUlu
dGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KTsKKworICAg
IFJlZ2lvbihOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6LCBO
Uzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIE5TOjpVSW50ZWdlciBkZXB0
aCk7CisKKyAgICBzdGF0aWMgUmVnaW9uIE1ha2UxRChOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRl
Z2VyIHdpZHRoKTsKKworICAgIHN0YXRpYyBSZWdpb24gTWFrZTJEKE5TOjpVSW50ZWdlciB4LCBO
Uzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KTsK
KworICAgIHN0YXRpYyBSZWdpb24gTWFrZTNEKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIg
eSwgTlM6OlVJbnRlZ2VyIHosIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdo
dCwgTlM6OlVJbnRlZ2VyIGRlcHRoKTsKKworICAgIE1UTDo6T3JpZ2luICAgb3JpZ2luOworICAg
IE1UTDo6U2l6ZSAgICAgc2l6ZTsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBTYW1wbGVQb3Np
dGlvbjsKKwordXNpbmcgQ29vcmRpbmF0ZTJEID0gU2FtcGxlUG9zaXRpb247CisKK3N0cnVjdCBT
YW1wbGVQb3NpdGlvbgoreworICAgIFNhbXBsZVBvc2l0aW9uKCkgPSBkZWZhdWx0OworCisgICAg
U2FtcGxlUG9zaXRpb24oZmxvYXQgX3gsIGZsb2F0IF95KTsKKworICAgIHN0YXRpYyBTYW1wbGVQ
b3NpdGlvbiBNYWtlKGZsb2F0IHgsIGZsb2F0IHkpOworCisgICAgZmxvYXQgICAgICAgICAgICAg
ICAgIHg7CisgICAgZmxvYXQgICAgICAgICAgICAgICAgIHk7Cit9IF9NVExfUEFDS0VEOworCit9
CisKK19NVExfSU5MSU5FIE1UTDo6T3JpZ2luOjpPcmlnaW4oTlM6OlVJbnRlZ2VyIF94LCBOUzo6
VUludGVnZXIgX3ksIE5TOjpVSW50ZWdlciBfeikKKyAgICA6IHgoX3gpCisgICAgLCB5KF95KQor
ICAgICwgeihfeikKK3sKK30KKworX01UTF9JTkxJTkUgTVRMOjpPcmlnaW4gTVRMOjpPcmlnaW46
Ok1ha2UoTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgeikKK3sK
KyAgICByZXR1cm4gT3JpZ2luKHgsIHksIHopOworfQorCitfTVRMX0lOTElORSBNVEw6OlNpemU6
OlNpemUoTlM6OlVJbnRlZ2VyIF93aWR0aCwgTlM6OlVJbnRlZ2VyIF9oZWlnaHQsIE5TOjpVSW50
ZWdlciBfZGVwdGgpCisgICAgOiB3aWR0aChfd2lkdGgpCisgICAgLCBoZWlnaHQoX2hlaWdodCkK
KyAgICAsIGRlcHRoKF9kZXB0aCkKK3sKK30KKworX01UTF9JTkxJTkUgTVRMOjpTaXplIE1UTDo6
U2l6ZTo6TWFrZShOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIE5TOjpV
SW50ZWdlciBkZXB0aCkKK3sKKyAgICByZXR1cm4gU2l6ZSh3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7
Cit9CisKK19NVExfSU5MSU5FIE1UTDo6UmVnaW9uOjpSZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5T
OjpVSW50ZWdlciB3aWR0aCkKKyAgICA6IG9yaWdpbih4LCAwLCAwKQorICAgICwgc2l6ZSh3aWR0
aCwgMSwgMSkKK3sKK30KKworX01UTF9JTkxJTkUgTVRMOjpSZWdpb246OlJlZ2lvbihOUzo6VUlu
dGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2Vy
IGhlaWdodCkKKyAgICA6IG9yaWdpbih4LCB5LCAwKQorICAgICwgc2l6ZSh3aWR0aCwgaGVpZ2h0
LCAxKQoreworfQorCitfTVRMX0lOTElORSBNVEw6OlJlZ2lvbjo6UmVnaW9uKE5TOjpVSW50ZWdl
ciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHosIE5TOjpVSW50ZWdlciB3aWR0aCwg
TlM6OlVJbnRlZ2VyIGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRlcHRoKQorICAgIDogb3JpZ2luKHgs
IHksIHopCisgICAgLCBzaXplKHdpZHRoLCBoZWlnaHQsIGRlcHRoKQoreworfQorCitfTVRMX0lO
TElORSBNVEw6OlJlZ2lvbiBNVEw6OlJlZ2lvbjo6TWFrZTFEKE5TOjpVSW50ZWdlciB4LCBOUzo6
VUludGVnZXIgd2lkdGgpCit7CisgICAgcmV0dXJuIFJlZ2lvbih4LCB3aWR0aCk7Cit9CisKK19N
VExfSU5MSU5FIE1UTDo6UmVnaW9uIE1UTDo6UmVnaW9uOjpNYWtlMkQoTlM6OlVJbnRlZ2VyIHgs
IE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQp
Cit7CisgICAgcmV0dXJuIFJlZ2lvbih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworX01UTF9J
TkxJTkUgTVRMOjpSZWdpb24gTVRMOjpSZWdpb246Ok1ha2UzRChOUzo6VUludGVnZXIgeCwgTlM6
OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6LCBOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50
ZWdlciBoZWlnaHQsIE5TOjpVSW50ZWdlciBkZXB0aCkKK3sKKyAgICByZXR1cm4gUmVnaW9uKHgs
IHksIHosIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKK30KKworX01UTF9JTkxJTkUgTVRMOjpTYW1w
bGVQb3NpdGlvbjo6U2FtcGxlUG9zaXRpb24oZmxvYXQgX3gsIGZsb2F0IF95KQorICAgIDogeChf
eCkKKyAgICAsIHkoX3kpCit7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlUG9zaXRpb24g
TVRMOjpTYW1wbGVQb3NpdGlvbjo6TWFrZShmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIHJldHVy
biBTYW1wbGVQb3NpdGlvbih4LCB5KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMTdmODIzYWEwYWY5NTMwYjI1YzMzMWE5ZjU2ZDEyNTY2NzYzODU1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZlcnRleERl
c2NyaXB0b3IuaHBwCkBAIC0wLDAgKzEsMzQ0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhw
cAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisj
aW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaHBwPgorCisjaW5jbHVkZSAiTVRMVmVydGV4RGVzY3JpcHRvci5ocHAiCisKK25hbWVzcGFj
ZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFZlcnRleEZvcm1hdCkgeworICAgIFZl
cnRleEZvcm1hdEludmFsaWQgPSAwLAorICAgIFZlcnRleEZvcm1hdFVDaGFyMiA9IDEsCisgICAg
VmVydGV4Rm9ybWF0VUNoYXIzID0gMiwKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hhcjQgPSAzLAorICAg
IFZlcnRleEZvcm1hdENoYXIyID0gNCwKKyAgICBWZXJ0ZXhGb3JtYXRDaGFyMyA9IDUsCisgICAg
VmVydGV4Rm9ybWF0Q2hhcjQgPSA2LAorICAgIFZlcnRleEZvcm1hdFVDaGFyMk5vcm1hbGl6ZWQg
PSA3LAorICAgIFZlcnRleEZvcm1hdFVDaGFyM05vcm1hbGl6ZWQgPSA4LAorICAgIFZlcnRleEZv
cm1hdFVDaGFyNE5vcm1hbGl6ZWQgPSA5LAorICAgIFZlcnRleEZvcm1hdENoYXIyTm9ybWFsaXpl
ZCA9IDEwLAorICAgIFZlcnRleEZvcm1hdENoYXIzTm9ybWFsaXplZCA9IDExLAorICAgIFZlcnRl
eEZvcm1hdENoYXI0Tm9ybWFsaXplZCA9IDEyLAorICAgIFZlcnRleEZvcm1hdFVTaG9ydDIgPSAx
MywKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQzID0gMTQsCisgICAgVmVydGV4Rm9ybWF0VVNob3J0
NCA9IDE1LAorICAgIFZlcnRleEZvcm1hdFNob3J0MiA9IDE2LAorICAgIFZlcnRleEZvcm1hdFNo
b3J0MyA9IDE3LAorICAgIFZlcnRleEZvcm1hdFNob3J0NCA9IDE4LAorICAgIFZlcnRleEZvcm1h
dFVTaG9ydDJOb3JtYWxpemVkID0gMTksCisgICAgVmVydGV4Rm9ybWF0VVNob3J0M05vcm1hbGl6
ZWQgPSAyMCwKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQ0Tm9ybWFsaXplZCA9IDIxLAorICAgIFZl
cnRleEZvcm1hdFNob3J0Mk5vcm1hbGl6ZWQgPSAyMiwKKyAgICBWZXJ0ZXhGb3JtYXRTaG9ydDNO
b3JtYWxpemVkID0gMjMsCisgICAgVmVydGV4Rm9ybWF0U2hvcnQ0Tm9ybWFsaXplZCA9IDI0LAor
ICAgIFZlcnRleEZvcm1hdEhhbGYyID0gMjUsCisgICAgVmVydGV4Rm9ybWF0SGFsZjMgPSAyNiwK
KyAgICBWZXJ0ZXhGb3JtYXRIYWxmNCA9IDI3LAorICAgIFZlcnRleEZvcm1hdEZsb2F0ID0gMjgs
CisgICAgVmVydGV4Rm9ybWF0RmxvYXQyID0gMjksCisgICAgVmVydGV4Rm9ybWF0RmxvYXQzID0g
MzAsCisgICAgVmVydGV4Rm9ybWF0RmxvYXQ0ID0gMzEsCisgICAgVmVydGV4Rm9ybWF0SW50ID0g
MzIsCisgICAgVmVydGV4Rm9ybWF0SW50MiA9IDMzLAorICAgIFZlcnRleEZvcm1hdEludDMgPSAz
NCwKKyAgICBWZXJ0ZXhGb3JtYXRJbnQ0ID0gMzUsCisgICAgVmVydGV4Rm9ybWF0VUludCA9IDM2
LAorICAgIFZlcnRleEZvcm1hdFVJbnQyID0gMzcsCisgICAgVmVydGV4Rm9ybWF0VUludDMgPSAz
OCwKKyAgICBWZXJ0ZXhGb3JtYXRVSW50NCA9IDM5LAorICAgIFZlcnRleEZvcm1hdEludDEwMTAx
MDJOb3JtYWxpemVkID0gNDAsCisgICAgVmVydGV4Rm9ybWF0VUludDEwMTAxMDJOb3JtYWxpemVk
ID0gNDEsCisgICAgVmVydGV4Rm9ybWF0VUNoYXI0Tm9ybWFsaXplZF9CR1JBID0gNDIsCisgICAg
VmVydGV4Rm9ybWF0VUNoYXIgPSA0NSwKKyAgICBWZXJ0ZXhGb3JtYXRDaGFyID0gNDYsCisgICAg
VmVydGV4Rm9ybWF0VUNoYXJOb3JtYWxpemVkID0gNDcsCisgICAgVmVydGV4Rm9ybWF0Q2hhck5v
cm1hbGl6ZWQgPSA0OCwKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQgPSA0OSwKKyAgICBWZXJ0ZXhG
b3JtYXRTaG9ydCA9IDUwLAorICAgIFZlcnRleEZvcm1hdFVTaG9ydE5vcm1hbGl6ZWQgPSA1MSwK
KyAgICBWZXJ0ZXhGb3JtYXRTaG9ydE5vcm1hbGl6ZWQgPSA1MiwKKyAgICBWZXJ0ZXhGb3JtYXRI
YWxmID0gNTMsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBWZXJ0ZXhTdGVwRnVuY3Rp
b24pIHsKKyAgICBWZXJ0ZXhTdGVwRnVuY3Rpb25Db25zdGFudCA9IDAsCisgICAgVmVydGV4U3Rl
cEZ1bmN0aW9uUGVyVmVydGV4ID0gMSwKKyAgICBWZXJ0ZXhTdGVwRnVuY3Rpb25QZXJJbnN0YW5j
ZSA9IDIsCisgICAgVmVydGV4U3RlcEZ1bmN0aW9uUGVyUGF0Y2ggPSAzLAorICAgIFZlcnRleFN0
ZXBGdW5jdGlvblBlclBhdGNoQ29udHJvbFBvaW50ID0gNCwKK307CisKK2NsYXNzIFZlcnRleEJ1
ZmZlckxheW91dERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VmVydGV4QnVmZmVyTGF5
b3V0RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4QnVmZmVy
TGF5b3V0RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91
dERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0cmlkZShOUzo6VUludGVnZXIgc3RyaWRl
KTsKKworICAgIE1UTDo6VmVydGV4U3RlcEZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICBzdGVw
RnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0U3RlcEZ1bmN0aW9uKE1UTDo6VmVydGV4U3RlcEZ1bmN0aW9uIHN0ZXBGdW5j
dGlvbik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RlcFJhdGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0U3RlcFJhdGUoTlM6OlVJbnRlZ2VyIHN0ZXBSYXRlKTsKK307CisKK2NsYXNz
IFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNp
bmc8VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0
YXRpYyBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0
KCk7CisKKyAgICBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiAgICAgICAgICAg
ICBvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBWZXJ0ZXhC
dWZmZXJMYXlvdXREZXNjcmlwdG9yKiBidWZmZXJEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpOwor
fTsKKworY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWlu
ZzxWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFz
cyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4
QXR0cmlidXRlRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6VmVydGV4Rm9y
bWF0ICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Rm9ybWF0KE1UTDo6VmVydGV4Rm9ybWF0
IGZvcm1hdCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldE9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJJbmRleCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCdWZmZXJJbmRleChOUzo6VUlu
dGVnZXIgYnVmZmVySW5kZXgpOworfTsKKworY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
ckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
QXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0
b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0
IGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IqIGF0dHJpYnV0ZURlc2MsIE5TOjpVSW50
ZWdlciBpbmRleCk7Cit9OworCitjbGFzcyBWZXJ0ZXhEZXNjcmlwdG9yIDogcHVibGljIE5TOjpD
b3B5aW5nPFZlcnRleERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFZl
cnRleERlc2NyaXB0b3IqICAgICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4RGVz
Y3JpcHRvciogICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xhc3MgVmVy
dGV4RGVzY3JpcHRvciogICAgICAgICAgIHZlcnRleERlc2NyaXB0b3IoKTsKKworICAgIGNsYXNz
IFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogbGF5b3V0cygpIGNvbnN0OworCisg
ICAgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiAgICBhdHRyaWJ1dGVzKCkg
Y29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c2V0KCk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBN
VEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0
RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVmVydGV4
QnVmZmVyTGF5b3V0RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhCdWZmZXJM
YXlvdXREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBz
dHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERl
c2NyaXB0b3I6OnN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0cmlkZSkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c2V0U3Ry
aWRlKE5TOjpVSW50ZWdlciBzdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0cmlkZV8pLCBzdHJpZGUpOworfQorCisvLyBw
cm9wZXJ0eTogc3RlcEZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OlZlcnRleFN0ZXBGdW5jdGlv
biBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnN0ZXBGdW5jdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhTdGVwRnVuY3Rp
b24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlcEZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzZXRTdGVwRnVuY3Rp
b24oTVRMOjpWZXJ0ZXhTdGVwRnVuY3Rpb24gc3RlcEZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVwRnVuY3Rpb25f
KSwgc3RlcEZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHN0ZXBSYXRlCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzdGVwUmF0
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZXBSYXRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzZXRTdGVwUmF0ZShOUzo6VUlu
dGVnZXIgc3RlcFJhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0ZXBSYXRlXyksIHN0ZXBSYXRlKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3Jp
cHRvckFycmF5KiBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheTo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlZlcnRleEJ1ZmZlckxheW91
dERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExWZXJ0ZXhCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhCdWZmZXJMYXlv
dXREZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0
PE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRo
b2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QnVm
ZmVyTGF5b3V0RGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJy
YXk6Om9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgaW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRM
OjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBidWZmZXJEZXNjLCBOUzo6VUludGVnZXIg
aW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYnVmZmVyRGVzYywgaW5kZXgp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhB
dHRyaWJ1dGVEZXNjcmlwdG9yKiBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3Ip
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0
ZURlc2NyaXB0b3IqIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6aW5pdCgpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
PigpOworfQorCisvLyBwcm9wZXJ0eTogZm9ybWF0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEZv
cm1hdCBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OmZvcm1hdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhGb3JtYXQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpWZXJ0
ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjpzZXRGb3JtYXQoTVRMOjpWZXJ0ZXhGb3JtYXQgZm9ybWF0
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRGb3JtYXRfKSwgZm9ybWF0KTsKK30KKworLy8gcHJvcGVydHk6IG9mZnNldAorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6b2Zmc2V0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2Zmc2V0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjpzZXRPZmZzZXQoTlM6OlVJbnRlZ2VyIG9m
ZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0T2Zmc2V0XyksIG9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJJbmRl
eAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
cjo6YnVmZmVySW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXJJbmRleCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6c2V0QnVm
ZmVySW5kZXgoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJJbmRleF8pLCBidWZm
ZXJJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6
OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNj
cmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMVmVy
dGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIE1UTDo6VmVydGV4
QXR0cmlidXRlRGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6aW5pdDxNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8g
bWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OlZlcnRl
eEF0dHJpYnV0ZURlc2NyaXB0b3IqIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5
OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6VmVydGV4
QXR0cmlidXRlRGVzY3JpcHRvciogYXR0cmlidXRlRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dHJpYnV0ZURlc2MsIGluZGV4KTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4RGVzY3Jp
cHRvciogTVRMOjpWZXJ0ZXhEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmFsbG9jPE1UTDo6VmVydGV4RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExW
ZXJ0ZXhEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRM
OjpWZXJ0ZXhEZXNjcmlwdG9yKiBNVEw6OlZlcnRleERlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VmVydGV4RGVzY3JpcHRvcj4oKTsKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogdmVydGV4RGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpWZXJ0
ZXhEZXNjcmlwdG9yKiBNVEw6OlZlcnRleERlc2NyaXB0b3I6OnZlcnRleERlc2NyaXB0b3IoKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmVydGV4RGVzY3JpcHRvcio+
KF9NVExfUFJJVkFURV9DTFMoTVRMVmVydGV4RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwo
dmVydGV4RGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0eTogbGF5b3V0cworX01UTF9JTkxJ
TkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqIE1UTDo6VmVydGV4RGVz
Y3JpcHRvcjo6bGF5b3V0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGxheW91dHMpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJpYnV0ZXMKK19NVExf
SU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiBNVEw6OlZlcnRleERl
c2NyaXB0b3I6OmF0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChhdHRyaWJ1dGVzKSk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXQKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpWZXJ0ZXhEZXNjcmlwdG9yOjpyZXNldCgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmlzaWJsZUZ1
bmN0aW9uVGFibGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TFZpc2libGVGdW5jdGlvblRhYmxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzRkM2ExYTZjZTEwYjkyNWNm
NjEyNTZmZWQ1MTZkYzMzMGJkZDExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcApAQCAtMCww
ICsxLDk2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vCisvLyBNZXRhbC9NVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAKKy8vCisvLyBDb3B5cmln
aHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVz
LmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZh
dGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1
ZGUgIk1UTEZ1bmN0aW9uSGFuZGxlLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisK
K25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciA6
IHB1YmxpYyBOUzo6Q29weWluZzxWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciog
YWxsb2MoKTsKKworICAgIGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciogICAg
ICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2Ny
aXB0b3IqIHZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcigpOworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25Db3VudCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZ1
bmN0aW9uQ291bnQoTlM6OlVJbnRlZ2VyIGZ1bmN0aW9uQ291bnQpOworfTsKKworY2xhc3MgVmlz
aWJsZUZ1bmN0aW9uVGFibGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFZpc2libGVGdW5jdGlv
blRhYmxlLCBSZXNvdXJjZT4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIHNldEZ1bmN0aW9uKGNvbnN0
IGNsYXNzIEZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlvbiwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKwor
ICAgIHZvaWQgc2V0RnVuY3Rpb25zKGNvbnN0IGNsYXNzIEZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlv
bnNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxs
b2MKK19NVExfSU5MSU5FIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBNVEw6
OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0OjphbGxvYzxNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4oX01U
TF9QUklWQVRFX0NMUyhNVExWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVz
Y3JpcHRvciogTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNj
cmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiB2aXNpYmxlRnVuY3Rpb25UYWJsZURl
c2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9y
KiBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6dmlzaWJsZUZ1bmN0aW9uVGFi
bGVEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZp
c2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMVmlzaWJs
ZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTCh2aXNpYmxlRnVuY3Rp
b25UYWJsZURlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uQ291bnQKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRv
cjo6ZnVuY3Rpb25Db3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uQ291bnQpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRv
cjo6c2V0RnVuY3Rpb25Db3VudChOUzo6VUludGVnZXIgZnVuY3Rpb25Db3VudCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnVuY3Rp
b25Db3VudF8pLCBmdW5jdGlvbkNvdW50KTsKK30KKworLy8gbWV0aG9kOiBzZXRGdW5jdGlvbjph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlOjpzZXRG
dW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlvbiwgTlM6OlVJbnRlZ2Vy
IGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRGdW5jdGlvbl9hdEluZGV4XyksIGZ1bmN0aW9uLCBpbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0RnVuY3Rpb25zOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpW
aXNpYmxlRnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb25zKGNvbnN0IE1UTDo6RnVuY3Rpb25IYW5k
bGUqIGZ1bmN0aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uc193aXRoUmFuZ2Vf
KSwgZnVuY3Rpb25zLCByYW5nZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTWV0YWwuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01ldGFsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmEzNjA2NmI1OTI1M2RiZDdkYWNlYjc0
NmMwYzk0MTQzM2ZmY2RiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01ldGFsLmhwcApAQCAtMCwwICsxLDgwIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NZXRhbC5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTVRM
QWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcCIKKyNpbmNsdWRlICJNVExBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMQWNjZWxlcmF0aW9uU3RydWN0
dXJlVHlwZXMuaHBwIgorI2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKyNpbmNsdWRlICJNVExB
cmd1bWVudEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTEJpbmFyeUFyY2hpdmUuaHBwIgorI2lu
Y2x1ZGUgIk1UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMQmxpdFBhc3Mu
aHBwIgorI2luY2x1ZGUgIk1UTEJ1ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMQ2FwdHVyZU1hbmFn
ZXIuaHBwIgorI2luY2x1ZGUgIk1UTENhcHR1cmVTY29wZS5ocHAiCisjaW5jbHVkZSAiTVRMQ29t
bWFuZEJ1ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1
ZGUgIk1UTENvbW1hbmRRdWV1ZS5ocHAiCisjaW5jbHVkZSAiTVRMQ29tcHV0ZUNvbW1hbmRFbmNv
ZGVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21wdXRlUGFzcy5ocHAiCisjaW5jbHVkZSAiTVRMQ29t
cHV0ZVBpcGVsaW5lLmhwcCIKKyNpbmNsdWRlICJNVExDb3VudGVycy5ocHAiCisjaW5jbHVkZSAi
TVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMRGVwdGhTdGVuY2lsLmhwcCIKKyNpbmNsdWRl
ICJNVExEZXZpY2UuaHBwIgorI2luY2x1ZGUgIk1UTERyYXdhYmxlLmhwcCIKKyNpbmNsdWRlICJN
VExEeW5hbWljTGlicmFyeS5ocHAiCisjaW5jbHVkZSAiTVRMRXZlbnQuaHBwIgorI2luY2x1ZGUg
Ik1UTEZlbmNlLmhwcCIKKyNpbmNsdWRlICJNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzLmhwcCIK
KyNpbmNsdWRlICJNVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0
aW9uSGFuZGxlLmhwcCIKKyNpbmNsdWRlICJNVExGdW5jdGlvbkxvZy5ocHAiCisjaW5jbHVkZSAi
TVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAi
CisjaW5jbHVkZSAiTVRMSGVhcC5ocHAiCisjaW5jbHVkZSAiTVRMSW5kaXJlY3RDb21tYW5kQnVm
ZmVyLmhwcCIKKyNpbmNsdWRlICJNVExJbmRpcmVjdENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNs
dWRlICJNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcCIKKyNpbmNsdWRlICJNVExMaWJy
YXJ5LmhwcCIKKyNpbmNsdWRlICJNVExMaW5rZWRGdW5jdGlvbnMuaHBwIgorI2luY2x1ZGUgIk1U
TFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFBpcGVsaW5l
LmhwcCIKKyNpbmNsdWRlICJNVExQaXhlbEZvcm1hdC5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisjaW5jbHVkZSAiTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwIgorI2luY2x1ZGUgIk1U
TFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQYXNzLmhwcCIK
KyNpbmNsdWRlICJNVExSZW5kZXJQaXBlbGluZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2Uu
aHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5j
bHVkZSAiTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwIgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBw
IgorI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcCIKKyNpbmNsdWRl
ICJNVExUZXh0dXJlLmhwcCIKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisjaW5jbHVkZSAiTVRM
VmVydGV4RGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUu
aHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBRGVm
aW5lcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQURl
ZmluZXMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZjdlZmZlM2ExODNlYjIyNmI3ZTBhOTA2ZTQyYjI5YWFm
ZDAxMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
UXVhcnR6Q29yZS9DQURlZmluZXMuaHBwCkBAIC0wLDAgKzEsNDEgQEAKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFF1YXJ0ekNvcmUvQ0FEZWZp
bmVzLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UK
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNs
dWRlICIuLi9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIF9DQV9FWFBPUlQgX05TX0VYUE9S
VAorI2RlZmluZSBfQ0FfRVhURVJOIF9OU19FWFRFUk4KKyNkZWZpbmUgX0NBX0lOTElORSBfTlNf
SU5MSU5FCisjZGVmaW5lIF9DQV9QQUNLRUQgX05TX1BBQ0tFRAorCisjZGVmaW5lIF9DQV9DT05T
VCh0eXBlLCBuYW1lKSBfTlNfQ09OU1QodHlwZSwgbmFtZSkKKyNkZWZpbmUgX0NBX0VOVU0odHlw
ZSwgbmFtZSkgX05TX0VOVU0odHlwZSwgbmFtZSkKKyNkZWZpbmUgX0NBX09QVElPTlModHlwZSwg
bmFtZSkgX05TX09QVElPTlModHlwZSwgbmFtZSkKKworI2RlZmluZSBfQ0FfVkFMSURBVEVfU0la
RShucywgbmFtZSkgX05TX1ZBTElEQVRFX1NJWkUobnMsIG5hbWUpCisjZGVmaW5lIF9DQV9WQUxJ
REFURV9FTlVNKG5zLCBuYW1lKSBfTlNfVkFMSURBVEVfRU5VTShucywgbmFtZSkKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQU1ldGFsRHJhd2FibGUuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FNZXRhbERyYXdh
YmxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZDA4NzU3MjFjYTk4MDRmZmRjMzRiYTQ1ZWY1OTU0MjMwOTc0
YTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1
YXJ0ekNvcmUvQ0FNZXRhbERyYXdhYmxlLmhwcApAQCAtMCwwICsxLDU3IEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBRdWFydHpDb3JlL0NB
TWV0YWxEcmF3YWJsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjaW5jbHVkZSAiLi4vTWV0YWwvTVRMRHJhd2FibGUuaHBwIgorI2luY2x1ZGUgIi4uL01l
dGFsL01UTFRleHR1cmUuaHBwIgorCisjaW5jbHVkZSAiQ0FEZWZpbmVzLmhwcCIKKyNpbmNsdWRl
ICJDQVByaXZhdGUuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworbmFtZXNwYWNlIENBCit7CitjbGFzcyBNZXRhbERyYXdhYmxlIDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxNZXRhbERyYXdhYmxlLCBNVEw6OkRyYXdhYmxlPgoreworcHVibGlj
OgorICAgIGNsYXNzIE1ldGFsTGF5ZXIqIGxheWVyKCkgY29uc3Q7CisgICAgTVRMOjpUZXh0dXJl
KiAgICAgdGV4dHVyZSgpIGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19DQV9JTkxJTkUgQ0E6Ok1ldGFsTGF5ZXIqIENBOjpN
ZXRhbERyYXdhYmxlOjpsYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TWV0YWxMYXllcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGF5ZXIpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19DQV9JTkxJ
TkUgTVRMOjpUZXh0dXJlKiBDQTo6TWV0YWxEcmF3YWJsZTo6dGV4dHVyZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh0ZXh0dXJlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL1F1YXJ0ekNvcmUvQ0FQcml2YXRlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9RdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODljNjAyNDcwMTUxZTE4
NzMxYTRmM2QzY2ViMWEzYmY3YjJiYWUxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHAKQEAgLTAsMCArMSwx
MDkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIFF1YXJ0ekNvcmUvQ0FQcml2YXRlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJDQURlZmluZXMuaHBwIgorCisjaW5jbHVkZSA8b2Jq
Yy9ydW50aW1lLmg+CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjZGVmaW5lIF9DQV9QUklWQVRFX0NMUyhzeW1ib2wpIChQcml2YXRlOjpDbGFzczo6
c19rIyNzeW1ib2wpCisjZGVmaW5lIF9DQV9QUklWQVRFX1NFTChhY2Nlc3NvcikgKFByaXZhdGU6
OlNlbGVjdG9yOjpzX2sjI2FjY2Vzc29yKQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworI2lmIGRlZmluZWQoQ0FfUFJJVkFURV9JTVBMRU1FTlRBVElP
TikKKworI2RlZmluZSBfQ0FfUFJJVkFURV9WSVNJQklMSVRZIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImhpZGRlbiIpKSkKKyNkZWZpbmUgX0NBX1BSSVZBVEVfSU1QT1JUIF9fYXR0cmlidXRl
X18oKHdlYWtfaW1wb3J0KSkKKworI2lmIF9fT0JKQ19fCisjZGVmaW5lIF9DQV9QUklWQVRFX09C
SkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgKChfX2JyaWRnZSB2b2lkKilvYmpjX2xvb2tVcENsYXNz
KCNzeW1ib2wpKQorI2Vsc2UKKyNkZWZpbmUgX0NBX1BSSVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Mo
c3ltYm9sKSBvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wpCisjZW5kaWYgLy8gX19PQkpDX18KKwor
I2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfQ0xTKHN5bWJvbCkgdm9pZCogc19rIyNzeW1ib2wgX0NB
X1BSSVZBVEVfVklTSUJJTElUWSA9IF9DQV9QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJv
bCk7CisjZGVmaW5lIF9DQV9QUklWQVRFX0RFRl9QUk8oc3ltYm9sKQorI2RlZmluZSBfQ0FfUFJJ
VkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIFNFTCBzX2sjI2FjY2Vzc29yIF9DQV9QUklW
QVRFX1ZJU0lCSUxJVFkgPSBzZWxfcmVnaXN0ZXJOYW1lKHN5bWJvbCk7CisjZGVmaW5lIF9DQV9Q
UklWQVRFX0RFRl9TVFIodHlwZSwgc3ltYm9sKSAgICAgICAgICAgICAgICBcCisgICAgX0NBX0VY
VEVSTiB0eXBlIGNvbnN0IENBIyNzeW1ib2wgX0NBX1BSSVZBVEVfSU1QT1JUOyBcCisgICAgdHlw
ZSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgQ0E6OnN5bWJvbCA9IChudWxscHRyICE9ICZD
QSMjc3ltYm9sKSA/IENBIyNzeW1ib2wgOiBudWxscHRyOworCisjZWxzZQorCisjZGVmaW5lIF9D
QV9QUklWQVRFX0RFRl9DTFMoc3ltYm9sKSBleHRlcm4gdm9pZCogc19rIyNzeW1ib2w7CisjZGVm
aW5lIF9DQV9QUklWQVRFX0RFRl9QUk8oc3ltYm9sKQorI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZf
U0VMKGFjY2Vzc29yLCBzeW1ib2wpIGV4dGVybiBTRUwgc19rIyNhY2Nlc3NvcjsKKyNkZWZpbmUg
X0NBX1BSSVZBVEVfREVGX1NUUih0eXBlLCBzeW1ib2wpCisKKyNlbmRpZiAvLyBDQV9QUklWQVRF
X0lNUExFTUVOVEFUSU9OCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCituYW1lc3BhY2UgQ0EKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFt
ZXNwYWNlIENsYXNzCisgICAgeworCisgICAgfSAvLyBDbGFzcworfSAvLyBQcml2YXRlCit9IC8v
IENBCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitu
YW1lc3BhY2UgQ0EKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFtZXNwYWNlIFByb3Rv
Y29sCisgICAgeworCisgICAgICAgIF9DQV9QUklWQVRFX0RFRl9QUk8oQ0FNZXRhbERyYXdhYmxl
KTsKKworICAgIH0gLy8gUHJvdG9jb2wKK30gLy8gUHJpdmF0ZQorfSAvLyBDQQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIENBCit7
CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBTZWxlY3RvcgorICAgIHsKKwor
ICAgICAgICBfQ0FfUFJJVkFURV9ERUZfU0VMKGxheWVyLAorICAgICAgICAgICAgImxheWVyIik7
CisgICAgICAgIF9DQV9QUklWQVRFX0RFRl9TRUwodGV4dHVyZSwKKyAgICAgICAgICAgICJ0ZXh0
dXJlIik7CisKKyAgICB9IC8vIENsYXNzCit9IC8vIFByaXZhdGUKK30gLy8gQ0EKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJlMWViNDY3YjE2YmI4MGZkZmQxOTZhYThiOTNiZmVkYzU0NDcxOTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9R
dWFydHpDb3JlLmhwcApAQCAtMCwwICsxLDI3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIkNBTWV0
YWxEcmF3YWJsZS5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1JFQURN
RS5tZCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9SRUFETUUubWQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTk1MDcxNTVlYjc3ZmMyNDdmNDYzYjU0MmFmOWJlZjBlZWQ3Mzg1NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9SRUFETUUubWQKQEAgLTAsMCAr
MSwyNDUgQEAKKyMjIEFib3V0CisKKyoqbWV0YWwtY3BwKiogaXMgYSBsb3cgb3ZlcmhlYWQgYW5k
IGhlYWRlciBvbmx5IEMrKyBpbnRlcmZhY2UgZm9yIE1ldGFsIHRoYXQgaGVscHMgZGV2ZWxvcGVy
cyBhZGQgTWV0YWwgZnVuY3Rpb25hbGl0eSB0byBncmFwaGljcyBhcHBsaWNhdGlvbnMgdGhhdCBh
cmUgd3JpdHRlbiBpbiBDKysgKHN1Y2ggYXMgZ2FtZSBlbmdpbmVzKS4gKiptZXRhbC1jcHAqKiBy
ZW1vdmVzIHRoZSBuZWVkIHRvIGNyZWF0ZSBhIHNoaW0gYW5kIGFsbG93cyBkZXZlbG9wZXJzIHRv
IGNhbGwgTWV0YWwgZnVuY3Rpb25zIGRpcmVjdGx5IGZyb20gYW55d2hlcmUgaW4gdGhlaXIgZXhp
c3RpbmcgQysrIGNvZGUuCisKKworIyMgSGlnaGxpZ2h0cworCistIERyb3AgaW4gQysrIGFsdGVy
bmF0aXZlIGludGVyZmFjZSB0byB0aGUgTWV0YWwgT2JqZWN0aXZlLUMgaGVhZGVycy4KKy0gRGly
ZWN0IG1hcHBpbmcgb2YgYWxsIE1ldGFsIE9iamVjdGl2ZS1DIGNsYXNzZXMsIGNvbnN0YW50cyBh
bmQgZW51bXMgdG8gQysrIGluIHRoZSBNVEwgQysrIG5hbWVzcGFjZS4KKy0gTm8gbWVhc3VyYWJs
ZSBvdmVyaGVhZCBjb21wYXJlZCB0byBjYWxsaW5nIE1ldGFsIE9iamVjdGl2ZS1DIGhlYWRlcnMs
IGR1ZSB0byBpbmxpbmluZyBvZiBDKysgZnVuY3Rpb24gY2FsbHMuCistIE5vIHVzYWdlIG9mIHdy
YXBwZXIgY29udGFpbmVycyB0aGF0IHJlcXVpcmUgYWRkaXRpb25hbCBhbGxvY2F0aW9ucy4KKy0g
UmVxdWlyZXMgQysrMTcgZHVlIHRvIHRoZSB1c2FnZSBvZiBgY29uc3RleHByYCBpbiBgTlM6Ok9i
amVjdGAuCistIElkZW50aWNhbCBoZWFkZXIgZmlsZXMgYW5kIGZ1bmN0aW9uL2NvbnN0YW50L2Vu
dW0gYXZhaWxhYmlsaXR5IGZvciBpT1MsIG1hY09TIGFuZCB0dk9TLgorLSBCYWNrd2FyZHMgY29t
cGF0aWJpbGl0eTogQWxsIGBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0cy4uLigpYCBmdW5jdGlv
bnMgY2hlY2sgaWYgdGhlaXIgcmVxdWlyZWQgc2VsZWN0b3JzIGV4aXN0IGFuZCBhdXRvbWF0aWNh
bGx5IHJldHVybiBgZmFsc2VgIGlmIG5vdC4KKy0gU3RyaW5nIChgRXJyb3JEb21haW5gKSBjb25z
dGFudHMgYXJlIHdlYWsgbGlua2VkIGFuZCBhdXRvbWF0aWNhbGx5IHNldCB0byBgbnVsbHB0cmAg
aWYgbm90IGF2YWlsYWJsZS4KKworIyMgTWVtb3J5IEFsbG9jYXRpb24gUG9saWN5CisKKyoqbWV0
YWwtY3BwKiogZm9sbG93cyB0aGUgb2JqZWN0IGFsbG9jYXRpb24gcG9saWNpZXMgb2YgQ29jb2Eg
YW5kIENvY29hIFRvdWNoLiBVbmRlcnN0YW5kaW5nIHRob3NlIHJ1bGVzIGlzIGVzcGVjaWFsbHkg
aW1wb3J0YW50IHdoZW4gdXNpbmcgbWV0YWwtY3BwLCBhcyBDKysgb2JqZWN0cyBhcmUgbm90IGVs
aWdpYmxlIGZvciBhdXRvbWF0aWMgcmVmZXJlbmNlIGNvdW50aW5nIChBUkMpLgorCisqKm1ldGFs
LWNwcCoqIG9iamVjdHMgYXJlIHJlZmVyZW5jZSBjb3VudGVkLiBUbyBoZWxwIGNvbnZleSBhbmQg
bWFuYWdlIG9iamVjdCBsaWZlY3ljbGVzLCB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb25zIGFyZSBv
YnNlcnZlZDoKKworMS4gKllvdSBvd24gYW55IG9iamVjdCByZXR1cm5lZCBieSBtZXRob2RzIHdo
b3NlIG5hbWUgYmVnaW5zIHdpdGgqIGBhbGxvY2AgKiwqIGBuZXdgICosKiBgY29weWAgKiwgb3Iq
IGBtdXRhYmxlQ29weWAuIFRoZSBtZXRob2QgcmV0dXJucyB0aGVzZSBvYmplY3RzIHdpdGggYHJl
dGFpbkNvdW50YCBlcXVhbHMgdG8gYDFgLgorMi4gKllvdSBjYW4gdGFrZSBvd25lcnNoaXAgb2Yg
YW4gb2JqZWN0IGJ5IGNhbGxpbmcgaXRzKiBgYGByZXRhaW4oKWBgYCAqbWV0aG9kKi4gQSByZWNl
aXZlZCBvYmplY3QgaXMgbm9ybWFsbHkgZ3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgd2l0aGlu
IHRoZSBtZXRob2QgaXQgd2FzIHJlY2VpdmVkIGluLiBZb3UgdXNlIGByZXRhaW5gIGluIHR3byBz
aXR1YXRpb25zOiAoMSkgSW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIGFuIGFjY2Vzc29yIG1ldGhv
ZCAoYSBzZXR0ZXIpIG9yIHRvIHRha2Ugb3duZXJzaGlwIG9mIGFuIG9iamVjdDsgYW5kICgyKSBU
byBwcmV2ZW50IGFuIG9iamVjdCBmcm9tIGJlaW5nIGRlYWxsb2NhdGVkIGFzIGEgc2lkZS1lZmZl
Y3Qgb2Ygc29tZSBvdGhlciBvcGVyYXRpb24uCiszLiAqV2hlbiB5b3Ugbm8gbG9uZ2VyIG5lZWQg
aXQsIHlvdSBtdXN0IHJlbGlucXVpc2ggb3duZXJzaGlwIG9mIGFuIG9iamVjdCB5b3Ugb3duKi4g
WW91IHJlbGlucXVpc2ggb3duZXJzaGlwIGJ5IGNhbGxpbmcgaXRzIGByZWxlYXNlKClgIG9yIGBh
dXRvcmVsZWFzZSgpYCBtZXRob2QuCis0LiAqWW91IG11c3Qgbm90IHJlbGlucXVpc2ggb3duZXJz
aGlwIG9mIGFuIG9iamVjdCB5b3UgZG8gbm90IG93biouCisKK1doZW4gYW4gb2JqZWN0J3MgYHJl
dGFpbkNvdW50YCByZWFjaGVzIGAwYCwgdGhlIG9iamVjdCBpcyBpbW1lZGlhdGVseSBkZWFsbG9j
YXRlZC4gSXQgaXMgaWxsZWdhbCB0byBjYWxsIG1ldGhvZHMgb24gYSBkZWFsbG9jYXRlZCBvYmpl
Y3QgYW5kIGl0IG1heSBsZWFkIHRvIGFuIGFwcGxpY2F0aW9uIGNyYXNoLgorCisjIyMgQXV0b3Jl
bGVhc2VQb29scyBhbmQgT2JqZWN0cworCitTZXZlcmFsIG1ldGhvZHMgdGhhdCBjcmVhdGUgdGVt
cG9yYXJ5IG9iamVjdHMgaW4gKiptZXRhbC1jcHAqKiBhZGQgdGhlbSB0byBhbiBgQXV0b3JlbGVh
c2VQb29sYCB0byBoZWxwIG1hbmFnZSB0aGVpciBsaWZldGltZXMuIEluIHRoZXNlIHNpdHVhdGlv
bnMsIGFmdGVyICoqbWV0YWwtY3BwKiogY3JlYXRlcyB0aGUgb2JqZWN0LCBpdCBhZGRzIGl0IHRv
IGFuIGBBdXRvcmVsZWFzZVBvb2xgLCB3aGljaCB3aWxsIHJlbGVhc2UgaXRzIG9iamVjdHMgd2hl
biB5b3UgcmVsZWFzZSAob3IgZHJhaW4pIGl0LgorCitCeSBhZGRpbmcgdGVtcG9yYXJ5IG9iamVj
dHMgdG8gYW4gQXV0b3JlbGVhc2VQb29sLCB5b3UgZG8gbm90IG5lZWQgdG8gZXhwbGljaXRseSBj
YWxsIGByZWxlYXNlKClgIHRvIGRlYWxsb2NhdGUgdGhlbS4gSW5zdGVhZCwgeW91IGNhbiByZWx5
IG9uIHRoZSBgQXV0b3JlbGVhc2VQb29sYCB0byBpbXBsaWNpdGx5IG1hbmFnZSB0aG9zZSBsaWZl
dGltZXMuCisKK0lmIHlvdSBjcmVhdGUgYW4gb2JqZWN0IHdpdGggYSBtZXRob2QgdGhhdCBkb2Vz
IG5vdCBiZWdpbiB3aXRoIGBhbGxvY2AsIGBuZXdgLCBgY29weWAsIG9yIGBtdXRhYmxlQ29weWAs
IHRoZSBjcmVhdGluZyBtZXRob2QgYWRkcyB0aGUgb2JqZWN0IHRvIGFuIGF1dG9yZWxlYXNlIHBv
b2wuCisKK1RoZSB0eXBpY2FsIHNjb3BlIG9mIGFuIGBBdXRvcmVsZWFzZVBvb2xgIGlzIG9uZSBm
cmFtZSBvZiByZW5kZXJpbmcgZm9yIHRoZSBtYWluIHRocmVhZCBvZiB0aGUgcHJvZ3JhbS4gV2hl
biB0aGUgdGhyZWFkIHJldHVybnMgY29udHJvbCB0byB0aGUgUnVuTG9vcCAoYW4gb2JqZWN0IHJl
c3BvbnNpYmxlIGZvciByZWNlaXZpbmcgaW5wdXQgYW5kIGV2ZW50cyBmcm9tIHRoZSB3aW5kb3dp
bmcgc3lzdGVtKSwgdGhlIHBvb2wgaXMgKmRyYWluZWQqLCByZWxlYXNpbmcgaXRzIG9iamVjdHMu
CisKK1lvdSBjYW4gY3JlYXRlIGFuZCBtYW5hZ2UgYWRkaXRpb25hbCBgQXV0b3JlbGVhc2VQb29s
YHMgYXQgc21hbGxlciBzY29wZXMgdG8gcmVkdWNlIHlvdXIgcHJvZ3JhbSdzIHdvcmtpbmcgc2V0
LCBhbmQgeW91IGFyZSByZXF1aXJlZCB0byBkbyBzbyBmb3IgYW55IGFkZGl0aW9uYWwgdGhyZWFk
cyB5b3VyIHByb2dyYW0gY3JlYXRlcy4KKworSWYgYW4gb2JqZWN0J3MgbGlmZWN5Y2xlIG5lZWRz
IHRvIGJlIGV4dGVuZGVkIGJleW9uZCB0aGUgYEF1dG9yZWxlYXNlUG9vbGAncyBzY29wZSwgeW91
IGNhbiBjbGFpbSBvd25lcnNoaXAgb2YgaXQgKGF2b2lkaW5nIGl0cyByZWxlYXNlIGJleW9uZCB0
aGUgcG9vbCdzIHNjb3BlKSBieSBjYWxsaW5nIGl0cyBgcmV0YWluKClgIG1ldGhvZCBiZWZvcmUg
aXRzIHBvb2wgaXMgZHJhaW5lZC4gSW4gdGhlc2UgY2FzZXMsIHlvdSB3aWxsIGJlIHJlc3BvbnNp
YmxlIGZvciBtYWtpbmcgdGhlIGFwcHJvcHJpYXRlIGByZWxlYXNlKClgIGNhbGwgb24gdGhlIG9i
amVjdCBhZnRlciB5b3Ugbm8gbG9uZ2VyIG5lZWQgaXQuIAorCitZb3UgY2FuIGZpbmQgYSBtb3Jl
LWRldGFpbGVkIGludHJvZHVjdGlvbiB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgcnVsZXMgaGVy
ZTogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvYXJjaGl2ZS9kb2N1bWVudGF0
aW9uL0NvY29hL0NvbmNlcHR1YWwvTWVtb3J5TWdtdC9BcnRpY2xlcy9tbVJ1bGVzLmh0bWwuCisK
K0ZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGFwcGxpY2F0aW9uJ3MgUnVuTG9vcCwgcGxlYXNl
IGZpbmQgaXRzIGRvY3VtZW50YXRpb24gaGVyZTogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29t
L2RvY3VtZW50YXRpb24vZm91bmRhdGlvbi9uc3J1bmxvb3AKKworIyMjIFVzZSBhbmQgZGVidWcg
QXV0b3JlbGVhc2VQb29scworCitXaGVuIHlvdSBjcmVhdGUgYW4gYXV0b3JlbGVhc2VkIG9iamVj
dCBhbmQgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIGBBdXRvcmVsZWFzZVBvb2xgLCB0aGUgb2JqZWN0
IGlzIGxlYWtlZC4KKworVG8gcHJldmVudCB0aGlzLCB5b3Ugbm9ybWFsbHkgY3JlYXRlIGFuIGBB
dXRvcmVsZWFzZVBvb2xgIGluIHlvdXIgcHJvZ3JhbSdzIGBtYWluYCBmdW5jdGlvbiwgYW5kIGlu
IHRoZSBlbnRyeSBmdW5jdGlvbiBmb3IgZXZlcnkgdGhyZWFkIHlvdSBjcmVhdGUuIFlvdSBtYXkg
YWxzbyBjcmVhdGUgYWRkaXRpb25hbCBgQXV0b3JlbGVhc2VQb29sYHMgdG8gYXZvaWQgZ3Jvd2lu
ZyB5b3VyIHByb2dyYW0ncyBoaWdoIG1lbW9yeSB3YXRlcm1hcmsgd2hlbiB5b3UgY3JlYXRlIHNl
dmVyYWwgYXV0b3JlbGVhc2VkIG9iamVjdHMsIHN1Y2ggYXMgd2hlbiByZW5kZXJpbmcuCisKK1Vz
ZSB0aGUgRW52aXJvbm1lbnQgVmFyaWFibGUgYE9CSkNfREVCVUdfTUlTU0lOR19QT09MUz1ZRVNg
IHRvIHByaW50IGEgcnVudGltZSB3YXJuaW5nIHdoZW4gYW4gYXV0b3JlbGVhc2VkIG9iamVjdCBp
cyBsZWFrZWQgYmVjYXVzZSBubyBlbmNsb3NpbmcgYEF1dG9yZWxlYXNlUG9vbGAgaXMgYXZhaWxh
YmxlIGZvciBpdHMgdGhyZWFkLgorCitZb3UgY2FuIGFsc28gcnVuIGBsZWFrcyAtLWF1dG9yZWxl
YXNlUG9vbHNgIG9uIGEgbWVtZ3JhcGggZmlsZSBvciBhIHByb2Nlc3MgSUQgKG1hY09TIG9ubHkp
IHRvIHZpZXcgYSBsaXN0aW5nIG9mIHlvdXIgcHJvZ3JhbSdzIGBBdXRvcmVsZWFzZVBvb2xgcyBh
bmQgYWxsIG9iamVjdHMgdGhleSBjb250YWluLgorCisjIyMgbnVsbHB0cgorCitTaW1pbGFyIHRv
IE9iamVjdGl2ZS1DLCBpdCBpcyBsZWdhbCB0byBjYWxsIGFueSBtZXRob2QsIGluY2x1ZGluZyBg
cmV0YWluKClgIGFuZCBgcmVsZWFzZSgpYCwgb24gYG51bGxwdHJgICJvYmplY3RzIi4gV2hpbGUg
Y2FsbGluZyBtZXRob2RzIG9uIGBudWxscHRyYCBzdGlsbCBkb2VzIGluY3VyIGluIGZ1bmN0aW9u
IGNhbGwgb3ZlcmhlYWQsIHRoZSBlZmZlY3RpdmUgcmVzdWx0IGlzIGVxdWl2YWxlbnQgb2YgYSBO
T1AuCisKK0NvbnZlcnNlbHksIGRvIG5vdCBhc3N1bWUgdGhhdCBiZWNhdXNlIGNhbGxpbmcgYSBt
ZXRob2Qgb24gYSBwb2ludGVyIGRpZCBub3QgcmVzdWx0IGluIGEgY3Jhc2gsIHRoYXQgdGhlIHBv
aW50ZWQtdG8gb2JqZWN0IGlzIHZhbGlkLgorCisjIyBBZGRpbmcgbWV0YWwtY3BwIHRvIGEgUHJv
amVjdAorCitTaW1wbHkgaW5jbHVkZSBgTWV0YWwvTWV0YWwuaHBwYC4gVG8gZW5zdXJlIHRoYXQg
dGhlIHNlbGVjdG9yIGFuZCBjbGFzcyBzeW1ib2xzIGFyZSBsaW5rZWQsIGFkZCB0byBvbmUgb2Yg
eW91ciBjcHAgZmlsZXM6CisKK2BgYGNwcAorI2RlZmluZSBOU19QUklWQVRFX0lNUExFTUVOVEFU
SU9OCisjZGVmaW5lIE1UTF9QUklWQVRFX0lNUExFTUVOVEFUSU9OCisKKyNpbmNsdWRlICJNZXRh
bC9NZXRhbC5ocHAiCitgYGAKKworSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBRdWFydHpDb3JlIHdy
YXBwZXIsIGFkZDoKKworYGBgY3BwCisjZGVmaW5lIENBX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04K
KworI2luY2x1ZGUgIlF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAiCitgYGAKKworIyMgR2VuZXJh
dGluZyBhIFNpbmdsZSBIZWFkZXIgRmlsZQorCitQdXJlbHkgb3B0aW9uYWw6IFlvdSBjYW4gZ2Vu
ZXJhdGUgYSBzaW5nbGUgaGVhZGVyIGZpbGUgdGhhdCBjb250YWlucyBhbGwgKiptZXRhbC1jcHAq
KiBoZWFkZXJzIHZpYToKKworYGBgc2hlbGwKKy4vU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFk
ZXIucHkgRm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcCBRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBw
IE1ldGFsL01ldGFsLmhwcAorYGBgCisKK0J5IGRlZmF1bHQgdGhlIGdlbmVyYXRlZCBoZWFkZXIg
ZmlsZSB3aWxsIGJlIHdyaXR0ZW4gdG8gYC4vU2luZ2xlSGVhZGVyL01ldGFsLmhwcGAKKworIyMg
RXhhbXBsZXMKKworIyMjIyBDcmVhdGluZyB0aGUgZGV2aWNlCisKKyMjIyMjIyBPYmplY3RpdmUt
QyAod2l0aCBhdXRvbWF0aWMgcmVmZXJlbmNlIGNvdW50aW5nKQorCitgYGBvYmpjCitpZDwgTVRM
RGV2aWNlID4gZGV2aWNlID0gTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOworCisvLyAu
Li4KK2BgYAorCisjIyMjIyMgT2JqZWN0aXZlLUMKKworYGBgb2JqYworaWQ8IE1UTERldmljZSA+
IGRldmljZSA9IE1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKTsKKworLy8gLi4uCisKK1tk
ZXZpY2UgcmVsZWFzZV07CitgYGAKKworIyMjIyMjIEMrKworCitgYGBjcHAKK01UTDo6RGV2aWNl
KiBwRGV2aWNlID0gTVRMOjpDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCk7CisKKy8vIC4uLgor
CitwRGV2aWNlLT5yZWxlYXNlKCk7CitgYGAKKworIyMjIyBNZXRhbCBmdW5jdGlvbiBjYWxscyBt
YXAgZGlyZWN0bHkgdG8gQysrCisKKyMjIyMjIyBPYmplY3RpdmUtQyAod2l0aCBhdXRvbWF0aWMg
cmVmZXJlbmNlIGNvdW50aW5nKQorCitgYGBvYmpjCitNVExTYW1wbGVyRGVzY3JpcHRvciogc2Ft
cGxlckRlc2NyaXB0b3IgPSBbW01UTFNhbXBsZXJEZXNjcmlwdG9yIGFsbG9jXSBpbml0XTsKKwor
W3NhbXBsZXJEZXNjcmlwdG9yIHNldFNBZGRyZXNzTW9kZTogTVRMU2FtcGxlckFkZHJlc3NNb2Rl
UmVwZWF0XTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRUQWRkcmVzc01vZGU6IE1UTFNhbXBsZXJB
ZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0UkFkZHJlc3NNb2RlOiBN
VExTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXRdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldE1hZ0Zp
bHRlcjogTVRMU2FtcGxlck1pbk1hZ0ZpbHRlckxpbmVhcl07Citbc2FtcGxlckRlc2NyaXB0b3Ig
c2V0TWluRmlsdGVyOiBNVExTYW1wbGVyTWluTWFnRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVz
Y3JpcHRvciBzZXRNaXBGaWx0ZXI6IE1UTFNhbXBsZXJNaXBGaWx0ZXJMaW5lYXJdOworW3NhbXBs
ZXJEZXNjcmlwdG9yIHNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnM6IFlFU107CisKK2lkPCBNVExT
YW1wbGVyU3RhdGUgPiBzYW1wbGVyU3RhdGUgPSBbZGV2aWNlIG5ld1NhbXBsZXJTdGF0ZVdpdGhE
ZXNjcmlwdG9yOnNhbXBsZXJEZXNjcmlwdG9yXTsKK2BgYAorCisjIyMjIyMgT2JqZWN0aXZlLUMK
KworYGBgb2JqYworTVRMU2FtcGxlckRlc2NyaXB0b3IqIHNhbXBsZXJEZXNjcmlwdG9yID0gW1tN
VExTYW1wbGVyRGVzY3JpcHRvciBhbGxvY10gaW5pdF07CisKK1tzYW1wbGVyRGVzY3JpcHRvciBz
ZXRTQWRkcmVzc01vZGU6IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRl
c2NyaXB0b3Igc2V0VEFkZHJlc3NNb2RlOiBNVExTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXRdOwor
W3NhbXBsZXJEZXNjcmlwdG9yIHNldFJBZGRyZXNzTW9kZTogTVRMU2FtcGxlckFkZHJlc3NNb2Rl
UmVwZWF0XTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRNYWdGaWx0ZXI6IE1UTFNhbXBsZXJNaW5N
YWdGaWx0ZXJMaW5lYXJdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldE1pbkZpbHRlcjogTVRMU2Ft
cGxlck1pbk1hZ0ZpbHRlckxpbmVhcl07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0TWlwRmlsdGVy
OiBNVExTYW1wbGVyTWlwRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRTdXBw
b3J0QXJndW1lbnRCdWZmZXJzOiBZRVNdOworCitpZDwgTVRMU2FtcGxlclN0YXRlID4gc2FtcGxl
clN0YXRlID0gW2RldmljZSBuZXdTYW1wbGVyU3RhdGVXaXRoRGVzY3JpcHRvcjpzYW1wbGVyRGVz
Y3JpcHRvcl07CisKK1tzYW1wbGVyRGVzY3JpcHRvciByZWxlYXNlXTsKKworLy8gLi4uCisKK1tz
YW1wbGVyU3RhdGUgcmVsZWFzZV07CitgYGAKKworIyMjIyMjIEMrKworCitgYGBjcHAKK01UTDo6
U2FtcGxlckRlc2NyaXB0b3IqIHBTYW1wbGVyRGVzY3JpcHRvciA9IE1UTDo6U2FtcGxlckRlc2Ny
aXB0b3I6OmFsbG9jKCktPmluaXQoKTsKKworcFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRTQWRkcmVz
c01vZGUoIE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0ICk7CitwU2FtcGxlckRlc2NyaXB0
b3ItPnNldFRBZGRyZXNzTW9kZSggTVRMOjpTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXQgKTsKK3BT
YW1wbGVyRGVzY3JpcHRvci0+c2V0UkFkZHJlc3NNb2RlKCBNVEw6OlNhbXBsZXJBZGRyZXNzTW9k
ZVJlcGVhdCApOworcFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRNYWdGaWx0ZXIoIE1UTDo6U2FtcGxl
ck1pbk1hZ0ZpbHRlckxpbmVhciApOworcFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRNaW5GaWx0ZXIo
IE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlckxpbmVhciApOworcFNhbXBsZXJEZXNjcmlwdG9yLT5z
ZXRNaXBGaWx0ZXIoIE1UTDo6U2FtcGxlck1pcEZpbHRlckxpbmVhciApOworcFNhbXBsZXJEZXNj
cmlwdG9yLT5zZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzKCB0cnVlICk7CisKK01UTDo6U2FtcGxl
clN0YXRlKiBwU2FtcGxlclN0YXRlID0gcERldmljZS0+bmV3U2FtcGxlclN0YXRlKCBwU2FtcGxl
ckRlc2NyaXB0b3IgKTsKKworcFNhbXBsZXJEZXNjcmlwdG9yLT5yZWxlYXNlKCk7CisKKy8vIC4u
LgorCitwU2FtcGxlclN0YXRlLT5yZWxlYXNlKCk7CitgYGAKKworIyMjIyBBIHN1YnNldCBvZiBi
aW5kaW5ncyBmb3IgRm91bmRhdGlvbiBjbGFzc2VzIGlzIHByb3ZpZGVkIGZvciBzZWFtbGVzcyBp
bnRlZ3JhdGlvbgorCisjIyMjIyMgT2JqZWN0aXZlLUMgKHdpdGggYXV0b21hdGljIHJlZmVyZW5j
ZSBjb3VudGluZykKKworYGBgb2JqYworTlNBdXRvcmVsZWFzZVBvb2wqICBwb29sICAgPSBbW05T
QXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKK05TU3RyaW5nKiAgICAgICAgICAgc3RyaW5n
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOiAiSGVsbG8gV29ybGQiIGVuY29kaW5nOiBO
U0FTQ0lJU3RyaW5nRW5jb2RpbmddOworCitwcmludGYoICJzdHJpbmcgPSBcIiVzXCJcbiIsIFtz
dHJpbmcgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVNDSUlTdHJpbmdFbmNvZGluZ10gKTsKK2Bg
YAorCisjIyMjIyMgT2JqZWN0aXZlLUMKKworYGBgb2JqYworTlNBdXRvcmVsZWFzZVBvb2wqIHBv
b2wgICA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworTlNTdHJpbmcqICAgICAg
ICAgIHN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzogIkhlbGxvIFdvcmxkIiBl
bmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXTsKKwkJCQkJCQkJCitwcmludGYoICJzdHJp
bmcgPSBcIiVzXCJcbiIsIFtzdHJpbmcgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVNDSUlTdHJp
bmdFbmNvZGluZ10gKTsKKworW3Bvb2wgcmVsZWFzZV07CitgYGAKKworIyMjIyMjIEMrKworCitg
YGBjcHAKK05TOjpBdXRvcmVsZWFzZVBvb2wqIHBQb29sICAgPSBOUzo6QXV0b3JlbGVhc2VQb29s
OjphbGxvYygpLT5pbml0KCk7CitOUzo6U3RyaW5nKiAgICAgICAgICBwU3RyaW5nID0gTlM6OlN0
cmluZzo6c3RyaW5nKCAiSGVsbG8gV29ybGQiLCBOUzo6QVNDSUlTdHJpbmdFbmNvZGluZyApOwor
CitwcmludGYoICJwU3RyaW5nID0gXCIlc1wiXG4iLCBwU3RyaW5nLT5jU3RyaW5nKCBOUzo6QVND
SUlTdHJpbmdFbmNvZGluZyApICk7CisKK3BQb29sLT5yZWxlYXNlKCk7CitgYGAKKworIyMjIyAg
SW50ZXJvcGVyYWJpbGl0eSB3aXRoIENvcmVGb3VuZGF0aW9uCisKK2BgYGNwcAorTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogcEdlb0Rlc2NyaXB0
b3IgID0gTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
cjo6YWxsb2MoKS0+aW5pdCgpOworQ0ZUeXBlUmVmICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvcnNbXSAgID0geyAoIENGVHlwZVJlZiApKCBwR2Vv
RGVzY3JpcHRvciApIH07CitOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwR2VvRGVzY3JpcHRvcnMgPSAoIE5TOjpBcnJheSogKSggQ0ZBcnJheUNy
ZWF0ZSgga0NGQWxsb2NhdG9yRGVmYXVsdCwgZGVzY3JpcHRvcnMsIFNJWkVPRl9BUlJBWSggZGVz
Y3JpcHRvcnMpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzICkgKTsKKworLy8gLi4uCisKK3BHZW9E
ZXNjcmlwdG9ycy0+cmVsZWFzZSgpOworYGBgCisKKyMjIyMgQWNjZXNzaW5nIGEgQ0FNZXRhbERy
YXdhYmxlCisKK2BgYG9iamMKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FNZXRhbExheWVyLmg+Cisj
aW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwPgorCisvLyAuLi4KKworQ0FNZXRhbExh
eWVyKiAgICAgICAgIG1ldGFsTGF5ZXIgICAgICAgICA9IC8qIGdldCB5b3VyIGxheWVyIGZyb20g
eW91ciB2aWV3ICovOworaWQ8IENBTWV0YWxEcmF3YWJsZSA+IG1ldGFsRHJhd2FibGUgICAgICA9
IFttZXRhbExheWVyIG5leHREcmF3YWJsZV07CitDQTo6TWV0YWxEcmF3YWJsZSogICAgcE1ldGFs
Q3BwRHJhd2FibGUgID0gKCBfX2JyaWRnZSBDQTo6TWV0YWxEcmF3YWJsZSogKSBtZXRhbERyYXdh
YmxlOworCisvLyAuLi4KK2BgYApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5IGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU1OGU0OWVjNzc2YWM5OWY3MDkwNWY2YTUxZDc2OWQwNzUzOWU1NGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvU2luZ2xlSGVhZGVyL01ha2VT
aW5nbGVIZWFkZXIucHkKQEAgLTAsMCArMSwyNzEgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisKKyMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBTaW5nbGVI
ZWFkZXIvTWFrZVNpbmdsZUhlYWRlci5weQorIworIyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisjCisjICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMKKyMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbXBvcnQgYXJn
cGFyc2UKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0
IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCisjLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgSGVhZGVyUHJlZml4KCBvYmplY3Qg
KToKKwlfX3RlbXBsYXRlIAkJCT0gKCAnLy9cbicKKwkJCQkJCQknLy8ge2ZpbGV9XG4nCisJCQkJ
CQkJJy8vXG4nCisJCQkJCQkJJy8vIHttZXRhX2RhdGF9XG4nCisJCQkJCQkJJy8vXG4nCisJCQkJ
CQkJJy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLlxuJworCQkJCQkJCScvL1xuJwor
CQkJCQkJCScvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTtcbicKKwkJCQkJCQknLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuJworCQkJCQkJCScvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbicKKwkJCQkJCQknLy9cbicK
KwkJCQkJCQknLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MFxuJworCQkJCQkJCScvL1xuJworCQkJCQkJCScvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4nCisJCQkJCQkJJy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsXG4nCisJCQkJCQkJJy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuJworCQkJCQkJCScvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kXG4nCisJCQkJCQkJJy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxu
JworCQkJCQkJCScvL1xuJworCQkJCQkJCSdcbicgKQorCisJX190ZW1wbGF0ZV9jb21taXQJPQkn
QXV0b2dlbmVyYXRlZCBmcm9tIGNvbW1pdCB7Y29tbWl0fS4nCisJX190ZW1wbGF0ZV9kYXRlCQk9
CSdBdXRvZ2VuZXJhdGVkIG9uICVCICVkLCAlWS4nCisKKwlkZWYgX19pbml0X18oIHNlbGYsIGZp
bGUgKToKKwkJc2VsZi5fX2ZpbGUgPSBmaWxlCisKKwlkZWYgX19zdHJfXyggc2VsZiApOgorCQly
ZXR1cm4gc2VsZi5fX3RlbXBsYXRlLmZvcm1hdCggZmlsZSA9IHNlbGYuX19maWxlLCBtZXRhX2Rh
dGEgPSBzZWxmLl9fbWV0YV9kYXRhX3N0cmluZygpICkKKworCWRlZiBfX2dldF9jb21taXRfaGFz
aCggc2VsZiApOgorCQlnaXRfY29tbWl0X2hhc2ggPSBOb25lCisKKwkJdHJ5OgorCQkJZ2l0X2Rp
cgkJCT0gb3MucGF0aC5kaXJuYW1lKCBvcy5wYXRoLnJlYWxwYXRoKCBfX2ZpbGVfXyApICkKKwkJ
CXByb2MgCQkJPSBzdWJwcm9jZXNzLlBvcGVuKCBbICdnaXQnLCAncmV2LXBhcnNlJywgJ0hFQUQn
IF0sIGN3ZCA9IGdpdF9kaXIsIHN0ZG91dCA9IHN1YnByb2Nlc3MuUElQRSwgc3RkZXJyID0gc3Vi
cHJvY2Vzcy5QSVBFICkKKwkJCWdpdF9jb21taXRfaGFzaCA9IHByb2Muc3Rkb3V0LnJlYWQoKS5k
ZWNvZGUoICd1dGYtOCcsICdyZXBsYWNlJyApLnN0cmlwKCkKKwkJZXhjZXB0OgorCQkJbG9nZ2lu
Zy5lcnJvciggJ0ZhaWxlZCB0byBkZXRlcm1pbmUgZ2l0IGNvbW1pdCBoYXNoIScgKQorCQkJcGFz
cworCisJCXJldHVybiBnaXRfY29tbWl0X2hhc2gKKworCWRlZiBfX2dldF9jb21taXRfc3RyaW5n
KCBzZWxmICk6CisJCW1ldGFfZGF0YQkJPSBOb25lCisJCWdpdF9jb21taXRfaGFzaAk9IHNlbGYu
X19nZXRfY29tbWl0X2hhc2goKQorCisJCWlmIGdpdF9jb21taXRfaGFzaDoKKwkJCW1ldGFfZGF0
YSA9IHNlbGYuX190ZW1wbGF0ZV9jb21taXQuZm9ybWF0KCBjb21taXQgPSBnaXRfY29tbWl0X2hh
c2ggKQorCisJCXJldHVybiBtZXRhX2RhdGEKKworCWRlZiBfX2dldF9kYXRlX3N0cmluZyggc2Vs
ZiApOgorCQl0b2RheSA9IGRhdGV0aW1lLmRhdGUudG9kYXkoKQorIAorCQlyZXR1cm4gdG9kYXku
c3RyZnRpbWUoIHNlbGYuX190ZW1wbGF0ZV9kYXRlICkKKworCWRlZiBfX21ldGFfZGF0YV9zdHJp
bmcoIHNlbGYgKToKKwkJbWV0YV9kYXRhID0gc2VsZi5fX2dldF9jb21taXRfc3RyaW5nKCkKKwor
CQlpZiBub3QgbWV0YV9kYXRhOgorCQkJbWV0YV9kYXRhID0gc2VsZi5fX2dldF9kYXRlX3N0cmlu
ZygpCisKKwkJcmV0dXJuIG1ldGFfZGF0YQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgU2luZ2xlSGVhZGVyKCBvYmplY3QgKToKKwlfX3By
YWdtYV9vbmNlID0gJyNwcmFnbWEgb25jZVxuXG4nCisKKwlkZWYgX19pbml0X18oIHNlbGYgKToK
KwkJc2VsZi5fX2hlYWRlcl9wYXRocyA9IGxpc3QoKQorCisJZGVmIF9fc3RyX18oIHNlbGYgKToK
KwkJcmV0dXJuIHNlbGYucHJvY2VzcygpCisKKwlkZWYgYXBwZW5kKCBzZWxmLCBoZWFkZXJfcGF0
aCApOgorCQlzZWxmLl9faGVhZGVyX3BhdGhzLmFwcGVuZCggaGVhZGVyX3BhdGggKQorCisJZGVm
IHByb2Nlc3MoIHNlbGYgKToKKwkJb3V0X2hlYWRlciAJCQkJPSBzZWxmLl9fcHJhZ21hX29uY2UK
KworCQlzZWxmLl9faW5jbHVkZWRfaGVhZGVycwk9IHNldCgpCisJCXNlbGYuX19iYXNlX3BhdGgg
CQk9IGxpc3QoKQorCisJCWZvciBoZWFkZXJfcGF0aCBpbiBzZWxmLl9faGVhZGVyX3BhdGhzOgor
CQkJb3V0X2hlYWRlciArPSBzZWxmLl9fcHJvY2Vzc19oZWFkZXIoIGhlYWRlcl9wYXRoICkKKwor
CQlyZXR1cm4gc2VsZi5fX3N0cmlwX2VtcHR5X2xpbmVzKCBvdXRfaGVhZGVyICkKKworCWRlZiBf
X3JlYWRfaGVhZGVyKCBzZWxmLCBwYXRoICk6CisJCXBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKCBw
YXRoICkKKworCQl0cnk6CisJCQlmID0gb3BlbiggcGF0aCwgJ3InICkKKwkJZXhjZXB0OgorCQkJ
cmFpc2UgUnVudGltZUVycm9yKCAnRmFpbGVkIHRvIG9wZW4gZmlsZSBcIicgKyBwYXRoICsgJ1wi
IGZvciByZWFkIScgKQorCisJCXJldHVybiBmLnJlYWQoKQorCisJZGVmIF9fc3RyaXBfcHJhZ21h
X29uY2UoIHNlbGYsIGhlYWRlciApOgorCQlyZXR1cm4gcmUuc3ViKCAnXFxzKiNwcmFnbWEgb25j
ZVxzKlxcL1xcLy0qXFxuJywgJycsIGhlYWRlciApCisKKwlkZWYgX19zdHJpcF9jb21tZW50cygg
c2VsZiwgaGVhZGVyICk6CisJCXJldHVybiByZS5zdWIoICdeLy8uKlxcbicsICcnLCBoZWFkZXIs
IGZsYWdzID0gcmUuTVVMVElMSU5FICkKKworCWRlZiBfX3N0cmlwX2VtcHR5X2xpbmVzKCBzZWxm
LCBoZWFkZXIgKToKKwkJcmV0dXJuIHJlLnN1YiggJ1xcblxcbisnLCAnXFxuXFxuJywgaGVhZGVy
LCBmbGFncyA9IHJlLk1VTFRJTElORSApCisKKwlkZWYgX19zdWJzdGl0dXRlX2luY2x1ZGVfZGly
ZWN0aXZlKCBzZWxmLCBtYXRjaCApOgorCQloZWFkZXJfcGF0aCA9IG1hdGNoLmdyb3VwKCAnSEVB
REVSX1BBVEgnICkKKworCQlsb2dnaW5nLmluZm8oICdcdFN1YnN0aXR1dGluZyBcIicgKyBoZWFk
ZXJfcGF0aCArICdcIi4uLicgKQorCisJCXJldHVybiBzZWxmLl9fcHJvY2Vzc19oZWFkZXIoIG9z
LnBhdGguam9pbiggc2VsZi5fX2Jhc2VfcGF0aFstMV0sIGhlYWRlcl9wYXRoICkgKQorCisJZGVm
IF9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2ZXMoIHNlbGYsIGhlYWRlciApOgorCQlyZXR1cm4g
cmUuc3ViKCAnXlxccyojaW5jbHVkZVxcc1xcIig/UDxIRUFERVJfUEFUSD5cXFMqKVxcIicsIHNl
bGYuX19zdWJzdGl0dXRlX2luY2x1ZGVfZGlyZWN0aXZlLCBoZWFkZXIsIGZsYWdzID0gcmUuTVVM
VElMSU5FICkKKworCWRlZiBfX3Byb2Nlc3NfZm91bmRhdGlvbl9kaXJlY3RpdmVzKCBzZWxmLCBo
ZWFkZXIgKToKKwkJaWYgaGVhZGVyLmZpbmQoIiNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaHBwPiIpICE9IC0xOgorCQkJbG9nZ2luZy5pbmZvKCAnXHRTdWJzdGl0dXRpbmcgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHA+Li4uJyApCisJCQlyZXR1cm4gaGVhZGVyLnJlcGxhY2UoIiNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPiIsIHNlbGYuX19wcm9jZXNzX2hlYWRl
ciggb3MucGF0aC5qb2luKCBzZWxmLl9fYmFzZV9wYXRoWy0xXSwgIi4uL0ZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHAiICkgKSApCisJCXJldHVybiBoZWFkZXIKKworCisJZGVmIF9fcHJvY2Vzc19o
ZWFkZXIoIHNlbGYsIGhlYWRlcl9wYXRoICk6CisJCW91dF9oZWFkZXIgPSAnJwkJCisKKwkJaGVh
ZGVyX3BhdGggPSBvcy5wYXRoLnJlYWxwYXRoKCBoZWFkZXJfcGF0aCApCisKKwkJaWYgbm90IGhl
YWRlcl9wYXRoIGluIHNlbGYuX19pbmNsdWRlZF9oZWFkZXJzOgorCQkJbG9nZ2luZy5pbmZvKCAn
UHJvY2Vzc2luZyBcIicgKyBoZWFkZXJfcGF0aCArICdcIi4uLicgKQorCisJCQlzZWxmLl9fYmFz
ZV9wYXRoLmFwcGVuZCggb3MucGF0aC5kaXJuYW1lKCBoZWFkZXJfcGF0aCApICkKKwkJCXNlbGYu
X19pbmNsdWRlZF9oZWFkZXJzLmFkZCggaGVhZGVyX3BhdGggKQorCQkJCisJCQlvdXRfaGVhZGVy
ID0gc2VsZi5fX3JlYWRfaGVhZGVyKCBoZWFkZXJfcGF0aCApCisJCQlvdXRfaGVhZGVyID0gc2Vs
Zi5fX3N0cmlwX3ByYWdtYV9vbmNlKCBvdXRfaGVhZGVyICkKKwkJCW91dF9oZWFkZXIgPSBzZWxm
Ll9fc3RyaXBfY29tbWVudHMoIG91dF9oZWFkZXIgKQorCQkJb3V0X2hlYWRlciA9IHNlbGYuX19w
cm9jZXNzX2luY2x1ZGVfZGlyZWN0aXZlcyggb3V0X2hlYWRlciApCisJCQlvdXRfaGVhZGVyID0g
c2VsZi5fX3Byb2Nlc3NfZm91bmRhdGlvbl9kaXJlY3RpdmVzKCBvdXRfaGVhZGVyICkKKworCQkJ
c2VsZi5fX2Jhc2VfcGF0aC5wb3AoKQorCQllbHNlOgorCQkJbG9nZ2luZy5pbmZvKCAnXHRTa2lw
cGluZyBcIicgKyBoZWFkZXJfcGF0aCArICdcIi4uLicgKQorCisJCXJldHVybiBvdXRfaGVhZGVy
CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitkZWYg
Y3JlYXRlX2FyZ3VtZW50X3BhcnNlcigpOgorCXBhcnNlciAJCQk9IGFyZ3BhcnNlLkFyZ3VtZW50
UGFyc2VyKCkKKwliYXNlX3BhdGggCQk9IG9zLnBhdGguZGlybmFtZSggb3MucGF0aC5yZWFscGF0
aCggX19maWxlX18gKSApCisJb3V0cHV0X3BhdGgJCT0gb3MucGF0aC5qb2luKCBiYXNlX3BhdGgs
ICdNZXRhbC5ocHAnICkKKworCXBhcnNlci5hZGRfYXJndW1lbnQoICctbycsICctLW91dHB1dCcs
ICBkZXN0ID0gJ291dHB1dF9wYXRoJywgbWV0YXZhciA9ICdQQVRIJywgZGVmYXVsdCA9IG91dHB1
dF9wYXRoLCBoZWxwID0gJ091dHB1dCBwYXRoIGZvciB0aGUgc2luZ2xlIGhlYWRlciBmaWxlLicg
KQorCXBhcnNlci5hZGRfYXJndW1lbnQoICctdicsICctLXZlcmJvc2UnLCBhY3Rpb24gPSAnc3Rv
cmVfdHJ1ZScsICBoZWxwID0gJ1Nob3cgdmVyYm9zZSBvdXRwdXQuJyApCisJcGFyc2VyLmFkZF9h
cmd1bWVudCggZGVzdCA9ICdoZWFkZXJfcGF0aHMnLCBtZXRhdmFyID0gJ0hFQURFUl9GSUxFJywg
bmFyZ3M9JysnLCBoZWxwID0gJ0lucHV0IGhlYWRlciBmaWxlLicgKQorCisJcmV0dXJuIHBhcnNl
cgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVm
IHBhcnNlX2FyZ3VtZW50cygpOgorCXBhcnNlcgk9IGNyZWF0ZV9hcmd1bWVudF9wYXJzZXIoKQor
CWFyZ3MJPSBwYXJzZXIucGFyc2VfYXJncygpCisKKwlpZiBhcmdzLnZlcmJvc2U6CisJCWxvZ2dp
bmcuZ2V0TG9nZ2VyKCkuc2V0TGV2ZWwoIGxvZ2dpbmcuSU5GTyApCisJZWxzZToKKwkJbG9nZ2lu
Zy5nZXRMb2dnZXIoKS5zZXRMZXZlbCggbG9nZ2luZy5FUlJPUiApCisKKwlyZXR1cm4gYXJncwor
CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVmIG1h
a2VfaGVhZGVyKCBhcmdzICk6CisJcHJlZml4ID0gSGVhZGVyUHJlZml4KCBvcy5wYXRoLmJhc2Vu
YW1lKCBhcmdzLm91dHB1dF9wYXRoICkgKQorCWhlYWRlciA9IFNpbmdsZUhlYWRlcigpCisJCisJ
Zm9yIGhlYWRlcl9wYXRoIGluIGFyZ3MuaGVhZGVyX3BhdGhzOgorCQloZWFkZXIuYXBwZW5kKCBo
ZWFkZXJfcGF0aCApCisKKwlyZXR1cm4gc3RyKCBwcmVmaXggKSArIHN0ciggaGVhZGVyICkKKwor
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlZiBtYWtl
X2RpciggcGF0aCApOgorCXRyeToKKwkJaWYgbm90IG9zLnBhdGguZXhpc3RzKCBwYXRoICk6CisJ
CQlvcy5tYWtlZGlycyggcGF0aCApCisJZXhjZXB0IG9zLmVycm9yOgorCQlwYXNzCisJZXhjZXB0
OgorCQlyYWlzZQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworZGVmIHdyaXRlX2hlYWRlciggYXJncywgY29udGVudCApOgorCXBhdGggPSBvcy5wYXRo
LnJlYWxwYXRoKCBhcmdzLm91dHB1dF9wYXRoICkKKworCWxvZ2dpbmcuaW5mbyggJ1dyaXRpbmcg
XCInICsgcGF0aCArICdcIi4uLicgKQorCisJbWFrZV9kaXIoIG9zLnBhdGguZGlybmFtZSggcGF0
aCApICkKKworCXRyeToKKwkJZiA9IG9wZW4oIHBhdGgsICd3JyApCisJZXhjZXB0OgorCQlyYWlz
ZSBSdW50aW1lRXJyb3IoICdGYWlsZWQgdG8gb3BlbiBmaWxlIFwiJyArIHBhdGggKyAnXCIgZm9y
IHdyaXRlIScgKQorCisJZi53cml0ZSggY29udGVudCApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
CXJlc3VsdCA9IC0xCisJCisJdHJ5OgorCQlpZiBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkubG93
ZXIoKSA9PSAnYXNjaWknOgorCQkJcmVsb2FkKCBzeXMgKQorCQkJc3lzLnNldGRlZmF1bHRlbmNv
ZGluZyggJ3V0Zi04JyApCisKKwkJYXJncyAJPSBwYXJzZV9hcmd1bWVudHMoKQorCQloZWFkZXIg
CT0gbWFrZV9oZWFkZXIoIGFyZ3MgKQorCisJCXdyaXRlX2hlYWRlciggYXJncywgaGVhZGVyICkK
KworCQlyZXN1bHQgPSAwCisKKwlleGNlcHQgKCBLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhp
dCApOgorCSAJcGFzcworCWV4Y2VwdDoKKwkgCXJhaXNlCisKKwlzeXMuZXhpdCggcmVzdWx0ICkK
KworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzc1MzZiNmEwYWQ2
NDNlMzJhMThlYTBmZDRjYTM3NDkzM2U3MWE1Ny4uZDMyODJlOTkzMzA4YjhmYWVkODhmM2MzNTAz
NmUzMjViNGUyN2FjMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTE2ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW50ZWdyYXRlIE1ldGFs
LWNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
Njk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWV0
YWwtY3BwIGZpbGVzIHNob3VsZCBub3QgYmUgc3R5bGUtY2hlY2tlZC4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weToKKwogMjAyMi0wMi0xNiAgSm9uYXRoYW4g
QmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgQnJva2VuIHBpcGVzIGR1cmlu
ZyBpT1Mgc2ltdWxhdG9yIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
ci5weQppbmRleCBkZDU1ZjgzOTI4NjBhYmZmZGY0NTk5MDZlMTIyZWZmNjZhMWMwYzA1Li5hYjc4
OWQ3MWM5YTExZWYwYjNiZDdhZDZiNjcyZDI3ZjI4ZTViYTMwIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC00MDIsNyArNDAyLDggQEAgX1NLSVBQRURfRklMRVNf
V0lUSF9XQVJOSU5HID0gWwogICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYktpdCcsICdX
ZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICd3cGUnLCAnd2Via2l0LXdlYi1l
eHRlbnNpb24uaCcpLAogICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYktpdCcsICdXZWJQ
cm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICd3cGUnLCAnRE9NJywgJ3dlYmtpdGRv
bS5oJyksCiAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViR1BVJywgJ1dlYkdQVScsICdX
ZWJHUFUuaCcpLAotICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkdQVScsICdXZWJHUFUn
LCAnV2ViR1BVRXh0LmgnKV0KKyAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJHUFUnLCAn
V2ViR1BVJywgJ1dlYkdQVUV4dC5oJyksCisgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2Vi
R1BVJywgJ1dlYkdQVScsICdtZXRhbC1jcHAnLCAnU2luZ2xlSGVhZGVyJywgJ01ha2VTaW5nbGVI
ZWFkZXIucHknKV0KIAogIyBGaWxlcyB0byBza2lwIHRoYXQgYXJlIG1vcmUgY29tbW9uIG9yIG9i
dmlvdXMuCiAjCg==
</data>
<flag name="review"
          id="479290"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452446</attachid>
            <date>2022-02-17 16:54:46 -0800</date>
            <delta_ts>2022-02-17 17:25:27 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-236697-20220217165444.patch</filename>
            <type>text/plain</type>
            <size>982639</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDljOWY1YTI2YjJmNjhhYWY2
ODM5MjkwY2U3YTcxYTRlYjJmNGI4MzkuLmFmMGE5OGExZjRmMmU2MmY4MTM0NTM0NTUyOGY3NDkx
YjgwZTM3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDIyLTAyLTE3ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW50
ZWdyYXRlIE1ldGFsLWNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2Njk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisg
ICAgICAgIE1ldGFsLWNwcCBpcyBhIGxvdy1vdmVyaGVhZCBDKysgaW50ZXJmYWNlIGZvciBNZXRh
bC4KKyAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL21ldGFsL2NwcC8KKworICAg
ICAgICBNZXRhbC1jcHAgaXNuJ3QgYSBsaWJyYXJ5IHBlci1zZSwgYnV0IGlzIGluc3RlYWQganVz
dCBhIGNvbGxlY3Rpb24gb2YgZmlsZXMgd2hpY2ggdXNlcnMKKyAgICAgICAgYXJlIHN1cHBvc2Vk
IHRvIGp1c3QgY29weSBpbnRvIHRoZWlyIHByb2plY3QuIFRoaXMgZG9lcyBqdXN0IHRoYXQsIGFu
ZCBob29rcyB1cCBhbGwgdGhlCisgICAgICAgIG5lY2Vzc2FyeSBmbGFncyBhbmQgcGF0aHMgYW5k
IGV2ZXJ5dGhpbmcuCisKKyAgICAgICAgVGhpcyB1c2VzIHRoZSAic2luZ2xlIGhlYWRlciBhbHRl
cm5hdGl2ZSIgZGVzY3JpYmVkIG9uIHRoYXQgd2VicGFnZSwgYW5kIGNyZWF0ZXMgdGhlCisgICAg
ICAgIHNpbmdsZSBmaWxlIGFzIGEgYnVpbGQgc3RlcC4KKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL1dlYkdQVS54Y2NvbmZpZzoKKyAgICAgICAgKiBXZWJHUFUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJHUFUvTWV0YWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJHUFUvY29uZmlnLmg6CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNBcnJheS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvRm91bmRhdGlvbi9OU0J1bmRsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGEuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcDogQWRk
ZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90aWZpY2F0aW9u
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTnVt
YmVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
T2JqQ1J1bnRpbWUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNPYmplY3QuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNQcml2YXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TUHJvY2Vzc0luZm8uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1N0cmluZy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1R5cGVzLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVVJMLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9MSUNFTlNFLnR4dDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1h
bmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50RW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAg
ICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmluYXJ5QXJjaGl2ZS5ocHA6IEFkZGVkLgor
ICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFzcy5o
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlTWFu
YWdlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2Fw
dHVyZVNjb3BlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExDb21tYW5kQnVmZmVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQ29tbWFuZFF1ZXVlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBw
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvdW50ZXJzLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5j
aWwuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERldmlj
ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHJhd2Fi
bGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFt
aWNMaWJyYXJ5LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExFdmVudC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RmVuY2UuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1
bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcDogQWRkZWQuCisg
ICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvblN0aXRjaGluZy5ocHA6
IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJpZGdl
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFwLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVjdENv
bW1hbmRCdWZmZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpYnJhcnkuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHA6
IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUGlwZWxpbmUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFBpeGVsRm9ybWF0LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExQcml2YXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBhc3MuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZS5o
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFzcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMU2FtcGxlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFRleHR1cmUuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNpYmxlRnVu
Y3Rpb25UYWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TWV0YWwuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUv
Q0FEZWZpbmVzLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9RdWFydHpD
b3JlL0NBTWV0YWxEcmF3YWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1j
cHAvUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0
YWwtY3BwL1F1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvUkVBRE1FLm1kOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3Bw
L1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEhlYWRl
clByZWZpeCk6CisgICAgICAgIChIZWFkZXJQcmVmaXguX19pbml0X18pOgorICAgICAgICAoSGVh
ZGVyUHJlZml4Ll9fc3RyX18pOgorICAgICAgICAoSGVhZGVyUHJlZml4Ll9fZ2V0X2NvbW1pdF9o
YXNoKToKKyAgICAgICAgKEhlYWRlclByZWZpeC5fX2dldF9jb21taXRfc3RyaW5nKToKKyAgICAg
ICAgKEhlYWRlclByZWZpeC5fX2dldF9kYXRlX3N0cmluZyk6CisgICAgICAgIChfX21ldGFfZGF0
YV9zdHJpbmcpOgorICAgICAgICAoU2luZ2xlSGVhZGVyKToKKyAgICAgICAgKFNpbmdsZUhlYWRl
ci5fX2luaXRfXyk6CisgICAgICAgIChTaW5nbGVIZWFkZXIuX19zdHJfXyk6CisgICAgICAgIChT
aW5nbGVIZWFkZXIuYXBwZW5kKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5wcm9jZXNzKToKKyAg
ICAgICAgKFNpbmdsZUhlYWRlci5fX3JlYWRfaGVhZGVyKToKKyAgICAgICAgKFNpbmdsZUhlYWRl
ci5fX3N0cmlwX3ByYWdtYV9vbmNlKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX2Nv
bW1lbnRzKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX2VtcHR5X2xpbmVzKToKKyAg
ICAgICAgKFNpbmdsZUhlYWRlci5fX3N1YnN0aXR1dGVfaW5jbHVkZV9kaXJlY3RpdmUpOgorICAg
ICAgICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2ZXMpOgorICAgICAg
ICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19mb3VuZGF0aW9uX2RpcmVjdGl2ZXMpOgorICAgICAg
ICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19oZWFkZXIpOgorICAgICAgICAoY3JlYXRlX2FyZ3Vt
ZW50X3BhcnNlcik6CisgICAgICAgIChwYXJzZV9hcmd1bWVudHMpOgorICAgICAgICAobWFrZV9o
ZWFkZXIpOgorICAgICAgICAobWFrZV9kaXIpOgorICAgICAgICAod3JpdGVfaGVhZGVyKToKKwog
MjAyMi0wMi0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWJHUFVdIEFkZCBhIHBsYXlncm91bmQgZXhhbXBsZSB0YXJnZXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnIGIvU291cmNl
L1dlYkdQVS9Db25maWd1cmF0aW9ucy9XZWJHUFUueGNjb25maWcKaW5kZXggZDQ1NTllZTk4YjI2
NDFiNTdlZDNiMDZlZjNjZTI2YjZiMjNkY2NiYy4uZjk0NmU2ZmZhNjBlNzYzNjQ2N2RmNjRiNWY5
ZTAwODkzNWIwOGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9X
ZWJHUFUueGNjb25maWcKKysrIGIvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9XZWJHUFUu
eGNjb25maWcKQEAgLTIzLDcgKzIzLDEwIEBACiAKICNpbmNsdWRlICJWZXJzaW9uLnhjY29uZmln
IgogCitXQVJOSU5HX0NGTEFHUyA9IC1XYWxsIC1XZXh0cmEgLVdjYXN0LXF1YWwgLVdjaGFyLXN1
YnNjcmlwdHMgLVdjb25kaXRpb25hbC11bmluaXRpYWxpemVkIC1XZXh0cmEtdG9rZW5zIC1XZm9y
bWF0PTIgLVdpbml0LXNlbGYgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5v
cmV0dXJuIC1XcG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3dyaXRlLXN0cmluZ3Mg
LVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMgLVd0YXV0b2xvZ2ljYWwtY29tcGFyZSAtV2ltcGxpY2l0
LWZhbGx0aHJvdWdoIC1XdmxhIC1XbGl0ZXJhbC1jb252ZXJzaW9uIC1XdGhyZWFkLXNhZmV0eSAt
V25vLXR5cGVkZWYtcmVkZWZpbml0aW9uIC1Xbm8taWdub3JlZC1xdWFsaWZpZXJzOworCiBIRUFE
RVJfU0VBUkNIX1BBVEhTID0gIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVk
ZSIgJChpbmhlcml0ZWQpOworU1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViR1BVL21ldGFsLWNwcCAkKGluaGVyaXRlZCk7
CiAKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIApAQCAtNjksMyArNzIsNyBAQCBNT0RV
TEVNQVBfRklMRSA9IFdlYkdQVS9XZWJHUFUubW9kdWxlbWFwOwogCiBTVVBQT1JUU19URVhUX0JB
U0VEX0FQSSA9IFlFUzsKIFRBUElfVkVSSUZZX01PREUgPSBQZWRhbnRpYzsKKworT1RIRVJfTERG
TEFHUyA9ICQoaW5oZXJpdGVkKSAtWGxpbmtlciAtbm9fd2Fybl9pbml0czsKKworSEVBREVSTUFQ
X0lOQ0xVREVTX1BST0pFQ1RfSEVBREVSUyA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzA0N2NjNjkxM2ZhYzRhNmUzNjE1ZjNl
NTg0YTBiMzZjNDgxM2E5MS4uZWZhOWMyNmVhNzViMmYwMmFlYWViN2E0N2IxNjlkZWQ5NWNhN2Vh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0zLDcgKzMsNyBAQAogCWFyY2hpdmVWZXJzaW9uID0gMTsKIAljbGFzc2VzID0gewogCX07
Ci0Jb2JqZWN0VmVyc2lvbiA9IDU1OworCW9iamVjdFZlcnNpb24gPSA1MTsKIAlvYmplY3RzID0g
ewogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwpAQCAtMTEsNiArMTEsNyBAQAog
CQkxQzAyM0Q0MDI3NDQ5MDcwMDAxREI3MzQgLyogbGlid2dzbC5hIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFQkQ3RjIyNzE2QjJDQzAwQTUyNTRE
IC8qIGxpYndnc2wuYSAqLzsgfTsKIAkJMUMwMjNENEIyNzQ0OTVCOTAwMURCNzM0IC8qIEphdmFT
Y3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDMDIzRDRBMjc0NDk1QjkwMDFEQjczNCAvKiBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgKi87IH07CiAJCTFDMkNFREVFMjcxRThBNzMwMEVEQzE2RiAvKiBNZXRhbC5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzJDRURFRDI3MUU4QTczMDBFREMxNkYgLyogTWV0YWwuZnJhbWV3b3JrICovOyB9OworCQkxQzUz
MUEyNTI3QkRERjU1MDBDRDEyN0UgLyogTWV0YWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1MzFBMjQyN0JEREY1NTAwQ0QxMjdFIC8qIE1ldGFs
LmNwcCAqLzsgfTsKIAkJMUM1MzE5QzAyN0JEQzZDQzAwQ0QxMjdFIC8qIG1haW4uc3dpZnQgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUzMTlCRjI3QkRD
NkNDMDBDRDEyN0UgLyogbWFpbi5zd2lmdCAqLzsgfTsKIAkJMUM1MzE5QzUyN0JEQzcyNzAwQ0Qx
MjdFIC8qIFdlYkdQVS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQ0VCRDdFMzI3MTZBRkJBMDBBNTI1NEQgLyogV2ViR1BVLmZyYW1l
d29yayAqLzsgfTsKIAkJMUM1QUNBOTQyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBOTIyNzNB
NDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tICovOyB9OwpAQCAtOTIsNiArOTMsOTEgQEAKIAkJ
MUMwMjNENDcyNzQ0OTE2RDAwMURCNzM0IC8qIFdHU0xVbml0VGVzdHMueGNjb25maWcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmln
OyBwYXRoID0gV0dTTFVuaXRUZXN0cy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMwMjNENEEyNzQ0OTVCOTAwMURCNzM0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29y
ayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBw
ZXIuZnJhbWV3b3JrOyBwYXRoID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzJDRURFRDI3MUU4QTczMDBFREMxNkYgLyog
TWV0YWwuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBNZXRhbC5mcmFtZXdvcms7IHBhdGgg
PSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL01ldGFsLmZyYW1ld29yazsgc291cmNlVHJlZSA9
IFNES1JPT1Q7IH07CisJCTFDNTMxOUNEMjdCRERENkUwMENEMTI3RSAvKiBNVExUeXBlcy5ocHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5oOyBwYXRoID0gTVRMVHlwZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMTlDRTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRF
bmNvZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29k
ZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlDRjI3QkRERDZFMDBD
RDEyN0UgLyogTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0g
TVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNTMxOUQwMjdCRERENkUwMENEMTI3RSAvKiBNVExDb21wdXRlUGlwZWxpbmUuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE1UTENvbXB1dGVQaXBlbGluZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNTMxOUQxMjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5jdGlvbkhhbmRs
ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRnVuY3Rpb25IYW5kbGUuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEMjI3QkRERDZFMDBDRDEyN0UgLyogTVRMRHJhd2Fi
bGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTERyYXdhYmxlLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTER5bmFtaWNMaWJy
YXJ5LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExEeW5hbWljTGlicmFyeS5ocHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQ0MjdCRERENkUwMENEMTI3RSAvKiBNVExDb21w
dXRlUGFzcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ29tcHV0ZVBhc3MuaHBwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlENTI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVu
Y3Rpb25Db25zdGFudFZhbHVlcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRnVuY3Rpb25Db25z
dGFudFZhbHVlcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQ2MjdC
RERENkUwMENEMTI3RSAvKiBNVExQaXBlbGluZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUGlw
ZWxpbmUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlENzI3QkRERDZF
MDBDRDEyN0UgLyogTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9
IE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1MzE5RDgyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5oOyBwYXRoID0gTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENhcHR1cmVN
YW5hZ2VyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDYXB0dXJlTWFuYWdlci5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOURBMjdCRERENkUwMENEMTI3RSAvKiBNVExD
b21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ29tbWFuZEVuY29kZXIuaHBw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEQjI3QkRERDZFMDBDRDEyN0Ug
LyogTWV0YWwuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1ldGFsLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzE5REMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFN0YWdlSW5wdXRP
dXRwdXREZXNjcmlwdG9yLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExTdGFnZUlucHV0T3V0cHV0
RGVzY3JpcHRvci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUREMjdC
RERENkUwMENEMTI3RSAvKiBNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5oOyBwYXRoID0gTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlERTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGFyYWxs
ZWxSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUGFyYWxsZWxS
ZW5kZXJDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NTMxOURGMjdCRERENkUwMENEMTI3RSAvKiBNVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5oOyBwYXRoID0gTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzUzMTlFMDI3QkRERDZFMDBDRDEyN0UgLyogTVRMTGlua2VkRnVuY3Rpb25z
LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExMaW5rZWRGdW5jdGlvbnMuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFMTI3QkRERDZFMDBDRDEyN0UgLyogTVRMVGV4dHVy
ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMVGV4dHVyZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNTMxOUUyMjdCRERENkUwMENEMTI3RSAvKiBNVExTYW1wbGVyLmhwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmg7IHBhdGggPSBNVExTYW1wbGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzE5RTMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTERlcHRoU3RlbmNpbC5ocHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5oOyBwYXRoID0gTVRMRGVwdGhTdGVuY2lsLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MzE5RTQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFyZ3VtZW50RW5jb2Rlci5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQXJndW1lbnRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFNjI3
QkRERDZFMDBDRDEyN0UgLyogTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MzE5RTcyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFByaXZhdGUuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE1UTFByaXZhdGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzUzMTlFODI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2UuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTFJlc291cmNlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzE5RTkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5oOyBwYXRoID0gTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RUEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTERldmljZS5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRGV2aWNlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MzE5RUIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFyZ3VtZW50LmhwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmg7IHBhdGggPSBNVExBcmd1bWVudC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNTMxOUVDMjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5jdGlvbkxvZy5ocHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5oOyBwYXRoID0gTVRMRnVuY3Rpb25Mb2cuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMTlFRDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQnVmZmVyLmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBNVExCdWZmZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
MTlFRTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVuZGVyUGFzcy5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTVRMUmVuZGVyUGFzcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMx
OUVGMjdCRERENkUwMENEMTI3RSAvKiBNVExIZWFwLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExI
ZWFwLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjAyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTFZlcnRleERlc2NyaXB0b3IuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFZl
cnRleERlc2NyaXB0b3IuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlG
MTI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzE5RjIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTExpYnJhcnkuaHBwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
aDsgcGF0aCA9IE1UTExpYnJhcnkuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzUzMTlGMzI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGl4ZWxGb3JtYXQuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTFBpeGVsRm9ybWF0LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzE5RjQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZlbmNlLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBNVExGZW5jZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUY1MjdC
RERENkUwMENEMTI3RSAvKiBNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDNTMxOUY2MjdCRERENkUwMENEMTI3RSAvKiBNVExSZW5kZXJQaXBlbGluZS5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmVuZGVyUGlwZWxpbmUuaHBwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzUzMTlGNzI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ29tbWFuZFF1
ZXVlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDb21tYW5kUXVldWUuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGODI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVuY3Rp
b25EZXNjcmlwdG9yLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExGdW5jdGlvbkRlc2NyaXB0b3Iu
aHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGOTI3QkRERDZFMDBDRDEy
N0UgLyogTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
aDsgcGF0aCA9IE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RkEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TEJsaXRQYXNzLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExCbGl0UGFzcy5ocHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZCMjdCRERENkUwMENEMTI3RSAvKiBNVExFdmVu
dC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRXZlbnQuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzUzMTlGQzI3QkRERDZFMDBDRDEyN0UgLyogTVRMQmluYXJ5QXJjaGl2ZS5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQmluYXJ5QXJjaGl2ZS5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTMxOUZEMjdCRERENkUwMENEMTI3RSAvKiBNVExDYXB0dXJlU2Nv
cGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTENhcHR1cmVTY29wZS5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZFMjdCRERENkUwMENEMTI3RSAvKiBNVExDb21wdXRl
Q29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTENvbXB1dGVDb21tYW5kRW5j
b2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZGMjdCRERENkUw
MENEMTI3RSAvKiBNVExIZWFkZXJCcmlkZ2UuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEhlYWRl
ckJyaWRnZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTAwMjdCRERE
NkUwMENEMTI3RSAvKiBNVExDb3VudGVycy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ291bnRl
cnMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwMTI3QkRERDZFMDBD
RDEyN0UgLyogTVRMRGVmaW5lcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRGVmaW5lcy5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTAyMjdCRERENkUwMENEMTI3RSAv
KiBNVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmVzb3VyY2VT
dGF0ZVBhc3MuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwMzI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMQ29tbWFuZEJ1ZmZlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRM
Q29tbWFuZEJ1ZmZlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTA1
MjdCRERENkUwMENEMTI3RSAvKiBOU1N0cmluZy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNTdHJp
bmcuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwNjI3QkRERDZFMDBD
RDEyN0UgLyogTlNEaWN0aW9uYXJ5LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0RpY3Rpb25hcnku
aHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwNzI3QkRERDZFMDBDRDEy
N0UgLyogTlNMb2NrLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0xvY2suaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwODI3QkRERDZFMDBDRDEyN0UgLyogTlNQcm9jZXNz
SW5mby5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNQcm9jZXNzSW5mby5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTA5MjdCRERENkUwMENEMTI3RSAvKiBOU0Vycm9yLmhw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmg7IHBhdGggPSBOU0Vycm9yLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzFBMEEyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TT2JqQ1J1bnRpbWUuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE5TT2JqQ1J1bnRpbWUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMUEwQjI3QkRERDZFMDBDRDEyN0UgLyogTlNPYmplY3QuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE5TT2JqZWN0LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFB
MEMyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TTm90aWZpY2F0aW9uLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBOU05vdGlmaWNhdGlvbi5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMx
QTBEMjdCRERENkUwMENEMTI3RSAvKiBOU1ByaXZhdGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5T
UHJpdmF0ZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTBFMjdCRERE
NkUwMENEMTI3RSAvKiBOU1VSTC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNVUkwuaHBwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwRjI3QkRERDZFMDBDRDEyN0UgLyogTlNB
dXRvcmVsZWFzZVBvb2wuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TQXV0b3JlbGVhc2VQb29sLmhw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMTAyN0JEREQ2RTAwQ0QxMjdF
IC8qIE5TUmFuZ2UuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TUmFuZ2UuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExMTI3QkRERDZFMDBDRDEyN0UgLyogTlNUeXBlcy5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNUeXBlcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNTMxQTEyMjdCRERENkUwMENEMTI3RSAvKiBOU0RhdGEuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE5TRGF0YS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTEz
MjdCRERENkUwMENEMTI3RSAvKiBOU051bWJlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNOdW1i
ZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExNDI3QkRERDZFMDBD
RDEyN0UgLyogRm91bmRhdGlvbi5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gRm91bmRhdGlvbi5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTE1MjdCRERENkUwMENEMTI3RSAv
KiBOU0RhdGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TRGF0ZS5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTMxQTE2MjdCRERENkUwMENEMTI3RSAvKiBOU0RlZmluZXMuaHBw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuaDsgcGF0aCA9IE5TRGVmaW5lcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNTMxQTE3MjdCRERENkUwMENEMTI3RSAvKiBOU0J1bmRsZS5ocHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBwYXRoID0gTlNCdW5kbGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
MUExODI3QkRERDZFMDBDRDEyN0UgLyogTlNFbnVtZXJhdG9yLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBOU0VudW1lcmF0b3IuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEx
OTI3QkRERDZFMDBDRDEyN0UgLyogTlNBcnJheS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNBcnJh
eS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFBMjdCRERENkUwMENE
MTI3RSAvKiBSRUFETUUubWQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBuZXQuZGFyaW5nZmlyZWJhbGwubWFya2Rvd247IHBhdGggPSBSRUFETUUubWQ7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFDMjdCRERENkUwMENEMTI3RSAv
KiBRdWFydHpDb3JlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBRdWFydHpDb3JlLmhwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMUQyN0JEREQ2RTAwQ0QxMjdFIC8qIENBUHJp
dmF0ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gQ0FQcml2YXRlLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMUUyN0JEREQ2RTAwQ0QxMjdFIC8qIENBTWV0YWxEcmF3YWJs
ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gQ0FNZXRhbERyYXdhYmxlLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMUYyN0JEREQ2RTAwQ0QxMjdFIC8qIENBRGVmaW5lcy5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gQ0FEZWZpbmVzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MzFBMjAyN0JEREQ2RTAwQ0QxMjdFIC8qIExJQ0VOU0UudHh0ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IExJ
Q0VOU0UudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEyMjI3QkRERDZF
MDBDRDEyN0UgLyogTWFrZVNpbmdsZUhlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IE1ha2VT
aW5nbGVIZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTI0MjdC
RERGNTUwMENEMTI3RSAvKiBNZXRhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXRhbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTJBMjdCREUwNjcwMENEMTI3RSAv
KiBNZXRhbC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTWV0YWwuaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzUzMTlCRDI3QkRDNkNCMDBDRDEyN0UgLyogQ29tbWFuZExpbmVQbGF5
Z3JvdW5kICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBD
b21tYW5kTGluZVBsYXlncm91bmQ7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCTFDNTMxOUJGMjdCREM2Q0MwMENEMTI3RSAvKiBtYWluLnN3aWZ0ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0
aCA9IG1haW4uc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNTMxOUNBMjdC
REQ3MDAwMENEMTI3RSAvKiBDb21tYW5kTGluZVBsYXlncm91bmQueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gQ29tbWFuZExpbmVQbGF5Z3JvdW5kLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjI1LDYgKzMxMSwxNTMgQEAKIAkJCXBhdGggPSBDb21tYW5kTGluZVBsYXln
cm91bmQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkxQzUzMTlDQjI3QkRE
RDZFMDBDRDEyN0UgLyogbWV0YWwtY3BwICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEwNDI3QkRERDZFMDBDRDEyN0UgLyogRm91bmRhdGlvbiAq
LywKKwkJCQkxQzUzMTlDQzI3QkRERDZFMDBDRDEyN0UgLyogTWV0YWwgKi8sCisJCQkJMUM1MzFB
MUIyN0JEREQ2RTAwQ0QxMjdFIC8qIFF1YXJ0ekNvcmUgKi8sCisJCQkJMUM1MzFBMjEyN0JEREQ2
RTAwQ0QxMjdFIC8qIFNpbmdsZUhlYWRlciAqLywKKwkJCQkxQzUzMUEyMDI3QkRERDZFMDBDRDEy
N0UgLyogTElDRU5TRS50eHQgKi8sCisJCQkJMUM1MzFBMUEyN0JEREQ2RTAwQ0QxMjdFIC8qIFJF
QURNRS5tZCAqLywKKwkJCSk7CisJCQlwYXRoID0gIm1ldGFsLWNwcCI7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQkxQzUzMTlDQzI3QkRERDZFMDBDRDEyN0UgLyogTWV0YWwg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTMxOURC
MjdCRERENkUwMENEMTI3RSAvKiBNZXRhbC5ocHAgKi8sCisJCQkJMUM1MzE5RTkyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAgKi8sCisJCQkJMUM1MzE5Rjky
N0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVy
LmhwcCAqLywKKwkJCQkxQzUzMTlERDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQWNjZWxlcmF0aW9u
U3RydWN0dXJlVHlwZXMuaHBwICovLAorCQkJCTFDNTMxOUVCMjdCRERENkUwMENEMTI3RSAvKiBN
VExBcmd1bWVudC5ocHAgKi8sCisJCQkJMUM1MzE5RTQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFy
Z3VtZW50RW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5RkMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TEJpbmFyeUFyY2hpdmUuaHBwICovLAorCQkJCTFDNTMxOUQ4MjdCRERENkUwMENEMTI3RSAvKiBN
VExCbGl0Q29tbWFuZEVuY29kZXIuaHBwICovLAorCQkJCTFDNTMxOUZBMjdCRERENkUwMENEMTI3
RSAvKiBNVExCbGl0UGFzcy5ocHAgKi8sCisJCQkJMUM1MzE5RUQyN0JEREQ2RTAwQ0QxMjdFIC8q
IE1UTEJ1ZmZlci5ocHAgKi8sCisJCQkJMUM1MzE5RDkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENh
cHR1cmVNYW5hZ2VyLmhwcCAqLywKKwkJCQkxQzUzMTlGRDI3QkRERDZFMDBDRDEyN0UgLyogTVRM
Q2FwdHVyZVNjb3BlLmhwcCAqLywKKwkJCQkxQzUzMUEwMzI3QkRERDZFMDBDRDEyN0UgLyogTVRM
Q29tbWFuZEJ1ZmZlci5ocHAgKi8sCisJCQkJMUM1MzE5REEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TENvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlGNzI3QkRERDZFMDBDRDEyN0UgLyog
TVRMQ29tbWFuZFF1ZXVlLmhwcCAqLywKKwkJCQkxQzUzMTlGRTI3QkRERDZFMDBDRDEyN0UgLyog
TVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlENDI3QkRERDZFMDBD
RDEyN0UgLyogTVRMQ29tcHV0ZVBhc3MuaHBwICovLAorCQkJCTFDNTMxOUQwMjdCRERENkUwMENE
MTI3RSAvKiBNVExDb21wdXRlUGlwZWxpbmUuaHBwICovLAorCQkJCTFDNTMxQTAwMjdCRERENkUw
MENEMTI3RSAvKiBNVExDb3VudGVycy5ocHAgKi8sCisJCQkJMUM1MzFBMDEyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1UTERlZmluZXMuaHBwICovLAorCQkJCTFDNTMxOUUzMjdCRERENkUwMENEMTI3RSAv
KiBNVExEZXB0aFN0ZW5jaWwuaHBwICovLAorCQkJCTFDNTMxOUVBMjdCRERENkUwMENEMTI3RSAv
KiBNVExEZXZpY2UuaHBwICovLAorCQkJCTFDNTMxOUQyMjdCRERENkUwMENEMTI3RSAvKiBNVExE
cmF3YWJsZS5ocHAgKi8sCisJCQkJMUM1MzE5RDMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTER5bmFt
aWNMaWJyYXJ5LmhwcCAqLywKKwkJCQkxQzUzMTlGQjI3QkRERDZFMDBDRDEyN0UgLyogTVRMRXZl
bnQuaHBwICovLAorCQkJCTFDNTMxOUY0MjdCRERENkUwMENEMTI3RSAvKiBNVExGZW5jZS5ocHAg
Ki8sCisJCQkJMUM1MzE5RDUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uQ29uc3RhbnRW
YWx1ZXMuaHBwICovLAorCQkJCTFDNTMxOUY4MjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5jdGlv
bkRlc2NyaXB0b3IuaHBwICovLAorCQkJCTFDNTMxOUQxMjdCRERENkUwMENEMTI3RSAvKiBNVExG
dW5jdGlvbkhhbmRsZS5ocHAgKi8sCisJCQkJMUM1MzE5RUMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TEZ1bmN0aW9uTG9nLmhwcCAqLywKKwkJCQkxQzUzMTlGMTI3QkRERDZFMDBDRDEyN0UgLyogTVRM
RnVuY3Rpb25TdGl0Y2hpbmcuaHBwICovLAorCQkJCTFDNTMxOUZGMjdCRERENkUwMENEMTI3RSAv
KiBNVExIZWFkZXJCcmlkZ2UuaHBwICovLAorCQkJCTFDNTMxOUVGMjdCRERENkUwMENEMTI3RSAv
KiBNVExIZWFwLmhwcCAqLywKKwkJCQkxQzUzMTlGNTI3QkRERDZFMDBDRDEyN0UgLyogTVRMSW5k
aXJlY3RDb21tYW5kQnVmZmVyLmhwcCAqLywKKwkJCQkxQzUzMTlDRjI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5RTUyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwICovLAorCQkJCTFD
NTMxOUYyMjdCRERENkUwMENEMTI3RSAvKiBNVExMaWJyYXJ5LmhwcCAqLywKKwkJCQkxQzUzMTlF
MDI3QkRERDZFMDBDRDEyN0UgLyogTVRMTGlua2VkRnVuY3Rpb25zLmhwcCAqLywKKwkJCQkxQzUz
MTlERTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlci5o
cHAgKi8sCisJCQkJMUM1MzE5RDYyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFBpcGVsaW5lLmhwcCAq
LywKKwkJCQkxQzUzMTlGMzI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGl4ZWxGb3JtYXQuaHBwICov
LAorCQkJCTFDNTMxOUU3MjdCRERENkUwMENEMTI3RSAvKiBNVExQcml2YXRlLmhwcCAqLywKKwkJ
CQkxQzUzMTlERjI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwICov
LAorCQkJCTFDNTMxOUQ3MjdCRERENkUwMENEMTI3RSAvKiBNVExSZW5kZXJDb21tYW5kRW5jb2Rl
ci5ocHAgKi8sCisJCQkJMUM1MzE5RUUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlbmRlclBhc3Mu
aHBwICovLAorCQkJCTFDNTMxOUY2MjdCRERENkUwMENEMTI3RSAvKiBNVExSZW5kZXJQaXBlbGlu
ZS5ocHAgKi8sCisJCQkJMUM1MzE5RTgyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlc291cmNlLmhw
cCAqLywKKwkJCQkxQzUzMTlDRTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2VTdGF0ZUNv
bW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMUEwMjI3QkRERDZFMDBDRDEyN0UgLyogTVRM
UmVzb3VyY2VTdGF0ZVBhc3MuaHBwICovLAorCQkJCTFDNTMxOUUyMjdCRERENkUwMENEMTI3RSAv
KiBNVExTYW1wbGVyLmhwcCAqLywKKwkJCQkxQzUzMTlEQzI3QkRERDZFMDBDRDEyN0UgLyogTVRM
U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwICovLAorCQkJCTFDNTMxOUUxMjdCRERENkUw
MENEMTI3RSAvKiBNVExUZXh0dXJlLmhwcCAqLywKKwkJCQkxQzUzMTlDRDI3QkRERDZFMDBDRDEy
N0UgLyogTVRMVHlwZXMuaHBwICovLAorCQkJCTFDNTMxOUYwMjdCRERENkUwMENEMTI3RSAvKiBN
VExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCAqLywKKwkJCQkxQzUzMTlFNjI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwICovLAorCQkJKTsKKwkJCXBhdGggPSBNZXRh
bDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDNTMxQTA0MjdCRERENkUw
MENEMTI3RSAvKiBGb3VuZGF0aW9uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQkxQzUzMUExNDI3QkRERDZFMDBDRDEyN0UgLyogRm91bmRhdGlvbi5ocHAg
Ki8sCisJCQkJMUM1MzFBMTkyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TQXJyYXkuaHBwICovLAorCQkJ
CTFDNTMxQTBGMjdCRERENkUwMENEMTI3RSAvKiBOU0F1dG9yZWxlYXNlUG9vbC5ocHAgKi8sCisJ
CQkJMUM1MzFBMTcyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TQnVuZGxlLmhwcCAqLywKKwkJCQkxQzUz
MUExMjI3QkRERDZFMDBDRDEyN0UgLyogTlNEYXRhLmhwcCAqLywKKwkJCQkxQzUzMUExNTI3QkRE
RDZFMDBDRDEyN0UgLyogTlNEYXRlLmhwcCAqLywKKwkJCQkxQzUzMUExNjI3QkRERDZFMDBDRDEy
N0UgLyogTlNEZWZpbmVzLmhwcCAqLywKKwkJCQkxQzUzMUEwNjI3QkRERDZFMDBDRDEyN0UgLyog
TlNEaWN0aW9uYXJ5LmhwcCAqLywKKwkJCQkxQzUzMUExODI3QkRERDZFMDBDRDEyN0UgLyogTlNF
bnVtZXJhdG9yLmhwcCAqLywKKwkJCQkxQzUzMUEwOTI3QkRERDZFMDBDRDEyN0UgLyogTlNFcnJv
ci5ocHAgKi8sCisJCQkJMUM1MzFBMDcyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TTG9jay5ocHAgKi8s
CisJCQkJMUM1MzFBMEMyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TTm90aWZpY2F0aW9uLmhwcCAqLywK
KwkJCQkxQzUzMUExMzI3QkRERDZFMDBDRDEyN0UgLyogTlNOdW1iZXIuaHBwICovLAorCQkJCTFD
NTMxQTBBMjdCRERENkUwMENEMTI3RSAvKiBOU09iakNSdW50aW1lLmhwcCAqLywKKwkJCQkxQzUz
MUEwQjI3QkRERDZFMDBDRDEyN0UgLyogTlNPYmplY3QuaHBwICovLAorCQkJCTFDNTMxQTBEMjdC
RERENkUwMENEMTI3RSAvKiBOU1ByaXZhdGUuaHBwICovLAorCQkJCTFDNTMxQTA4MjdCRERENkUw
MENEMTI3RSAvKiBOU1Byb2Nlc3NJbmZvLmhwcCAqLywKKwkJCQkxQzUzMUExMDI3QkRERDZFMDBD
RDEyN0UgLyogTlNSYW5nZS5ocHAgKi8sCisJCQkJMUM1MzFBMDUyN0JEREQ2RTAwQ0QxMjdFIC8q
IE5TU3RyaW5nLmhwcCAqLywKKwkJCQkxQzUzMUExMTI3QkRERDZFMDBDRDEyN0UgLyogTlNUeXBl
cy5ocHAgKi8sCisJCQkJMUM1MzFBMEUyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TVVJMLmhwcCAqLywK
KwkJCSk7CisJCQlwYXRoID0gRm91bmRhdGlvbjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCTFDNTMxQTFCMjdCRERENkUwMENEMTI3RSAvKiBRdWFydHpDb3JlICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUExRjI3QkRERDZF
MDBDRDEyN0UgLyogQ0FEZWZpbmVzLmhwcCAqLywKKwkJCQkxQzUzMUExRTI3QkRERDZFMDBDRDEy
N0UgLyogQ0FNZXRhbERyYXdhYmxlLmhwcCAqLywKKwkJCQkxQzUzMUExRDI3QkRERDZFMDBDRDEy
N0UgLyogQ0FQcml2YXRlLmhwcCAqLywKKwkJCQkxQzUzMUExQzI3QkRERDZFMDBDRDEyN0UgLyog
UXVhcnR6Q29yZS5ocHAgKi8sCisJCQkpOworCQkJcGF0aCA9IFF1YXJ0ekNvcmU7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzUzMUEyMTI3QkRERDZFMDBDRDEyN0UgLyog
U2luZ2xlSGVhZGVyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkxQzUzMUEyMjI3QkRERDZFMDBDRDEyN0UgLyogTWFrZVNpbmdsZUhlYWRlci5weSAqLywK
KwkJCSk7CisJCQlwYXRoID0gU2luZ2xlSGVhZGVyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKKwkJMUM1MzFBMjYyN0JEREZFMTAwQ0QxMjdFIC8qIERlcml2ZWRTb3VyY2VzICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEyODI3
QkRFMDMzMDBDRDEyN0UgLyogbWV0YWwtY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBEZXJpdmVk
U291cmNlczsKKwkJCXBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJHUFU7CisJCQlzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOworCQl9OworCQkxQzUzMUEyODI3QkRFMDMzMDBDRDEyN0Ug
LyogbWV0YWwtY3BwICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkxQzUzMUEyOTI3QkRFMDQ5MDBDRDEyN0UgLyogTWV0YWwgKi8sCisJCQkpOworCQkJcGF0
aCA9ICJtZXRhbC1jcHAiOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUM1
MzFBMjkyN0JERTA0OTAwQ0QxMjdFIC8qIE1ldGFsICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEyQTI3QkRFMDY3MDBDRDEyN0UgLyogTWV0YWwu
aHBwICovLAorCQkJKTsKKwkJCXBhdGggPSBNZXRhbDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CiAJCTFDRUJEN0Q5MjcxNkFGQkEwMEE1MjU0RCA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNTMsNiArNDg2LDggQEAKIAkJMUNFQkQ3RTUyNzE2
QUZCQTAwQTUyNTREIC8qIFdlYkdQVSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMUM1MzFBMjYyN0JEREZFMTAwQ0QxMjdFIC8qIERlcml2ZWRTb3VyY2Vz
ICovLAorCQkJCTFDNTMxOUNCMjdCRERENkUwMENEMTI3RSAvKiBtZXRhbC1jcHAgKi8sCiAJCQkJ
MUM1QUNBQjIyNzNBNDI2RDAwOTVGOEQ1IC8qIEFkYXB0ZXIuaCAqLywKIAkJCQkxQzVBQ0FBOTI3
M0E0MjZEMDA5NUY4RDUgLyogQWRhcHRlci5tbSAqLywKIAkJCQkxQzVBQ0FENTI3M0E0RDcwMDA5
NUY4RDUgLyogQmluZEdyb3VwLmggKi8sCkBAIC0yNzUsNiArNTEwLDcgQEAKIAkJCQkxQ0VCRDgw
QjI3MTZDMzc5MDBBNTI1NEQgLyogRXhwb3J0TWFjcm9zLmggKi8sCiAJCQkJMUM1QUNBQTAyNzNB
NDI2RDAwOTVGOEQ1IC8qIEluc3RhbmNlLmggKi8sCiAJCQkJMUM1QUNBOTIyNzNBNDFDMjAwOTVG
OEQ1IC8qIEluc3RhbmNlLm1tICovLAorCQkJCTFDNTMxQTI0MjdCRERGNTUwMENEMTI3RSAvKiBN
ZXRhbC5jcHAgKi8sCiAJCQkJMUM1QUNBREEyNzNBNEU3MTAwOTVGOEQ1IC8qIFBpcGVsaW5lTGF5
b3V0LmggKi8sCiAJCQkJMUM1QUNBRTQyNzNBNTVERDAwOTVGOEQ1IC8qIFBpcGVsaW5lTGF5b3V0
Lm1tICovLAogCQkJCTFDNUFDQUFDMjczQTQyNkQwMDk1RjhENSAvKiBRdWVyeVNldC5oICovLApA
QCAtNDIwLDYgKzY1Niw3IEBACiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMUNFQkQ3RUEyNzE2QUZCQTAwQTUyNTREIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJHUFUiICovOwogCQkJYnVpbGRQ
aGFzZXMgPSAoCisJCQkJMUM1MzFBMjMyN0JERERCNTAwQ0QxMjdFIC8qIFNoZWxsU2NyaXB0ICov
LAogCQkJCTFDRUJEN0RFMjcxNkFGQkEwMEE1MjU0RCAvKiBIZWFkZXJzICovLAogCQkJCTFDRUJE
N0RGMjcxNkFGQkEwMEE1MjU0RCAvKiBTb3VyY2VzICovLAogCQkJCTFDRUJEN0UwMjcxNkFGQkEw
MEE1MjU0RCAvKiBGcmFtZXdvcmtzICovLApAQCAtNTE3LDYgKzc1NCwxMDUgQEAKIC8qIEVuZCBQ
QlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxTY3Jp
cHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMUM1MzFBMjMyN0JERERCNTAwQ0QxMjdFIC8qIFNo
ZWxsU2NyaXB0ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlu
cHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNS
Q1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHki
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9Gb3VuZGF0aW9u
LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXJy
YXkuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNB
dXRvcmVsZWFzZVBvb2wuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNCdW5kbGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3Bw
L0ZvdW5kYXRpb24vTlNEYXRhLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TRGF0ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU0RlZmluZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNEaWN0aW9uYXJ5LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRW51bWVyYXRvci5ocHAiLAorCQkJCSIkKFNSQ1JP
T1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vycm9yLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTG9jay5ocHAiLAorCQkJCSIkKFNS
Q1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAiLAor
CQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU051bWJlci5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iakNSdW50
aW1lLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
T2JqZWN0LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TUHJpdmF0ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU1Byb2Nlc3NJbmZvLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TUmFuZ2UuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNTdHJpbmcuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNUeXBlcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU1VSTC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21t
YW5kRW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNS
T09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJpbmFyeUFyY2hpdmUuaHBwIiwKKwkJCQki
JChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRDb21tYW5kRW5jb2Rlci5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdFBhc3Mu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJ1ZmZlci5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1h
bmFnZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENh
cHR1cmVTY29wZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ29tbWFuZEJ1ZmZlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMQ29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTENvbW1hbmRRdWV1ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQo
U1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGFzcy5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb3VudGVycy5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVmaW5lcy5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVwdGhTdGVu
Y2lsLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXZp
Y2UuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERyYXdh
YmxlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEeW5h
bWljTGlicmFyeS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMRXZlbnQuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TEZlbmNlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExG
dW5jdGlvbkNvbnN0YW50VmFsdWVzLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwIiwKKwkJCQkiJChTUkNST09UKS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uSGFuZGxlLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAiLAorCQkJCSIk
KFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBw
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEhlYWRlckJyaWRn
ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RD
b21tYW5kQnVmZmVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExJbmRpcmVjdENvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaWJyYXJ5LmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaW5rZWRGdW5jdGlvbnMuaHBw
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBhcmFsbGVsUmVu
ZGVyQ29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFBpcGVsaW5lLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExQaXhlbEZvcm1hdC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMUHJpdmF0ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQYXNzLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQaXBlbGluZS5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2Uu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNl
U3RhdGVDb21tYW5kRW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFNhbXBsZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUZXh0dXJlLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUeXBlcy5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmVydGV4RGVzY3JpcHRvci5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmlzaWJsZUZ1
bmN0aW9uVGFibGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01ldGFsLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3Jl
L0NBRGVmaW5lcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6
Q29yZS9DQU1ldGFsRHJhd2FibGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwt
Y3BwL1F1YXJ0ekNvcmUvQ0FQcml2YXRlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9RdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwIiwKKwkJCSk7CisJCQlvdXRwdXRGaWxl
TGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC5ocHAiLAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hl
bGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wICR7QlVJTFRfUFJP
RFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJHUFUvbWV0YWwtY3BwL01ldGFsXG5cbmNkIFdl
YkdQVS9tZXRhbC1jcHBcbi4vU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkgLW8gJHtC
VUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TWV0YWwuaHBwIEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAgUXVhcnR6Q29yZS9RdWFydHpDb3Jl
LmhwcCBNZXRhbC9NZXRhbC5ocHBcbiI7CisJCX07CiAJCTY1NzdGRkM4Mjc2QUNBMDYwMDExQUVD
OCAvKiBDcmVhdGUgU3ltbGluayB0byBBbHQgUm9vdCBQYXRoICovID0gewogCQkJaXNhID0gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gODsKQEAgLTU2OSw2
ICs5MDUsNyBAQAogCQkJCTFDNUFDQUMwMjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGlwZWxp
bmUubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0FDMTI3M0E0MjZEMDA5NUY4RDUgLyogRGV2
aWNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1QUNBOTQyNzNBNDFDMjAwOTVGOEQ1IC8qIElu
c3RhbmNlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1MzFBMjUyN0JEREY1NTAwQ0QxMjdFIC8q
IE1ldGFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUU1MjczQTU1REQwMDk1RjhENSAv
KiBQaXBlbGluZUxheW91dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUJEMjczQTQyNkQw
MDk1RjhENSAvKiBRdWVyeVNldC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUNCMjczQTQy
NkUwMDk1RjhENSAvKiBRdWV1ZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvTWV0YWwuY3BwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvTWV0YWwuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ0ZmI2NGUxM2EyOWYzMmY4ZmEzZDUxYmJhZGQ5ZTk1ZWYzZGM0MGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9NZXRhbC5jcHAKQEAgLTAsMCAr
MSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNk
ZWZpbmUgTlNfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorI2RlZmluZSBDQV9QUklWQVRFX0lNUExF
TUVOVEFUSU9OCisjZGVmaW5lIE1UTF9QUklWQVRFX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSA8
TWV0YWwvTWV0YWwuaHBwPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvY29uZmln
LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaAppbmRleCA4YzEyN2E5NDM0MGE3ZDdh
YzAyOTliYmY0MjdhMTI3NmU1MTU2NzNiLi40NjVmMWY1M2FlNDc4ODlkZTA4NmM5MDZjNDYwMGJm
ZjI1MWRjOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaApAQCAtMjUsOCArMjUsMjEgQEAKIAogI2lu
Y2x1ZGUgIkV4cG9ydE1hY3Jvcy5oIgogCituYW1lc3BhY2UgTVRMIHsKK2NsYXNzIEZ1bmN0aW9u
OworfQorCituYW1lc3BhY2UgTlMgeworY2xhc3MgU3RyaW5nOworY2xhc3MgVVJMOworfQorCisj
aW5jbHVkZSA8TWV0YWwvTWV0YWwuaHBwPgorCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
IAogI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CiAKICNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDA4MjUyZTliMTY2NGQ5YmQ4NjEyMTQ0ZTViYjBjNGFlNjZlMjg1NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaHBwCkBAIC0wLDAgKzEsNDUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNBcnJheS5o
cHAiCisjaW5jbHVkZSAiTlNBdXRvcmVsZWFzZVBvb2wuaHBwIgorI2luY2x1ZGUgIk5TQnVuZGxl
LmhwcCIKKyNpbmNsdWRlICJOU0RhdGEuaHBwIgorI2luY2x1ZGUgIk5TRGF0ZS5ocHAiCisjaW5j
bHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU0RpY3Rpb25hcnkuaHBwIgorI2luY2x1
ZGUgIk5TRW51bWVyYXRvci5ocHAiCisjaW5jbHVkZSAiTlNFcnJvci5ocHAiCisjaW5jbHVkZSAi
TlNMb2NrLmhwcCIKKyNpbmNsdWRlICJOU05vdGlmaWNhdGlvbi5ocHAiCisjaW5jbHVkZSAiTlNO
dW1iZXIuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUu
aHBwIgorI2luY2x1ZGUgIk5TUHJvY2Vzc0luZm8uaHBwIgorI2luY2x1ZGUgIk5TUmFuZ2UuaHBw
IgorI2luY2x1ZGUgIk5TU3RyaW5nLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKyNpbmNs
dWRlICJOU1VSTC5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNBcnJheS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU0FycmF5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzMwZGY5OTQ5NjdhZjIzZjI4ZDVjNzQ1ZmRh
NGNhZDk3MjA0MGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNBcnJheS5ocHAKQEAgLTAsMCArMSwxMTUgQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24v
TlNBcnJheS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
aW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7
CitjbGFzcyBBcnJheSA6IHB1YmxpYyBDb3B5aW5nPEFycmF5PgoreworcHVibGljOgorICAgIHN0
YXRpYyBBcnJheSogYXJyYXkoKTsKKyAgICBzdGF0aWMgQXJyYXkqIGFycmF5KGNvbnN0IE9iamVj
dCogcE9iamVjdCk7CisgICAgc3RhdGljIEFycmF5KiBhcnJheShjb25zdCBPYmplY3QqIGNvbnN0
KiBwT2JqZWN0cywgVUludGVnZXIgY291bnQpOworCisgICAgc3RhdGljIEFycmF5KiBhbGxvYygp
OworCisgICAgQXJyYXkqICAgICAgICBpbml0KCk7CisgICAgQXJyYXkqICAgICAgICBpbml0KGNv
bnN0IE9iamVjdCogY29uc3QqIHBPYmplY3RzLCBVSW50ZWdlciBjb3VudCk7CisgICAgQXJyYXkq
ICAgICAgICBpbml0KGNvbnN0IGNsYXNzIENvZGVyKiBwQ29kZXIpOworCisgICAgdGVtcGxhdGUg
PGNsYXNzIF9PYmplY3QgPSBPYmplY3Q+CisgICAgX09iamVjdCogb2JqZWN0KFVJbnRlZ2VyIGlu
ZGV4KSBjb25zdDsKKyAgICBVSW50ZWdlciBjb3VudCgpIGNvbnN0OworfTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OkFycmF5KiBOUzo6QXJyYXk6OmFycmF5KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxBcnJheSo+KF9OU19QUklWQVRFX0NMUyhOU0FycmF5KSwgX05TX1BSSVZBVEVfU0VMKGFy
cmF5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5OjphcnJheShjb25zdCBPYmplY3Qq
IHBPYmplY3QpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPihfTlNf
UFJJVkFURV9DTFMoTlNBcnJheSksIF9OU19QUklWQVRFX1NFTChhcnJheVdpdGhPYmplY3RfKSwg
cE9iamVjdCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5OjphcnJheShjb25zdCBPYmpl
Y3QqIGNvbnN0KiBwT2JqZWN0cywgVUludGVnZXIgY291bnQpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8QXJyYXkqPihfTlNfUFJJVkFURV9DTFMoTlNBcnJheSksIF9OU19QUklW
QVRFX1NFTChhcnJheVdpdGhPYmplY3RzX2NvdW50XyksIHBPYmplY3RzLCBjb3VudCk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpBcnJheSogTlM6OkFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPEFycmF5PihfTlNfUFJJVkFURV9DTFMoTlNBcnJheSkpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
QXJyYXkqIE5TOjpBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8
QXJyYXk+KCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5Ojppbml0KGNvbnN0IE9iamVj
dCogY29uc3QqIHBPYmplY3RzLCBVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aE9iamVj
dHNfY291bnRfKSwgcE9iamVjdHMsIGNvdW50KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBOUzo6QXJy
YXk6OmluaXQoY29uc3QgY2xhc3MgQ29kZXIqIHBDb2RlcikKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aENvZGVy
XyksIHBDb2Rlcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6QXJyYXk6OmNvdW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdD4KK19OU19JTkxJTkUg
X09iamVjdCogTlM6OkFycmF5OjpvYmplY3QoVUludGVnZXIgaW5kZXgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8X09iamVjdCo+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChvYmplY3RBdEluZGV4XyksIGluZGV4KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHAgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTIzODNhNTVmZTA2MmJlMjVhYzg1MDhmZGQ2YjQ5NWUzMmI4ZGY4YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXV0
b3JlbGVhc2VQb29sLmhwcApAQCAtMCwwICsxLDgzIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TQXV0b3JlbGVhc2VQ
b29sLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UK
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNs
dWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJO
U1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitjbGFzcyBB
dXRvcmVsZWFzZVBvb2wgOiBwdWJsaWMgT2JqZWN0Cit7CitwdWJsaWM6CisgICAgc3RhdGljIEF1
dG9yZWxlYXNlUG9vbCogYWxsb2MoKTsKKyAgICBBdXRvcmVsZWFzZVBvb2wqICAgICAgICBpbml0
KCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBkcmFpbigpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgYWRkT2JqZWN0KE9iamVjdCogcE9iamVjdCk7CisKKyAgICBzdGF0
aWMgdm9pZCAgICAgICAgICAgICBzaG93UG9vbHMoKTsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBdXRvcmVs
ZWFzZVBvb2wqIE5TOjpBdXRvcmVsZWFzZVBvb2w6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8QXV0b3JlbGVhc2VQb29sPihfTlNfUFJJVkFURV9DTFMoTlNBdXRvcmVs
ZWFzZVBvb2wpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkF1dG9yZWxlYXNlUG9vbCogTlM6OkF1dG9yZWxlYXNl
UG9vbDo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8QXV0b3JlbGVhc2VQ
b29sPigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSB2b2lkIE5TOjpBdXRvcmVsZWFzZVBvb2w6OmRyYWluKCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkcmFpbikp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSB2b2lkIE5TOjpBdXRvcmVsZWFzZVBvb2w6OmFkZE9iamVjdChPYmplY3QqIHBP
YmplY3QpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwoYWRkT2JqZWN0XyksIHBPYmplY3QpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpBdXRvcmVsZWFz
ZVBvb2w6OnNob3dQb29scygpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPihfTlNf
UFJJVkFURV9DTFMoTlNBdXRvcmVsZWFzZVBvb2wpLCBfTlNfUFJJVkFURV9TRUwoc2hvd1Bvb2xz
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNC
dW5kbGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNC
dW5kbGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlOGM1Mzk1YmIwMTE2YmYyMTE5MGNlMTczZjAxMDY4OGVk
ZTkyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
Rm91bmRhdGlvbi9OU0J1bmRsZS5ocHAKQEAgLTAsMCArMSwzNzQgQEAKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNCdW5k
bGUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1
ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNOb3RpZmljYXRpb24uaHBwIgorI2luY2x1
ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworX05T
X0NPTlNUKE5vdGlmaWNhdGlvbk5hbWUsIEJ1bmRsZURpZExvYWROb3RpZmljYXRpb24pOworX05T
X0NPTlNUKE5vdGlmaWNhdGlvbk5hbWUsIEJ1bmRsZVJlc291cmNlUmVxdWVzdExvd0Rpc2tTcGFj
ZU5vdGlmaWNhdGlvbik7CisKK2NsYXNzIFN0cmluZyogTG9jYWxpemVkU3RyaW5nKGNvbnN0IFN0
cmluZyogcEtleSwgY29uc3QgU3RyaW5nKik7CitjbGFzcyBTdHJpbmcqIExvY2FsaXplZFN0cmlu
Z0Zyb21UYWJsZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwgY29uc3Qg
U3RyaW5nKik7CitjbGFzcyBTdHJpbmcqIExvY2FsaXplZFN0cmluZ0Zyb21UYWJsZUluQnVuZGxl
KGNvbnN0IFN0cmluZyogcEtleSwgY29uc3QgU3RyaW5nKiBwVGJsLCBjb25zdCBjbGFzcyBCdW5k
bGUqIHBCZGxlLCBjb25zdCBTdHJpbmcqKTsKK2NsYXNzIFN0cmluZyogTG9jYWxpemVkU3RyaW5n
V2l0aERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwg
Y29uc3QgY2xhc3MgQnVuZGxlKiBwQmRsZSwgY29uc3QgU3RyaW5nKiBwVmFsLCBjb25zdCBTdHJp
bmcqKTsKKworY2xhc3MgQnVuZGxlIDogcHVibGljIFJlZmVyZW5jaW5nPEJ1bmRsZT4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgQnVuZGxlKiAgICBtYWluQnVuZGxlKCk7CisKKyAgICBzdGF0aWMg
QnVuZGxlKiAgICBidW5kbGUoY29uc3QgY2xhc3MgU3RyaW5nKiBwUGF0aCk7CisgICAgc3RhdGlj
IEJ1bmRsZSogICAgYnVuZGxlKGNvbnN0IGNsYXNzIFVSTCogcFVSTCk7CisKKyAgICBzdGF0aWMg
QnVuZGxlKiAgICBhbGxvYygpOworCisgICAgQnVuZGxlKiAgICAgICAgICAgaW5pdChjb25zdCBj
bGFzcyBTdHJpbmcqIHBQYXRoKTsKKyAgICBCdW5kbGUqICAgICAgICAgICBpbml0KGNvbnN0IGNs
YXNzIFVSTCogcFVSTCk7CisKKyAgICBjbGFzcyBBcnJheSogICAgICBhbGxCdW5kbGVzKCkgY29u
c3Q7CisgICAgY2xhc3MgQXJyYXkqICAgICAgYWxsRnJhbWV3b3JrcygpIGNvbnN0OworCisgICAg
Ym9vbCAgICAgICAgICAgICAgbG9hZCgpOworICAgIGJvb2wgICAgICAgICAgICAgIHVubG9hZCgp
OworCisgICAgYm9vbCAgICAgICAgICAgICAgaXNMb2FkZWQoKSBjb25zdDsKKworICAgIGJvb2wg
ICAgICAgICAgICAgIHByZWZsaWdodEFuZFJldHVybkVycm9yKGNsYXNzIEVycm9yKiogcEVycm9y
KSBjb25zdDsKKyAgICBib29sICAgICAgICAgICAgICBsb2FkQW5kUmV0dXJuRXJyb3IoY2xhc3Mg
RXJyb3IqKiBwRXJyb3IpOworCisgICAgY2xhc3MgVVJMKiAgICAgICAgYnVuZGxlVVJMKCkgY29u
c3Q7CisgICAgY2xhc3MgVVJMKiAgICAgICAgcmVzb3VyY2VVUkwoKSBjb25zdDsKKyAgICBjbGFz
cyBVUkwqICAgICAgICBleGVjdXRhYmxlVVJMKCkgY29uc3Q7CisgICAgY2xhc3MgVVJMKiAgICAg
ICAgVVJMRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZShjb25zdCBjbGFzcyBTdHJpbmcqIHBFeGVjdXRh
YmxlTmFtZSkgY29uc3Q7CisKKyAgICBjbGFzcyBVUkwqICAgICAgICBwcml2YXRlRnJhbWV3b3Jr
c1VSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAgICAgIHNoYXJlZEZyYW1ld29ya3NVUkwo
KSBjb25zdDsKKyAgICBjbGFzcyBVUkwqICAgICAgICBzaGFyZWRTdXBwb3J0VVJMKCkgY29uc3Q7
CisgICAgY2xhc3MgVVJMKiAgICAgICAgYnVpbHRJblBsdWdJbnNVUkwoKSBjb25zdDsKKyAgICBj
bGFzcyBVUkwqICAgICAgICBhcHBTdG9yZVJlY2VpcHRVUkwoKSBjb25zdDsKKworICAgIGNsYXNz
IFN0cmluZyogICAgIGJ1bmRsZVBhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICBy
ZXNvdXJjZVBhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICBleGVjdXRhYmxlUGF0
aCgpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRh
YmxlKGNvbnN0IGNsYXNzIFN0cmluZyogcEV4ZWN1dGFibGVOYW1lKSBjb25zdDsKKworICAgIGNs
YXNzIFN0cmluZyogICAgIHByaXZhdGVGcmFtZXdvcmtzUGF0aCgpIGNvbnN0OworICAgIGNsYXNz
IFN0cmluZyogICAgIHNoYXJlZEZyYW1ld29ya3NQYXRoKCkgY29uc3Q7CisgICAgY2xhc3MgU3Ry
aW5nKiAgICAgc2hhcmVkU3VwcG9ydFBhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAg
ICBidWlsdEluUGx1Z0luc1BhdGgoKSBjb25zdDsKKworICAgIGNsYXNzIFN0cmluZyogICAgIGJ1
bmRsZUlkZW50aWZpZXIoKSBjb25zdDsKKyAgICBjbGFzcyBEaWN0aW9uYXJ5KiBpbmZvRGljdGlv
bmFyeSgpIGNvbnN0OworICAgIGNsYXNzIERpY3Rpb25hcnkqIGxvY2FsaXplZEluZm9EaWN0aW9u
YXJ5KCkgY29uc3Q7CisgICAgY2xhc3MgT2JqZWN0KiAgICAgb2JqZWN0Rm9ySW5mb0RpY3Rpb25h
cnlLZXkoY29uc3QgY2xhc3MgU3RyaW5nKiBwS2V5KTsKKworICAgIGNsYXNzIFN0cmluZyogICAg
IGxvY2FsaXplZFN0cmluZyhjb25zdCBjbGFzcyBTdHJpbmcqIHBLZXksIGNvbnN0IGNsYXNzIFN0
cmluZyogcFZhbHVlID0gbnVsbHB0ciwgY29uc3QgY2xhc3MgU3RyaW5nKiBwVGFibGVOYW1lID0g
bnVsbHB0cikgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpOb3RpZmljYXRpb25O
YW1lLCBCdW5kbGVEaWRMb2FkTm90aWZpY2F0aW9uKTsKK19OU19QUklWQVRFX0RFRl9DT05TVChO
Uzo6Tm90aWZpY2F0aW9uTmFtZSwgQnVuZGxlUmVzb3VyY2VSZXF1ZXN0TG93RGlza1NwYWNlTm90
aWZpY2F0aW9uKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkxvY2FsaXplZFN0cmluZyhjb25zdCBT
dHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyopCit7CisgICAgcmV0dXJuIEJ1bmRsZTo6bWFpbkJ1
bmRsZSgpLT5sb2NhbGl6ZWRTdHJpbmcocEtleSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpTdHJpbmcqIE5TOjpMb2NhbGl6ZWRTdHJpbmdGcm9tVGFibGUoY29uc3QgU3RyaW5nKiBw
S2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNvbnN0IFN0cmluZyopCit7CisgICAgcmV0dXJuIEJ1
bmRsZTo6bWFpbkJ1bmRsZSgpLT5sb2NhbGl6ZWRTdHJpbmcocEtleSwgbnVsbHB0ciwgcFRibCk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpMb2NhbGl6ZWRTdHJpbmdGcm9tVGFibGVJbkJ1bmRs
ZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwgY29uc3QgQnVuZGxlKiBw
QmRsLCBjb25zdCBTdHJpbmcqKQoreworICAgIHJldHVybiBwQmRsLT5sb2NhbGl6ZWRTdHJpbmco
cEtleSwgbnVsbHB0ciwgcFRibCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpMb2NhbGl6ZWRT
dHJpbmdXaXRoRGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyogcEtleSwgY29uc3QgU3RyaW5nKiBw
VGJsLCBjb25zdCBCdW5kbGUqIHBCZGwsIGNvbnN0IFN0cmluZyogcFZhbCwgY29uc3QgU3RyaW5n
KikKK3sKKyAgICByZXR1cm4gcEJkbC0+bG9jYWxpemVkU3RyaW5nKHBLZXksIHBWYWwsIHBUYmwp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6QnVuZGxlKiBOUzo6QnVuZGxlOjptYWluQnVuZGxlKCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5kbGUqPihfTlNfUFJJVkFURV9DTFMoTlNCdW5k
bGUpLCBfTlNfUFJJVkFURV9TRUwobWFpbkJ1bmRsZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QnVuZGxlKiBO
Uzo6QnVuZGxlOjpidW5kbGUoY29uc3QgY2xhc3MgU3RyaW5nKiBwUGF0aCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5kbGUqPihfTlNfUFJJVkFURV9DTFMoTlNCdW5kbGUp
LCBfTlNfUFJJVkFURV9TRUwoYnVuZGxlV2l0aFBhdGhfKSwgcFBhdGgpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
QnVuZGxlKiBOUzo6QnVuZGxlOjpidW5kbGUoY29uc3QgY2xhc3MgVVJMKiBwVVJMKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1bmRsZSo+KF9OU19QUklWQVRFX0NMUyhOU0J1
bmRsZSksIF9OU19QUklWQVRFX1NFTChidW5kbGVXaXRoVVJMXyksIHBVUkwpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6QnVuZGxlKiBOUzo6QnVuZGxlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8QnVuZGxlKj4oX05TX1BSSVZBVEVfQ0xTKE5TQnVuZGxlKSwgX05TX1BSSVZBVEVf
U0VMKGFsbG9jKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpCdW5kbGUqIE5TOjpCdW5kbGU6OmluaXQoY29uc3Qg
U3RyaW5nKiBwUGF0aCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5kbGUq
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhQYXRoXyksIHBQYXRoKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OkJ1bmRsZSogTlM6OkJ1bmRsZTo6aW5pdChjb25zdCBVUkwqIHBVUkwpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QnVuZGxlKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlu
aXRXaXRoVVJMXyksIHBVUkwpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpCdW5kbGU6OmFsbEJ1
bmRsZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGFsbEJ1bmRsZXMpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBO
Uzo6QnVuZGxlOjphbGxGcmFtZXdvcmtzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhbGxGcmFtZXdvcmtzKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIGJvb2wgTlM6OkJ1bmRsZTo6bG9hZCgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvYWQpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
Ym9vbCBOUzo6QnVuZGxlOjp1bmxvYWQoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bmxvYWQpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBO
Uzo6QnVuZGxlOjppc0xvYWRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzTG9hZGVkKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJv
b2wgTlM6OkJ1bmRsZTo6cHJlZmxpZ2h0QW5kUmV0dXJuRXJyb3IoRXJyb3IqKiBwRXJyb3IpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BS
SVZBVEVfU0VMKHByZWZsaWdodEFuZFJldHVybkVycm9yXyksIHBFcnJvcik7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJv
b2wgTlM6OkJ1bmRsZTo6bG9hZEFuZFJldHVybkVycm9yKEVycm9yKiogcEVycm9yKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChs
b2FkQW5kUmV0dXJuRXJyb3JfKSwgcEVycm9yKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRs
ZTo6YnVuZGxlVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxV
UkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnVuZGxlVVJMKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwq
IE5TOjpCdW5kbGU6OnJlc291cmNlVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocmVzb3VyY2VVUkwpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6ZXhlY3V0YWJsZVVSTCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGV4
ZWN1dGFibGVVUkwpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6VVJMRm9yQXV4aWxp
YXJ5RXhlY3V0YWJsZShjb25zdCBTdHJpbmcqIHBFeGVjdXRhYmxlTmFtZSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
VVJMRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8pLCBwRXhlY3V0YWJsZU5hbWUpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6VVJMKiBOUzo6QnVuZGxlOjpwcml2YXRlRnJhbWV3b3Jrc1VSTCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHBy
aXZhdGVGcmFtZXdvcmtzVVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OnNoYXJl
ZEZyYW1ld29ya3NVUkwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzaGFyZWRGcmFtZXdvcmtzVVJMKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OnNoYXJlZFN1cHBvcnRVUkwoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChz
aGFyZWRTdXBwb3J0VVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OmJ1aWx0SW5Q
bHVnSW5zVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwq
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnVpbHRJblBsdWdJbnNVUkwpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OlVSTCogTlM6OkJ1bmRsZTo6YXBwU3RvcmVSZWNlaXB0VVJMKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYXBwU3Rv
cmVSZWNlaXB0VVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OmJ1bmRsZVBh
dGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChidW5kbGVQYXRoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5T
OjpCdW5kbGU6OnJlc291cmNlUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHJlc291cmNlUGF0aCkpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpleGVjdXRhYmxlUGF0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGV4ZWN1dGFibGVQYXRoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6
OnBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlKGNvbnN0IFN0cmluZyogcEV4ZWN1dGFibGVOYW1l
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8pLCBwRXhlY3V0YWJs
ZU5hbWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpwcml2YXRlRnJhbWV3b3Jr
c1BhdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChwcml2YXRlRnJhbWV3b3Jrc1BhdGgpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6c2hhcmVkRnJhbWV3b3Jrc1BhdGgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChzaGFyZWRGcmFtZXdvcmtzUGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVu
ZGxlOjpzaGFyZWRTdXBwb3J0UGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHNoYXJlZFN1cHBvcnRQYXRo
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OmJ1aWx0SW5QbHVnSW5zUGF0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGJ1aWx0SW5QbHVnSW5zUGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5n
KiBOUzo6QnVuZGxlOjpidW5kbGVJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnVuZGxlSWRl
bnRpZmllcikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkJ1bmRsZTo6aW5mb0RpY3Rp
b25hcnkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25h
cnkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5mb0RpY3Rpb25hcnkpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OkRpY3Rpb25hcnkqIE5TOjpCdW5kbGU6OmxvY2FsaXplZEluZm9EaWN0aW9uYXJ5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGxvY2FsaXplZEluZm9EaWN0aW9uYXJ5KSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpPYmpl
Y3QqIE5TOjpCdW5kbGU6Om9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5KGNvbnN0IFN0cmluZyog
cEtleSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxPYmplY3QqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwob2JqZWN0Rm9ySW5mb0RpY3Rpb25hcnlLZXlfKSwgcEtleSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OmxvY2FsaXplZFN0cmluZyhjb25zdCBTdHJpbmcq
IHBLZXksIGNvbnN0IFN0cmluZyogcFZhbHVlIC8qID0gbnVsbHB0ciAqLywgY29uc3QgU3RyaW5n
KiBwVGFibGVOYW1lIC8qID0gbnVsbHB0ciAqLykgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkU3Ry
aW5nRm9yS2V5X3ZhbHVlX3RhYmxlXyksIHBLZXksIHBWYWx1ZSwgcFRhYmxlTmFtZSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRhLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0YS5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWM2OTllNDc0NGY4MTNkNmVmZGNkNWY2Yjc0NjczZWZlY2EwM2U3YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
RGF0YS5ocHAKQEAgLTAsMCArMSw1NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0RhdGEuaHBwCisvLworLy8gQ29w
eXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIK
KyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworY2xhc3MgRGF0YSA6IHB1YmxpYyBD
b3B5aW5nPERhdGE+Cit7CitwdWJsaWM6CisgICAgdm9pZCogICAgbXV0YWJsZUJ5dGVzKCkgY29u
c3Q7CisgICAgVUludGVnZXIgbGVuZ3RoKCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkKiBOUzo6
RGF0YTo6bXV0YWJsZUJ5dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG11dGFibGVCeXRlcykpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6VUludGVnZXIgTlM6OkRhdGE6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsZW5ndGgp
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Rh
dGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRl
LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZTZjODNhZjdjNWMzYWY3ODczMjQ1Yzk2ZTAzNzA1ODY1Yjk2NjIw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNEYXRlLmhwcApAQCAtMCwwICsxLDQwIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TRGF0ZS5ocHAKKy8v
CisvLyBTZWUgTElDRU5TRS50eHQgZm9yIHRoaXMgcHJvamVjdCBsaWNlbnNpbmcgaW5mb3JtYXRp
b24uCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBw
IgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2Ug
TlMKK3sKKwordXNpbmcgVGltZUludGVydmFsID0gZG91YmxlOworCitjbGFzcyBEYXRlIDogcHVi
bGljIENvcHlpbmc8RGF0ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgRGF0ZSogZGF0ZVdpdGhU
aW1lSW50ZXJ2YWxTaW5jZU5vdyhUaW1lSW50ZXJ2YWwgc2Vjcyk7Cit9OworCit9IC8vIE5TCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpEYXRlKiBOUzo6RGF0ZTo6ZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdyhOUzo6
VGltZUludGVydmFsIHNlY3MpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpEYXRlKj4oX05TX1BSSVZBVEVfQ0xTKE5TRGF0ZSksIF9OU19QUklWQVRFX1NFTChkYXRl
V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93XyksIHNlY3MpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9O
U0RlZmluZXMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNEZWZpbmVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yzk2OTg5Y2I1ZGE1ZmExMGM5OGEzMjljMTMzYjA3
YWU4MmRhMWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcApAQCAtMCwwICsxLDQxIEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05T
RGVmaW5lcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
ZGVmaW5lIF9OU19XRUFLX0lNUE9SVCBfX2F0dHJpYnV0ZV9fKCh3ZWFrX2ltcG9ydCkpCisjZGVm
aW5lIF9OU19FWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKQorI2Rl
ZmluZSBfTlNfRVhURVJOIGV4dGVybiAiQyIgX05TX0VYUE9SVAorI2RlZmluZSBfTlNfSU5MSU5F
IGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKKyNkZWZpbmUgX05TX1BBQ0tF
RCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQorCisjZGVmaW5lIF9OU19DT05TVCh0eXBlLCBuYW1l
KSBfTlNfRVhURVJOIHR5cGUgY29uc3QgbmFtZTsKKyNkZWZpbmUgX05TX0VOVU0odHlwZSwgbmFt
ZSkgZW51bSBuYW1lIDogdHlwZQorI2RlZmluZSBfTlNfT1BUSU9OUyh0eXBlLCBuYW1lKSBcCisg
ICAgdXNpbmcgbmFtZSA9IHR5cGU7ICAgICAgICAgIFwKKyAgICBlbnVtIDogbmFtZQorCisjZGVm
aW5lIF9OU19DQVNUX1RPX1VJTlQodmFsdWUpIHN0YXRpY19jYXN0PE5TOjpVSW50ZWdlcj4odmFs
dWUpCisjZGVmaW5lIF9OU19WQUxJREFURV9TSVpFKG5zLCBuYW1lKSBzdGF0aWNfYXNzZXJ0KHNp
emVvZihuczo6bmFtZSkgPT0gc2l6ZW9mKG5zIyNuYW1lKSwgInNpemUgbWlzbWF0Y2ggIiAjbnMg
Ijo6IiAjbmFtZSkKKyNkZWZpbmUgX05TX1ZBTElEQVRFX0VOVU0obnMsIG5hbWUpIHN0YXRpY19h
c3NlcnQoX05TX0NBU1RfVE9fVUlOVChuczo6bmFtZSkgPT0gX05TX0NBU1RfVE9fVUlOVChucyMj
bmFtZSksICJ2YWx1ZSBtaXNtYXRjaCAiICNucyAiOjoiICNuYW1lKQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGljdGlvbmFyeS5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNjYmUyYmQ4M2QzZDQxZTU1ZWJiNjk1MTYxZjkwZTEwODViNTM5NDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Rp
Y3Rpb25hcnkuaHBwCkBAIC0wLDAgKzEsMTI4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TRGljdGlvbmFyeS5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNF
bnVtZXJhdG9yLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNUeXBl
cy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIERpY3Rpb25hcnkgOiBwdWJsaWMgTlM6OkNvcHlpbmc8
RGljdGlvbmFyeT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgRGljdGlvbmFyeSogZGljdGlvbmFy
eSgpOworICAgIHN0YXRpYyBEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5KGNvbnN0IE9iamVjdCogcE9i
amVjdCwgY29uc3QgT2JqZWN0KiBwS2V5KTsKKyAgICBzdGF0aWMgRGljdGlvbmFyeSogZGljdGlv
bmFyeShjb25zdCBPYmplY3QqIGNvbnN0KiBwT2JqZWN0cywgY29uc3QgT2JqZWN0KiBjb25zdCog
cEtleXMsIFVJbnRlZ2VyIGNvdW50KTsKKworICAgIHN0YXRpYyBEaWN0aW9uYXJ5KiBhbGxvYygp
OworCisgICAgRGljdGlvbmFyeSogICAgICAgIGluaXQoKTsKKyAgICBEaWN0aW9uYXJ5KiAgICAg
ICAgaW5pdChjb25zdCBPYmplY3QqIGNvbnN0KiBwT2JqZWN0cywgY29uc3QgT2JqZWN0KiBjb25z
dCogcEtleXMsIFVJbnRlZ2VyIGNvdW50KTsKKyAgICBEaWN0aW9uYXJ5KiAgICAgICAgaW5pdChj
b25zdCBjbGFzcyBDb2RlciogcENvZGVyKTsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBfS2V5VHlw
ZSA9IE9iamVjdD4KKyAgICBFbnVtZXJhdG9yPF9LZXlUeXBlPioga2V5RW51bWVyYXRvcigpIGNv
bnN0OworCisgICAgdGVtcGxhdGUgPGNsYXNzIF9PYmplY3QgPSBPYmplY3Q+CisgICAgX09iamVj
dCogb2JqZWN0KGNvbnN0IE9iamVjdCogcEtleSkgY29uc3Q7CisgICAgVUludGVnZXIgY291bnQo
KSBjb25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6ZGlj
dGlvbmFyeSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+
KF9OU19QUklWQVRFX0NMUyhOU0RpY3Rpb25hcnkpLCBfTlNfUFJJVkFURV9TRUwoZGljdGlvbmFy
eSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6OmRpY3Rpb25hcnko
Y29uc3QgT2JqZWN0KiBwT2JqZWN0LCBjb25zdCBPYmplY3QqIHBLZXkpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KF9OU19QUklWQVRFX0NMUyhOU0RpY3Rp
b25hcnkpLCBfTlNfUFJJVkFURV9TRUwoZGljdGlvbmFyeVdpdGhPYmplY3RfZm9yS2V5XyksIHBP
YmplY3QsIHBLZXkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6OmRp
Y3Rpb25hcnkoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMsIGNvbnN0IE9iamVjdCogY29u
c3QqIHBLZXlzLCBVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxEaWN0aW9uYXJ5Kj4oX05TX1BSSVZBVEVfQ0xTKE5TRGljdGlvbmFyeSksIF9OU19QUklW
QVRFX1NFTChkaWN0aW9uYXJ5V2l0aE9iamVjdHNfZm9yS2V5c19jb3VudF8pLAorICAgICAgICBw
T2JqZWN0cywgcEtleXMsIGNvdW50KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE5TOjpEaWN0
aW9uYXJ5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPERpY3Rpb25h
cnk+KF9OU19QUklWQVRFX0NMUyhOU0RpY3Rpb25hcnkpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25h
cnkqIE5TOjpEaWN0aW9uYXJ5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5p
dDxEaWN0aW9uYXJ5PigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6
OmluaXQoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMsIGNvbnN0IE9iamVjdCogY29uc3Qq
IHBLZXlzLCBVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxEaWN0aW9uYXJ5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoT2JqZWN0c19mb3JL
ZXlzX2NvdW50XyksIHBPYmplY3RzLCBwS2V5cywgY291bnQpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlv
bmFyeSogTlM6OkRpY3Rpb25hcnk6OmluaXQoY29uc3QgY2xhc3MgQ29kZXIqIHBDb2RlcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKGluaXRXaXRoQ29kZXJfKSwgcENvZGVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfS2V5VHlw
ZT4KK19OU19JTkxJTkUgTlM6OkVudW1lcmF0b3I8X0tleVR5cGU+KiBOUzo6RGljdGlvbmFyeTo6
a2V5RW51bWVyYXRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
RW51bWVyYXRvcjxfS2V5VHlwZT4qPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoa2V5RW51bWVyYXRv
cikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KwordGVtcGxhdGUgPGNsYXNzIF9PYmplY3Q+CitfTlNfSU5MSU5FIF9PYmplY3QqIE5TOjpEaWN0
aW9uYXJ5OjpvYmplY3QoY29uc3QgT2JqZWN0KiBwS2V5KSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPF9PYmplY3QqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob2JqZWN0
Rm9yS2V5XyksIHBLZXkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OkRpY3Rpb25hcnk6OmNv
dW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRW51bWVyYXRvci5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Njk1OTZjMDRkZGFmYTgwMWZhZWI1MWM3ODYyY2VkODMwZDAxMjZiYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRW51bWVyYXRv
ci5ocHAKQEAgLTAsMCArMSw3OCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0VudW1lcmF0b3IuaHBwCisvLworLy8g
Q29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TT2JqZWN0Lmhw
cCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworc3RydWN0IEZhc3RFbnVtZXJh
dGlvblN0YXRlCit7CisgICAgdW5zaWduZWQgbG9uZyAgc3RhdGU7CisgICAgT2JqZWN0KiogICAg
ICAgaXRlbXNQdHI7CisgICAgdW5zaWduZWQgbG9uZyogbXV0YXRpb25zUHRyOworICAgIHVuc2ln
bmVkIGxvbmcgIGV4dHJhWzVdOworfSBfTlNfUEFDS0VEOworCitjbGFzcyBGYXN0RW51bWVyYXRp
b24gOiBwdWJsaWMgUmVmZXJlbmNpbmc8RmFzdEVudW1lcmF0aW9uPgoreworcHVibGljOgorICAg
IE5TOjpVSW50ZWdlciBjb3VudEJ5RW51bWVyYXRpbmcoRmFzdEVudW1lcmF0aW9uU3RhdGUqIHBT
dGF0ZSwgT2JqZWN0KiogcEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGxlbik7Cit9OworCit0ZW1wbGF0
ZSA8Y2xhc3MgX09iamVjdFR5cGU+CitjbGFzcyBFbnVtZXJhdG9yIDogcHVibGljIFJlZmVyZW5j
aW5nPEVudW1lcmF0b3I8X09iamVjdFR5cGU+LCBGYXN0RW51bWVyYXRpb24+Cit7CitwdWJsaWM6
CisgICAgX09iamVjdFR5cGUqIG5leHRPYmplY3QoKTsKKyAgICBjbGFzcyBBcnJheSogYWxsT2Jq
ZWN0cygpOworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpGYXN0RW51bWVyYXRpb246OmNv
dW50QnlFbnVtZXJhdGluZyhGYXN0RW51bWVyYXRpb25TdGF0ZSogcFN0YXRlLCBPYmplY3QqKiBw
QnVmZmVyLCBOUzo6VUludGVnZXIgbGVuKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY291bnRCeUVudW1lcmF0aW5nV2l0
aFN0YXRlX29iamVjdHNfY291bnRfKSwgcFN0YXRlLCBwQnVmZmVyLCBsZW4pOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNs
YXNzIF9PYmplY3RUeXBlPgorX05TX0lOTElORSBfT2JqZWN0VHlwZSogTlM6OkVudW1lcmF0b3I8
X09iamVjdFR5cGU+OjpuZXh0T2JqZWN0KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxfT2JqZWN0VHlwZSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChuZXh0T2JqZWN0KSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1w
bGF0ZSA8Y2xhc3MgX09iamVjdFR5cGU+CitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkVudW1l
cmF0b3I8X09iamVjdFR5cGU+OjphbGxPYmplY3RzKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhbGxPYmplY3RzKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFcnJvci5o
cHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vycm9yLmhw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZWJmOTgxOGFjN2M4OGExZTViZGU2M2VmZGQxMTYwYzJkNGE0MTRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNFcnJvci5ocHAKQEAgLTAsMCArMSwxNzMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNFcnJvci5ocHAKKy8v
CisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZp
bmVzLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhw
cCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworewordXNpbmcgRXJyb3JEb21haW4g
PSBjbGFzcyBTdHJpbmcqOworCitfTlNfQ09OU1QoRXJyb3JEb21haW4sIENvY29hRXJyb3JEb21h
aW4pOworX05TX0NPTlNUKEVycm9yRG9tYWluLCBQT1NJWEVycm9yRG9tYWluKTsKK19OU19DT05T
VChFcnJvckRvbWFpbiwgT1NTdGF0dXNFcnJvckRvbWFpbik7CitfTlNfQ09OU1QoRXJyb3JEb21h
aW4sIE1hY2hFcnJvckRvbWFpbik7CisKK3VzaW5nIEVycm9yVXNlckluZm9LZXkgPSBjbGFzcyBT
dHJpbmcqOworCitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgVW5kZXJseWluZ0Vycm9yS2V5
KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWREZXNjcmlwdGlvbktleSk7
CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9y
S2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dl
c3Rpb25FcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkUmVj
b3ZlcnlPcHRpb25zRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIFJlY292
ZXJ5QXR0ZW1wdGVyRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIEhlbHBB
bmNob3JFcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgRGVidWdEZXNjcmlw
dGlvbkVycm9yS2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRGYWls
dXJlRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIFN0cmluZ0VuY29kaW5n
RXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIFVSTEVycm9yS2V5KTsKK19O
U19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBGaWxlUGF0aEVycm9yS2V5KTsKKworY2xhc3MgRXJy
b3IgOiBwdWJsaWMgQ29weWluZzxFcnJvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXJyb3Iq
ICAgICBlcnJvcihFcnJvckRvbWFpbiBkb21haW4sIEludGVnZXIgY29kZSwgY2xhc3MgRGljdGlv
bmFyeSogcERpY3Rpb25hcnkpOworCisgICAgc3RhdGljIEVycm9yKiAgICAgYWxsb2MoKTsKKyAg
ICBFcnJvciogICAgICAgICAgICBpbml0KCk7CisgICAgRXJyb3IqICAgICAgICAgICAgaW5pdChF
cnJvckRvbWFpbiBkb21haW4sIEludGVnZXIgY29kZSwgY2xhc3MgRGljdGlvbmFyeSogcERpY3Rp
b25hcnkpOworCisgICAgSW50ZWdlciAgICAgICAgICAgY29kZSgpIGNvbnN0OworICAgIEVycm9y
RG9tYWluICAgICAgIGRvbWFpbigpIGNvbnN0OworICAgIGNsYXNzIERpY3Rpb25hcnkqIHVzZXJJ
bmZvKCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJpbmcqICAgICBsb2NhbGl6ZWREZXNjcmlwdGlv
bigpIGNvbnN0OworICAgIGNsYXNzIEFycmF5KiAgICAgIGxvY2FsaXplZFJlY292ZXJ5T3B0aW9u
cygpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIGxvY2FsaXplZFJlY292ZXJ5U3VnZ2Vz
dGlvbigpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIGxvY2FsaXplZEZhaWx1cmVSZWFz
b24oKSBjb25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yRG9tYWluLCBDb2Nv
YUVycm9yRG9tYWluKTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JEb21haW4sIFBP
U0lYRXJyb3JEb21haW4pOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvckRvbWFpbiwg
T1NTdGF0dXNFcnJvckRvbWFpbik7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yRG9t
YWluLCBNYWNoRXJyb3JEb21haW4pOworCitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9y
VXNlckluZm9LZXksIFVuZGVybHlpbmdFcnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1Qo
TlM6OkVycm9yVXNlckluZm9LZXksIExvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKK19OU19QUklW
QVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkRmFpbHVyZVJlYXNv
bkVycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwg
TG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NP
TlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnNFcnJvcktl
eSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIFJlY292ZXJ5
QXR0ZW1wdGVyRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJ
bmZvS2V5LCBIZWxwQW5jaG9yRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpF
cnJvclVzZXJJbmZvS2V5LCBEZWJ1Z0Rlc2NyaXB0aW9uRXJyb3JLZXkpOworX05TX1BSSVZBVEVf
REVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRGYWlsdXJlRXJyb3JLZXkp
OworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBTdHJpbmdFbmNv
ZGluZ0Vycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tl
eSwgVVJMRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZv
S2V5LCBGaWxlUGF0aEVycm9yS2V5KTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkVycm9yKiBOUzo6RXJyb3I6OmVycm9y
KEVycm9yRG9tYWluIGRvbWFpbiwgSW50ZWdlciBjb2RlLCBjbGFzcyBEaWN0aW9uYXJ5KiBwRGlj
dGlvbmFyeSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxFcnJvcio+KF9OU19Q
UklWQVRFX0NMUyhOU0Vycm9yKSwgX05TX1BSSVZBVEVfU0VMKGVycm9yV2l0aERvbWFpbl9jb2Rl
X3VzZXJJbmZvXyksIGRvbWFpbiwgY29kZSwgcERpY3Rpb25hcnkpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RXJy
b3IqIE5TOjpFcnJvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBPYmplY3Q6OmFsbG9jPEVycm9y
PihfTlNfUFJJVkFURV9DTFMoTlNFcnJvcikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RXJyb3IqIE5TOjpFcnJv
cjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6aW5pdDxFcnJvcj4oKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OkVycm9yKiBOUzo6RXJyb3I6OmluaXQoRXJyb3JEb21haW4gZG9tYWluLCBJbnRlZ2VyIGNv
ZGUsIGNsYXNzIERpY3Rpb25hcnkqIHBEaWN0aW9uYXJ5KQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPEVycm9yKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoRG9tYWlu
X2NvZGVfdXNlckluZm9fKSwgZG9tYWluLCBjb2RlLCBwRGljdGlvbmFyeSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpJbnRlZ2VyIE5TOjpFcnJvcjo6Y29kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8SW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNvZGUpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkVycm9yRG9tYWluIE5TOjpFcnJvcjo6ZG9tYWluKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxFcnJvckRvbWFpbj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGRvbWFpbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkVycm9yOjp1c2VySW5mbygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTCh1c2VySW5mbykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6
RXJyb3I6OmxvY2FsaXplZERlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkRGVz
Y3JpcHRpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBOUzo6RXJyb3I6OmxvY2FsaXplZFJlY292
ZXJ5T3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJy
YXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpFcnJvcjo6bG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpTdHJpbmcqIE5TOjpFcnJvcjo6bG9jYWxpemVkRmFpbHVyZVJlYXNvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGxvY2FsaXplZEZhaWx1cmVSZWFzb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0xvY2suaHBwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjdkZTA4MTk0
ZjM0MjQ4OThmYzFmYjIzNzVmNjIzZDQ4NzhiNDRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcApAQCAtMCwwICsx
LDEwNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gRm91bmRhdGlvbi9OU0xvY2suaHBwCisvLworLy8gU2VlIExJQ0VOU0UudHh0IGZvciB0
aGlzIHByb2plY3QgbGljZW5zaW5nIGluZm9ybWF0aW9uLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBw
IgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorI2luY2x1ZGUgIk5TRGF0ZS5ocHAiCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMK
K3sKKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgPSBjbGFzcyBPYmplY3Q+
CitjbGFzcyBMb2NraW5nIDogcHVibGljIF9CYXNlCit7CitwdWJsaWM6CisgICAgdm9pZCBsb2Nr
KCk7CisgICAgdm9pZCB1bmxvY2soKTsKK307CisKK2NsYXNzIENvbmRpdGlvbiA6IHB1YmxpYyBM
b2NraW5nPENvbmRpdGlvbj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgQ29uZGl0aW9uKiBhbGxv
YygpOworCisgICAgQ29uZGl0aW9uKiAgICAgICAgaW5pdCgpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgd2FpdCgpOworICAgIGJvb2wgICAgICAgICAgICAgIHdhaXRVbnRpbERhdGUoRGF0ZSog
cExpbWl0KTsKKyAgICB2b2lkICAgICAgICAgICAgICBzaWduYWwoKTsKKyAgICB2b2lkICAgICAg
ICAgICAgICBicm9hZGNhc3QoKTsKK307CisKK30gLy8gTlMKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlPGNsYXNzIF9DbGFzcywgY2xh
c3MgX0Jhc2UgLyogPSBOUzo6T2JqZWN0ICovPgorX05TX0lOTElORSB2b2lkIE5TOjpMb2NraW5n
PF9DbGFzcywgX0Jhc2U+Ojpsb2NrKCkKK3sKKyAgICBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jaykpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGU8Y2xhc3MgX0NsYXNzLCBj
bGFzcyBfQmFzZSAvKiA9IE5TOjpPYmplY3QgKi8+CitfTlNfSU5MSU5FIHZvaWQgTlM6OkxvY2tp
bmc8X0NsYXNzLCBfQmFzZT46OnVubG9jaygpCit7CisgICAgTlM6Ok9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVubG9jaykpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6Q29u
ZGl0aW9uKiBOUzo6Q29uZGl0aW9uOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE5TOjpDb25kaXRpb24+KF9OU19QUklWQVRFX0NMUyhOU0NvbmRpdGlvbikpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6Q29uZGl0aW9uKiBOUzo6Q29uZGl0aW9uOjppbml0KCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6aW5pdDxOUzo6Q29uZGl0aW9uPigpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpDb25k
aXRpb246OndhaXQoKQoreworICAgIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9OU19QUklWQVRFX1NFTCh3YWl0KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OkNvbmRpdGlvbjo6d2Fp
dFVudGlsRGF0ZShOUzo6RGF0ZSogcExpbWl0KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpz
ZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwod2FpdFVudGlsRGF0ZV8pLCBw
TGltaXQpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSB2b2lkIE5TOjpDb25kaXRpb246OnNpZ25hbCgpCit7CisgICAgTlM6
Ok9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHNpZ25hbCkp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSB2b2lkIE5TOjpDb25kaXRpb246OmJyb2FkY2FzdCgpCit7CisgICAgTlM6Ok9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGJyb2FkY2FzdCkp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGFiYmM5ZjU4MDZiNjY1MDFkMzc5NTRiOGVmNTBlNjMyZjVjMmQ2NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90aWZp
Y2F0aW9uLmhwcApAQCAtMCwwICsxLDY3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TTm90aWZpY2F0aW9uLmhwcAor
Ly8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0Rl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TRGljdGlvbmFyeS5ocHAiCisjaW5jbHVkZSAiTlNPYmpl
Y3QuaHBwIgorI2luY2x1ZGUgIk5TU3RyaW5nLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIK
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVz
cGFjZSBOUworewordXNpbmcgTm90aWZpY2F0aW9uTmFtZSA9IGNsYXNzIFN0cmluZyo7CisKK2Ns
YXNzIE5vdGlmaWNhdGlvbiA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Tm90aWZpY2F0aW9uPgor
eworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgICBuYW1lKCkgY29uc3Q7CisgICAgTlM6Ok9i
amVjdCogICAgIG9iamVjdCgpIGNvbnN0OworICAgIE5TOjpEaWN0aW9uYXJ5KiB1c2VySW5mbygp
IGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6Ok5vdGlmaWNhdGlvbjo6bmFtZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpPYmplY3QqIE5TOjpOb3Rp
ZmljYXRpb246Om9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6Ok9iamVjdCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChvYmplY3QpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OkRpY3Rpb25hcnkqIE5TOjpOb3RpZmljYXRpb246OnVzZXJJbmZvKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6RGljdGlvbmFyeSo+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTCh1c2VySW5mbykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9Gb3VuZGF0aW9uL05TTnVtYmVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9Gb3VuZGF0aW9uL05TTnVtYmVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDBmNjZmMzc0ZmJjMzk2
MWQ1NTU2NDYxNjAxZjBlZTc0OWViZjQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOdW1iZXIuaHBwCkBAIC0wLDAgKzEsNTAx
IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBGb3VuZGF0aW9uL05TTnVtYmVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU09iakNSdW50aW1lLmhwcCIKKyNpbmNsdWRlICJOU09i
amVjdC5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIFZhbHVl
IDogcHVibGljIENvcHlpbmc8VmFsdWU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIFZhbHVlKiB2
YWx1ZShjb25zdCB2b2lkKiBwVmFsdWUsIGNvbnN0IGNoYXIqIHBUeXBlKTsKKyAgICBzdGF0aWMg
VmFsdWUqIHZhbHVlKGNvbnN0IHZvaWQqIHBQb2ludGVyKTsKKworICAgIHN0YXRpYyBWYWx1ZSog
YWxsb2MoKTsKKworICAgIFZhbHVlKiAgICAgICAgaW5pdChjb25zdCB2b2lkKiBwVmFsdWUsIGNv
bnN0IGNoYXIqIHBUeXBlKTsKKyAgICBWYWx1ZSogICAgICAgIGluaXQoY29uc3QgY2xhc3MgQ29k
ZXIqIHBDb2Rlcik7CisKKyAgICB2b2lkICAgICAgICAgIGdldFZhbHVlKHZvaWQqIHBWYWx1ZSwg
VUludGVnZXIgc2l6ZSkgY29uc3Q7CisgICAgY29uc3QgY2hhciogICBvYmpDVHlwZSgpIGNvbnN0
OworCisgICAgYm9vbCAgICAgICAgICBpc0VxdWFsVG9WYWx1ZShWYWx1ZSogcFZhbHVlKSBjb25z
dDsKKyAgICB2b2lkKiAgICAgICAgIHBvaW50ZXJWYWx1ZSgpIGNvbnN0OworfTsKKworY2xhc3Mg
TnVtYmVyIDogcHVibGljIENvcHlpbmc8TnVtYmVyLCBWYWx1ZT4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGNoYXIgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIq
ICAgICBudW1iZXIodW5zaWduZWQgY2hhciB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAg
IG51bWJlcihzaG9ydCB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcih1bnNp
Z25lZCBzaG9ydCB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcihpbnQgdmFs
dWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIodW5zaWduZWQgaW50IHZhbHVlKTsK
KyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGxvbmcgdmFsdWUpOworICAgIHN0YXRpYyBO
dW1iZXIqICAgICBudW1iZXIodW5zaWduZWQgbG9uZyB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJl
ciogICAgIG51bWJlcihsb25nIGxvbmcgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBu
dW1iZXIodW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAg
bnVtYmVyKGZsb2F0IHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGRvdWJs
ZSB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcihib29sIHZhbHVlKTsKKwor
ICAgIHN0YXRpYyBOdW1iZXIqICAgICBhbGxvYygpOworCisgICAgTnVtYmVyKiAgICAgICAgICAg
IGluaXQoY29uc3QgY2xhc3MgQ29kZXIqIHBDb2Rlcik7CisgICAgTnVtYmVyKiAgICAgICAgICAg
IGluaXQoY2hhciB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQodW5zaWduZWQg
Y2hhciB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQoc2hvcnQgdmFsdWUpOwor
ICAgIE51bWJlciogICAgICAgICAgICBpbml0KHVuc2lnbmVkIHNob3J0IHZhbHVlKTsKKyAgICBO
dW1iZXIqICAgICAgICAgICAgaW5pdChpbnQgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAg
ICBpbml0KHVuc2lnbmVkIGludCB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQo
bG9uZyB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQodW5zaWduZWQgbG9uZyB2
YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQobG9uZyBsb25nIHZhbHVlKTsKKyAg
ICBOdW1iZXIqICAgICAgICAgICAgaW5pdCh1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpOworICAg
IE51bWJlciogICAgICAgICAgICBpbml0KGZsb2F0IHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAg
ICAgICAgaW5pdChkb3VibGUgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KGJv
b2wgdmFsdWUpOworCisgICAgY2hhciAgICAgICAgICAgICAgIGNoYXJWYWx1ZSgpIGNvbnN0Owor
ICAgIHVuc2lnbmVkIGNoYXIgICAgICB1bnNpZ25lZENoYXJWYWx1ZSgpIGNvbnN0OworICAgIHNo
b3J0ICAgICAgICAgICAgICBzaG9ydFZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgc2hvcnQg
ICAgIHVuc2lnbmVkU2hvcnRWYWx1ZSgpIGNvbnN0OworICAgIGludCAgICAgICAgICAgICAgICBp
bnRWYWx1ZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCAgICAgICB1bnNpZ25lZEludFZhbHVl
KCkgY29uc3Q7CisgICAgbG9uZyAgICAgICAgICAgICAgIGxvbmdWYWx1ZSgpIGNvbnN0OworICAg
IHVuc2lnbmVkIGxvbmcgICAgICB1bnNpZ25lZExvbmdWYWx1ZSgpIGNvbnN0OworICAgIGxvbmcg
bG9uZyAgICAgICAgICBsb25nTG9uZ1ZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9uZyBs
b25nIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZSgpIGNvbnN0OworICAgIGZsb2F0ICAgICAgICAgICAg
ICBmbG9hdFZhbHVlKCkgY29uc3Q7CisgICAgZG91YmxlICAgICAgICAgICAgIGRvdWJsZVZhbHVl
KCkgY29uc3Q7CisgICAgYm9vbCAgICAgICAgICAgICAgIGJvb2xWYWx1ZSgpIGNvbnN0OworICAg
IEludGVnZXIgICAgICAgICAgICBpbnRlZ2VyVmFsdWUoKSBjb25zdDsKKyAgICBVSW50ZWdlciAg
ICAgICAgICAgdW5zaWduZWRJbnRlZ2VyVmFsdWUoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcq
ICAgICAgc3RyaW5nVmFsdWUoKSBjb25zdDsKKworICAgIENvbXBhcmlzb25SZXN1bHQgICBjb21w
YXJlKGNvbnN0IE51bWJlciogcE90aGVyTnVtYmVyKSBjb25zdDsKKyAgICBib29sICAgICAgICAg
ICAgICAgaXNFcXVhbFRvTnVtYmVyKGNvbnN0IE51bWJlciogcE51bWJlcikgY29uc3Q7CisKKyAg
ICBjbGFzcyBTdHJpbmcqICAgICAgZGVzY3JpcHRpb25XaXRoTG9jYWxlKGNvbnN0IE9iamVjdCog
cExvY2FsZSkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VmFsdWUqIE5TOjpWYWx1ZTo6dmFsdWUo
Y29uc3Qgdm9pZCogcFZhbHVlLCBjb25zdCBjaGFyKiBwVHlwZSkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxWYWx1ZSo+KF9OU19QUklWQVRFX0NMUyhOU1ZhbHVlKSwgX05TX1BS
SVZBVEVfU0VMKHZhbHVlV2l0aEJ5dGVzX29iakNUeXBlXyksIHBWYWx1ZSwgcFR5cGUpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6VmFsdWUqIE5TOjpWYWx1ZTo6dmFsdWUoY29uc3Qgdm9pZCogcFBvaW50ZXIpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VmFsdWUqPihfTlNfUFJJVkFURV9DTFMo
TlNWYWx1ZSksIF9OU19QUklWQVRFX1NFTCh2YWx1ZVdpdGhQb2ludGVyXyksIHBQb2ludGVyKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6OlZhbHVlKiBOUzo6VmFsdWU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8VmFsdWU+KF9OU19QUklWQVRFX0NMUyhOU1ZhbHVlKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpWYWx1ZSogTlM6OlZhbHVlOjppbml0KGNvbnN0IHZvaWQqIHBWYWx1ZSwgY29uc3QgY2hh
ciogcFR5cGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VmFsdWUqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhCeXRlc19vYmpDVHlwZV8pLCBwVmFsdWUsIHBUeXBl
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19OU19JTkxJTkUgTlM6OlZhbHVlKiBOUzo6VmFsdWU6OmluaXQoY29uc3QgY2xhc3MgQ29kZXIq
IHBDb2RlcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxWYWx1ZSo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChpbml0V2l0aENvZGVyXyksIHBDb2Rlcik7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQg
TlM6OlZhbHVlOjpnZXRWYWx1ZSh2b2lkKiBwVmFsdWUsIFVJbnRlZ2VyIHNpemUpIGNvbnN0Cit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZ2V0
VmFsdWVfc2l6ZV8pLCBwVmFsdWUsIHNpemUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBjb25zdCBjaGFyKiBOUzo6VmFs
dWU6Om9iakNUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxj
b25zdCBjaGFyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9iakNUeXBlKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJv
b2wgTlM6OlZhbHVlOjppc0VxdWFsVG9WYWx1ZShWYWx1ZSogcFZhbHVlKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChp
c0VxdWFsVG9WYWx1ZV8pLCBwVmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkKiBOUzo6VmFsdWU6OnBvaW50
ZXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZCo+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChwb2ludGVyVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJl
ciogTlM6Ok51bWJlcjo6bnVtYmVyKGNoYXIgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BSSVZB
VEVfU0VMKG51bWJlcldpdGhDaGFyXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6
Ok51bWJlcjo6bnVtYmVyKHVuc2lnbmVkIGNoYXIgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BS
SVZBVEVfU0VMKG51bWJlcldpdGhVbnNpZ25lZENoYXJfKSwgdmFsdWUpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIoc2hvcnQgdmFsdWUpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05T
X1BSSVZBVEVfU0VMKG51bWJlcldpdGhTaG9ydF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1i
ZXIqIE5TOjpOdW1iZXI6Om51bWJlcih1bnNpZ25lZCBzaG9ydCB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIp
LCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFVuc2lnbmVkU2hvcnRfKSwgdmFsdWUpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIoaW50IHZhbHVlKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJl
ciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoSW50XyksIHZhbHVlKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKHVuc2lnbmVkIGludCB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1i
ZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFVuc2lnbmVkSW50XyksIHZhbHVlKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKGxvbmcgdmFsdWUpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVt
YmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhMb25nXyksIHZhbHVlKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKHVuc2lnbmVkIGxvbmcgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5T
TnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhVbnNpZ25lZExvbmdfKSwgdmFsdWUp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIobG9uZyBsb25nIHZhbHVl
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRF
X0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoTG9uZ0xvbmdfKSwgdmFs
dWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIodW5zaWduZWQgbG9u
ZyBsb25nIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+
KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoVW5z
aWduZWRMb25nTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6
Om51bWJlcihmbG9hdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
dW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVy
V2l0aEZsb2F0XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVt
YmVyKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1i
ZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0
aERvdWJsZV8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJl
cihib29sIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+
KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoQm9v
bF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TnVtYmVyPihfTlNfUFJJVkFURV9DTFMoTlNO
dW1iZXIpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChjb25zdCBDb2Rl
ciogcENvZGVyKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aENvZGVyXyksIHBDb2Rlcik7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoY2hhciB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhD
aGFyXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdCh1bnNp
Z25lZCBjaGFyIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJl
cio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aFVuc2lnbmVkQ2hhcl8pLCB2YWx1ZSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoc2hvcnQgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGluaXRXaXRoU2hvcnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVt
YmVyOjppbml0KHVuc2lnbmVkIHNob3J0IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aFVuc2lnbmVk
U2hvcnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KGlu
dCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhJbnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVt
YmVyKiBOUzo6TnVtYmVyOjppbml0KHVuc2lnbmVkIGludCB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdp
dGhVbnNpZ25lZEludF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6
OmluaXQobG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1i
ZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhMb25nXyksIHZhbHVlKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdCh1bnNpZ25lZCBsb25nIHZhbHVlKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChpbml0V2l0aFVuc2lnbmVkTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIq
IE5TOjpOdW1iZXI6OmluaXQobG9uZyBsb25nIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aExvbmdM
b25nXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdCh1bnNp
Z25lZCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoVW5zaWduZWRMb25nTG9uZ18p
LCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoZmxvYXQgdmFs
dWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGluaXRXaXRoRmxvYXRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVy
KiBOUzo6TnVtYmVyOjppbml0KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhEb3VibGVf
KSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KGJvb2wgdmFs
dWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGluaXRXaXRoQm9vbF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGNoYXIgTlM6Ok51
bWJlcjo6Y2hhclZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxjaGFyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY2hhclZhbHVlKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVuc2ln
bmVkIGNoYXIgTlM6Ok51bWJlcjo6dW5zaWduZWRDaGFyVmFsdWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVkIGNoYXI+KHRoaXMsIF9OU19QUklWQVRF
X1NFTCh1bnNpZ25lZENoYXJWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBzaG9ydCBOUzo6TnVtYmVyOjpzaG9y
dFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxzaG9ydD4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKHNob3J0VmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdW5zaWduZWQgc2hv
cnQgTlM6Ok51bWJlcjo6dW5zaWduZWRTaG9ydFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTx1bnNpZ25lZCBzaG9ydD4odGhpcywgX05TX1BSSVZBVEVfU0VM
KHVuc2lnbmVkU2hvcnRWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBpbnQgTlM6Ok51bWJlcjo6aW50VmFsdWUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGludD4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGludFZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIGludCBOUzo6TnVtYmVy
Ojp1bnNpZ25lZEludFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTx1bnNpZ25lZCBpbnQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNpZ25lZEludFZhbHVl
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIGxvbmcgTlM6Ok51bWJlcjo6bG9uZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxsb25nPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9u
Z1ZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIGxvbmcgTlM6Ok51bWJlcjo6dW5zaWduZWRMb25n
VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVk
IGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNpZ25lZExvbmdWYWx1ZSkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBsb25nIGxvbmcgTlM6Ok51bWJlcjo6bG9uZ0xvbmdWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8bG9uZyBsb25nPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
bG9uZ0xvbmdWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSB1bnNpZ25lZCBsb25nIGxvbmcgTlM6Ok51bWJlcjo6
dW5zaWduZWRMb25nTG9uZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTx1bnNpZ25lZCBsb25nIGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNpZ25l
ZExvbmdMb25nVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgZmxvYXQgTlM6Ok51bWJlcjo6ZmxvYXRWYWx1ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChmbG9hdFZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGRvdWJsZSBOUzo6TnVtYmVyOjpk
b3VibGVWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZG91
YmxlPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZG91YmxlVmFsdWUpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBO
Uzo6TnVtYmVyOjpib29sVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChib29sVmFsdWUpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OkludGVnZXIgTlM6Ok51bWJlcjo6aW50ZWdlclZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW50
ZWdlclZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6TnVtYmVyOjp1bnNpZ25lZElu
dGVnZXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUlu
dGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNpZ25lZEludGVnZXJWYWx1ZSkpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6U3RyaW5nKiBOUzo6TnVtYmVyOjpzdHJpbmdWYWx1ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KHN0cmluZ1ZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpDb21wYXJpc29uUmVzdWx0IE5TOjpOdW1iZXI6
OmNvbXBhcmUoY29uc3QgTnVtYmVyKiBwT3RoZXJOdW1iZXIpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8Q29tcGFyaXNvblJlc3VsdD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGNvbXBhcmVfKSwgcE90aGVyTnVtYmVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6TnVtYmVyOjpp
c0VxdWFsVG9OdW1iZXIoY29uc3QgTnVtYmVyKiBwTnVtYmVyKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpc0VxdWFs
VG9OdW1iZXJfKSwgcE51bWJlcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpOdW1iZXI6OmRl
c2NyaXB0aW9uV2l0aExvY2FsZShjb25zdCBPYmplY3QqIHBMb2NhbGUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGRlc2NyaXB0aW9uV2l0aExvY2FsZV8pLCBwTG9jYWxlKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iakNSdW50aW1lLmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqQ1J1bnRpbWUuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ4ZTY1MDY2ZTU4Y2E3MDU3NDIwZTZmNTg5ZTc5NWEyZWRmYzZhZTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09i
akNSdW50aW1lLmhwcApAQCAtMCwwICsxLDQzIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TT2JqQ1J1bnRpbWUuaHBw
CisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5T
RGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKKworX05TX0VO
VU0oSW50ZWdlciwgQ29tcGFyaXNvblJlc3VsdCkgeworICAgIE9yZGVyZWRBc2NlbmRpbmcgPSAt
MSwKKyAgICBPcmRlcmVkU2FtZSA9IDAsCisgICAgT3JkZXJlZERlc2NlbmRpbmcgPSAxLAorfTsK
KworY29uc3QgSW50ZWdlciBOb3RGb3VuZCA9IEludGVnZXJNYXg7CisKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iamVjdC5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iamVjdC5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjRlMWM2MzJjOWQ1YmExZWI2NDQ3YWEyZTlhYjUzMDFmYWI2ZjI1MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqZWN0
LmhwcApAQCAtMCwwICsxLDI5NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU09iamVjdC5ocHAKKy8vCisvLyBDb3B5
cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIK
KyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisjaW5j
bHVkZSA8b2JqYy9tZXNzYWdlLmg+CisjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisKKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworewordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xh
c3MgX0Jhc2UgPSBjbGFzcyBPYmplY3Q+CitjbGFzcyBSZWZlcmVuY2luZyA6IHB1YmxpYyBfQmFz
ZQoreworcHVibGljOgorICAgIF9DbGFzcyogIHJldGFpbigpOworICAgIHZvaWQgICAgIHJlbGVh
c2UoKTsKKworICAgIF9DbGFzcyogIGF1dG9yZWxlYXNlKCk7CisKKyAgICBVSW50ZWdlciByZXRh
aW5Db3VudCgpIGNvbnN0OworfTsKKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jh
c2UgPSBjbGFzcyBPYmplY3Q+CitjbGFzcyBDb3B5aW5nIDogcHVibGljIFJlZmVyZW5jaW5nPF9D
bGFzcywgX0Jhc2U+Cit7CitwdWJsaWM6CisgICAgX0NsYXNzKiBjb3B5KCkgY29uc3Q7Cit9Owor
CitjbGFzcyBPYmplY3QgOiBwdWJsaWMgUmVmZXJlbmNpbmc8T2JqZWN0LCBvYmpjX29iamVjdD4K
K3sKK3B1YmxpYzoKKyAgICBVSW50ZWdlciAgICAgIGhhc2goKSBjb25zdDsKKyAgICBib29sICAg
ICAgICAgIGlzRXF1YWwoY29uc3QgT2JqZWN0KiBwT2JqZWN0KSBjb25zdDsKKworICAgIGNsYXNz
IFN0cmluZyogZGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqIGRlYnVnRGVz
Y3JpcHRpb24oKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBSZWZlcmVu
Y2luZzxPYmplY3QsIG9iamNfb2JqZWN0PjsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBfQ2xhc3M+
CisgICAgc3RhdGljIF9DbGFzcyogYWxsb2MoY29uc3QgY2hhciogcENsYXNzTmFtZSk7CisgICAg
dGVtcGxhdGUgPGNsYXNzIF9DbGFzcz4KKyAgICBzdGF0aWMgX0NsYXNzKiBhbGxvYyhjb25zdCB2
b2lkKiBwQ2xhc3MpOworICAgIHRlbXBsYXRlIDxjbGFzcyBfQ2xhc3M+CisgICAgX0NsYXNzKiBp
bml0KCk7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0RzdD4KKyAgICBzdGF0aWMgX0RzdCAgICAg
ICAgICAgICAgICAgICBicmlkZ2luZ0Nhc3QoY29uc3Qgdm9pZCogcE9iaik7CisgICAgc3RhdGlj
IGNsYXNzIE1ldGhvZFNpZ25hdHVyZSogbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3IoY29uc3Qg
dm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yKTsKKyAgICBzdGF0aWMgYm9vbCAgICAgICAgICAgICAg
ICAgICByZXNwb25kc1RvU2VsZWN0b3IoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yKTsK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1R5cGU+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGRvZXNSZXF1aXJlTXNnU2VuZFN0cmV0KCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9SZXQs
IHR5cGVuYW1lLi4uIF9BcmdzPgorICAgIHN0YXRpYyBfUmV0IHNlbmRNZXNzYWdlKGNvbnN0IHZv
aWQqIHBPYmosIFNFTCBzZWxlY3RvciwgX0FyZ3MuLi4gYXJncyk7CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIF9SZXQsIHR5cGVuYW1lLi4uIF9BcmdzPgorICAgIHN0YXRpYyBfUmV0IHNlbmRNZXNz
YWdlU2FmZShjb25zdCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IsIF9BcmdzLi4uIGFyZ3MpOwor
Citwcml2YXRlOgorICAgIE9iamVjdCgpID0gZGVsZXRlOworICAgIE9iamVjdChjb25zdCBPYmpl
Y3QmKSA9IGRlbGV0ZTsKKyAgICB+T2JqZWN0KCkgPSBkZWxldGU7CisKKyAgICBPYmplY3QmIG9w
ZXJhdG9yPShjb25zdCBPYmplY3QmKSA9IGRlbGV0ZTsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNz
LCBjbGFzcyBfQmFzZSAvKiA9IE9iamVjdCAqLz4KK19OU19JTkxJTkUgX0NsYXNzKiBOUzo6UmVm
ZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT46OnJldGFpbigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8X0NsYXNzKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHJldGFpbikpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxh
dGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgLyogPSBPYmplY3QgKi8+CitfTlNfSU5MSU5F
IHZvaWQgTlM6OlJlZmVyZW5jaW5nPF9DbGFzcywgX0Jhc2U+OjpyZWxlYXNlKCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChyZWxlYXNlKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0
ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSAvKiA9IE9iamVjdCAqLz4KK19OU19J
TkxJTkUgX0NsYXNzKiBOUzo6UmVmZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT46OmF1dG9yZWxlYXNl
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxfQ2xhc3MqPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwoYXV0b3JlbGVhc2UpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9C
YXNlIC8qID0gT2JqZWN0ICovPgorX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OlJlZmVyZW5j
aW5nPF9DbGFzcywgX0Jhc2U+OjpyZXRhaW5Db3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChyZXRhaW5D
b3VudCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgLyogPSBPYmplY3QgKi8+
CitfTlNfSU5MSU5FIF9DbGFzcyogTlM6OkNvcHlpbmc8X0NsYXNzLCBfQmFzZT46OmNvcHkoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPF9DbGFzcyo+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChjb3B5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0RzdD4KK19OU19JTkxJTkUgX0Rz
dCBOUzo6T2JqZWN0OjpicmlkZ2luZ0Nhc3QoY29uc3Qgdm9pZCogcE9iaikKK3sKKyNpZiBfX09C
SkNfXworICAgIHJldHVybiAoX19icmlkZ2UgX0RzdClwT2JqOworI2Vsc2UKKyAgICByZXR1cm4g
KF9Ec3QpcE9iajsKKyNlbmRpZiAvLyBfX09CSkNfXworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPHR5cGVuYW1lIF9UeXBlPgor
X05TX0lOTElORSBjb25zdGV4cHIgYm9vbCBOUzo6T2JqZWN0Ojpkb2VzUmVxdWlyZU1zZ1NlbmRT
dHJldCgpCit7CisjaWYgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykp
CisgICAgY29uc3RleHByIHNpemVfdCBrU3RydWN0TGltaXQgPSAoc2l6ZW9mKHN0ZDo6dWludHB0
cl90KSA8PCAxKTsKKworICAgIHJldHVybiBzaXplb2YoX1R5cGUpID4ga1N0cnVjdExpbWl0Owor
I2VsaWYgZGVmaW5lZChfX2FybTY0X18pCisgICAgcmV0dXJuIGZhbHNlOworI2VsaWYgZGVmaW5l
ZChfX2FybV9fKQorICAgIGNvbnN0ZXhwciBzaXplX3Qga1N0cnVjdExpbWl0ID0gc2l6ZW9mKHN0
ZDo6dWludHB0cl90KTsKKworICAgIHJldHVybiBzdGQ6OmlzX2NsYXNzKF9UeXBlKSAmJiAoc2l6
ZW9mKF9UeXBlKSA+IGtTdHJ1Y3RMaW1pdCk7CisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBh
cmNoaXRlY3R1cmUhIgorI2VuZGlmCit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8PgorX05TX0lOTElORSBjb25zdGV4cHIgYm9v
bCBOUzo6T2JqZWN0Ojpkb2VzUmVxdWlyZU1zZ1NlbmRTdHJldDx2b2lkPigpCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKwordGVtcGxhdGUgPHR5cGVuYW1lIF9SZXQsIHR5cGVuYW1lLi4uIF9BcmdzPgorX05T
X0lOTElORSBfUmV0IE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlKGNvbnN0IHZvaWQqIHBPYmosIFNF
TCBzZWxlY3RvciwgX0FyZ3MuLi4gYXJncykKK3sKKyNpZiAoZGVmaW5lZChfX2kzODZfXykgfHwg
ZGVmaW5lZChfX3g4Nl82NF9fKSkKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfZmxvYXRpbmdf
cG9pbnQ8X1JldD4oKSkKKyAgICB7CisgICAgICAgIHVzaW5nIFNlbmRNZXNzYWdlUHJvY0ZwcmV0
ID0gX1JldCAoKikoY29uc3Qgdm9pZCosIFNFTCwgX0FyZ3MuLi4pOworCisgICAgICAgIGNvbnN0
IFNlbmRNZXNzYWdlUHJvY0ZwcmV0IHBQcm9jID0gcmVpbnRlcnByZXRfY2FzdDxTZW5kTWVzc2Fn
ZVByb2NGcHJldD4oJm9iamNfbXNnU2VuZF9mcHJldCk7CisKKyAgICAgICAgcmV0dXJuICgqcFBy
b2MpKHBPYmosIHNlbGVjdG9yLCBhcmdzLi4uKTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmIC8v
ICggZGVmaW5lZCggX19pMzg2X18gKSAgfHwgZGVmaW5lZCggX194ODZfNjRfXyApICApCisjaWYg
IWRlZmluZWQoX19hcm02NF9fKQorICAgICAgICBpZiBjb25zdGV4cHIgKGRvZXNSZXF1aXJlTXNn
U2VuZFN0cmV0PF9SZXQ+KCkpCisgICAgeworICAgICAgICB1c2luZyBTZW5kTWVzc2FnZVByb2NT
dHJldCA9IHZvaWQgKCopKF9SZXQqLCBjb25zdCB2b2lkKiwgU0VMLCBfQXJncy4uLik7CisKKyAg
ICAgICAgY29uc3QgU2VuZE1lc3NhZ2VQcm9jU3RyZXQgcFByb2MgPSByZWludGVycHJldF9jYXN0
PFNlbmRNZXNzYWdlUHJvY1N0cmV0Pigmb2JqY19tc2dTZW5kX3N0cmV0KTsKKyAgICAgICAgX1Jl
dCAgICAgICAgICAgICAgICAgICAgICAgcmV0OworCisgICAgICAgICgqcFByb2MpKCZyZXQsIHBP
YmosIHNlbGVjdG9yLCBhcmdzLi4uKTsKKworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKyAg
ICBlbHNlCisjZW5kaWYgLy8gIWRlZmluZWQoIF9fYXJtNjRfXyApCisgICAgeworICAgICAgICB1
c2luZyBTZW5kTWVzc2FnZVByb2MgPSBfUmV0ICgqKShjb25zdCB2b2lkKiwgU0VMLCBfQXJncy4u
Lik7CisKKyAgICAgICAgY29uc3QgU2VuZE1lc3NhZ2VQcm9jIHBQcm9jID0gcmVpbnRlcnByZXRf
Y2FzdDxTZW5kTWVzc2FnZVByb2M+KCZvYmpjX21zZ1NlbmQpOworCisgICAgICAgIHJldHVybiAo
KnBQcm9jKShwT2JqLCBzZWxlY3RvciwgYXJncy4uLik7CisgICAgfQorfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TWV0
aG9kU2lnbmF0dXJlKiBOUzo6T2JqZWN0OjptZXRob2RTaWduYXR1cmVGb3JTZWxlY3Rvcihjb25z
dCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IpCit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlPE1l
dGhvZFNpZ25hdHVyZSo+KHBPYmosIF9OU19QUklWQVRFX1NFTChtZXRob2RTaWduYXR1cmVGb3JT
ZWxlY3Rvcl8pLCBzZWxlY3Rvcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6Ok9iamVjdDo6cmVzcG9uZHNU
b1NlbGVjdG9yKGNvbnN0IHZvaWQqIHBPYmosIFNFTCBzZWxlY3RvcikKK3sKKyAgICByZXR1cm4g
c2VuZE1lc3NhZ2U8Ym9vbD4ocE9iaiwgX05TX1BSSVZBVEVfU0VMKHJlc3BvbmRzVG9TZWxlY3Rv
cl8pLCBzZWxlY3Rvcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUuLi4gX0FyZ3M+
CitfTlNfSU5MSU5FIF9SZXQgTlM6Ok9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlKGNvbnN0IHZvaWQq
IHBPYmosIFNFTCBzZWxlY3RvciwgX0FyZ3MuLi4gYXJncykKK3sKKyAgICBpZiAoKHJlc3BvbmRz
VG9TZWxlY3RvcihwT2JqLCBzZWxlY3RvcikpIHx8IChudWxscHRyICE9IG1ldGhvZFNpZ25hdHVy
ZUZvclNlbGVjdG9yKHBPYmosIHNlbGVjdG9yKSkpCisgICAgeworICAgICAgICByZXR1cm4gc2Vu
ZE1lc3NhZ2U8X1JldD4ocE9iaiwgc2VsZWN0b3IsIGFyZ3MuLi4pOworICAgIH0KKworICAgIGlm
IGNvbnN0ZXhwciAoIXN0ZDo6aXNfdm9pZDxfUmV0Pjo6dmFsdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzPgorX05TX0lOTElORSBfQ2xhc3Mq
IE5TOjpPYmplY3Q6OmFsbG9jKGNvbnN0IGNoYXIqIHBDbGFzc05hbWUpCit7CisgICAgcmV0dXJu
IHNlbmRNZXNzYWdlPF9DbGFzcyo+KG9iamNfbG9va1VwQ2xhc3MocENsYXNzTmFtZSksIF9OU19Q
UklWQVRFX1NFTChhbGxvYykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcz4KK19OU19JTkxJTkUgX0Ns
YXNzKiBOUzo6T2JqZWN0OjphbGxvYyhjb25zdCB2b2lkKiBwQ2xhc3MpCit7CisgICAgcmV0dXJu
IHNlbmRNZXNzYWdlPF9DbGFzcyo+KHBDbGFzcywgX05TX1BSSVZBVEVfU0VMKGFsbG9jKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1w
bGF0ZSA8Y2xhc3MgX0NsYXNzPgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpPYmplY3Q6OmluaXQo
KQoreworICAgIHJldHVybiBzZW5kTWVzc2FnZTxfQ2xhc3MqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoaW5pdCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6Ok9iamVjdDo6aGFzaCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoaGFzaCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpPYmplY3Q6OmlzRXF1YWwoY29uc3QgT2JqZWN0
KiBwT2JqZWN0KSBjb25zdAoreworICAgIHJldHVybiBzZW5kTWVzc2FnZTxib29sPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoaXNFcXVhbF8pLCBwT2JqZWN0KTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyog
TlM6Ok9iamVjdDo6ZGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJldHVybiBzZW5kTWVzc2Fn
ZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGVzY3JpcHRpb24pKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlN0cmluZyogTlM6Ok9iamVjdDo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHNlbmRNZXNzYWdlU2FmZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGVi
dWdEZXNjcmlwdGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9G
b3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
Rm91bmRhdGlvbi9OU1ByaXZhdGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4YTRmYTU2NzIyMzIzMjIwNjU0
YTFlMGE1YjEzMTExZThjYTc4NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1ByaXZhdGUuaHBwCkBAIC0wLDAgKzEsNDg4IEBA
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBG
b3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIF9OU19QUklWQVRFX0NMUyhz
eW1ib2wpIChQcml2YXRlOjpDbGFzczo6c19rIyNzeW1ib2wpCisjZGVmaW5lIF9OU19QUklWQVRF
X1NFTChhY2Nlc3NvcikgKFByaXZhdGU6OlNlbGVjdG9yOjpzX2sjI2FjY2Vzc29yKQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lmIGRlZmluZWQo
TlNfUFJJVkFURV9JTVBMRU1FTlRBVElPTikKKworI2RlZmluZSBfTlNfUFJJVkFURV9WSVNJQklM
SVRZIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKKyNkZWZpbmUgX05TX1BS
SVZBVEVfSU1QT1JUIF9fYXR0cmlidXRlX18oKHdlYWtfaW1wb3J0KSkKKworI2lmIF9fT0JKQ19f
CisjZGVmaW5lIF9OU19QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgKChfX2JyaWRn
ZSB2b2lkKilvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wpKQorI2Vsc2UKKyNkZWZpbmUgX05TX1BS
SVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKSBvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wp
CisjZW5kaWYgLy8gX19PQkpDX18KKworI2RlZmluZSBfTlNfUFJJVkFURV9ERUZfQ0xTKHN5bWJv
bCkgdm9pZCogc19rIyNzeW1ib2wgX05TX1BSSVZBVEVfVklTSUJJTElUWSA9IF9OU19QUklWQVRF
X09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCk7CisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9QUk8o
c3ltYm9sKQorI2RlZmluZSBfTlNfUFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIFNF
TCBzX2sjI2FjY2Vzc29yIF9OU19QUklWQVRFX1ZJU0lCSUxJVFkgPSBzZWxfcmVnaXN0ZXJOYW1l
KHN5bWJvbCk7CisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9DT05TVCh0eXBlLCBzeW1ib2wpICAg
ICAgICAgICAgICBcCisgICAgX05TX0VYVEVSTiB0eXBlIGNvbnN0IE5TIyNzeW1ib2wgX05TX1BS
SVZBVEVfSU1QT1JUOyBcCisgICAgdHlwZSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgTlM6
OnN5bWJvbCA9IChudWxscHRyICE9ICZOUyMjc3ltYm9sKSA/IE5TIyNzeW1ib2wgOiBudWxscHRy
OworCisjZWxzZQorCisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9DTFMoc3ltYm9sKSBleHRlcm4g
dm9pZCogc19rIyNzeW1ib2w7CisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9QUk8oc3ltYm9sKQor
I2RlZmluZSBfTlNfUFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIGV4dGVybiBTRUwg
c19rIyNhY2Nlc3NvcjsKKyNkZWZpbmUgX05TX1BSSVZBVEVfREVGX0NPTlNUKHR5cGUsIHN5bWJv
bCkKKworI2VuZGlmIC8vIE5TX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworbmFt
ZXNwYWNlIFByaXZhdGUKK3sKKyAgICBuYW1lc3BhY2UgQ2xhc3MKKyAgICB7CisKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX0NMUyhOU0FycmF5KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NM
UyhOU0F1dG9yZWxlYXNlUG9vbCk7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNCdW5k
bGUpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TQ29uZGl0aW9uKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX0NMUyhOU0RhdGUpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xT
KE5TRGljdGlvbmFyeSk7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNFcnJvcik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNOdW1iZXIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfQ0xTKE5TT2JqZWN0KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU1Byb2Nl
c3NJbmZvKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU1N0cmluZyk7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9DTFMoTlNVUkwpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xT
KE5TVmFsdWUpOworCisgICAgfSAvLyBDbGFzcworfSAvLyBQcml2YXRlCit9IC8vIE1UTAorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNl
IE5TCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBQcm90b2NvbAorICAg
IHsKKworICAgIH0gLy8gUHJvdG9jb2wKK30gLy8gUHJpdmF0ZQorfSAvLyBOUworCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7
CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBTZWxlY3RvcgorICAgIHsKKwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFkZE9iamVjdF8sCisgICAgICAgICAgICAiYWRk
T2JqZWN0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFjdGl2ZVByb2Nlc3NvckNv
dW50LAorICAgICAgICAgICAgImFjdGl2ZVByb2Nlc3NvckNvdW50Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoYWxsQnVuZGxlcywKKyAgICAgICAgICAgICJhbGxCdW5kbGVzIik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYWxsRnJhbWV3b3JrcywKKyAgICAgICAgICAgICJh
bGxGcmFtZXdvcmtzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYWxsT2JqZWN0cywK
KyAgICAgICAgICAgICJhbGxPYmplY3RzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
YWxsb2MsCisgICAgICAgICAgICAiYWxsb2MiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChhcHBTdG9yZVJlY2VpcHRVUkwsCisgICAgICAgICAgICAiYXBwU3RvcmVSZWNlaXB0VVJMIik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYXJndW1lbnRzLAorICAgICAgICAgICAgImFy
Z3VtZW50cyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFycmF5LAorICAgICAgICAg
ICAgImFycmF5Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYXJyYXlXaXRoT2JqZWN0
XywKKyAgICAgICAgICAgICJhcnJheVdpdGhPYmplY3Q6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoYXJyYXlXaXRoT2JqZWN0c19jb3VudF8sCisgICAgICAgICAgICAiYXJyYXlXaXRo
T2JqZWN0czpjb3VudDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhdXRvbWF0aWNU
ZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkLAorICAgICAgICAgICAgImF1dG9tYXRpY1Rlcm1pbmF0
aW9uU3VwcG9ydEVuYWJsZWQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhdXRvcmVs
ZWFzZSwKKyAgICAgICAgICAgICJhdXRvcmVsZWFzZSIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uc19yZWFzb25fLAorICAgICAgICAgICAgImJl
Z2luQWN0aXZpdHlXaXRoT3B0aW9uczpyZWFzb246Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoYm9vbFZhbHVlLAorICAgICAgICAgICAgImJvb2xWYWx1ZSIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGJyb2FkY2FzdCwKKyAgICAgICAgICAgICJicm9hZGNhc3QiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidWlsdEluUGx1Z0luc1BhdGgsCisgICAgICAgICAg
ICAiYnVpbHRJblBsdWdJbnNQYXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYnVp
bHRJblBsdWdJbnNVUkwsCisgICAgICAgICAgICAiYnVpbHRJblBsdWdJbnNVUkwiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChidW5kbGVJZGVudGlmaWVyLAorICAgICAgICAgICAgImJ1
bmRsZUlkZW50aWZpZXIiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidW5kbGVQYXRo
LAorICAgICAgICAgICAgImJ1bmRsZVBhdGgiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChidW5kbGVVUkwsCisgICAgICAgICAgICAiYnVuZGxlVVJMIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoYnVuZGxlV2l0aFBhdGhfLAorICAgICAgICAgICAgImJ1bmRsZVdpdGhQYXRo
OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRsZVdpdGhVUkxfLAorICAgICAg
ICAgICAgImJ1bmRsZVdpdGhVUkw6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoY2hh
cmFjdGVyQXRJbmRleF8sCisgICAgICAgICAgICAiY2hhcmFjdGVyQXRJbmRleDoiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChjaGFyVmFsdWUsCisgICAgICAgICAgICAiY2hhclZhbHVl
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoY291bnRCeUVudW1lcmF0aW5nV2l0aFN0
YXRlX29iamVjdHNfY291bnRfLAorICAgICAgICAgICAgImNvdW50QnlFbnVtZXJhdGluZ1dpdGhT
dGF0ZTpvYmplY3RzOmNvdW50OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNTdHJp
bmdVc2luZ0VuY29kaW5nXywKKyAgICAgICAgICAgICJjU3RyaW5nVXNpbmdFbmNvZGluZzoiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjb2RlLAorICAgICAgICAgICAgImNvZGUiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjb21wYXJlXywKKyAgICAgICAgICAgICJjb21w
YXJlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNvcHksCisgICAgICAgICAgICAi
Y29weSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNvdW50LAorICAgICAgICAgICAg
ImNvdW50Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZGF0ZVdpdGhUaW1lSW50ZXJ2
YWxTaW5jZU5vd18sCisgICAgICAgICAgICAiZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzoi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkZXNjcmlwdGlvbldpdGhMb2NhbGVfLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uV2l0aExvY2FsZToiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb25fLAorICAgICAgICAgICAgImRp
c2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChkaXNhYmxlU3VkZGVuVGVybWluYXRpb24sCisgICAgICAgICAgICAiZGlzYWJsZVN1ZGRlblRl
cm1pbmF0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZGVidWdEZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICJkZWJ1Z0Rlc2NyaXB0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoZGVzY3JpcHRpb24sCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChkaWN0aW9uYXJ5LAorICAgICAgICAgICAgImRpY3Rpb25h
cnkiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkaWN0aW9uYXJ5V2l0aE9iamVjdF9m
b3JLZXlfLAorICAgICAgICAgICAgImRpY3Rpb25hcnlXaXRoT2JqZWN0OmZvcktleToiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkaWN0aW9uYXJ5V2l0aE9iamVjdHNfZm9yS2V5c19j
b3VudF8sCisgICAgICAgICAgICAiZGljdGlvbmFyeVdpdGhPYmplY3RzOmZvcktleXM6Y291bnQ6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZG9tYWluLAorICAgICAgICAgICAgImRv
bWFpbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRvdWJsZVZhbHVlLAorICAgICAg
ICAgICAgImRvdWJsZVZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZHJhaW4s
CisgICAgICAgICAgICAiZHJhaW4iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChlbmFi
bGVBdXRvbWF0aWNUZXJtaW5hdGlvbl8sCisgICAgICAgICAgICAiZW5hYmxlQXV0b21hdGljVGVy
bWluYXRpb246Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZW5hYmxlU3VkZGVuVGVy
bWluYXRpb24sCisgICAgICAgICAgICAiZW5hYmxlU3VkZGVuVGVybWluYXRpb24iKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChlbmRBY3Rpdml0eV8sCisgICAgICAgICAgICAiZW5kQWN0
aXZpdHk6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZW52aXJvbm1lbnQsCisgICAg
ICAgICAgICAiZW52aXJvbm1lbnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChlcnJv
cldpdGhEb21haW5fY29kZV91c2VySW5mb18sCisgICAgICAgICAgICAiZXJyb3JXaXRoRG9tYWlu
OmNvZGU6dXNlckluZm86Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZXhlY3V0YWJs
ZVBhdGgsCisgICAgICAgICAgICAiZXhlY3V0YWJsZVBhdGgiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChleGVjdXRhYmxlVVJMLAorICAgICAgICAgICAgImV4ZWN1dGFibGVVUkwiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24sCisg
ICAgICAgICAgICAiZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoZmlsZVVSTFdpdGhQYXRoXywKKyAgICAgICAgICAgICJmaWxlVVJMV2l0aFBh
dGg6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZmxvYXRWYWx1ZSwKKyAgICAgICAg
ICAgICJmbG9hdFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZnVsbFVzZXJO
YW1lLAorICAgICAgICAgICAgImZ1bGxVc2VyTmFtZSIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGdldFZhbHVlX3NpemVfLAorICAgICAgICAgICAgImdldFZhbHVlOnNpemU6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZ2xvYmFsbHlVbmlxdWVTdHJpbmcsCisgICAgICAg
ICAgICAiZ2xvYmFsbHlVbmlxdWVTdHJpbmciKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChoYXNoLAorICAgICAgICAgICAgImhhc2giKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChob3N0TmFtZSwKKyAgICAgICAgICAgICJob3N0TmFtZSIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKGluZm9EaWN0aW9uYXJ5LAorICAgICAgICAgICAgImluZm9EaWN0aW9uYXJ5Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdCwKKyAgICAgICAgICAgICJpbml0Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdEZpbGVVUkxXaXRoUGF0aF8sCisgICAg
ICAgICAgICAiaW5pdEZpbGVVUkxXaXRoUGF0aDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChpbml0V2l0aEJvb2xfLAorICAgICAgICAgICAgImluaXRXaXRoQm9vbDoiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEJ5dGVzX29iakNUeXBlXywKKyAgICAgICAg
ICAgICJpbml0V2l0aEJ5dGVzOm9iakNUeXBlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGluaXRXaXRoQnl0ZXNOb0NvcHlfbGVuZ3RoX2VuY29kaW5nX2ZyZWVXaGVuRG9uZV8sCisg
ICAgICAgICAgICAiaW5pdFdpdGhCeXRlc05vQ29weTpsZW5ndGg6ZW5jb2Rpbmc6ZnJlZVdoZW5E
b25lOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoQ2hhcl8sCisgICAg
ICAgICAgICAiaW5pdFdpdGhDaGFyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlu
aXRXaXRoQ29kZXJfLAorICAgICAgICAgICAgImluaXRXaXRoQ29kZXI6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhDU3RyaW5nX2VuY29kaW5nXywKKyAgICAgICAgICAg
ICJpbml0V2l0aENTdHJpbmc6ZW5jb2Rpbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoaW5pdFdpdGhEb21haW5fY29kZV91c2VySW5mb18sCisgICAgICAgICAgICAiaW5pdFdpdGhE
b21haW46Y29kZTp1c2VySW5mbzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0
V2l0aERvdWJsZV8sCisgICAgICAgICAgICAiaW5pdFdpdGhEb3VibGU6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhGbG9hdF8sCisgICAgICAgICAgICAiaW5pdFdpdGhG
bG9hdDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEludF8sCisgICAg
ICAgICAgICAiaW5pdFdpdGhJbnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5p
dFdpdGhMb25nXywKKyAgICAgICAgICAgICJpbml0V2l0aExvbmc6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoaW5pdFdpdGhMb25nTG9uZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhM
b25nTG9uZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aE9iamVjdHNf
Y291bnRfLAorICAgICAgICAgICAgImluaXRXaXRoT2JqZWN0czpjb3VudDoiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aE9iamVjdHNfZm9yS2V5c19jb3VudF8sCisgICAg
ICAgICAgICAiaW5pdFdpdGhPYmplY3RzOmZvcktleXM6Y291bnQ6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoaW5pdFdpdGhQYXRoXywKKyAgICAgICAgICAgICJpbml0V2l0aFBhdGg6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhTaG9ydF8sCisgICAgICAg
ICAgICAiaW5pdFdpdGhTaG9ydDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0
V2l0aFN0cmluZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhTdHJpbmc6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZENoYXJfLAorICAgICAgICAgICAgImlu
aXRXaXRoVW5zaWduZWRDaGFyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRX
aXRoVW5zaWduZWRJbnRfLAorICAgICAgICAgICAgImluaXRXaXRoVW5zaWduZWRJbnQ6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZExvbmdfLAorICAgICAg
ICAgICAgImluaXRXaXRoVW5zaWduZWRMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGluaXRXaXRoVW5zaWduZWRMb25nTG9uZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhVbnNp
Z25lZExvbmdMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoVW5z
aWduZWRTaG9ydF8sCisgICAgICAgICAgICAiaW5pdFdpdGhVbnNpZ25lZFNob3J0OiIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoVVJMXywKKyAgICAgICAgICAgICJpbml0
V2l0aFVSTDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbnRlZ2VyVmFsdWUsCisg
ICAgICAgICAgICAiaW50ZWdlclZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
aW50VmFsdWUsCisgICAgICAgICAgICAiaW50VmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChpc0VxdWFsXywKKyAgICAgICAgICAgICJpc0VxdWFsOiIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGlzRXF1YWxUb051bWJlcl8sCisgICAgICAgICAgICAiaXNFcXVhbFRv
TnVtYmVyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlzRXF1YWxUb1N0cmluZ18s
CisgICAgICAgICAgICAiaXNFcXVhbFRvU3RyaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGlzRXF1YWxUb1ZhbHVlXywKKyAgICAgICAgICAgICJpc0VxdWFsVG9WYWx1ZToiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc2lPU0FwcE9uTWFjLAorICAgICAgICAgICAg
ImlzaU9TQXBwT25NYWMiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc0xvYWRlZCwK
KyAgICAgICAgICAgICJpc0xvYWRlZCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlz
TG93UG93ZXJNb2RlRW5hYmxlZCwKKyAgICAgICAgICAgICJpc0xvd1Bvd2VyTW9kZUVuYWJsZWQi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc01hY0NhdGFseXN0QXBwLAorICAgICAg
ICAgICAgImlzTWFjQ2F0YWx5c3RBcHAiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChp
c09wZXJhdGluZ1N5c3RlbUF0TGVhc3RWZXJzaW9uXywKKyAgICAgICAgICAgICJpc09wZXJhdGlu
Z1N5c3RlbUF0TGVhc3RWZXJzaW9uOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGtl
eUVudW1lcmF0b3IsCisgICAgICAgICAgICAia2V5RW51bWVyYXRvciIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGxlbmd0aCwKKyAgICAgICAgICAgICJsZW5ndGgiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZ18sCisgICAgICAg
ICAgICAibGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobG9hZCwKKyAgICAgICAgICAgICJsb2FkIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobG9hZEFuZFJldHVybkVycm9yXywKKyAgICAgICAgICAgICJsb2FkQW5kUmV0dXJu
RXJyb3I6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobG9jYWxpemVkRGVzY3JpcHRp
b24sCisgICAgICAgICAgICAibG9jYWxpemVkRGVzY3JpcHRpb24iKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChsb2NhbGl6ZWRGYWlsdXJlUmVhc29uLAorICAgICAgICAgICAgImxvY2Fs
aXplZEZhaWx1cmVSZWFzb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2NhbGl6
ZWRJbmZvRGljdGlvbmFyeSwKKyAgICAgICAgICAgICJsb2NhbGl6ZWRJbmZvRGljdGlvbmFyeSIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZFJlY292ZXJ5T3B0aW9ucywK
KyAgICAgICAgICAgICJsb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnMiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24sCisgICAgICAgICAgICAi
bG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwobG9jYWxpemVkU3RyaW5nRm9yS2V5X3ZhbHVlX3RhYmxlXywKKyAgICAgICAgICAgICJsb2Nh
bGl6ZWRTdHJpbmdGb3JLZXk6dmFsdWU6dGFibGU6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwobG9jaywKKyAgICAgICAgICAgICJsb2NrIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwobG9uZ1ZhbHVlLAorICAgICAgICAgICAgImxvbmdWYWx1ZSIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGxvbmdMb25nVmFsdWUsCisgICAgICAgICAgICAibG9uZ0xvbmdWYWx1
ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG1haW5CdW5kbGUsCisgICAgICAgICAg
ICAibWFpbkJ1bmRsZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG1heGltdW1MZW5n
dGhPZkJ5dGVzVXNpbmdFbmNvZGluZ18sCisgICAgICAgICAgICAibWF4aW11bUxlbmd0aE9mQnl0
ZXNVc2luZ0VuY29kaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG1ldGhvZFNp
Z25hdHVyZUZvclNlbGVjdG9yXywKKyAgICAgICAgICAgICJtZXRob2RTaWduYXR1cmVGb3JTZWxl
Y3RvcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChtdXRhYmxlQnl0ZXMsCisgICAg
ICAgICAgICAibXV0YWJsZUJ5dGVzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobmFt
ZSwKKyAgICAgICAgICAgICJuYW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobmV4
dE9iamVjdCwKKyAgICAgICAgICAgICJuZXh0T2JqZWN0Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobnVtYmVyV2l0aEJvb2xfLAorICAgICAgICAgICAgIm51bWJlcldpdGhCb29sOiIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhDaGFyXywKKyAgICAgICAg
ICAgICJudW1iZXJXaXRoQ2hhcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1i
ZXJXaXRoRG91YmxlXywKKyAgICAgICAgICAgICJudW1iZXJXaXRoRG91YmxlOiIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhGbG9hdF8sCisgICAgICAgICAgICAibnVt
YmVyV2l0aEZsb2F0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhJ
bnRfLAorICAgICAgICAgICAgIm51bWJlcldpdGhJbnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobnVtYmVyV2l0aExvbmdfLAorICAgICAgICAgICAgIm51bWJlcldpdGhMb25nOiIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhMb25nTG9uZ18sCisgICAg
ICAgICAgICAibnVtYmVyV2l0aExvbmdMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKG51bWJlcldpdGhTaG9ydF8sCisgICAgICAgICAgICAibnVtYmVyV2l0aFNob3J0OiIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhVbnNpZ25lZENoYXJfLAorICAg
ICAgICAgICAgIm51bWJlcldpdGhVbnNpZ25lZENoYXI6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobnVtYmVyV2l0aFVuc2lnbmVkSW50XywKKyAgICAgICAgICAgICJudW1iZXJXaXRo
VW5zaWduZWRJbnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aFVu
c2lnbmVkTG9uZ18sCisgICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkTG9uZzoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoVW5zaWduZWRMb25nTG9uZ18sCisg
ICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aFVuc2lnbmVkU2hvcnRfLAorICAgICAgICAgICAgIm51
bWJlcldpdGhVbnNpZ25lZFNob3J0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG9i
akNUeXBlLAorICAgICAgICAgICAgIm9iakNUeXBlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwob2JqZWN0LAorICAgICAgICAgICAgIm9iamVjdCIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKG9iamVjdEF0SW5kZXhfLAorICAgICAgICAgICAgIm9iamVjdEF0SW5kZXg6Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob2JqZWN0Rm9ySW5mb0RpY3Rpb25hcnlLZXlf
LAorICAgICAgICAgICAgIm9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5OiIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKG9iamVjdEZvcktleV8sCisgICAgICAgICAgICAib2JqZWN0Rm9y
S2V5OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG9wZXJhdGluZ1N5c3RlbSwKKyAg
ICAgICAgICAgICJvcGVyYXRpbmdTeXN0ZW0iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uLAorICAgICAgICAgICAgIm9wZXJhdGluZ1N5c3RlbVZl
cnNpb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChvcGVyYXRpbmdTeXN0ZW1WZXJz
aW9uU3RyaW5nLAorICAgICAgICAgICAgIm9wZXJhdGluZ1N5c3RlbVZlcnNpb25TdHJpbmciKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8s
CisgICAgICAgICAgICAicGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwocGVyZm9ybUFjdGl2aXR5V2l0aE9wdGlvbnNfcmVhc29uX3VzaW5n
QmxvY2tfLAorICAgICAgICAgICAgInBlcmZvcm1BY3Rpdml0eVdpdGhPcHRpb25zOnJlYXNvbjp1
c2luZ0Jsb2NrOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBlcmZvcm1FeHBpcmlu
Z0FjdGl2aXR5V2l0aFJlYXNvbl91c2luZ0Jsb2NrXywKKyAgICAgICAgICAgICJwZXJmb3JtRXhw
aXJpbmdBY3Rpdml0eVdpdGhSZWFzb246dXNpbmdCbG9jazoiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChwaHlzaWNhbE1lbW9yeSwKKyAgICAgICAgICAgICJwaHlzaWNhbE1lbW9yeSIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBvaW50ZXJWYWx1ZSwKKyAgICAgICAgICAg
ICJwb2ludGVyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwcmVmbGlnaHRB
bmRSZXR1cm5FcnJvcl8sCisgICAgICAgICAgICAicHJlZmxpZ2h0QW5kUmV0dXJuRXJyb3I6Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJpdmF0ZUZyYW1ld29ya3NQYXRoLAorICAg
ICAgICAgICAgInByaXZhdGVGcmFtZXdvcmtzUGF0aCIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKHByaXZhdGVGcmFtZXdvcmtzVVJMLAorICAgICAgICAgICAgInByaXZhdGVGcmFtZXdv
cmtzVVJMIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJvY2Vzc0lkZW50aWZpZXIs
CisgICAgICAgICAgICAicHJvY2Vzc0lkZW50aWZpZXIiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChwcm9jZXNzSW5mbywKKyAgICAgICAgICAgICJwcm9jZXNzSW5mbyIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKHByb2Nlc3NOYW1lLAorICAgICAgICAgICAgInByb2Nlc3NO
YW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJvY2Vzc29yQ291bnQsCisgICAg
ICAgICAgICAicHJvY2Vzc29yQ291bnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChy
YW5nZU9mU3RyaW5nX29wdGlvbnNfLAorICAgICAgICAgICAgInJhbmdlT2ZTdHJpbmc6b3B0aW9u
czoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZWxlYXNlLAorICAgICAgICAgICAg
InJlbGVhc2UiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVBhdGgsCisg
ICAgICAgICAgICAicmVzb3VyY2VQYXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
cmVzb3VyY2VVUkwsCisgICAgICAgICAgICAicmVzb3VyY2VVUkwiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChyZXNwb25kc1RvU2VsZWN0b3JfLAorICAgICAgICAgICAgInJlc3BvbmRz
VG9TZWxlY3RvcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZXRhaW4sCisgICAg
ICAgICAgICAicmV0YWluIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocmV0YWluQ291
bnQsCisgICAgICAgICAgICAicmV0YWluQ291bnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChzZXRBdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkXywKKyAgICAgICAgICAg
ICJzZXRBdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkOiIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKHNldFByb2Nlc3NOYW1lXywKKyAgICAgICAgICAgICJzZXRQcm9jZXNz
TmFtZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzaGFyZWRGcmFtZXdvcmtzUGF0
aCwKKyAgICAgICAgICAgICJzaGFyZWRGcmFtZXdvcmtzUGF0aCIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKHNoYXJlZEZyYW1ld29ya3NVUkwsCisgICAgICAgICAgICAic2hhcmVkRnJh
bWV3b3Jrc1VSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHNoYXJlZFN1cHBvcnRQ
YXRoLAorICAgICAgICAgICAgInNoYXJlZFN1cHBvcnRQYXRoIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoc2hhcmVkU3VwcG9ydFVSTCwKKyAgICAgICAgICAgICJzaGFyZWRTdXBwb3J0
VVJMIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2hvcnRWYWx1ZSwKKyAgICAgICAg
ICAgICJzaG9ydFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2hvd1Bvb2xz
LAorICAgICAgICAgICAgInNob3dQb29scyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHNpZ25hbCwKKyAgICAgICAgICAgICJzaWduYWwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChzdHJpbmcsCisgICAgICAgICAgICAic3RyaW5nIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoc3RyaW5nVmFsdWUsCisgICAgICAgICAgICAic3RyaW5nVmFsdWUiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChzdHJpbmdXaXRoU3RyaW5nXywKKyAgICAgICAgICAgICJz
dHJpbmdXaXRoU3RyaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHN0cmluZ1dp
dGhDU3RyaW5nX2VuY29kaW5nXywKKyAgICAgICAgICAgICJzdHJpbmdXaXRoQ1N0cmluZzplbmNv
ZGluZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzdHJpbmdCeUFwcGVuZGluZ1N0
cmluZ18sCisgICAgICAgICAgICAic3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoc3lzdGVtVXB0aW1lLAorICAgICAgICAgICAgInN5c3RlbVVw
dGltZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHRoZXJtYWxTdGF0ZSwKKyAgICAg
ICAgICAgICJ0aGVybWFsU3RhdGUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bmxv
YWQsCisgICAgICAgICAgICAidW5sb2FkIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
dW5sb2NrLAorICAgICAgICAgICAgInVubG9jayIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKHVuc2lnbmVkQ2hhclZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkQ2hhclZhbHVlIik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodW5zaWduZWRJbnRlZ2VyVmFsdWUsCisgICAg
ICAgICAgICAidW5zaWduZWRJbnRlZ2VyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTCh1bnNpZ25lZEludFZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkSW50VmFsdWUiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bnNpZ25lZExvbmdWYWx1ZSwKKyAgICAgICAg
ICAgICJ1bnNpZ25lZExvbmdWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVu
c2lnbmVkTG9uZ0xvbmdWYWx1ZSwKKyAgICAgICAgICAgICJ1bnNpZ25lZExvbmdMb25nVmFsdWUi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bnNpZ25lZFNob3J0VmFsdWUsCisgICAg
ICAgICAgICAidW5zaWduZWRTaG9ydFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoVVJMRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8sCisgICAgICAgICAgICAiVVJMRm9yQXV4aWxp
YXJ5RXhlY3V0YWJsZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1c2VySW5mbywK
KyAgICAgICAgICAgICJ1c2VySW5mbyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVz
ZXJOYW1lLAorICAgICAgICAgICAgInVzZXJOYW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoVVRGOFN0cmluZywKKyAgICAgICAgICAgICJVVEY4U3RyaW5nIik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwodmFsdWVXaXRoQnl0ZXNfb2JqQ1R5cGVfLAorICAgICAgICAgICAg
InZhbHVlV2l0aEJ5dGVzOm9iakNUeXBlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHZhbHVlV2l0aFBvaW50ZXJfLAorICAgICAgICAgICAgInZhbHVlV2l0aFBvaW50ZXI6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwod2FpdCwKKyAgICAgICAgICAgICJ3YWl0Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwod2FpdFVudGlsRGF0ZV8sCisgICAgICAgICAgICAi
d2FpdFVudGlsRGF0ZToiKTsKKyAgICB9IC8vIENsYXNzCit9IC8vIFByaXZhdGUKK30gLy8gTVRM
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQcm9jZXNz
SW5mby5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1By
b2Nlc3NJbmZvLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGUzMTQ3ZmU4YTdjNjhkMmZhY2MzYTZlZDQ3N2Y2
NzUxZWU1ZGU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNQcm9jZXNzSW5mby5ocHAKQEAgLTAsMCArMSwzNTQgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRp
b24vTlNQcm9jZXNzSW5mby5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU05vdGlmaWNhdGlv
bi5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAi
CisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5T
Cit7CitfTlNfQ09OU1QoTm90aWZpY2F0aW9uTmFtZSwgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVE
aWRDaGFuZ2VOb3RpZmljYXRpb24pOworX05TX0NPTlNUKE5vdGlmaWNhdGlvbk5hbWUsIFByb2Nl
c3NJbmZvUG93ZXJTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbik7CisKK19OU19FTlVNKE5TOjpJ
bnRlZ2VyLCBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZSkgeworICAgIFByb2Nlc3NJbmZvVGhlcm1h
bFN0YXRlTm9taW5hbCA9IDAsCisgICAgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVGYWlyID0gMSwK
KyAgICBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZVNlcmlvdXMgPSAyLAorICAgIFByb2Nlc3NJbmZv
VGhlcm1hbFN0YXRlQ3JpdGljYWwgPSAzCit9OworCitfTlNfT1BUSU9OUyhzdGQ6OnVpbnQ2NF90
LCBBY3Rpdml0eU9wdGlvbnMpIHsKKyAgICBBY3Rpdml0eUlkbGVEaXNwbGF5U2xlZXBEaXNhYmxl
ZCA9ICgxVUxMIDw8IDQwKSwKKyAgICBBY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2FibGVkID0g
KDFVTEwgPDwgMjApLAorICAgIEFjdGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCA9ICgx
VUxMIDw8IDE0KSwKKyAgICBBY3Rpdml0eUF1dG9tYXRpY1Rlcm1pbmF0aW9uRGlzYWJsZWQgPSAo
MVVMTCA8PCAxNSksCisgICAgQWN0aXZpdHlVc2VySW5pdGlhdGVkID0gKDB4MDBGRkZGRkZVTEwg
fCBBY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2FibGVkKSwKKyAgICBBY3Rpdml0eVVzZXJJbml0
aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1TbGVlcCA9IChBY3Rpdml0eVVzZXJJbml0aWF0ZWQgJiB+
QWN0aXZpdHlJZGxlU3lzdGVtU2xlZXBEaXNhYmxlZCksCisgICAgQWN0aXZpdHlCYWNrZ3JvdW5k
ID0gMHgwMDAwMDBGRlVMTCwKKyAgICBBY3Rpdml0eUxhdGVuY3lDcml0aWNhbCA9IDB4RkYwMDAw
MDAwMFVMTCwKK307CisKK2NsYXNzIFByb2Nlc3NJbmZvIDogcHVibGljIFJlZmVyZW5jaW5nPFBy
b2Nlc3NJbmZvPgoreworcHVibGljOgorICAgIHN0YXRpYyBQcm9jZXNzSW5mbyogICAgIHByb2Nl
c3NJbmZvKCk7CisKKyAgICBjbGFzcyBBcnJheSogICAgICAgICAgICBhcmd1bWVudHMoKSBjb25z
dDsKKyAgICBjbGFzcyBEaWN0aW9uYXJ5KiAgICAgICBlbnZpcm9ubWVudCgpIGNvbnN0OworICAg
IGNsYXNzIFN0cmluZyogICAgICAgICAgIGhvc3ROYW1lKCkgY29uc3Q7CisgICAgY2xhc3MgU3Ry
aW5nKiAgICAgICAgICAgcHJvY2Vzc05hbWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICBzZXRQcm9jZXNzTmFtZShjb25zdCBTdHJpbmcqIHBTdHJpbmcpOworICAgIGludCAg
ICAgICAgICAgICAgICAgICAgIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgY2xhc3Mg
U3RyaW5nKiAgICAgICAgICAgZ2xvYmFsbHlVbmlxdWVTdHJpbmcoKSBjb25zdDsKKworICAgIGNs
YXNzIFN0cmluZyogICAgICAgICAgIHVzZXJOYW1lKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5n
KiAgICAgICAgICAgZnVsbFVzZXJOYW1lKCkgY29uc3Q7CisKKyAgICBVSW50ZWdlciAgICAgICAg
ICAgICAgICBvcGVyYXRpbmdTeXN0ZW0oKSBjb25zdDsKKyAgICBPcGVyYXRpbmdTeXN0ZW1WZXJz
aW9uICBvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAg
ICAgICAgICAgb3BlcmF0aW5nU3lzdGVtVmVyc2lvblN0cmluZygpIGNvbnN0OworICAgIGJvb2wg
ICAgICAgICAgICAgICAgICAgIGlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNpb24oT3BlcmF0
aW5nU3lzdGVtVmVyc2lvbiB2ZXJzaW9uKSBjb25zdDsKKworICAgIFVJbnRlZ2VyICAgICAgICAg
ICAgICAgIHByb2Nlc3NvckNvdW50KCkgY29uc3Q7CisgICAgVUludGVnZXIgICAgICAgICAgICAg
ICAgYWN0aXZlUHJvY2Vzc29yQ291bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcg
ICAgICBwaHlzaWNhbE1lbW9yeSgpIGNvbnN0OworICAgIFRpbWVJbnRlcnZhbCAgICAgICAgICAg
IHN5c3RlbVVwdGltZSgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZGlz
YWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZW5h
YmxlU3VkZGVuVGVybWluYXRpb24oKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGRp
c2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbihjb25zdCBjbGFzcyBTdHJpbmcqIHBSZWFzb24pOwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uKGNv
bnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbik7CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
YXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgIHNldEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWQoYm9v
bCBlbmFibGVkKTsKKworICAgIGNsYXNzIE9iamVjdCogICAgICAgICAgIGJlZ2luQWN0aXZpdHko
QWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIGNvbnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbik7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZW5kQWN0aXZpdHkoY2xhc3MgT2JqZWN0KiBwQWN0
aXZpdHkpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1BY3Rpdml0eShBY3Rp
dml0eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uLCB2b2lkIChe
YmxvY2spKHZvaWQpKTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBwZXJmb3JtQWN0aXZp
dHkoQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIGNvbnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbiwg
Y29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiBmdW5jKTsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICBwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShjb25zdCBjbGFzcyBTdHJpbmcqIHBSZWFz
b24sIHZvaWQgKF5ibG9jaykoYm9vbCBleHBpcmVkKSk7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgcGVyZm9ybUV4cGlyaW5nQWN0aXZpdHkoY29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29u
LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBleHBpcmVkKT4mIGZ1bmMpOworCisgICAg
UHJvY2Vzc0luZm9UaGVybWFsU3RhdGUgdGhlcm1hbFN0YXRlKCkgY29uc3Q7CisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICBpc2lPU0FwcE9uTWFjKCkgY29uc3Q7CisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgaXNNYWNDYXRhbHlzdEFwcCgpIGNvbnN0OworfTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19QUklWQVRF
X0RFRl9DT05TVChOUzo6Tm90aWZpY2F0aW9uTmFtZSwgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVE
aWRDaGFuZ2VOb3RpZmljYXRpb24pOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpOb3RpZmlj
YXRpb25OYW1lLCBQcm9jZXNzSW5mb1Bvd2VyU3RhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24pOwor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6UHJvY2Vzc0luZm8qIE5TOjpQcm9jZXNzSW5mbzo6cHJvY2Vzc0luZm8oKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFByb2Nlc3NJbmZvKj4oX05TX1BSSVZBVEVf
Q0xTKE5TUHJvY2Vzc0luZm8pLCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc0luZm8pKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkFycmF5KiBOUzo6UHJvY2Vzc0luZm86OmFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
YXJndW1lbnRzKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6UHJvY2Vzc0luZm86OmVu
dmlyb25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0
aW9uYXJ5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGVudmlyb25tZW50KSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpTdHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6aG9zdE5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChob3N0
TmFtZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6UHJvY2Vzc0luZm86OnByb2Nlc3NOYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc05hbWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vz
c0luZm86OnNldFByb2Nlc3NOYW1lKGNvbnN0IFN0cmluZyogcFN0cmluZykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzZXRQcm9jZXNzTmFt
ZV8pLCBwU3RyaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgaW50IE5TOjpQcm9jZXNzSW5mbzo6cHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGludD4odGhp
cywgX05TX1BSSVZBVEVfU0VMKHByb2Nlc3NJZGVudGlmaWVyKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJp
bmcqIE5TOjpQcm9jZXNzSW5mbzo6Z2xvYmFsbHlVbmlxdWVTdHJpbmcoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChnbG9iYWxseVVuaXF1ZVN0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6UHJvY2Vz
c0luZm86OnVzZXJOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZVNhZmU8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVzZXJOYW1lKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpTdHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6ZnVsbFVzZXJOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8U3RyaW5nKj4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGZ1bGxVc2VyTmFtZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OlByb2Nlc3NJ
bmZvOjpvcGVyYXRpbmdTeXN0ZW0oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob3BlcmF0aW5nU3lzdGVtKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIE5TOjpQcm9jZXNzSW5mbzo6b3Bl
cmF0aW5nU3lzdGVtVmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8T3BlcmF0aW5nU3lzdGVtVmVyc2lvbj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9wZXJh
dGluZ1N5c3RlbVZlcnNpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZv
OjpvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob3BlcmF0aW5n
U3lzdGVtVmVyc2lvblN0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9jZXNzSW5mbzo6aXNP
cGVyYXRpbmdTeXN0ZW1BdExlYXN0VmVyc2lvbihPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIHZlcnNp
b24pIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNpb25fKSwgdmVyc2lv
bik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6UHJvY2Vzc0luZm86OnByb2Nlc3NvckNvdW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKHByb2Nlc3NvckNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdl
ciBOUzo6UHJvY2Vzc0luZm86OmFjdGl2ZVByb2Nlc3NvckNvdW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGFjdGl2ZVByb2Nlc3NvckNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIGxvbmcgbG9uZyBOUzo6
UHJvY2Vzc0luZm86OnBoeXNpY2FsTWVtb3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTx1bnNpZ25lZCBsb25nIGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTChw
aHlzaWNhbE1lbW9yeSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VGltZUludGVydmFsIE5TOjpQcm9jZXNzSW5m
bzo6c3lzdGVtVXB0aW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxUaW1lSW50ZXJ2YWw+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzeXN0ZW1VcHRpbWUpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5m
bzo6ZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2VT
YWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChlbmFibGVTdWRkZW5UZXJtaW5hdGlvbikp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0
aW9uKGNvbnN0IFN0cmluZyogcFJlYXNvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlU2Fm
ZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9u
XyksIHBSZWFzb24pOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZW5hYmxlQXV0b21h
dGljVGVybWluYXRpb24oY29uc3QgU3RyaW5nKiBwUmVhc29uKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2VTYWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChlbmFibGVBdXRvbWF0aWNU
ZXJtaW5hdGlvbl8pLCBwUmVhc29uKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6UHJvY2Vzc0luZm86OmF1
dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYXV0b21h
dGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNz
SW5mbzo6c2V0QXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKHNldEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWRfKSwgZW5hYmxlZCk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpPYmplY3QqIE5TOjpQcm9jZXNzSW5mbzo6YmVnaW5BY3Rpdml0eShBY3Rpdml0
eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU3RyaW5nKiBwUmVhc29uKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE9iamVjdCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChiZWdpbkFj
dGl2aXR5V2l0aE9wdGlvbnNfcmVhc29uXyksIG9wdGlvbnMsIHBSZWFzb24pOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2
b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZW5kQWN0aXZpdHkoT2JqZWN0KiBwQWN0aXZpdHkpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZW5kQWN0
aXZpdHlfKSwgcEFjdGl2aXR5KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OnBlcmZv
cm1BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU3RyaW5nKiBwUmVhc29u
LCB2b2lkICheYmxvY2spKHZvaWQpKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKHBlcmZvcm1BY3Rpdml0eVdpdGhPcHRpb25zX3JlYXNvbl91
c2luZ0Jsb2NrXyksIG9wdGlvbnMsIHBSZWFzb24sIGJsb2NrKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6
UHJvY2Vzc0luZm86OnBlcmZvcm1BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgY29u
c3QgU3RyaW5nKiBwUmVhc29uLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9u
KQoreworICAgIF9fYmxvY2sgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGJsb2NrRnVuY3Rpb24gPSBm
dW5jdGlvbjsKKworICAgIHBlcmZvcm1BY3Rpdml0eShvcHRpb25zLCBwUmVhc29uLCBeKCkgeyBi
bG9ja0Z1bmN0aW9uKCk7IH0pOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6cGVyZm9y
bUV4cGlyaW5nQWN0aXZpdHkoY29uc3QgU3RyaW5nKiBwUmVhc29uLCB2b2lkICheYmxvY2spKGJv
b2wgZXhwaXJlZCkpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywg
X05TX1BSSVZBVEVfU0VMKHBlcmZvcm1FeHBpcmluZ0FjdGl2aXR5V2l0aFJlYXNvbl91c2luZ0Js
b2NrXyksIHBSZWFzb24sIGJsb2NrKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OnBl
cmZvcm1FeHBpcmluZ0FjdGl2aXR5KGNvbnN0IFN0cmluZyogcFJlYXNvbiwgY29uc3Qgc3RkOjpm
dW5jdGlvbjx2b2lkKGJvb2wgZXhwaXJlZCk+JiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIHN0
ZDo6ZnVuY3Rpb248dm9pZChib29sIGV4cGlyZWQpPiBibG9ja0Z1bmN0aW9uID0gZnVuY3Rpb247
CisKKyAgICBwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShwUmVhc29uLCBeKGJvb2wgZXhwaXJlZCkg
eyBibG9ja0Z1bmN0aW9uKGV4cGlyZWQpOyB9KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlByb2Nlc3NJbmZvVGhl
cm1hbFN0YXRlIE5TOjpQcm9jZXNzSW5mbzo6dGhlcm1hbFN0YXRlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZT4odGhpcywg
X05TX1BSSVZBVEVfU0VMKHRoZXJtYWxTdGF0ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9jZXNz
SW5mbzo6aXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzTG93UG93ZXJN
b2RlRW5hYmxlZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9jZXNzSW5mbzo6aXNpT1NBcHBPbk1h
YygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChpc2lPU0FwcE9uTWFjKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlBy
b2Nlc3NJbmZvOjppc01hY0NhdGFseXN0QXBwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzTWFjQ2F0YWx5
c3RBcHApKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU1JhbmdlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TUmFuZ2UuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNDY3ZDYwY2VlMzNhYjI4YjA4MWUwZDJkZDUzNzI4
NzY1YjBhOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU1JhbmdlLmhwcApAQCAtMCwwICsxLDgzIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TUmFu
Z2UuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1
ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK3N0
cnVjdCBSYW5nZQoreworICAgIHN0YXRpYyBSYW5nZSBNYWtlKFVJbnRlZ2VyIGxvYywgVUludGVn
ZXIgbGVuKTsKKworICAgIFJhbmdlKFVJbnRlZ2VyIGxvYywgVUludGVnZXIgbGVuKTsKKworICAg
IGJvb2wgICAgIEVxdWFsKGNvbnN0IFJhbmdlJiByYW5nZSkgY29uc3Q7CisgICAgYm9vbCAgICAg
TG9jYXRpb25JblJhbmdlKFVJbnRlZ2VyIGxvYykgY29uc3Q7CisgICAgVUludGVnZXIgTWF4KCkg
Y29uc3Q7CisKKyAgICBVSW50ZWdlciBsb2NhdGlvbjsKKyAgICBVSW50ZWdlciBsZW5ndGg7Cit9
IF9OU19QQUNLRUQ7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpSYW5nZTo6UmFuZ2UoVUludGVnZXIgbG9jLCBVSW50
ZWdlciBsZW4pCisgICAgOiBsb2NhdGlvbihsb2MpCisgICAgLCBsZW5ndGgobGVuKQoreworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6UmFuZ2UgTlM6OlJhbmdlOjpNYWtlKFVJbnRlZ2VyIGxvYywgVUludGVnZXIgbGVu
KQoreworICAgIHJldHVybiBSYW5nZShsb2MsIGxlbik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlJhbmdl
OjpFcXVhbChjb25zdCBSYW5nZSYgcmFuZ2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIChsb2NhdGlv
biA9PSByYW5nZS5sb2NhdGlvbikgJiYgKGxlbmd0aCA9PSByYW5nZS5sZW5ndGgpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBib29sIE5TOjpSYW5nZTo6TG9jYXRpb25JblJhbmdlKFVJbnRlZ2VyIGxvYykgY29uc3QKK3sK
KyAgICByZXR1cm4gKCEobG9jIDwgbG9jYXRpb24pKSAmJiAoKGxvYyAtIGxvY2F0aW9uKSA8IGxl
bmd0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6UmFuZ2U6Ok1heCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGxvY2F0aW9uICsgbGVuZ3RoOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjlkZWNiOTAx
ZjczNWUxNGU4N2YwZWJlOGZkOTE3YWE0ZTAyZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNTdHJpbmcuaHBwCkBAIC0wLDAg
KzEsMjQ1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vCisvLyBGb3VuZGF0aW9uL05TU3RyaW5nLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIw
MjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5T
T2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TUmFuZ2Uu
aHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitfTlNfRU5VTShOUzo6VUlu
dGVnZXIsIFN0cmluZ0VuY29kaW5nKSB7CisgICAgQVNDSUlTdHJpbmdFbmNvZGluZyA9IDEsCisg
ICAgTkVYVFNURVBTdHJpbmdFbmNvZGluZyA9IDIsCisgICAgSmFwYW5lc2VFVUNTdHJpbmdFbmNv
ZGluZyA9IDMsCisgICAgVVRGOFN0cmluZ0VuY29kaW5nID0gNCwKKyAgICBJU09MYXRpbjFTdHJp
bmdFbmNvZGluZyA9IDUsCisgICAgU3ltYm9sU3RyaW5nRW5jb2RpbmcgPSA2LAorICAgIE5vbkxv
c3N5QVNDSUlTdHJpbmdFbmNvZGluZyA9IDcsCisgICAgU2hpZnRKSVNTdHJpbmdFbmNvZGluZyA9
IDgsCisgICAgSVNPTGF0aW4yU3RyaW5nRW5jb2RpbmcgPSA5LAorICAgIFVuaWNvZGVTdHJpbmdF
bmNvZGluZyA9IDEwLAorICAgIFdpbmRvd3NDUDEyNTFTdHJpbmdFbmNvZGluZyA9IDExLAorICAg
IFdpbmRvd3NDUDEyNTJTdHJpbmdFbmNvZGluZyA9IDEyLAorICAgIFdpbmRvd3NDUDEyNTNTdHJp
bmdFbmNvZGluZyA9IDEzLAorICAgIFdpbmRvd3NDUDEyNTRTdHJpbmdFbmNvZGluZyA9IDE0LAor
ICAgIFdpbmRvd3NDUDEyNTBTdHJpbmdFbmNvZGluZyA9IDE1LAorICAgIElTTzIwMjJKUFN0cmlu
Z0VuY29kaW5nID0gMjEsCisgICAgTWFjT1NSb21hblN0cmluZ0VuY29kaW5nID0gMzAsCisKKyAg
ICBVVEYxNlN0cmluZ0VuY29kaW5nID0gVW5pY29kZVN0cmluZ0VuY29kaW5nLAorCisgICAgVVRG
MTZCaWdFbmRpYW5TdHJpbmdFbmNvZGluZyA9IDB4OTAwMDAxMDAsCisgICAgVVRGMTZMaXR0bGVF
bmRpYW5TdHJpbmdFbmNvZGluZyA9IDB4OTQwMDAxMDAsCisKKyAgICBVVEYzMlN0cmluZ0VuY29k
aW5nID0gMHg4YzAwMDEwMCwKKyAgICBVVEYzMkJpZ0VuZGlhblN0cmluZ0VuY29kaW5nID0gMHg5
ODAwMDEwMCwKKyAgICBVVEYzMkxpdHRsZUVuZGlhblN0cmluZ0VuY29kaW5nID0gMHg5YzAwMDEw
MAorfTsKKworX05TX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBTdHJpbmdDb21wYXJlT3B0aW9ucykg
eworICAgIENhc2VJbnNlbnNpdGl2ZVNlYXJjaCA9IDEsCisgICAgTGl0ZXJhbFNlYXJjaCA9IDIs
CisgICAgQmFja3dhcmRzU2VhcmNoID0gNCwKKyAgICBBbmNob3JlZFNlYXJjaCA9IDgsCisgICAg
TnVtZXJpY1NlYXJjaCA9IDY0LAorICAgIERpYWNyaXRpY0luc2Vuc2l0aXZlU2VhcmNoID0gMTI4
LAorICAgIFdpZHRoSW5zZW5zaXRpdmVTZWFyY2ggPSAyNTYsCisgICAgRm9yY2VkT3JkZXJpbmdT
ZWFyY2ggPSA1MTIsCisgICAgUmVndWxhckV4cHJlc3Npb25TZWFyY2ggPSAxMDI0Cit9OworCit1
c2luZyB1bmljaGFyID0gdW5zaWduZWQgc2hvcnQ7CisKK2NsYXNzIFN0cmluZyA6IHB1YmxpYyBD
b3B5aW5nPFN0cmluZz4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RyaW5nKiBzdHJpbmcoKTsK
KyAgICBzdGF0aWMgU3RyaW5nKiBzdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nKTsKKyAgICBz
dGF0aWMgU3RyaW5nKiBzdHJpbmcoY29uc3QgY2hhciogcFN0cmluZywgU3RyaW5nRW5jb2Rpbmcg
ZW5jb2RpbmcpOworCisgICAgc3RhdGljIFN0cmluZyogYWxsb2MoKTsKKyAgICBTdHJpbmcqICAg
ICAgICBpbml0KCk7CisgICAgU3RyaW5nKiAgICAgICAgaW5pdChjb25zdCBTdHJpbmcqIHBTdHJp
bmcpOworICAgIFN0cmluZyogICAgICAgIGluaXQoY29uc3QgY2hhciogcFN0cmluZywgU3RyaW5n
RW5jb2RpbmcgZW5jb2RpbmcpOworICAgIFN0cmluZyogICAgICAgIGluaXQodm9pZCogcEJ5dGVz
LCBVSW50ZWdlciBsZW4sIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nLCBib29sIGZyZWVCdWZmZXIp
OworCisgICAgdW5pY2hhciAgICAgICAgY2hhcmFjdGVyKFVJbnRlZ2VyIGluZGV4KSBjb25zdDsK
KyAgICBVSW50ZWdlciAgICAgICBsZW5ndGgoKSBjb25zdDsKKworICAgIGNvbnN0IGNoYXIqICAg
IGNTdHJpbmcoU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpIGNvbnN0OworICAgIGNvbnN0IGNoYXIq
ICAgIHV0ZjhTdHJpbmcoKSBjb25zdDsKKyAgICBVSW50ZWdlciAgICAgICBtYXhpbXVtTGVuZ3Ro
T2ZCeXRlcyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3Q7CisgICAgVUludGVnZXIgICAg
ICAgbGVuZ3RoT2ZCeXRlcyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICBpc0VxdWFsVG9TdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nKSBjb25z
dDsKKyAgICBSYW5nZSAgICAgICAgICByYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyogcFN0cmlu
ZywgU3RyaW5nQ29tcGFyZU9wdGlvbnMgb3B0aW9ucykgY29uc3Q7CisKKyAgICBjb25zdCBjaGFy
KiAgICBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKworICAgIFN0cmluZyogICAg
ICAgIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nKGNvbnN0IFN0cmluZyogcFN0cmluZykgY29uc3Q7
CisKK307CisKK3RlbXBsYXRlPCBzdGQ6OnNpemVfdCBfU3RyaW5nTGVuID4KK2NvbnN0ZXhwciBj
b25zdCBTdHJpbmcqIE1ha2VDb25zdGFudFN0cmluZyggY29uc3QgY2hhciAoICZzdHIgKVtfU3Ry
aW5nTGVuXSApCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8IGNvbnN0IFN0cmluZyog
PiggX19DRlN0cmluZ01ha2VDb25zdGFudFN0cmluZyggc3RyICkgKTsKK30KKworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6U3RyaW5nKiBOUzo6U3RyaW5nOjpzdHJpbmcoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPFN0cmluZyo+KF9OU19QUklWQVRFX0NMUyhOU1N0cmluZyksIF9OU19QUklWQVRF
X1NFTChzdHJpbmcpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlN0cmluZzo6c3RyaW5nKGNv
bnN0IFN0cmluZyogcFN0cmluZykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxT
dHJpbmcqPihfTlNfUFJJVkFURV9DTFMoTlNTdHJpbmcpLCBfTlNfUFJJVkFURV9TRUwoc3RyaW5n
V2l0aFN0cmluZ18pLCBwU3RyaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlN0cmluZzo6
c3RyaW5nKGNvbnN0IGNoYXIqIHBTdHJpbmcsIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KF9OU19QUklWQVRFX0NMUyhO
U1N0cmluZyksIF9OU19QUklWQVRFX1NFTChzdHJpbmdXaXRoQ1N0cmluZ19lbmNvZGluZ18pLCBw
U3RyaW5nLCBlbmNvZGluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjphbGxvYzxTdHJpbmc+KF9OU19QUklWQVRFX0NMUyhO
U1N0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0Ojppbml0PFN0cmluZz4oKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6
OlN0cmluZzo6aW5pdChjb25zdCBTdHJpbmcqIHBTdHJpbmcpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoU3Ry
aW5nXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KGNv
bnN0IGNoYXIqIHBTdHJpbmcsIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0
V2l0aENTdHJpbmdfZW5jb2RpbmdfKSwgcFN0cmluZywgZW5jb2RpbmcpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KHZvaWQqIHBCeXRlcywgVUludGVnZXIgbGVuLCBTdHJp
bmdFbmNvZGluZyBlbmNvZGluZywgYm9vbCBmcmVlQnVmZmVyKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aEJ5
dGVzTm9Db3B5X2xlbmd0aF9lbmNvZGluZ19mcmVlV2hlbkRvbmVfKSwgcEJ5dGVzLCBsZW4sIGVu
Y29kaW5nLCBmcmVlQnVmZmVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OnVuaWNoYXIgTlM6OlN0cmluZzo6Y2hh
cmFjdGVyKFVJbnRlZ2VyIGluZGV4KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHVuaWNoYXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChjaGFyYWN0ZXJBdEluZGV4Xyks
IGluZGV4KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpTdHJpbmc6Omxlbmd0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChsZW5ndGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgY29uc3QgY2hhciogTlM6OlN0cmluZzo6Y1N0
cmluZyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxjb25zdCBjaGFyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNTdHJpbmdV
c2luZ0VuY29kaW5nXyksIGVuY29kaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgY29uc3QgY2hhciogTlM6OlN0cmlu
Zzo6dXRmOFN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Y29uc3QgY2hhcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChVVEY4U3RyaW5nKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpVSW50ZWdlciBOUzo6U3RyaW5nOjptYXhpbXVtTGVuZ3RoT2ZCeXRlcyhTdHJpbmdFbmNv
ZGluZyBlbmNvZGluZykgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxV
SW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG1heGltdW1MZW5ndGhPZkJ5dGVzVXNpbmdF
bmNvZGluZ18pLCBlbmNvZGluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6U3RyaW5nOjps
ZW5ndGhPZkJ5dGVzKFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobGVu
Z3RoT2ZCeXRlc1VzaW5nRW5jb2RpbmdfKSwgZW5jb2RpbmcpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpT
dHJpbmc6OmlzRXF1YWxUb1N0cmluZyhjb25zdCBOUzo6U3RyaW5nKiBwU3RyaW5nKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChpc0VxdWFsVG9TdHJpbmdfKSwgcFN0cmluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpSYW5nZSBOUzo6
U3RyaW5nOjpyYW5nZU9mU3RyaW5nKGNvbnN0IE5TOjpTdHJpbmcqIHBTdHJpbmcsIE5TOjpTdHJp
bmdDb21wYXJlT3B0aW9ucyBvcHRpb25zKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPFJhbmdlPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocmFuZ2VPZlN0cmluZ19vcHRp
b25zXyksIHBTdHJpbmcsIG9wdGlvbnMpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBjb25zdCBjaGFyKiBOUzo6U3RyaW5nOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGNvbnN0IGNoYXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OnN0cmluZ0J5QXBw
ZW5kaW5nU3RyaW5nKGNvbnN0IFN0cmluZyogcFN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHN0
cmluZ0J5QXBwZW5kaW5nU3RyaW5nXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNUeXBlcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY4YWRh
MTJjZThmYmZiM2NhOTZiOGQ1ODU2MjI0NjE3MTllODdlNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwCkBAIC0w
LDAgKzEsNTEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIEZvdW5kYXRpb24vTlNUeXBlcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0y
MDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKworI2luY2x1ZGUg
PENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFj
ZSBOUworewordXNpbmcgVGltZUludGVydmFsID0gZG91YmxlOworCit1c2luZyBJbnRlZ2VyID0g
c3RkOjppbnRwdHJfdDsKK3VzaW5nIFVJbnRlZ2VyID0gc3RkOjp1aW50cHRyX3Q7CisKK2NvbnN0
IEludGVnZXIgIEludGVnZXJNYXggPSBJTlRQVFJfTUFYOworY29uc3QgSW50ZWdlciAgSW50ZWdl
ck1pbiA9IElOVFBUUl9NSU47Citjb25zdCBVSW50ZWdlciBVSW50ZWdlck1heCA9IFVJTlRQVFJf
TUFYOworCitzdHJ1Y3QgT3BlcmF0aW5nU3lzdGVtVmVyc2lvbgoreworICAgIEludGVnZXIgbWFq
b3JWZXJzaW9uOworICAgIEludGVnZXIgbWlub3JWZXJzaW9uOworICAgIEludGVnZXIgcGF0Y2hW
ZXJzaW9uOworfSBfTlNfUEFDS0VEOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9Gb3VuZGF0aW9uL05TVVJMLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TVVJMLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTBlN2EyMDc3MDczNGRmZGEyY2Rl
Nzc0ZGFhNGM0MzIyNGRkYmQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwCkBAIC0wLDAgKzEsOTAgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRp
b24vTlNVUkwuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1
ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK2Ns
YXNzIFVSTCA6IHB1YmxpYyBDb3B5aW5nPFVSTD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgVVJM
KiBmaWxlVVJMV2l0aFBhdGgoY29uc3QgY2xhc3MgU3RyaW5nKiBwUGF0aCk7CisKKyAgICBzdGF0
aWMgVVJMKiBhbGxvYygpOworICAgIFVSTCogICAgICAgIGluaXQoKTsKKyAgICBVUkwqICAgICAg
ICBpbml0KGNvbnN0IGNsYXNzIFN0cmluZyogcFN0cmluZyk7CisgICAgVVJMKiAgICAgICAgaW5p
dEZpbGVVUkxXaXRoUGF0aChjb25zdCBjbGFzcyBTdHJpbmcqIHBQYXRoKTsKKworICAgIGNvbnN0
IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigpIGNvbnN0OworfTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OlVSTCogTlM6OlVSTDo6ZmlsZVVSTFdpdGhQYXRoKGNvbnN0IFN0cmluZyogcFBhdGgpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4oX05TX1BSSVZBVEVfQ0xTKE5TVVJM
KSwgX05TX1BSSVZBVEVfU0VMKGZpbGVVUkxXaXRoUGF0aF8pLCBwUGF0aCk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpVUkwqIE5TOjpVUkw6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjphbGxvYzxVUkw+
KF9OU19QUklWQVRFX0NMUyhOU1VSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjppbml0
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojppbml0PFVSTD4oKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCog
TlM6OlVSTDo6aW5pdChjb25zdCBTdHJpbmcqIHBTdHJpbmcpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoU3RyaW5n
XyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjppbml0RmlsZVVSTFdpdGhQ
YXRoKGNvbnN0IFN0cmluZyogcFBhdGgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRGaWxlVVJMV2l0aFBhdGhfKSwgcFBh
dGgpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBjb25zdCBjaGFyKiBOUzo6VVJMOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNvbnN0IGNoYXIq
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0xJQ0VOU0UudHh0IGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL0xJQ0VOU0UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNzQzYzY3ZTlm
ZDM2NDljYzBlMWM4NmI5MTExZWUxZWEyNTkzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTElDRU5TRS50eHQKQEAgLTAsMCArMSwyMDIgQEAKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMi4wLCBKYW51YXJ5IDIwMDQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8KKworICAgVEVSTVMg
QU5EIENPTkRJVElPTlMgRk9SIFVTRSwgUkVQUk9EVUNUSU9OLCBBTkQgRElTVFJJQlVUSU9OCisK
KyAgIDEuIERlZmluaXRpb25zLgorCisgICAgICAiTGljZW5zZSIgc2hhbGwgbWVhbiB0aGUgdGVy
bXMgYW5kIGNvbmRpdGlvbnMgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLAorICAgICAgYW5kIGRpc3Ry
aWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1l
bnQuCisKKyAgICAgICJMaWNlbnNvciIgc2hhbGwgbWVhbiB0aGUgY29weXJpZ2h0IG93bmVyIG9y
IGVudGl0eSBhdXRob3JpemVkIGJ5CisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMg
Z3JhbnRpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgICJMZWdhbCBFbnRpdHkiIHNoYWxsIG1lYW4g
dGhlIHVuaW9uIG9mIHRoZSBhY3RpbmcgZW50aXR5IGFuZCBhbGwKKyAgICAgIG90aGVyIGVudGl0
aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24K
KyAgICAgIGNvbnRyb2wgd2l0aCB0aGF0IGVudGl0eS4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlz
IGRlZmluaXRpb24sCisgICAgICAiY29udHJvbCIgbWVhbnMgKGkpIHRoZSBwb3dlciwgZGlyZWN0
IG9yIGluZGlyZWN0LCB0byBjYXVzZSB0aGUKKyAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50
IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCisgICAgICBvdGhlcndpc2Us
IG9yIChpaSkgb3duZXJzaGlwIG9mIGZpZnR5IHBlcmNlbnQgKDUwJSkgb3IgbW9yZSBvZiB0aGUK
KyAgICAgIG91dHN0YW5kaW5nIHNoYXJlcywgb3IgKGlpaSkgYmVuZWZpY2lhbCBvd25lcnNoaXAg
b2Ygc3VjaCBlbnRpdHkuCisKKyAgICAgICJZb3UiIChvciAiWW91ciIpIHNoYWxsIG1lYW4gYW4g
aW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKKyAgICAgIGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMg
Z3JhbnRlZCBieSB0aGlzIExpY2Vuc2UuCisKKyAgICAgICJTb3VyY2UiIGZvcm0gc2hhbGwgbWVh
biB0aGUgcHJlZmVycmVkIGZvcm0gZm9yIG1ha2luZyBtb2RpZmljYXRpb25zLAorICAgICAgaW5j
bHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBzb2Z0d2FyZSBzb3VyY2UgY29kZSwgZG9jdW1lbnRh
dGlvbgorICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KKworICAgICAgIk9i
amVjdCIgZm9ybSBzaGFsbCBtZWFuIGFueSBmb3JtIHJlc3VsdGluZyBmcm9tIG1lY2hhbmljYWwK
KyAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGlu
Y2x1ZGluZyBidXQKKyAgICAgIG5vdCBsaW1pdGVkIHRvIGNvbXBpbGVkIG9iamVjdCBjb2RlLCBn
ZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiwKKyAgICAgIGFuZCBjb252ZXJzaW9ucyB0byBvdGhlciBt
ZWRpYSB0eXBlcy4KKworICAgICAgIldvcmsiIHNoYWxsIG1lYW4gdGhlIHdvcmsgb2YgYXV0aG9y
c2hpcCwgd2hldGhlciBpbiBTb3VyY2Ugb3IKKyAgICAgIE9iamVjdCBmb3JtLCBtYWRlIGF2YWls
YWJsZSB1bmRlciB0aGUgTGljZW5zZSwgYXMgaW5kaWNhdGVkIGJ5IGEKKyAgICAgIGNvcHlyaWdo
dCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yaworICAg
ICAgKGFuIGV4YW1wbGUgaXMgcHJvdmlkZWQgaW4gdGhlIEFwcGVuZGl4IGJlbG93KS4KKworICAg
ICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291
cmNlIG9yIE9iamVjdAorICAgICAgZm9ybSwgdGhhdCBpcyBiYXNlZCBvbiAob3IgZGVyaXZlZCBm
cm9tKSB0aGUgV29yayBhbmQgZm9yIHdoaWNoIHRoZQorICAgICAgZWRpdG9yaWFsIHJldmlzaW9u
cywgYW5ub3RhdGlvbnMsIGVsYWJvcmF0aW9ucywgb3Igb3RoZXIgbW9kaWZpY2F0aW9ucworICAg
ICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAu
IEZvciB0aGUgcHVycG9zZXMKKyAgICAgIG9mIHRoaXMgTGljZW5zZSwgRGVyaXZhdGl2ZSBXb3Jr
cyBzaGFsbCBub3QgaW5jbHVkZSB3b3JrcyB0aGF0IHJlbWFpbgorICAgICAgc2VwYXJhYmxlIGZy
b20sIG9yIG1lcmVseSBsaW5rIChvciBiaW5kIGJ5IG5hbWUpIHRvIHRoZSBpbnRlcmZhY2VzIG9m
LAorICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KKworICAgICAg
IkNvbnRyaWJ1dGlvbiIgc2hhbGwgbWVhbiBhbnkgd29yayBvZiBhdXRob3JzaGlwLCBpbmNsdWRp
bmcKKyAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZp
Y2F0aW9ucyBvciBhZGRpdGlvbnMKKyAgICAgIHRvIHRoYXQgV29yayBvciBEZXJpdmF0aXZlIFdv
cmtzIHRoZXJlb2YsIHRoYXQgaXMgaW50ZW50aW9uYWxseQorICAgICAgc3VibWl0dGVkIHRvIExp
Y2Vuc29yIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsgYnkgdGhlIGNvcHlyaWdodCBvd25lcgor
ICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBz
dWJtaXQgb24gYmVoYWxmIG9mCisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyLiBGb3IgdGhlIHB1
cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgInN1Ym1pdHRlZCIKKyAgICAgIG1lYW5zIGFueSBm
b3JtIG9mIGVsZWN0cm9uaWMsIHZlcmJhbCwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9uIHNlbnQK
KyAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcg
YnV0IG5vdCBsaW1pdGVkIHRvCisgICAgICBjb21tdW5pY2F0aW9uIG9uIGVsZWN0cm9uaWMgbWFp
bGluZyBsaXN0cywgc291cmNlIGNvZGUgY29udHJvbCBzeXN0ZW1zLAorICAgICAgYW5kIGlzc3Vl
IHRyYWNraW5nIHN5c3RlbXMgdGhhdCBhcmUgbWFuYWdlZCBieSwgb3Igb24gYmVoYWxmIG9mLCB0
aGUKKyAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXBy
b3ZpbmcgdGhlIFdvcmssIGJ1dAorICAgICAgZXhjbHVkaW5nIGNvbW11bmljYXRpb24gdGhhdCBp
cyBjb25zcGljdW91c2x5IG1hcmtlZCBvciBvdGhlcndpc2UKKyAgICAgIGRlc2lnbmF0ZWQgaW4g
d3JpdGluZyBieSB0aGUgY29weXJpZ2h0IG93bmVyIGFzICJOb3QgYSBDb250cmlidXRpb24uIgor
CisgICAgICAiQ29udHJpYnV0b3IiIHNoYWxsIG1lYW4gTGljZW5zb3IgYW5kIGFueSBpbmRpdmlk
dWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgb24gYmVoYWxmIG9mIHdob20gYSBDb250cmlidXRp
b24gaGFzIGJlZW4gcmVjZWl2ZWQgYnkgTGljZW5zb3IgYW5kCisgICAgICBzdWJzZXF1ZW50bHkg
aW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KKworICAgMi4gR3JhbnQgb2YgQ29weXJpZ2h0
IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0
aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJw
ZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0
eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgY29weXJpZ2h0IGxpY2Vuc2UgdG8gcmVwcm9kdWNl
LCBwcmVwYXJlIERlcml2YXRpdmUgV29ya3Mgb2YsCisgICAgICBwdWJsaWNseSBkaXNwbGF5LCBw
dWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKKyAgICAgIFdv
cmsgYW5kIHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0uCisK
KyAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQg
Y29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVi
eSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVz
aXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAgIChleGNlcHQg
YXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBt
YWRlLAorICAgICAgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCBvdGhlcndp
c2UgdHJhbnNmZXIgdGhlIFdvcmssCisgICAgICB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBv
bmx5IHRvIHRob3NlIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZQorICAgICAgYnkgc3VjaCBDb250
cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKKyAgICAgIENv
bnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciBDb250cmlidXRp
b24ocykKKyAgICAgIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBDb250cmlidXRpb24ocykg
d2FzIHN1Ym1pdHRlZC4gSWYgWW91CisgICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24g
YWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQorICAgICAgY3Jvc3MtY2xhaW0gb3IgY291
bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgV29yaworICAgICAgb3Ig
YSBDb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyBk
aXJlY3QKKyAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFu
eSBwYXRlbnQgbGljZW5zZXMKKyAgICAgIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5z
ZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZQorICAgICAgYXMgb2YgdGhlIGRhdGUgc3Vj
aCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgorCisgICA0LiBSZWRpc3RyaWJ1dGlvbi4gWW91IG1heSBy
ZXByb2R1Y2UgYW5kIGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZQorICAgICAgV29yayBvciBEZXJp
dmF0aXZlIFdvcmtzIHRoZXJlb2YgaW4gYW55IG1lZGl1bSwgd2l0aCBvciB3aXRob3V0CisgICAg
ICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0
aGF0IFlvdQorICAgICAgbWVldCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICAgIChh
KSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCisgICAg
ICAgICAgRGVyaXZhdGl2ZSBXb3JrcyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlOyBhbmQKKworICAg
ICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5l
bnQgbm90aWNlcworICAgICAgICAgIHN0YXRpbmcgdGhhdCBZb3UgY2hhbmdlZCB0aGUgZmlsZXM7
IGFuZAorCisgICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2Yg
YW55IERlcml2YXRpdmUgV29ya3MKKyAgICAgICAgICB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbGwg
Y29weXJpZ2h0LCBwYXRlbnQsIHRyYWRlbWFyaywgYW5kCisgICAgICAgICAgYXR0cmlidXRpb24g
bm90aWNlcyBmcm9tIHRoZSBTb3VyY2UgZm9ybSBvZiB0aGUgV29yaywKKyAgICAgICAgICBleGNs
dWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCisg
ICAgICAgICAgdGhlIERlcml2YXRpdmUgV29ya3M7IGFuZAorCisgICAgICAoZCkgSWYgdGhlIFdv
cmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKKyAgICAgICAg
ICBkaXN0cmlidXRpb24sIHRoZW4gYW55IERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJp
YnV0ZSBtdXN0CisgICAgICAgICAgaW5jbHVkZSBhIHJlYWRhYmxlIGNvcHkgb2YgdGhlIGF0dHJp
YnV0aW9uIG5vdGljZXMgY29udGFpbmVkCisgICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZp
bGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CisgICAgICAgICAgcGVydGFp
biB0byBhbnkgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaW4gYXQgbGVhc3Qgb25lCisg
ICAgICAgICAgb2YgdGhlIGZvbGxvd2luZyBwbGFjZXM6IHdpdGhpbiBhIE5PVElDRSB0ZXh0IGZp
bGUgZGlzdHJpYnV0ZWQKKyAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtz
OyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCisgICAgICAgICAgZG9jdW1lbnRhdGlvbiwgaWYg
cHJvdmlkZWQgYWxvbmcgd2l0aCB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgb3IsCisgICAgICAgICAg
d2l0aGluIGEgZGlzcGxheSBnZW5lcmF0ZWQgYnkgdGhlIERlcml2YXRpdmUgV29ya3MsIGlmIGFu
ZAorICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBh
cHBlYXIuIFRoZSBjb250ZW50cworICAgICAgICAgIG9mIHRoZSBOT1RJQ0UgZmlsZSBhcmUgZm9y
IGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSBhbmQKKyAgICAgICAgICBkbyBub3QgbW9kaWZ5
IHRoZSBMaWNlbnNlLiBZb3UgbWF5IGFkZCBZb3VyIG93biBhdHRyaWJ1dGlvbgorICAgICAgICAg
IG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxv
bmdzaWRlCisgICAgICAgICAgb3IgYXMgYW4gYWRkZW5kdW0gdG8gdGhlIE5PVElDRSB0ZXh0IGZy
b20gdGhlIFdvcmssIHByb3ZpZGVkCisgICAgICAgICAgdGhhdCBzdWNoIGFkZGl0aW9uYWwgYXR0
cmlidXRpb24gbm90aWNlcyBjYW5ub3QgYmUgY29uc3RydWVkCisgICAgICAgICAgYXMgbW9kaWZ5
aW5nIHRoZSBMaWNlbnNlLgorCisgICAgICBZb3UgbWF5IGFkZCBZb3VyIG93biBjb3B5cmlnaHQg
c3RhdGVtZW50IHRvIFlvdXIgbW9kaWZpY2F0aW9ucyBhbmQKKyAgICAgIG1heSBwcm92aWRlIGFk
ZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKKyAgICAg
IGZvciB1c2UsIHJlcHJvZHVjdGlvbiwgb3IgZGlzdHJpYnV0aW9uIG9mIFlvdXIgbW9kaWZpY2F0
aW9ucywgb3IKKyAgICAgIGZvciBhbnkgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGFzIGEgd2hvbGUs
IHByb3ZpZGVkIFlvdXIgdXNlLAorICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9u
IG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCisgICAgICB0aGUgY29uZGl0aW9u
cyBzdGF0ZWQgaW4gdGhpcyBMaWNlbnNlLgorCisgICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1
dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCisgICAgICBhbnkg
Q29udHJpYnV0aW9uIGludGVudGlvbmFsbHkgc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW4gdGhl
IFdvcmsKKyAgICAgIGJ5IFlvdSB0byB0aGUgTGljZW5zb3Igc2hhbGwgYmUgdW5kZXIgdGhlIHRl
cm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFk
ZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KKyAgICAgIE5vdHdpdGhzdGFuZGluZyB0aGUg
YWJvdmUsIG5vdGhpbmcgaGVyZWluIHNoYWxsIHN1cGVyc2VkZSBvciBtb2RpZnkKKyAgICAgIHRo
ZSB0ZXJtcyBvZiBhbnkgc2VwYXJhdGUgbGljZW5zZSBhZ3JlZW1lbnQgeW91IG1heSBoYXZlIGV4
ZWN1dGVkCisgICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMu
CisKKyAgIDYuIFRyYWRlbWFya3MuIFRoaXMgTGljZW5zZSBkb2VzIG5vdCBncmFudCBwZXJtaXNz
aW9uIHRvIHVzZSB0aGUgdHJhZGUKKyAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1h
cmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKKyAgICAgIGV4Y2VwdCBhcyBy
ZXF1aXJlZCBmb3IgcmVhc29uYWJsZSBhbmQgY3VzdG9tYXJ5IHVzZSBpbiBkZXNjcmliaW5nIHRo
ZQorICAgICAgb3JpZ2luIG9mIHRoZSBXb3JrIGFuZCByZXByb2R1Y2luZyB0aGUgY29udGVudCBv
ZiB0aGUgTk9USUNFIGZpbGUuCisKKyAgIDcuIERpc2NsYWltZXIgb2YgV2FycmFudHkuIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvcgorICAgICAgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIExpY2Vuc29yIHByb3ZpZGVzIHRoZSBXb3JrIChhbmQgZWFjaAorICAgICAgQ29udHJpYnV0
b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAg
ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IKKyAgICAgIGltcGxpZWQsIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCBh
bnkgd2FycmFudGllcyBvciBjb25kaXRpb25zCisgICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdF
TUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCisgICAgICBQQVJUSUNVTEFS
IFBVUlBPU0UuIFlvdSBhcmUgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUK
KyAgICAgIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBvciByZWRpc3RyaWJ1dGluZyB0aGUgV29y
ayBhbmQgYXNzdW1lIGFueQorICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNp
c2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisgICA4LiBMaW1pdGF0aW9u
IG9mIExpYWJpbGl0eS4gSW4gbm8gZXZlbnQgYW5kIHVuZGVyIG5vIGxlZ2FsIHRoZW9yeSwKKyAg
ICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Ig
b3RoZXJ3aXNlLAorICAgICAgdW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IChzdWNo
IGFzIGRlbGliZXJhdGUgYW5kIGdyb3NzbHkKKyAgICAgIG5lZ2xpZ2VudCBhY3RzKSBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc2hhbGwgYW55IENvbnRyaWJ1dG9yIGJlCisgICAgICBsaWFibGUg
dG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNp
YWwsCisgICAgICBpbmNpZGVudGFsLCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb2YgYW55IGNo
YXJhY3RlciBhcmlzaW5nIGFzIGEKKyAgICAgIHJlc3VsdCBvZiB0aGlzIExpY2Vuc2Ugb3Igb3V0
IG9mIHRoZSB1c2Ugb3IgaW5hYmlsaXR5IHRvIHVzZSB0aGUKKyAgICAgIFdvcmsgKGluY2x1ZGlu
ZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKKyAgICAg
IHdvcmsgc3RvcHBhZ2UsIGNvbXB1dGVyIGZhaWx1cmUgb3IgbWFsZnVuY3Rpb24sIG9yIGFueSBh
bmQgYWxsCisgICAgICBvdGhlciBjb21tZXJjaWFsIGRhbWFnZXMgb3IgbG9zc2VzKSwgZXZlbiBp
ZiBzdWNoIENvbnRyaWJ1dG9yCisgICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJp
bGl0eSBvZiBzdWNoIGRhbWFnZXMuCisKKyAgIDkuIEFjY2VwdGluZyBXYXJyYW50eSBvciBBZGRp
dGlvbmFsIExpYWJpbGl0eS4gV2hpbGUgcmVkaXN0cmlidXRpbmcKKyAgICAgIHRoZSBXb3JrIG9y
IERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCisgICAg
ICBhbmQgY2hhcmdlIGEgZmVlIGZvciwgYWNjZXB0YW5jZSBvZiBzdXBwb3J0LCB3YXJyYW50eSwg
aW5kZW1uaXR5LAorICAgICAgb3Igb3RoZXIgbGlhYmlsaXR5IG9ibGlnYXRpb25zIGFuZC9vciBy
aWdodHMgY29uc2lzdGVudCB3aXRoIHRoaXMKKyAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFj
Y2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CisgICAgICBvbiBZb3Vy
IG93biBiZWhhbGYgYW5kIG9uIFlvdXIgc29sZSByZXNwb25zaWJpbGl0eSwgbm90IG9uIGJlaGFs
ZgorICAgICAgb2YgYW55IG90aGVyIENvbnRyaWJ1dG9yLCBhbmQgb25seSBpZiBZb3UgYWdyZWUg
dG8gaW5kZW1uaWZ5LAorICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhh
cm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CisgICAgICBpbmN1cnJlZCBieSwgb3IgY2xhaW1zIGFz
c2VydGVkIGFnYWluc3QsIHN1Y2ggQ29udHJpYnV0b3IgYnkgcmVhc29uCisgICAgICBvZiB5b3Vy
IGFjY2VwdGluZyBhbnkgc3VjaCB3YXJyYW50eSBvciBhZGRpdGlvbmFsIGxpYWJpbGl0eS4KKwor
ICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCisKKyAgIEFQUEVORElYOiBIb3cgdG8gYXBw
bHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KKworICAgICAgVG8gYXBwbHkgdGhl
IEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yaywgYXR0YWNoIHRoZSBmb2xsb3dpbmcKKyAgICAg
IGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRz
ICJbXSIKKyAgICAgIHJlcGxhY2VkIHdpdGggeW91ciBvd24gaWRlbnRpZnlpbmcgaW5mb3JtYXRp
b24uIChEb24ndCBpbmNsdWRlCisgICAgICB0aGUgYnJhY2tldHMhKSAgVGhlIHRleHQgc2hvdWxk
IGJlIGVuY2xvc2VkIGluIHRoZSBhcHByb3ByaWF0ZQorICAgICAgY29tbWVudCBzeW50YXggZm9y
IHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCisgICAgICBmaWxlIG9y
IGNsYXNzIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHB1cnBvc2UgYmUgaW5jbHVkZWQgb24gdGhl
CisgICAgICBzYW1lICJwcmludGVkIHBhZ2UiIGFzIHRoZSBjb3B5cmlnaHQgbm90aWNlIGZvciBl
YXNpZXIKKyAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4K
KworICAgQ29weXJpZ2h0IMKpIDIwMjEgQXBwbGUgSW5jLgorCisgICBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJl
LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZDQ1NmM4NzEyMjdkYjljNDIwYjE3YWE3MTU3ZjhmODUxZWRlNmQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAKQEAgLTAsMCArMSw5MzIgQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEFj
Y2VsZXJhdGlvblN0cnVjdHVyZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVk
ZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFjY2VsZXJhdGlv
blN0cnVjdHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMu
aHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvci5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfT1BUSU9OUyhO
Uzo6VUludGVnZXIsIEFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlKSB7CisgICAgQWNjZWxlcmF0
aW9uU3RydWN0dXJlVXNhZ2VOb25lID0gMCwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2Fn
ZVJlZml0ID0gMSwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZVByZWZlckZhc3RCdWls
ZCA9IDIsCisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2VFeHRlbmRlZExpbWl0cyA9IDQs
Cit9OworCitfTVRMX09QVElPTlModWludDMyX3QsIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3Rh
bmNlT3B0aW9ucykgeworICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlT3B0aW9uTm9u
ZSA9IDAsCisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25EaXNhYmxlVHJp
YW5nbGVDdWxsaW5nID0gMSwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlv
blRyaWFuZ2xlRnJvbnRGYWNpbmdXaW5kaW5nQ291bnRlckNsb2Nrd2lzZSA9IDIsCisgICAgQWNj
ZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25PcGFxdWUgPSA0LAorICAgIEFjY2VsZXJh
dGlvblN0cnVjdHVyZUluc3RhbmNlT3B0aW9uTm9uT3BhcXVlID0gOCwKK307CisKK2NsYXNzIEFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QWNjZWxl
cmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlICAgICAgICAgICAgICAgdXNhZ2UoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VXNh
Z2UoTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZSB1c2FnZSk7Cit9OworCitjbGFzcyBB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlp
bmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2Ny
aXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldChOUzo6VUludGVn
ZXIgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCk7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFxdWUoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRPcGFxdWUoYm9vbCBvcGFxdWUpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25G
dW5jdGlvbkludm9jYXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlv
bkZ1bmN0aW9uSW52b2NhdGlvbihib29sIGFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rp
b25JbnZvY2F0aW9uKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0
cmluZyogbGFiZWwpOworfTsKKworX01UTF9FTlVNKHVpbnQzMl90LCBNb3Rpb25Cb3JkZXJNb2Rl
KSB7CisgICAgTW90aW9uQm9yZGVyTW9kZUNsYW1wID0gMCwKKyAgICBNb3Rpb25Cb3JkZXJNb2Rl
VmFuaXNoID0gMSwKK307CisKK2NsYXNzIFByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0
dXJlRGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVE
ZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpBcnJheSogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW9tZXRyeURlc2NyaXB0b3Jz
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEdlb21ldHJ5RGVzY3JpcHRvcnMoY29uc3QgTlM6OkFycmF5KiBnZW9t
ZXRyeURlc2NyaXB0b3JzKTsKKworICAgIE1UTDo6TW90aW9uQm9yZGVyTW9kZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25TdGFydEJvcmRlck1vZGUoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TW90aW9uU3RhcnRCb3JkZXJNb2RlKE1UTDo6TW90aW9uQm9yZGVyTW9kZSBtb3Rpb25TdGFy
dEJvcmRlck1vZGUpOworCisgICAgTVRMOjpNb3Rpb25Cb3JkZXJNb2RlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vdGlvbkVuZEJvcmRlck1vZGUoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW90
aW9uRW5kQm9yZGVyTW9kZShNVEw6Ok1vdGlvbkJvcmRlck1vZGUgbW90aW9uRW5kQm9yZGVyTW9k
ZSk7CisKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW90aW9uU3RhcnRUaW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblN0YXJ0VGltZShm
bG9hdCBtb3Rpb25TdGFydFRpbWUpOworCisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbkVuZFRpbWUoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TW90aW9uRW5kVGltZShmbG9hdCBtb3Rpb25FbmRUaW1lKTsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25LZXlmcmFtZUNv
dW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldE1vdGlvbktleWZyYW1lQ291bnQoTlM6OlVJbnRlZ2VyIG1vdGlv
bktleWZyYW1lQ291bnQpOworCisgICAgc3RhdGljIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvciogIGRlc2NyaXB0b3IoKTsKK307CisKK2NsYXNzIEFjY2VsZXJh
dGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPEFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yLCBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2Ny
aXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmds
ZUdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIEJ1ZmZlciog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4QnVm
ZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVy
KiB2ZXJ0ZXhCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhCdWZmZXJPZmZzZXQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFZlcnRleEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgdmVydGV4QnVmZmVy
T2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmVydGV4U3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRW
ZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlkZSk7CisKKyAgICBjbGFzcyBCdWZm
ZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmRleEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZm
ZXIqIGluZGV4QnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhCdWZmZXJPZmZzZXQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEluZGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9m
ZnNldCk7CisKKyAgICBNVEw6OkluZGV4VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4VHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhU
eXBlKE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWFuZ2xlQ291bnQo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRlZ2VyIHRyaWFuZ2xl
Q291bnQpOworCisgICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVH
ZW9tZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitjbGFzcyBBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29w
eWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciwg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJl
Qm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFz
cyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvdW5kaW5nQm94QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCb3VuZGluZ0Jv
eEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJvdW5kaW5nQm94QnVmZmVyKTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm91bmRpbmdCb3hCdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJv
dW5kaW5nQm94QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveEJ1ZmZlck9mZnNl
dCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94U3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRCb3VuZGluZ0JveFN0cmlkZShOUzo6VUludGVnZXIgYm91bmRpbmdCb3hTdHJpZGUpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib3VuZGluZ0JveENvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRC
b3VuZGluZ0JveENvdW50KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveENvdW50KTsKKworICAgIHN0
YXRpYyBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlw
dG9yKiAgZGVzY3JpcHRvcigpOworfTsKKworY2xhc3MgTW90aW9uS2V5ZnJhbWVEYXRhIDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxNb3Rpb25LZXlmcmFtZURhdGE+Cit7CitwdWJsaWM6CisgICAg
c3RhdGljIGNsYXNzIE1vdGlvbktleWZyYW1lRGF0YSogYWxsb2MoKTsKKworICAgIGNsYXNzIE1v
dGlvbktleWZyYW1lRGF0YSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAg
ICAgICAgICAgICAgICAgIGJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlcik7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBvZmZzZXQoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPZmZzZXQoTlM6OlVJbnRlZ2VyIG9m
ZnNldCk7CisKKyAgICBzdGF0aWMgTVRMOjpNb3Rpb25LZXlmcmFtZURhdGEqICBkYXRhKCk7Cit9
OworCitjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVz
Y3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25U
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9t
ZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiBhbGxvYygpOworCisg
ICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2Ny
aXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEJ1ZmZlcnMoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiB2
ZXJ0ZXhCdWZmZXJzKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4U3RyaWRlKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRWZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlkZSk7
CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRJbmRleEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyKTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhCdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElu
ZGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCk7CisKKyAgICBN
VEw6OkluZGV4VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4VHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhUeXBl
KE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWFuZ2xlQ291
bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRlZ2Vy
IHRyaWFuZ2xlQ291bnQpOworCisgICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
TW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitj
bGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3Jp
cHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3Vu
ZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9t
ZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBhbGxvYygpOwor
CisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRy
eURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5n
Qm94QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hCdWZm
ZXJzKGNvbnN0IE5TOjpBcnJheSogYm91bmRpbmdCb3hCdWZmZXJzKTsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm91bmRpbmdCb3hTdHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJv
dW5kaW5nQm94U3RyaWRlKE5TOjpVSW50ZWdlciBib3VuZGluZ0JveFN0cmlkZSk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvdW5kaW5nQm94Q291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEJvdW5kaW5nQm94Q291bnQoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94Q291bnQpOworCisg
ICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9t
ZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitzdHJ1Y3QgQWNjZWxlcmF0aW9u
U3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yCit7CisgICAgTVRMOjpQYWNrZWRGbG9hdDR4MyAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXg7CisgICAgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlvbnMgb3B0aW9uczsKKyAgICB1aW50MzJfdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrOworICAgIHVpbnQzMl90ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZz
ZXQ7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZWxl
cmF0aW9uU3RydWN0dXJlSW5kZXg7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgQWNjZWxlcmF0
aW9uU3RydWN0dXJlVXNlcklESW5zdGFuY2VEZXNjcmlwdG9yCit7CisgICAgTVRMOjpQYWNrZWRG
bG9hdDR4MyAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXg7CisgICAg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlvbnMgb3B0aW9uczsKKyAgICB1
aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrOworICAgIHVpbnQz
Ml90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVPZmZzZXQ7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWNjZWxlcmF0aW9uU3RydWN0dXJlSW5kZXg7CisgICAgdWludDMyX3QgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXNlcklEOworfSBfTVRMX1BBQ0tFRDsKKworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlw
ZSkgeworICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGVEZWZh
dWx0ID0gMCwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBl
VXNlcklEID0gMSwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JU
eXBlTW90aW9uID0gMiwKK307CisKK3N0cnVjdCBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25J
bnN0YW5jZURlc2NyaXB0b3IKK3sKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3Rh
bmNlT3B0aW9ucyBvcHRpb25zOworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hc2s7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldDsKKyAgICB1aW50MzJfdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbmRleDsK
KyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySUQ7Cisg
ICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW90aW9uVHJhbnNm
b3Jtc1N0YXJ0SW5kZXg7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbW90aW9uVHJhbnNmb3Jtc0NvdW50OworICAgIE1UTDo6TW90aW9uQm9yZGVyTW9kZSAg
ICAgICAgICAgICAgICAgICAgIG1vdGlvblN0YXJ0Qm9yZGVyTW9kZTsKKyAgICBNVEw6Ok1vdGlv
bkJvcmRlck1vZGUgICAgICAgICAgICAgICAgICAgICBtb3Rpb25FbmRCb3JkZXJNb2RlOworICAg
IGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvblN0YXJ0VGlt
ZTsKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25F
bmRUaW1lOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEluc3RhbmNlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9y
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbnN0YW5jZUFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBCdWZmZXIq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZURlc2NyaXB0
b3JCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIoY29uc3QgY2xh
c3MgQnVmZmVyKiBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VEZXNjcmlw
dG9yQnVmZmVyT2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zm
c2V0KE5TOjpVSW50ZWdlciBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQpOworCisgICAg
TlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5z
dGFuY2VEZXNjcmlwdG9yU3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VEZXNjcmlwdG9yU3Ry
aWRlKE5TOjpVSW50ZWdlciBpbnN0YW5jZURlc2NyaXB0b3JTdHJpZGUpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VD
b3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEluc3RhbmNlQ291bnQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291
bnQpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcygpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElu
c3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMoY29uc3QgTlM6OkFycmF5KiBpbnN0YW5jZWRB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVzKTsKKworICAgIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
SW5zdGFuY2VEZXNjcmlwdG9yVHlwZSAgICAgIGluc3RhbmNlRGVzY3JpcHRvclR5cGUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRJbnN0YW5jZURlc2NyaXB0b3JUeXBlKE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
SW5zdGFuY2VEZXNjcmlwdG9yVHlwZSBpbnN0YW5jZURlc2NyaXB0b3JUeXBlKTsKKworICAgIGNs
YXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlv
blRyYW5zZm9ybUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlcihjb25z
dCBjbGFzcyBCdWZmZXIqIG1vdGlvblRyYW5zZm9ybUJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25UcmFuc2Zv
cm1CdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQo
TlM6OlVJbnRlZ2VyIG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25UcmFu
c2Zvcm1Db3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblRyYW5zZm9ybUNvdW50KE5TOjpVSW50ZWdl
ciBtb3Rpb25UcmFuc2Zvcm1Db3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpJbnN0YW5jZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitjbGFzcyBB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFjY2VsZXJhdGlv
blN0cnVjdHVyZSwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgTlM6OlVJbnRlZ2VyIHNpemUo
KSBjb25zdDsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NM
UyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4o
KTsKK30KKworLy8gcHJvcGVydHk6IHVzYWdlCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZVVzYWdlIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6dXNh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlVXNhZ2U+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNhZ2UpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6
OnNldFVzYWdlKE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2UgdXNhZ2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFVzYWdl
XyksIHVzYWdlKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0OjphbGxvYzxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3Jp
cHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yPigpOwor
fQorCisvLyBwcm9wZXJ0eTogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldAorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNj
cmlwdG9yOjppbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0KE5TOjpVSW50ZWdlciBpbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0Xyks
IGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogb3Bh
cXVlCitfTVRMX0lOTElORSBib29sIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlE
ZXNjcmlwdG9yOjpvcGFxdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3BhcXVlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OnNl
dE9wYXF1ZShib29sIG9wYXF1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3BhcXVlXyksIG9wYXF1ZSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbgorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6
YWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24oKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24pKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6c2V0QWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24oYm9v
bCBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbikKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWxsb3dE
dXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb25fKSwgYWxsb3dEdXBsaWNhdGVJ
bnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24pOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwK
K19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0
cnlEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVs
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UHJpbWl0
aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpQcmltaXRpdmVBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4o
X01UTF9QUklWQVRFX0NMUyhNVExQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlw
dG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpQcmltaXRpdmVB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4oKTsKK30K
KworLy8gcHJvcGVydHk6IGdlb21ldHJ5RGVzY3JpcHRvcnMKK19NVExfSU5MSU5FIE5TOjpBcnJh
eSogTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpnZW9tZXRy
eURlc2NyaXB0b3JzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdlb21ldHJ5RGVzY3JpcHRvcnMpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3I6OnNldEdlb21ldHJ5RGVzY3JpcHRvcnMoY29uc3QgTlM6OkFycmF5KiBnZW9t
ZXRyeURlc2NyaXB0b3JzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRHZW9tZXRyeURlc2NyaXB0b3JzXyksIGdlb21ldHJ5RGVzY3Jp
cHRvcnMpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uU3RhcnRCb3JkZXJNb2RlCitfTVRMX0lO
TElORSBNVEw6Ok1vdGlvbkJvcmRlck1vZGUgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25TdGFydEJvcmRlck1vZGUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TW90aW9uQm9yZGVyTW9kZT4odGhpcywgX01U
TF9QUklWQVRFX1NFTChtb3Rpb25TdGFydEJvcmRlck1vZGUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1v
dGlvblN0YXJ0Qm9yZGVyTW9kZShNVEw6Ok1vdGlvbkJvcmRlck1vZGUgbW90aW9uU3RhcnRCb3Jk
ZXJNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRNb3Rpb25TdGFydEJvcmRlck1vZGVfKSwgbW90aW9uU3RhcnRCb3JkZXJNb2Rl
KTsKK30KKworLy8gcHJvcGVydHk6IG1vdGlvbkVuZEJvcmRlck1vZGUKK19NVExfSU5MSU5FIE1U
TDo6TW90aW9uQm9yZGVyTW9kZSBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3I6Om1vdGlvbkVuZEJvcmRlck1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6TW90aW9uQm9yZGVyTW9kZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtb3Rpb25FbmRCb3JkZXJNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQ
cmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25FbmRCb3Jk
ZXJNb2RlKE1UTDo6TW90aW9uQm9yZGVyTW9kZSBtb3Rpb25FbmRCb3JkZXJNb2RlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNb3Rp
b25FbmRCb3JkZXJNb2RlXyksIG1vdGlvbkVuZEJvcmRlck1vZGUpOworfQorCisvLyBwcm9wZXJ0
eTogbW90aW9uU3RhcnRUaW1lCitfTVRMX0lOTElORSBmbG9hdCBNVEw6OlByaW1pdGl2ZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvblN0YXJ0VGltZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobW90aW9uU3RhcnRUaW1lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQcmltaXRp
dmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25TdGFydFRpbWUoZmxv
YXQgbW90aW9uU3RhcnRUaW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRNb3Rpb25TdGFydFRpbWVfKSwgbW90aW9uU3RhcnRUaW1l
KTsKK30KKworLy8gcHJvcGVydHk6IG1vdGlvbkVuZFRpbWUKK19NVExfSU5MSU5FIGZsb2F0IE1U
TDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uRW5kVGlt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobW90aW9uRW5kVGltZSkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9u
RW5kVGltZShmbG9hdCBtb3Rpb25FbmRUaW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNb3Rpb25FbmRUaW1lXyksIG1vdGlvbkVu
ZFRpbWUpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uS2V5ZnJhbWVDb3VudAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3Jp
cHRvcjo6bW90aW9uS2V5ZnJhbWVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvbktl
eWZyYW1lQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1vdGlvbktleWZyYW1lQ291bnQoTlM6OlVJ
bnRlZ2VyIG1vdGlvbktleWZyYW1lQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvbktleWZyYW1lQ291bnRfKSwgbW90
aW9uS2V5ZnJhbWVDb3VudCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19N
VExfSU5MSU5FIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciog
TVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpkZXNjcmlwdG9y
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlByaW1pdGl2ZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFByaW1pdGl2
ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGRlc2Ny
aXB0b3IpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVU
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9t
ZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRy
eURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiB2ZXJ0ZXhCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0ZXhC
dWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVm
ZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZmZXIpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjpzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIHZlcnRleEJ1ZmZlcikK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0VmVydGV4QnVmZmVyXyksIHZlcnRleEJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0
ZXhCdWZmZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0ZXhCdWZmZXJPZmZzZXQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjpzZXRWZXJ0ZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIHZlcnRleEJ1ZmZlck9m
ZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VmVydGV4QnVmZmVyT2Zmc2V0XyksIHZlcnRleEJ1ZmZlck9mZnNldCk7Cit9CisK
Ky8vIHByb3BlcnR5OiB2ZXJ0ZXhTdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0ZXhT
dHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhTdHJpZGUpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjpzZXRWZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlkZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVy
dGV4U3RyaWRlXyksIHZlcnRleFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleEJ1ZmZl
cgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluZGV4QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoaW5kZXhCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJbmRleEJ1ZmZlcihjb25z
dCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGV4QnVmZmVyXyksIGluZGV4QnVmZmVy
KTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4QnVmZmVyT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6aW5kZXhCdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleEJ1ZmZl
ck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldEluZGV4QnVmZmVyT2Zmc2V0KE5TOjpV
SW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhCdWZmZXJPZmZzZXRfKSwgaW5kZXhC
dWZmZXJPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhUeXBlCitfTVRMX0lOTElORSBN
VEw6OkluZGV4VHlwZSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlE
ZXNjcmlwdG9yOjppbmRleFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6SW5kZXhUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4VHlwZSkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5n
bGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldEluZGV4VHlwZShNVEw6OkluZGV4VHlwZSBpbmRleFR5
cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEluZGV4VHlwZV8pLCBpbmRleFR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogdHJpYW5n
bGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnRyaWFuZ2xlQ291bnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh0cmlhbmdsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VHJpYW5n
bGVDb3VudChOUzo6VUludGVnZXIgdHJpYW5nbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHJpYW5nbGVDb3VudF8pLCB0
cmlhbmdsZUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgorX01UTF9J
TkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
ciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6
ZGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcio+KF9NVExfUFJJVkFU
RV9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3Ip
LCBfTVRMX1BSSVZBVEVfU0VMKGRlc2NyaXB0b3IpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hH
ZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hH
ZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRv
cj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdl
b21ldHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiBib3VuZGluZ0JveEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94
QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1
ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hCdWZmZXIpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciog
Ym91bmRpbmdCb3hCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyXyksIGJvdW5kaW5nQm94QnVm
ZmVyKTsKK30KKworLy8gcHJvcGVydHk6IGJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0CitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdl
b21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hCdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChib3VuZGluZ0JveEJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6
OnNldEJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveEJ1ZmZl
ck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXRfKSwgYm91bmRpbmdCb3hCdWZmZXJP
ZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hTdHJpZGUKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yOjpib3VuZGluZ0JveFN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJv
dW5kaW5nQm94U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91bmRpbmdCb3hT
dHJpZGUoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94U3RyaWRlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3VuZGluZ0JveFN0cmlk
ZV8pLCBib3VuZGluZ0JveFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBib3VuZGluZ0JveENv
dW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVC
b3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hDb3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGJvdW5kaW5nQm94Q291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjpz
ZXRCb3VuZGluZ0JveENvdW50KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveENvdW50KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3Vu
ZGluZ0JveENvdW50XyksIGJvdW5kaW5nQm94Q291bnQpOworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5k
aW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5k
aW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3Jp
cHRvcikpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpN
b3Rpb25LZXlmcmFtZURhdGEqIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTE1vdGlvbktleWZyYW1lRGF0YSkpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhKiBNVEw6Ok1vdGlvbktleWZy
YW1lRGF0YTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpNb3Rp
b25LZXlmcmFtZURhdGE+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXIKK19NVExfSU5MSU5F
IE1UTDo6QnVmZmVyKiBNVEw6Ok1vdGlvbktleWZyYW1lRGF0YTo6YnVmZmVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpNb3Rpb25L
ZXlmcmFtZURhdGE6OnNldEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZm
ZXJfKSwgYnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IG9mZnNldAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjpvZmZzZXQoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChvZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Ok1vdGlvbktleWZy
YW1lRGF0YTo6c2V0T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9mZnNldF8pLCBvZmZz
ZXQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBkYXRhCitfTVRMX0lOTElORSBNVEw6Ok1vdGlv
bktleWZyYW1lRGF0YSogTVRMOjpNb3Rpb25LZXlmcmFtZURhdGE6OmRhdGEoKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhKj4oX01UTF9Q
UklWQVRFX0NMUyhNVExNb3Rpb25LZXlmcmFtZURhdGEpLCBfTVRMX1BSSVZBVEVfU0VMKGRhdGEp
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhN
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcikp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9u
VHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhC
dWZmZXJzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
TW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnZlcnRleEJ1ZmZlcnMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodmVydGV4QnVmZmVycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNl
dFZlcnRleEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiB2ZXJ0ZXhCdWZmZXJzKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhC
dWZmZXJzXyksIHZlcnRleEJ1ZmZlcnMpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4U3RyaWRl
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rp
b25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6dmVydGV4U3RyaWRlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodmVydGV4U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VmVy
dGV4U3RyaWRlKE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFN0cmlkZV8pLCB2
ZXJ0ZXhTdHJpZGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhCdWZmZXIKK19NVExfSU5MSU5F
IE1UTDo6QnVmZmVyKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2Vv
bWV0cnlEZXNjcmlwdG9yOjppbmRleEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4
QnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0SW5kZXhCdWZmZXIoY29uc3Qg
TVRMOjpCdWZmZXIqIGluZGV4QnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleEJ1ZmZlcl8pLCBpbmRleEJ1ZmZlcik7
Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleEJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3I6OmluZGV4QnVmZmVyT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXhC
dWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJbmRleEJ1ZmZlck9m
ZnNldChOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGV4QnVmZmVyT2Zmc2V0
XyksIGluZGV4QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4VHlwZQorX01U
TF9JTkxJTkUgTVRMOjpJbmRleFR5cGUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25U
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5kZXhUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGV4VHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTChpbmRleFR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJbmRleFR5cGUo
TVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleFR5cGVfKSwgaW5kZXhUeXBlKTsKK30K
KworLy8gcHJvcGVydHk6IHRyaWFuZ2xlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9y
Ojp0cmlhbmdsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHJpYW5nbGVDb3VudCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRlZ2VyIHRy
aWFuZ2xlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFRyaWFuZ2xlQ291bnRfKSwgdHJpYW5nbGVDb3VudCk7Cit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmRlc2NyaXB0b3Io
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9y
KSwgX01UTF9QUklWQVRFX1NFTChkZXNjcmlwdG9yKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5k
aW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlv
bkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdC
b3hHZW9tZXRyeURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJv
dW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1v
dGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6aW5pdDxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5n
Qm94R2VvbWV0cnlEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hC
dWZmZXJzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
TW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94QnVmZmVycygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChib3VuZGluZ0JveEJ1ZmZlcnMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiBib3Vu
ZGluZ0JveEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyc18pLCBib3VuZGluZ0JveEJ1ZmZl
cnMpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hTdHJpZGUKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yOjpib3VuZGluZ0JveFN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGJvdW5kaW5nQm94U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91
bmRpbmdCb3hTdHJpZGUoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94U3RyaWRlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3VuZGlu
Z0JveFN0cmlkZV8pLCBib3VuZGluZ0JveFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBib3Vu
ZGluZ0JveENvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hD
b3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJvdW5kaW5nQm94Q291bnQpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94
R2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveENvdW50KE5TOjpVSW50ZWdlciBib3Vu
ZGluZ0JveENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRCb3VuZGluZ0JveENvdW50XyksIGJvdW5kaW5nQm94Q291bnQpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9y
OjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKj4o
X01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0Jv
eEdlb21ldHJ5RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3JpcHRvcikpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpJbnN0YW5jZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTEluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcikpOworfQor
CisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yKiBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpJbnN0
YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6
Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5zdGFuY2VEZXNjcmlw
dG9yQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVy
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3I6OnNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcihjb25zdCBNVEw6OkJ1
ZmZlciogaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZm
ZXJfKSwgaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IGluc3Rh
bmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbnN0YW5jZURlc2NyaXB0
b3JCdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnN0YW5jZURlc2NyaXB0b3JC
dWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxl
cmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zm
c2V0KE5TOjpVSW50ZWdlciBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3Rh
bmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldF8pLCBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZz
ZXQpOworfQorCisvLyBwcm9wZXJ0eTogaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlCitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2Ny
aXB0b3I6Omluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlu
c3RhbmNlRGVzY3JpcHRvclN0cmlkZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5z
dGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRJbnN0YW5jZURlc2NyaXB0
b3JTdHJpZGUoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5zdGFu
Y2VEZXNjcmlwdG9yU3RyaWRlXyksIGluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpbnN0YW5jZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJ
bnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Omluc3RhbmNlQ291bnQoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChpbnN0YW5jZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldEluc3Rh
bmNlQ291bnQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlQ291bnRfKSwg
aW5zdGFuY2VDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnN0YW5jZWRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6c2V0SW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcyhjb25zdCBOUzo6QXJy
YXkqIGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlZEFjY2VsZXJh
dGlvblN0cnVjdHVyZXNfKSwgaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcyk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpbnN0YW5jZURlc2NyaXB0b3JUeXBlCitfTVRMX0lOTElORSBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGUgTVRMOjpJbnN0YW5jZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Omluc3RhbmNlRGVzY3JpcHRvclR5cGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
bnN0YW5jZURlc2NyaXB0b3JUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnN0
YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldEluc3RhbmNlRGVzY3JpcHRv
clR5cGUoTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlIGlu
c3RhbmNlRGVzY3JpcHRvclR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvclR5cGVfKSwgaW5zdGFu
Y2VEZXNjcmlwdG9yVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25UcmFuc2Zvcm1CdWZm
ZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uVHJhbnNmb3JtQnVmZmVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobW90aW9uVHJhbnNmb3JtQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1vdGlvblRyYW5z
Zm9ybUJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogbW90aW9uVHJhbnNmb3JtQnVmZmVyKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRN
b3Rpb25UcmFuc2Zvcm1CdWZmZXJfKSwgbW90aW9uVHJhbnNmb3JtQnVmZmVyKTsKK30KKworLy8g
cHJvcGVydHk6IG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rp
b25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25UcmFu
c2Zvcm1CdWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNl
QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9uVHJhbnNmb3JtQnVmZmVy
T2Zmc2V0KE5TOjpVSW50ZWdlciBtb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlv
blRyYW5zZm9ybUJ1ZmZlck9mZnNldF8pLCBtb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQpOwor
fQorCisvLyBwcm9wZXJ0eTogbW90aW9uVHJhbnNmb3JtQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90
aW9uVHJhbnNmb3JtQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25UcmFuc2Zvcm1D
b3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25UcmFuc2Zvcm1Db3VudChOUzo6VUludGVnZXIg
bW90aW9uVHJhbnNmb3JtQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvblRyYW5zZm9ybUNvdW50XyksIG1vdGlvblRy
YW5zZm9ybUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgorX01UTF9J
TkxJTkUgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6
SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMSW5zdGFuY2VBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChkZXNjcmlwdG9yKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBzaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmU6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzaXplKSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNv
ZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wZmY0YzljOGJkMWVkNDI4YTQzZjdlZjJlMTZjNjkyOGMxNTQ5
Y2MzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcApAQCAtMCwwICsx
LDE0NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNs
dWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHA+CisKKyNpbmNsdWRlICJNVExBcmd1bWVudC5ocHAiCisjaW5jbHVkZSAiTVRMQ29tbWFuZEVu
Y29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTEhlYXAuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNl
LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29t
bWFuZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFjY2VsZXJhdGlvblN0cnVjdHVy
ZUNvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rlcj4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIGJ1
aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVy
ZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBjbGFzcyBCdWZmZXIqIHNjcmF0Y2hCdWZm
ZXIsIE5TOjpVSW50ZWdlciBzY3JhdGNoQnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgcmVmaXRB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBz
b3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEJ1ZmZl
ciogc2NyYXRjaEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNjcmF0Y2hCdWZmZXJPZmZzZXQpOworCisg
ICAgdm9pZCBjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZSogc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBjbGFzcyBBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUqIGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0dXJlKTsKKwor
ICAgIHZvaWQgd3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplKGNvbnN0IGNs
YXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBj
bGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCk7CisKKyAgICB2b2lkIHdy
aXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZShjb25zdCBjbGFzcyBBY2NlbGVy
YXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgY2xhc3MgQnVmZmVy
KiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE1UTDo6RGF0YVR5cGUgc2l6ZURhdGFUeXBl
KTsKKworICAgIHZvaWQgY29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3Qg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRp
b25TdHJ1Y3R1cmUpOworCisgICAgdm9pZCB1cGRhdGVGZW5jZShjb25zdCBjbGFzcyBGZW5jZSog
ZmVuY2UpOworCisgICAgdm9pZCB3YWl0Rm9yRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNl
KTsKKworICAgIHZvaWQgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3VyY2UqIHJlc291cmNl
LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCB1c2VSZXNvdXJjZXMoTVRM
OjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZXNvdXJj
ZVVzYWdlIHVzYWdlKTsKKworICAgIHZvaWQgdXNlSGVhcChjb25zdCBjbGFzcyBIZWFwKiBoZWFw
KTsKKworICAgIHZvaWQgdXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIg
Y291bnQpOworCisgICAgdm9pZCBzYW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IGNsYXNzIENv
dW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUluZGV4
LCBib29sIGJhcnJpZXIpOworfTsKKworfQorCisvLyBtZXRob2Q6IGJ1aWxkQWNjZWxlcmF0aW9u
U3RydWN0dXJlOmRlc2NyaXB0b3I6c2NyYXRjaEJ1ZmZlcjpzY3JhdGNoQnVmZmVyT2Zmc2V0Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVy
OjpidWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IE1UTDo6QnVmZmVyKiBzY3JhdGNoQnVm
ZmVyLCBOUzo6VUludGVnZXIgc2NyYXRjaEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVpbGRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVfZGVzY3JpcHRvcl9zY3JhdGNoQnVmZmVyX3NjcmF0Y2hCdWZmZXJPZmZzZXRfKSwg
YWNjZWxlcmF0aW9uU3RydWN0dXJlLCBkZXNjcmlwdG9yLCBzY3JhdGNoQnVmZmVyLCBzY3JhdGNo
QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiByZWZpdEFjY2VsZXJhdGlvblN0cnVjdHVy
ZTpkZXNjcmlwdG9yOmRlc3RpbmF0aW9uOnNjcmF0Y2hCdWZmZXI6c2NyYXRjaEJ1ZmZlck9mZnNl
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5j
b2Rlcjo6cmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1U
TDo6QnVmZmVyKiBzY3JhdGNoQnVmZmVyLCBOUzo6VUludGVnZXIgc2NyYXRjaEJ1ZmZlck9mZnNl
dCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfZGVzY3JpcHRvcl9kZXN0aW5hdGlvbl9zY3Jh
dGNoQnVmZmVyX3NjcmF0Y2hCdWZmZXJPZmZzZXRfKSwgc291cmNlQWNjZWxlcmF0aW9uU3RydWN0
dXJlLCBkZXNjcmlwdG9yLCBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSwgc2NyYXRj
aEJ1ZmZlciwgc2NyYXRjaEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogY29weUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZTp0b0FjY2VsZXJhdGlvblN0cnVjdHVyZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6Y29weUFjY2VsZXJh
dGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogc291cmNlQWNj
ZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogZGVz
dGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmVf
dG9BY2NlbGVyYXRpb25TdHJ1Y3R1cmVfKSwgc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBk
ZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSk7Cit9CisKKy8vIG1ldGhvZDogd3JpdGVD
b21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6d3Jp
dGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplKGNvbnN0IE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1UTDo6QnVmZmVyKiBi
dWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlU2l6ZV90b0J1ZmZlcl9vZmZzZXRfKSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBidWZm
ZXIsIG9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogd3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDpzaXplRGF0YVR5cGU6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OndyaXRlQ29tcGFj
dGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBO
Uzo6VUludGVnZXIgb2Zmc2V0LCBNVEw6OkRhdGFUeXBlIHNpemVEYXRhVHlwZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod3JpdGVDb21w
YWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplX3RvQnVmZmVyX29mZnNldF9zaXplRGF0YVR5
cGVfKSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBidWZmZXIsIG9mZnNldCwgc2l6ZURhdGFUeXBl
KTsKK30KKworLy8gbWV0aG9kOiBjb3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlvblN0cnVjdHVyZTp0
b0FjY2VsZXJhdGlvblN0cnVjdHVyZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6Y29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25TdHJ1
Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJhdGlv
blN0cnVjdHVyZSwgY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGRlc3RpbmF0aW9u
QWNjZWxlcmF0aW9uU3RydWN0dXJlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlvblN0cnVjdHVy
ZV90b0FjY2VsZXJhdGlvblN0cnVjdHVyZV8pLCBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0dXJlKTsKK30KKworLy8gbWV0aG9kOiB1cGRh
dGVGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21t
YW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVwZGF0ZUZl
bmNlXyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB3YWl0Rm9yRmVuY2U6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OndhaXRGb3JG
ZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2FpdEZvckZlbmNlXyksIGZlbmNlKTsKK30K
KworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZTp1c2FnZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3VyY2UoY29uc3QgTVRM
OjpSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVzb3Vy
Y2VfdXNhZ2VfKSwgcmVzb3VyY2UsIHVzYWdlKTsKK30KKworLy8gbWV0aG9kOiB1c2VSZXNvdXJj
ZXM6Y291bnQ6dXNhZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNb
XSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJlc291
cmNlc19jb3VudF91c2FnZV8pLCByZXNvdXJjZXMsIGNvdW50LCB1c2FnZSk7Cit9CisKKy8vIG1l
dGhvZDogdXNlSGVhcDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcChjb25zdCBNVEw6OkhlYXAqIGhlYXApCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBf
KSwgaGVhcCk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcHM6Y291bnQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OnVzZUhlYXBzKE1U
TDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwc19jb3VudF8pLCBo
ZWFwcywgY291bnQpOworfQorCisvLyBtZXRob2Q6IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRT
YW1wbGVJbmRleDp3aXRoQmFycmllcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6c2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBN
VEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBs
ZUluZGV4LCBib29sIGJhcnJpZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50ZXJzSW5CdWZmZXJfYXRTYW1wbGVJbmRl
eF93aXRoQmFycmllcl8pLCBzYW1wbGVCdWZmZXIsIHNhbXBsZUluZGV4LCBiYXJyaWVyKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJl
NzY3ZGM5MTVjYzFiYjkwYzQxOGFiNDA3ODAyYjUwZDljMTU3YjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlVHlwZXMuaHBwCkBAIC0wLDAgKzEsMTY5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVUeXBlcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdt
YSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisj
aW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRPdXRwdXRE
ZXNjcmlwdG9yLmhwcCIKKworI2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHAiCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3Bh
Y2UgTVRMCit7CitzdHJ1Y3QgUGFja2VkRmxvYXQzCit7CisgICAgUGFja2VkRmxvYXQzKCk7Cisg
ICAgUGFja2VkRmxvYXQzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOworCisgICAgZmxvYXQm
IG9wZXJhdG9yW10oaW50IGlkeCk7CisgICAgZmxvYXQgIG9wZXJhdG9yW10oaW50IGlkeCkgY29u
c3Q7CisKKyAgICB1bmlvbgorICAgIHsKKyAgICAgICAgc3RydWN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZsb2F0IHg7CisgICAgICAgICAgICBmbG9hdCB5OworICAgICAgICAgICAgZmxvYXQg
ejsKKyAgICAgICAgfTsKKworICAgICAgICBmbG9hdCBlbGVtZW50c1szXTsKKyAgICB9OworfSBf
TVRMX1BBQ0tFRDsKKworc3RydWN0IFBhY2tlZEZsb2F0NHgzCit7CisgICAgUGFja2VkRmxvYXQ0
eDMoKTsKKyAgICBQYWNrZWRGbG9hdDR4Myhjb25zdCBQYWNrZWRGbG9hdDMmIGNvbDAsIGNvbnN0
IFBhY2tlZEZsb2F0MyYgY29sMSwgY29uc3QgUGFja2VkRmxvYXQzJiBjb2wyLCBjb25zdCBQYWNr
ZWRGbG9hdDMmIGNvbDMpOworCisgICAgUGFja2VkRmxvYXQzJiAgICAgICBvcGVyYXRvcltdKGlu
dCBpZHgpOworICAgIGNvbnN0IFBhY2tlZEZsb2F0MyYgb3BlcmF0b3JbXShpbnQgaWR4KSBjb25z
dDsKKworICAgIFBhY2tlZEZsb2F0MyAgICAgICAgY29sdW1uc1s0XTsKK30gX01UTF9QQUNLRUQ7
CisKK3N0cnVjdCBBeGlzQWxpZ25lZEJvdW5kaW5nQm94Cit7CisgICAgQXhpc0FsaWduZWRCb3Vu
ZGluZ0JveCgpOworICAgIEF4aXNBbGlnbmVkQm91bmRpbmdCb3goUGFja2VkRmxvYXQzIHApOwor
ICAgIEF4aXNBbGlnbmVkQm91bmRpbmdCb3goUGFja2VkRmxvYXQzIG1pbiwgUGFja2VkRmxvYXQz
IG1heCk7CisKKyAgICBQYWNrZWRGbG9hdDMgbWluOworICAgIFBhY2tlZEZsb2F0MyBtYXg7Cit9
IF9NVExfUEFDS0VEOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpQYWNrZWRGbG9hdDM6OlBhY2tlZEZsb2F0Mygp
CisgICAgOiB4KDAuMGYpCisgICAgLCB5KDAuMGYpCisgICAgLCB6KDAuMGYpCit7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElO
RSBNVEw6OlBhY2tlZEZsb2F0Mzo6UGFja2VkRmxvYXQzKGZsb2F0IF94LCBmbG9hdCBfeSwgZmxv
YXQgX3opCisgICAgOiB4KF94KQorICAgICwgeShfeSkKKyAgICAsIHooX3opCit7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElO
RSBmbG9hdCYgTVRMOjpQYWNrZWRGbG9hdDM6Om9wZXJhdG9yW10oaW50IGlkeCkKK3sKKyAgICBy
ZXR1cm4gZWxlbWVudHNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIGZsb2F0IE1UTDo6UGFja2VkRmxvYXQzOjpv
cGVyYXRvcltdKGludCBpZHgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVsZW1lbnRzW2lkeF07Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRM
X0lOTElORSBNVEw6OlBhY2tlZEZsb2F0NHgzOjpQYWNrZWRGbG9hdDR4MygpCit7CisgICAgY29s
dW1uc1swXSA9IFBhY2tlZEZsb2F0MygwLjBmLCAwLjBmLCAwLjBmKTsKKyAgICBjb2x1bW5zWzFd
ID0gUGFja2VkRmxvYXQzKDAuMGYsIDAuMGYsIDAuMGYpOworICAgIGNvbHVtbnNbMl0gPSBQYWNr
ZWRGbG9hdDMoMC4wZiwgMC4wZiwgMC4wZik7CisgICAgY29sdW1uc1szXSA9IFBhY2tlZEZsb2F0
MygwLjBmLCAwLjBmLCAwLjBmKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6UGFja2VkRmxvYXQ0eDM6OlBhY2tl
ZEZsb2F0NHgzKGNvbnN0IFBhY2tlZEZsb2F0MyYgY29sMCwgY29uc3QgUGFja2VkRmxvYXQzJiBj
b2wxLCBjb25zdCBQYWNrZWRGbG9hdDMmIGNvbDIsIGNvbnN0IFBhY2tlZEZsb2F0MyYgY29sMykK
K3sKKyAgICBjb2x1bW5zWzBdID0gY29sMDsKKyAgICBjb2x1bW5zWzFdID0gY29sMTsKKyAgICBj
b2x1bW5zWzJdID0gY29sMjsKKyAgICBjb2x1bW5zWzNdID0gY29sMzsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6
UGFja2VkRmxvYXQzJiBNVEw6OlBhY2tlZEZsb2F0NHgzOjpvcGVyYXRvcltdKGludCBpZHgpCit7
CisgICAgcmV0dXJuIGNvbHVtbnNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIGNvbnN0IE1UTDo6UGFja2VkRmxv
YXQzJiBNVEw6OlBhY2tlZEZsb2F0NHgzOjpvcGVyYXRvcltdKGludCBpZHgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNvbHVtbnNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6QXhpc0FsaWduZWRCb3VuZGlu
Z0JveDo6QXhpc0FsaWduZWRCb3VuZGluZ0JveCgpCisgICAgOiBtaW4oSU5GSU5JVFksIElORklO
SVRZLCBJTkZJTklUWSkKKyAgICAsIG1heCgtSU5GSU5JVFksIC1JTkZJTklUWSwgLUlORklOSVRZ
KQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX01UTF9JTkxJTkUgTVRMOjpBeGlzQWxpZ25lZEJvdW5kaW5nQm94OjpBeGlzQWxpZ25lZEJv
dW5kaW5nQm94KFBhY2tlZEZsb2F0MyBwKQorICAgIDogbWluKHApCisgICAgLCBtYXgocCkKK3sK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19N
VExfSU5MSU5FIE1UTDo6QXhpc0FsaWduZWRCb3VuZGluZ0JveDo6QXhpc0FsaWduZWRCb3VuZGlu
Z0JveChQYWNrZWRGbG9hdDMgX21pbiwgUGFja2VkRmxvYXQzIF9tYXgpCisgICAgOiBtaW4oX21p
bikKKyAgICAsIG1heChfbWF4KQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExBcmd1bWVudC5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNTdmZTA4MDI4ZTIwMDA3MzRm
MjIyZDI1ODA0YmI4MmM2YTdmY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwCkBAIC0wLDAgKzEsNjU1IEBACisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRh
bC9NVExBcmd1bWVudC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKyNp
bmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5T
OjpVSW50ZWdlciwgRGF0YVR5cGUpIHsKKyAgICBEYXRhVHlwZU5vbmUgPSAwLAorICAgIERhdGFU
eXBlU3RydWN0ID0gMSwKKyAgICBEYXRhVHlwZUFycmF5ID0gMiwKKyAgICBEYXRhVHlwZUZsb2F0
ID0gMywKKyAgICBEYXRhVHlwZUZsb2F0MiA9IDQsCisgICAgRGF0YVR5cGVGbG9hdDMgPSA1LAor
ICAgIERhdGFUeXBlRmxvYXQ0ID0gNiwKKyAgICBEYXRhVHlwZUZsb2F0MngyID0gNywKKyAgICBE
YXRhVHlwZUZsb2F0MngzID0gOCwKKyAgICBEYXRhVHlwZUZsb2F0Mng0ID0gOSwKKyAgICBEYXRh
VHlwZUZsb2F0M3gyID0gMTAsCisgICAgRGF0YVR5cGVGbG9hdDN4MyA9IDExLAorICAgIERhdGFU
eXBlRmxvYXQzeDQgPSAxMiwKKyAgICBEYXRhVHlwZUZsb2F0NHgyID0gMTMsCisgICAgRGF0YVR5
cGVGbG9hdDR4MyA9IDE0LAorICAgIERhdGFUeXBlRmxvYXQ0eDQgPSAxNSwKKyAgICBEYXRhVHlw
ZUhhbGYgPSAxNiwKKyAgICBEYXRhVHlwZUhhbGYyID0gMTcsCisgICAgRGF0YVR5cGVIYWxmMyA9
IDE4LAorICAgIERhdGFUeXBlSGFsZjQgPSAxOSwKKyAgICBEYXRhVHlwZUhhbGYyeDIgPSAyMCwK
KyAgICBEYXRhVHlwZUhhbGYyeDMgPSAyMSwKKyAgICBEYXRhVHlwZUhhbGYyeDQgPSAyMiwKKyAg
ICBEYXRhVHlwZUhhbGYzeDIgPSAyMywKKyAgICBEYXRhVHlwZUhhbGYzeDMgPSAyNCwKKyAgICBE
YXRhVHlwZUhhbGYzeDQgPSAyNSwKKyAgICBEYXRhVHlwZUhhbGY0eDIgPSAyNiwKKyAgICBEYXRh
VHlwZUhhbGY0eDMgPSAyNywKKyAgICBEYXRhVHlwZUhhbGY0eDQgPSAyOCwKKyAgICBEYXRhVHlw
ZUludCA9IDI5LAorICAgIERhdGFUeXBlSW50MiA9IDMwLAorICAgIERhdGFUeXBlSW50MyA9IDMx
LAorICAgIERhdGFUeXBlSW50NCA9IDMyLAorICAgIERhdGFUeXBlVUludCA9IDMzLAorICAgIERh
dGFUeXBlVUludDIgPSAzNCwKKyAgICBEYXRhVHlwZVVJbnQzID0gMzUsCisgICAgRGF0YVR5cGVV
SW50NCA9IDM2LAorICAgIERhdGFUeXBlU2hvcnQgPSAzNywKKyAgICBEYXRhVHlwZVNob3J0MiA9
IDM4LAorICAgIERhdGFUeXBlU2hvcnQzID0gMzksCisgICAgRGF0YVR5cGVTaG9ydDQgPSA0MCwK
KyAgICBEYXRhVHlwZVVTaG9ydCA9IDQxLAorICAgIERhdGFUeXBlVVNob3J0MiA9IDQyLAorICAg
IERhdGFUeXBlVVNob3J0MyA9IDQzLAorICAgIERhdGFUeXBlVVNob3J0NCA9IDQ0LAorICAgIERh
dGFUeXBlQ2hhciA9IDQ1LAorICAgIERhdGFUeXBlQ2hhcjIgPSA0NiwKKyAgICBEYXRhVHlwZUNo
YXIzID0gNDcsCisgICAgRGF0YVR5cGVDaGFyNCA9IDQ4LAorICAgIERhdGFUeXBlVUNoYXIgPSA0
OSwKKyAgICBEYXRhVHlwZVVDaGFyMiA9IDUwLAorICAgIERhdGFUeXBlVUNoYXIzID0gNTEsCisg
ICAgRGF0YVR5cGVVQ2hhcjQgPSA1MiwKKyAgICBEYXRhVHlwZUJvb2wgPSA1MywKKyAgICBEYXRh
VHlwZUJvb2wyID0gNTQsCisgICAgRGF0YVR5cGVCb29sMyA9IDU1LAorICAgIERhdGFUeXBlQm9v
bDQgPSA1NiwKKyAgICBEYXRhVHlwZVRleHR1cmUgPSA1OCwKKyAgICBEYXRhVHlwZVNhbXBsZXIg
PSA1OSwKKyAgICBEYXRhVHlwZVBvaW50ZXIgPSA2MCwKKyAgICBEYXRhVHlwZVI4VW5vcm0gPSA2
MiwKKyAgICBEYXRhVHlwZVI4U25vcm0gPSA2MywKKyAgICBEYXRhVHlwZVIxNlVub3JtID0gNjQs
CisgICAgRGF0YVR5cGVSMTZTbm9ybSA9IDY1LAorICAgIERhdGFUeXBlUkc4VW5vcm0gPSA2NiwK
KyAgICBEYXRhVHlwZVJHOFNub3JtID0gNjcsCisgICAgRGF0YVR5cGVSRzE2VW5vcm0gPSA2OCwK
KyAgICBEYXRhVHlwZVJHMTZTbm9ybSA9IDY5LAorICAgIERhdGFUeXBlUkdCQThVbm9ybSA9IDcw
LAorICAgIERhdGFUeXBlUkdCQThVbm9ybV9zUkdCID0gNzEsCisgICAgRGF0YVR5cGVSR0JBOFNu
b3JtID0gNzIsCisgICAgRGF0YVR5cGVSR0JBMTZVbm9ybSA9IDczLAorICAgIERhdGFUeXBlUkdC
QTE2U25vcm0gPSA3NCwKKyAgICBEYXRhVHlwZVJHQjEwQTJVbm9ybSA9IDc1LAorICAgIERhdGFU
eXBlUkcxMUIxMEZsb2F0ID0gNzYsCisgICAgRGF0YVR5cGVSR0I5RTVGbG9hdCA9IDc3LAorICAg
IERhdGFUeXBlUmVuZGVyUGlwZWxpbmUgPSA3OCwKKyAgICBEYXRhVHlwZUNvbXB1dGVQaXBlbGlu
ZSA9IDc5LAorICAgIERhdGFUeXBlSW5kaXJlY3RDb21tYW5kQnVmZmVyID0gODAsCisgICAgRGF0
YVR5cGVMb25nID0gODEsCisgICAgRGF0YVR5cGVMb25nMiA9IDgyLAorICAgIERhdGFUeXBlTG9u
ZzMgPSA4MywKKyAgICBEYXRhVHlwZUxvbmc0ID0gODQsCisgICAgRGF0YVR5cGVVTG9uZyA9IDg1
LAorICAgIERhdGFUeXBlVUxvbmcyID0gODYsCisgICAgRGF0YVR5cGVVTG9uZzMgPSA4NywKKyAg
ICBEYXRhVHlwZVVMb25nNCA9IDg4LAorICAgIERhdGFUeXBlVmlzaWJsZUZ1bmN0aW9uVGFibGUg
PSAxMTUsCisgICAgRGF0YVR5cGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlID0gMTE2LAorICAg
IERhdGFUeXBlUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlID0gMTE3LAorICAgIERhdGFU
eXBlSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUgPSAxMTgsCit9OworCitfTVRMX0VOVU0o
TlM6OlVJbnRlZ2VyLCBBcmd1bWVudFR5cGUpIHsKKyAgICBBcmd1bWVudFR5cGVCdWZmZXIgPSAw
LAorICAgIEFyZ3VtZW50VHlwZVRocmVhZGdyb3VwTWVtb3J5ID0gMSwKKyAgICBBcmd1bWVudFR5
cGVUZXh0dXJlID0gMiwKKyAgICBBcmd1bWVudFR5cGVTYW1wbGVyID0gMywKKyAgICBBcmd1bWVu
dFR5cGVJbWFnZWJsb2NrRGF0YSA9IDE2LAorICAgIEFyZ3VtZW50VHlwZUltYWdlYmxvY2sgPSAx
NywKKyAgICBBcmd1bWVudFR5cGVWaXNpYmxlRnVuY3Rpb25UYWJsZSA9IDI0LAorICAgIEFyZ3Vt
ZW50VHlwZVByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZSA9IDI1LAorICAgIEFyZ3VtZW50
VHlwZUluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlID0gMjYsCisgICAgQXJndW1lbnRUeXBl
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSA9IDI3LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50
ZWdlciwgQXJndW1lbnRBY2Nlc3MpIHsKKyAgICBBcmd1bWVudEFjY2Vzc1JlYWRPbmx5ID0gMCwK
KyAgICBBcmd1bWVudEFjY2Vzc1JlYWRXcml0ZSA9IDEsCisgICAgQXJndW1lbnRBY2Nlc3NXcml0
ZU9ubHkgPSAyLAorfTsKKworY2xhc3MgVHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8VHlw
ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVHlwZSogYWxsb2MoKTsKKworICAgIGNs
YXNzIFR5cGUqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgZGF0YVR5
cGUoKSBjb25zdDsKK307CisKK2NsYXNzIFN0cnVjdE1lbWJlciA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8U3RydWN0TWVtYmVyPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTdHJ1Y3RN
ZW1iZXIqICBhbGxvYygpOworCisgICAgY2xhc3MgU3RydWN0TWVtYmVyKiAgICAgICAgIGluaXQo
KTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgb2Zmc2V0KCkgY29uc3Q7CisKKyAgICBNVEw6
OkRhdGFUeXBlICAgICAgICAgICAgICAgZGF0YVR5cGUoKSBjb25zdDsKKworICAgIGNsYXNzIFN0
cnVjdFR5cGUqICAgICAgICAgICBzdHJ1Y3RUeXBlKCk7CisKKyAgICBjbGFzcyBBcnJheVR5cGUq
ICAgICAgICAgICAgYXJyYXlUeXBlKCk7CisKKyAgICBjbGFzcyBUZXh0dXJlUmVmZXJlbmNlVHlw
ZSogdGV4dHVyZVJlZmVyZW5jZVR5cGUoKTsKKworICAgIGNsYXNzIFBvaW50ZXJUeXBlKiAgICAg
ICAgICBwb2ludGVyVHlwZSgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGFy
Z3VtZW50SW5kZXgoKSBjb25zdDsKK307CisKK2NsYXNzIFN0cnVjdFR5cGUgOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPFN0cnVjdFR5cGUsIFR5cGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIFN0cnVjdFR5cGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBTdHJ1Y3RUeXBlKiAgICAgICAg
aW5pdCgpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgIG1lbWJlcnMoKSBjb25zdDsK
KworICAgIGNsYXNzIFN0cnVjdE1lbWJlciogICAgICBtZW1iZXJCeU5hbWUoY29uc3QgTlM6OlN0
cmluZyogbmFtZSk7Cit9OworCitjbGFzcyBBcnJheVR5cGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5j
aW5nPEFycmF5VHlwZSwgVHlwZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQXJyYXlU
eXBlKiAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIEFycmF5VHlwZSogICAgICAgICAgICBpbml0
KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgICAgICAgZWxlbWVudFR5cGUoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBhcnJheUxlbmd0aCgpIGNvbnN0
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIHN0cmlkZSgpIGNvbnN0OworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXhTdHJpZGUoKSBjb25z
dDsKKworICAgIGNsYXNzIFN0cnVjdFR5cGUqICAgICAgICAgICBlbGVtZW50U3RydWN0VHlwZSgp
OworCisgICAgY2xhc3MgQXJyYXlUeXBlKiAgICAgICAgICAgIGVsZW1lbnRBcnJheVR5cGUoKTsK
KworICAgIGNsYXNzIFRleHR1cmVSZWZlcmVuY2VUeXBlKiBlbGVtZW50VGV4dHVyZVJlZmVyZW5j
ZVR5cGUoKTsKKworICAgIGNsYXNzIFBvaW50ZXJUeXBlKiAgICAgICAgICBlbGVtZW50UG9pbnRl
clR5cGUoKTsKK307CisKK2NsYXNzIFBvaW50ZXJUeXBlIDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxQb2ludGVyVHlwZSwgVHlwZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUG9pbnRl
clR5cGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBQb2ludGVyVHlwZSogICAgICAgIGluaXQoKTsK
KworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgZWxlbWVudFR5cGUoKSBjb25zdDsKKwor
ICAgIE1UTDo6QXJndW1lbnRBY2Nlc3MgICAgICAgYWNjZXNzKCkgY29uc3Q7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgIGFsaWdubWVudCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICBkYXRhU2l6ZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICBlbGVtZW50SXNBcmd1bWVudEJ1ZmZlcigpIGNvbnN0OworCisgICAgY2xhc3Mg
U3RydWN0VHlwZSogICAgICAgICBlbGVtZW50U3RydWN0VHlwZSgpOworCisgICAgY2xhc3MgQXJy
YXlUeXBlKiAgICAgICAgICBlbGVtZW50QXJyYXlUeXBlKCk7Cit9OworCitjbGFzcyBUZXh0dXJl
UmVmZXJlbmNlVHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8VGV4dHVyZVJlZmVyZW5jZVR5
cGUsIFR5cGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFRleHR1cmVSZWZlcmVuY2VU
eXBlKiBhbGxvYygpOworCisgICAgY2xhc3MgVGV4dHVyZVJlZmVyZW5jZVR5cGUqICAgICAgICBp
bml0KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVE
YXRhVHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpUZXh0dXJlVHlwZSAgICAgICAgICAgICAgICAg
ICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpBcmd1bWVudEFjY2VzcyAgICAgICAg
ICAgICAgICBhY2Nlc3MoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaXNEZXB0aFRleHR1cmUoKSBjb25zdDsKK307CisKK2NsYXNzIEFyZ3VtZW50IDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxBcmd1bWVudD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y2xhc3MgQXJndW1lbnQqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBcmd1bWVudCogICAgICAgIGlu
aXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworCisgICAg
TVRMOjpBcmd1bWVudFR5cGUgICAgICB0eXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OkFyZ3VtZW50
QWNjZXNzICAgIGFjY2VzcygpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICBp
bmRleCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICBhY3RpdmUoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgYnVmZmVyQWxpZ25tZW50KCkgY29uc3Q7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgIGJ1ZmZlckRhdGFTaXplKCkgY29uc3Q7CisK
KyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgIGJ1ZmZlckRhdGFUeXBlKCkgY29uc3Q7CisKKyAg
ICBjbGFzcyBTdHJ1Y3RUeXBlKiAgICAgIGJ1ZmZlclN0cnVjdFR5cGUoKSBjb25zdDsKKworICAg
IGNsYXNzIFBvaW50ZXJUeXBlKiAgICAgYnVmZmVyUG9pbnRlclR5cGUoKSBjb25zdDsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgdGhyZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgdGhyZWFkZ3JvdXBNZW1vcnlEYXRhU2l6
ZSgpIGNvbnN0OworCisgICAgTVRMOjpUZXh0dXJlVHlwZSAgICAgICB0ZXh0dXJlVHlwZSgpIGNv
bnN0OworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAgICB0ZXh0dXJlRGF0YVR5cGUoKSBjb25z
dDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgaXNEZXB0aFRleHR1cmUoKSBjb25zdDsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgYXJyYXlMZW5ndGgoKSBjb25zdDsKK307CisK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VHlwZSogTVRM
OjpUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VHlw
ZT4oX01UTF9QUklWQVRFX0NMUyhNVExUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpUeXBlKiBNVEw6OlR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6VHlwZT4oKTsKK30KKworLy8gcHJvcGVydHk6IGRhdGFUeXBlCitf
TVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6VHlwZTo6ZGF0YVR5cGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZGF0YVR5cGUpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6U3RydWN0TWVtYmVyKiBNVEw6OlN0cnVjdE1lbWJlcjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlN0cnVjdE1lbWJlcj4oX01UTF9Q
UklWQVRFX0NMUyhNVExTdHJ1Y3RNZW1iZXIpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OlN0cnVjdE1lbWJlciogTVRMOjpTdHJ1Y3RNZW1iZXI6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U3RydWN0TWVtYmVyPigpOworfQorCisv
LyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpTdHJ1Y3RNZW1i
ZXI6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpT
dHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6
IG9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6U3RydWN0TWVtYmVyOjpvZmZz
ZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvZmZzZXQpKTsKK30KKworLy8gcHJvcGVydHk6IGRh
dGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6U3RydWN0TWVtYmVyOjpkYXRh
VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRh
VHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChkYXRhVHlwZSkpOworfQorCisvLyBtZXRob2Q6
IHN0cnVjdFR5cGUKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpTdHJ1Y3RNZW1i
ZXI6OnN0cnVjdFR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
U3RydWN0VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RydWN0VHlwZSkpOworfQorCisv
LyBtZXRob2Q6IGFycmF5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpBcnJheVR5cGUqIE1UTDo6U3Ry
dWN0TWVtYmVyOjphcnJheVR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6QXJyYXlUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcnJheVR5cGUpKTsKK30K
KworLy8gbWV0aG9kOiB0ZXh0dXJlUmVmZXJlbmNlVHlwZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0
dXJlUmVmZXJlbmNlVHlwZSogTVRMOjpTdHJ1Y3RNZW1iZXI6OnRleHR1cmVSZWZlcmVuY2VUeXBl
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVSZWZlcmVu
Y2VUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlUmVmZXJlbmNlVHlwZSkpOwor
fQorCisvLyBtZXRob2Q6IHBvaW50ZXJUeXBlCitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJUeXBl
KiBNVEw6OlN0cnVjdE1lbWJlcjo6cG9pbnRlclR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6UG9pbnRlclR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBv
aW50ZXJUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhcmd1bWVudEluZGV4CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpTdHJ1Y3RNZW1iZXI6OmFyZ3VtZW50SW5kZXgoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChhcmd1bWVudEluZGV4KSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OlN0cnVjdFR5cGUqIE1UTDo6U3RydWN0VHlwZTo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlN0cnVjdFR5cGU+KF9NVExf
UFJJVkFURV9DTFMoTVRMU3RydWN0VHlwZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpTdHJ1Y3RUeXBlOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlN0cnVjdFR5cGU+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBtZW1iZXJzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6U3RydWN0VHlwZTo6bWVt
YmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtZW1iZXJzKSk7Cit9CisKKy8vIG1ldGhvZDogbWVt
YmVyQnlOYW1lOgorX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RNZW1iZXIqIE1UTDo6U3RydWN0VHlw
ZTo6bWVtYmVyQnlOYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RNZW1iZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG1lbWJlckJ5TmFtZV8pLCBuYW1lKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MK
K19NVExfSU5MSU5FIE1UTDo6QXJyYXlUeXBlKiBNVEw6OkFycmF5VHlwZTo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFycmF5VHlwZT4oX01UTF9QUklWQVRF
X0NMUyhNVExBcnJheVR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBN
VEw6OkFycmF5VHlwZSogTVRMOjpBcnJheVR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6QXJyYXlUeXBlPigpOworfQorCisvLyBwcm9wZXJ0eTogZWxlbWVu
dFR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpBcnJheVR5cGU6OmVsZW1lbnRU
eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFU
eXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRUeXBlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBhcnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJyYXlUeXBl
OjphcnJheUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFycmF5TGVuZ3RoKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBzdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFycmF5
VHlwZTo6c3RyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RyaWRlKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBhcmd1bWVudEluZGV4U3RyaWRlCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpBcnJheVR5cGU6OmFyZ3VtZW50SW5kZXhTdHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChh
cmd1bWVudEluZGV4U3RyaWRlKSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVudFN0cnVjdFR5cGUK
K19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpBcnJheVR5cGU6OmVsZW1lbnRTdHJ1
Y3RUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0cnVjdFR5
cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRTdHJ1Y3RUeXBlKSk7Cit9CisKKy8v
IG1ldGhvZDogZWxlbWVudEFycmF5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpBcnJheVR5cGUqIE1U
TDo6QXJyYXlUeXBlOjplbGVtZW50QXJyYXlUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkFycmF5VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZWxlbWVu
dEFycmF5VHlwZSkpOworfQorCisvLyBtZXRob2Q6IGVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlw
ZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZSogTVRMOjpBcnJheVR5cGU6
OmVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlwZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoZWxlbWVudFRleHR1cmVSZWZlcmVuY2VUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVu
dFBvaW50ZXJUeXBlCitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJUeXBlKiBNVEw6OkFycmF5VHlw
ZTo6ZWxlbWVudFBvaW50ZXJUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlBvaW50ZXJUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50UG9pbnRl
clR5cGUpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
UG9pbnRlclR5cGUqIE1UTDo6UG9pbnRlclR5cGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8TVRMOjpQb2ludGVyVHlwZT4oX01UTF9QUklWQVRFX0NMUyhNVExQb2lu
dGVyVHlwZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UG9pbnRl
clR5cGUqIE1UTDo6UG9pbnRlclR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6UG9pbnRlclR5cGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbGVtZW50VHlw
ZQorX01UTF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OlBvaW50ZXJUeXBlOjplbGVtZW50VHlw
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlw
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50VHlwZSkpOworfQorCisvLyBwcm9wZXJ0
eTogYWNjZXNzCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50QWNjZXNzIE1UTDo6UG9pbnRlclR5
cGU6OmFjY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBcmd1bWVudEFjY2Vzcz4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nlc3MpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGFsaWdubWVudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UG9p
bnRlclR5cGU6OmFsaWdubWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsaWdubWVudCkpOwor
fQorCisvLyBwcm9wZXJ0eTogZGF0YVNpemUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OlBvaW50ZXJUeXBlOjpkYXRhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRhdGFTaXplKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBlbGVtZW50SXNBcmd1bWVudEJ1ZmZlcgorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OlBvaW50ZXJUeXBlOjplbGVtZW50SXNBcmd1bWVudEJ1ZmZlcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChlbGVtZW50SXNBcmd1bWVudEJ1ZmZlcikpOworfQorCisvLyBtZXRob2Q6IGVsZW1lbnRT
dHJ1Y3RUeXBlCitfTVRMX0lOTElORSBNVEw6OlN0cnVjdFR5cGUqIE1UTDo6UG9pbnRlclR5cGU6
OmVsZW1lbnRTdHJ1Y3RUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlN0cnVjdFR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRTdHJ1Y3RUeXBl
KSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVudEFycmF5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpB
cnJheVR5cGUqIE1UTDo6UG9pbnRlclR5cGU6OmVsZW1lbnRBcnJheVR5cGUoKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJyYXlUeXBlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChlbGVtZW50QXJyYXlUeXBlKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlKiBNVEw6OlRleHR1cmVSZWZl
cmVuY2VUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6
VGV4dHVyZVJlZmVyZW5jZVR5cGU+KF9NVExfUFJJVkFURV9DTFMoTVRMVGV4dHVyZVJlZmVyZW5j
ZVR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVS
ZWZlcmVuY2VUeXBlKiBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlPigpOworfQor
CisvLyBwcm9wZXJ0eTogdGV4dHVyZURhdGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBl
IE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGU6OnRleHR1cmVEYXRhVHlwZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh0ZXh0dXJlRGF0YVR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVU
eXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVUeXBlIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5
cGU6OnRleHR1cmVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRleHR1cmVUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVUeXBlKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRBY2Nl
c3MgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6YWNjZXNzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGFjY2VzcykpOworfQorCisvLyBwcm9wZXJ0eTogaXNEZXB0aFRleHR1cmUKK19N
VExfSU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6aXNEZXB0aFRleHR1cmUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaXNEZXB0aFRleHR1cmUpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnQqIE1UTDo6QXJndW1lbnQ6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBcmd1bWVudD4oX01UTF9QUklW
QVRFX0NMUyhNVExBcmd1bWVudCkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5F
IE1UTDo6QXJndW1lbnQqIE1UTDo6QXJndW1lbnQ6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6QXJndW1lbnQ+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitf
TVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkFyZ3VtZW50OjpuYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0eXBlCitfTVRMX0lOTElORSBNVEw6
OkFyZ3VtZW50VHlwZSBNVEw6OkFyZ3VtZW50Ojp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50VHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh0eXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6
QXJndW1lbnRBY2Nlc3MgTVRMOjpBcmd1bWVudDo6YWNjZXNzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGFjY2VzcykpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXgKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50OjppbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGluZGV4KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY3RpdmUKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpBcmd1bWVudDo6YWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzQWN0aXZlKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBidWZmZXJBbGlnbm1lbnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFy
Z3VtZW50OjpidWZmZXJBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXJBbGln
bm1lbnQpKTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckRhdGFTaXplCitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpBcmd1bWVudDo6YnVmZmVyRGF0YVNpemUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChidWZmZXJEYXRhU2l6ZSkpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyRGF0YVR5
cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpBcmd1bWVudDo6YnVmZmVyRGF0YVR5
cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5
cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVyRGF0YVR5cGUpKTsKK30KKworLy8gcHJv
cGVydHk6IGJ1ZmZlclN0cnVjdFR5cGUKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRM
OjpBcmd1bWVudDo6YnVmZmVyU3RydWN0VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChi
dWZmZXJTdHJ1Y3RUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJQb2ludGVyVHlwZQor
X01UTF9JTkxJTkUgTVRMOjpQb2ludGVyVHlwZSogTVRMOjpBcmd1bWVudDo6YnVmZmVyUG9pbnRl
clR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UG9p
bnRlclR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlclBvaW50ZXJUeXBlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiB0aHJlYWRncm91cE1lbW9yeUFsaWdubWVudAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6OnRocmVhZGdyb3VwTWVtb3J5QWxpZ25tZW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQpKTsKK30KKwor
Ly8gcHJvcGVydHk6IHRocmVhZGdyb3VwTWVtb3J5RGF0YVNpemUKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OkFyZ3VtZW50Ojp0aHJlYWRncm91cE1lbW9yeURhdGFTaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodGhyZWFkZ3JvdXBNZW1vcnlEYXRhU2l6ZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogdGV4dHVyZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVR5cGUgTVRMOjpBcmd1
bWVudDo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZVR5cGUp
KTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVEYXRhVHlwZQorX01UTF9JTkxJTkUgTVRMOjpE
YXRhVHlwZSBNVEw6OkFyZ3VtZW50Ojp0ZXh0dXJlRGF0YVR5cGUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodGV4dHVyZURhdGFUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBpc0RlcHRoVGV4dHVy
ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkFyZ3VtZW50Ojppc0RlcHRoVGV4dHVyZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChpc0RlcHRoVGV4dHVyZSkpOworfQorCisvLyBwcm9wZXJ0eTogYXJyYXlMZW5ndGgK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50OjphcnJheUxlbmd0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGFycmF5TGVuZ3RoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnRFbmNvZGVyLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudEVuY29kZXIuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBjZWNjN2Q5NTY3NTJjNjMzMWE2MzA3ZGE1MDg5MWE3MWQyYzEwNGQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
QXJndW1lbnRFbmNvZGVyLmhwcApAQCAtMCwwICsxLDI1MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQXJndW1lbnRFbmNv
ZGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5o
cHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExD
b21wdXRlUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5o
cHAiCisjaW5jbHVkZSAiTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUmVuZGVyUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorI2lu
Y2x1ZGUgIk1UTFRleHR1cmUuaHBwIgorI2luY2x1ZGUgIk1UTFZpc2libGVGdW5jdGlvblRhYmxl
LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQXJndW1lbnRFbmNvZGVyIDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxBcmd1bWVudEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgY2xhc3Mg
RGV2aWNlKiAgICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAg
ICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldExhYmVs
KGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ZW5jb2RlZExlbmd0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICBhbGln
bm1lbnQoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0QXJndW1lbnRC
dWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBhcmd1bWVudEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEFyZ3VtZW50QnVmZmVyKGNv
bnN0IGNsYXNzIEJ1ZmZlciogYXJndW1lbnRCdWZmZXIsIE5TOjpVSW50ZWdlciBzdGFydE9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGFycmF5RWxlbWVudCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
c2V0QnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zm
c2V0c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBz
ZXRUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFRleHR1cmVzKE1UTDo6VGV4dHVy
ZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgc2V0U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0U2Ft
cGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdl
KTsKKworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgY29uc3RhbnREYXRhKE5TOjpVSW50ZWdl
ciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFJlbmRlclBpcGVsaW5l
U3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUsIE5TOjpVSW50
ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFJlbmRlclBpcGVs
aW5lU3RhdGVzKE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVzLCBOUzo6UmFuZ2Ug
cmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRDb21wdXRlUGlwZWxpbmVT
dGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUsIE5TOjpVSW50
ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldENvbXB1dGVQaXBl
bGluZVN0YXRlcyhNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZXMsIE5TOjpSYW5n
ZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEluZGlyZWN0Q29tbWFu
ZEJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFu
ZEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVycyhNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciog
YnVmZmVycywgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
c2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVy
ZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgY2xh
c3MgQXJndW1lbnRFbmNvZGVyKiBuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGluZGV4
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGUo
Y29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5jdGlvblRhYmxlLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRWaXNp
YmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5j
dGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBp
bmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVzKGNvbnN0IEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7Cit9OworCit9CisKKy8vIHByb3BlcnR5
OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6
ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRl
dmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpBcmd1bWVudEVuY29kZXI6Omxh
YmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5n
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogZW5jb2RlZExlbmd0aAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnRFbmNvZGVyOjplbmNvZGVkTGVuZ3Ro
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlZExlbmd0aCkpOworfQorCisvLyBwcm9wZXJ0
eTogYWxpZ25tZW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudEVuY29k
ZXI6OmFsaWdubWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsaWdubWVudCkpOworfQorCisv
LyBtZXRob2Q6IHNldEFyZ3VtZW50QnVmZmVyOm9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBcmd1bWVudEVuY29kZXI6OnNldEFyZ3VtZW50QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBh
cmd1bWVudEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QXJndW1lbnRCdWZmZXJfb2Zm
c2V0XyksIGFyZ3VtZW50QnVmZmVyLCBvZmZzZXQpOworfQorCisvLyBtZXRob2Q6IHNldEFyZ3Vt
ZW50QnVmZmVyOnN0YXJ0T2Zmc2V0OmFycmF5RWxlbWVudDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBcmd1bWVudEVuY29kZXI6OnNldEFyZ3VtZW50QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBh
cmd1bWVudEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHN0YXJ0T2Zmc2V0LCBOUzo6VUludGVnZXIgYXJy
YXlFbGVtZW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRBcmd1bWVudEJ1ZmZlcl9zdGFydE9mZnNldF9hcnJheUVsZW1lbnRfKSwg
YXJndW1lbnRCdWZmZXIsIHN0YXJ0T2Zmc2V0LCBhcnJheUVsZW1lbnQpOworfQorCisvLyBtZXRo
b2Q6IHNldEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1
bWVudEVuY29kZXI6OnNldEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUlu
dGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcl9vZmZzZXRfYXRJbmRl
eF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEJ1ZmZlcnM6
b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVy
OjpzZXRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdlciBv
ZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5nZV8p
LCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGV4dHVyZTph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0VGV4dHVy
ZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGV4
dHVyZV9hdEluZGV4XyksIHRleHR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUZXh0
dXJlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpz
ZXRUZXh0dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1cmVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDog
c2V0U2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRF
bmNvZGVyOjpzZXRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIs
IE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRlX2F0SW5kZXhfKSwgc2FtcGxlciwg
aW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZXM6d2l0aFJhbmdlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0U2FtcGxlclN0YXRlcyhNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVyU3Rh
dGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IGNvbnN0
YW50RGF0YUF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkKiBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6
Y29uc3RhbnREYXRhKE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb25zdGFudERhdGFBdElu
ZGV4XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRSZW5kZXJQaXBlbGluZVN0YXRlOmF0
SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRSZW5kZXJQ
aXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUsIE5T
OjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZV9hdEluZGV4XyksIHBpcGVs
aW5lLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXM6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0UmVuZGVy
UGlwZWxpbmVTdGF0ZXMoTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBwaXBlbGluZXMsIE5TOjpS
YW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXNfd2l0aFJhbmdlXyksIHBpcGVsaW5l
cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldENvbXB1dGVQaXBlbGluZVN0YXRlOmF0SW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRDb21wdXRlUGlw
ZWxpbmVTdGF0ZShjb25zdCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZSwgTlM6
OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZV9hdEluZGV4XyksIHBpcGVs
aW5lLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzOndp
dGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldENvbXB1
dGVQaXBlbGluZVN0YXRlcyhNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZXMsIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzX3dpdGhSYW5nZV8pLCBwaXBl
bGluZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXI6
YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldEluZGly
ZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJl
Y3RDb21tYW5kQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGlyZWN0Q29tbWFuZEJ1
ZmZlcl9hdEluZGV4XyksIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgaW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0SW5kaXJlY3RDb21tYW5kQnVmZmVycyhNVEw6
OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogYnVmZmVycywgTlM6OlJhbmdlIHJhbmdlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRp
cmVjdENvbW1hbmRCdWZmZXJzX3dpdGhSYW5nZV8pLCBidWZmZXJzLCByYW5nZSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3Qg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJ
bnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRJbmRleF8pLCBhY2NlbGVy
YXRpb25TdHJ1Y3R1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29k
ZXJGb3JCdWZmZXJBdEluZGV4OgorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEVuY29kZXIqIE1U
TDo6QXJndW1lbnRFbmNvZGVyOjpuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGluZGV4
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRFbmNvZGVy
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBcmd1bWVudEVuY29kZXJGb3JCdWZmZXJBdElu
ZGV4XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0VmlzaWJs
ZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJsZUZ1
bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVf
YXRJbmRleF8pLCB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6
IHNldFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QXJndW1lbnRFbmNvZGVyOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpW
aXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJsZUZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSBy
YW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhSYW5nZV8pLCB2aXNpYmxlRnVuY3Rp
b25UYWJsZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0SW5kZXhfKSwgaW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6
OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoUmFuZ2VfKSwgaW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MTQyZDM3NGMzNWJlMzlkNjY2MmU4MTRiNzcxOWUzNDY4NTJjNWZjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJpbmFyeUFyY2hpdmUu
aHBwCkBAIC0wLDAgKzEsMTM4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBCaW5hcnlBcmNoaXZlRXJy
b3IpIHsKKyAgICBCaW5hcnlBcmNoaXZlRXJyb3JOb25lID0gMCwKKyAgICBCaW5hcnlBcmNoaXZl
RXJyb3JJbnZhbGlkRmlsZSA9IDEsCisgICAgQmluYXJ5QXJjaGl2ZUVycm9yVW5leHBlY3RlZEVs
ZW1lbnQgPSAyLAorICAgIEJpbmFyeUFyY2hpdmVFcnJvckNvbXBpbGF0aW9uRmFpbHVyZSA9IDMs
Cit9OworCitjbGFzcyBCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWlu
ZzxCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCaW5hcnlBcmNo
aXZlRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpVUkwqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXJsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRVcmwoY29uc3QgTlM6OlVSTCogdXJsKTsKK307CisKK2NsYXNz
IEJpbmFyeUFyY2hpdmUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEJpbmFyeUFyY2hpdmU+Cit7
CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRGV2
aWNlKiBkZXZpY2UoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgYWRkQ29tcHV0ZVBpcGVs
aW5lRnVuY3Rpb25zKGNvbnN0IGNsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGJvb2wgICAgICAgICAgYWRkUmVuZGVy
UGlwZWxpbmVGdW5jdGlvbnMoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29sICAgICAgICAgIGFkZFRp
bGVSZW5kZXJQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29sICAg
ICAgICAgIHNlcmlhbGl6ZVRvVVJMKGNvbnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiogZXJy
b3IpOworCisgICAgYm9vbCAgICAgICAgICBhZGRGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlv
bkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IGNsYXNzIExpYnJhcnkqIGxpYnJhcnksIE5T
OjpFcnJvcioqIGVycm9yKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIE1UTDo6QmluYXJ5QXJjaGl2
ZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExCaW5hcnlBcmNo
aXZlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3I6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QmluYXJ5QXJjaGl2ZURl
c2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB1cmwKK19NVExfSU5MSU5FIE5TOjpVUkwq
IE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3I6OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVSTCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXJs
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcjo6
c2V0VXJsKGNvbnN0IE5TOjpVUkwqIHVybCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VXJsXyksIHVybCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpCaW5hcnlBcmNoaXZlOjps
YWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmlu
Zyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkJpbmFyeUFyY2hpdmU6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5F
IE1UTDo6RGV2aWNlKiBNVEw6OkJpbmFyeUFyY2hpdmU6OmRldmljZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGRldmljZSkpOworfQorCisvLyBtZXRob2Q6IGFkZENvbXB1dGVQaXBlbGluZUZ1bmN0
aW9uc1dpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkJpbmFyeUFy
Y2hpdmU6OmFkZENvbXB1dGVQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBNVEw6OkNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRk
Q29tcHV0ZVBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRv
ciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IGFkZFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0
aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6
YWRkUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnMoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRkUmVuZGVyUGlw
ZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7
Cit9CisKKy8vIG1ldGhvZDogYWRkVGlsZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2Ny
aXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6YWRkVGls
ZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zKGNvbnN0IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGRUaWxlUmVu
ZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBl
cnJvcik7Cit9CisKKy8vIG1ldGhvZDogc2VyaWFsaXplVG9VUkw6ZXJyb3I6CitfTVRMX0lOTElO
RSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6c2VyaWFsaXplVG9VUkwoY29uc3QgTlM6OlVSTCog
dXJsLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNlcmlhbGl6ZVRvVVJMX2Vycm9yXyksIHVy
bCwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IGFkZEZ1bmN0aW9uV2l0aERlc2NyaXB0b3I6bGli
cmFyeTplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpCaW5hcnlBcmNoaXZlOjphZGRGdW5j
dGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgTVRM
OjpMaWJyYXJ5KiBsaWJyYXJ5LCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFkZEZ1bmN0aW9u
V2l0aERlc2NyaXB0b3JfbGlicmFyeV9lcnJvcl8pLCBkZXNjcmlwdG9yLCBsaWJyYXJ5LCBlcnJv
cik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhODZiNmE5NTAx
YzY4NTNmMGM4ZjVhMGJiMGFiN2ViNjAzNzdjMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcApA
QCAtMCwwICsxLDI0NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5k
RW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7
CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBCbGl0T3B0aW9uKSB7CisgICAgQmxpdE9wdGlv
bk5vbmUgPSAwLAorICAgIEJsaXRPcHRpb25EZXB0aEZyb21EZXB0aFN0ZW5jaWwgPSAxLAorICAg
IEJsaXRPcHRpb25TdGVuY2lsRnJvbURlcHRoU3RlbmNpbCA9IDIsCisgICAgQmxpdE9wdGlvblJv
d0xpbmVhclBWUlRDID0gNCwKK307CisKK2NsYXNzIEJsaXRDb21tYW5kRW5jb2RlciA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8QmxpdENvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rlcj4KK3sK
K3B1YmxpYzoKKyAgICB2b2lkIHN5bmNocm9uaXplUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3Vy
Y2UqIHJlc291cmNlKTsKKworICAgIHZvaWQgc3luY2hyb25pemVUZXh0dXJlKGNvbnN0IGNsYXNz
IFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6OlVJbnRlZ2VyIGxldmVs
KTsKKworICAgIHZvaWQgY29weUZyb21UZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNvdXJj
ZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxl
dmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25z
dCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRMOjpPcmlnaW4gZGVz
dGluYXRpb25PcmlnaW4pOworCisgICAgdm9pZCBjb3B5RnJvbUJ1ZmZlcihjb25zdCBjbGFzcyBC
dWZmZXIqIHNvdXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgTlM6OlVJbnRl
Z2VyIHNvdXJjZUJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJJbWFnZSwg
TVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IGNsYXNzIFRleHR1cmUqIGRlc3RpbmF0aW9uVGV4
dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBkZXN0aW5hdGlvbk9yaWdpbik7CisKKyAgICB2b2lkIGNv
cHlGcm9tQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUludGVn
ZXIgc291cmNlT2Zmc2V0LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJSb3csIE5TOjpVSW50
ZWdlciBzb3VyY2VCeXRlc1BlckltYWdlLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgY2xh
c3MgVGV4dHVyZSogZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25T
bGljZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3RpbmF0
aW9uT3JpZ2luLCBNVEw6OkJsaXRPcHRpb24gb3B0aW9ucyk7CisKKyAgICB2b2lkIGNvcHlGcm9t
VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIg
c291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZlbCwgTVRMOjpPcmlnaW4gc291cmNl
T3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBkZXN0aW5h
dGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIg
ZGVzdGluYXRpb25CeXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJJ
bWFnZSk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiBz
b3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3Vy
Y2VMZXZlbCwgTVRMOjpPcmlnaW4gc291cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwg
Y29uc3QgY2xhc3MgQnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3Rp
bmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25CeXRlc1BlclJvdywgTlM6OlVJ
bnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZSwgTVRMOjpCbGl0T3B0aW9uIG9wdGlvbnMp
OworCisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcHMoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVy
ZSk7CisKKyAgICB2b2lkIGZpbGxCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5T
OjpSYW5nZSByYW5nZSwgdWludDhfdCB2YWx1ZSk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4dHVy
ZShjb25zdCBjbGFzcyBUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNl
U2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZlbCwgY29uc3QgY2xhc3MgVGV4dHVyZSogZGVz
dGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGljZSwgTlM6OlVJbnRl
Z2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZUNvdW50LCBOUzo6VUludGVn
ZXIgbGV2ZWxDb3VudCk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4dHVyZShjb25zdCBjbGFzcyBU
ZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBjb25zdCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRl
eHR1cmUpOworCisgICAgdm9pZCBjb3B5RnJvbUJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIHNv
dXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgY29uc3QgY2xhc3MgQnVmZmVy
KiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6
VUludGVnZXIgc2l6ZSk7CisKKyAgICB2b2lkIHVwZGF0ZUZlbmNlKGNvbnN0IGNsYXNzIEZlbmNl
KiBmZW5jZSk7CisKKyAgICB2b2lkIHdhaXRGb3JGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVu
Y2UpOworCisgICAgdm9pZCBnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnMoY29uc3QgY2xhc3MgVGV4
dHVyZSogdGV4dHVyZSwgTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbWlwTGV2ZWws
IE5TOjpVSW50ZWdlciBzbGljZSwgYm9vbCByZXNldENvdW50ZXJzLCBjb25zdCBjbGFzcyBCdWZm
ZXIqIGNvdW50ZXJzQnVmZmVyLCBOUzo6VUludGVnZXIgY291bnRlcnNCdWZmZXJPZmZzZXQpOwor
CisgICAgdm9pZCByZXNldFRleHR1cmVBY2Nlc3NDb3VudGVycyhjb25zdCBjbGFzcyBUZXh0dXJl
KiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBtaXBMZXZlbCwgTlM6
OlVJbnRlZ2VyIHNsaWNlKTsKKworICAgIHZvaWQgb3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vz
cyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlKTsKKworICAgIHZvaWQgb3B0aW1pemVDb250
ZW50c0ZvckdQVUFjY2Vzcyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVn
ZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZlbCk7CisKKyAgICB2b2lkIG9wdGltaXplQ29udGVu
dHNGb3JDUFVBY2Nlc3MoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSk7CisKKyAgICB2b2lk
IG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3MoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVy
ZSwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBOUzo6VUludGVnZXIgbGV2ZWwpOworCisgICAgdm9pZCBy
ZXNldENvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBi
dWZmZXIsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkIGNvcHlJbmRpcmVjdENvbW1hbmRC
dWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBzb3VyY2UsIE5TOjpSYW5n
ZSBzb3VyY2VSYW5nZSwgY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBkZXN0aW5h
dGlvbiwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uSW5kZXgpOworCisgICAgdm9pZCBvcHRpbWl6
ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIq
IGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgc2Ft
cGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1w
bGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKTsKKworICAg
IHZvaWQgcmVzb2x2ZUNvdW50ZXJzKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNh
bXBsZUJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGRlc3RpbmF0
aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZzZXQpOworfTsKKworfQorCisv
LyBtZXRob2Q6IHN5bmNocm9uaXplUmVzb3VyY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpzeW5jaHJvbml6ZVJlc291cmNlKGNvbnN0IE1UTDo6UmVzb3VyY2Uq
IHJlc291cmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzeW5jaHJvbml6ZVJlc291cmNlXyksIHJlc291cmNlKTsKK30KKworLy8gbWV0
aG9kOiBzeW5jaHJvbml6ZVRleHR1cmU6c2xpY2U6bGV2ZWw6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QmxpdENvbW1hbmRFbmNvZGVyOjpzeW5jaHJvbml6ZVRleHR1cmUoY29uc3QgTVRMOjpUZXh0
dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZlbCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3lu
Y2hyb25pemVUZXh0dXJlX3NsaWNlX2xldmVsXyksIHRleHR1cmUsIHNsaWNlLCBsZXZlbCk7Cit9
CisKKy8vIG1ldGhvZDogY29weUZyb21UZXh0dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNv
dXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvVGV4dHVyZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0
aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENv
bW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiBzb3VyY2VU
ZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZl
bCwgTVRMOjpPcmlnaW4gc291cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3Qg
TVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlv
blNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRMOjpPcmlnaW4gZGVzdGlu
YXRpb25PcmlnaW4pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF9zb3Vy
Y2VPcmlnaW5fc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGljZV9kZXN0aW5hdGlv
bkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luXyksIHNvdXJjZVRleHR1cmUsIHNvdXJjZVNsaWNlLCBz
b3VyY2VMZXZlbCwgc291cmNlT3JpZ2luLCBzb3VyY2VTaXplLCBkZXN0aW5hdGlvblRleHR1cmUs
IGRlc3RpbmF0aW9uU2xpY2UsIGRlc3RpbmF0aW9uTGV2ZWwsIGRlc3RpbmF0aW9uT3JpZ2luKTsK
K30KKworLy8gbWV0aG9kOiBjb3B5RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6c291cmNlQnl0ZXNQ
ZXJSb3c6c291cmNlQnl0ZXNQZXJJbWFnZTpzb3VyY2VTaXplOnRvVGV4dHVyZTpkZXN0aW5hdGlv
blNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbUJ1ZmZlcihjb25zdCBNVEw6OkJ1
ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUludGVnZXIgc291cmNlT2Zmc2V0LCBOUzo6VUludGVn
ZXIgc291cmNlQnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBzb3VyY2VCeXRlc1BlckltYWdlLCBN
VEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1
cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRp
b25MZXZlbCwgTVRMOjpPcmlnaW4gZGVzdGluYXRpb25PcmlnaW4pCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tQnVmZmVyX3Nv
dXJjZU9mZnNldF9zb3VyY2VCeXRlc1BlclJvd19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJjZVNp
emVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5hdGlv
bk9yaWdpbl8pLCBzb3VyY2VCdWZmZXIsIHNvdXJjZU9mZnNldCwgc291cmNlQnl0ZXNQZXJSb3cs
IHNvdXJjZUJ5dGVzUGVySW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RpbmF0aW9uVGV4dHVyZSwgZGVz
dGluYXRpb25TbGljZSwgZGVzdGluYXRpb25MZXZlbCwgZGVzdGluYXRpb25PcmlnaW4pOworfQor
CisvLyBtZXRob2Q6IGNvcHlGcm9tQnVmZmVyOnNvdXJjZU9mZnNldDpzb3VyY2VCeXRlc1BlclJv
dzpzb3VyY2VCeXRlc1BlckltYWdlOnNvdXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xp
Y2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0aW5hdGlvbk9yaWdpbjpvcHRpb25zOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Y29weUZyb21CdWZmZXIoY29uc3QgTVRM
OjpCdWZmZXIqIHNvdXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgTlM6OlVJ
bnRlZ2VyIHNvdXJjZUJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJJbWFn
ZSwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IE1UTDo6VGV4dHVyZSogZGVzdGluYXRpb25U
ZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGljZSwgTlM6OlVJbnRlZ2VyIGRlc3Rp
bmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3RpbmF0aW9uT3JpZ2luLCBNVEw6OkJsaXRPcHRp
b24gb3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoY29weUZyb21CdWZmZXJfc291cmNlT2Zmc2V0X3NvdXJjZUJ5dGVzUGVyUm93
X3NvdXJjZUJ5dGVzUGVySW1hZ2Vfc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGlj
ZV9kZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luX29wdGlvbnNfKSwgc291cmNlQnVm
ZmVyLCBzb3VyY2VPZmZzZXQsIHNvdXJjZUJ5dGVzUGVyUm93LCBzb3VyY2VCeXRlc1BlckltYWdl
LCBzb3VyY2VTaXplLCBkZXN0aW5hdGlvblRleHR1cmUsIGRlc3RpbmF0aW9uU2xpY2UsIGRlc3Rp
bmF0aW9uTGV2ZWwsIGRlc3RpbmF0aW9uT3JpZ2luLCBvcHRpb25zKTsKK30KKworLy8gbWV0aG9k
OiBjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291cmNlT3JpZ2luOnNv
dXJjZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVzdGluYXRpb25CeXRlc1BlclJv
dzpkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENv
bW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiBzb3VyY2VU
ZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZl
bCwgTVRMOjpPcmlnaW4gc291cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3Qg
TVRMOjpCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25P
ZmZzZXQsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIg
ZGVzdGluYXRpb25CeXRlc1BlckltYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291
cmNlTGV2ZWxfc291cmNlT3JpZ2luX3NvdXJjZVNpemVfdG9CdWZmZXJfZGVzdGluYXRpb25PZmZz
ZXRfZGVzdGluYXRpb25CeXRlc1BlclJvd19kZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2VfKSwgc291
cmNlVGV4dHVyZSwgc291cmNlU2xpY2UsIHNvdXJjZUxldmVsLCBzb3VyY2VPcmlnaW4sIHNvdXJj
ZVNpemUsIGRlc3RpbmF0aW9uQnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNldCwgZGVzdGluYXRpb25C
eXRlc1BlclJvdywgZGVzdGluYXRpb25CeXRlc1BlckltYWdlKTsKK30KKworLy8gbWV0aG9kOiBj
b3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291cmNlT3JpZ2luOnNvdXJj
ZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVzdGluYXRpb25CeXRlc1BlclJvdzpk
ZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6b3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpC
bGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tVGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHNv
dXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJj
ZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBj
b25zdCBNVEw6OkJ1ZmZlciogZGVzdGluYXRpb25CdWZmZXIsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvbk9mZnNldCwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3csIE5TOjpVSW50
ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2UsIE1UTDo6QmxpdE9wdGlvbiBvcHRpb25zKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNlTGV2ZWxfc291cmNlT3JpZ2luX3NvdXJj
ZVNpemVfdG9CdWZmZXJfZGVzdGluYXRpb25PZmZzZXRfZGVzdGluYXRpb25CeXRlc1BlclJvd19k
ZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2Vfb3B0aW9uc18pLCBzb3VyY2VUZXh0dXJlLCBzb3VyY2VT
bGljZSwgc291cmNlTGV2ZWwsIHNvdXJjZU9yaWdpbiwgc291cmNlU2l6ZSwgZGVzdGluYXRpb25C
dWZmZXIsIGRlc3RpbmF0aW9uT2Zmc2V0LCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBkZXN0aW5h
dGlvbkJ5dGVzUGVySW1hZ2UsIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IGdlbmVyYXRlTWlw
bWFwc0ZvclRleHR1cmU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVy
OjpnZW5lcmF0ZU1pcG1hcHMoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChnZW5lcmF0ZU1p
cG1hcHNGb3JUZXh0dXJlXyksIHRleHR1cmUpOworfQorCisvLyBtZXRob2Q6IGZpbGxCdWZmZXI6
cmFuZ2U6dmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpm
aWxsQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpSYW5nZSByYW5nZSwgdWlu
dDhfdCB2YWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZmlsbEJ1ZmZlcl9yYW5nZV92YWx1ZV8pLCBidWZmZXIsIHJhbmdlLCB2YWx1
ZSk7Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21UZXh0dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxl
dmVsOnRvVGV4dHVyZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6c2xpY2VDb3Vu
dDpsZXZlbENvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6
Y29weUZyb21UZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6OlVJ
bnRlZ2VyIHNvdXJjZVNsaWNlLCBOUzo6VUludGVnZXIgc291cmNlTGV2ZWwsIGNvbnN0IE1UTDo6
VGV4dHVyZSogZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGlj
ZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZUNvdW50
LCBOUzo6VUludGVnZXIgbGV2ZWxDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJjZVNsaWNlX3Nv
dXJjZUxldmVsX3RvVGV4dHVyZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfc2xp
Y2VDb3VudF9sZXZlbENvdW50XyksIHNvdXJjZVRleHR1cmUsIHNvdXJjZVNsaWNlLCBzb3VyY2VM
ZXZlbCwgZGVzdGluYXRpb25UZXh0dXJlLCBkZXN0aW5hdGlvblNsaWNlLCBkZXN0aW5hdGlvbkxl
dmVsLCBzbGljZUNvdW50LCBsZXZlbENvdW50KTsKK30KKworLy8gbWV0aG9kOiBjb3B5RnJvbVRl
eHR1cmU6dG9UZXh0dXJlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rl
cjo6Y29weUZyb21UZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwgY29u
c3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tVGV4dHVyZV90b1Rl
eHR1cmVfKSwgc291cmNlVGV4dHVyZSwgZGVzdGluYXRpb25UZXh0dXJlKTsKK30KKworLy8gbWV0
aG9kOiBjb3B5RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZz
ZXQ6c2l6ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlG
cm9tQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBzb3VyY2VCdWZmZXIsIE5TOjpVSW50ZWdlciBz
b3VyY2VPZmZzZXQsIGNvbnN0IE1UTDo6QnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIgc2l6ZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUZyb21CdWZm
ZXJfc291cmNlT2Zmc2V0X3RvQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0X3NpemVfKSwgc291cmNl
QnVmZmVyLCBzb3VyY2VPZmZzZXQsIGRlc3RpbmF0aW9uQnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNl
dCwgc2l6ZSk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlRmVuY2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjp1cGRhdGVGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBm
ZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRob2Q6IHdhaXRGb3JGZW5j
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OndhaXRGb3JGZW5j
ZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2FpdEZvckZlbmNlXyksIGZlbmNlKTsKK30KKwor
Ly8gbWV0aG9kOiBnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExldmVsOnNsaWNl
OnJlc2V0Q291bnRlcnM6Y291bnRlcnNCdWZmZXI6Y291bnRlcnNCdWZmZXJPZmZzZXQ6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpnZXRUZXh0dXJlQWNjZXNzQ291
bnRlcnMoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5T
OjpVSW50ZWdlciBtaXBMZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBib29sIHJlc2V0Q291bnRl
cnMsIGNvbnN0IE1UTDo6QnVmZmVyKiBjb3VudGVyc0J1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvdW50
ZXJzQnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnNfcmVnaW9uX21pcExldmVs
X3NsaWNlX3Jlc2V0Q291bnRlcnNfY291bnRlcnNCdWZmZXJfY291bnRlcnNCdWZmZXJPZmZzZXRf
KSwgdGV4dHVyZSwgcmVnaW9uLCBtaXBMZXZlbCwgc2xpY2UsIHJlc2V0Q291bnRlcnMsIGNvdW50
ZXJzQnVmZmVyLCBjb3VudGVyc0J1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXRU
ZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExldmVsOnNsaWNlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6cmVzZXRUZXh0dXJlQWNjZXNzQ291bnRlcnMo
Y29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50
ZWdlciBtaXBMZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldFRleHR1cmVBY2Nlc3NDb3Vu
dGVyc19yZWdpb25fbWlwTGV2ZWxfc2xpY2VfKSwgdGV4dHVyZSwgcmVnaW9uLCBtaXBMZXZlbCwg
c2xpY2UpOworfQorCisvLyBtZXRob2Q6IG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3M6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUNvbnRlbnRz
Rm9yR1BVQWNjZXNzKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3B0aW1pemVDb250ZW50
c0ZvckdQVUFjY2Vzc18pLCB0ZXh0dXJlKTsKK30KKworLy8gbWV0aG9kOiBvcHRpbWl6ZUNvbnRl
bnRzRm9yR1BVQWNjZXNzOnNsaWNlOmxldmVsOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRD
b21tYW5kRW5jb2Rlcjo6b3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vzcyhjb25zdCBNVEw6OlRl
eHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6OlVJbnRlZ2VyIGxldmVsKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChv
cHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzX3NsaWNlX2xldmVsXyksIHRleHR1cmUsIHNsaWNl
LCBsZXZlbCk7Cit9CisKKy8vIG1ldGhvZDogb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2VzczoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6Om9wdGltaXplQ29udGVu
dHNGb3JDUFVBY2Nlc3MoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChvcHRpbWl6ZUNvbnRl
bnRzRm9yQ1BVQWNjZXNzXyksIHRleHR1cmUpOworfQorCisvLyBtZXRob2Q6IG9wdGltaXplQ29u
dGVudHNGb3JDUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzKGNvbnN0IE1UTDo6
VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBOUzo6VUludGVnZXIgbGV2ZWwp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3Nfc2xpY2VfbGV2ZWxfKSwgdGV4dHVyZSwgc2xp
Y2UsIGxldmVsKTsKK30KKworLy8gbWV0aG9kOiByZXNldENvbW1hbmRzSW5CdWZmZXI6d2l0aFJh
bmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6cmVzZXRDb21t
YW5kc0luQnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBidWZmZXIsIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocmVzZXRDb21tYW5kc0luQnVmZmVyX3dpdGhSYW5nZV8pLCBidWZmZXIs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBjb3B5SW5kaXJlY3RDb21tYW5kQnVmZmVyOnNvdXJj
ZVJhbmdlOmRlc3RpbmF0aW9uOmRlc3RpbmF0aW9uSW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IE1U
TDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBzb3VyY2UsIE5TOjpSYW5nZSBzb3VyY2VSYW5nZSwg
Y29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGRlc3RpbmF0aW9uLCBOUzo6VUludGVn
ZXIgZGVzdGluYXRpb25JbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoY29weUluZGlyZWN0Q29tbWFuZEJ1ZmZlcl9zb3VyY2VSYW5n
ZV9kZXN0aW5hdGlvbl9kZXN0aW5hdGlvbkluZGV4XyksIHNvdXJjZSwgc291cmNlUmFuZ2UsIGRl
c3RpbmF0aW9uLCBkZXN0aW5hdGlvbkluZGV4KTsKK30KKworLy8gbWV0aG9kOiBvcHRpbWl6ZUlu
ZGlyZWN0Q29tbWFuZEJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6
OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6UmFuZ2Ug
cmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG9wdGltaXplSW5kaXJlY3RDb21tYW5kQnVmZmVyX3dpdGhSYW5nZV8pLCBpbmRpcmVj
dENvbW1hbmRCdWZmZXIsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzYW1wbGVDb3VudGVyc0lu
QnVmZmVyOmF0U2FtcGxlSW5kZXg6d2l0aEJhcnJpZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QmxpdENvbW1hbmRFbmNvZGVyOjpzYW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IE1UTDo6Q291
bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6VUludGVnZXIgc2FtcGxlSW5kZXgs
IGJvb2wgYmFycmllcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcl9hdFNhbXBsZUluZGV4X3dpdGhC
YXJyaWVyXyksIHNhbXBsZUJ1ZmZlciwgc2FtcGxlSW5kZXgsIGJhcnJpZXIpOworfQorCisvLyBt
ZXRob2Q6IHJlc29sdmVDb3VudGVyczppblJhbmdlOmRlc3RpbmF0aW9uQnVmZmVyOmRlc3RpbmF0
aW9uT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6cmVz
b2x2ZUNvdW50ZXJzKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVy
LCBOUzo6UmFuZ2UgcmFuZ2UsIGNvbnN0IE1UTDo6QnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvbHZlQ291bnRlcnNfaW5SYW5nZV9k
ZXN0aW5hdGlvbkJ1ZmZlcl9kZXN0aW5hdGlvbk9mZnNldF8pLCBzYW1wbGVCdWZmZXIsIHJhbmdl
LCBkZXN0aW5hdGlvbkJ1ZmZlciwgZGVzdGluYXRpb25PZmZzZXQpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRQYXNzLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFzcy5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzhlYWUzMWQ3MTI0ZGJhMzQ0MTAzZTdhNzNkNzk1NmQ0YmE1MzE2MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFz
cy5ocHAKQEAgLTAsMCArMSwxNjUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEJsaXRQYXNzLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJp
dmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1l
c3BhY2UgTVRMCit7CitjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEJsaXRQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCbGl0UGFzc1Nh
bXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xh
c3MgQ291bnRlclNhbXBsZUJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBs
ZUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVCdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNh
bXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0
YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVu
Y29kZXJTYW1wbGVJbmRleCk7Cit9OworCitjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEJsaXRQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBh
bGxvYygpOworCisgICAgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBh
dHRhY2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIEJsaXRQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdl
ciBhdHRhY2htZW50SW5kZXgpOworfTsKKworY2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yIDogcHVi
bGljIE5TOjpDb3B5aW5nPEJsaXRQYXNzRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGFsbG9jKCk7
CisKKyAgICBjbGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IqICAgICAg
ICAgICAgICAgICAgICAgYmxpdFBhc3NEZXNjcmlwdG9yKCk7CisKKyAgICBjbGFzcyBCbGl0UGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIHNhbXBsZUJ1ZmZlckF0dGFj
aG1lbnRzKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1U
TDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpC
bGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXIKK19NVExfSU5M
SU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0
dGFjaG1lbnREZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpC
bGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTYW1wbGVCdWZmZXIo
Y29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZUJ1
ZmZlcl8pLCBzYW1wbGVCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRPZkVuY29kZXJT
YW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QmxpdFBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3I6OnNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZFbmNv
ZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXhfKSwgc3RhcnRPZkVu
Y29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmRPZkVuY29kZXJTYW1wbGVJ
bmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChlbmRPZkVuY29kZXJTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0RW5k
T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleF8pLCBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCk7
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpCbGl0UGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJ
TkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1U
TDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdElu
ZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IqIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhl
ZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVj
dDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdFBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpC
bGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6
VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0Xyks
IGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzRGVzY3JpcHRvciogTVRMOjpCbGl0UGFzc0Rl
c2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpC
bGl0UGFzc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NEZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc0Rlc2Ny
aXB0b3IqIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6aW5pdDxNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYmxpdFBhc3NEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzRGVz
Y3JpcHRvciogTVRMOjpCbGl0UGFzc0Rlc2NyaXB0b3I6OmJsaXRQYXNzRGVzY3JpcHRvcigpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGl0UGFzc0Rlc2NyaXB0b3Iq
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEJsaXRQYXNzRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9T
RUwoYmxpdFBhc3NEZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXJB
dHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXJB
dHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCdWZmZXIuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYxYmRkZWZlYTc3MGQ1NDczZTMzZjFhYzRhYmIyNjQ2MmJmY2Y0NWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhw
cApAQCAtMCwwICsxLDEwMSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQnVmZmVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAy
MDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBw
IgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5o
cHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAi
TVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBCdWZmZXIgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPEJ1ZmZlciwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgTlM6
OlVJbnRlZ2VyICAgbGVuZ3RoKCkgY29uc3Q7CisKKyAgICB2b2lkKiAgICAgICAgICBjb250ZW50
cygpOworCisgICAgdm9pZCAgICAgICAgICAgZGlkTW9kaWZ5UmFuZ2UoTlM6OlJhbmdlIHJhbmdl
KTsKKworICAgIGNsYXNzIFRleHR1cmUqIG5ld1RleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBi
eXRlc1BlclJvdyk7CisKKyAgICB2b2lkICAgICAgICAgICBhZGREZWJ1Z01hcmtlcihjb25zdCBO
Uzo6U3RyaW5nKiBtYXJrZXIsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAg
ICByZW1vdmVBbGxEZWJ1Z01hcmtlcnMoKTsKKworICAgIGNsYXNzIEJ1ZmZlciogIHJlbW90ZVN0
b3JhZ2VCdWZmZXIoKSBjb25zdDsKKworICAgIGNsYXNzIEJ1ZmZlciogIG5ld1JlbW90ZUJ1ZmZl
clZpZXdGb3JEZXZpY2UoY29uc3QgY2xhc3MgRGV2aWNlKiBkZXZpY2UpOworfTsKKworfQorCisv
LyBwcm9wZXJ0eTogbGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpCdWZmZXI6
Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxlbmd0aCkpOworfQorCisvLyBtZXRob2Q6
IGNvbnRlbnRzCitfTVRMX0lOTElORSB2b2lkKiBNVEw6OkJ1ZmZlcjo6Y29udGVudHMoKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGNvbnRlbnRzKSk7Cit9CisKKy8vIG1ldGhvZDogZGlkTW9kaWZ5UmFuZ2U6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6QnVmZmVyOjpkaWRNb2RpZnlSYW5nZShOUzo6UmFuZ2UgcmFuZ2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRp
ZE1vZGlmeVJhbmdlXyksIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBuZXdUZXh0dXJlV2l0aERl
c2NyaXB0b3I6b2Zmc2V0OmJ5dGVzUGVyUm93OgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBN
VEw6OkJ1ZmZlcjo6bmV3VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNj
cmlwdG9yLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3cpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3Jfb2Zmc2V0X2J5dGVzUGVyUm93
XyksIGRlc2NyaXB0b3IsIG9mZnNldCwgYnl0ZXNQZXJSb3cpOworfQorCisvLyBtZXRob2Q6IGFk
ZERlYnVnTWFya2VyOnJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlcjo6YWRkRGVi
dWdNYXJrZXIoY29uc3QgTlM6OlN0cmluZyogbWFya2VyLCBOUzo6UmFuZ2UgcmFuZ2UpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFkZERl
YnVnTWFya2VyX3JhbmdlXyksIG1hcmtlciwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHJlbW92
ZUFsbERlYnVnTWFya2VycworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlcjo6cmVtb3ZlQWxs
RGVidWdNYXJrZXJzKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocmVtb3ZlQWxsRGVidWdNYXJrZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5
OiByZW1vdGVTdG9yYWdlQnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpCdWZm
ZXI6OnJlbW90ZVN0b3JhZ2VCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZW1vdGVTdG9y
YWdlQnVmZmVyKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVtb3RlQnVmZmVyVmlld0ZvckRldmlj
ZToKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkJ1ZmZlcjo6bmV3UmVtb3RlQnVmZmVy
Vmlld0ZvckRldmljZShjb25zdCBNVEw6OkRldmljZSogZGV2aWNlKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdSZW1vdGVCdWZmZXJWaWV3Rm9yRGV2aWNlXyksIGRldmljZSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1hbmFnZXIuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVNYW5hZ2Vy
LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xOGUxMGY1YzIzNGIwZjFlNDY2MDY0N2QxZWFiOTAwMDA0MjlkODc0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTENhcHR1cmVNYW5hZ2VyLmhwcApAQCAtMCwwICsxLDIyMCBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ2FwdHVyZU1h
bmFnZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdl
LmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExDYXB0dXJlTWFuYWdlci5ocHAiCisKK25h
bWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6SW50ZWdlciwgQ2FwdHVyZUVycm9yKSB7Cisg
ICAgQ2FwdHVyZUVycm9yTm90U3VwcG9ydGVkID0gMSwKKyAgICBDYXB0dXJlRXJyb3JBbHJlYWR5
Q2FwdHVyaW5nID0gMiwKKyAgICBDYXB0dXJlRXJyb3JJbnZhbGlkRGVzY3JpcHRvciA9IDMsCit9
OworCitfTVRMX0VOVU0oTlM6OkludGVnZXIsIENhcHR1cmVEZXN0aW5hdGlvbikgeworICAgIENh
cHR1cmVEZXN0aW5hdGlvbkRldmVsb3BlclRvb2xzID0gMSwKKyAgICBDYXB0dXJlRGVzdGluYXRp
b25HUFVUcmFjZURvY3VtZW50ID0gMiwKK307CisKK2NsYXNzIENhcHR1cmVEZXNjcmlwdG9yIDog
cHVibGljIE5TOjpDb3B5aW5nPENhcHR1cmVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0
YXRpYyBjbGFzcyBDYXB0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIENhcHR1
cmVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXB0dXJlT2JqZWN0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRDYXB0dXJlT2JqZWN0KGlkIGNhcHR1cmVPYmplY3QpOworCisgICAg
TVRMOjpDYXB0dXJlRGVzdGluYXRpb24gICAgICAgICBkZXN0aW5hdGlvbigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVzdGluYXRpb24oTVRMOjpDYXB0
dXJlRGVzdGluYXRpb24gZGVzdGluYXRpb24pOworCisgICAgTlM6OlVSTCogICAgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXRVUkwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldE91dHB1dFVSTChjb25zdCBOUzo6VVJMKiBvdXRwdXRVUkwpOworfTsKKwor
Y2xhc3MgQ2FwdHVyZU1hbmFnZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENhcHR1cmVNYW5h
Z2VyPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDYXB0dXJlTWFuYWdlciogYWxsb2Mo
KTsKKworICAgIHN0YXRpYyBjbGFzcyBDYXB0dXJlTWFuYWdlciogc2hhcmVkQ2FwdHVyZU1hbmFn
ZXIoKTsKKworICAgIE1UTDo6Q2FwdHVyZU1hbmFnZXIqICAgICAgICAgaW5pdCgpOworCisgICAg
Y2xhc3MgQ2FwdHVyZVNjb3BlKiAgICAgICAgICBuZXdDYXB0dXJlU2NvcGUoY29uc3QgY2xhc3Mg
RGV2aWNlKiBkZXZpY2UpOworCisgICAgY2xhc3MgQ2FwdHVyZVNjb3BlKiAgICAgICAgICBuZXdD
YXB0dXJlU2NvcGUoY29uc3QgY2xhc3MgQ29tbWFuZFF1ZXVlKiBjb21tYW5kUXVldWUpOworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0Rlc3RpbmF0aW9uKE1UTDo6
Q2FwdHVyZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKTsKKworICAgIGJvb2wgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhcnRDYXB0dXJlKGNvbnN0IGNsYXNzIENhcHR1cmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0Q2FwdHVyZShjb25zdCBjbGFzcyBEZXZpY2UqIGRldmljZSk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q2FwdHVyZShjb25zdCBjbGFzcyBD
b21tYW5kUXVldWUqIGNvbW1hbmRRdWV1ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0Q2FwdHVyZShjb25zdCBjbGFzcyBDYXB0dXJlU2NvcGUqIGNhcHR1cmVTY29w
ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BDYXB0dXJlKCk7CisK
KyAgICBjbGFzcyBDYXB0dXJlU2NvcGUqICAgICAgICAgIGRlZmF1bHRDYXB0dXJlU2NvcGUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlZmF1bHRDYXB0dXJl
U2NvcGUoY29uc3QgY2xhc3MgQ2FwdHVyZVNjb3BlKiBkZWZhdWx0Q2FwdHVyZVNjb3BlKTsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgaXNDYXB0dXJpbmcoKSBjb25zdDsKK307
CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVy
ZURlc2NyaXB0b3IqIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDYXB0dXJlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRF
X0NMUyhNVExDYXB0dXJlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3IqIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q2FwdHVyZURlc2NyaXB0
b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBjYXB0dXJlT2JqZWN0CitfTVRMX0lOTElORSBpZCBN
VEw6OkNhcHR1cmVEZXNjcmlwdG9yOjpjYXB0dXJlT2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxpZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjYXB0dXJl
T2JqZWN0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlRGVzY3JpcHRvcjo6
c2V0Q2FwdHVyZU9iamVjdChpZCBjYXB0dXJlT2JqZWN0KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDYXB0dXJlT2JqZWN0XyksIGNh
cHR1cmVPYmplY3QpOworfQorCisvLyBwcm9wZXJ0eTogZGVzdGluYXRpb24KK19NVExfSU5MSU5F
IE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OmRlc3RpbmF0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNhcHR1
cmVEZXN0aW5hdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXN0aW5hdGlvbikpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OnNldERlc3RpbmF0aW9u
KE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXN0aW5hdGlvbl8pLCBk
ZXN0aW5hdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBvdXRwdXRVUkwKK19NVExfSU5MSU5FIE5T
OjpVUkwqIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6Om91dHB1dFVSTCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVSTCo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwob3V0cHV0VVJMKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlRGVzY3Jp
cHRvcjo6c2V0T3V0cHV0VVJMKGNvbnN0IE5TOjpVUkwqIG91dHB1dFVSTCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3V0cHV0VVJM
XyksIG91dHB1dFVSTCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OkNhcHR1cmVNYW5hZ2VyKiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q2FwdHVyZU1hbmFnZXI+KF9NVExfUFJJ
VkFURV9DTFMoTVRMQ2FwdHVyZU1hbmFnZXIpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogc2hh
cmVkQ2FwdHVyZU1hbmFnZXIKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVyZU1hbmFnZXIqIE1UTDo6
Q2FwdHVyZU1hbmFnZXI6OnNoYXJlZENhcHR1cmVNYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNhcHR1cmVNYW5hZ2VyKj4oX01UTF9QUklWQVRFX0NMUyhN
VExDYXB0dXJlTWFuYWdlciksIF9NVExfUFJJVkFURV9TRUwoc2hhcmVkQ2FwdHVyZU1hbmFnZXIp
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVNYW5hZ2Vy
KiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OkNhcHR1cmVNYW5hZ2VyPigpOworfQorCisvLyBtZXRob2Q6IG5ld0NhcHR1cmVT
Y29wZVdpdGhEZXZpY2U6CitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVTY29wZSogTVRMOjpDYXB0
dXJlTWFuYWdlcjo6bmV3Q2FwdHVyZVNjb3BlKGNvbnN0IE1UTDo6RGV2aWNlKiBkZXZpY2UpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDYXB0dXJlU2NvcGUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhEZXZpY2VfKSwgZGV2aWNlKTsK
K30KKworLy8gbWV0aG9kOiBuZXdDYXB0dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlOgorX01UTF9J
TkxJTkUgTVRMOjpDYXB0dXJlU2NvcGUqIE1UTDo6Q2FwdHVyZU1hbmFnZXI6Om5ld0NhcHR1cmVT
Y29wZShjb25zdCBNVEw6OkNvbW1hbmRRdWV1ZSogY29tbWFuZFF1ZXVlKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q2FwdHVyZVNjb3BlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdDYXB0dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlXyksIGNvbW1hbmRRdWV1ZSk7
Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNEZXN0aW5hdGlvbjoKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpDYXB0dXJlTWFuYWdlcjo6c3VwcG9ydHNEZXN0aW5hdGlvbihNVEw6OkNhcHR1cmVEZXN0
aW5hdGlvbiBkZXN0aW5hdGlvbikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNh
ZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c0Rlc3RpbmF0aW9uXyksIGRl
c3RpbmF0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRvcjpl
cnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDYXB0dXJlTWFuYWdlcjo6c3RhcnRDYXB0dXJl
KGNvbnN0IE1UTDo6Q2FwdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVy
cm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRv
ciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IHN0YXJ0Q2FwdHVyZVdpdGhEZXZpY2U6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN0YXJ0Q2FwdHVyZShjb25zdCBNVEw6
OkRldmljZSogZGV2aWNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdGFydENhcHR1cmVXaXRoRGV2aWNlXyksIGRldmljZSk7Cit9CisK
Ky8vIG1ldGhvZDogc3RhcnRDYXB0dXJlV2l0aENvbW1hbmRRdWV1ZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDYXB0dXJlTWFuYWdlcjo6c3RhcnRDYXB0dXJlKGNvbnN0IE1UTDo6Q29tbWFuZFF1
ZXVlKiBjb21tYW5kUXVldWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0Q2FwdHVyZVdpdGhDb21tYW5kUXVldWVfKSwgY29tbWFu
ZFF1ZXVlKTsKK30KKworLy8gbWV0aG9kOiBzdGFydENhcHR1cmVXaXRoU2NvcGU6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN0YXJ0Q2FwdHVyZShjb25zdCBNVEw6OkNh
cHR1cmVTY29wZSogY2FwdHVyZVNjb3BlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFydENhcHR1cmVXaXRoU2NvcGVfKSwgY2FwdHVy
ZVNjb3BlKTsKK30KKworLy8gbWV0aG9kOiBzdG9wQ2FwdHVyZQorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNhcHR1cmVNYW5hZ2VyOjpzdG9wQ2FwdHVyZSgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3BDYXB0dXJlKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBkZWZhdWx0Q2FwdHVyZVNjb3BlCitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVT
Y29wZSogTVRMOjpDYXB0dXJlTWFuYWdlcjo6ZGVmYXVsdENhcHR1cmVTY29wZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDYXB0dXJlU2NvcGUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGRlZmF1bHRDYXB0dXJlU2NvcGUpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpzZXREZWZhdWx0Q2FwdHVyZVNjb3BlKGNvbnN0
IE1UTDo6Q2FwdHVyZVNjb3BlKiBkZWZhdWx0Q2FwdHVyZVNjb3BlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZWZhdWx0Q2FwdHVy
ZVNjb3BlXyksIGRlZmF1bHRDYXB0dXJlU2NvcGUpOworfQorCisvLyBwcm9wZXJ0eTogaXNDYXB0
dXJpbmcKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDYXB0dXJlTWFuYWdlcjo6aXNDYXB0dXJpbmco
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaXNDYXB0dXJpbmcpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlU2NvcGUuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVTY29wZS5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjM2MDIzNWExNDg2MWI4ZWNiY2ZmY2Y0MDJkNWEzY2ExMjQ1MTk5OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlU2Nv
cGUuaHBwCkBAIC0wLDAgKzEsOTIgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTENhcHR1cmVTY29wZS5ocHAKKy8vCisvLyBD
b3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5o
cHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlICIuLi9Gb3VuZGF0aW9u
L05TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICIuLi9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcCIKKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFj
ZSBNVEwKK3sKK2NsYXNzIENhcHR1cmVTY29wZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q2Fw
dHVyZVNjb3BlPgoreworcHVibGljOgorICAgIGNsYXNzIERldmljZSogICAgICAgZGV2aWNlKCkg
Y29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBwTGFiZWwpOworCisg
ICAgY2xhc3MgQ29tbWFuZFF1ZXVlKiBjb21tYW5kUXVldWUoKSBjb25zdDsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgYmVnaW5TY29wZSgpOworICAgIHZvaWQgICAgICAgICAgICAgICAgZW5k
U2NvcGUoKTsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpDYXB0dXJlU2NvcGU6OmRl
dmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGV2aWNlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6Q2FwdHVyZVNjb3BlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlU2NvcGU6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcq
IHBMYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0TGFiZWxfKSwgcExhYmVsKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZFF1ZXVl
KiBNVEw6OkNhcHR1cmVTY29wZTo6Y29tbWFuZFF1ZXVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxDb21tYW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGNvbW1hbmRRdWV1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVTY29wZTo6YmVnaW5T
Y29wZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChiZWdpblNjb3BlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZVNj
b3BlOjplbmRTY29wZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChlbmRTY29wZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMGZjOThlNTExYmY2YTNhZjMwZDM0M2Q0YmIzZjY1YjU1NGFmMTIwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRCdWZm
ZXIuaHBwCkBAIC0wLDAgKzEsNDY1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcAorLy8KKy8v
IENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1U
TERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAi
TVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgor
CisjaW5jbHVkZSAiTVRMQ29tbWFuZEJ1ZmZlci5ocHAiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ29tbWFuZEJ1ZmZl
clN0YXR1cykgeworICAgIENvbW1hbmRCdWZmZXJTdGF0dXNOb3RFbnF1ZXVlZCA9IDAsCisgICAg
Q29tbWFuZEJ1ZmZlclN0YXR1c0VucXVldWVkID0gMSwKKyAgICBDb21tYW5kQnVmZmVyU3RhdHVz
Q29tbWl0dGVkID0gMiwKKyAgICBDb21tYW5kQnVmZmVyU3RhdHVzU2NoZWR1bGVkID0gMywKKyAg
ICBDb21tYW5kQnVmZmVyU3RhdHVzQ29tcGxldGVkID0gNCwKKyAgICBDb21tYW5kQnVmZmVyU3Rh
dHVzRXJyb3IgPSA1LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ29tbWFuZEJ1ZmZl
ckVycm9yKSB7CisgICAgQ29tbWFuZEJ1ZmZlckVycm9yTm9uZSA9IDAsCisgICAgQ29tbWFuZEJ1
ZmZlckVycm9yVGltZW91dCA9IDIsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yUGFnZUZhdWx0ID0g
MywKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JBY2Nlc3NSZXZva2VkID0gNCwKKyAgICBDb21tYW5k
QnVmZmVyRXJyb3JCbGFja2xpc3RlZCA9IDQsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yTm90UGVy
bWl0dGVkID0gNywKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JPdXRPZk1lbW9yeSA9IDgsCisgICAg
Q29tbWFuZEJ1ZmZlckVycm9ySW52YWxpZFJlc291cmNlID0gOSwKKyAgICBDb21tYW5kQnVmZmVy
RXJyb3JNZW1vcnlsZXNzID0gMTAsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yRGV2aWNlUmVtb3Zl
ZCA9IDExLAorICAgIENvbW1hbmRCdWZmZXJFcnJvclN0YWNrT3ZlcmZsb3cgPSAxMiwKK307CisK
K19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIENvbW1hbmRCdWZmZXJFcnJvck9wdGlvbikgewor
ICAgIENvbW1hbmRCdWZmZXJFcnJvck9wdGlvbk5vbmUgPSAwLAorICAgIENvbW1hbmRCdWZmZXJF
cnJvck9wdGlvbkVuY29kZXJFeGVjdXRpb25TdGF0dXMgPSAxLAorfTsKKworX01UTF9FTlVNKE5T
OjpJbnRlZ2VyLCBDb21tYW5kRW5jb2RlckVycm9yU3RhdGUpIHsKKyAgICBDb21tYW5kRW5jb2Rl
ckVycm9yU3RhdGVVbmtub3duID0gMCwKKyAgICBDb21tYW5kRW5jb2RlckVycm9yU3RhdGVDb21w
bGV0ZWQgPSAxLAorICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZUFmZmVjdGVkID0gMiwKKyAg
ICBDb21tYW5kRW5jb2RlckVycm9yU3RhdGVQZW5kaW5nID0gMywKKyAgICBDb21tYW5kRW5jb2Rl
ckVycm9yU3RhdGVGYXVsdGVkID0gNCwKK307CisKK2NsYXNzIENvbW1hbmRCdWZmZXJEZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPgoreworcHVi
bGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsK
KworICAgIGNsYXNzIENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW5lZFJlZmVyZW5j
ZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFJldGFpbmVkUmVmZXJlbmNlcyhib29sIHJldGFpbmVkUmVmZXJlbmNlcyk7CisKKyAgICBNVEw6
OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbiAgICAgICAgIGVycm9yT3B0aW9ucygpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JPcHRpb25z
KE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uIGVycm9yT3B0aW9ucyk7Cit9OworCitjbGFz
cyBDb21tYW5kQnVmZmVyRW5jb2RlckluZm8gOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbW1h
bmRCdWZmZXJFbmNvZGVySW5mbz4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgICAgICAg
ICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAg
ICAgICAgZGVidWdTaWducG9zdHMoKSBjb25zdDsKKworICAgIE1UTDo6Q29tbWFuZEVuY29kZXJF
cnJvclN0YXRlIGVycm9yU3RhdGUoKSBjb25zdDsKK307CisKK19NVExfRU5VTShOUzo6VUludGVn
ZXIsIERpc3BhdGNoVHlwZSkgeworICAgIERpc3BhdGNoVHlwZVNlcmlhbCA9IDAsCisgICAgRGlz
cGF0Y2hUeXBlQ29uY3VycmVudCA9IDEsCit9OworCitjbGFzcyBDb21tYW5kQnVmZmVyOworCit1
c2luZyBDb21tYW5kQnVmZmVySGFuZGxlciA9IHZvaWQgKF4pKENvbW1hbmRCdWZmZXIqKTsKKwor
dXNpbmcgSGFuZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkKENvbW1hbmRCdWZmZXIq
KT47CisKK2NsYXNzIENvbW1hbmRCdWZmZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbW1h
bmRCdWZmZXI+Cit7CitwdWJsaWM6CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZFNjaGVkdWxlZEhhbmRsZXIoY29uc3QgSGFuZGxlckZ1bmN0aW9uJiBm
dW5jdGlvbik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkQ29tcGxldGVkSGFuZGxlcihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKTsK
KworICAgIGNsYXNzIERldmljZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2Uo
KSBjb25zdDsKKworICAgIGNsYXNzIENvbW1hbmRRdWV1ZSogICAgICAgICAgICAgICAgICAgICAg
ICBjb21tYW5kUXVldWUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXRhaW5lZFJlZmVyZW5jZXMoKSBjb25zdDsKKworICAgIE1UTDo6
Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uICAgICAgICAgICAgICBlcnJvck9wdGlvbnMoKSBjb25z
dDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJl
bCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisKKyAgICBDRlRpbWVJbnRlcnZh
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsU3RhcnRUaW1lKCkgY29uc3Q7CisK
KyAgICBDRlRpbWVJbnRlcnZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsRW5k
VGltZSgpIGNvbnN0OworCisgICAgY2xhc3MgTG9nQ29udGFpbmVyKiAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ3MoKSBjb25zdDsKKworICAgIENGVGltZUludGVydmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHUFVTdGFydFRpbWUoKSBjb25zdDsKKworICAgIENGVGltZUludGVydmFs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUFVFbmRUaW1lKCkgY29uc3Q7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5xdWV1ZSgpOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdCgpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFNjaGVk
dWxlZEhhbmRsZXIoY29uc3QgTVRMOjpDb21tYW5kQnVmZmVySGFuZGxlciBibG9jayk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudERyYXdh
YmxlKGNvbnN0IGNsYXNzIERyYXdhYmxlKiBkcmF3YWJsZSk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudERyYXdhYmxlQXRUaW1lKGNvbnN0
IGNsYXNzIERyYXdhYmxlKiBkcmF3YWJsZSwgQ0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9uVGlt
ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJl
c2VudERyYXdhYmxlQWZ0ZXJNaW5pbXVtRHVyYXRpb24oY29uc3QgY2xhc3MgRHJhd2FibGUqIGRy
YXdhYmxlLCBDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbik7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdFVudGlsU2NoZWR1bGVkKCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29tcGxldGVkSGFu
ZGxlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJIYW5kbGVyIGJsb2NrKTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0VW50aWxDb21wbGV0ZWQo
KTsKKworICAgIE1UTDo6Q29tbWFuZEJ1ZmZlclN0YXR1cyAgICAgICAgICAgICAgICAgICBzdGF0
dXMoKSBjb25zdDsKKworICAgIE5TOjpFcnJvciogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcigpIGNvbnN0OworCisgICAgY2xhc3MgQmxpdENvbW1hbmRFbmNvZGVyKiAgICAg
ICAgICAgICAgICAgIGJsaXRDb21tYW5kRW5jb2RlcigpOworCisgICAgY2xhc3MgUmVuZGVyQ29t
bWFuZEVuY29kZXIqICAgICAgICAgICAgICAgIHJlbmRlckNvbW1hbmRFbmNvZGVyKGNvbnN0IGNs
YXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVzY3JpcHRvcik7CisKKyAgICBj
bGFzcyBDb21wdXRlQ29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAgY29tcHV0ZUNvbW1hbmRF
bmNvZGVyKGNvbnN0IGNsYXNzIENvbXB1dGVQYXNzRGVzY3JpcHRvciogY29tcHV0ZVBhc3NEZXNj
cmlwdG9yKTsKKworICAgIGNsYXNzIEJsaXRDb21tYW5kRW5jb2RlciogICAgICAgICAgICAgICAg
ICBibGl0Q29tbWFuZEVuY29kZXIoY29uc3QgY2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yKiBibGl0
UGFzc0Rlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQ29tcHV0ZUNvbW1hbmRFbmNvZGVyKiAgICAg
ICAgICAgICAgIGNvbXB1dGVDb21tYW5kRW5jb2RlcigpOworCisgICAgY2xhc3MgQ29tcHV0ZUNv
bW1hbmRFbmNvZGVyKiAgICAgICAgICAgICAgIGNvbXB1dGVDb21tYW5kRW5jb2RlcihNVEw6OkRp
c3BhdGNoVHlwZSBkaXNwYXRjaFR5cGUpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVuY29kZVdhaXQoY29uc3QgY2xhc3MgRXZlbnQqIGV2ZW50LCB1
aW50NjRfdCB2YWx1ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5jb2RlU2lnbmFsRXZlbnQoY29uc3QgY2xhc3MgRXZlbnQqIGV2ZW50LCB1aW50
NjRfdCB2YWx1ZSk7CisKKyAgICBjbGFzcyBQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyKiAg
ICAgICAgcGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBjbGFzcyBSZW5kZXJQYXNz
RGVzY3JpcHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3IpOworCisgICAgY2xhc3MgUmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyKiAgICAgICAgIHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcigp
OworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKiAgICAgICAgIHJlc291
cmNlU3RhdGVDb21tYW5kRW5jb2Rlcihjb25zdCBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc0Rlc2Ny
aXB0b3IqIHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciogYWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFu
ZEVuY29kZXIoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoRGVidWdHcm91cChjb25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpOworCisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcERlYnVnR3JvdXAoKTsK
K307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21tYW5kQnVmZmVyRGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21tYW5kQnVmZmVyRGVzY3JpcHRvcikpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2Ny
aXB0b3IqIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiByZXRhaW5lZFJlZmVyZW5jZXMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpD
b21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6cmV0YWluZWRSZWZlcmVuY2VzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHJldGFpbmVkUmVmZXJlbmNlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3I6OnNldFJldGFpbmVkUmVmZXJlbmNlcyhib29sIHJldGFpbmVkUmVm
ZXJlbmNlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0UmV0YWluZWRSZWZlcmVuY2VzXyksIHJldGFpbmVkUmVmZXJlbmNlcyk7Cit9
CisKKy8vIHByb3BlcnR5OiBlcnJvck9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1
ZmZlckVycm9yT3B0aW9uIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmVycm9yT3B0aW9u
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5k
QnVmZmVyRXJyb3JPcHRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXJyb3JPcHRpb25zKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6c2V0
RXJyb3JPcHRpb25zKE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uIGVycm9yT3B0aW9ucykK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RXJyb3JPcHRpb25zXyksIGVycm9yT3B0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJl
bAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21tYW5kQnVmZmVyRW5jb2RlckluZm86
OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTog
ZGVidWdTaWducG9zdHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpDb21tYW5kQnVmZmVy
RW5jb2RlckluZm86OmRlYnVnU2lnbnBvc3RzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlYnVnU2ln
bnBvc3RzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBlcnJvclN0YXRlCitfTVRMX0lOTElORSBNVEw6
OkNvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZSBNVEw6OkNvbW1hbmRCdWZmZXJFbmNvZGVySW5mbzo6
ZXJyb3JTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpDb21tYW5kRW5jb2RlckVycm9yU3RhdGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXJyb3JT
dGF0ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YWRkU2No
ZWR1bGVkSGFuZGxlcihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKQoreworICAgIF9f
YmxvY2sgSGFuZGxlckZ1bmN0aW9uIGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIGFk
ZFNjaGVkdWxlZEhhbmRsZXIoXihNVEw6OkNvbW1hbmRCdWZmZXIqIHBDb21tYW5kQnVmZmVyKSB7
IGJsb2NrRnVuY3Rpb24ocENvbW1hbmRCdWZmZXIpOyB9KTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmFkZENvbXBsZXRlZEhhbmRsZXIoY29uc3QgSGFuZGxlckZ1
bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIEhhbmRsZXJGdW5jdGlvbiBibG9ja0Z1
bmN0aW9uID0gZnVuY3Rpb247CisKKyAgICBhZGRDb21wbGV0ZWRIYW5kbGVyKF4oTVRMOjpDb21t
YW5kQnVmZmVyKiBwQ29tbWFuZEJ1ZmZlcikgeyBibG9ja0Z1bmN0aW9uKHBDb21tYW5kQnVmZmVy
KTsgfSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNl
KiBNVEw6OkNvbW1hbmRCdWZmZXI6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmlj
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogY29tbWFuZFF1ZXVlCitfTVRMX0lOTElORSBNVEw6OkNv
bW1hbmRRdWV1ZSogTVRMOjpDb21tYW5kQnVmZmVyOjpjb21tYW5kUXVldWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZFF1ZXVlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChjb21tYW5kUXVldWUpKTsKK30KKworLy8gcHJvcGVydHk6IHJldGFp
bmVkUmVmZXJlbmNlcworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkNvbW1hbmRCdWZmZXI6OnJldGFp
bmVkUmVmZXJlbmNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXRhaW5lZFJlZmVyZW5jZXMpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGVycm9yT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVy
RXJyb3JPcHRpb24gTVRMOjpDb21tYW5kQnVmZmVyOjplcnJvck9wdGlvbnMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0
aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVycm9yT3B0aW9ucykpOworfQorCisvLyBwcm9w
ZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJp
bmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21tYW5kQnVmZmVyOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eToga2VybmVsU3RhcnRUaW1lCitf
TVRMX0lOTElORSBDRlRpbWVJbnRlcnZhbCBNVEw6OkNvbW1hbmRCdWZmZXI6Omtlcm5lbFN0YXJ0
VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Q0ZUaW1lSW50
ZXJ2YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoa2VybmVsU3RhcnRUaW1lKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBrZXJuZWxFbmRUaW1lCitfTVRMX0lOTElORSBDRlRpbWVJbnRlcnZhbCBNVEw6
OkNvbW1hbmRCdWZmZXI6Omtlcm5lbEVuZFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPENGVGltZUludGVydmFsPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGtl
cm5lbEVuZFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGxvZ3MKK19NVExfSU5MSU5FIE1UTDo6
TG9nQ29udGFpbmVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmxvZ3MoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TG9nQ29udGFpbmVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChsb2dzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBHUFVTdGFydFRpbWUKK19NVExf
SU5MSU5FIENGVGltZUludGVydmFsIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6R1BVU3RhcnRUaW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxDRlRpbWVJbnRlcnZhbD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChHUFVTdGFydFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6
IEdQVUVuZFRpbWUKK19NVExfSU5MSU5FIENGVGltZUludGVydmFsIE1UTDo6Q29tbWFuZEJ1ZmZl
cjo6R1BVRW5kVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Q0ZUaW1lSW50ZXJ2YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoR1BVRW5kVGltZSkpOworfQor
CisvLyBtZXRob2Q6IGVucXVldWUKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVy
OjplbnF1ZXVlKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZW5xdWV1ZSkpOworfQorCisvLyBtZXRob2Q6IGNvbW1pdAorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmNvbW1pdCgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbW1pdCkpOworfQorCisvLyBt
ZXRob2Q6IGFkZFNjaGVkdWxlZEhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFu
ZEJ1ZmZlcjo6YWRkU2NoZWR1bGVkSGFuZGxlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJIYW5k
bGVyIGJsb2NrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChhZGRTY2hlZHVsZWRIYW5kbGVyXyksIGJsb2NrKTsKK30KKworLy8gbWV0aG9k
OiBwcmVzZW50RHJhd2FibGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
cHJlc2VudERyYXdhYmxlKGNvbnN0IE1UTDo6RHJhd2FibGUqIGRyYXdhYmxlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVzZW50RHJh
d2FibGVfKSwgZHJhd2FibGUpOworfQorCisvLyBtZXRob2Q6IHByZXNlbnREcmF3YWJsZTphdFRp
bWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cHJlc2VudERyYXdhYmxl
QXRUaW1lKGNvbnN0IE1UTDo6RHJhd2FibGUqIGRyYXdhYmxlLCBDRlRpbWVJbnRlcnZhbCBwcmVz
ZW50YXRpb25UaW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChwcmVzZW50RHJhd2FibGVfYXRUaW1lXyksIGRyYXdhYmxlLCBwcmVzZW50
YXRpb25UaW1lKTsKK30KKworLy8gbWV0aG9kOiBwcmVzZW50RHJhd2FibGU6YWZ0ZXJNaW5pbXVt
RHVyYXRpb246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cHJlc2VudERy
YXdhYmxlQWZ0ZXJNaW5pbXVtRHVyYXRpb24oY29uc3QgTVRMOjpEcmF3YWJsZSogZHJhd2FibGUs
IENGVGltZUludGVydmFsIGR1cmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVzZW50RHJhd2FibGVfYWZ0ZXJNaW5pbXVtRHVy
YXRpb25fKSwgZHJhd2FibGUsIGR1cmF0aW9uKTsKK30KKworLy8gbWV0aG9kOiB3YWl0VW50aWxT
Y2hlZHVsZWQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjp3YWl0VW50aWxT
Y2hlZHVsZWQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh3YWl0VW50aWxTY2hlZHVsZWQpKTsKK30KKworLy8gbWV0aG9kOiBhZGRDb21w
bGV0ZWRIYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmFkZENv
bXBsZXRlZEhhbmRsZXIoY29uc3QgTVRMOjpDb21tYW5kQnVmZmVySGFuZGxlciBibG9jaykKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRk
Q29tcGxldGVkSGFuZGxlcl8pLCBibG9jayk7Cit9CisKKy8vIG1ldGhvZDogd2FpdFVudGlsQ29t
cGxldGVkCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6d2FpdFVudGlsQ29t
cGxldGVkKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwod2FpdFVudGlsQ29tcGxldGVkKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGF0dXMK
K19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlclN0YXR1cyBNVEw6OkNvbW1hbmRCdWZmZXI6
OnN0YXR1cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpD
b21tYW5kQnVmZmVyU3RhdHVzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXR1cykpOworfQor
CisvLyBwcm9wZXJ0eTogZXJyb3IKK19NVExfSU5MSU5FIE5TOjpFcnJvciogTVRMOjpDb21tYW5k
QnVmZmVyOjplcnJvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OkVycm9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlcnJvcikpOworfQorCisvLyBtZXRo
b2Q6IGJsaXRDb21tYW5kRW5jb2RlcgorX01UTF9JTkxJTkUgTVRMOjpCbGl0Q29tbWFuZEVuY29k
ZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YmxpdENvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcio+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYmxpdENvbW1hbmRFbmNvZGVyKSk7Cit9CisKKy8vIG1ldGhvZDogcmVu
ZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cmVuZGVyQ29tbWFuZEVuY29kZXIo
Y29uc3QgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3IpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3Jp
cHRvcl8pLCByZW5kZXJQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogY29tcHV0ZUNv
bW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVDb21t
YW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpjb21wdXRlQ29tbWFuZEVuY29kZXIoY29u
c3QgTVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3IqIGNvbXB1dGVQYXNzRGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rl
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tcHV0ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2Ny
aXB0b3JfKSwgY29tcHV0ZVBhc3NEZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBibGl0Q29t
bWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6QmxpdENvbW1hbmRF
bmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmJsaXRDb21tYW5kRW5jb2Rlcihjb25zdCBNVEw6
OkJsaXRQYXNzRGVzY3JpcHRvciogYmxpdFBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChibGl0Q29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8pLCBibGl0UGFzc0Rl
c2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IGNvbXB1dGVDb21tYW5kRW5jb2RlcgorX01UTF9J
TkxJTkUgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6Y29t
cHV0ZUNvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tcHV0
ZUNvbW1hbmRFbmNvZGVyKSk7Cit9CisKKy8vIG1ldGhvZDogY29tcHV0ZUNvbW1hbmRFbmNvZGVy
V2l0aERpc3BhdGNoVHlwZToKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVy
KiBNVEw6OkNvbW1hbmRCdWZmZXI6OmNvbXB1dGVDb21tYW5kRW5jb2RlcihNVEw6OkRpc3BhdGNo
VHlwZSBkaXNwYXRjaFR5cGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbXB1dGVD
b21tYW5kRW5jb2RlcldpdGhEaXNwYXRjaFR5cGVfKSwgZGlzcGF0Y2hUeXBlKTsKK30KKworLy8g
bWV0aG9kOiBlbmNvZGVXYWl0Rm9yRXZlbnQ6dmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tbWFuZEJ1ZmZlcjo6ZW5jb2RlV2FpdChjb25zdCBNVEw6OkV2ZW50KiBldmVudCwgdWludDY0
X3QgdmFsdWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGVuY29kZVdhaXRGb3JFdmVudF92YWx1ZV8pLCBldmVudCwgdmFsdWUpOworfQor
CisvLyBtZXRob2Q6IGVuY29kZVNpZ25hbEV2ZW50OnZhbHVlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNvbW1hbmRCdWZmZXI6OmVuY29kZVNpZ25hbEV2ZW50KGNvbnN0IE1UTDo6RXZlbnQqIGV2
ZW50LCB1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlU2lnbmFsRXZlbnRfdmFsdWVfKSwgZXZlbnQsIHZh
bHVlKTsKK30KKworLy8gbWV0aG9kOiBwYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERl
c2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIq
IE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBN
VEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVzY3JpcHRvcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29k
ZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXJX
aXRoRGVzY3JpcHRvcl8pLCByZW5kZXJQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDog
cmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3Rh
dGVDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpyZXNvdXJjZVN0YXRlQ29tbWFu
ZEVuY29kZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3Vy
Y2VTdGF0ZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXIpKTsKK30KKworLy8gbWV0aG9kOiByZXNvdXJjZVN0YXRlQ29tbWFu
ZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZUNv
bW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OnJlc291cmNlU3RhdGVDb21tYW5kRW5j
b2Rlcihjb25zdCBNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogcmVzb3VyY2VTdGF0
ZVBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNv
dXJjZVN0YXRlQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8pLCByZXNvdXJjZVN0YXRlUGFz
c0Rlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IGFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1h
bmRFbmNvZGVyCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRF
bmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRF
bmNvZGVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlcikpOworfQorCisvLyBtZXRob2Q6IHB1c2hE
ZWJ1Z0dyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OnB1c2hEZWJ1
Z0dyb3VwKGNvbnN0IE5TOjpTdHJpbmcqIHN0cmluZykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHVzaERlYnVnR3JvdXBfKSwgc3RyaW5n
KTsKK30KKworLy8gbWV0aG9kOiBwb3BEZWJ1Z0dyb3VwCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tbWFuZEJ1ZmZlcjo6cG9wRGVidWdHcm91cCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBvcERlYnVnR3JvdXApKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kRW5j
b2Rlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tbWFu
ZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMWYzOTJiYjRmNjAxNGE5MTNlMWNhMjU1MzAxYWY0
YWU2OGMxZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQ29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsMTAxIEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExD
b21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9PUFRJT05T
KE5TOjpVSW50ZWdlciwgUmVzb3VyY2VVc2FnZSkgeworICAgIFJlc291cmNlVXNhZ2VSZWFkID0g
MSwKKyAgICBSZXNvdXJjZVVzYWdlV3JpdGUgPSAyLAorICAgIFJlc291cmNlVXNhZ2VTYW1wbGUg
PSA0LAorfTsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgQmFycmllclNjb3BlKSB7Cisg
ICAgQmFycmllclNjb3BlQnVmZmVycyA9IDEsCisgICAgQmFycmllclNjb3BlVGV4dHVyZXMgPSAy
LAorICAgIEJhcnJpZXJTY29wZVJlbmRlclRhcmdldHMgPSA0LAorfTsKKworY2xhc3MgQ29tbWFu
ZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbW1hbmRFbmNvZGVyPgoreworcHVi
bGljOgorICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5n
KiAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6
U3RyaW5nKiBsYWJlbCk7CisKKyAgICB2b2lkICAgICAgICAgIGVuZEVuY29kaW5nKCk7CisKKyAg
ICB2b2lkICAgICAgICAgIGluc2VydERlYnVnU2lnbnBvc3QoY29uc3QgTlM6OlN0cmluZyogc3Ry
aW5nKTsKKworICAgIHZvaWQgICAgICAgICAgcHVzaERlYnVnR3JvdXAoY29uc3QgTlM6OlN0cmlu
Zyogc3RyaW5nKTsKKworICAgIHZvaWQgICAgICAgICAgcG9wRGVidWdHcm91cCgpOworfTsKKwor
fQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpD
b21tYW5kRW5jb2Rlcjo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21t
YW5kRW5jb2Rlcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kRW5jb2Rlcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0
cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gbWV0aG9kOiBlbmRFbmNv
ZGluZworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRFbmNvZGVyOjplbmRFbmNvZGluZygp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGVuZEVuY29kaW5nKSk7Cit9CisKKy8vIG1ldGhvZDogaW5zZXJ0RGVidWdTaWducG9zdDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVidWdTaWducG9zdChj
b25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc2VydERlYnVnU2lnbnBvc3RfKSwgc3RyaW5nKTsK
K30KKworLy8gbWV0aG9kOiBwdXNoRGVidWdHcm91cDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21tYW5kRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXAoY29uc3QgTlM6OlN0cmluZyogc3RyaW5nKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChw
dXNoRGVidWdHcm91cF8pLCBzdHJpbmcpOworfQorCisvLyBtZXRob2Q6IHBvcERlYnVnR3JvdXAK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kRW5jb2Rlcjo6cG9wRGVidWdHcm91cCgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBv
cERlYnVnR3JvdXApKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTENvbW1hbmRRdWV1ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU0YTE2ZTE0YTYz
Y2VjYzNlYzRiYzc0ZWJiZjA4NWE0NjVkNjViZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBwCkBAIC0wLDAg
KzEsODkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIE1ldGFsL01UTENvbW1hbmRRdWV1ZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0y
MDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNp
bmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgor
CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAor
eworY2xhc3MgQ29tbWFuZFF1ZXVlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21tYW5kUXVl
dWU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgbGFiZWwoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJl
bCk7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIGNs
YXNzIENvbW1hbmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIoKTsKKworICAgIGNsYXNzIENvbW1hbmRC
dWZmZXIqIGNvbW1hbmRCdWZmZXIoY29uc3QgY2xhc3MgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcldp
dGhVbnJldGFpbmVkUmVmZXJlbmNlcygpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgaW5z
ZXJ0RGVidWdDYXB0dXJlQm91bmRhcnkoKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGxhYmVs
CitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNvbW1hbmRRdWV1ZTo6bGFiZWwoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21t
YW5kUXVldWU6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBs
YWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNl
KiBNVEw6OkNvbW1hbmRRdWV1ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNl
KSk7Cit9CisKKy8vIG1ldGhvZDogY29tbWFuZEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpDb21t
YW5kQnVmZmVyKiBNVEw6OkNvbW1hbmRRdWV1ZTo6Y29tbWFuZEJ1ZmZlcigpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5kQnVmZmVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChjb21tYW5kQnVmZmVyKSk7Cit9CisKKy8vIG1ldGhvZDogY29tbWFuZEJ1ZmZl
cldpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyKiBNVEw6OkNv
bW1hbmRRdWV1ZTo6Y29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
Q29tbWFuZEJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZEJ1ZmZlcldpdGhE
ZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IGNvbW1hbmRCdWZmZXJX
aXRoVW5yZXRhaW5lZFJlZmVyZW5jZXMKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlciog
TVRMOjpDb21tYW5kUXVldWU6OmNvbW1hbmRCdWZmZXJXaXRoVW5yZXRhaW5lZFJlZmVyZW5jZXMo
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZEJ1ZmZlcio+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZEJ1ZmZlcldpdGhVbnJldGFpbmVkUmVmZXJl
bmNlcykpOworfQorCisvLyBtZXRob2Q6IGluc2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZFF1ZXVlOjppbnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFy
eSgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluc2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhw
cCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29tbWFu
ZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYTllZjc4YjFlMGMzMTRkY2NjZmVkMDRjODYzODgx
ZGE4ZmJjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcApAQCAtMCwwICsxLDMzNyBAQAor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0
YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIw
MjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2lu
Y2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisK
KyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQnVm
ZmVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExD
b21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMSGVhcC5ocHAiCisjaW5jbHVkZSAiTVRM
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBw
IgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBwIgor
I2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlICJNVExWaXNpYmxlRnVuY3Rpb25UYWJs
ZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK3N0cnVjdCBEaXNwYXRjaFRocmVhZGdyb3Vwc0lu
ZGlyZWN0QXJndW1lbnRzCit7CisgICAgdWludDMyX3QgdGhyZWFkZ3JvdXBzUGVyR3JpZFszXTsK
K30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBTdGFnZUluUmVnaW9uSW5kaXJlY3RBcmd1bWVudHMK
K3sKKyAgICB1aW50MzJfdCBzdGFnZUluT3JpZ2luWzNdOworICAgIHVpbnQzMl90IHN0YWdlSW5T
aXplWzNdOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgQ29tcHV0ZUNvbW1hbmRFbmNvZGVyIDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRlQ29tbWFuZEVuY29kZXIsIENvbW1hbmRFbmNv
ZGVyPgoreworcHVibGljOgorICAgIE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSgpIGNv
bnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29u
c3QgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHN0YXRlKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgIHNldEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0QnVmZmVyKGNv
bnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVn
ZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0QnVmZmVyT2Zmc2V0KE5TOjpV
SW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICBzZXRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdl
ciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBz
ZXRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSog
dmlzaWJsZUZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgVmlz
aWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFu
Z2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgSW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdl
IHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldEFjY2VsZXJhdGlvblN0cnVjdHVy
ZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVy
ZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNl
dFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4
dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFNh
bXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdl
ciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGVzKE1UTDo6
U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgc2V0U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2Ft
cGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIg
aW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0U2FtcGxlclN0YXRlcyhNVEw6OlNh
bXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0
IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldEltYWdlYmxv
Y2tXaWR0aChOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgc2V0U3RhZ2VJblJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24pOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgc2V0U3RhZ2VJblJlZ2lvbihjb25zdCBjbGFzcyBCdWZm
ZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgZGlzcGF0Y2hUaHJlYWRncm91cHMoTVRMOjpTaXplIHRo
cmVhZGdyb3Vwc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgZGlzcGF0Y2hUaHJlYWRncm91cHMoY29uc3QgY2xhc3MgQnVm
ZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0LCBN
VEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
IGRpc3BhdGNoVGhyZWFkcyhNVEw6OlNpemUgdGhyZWFkc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJl
YWRzUGVyVGhyZWFkZ3JvdXApOworCisgICAgdm9pZCAgICAgICAgICAgICAgdXBkYXRlRmVuY2Uo
Y29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHdhaXRG
b3JGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVuY2UpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3VyY2UqIHJlc291cmNlLCBNVEw6OlJlc291
cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgdXNlUmVzb3VyY2VzKE1U
TDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3Vy
Y2VVc2FnZSB1c2FnZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICB1c2VIZWFwKGNvbnN0IGNs
YXNzIEhlYXAqIGhlYXApOworCisgICAgdm9pZCAgICAgICAgICAgICAgdXNlSGVhcHMoTVRMOjpI
ZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVm
ZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5TOjpSYW5nZSBleGVjdXRpb25SYW5nZSk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBjbGFz
cyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZGJ1ZmZlciwgY29uc3QgY2xh
c3MgQnVmZmVyKiBpbmRpcmVjdFJhbmdlQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZm
ZXJPZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgICAgICAgbWVtb3J5QmFycmllcihNVEw6OkJh
cnJpZXJTY29wZSBzY29wZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBtZW1vcnlCYXJyaWVy
KE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBjbGFzcyBDb3Vu
dGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwg
Ym9vbCBiYXJyaWVyKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGRpc3BhdGNoVHlwZQorX01U
TF9JTkxJTkUgTVRMOjpEaXNwYXRjaFR5cGUgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRp
c3BhdGNoVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpEaXNwYXRjaFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGlzcGF0Y2hUeXBlKSk7Cit9
CisKKy8vIG1ldGhvZDogc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25z
dCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBzdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVfKSwgc3RhdGUpOworfQorCisvLyBtZXRob2Q6IHNldEJ5dGVzOmxlbmd0aDphdEluZGV4Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0Qnl0ZXMoY29u
c3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0Qnl0ZXNfbGVuZ3RoX2F0SW5kZXhfKSwgYnl0ZXMsIGxlbmd0aCwgaW5kZXgpOworfQorCisv
LyBtZXRob2Q6IHNldEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVm
ZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcl9v
ZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6
IHNldEJ1ZmZlck9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVD
b21tYW5kRW5jb2Rlcjo6c2V0QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpV
SW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0QnVmZmVyT2Zmc2V0X2F0SW5kZXhfKSwgb2Zmc2V0LCBpbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcnMoTVRMOjpCdWZm
ZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJh
bmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJh
bmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZlcklu
ZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0Vmlz
aWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJs
ZUZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0
aW9uVGFibGVfYXRCdWZmZXJJbmRleF8pLCB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgYnVmZmVySW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVy
UmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRW
aXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlz
aWJsZUZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9u
VGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCB2aXNpYmxlRnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsK
K30KKworLy8gbWV0aG9kOiBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOmF0QnVmZmVySW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgaW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNv
bnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193
aXRoQnVmZmVyUmFuZ2VfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsKK30K
KworLy8gbWV0aG9kOiBzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEFjY2VsZXJhdGlv
blN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9u
U3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFjY2VsZXJhdGlvblN0cnVj
dHVyZV9hdEJ1ZmZlckluZGV4XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgYnVmZmVySW5kZXgp
OworfQorCisvLyBtZXRob2Q6IHNldFRleHR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJl
KiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVfYXRJbmRleF8pLCB0ZXh0
dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGV4dHVyZXM6d2l0aFJhbmdlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0VGV4dHVyZXMoTVRM
OjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVzX3dpdGhS
YW5nZV8pLCB0ZXh0dXJlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0
ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6
c2V0U2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUlu
dGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFNhbXBsZXJTdGF0ZV9hdEluZGV4XyksIHNhbXBsZXIsIGluZGV4KTsK
K30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZXMoTVRMOjpT
YW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRl
c193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRTYW1w
bGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENs
YW1wLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RN
YXhDbGFtcF9hdEluZGV4XyksIHNhbXBsZXIsIGxvZE1pbkNsYW1wLCBsb2RNYXhDbGFtcCwgaW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1h
eENsYW1wczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRF
bmNvZGVyOjpzZXRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBj
b25zdCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBz
X3dpdGhSYW5nZV8pLCBzYW1wbGVycywgbG9kTWluQ2xhbXBzLCBsb2RNYXhDbGFtcHMsIHJhbmdl
KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aDphdEluZGV4Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0VGhyZWFkZ3Jv
dXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aF9hdEluZGV4XyksIGxlbmd0aCwgaW5kZXgpOworfQor
CisvLyBtZXRob2Q6IHNldEltYWdlYmxvY2tXaWR0aDpoZWlnaHQ6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRJbWFnZWJsb2NrV2lkdGgoTlM6OlVJbnRl
Z2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbWFnZWJsb2NrV2lkdGhfaGVpZ2h0
XyksIHdpZHRoLCBoZWlnaHQpOworfQorCisvLyBtZXRob2Q6IHNldFN0YWdlSW5SZWdpb246Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRTdGFnZUluUmVn
aW9uKE1UTDo6UmVnaW9uIHJlZ2lvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhZ2VJblJlZ2lvbl8pLCByZWdpb24pOworfQor
CisvLyBtZXRob2Q6IHNldFN0YWdlSW5SZWdpb25XaXRoSW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RC
dWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVy
OjpzZXRTdGFnZUluUmVnaW9uKGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6
OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGFnZUluUmVnaW9uV2l0aEluZGly
ZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIGluZGlyZWN0QnVmZmVyLCBpbmRpcmVj
dEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogZGlzcGF0Y2hUaHJlYWRncm91cHM6dGhy
ZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5k
RW5jb2Rlcjo6ZGlzcGF0Y2hUaHJlYWRncm91cHMoTVRMOjpTaXplIHRocmVhZGdyb3Vwc1Blckdy
aWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVGhyZWFkZ3JvdXBz
X3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCB0aHJlYWRncm91cHNQZXJHcmlkLCB0aHJlYWRzUGVy
VGhyZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IGRpc3BhdGNoVGhyZWFkZ3JvdXBzV2l0aElu
ZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OnRocmVhZHNQZXJUaHJlYWRncm91cDoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNoVGhy
ZWFkZ3JvdXBzKGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IGluZGlyZWN0QnVmZmVyT2Zmc2V0LCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChk
aXNwYXRjaFRocmVhZGdyb3Vwc1dpdGhJbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNl
dF90aHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVy
T2Zmc2V0LCB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IGRpc3BhdGNo
VGhyZWFkczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaFRocmVhZHMoTVRMOjpTaXplIHRocmVhZHNQZXJH
cmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkaXNwYXRjaFRocmVhZHNfdGhy
ZWFkc1BlclRocmVhZGdyb3VwXyksIHRocmVhZHNQZXJHcmlkLCB0aHJlYWRzUGVyVGhyZWFkZ3Jv
dXApOworfQorCisvLyBtZXRob2Q6IHVwZGF0ZUZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVu
Y2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHVwZGF0ZUZlbmNlXyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB3YWl0Rm9yRmVuY2U6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp3YWl0Rm9yRmVu
Y2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdhaXRGb3JGZW5jZV8pLCBmZW5jZSk7Cit9CisK
Ky8vIG1ldGhvZDogdXNlUmVzb3VyY2U6dXNhZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjp1c2VSZXNvdXJjZShjb25zdCBNVEw6OlJlc291cmNlKiByZXNv
dXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZV91c2FnZV8pLCByZXNv
dXJjZSwgdXNhZ2UpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlczpjb3VudDp1c2FnZToK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNl
cyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJl
c291cmNlVXNhZ2UgdXNhZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJlc291cmNlc19jb3VudF91c2FnZV8pLCByZXNvdXJjZXMs
IGNvdW50LCB1c2FnZSk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnVzZUhlYXAoY29uc3QgTVRMOjpIZWFwKiBo
ZWFwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh1c2VIZWFwXyksIGhlYXApOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXBzOmNvdW50Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcHMoTVRM
OjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBzX2NvdW50XyksIGhl
YXBzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXI6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6ZXhl
Y3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGlu
ZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlJhbmdlIGV4ZWN1dGlvblJhbmdlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChleGVjdXRlQ29t
bWFuZHNJbkJ1ZmZlcl93aXRoUmFuZ2VfKSwgaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBleGVjdXRp
b25SYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXI6aW5kaXJl
Y3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjpleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBNVEw6Oklu
ZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kYnVmZmVyLCBjb25zdCBNVEw6OkJ1
ZmZlciogaW5kaXJlY3RSYW5nZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zm
c2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZl
ck9mZnNldF8pLCBpbmRpcmVjdENvbW1hbmRidWZmZXIsIGluZGlyZWN0UmFuZ2VCdWZmZXIsIGlu
ZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiBtZW1vcnlCYXJyaWVyV2l0aFNj
b3BlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6bWVtb3J5
QmFycmllcihNVEw6OkJhcnJpZXJTY29wZSBzY29wZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtb3J5QmFycmllcldpdGhTY29wZV8p
LCBzY29wZSk7Cit9CisKKy8vIG1ldGhvZDogbWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXM6Y291
bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjptZW1vcnlC
YXJyaWVyKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1l
bW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzX2NvdW50XyksIHJlc291cmNlcywgY291bnQpOworfQor
CisvLyBtZXRob2Q6IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRTYW1wbGVJbmRleDp3aXRoQmFy
cmllcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNhbXBs
ZUNvdW50ZXJzSW5CdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVC
dWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3Vu
dGVyc0luQnVmZmVyX2F0U2FtcGxlSW5kZXhfd2l0aEJhcnJpZXJfKSwgc2FtcGxlQnVmZmVyLCBz
YW1wbGVJbmRleCwgYmFycmllcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2Q0YjUy
Njc2ZGRiMDFkNmY1ODk4YzVkNzMxNTFhZTNmNzQ2M2VlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcApAQCAt
MCwwICsxLDE4MSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwCisvLworLy8gQ29weXJpZ2h0IDIw
MjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAi
CisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhw
cCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJN
VExDb21tYW5kQnVmZmVyLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQ29tcHV0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxD
b21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvdW50ZXJTYW1wbGVC
dWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVCdWZmZXIoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0U2FtcGxlQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIq
IHNhbXBsZUJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9m
RW5jb2RlclNhbXBsZUluZGV4KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZF
bmNvZGVyU2FtcGxlSW5kZXgpOworfTsKKworY2xhc3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvbXB1
dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVj
dChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChj
b25zdCBjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBh
dHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIENv
bXB1dGVQYXNzRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxDb21wdXRlUGFzc0Rlc2Ny
aXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvbXB1dGVQYXNzRGVzY3JpcHRv
ciogICAgICAgICAgICAgICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBhc3NE
ZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0
aWMgY2xhc3MgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGNvbXB1
dGVQYXNzRGVzY3JpcHRvcigpOworCisgICAgTVRMOjpEaXNwYXRjaFR5cGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaFR5cGUoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERp
c3BhdGNoVHlwZShNVEw6OkRpc3BhdGNoVHlwZSBkaXNwYXRjaFR5cGUpOworCisgICAgY2xhc3Mg
Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBzYW1wbGVC
dWZmZXJBdHRhY2htZW50cygpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpD
b21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBw
cm9wZXJ0eTogc2FtcGxlQnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZm
ZXIqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2Ft
cGxlQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkNvdW50ZXJTYW1wbGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZl
cikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U2FtcGxlQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRlclNh
bXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVCdWZmZXJfKSwgc2FtcGxlQnVmZmVy
KTsKK30KKworLy8gcHJvcGVydHk6IHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I6OnN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdGFydE9m
RW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4XyksIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5k
ZXgpOworfQorCisvLyBwcm9wZXJ0eTogZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I6OmVuZE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNv
bXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldEVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RW5k
T2ZFbmNvZGVyU2FtcGxlSW5kZXhfKSwgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5KiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpDb21wdXRlUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhv
ZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBhdHRh
Y2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21w
dXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudEluZGV4KTsKK30K
KworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRl
UGFzc0Rlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRo
b2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yKiBNVEw6OkNv
bXB1dGVQYXNzRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6Omlu
aXQ8TVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGNvbXB1dGVQYXNzRGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc0Rlc2Ny
aXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjpjb21wdXRlUGFzc0Rlc2NyaXB0b3Io
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBhc3NEZXNj
cmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21wdXRlUGFzc0Rlc2NyaXB0b3IpLCBfTVRM
X1BSSVZBVEVfU0VMKGNvbXB1dGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0eTog
ZGlzcGF0Y2hUeXBlCitfTVRMX0lOTElORSBNVEw6OkRpc3BhdGNoVHlwZSBNVEw6OkNvbXB1dGVQ
YXNzRGVzY3JpcHRvcjo6ZGlzcGF0Y2hUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkRpc3BhdGNoVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChk
aXNwYXRjaFR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQYXNzRGVz
Y3JpcHRvcjo6c2V0RGlzcGF0Y2hUeXBlKE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RGlzcGF0Y2hUeXBlXyksIGRpc3BhdGNoVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1w
bGVCdWZmZXJBdHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9y
OjpzYW1wbGVCdWZmZXJBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRz
KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ29tcHV0ZVBpcGVsaW5lLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlNTZkN2ZmZDJlM2VmNzQ3
Yjk1YmU1NDA5MjhiZTZmZjAyODAyNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcApAQCAtMCwwICsx
LDM1NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIw
LTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgor
I2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAi
CisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRM
VHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBDb21wdXRlUGlwZWxpbmVSZWZs
ZWN0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9u
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9u
KiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogICAgICAg
IGluaXQoKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudHMoKSBjb25zdDsKK307CisKK2NsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Ig
OiBwdWJsaWMgTlM6OkNvcHlpbmc8Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4KK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogYWxsb2MoKTsK
KworICAgIGNsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisK
KyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXB1dGVGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb21wdXRlRnVuY3Rpb24oY29uc3QgY2xh
c3MgRnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbik7CisKKyAgICBib29sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhl
Y3V0aW9uV2lkdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0VGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lk
dGgoYm9vbCB0aHJlYWRHcm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCk7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VG90YWxU
aHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0TWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoTlM6OlVJ
bnRlZ2VyIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKTsKKworICAgIGNsYXNzIFN0YWdl
SW5wdXRPdXRwdXREZXNjcmlwdG9yKiAgICAgICBzdGFnZUlucHV0RGVzY3JpcHRvcigpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFnZUlu
cHV0RGVzY3JpcHRvcihjb25zdCBjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogc3Rh
Z2VJbnB1dERlc2NyaXB0b3IpOworCisgICAgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9y
QXJyYXkqICAgIGJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0SW5k
aXJlY3RDb21tYW5kQnVmZmVycyhib29sIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKTsK
KworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRMaWJy
YXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0SW5zZXJ0TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogaW5zZXJ0TGlicmFyaWVzKTsK
KworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVsb2FkZWRM
aWJyYXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogcHJlbG9hZGVkTGli
cmFyaWVzKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
aW5hcnlBcmNoaXZlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hp
dmVzKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl
dCgpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiAgICAgICAgICAgICAgICAgIGxpbmtl
ZEZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRMaW5rZWRGdW5jdGlvbnMoY29uc3QgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiBs
aW5rZWRGdW5jdGlvbnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VwcG9ydEFkZGluZ0JpbmFyeUZ1
bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heENhbGxTdGFja0RlcHRoKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heENh
bGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhDYWxsU3RhY2tEZXB0aCk7Cit9OworCitjbGFz
cyBDb21wdXRlUGlwZWxpbmVTdGF0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q29tcHV0ZVBp
cGVsaW5lU3RhdGU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAg
ICAgICAgbGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNzIERldmljZSogICAgICAgICAgICAgICAg
ICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdDsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgIHRocmVhZEV4ZWN1dGlvbldpZHRoKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBzdGF0aWNUaHJlYWRncm91cE1l
bW9yeUxlbmd0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgaW1hZ2VibG9ja01lbW9yeUxlbmd0aChNVEw6OlNpemUgaW1hZ2VibG9ja0RpbWVuc2lvbnMp
OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEluZGlyZWN0
Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGNsYXNzIEZ1bmN0aW9uSGFuZGxlKiAgICAg
ICAgICAgIGZ1bmN0aW9uSGFuZGxlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBmdW5jdGlvbik7CisK
KyAgICBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogICAgICBuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZShjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpOworCisg
ICAgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqICAgICAgbmV3VmlzaWJsZUZ1bmN0aW9uVGFi
bGUoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KTsKKworICAgIGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIG5ld0ludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiBNVEw6OkNvbXB1dGVQ
aXBlbGluZVJlZmxlY3Rpb246OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uPihfTVRMX1BSSVZBVEVfQ0xTKE1UTENv
bXB1dGVQaXBlbGluZVJlZmxlY3Rpb24pKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lO
TElORSBNVEw6OkNvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIE1UTDo6Q29tcHV0ZVBpcGVsaW5l
UmVmbGVjdGlvbjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpD
b21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uPigpOworfQorCisvLyBwcm9wZXJ0eTogYXJndW1lbnRz
CitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbjo6
YXJndW1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50cykpOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIE1U
TDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPigpOworfQorCisvLyBw
cm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRMYWJl
bChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBw
cm9wZXJ0eTogY29tcHV0ZUZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6
OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OmNvbXB1dGVGdW5jdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoY29tcHV0ZUZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRDb21wdXRlRnVuY3Rpb24oY29uc3QgTVRM
OjpGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlRnVuY3Rpb25fKSwgY29tcHV0
ZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVP
ZlRocmVhZEV4ZWN1dGlvbldpZHRoCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcjo6dGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9u
V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhl
Y3V0aW9uV2lkdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3I6OnNldFRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlv
bldpZHRoKGJvb2wgdGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lk
dGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoXyks
IHRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKTsKK30KKwor
Ly8gcHJvcGVydHk6IG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhUb3RhbFRocmVh
ZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFRvdGFsVGhyZWFkc1Bl
clRocmVhZGdyb3VwKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cChOUzo6VUludGVn
ZXIgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwXyksIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKTsKK30KKworLy8gcHJv
cGVydHk6IHN0YWdlSW5wdXREZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlN0YWdlSW5wdXRP
dXRwdXREZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnN0YWdlSW5w
dXREZXNjcmlwdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dGFnZUlucHV0RGVzY3JpcHRvcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3RhZ2VJbnB1dERlc2NyaXB0b3IoY29uc3QgTVRMOjpT
dGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogc3RhZ2VJbnB1dERlc2NyaXB0b3IpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YWdl
SW5wdXREZXNjcmlwdG9yXyksIHN0YWdlSW5wdXREZXNjcmlwdG9yKTsKK30KKworLy8gcHJvcGVy
dHk6IGJ1ZmZlcnMKK19NVExfSU5MSU5FIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJy
YXkqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6YnVmZmVycygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0
b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVycykpOworfQorCisvLyBwcm9w
ZXJ0eTogc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVy
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldFN1
cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKGJvb2wgc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1
ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzXyksIHN1cHBvcnRJbmRpcmVj
dENvbW1hbmRCdWZmZXJzKTsKK30KKworLy8gcHJvcGVydHk6IGluc2VydExpYnJhcmllcworX01U
TF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6Omluc2Vy
dExpYnJhcmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnNlcnRMaWJyYXJpZXMpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldEluc2Vy
dExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIGluc2VydExpYnJhcmllcykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5zZXJ0TGli
cmFyaWVzXyksIGluc2VydExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiBwcmVsb2FkZWRM
aWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yOjpwcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlbG9hZGVk
TGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yOjpzZXRQcmVsb2FkZWRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiBwcmVsb2Fk
ZWRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFByZWxvYWRlZExpYnJhcmllc18pLCBwcmVsb2FkZWRMaWJyYXJpZXMp
OworfQorCisvLyBwcm9wZXJ0eTogYmluYXJ5QXJjaGl2ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJh
eSogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpiaW5hcnlBcmNoaXZlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChiaW5hcnlBcmNoaXZlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMoY29uc3QgTlM6
OkFycmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmluYXJ5QXJjaGl2
ZXMpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcjo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldCkpOworfQorCisvLyBwcm9wZXJ0eTog
bGlua2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogTVRMOjpD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpsaW5rZWRGdW5jdGlvbnMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlua2VkRnVuY3Rpb25zKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChsaW5rZWRGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldExpbmtlZEZ1bmN0aW9ucyhjb25z
dCBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogbGlua2VkRnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMaW5rZWRGdW5jdGlv
bnNfKSwgbGlua2VkRnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRBZGRpbmdC
aW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yOjpzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rp
b25zKGJvb2wgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFkZGluZ0Jp
bmFyeUZ1bmN0aW9uc18pLCBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8g
cHJvcGVydHk6IG1heENhbGxTdGFja0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG1heENhbGxTdGFja0RlcHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhDYWxsU3RhY2tEZXB0aChOUzo6
VUludGVnZXIgbWF4Q2FsbFN0YWNrRGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heENhbGxTdGFja0RlcHRoXyksIG1heENh
bGxTdGFja0RlcHRoKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6
U3RyaW5nKiBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRM
OjpEZXZpY2UqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OmRldmljZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VG90YWxUaHJlYWRzUGVy
VGhyZWFkZ3JvdXAKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBlbGlu
ZVN0YXRlOjptYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0
aHJlYWRFeGVjdXRpb25XaWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lU3RhdGU6OnRocmVhZEV4ZWN1dGlvbldpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwodGhyZWFkRXhlY3V0aW9uV2lkdGgpKTsKK30KKworLy8gcHJvcGVydHk6IHN0YXRpY1RocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpDb21wdXRl
UGlwZWxpbmVTdGF0ZTo6c3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdGF0aWNUaHJlYWRncm91cE1lbW9yeUxlbmd0aCkpOworfQorCisvLyBtZXRo
b2Q6IGltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zOgorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OmltYWdlYmxvY2tNZW1vcnlMZW5n
dGgoTVRMOjpTaXplIGltYWdlYmxvY2tEaW1lbnNpb25zKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbWFnZWJs
b2NrTWVtb3J5TGVuZ3RoRm9yRGltZW5zaW9uc18pLCBpbWFnZWJsb2NrRGltZW5zaW9ucyk7Cit9
CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycworX01UTF9JTkxJ
TkUgYm9vbCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpzdXBwb3J0SW5kaXJlY3RDb21tYW5k
QnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMp
KTsKK30KKworLy8gbWV0aG9kOiBmdW5jdGlvbkhhbmRsZVdpdGhGdW5jdGlvbjoKK19NVExfSU5M
SU5FIE1UTDo6RnVuY3Rpb25IYW5kbGUqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OmZ1bmN0
aW9uSGFuZGxlKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGZ1bmN0aW9uKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25IYW5kbGUqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGZ1bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uXyksIGZ1bmN0aW9uKTsKK30KKworLy8g
bWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rp
b25zOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSogTVRMOjpD
b21wdXRlUGlwZWxpbmVTdGF0ZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTlM6OkFy
cmF5KiBmdW5jdGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnNfZXJyb3JfKSwgZnVuY3Rpb25zLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3VmlzaWJs
ZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6VmlzaWJsZUZ1
bmN0aW9uVGFibGUqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Om5ld1Zpc2libGVGdW5jdGlv
blRhYmxlKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmlzaWJsZUZ1bmN0
aW9uVGFibGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Zpc2libGVGdW5jdGlvblRhYmxl
V2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3SW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlKiBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpuZXdJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRv
cik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ291bnRlcnMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TENvdW50ZXJzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTY1YzFkOGVhMDE4MTZkZDdkZmI2OTQ4MWQ3YTI4
ZGI2NDE3YjUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTENvdW50ZXJzLmhwcApAQCAtMCwwICsxLDI1OCBAQAorLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ291bnRl
cnMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisKK25hbWVzcGFjZSBN
VEwKK3sKKworX01UTF9DT05TVCggTlM6OkVycm9yRG9tYWluLCBDb3VudGVyRXJyb3JEb21haW4g
KTsKKwordXNpbmcgQ29tbW9uQ291bnRlciA9IE5TOjpTdHJpbmcqOworCitfTVRMX0NPTlNUKCBD
b21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVGltZXN0YW1wICk7CitfTVRMX0NPTlNUKCBDb21t
b25Db3VudGVyLCBDb21tb25Db3VudGVyVGVzc2VsbGF0aW9uSW5wdXRQYXRjaGVzICk7CitfTVRM
X0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVmVydGV4SW52b2NhdGlvbnMgKTsK
K19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJQb3N0VGVzc2VsbGF0aW9u
VmVydGV4SW52b2NhdGlvbnMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNv
dW50ZXJDbGlwcGVySW52b2NhdGlvbnMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENv
bW1vbkNvdW50ZXJDbGlwcGVyUHJpbWl0aXZlc091dCApOworX01UTF9DT05TVCggQ29tbW9uQ291
bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50SW52b2NhdGlvbnMgKTsKK19NVExfQ09OU1QoIENv
bW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJGcmFnbWVudHNQYXNzZWQgKTsKK19NVExfQ09OU1Qo
IENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJDb21wdXRlS2VybmVsSW52b2NhdGlvbnMgKTsK
K19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUb3RhbEN5Y2xlcyApOwor
X01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclZlcnRleEN5Y2xlcyApOwor
X01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclRlc3NlbGxhdGlvbkN5Y2xl
cyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclBvc3RUZXNzZWxs
YXRpb25WZXJ0ZXhDeWNsZXMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNv
dW50ZXJGcmFnbWVudEN5Y2xlcyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9u
Q291bnRlclJlbmRlclRhcmdldFdyaXRlQ3ljbGVzICk7CisKK3VzaW5nIENvbW1vbkNvdW50ZXJT
ZXQgPSBOUzo6U3RyaW5nKjsKKworX01UTF9DT05TVCggQ29tbW9uQ291bnRlclNldCwgQ29tbW9u
Q291bnRlclNldFRpbWVzdGFtcCApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlclNldCwgQ29t
bW9uQ291bnRlclNldFN0YWdlVXRpbGl6YXRpb24gKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50
ZXJTZXQsIENvbW1vbkNvdW50ZXJTZXRTdGF0aXN0aWMgKTsKKworc3RydWN0IENvdW50ZXJSZXN1
bHRUaW1lc3RhbXAKK3sKKyAgICB1aW50NjRfdCB0aW1lc3RhbXA7Cit9IF9NVExfUEFDS0VEOwor
CitzdHJ1Y3QgQ291bnRlclJlc3VsdFN0YWdlVXRpbGl6YXRpb24KK3sKKyAgICB1aW50NjRfdCB0
b3RhbEN5Y2xlczsKKyAgICB1aW50NjRfdCB2ZXJ0ZXhDeWNsZXM7CisgICAgdWludDY0X3QgdGVz
c2VsbGF0aW9uQ3ljbGVzOworICAgIHVpbnQ2NF90IHBvc3RUZXNzZWxsYXRpb25WZXJ0ZXhDeWNs
ZXM7CisgICAgdWludDY0X3QgZnJhZ21lbnRDeWNsZXM7CisgICAgdWludDY0X3QgcmVuZGVyVGFy
Z2V0Q3ljbGVzOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IENvdW50ZXJSZXN1bHRTdGF0aXN0
aWMKK3sKKyAgICB1aW50NjRfdCB0ZXNzZWxsYXRpb25JbnB1dFBhdGNoZXM7CisgICAgdWludDY0
X3QgdmVydGV4SW52b2NhdGlvbnM7CisgICAgdWludDY0X3QgcG9zdFRlc3NlbGxhdGlvblZlcnRl
eEludm9jYXRpb25zOworICAgIHVpbnQ2NF90IGNsaXBwZXJJbnZvY2F0aW9uczsKKyAgICB1aW50
NjRfdCBjbGlwcGVyUHJpbWl0aXZlc091dDsKKyAgICB1aW50NjRfdCBmcmFnbWVudEludm9jYXRp
b25zOworICAgIHVpbnQ2NF90IGZyYWdtZW50c1Bhc3NlZDsKKyAgICB1aW50NjRfdCBjb21wdXRl
S2VybmVsSW52b2NhdGlvbnM7Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBDb3VudGVyIDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxDb3VudGVyPgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcq
IG5hbWUoKSBjb25zdDsKK307CisKK2NsYXNzIENvdW50ZXJTZXQgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPENvdW50ZXJTZXQ+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogbmFtZSgpIGNv
bnN0OworCisgICAgTlM6OkFycmF5KiAgY291bnRlcnMoKSBjb25zdDsKK307CisKK2NsYXNzIENv
dW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPENvdW50ZXJT
YW1wbGVCdWZmZXJEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb3Vu
dGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIENvdW50ZXJT
YW1wbGVCdWZmZXJEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQ291bnRl
clNldCogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyU2V0KCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb3VudGVyU2V0
KGNvbnN0IGNsYXNzIENvdW50ZXJTZXQqIGNvdW50ZXJTZXQpOworCisgICAgTlM6OlN0cmluZyog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6
OlN0cmluZyogbGFiZWwpOworCisgICAgTVRMOjpTdG9yYWdlTW9kZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBz
dG9yYWdlTW9kZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxlQ291
bnQpOworfTsKKworY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8Q291bnRlclNhbXBsZUJ1ZmZlcj4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBEZXZpY2Uq
IGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICBsYWJlbCgpIGNvbnN0OworCisg
ICAgTlM6OlVJbnRlZ2VyICBzYW1wbGVDb3VudCgpIGNvbnN0OworCisgICAgTlM6OkRhdGEqICAg
ICByZXNvbHZlQ291bnRlclJhbmdlKE5TOjpSYW5nZSByYW5nZSk7Cit9OworCitfTVRMX0VOVU0o
TlM6OkludGVnZXIsIENvdW50ZXJTYW1wbGVCdWZmZXJFcnJvcikgeworICAgIENvdW50ZXJTYW1w
bGVCdWZmZXJFcnJvck91dE9mTWVtb3J5ID0gMCwKKyAgICBDb3VudGVyU2FtcGxlQnVmZmVyRXJy
b3JJbnZhbGlkID0gMSwKK307CisKK30KKworX01UTF9QUklWQVRFX0RFRl9TVFIoIE5TOjpFcnJv
ckRvbWFpbiwgQ291bnRlckVycm9yRG9tYWluICk7CisKK19NVExfUFJJVkFURV9ERUZfU1RSKCBN
VEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUaW1lc3RhbXAgKTsKK19NVExfUFJJVkFU
RV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUZXNzZWxsYXRpb25J
bnB1dFBhdGNoZXMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIs
IENvbW1vbkNvdW50ZXJWZXJ0ZXhJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIo
IE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclBvc3RUZXNzZWxsYXRpb25WZXJ0ZXhJ
bnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwg
Q29tbW9uQ291bnRlckNsaXBwZXJJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIo
IE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckNsaXBwZXJQcmltaXRpdmVzT3V0ICk7
CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVy
RnJhZ21lbnRJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9u
Q291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50c1Bhc3NlZCApOworX01UTF9QUklWQVRFX0RF
Rl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckNvbXB1dGVLZXJuZWxJbnZv
Y2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29t
bW9uQ291bnRlclRvdGFsQ3ljbGVzICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21t
b25Db3VudGVyLCBDb21tb25Db3VudGVyVmVydGV4Q3ljbGVzICk7CitfTVRMX1BSSVZBVEVfREVG
X1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVGVzc2VsbGF0aW9uQ3ljbGVz
ICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3Vu
dGVyUG9zdFRlc3NlbGxhdGlvblZlcnRleEN5Y2xlcyApOworX01UTF9QUklWQVRFX0RFRl9TVFIo
IE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50Q3ljbGVzICk7CitfTVRM
X1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyUmVuZGVy
VGFyZ2V0V3JpdGVDeWNsZXMgKTsKKworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9u
Q291bnRlclNldCwgQ29tbW9uQ291bnRlclNldFRpbWVzdGFtcCApOworX01UTF9QUklWQVRFX0RF
Rl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlclNldCwgQ29tbW9uQ291bnRlclNldFN0YWdlVXRpbGl6
YXRpb24gKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXJTZXQsIENv
bW1vbkNvdW50ZXJTZXRTdGF0aXN0aWMgKTsKKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5M
SU5FIE5TOjpTdHJpbmcqIE1UTDo6Q291bnRlcjo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyog
TVRMOjpDb3VudGVyU2V0OjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBjb3VudGVycworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkNvdW50
ZXJTZXQ6OmNvdW50ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvdW50ZXJzKSk7Cit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZm
ZXJEZXNjcmlwdG9yKiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZl
ckRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQ291bnRlclNhbXBsZUJ1ZmZlckRlc2Ny
aXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJT
YW1wbGVCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9y
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvdW50ZXJTYW1w
bGVCdWZmZXJEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogY291bnRlclNldAorX01U
TF9JTkxJTkUgTVRMOjpDb3VudGVyU2V0KiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlw
dG9yOjpjb3VudGVyU2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkNvdW50ZXJTZXQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvdW50ZXJTZXQpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9y
OjpzZXRDb3VudGVyU2V0KGNvbnN0IE1UTDo6Q291bnRlclNldCogY291bnRlclNldCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q291
bnRlclNldF8pLCBjb3VudGVyU2V0KTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjpsYWJl
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogc3RvcmFn
ZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6U3RvcmFnZU1vZGUgTVRMOjpDb3VudGVyU2FtcGxlQnVm
ZmVyRGVzY3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6U3RvcmFnZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3Rv
cmFnZU1vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZm
ZXJEZXNjcmlwdG9yOjpzZXRTdG9yYWdlTW9kZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2Rl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTdG9yYWdlTW9kZV8pLCBzdG9yYWdlTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1w
bGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZl
ckRlc2NyaXB0b3I6OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291
bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNj
cmlwdG9yOjpzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxlQ291bnQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBs
ZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9J
TkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcjo6ZGV2aWNlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01U
TF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyOjpsYWJlbCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNvdW50
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyOjpzYW1w
bGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50KSk7Cit9CisKKy8vIG1l
dGhvZDogcmVzb2x2ZUNvdW50ZXJSYW5nZToKK19NVExfSU5MSU5FIE5TOjpEYXRhKiBNVEw6OkNv
dW50ZXJTYW1wbGVCdWZmZXI6OnJlc29sdmVDb3VudGVyUmFuZ2UoTlM6OlJhbmdlIHJhbmdlKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpEYXRhKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChyZXNvbHZlQ291bnRlclJhbmdlXyksIHJhbmdlKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NjJlN2EyY2M5MDQzMmFiMGQyZmQ0OGI5ZmUxOGMwZDUzNWI5N2NhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlZmluZXMu
aHBwCkBAIC0wLDAgKzEsNDEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTERlZmluZXMuaHBwCisvLworLy8gQ29weXJpZ2h0
IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNEZWZp
bmVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNkZWZpbmUgX01UTF9FWFBPUlQgX05TX0VYUE9SVAorI2RlZmluZSBfTVRMX0VYVEVSTiBf
TlNfRVhURVJOCisjZGVmaW5lIF9NVExfSU5MSU5FIF9OU19JTkxJTkUKKyNkZWZpbmUgX01UTF9Q
QUNLRUQgX05TX1BBQ0tFRAorCisjZGVmaW5lIF9NVExfQ09OU1QodHlwZSwgbmFtZSkgX05TX0NP
TlNUKHR5cGUsIG5hbWUpCisjZGVmaW5lIF9NVExfRU5VTSh0eXBlLCBuYW1lKSBfTlNfRU5VTSh0
eXBlLCBuYW1lKQorI2RlZmluZSBfTVRMX09QVElPTlModHlwZSwgbmFtZSkgX05TX09QVElPTlMo
dHlwZSwgbmFtZSkKKworI2RlZmluZSBfTVRMX1ZBTElEQVRFX1NJWkUobnMsIG5hbWUpIF9OU19W
QUxJREFURV9TSVpFKG5zLCBuYW1lKQorI2RlZmluZSBfTVRMX1ZBTElEQVRFX0VOVU0obnMsIG5h
bWUpIF9OU19WQUxJREFURV9FTlVNKG5zLCBuYW1lKQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTERlcHRoU3RlbmNpbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ3NzRk
Y2VjMDFlODU5YTEwMDFkZjM5MmRiMzNiYmJlNjgyOTEyNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBwCkBA
IC0wLDAgKzEsMjY5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBNZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBwCisvLworLy8gQ29weXJpZ2h0
IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5o
cHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRl
LmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRl
ICJNVExEZXB0aFN0ZW5jaWwuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6
OlVJbnRlZ2VyLCBDb21wYXJlRnVuY3Rpb24pIHsKKyAgICBDb21wYXJlRnVuY3Rpb25OZXZlciA9
IDAsCisgICAgQ29tcGFyZUZ1bmN0aW9uTGVzcyA9IDEsCisgICAgQ29tcGFyZUZ1bmN0aW9uRXF1
YWwgPSAyLAorICAgIENvbXBhcmVGdW5jdGlvbkxlc3NFcXVhbCA9IDMsCisgICAgQ29tcGFyZUZ1
bmN0aW9uR3JlYXRlciA9IDQsCisgICAgQ29tcGFyZUZ1bmN0aW9uTm90RXF1YWwgPSA1LAorICAg
IENvbXBhcmVGdW5jdGlvbkdyZWF0ZXJFcXVhbCA9IDYsCisgICAgQ29tcGFyZUZ1bmN0aW9uQWx3
YXlzID0gNywKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFN0ZW5jaWxPcGVyYXRpb24p
IHsKKyAgICBTdGVuY2lsT3BlcmF0aW9uS2VlcCA9IDAsCisgICAgU3RlbmNpbE9wZXJhdGlvblpl
cm8gPSAxLAorICAgIFN0ZW5jaWxPcGVyYXRpb25SZXBsYWNlID0gMiwKKyAgICBTdGVuY2lsT3Bl
cmF0aW9uSW5jcmVtZW50Q2xhbXAgPSAzLAorICAgIFN0ZW5jaWxPcGVyYXRpb25EZWNyZW1lbnRD
bGFtcCA9IDQsCisgICAgU3RlbmNpbE9wZXJhdGlvbkludmVydCA9IDUsCisgICAgU3RlbmNpbE9w
ZXJhdGlvbkluY3JlbWVudFdyYXAgPSA2LAorICAgIFN0ZW5jaWxPcGVyYXRpb25EZWNyZW1lbnRX
cmFwID0gNywKK307CisKK2NsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPFN0ZW5jaWxEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTdGVu
Y2lsRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiAg
ICAgICAgaW5pdCgpOworCisgICAgTVRMOjpDb21wYXJlRnVuY3Rpb24gICAgICAgICAgICBzdGVu
Y2lsQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdGVuY2lsQ29tcGFyZUZ1bmN0aW9uKE1UTDo6Q29tcGFyZUZ1bmN0aW9uIHN0
ZW5jaWxDb21wYXJlRnVuY3Rpb24pOworCisgICAgTVRMOjpTdGVuY2lsT3BlcmF0aW9uICAgICAg
ICAgICBzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbEZhaWx1cmVPcGVyYXRpb24oTVRMOjpTdGVuY2ls
T3BlcmF0aW9uIHN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uKTsKKworICAgIE1UTDo6U3RlbmNpbE9w
ZXJhdGlvbiAgICAgICAgICAgZGVwdGhGYWlsdXJlT3BlcmF0aW9uKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aEZhaWx1cmVPcGVyYXRpb24oTVRM
OjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoRmFpbHVyZU9wZXJhdGlvbik7CisKKyAgICBNVEw6OlN0
ZW5jaWxPcGVyYXRpb24gICAgICAgICAgIGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24oKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoU3RlbmNpbFBh
c3NPcGVyYXRpb24oTVRMOjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRp
b24pOworCisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICByZWFkTWFzaygpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVhZE1hc2sodWlu
dDMyX3QgcmVhZE1hc2spOworCisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZU1hc2soKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFdyaXRlTWFzayh1aW50MzJfdCB3cml0ZU1hc2spOworfTsKKworY2xhc3MgRGVwdGhTdGVuY2ls
RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsK
KworICAgIE1UTDo6Q29tcGFyZUZ1bmN0aW9uICAgICAgICAgICAgICAgICBkZXB0aENvbXBhcmVG
dW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXREZXB0aENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBh
cmVGdW5jdGlvbik7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVwdGhXcml0ZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RGVwdGhXcml0ZUVuYWJsZWQoYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCk7
CisKKyAgICBjbGFzcyBTdGVuY2lsRGVzY3JpcHRvciogICAgICAgICAgICAgZnJvbnRGYWNlU3Rl
bmNpbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRGcm9udEZhY2VTdGVuY2lsKGNvbnN0IGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiBmcm9udEZh
Y2VTdGVuY2lsKTsKKworICAgIGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiAgICAgICAgICAgICBi
YWNrRmFjZVN0ZW5jaWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0QmFja0ZhY2VTdGVuY2lsKGNvbnN0IGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9y
KiBiYWNrRmFjZVN0ZW5jaWwpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKK307CisKK2NsYXNzIERl
cHRoU3RlbmNpbFN0YXRlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxEZXB0aFN0ZW5jaWxTdGF0
ZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisKKyAgICBj
bGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3JpcHRvciogTVRMOjpTdGVuY2ls
RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OlN0ZW5jaWxEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0ZW5jaWxEZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3Jp
cHRvciogTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpTdGVuY2lsRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6
IHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6Q29tcGFyZUZ1bmN0aW9u
IE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnN0ZW5jaWxDb21wYXJlRnVuY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcGFyZUZ1bmN0aW9uPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24pKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRTdGVuY2lsQ29tcGFyZUZ1
bmN0aW9uKE1UTDo6Q29tcGFyZUZ1bmN0aW9uIHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24pCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0
ZW5jaWxDb21wYXJlRnVuY3Rpb25fKSwgc3RlbmNpbENvbXBhcmVGdW5jdGlvbik7Cit9CisKKy8v
IHByb3BlcnR5OiBzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbgorX01UTF9JTkxJTkUgTVRMOjpTdGVu
Y2lsT3BlcmF0aW9uIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnN0ZW5jaWxGYWlsdXJlT3BlcmF0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5j
aWxPcGVyYXRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlbmNpbEZhaWx1cmVPcGVyYXRp
b24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRT
dGVuY2lsRmFpbHVyZU9wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24gc3RlbmNpbEZhaWx1
cmVPcGVyYXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uXyksIHN0ZW5jaWxGYWlsdXJl
T3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoRmFpbHVyZU9wZXJhdGlvbgorX01U
TF9JTkxJTkUgTVRMOjpTdGVuY2lsT3BlcmF0aW9uIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OmRl
cHRoRmFpbHVyZU9wZXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpTdGVuY2lsT3BlcmF0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRo
RmFpbHVyZU9wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RlbmNpbERl
c2NyaXB0b3I6OnNldERlcHRoRmFpbHVyZU9wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24g
ZGVwdGhGYWlsdXJlT3BlcmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aEZhaWx1cmVPcGVyYXRpb25fKSwgZGVwdGhG
YWlsdXJlT3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoU3RlbmNpbFBhc3NPcGVy
YXRpb24KK19NVExfSU5MSU5FIE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBNVEw6OlN0ZW5jaWxEZXNj
cmlwdG9yOjpkZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5jaWxPcGVyYXRpb24+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24o
TVRMOjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24pCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRo
U3RlbmNpbFBhc3NPcGVyYXRpb25fKSwgZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbik7Cit9CisK
Ky8vIHByb3BlcnR5OiByZWFkTWFzaworX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpTdGVuY2ls
RGVzY3JpcHRvcjo6cmVhZE1hc2soKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlYWRNYXNrKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6c2V0UmVhZE1hc2sodWlu
dDMyX3QgcmVhZE1hc2spCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFJlYWRNYXNrXyksIHJlYWRNYXNrKTsKK30KKworLy8gcHJvcGVy
dHk6IHdyaXRlTWFzaworX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpTdGVuY2lsRGVzY3JpcHRv
cjo6d3JpdGVNYXNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1
aW50MzJfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3cml0ZU1hc2spKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRXcml0ZU1hc2sodWludDMyX3Qg
d3JpdGVNYXNrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRXcml0ZU1hc2tfKSwgd3JpdGVNYXNrKTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvciogTVRM
OjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhN
VExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9J
TkxJTkUgTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBNVEw6OkRlcHRoU3RlbmNpbERlc2Ny
aXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RGVwdGhT
dGVuY2lsRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoQ29tcGFyZUZ1bmN0
aW9uCitfTVRMX0lOTElORSBNVEw6OkNvbXBhcmVGdW5jdGlvbiBNVEw6OkRlcHRoU3RlbmNpbERl
c2NyaXB0b3I6OmRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXBhcmVGdW5jdGlvbj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChkZXB0aENvbXBhcmVGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oTVRMOjpDb21w
YXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlRnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoQ29tcGFyZUZ1bmN0aW9u
XyksIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoV3JpdGVF
bmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVw
dGhXcml0ZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNEZXB0aFdyaXRlRW5hYmxlZCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhX
cml0ZUVuYWJsZWQoYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhXcml0ZUVuYWJsZWRf
KSwgZGVwdGhXcml0ZUVuYWJsZWQpOworfQorCisvLyBwcm9wZXJ0eTogZnJvbnRGYWNlU3RlbmNp
bAorX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3JpcHRvciogTVRMOjpEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yOjpmcm9udEZhY2VTdGVuY2lsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChmcm9udEZhY2VTdGVuY2lsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRGcm9udEZhY2VTdGVuY2lsKGNvbnN0IE1UTDo6U3RlbmNp
bERlc2NyaXB0b3IqIGZyb250RmFjZVN0ZW5jaWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyb250RmFjZVN0ZW5jaWxfKSwgZnJv
bnRGYWNlU3RlbmNpbCk7Cit9CisKKy8vIHByb3BlcnR5OiBiYWNrRmFjZVN0ZW5jaWwKK19NVExf
SU5MSU5FIE1UTDo6U3RlbmNpbERlc2NyaXB0b3IqIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRv
cjo6YmFja0ZhY2VTdGVuY2lsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChiYWNr
RmFjZVN0ZW5jaWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRlcHRoU3RlbmNpbERl
c2NyaXB0b3I6OnNldEJhY2tGYWNlU3RlbmNpbChjb25zdCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9y
KiBiYWNrRmFjZVN0ZW5jaWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEJhY2tGYWNlU3RlbmNpbF8pLCBiYWNrRmFjZVN0ZW5jaWwp
OworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVs
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpz
ZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQor
CisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RGVwdGhT
dGVuY2lsU3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisv
LyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpEZXB0aFN0
ZW5jaWxTdGF0ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGV2aWNl
LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXZpY2UuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZjZDBkNzc2NGY5NmQyNDYxMDQzNTY2MzA1YTgwYWM3YmVlZTk2NmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RGV2aWNlLmhwcApAQCAtMCwwICsxLDEyNTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTERldmljZS5ocHAKKy8vCisvLyBD
b3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExE
ZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1U
TFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKwor
I2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKyNpbmNsdWRlICJNVExEZXZpY2UuaHBwIgorI2lu
Y2x1ZGUgIk1UTFBpeGVsRm9ybWF0LmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisj
aW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorI2luY2x1
ZGUgPElPU3VyZmFjZS9JT1N1cmZhY2VSZWYuaD4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBGZWF0dXJlU2V0KSB7Cisg
ICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92MSA9IDAsCisgICAgRmVhdHVyZVNldF9pT1Nf
R1BVRmFtaWx5Ml92MSA9IDEsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92MiA9IDIs
CisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92MiA9IDMsCisgICAgRmVhdHVyZVNldF9p
T1NfR1BVRmFtaWx5M192MSA9IDQsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92MyA9
IDUsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92MyA9IDYsCisgICAgRmVhdHVyZVNl
dF9pT1NfR1BVRmFtaWx5M192MiA9IDcsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92
NCA9IDgsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92NCA9IDksCisgICAgRmVhdHVy
ZVNldF9pT1NfR1BVRmFtaWx5M192MyA9IDEwLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWls
eTRfdjEgPSAxMSwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkxX3Y1ID0gMTIsCisgICAg
RmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92NSA9IDEzLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQ
VUZhbWlseTNfdjQgPSAxNCwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHk0X3YyID0gMTUs
CisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5NV92MSA9IDE2LAorICAgIEZlYXR1cmVTZXRf
bWFjT1NfR1BVRmFtaWx5MV92MSA9IDEwMDAwLAorICAgIEZlYXR1cmVTZXRfT1NYX0dQVUZhbWls
eTFfdjEgPSAxMDAwMCwKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTFfdjIgPSAxMDAw
MSwKKyAgICBGZWF0dXJlU2V0X09TWF9HUFVGYW1pbHkxX3YyID0gMTAwMDEsCisgICAgRmVhdHVy
ZVNldF9PU1hfUmVhZFdyaXRlVGV4dHVyZVRpZXIyID0gMTAwMDIsCisgICAgRmVhdHVyZVNldF9t
YWNPU19SZWFkV3JpdGVUZXh0dXJlVGllcjIgPSAxMDAwMiwKKyAgICBGZWF0dXJlU2V0X21hY09T
X0dQVUZhbWlseTFfdjMgPSAxMDAwMywKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTFf
djQgPSAxMDAwNCwKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTJfdjEgPSAxMDAwNSwK
KyAgICBGZWF0dXJlU2V0X3dhdGNoT1NfR1BVRmFtaWx5MV92MSA9IDIwMDAwLAorICAgIEZlYXR1
cmVTZXRfV2F0Y2hPU19HUFVGYW1pbHkxX3YxID0gMjAwMDAsCisgICAgRmVhdHVyZVNldF93YXRj
aE9TX0dQVUZhbWlseTJfdjEgPSAyMDAwMSwKKyAgICBGZWF0dXJlU2V0X1dhdGNoT1NfR1BVRmFt
aWx5Ml92MSA9IDIwMDAxLAorICAgIEZlYXR1cmVTZXRfdHZPU19HUFVGYW1pbHkxX3YxID0gMzAw
MDAsCisgICAgRmVhdHVyZVNldF9UVk9TX0dQVUZhbWlseTFfdjEgPSAzMDAwMCwKKyAgICBGZWF0
dXJlU2V0X3R2T1NfR1BVRmFtaWx5MV92MiA9IDMwMDAxLAorICAgIEZlYXR1cmVTZXRfdHZPU19H
UFVGYW1pbHkxX3YzID0gMzAwMDIsCisgICAgRmVhdHVyZVNldF90dk9TX0dQVUZhbWlseTJfdjEg
PSAzMDAwMywKKyAgICBGZWF0dXJlU2V0X3R2T1NfR1BVRmFtaWx5MV92NCA9IDMwMDA0LAorICAg
IEZlYXR1cmVTZXRfdHZPU19HUFVGYW1pbHkyX3YyID0gMzAwMDUsCit9OworCitfTVRMX0VOVU0o
TlM6OkludGVnZXIsIEdQVUZhbWlseSkgeworICAgIEdQVUZhbWlseUFwcGxlMSA9IDEwMDEsCisg
ICAgR1BVRmFtaWx5QXBwbGUyID0gMTAwMiwKKyAgICBHUFVGYW1pbHlBcHBsZTMgPSAxMDAzLAor
ICAgIEdQVUZhbWlseUFwcGxlNCA9IDEwMDQsCisgICAgR1BVRmFtaWx5QXBwbGU1ID0gMTAwNSwK
KyAgICBHUFVGYW1pbHlBcHBsZTYgPSAxMDA2LAorICAgIEdQVUZhbWlseUFwcGxlNyA9IDEwMDcs
CisgICAgR1BVRmFtaWx5QXBwbGU4ID0gMTAwOCwKKyAgICBHUFVGYW1pbHlNYWMxID0gMjAwMSwK
KyAgICBHUFVGYW1pbHlNYWMyID0gMjAwMiwKKyAgICBHUFVGYW1pbHlDb21tb24xID0gMzAwMSwK
KyAgICBHUFVGYW1pbHlDb21tb24yID0gMzAwMiwKKyAgICBHUFVGYW1pbHlDb21tb24zID0gMzAw
MywKKyAgICBHUFVGYW1pbHlNYWNDYXRhbHlzdDEgPSA0MDAxLAorICAgIEdQVUZhbWlseU1hY0Nh
dGFseXN0MiA9IDQwMDIsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBEZXZpY2VMb2Nh
dGlvbikgeworICAgIERldmljZUxvY2F0aW9uQnVpbHRJbiA9IDAsCisgICAgRGV2aWNlTG9jYXRp
b25TbG90ID0gMSwKKyAgICBEZXZpY2VMb2NhdGlvbkV4dGVybmFsID0gMiwKKyAgICBEZXZpY2VM
b2NhdGlvblVuc3BlY2lmaWVkID0gTlM6OlVJbnRlZ2VyTWF4LAorfTsKKworX01UTF9PUFRJT05T
KE5TOjpVSW50ZWdlciwgUGlwZWxpbmVPcHRpb24pIHsKKyAgICBQaXBlbGluZU9wdGlvbk5vbmUg
PSAwLAorICAgIFBpcGVsaW5lT3B0aW9uQXJndW1lbnRJbmZvID0gMSwKKyAgICBQaXBlbGluZU9w
dGlvbkJ1ZmZlclR5cGVJbmZvID0gMiwKKyAgICBQaXBlbGluZU9wdGlvbkZhaWxPbkJpbmFyeUFy
Y2hpdmVNaXNzID0gNCwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFJlYWRXcml0ZVRl
eHR1cmVUaWVyKSB7CisgICAgUmVhZFdyaXRlVGV4dHVyZVRpZXJOb25lID0gMCwKKyAgICBSZWFk
V3JpdGVUZXh0dXJlVGllcjEgPSAxLAorICAgIFJlYWRXcml0ZVRleHR1cmVUaWVyMiA9IDIsCit9
OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBBcmd1bWVudEJ1ZmZlcnNUaWVyKSB7CisgICAg
QXJndW1lbnRCdWZmZXJzVGllcjEgPSAwLAorICAgIEFyZ3VtZW50QnVmZmVyc1RpZXIyID0gMSwK
K307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFNwYXJzZVRleHR1cmVSZWdpb25BbGlnbm1l
bnRNb2RlKSB7CisgICAgU3BhcnNlVGV4dHVyZVJlZ2lvbkFsaWdubWVudE1vZGVPdXR3YXJkID0g
MCwKKyAgICBTcGFyc2VUZXh0dXJlUmVnaW9uQWxpZ25tZW50TW9kZUlud2FyZCA9IDEsCit9Owor
CitzdHJ1Y3QgQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMKK3sKKyAgICBOUzo6VUludGVnZXIg
YWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZTsKKyAgICBOUzo6VUludGVnZXIgYnVpbGRTY3JhdGNo
QnVmZmVyU2l6ZTsKKyAgICBOUzo6VUludGVnZXIgcmVmaXRTY3JhdGNoQnVmZmVyU2l6ZTsKK30g
X01UTF9QQUNLRUQ7CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIENvdW50ZXJTYW1wbGluZ1Bv
aW50KSB7CisgICAgQ291bnRlclNhbXBsaW5nUG9pbnRBdFN0YWdlQm91bmRhcnkgPSAwLAorICAg
IENvdW50ZXJTYW1wbGluZ1BvaW50QXREcmF3Qm91bmRhcnkgPSAxLAorICAgIENvdW50ZXJTYW1w
bGluZ1BvaW50QXREaXNwYXRjaEJvdW5kYXJ5ID0gMiwKKyAgICBDb3VudGVyU2FtcGxpbmdQb2lu
dEF0VGlsZURpc3BhdGNoQm91bmRhcnkgPSAzLAorICAgIENvdW50ZXJTYW1wbGluZ1BvaW50QXRC
bGl0Qm91bmRhcnkgPSA0LAorfTsKKworc3RydWN0IFNpemVBbmRBbGlnbgoreworICAgIE5TOjpV
SW50ZWdlciBzaXplOworICAgIE5TOjpVSW50ZWdlciBhbGlnbjsKK30gX01UTF9QQUNLRUQ7CisK
K2NsYXNzIEFyZ3VtZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBcmd1bWVudERl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFyZ3VtZW50RGVzY3JpcHRv
ciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFyZ3VtZW50RGVzY3JpcHRvciogICAgICAgIGluaXQo
KTsKKworICAgIHN0YXRpYyBjbGFzcyBBcmd1bWVudERlc2NyaXB0b3IqIGFyZ3VtZW50RGVzY3Jp
cHRvcigpOworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGUo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREYXRhVHlw
ZShNVEw6OkRhdGFUeXBlIGRhdGFUeXBlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgIGluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0SW5kZXgoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICAgICAgIGFycmF5TGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFycmF5TGVu
Z3RoKTsKKworICAgIE1UTDo6QXJndW1lbnRBY2Nlc3MgICAgICAgICAgICAgIGFjY2VzcygpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFjY2VzcyhNVEw6
OkFyZ3VtZW50QWNjZXNzIGFjY2Vzcyk7CisKKyAgICBNVEw6OlRleHR1cmVUeXBlICAgICAgICAg
ICAgICAgICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFRleHR1cmVUeXBlKE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRCbG9ja0FsaWdu
bWVudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENv
bnN0YW50QmxvY2tBbGlnbm1lbnQoTlM6OlVJbnRlZ2VyIGNvbnN0YW50QmxvY2tBbGlnbm1lbnQp
OworfTsKKwordXNpbmcgRGV2aWNlTm90aWZpY2F0aW9uTmFtZSA9IE5TOjpTdHJpbmcqOworCitf
TVRMX0NPTlNUKERldmljZU5vdGlmaWNhdGlvbk5hbWUsIERldmljZVdhc0FkZGVkTm90aWZpY2F0
aW9uKTsKKworX01UTF9DT05TVChEZXZpY2VOb3RpZmljYXRpb25OYW1lLCBEZXZpY2VSZW1vdmFs
UmVxdWVzdGVkTm90aWZpY2F0aW9uKTsKKworX01UTF9DT05TVChEZXZpY2VOb3RpZmljYXRpb25O
YW1lLCBEZXZpY2VXYXNSZW1vdmVkTm90aWZpY2F0aW9uKTsKKwordXNpbmcgRGV2aWNlTm90aWZp
Y2F0aW9uSGFuZGxlckJsb2NrID0gdm9pZCAoXikoY2xhc3MgRGV2aWNlKiBwRGV2aWNlLCBEZXZp
Y2VOb3RpZmljYXRpb25OYW1lIG5vdGlmeU5hbWUpOworCit1c2luZyBEZXZpY2VOb3RpZmljYXRp
b25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgRGV2aWNlKiBwRGV2
aWNlLCBEZXZpY2VOb3RpZmljYXRpb25OYW1lIG5vdGlmeU5hbWUpPjsKKwordXNpbmcgQXV0b3Jl
bGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiA9IGNsYXNzIENvbXB1dGVQaXBlbGluZVJl
ZmxlY3Rpb24qOworCit1c2luZyBBdXRvcmVsZWFzZWRSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24g
PSBjbGFzcyBSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qOworCit1c2luZyBOZXdMaWJyYXJ5Q29t
cGxldGlvbkhhbmRsZXIgPSB2b2lkICheKShjbGFzcyBMaWJyYXJ5KiwgTlM6OkVycm9yKik7CisK
K3VzaW5nIE5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlv
bjx2b2lkKGNsYXNzIExpYnJhcnkqLCBOUzo6RXJyb3IqKT47CisKK3VzaW5nIE5ld1JlbmRlclBp
cGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlciA9IHZvaWQgKF4pKGNsYXNzIFJlbmRlclBpcGVs
aW5lU3RhdGUqLCBOUzo6RXJyb3IqKTsKKwordXNpbmcgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZUNv
bXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgUmVuZGVy
UGlwZWxpbmVTdGF0ZSosIE5TOjpFcnJvciopPjsKKwordXNpbmcgTmV3UmVuZGVyUGlwZWxpbmVT
dGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSB2b2lkICheKShjbGFzcyBSZW5k
ZXJQaXBlbGluZVN0YXRlKiwgY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiwgTlM6OkVy
cm9yKik7CisKK3VzaW5nIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBs
ZXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgUmVuZGVyUGlw
ZWxpbmVTdGF0ZSosIGNsYXNzIFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiosIE5TOjpFcnJvciop
PjsKKwordXNpbmcgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlciA9IHZv
aWQgKF4pKGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiwgTlM6OkVycm9yKik7CisKK3VzaW5n
IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0ZDo6
ZnVuY3Rpb248dm9pZChjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSosIE5TOjpFcnJvciopPjsK
KwordXNpbmcgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25I
YW5kbGVyID0gdm9pZCAoXikoY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUqLCBjbGFzcyBDb21w
dXRlUGlwZWxpbmVSZWZsZWN0aW9uKiwgTlM6OkVycm9yKik7CisKK3VzaW5nIE5ld0NvbXB1dGVQ
aXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uID0gc3Rk
OjpmdW5jdGlvbjx2b2lkKGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiwgY2xhc3MgQ29tcHV0
ZVBpcGVsaW5lUmVmbGVjdGlvbiosIE5TOjpFcnJvciopPjsKKwordXNpbmcgVGltZXN0YW1wID0g
c3RkOjp1aW50NjRfdDsKKworTVRMOjpEZXZpY2UqIENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2Uo
KTsKKworTlM6OkFycmF5KiAgIENvcHlBbGxEZXZpY2VzKCk7CisKK05TOjpBcnJheSogICBDb3B5
QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBEZXZpY2VO
b3RpZmljYXRpb25IYW5kbGVyQmxvY2sgaGFuZGxlcik7CisKK05TOjpBcnJheSogICBDb3B5QWxs
RGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBjb25zdCBEZXZp
Y2VOb3RpZmljYXRpb25IYW5kbGVyRnVuY3Rpb24mIGhhbmRsZXIpOworCit2b2lkICAgICAgICAg
UmVtb3ZlRGV2aWNlT2JzZXJ2ZXIoY29uc3QgTlM6Ok9iamVjdCogcE9ic2VydmVyKTsKKworY2xh
c3MgRGV2aWNlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxEZXZpY2U+Cit7CitwdWJsaWM6Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IE5TOjpT
dHJpbmcqIHBTb3VyY2UsIGNvbnN0IGNsYXNzIENvbXBpbGVPcHRpb25zKiBwT3B0aW9ucywgY29u
c3QgTmV3TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVy
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25z
dCBjbGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3QgTVRM
OjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZW5kZXJQaXBlbGlu
ZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3Is
IGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBj
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKiBwRGVzY3JpcHRvciwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29t
cGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IqIHBEZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBj
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IGNvbnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYg
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogcEZ1bmN0aW9u
LCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdp
dGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRv
ciwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVy
KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIZWFkbGVzcygpIGNv
bnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7
CisKKyAgICB1aW50NjRfdCAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5SUQoKSBjb25z
dDsKKworICAgIE1UTDo6U2l6ZSAgICAgICAgICAgICAgICAgICAgICAgbWF4VGhyZWFkc1BlclRo
cmVhZGdyb3VwKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvd1Bvd2VyKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlYWRsZXNzKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlbW92YWJsZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoYXNVbmlmaWVkTWVtb3J5KCkgY29uc3Q7CisKKyAgICB1aW50NjRfdCAgICAgICAgICAgICAg
ICAgICAgICAgIHJlY29tbWVuZGVkTWF4V29ya2luZ1NldFNpemUoKSBjb25zdDsKKworICAgIE1U
TDo6RGV2aWNlTG9jYXRpb24gICAgICAgICAgICAgbG9jYXRpb24oKSBjb25zdDsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25OdW1iZXIoKSBjb25zdDsKKwor
ICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgbWF4VHJhbnNmZXJSYXRlKCkgY29u
c3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoMjRTdGVuY2ls
OFBpeGVsRm9ybWF0U3VwcG9ydGVkKCkgY29uc3Q7CisKKyAgICBNVEw6OlJlYWRXcml0ZVRleHR1
cmVUaWVyICAgICAgIHJlYWRXcml0ZVRleHR1cmVTdXBwb3J0KCkgY29uc3Q7CisKKyAgICBNVEw6
OkFyZ3VtZW50QnVmZmVyc1RpZXIgICAgICAgIGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQoKSBjb25z
dDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyT3JkZXJHcm91
cHNTdXBwb3J0ZWQoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5nKCkgY29uc3Q7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzMzJCaXRNU0FBKCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUXVlcnlUZXh0dXJlTE9EKCkg
Y29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzQkNU
ZXh0dXJlQ29tcHJlc3Npb24oKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9uKCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcnljZW50cmljQ29vcmRzU3VwcG9ydGVk
KCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRz
U2hhZGVyQmFyeWNlbnRyaWNDb29yZGluYXRlcygpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50QWxsb2NhdGVkU2l6ZSgpIGNvbnN0OworCisgICAg
Y2xhc3MgQ29tbWFuZFF1ZXVlKiAgICAgICAgICAgICBuZXdDb21tYW5kUXVldWUoKTsKKworICAg
IGNsYXNzIENvbW1hbmRRdWV1ZSogICAgICAgICAgICAgbmV3Q29tbWFuZFF1ZXVlKE5TOjpVSW50
ZWdlciBtYXhDb21tYW5kQnVmZmVyQ291bnQpOworCisgICAgTVRMOjpTaXplQW5kQWxpZ24gICAg
ICAgICAgICAgICBoZWFwVGV4dHVyZVNpemVBbmRBbGlnbihjb25zdCBjbGFzcyBUZXh0dXJlRGVz
Y3JpcHRvciogZGVzYyk7CisKKyAgICBNVEw6OlNpemVBbmRBbGlnbiAgICAgICAgICAgICAgIGhl
YXBCdWZmZXJTaXplQW5kQWxpZ24oTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9w
dGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBIZWFwKiAgICAgICAgICAgICAgICAgICAgIG5l
d0hlYXAoY29uc3QgY2xhc3MgSGVhcERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xh
c3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICBuZXdCdWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0
aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBCdWZmZXIqICAg
ICAgICAgICAgICAgICAgIG5ld0J1ZmZlcihjb25zdCB2b2lkKiBwb2ludGVyLCBOUzo6VUludGVn
ZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zKTsKKworICAgIGNsYXNzIEJ1
ZmZlciogICAgICAgICAgICAgICAgICAgbmV3QnVmZmVyKGNvbnN0IHZvaWQqIHBvaW50ZXIsIE5T
OjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMsIGNvbnN0IHZv
aWQgKF5kZWFsbG9jYXRvcikodm9pZCosIE5TOjpVSW50ZWdlcikpOworCisgICAgY2xhc3MgRGVw
dGhTdGVuY2lsU3RhdGUqICAgICAgICBuZXdEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBjbGFzcyBE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNzIFRleHR1cmUq
ICAgICAgICAgICAgICAgICAgbmV3VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlRGVzY3JpcHRv
ciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgICAgIG5l
d1RleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0
IElPU3VyZmFjZVJlZiBpb3N1cmZhY2UsIE5TOjpVSW50ZWdlciBwbGFuZSk7CisKKyAgICBjbGFz
cyBUZXh0dXJlKiAgICAgICAgICAgICAgICAgIG5ld1NoYXJlZFRleHR1cmUoY29uc3QgY2xhc3Mg
VGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAg
ICAgICAgICAgICAgICBuZXdTaGFyZWRUZXh0dXJlKGNvbnN0IGNsYXNzIFNoYXJlZFRleHR1cmVI
YW5kbGUqIHNoYXJlZEhhbmRsZSk7CisKKyAgICBjbGFzcyBTYW1wbGVyU3RhdGUqICAgICAgICAg
ICAgIG5ld1NhbXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyRGVzY3JpcHRvciogZGVzY3Jp
cHRvcik7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5ld0RlZmF1bHRM
aWJyYXJ5KCk7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5ld0RlZmF1
bHRMaWJyYXJ5KGNvbnN0IE5TOjpCdW5kbGUqIGJ1bmRsZSwgTlM6OkVycm9yKiogZXJyb3IpOwor
CisgICAgY2xhc3MgTGlicmFyeSogICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IE5T
OjpTdHJpbmcqIGZpbGVwYXRoLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBMaWJy
YXJ5KiAgICAgICAgICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6
RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5l
d0xpYnJhcnkoY29uc3QgZGlzcGF0Y2hfZGF0YV90IGRhdGEsIE5TOjpFcnJvcioqIGVycm9yKTsK
KworICAgIGNsYXNzIExpYnJhcnkqICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBO
Uzo6U3RyaW5nKiBzb3VyY2UsIGNvbnN0IGNsYXNzIENvbXBpbGVPcHRpb25zKiBvcHRpb25zLCBO
Uzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogc291cmNlLCBjb25zdCBjbGFzcyBDb21waWxl
T3B0aW9ucyogb3B0aW9ucywgY29uc3QgTVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIg
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xhc3MgTGlicmFyeSogICAgICAgICAgICAgICAg
ICBuZXdMaWJyYXJ5KGNvbnN0IGNsYXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3TGlicmFyeShjb25zdCBjbGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlcik7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiAgICAgIG5l
d1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBl
bGluZVN0YXRlKiAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlv
bnMsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiByZWZs
ZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3Mg
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9u
IG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9u
Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xhc3MgQ29tcHV0
ZVBpcGVsaW5lU3RhdGUqICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBG
dW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFz
cyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0
IGNsYXNzIEZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0
aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiBy
ZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0aW9u
KiBjb21wdXRlRnVuY3Rpb24sIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21w
bGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0
aW9uKiBjb21wdXRlRnVuY3Rpb24sIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3Qg
TVRMOjpOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRs
ZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUq
ICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0
IE1UTDo6QXV0b3JlbGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwg
TlM6OkVycm9yKiogZXJyb3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1U
TDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVy
IGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGNsYXNzIEZlbmNlKiAgICAgICAgICAgICAgICAg
ICAgbmV3RmVuY2UoKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw
cG9ydHNGZWF0dXJlU2V0KE1UTDo6RmVhdHVyZVNldCBmZWF0dXJlU2V0KTsKKworICAgIGJvb2wg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNGYW1pbHkoTVRMOjpHUFVGYW1pbHkg
Z3B1RmFtaWx5KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9y
dHNUZXh0dXJlU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWluaW11bUxpbmVhclRleHR1cmVBbGlnbm1l
bnRGb3JQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGZvcm1hdCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgIG1pbmltdW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9y
UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBmb3JtYXQpOworCisgICAgY2xhc3MgUmVuZGVy
UGlwZWxpbmVTdGF0ZSogICAgICBuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFRp
bGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRp
b24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRSZW5kZXJQaXBlbGluZVJlZmxlY3Rp
b24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9u
IG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9u
Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICBtYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0Owor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBtYXhBcmd1bWVudEJ1ZmZlclNh
bXBsZXJDb3VudCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9ncmFtbWFibGVTYW1wbGVQb3NpdGlvbnNTdXBwb3J0ZWQoKSBjb25zdDsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9ucyhN
VEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAg
ICBjbGFzcyBBcmd1bWVudEVuY29kZXIqICAgICAgICAgIG5ld0FyZ3VtZW50RW5jb2Rlcihjb25z
dCBOUzo6QXJyYXkqIGFyZ3VtZW50cyk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1cHBvcnRzUmFzdGVyaXphdGlvblJhdGVNYXAoTlM6OlVJbnRlZ2VyIGxheWVyQ291
bnQpOworCisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXAqICAgICBuZXdSYXN0ZXJpemF0
aW9uUmF0ZU1hcChjb25zdCBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpOworCisgICAgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiAgICBuZXdJbmRp
cmVjdENvbW1hbmRCdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3Jp
cHRvciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG1heENvdW50LCBNVEw6OlJlc291cmNlT3B0
aW9ucyBvcHRpb25zKTsKKworICAgIGNsYXNzIEV2ZW50KiAgICAgICAgICAgICAgICAgICAgbmV3
RXZlbnQoKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50KiAgICAgICAgICAgICAgbmV3U2hhcmVk
RXZlbnQoKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50KiAgICAgICAgICAgICAgbmV3U2hhcmVk
RXZlbnQoY29uc3QgY2xhc3MgU2hhcmVkRXZlbnRIYW5kbGUqIHNoYXJlZEV2ZW50SGFuZGxlKTsK
KworICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgcGVlckdyb3VwSUQoKSBjb25z
dDsKKworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgcGVlckluZGV4KCkgY29u
c3Q7CisKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb3VudCgpIGNv
bnN0OworCisgICAgTVRMOjpTaXplICAgICAgICAgICAgICAgICAgICAgICBzcGFyc2VUaWxlU2l6
ZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlLCBNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBOUzo6VUludGVnZXIgc2FtcGxlQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICBzcGFyc2VUaWxlU2l6ZUluQnl0ZXMoKSBjb25zdDsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFNwYXJzZVBpeGVsUmVnaW9ucyhjb25z
dCBNVEw6OlJlZ2lvbiogcGl4ZWxSZWdpb25zLCBNVEw6OlJlZ2lvbiogdGlsZVJlZ2lvbnMsIE1U
TDo6U2l6ZSB0aWxlU2l6ZSwgTVRMOjpTcGFyc2VUZXh0dXJlUmVnaW9uQWxpZ25tZW50TW9kZSBt
b2RlLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucyk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnZlcnRTcGFyc2VUaWxlUmVnaW9ucyhjb25zdCBNVEw6OlJlZ2lvbiog
dGlsZVJlZ2lvbnMsIE1UTDo6UmVnaW9uKiBwaXhlbFJlZ2lvbnMsIE1UTDo6U2l6ZSB0aWxlU2l6
ZSwgTlM6OlVJbnRlZ2VyIG51bVJlZ2lvbnMpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgICAgICBtYXhCdWZmZXJMZW5ndGgoKSBjb25zdDsKKworICAgIE5TOjpBcnJheSogICAg
ICAgICAgICAgICAgICAgICAgY291bnRlclNldHMoKSBjb25zdDsKKworICAgIGNsYXNzIENvdW50
ZXJTYW1wbGVCdWZmZXIqICAgICAgbmV3Q291bnRlclNhbXBsZUJ1ZmZlcihjb25zdCBjbGFzcyBD
b3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJy
b3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVUaW1lc3Rh
bXBzKE1UTDo6VGltZXN0YW1wKiBjcHVUaW1lc3RhbXAsIE1UTDo6VGltZXN0YW1wKiBncHVUaW1l
c3RhbXApOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0Nv
dW50ZXJTYW1wbGluZyhNVEw6OkNvdW50ZXJTYW1wbGluZ1BvaW50IHNhbXBsaW5nUG9pbnQpOwor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1ZlcnRleEFtcGxp
ZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgY291bnQpOworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0c0R5bmFtaWNMaWJyYXJpZXMoKSBjb25zdDsKKworICAg
IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNSZW5kZXJEeW5hbWljTGli
cmFyaWVzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBEeW5hbWljTGlicmFyeSogICAgICAgICAgIG5l
d0R5bmFtaWNMaWJyYXJ5KGNvbnN0IGNsYXNzIExpYnJhcnkqIGxpYnJhcnksIE5TOjpFcnJvcioq
IGVycm9yKTsKKworICAgIGNsYXNzIER5bmFtaWNMaWJyYXJ5KiAgICAgICAgICAgbmV3RHluYW1p
Y0xpYnJhcnkoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBj
bGFzcyBCaW5hcnlBcmNoaXZlKiAgICAgICAgICAgIG5ld0JpbmFyeUFyY2hpdmUoY29uc3QgY2xh
c3MgQmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNSYXl0cmFj
aW5nKCkgY29uc3Q7CisKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemVzIGFjY2Vs
ZXJhdGlvblN0cnVjdHVyZVNpemVzKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJl
KiAgICBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoTlM6OlVJbnRlZ2VyIHNpemUpOworCisgICAg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiAgICBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmUo
Y29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcik7
CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRnVuY3Rpb25Q
b2ludGVycygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyKCkgY29uc3Q7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5kZXIoKSBj
b25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNQcmlt
aXRpdmVNb3Rpb25CbHVyKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvciogTVRMOjpBcmd1bWVudERl
c2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpB
cmd1bWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQXJndW1lbnREZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudERlc2Ny
aXB0b3IqIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6aW5pdDxNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYXJndW1lbnREZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RGVz
Y3JpcHRvciogTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OmFyZ3VtZW50RGVzY3JpcHRvcigpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcmd1bWVudERlc2NyaXB0b3Iq
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFyZ3VtZW50RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9T
RUwoYXJndW1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkYXRhVHlwZQorX01U
TF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6ZGF0YVR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGF0YVR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0RGF0YVR5cGUoTVRMOjpEYXRhVHlwZSBkYXRh
VHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0RGF0YVR5cGVfKSwgZGF0YVR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXgK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6aW5kZXgo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QXJndW1lbnREZXNjcmlwdG9yOjpzZXRJbmRleChOUzo6VUludGVnZXIgaW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldElu
ZGV4XyksIGluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IGFycmF5TGVuZ3RoCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OmFycmF5TGVuZ3RoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFycmF5
TGVuZ3RoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRBcnJheUxlbmd0aF8pLCBhcnJheUxlbmd0aCk7Cit9CisKKy8vIHByb3BlcnR5
OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRBY2Nlc3MgTVRMOjpBcmd1bWVudERl
c2NyaXB0b3I6OmFjY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpBcmd1bWVudEFjY2Vzcz4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nlc3MpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0QWNjZXNz
KE1UTDo6QXJndW1lbnRBY2Nlc3MgYWNjZXNzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRBY2Nlc3NfKSwgYWNjZXNzKTsKK30KKwor
Ly8gcHJvcGVydHk6IHRleHR1cmVUeXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVUeXBlIE1U
TDo6QXJndW1lbnREZXNjcmlwdG9yOjp0ZXh0dXJlVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh0ZXh0dXJlVHlwZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRE
ZXNjcmlwdG9yOjpzZXRUZXh0dXJlVHlwZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRUZXh0dXJlVHlwZV8pLCB0ZXh0dXJlVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb25zdGFu
dEJsb2NrQWxpZ25tZW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudERl
c2NyaXB0b3I6OmNvbnN0YW50QmxvY2tBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b25zdGFudEJsb2NrQWxpZ25tZW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1
bWVudERlc2NyaXB0b3I6OnNldENvbnN0YW50QmxvY2tBbGlnbm1lbnQoTlM6OlVJbnRlZ2VyIGNv
bnN0YW50QmxvY2tBbGlnbm1lbnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0YW50QmxvY2tBbGlnbm1lbnRfKSwgY29uc3Rh
bnRCbG9ja0FsaWdubWVudCk7Cit9CisKKyNpZiBkZWZpbmVkKE1UTF9QUklWQVRFX0lNUExFTUVO
VEFUSU9OKQorCitleHRlcm4gIkMiIE1UTDo6RGV2aWNlKiBNVExDcmVhdGVTeXN0ZW1EZWZhdWx0
RGV2aWNlKCk7CisKK2V4dGVybiAiQyIgTlM6OkFycmF5KiAgIE1UTENvcHlBbGxEZXZpY2VzKCk7
CisKK2V4dGVybiAiQyIgTlM6OkFycmF5KiAgIE1UTENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVy
KE5TOjpPYmplY3QqKiwgTVRMOjpEZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyQmxvY2spOworCitl
eHRlcm4gIkMiIHZvaWQgICAgICAgICBNVExSZW1vdmVEZXZpY2VPYnNlcnZlcihjb25zdCBOUzo6
T2JqZWN0Kik7CisKKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KKworTVRMOjpEZXZp
Y2UqIE1UTDo6Q3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpCit7CisgICAgcmV0dXJuIDo6TVRM
Q3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOworfQorCitOUzo6QXJyYXkqIE1UTDo6Q29weUFs
bERldmljZXMoKQoreworI2lmIFRBUkdFVF9PU19PU1gKKyAgICByZXR1cm4gOjpNVExDb3B5QWxs
RGV2aWNlcygpOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAvLyBUQVJHRVRf
T1NfT1NYCit9CisKK05TOjpBcnJheSogTVRMOjpDb3B5QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihO
Uzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBEZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyQmxvY2sg
aGFuZGxlcikKK3sKKyNpZiBUQVJHRVRfT1NfT1NYCisgICAgcmV0dXJuIDo6TVRMQ29weUFsbERl
dmljZXNXaXRoT2JzZXJ2ZXIocE91dE9ic2VydmVyLCBoYW5kbGVyKTsKKyNlbHNlCisgICAgKHZv
aWQpcE91dE9ic2VydmVyOworICAgICh2b2lkKWhhbmRsZXI7CisKKyAgICByZXR1cm4gbnVsbHB0
cjsKKyNlbmRpZiAvLyBUQVJHRVRfT1NfT1NYCit9CisKK05TOjpBcnJheSogTVRMOjpDb3B5QWxs
RGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBjb25zdCBEZXZp
Y2VOb3RpZmljYXRpb25IYW5kbGVyRnVuY3Rpb24mIGhhbmRsZXIpCit7CisgICAgX19ibG9jayBE
ZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyRnVuY3Rpb24gZnVuY3Rpb24gPSBoYW5kbGVyOworCisg
ICAgcmV0dXJuIENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKHBPdXRPYnNlcnZlciwgXihEZXZp
Y2UqIHBEZXZpY2UsIERldmljZU5vdGlmaWNhdGlvbk5hbWUgcE5vdGlmaWNhdGlvbk5hbWUpIHsg
ZnVuY3Rpb24ocERldmljZSwgcE5vdGlmaWNhdGlvbk5hbWUpOyB9KTsKK30KKwordm9pZCBNVEw6
OlJlbW92ZURldmljZU9ic2VydmVyKGNvbnN0IE5TOjpPYmplY3QqIHBPYnNlcnZlcikKK3sKKyNp
ZiBUQVJHRVRfT1NfT1NYCisgICAgOjpNVExSZW1vdmVEZXZpY2VPYnNlcnZlcihwT2JzZXJ2ZXIp
OworI2VuZGlmIC8vIFRBUkdFVF9PU19PU1gKK30KKworI2VuZGlmIC8vIE1UTF9QUklWQVRFX0lN
UExFTUVOVEFUSU9OCisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0xpYnJhcnko
Y29uc3QgTlM6OlN0cmluZyogcFNvdXJjZSwgY29uc3QgQ29tcGlsZU9wdGlvbnMqIHBPcHRpb25z
LCBjb25zdCBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgX19ibG9jayBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlv
biBibG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdM
aWJyYXJ5KHBTb3VyY2UsIHBPcHRpb25zLCBeKExpYnJhcnkqIHBMaWJyYXJ5LCBOUzo6RXJyb3Iq
IHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBMaWJyYXJ5LCBwRXJyb3IpOyB9KTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBjbGFz
cyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3QgTVRMOjpOZXdM
aWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgX19ibG9jayBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9ja0NvbXBs
ZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdMaWJyYXJ5KHBEZXNj
cmlwdG9yLCBeKExpYnJhcnkqIHBMaWJyYXJ5LCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0Nv
bXBsZXRpb25IYW5kbGVyKHBMaWJyYXJ5LCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBOZXdSZW5kZXJQaXBlbGluZVN0YXRl
Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgX19i
bG9jayBOZXdSZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9j
a0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdSZW5kZXJQ
aXBlbGluZVN0YXRlKHBEZXNjcmlwdG9yLCBeKFJlbmRlclBpcGVsaW5lU3RhdGUqIHBQaXBlbGlu
ZVN0YXRlLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBQaXBl
bGluZVN0YXRlLCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmlj
ZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iq
IHBEZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5kZXJQaXBl
bGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVm
bGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9
IGNvbXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShwRGVzY3Jp
cHRvciwgb3B0aW9ucywgXihSZW5kZXJQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgY2xh
c3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJy
b3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24s
IHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlKGNvbnN0IFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIHBEZXNj
cmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5kZXJQaXBlbGluZVN0
YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlv
bkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBs
ZXRpb25IYW5kbGVyOworCisgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShwRGVzY3JpcHRvciwg
b3B0aW9ucywgXihSZW5kZXJQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgY2xhc3MgUmVu
ZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpIHsg
YmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24sIHBFcnJv
cik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogcEZ1bmN0aW9uLCBjb25zdCBOZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIF9fYmxvY2sgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFu
ZGxlckZ1bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsK
KworICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKHBGdW5jdGlvbiwgXihDb21wdXRlUGlwZWxp
bmVTdGF0ZSogcFBpcGVsaW5lU3RhdGUsIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxl
dGlvbkhhbmRsZXIocFBpcGVsaW5lU3RhdGUsIHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBGdW5jdGlv
biogcEZ1bmN0aW9uLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhS
ZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9ja0NvbXBsZXRpb25IYW5kbGVy
ID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShwRnVu
Y3Rpb24sIG9wdGlvbnMsIF4oQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBQaXBlbGluZVN0YXRlLCBD
b21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJyb3Ip
IHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24sIHBF
cnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZShjb25zdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRv
ciwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIF9fYmxvY2sgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNv
bXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRp
b25IYW5kbGVyOworCisgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUocERlc2NyaXB0b3IsIG9w
dGlvbnMsIF4oQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBQaXBlbGluZVN0YXRlLCBDb21wdXRlUGlw
ZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tD
b21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24sIHBFcnJvcik7IH0p
OworfQorCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjppc0hlYWRsZXNzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaGVhZGxlc3MoKTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExf
SU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RGV2aWNlOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZWdpc3RyeUlECitfTVRMX0lOTElORSB1aW50
NjRfdCBNVEw6OkRldmljZTo6cmVnaXN0cnlJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVnaXN0cnlJ
RCkpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lO
TElORSBNVEw6OlNpemUgTVRMOjpEZXZpY2U6Om1heFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG1heFRocmVhZHNQZXJUaHJlYWRncm91cCkpOworfQorCisvLyBwcm9w
ZXJ0eTogbG93UG93ZXIKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6Omxvd1Bvd2VyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGlzTG93UG93ZXIpKTsKK30KKworLy8gcHJvcGVydHk6IGhlYWRsZXNzCitf
TVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpoZWFkbGVzcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0hl
YWRsZXNzKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZW1vdmFibGUKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpEZXZpY2U6OnJlbW92YWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1JlbW92YWJsZSkpOworfQor
CisvLyBwcm9wZXJ0eTogaGFzVW5pZmllZE1lbW9yeQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRl
dmljZTo6aGFzVW5pZmllZE1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChoYXNVbmlmaWVkTWVtb3J5KSk7
Cit9CisKKy8vIHByb3BlcnR5OiByZWNvbW1lbmRlZE1heFdvcmtpbmdTZXRTaXplCitfTVRMX0lO
TElORSB1aW50NjRfdCBNVEw6OkRldmljZTo6cmVjb21tZW5kZWRNYXhXb3JraW5nU2V0U2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwocmVjb21tZW5kZWRNYXhXb3JraW5nU2V0U2l6ZSkpOworfQorCisv
LyBwcm9wZXJ0eTogbG9jYXRpb24KK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlTG9jYXRpb24gTVRM
OjpEZXZpY2U6OmxvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZUxvY2F0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxvY2F0aW9u
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBsb2NhdGlvbk51bWJlcgorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6RGV2aWNlOjpsb2NhdGlvbk51bWJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxvY2F0aW9uTnVtYmVyKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUcmFuc2ZlclJhdGUKK19N
VExfSU5MSU5FIHVpbnQ2NF90IE1UTDo6RGV2aWNlOjptYXhUcmFuc2ZlclJhdGUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQ2NF90Pih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG1heFRyYW5zZmVyUmF0ZSkpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGgyNFN0
ZW5jaWw4UGl4ZWxGb3JtYXRTdXBwb3J0ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6
OmRlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
c0RlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkKSk7Cit9CisKKy8vIHByb3BlcnR5
OiByZWFkV3JpdGVUZXh0dXJlU3VwcG9ydAorX01UTF9JTkxJTkUgTVRMOjpSZWFkV3JpdGVUZXh0
dXJlVGllciBNVEw6OkRldmljZTo6cmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVhZFdyaXRlVGV4dHVyZVRpZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQKK19NVExfSU5MSU5FIE1UTDo6QXJn
dW1lbnRCdWZmZXJzVGllciBNVEw6OkRldmljZTo6YXJndW1lbnRCdWZmZXJzU3VwcG9ydCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcmd1bWVudEJ1ZmZl
cnNUaWVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQpKTsK
K30KKworLy8gcHJvcGVydHk6IHJhc3Rlck9yZGVyR3JvdXBzU3VwcG9ydGVkCitfTVRMX0lOTElO
RSBib29sIE1UTDo6RGV2aWNlOjpyYXN0ZXJPcmRlckdyb3Vwc1N1cHBvcnRlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYXJlUmFzdGVyT3JkZXJHcm91cHNTdXBwb3J0ZWQpKTsKK30KKworLy8gcHJvcGVy
dHk6IHN1cHBvcnRzMzJCaXRGbG9hdEZpbHRlcmluZworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRl
dmljZTo6c3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBw
b3J0czMyQml0RmxvYXRGaWx0ZXJpbmcpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzMzJC
aXRNU0FBCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0czMyQml0TVNBQSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHMzMkJpdE1TQUEpKTsKK30KKworLy8gcHJvcGVydHk6
IHN1cHBvcnRzUXVlcnlUZXh0dXJlTE9ECitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpz
dXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNRdWVyeVRl
eHR1cmVMT0QpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzQkNUZXh0dXJlQ29tcHJlc3Np
b24KK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzQkNUZXh0dXJlQ29tcHJl
c3Npb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzQkNUZXh0dXJlQ29tcHJlc3Npb24pKTsK
K30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzUHVsbE1vZGVsSW50ZXJwb2xhdGlvbgorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1B1bGxNb2RlbEludGVycG9sYXRpb24pKTsKK30KKwor
Ly8gcHJvcGVydHk6IGJhcnljZW50cmljQ29vcmRzU3VwcG9ydGVkCitfTVRMX0lOTElORSBib29s
IE1UTDo6RGV2aWNlOjpiYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYXJlQmFyeWNlbnRyaWNDb29yZHNTdXBwb3J0ZWQpKTsKK30KKworLy8gcHJvcGVydHk6IHN1
cHBvcnRzU2hhZGVyQmFyeWNlbnRyaWNDb29yZGluYXRlcworX01UTF9JTkxJTkUgYm9vbCBNVEw6
OkRldmljZTo6c3VwcG9ydHNTaGFkZXJCYXJ5Y2VudHJpY0Nvb3JkaW5hdGVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdXBwb3J0c1NoYWRlckJhcnljZW50cmljQ29vcmRpbmF0ZXMpKTsKK30KKworLy8g
cHJvcGVydHk6IGN1cnJlbnRBbGxvY2F0ZWRTaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpEZXZpY2U6OmN1cnJlbnRBbGxvY2F0ZWRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
Y3VycmVudEFsbG9jYXRlZFNpemUpKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21tYW5kUXVldWUK
K19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZFF1ZXVlKiBNVEw6OkRldmljZTo6bmV3Q29tbWFuZFF1
ZXVlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRRdWV1
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tbWFuZFF1ZXVlKSk7Cit9CisKKy8vIG1l
dGhvZDogbmV3Q29tbWFuZFF1ZXVlV2l0aE1heENvbW1hbmRCdWZmZXJDb3VudDoKK19NVExfSU5M
SU5FIE1UTDo6Q29tbWFuZFF1ZXVlKiBNVEw6OkRldmljZTo6bmV3Q29tbWFuZFF1ZXVlKE5TOjpV
SW50ZWdlciBtYXhDb21tYW5kQnVmZmVyQ291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpDb21tYW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Nv
bW1hbmRRdWV1ZVdpdGhNYXhDb21tYW5kQnVmZmVyQ291bnRfKSwgbWF4Q29tbWFuZEJ1ZmZlckNv
dW50KTsKK30KKworLy8gbWV0aG9kOiBoZWFwVGV4dHVyZVNpemVBbmRBbGlnbldpdGhEZXNjcmlw
dG9yOgorX01UTF9JTkxJTkUgTVRMOjpTaXplQW5kQWxpZ24gTVRMOjpEZXZpY2U6OmhlYXBUZXh0
dXJlU2l6ZUFuZEFsaWduKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIGRlc2MpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplQW5kQWxpZ24+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaGVhcFRleHR1cmVTaXplQW5kQWxpZ25XaXRoRGVzY3JpcHRvcl8pLCBk
ZXNjKTsKK30KKworLy8gbWV0aG9kOiBoZWFwQnVmZmVyU2l6ZUFuZEFsaWduV2l0aExlbmd0aDpv
cHRpb25zOgorX01UTF9JTkxJTkUgTVRMOjpTaXplQW5kQWxpZ24gTVRMOjpEZXZpY2U6OmhlYXBC
dWZmZXJTaXplQW5kQWxpZ24oTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlv
bnMgb3B0aW9ucykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemVB
bmRBbGlnbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChoZWFwQnVmZmVyU2l6ZUFuZEFsaWduV2l0
aExlbmd0aF9vcHRpb25zXyksIGxlbmd0aCwgb3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogbmV3
SGVhcFdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpIZWFwKiBNVEw6OkRldmljZTo6
bmV3SGVhcChjb25zdCBNVEw6OkhlYXBEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGVhcCo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3SGVhcFdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6
IG5ld0J1ZmZlcldpdGhMZW5ndGg6b3B0aW9uczoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBN
VEw6OkRldmljZTo6bmV3QnVmZmVyKE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VP
cHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpC
dWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9u
c18pLCBsZW5ndGgsIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IG5ld0J1ZmZlcldpdGhCeXRl
czpsZW5ndGg6b3B0aW9uczoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkRldmljZTo6
bmV3QnVmZmVyKGNvbnN0IHZvaWQqIHBvaW50ZXIsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6
UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhCeXRl
c19sZW5ndGhfb3B0aW9uc18pLCBwb2ludGVyLCBsZW5ndGgsIG9wdGlvbnMpOworfQorCisvLyBt
ZXRob2Q6IG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weTpsZW5ndGg6b3B0aW9uczpkZWFsbG9jYXRv
cjoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkRldmljZTo6bmV3QnVmZmVyKGNvbnN0
IHZvaWQqIHBvaW50ZXIsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25z
IG9wdGlvbnMsIGNvbnN0IHZvaWQgKF5kZWFsbG9jYXRvcikodm9pZCosIE5TOjpVSW50ZWdlcikp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weV9sZW5ndGhfb3B0aW9uc19k
ZWFsbG9jYXRvcl8pLCBwb2ludGVyLCBsZW5ndGgsIG9wdGlvbnMsIGRlYWxsb2NhdG9yKTsKK30K
KworLy8gbWV0aG9kOiBuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9yOgorX01UTF9J
TkxJTkUgTVRMOjpEZXB0aFN0ZW5jaWxTdGF0ZSogTVRMOjpEZXZpY2U6Om5ld0RlcHRoU3RlbmNp
bFN0YXRlKGNvbnN0IE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRlcHRoU3RlbmNpbFN0YXRlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9y
XyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRv
cjoKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpEZXZpY2U6Om5ld1RleHR1cmUoY29u
c3QgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1RleHR1cmVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBu
ZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6aW9zdXJmYWNlOnBsYW5lOgorX01UTF9JTkxJTkUgTVRM
OjpUZXh0dXJlKiBNVEw6OkRldmljZTo6bmV3VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmVEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBJT1N1cmZhY2VSZWYgaW9zdXJmYWNlLCBOUzo6VUlu
dGVnZXIgcGxhbmUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0
dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3JfaW9z
dXJmYWNlX3BsYW5lXyksIGRlc2NyaXB0b3IsIGlvc3VyZmFjZSwgcGxhbmUpOworfQorCisvLyBt
ZXRob2Q6IG5ld1NoYXJlZFRleHR1cmVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6
VGV4dHVyZSogTVRMOjpEZXZpY2U6Om5ld1NoYXJlZFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJl
RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1NoYXJlZFRleHR1cmVX
aXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRU
ZXh0dXJlV2l0aEhhbmRsZToKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpEZXZpY2U6
Om5ld1NoYXJlZFRleHR1cmUoY29uc3QgTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlKiBzaGFyZWRI
YW5kbGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdTaGFyZWRUZXh0dXJlV2l0aEhhbmRsZV8pLCBzaGFy
ZWRIYW5kbGUpOworfQorCisvLyBtZXRob2Q6IG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlwdG9y
OgorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdTYW1wbGVy
U3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNhbXBsZXJTdGF0ZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7
Cit9CisKKy8vIG1ldGhvZDogbmV3RGVmYXVsdExpYnJhcnkKK19NVExfSU5MSU5FIE1UTDo6TGli
cmFyeSogTVRMOjpEZXZpY2U6Om5ld0RlZmF1bHRMaWJyYXJ5KCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d0RlZmF1bHRMaWJyYXJ5KSk7Cit9CisKKy8vIG1ldGhvZDogbmV3RGVmYXVsdExpYnJhcnlXaXRo
QnVuZGxlOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3
RGVmYXVsdExpYnJhcnkoY29uc3QgTlM6OkJ1bmRsZSogYnVuZGxlLCBOUzo6RXJyb3IqKiBlcnJv
cikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld0RlZmF1bHRMaWJyYXJ5V2l0aEJ1bmRsZV9lcnJvcl8pLCBi
dW5kbGUsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdMaWJyYXJ5V2l0aEZpbGU6ZXJyb3I6
CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0
IE5TOjpTdHJpbmcqIGZpbGVwYXRoLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0xpYnJhcnlXaXRoRmlsZV9lcnJvcl8pLCBmaWxlcGF0aCwgZXJyb3IpOworfQorCisvLyBt
ZXRob2Q6IG5ld0xpYnJhcnlXaXRoVVJMOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5
KiBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioq
IGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlicmFyeSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhVUkxfZXJyb3JfKSwgdXJsLCBl
cnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3TGlicmFyeVdpdGhEYXRhOmVycm9yOgorX01UTF9J
TkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBkaXNwYXRj
aF9kYXRhX3QgZGF0YSwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdMaWJy
YXJ5V2l0aERhdGFfZXJyb3JfKSwgZGF0YSwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld0xp
YnJhcnlXaXRoU291cmNlOm9wdGlvbnM6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkq
IE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IE5TOjpTdHJpbmcqIHNvdXJjZSwgY29uc3Qg
TVRMOjpDb21waWxlT3B0aW9ucyogb3B0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdMaWJyYXJ5V2l0aFNvdXJjZV9vcHRpb25zX2Vycm9yXyksIHNvdXJjZSwgb3B0
aW9ucywgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld0xpYnJhcnlXaXRoU291cmNlOm9wdGlv
bnM6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdM
aWJyYXJ5KGNvbnN0IE5TOjpTdHJpbmcqIHNvdXJjZSwgY29uc3QgTVRMOjpDb21waWxlT3B0aW9u
cyogb3B0aW9ucywgY29uc3QgTVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG5ld0xpYnJhcnlXaXRoU291cmNlX29wdGlvbnNfY29tcGxldGlvbkhhbmRs
ZXJfKSwgc291cmNlLCBvcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhv
ZDogbmV3TGlicmFyeVdpdGhTdGl0Y2hlZERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBN
VEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IE1UTDo6U3RpdGNoZWRM
aWJyYXJ5RGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlw
dG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3TGlicmFyeVdpdGhTdGl0Y2hlZERlc2Ny
aXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpu
ZXdMaWJyYXJ5KGNvbnN0IE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogZGVzY3JpcHRv
ciwgY29uc3QgTVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0xpYnJhcnlXaXRoU3RpdGNoZWREZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXyks
IGRlc2NyaXB0b3IsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OlJl
bmRlclBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNv
bnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3Iq
KiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBp
cGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1l
dGhvZDogbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVj
dGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogTVRMOjpE
ZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3Qg
TVRMOjpBdXRvcmVsZWFzZWRSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5T
OjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UmVuZGVyUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8pLCBkZXNj
cmlwdG9yLCBvcHRpb25zLCByZWZsZWN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBN
VEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgTVRMOjpOZXdS
ZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8pLCBk
ZXNjcmlwdG9yLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0
IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5l
T3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZs
ZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVs
aW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXyksIGRlc2Ny
aXB0b3IsIG9wdGlvbnMsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdD
b21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6
Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZShjb25zdCBNVEw6OkZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE5TOjpFcnJvcioqIGVycm9y
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBpcGVsaW5l
U3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0
aEZ1bmN0aW9uX2Vycm9yXyksIGNvbXB1dGVGdW5jdGlvbiwgZXJyb3IpOworfQorCisvLyBtZXRo
b2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOm9wdGlvbnM6cmVmbGVjdGlv
bjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2
aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OkZ1bmN0aW9uKiBjb21wdXRl
RnVuY3Rpb24sIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVs
ZWFzZWRDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBl
cnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQaXBl
bGluZVN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZVdpdGhGdW5jdGlvbl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfKSwgY29tcHV0ZUZ1bmN0aW9u
LCBvcHRpb25zLCByZWZsZWN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0
ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb246Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OkZ1
bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5l
U3RhdGVXaXRoRnVuY3Rpb25fY29tcGxldGlvbkhhbmRsZXJfKSwgY29tcHV0ZUZ1bmN0aW9uLCBj
b21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVXaXRoRnVuY3Rpb246b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6RnVuY3Rp
b24qIGNvbXB1dGVGdW5jdGlvbiwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBN
VEw6Ok5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxl
ciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25f
b3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8pLCBjb21wdXRlRnVuY3Rpb24sIG9wdGlvbnMsIGNv
bXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVjdGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1U
TDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZShjb25zdCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1U
TDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRDb21wdXRl
UGlwZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlw
dG9yX29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBvcHRpb25zLCByZWZs
ZWN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoRGVzY3JpcHRvcjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlv
bnMsIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBs
ZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdp
dGhEZXNjcmlwdG9yX29wdGlvbnNfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgb3B0
aW9ucywgY29tcGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0ZlbmNlCitfTVRM
X0lOTElORSBNVEw6OkZlbmNlKiBNVEw6OkRldmljZTo6bmV3RmVuY2UoKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RmVuY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0ZlbmNlKSk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNGZWF0dXJlU2V0OgorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNGZWF0dXJlU2V0KE1UTDo6RmVhdHVyZVNl
dCBmZWF0dXJlU2V0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzRmVhdHVyZVNldF8pLCBmZWF0dXJlU2V0
KTsKK30KKworLy8gbWV0aG9kOiBzdXBwb3J0c0ZhbWlseToKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpEZXZpY2U6OnN1cHBvcnRzRmFtaWx5KE1UTDo6R1BVRmFtaWx5IGdwdUZhbWlseSkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzdXBwb3J0c0ZhbWlseV8pLCBncHVGYW1pbHkpOworfQorCisvLyBtZXRob2Q6IHN1cHBv
cnRzVGV4dHVyZVNhbXBsZUNvdW50OgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3Vw
cG9ydHNUZXh0dXJlU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHN1cHBvcnRzVGV4dHVyZVNhbXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8g
bWV0aG9kOiBtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9ybWF0OgorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2aWNlOjptaW5pbXVtTGluZWFyVGV4dHVyZUFs
aWdubWVudEZvclBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgZm9ybWF0KQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9ybWF0XyksIGZvcm1h
dCk7Cit9CisKKy8vIG1ldGhvZDogbWluaW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhl
bEZvcm1hdDoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6bWluaW11bVRl
eHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGZvcm1h
dCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobWluaW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZv
cm1hdF8pLCBmb3JtYXQpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3RhdGVX
aXRoVGlsZURlc2NyaXB0b3I6b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOgorX01UTF9JTkxJTkUg
TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVT
dGF0ZShjb25zdCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3Is
IE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVz
Y3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfKSwgZGVzY3JpcHRvciwgb3B0aW9ucywg
cmVmbGVjdGlvbiwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVXaXRoVGlsZURlc2NyaXB0b3I6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0
aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0
aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVsaW5l
U3RhdGVXaXRoVGlsZURlc2NyaXB0b3Jfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8pLCBkZXNj
cmlwdG9yLCBvcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIHByb3BlcnR5OiBt
YXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
RGV2aWNlOjptYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG1heFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhBcmd1
bWVudEJ1ZmZlclNhbXBsZXJDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2
aWNlOjptYXhBcmd1bWVudEJ1ZmZlclNhbXBsZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG1heEFyZ3VtZW50QnVmZmVyU2FtcGxlckNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBwcm9n
cmFtbWFibGVTYW1wbGVQb3NpdGlvbnNTdXBwb3J0ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpE
ZXZpY2U6OnByb2dyYW1tYWJsZVNhbXBsZVBvc2l0aW9uc1N1cHBvcnRlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoYXJlUHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRpb25zU3VwcG9ydGVkKSk7Cit9CisKKy8v
IG1ldGhvZDogZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9uczpjb3VudDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpEZXZpY2U6OmdldERlZmF1bHRTYW1wbGVQb3NpdGlvbnMoTVRMOjpTYW1wbGVQb3Np
dGlvbiogcG9zaXRpb25zLCBOUzo6VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdldERlZmF1bHRTYW1wbGVQb3Np
dGlvbnNfY291bnRfKSwgcG9zaXRpb25zLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogbmV3QXJn
dW1lbnRFbmNvZGVyV2l0aEFyZ3VtZW50czoKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRFbmNv
ZGVyKiBNVEw6OkRldmljZTo6bmV3QXJndW1lbnRFbmNvZGVyKGNvbnN0IE5TOjpBcnJheSogYXJn
dW1lbnRzKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRF
bmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJn
dW1lbnRzXyksIGFyZ3VtZW50cyk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNSYXN0ZXJpemF0
aW9uUmF0ZU1hcFdpdGhMYXllckNvdW50OgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6
c3VwcG9ydHNSYXN0ZXJpemF0aW9uUmF0ZU1hcChOUzo6VUludGVnZXIgbGF5ZXJDb3VudCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdXBwb3J0c1Jhc3Rlcml6YXRpb25SYXRlTWFwV2l0aExheWVyQ291bnRfKSwgbGF5
ZXJDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmFzdGVyaXphdGlvblJhdGVNYXBXaXRoRGVz
Y3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXAqIE1UTDo6RGV2
aWNlOjpuZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcChjb25zdCBNVEw6OlJhc3Rlcml6YXRpb25SYXRl
TWFwRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQor
CisvLyBtZXRob2Q6IG5ld0luZGlyZWN0Q29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yOm1heENv
bW1hbmRDb3VudDpvcHRpb25zOgorX01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZm
ZXIqIE1UTDo6RGV2aWNlOjpuZXdJbmRpcmVjdENvbW1hbmRCdWZmZXIoY29uc3QgTVRMOjpJbmRp
cmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6VUludGVnZXIgbWF4
Q291bnQsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG5ld0luZGlyZWN0Q29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yX21heENvbW1h
bmRDb3VudF9vcHRpb25zXyksIGRlc2NyaXB0b3IsIG1heENvdW50LCBvcHRpb25zKTsKK30KKwor
Ly8gbWV0aG9kOiBuZXdFdmVudAorX01UTF9JTkxJTkUgTVRMOjpFdmVudCogTVRMOjpEZXZpY2U6
Om5ld0V2ZW50KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkV2ZW50
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdFdmVudCkpOworfQorCisvLyBtZXRob2Q6IG5l
d1NoYXJlZEV2ZW50CitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50KiBNVEw6OkRldmljZTo6
bmV3U2hhcmVkRXZlbnQoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
U2hhcmVkRXZlbnQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1NoYXJlZEV2ZW50KSk7Cit9
CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlOgorX01UTF9JTkxJTkUgTVRM
OjpTaGFyZWRFdmVudCogTVRMOjpEZXZpY2U6Om5ld1NoYXJlZEV2ZW50KGNvbnN0IE1UTDo6U2hh
cmVkRXZlbnRIYW5kbGUqIHNoYXJlZEV2ZW50SGFuZGxlKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6U2hhcmVkRXZlbnQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1NoYXJlZEV2ZW50V2l0aEhhbmRsZV8pLCBzaGFyZWRFdmVudEhhbmRsZSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBwZWVyR3JvdXBJRAorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpEZXZpY2U6OnBl
ZXJHcm91cElEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50
NjRfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwZWVyR3JvdXBJRCkpOworfQorCisvLyBwcm9w
ZXJ0eTogcGVlckluZGV4CitfTVRMX0lOTElORSB1aW50MzJfdCBNVEw6OkRldmljZTo6cGVlcklu
ZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50MzJfdD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChwZWVySW5kZXgpKTsKK30KKworLy8gcHJvcGVydHk6IHBl
ZXJDb3VudAorX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpEZXZpY2U6OnBlZXJDb3VudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDMyX3Q+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocGVlckNvdW50KSk7Cit9CisKKy8vIG1ldGhvZDogc3BhcnNlVGlsZVNp
emVXaXRoVGV4dHVyZVR5cGU6cGl4ZWxGb3JtYXQ6c2FtcGxlQ291bnQ6CitfTVRMX0lOTElORSBN
VEw6OlNpemUgTVRMOjpEZXZpY2U6OnNwYXJzZVRpbGVTaXplKE1UTDo6VGV4dHVyZVR5cGUgdGV4
dHVyZVR5cGUsIE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciBzYW1w
bGVDb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemU+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc3BhcnNlVGlsZVNpemVXaXRoVGV4dHVyZVR5cGVfcGl4ZWxG
b3JtYXRfc2FtcGxlQ291bnRfKSwgdGV4dHVyZVR5cGUsIHBpeGVsRm9ybWF0LCBzYW1wbGVDb3Vu
dCk7Cit9CisKKy8vIHByb3BlcnR5OiBzcGFyc2VUaWxlU2l6ZUluQnl0ZXMKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6c3BhcnNlVGlsZVNpemVJbkJ5dGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc3BhcnNlVGlsZVNpemVJbkJ5dGVzKSk7Cit9CisKKy8vIG1ldGhvZDog
Y29udmVydFNwYXJzZVBpeGVsUmVnaW9uczp0b1RpbGVSZWdpb25zOndpdGhUaWxlU2l6ZTphbGln
bm1lbnRNb2RlOm51bVJlZ2lvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpjb252
ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zKGNvbnN0IE1UTDo6UmVnaW9uKiBwaXhlbFJlZ2lvbnMsIE1U
TDo6UmVnaW9uKiB0aWxlUmVnaW9ucywgTVRMOjpTaXplIHRpbGVTaXplLCBNVEw6OlNwYXJzZVRl
eHR1cmVSZWdpb25BbGlnbm1lbnRNb2RlIG1vZGUsIE5TOjpVSW50ZWdlciBudW1SZWdpb25zKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zX3RvVGlsZVJlZ2lvbnNfd2l0aFRpbGVTaXplX2FsaWdu
bWVudE1vZGVfbnVtUmVnaW9uc18pLCBwaXhlbFJlZ2lvbnMsIHRpbGVSZWdpb25zLCB0aWxlU2l6
ZSwgbW9kZSwgbnVtUmVnaW9ucyk7Cit9CisKKy8vIG1ldGhvZDogY29udmVydFNwYXJzZVRpbGVS
ZWdpb25zOnRvUGl4ZWxSZWdpb25zOndpdGhUaWxlU2l6ZTpudW1SZWdpb25zOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkRldmljZTo6Y29udmVydFNwYXJzZVRpbGVSZWdpb25zKGNvbnN0IE1UTDo6
UmVnaW9uKiB0aWxlUmVnaW9ucywgTVRMOjpSZWdpb24qIHBpeGVsUmVnaW9ucywgTVRMOjpTaXpl
IHRpbGVTaXplLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29udmVydFNwYXJzZVRpbGVSZWdp
b25zX3RvUGl4ZWxSZWdpb25zX3dpdGhUaWxlU2l6ZV9udW1SZWdpb25zXyksIHRpbGVSZWdpb25z
LCBwaXhlbFJlZ2lvbnMsIHRpbGVTaXplLCBudW1SZWdpb25zKTsKK30KKworLy8gcHJvcGVydHk6
IG1heEJ1ZmZlckxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2aWNlOjpt
YXhCdWZmZXJMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhCdWZmZXJMZW5ndGgpKTsK
K30KKworLy8gcHJvcGVydHk6IGNvdW50ZXJTZXRzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1U
TDo6RGV2aWNlOjpjb3VudGVyU2V0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3VudGVyU2V0cykp
OworfQorCisvLyBtZXRob2Q6IG5ld0NvdW50ZXJTYW1wbGVCdWZmZXJXaXRoRGVzY3JpcHRvcjpl
cnJvcjoKK19NVExfSU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpEZXZpY2U6
Om5ld0NvdW50ZXJTYW1wbGVCdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdDb3VudGVyU2FtcGxlQnVmZmVyV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwg
ZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IHNhbXBsZVRpbWVzdGFtcHM6Z3B1
VGltZXN0YW1wOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6c2FtcGxlVGltZXN0YW1w
cyhNVEw6OlRpbWVzdGFtcCogY3B1VGltZXN0YW1wLCBNVEw6OlRpbWVzdGFtcCogZ3B1VGltZXN0
YW1wKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzYW1wbGVUaW1lc3RhbXBzX2dwdVRpbWVzdGFtcF8pLCBjcHVUaW1lc3RhbXAsIGdwdVRp
bWVzdGFtcCk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNDb3VudGVyU2FtcGxpbmc6CitfTVRM
X0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c0NvdW50ZXJTYW1wbGluZyhNVEw6OkNv
dW50ZXJTYW1wbGluZ1BvaW50IHNhbXBsaW5nUG9pbnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNDb3Vu
dGVyU2FtcGxpbmdfKSwgc2FtcGxpbmdQb2ludCk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNW
ZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQ6CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpz
dXBwb3J0c1ZlcnRleEFtcGxpZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgY291bnQpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc3VwcG9ydHNWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfKSwgY291bnQpOworfQorCisv
LyBwcm9wZXJ0eTogc3VwcG9ydHNEeW5hbWljTGlicmFyaWVzCitfTVRMX0lOTElORSBib29sIE1U
TDo6RGV2aWNlOjpzdXBwb3J0c0R5bmFtaWNMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1
cHBvcnRzRHluYW1pY0xpYnJhcmllcykpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNSZW5k
ZXJEeW5hbWljTGlicmFyaWVzCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0
c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzUmVuZGVy
RHluYW1pY0xpYnJhcmllcykpOworfQorCisvLyBtZXRob2Q6IG5ld0R5bmFtaWNMaWJyYXJ5OmVy
cm9yOgorX01UTF9JTkxJTkUgTVRMOjpEeW5hbWljTGlicmFyeSogTVRMOjpEZXZpY2U6Om5ld0R5
bmFtaWNMaWJyYXJ5KGNvbnN0IE1UTDo6TGlicmFyeSogbGlicmFyeSwgTlM6OkVycm9yKiogZXJy
b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEeW5hbWljTGlicmFy
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RHluYW1pY0xpYnJhcnlfZXJyb3JfKSwgbGli
cmFyeSwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld0R5bmFtaWNMaWJyYXJ5V2l0aFVSTDpl
cnJvcjoKK19NVExfSU5MSU5FIE1UTDo6RHluYW1pY0xpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdE
eW5hbWljTGlicmFyeShjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioqIGVycm9yKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RHluYW1pY0xpYnJhcnkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld0R5bmFtaWNMaWJyYXJ5V2l0aFVSTF9lcnJvcl8pLCB1cmws
IGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdCaW5hcnlBcmNoaXZlV2l0aERlc2NyaXB0b3I6
ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkJpbmFyeUFyY2hpdmUqIE1UTDo6RGV2aWNlOjpuZXdC
aW5hcnlBcmNoaXZlKGNvbnN0IE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIGRlc2NyaXB0
b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6QmluYXJ5QXJjaGl2ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QmluYXJ5QXJj
aGl2ZVdpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8g
cHJvcGVydHk6IHN1cHBvcnRzUmF5dHJhY2luZworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmlj
ZTo6c3VwcG9ydHNSYXl0cmFjaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1JheXRyYWNp
bmcpKTsKK30KKworLy8gbWV0aG9kOiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplc1dpdGhEZXNj
cmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplcyBNVEw6
OkRldmljZTo6YWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMoY29uc3QgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXM+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXNXaXRoRGVzY3JpcHRvcl8pLCBk
ZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRo
U2l6ZToKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBNVEw6OkRldmlj
ZTo6bmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlKE5TOjpVSW50ZWdlciBzaXplKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRoU2l6ZV8pLCBz
aXplKTsKK30KKworLy8gbWV0aG9kOiBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRoRGVzY3Jp
cHRvcjoKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBNVEw6OkRldmlj
ZTo6bmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9
CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnMKK19NVExfSU5MSU5FIGJv
b2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzRnVuY3Rpb25Qb2ludGVycygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0
c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNl
OjpzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyKSk7Cit9CisKKy8vIHByb3BlcnR5OiBz
dXBwb3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNl
OjpzdXBwb3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0
c1JheXRyYWNpbmdGcm9tUmVuZGVyKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c1ByaW1p
dGl2ZU1vdGlvbkJsdXIKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUHJp
bWl0aXZlTW90aW9uQmx1cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNQcmltaXRpdmVNb3Rp
b25CbHVyKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMRHJhd2FibGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTERyYXdhYmxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzQwOTc2MDQxMzdmZTMwYmVlNzBiMmQx
NTVkMzE3YzYyYmI5NjljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTERyYXdhYmxlLmhwcApAQCAtMCwwICsxLDk5IEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExE
cmF3YWJsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlk
Z2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKworbmFtZXNwYWNlIE1UTAorewordXNpbmcg
RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyID0gdm9pZCAoXikoY2xhc3MgRHJhd2FibGUqKTsKKwor
dXNpbmcgRHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZv
aWQoY2xhc3MgRHJhd2FibGUqKT47CisKK2NsYXNzIERyYXdhYmxlIDogcHVibGljIE5TOjpSZWZl
cmVuY2luZzxEcmF3YWJsZT4KK3sKK3B1YmxpYzoKKyAgICB2b2lkICAgICAgICAgICBhZGRQcmVz
ZW50ZWRIYW5kbGVyKGNvbnN0IE1UTDo6RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyRnVuY3Rpb24m
IGZ1bmN0aW9uKTsKKworICAgIHZvaWQgICAgICAgICAgIHByZXNlbnQoKTsKKworICAgIHZvaWQg
ICAgICAgICAgIHByZXNlbnRBdFRpbWUoQ0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9uVGltZSk7
CisKKyAgICB2b2lkICAgICAgICAgICBwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb24oQ0ZUaW1l
SW50ZXJ2YWwgZHVyYXRpb24pOworCisgICAgdm9pZCAgICAgICAgICAgYWRkUHJlc2VudGVkSGFu
ZGxlcihjb25zdCBNVEw6OkRyYXdhYmxlUHJlc2VudGVkSGFuZGxlciBibG9jayk7CisKKyAgICBD
RlRpbWVJbnRlcnZhbCBwcmVzZW50ZWRUaW1lKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIg
ICBkcmF3YWJsZUlEKCkgY29uc3Q7Cit9OworCit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpE
cmF3YWJsZTo6YWRkUHJlc2VudGVkSGFuZGxlcihjb25zdCBNVEw6OkRyYXdhYmxlUHJlc2VudGVk
SGFuZGxlckZ1bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIERyYXdhYmxlUHJlc2Vu
dGVkSGFuZGxlckZ1bmN0aW9uIGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIGFkZFBy
ZXNlbnRlZEhhbmRsZXIoXihEcmF3YWJsZSogcERyYXdhYmxlKSB7IGJsb2NrRnVuY3Rpb24ocERy
YXdhYmxlKTsgfSk7Cit9CisKKy8vIG1ldGhvZDogcHJlc2VudAorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkRyYXdhYmxlOjpwcmVzZW50KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudCkpOworfQorCisvLyBtZXRob2Q6IHByZXNl
bnRBdFRpbWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6OnByZXNlbnRBdFRpbWUo
Q0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9uVGltZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudEF0VGltZV8pLCBwcmVzZW50
YXRpb25UaW1lKTsKK30KKworLy8gbWV0aG9kOiBwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb246
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6OnByZXNlbnRBZnRlck1pbmltdW1EdXJh
dGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudEFmdGVyTWluaW11bUR1cmF0aW9u
XyksIGR1cmF0aW9uKTsKK30KKworLy8gbWV0aG9kOiBhZGRQcmVzZW50ZWRIYW5kbGVyOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkRyYXdhYmxlOjphZGRQcmVzZW50ZWRIYW5kbGVyKGNvbnN0IE1U
TDo6RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyIGJsb2NrKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGRQcmVzZW50ZWRIYW5kbGVyXyks
IGJsb2NrKTsKK30KKworLy8gcHJvcGVydHk6IHByZXNlbnRlZFRpbWUKK19NVExfSU5MSU5FIENG
VGltZUludGVydmFsIE1UTDo6RHJhd2FibGU6OnByZXNlbnRlZFRpbWUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPENGVGltZUludGVydmFsPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHByZXNlbnRlZFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGRyYXdhYmxlSUQK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRyYXdhYmxlOjpkcmF3YWJsZUlEKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZHJhd2FibGVJRCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFtaWNMaWJyYXJ5LmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEeW5hbWljTGlicmFyeS5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDg5Yjk5OTBkNWY2YmYxNzk0NzJlYjFhMzQ0MjYzM2QwOTQxZGI3OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEeW5h
bWljTGlicmFyeS5ocHAKQEAgLTAsMCArMSw4MiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRHluYW1pY0xpYnJhcnkuaHBw
CisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNp
bmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIER5bmFt
aWNMaWJyYXJ5RXJyb3IpIHsKKyAgICBEeW5hbWljTGlicmFyeUVycm9yTm9uZSA9IDAsCisgICAg
RHluYW1pY0xpYnJhcnlFcnJvckludmFsaWRGaWxlID0gMSwKKyAgICBEeW5hbWljTGlicmFyeUVy
cm9yQ29tcGlsYXRpb25GYWlsdXJlID0gMiwKKyAgICBEeW5hbWljTGlicmFyeUVycm9yVW5yZXNv
bHZlZEluc3RhbGxOYW1lID0gMywKKyAgICBEeW5hbWljTGlicmFyeUVycm9yRGVwZW5kZW5jeUxv
YWRGYWlsdXJlID0gNCwKKyAgICBEeW5hbWljTGlicmFyeUVycm9yVW5zdXBwb3J0ZWQgPSA1LAor
fTsKKworY2xhc3MgRHluYW1pY0xpYnJhcnkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPER5bmFt
aWNMaWJyYXJ5PgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKwor
ICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgIGlu
c3RhbGxOYW1lKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgIHNlcmlhbGl6ZVRvVVJMKGNv
bnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiogZXJyb3IpOworfTsKKworfQorCisvLyBwcm9w
ZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RHluYW1pY0xpYnJhcnk6
OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6RHluYW1pY0xpYnJhcnk6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVs
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5M
SU5FIE1UTDo6RGV2aWNlKiBNVEw6OkR5bmFtaWNMaWJyYXJ5OjpkZXZpY2UoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbGxOYW1lCitfTVRM
X0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkR5bmFtaWNMaWJyYXJ5OjppbnN0YWxsTmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaW5zdGFsbE5hbWUpKTsKK30KKworLy8gbWV0aG9kOiBzZXJpYWxp
emVUb1VSTDplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEeW5hbWljTGlicmFyeTo6c2Vy
aWFsaXplVG9VUkwoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNlcmlhbGl6ZVRvVVJMX2Vycm9yXyksIHVybCwgZXJyb3IpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEV2ZW50LmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExFdmVudC5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE5
ZmFjMjM1MThmODZhNTFlNDIwYTQ5ODQ2NzY0YzVlMGRmNThlZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExFdmVudC5ocHAKQEAgLTAs
MCArMSwxNjMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIE1ldGFsL01UTEV2ZW50LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRXZlbnQu
aHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBFdmVudCA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8RXZlbnQ+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBjb25z
dDsKKworICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
IHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKK307CisKK2NsYXNzIFNoYXJlZEV2
ZW50TGlzdGVuZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFNoYXJlZEV2ZW50TGlzdGVuZXI+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFNoYXJlZEV2ZW50TGlzdGVuZXIqIGFsbG9j
KCk7CisKKyAgICBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIqICAgICAgICAgaW5pdCgpOworCisg
ICAgTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyKiAgICAgICAgIGluaXQoY29uc3QgZGlzcGF0Y2hf
cXVldWVfdCBkaXNwYXRjaFF1ZXVlKTsKKworICAgIGRpc3BhdGNoX3F1ZXVlX3QgICAgICAgICAg
ICAgICAgICBkaXNwYXRjaFF1ZXVlKCkgY29uc3Q7Cit9OworCit1c2luZyBTaGFyZWRFdmVudE5v
dGlmaWNhdGlvbkJsb2NrID0gdm9pZCAoXikoU2hhcmVkRXZlbnQqIHBFdmVudCwgc3RkOjp1aW50
NjRfdCB2YWx1ZSk7CisKK2NsYXNzIFNoYXJlZEV2ZW50IDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxTaGFyZWRFdmVudCwgRXZlbnQ+Cit7CitwdWJsaWM6CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgIG5vdGlmeUxpc3RlbmVyKGNvbnN0IGNsYXNzIFNoYXJlZEV2ZW50TGlzdGVuZXIqIGxp
c3RlbmVyLCB1aW50NjRfdCB2YWx1ZSwgY29uc3QgTVRMOjpTaGFyZWRFdmVudE5vdGlmaWNhdGlv
bkJsb2NrIGJsb2NrKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50SGFuZGxlKiBuZXdTaGFyZWRF
dmVudEhhbmRsZSgpOworCisgICAgdWludDY0X3QgICAgICAgICAgICAgICAgIHNpZ25hbGVkVmFs
dWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgc2V0U2lnbmFsZWRWYWx1
ZSh1aW50NjRfdCBzaWduYWxlZFZhbHVlKTsKK307CisKK2NsYXNzIFNoYXJlZEV2ZW50SGFuZGxl
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxTaGFyZWRFdmVudEhhbmRsZT4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgU2hhcmVkRXZlbnRIYW5kbGUqIGFsbG9jKCk7CisKKyAgICBjbGFz
cyBTaGFyZWRFdmVudEhhbmRsZSogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKK307CisKK3N0cnVjdCBTaGFyZWRFdmVu
dEhhbmRsZVByaXZhdGUKK3sKK30gX01UTF9QQUNLRUQ7CisKK30KKworLy8gcHJvcGVydHk6IGRl
dmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6RXZlbnQ6OmRldmljZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExf
SU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RXZlbnQ6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RXZlbnQ6OnNldExhYmVsKGNv
bnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIqIE1U
TDo6U2hhcmVkRXZlbnRMaXN0ZW5lcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI+KF9NVExfUFJJVkFURV9DTFMoTVRMU2hh
cmVkRXZlbnRMaXN0ZW5lcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6U2hhcmVkRXZlbnRMaXN0ZW5lciogTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyOjppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI+
KCk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhEaXNwYXRjaFF1ZXVlOgorX01UTF9JTkxJTkUg
TVRMOjpTaGFyZWRFdmVudExpc3RlbmVyKiBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI6OmluaXQo
Y29uc3QgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lcio+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoaW5pdFdpdGhEaXNwYXRjaFF1ZXVlXyksIGRpc3BhdGNoUXVldWUpOworfQorCisv
LyBwcm9wZXJ0eTogZGlzcGF0Y2hRdWV1ZQorX01UTF9JTkxJTkUgZGlzcGF0Y2hfcXVldWVfdCBN
VEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI6OmRpc3BhdGNoUXVldWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGRpc3BhdGNoX3F1ZXVlX3Q+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZGlzcGF0Y2hRdWV1ZSkpOworfQorCisvLyBtZXRob2Q6IG5vdGlmeUxpc3RlbmVy
OmF0VmFsdWU6YmxvY2s6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2hhcmVkRXZlbnQ6Om5vdGlm
eUxpc3RlbmVyKGNvbnN0IE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIHVpbnQ2
NF90IHZhbHVlLCBjb25zdCBNVEw6OlNoYXJlZEV2ZW50Tm90aWZpY2F0aW9uQmxvY2sgYmxvY2sp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5vdGlmeUxpc3RlbmVyX2F0VmFsdWVfYmxvY2tfKSwgbGlzdGVuZXIsIHZhbHVlLCBibG9jayk7
Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkRXZlbnRIYW5kbGUKK19NVExfSU5MSU5FIE1UTDo6
U2hhcmVkRXZlbnRIYW5kbGUqIE1UTDo6U2hhcmVkRXZlbnQ6Om5ld1NoYXJlZEV2ZW50SGFuZGxl
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNoYXJlZEV2ZW50SGFu
ZGxlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdTaGFyZWRFdmVudEhhbmRsZSkpOworfQor
CisvLyBwcm9wZXJ0eTogc2lnbmFsZWRWYWx1ZQorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpT
aGFyZWRFdmVudDo6c2lnbmFsZWRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2lnbmFsZWRWYWx1
ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2hhcmVkRXZlbnQ6OnNldFNpZ25hbGVk
VmFsdWUodWludDY0X3Qgc2lnbmFsZWRWYWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2lnbmFsZWRWYWx1ZV8pLCBzaWduYWxl
ZFZhbHVlKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
U2hhcmVkRXZlbnRIYW5kbGUqIE1UTDo6U2hhcmVkRXZlbnRIYW5kbGU6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTaGFyZWRFdmVudEhhbmRsZT4oX01UTF9Q
UklWQVRFX0NMUyhNVExTaGFyZWRFdmVudEhhbmRsZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6U2hhcmVkRXZlbnRIYW5kbGUqIE1UTDo6U2hhcmVkRXZlbnRIYW5k
bGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U2hhcmVkRXZl
bnRIYW5kbGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0
cmluZyogTVRMOjpTaGFyZWRFdmVudEhhbmRsZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxhYmVsKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMRmVuY2UuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEZlbmNlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzZlOTMxNGU1MzkzNWQyNDE2NjE5ZWNiMDMwMDM2
MDhmNGM4ZjVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEZlbmNlLmhwcApAQCAtMCwwICsxLDU3IEBACisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExGZW5jZS5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2lu
Y2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
LmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgRmVuY2UgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPEZlbmNlPgoreworcHVibGljOgorICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29u
c3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7Cit9OworCit9CisKKy8vIHByb3Bl
cnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkZlbmNlOjpkZXZpY2Uo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVs
CitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZlbmNlOjpsYWJlbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZlbmNlOjpzZXRM
YWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9u
Q29uc3RhbnRWYWx1ZXMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2MDg1NTRlYzQ2MmI3
YTU0YjI3ZTdmZGIyMzMzM2M3NjAxYTMzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAK
QEAgLTAsMCArMSw4NSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJN
VExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUg
Ik1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4K
KworI2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3Mg
RnVuY3Rpb25Db25zdGFudFZhbHVlcyA6IHB1YmxpYyBOUzo6Q29weWluZzxGdW5jdGlvbkNvbnN0
YW50VmFsdWVzPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvbkNvbnN0YW50
VmFsdWVzKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25Db25zdGFudFZhbHVlcyogICAg
ICAgIGluaXQoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudFZhbHVlKGNvbnN0IHZvaWQqIHZhbHVlLCBNVEw6OkRhdGFUeXBlIHR5cGUsIE5T
OjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnRWYWx1ZXMoY29uc3Qgdm9pZCogdmFsdWVzLCBNVEw6OkRhdGFUeXBl
IHR5cGUsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnRWYWx1ZShjb25zdCB2b2lkKiB2YWx1ZSwgTVRMOjpEYXRh
VHlwZSB0eXBlLCBjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBNVEw6
OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6YWxsb2M8TVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIE1UTDo6RnVuY3Rpb25Db25zdGFudFZh
bHVlczo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlv
bkNvbnN0YW50VmFsdWVzPigpOworfQorCisvLyBtZXRob2Q6IHNldENvbnN0YW50VmFsdWU6dHlw
ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6
OnNldENvbnN0YW50VmFsdWUoY29uc3Qgdm9pZCogdmFsdWUsIE1UTDo6RGF0YVR5cGUgdHlwZSwg
TlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRDb25zdGFudFZhbHVlX3R5cGVfYXRJbmRleF8pLCB2YWx1
ZSwgdHlwZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldENvbnN0YW50VmFsdWVzOnR5cGU6
d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6
OnNldENvbnN0YW50VmFsdWVzKGNvbnN0IHZvaWQqIHZhbHVlcywgTVRMOjpEYXRhVHlwZSB0eXBl
LCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0YW50VmFsdWVzX3R5cGVfd2l0aFJhbmdlXyksIHZh
bHVlcywgdHlwZSwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldENvbnN0YW50VmFsdWU6dHlw
ZTp3aXRoTmFtZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVz
OjpzZXRDb25zdGFudFZhbHVlKGNvbnN0IHZvaWQqIHZhbHVlLCBNVEw6OkRhdGFUeXBlIHR5cGUs
IGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0YW50VmFsdWVfdHlwZV93aXRoTmFtZV8p
LCB2YWx1ZSwgdHlwZSwgbmFtZSk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXQKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzOjpyZXNldCgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rp
b25EZXNjcmlwdG9yLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ZjAwZDY3ODM0YmRiYjM5ODY4
ZTU0ZjkzZmY5M2FlNTZhYWVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcApAQCAtMCwwICsx
LDE1NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcAorLy8KKy8vIENvcHlyaWdodCAy
MDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBw
IgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5o
cHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAi
TVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9PUFRJ
T05TKE5TOjpVSW50ZWdlciwgRnVuY3Rpb25PcHRpb25zKSB7CisgICAgRnVuY3Rpb25PcHRpb25O
b25lID0gMCwKKyAgICBGdW5jdGlvbk9wdGlvbkNvbXBpbGVUb0JpbmFyeSA9IDEsCit9OworCitj
bGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8RnVuY3Rpb25EZXNj
cmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7
CisKKyAgICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBmdW5jdGlvbkRlc2NyaXB0
b3IoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgIG5hbWUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXROYW1lKGNvbnN0IE5T
OjpTdHJpbmcqIG5hbWUpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICAg
c3BlY2lhbGl6ZWROYW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3BlY2lhbGl6ZWROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIHNwZWNpYWxpemVkTmFt
ZSk7CisKKyAgICBjbGFzcyBGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiAgICBjb25zdGFudFZhbHVl
cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0
YW50VmFsdWVzKGNvbnN0IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFs
dWVzKTsKKworICAgIE1UTDo6RnVuY3Rpb25PcHRpb25zICAgICAgICAgICAgIG9wdGlvbnMoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPcHRpb25zKE1U
TDo6RnVuY3Rpb25PcHRpb25zIG9wdGlvbnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAg
ICAgICAgICAgICAgYmluYXJ5QXJjaGl2ZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFy
eUFyY2hpdmVzKTsKK307CisKK2NsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciA6
IHB1YmxpYyBOUzo6Q29weWluZzxJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IsIE1UTDo6
RnVuY3Rpb25EZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBJbnRlcnNl
Y3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbnRlcnNlY3Rp
b25GdW5jdGlvbkRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7Cit9OworCit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogTVRM
OjpGdW5jdGlvbkRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rp
b25EZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpG
dW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcj4oKTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogZnVuY3Rpb25EZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6
OkZ1bmN0aW9uRGVzY3JpcHRvciogTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OmZ1bmN0aW9uRGVz
Y3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlv
bkRlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEZ1bmN0aW9uRGVzY3JpcHRvciksIF9N
VExfUFJJVkFURV9TRUwoZnVuY3Rpb25EZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBu
YW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6bmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpzZXROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dE5hbWVfKSwgbmFtZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzcGVjaWFsaXplZE5hbWUKK19NVExf
SU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpzcGVjaWFsaXplZE5h
bWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNwZWNpYWxpemVkTmFtZSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpzZXRTcGVjaWFsaXplZE5hbWUoY29u
c3QgTlM6OlN0cmluZyogc3BlY2lhbGl6ZWROYW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTcGVjaWFsaXplZE5hbWVfKSwgc3Bl
Y2lhbGl6ZWROYW1lKTsKK30KKworLy8gcHJvcGVydHk6IGNvbnN0YW50VmFsdWVzCitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9y
Ojpjb25zdGFudFZhbHVlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b25zdGFudFZhbHVlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25EZXNj
cmlwdG9yOjpzZXRDb25zdGFudFZhbHVlcyhjb25zdCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1
ZXMqIGNvbnN0YW50VmFsdWVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRDb25zdGFudFZhbHVlc18pLCBjb25zdGFudFZhbHVlcyk7
Cit9CisKKy8vIHByb3BlcnR5OiBvcHRpb25zCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uT3B0
aW9ucyBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6b3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbk9wdGlvbnM+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwob3B0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rp
b25EZXNjcmlwdG9yOjpzZXRPcHRpb25zKE1UTDo6RnVuY3Rpb25PcHRpb25zIG9wdGlvbnMpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dE9wdGlvbnNfKSwgb3B0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlBcmNoaXZlcwor
X01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6YmluYXJ5QXJj
aGl2ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJh
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYmluYXJ5QXJjaGl2ZXMpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMoY29u
c3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmluYXJ5
QXJjaGl2ZXMpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25EZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1U
TDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTElu
dGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBNVEw6OkludGVy
c2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3I+KCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25I
YW5kbGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0
aW9uSGFuZGxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGYzODUxNDM3YzcxZTgwZGE5ODdlZWNlOThiZDFh
ODA4YzNlMmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEZ1bmN0aW9uSGFuZGxlLmhwcApAQCAtMCwwICsxLDYxIEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExG
dW5jdGlvbkhhbmRsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTExpYnJhcnkuaHBwIgorCitu
YW1lc3BhY2UgTVRMCit7CitjbGFzcyBGdW5jdGlvbkhhbmRsZSA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8RnVuY3Rpb25IYW5kbGU+Cit7CitwdWJsaWM6CisgICAgTVRMOjpGdW5jdGlvblR5cGUg
ZnVuY3Rpb25UeXBlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICBuYW1lKCkgY29u
c3Q7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICBkZXZpY2UoKSBjb25zdDsKK307CisKK30KKwor
Ly8gcHJvcGVydHk6IGZ1bmN0aW9uVHlwZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblR5cGUg
TVRMOjpGdW5jdGlvbkhhbmRsZTo6ZnVuY3Rpb25UeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uVHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTChmdW5jdGlvblR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5F
IE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb25IYW5kbGU6Om5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpE
ZXZpY2UqIE1UTDo6RnVuY3Rpb25IYW5kbGU6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGRldmljZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EzOGRjOWRhYmQ2MWVhYmJl
ZmUwZTRiZGMzNWUyOTNlMjcwODE1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAKQEAgLTAsMCArMSwxMTQg
QEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8v
IE1ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUg
Ik1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNs
dWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25M
b2cuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBGdW5j
dGlvbkxvZ1R5cGUpIHsKKyAgICBGdW5jdGlvbkxvZ1R5cGVWYWxpZGF0aW9uID0gMCwKK307CisK
K2NsYXNzIExvZ0NvbnRhaW5lciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8TG9nQ29udGFpbmVy
LCBOUzo6RmFzdEVudW1lcmF0aW9uPgoreworcHVibGljOgorfTsKKworY2xhc3MgRnVuY3Rpb25M
b2dEZWJ1Z0xvY2F0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbkxvZ0RlYnVn
TG9jYXRpb24+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogIGZ1bmN0aW9uTmFtZSgpIGNv
bnN0OworCisgICAgTlM6OlVSTCogICAgIFVSTCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2Vy
IGxpbmUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciBjb2x1bW4oKSBjb25zdDsKK307CisK
K2NsYXNzIEZ1bmN0aW9uTG9nIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbkxvZz4K
K3sKK3B1YmxpYzoKKyAgICBNVEw6OkZ1bmN0aW9uTG9nVHlwZSAgICAgICAgICAgIHR5cGUoKSBj
b25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgZW5jb2RlckxhYmVs
KCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogICAgICAgICAgICAgICAgIGZ1bmN0aW9u
KCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24qIGRlYnVnTG9j
YXRpb24oKSBjb25zdDsKK307CisKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uTmFtZQorX01U
TF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb246OmZ1bmN0
aW9uTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0
cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25OYW1lKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBVUkwKK19NVExfSU5MSU5FIE5TOjpVUkwqIE1UTDo6RnVuY3Rpb25Mb2dEZWJ1Z0xv
Y2F0aW9uOjpVUkwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVUkwqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKFVSTCkpOworfQorCisvLyBwcm9wZXJ0eTog
bGluZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0
aW9uOjpsaW5lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGluZSkpOworfQorCisvLyBwcm9wZXJ0
eTogY29sdW1uCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpGdW5jdGlvbkxvZ0RlYnVn
TG9jYXRpb246OmNvbHVtbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbHVtbikpOworfQorCisv
LyBwcm9wZXJ0eTogdHlwZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkxvZ1R5cGUgTVRMOjpG
dW5jdGlvbkxvZzo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpGdW5jdGlvbkxvZ1R5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHlwZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogZW5jb2RlckxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBN
VEw6OkZ1bmN0aW9uTG9nOjplbmNvZGVyTGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuY29k
ZXJMYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6
RnVuY3Rpb24qIE1UTDo6RnVuY3Rpb25Mb2c6OmZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChmdW5jdGlvbikpOworfQorCisvLyBwcm9wZXJ0eTogZGVidWdMb2NhdGlvbgorX01UTF9J
TkxJTkUgTVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24qIE1UTDo6RnVuY3Rpb25Mb2c6OmRl
YnVnTG9jYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZWJ1
Z0xvY2F0aW9uKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWRj
YjQ5NmNlZDZiZDdhMzJiNTE2YzJiMmYzNTY1Yzc5YjYxZGQxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3RpdGNoaW5n
LmhwcApAQCAtMCwwICsxLDMwNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwCisvLwor
Ly8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
TVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRl
ICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+
CisKKyNpbmNsdWRlICJNVExGdW5jdGlvblN0aXRjaGluZy5ocHAiCisKK25hbWVzcGFjZSBNVEwK
K3sKK2NsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlIDogcHVibGljIE5TOjpSZWZlcmVu
Y2luZzxGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZT4KK3sKK307CisKK2NsYXNzIEZ1bmN0aW9u
U3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxG
dW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZSwgRnVuY3Rpb25TdGl0Y2hpbmdB
dHRyaWJ1dGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5n
QXR0cmlidXRlQWx3YXlzSW5saW5lKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0
Y2hpbmdBdHRyaWJ1dGVBbHdheXNJbmxpbmUqICAgICAgICBpbml0KCk7Cit9OworCitjbGFzcyBG
dW5jdGlvblN0aXRjaGluZ05vZGUgOiBwdWJsaWMgTlM6OkNvcHlpbmc8RnVuY3Rpb25TdGl0Y2hp
bmdOb2RlPgoreworfTsKKworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlLCBGdW5jdGlvblN0
aXRjaGluZ05vZGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3RpdGNo
aW5nSW5wdXROb2RlKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdJbnB1
dE5vZGUqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFyZ3VtZW50SW5kZXgoTlM6OlVJbnRlZ2VyIGFy
Z3VtZW50SW5kZXgpOworCisgICAgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSogICAg
ICAgICBpbml0KE5TOjpVSW50ZWdlciBhcmd1bWVudCk7Cit9OworCitjbGFzcyBGdW5jdGlvblN0
aXRjaGluZ0Z1bmN0aW9uTm9kZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25TdGl0
Y2hpbmdGdW5jdGlvbk5vZGUsIEZ1bmN0aW9uU3RpdGNoaW5nTm9kZT4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSogICAgICAgIGluaXQoKTsK
KworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TmFtZShjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKKworICAgIE5TOjpBcnJheSogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBcmd1bWVudHMoY29uc3Qg
TlM6OkFycmF5KiBhcmd1bWVudHMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250cm9sRGVwZW5kZW5jaWVzKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250cm9sRGVwZW5kZW5j
aWVzKGNvbnN0IE5TOjpBcnJheSogY29udHJvbERlcGVuZGVuY2llcyk7CisKKyAgICBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiAgICAgICAgIGluaXQoY29uc3QgTlM6OlN0cmlu
ZyogbmFtZSwgY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMsIGNvbnN0IE5TOjpBcnJheSogY29u
dHJvbERlcGVuZGVuY2llcyk7Cit9OworCitjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0dyYXBoIDog
cHVibGljIE5TOjpDb3B5aW5nPEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIGFsbG9jKCk7CisKKyAgICBj
bGFzcyBGdW5jdGlvblN0aXRjaGluZ0dyYXBoKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0
cmluZyogICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGdW5jdGlvbk5hbWUoY29u
c3QgTlM6OlN0cmluZyogZnVuY3Rpb25OYW1lKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXROb2Rlcyhjb25zdCBOUzo6QXJyYXkqIG5vZGVzKTsKKworICAg
IGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBvdXRwdXROb2RlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE91dHB1dE5vZGUo
Y29uc3QgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIG91dHB1dE5vZGUpOwor
CisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmli
dXRlcyhjb25zdCBOUzo6QXJyYXkqIGF0dHJpYnV0ZXMpOworCisgICAgTVRMOjpGdW5jdGlvblN0
aXRjaGluZ0dyYXBoKiAgICAgICAgIGluaXQoY29uc3QgTlM6OlN0cmluZyogZnVuY3Rpb25OYW1l
LCBjb25zdCBOUzo6QXJyYXkqIG5vZGVzLCBjb25zdCBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0Z1
bmN0aW9uTm9kZSogb3V0cHV0Tm9kZSwgY29uc3QgTlM6OkFycmF5KiBhdHRyaWJ1dGVzKTsKK307
CisKK2NsYXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8
U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFN0aXRjaGVk
TGlicmFyeURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25HcmFwaHMoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnVuY3Rpb25HcmFwaHMoY29u
c3QgTlM6OkFycmF5KiBmdW5jdGlvbkdyYXBocyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkq
IGZ1bmN0aW9ucyk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKiBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lOjphbGxvYygpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdh
eXNJbmxpbmU+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVB
bHdheXNJbmxpbmUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKiBNVEw6OkZ1bmN0aW9uU3RpdGNo
aW5nQXR0cmlidXRlQWx3YXlzSW5saW5lOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6aW5pdDxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lPigpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0
aXRjaGluZ0lucHV0Tm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZTo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5n
SW5wdXROb2RlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2Rl
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRj
aGluZ0lucHV0Tm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZTo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0
Tm9kZT4oKTsKK30KKworLy8gcHJvcGVydHk6IGFyZ3VtZW50SW5kZXgKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlOjphcmd1bWVudEluZGV4
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJndW1lbnRJbmRleCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU6OnNldEFyZ3VtZW50SW5kZXgo
TlM6OlVJbnRlZ2VyIGFyZ3VtZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFyZ3VtZW50SW5kZXhfKSwgYXJndW1lbnRJ
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhBcmd1bWVudEluZGV4OgorX01UTF9JTkxJ
TkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGlu
Z0lucHV0Tm9kZTo6aW5pdChOUzo6VUludGVnZXIgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaW5pdFdpdGhBcmd1bWVudEluZGV4XyksIGFyZ3VtZW50KTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdGdW5jdGlvbk5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpGdW5jdGlvblN0aXRj
aGluZ0Z1bmN0aW9uTm9kZT4oX01UTF9QUklWQVRFX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0Z1
bmN0aW9uTm9kZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlv
bk5vZGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RnVuY3Rp
b25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRM
X0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpu
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5n
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6c2V0TmFtZShjb25zdCBOUzo6U3Ry
aW5nKiBuYW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXROYW1lXyksIG5hbWUpOworfQorCisvLyBwcm9wZXJ0eTogYXJndW1lbnRz
CitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5v
ZGU6OmFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcmd1bWVudHMpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpzZXRBcmd1
bWVudHMoY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFyZ3VtZW50c18pLCBhcmd1bWVu
dHMpOworfQorCisvLyBwcm9wZXJ0eTogY29udHJvbERlcGVuZGVuY2llcworX01UTF9JTkxJTkUg
TlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpjb250cm9sRGVw
ZW5kZW5jaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbnRyb2xEZXBlbmRlbmNpZXMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpz
ZXRDb250cm9sRGVwZW5kZW5jaWVzKGNvbnN0IE5TOjpBcnJheSogY29udHJvbERlcGVuZGVuY2ll
cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0Q29udHJvbERlcGVuZGVuY2llc18pLCBjb250cm9sRGVwZW5kZW5jaWVzKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0V2l0aE5hbWU6YXJndW1lbnRzOmNvbnRyb2xEZXBlbmRlbmNpZXM6Citf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBNVEw6OkZ1bmN0
aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjppbml0KGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUsIGNv
bnN0IE5TOjpBcnJheSogYXJndW1lbnRzLCBjb25zdCBOUzo6QXJyYXkqIGNvbnRyb2xEZXBlbmRl
bmNpZXMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvblN0
aXRjaGluZ0Z1bmN0aW9uTm9kZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5pdFdpdGhOYW1l
X2FyZ3VtZW50c19jb250cm9sRGVwZW5kZW5jaWVzXyksIG5hbWUsIGFyZ3VtZW50cywgY29udHJv
bERlcGVuZGVuY2llcyk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFw
aDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9u
U3RpdGNoaW5nR3JhcGg+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdHcmFw
aCkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdHcmFwaCogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg+KCk7Cit9
CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvbk5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6ZnVuY3Rpb25OYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChmdW5jdGlvbk5hbWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9u
U3RpdGNoaW5nR3JhcGg6OnNldEZ1bmN0aW9uTmFtZShjb25zdCBOUzo6U3RyaW5nKiBmdW5jdGlv
bk5hbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldEZ1bmN0aW9uTmFtZV8pLCBmdW5jdGlvbk5hbWUpOworfQorCisvLyBwcm9wZXJ0
eTogbm9kZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dy
YXBoOjpub2RlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChub2RlcykpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6c2V0Tm9kZXMoY29uc3QgTlM6OkFy
cmF5KiBub2RlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0Tm9kZXNfKSwgbm9kZXMpOworfQorCisvLyBwcm9wZXJ0eTogb3V0cHV0
Tm9kZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSogTVRM
OjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpvdXRwdXROb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2Rl
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvdXRwdXROb2RlKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpzZXRPdXRwdXROb2RlKGNvbnN0IE1U
TDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIG91dHB1dE5vZGUpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE91dHB1dE5v
ZGVfKSwgb3V0cHV0Tm9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBhdHRyaWJ1dGVzCitfTVRMX0lO
TElORSBOUzo6QXJyYXkqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6YXR0cmlidXRlcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChhdHRyaWJ1dGVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpzZXRBdHRyaWJ1dGVzKGNvbnN0IE5TOjpBcnJh
eSogYXR0cmlidXRlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0QXR0cmlidXRlc18pLCBhdHRyaWJ1dGVzKTsKK30KKworLy8gbWV0
aG9kOiBpbml0V2l0aEZ1bmN0aW9uTmFtZTpub2RlczpvdXRwdXROb2RlOmF0dHJpYnV0ZXM6Citf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdHcmFwaDo6aW5pdChjb25zdCBOUzo6U3RyaW5nKiBmdW5jdGlvbk5hbWUsIGNvbnN0IE5T
OjpBcnJheSogbm9kZXMsIGNvbnN0IE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUq
IG91dHB1dE5vZGUsIGNvbnN0IE5TOjpBcnJheSogYXR0cmlidXRlcykKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGluaXRXaXRoRnVuY3Rpb25OYW1lX25vZGVzX291dHB1dE5vZGVfYXR0
cmlidXRlc18pLCBmdW5jdGlvbk5hbWUsIG5vZGVzLCBvdXRwdXROb2RlLCBhdHRyaWJ1dGVzKTsK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6U3RpdGNoZWRM
aWJyYXJ5RGVzY3JpcHRvciogTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yOjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdGl0Y2hlZExpYnJhcnlE
ZXNjcmlwdG9yKiBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcj4o
KTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uR3JhcGhzCitfTVRMX0lOTElORSBOUzo6QXJy
YXkqIE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcjo6ZnVuY3Rpb25HcmFwaHMoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZnVuY3Rpb25HcmFwaHMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I6OnNldEZ1bmN0aW9uR3JhcGhzKGNvbnN0IE5T
OjpBcnJheSogZnVuY3Rpb25HcmFwaHMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uR3JhcGhzXyksIGZ1bmN0aW9uR3Jh
cGhzKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5
KiBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I6OmZ1bmN0aW9ucygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChmdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0aXRjaGVk
TGlicmFyeURlc2NyaXB0b3I6OnNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9u
cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0RnVuY3Rpb25zXyksIGZ1bmN0aW9ucyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJpZGdlLmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFkZXJCcmlkZ2UuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgxMDA4NWRkYTU3YjQxZTM5NDA4MzM4MmMwYjk5MDJjYzUxMzRlMzcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJp
ZGdlLmhwcApAQCAtMCwwICsxLDIwNDcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEhlYWRlckJyaWRnZS5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKK25hbWVzcGFjZSBNVEw6OlByaXZhdGU6OkNsYXNzCit7CisKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xl
R2VvbWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlv
blN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTEFyZ3VtZW50KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFyZ3VtZW50RGVzY3Jp
cHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBcnJheVR5cGUpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMQXR0cmlidXRlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEF0dHJpYnV0
ZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQXR0cmlidXRlRGVzY3JpcHRv
ckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9y
KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJsaXRQYXNzRGVzY3JpcHRvcik7CitfTVRMX1BS
SVZBVEVfREVGX0NMUyhNVExCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDYXB0dXJlRGVzY3JpcHRvcik7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExDYXB0dXJlTWFuYWdlcik7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExDb21tYW5kQnVmZmVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhN
VExDb21waWxlT3B0aW9ucyk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDb21wdXRlUGFzc0Rl
c2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tcHV0ZVBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTENvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMRnVu
Y3Rpb25Db25zdGFudCk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvbkNvbnN0YW50
VmFsdWVzKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEZ1bmN0aW9uRGVzY3JpcHRvcik7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lu
bGluZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9u
Tm9kZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0dyYXBoKTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTEhlYXBEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcik7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExMaW5rZWRGdW5jdGlvbnMpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMTW90aW9uS2V5ZnJhbWVEYXRhKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1U
TFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQb2lu
dGVyVHlwZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQcmltaXRpdmVBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSYXN0ZXJpemF0aW9u
UmF0ZUxheWVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSYXN0ZXJpemF0
aW9uUmF0ZU1hcERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmFzdGVyaXph
dGlvblJhdGVTYW1wbGVBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZB
VEVfREVGX0NMUyhNVExSZW5kZXJQYXNzRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NM
UyhNVExSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc1N0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVf
REVGX0NMUyhNVExSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24pOworX01UTF9QUklWQVRFX0RFRl9D
TFMoTVRMUmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpOwor
X01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNhbXBsZXJE
ZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNoYXJlZEV2ZW50SGFuZGxlKTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNoYXJlZEV2ZW50TGlzdGVuZXIpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMU2hhcmVkVGV4dHVyZUhhbmRsZSk7CitfTVRMX1BSSVZBVEVfREVGX0NM
UyhNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhN
VExTdGVuY2lsRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExTdGl0Y2hlZExp
YnJhcnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFN0cnVjdE1lbWJlcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExTdHJ1Y3RUeXBlKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTFRleHR1cmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFRleHR1
cmVSZWZlcmVuY2VUeXBlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFRpbGVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMVHlwZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWZXJ0ZXhB
dHRyaWJ1dGUpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
QXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4QnVmZmVyTGF5b3V0RGVzY3Jp
cHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4RGVzY3JpcHRvcik7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpOwor
Cit9CisKK25hbWVzcGFjZSBNVEw6OlByaXZhdGU6OlByb3RvY29sCit7CisKK19NVExfUFJJVkFU
RV9ERUZfUFJPKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZSk7CitfTVRMX1BSSVZBVEVfREVGX1BS
TyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcik7CitfTVRMX1BSSVZBVEVf
REVGX1BSTyhNVExBcmd1bWVudEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQmlu
YXJ5QXJjaGl2ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExCbGl0Q29tbWFuZEVuY29kZXIp
OworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQnVmZmVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJP
KE1UTENvbW1hbmRCdWZmZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ29tbWFuZEJ1ZmZl
ckVuY29kZXJJbmZvKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvbW1hbmRFbmNvZGVyKTsK
K19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvbW1hbmRRdWV1ZSk7CitfTVRMX1BSSVZBVEVfREVG
X1BSTyhNVExDb21wdXRlQ29tbWFuZEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRM
Q29tcHV0ZVBpcGVsaW5lU3RhdGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ291bnRlcik7
CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExDb3VudGVyU2FtcGxlQnVmZmVyKTsKK19NVExfUFJJ
VkFURV9ERUZfUFJPKE1UTENvdW50ZXJTZXQpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRGVw
dGhTdGVuY2lsU3RhdGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRGV2aWNlKTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTERyYXdhYmxlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTER5
bmFtaWNMaWJyYXJ5KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEV2ZW50KTsKK19NVExfUFJJ
VkFURV9ERUZfUFJPKE1UTEZlbmNlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0aW9u
KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0aW9uSGFuZGxlKTsKK19NVExfUFJJVkFU
RV9ERUZfUFJPKE1UTEZ1bmN0aW9uTG9nKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0
aW9uTG9nRGVidWdMb2NhdGlvbik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvblN0
aXRjaGluZ0F0dHJpYnV0ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvblN0aXRj
aGluZ05vZGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMSGVhcCk7CitfTVRMX1BSSVZBVEVf
REVGX1BSTyhNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8o
TVRMSW5kaXJlY3RDb21wdXRlQ29tbWFuZCk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExJbmRp
cmVjdFJlbmRlckNvbW1hbmQpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMSW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExMaWJyYXJ5KTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTExvZ0NvbnRhaW5lcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhN
VExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1U
TFJhc3Rlcml6YXRpb25SYXRlTWFwKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTFJlbmRlckNv
bW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTFJlbmRlclBpcGVsaW5lU3Rh
dGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMUmVzb3VyY2UpOworX01UTF9QUklWQVRFX0RF
Rl9QUk8oTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZf
UFJPKE1UTFNhbXBsZXJTdGF0ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExTaGFyZWRFdmVu
dCk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExUZXh0dXJlKTsKK19NVExfUFJJVkFURV9ERUZf
UFJPKE1UTFZpc2libGVGdW5jdGlvblRhYmxlKTsKKworfQorCituYW1lc3BhY2UgTVRMOjpQcml2
YXRlOjpTZWxlY3RvcgoreworCitfTVRMX1BSSVZBVEVfREVGX1NFTChHUFVFbmRUaW1lLAorICAg
ICJHUFVFbmRUaW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChHUFVTdGFydFRpbWUsCisgICAg
IkdQVVN0YXJ0VGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoVVJMLAorICAgICJVUkwiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVy
LAorICAgICJhY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXNXaXRoRGVzY3JpcHRvcl8sCisg
ICAgImFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemVzV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChhY2Nlc3MsCisgICAgImFjY2VzcyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoYWRkQ29tcGxldGVkSGFuZGxlcl8sCisgICAgImFkZENvbXBsZXRlZEhhbmRsZXI6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChhZGRDb21wdXRlUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3Jp
cHRvcl9lcnJvcl8sCisgICAgImFkZENvbXB1dGVQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlw
dG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWRkRGVidWdNYXJrZXJfcmFuZ2Vf
LAorICAgICJhZGREZWJ1Z01hcmtlcjpyYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFk
ZEZ1bmN0aW9uV2l0aERlc2NyaXB0b3JfbGlicmFyeV9lcnJvcl8sCisgICAgImFkZEZ1bmN0aW9u
V2l0aERlc2NyaXB0b3I6bGlicmFyeTplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFk
ZFByZXNlbnRlZEhhbmRsZXJfLAorICAgICJhZGRQcmVzZW50ZWRIYW5kbGVyOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoYWRkUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcl9l
cnJvcl8sCisgICAgImFkZFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6ZXJy
b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRTY2hlZHVsZWRIYW5kbGVyXywKKyAgICAi
YWRkU2NoZWR1bGVkSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFkZFRpbGVSZW5k
ZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAiYWRkVGlsZVJl
bmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChhbGlnbm1lbnQsCisgICAgImFsaWdubWVudCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoYWxsb2NhdGVkU2l6ZSwKKyAgICAiYWxsb2NhdGVkU2l6ZSIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24sCisg
ICAgImFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChhbGxvd0dQVU9wdGltaXplZENvbnRlbnRzLAorICAgICJhbGxvd0dQ
VU9wdGltaXplZENvbnRlbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhbHBoYUJsZW5kT3Bl
cmF0aW9uLAorICAgICJhbHBoYUJsZW5kT3BlcmF0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChhcmVCYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBvcnRlZCwKKyAgICAiYXJlQmFyeWNlbnRyaWNDb29y
ZHNTdXBwb3J0ZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFyZVByb2dyYW1tYWJsZVNhbXBs
ZVBvc2l0aW9uc1N1cHBvcnRlZCwKKyAgICAiYXJlUHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRpb25z
U3VwcG9ydGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmVSYXN0ZXJPcmRlckdyb3Vwc1N1
cHBvcnRlZCwKKyAgICAiYXJlUmFzdGVyT3JkZXJHcm91cHNTdXBwb3J0ZWQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQsCisgICAgImFyZ3VtZW50QnVmZmVy
c1N1cHBvcnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFyZ3VtZW50RGVzY3JpcHRvciwKKyAg
ICAiYXJndW1lbnREZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmd1bWVudElu
ZGV4LAorICAgICJhcmd1bWVudEluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmd1bWVu
dEluZGV4U3RyaWRlLAorICAgICJhcmd1bWVudEluZGV4U3RyaWRlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChhcmd1bWVudHMsCisgICAgImFyZ3VtZW50cyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoYXJyYXlMZW5ndGgsCisgICAgImFycmF5TGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChhcnJheVR5cGUsCisgICAgImFycmF5VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXR0
cmlidXRlSW5kZXgsCisgICAgImF0dHJpYnV0ZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChhdHRyaWJ1dGVUeXBlLAorICAgICJhdHRyaWJ1dGVUeXBlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChhdHRyaWJ1dGVzLAorICAgICJhdHRyaWJ1dGVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChiYWNrRmFjZVN0ZW5jaWwsCisgICAgImJhY2tGYWNlU3RlbmNpbCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYmluYXJ5QXJjaGl2ZXMsCisgICAgImJpbmFyeUFyY2hpdmVzIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChiaW5hcnlGdW5jdGlvbnMsCisgICAgImJpbmFyeUZ1bmN0aW9ucyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoYmxpdENvbW1hbmRFbmNvZGVyLAorICAgICJibGl0Q29tbWFu
ZEVuY29kZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJsaXRDb21tYW5kRW5jb2RlcldpdGhE
ZXNjcmlwdG9yXywKKyAgICAiYmxpdENvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChibGl0UGFzc0Rlc2NyaXB0b3IsCisgICAgImJsaXRQYXNzRGVz
Y3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYm9yZGVyQ29sb3IsCisgICAgImJvcmRl
ckNvbG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChib3VuZGluZ0JveEJ1ZmZlciwKKyAgICAi
Ym91bmRpbmdCb3hCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94QnVm
ZmVyT2Zmc2V0LAorICAgICJib3VuZGluZ0JveEJ1ZmZlck9mZnNldCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYm91bmRpbmdCb3hCdWZmZXJzLAorICAgICJib3VuZGluZ0JveEJ1ZmZlcnMiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94Q291bnQsCisgICAgImJvdW5kaW5nQm94
Q291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94U3RyaWRlLAorICAgICJi
b3VuZGluZ0JveFN0cmlkZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVyLAorICAgICJi
dWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlckFsaWdubWVudCwKKyAgICAiYnVm
ZmVyQWxpZ25tZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZmZXJCeXRlc1BlclJvdywK
KyAgICAiYnVmZmVyQnl0ZXNQZXJSb3ciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlckRh
dGFTaXplLAorICAgICJidWZmZXJEYXRhU2l6ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVm
ZmVyRGF0YVR5cGUsCisgICAgImJ1ZmZlckRhdGFUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChidWZmZXJJbmRleCwKKyAgICAiYnVmZmVySW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGJ1ZmZlck9mZnNldCwKKyAgICAiYnVmZmVyT2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChidWZmZXJQb2ludGVyVHlwZSwKKyAgICAiYnVmZmVyUG9pbnRlclR5cGUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGJ1ZmZlclN0cnVjdFR5cGUsCisgICAgImJ1ZmZlclN0cnVjdFR5cGUiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlcnMsCisgICAgImJ1ZmZlcnMiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlX2Rlc2NyaXB0b3Jfc2NyYXRj
aEJ1ZmZlcl9zY3JhdGNoQnVmZmVyT2Zmc2V0XywKKyAgICAiYnVpbGRBY2NlbGVyYXRpb25TdHJ1
Y3R1cmU6ZGVzY3JpcHRvcjpzY3JhdGNoQnVmZmVyOnNjcmF0Y2hCdWZmZXJPZmZzZXQ6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChjYXB0dXJlT2JqZWN0LAorICAgICJjYXB0dXJlT2JqZWN0Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChjbGVhckJhcnJpZXIsCisgICAgImNsZWFyQmFycmllciIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoY2xlYXJDb2xvciwKKyAgICAiY2xlYXJDb2xvciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY2xlYXJEZXB0aCwKKyAgICAiY2xlYXJEZXB0aCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoY2xlYXJTdGVuY2lsLAorICAgICJjbGVhclN0ZW5jaWwiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNvbG9yQXR0YWNobWVudHMsCisgICAgImNvbG9yQXR0YWNobWVu
dHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbHVtbiwKKyAgICAiY29sdW1uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChjb21tYW5kQnVmZmVyLAorICAgICJjb21tYW5kQnVmZmVyIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChjb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3JfLAorICAgICJj
b21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21t
YW5kQnVmZmVyV2l0aFVucmV0YWluZWRSZWZlcmVuY2VzLAorICAgICJjb21tYW5kQnVmZmVyV2l0
aFVucmV0YWluZWRSZWZlcmVuY2VzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21tYW5kUXVl
dWUsCisgICAgImNvbW1hbmRRdWV1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWFuZFR5
cGVzLAorICAgICJjb21tYW5kVHlwZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbW1pdCwK
KyAgICAiY29tbWl0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21wYXJlRnVuY3Rpb24sCisg
ICAgImNvbXBhcmVGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tcHV0ZUNvbW1h
bmRFbmNvZGVyLAorICAgICJjb21wdXRlQ29tbWFuZEVuY29kZXIiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXywKKyAgICAiY29tcHV0
ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChj
b21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGlzcGF0Y2hUeXBlXywKKyAgICAiY29tcHV0ZUNvbW1h
bmRFbmNvZGVyV2l0aERpc3BhdGNoVHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbXB1
dGVGdW5jdGlvbiwKKyAgICAiY29tcHV0ZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChjb21wdXRlUGFzc0Rlc2NyaXB0b3IsCisgICAgImNvbXB1dGVQYXNzRGVzY3JpcHRvciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY29uY3VycmVudERpc3BhdGNoVGhyZWFkZ3JvdXBzX3RocmVh
ZHNQZXJUaHJlYWRncm91cF8sCisgICAgImNvbmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3Vwczp0
aHJlYWRzUGVyVGhyZWFkZ3JvdXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb25jdXJyZW50
RGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJlYWRncm91cF8sCisgICAgImNvbmN1cnJlbnRE
aXNwYXRjaFRocmVhZHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoY29uc3RhbnRCbG9ja0FsaWdubWVudCwKKyAgICAiY29uc3RhbnRCbG9ja0FsaWdubWVu
dCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29uc3RhbnREYXRhQXRJbmRleF8sCisgICAgImNv
bnN0YW50RGF0YUF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb25zdGFudFZhbHVl
cywKKyAgICAiY29uc3RhbnRWYWx1ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbnRlbnRz
LAorICAgICJjb250ZW50cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29udHJvbERlcGVuZGVu
Y2llcywKKyAgICAiY29udHJvbERlcGVuZGVuY2llcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
Y29udmVydFNwYXJzZVBpeGVsUmVnaW9uc190b1RpbGVSZWdpb25zX3dpdGhUaWxlU2l6ZV9hbGln
bm1lbnRNb2RlX251bVJlZ2lvbnNfLAorICAgICJjb252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zOnRv
VGlsZVJlZ2lvbnM6d2l0aFRpbGVTaXplOmFsaWdubWVudE1vZGU6bnVtUmVnaW9uczoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNvbnZlcnRTcGFyc2VUaWxlUmVnaW9uc190b1BpeGVsUmVnaW9u
c193aXRoVGlsZVNpemVfbnVtUmVnaW9uc18sCisgICAgImNvbnZlcnRTcGFyc2VUaWxlUmVnaW9u
czp0b1BpeGVsUmVnaW9uczp3aXRoVGlsZVNpemU6bnVtUmVnaW9uczoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGNvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfdG9BY2NlbGVyYXRpb25TdHJ1Y3R1
cmVfLAorICAgICJjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlOnRvQWNjZWxlcmF0aW9uU3RydWN0
dXJlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVfdG9BY2NlbGVyYXRpb25TdHJ1Y3R1cmVfLAorICAgICJjb3B5QW5kQ29tcGFjdEFj
Y2VsZXJhdGlvblN0cnVjdHVyZTp0b0FjY2VsZXJhdGlvblN0cnVjdHVyZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGNvcHlGcm9tQnVmZmVyX3NvdXJjZU9mZnNldF9zb3VyY2VCeXRlc1BlclJv
d19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJjZVNpemVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xp
Y2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5hdGlvbk9yaWdpbl8sCisgICAgImNvcHlGcm9tQnVm
ZmVyOnNvdXJjZU9mZnNldDpzb3VyY2VCeXRlc1BlclJvdzpzb3VyY2VCeXRlc1BlckltYWdlOnNv
dXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0
aW5hdGlvbk9yaWdpbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvcHlGcm9tQnVmZmVyX3Nv
dXJjZU9mZnNldF9zb3VyY2VCeXRlc1BlclJvd19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJjZVNp
emVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5hdGlv
bk9yaWdpbl9vcHRpb25zXywKKyAgICAiY29weUZyb21CdWZmZXI6c291cmNlT2Zmc2V0OnNvdXJj
ZUJ5dGVzUGVyUm93OnNvdXJjZUJ5dGVzUGVySW1hZ2U6c291cmNlU2l6ZTp0b1RleHR1cmU6ZGVz
dGluYXRpb25TbGljZTpkZXN0aW5hdGlvbkxldmVsOmRlc3RpbmF0aW9uT3JpZ2luOm9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbUJ1ZmZlcl9zb3VyY2VPZmZzZXRfdG9C
dWZmZXJfZGVzdGluYXRpb25PZmZzZXRfc2l6ZV8sCisgICAgImNvcHlGcm9tQnVmZmVyOnNvdXJj
ZU9mZnNldDp0b0J1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDpzaXplOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJjZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJjZU9y
aWdpbl9zb3VyY2VTaXplX3RvQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0X2Rlc3RpbmF0aW9uQnl0
ZXNQZXJSb3dfZGVzdGluYXRpb25CeXRlc1BlckltYWdlXywKKyAgICAiY29weUZyb21UZXh0dXJl
OnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNvdXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvQnVmZmVy
OmRlc3RpbmF0aW9uT2Zmc2V0OmRlc3RpbmF0aW9uQnl0ZXNQZXJSb3c6ZGVzdGluYXRpb25CeXRl
c1BlckltYWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJj
ZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJjZU9yaWdpbl9zb3VyY2VTaXplX3RvQnVmZmVyX2Rlc3Rp
bmF0aW9uT2Zmc2V0X2Rlc3RpbmF0aW9uQnl0ZXNQZXJSb3dfZGVzdGluYXRpb25CeXRlc1Blcklt
YWdlX29wdGlvbnNfLAorICAgICJjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2
ZWw6c291cmNlT3JpZ2luOnNvdXJjZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVz
dGluYXRpb25CeXRlc1BlclJvdzpkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6b3B0aW9uczoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VM
ZXZlbF9zb3VyY2VPcmlnaW5fc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGljZV9k
ZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luXywKKyAgICAiY29weUZyb21UZXh0dXJl
OnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNvdXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvVGV4dHVy
ZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNl
TGV2ZWxfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9zbGljZUNv
dW50X2xldmVsQ291bnRfLAorICAgICJjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNl
TGV2ZWw6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpzbGljZUNv
dW50OmxldmVsQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbVRleHR1cmVf
dG9UZXh0dXJlXywKKyAgICAiY29weUZyb21UZXh0dXJlOnRvVGV4dHVyZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGNvcHlJbmRpcmVjdENvbW1hbmRCdWZmZXJfc291cmNlUmFuZ2VfZGVzdGlu
YXRpb25fZGVzdGluYXRpb25JbmRleF8sCisgICAgImNvcHlJbmRpcmVjdENvbW1hbmRCdWZmZXI6
c291cmNlUmFuZ2U6ZGVzdGluYXRpb246ZGVzdGluYXRpb25JbmRleDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXJfb2Zmc2V0XywKKyAgICAiY29weVBh
cmFtZXRlckRhdGFUb0J1ZmZlcjpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3Vu
dGVyU2V0LAorICAgICJjb3VudGVyU2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3VudGVy
U2V0cywKKyAgICAiY291bnRlclNldHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvdW50ZXJz
LAorICAgICJjb3VudGVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY3B1Q2FjaGVNb2RlLAor
ICAgICJjcHVDYWNoZU1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGN1cnJlbnRBbGxvY2F0
ZWRTaXplLAorICAgICJjdXJyZW50QWxsb2NhdGVkU2l6ZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZGF0YSwKKyAgICAiZGF0YSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGF0YVNpemUsCisg
ICAgImRhdGFTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkYXRhVHlwZSwKKyAgICAiZGF0
YVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlYWxsb2MsCisgICAgImRlYWxsb2MiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRlYnVnTG9jYXRpb24sCisgICAgImRlYnVnTG9jYXRpb24i
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlYnVnU2lnbnBvc3RzLAorICAgICJkZWJ1Z1NpZ25w
b3N0cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVmYXVsdENhcHR1cmVTY29wZSwKKyAgICAi
ZGVmYXVsdENhcHR1cmVTY29wZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVmYXVsdFJhc3Rl
clNhbXBsZUNvdW50LAorICAgICJkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGRlcHRoLAorICAgICJkZXB0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
ZGVwdGhBdHRhY2htZW50LAorICAgICJkZXB0aEF0dGFjaG1lbnQiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0LAorICAgICJkZXB0aEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVwdGhDb21wYXJlRnVuY3Rpb24s
CisgICAgImRlcHRoQ29tcGFyZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0
aEZhaWx1cmVPcGVyYXRpb24sCisgICAgImRlcHRoRmFpbHVyZU9wZXJhdGlvbiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZGVwdGhQbGFuZSwKKyAgICAiZGVwdGhQbGFuZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZGVwdGhSZXNvbHZlRmlsdGVyLAorICAgICJkZXB0aFJlc29sdmVGaWx0ZXIi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24sCisgICAg
ImRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlc2Ny
aXB0b3IsCisgICAgImRlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlc3RpbmF0
aW9uLAorICAgICJkZXN0aW5hdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVzdGluYXRp
b25BbHBoYUJsZW5kRmFjdG9yLAorICAgICJkZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IsCisgICAgImRl
c3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRldmljZSwK
KyAgICAiZGV2aWNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkaWRNb2RpZnlSYW5nZV8sCisg
ICAgImRpZE1vZGlmeVJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hRdWV1
ZSwKKyAgICAiZGlzcGF0Y2hRdWV1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hU
aHJlYWRncm91cHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAiZGlzcGF0Y2hUaHJlYWRn
cm91cHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlz
cGF0Y2hUaHJlYWRncm91cHNXaXRoSW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRf
dGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAiZGlzcGF0Y2hUaHJlYWRncm91cHNXaXRoSW5k
aXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJlYWRn
cm91cF8sCisgICAgImRpc3BhdGNoVGhyZWFkczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChkaXNwYXRjaFRocmVhZHNQZXJUaWxlXywKKyAgICAiZGlzcGF0
Y2hUaHJlYWRzUGVyVGlsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRpc3BhdGNoVHlwZSwK
KyAgICAiZGlzcGF0Y2hUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3SW5kZXhlZFBh
dGNoZXNfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQb2lu
dEluZGV4QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVy
X2luZGlyZWN0QnVmZmVyT2Zmc2V0XywKKyAgICAiZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNoSW5k
ZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1ZmZlcjpj
b250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZl
ck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRj
aFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0
X2NvbnRyb2xQb2ludEluZGV4QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2lu
c3RhbmNlQ291bnRfYmFzZUluc3RhbmNlXywKKyAgICAiZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNo
U3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6
Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQ6aW5z
dGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3SW5k
ZXhlZFBhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJ
bmRleEJ1ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9jb250cm9sUG9pbnRJbmRl
eEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV90ZXNzZWxsYXRpb25GYWN0
b3JCdWZmZXJfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0X3Rlc3NlbGxhdGlvbkZhY3Rv
ckJ1ZmZlckluc3RhbmNlU3RyaWRlXywKKyAgICAiZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNoU3Rh
cnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6Y29u
dHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFu
Y2VDb3VudDpiYXNlSW5zdGFuY2U6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOnRlc3NlbGxhdGlv
bkZhY3RvckJ1ZmZlck9mZnNldDp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlk
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRleENv
dW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF8sCisgICAgImRyYXdJ
bmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1
ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZl
c19pbmRleENvdW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbnN0
YW5jZUNvdW50XywKKyAgICAiZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4Q291bnQ6aW5kZXhU
eXBlOmluZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5
cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlVmVydGV4
X2Jhc2VJbnN0YW5jZV8sCisgICAgImRyYXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50Omlu
ZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VW
ZXJ0ZXg6YmFzZUluc3RhbmNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd0luZGV4ZWRQ
cmltaXRpdmVzX2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbmRpcmVj
dEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8sCisgICAgImRyYXdJbmRleGVkUHJpbWl0aXZl
czppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6
aW5kaXJlY3RCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UGF0Y2hl
c19wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5kaXJlY3RCdWZmZXJf
aW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJkcmF3UGF0Y2hlczpwYXRjaEluZGV4QnVmZmVy
OnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZz
ZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNo
Q291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291
bnRfYmFzZUluc3RhbmNlXywKKyAgICAiZHJhd1BhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENvdW50
OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJh
c2VJbnN0YW5jZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdQYXRjaGVzX3BhdGNoU3Rh
cnRfcGF0Y2hDb3VudF9wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5z
dGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyX3Rlc3NlbGxh
dGlvbkZhY3RvckJ1ZmZlck9mZnNldF90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0
cmlkZV8sCisgICAgImRyYXdQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4
QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6
dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlck9mZnNldDp0
ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlkZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGRyYXdQcmltaXRpdmVzX2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0
XywKKyAgICAiZHJhd1ByaW1pdGl2ZXM6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZz
ZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92
ZXJ0ZXhDb3VudF8sCisgICAgImRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0OnZlcnRleENvdW50
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVy
dGV4Q291bnRfaW5zdGFuY2VDb3VudF8sCisgICAgImRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0
OnZlcnRleENvdW50Omluc3RhbmNlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3
UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0ZXhDb3VudF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0
YW5jZV8sCisgICAgImRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0OnZlcnRleENvdW50Omluc3Rh
bmNlQ291bnQ6YmFzZUluc3RhbmNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd2FibGVJ
RCwKKyAgICAiZHJhd2FibGVJRCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudEFycmF5
VHlwZSwKKyAgICAiZWxlbWVudEFycmF5VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxl
bWVudElzQXJndW1lbnRCdWZmZXIsCisgICAgImVsZW1lbnRJc0FyZ3VtZW50QnVmZmVyIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChlbGVtZW50UG9pbnRlclR5cGUsCisgICAgImVsZW1lbnRQb2lu
dGVyVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudFN0cnVjdFR5cGUsCisgICAg
ImVsZW1lbnRTdHJ1Y3RUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbGVtZW50VGV4dHVy
ZVJlZmVyZW5jZVR5cGUsCisgICAgImVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlwZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudFR5cGUsCisgICAgImVsZW1lbnRUeXBlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChlbmNvZGVTaWduYWxFdmVudF92YWx1ZV8sCisgICAgImVuY29kZVNp
Z25hbEV2ZW50OnZhbHVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZW5jb2RlV2FpdEZvckV2
ZW50X3ZhbHVlXywKKyAgICAiZW5jb2RlV2FpdEZvckV2ZW50OnZhbHVlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZW5jb2RlZExlbmd0aCwKKyAgICAiZW5jb2RlZExlbmd0aCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZW5jb2RlckxhYmVsLAorICAgICJlbmNvZGVyTGFiZWwiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGVuZEVuY29kaW5nLAorICAgICJlbmRFbmNvZGluZyIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgsCisgICAgImVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmRPZkZyYWdtZW50U2FtcGxl
SW5kZXgsCisgICAgImVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleCwKKyAgICAiZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRl
eCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZW5xdWV1ZSwKKyAgICAiZW5xdWV1ZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoZXJyb3IsCisgICAgImVycm9yIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChlcnJvck9wdGlvbnMsCisgICAgImVycm9yT3B0aW9ucyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoZXJyb3JTdGF0ZSwKKyAgICAiZXJyb3JTdGF0ZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXJfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJP
ZmZzZXRfLAorICAgICJleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjppbmRpcmVjdEJ1ZmZlcjppbmRp
cmVjdEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGV4ZWN1dGVDb21tYW5k
c0luQnVmZmVyX3dpdGhSYW5nZV8sCisgICAgImV4ZWN1dGVDb21tYW5kc0luQnVmZmVyOndpdGhS
YW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZhc3RNYXRoRW5hYmxlZCwKKyAgICAiZmFz
dE1hdGhFbmFibGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmaWxsQnVmZmVyX3JhbmdlX3Zh
bHVlXywKKyAgICAiZmlsbEJ1ZmZlcjpyYW5nZTp2YWx1ZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGZpcnN0TWlwbWFwSW5UYWlsLAorICAgICJmaXJzdE1pcG1hcEluVGFpbCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZm9ybWF0LAorICAgICJmb3JtYXQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywKKyAgICAiZnJhZ21lbnRBZGRp
dGlvbmFsQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmcmFnbWVudEFy
Z3VtZW50cywKKyAgICAiZnJhZ21lbnRBcmd1bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGZyYWdtZW50QnVmZmVycywKKyAgICAiZnJhZ21lbnRCdWZmZXJzIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChmcmFnbWVudEZ1bmN0aW9uLAorICAgICJmcmFnbWVudEZ1bmN0aW9uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChmcmFnbWVudExpbmtlZEZ1bmN0aW9ucywKKyAgICAiZnJhZ21lbnRM
aW5rZWRGdW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZyYWdtZW50UHJlbG9hZGVk
TGlicmFyaWVzLAorICAgICJmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZnJvbnRGYWNlU3RlbmNpbCwKKyAgICAiZnJvbnRGYWNlU3RlbmNpbCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb24sCisgICAgImZ1bmN0aW9uIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChmdW5jdGlvbkNvbnN0YW50c0RpY3Rpb25hcnksCisgICAgImZ1bmN0aW9u
Q29uc3RhbnRzRGljdGlvbmFyeSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25Db3Vu
dCwKKyAgICAiZnVuY3Rpb25Db3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25E
ZXNjcmlwdG9yLAorICAgICJmdW5jdGlvbkRlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGZ1bmN0aW9uR3JhcGhzLAorICAgICJmdW5jdGlvbkdyYXBocyIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb25fLAorICAgICJmdW5jdGlvbkhhbmRs
ZVdpdGhGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9uSGFuZGxlV2l0
aEZ1bmN0aW9uX3N0YWdlXywKKyAgICAiZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb246c3RhZ2U6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbk5hbWUsCisgICAgImZ1bmN0aW9uTmFt
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25OYW1lcywKKyAgICAiZnVuY3Rpb25O
YW1lcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25UeXBlLAorICAgICJmdW5jdGlv
blR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9ucywKKyAgICAiZnVuY3Rpb25z
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZW5lcmF0ZU1pcG1hcHNGb3JUZXh0dXJlXywKKyAg
ICAiZ2VuZXJhdGVNaXBtYXBzRm9yVGV4dHVyZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdl
b21ldHJ5RGVzY3JpcHRvcnMsCisgICAgImdlb21ldHJ5RGVzY3JpcHRvcnMiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGdldEJ5dGVzX2J5dGVzUGVyUm93X2J5dGVzUGVySW1hZ2VfZnJvbVJlZ2lv
bl9taXBtYXBMZXZlbF9zbGljZV8sCisgICAgImdldEJ5dGVzOmJ5dGVzUGVyUm93OmJ5dGVzUGVy
SW1hZ2U6ZnJvbVJlZ2lvbjptaXBtYXBMZXZlbDpzbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGdldEJ5dGVzX2J5dGVzUGVyUm93X2Zyb21SZWdpb25fbWlwbWFwTGV2ZWxfLAorICAgICJn
ZXRCeXRlczpieXRlc1BlclJvdzpmcm9tUmVnaW9uOm1pcG1hcExldmVsOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9uc19jb3VudF8sCisgICAgImdldERl
ZmF1bHRTYW1wbGVQb3NpdGlvbnM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXRT
YW1wbGVQb3NpdGlvbnNfY291bnRfLAorICAgICJnZXRTYW1wbGVQb3NpdGlvbnM6Y291bnQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnNfcmVnaW9uX21p
cExldmVsX3NsaWNlX3Jlc2V0Q291bnRlcnNfY291bnRlcnNCdWZmZXJfY291bnRlcnNCdWZmZXJP
ZmZzZXRfLAorICAgICJnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExldmVsOnNs
aWNlOnJlc2V0Q291bnRlcnM6Y291bnRlcnNCdWZmZXI6Y291bnRlcnNCdWZmZXJPZmZzZXQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChncm91cHMsCisgICAgImdyb3VwcyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoaGFzVW5pZmllZE1lbW9yeSwKKyAgICAiaGFzVW5pZmllZE1lbW9yeSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaGF6YXJkVHJhY2tpbmdNb2RlLAorICAgICJoYXphcmRUcmFj
a2luZ01vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhlYXAsCisgICAgImhlYXAiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGhlYXBCdWZmZXJTaXplQW5kQWxpZ25XaXRoTGVuZ3RoX29wdGlv
bnNfLAorICAgICJoZWFwQnVmZmVyU2l6ZUFuZEFsaWduV2l0aExlbmd0aDpvcHRpb25zOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaGVhcE9mZnNldCwKKyAgICAiaGVhcE9mZnNldCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoaGVhcFRleHR1cmVTaXplQW5kQWxpZ25XaXRoRGVzY3JpcHRvcl8s
CisgICAgImhlYXBUZXh0dXJlU2l6ZUFuZEFsaWduV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChoZWlnaHQsCisgICAgImhlaWdodCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoaG9yaXpvbnRhbCwKKyAgICAiaG9yaXpvbnRhbCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aG9yaXpvbnRhbFNhbXBsZVN0b3JhZ2UsCisgICAgImhvcml6b250YWxTYW1wbGVTdG9yYWdlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbWFnZWJsb2NrTWVtb3J5TGVuZ3RoRm9yRGltZW5zaW9u
c18sCisgICAgImltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCwKKyAgICAiaW1hZ2VibG9ja1Nh
bXBsZUxlbmd0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5kZXgsCisgICAgImluZGV4Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbmRleEJ1ZmZlciwKKyAgICAiaW5kZXhCdWZmZXIiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGluZGV4QnVmZmVySW5kZXgsCisgICAgImluZGV4QnVmZmVy
SW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGV4QnVmZmVyT2Zmc2V0LAorICAgICJp
bmRleEJ1ZmZlck9mZnNldCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5kZXhUeXBlLAorICAg
ICJpbmRleFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGlyZWN0Q29tcHV0ZUNvbW1h
bmRBdEluZGV4XywKKyAgICAiaW5kaXJlY3RDb21wdXRlQ29tbWFuZEF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChpbmRpcmVjdFJlbmRlckNvbW1hbmRBdEluZGV4XywKKyAgICAiaW5k
aXJlY3RSZW5kZXJDb21tYW5kQXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaGVy
aXRCdWZmZXJzLAorICAgICJpbmhlcml0QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aW5oZXJpdFBpcGVsaW5lU3RhdGUsCisgICAgImluaGVyaXRQaXBlbGluZVN0YXRlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChpbml0LAorICAgICJpbml0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChpbml0V2l0aEFyZ3VtZW50SW5kZXhfLAorICAgICJpbml0V2l0aEFyZ3VtZW50SW5kZXg6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aERpc3BhdGNoUXVldWVfLAorICAgICJpbml0
V2l0aERpc3BhdGNoUXVldWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEZ1bmN0
aW9uTmFtZV9ub2Rlc19vdXRwdXROb2RlX2F0dHJpYnV0ZXNfLAorICAgICJpbml0V2l0aEZ1bmN0
aW9uTmFtZTpub2RlczpvdXRwdXROb2RlOmF0dHJpYnV0ZXM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpbml0V2l0aE5hbWVfYXJndW1lbnRzX2NvbnRyb2xEZXBlbmRlbmNpZXNfLAorICAgICJp
bml0V2l0aE5hbWU6YXJndW1lbnRzOmNvbnRyb2xEZXBlbmRlbmNpZXM6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChpbml0V2l0aFNhbXBsZUNvdW50XywKKyAgICAiaW5pdFdpdGhTYW1wbGVDb3Vu
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoU2FtcGxlQ291bnRfaG9yaXpvbnRh
bF92ZXJ0aWNhbF8sCisgICAgImluaXRXaXRoU2FtcGxlQ291bnQ6aG9yaXpvbnRhbDp2ZXJ0aWNh
bDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlucHV0UHJpbWl0aXZlVG9wb2xvZ3ksCisgICAg
ImlucHV0UHJpbWl0aXZlVG9wb2xvZ3kiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluc2VydERl
YnVnQ2FwdHVyZUJvdW5kYXJ5LAorICAgICJpbnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFyeSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaW5zZXJ0RGVidWdTaWducG9zdF8sCisgICAgImluc2VydERl
YnVnU2lnbnBvc3Q6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnNlcnRMaWJyYXJpZXMsCisg
ICAgImluc2VydExpYnJhcmllcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5zdGFsbE5hbWUs
CisgICAgImluc3RhbGxOYW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZUNvdW50
LAorICAgICJpbnN0YW5jZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZURl
c2NyaXB0b3JCdWZmZXIsCisgICAgImluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlciIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0LAorICAgICJpbnN0
YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluc3Rh
bmNlRGVzY3JpcHRvclN0cmlkZSwKKyAgICAiaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZURlc2NyaXB0b3JUeXBlLAorICAgICJpbnN0YW5j
ZURlc2NyaXB0b3JUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZWRBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVzLAorICAgICJpbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRv
ciwKKyAgICAiaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQsCisgICAgImludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlvc3Vy
ZmFjZSwKKyAgICAiaW9zdXJmYWNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpb3N1cmZhY2VQ
bGFuZSwKKyAgICAiaW9zdXJmYWNlUGxhbmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzQWN0
aXZlLAorICAgICJpc0FjdGl2ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNBbGlhc2FibGUs
CisgICAgImlzQWxpYXNhYmxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0FscGhhVG9Db3Zl
cmFnZUVuYWJsZWQsCisgICAgImlzQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoaXNBbHBoYVRvT25lRW5hYmxlZCwKKyAgICAiaXNBbHBoYVRvT25lRW5hYmxl
ZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNCbGVuZGluZ0VuYWJsZWQsCisgICAgImlzQmxl
bmRpbmdFbmFibGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0NhcHR1cmluZywKKyAgICAi
aXNDYXB0dXJpbmciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzRGVwdGgyNFN0ZW5jaWw4UGl4
ZWxGb3JtYXRTdXBwb3J0ZWQsCisgICAgImlzRGVwdGgyNFN0ZW5jaWw4UGl4ZWxGb3JtYXRTdXBw
b3J0ZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzRGVwdGhUZXh0dXJlLAorICAgICJpc0Rl
cHRoVGV4dHVyZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNEZXB0aFdyaXRlRW5hYmxlZCwK
KyAgICAiaXNEZXB0aFdyaXRlRW5hYmxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNGcmFt
ZWJ1ZmZlck9ubHksCisgICAgImlzRnJhbWVidWZmZXJPbmx5Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpc0hlYWRsZXNzLAorICAgICJpc0hlYWRsZXNzIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChpc0xvd1Bvd2VyLAorICAgICJpc0xvd1Bvd2VyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChp
c1BhdGNoQ29udHJvbFBvaW50RGF0YSwKKyAgICAiaXNQYXRjaENvbnRyb2xQb2ludERhdGEiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGlzUGF0Y2hEYXRhLAorICAgICJpc1BhdGNoRGF0YSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaXNSYXN0ZXJpemF0aW9uRW5hYmxlZCwKKyAgICAiaXNSYXN0
ZXJpemF0aW9uRW5hYmxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNSZW1vdmFibGUsCisg
ICAgImlzUmVtb3ZhYmxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc1NoYXJlYWJsZSwKKyAg
ICAiaXNTaGFyZWFibGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzU3BhcnNlLAorICAgICJp
c1NwYXJzZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNUZXNzZWxsYXRpb25GYWN0b3JTY2Fs
ZUVuYWJsZWQsCisgICAgImlzVGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChrZXJuZWxFbmRUaW1lLAorICAgICJrZXJuZWxFbmRUaW1lIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChrZXJuZWxTdGFydFRpbWUsCisgICAgImtlcm5lbFN0YXJ0VGlt
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGFiZWwsCisgICAgImxhYmVsIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChsYW5ndWFnZVZlcnNpb24sCisgICAgImxhbmd1YWdlVmVyc2lvbiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobGF5ZXJBdEluZGV4XywKKyAgICAibGF5ZXJBdEluZGV4OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobGF5ZXJDb3VudCwKKyAgICAibGF5ZXJDb3VudCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobGF5ZXJzLAorICAgICJsYXllcnMiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGxheW91dHMsCisgICAgImxheW91dHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGxlbmd0aCwKKyAgICAibGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsZXZlbCwKKyAg
ICAibGV2ZWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxpYnJhcmllcywKKyAgICAibGlicmFy
aWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsaWJyYXJ5VHlwZSwKKyAgICAibGlicmFyeVR5
cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxpbmUsCisgICAgImxpbmUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGxpbmtlZEZ1bmN0aW9ucywKKyAgICAibGlua2VkRnVuY3Rpb25zIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChsb2FkQWN0aW9uLAorICAgICJsb2FkQWN0aW9uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChsb2NhdGlvbiwKKyAgICAibG9jYXRpb24iKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGxvY2F0aW9uTnVtYmVyLAorICAgICJsb2NhdGlvbk51bWJlciIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobG9kQXZlcmFnZSwKKyAgICAibG9kQXZlcmFnZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobG9kTWF4Q2xhbXAsCisgICAgImxvZE1heENsYW1wIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChsb2RNaW5DbGFtcCwKKyAgICAibG9kTWluQ2xhbXAiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGxvZ3MsCisgICAgImxvZ3MiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1hZ0Zp
bHRlciwKKyAgICAibWFnRmlsdGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYWtlQWxpYXNh
YmxlLAorICAgICJtYWtlQWxpYXNhYmxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXBQaHlz
aWNhbFRvU2NyZWVuQ29vcmRpbmF0ZXNfZm9yTGF5ZXJfLAorICAgICJtYXBQaHlzaWNhbFRvU2Ny
ZWVuQ29vcmRpbmF0ZXM6Zm9yTGF5ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXBTY3Jl
ZW5Ub1BoeXNpY2FsQ29vcmRpbmF0ZXNfZm9yTGF5ZXJfLAorICAgICJtYXBTY3JlZW5Ub1BoeXNp
Y2FsQ29vcmRpbmF0ZXM6Zm9yTGF5ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhBbmlz
b3Ryb3B5LAorICAgICJtYXhBbmlzb3Ryb3B5Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhB
cmd1bWVudEJ1ZmZlclNhbXBsZXJDb3VudCwKKyAgICAibWF4QXJndW1lbnRCdWZmZXJTYW1wbGVy
Q291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heEF2YWlsYWJsZVNpemVXaXRoQWxpZ25t
ZW50XywKKyAgICAibWF4QXZhaWxhYmxlU2l6ZVdpdGhBbGlnbm1lbnQ6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChtYXhCdWZmZXJMZW5ndGgsCisgICAgIm1heEJ1ZmZlckxlbmd0aCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobWF4Q2FsbFN0YWNrRGVwdGgsCisgICAgIm1heENhbGxTdGFja0Rl
cHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudCwK
KyAgICAibWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgsCisgICAgIm1heEZyYWdtZW50Q2FsbFN0YWNrRGVw
dGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudCwKKyAg
ICAibWF4S2VybmVsQnVmZmVyQmluZENvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhT
YW1wbGVDb3VudCwKKyAgICAibWF4U2FtcGxlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1heFRlc3NlbGxhdGlvbkZhY3RvciwKKyAgICAibWF4VGVzc2VsbGF0aW9uRmFjdG9yIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChtYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCwKKyAgICAibWF4
VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFRocmVh
ZHNQZXJUaHJlYWRncm91cCwKKyAgICAibWF4VGhyZWFkc1BlclRocmVhZGdyb3VwIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCwKKyAgICAibWF4
VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFRy
YW5zZmVyUmF0ZSwKKyAgICAibWF4VHJhbnNmZXJSYXRlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQsCisgICAgIm1heFZlcnRleEFtcGxpZmljYXRp
b25Db3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VmVydGV4QnVmZmVyQmluZENvdW50
LAorICAgICJtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1heFZlcnRleENhbGxTdGFja0RlcHRoLAorICAgICJtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobWVtYmVyQnlOYW1lXywKKyAgICAibWVtYmVyQnlOYW1l
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWVtYmVycywKKyAgICAibWVtYmVycyIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXNfY291bnRfLAorICAg
ICJtZW1vcnlCYXJyaWVyV2l0aFJlc291cmNlczpjb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzX2NvdW50X2FmdGVyU3RhZ2VzX2JlZm9yZVN0
YWdlc18sCisgICAgIm1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzOmNvdW50OmFmdGVyU3RhZ2Vz
OmJlZm9yZVN0YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1lbW9yeUJhcnJpZXJXaXRo
U2NvcGVfLAorICAgICJtZW1vcnlCYXJyaWVyV2l0aFNjb3BlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobWVtb3J5QmFycmllcldpdGhTY29wZV9hZnRlclN0YWdlc19iZWZvcmVTdGFnZXNfLAor
ICAgICJtZW1vcnlCYXJyaWVyV2l0aFNjb3BlOmFmdGVyU3RhZ2VzOmJlZm9yZVN0YWdlczoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG1pbkZpbHRlciwKKyAgICAibWluRmlsdGVyIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9y
bWF0XywKKyAgICAibWluaW11bUxpbmVhclRleHR1cmVBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1pbmltdW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9y
UGl4ZWxGb3JtYXRfLAorICAgICJtaW5pbXVtVGV4dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVs
Rm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWlwRmlsdGVyLAorICAgICJtaXBGaWx0
ZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1pcG1hcExldmVsQ291bnQsCisgICAgIm1pcG1h
cExldmVsQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1vdGlvbkVuZEJvcmRlck1vZGUs
CisgICAgIm1vdGlvbkVuZEJvcmRlck1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1vdGlv
bkVuZFRpbWUsCisgICAgIm1vdGlvbkVuZFRpbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1v
dGlvbktleWZyYW1lQ291bnQsCisgICAgIm1vdGlvbktleWZyYW1lQ291bnQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKG1vdGlvblN0YXJ0Qm9yZGVyTW9kZSwKKyAgICAibW90aW9uU3RhcnRCb3Jk
ZXJNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25TdGFydFRpbWUsCisgICAgIm1v
dGlvblN0YXJ0VGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobW90aW9uVHJhbnNmb3JtQnVm
ZmVyLAorICAgICJtb3Rpb25UcmFuc2Zvcm1CdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCwKKyAgICAibW90aW9uVHJhbnNmb3JtQnVmZmVy
T2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25UcmFuc2Zvcm1Db3VudCwKKyAg
ICAibW90aW9uVHJhbnNmb3JtQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG11dGFiaWxp
dHksCisgICAgIm11dGFiaWxpdHkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5hbWUsCisgICAg
Im5hbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZVdp
dGhEZXNjcmlwdG9yXywKKyAgICAibmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aERlc2NyaXB0
b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRo
U2l6ZV8sCisgICAgIm5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZVdpdGhTaXplOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobmV3QXJndW1lbnRFbmNvZGVyRm9yQnVmZmVyQXRJbmRleF8sCisgICAg
Im5ld0FyZ3VtZW50RW5jb2RlckZvckJ1ZmZlckF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzXywKKyAgICAibmV3QXJndW1lbnRF
bmNvZGVyV2l0aEFyZ3VtZW50czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FyZ3VtZW50
RW5jb2RlcldpdGhCdWZmZXJJbmRleF8sCisgICAgIm5ld0FyZ3VtZW50RW5jb2RlcldpdGhCdWZm
ZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FyZ3VtZW50RW5jb2RlcldpdGhC
dWZmZXJJbmRleF9yZWZsZWN0aW9uXywKKyAgICAibmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZl
ckluZGV4OnJlZmxlY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCaW5hcnlBcmNo
aXZlV2l0aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJuZXdCaW5hcnlBcmNoaXZlV2l0aERlc2Ny
aXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZmZXJXaXRoQnl0ZXNf
bGVuZ3RoX29wdGlvbnNfLAorICAgICJuZXdCdWZmZXJXaXRoQnl0ZXM6bGVuZ3RoOm9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHlfbGVuZ3Ro
X29wdGlvbnNfZGVhbGxvY2F0b3JfLAorICAgICJuZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHk6bGVu
Z3RoOm9wdGlvbnM6ZGVhbGxvY2F0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZm
ZXJXaXRoTGVuZ3RoX29wdGlvbnNfLAorICAgICJuZXdCdWZmZXJXaXRoTGVuZ3RoOm9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZmZXJXaXRoTGVuZ3RoX29wdGlvbnNfb2Zm
c2V0XywKKyAgICAibmV3QnVmZmVyV2l0aExlbmd0aDpvcHRpb25zOm9mZnNldDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhDb21tYW5kUXVldWVfLAorICAgICJu
ZXdDYXB0dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3Q2FwdHVyZVNjb3BlV2l0aERldmljZV8sCisgICAgIm5ld0NhcHR1cmVTY29wZVdpdGhEZXZp
Y2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21tYW5kUXVldWUsCisgICAgIm5ld0Nv
bW1hbmRRdWV1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tbWFuZFF1ZXVlV2l0aE1h
eENvbW1hbmRCdWZmZXJDb3VudF8sCisgICAgIm5ld0NvbW1hbmRRdWV1ZVdpdGhNYXhDb21tYW5k
QnVmZmVyQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXywKKyAgICAibmV3Q29tcHV0
ZVBpcGVsaW5lU3RhdGVXaXRoQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uczplcnJvcjoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jf
b3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
V2l0aERlc2NyaXB0b3I6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jfb3B0aW9uc19y
ZWZsZWN0aW9uX2Vycm9yXywKKyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3Jp
cHRvcjpvcHRpb25zOnJlZmxlY3Rpb246ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChu
ZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9jb21wbGV0aW9uSGFuZGxlcl8sCisg
ICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOmNvbXBsZXRpb25IYW5kbGVy
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVu
Y3Rpb25fZXJyb3JfLAorICAgICJuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpl
cnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0
aEZ1bmN0aW9uX29wdGlvbnNfY29tcGxldGlvbkhhbmRsZXJfLAorICAgICJuZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25fb3B0
aW9uc19yZWZsZWN0aW9uX2Vycm9yXywKKyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRo
RnVuY3Rpb246b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3Q291bnRlclNhbXBsZUJ1ZmZlcldpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3
Q291bnRlclNhbXBsZUJ1ZmZlcldpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3RGVmYXVsdExpYnJhcnksCisgICAgIm5ld0RlZmF1bHRMaWJyYXJ5Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChuZXdEZWZhdWx0TGlicmFyeVdpdGhCdW5kbGVfZXJyb3JfLAor
ICAgICJuZXdEZWZhdWx0TGlicmFyeVdpdGhCdW5kbGU6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9yXywKKyAgICAibmV3RGVw
dGhTdGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d0R5bmFtaWNMaWJyYXJ5X2Vycm9yXywKKyAgICAibmV3RHluYW1pY0xpYnJhcnk6ZXJyb3I6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdEeW5hbWljTGlicmFyeVdpdGhVUkxfZXJyb3JfLAor
ICAgICJuZXdEeW5hbWljTGlicmFyeVdpdGhVUkw6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdFdmVudCwKKyAgICAibmV3RXZlbnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d0ZlbmNlLAorICAgICJuZXdGZW5jZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RnVuY3Rp
b25XaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0Z1bmN0aW9uV2l0
aERlc2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChu
ZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3RnVuY3Rpb25XaXRoRGVz
Y3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0Z1bmN0aW9uV2l0aE5h
bWVfLAorICAgICJuZXdGdW5jdGlvbldpdGhOYW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3RnVuY3Rpb25XaXRoTmFtZV9jb25zdGFudFZhbHVlc19jb21wbGV0aW9uSGFuZGxlcl8sCisg
ICAgIm5ld0Z1bmN0aW9uV2l0aE5hbWU6Y29uc3RhbnRWYWx1ZXM6Y29tcGxldGlvbkhhbmRsZXI6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdGdW5jdGlvbldpdGhOYW1lX2NvbnN0YW50VmFs
dWVzX2Vycm9yXywKKyAgICAibmV3RnVuY3Rpb25XaXRoTmFtZTpjb25zdGFudFZhbHVlczplcnJv
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0hlYXBXaXRoRGVzY3JpcHRvcl8sCisgICAg
Im5ld0hlYXBXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0luZGly
ZWN0Q29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yX21heENvbW1hbmRDb3VudF9vcHRpb25zXywK
KyAgICAibmV3SW5kaXJlY3RDb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6bWF4Q29tbWFuZENv
dW50Om9wdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3Jfc3RhZ2VfLAorICAgICJuZXdJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5k
bGVyXywKKyAgICAibmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpjb21wbGV0
aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0
aW9uV2l0aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldp
dGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdp
dGhEYXRhX2Vycm9yXywKKyAgICAibmV3TGlicmFyeVdpdGhEYXRhOmVycm9yOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhGaWxlX2Vycm9yXywKKyAgICAibmV3TGlicmFy
eVdpdGhGaWxlOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhT
b3VyY2Vfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0xpYnJhcnlXaXRoU291
cmNlOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChu
ZXdMaWJyYXJ5V2l0aFNvdXJjZV9vcHRpb25zX2Vycm9yXywKKyAgICAibmV3TGlicmFyeVdpdGhT
b3VyY2U6b3B0aW9uczplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlX
aXRoU3RpdGNoZWREZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3TGlicmFy
eVdpdGhTdGl0Y2hlZERlc2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcl9lcnJvcl8sCisgICAg
Im5ld0xpYnJhcnlXaXRoU3RpdGNoZWREZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3TGlicmFyeVdpdGhVUkxfZXJyb3JfLAorICAgICJuZXdMaWJyYXJ5V2l0aFVS
TDplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1Jhc3Rlcml6YXRpb25SYXRlTWFw
V2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhEZXNjcmlw
dG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVtb3RlQnVmZmVyVmlld0ZvckRldmlj
ZV8sCisgICAgIm5ld1JlbW90ZUJ1ZmZlclZpZXdGb3JEZXZpY2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRldmljZV8sCisgICAgIm5ld1JlbW90ZVRl
eHR1cmVWaWV3Rm9yRGV2aWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXywKKyAgICAibmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zOmVycm9yOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlw
dG9yX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhE
ZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfY29tcGxldGlv
bkhhbmRsZXJfLAorICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0
aW9uczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1JlbmRl
clBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfLAor
ICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0aW9uczpyZWZsZWN0
aW9uOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0
ZVdpdGhUaWxlRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVzY3JpcHRvcjpvcHRpb25zOmNvbXBsZXRpb25I
YW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdp
dGhUaWxlRGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfLAorICAgICJuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVjdGlvbjplcnJv
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlwdG9y
XywKKyAgICAibmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdTaGFyZWRFdmVudCwKKyAgICAibmV3U2hhcmVkRXZlbnQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKG5ld1NoYXJlZEV2ZW50SGFuZGxlLAorICAgICJuZXdTaGFyZWRFdmVudEhh
bmRsZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlXywK
KyAgICAibmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3U2hhcmVkVGV4dHVyZUhhbmRsZSwKKyAgICAibmV3U2hhcmVkVGV4dHVyZUhhbmRsZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobmV3U2hhcmVkVGV4dHVyZVdpdGhEZXNjcmlwdG9yXywKKyAg
ICAibmV3U2hhcmVkVGV4dHVyZVdpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3U2hhcmVkVGV4dHVyZVdpdGhIYW5kbGVfLAorICAgICJuZXdTaGFyZWRUZXh0dXJlV2l0
aEhhbmRsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVWaWV3V2l0aFBpeGVs
Rm9ybWF0XywKKyAgICAibmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdF90ZXh0dXJlVHlwZV9s
ZXZlbHNfc2xpY2VzXywKKyAgICAibmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6dGV4dHVy
ZVR5cGU6bGV2ZWxzOnNsaWNlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVW
aWV3V2l0aFBpeGVsRm9ybWF0X3RleHR1cmVUeXBlX2xldmVsc19zbGljZXNfc3dpenpsZV8sCisg
ICAgIm5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0OnRleHR1cmVUeXBlOmxldmVsczpzbGlj
ZXM6c3dpenpsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVXaXRoRGVzY3Jp
cHRvcl8sCisgICAgIm5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcl9pb3N1cmZhY2VfcGxhbmVfLAorICAgICJu
ZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6aW9zdXJmYWNlOnBsYW5lOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yX29mZnNldF8sCisgICAgIm5ld1RleHR1
cmVXaXRoRGVzY3JpcHRvcjpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdUZXh0
dXJlV2l0aERlc2NyaXB0b3Jfb2Zmc2V0X2J5dGVzUGVyUm93XywKKyAgICAibmV3VGV4dHVyZVdp
dGhEZXNjcmlwdG9yOm9mZnNldDpieXRlc1BlclJvdzoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdWaXNpYmxl
RnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3
VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcl9zdGFnZV8sCisgICAgIm5ld1Zpc2li
bGVGdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChub2RlcywKKyAgICAibm9kZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5vcm1hbGl6
ZWRDb29yZGluYXRlcywKKyAgICAibm9ybWFsaXplZENvb3JkaW5hdGVzIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChub3RpZnlMaXN0ZW5lcl9hdFZhbHVlX2Jsb2NrXywKKyAgICAibm90aWZ5TGlz
dGVuZXI6YXRWYWx1ZTpibG9jazoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9iamVjdEF0SW5k
ZXhlZFN1YnNjcmlwdF8sCisgICAgIm9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG9mZnNldCwKKyAgICAib2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChvcGFxdWUsCisgICAgIm9wYXF1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3B0aW1p
emVDb250ZW50c0ZvckNQVUFjY2Vzc18sCisgICAgIm9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nl
c3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNz
X3NsaWNlX2xldmVsXywKKyAgICAib3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2VzczpzbGljZTps
ZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nl
c3NfLAorICAgICJvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwob3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vzc19zbGljZV9sZXZlbF8sCisgICAg
Im9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChvcHRpbWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcl93aXRoUmFuZ2VfLAorICAg
ICJvcHRpbWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcjp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChvcHRpb25zLAorICAgICJvcHRpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChvdXRwdXROb2RlLAorICAgICJvdXRwdXROb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChv
dXRwdXRVUkwsCisgICAgIm91dHB1dFVSTCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGFyYWxs
ZWxSZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXywKKyAgICAicGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
cGFyYW1ldGVyQnVmZmVyU2l6ZUFuZEFsaWduLAorICAgICJwYXJhbWV0ZXJCdWZmZXJTaXplQW5k
QWxpZ24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhcmVudFJlbGF0aXZlTGV2ZWwsCisgICAg
InBhcmVudFJlbGF0aXZlTGV2ZWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhcmVudFJlbGF0
aXZlU2xpY2UsCisgICAgInBhcmVudFJlbGF0aXZlU2xpY2UiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHBhcmVudFRleHR1cmUsCisgICAgInBhcmVudFRleHR1cmUiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHBhdGNoQ29udHJvbFBvaW50Q291bnQsCisgICAgInBhdGNoQ29udHJvbFBvaW50Q291
bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhdGNoVHlwZSwKKyAgICAicGF0Y2hUeXBlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChwZWVyQ291bnQsCisgICAgInBlZXJDb3VudCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocGVlckdyb3VwSUQsCisgICAgInBlZXJHcm91cElEIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChwZWVySW5kZXgsCisgICAgInBlZXJJbmRleCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwocGh5c2ljYWxHcmFudWxhcml0eSwKKyAgICAicGh5c2ljYWxHcmFudWxhcml0
eSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGh5c2ljYWxTaXplRm9yTGF5ZXJfLAorICAgICJw
aHlzaWNhbFNpemVGb3JMYXllcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBpeGVsRm9ybWF0
LAorICAgICJwaXhlbEZvcm1hdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocG9pbnRlclR5cGUs
CisgICAgInBvaW50ZXJUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwb3BEZWJ1Z0dyb3Vw
LAorICAgICJwb3BEZWJ1Z0dyb3VwIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwcmVsb2FkZWRM
aWJyYXJpZXMsCisgICAgInByZWxvYWRlZExpYnJhcmllcyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocHJlcHJvY2Vzc29yTWFjcm9zLAorICAgICJwcmVwcm9jZXNzb3JNYWNyb3MiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHByZXNlbnQsCisgICAgInByZXNlbnQiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHByZXNlbnRBZnRlck1pbmltdW1EdXJhdGlvbl8sCisgICAgInByZXNlbnRBZnRlck1p
bmltdW1EdXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnRBdFRpbWVfLAor
ICAgICJwcmVzZW50QXRUaW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudERyYXdh
YmxlXywKKyAgICAicHJlc2VudERyYXdhYmxlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJl
c2VudERyYXdhYmxlX2FmdGVyTWluaW11bUR1cmF0aW9uXywKKyAgICAicHJlc2VudERyYXdhYmxl
OmFmdGVyTWluaW11bUR1cmF0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudERy
YXdhYmxlX2F0VGltZV8sCisgICAgInByZXNlbnREcmF3YWJsZTphdFRpbWU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChwcmVzZW50ZWRUaW1lLAorICAgICJwcmVzZW50ZWRUaW1lIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChwcmVzZXJ2ZUludmFyaWFuY2UsCisgICAgInByZXNlcnZlSW52YXJp
YW5jZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJpdmF0ZUZ1bmN0aW9ucywKKyAgICAicHJp
dmF0ZUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHVzaERlYnVnR3JvdXBfLAor
ICAgICJwdXNoRGVidWdHcm91cDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJBZGRyZXNzTW9k
ZSwKKyAgICAickFkZHJlc3NNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyYXN0ZXJTYW1w
bGVDb3VudCwKKyAgICAicmFzdGVyU2FtcGxlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHJhc3Rlcml6YXRpb25SYXRlTWFwLAorICAgICJyYXN0ZXJpemF0aW9uUmF0ZU1hcCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVl
blNpemVfLAorICAgICJyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRv
cldpdGhTY3JlZW5TaXplX2xheWVyXywKKyAgICAicmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlw
dG9yV2l0aFNjcmVlblNpemU6bGF5ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyYXN0ZXJp
emF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZV9sYXllckNvdW50X2xheWVyc18s
CisgICAgInJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOmxheWVy
Q291bnQ6bGF5ZXJzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVhZE1hc2ssCisgICAgInJl
YWRNYXNrIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZWFkV3JpdGVUZXh0dXJlU3VwcG9ydCwK
KyAgICAicmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJl
Y29tbWVuZGVkTWF4V29ya2luZ1NldFNpemUsCisgICAgInJlY29tbWVuZGVkTWF4V29ya2luZ1Nl
dFNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlZml0QWNjZWxlcmF0aW9uU3RydWN0dXJl
X2Rlc2NyaXB0b3JfZGVzdGluYXRpb25fc2NyYXRjaEJ1ZmZlcl9zY3JhdGNoQnVmZmVyT2Zmc2V0
XywKKyAgICAicmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6ZGVzY3JpcHRvcjpkZXN0aW5hdGlv
bjpzY3JhdGNoQnVmZmVyOnNjcmF0Y2hCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChyZWdpc3RyeUlELAorICAgICJyZWdpc3RyeUlEIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChyZW1vdGVTdG9yYWdlQnVmZmVyLAorICAgICJyZW1vdGVTdG9yYWdlQnVmZmVyIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChyZW1vdGVTdG9yYWdlVGV4dHVyZSwKKyAgICAicmVtb3RlU3RvcmFn
ZVRleHR1cmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbW92ZUFsbERlYnVnTWFya2VycywK
KyAgICAicmVtb3ZlQWxsRGVidWdNYXJrZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZW5k
ZXJDb21tYW5kRW5jb2RlciwKKyAgICAicmVuZGVyQ29tbWFuZEVuY29kZXIiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3JfLAorICAgICJy
ZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocmVuZGVyUGFzc0Rlc2NyaXB0b3IsCisgICAgInJlbmRlclBhc3NEZXNjcmlwdG9yIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChyZW5kZXJUYXJnZXRBcnJheUxlbmd0aCwKKyAgICAicmVuZGVy
VGFyZ2V0QXJyYXlMZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbmRlclRhcmdldEhl
aWdodCwKKyAgICAicmVuZGVyVGFyZ2V0SGVpZ2h0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChy
ZW5kZXJUYXJnZXRXaWR0aCwKKyAgICAicmVuZGVyVGFyZ2V0V2lkdGgiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHJlcGxhY2VSZWdpb25fbWlwbWFwTGV2ZWxfc2xpY2Vfd2l0aEJ5dGVzX2J5dGVz
UGVyUm93X2J5dGVzUGVySW1hZ2VfLAorICAgICJyZXBsYWNlUmVnaW9uOm1pcG1hcExldmVsOnNs
aWNlOndpdGhCeXRlczpieXRlc1BlclJvdzpieXRlc1BlckltYWdlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwocmVwbGFjZVJlZ2lvbl9taXBtYXBMZXZlbF93aXRoQnl0ZXNfYnl0ZXNQZXJSb3df
LAorICAgICJyZXBsYWNlUmVnaW9uOm1pcG1hcExldmVsOndpdGhCeXRlczpieXRlc1BlclJvdzoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlcXVpcmVkLAorICAgICJyZXF1aXJlZCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocmVzZXQsCisgICAgInJlc2V0Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChyZXNldENvbW1hbmRzSW5CdWZmZXJfd2l0aFJhbmdlXywKKyAgICAicmVzZXRDb21tYW5k
c0luQnVmZmVyOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc2V0VGV4dHVy
ZUFjY2Vzc0NvdW50ZXJzX3JlZ2lvbl9taXBMZXZlbF9zbGljZV8sCisgICAgInJlc2V0VGV4dHVy
ZUFjY2Vzc0NvdW50ZXJzOnJlZ2lvbjptaXBMZXZlbDpzbGljZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHJlc2V0V2l0aFJhbmdlXywKKyAgICAicmVzZXRXaXRoUmFuZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChyZXNvbHZlQ291bnRlclJhbmdlXywKKyAgICAicmVzb2x2ZUNvdW50ZXJS
YW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc29sdmVDb3VudGVyc19pblJhbmdlX2Rl
c3RpbmF0aW9uQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0XywKKyAgICAicmVzb2x2ZUNvdW50ZXJz
OmluUmFuZ2U6ZGVzdGluYXRpb25CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChyZXNvbHZlRGVwdGhQbGFuZSwKKyAgICAicmVzb2x2ZURlcHRoUGxhbmUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc29sdmVMZXZlbCwKKyAgICAicmVzb2x2ZUxldmVs
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNvbHZlU2xpY2UsCisgICAgInJlc29sdmVTbGlj
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb2x2ZVRleHR1cmUsCisgICAgInJlc29sdmVU
ZXh0dXJlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZU9wdGlvbnMsCisgICAgInJl
c291cmNlT3B0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb3VyY2VTdGF0ZUNvbW1h
bmRFbmNvZGVyLAorICAgICJyZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXywK
KyAgICAicmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IsCisgICAgInJlc291
cmNlU3RhdGVQYXNzRGVzY3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmV0YWluZWRS
ZWZlcmVuY2VzLAorICAgICJyZXRhaW5lZFJlZmVyZW5jZXMiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHJnYkJsZW5kT3BlcmF0aW9uLAorICAgICJyZ2JCbGVuZE9wZXJhdGlvbiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwocm9vdFJlc291cmNlLAorICAgICJyb290UmVzb3VyY2UiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNBZGRyZXNzTW9kZSwKKyAgICAic0FkZHJlc3NNb2RlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzYW1wbGVCdWZmZXIsCisgICAgInNhbXBsZUJ1ZmZlciIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2FtcGxlQnVmZmVyQXR0YWNobWVudHMsCisgICAgInNhbXBsZUJ1
ZmZlckF0dGFjaG1lbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzYW1wbGVDb3VudCwKKyAg
ICAic2FtcGxlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNhbXBsZUNvdW50ZXJzSW5C
dWZmZXJfYXRTYW1wbGVJbmRleF93aXRoQmFycmllcl8sCisgICAgInNhbXBsZUNvdW50ZXJzSW5C
dWZmZXI6YXRTYW1wbGVJbmRleDp3aXRoQmFycmllcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNhbXBsZVRpbWVzdGFtcHNfZ3B1VGltZXN0YW1wXywKKyAgICAic2FtcGxlVGltZXN0YW1wczpn
cHVUaW1lc3RhbXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzY3JlZW5TaXplLAorICAgICJz
Y3JlZW5TaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXJpYWxpemVUb1VSTF9lcnJvcl8s
CisgICAgInNlcmlhbGl6ZVRvVVJMOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRBY2NlbGVyYXRp
b25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFj
Y2VsZXJhdGlvblN0cnVjdHVyZV9hdEluZGV4XywKKyAgICAic2V0QWNjZWxlcmF0aW9uU3RydWN0
dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBY2Nlc3NfLAorICAgICJz
ZXRBY2Nlc3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBbGxvd0R1cGxpY2F0ZUludGVy
c2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbl8sCisgICAgInNldEFsbG93RHVwbGljYXRlSW50ZXJz
ZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QWxs
b3dHUFVPcHRpbWl6ZWRDb250ZW50c18sCisgICAgInNldEFsbG93R1BVT3B0aW1pemVkQ29udGVu
dHM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBbHBoYUJsZW5kT3BlcmF0aW9uXywKKyAg
ICAic2V0QWxwaGFCbGVuZE9wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFs
cGhhVG9Db3ZlcmFnZUVuYWJsZWRfLAorICAgICJzZXRBbHBoYVRvQ292ZXJhZ2VFbmFibGVkOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QWxwaGFUb09uZUVuYWJsZWRfLAorICAgICJzZXRB
bHBoYVRvT25lRW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFyZ3VtZW50QnVm
ZmVyX29mZnNldF8sCisgICAgInNldEFyZ3VtZW50QnVmZmVyOm9mZnNldDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEFyZ3VtZW50QnVmZmVyX3N0YXJ0T2Zmc2V0X2FycmF5RWxlbWVudF8s
CisgICAgInNldEFyZ3VtZW50QnVmZmVyOnN0YXJ0T2Zmc2V0OmFycmF5RWxlbWVudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEFyZ3VtZW50SW5kZXhfLAorICAgICJzZXRBcmd1bWVudElu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QXJndW1lbnRzXywKKyAgICAic2V0QXJn
dW1lbnRzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QXJyYXlMZW5ndGhfLAorICAgICJz
ZXRBcnJheUxlbmd0aDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEF0dHJpYnV0ZXNfLAor
ICAgICJzZXRBdHRyaWJ1dGVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QmFja0ZhY2VT
dGVuY2lsXywKKyAgICAic2V0QmFja0ZhY2VTdGVuY2lsOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0QmFycmllciwKKyAgICAic2V0QmFycmllciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0QmluYXJ5QXJjaGl2ZXNfLAorICAgICJzZXRCaW5hcnlBcmNoaXZlczoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEJpbmFyeUZ1bmN0aW9uc18sCisgICAgInNldEJpbmFyeUZ1bmN0aW9u
czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJsZW5kQ29sb3JSZWRfZ3JlZW5fYmx1ZV9h
bHBoYV8sCisgICAgInNldEJsZW5kQ29sb3JSZWQ6Z3JlZW46Ymx1ZTphbHBoYToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEJsZW5kaW5nRW5hYmxlZF8sCisgICAgInNldEJsZW5kaW5nRW5h
YmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJvcmRlckNvbG9yXywKKyAgICAic2V0
Qm9yZGVyQ29sb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCb3VuZGluZ0JveEJ1ZmZl
cl8sCisgICAgInNldEJvdW5kaW5nQm94QnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXRfLAorICAgICJzZXRCb3VuZGluZ0JveEJ1ZmZlck9m
ZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyc18sCisg
ICAgInNldEJvdW5kaW5nQm94QnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJv
dW5kaW5nQm94Q291bnRfLAorICAgICJzZXRCb3VuZGluZ0JveENvdW50OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0Qm91bmRpbmdCb3hTdHJpZGVfLAorICAgICJzZXRCb3VuZGluZ0JveFN0
cmlkZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJ1ZmZlcl8sCisgICAgInNldEJ1ZmZl
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8sCisg
ICAgInNldEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEJ1ZmZlckluZGV4XywKKyAgICAic2V0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRCdWZmZXJPZmZzZXRfYXRJbmRleF8sCisgICAgInNldEJ1ZmZlck9mZnNldDphdElu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5n
ZV8sCisgICAgInNldEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRCeXRlc19sZW5ndGhfYXRJbmRleF8sCisgICAgInNldEJ5dGVzOmxlbmd0aDph
dEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q2FwdHVyZU9iamVjdF8sCisgICAg
InNldENhcHR1cmVPYmplY3Q6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDbGVhckNvbG9y
XywKKyAgICAic2V0Q2xlYXJDb2xvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENsZWFy
RGVwdGhfLAorICAgICJzZXRDbGVhckRlcHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
Q2xlYXJTdGVuY2lsXywKKyAgICAic2V0Q2xlYXJTdGVuY2lsOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0Q29sb3JTdG9yZUFjdGlvbl9hdEluZGV4XywKKyAgICAic2V0Q29sb3JTdG9yZUFj
dGlvbjphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29sb3JTdG9yZUFjdGlv
bk9wdGlvbnNfYXRJbmRleF8sCisgICAgInNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zOmF0SW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb21tYW5kVHlwZXNfLAorICAgICJzZXRD
b21tYW5kVHlwZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb21wYXJlRnVuY3Rpb25f
LAorICAgICJzZXRDb21wYXJlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRD
b21wdXRlRnVuY3Rpb25fLAorICAgICJzZXRDb21wdXRlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZV8sCisgICAgInNldENvbXB1dGVQaXBl
bGluZVN0YXRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVfYXRJbmRleF8sCisgICAgInNldENvbXB1dGVQaXBlbGluZVN0YXRlOmF0SW5kZXg6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZXNfd2l0aFJhbmdlXywK
KyAgICAic2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldENvbnN0YW50QmxvY2tBbGlnbm1lbnRfLAorICAgICJzZXRDb25zdGFudEJs
b2NrQWxpZ25tZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29uc3RhbnRWYWx1ZV90
eXBlX2F0SW5kZXhfLAorICAgICJzZXRDb25zdGFudFZhbHVlOnR5cGU6YXRJbmRleDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldENvbnN0YW50VmFsdWVfdHlwZV93aXRoTmFtZV8sCisgICAg
InNldENvbnN0YW50VmFsdWU6dHlwZTp3aXRoTmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldENvbnN0YW50VmFsdWVzXywKKyAgICAic2V0Q29uc3RhbnRWYWx1ZXM6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRDb25zdGFudFZhbHVlc190eXBlX3dpdGhSYW5nZV8sCisgICAgInNl
dENvbnN0YW50VmFsdWVzOnR5cGU6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0Q29udHJvbERlcGVuZGVuY2llc18sCisgICAgInNldENvbnRyb2xEZXBlbmRlbmNpZXM6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb3VudGVyU2V0XywKKyAgICAic2V0Q291bnRlclNl
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENwdUNhY2hlTW9kZV8sCisgICAgInNldENw
dUNhY2hlTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEN1bGxNb2RlXywKKyAgICAi
c2V0Q3VsbE1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREYXRhVHlwZV8sCisgICAg
InNldERhdGFUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVmYXVsdENhcHR1cmVT
Y29wZV8sCisgICAgInNldERlZmF1bHRDYXB0dXJlU2NvcGU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXREZWZhdWx0UmFzdGVyU2FtcGxlQ291bnRfLAorICAgICJzZXREZWZhdWx0UmFzdGVy
U2FtcGxlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aF8sCisgICAgInNl
dERlcHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhBdHRhY2htZW50XywKKyAg
ICAic2V0RGVwdGhBdHRhY2htZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhB
dHRhY2htZW50UGl4ZWxGb3JtYXRfLAorICAgICJzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1h
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoQmlhc19zbG9wZVNjYWxlX2NsYW1w
XywKKyAgICAic2V0RGVwdGhCaWFzOnNsb3BlU2NhbGU6Y2xhbXA6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXREZXB0aENsaXBNb2RlXywKKyAgICAic2V0RGVwdGhDbGlwTW9kZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uXywKKyAgICAic2V0RGVw
dGhDb21wYXJlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aEZhaWx1
cmVPcGVyYXRpb25fLAorICAgICJzZXREZXB0aEZhaWx1cmVPcGVyYXRpb246Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXREZXB0aFBsYW5lXywKKyAgICAic2V0RGVwdGhQbGFuZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoUmVzb2x2ZUZpbHRlcl8sCisgICAgInNldERlcHRo
UmVzb2x2ZUZpbHRlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoU3RlbmNpbFBh
c3NPcGVyYXRpb25fLAorICAgICJzZXREZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhTdGVuY2lsU3RhdGVfLAorICAgICJzZXREZXB0aFN0
ZW5jaWxTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoU3RvcmVBY3Rpb25f
LAorICAgICJzZXREZXB0aFN0b3JlQWN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnNfLAorICAgICJzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9u
czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoV3JpdGVFbmFibGVkXywKKyAgICAi
c2V0RGVwdGhXcml0ZUVuYWJsZWQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXN0aW5h
dGlvbl8sCisgICAgInNldERlc3RpbmF0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yXywKKyAgICAic2V0RGVzdGluYXRpb25BbHBoYUJs
ZW5kRmFjdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVzdGluYXRpb25SR0JCbGVu
ZEZhY3Rvcl8sCisgICAgInNldERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXREaXNwYXRjaFR5cGVfLAorICAgICJzZXREaXNwYXRjaFR5cGU6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleF8sCisgICAg
InNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4XywKKyAgICAic2V0RW5kT2ZGcmFnbWVudFNhbXBsZUlu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleF8s
CisgICAgInNldEVuZE9mVmVydGV4U2FtcGxlSW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRFcnJvck9wdGlvbnNfLAorICAgICJzZXRFcnJvck9wdGlvbnM6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRGYXN0TWF0aEVuYWJsZWRfLAorICAgICJzZXRGYXN0TWF0aEVuYWJsZWQ6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGb3JtYXRfLAorICAgICJzZXRGb3JtYXQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZV9h
dEJ1ZmZlckluZGV4XywKKyAgICAic2V0RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRC
dWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50QWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9uc18sCisgICAgInNldEZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0
aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50QnVmZmVyX29mZnNldF9h
dEluZGV4XywKKyAgICAic2V0RnJhZ21lbnRCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEJ1ZmZlck9mZnNldF9hdEluZGV4XywKKyAgICAi
c2V0RnJhZ21lbnRCdWZmZXJPZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEZyYWdtZW50QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5nZV8sCisgICAgInNldEZyYWdtZW50
QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZy
YWdtZW50Qnl0ZXNfbGVuZ3RoX2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudEJ5dGVzOmxlbmd0
aDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRGdW5jdGlvbl8s
CisgICAgInNldEZyYWdtZW50RnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRG
cmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNl
dEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193
aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50
TGlua2VkRnVuY3Rpb25zXywKKyAgICAic2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnM6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFByZWxvYWRlZExpYnJhcmllc18sCisgICAg
InNldEZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVfYXRJbmRleF8sCisgICAgInNldEZyYWdtZW50U2FtcGxl
clN0YXRlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFNhbXBs
ZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdEluZGV4XywKKyAgICAic2V0RnJhZ21l
bnRTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9k
TWF4Q2xhbXBzX3dpdGhSYW5nZV8sCisgICAgInNldEZyYWdtZW50U2FtcGxlclN0YXRlczpsb2RN
aW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEZyYWdtZW50U2FtcGxlclN0YXRlc193aXRoUmFuZ2VfLAorICAgICJzZXRGcmFnbWVudFNh
bXBsZXJTdGF0ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21l
bnRUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudFRleHR1cmU6YXRJbmRleDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50VGV4dHVyZXNfd2l0aFJhbmdlXywKKyAg
ICAic2V0RnJhZ21lbnRUZXh0dXJlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJz
ZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVy
UmFuZ2VfLAorICAgICJzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVy
UmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcm9udEZhY2VTdGVuY2lsXywKKyAg
ICAic2V0RnJvbnRGYWNlU3RlbmNpbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyb250
RmFjaW5nV2luZGluZ18sCisgICAgInNldEZyb250RmFjaW5nV2luZGluZzoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEZ1bmN0aW9uX2F0SW5kZXhfLAorICAgICJzZXRGdW5jdGlvbjphdElu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnVuY3Rpb25Db3VudF8sCisgICAgInNl
dEZ1bmN0aW9uQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGdW5jdGlvbkdyYXBo
c18sCisgICAgInNldEZ1bmN0aW9uR3JhcGhzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RnVuY3Rpb25OYW1lXywKKyAgICAic2V0RnVuY3Rpb25OYW1lOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0RnVuY3Rpb25zXywKKyAgICAic2V0RnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0RnVuY3Rpb25zX3dpdGhSYW5nZV8sCisgICAgInNldEZ1bmN0aW9uczp3aXRo
UmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRHZW9tZXRyeURlc2NyaXB0b3JzXywK
KyAgICAic2V0R2VvbWV0cnlEZXNjcmlwdG9yczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEdyb3Vwc18sCisgICAgInNldEdyb3VwczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEhh
emFyZFRyYWNraW5nTW9kZV8sCisgICAgInNldEhhemFyZFRyYWNraW5nTW9kZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEhlaWdodF8sCisgICAgInNldEhlaWdodDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEltYWdlYmxvY2tTYW1wbGVMZW5ndGhfLAorICAgICJzZXRJbWFnZWJs
b2NrU2FtcGxlTGVuZ3RoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW1hZ2VibG9ja1dp
ZHRoX2hlaWdodF8sCisgICAgInNldEltYWdlYmxvY2tXaWR0aDpoZWlnaHQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRJbmRleF8sCisgICAgInNldEluZGV4OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0SW5kZXhCdWZmZXJfLAorICAgICJzZXRJbmRleEJ1ZmZlcjoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEluZGV4QnVmZmVySW5kZXhfLAorICAgICJzZXRJbmRleEJ1ZmZl
ckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kZXhCdWZmZXJPZmZzZXRfLAor
ICAgICJzZXRJbmRleEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldElu
ZGV4VHlwZV8sCisgICAgInNldEluZGV4VHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEluZGlyZWN0Q29tbWFuZEJ1ZmZlcl9hdEluZGV4XywKKyAgICAic2V0SW5kaXJlY3RDb21tYW5k
QnVmZmVyOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmRpcmVjdENvbW1h
bmRCdWZmZXJzX3dpdGhSYW5nZV8sCisgICAgInNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnM6d2l0
aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5oZXJpdEJ1ZmZlcnNfLAorICAg
ICJzZXRJbmhlcml0QnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluaGVyaXRQ
aXBlbGluZVN0YXRlXywKKyAgICAic2V0SW5oZXJpdFBpcGVsaW5lU3RhdGU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRJbnB1dFByaW1pdGl2ZVRvcG9sb2d5XywKKyAgICAic2V0SW5wdXRQ
cmltaXRpdmVUb3BvbG9neToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluc2VydExpYnJh
cmllc18sCisgICAgInNldEluc2VydExpYnJhcmllczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEluc3RhbGxOYW1lXywKKyAgICAic2V0SW5zdGFsbE5hbWU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRJbnN0YW5jZUNvdW50XywKKyAgICAic2V0SW5zdGFuY2VDb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcl8sCisgICAgInNl
dEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldElu
c3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldF8sCisgICAgInNldEluc3RhbmNlRGVzY3JpcHRv
ckJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlRGVzY3Jp
cHRvclN0cmlkZV8sCisgICAgInNldEluc3RhbmNlRGVzY3JpcHRvclN0cmlkZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvclR5cGVfLAorICAgICJzZXRJbnN0
YW5jZURlc2NyaXB0b3JUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFuY2Vk
QWNjZWxlcmF0aW9uU3RydWN0dXJlc18sCisgICAgInNldEluc3RhbmNlZEFjY2VsZXJhdGlvblN0
cnVjdHVyZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
OmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlX2F0SW5kZXhfLAorICAgICJzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlT2Zmc2V0XywKKyAgICAic2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dp
dGhCdWZmZXJSYW5nZV8sCisgICAgInNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzOndpdGhC
dWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVzX3dpdGhSYW5nZV8sCisgICAgInNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVz
OndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEtlcm5lbEJ1ZmZlcl9vZmZz
ZXRfYXRJbmRleF8sCisgICAgInNldEtlcm5lbEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldExhYmVsXywKKyAgICAic2V0TGFiZWw6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRMYW5ndWFnZVZlcnNpb25fLAorICAgICJzZXRMYW5ndWFnZVZlcnNp
b246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMYXllcl9hdEluZGV4XywKKyAgICAic2V0
TGF5ZXI6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldExldmVsXywKKyAgICAi
c2V0TGV2ZWw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMaWJyYXJpZXNfLAorICAgICJz
ZXRMaWJyYXJpZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMaWJyYXJ5VHlwZV8sCisg
ICAgInNldExpYnJhcnlUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TGlua2VkRnVu
Y3Rpb25zXywKKyAgICAic2V0TGlua2VkRnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0TG9hZEFjdGlvbl8sCisgICAgInNldExvYWRBY3Rpb246Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRMb2RBdmVyYWdlXywKKyAgICAic2V0TG9kQXZlcmFnZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldExvZE1heENsYW1wXywKKyAgICAic2V0TG9kTWF4Q2xhbXA6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRMb2RNaW5DbGFtcF8sCisgICAgInNldExvZE1pbkNsYW1w
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWFnRmlsdGVyXywKKyAgICAic2V0TWFnRmls
dGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4QW5pc290cm9weV8sCisgICAgInNl
dE1heEFuaXNvdHJvcHk6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhDYWxsU3RhY2tE
ZXB0aF8sCisgICAgInNldE1heENhbGxTdGFja0RlcHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0TWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnRfLAorICAgICJzZXRNYXhGcmFnbWVudEJ1
ZmZlckJpbmRDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heEZyYWdtZW50Q2Fs
bFN0YWNrRGVwdGhfLAorICAgICJzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRoOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4S2VybmVsQnVmZmVyQmluZENvdW50XywKKyAgICAic2V0
TWF4S2VybmVsQnVmZmVyQmluZENvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4
VGVzc2VsbGF0aW9uRmFjdG9yXywKKyAgICAic2V0TWF4VGVzc2VsbGF0aW9uRmFjdG9yOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXBfLAor
ICAgICJzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldE1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudF8sCisgICAgInNldE1heFZlcnRl
eEFtcGxpZmljYXRpb25Db3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heFZlcnRl
eEJ1ZmZlckJpbmRDb3VudF8sCisgICAgInNldE1heFZlcnRleEJ1ZmZlckJpbmRDb3VudDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heFZlcnRleENhbGxTdGFja0RlcHRoXywKKyAgICAi
c2V0TWF4VmVydGV4Q2FsbFN0YWNrRGVwdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRN
aW5GaWx0ZXJfLAorICAgICJzZXRNaW5GaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRNaXBGaWx0ZXJfLAorICAgICJzZXRNaXBGaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRNaXBtYXBMZXZlbENvdW50XywKKyAgICAic2V0TWlwbWFwTGV2ZWxDb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvbkVuZEJvcmRlck1vZGVfLAorICAgICJzZXRNb3Rp
b25FbmRCb3JkZXJNb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9uRW5kVGlt
ZV8sCisgICAgInNldE1vdGlvbkVuZFRpbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRN
b3Rpb25LZXlmcmFtZUNvdW50XywKKyAgICAic2V0TW90aW9uS2V5ZnJhbWVDb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvblN0YXJ0Qm9yZGVyTW9kZV8sCisgICAgInNldE1v
dGlvblN0YXJ0Qm9yZGVyTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvblN0
YXJ0VGltZV8sCisgICAgInNldE1vdGlvblN0YXJ0VGltZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlcl8sCisgICAgInNldE1vdGlvblRyYW5zZm9ybUJ1
ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlck9m
ZnNldF8sCisgICAgInNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldE1vdGlvblRyYW5zZm9ybUNvdW50XywKKyAgICAic2V0TW90aW9uVHJh
bnNmb3JtQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNdXRhYmlsaXR5XywKKyAg
ICAic2V0TXV0YWJpbGl0eToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE5hbWVfLAorICAg
ICJzZXROYW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Tm9kZXNfLAorICAgICJzZXRO
b2RlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE5vcm1hbGl6ZWRDb29yZGluYXRlc18s
CisgICAgInNldE5vcm1hbGl6ZWRDb29yZGluYXRlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfLAorICAgICJzZXRPYmplY3Q6YXRJbmRleGVk
U3Vic2NyaXB0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T2Zmc2V0XywKKyAgICAic2V0
T2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3BhcXVlXywKKyAgICAic2V0T3Bh
cXVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rp
b25GdW5jdGlvbldpdGhTaWduYXR1cmVfYXRJbmRleF8sCisgICAgInNldE9wYXF1ZVRyaWFuZ2xl
SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aFNpZ25h
dHVyZV93aXRoUmFuZ2VfLAorICAgICJzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0
aW9uV2l0aFNpZ25hdHVyZTp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRP
cHRpb25zXywKKyAgICAic2V0T3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE91
dHB1dE5vZGVfLAorICAgICJzZXRPdXRwdXROb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0T3V0cHV0VVJMXywKKyAgICAic2V0T3V0cHV0VVJMOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0UGl4ZWxGb3JtYXRfLAorICAgICJzZXRQaXhlbEZvcm1hdDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFByZWxvYWRlZExpYnJhcmllc18sCisgICAgInNldFByZWxvYWRlZExpYnJh
cmllczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFByZXByb2Nlc3Nvck1hY3Jvc18sCisg
ICAgInNldFByZXByb2Nlc3Nvck1hY3JvczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFBy
ZXNlcnZlSW52YXJpYW5jZV8sCisgICAgInNldFByZXNlcnZlSW52YXJpYW5jZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFByaXZhdGVGdW5jdGlvbnNfLAorICAgICJzZXRQcml2YXRlRnVu
Y3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UHVyZ2VhYmxlU3RhdGVfLAorICAg
ICJzZXRQdXJnZWFibGVTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJBZGRyZXNz
TW9kZV8sCisgICAgInNldFJBZGRyZXNzTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFJhc3RlclNhbXBsZUNvdW50XywKKyAgICAic2V0UmFzdGVyU2FtcGxlQ291bnQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRSYXN0ZXJpemF0aW9uRW5hYmxlZF8sCisgICAgInNldFJhc3Rl
cml6YXRpb25FbmFibGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmFzdGVyaXphdGlv
blJhdGVNYXBfLAorICAgICJzZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFJlYWRNYXNrXywKKyAgICAic2V0UmVhZE1hc2s6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRSZW5kZXJQaXBlbGluZVN0YXRlXywKKyAgICAic2V0UmVuZGVyUGlwZWxp
bmVTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlbmRlclBpcGVsaW5lU3RhdGVf
YXRJbmRleF8sCisgICAgInNldFJlbmRlclBpcGVsaW5lU3RhdGU6YXRJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFJlbmRlclBpcGVsaW5lU3RhdGVzX3dpdGhSYW5nZV8sCisgICAg
InNldFJlbmRlclBpcGVsaW5lU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoXywKKyAgICAic2V0UmVuZGVyVGFyZ2V0QXJy
YXlMZW5ndGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZW5kZXJUYXJnZXRIZWlnaHRf
LAorICAgICJzZXRSZW5kZXJUYXJnZXRIZWlnaHQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRSZW5kZXJUYXJnZXRXaWR0aF8sCisgICAgInNldFJlbmRlclRhcmdldFdpZHRoOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0UmVzb2x2ZURlcHRoUGxhbmVfLAorICAgICJzZXRSZXNvbHZl
RGVwdGhQbGFuZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlc29sdmVMZXZlbF8sCisg
ICAgInNldFJlc29sdmVMZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlc29sdmVT
bGljZV8sCisgICAgInNldFJlc29sdmVTbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFJlc29sdmVUZXh0dXJlXywKKyAgICAic2V0UmVzb2x2ZVRleHR1cmU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRSZXNvdXJjZU9wdGlvbnNfLAorICAgICJzZXRSZXNvdXJjZU9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZXRhaW5lZFJlZmVyZW5jZXNfLAorICAgICJz
ZXRSZXRhaW5lZFJlZmVyZW5jZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZ2JCbGVu
ZE9wZXJhdGlvbl8sCisgICAgInNldFJnYkJsZW5kT3BlcmF0aW9uOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U0FkZHJlc3NNb2RlXywKKyAgICAic2V0U0FkZHJlc3NNb2RlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlQnVmZmVyXywKKyAgICAic2V0U2FtcGxlQnVmZmVy
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlQ291bnRfLAorICAgICJzZXRTYW1w
bGVDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNhbXBsZVBvc2l0aW9uc19jb3Vu
dF8sCisgICAgInNldFNhbXBsZVBvc2l0aW9uczpjb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFNhbXBsZXJTdGF0ZV9hdEluZGV4XywKKyAgICAic2V0U2FtcGxlclN0YXRlOmF0SW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTYW1wbGVyU3RhdGVfbG9kTWluQ2xhbXBf
bG9kTWF4Q2xhbXBfYXRJbmRleF8sCisgICAgInNldFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDps
b2RNYXhDbGFtcDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlclN0
YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBzX3dpdGhSYW5nZV8sCisgICAgInNldFNhbXBs
ZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldFNhbXBs
ZXJTdGF0ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2Npc3NvclJl
Y3RfLAorICAgICJzZXRTY2lzc29yUmVjdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNj
aXNzb3JSZWN0c19jb3VudF8sCisgICAgInNldFNjaXNzb3JSZWN0czpjb3VudDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFNjcmVlblNpemVfLAorICAgICJzZXRTY3JlZW5TaXplOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2lnbmFsZWRWYWx1ZV8sCisgICAgInNldFNpZ25hbGVk
VmFsdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTaXplXywKKyAgICAic2V0U2l6ZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNsaWNlXywKKyAgICAic2V0U2xpY2U6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yXywKKyAgICAic2V0
U291cmNlQWxwaGFCbGVuZEZhY3RvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNvdXJj
ZVJHQkJsZW5kRmFjdG9yXywKKyAgICAic2V0U291cmNlUkdCQmxlbmRGYWN0b3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTcGVjaWFsaXplZE5hbWVfLAorICAgICJzZXRTcGVjaWFsaXpl
ZE5hbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGFnZUluUmVnaW9uXywKKyAgICAi
c2V0U3RhZ2VJblJlZ2lvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0YWdlSW5SZWdp
b25XaXRoSW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJzZXRTdGFn
ZUluUmVnaW9uV2l0aEluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0U3RhZ2VJbnB1dERlc2NyaXB0b3JfLAorICAgICJzZXRTdGFn
ZUlucHV0RGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0YXJ0T2ZFbmNv
ZGVyU2FtcGxlSW5kZXhfLAorICAgICJzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4OiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXhfLAorICAg
ICJzZXRTdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleF8sCisgICAgInNldFN0YXJ0T2ZWZXJ0ZXhTYW1w
bGVJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxBdHRhY2htZW50XywK
KyAgICAic2V0U3RlbmNpbEF0dGFjaG1lbnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRT
dGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0XywKKyAgICAic2V0U3RlbmNpbEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxDb21wYXJlRnVu
Y3Rpb25fLAorICAgICJzZXRTdGVuY2lsQ29tcGFyZUZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U3RlbmNpbEZhaWx1cmVPcGVyYXRpb25fLAorICAgICJzZXRTdGVuY2lsRmFp
bHVyZU9wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxGcm9udFJl
ZmVyZW5jZVZhbHVlX2JhY2tSZWZlcmVuY2VWYWx1ZV8sCisgICAgInNldFN0ZW5jaWxGcm9udFJl
ZmVyZW5jZVZhbHVlOmJhY2tSZWZlcmVuY2VWYWx1ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1ZV8sCisgICAgInNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxSZXNvbHZlRmlsdGVyXywKKyAg
ICAic2V0U3RlbmNpbFJlc29sdmVGaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRT
dGVuY2lsU3RvcmVBY3Rpb25fLAorICAgICJzZXRTdGVuY2lsU3RvcmVBY3Rpb246Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zXywKKyAgICAic2V0
U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0
ZXBGdW5jdGlvbl8sCisgICAgInNldFN0ZXBGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFN0ZXBSYXRlXywKKyAgICAic2V0U3RlcFJhdGU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRTdG9yYWdlTW9kZV8sCisgICAgInNldFN0b3JhZ2VNb2RlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0U3RvcmVBY3Rpb25fLAorICAgICJzZXRTdG9yZUFjdGlvbjoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFN0b3JlQWN0aW9uT3B0aW9uc18sCisgICAgInNldFN0b3Jl
QWN0aW9uT3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0cmlkZV8sCisgICAg
InNldFN0cmlkZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN1cHBvcnRBZGRpbmdCaW5h
cnlGdW5jdGlvbnNfLAorICAgICJzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rp
b25zXywKKyAgICAic2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9u
c18sCisgICAgInNldFN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzXywKKyAgICAic2V0U3Vw
cG9ydEFyZ3VtZW50QnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN1cHBvcnRJ
bmRpcmVjdENvbW1hbmRCdWZmZXJzXywKKyAgICAic2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1
ZmZlcnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTd2l6emxlXywKKyAgICAic2V0U3dp
enpsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRBZGRyZXNzTW9kZV8sCisgICAgInNl
dFRBZGRyZXNzTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbkNv
bnRyb2xQb2ludEluZGV4VHlwZV8sCisgICAgInNldFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludElu
ZGV4VHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvckJ1
ZmZlcl9vZmZzZXRfaW5zdGFuY2VTdHJpZGVfLAorICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JC
dWZmZXI6b2Zmc2V0Omluc3RhbmNlU3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0XywKKyAgICAic2V0VGVzc2VsbGF0aW9uRmFjdG9yRm9y
bWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVf
LAorICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZF8sCisgICAgInNldFRlc3NlbGxh
dGlvbkZhY3RvclNjYWxlRW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3Nl
bGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbl8sCisgICAgInNldFRlc3NlbGxhdGlvbkZhY3RvclN0
ZXBGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbk91dHB1
dFdpbmRpbmdPcmRlcl8sCisgICAgInNldFRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVfLAor
ICAgICJzZXRUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0VGV4dHVyZV8sCisgICAgInNldFRleHR1cmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRUZXh0dXJlOmF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRUZXh0dXJlVHlwZV8sCisgICAgInNldFRleHR1cmVUeXBlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGV4dHVyZXNfd2l0aFJhbmdlXywKKyAgICAic2V0
VGV4dHVyZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGhyZWFkR3Jv
dXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGhfLAorICAgICJzZXRUaHJlYWRH
cm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoXywKKyAgICAic2V0VGhyZWFkZ3Jv
dXBNZW1vcnlMZW5ndGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaHJlYWRncm91cE1l
bW9yeUxlbmd0aF9hdEluZGV4XywKKyAgICAic2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGg6YXRJ
bmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3Ro
X29mZnNldF9hdEluZGV4XywKKyAgICAic2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGg6b2Zmc2V0
OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaHJlYWRncm91cFNpemVNYXRj
aGVzVGlsZVNpemVfLAorICAgICJzZXRUaHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemU6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVm
ZmVySW5kZXhfLAorICAgICJzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVmZmVySW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0
aW9uc18sCisgICAgInNldFRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0VGlsZUJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8sCisgICAgInNldFRp
bGVCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxl
QnVmZmVyT2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRUaWxlQnVmZmVyT2Zmc2V0OmF0SW5kZXg6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQnVmZmVyc19vZmZzZXRzX3dpdGhSYW5n
ZV8sCisgICAgInNldFRpbGVCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0VGlsZUJ5dGVzX2xlbmd0aF9hdEluZGV4XywKKyAgICAic2V0VGlsZUJ5
dGVzOmxlbmd0aDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZUZ1bmN0
aW9uXywKKyAgICAic2V0VGlsZUZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VGlsZUhlaWdodF8sCisgICAgInNldFRpbGVIZWlnaHQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XywKKyAgICAi
c2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoQnVm
ZmVyUmFuZ2VfLAorICAgICJzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1
ZmZlclJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9h
dEluZGV4XywKKyAgICAic2V0VGlsZVNhbXBsZXJTdGF0ZTphdEluZGV4OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9h
dEluZGV4XywKKyAgICAic2V0VGlsZVNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RNYXhDbGFt
cDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZXNf
bG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfLAorICAgICJzZXRUaWxlU2FtcGxl
clN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldFRp
bGVTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRp
bGVUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRUaWxlVGV4dHVyZTphdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVRleHR1cmVzX3dpdGhSYW5nZV8sCisgICAgInNldFRp
bGVUZXh0dXJlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlVmlz
aWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldFRpbGVWaXNpYmxlRnVu
Y3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGls
ZVZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRUaWxlVmlz
aWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFRpbGVXaWR0aF8sCisgICAgInNldFRpbGVXaWR0aDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFRyaWFuZ2xlQ291bnRfLAorICAgICJzZXRUcmlhbmdsZUNvdW50OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VHJpYW5nbGVGaWxsTW9kZV8sCisgICAgInNldFRyaWFuZ2xl
RmlsbE1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUeXBlXywKKyAgICAic2V0VHlw
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFVybF8sCisgICAgInNldFVybDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFVzYWdlXywKKyAgICAic2V0VXNhZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZmZXJJbmRl
eF8sCisgICAgInNldFZlcnRleEFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9u
c18sCisgICAgInNldFZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfdmlld01hcHBpbmdzXywK
KyAgICAic2V0VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50OnZpZXdNYXBwaW5nczoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcl8sCisgICAgInNldFZlcnRleEJ1ZmZlcjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8s
CisgICAgInNldFZlcnRleEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFZlcnRleEJ1ZmZlck9mZnNldF8sCisgICAgInNldFZlcnRleEJ1ZmZlck9mZnNl
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlck9mZnNldF9hdEluZGV4
XywKKyAgICAic2V0VmVydGV4QnVmZmVyT2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRWZXJ0ZXhCdWZmZXJzXywKKyAgICAic2V0VmVydGV4QnVmZmVyczoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfLAor
ICAgICJzZXRWZXJ0ZXhCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0VmVydGV4Qnl0ZXNfbGVuZ3RoX2F0SW5kZXhfLAorICAgICJzZXRWZXJ0ZXhC
eXRlczpsZW5ndGg6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleERl
c2NyaXB0b3JfLAorICAgICJzZXRWZXJ0ZXhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0VmVydGV4RnVuY3Rpb25fLAorICAgICJzZXRWZXJ0ZXhGdW5jdGlvbjoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRC
dWZmZXJJbmRleF8sCisgICAgInNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRC
dWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldFZlcnRleEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFZlcnRleExpbmtlZEZ1bmN0aW9uc18sCisgICAgInNldFZlcnRleExpbmtlZEZ1bmN0
aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFByZWxvYWRlZExpYnJhcmll
c18sCisgICAgInNldFZlcnRleFByZWxvYWRlZExpYnJhcmllczoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZV9hdEluZGV4XywKKyAgICAic2V0VmVydGV4U2Ft
cGxlclN0YXRlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhTYW1w
bGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRleF8sCisgICAgInNldFZlcnRl
eFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RNYXhDbGFtcDphdEluZGV4OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4
Q2xhbXBzX3dpdGhSYW5nZV8sCisgICAgInNldFZlcnRleFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xh
bXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRW
ZXJ0ZXhTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldFZlcnRleFNhbXBsZXJTdGF0
ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U3RyaWRlXywK
KyAgICAic2V0VmVydGV4U3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4
VGV4dHVyZV9hdEluZGV4XywKKyAgICAic2V0VmVydGV4VGV4dHVyZTphdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4VGV4dHVyZXNfd2l0aFJhbmdlXywKKyAgICAic2V0
VmVydGV4VGV4dHVyZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVy
dGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldFZlcnRleFZp
c2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXywKKyAgICAi
c2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFZpZXdwb3J0XywKKyAgICAic2V0Vmlld3BvcnQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRWaWV3cG9ydHNfY291bnRfLAorICAgICJzZXRWaWV3cG9ydHM6
Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaXNpYmlsaXR5UmVzdWx0QnVmZmVy
XywKKyAgICAic2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFZpc2liaWxpdHlSZXN1bHRNb2RlX29mZnNldF8sCisgICAgInNldFZpc2liaWxpdHlS
ZXN1bHRNb2RlOm9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZpc2libGVGdW5j
dGlvblRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTph
dEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9u
VGFibGVfYXRJbmRleF8sCisgICAgInNldFZpc2libGVGdW5jdGlvblRhYmxlOmF0SW5kZXg6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZl
clJhbmdlXywKKyAgICAic2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZpc2libGVGdW5jdGlvblRhYmxlc193aXRoUmFu
Z2VfLAorICAgICJzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aFJhbmdlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0V2lkdGhfLAorICAgICJzZXRXaWR0aDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFdyaXRlTWFza18sCisgICAgInNldFdyaXRlTWFzazoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNoYXJlZENhcHR1cmVNYW5hZ2VyLAorICAgICJzaGFyZWRDYXB0dXJlTWFu
YWdlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2lnbmFsZWRWYWx1ZSwKKyAgICAic2lnbmFs
ZWRWYWx1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2l6ZSwKKyAgICAic2l6ZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2xpY2UsCisgICAgInNsaWNlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzb3VyY2VBbHBoYUJsZW5kRmFjdG9yLAorICAgICJzb3VyY2VBbHBoYUJsZW5kRmFjdG9y
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzb3VyY2VSR0JCbGVuZEZhY3RvciwKKyAgICAic291
cmNlUkdCQmxlbmRGYWN0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNwYXJzZVRpbGVTaXpl
SW5CeXRlcywKKyAgICAic3BhcnNlVGlsZVNpemVJbkJ5dGVzIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzcGFyc2VUaWxlU2l6ZVdpdGhUZXh0dXJlVHlwZV9waXhlbEZvcm1hdF9zYW1wbGVDb3Vu
dF8sCisgICAgInNwYXJzZVRpbGVTaXplV2l0aFRleHR1cmVUeXBlOnBpeGVsRm9ybWF0OnNhbXBs
ZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3BlY2lhbGl6ZWROYW1lLAorICAgICJz
cGVjaWFsaXplZE5hbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YWdlSW5wdXRBdHRyaWJ1
dGVzLAorICAgICJzdGFnZUlucHV0QXR0cmlidXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c3RhZ2VJbnB1dERlc2NyaXB0b3IsCisgICAgInN0YWdlSW5wdXREZXNjcmlwdG9yIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciwKKyAgICAic3RhZ2VJ
bnB1dE91dHB1dERlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YXJ0Q2FwdHVy
ZVdpdGhDb21tYW5kUXVldWVfLAorICAgICJzdGFydENhcHR1cmVXaXRoQ29tbWFuZFF1ZXVlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3JfZXJyb3Jf
LAorICAgICJzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHN0YXJ0Q2FwdHVyZVdpdGhEZXZpY2VfLAorICAgICJzdGFydENhcHR1cmVXaXRo
RGV2aWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRDYXB0dXJlV2l0aFNjb3BlXywK
KyAgICAic3RhcnRDYXB0dXJlV2l0aFNjb3BlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3Rh
cnRPZkVuY29kZXJTYW1wbGVJbmRleCwKKyAgICAic3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgsCisgICAg
InN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFy
dE9mVmVydGV4U2FtcGxlSW5kZXgsCisgICAgInN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgsCisgICAg
InN0YXRpY1RocmVhZGdyb3VwTWVtb3J5TGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dGF0dXMsCisgICAgInN0YXR1cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlbmNpbEF0dGFj
aG1lbnQsCisgICAgInN0ZW5jaWxBdHRhY2htZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0LAorICAgICJzdGVuY2lsQXR0YWNobWVudFBpeGVs
Rm9ybWF0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uLAor
ICAgICJzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGVu
Y2lsRmFpbHVyZU9wZXJhdGlvbiwKKyAgICAic3RlbmNpbEZhaWx1cmVPcGVyYXRpb24iKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHN0ZW5jaWxSZXNvbHZlRmlsdGVyLAorICAgICJzdGVuY2lsUmVz
b2x2ZUZpbHRlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlcEZ1bmN0aW9uLAorICAgICJz
dGVwRnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0ZXBSYXRlLAorICAgICJzdGVw
UmF0ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RvcENhcHR1cmUsCisgICAgInN0b3BDYXB0
dXJlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdG9yYWdlTW9kZSwKKyAgICAic3RvcmFnZU1v
ZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0b3JlQWN0aW9uLAorICAgICJzdG9yZUFjdGlv
biIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RvcmVBY3Rpb25PcHRpb25zLAorICAgICJzdG9y
ZUFjdGlvbk9wdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0cmlkZSwKKyAgICAic3Ry
aWRlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdHJ1Y3RUeXBlLAorICAgICJzdHJ1Y3RUeXBl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zLAor
ICAgICJzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMsCisgICAgInN1cHBvcnRBZGRp
bmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9y
dEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucywKKyAgICAic3VwcG9ydEFkZGluZ1ZlcnRleEJp
bmFyeUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydEFyZ3VtZW50QnVm
ZmVycywKKyAgICAic3VwcG9ydEFyZ3VtZW50QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMsCisgICAgInN1cHBvcnRJbmRpcmVjdENv
bW1hbmRCdWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0czMyQml0RmxvYXRG
aWx0ZXJpbmcsCisgICAgInN1cHBvcnRzMzJCaXRGbG9hdEZpbHRlcmluZyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc3VwcG9ydHMzMkJpdE1TQUEsCisgICAgInN1cHBvcnRzMzJCaXRNU0FBIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uLAorICAg
ICJzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dXBwb3J0c0NvdW50ZXJTYW1wbGluZ18sCisgICAgInN1cHBvcnRzQ291bnRlclNhbXBsaW5nOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNEZXN0aW5hdGlvbl8sCisgICAgInN1cHBv
cnRzRGVzdGluYXRpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c0R5bmFtaWNM
aWJyYXJpZXMsCisgICAgInN1cHBvcnRzRHluYW1pY0xpYnJhcmllcyIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc3VwcG9ydHNGYW1pbHlfLAorICAgICJzdXBwb3J0c0ZhbWlseToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzRmVhdHVyZVNldF8sCisgICAgInN1cHBvcnRzRmVhdHVy
ZVNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVycywK
KyAgICAic3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyLAorICAgICJzdXBwb3J0c0Z1bmN0aW9u
UG9pbnRlcnNGcm9tUmVuZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c1ByaW1p
dGl2ZU1vdGlvbkJsdXIsCisgICAgInN1cHBvcnRzUHJpbWl0aXZlTW90aW9uQmx1ciIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9uLAorICAgICJz
dXBwb3J0c1B1bGxNb2RlbEludGVycG9sYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1
cHBvcnRzUXVlcnlUZXh0dXJlTE9ELAorICAgICJzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhMYXll
ckNvdW50XywKKyAgICAic3VwcG9ydHNSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhMYXllckNvdW50
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNSYXl0cmFjaW5nLAorICAgICJzdXBw
b3J0c1JheXRyYWNpbmciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzUmF5dHJhY2lu
Z0Zyb21SZW5kZXIsCisgICAgInN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5kZXIiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzUmVuZGVyRHluYW1pY0xpYnJhcmllcywKKyAgICAic3Vw
cG9ydHNSZW5kZXJEeW5hbWljTGlicmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBw
b3J0c1NoYWRlckJhcnljZW50cmljQ29vcmRpbmF0ZXMsCisgICAgInN1cHBvcnRzU2hhZGVyQmFy
eWNlbnRyaWNDb29yZGluYXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNUZXh0
dXJlU2FtcGxlQ291bnRfLAorICAgICJzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzVmVydGV4QW1wbGlmaWNhdGlvbkNvdW50XywKKyAg
ICAic3VwcG9ydHNWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzd2l6emxlLAorICAgICJzd2l6emxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzeW5j
aHJvbml6ZVJlc291cmNlXywKKyAgICAic3luY2hyb25pemVSZXNvdXJjZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHN5bmNocm9uaXplVGV4dHVyZV9zbGljZV9sZXZlbF8sCisgICAgInN5bmNo
cm9uaXplVGV4dHVyZTpzbGljZTpsZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRBZGRy
ZXNzTW9kZSwKKyAgICAidEFkZHJlc3NNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0YWls
U2l6ZUluQnl0ZXMsCisgICAgInRhaWxTaXplSW5CeXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwodGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlLAorICAgICJ0ZXNzZWxsYXRpb25D
b250cm9sUG9pbnRJbmRleFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlv
bkZhY3RvckZvcm1hdCwKKyAgICAidGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTCh0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24sCisgICAgInRlc3Nl
bGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGVzc2Vs
bGF0aW9uT3V0cHV0V2luZGluZ09yZGVyLAorICAgICJ0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5n
T3JkZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUs
CisgICAgInRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHRleHR1cmUsCisgICAgInRleHR1cmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRleHR1cmUy
RERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXRfd2lkdGhfaGVpZ2h0X21pcG1hcHBlZF8sCisgICAg
InRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6d2lkdGg6aGVpZ2h0Om1pcG1hcHBl
ZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRleHR1cmVCYXJyaWVyLAorICAgICJ0ZXh0dXJl
QmFycmllciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZUJ1ZmZlckRlc2NyaXB0b3JX
aXRoUGl4ZWxGb3JtYXRfd2lkdGhfcmVzb3VyY2VPcHRpb25zX3VzYWdlXywKKyAgICAidGV4dHVy
ZUJ1ZmZlckRlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6d2lkdGg6cmVzb3VyY2VPcHRpb25zOnVz
YWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0aFBp
eGVsRm9ybWF0X3NpemVfbWlwbWFwcGVkXywKKyAgICAidGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0
aFBpeGVsRm9ybWF0OnNpemU6bWlwbWFwcGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4
dHVyZURhdGFUeXBlLAorICAgICJ0ZXh0dXJlRGF0YVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHRleHR1cmVSZWZlcmVuY2VUeXBlLAorICAgICJ0ZXh0dXJlUmVmZXJlbmNlVHlwZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZVR5cGUsCisgICAgInRleHR1cmVUeXBlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRFeGVjdXRpb25XaWR0aCwKKyAgICAidGhyZWFkRXhl
Y3V0aW9uV2lkdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRocmVhZEdyb3VwU2l6ZUlzTXVs
dGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoLAorICAgICJ0aHJlYWRHcm91cFNpemVJc011bHRp
cGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGhyZWFk
Z3JvdXBNZW1vcnlBbGlnbm1lbnQsCisgICAgInRocmVhZGdyb3VwTWVtb3J5QWxpZ25tZW50Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRncm91cE1lbW9yeURhdGFTaXplLAorICAgICJ0
aHJlYWRncm91cE1lbW9yeURhdGFTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRn
cm91cE1lbW9yeUxlbmd0aCwKKyAgICAidGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSwKKyAgICAidGhy
ZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aWxl
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywKKyAgICAidGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5j
dGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVBcmd1bWVudHMsCisgICAgInRpbGVB
cmd1bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVCdWZmZXJzLAorICAgICJ0aWxl
QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGlsZUZ1bmN0aW9uLAorICAgICJ0aWxl
RnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVIZWlnaHQsCisgICAgInRpbGVI
ZWlnaHQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVXaWR0aCwKKyAgICAidGlsZVdpZHRo
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0cmlhbmdsZUNvdW50LAorICAgICJ0cmlhbmdsZUNv
dW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0eXBlLAorICAgICJ0eXBlIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTCh1cGRhdGVGZW5jZV8sCisgICAgInVwZGF0ZUZlbmNlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodXBkYXRlRmVuY2VfYWZ0ZXJTdGFnZXNfLAorICAgICJ1cGRhdGVGZW5j
ZTphZnRlclN0YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVwZGF0ZVRleHR1cmVNYXBw
aW5nX21vZGVfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJ1cGRh
dGVUZXh0dXJlTWFwcGluZzptb2RlOmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXBkYXRlVGV4dHVyZU1hcHBpbmdfbW9kZV9yZWdp
b25fbWlwTGV2ZWxfc2xpY2VfLAorICAgICJ1cGRhdGVUZXh0dXJlTWFwcGluZzptb2RlOnJlZ2lv
bjptaXBMZXZlbDpzbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVwZGF0ZVRleHR1cmVN
YXBwaW5nc19tb2RlX3JlZ2lvbnNfbWlwTGV2ZWxzX3NsaWNlc19udW1SZWdpb25zXywKKyAgICAi
dXBkYXRlVGV4dHVyZU1hcHBpbmdzOm1vZGU6cmVnaW9uczptaXBMZXZlbHM6c2xpY2VzOm51bVJl
Z2lvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1cmwsCisgICAgInVybCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodXNhZ2UsCisgICAgInVzYWdlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TCh1c2VIZWFwXywKKyAgICAidXNlSGVhcDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZUhl
YXBfc3RhZ2VzXywKKyAgICAidXNlSGVhcDpzdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TCh1c2VIZWFwc19jb3VudF8sCisgICAgInVzZUhlYXBzOmNvdW50OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwodXNlSGVhcHNfY291bnRfc3RhZ2VzXywKKyAgICAidXNlSGVhcHM6Y291bnQ6c3Rh
Z2VzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlUmVzb3VyY2VfdXNhZ2VfLAorICAgICJ1
c2VSZXNvdXJjZTp1c2FnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZVJlc291cmNlX3Vz
YWdlX3N0YWdlc18sCisgICAgInVzZVJlc291cmNlOnVzYWdlOnN0YWdlczoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHVzZVJlc291cmNlc19jb3VudF91c2FnZV8sCisgICAgInVzZVJlc291cmNl
czpjb3VudDp1c2FnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZVJlc291cmNlc19jb3Vu
dF91c2FnZV9zdGFnZXNfLAorICAgICJ1c2VSZXNvdXJjZXM6Y291bnQ6dXNhZ2U6c3RhZ2VzOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlZFNpemUsCisgICAgInVzZWRTaXplIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLAorICAgICJ2
ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2
ZXJ0ZXhBcmd1bWVudHMsCisgICAgInZlcnRleEFyZ3VtZW50cyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodmVydGV4QXR0cmlidXRlcywKKyAgICAidmVydGV4QXR0cmlidXRlcyIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodmVydGV4QnVmZmVyLAorICAgICJ2ZXJ0ZXhCdWZmZXIiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHZlcnRleEJ1ZmZlck9mZnNldCwKKyAgICAidmVydGV4QnVmZmVyT2Zm
c2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhCdWZmZXJzLAorICAgICJ2ZXJ0ZXhC
dWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhEZXNjcmlwdG9yLAorICAgICJ2
ZXJ0ZXhEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhGdW5jdGlvbiwK
KyAgICAidmVydGV4RnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleExpbmtl
ZEZ1bmN0aW9ucywKKyAgICAidmVydGV4TGlua2VkRnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTCh2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMsCisgICAgInZlcnRleFByZWxvYWRlZExp
YnJhcmllcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGV4U3RyaWRlLAorICAgICJ2ZXJ0
ZXhTdHJpZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRpY2FsLAorICAgICJ2ZXJ0aWNh
bCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGljYWxTYW1wbGVTdG9yYWdlLAorICAgICJ2
ZXJ0aWNhbFNhbXBsZVN0b3JhZ2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZpc2liaWxpdHlS
ZXN1bHRCdWZmZXIsCisgICAgInZpc2liaWxpdHlSZXN1bHRCdWZmZXIiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciwKKyAgICAidmlzaWJsZUZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0Rm9yRmVu
Y2VfLAorICAgICJ3YWl0Rm9yRmVuY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0Rm9y
RmVuY2VfYmVmb3JlU3RhZ2VzXywKKyAgICAid2FpdEZvckZlbmNlOmJlZm9yZVN0YWdlczoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHdhaXRVbnRpbENvbXBsZXRlZCwKKyAgICAid2FpdFVudGls
Q29tcGxldGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0VW50aWxTY2hlZHVsZWQsCisg
ICAgIndhaXRVbnRpbFNjaGVkdWxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwod2lkdGgsCisg
ICAgIndpZHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3cml0ZUNvbXBhY3RlZEFjY2VsZXJh
dGlvblN0cnVjdHVyZVNpemVfdG9CdWZmZXJfb2Zmc2V0XywKKyAgICAid3JpdGVDb21wYWN0ZWRB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZV90b0J1ZmZl
cl9vZmZzZXRfc2l6ZURhdGFUeXBlXywKKyAgICAid3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDpzaXplRGF0YVR5cGU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTCh3cml0ZU1hc2ssCisgICAgIndyaXRlTWFzayIpOworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWIyYzNlMTJmZTQ4MDc5YmU5NDBhYjgzZTI2OWQ4YmJmMTVlNTljMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFwLmhwcApAQCAt
MCwwICsxLDI4MiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWV0YWwvTVRMSGVhcC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNs
dWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisj
aW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEhlYXAu
aHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01U
TF9FTlVNKE5TOjpJbnRlZ2VyLCBIZWFwVHlwZSkgeworICAgIEhlYXBUeXBlQXV0b21hdGljID0g
MCwKKyAgICBIZWFwVHlwZVBsYWNlbWVudCA9IDEsCisgICAgSGVhcFR5cGVTcGFyc2UgPSAyLAor
fTsKKworY2xhc3MgSGVhcERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SGVhcERlc2Ny
aXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEhlYXBEZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgSGVhcERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgIHNpemUoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFNpemUoTlM6OlVJbnRlZ2VyIHNpemUpOworCisgICAgTVRM
OjpTdG9yYWdlTW9kZSAgICAgICAgICAgICBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBz
dG9yYWdlTW9kZSk7CisKKyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAgICAgICAgIGNwdUNhY2hl
TW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3B1Q2Fj
aGVNb2RlKE1UTDo6Q1BVQ2FjaGVNb2RlIGNwdUNhY2hlTW9kZSk7CisKKyAgICBNVEw6OkhhemFy
ZFRyYWNraW5nTW9kZSAgICAgIGhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGF6YXJkVHJhY2tpbmdNb2RlKE1UTDo6SGF6YXJk
VHJhY2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSk7CisKKyAgICBNVEw6OlJlc291cmNlT3B0
aW9ucyAgICAgICAgIHJlc291cmNlT3B0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0UmVzb3VyY2VPcHRpb25zKE1UTDo6UmVzb3VyY2VPcHRpb25zIHJl
c291cmNlT3B0aW9ucyk7CisKKyAgICBNVEw6OkhlYXBUeXBlICAgICAgICAgICAgICAgIHR5cGUo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldFR5cGUoTVRMOjpI
ZWFwVHlwZSB0eXBlKTsKK307CisKK2NsYXNzIEhlYXAgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5n
PEhlYXA+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgbGFiZWwoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCk7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgICBkZXZpY2UoKSBjb25z
dDsKKworICAgIE1UTDo6U3RvcmFnZU1vZGUgICAgICAgIHN0b3JhZ2VNb2RlKCkgY29uc3Q7CisK
KyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAgICBjcHVDYWNoZU1vZGUoKSBjb25zdDsKKworICAg
IE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0OworCisg
ICAgTVRMOjpSZXNvdXJjZU9wdGlvbnMgICAgcmVzb3VyY2VPcHRpb25zKCkgY29uc3Q7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICBzaXplKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICB1c2VkU2l6ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgY3VycmVudEFsbG9jYXRlZFNpemUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgIG1heEF2YWlsYWJsZVNpemUoTlM6OlVJbnRlZ2VyIGFsaWdubWVudCk7CisKKyAg
ICBjbGFzcyBCdWZmZXIqICAgICAgICAgICBuZXdCdWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0aCwg
TVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAg
ICAgICBuZXdUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjKTsKKwor
ICAgIE1UTDo6UHVyZ2VhYmxlU3RhdGUgICAgIHNldFB1cmdlYWJsZVN0YXRlKE1UTDo6UHVyZ2Vh
YmxlU3RhdGUgc3RhdGUpOworCisgICAgTVRMOjpIZWFwVHlwZSAgICAgICAgICAgdHlwZSgpIGNv
bnN0OworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgbmV3QnVmZmVyKE5TOjpVSW50ZWdl
ciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMsIE5TOjpVSW50ZWdlciBvZmZz
ZXQpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgbmV3VGV4dHVyZShjb25zdCBjbGFz
cyBUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG9mZnNldCk7Cit9
OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkhlYXBE
ZXNjcmlwdG9yKiBNVEw6OkhlYXBEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6SGVhcERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRM
SGVhcERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OkhlYXBEZXNjcmlwdG9yKiBNVEw6OkhlYXBEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkhlYXBEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9w
ZXJ0eTogc2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SGVhcERlc2NyaXB0b3I6
OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzaXplKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0U2l6ZShOUzo6VUludGVnZXIgc2l6ZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2l6
ZV8pLCBzaXplKTsKK30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VNb2RlCitfTVRMX0lOTElORSBN
VEw6OlN0b3JhZ2VNb2RlIE1UTDo6SGVhcERlc2NyaXB0b3I6OnN0b3JhZ2VNb2RlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JhZ2VNb2RlPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN0b3JhZ2VNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBzdG9y
YWdlTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0U3RvcmFnZU1vZGVfKSwgc3RvcmFnZU1vZGUpOworfQorCisvLyBwcm9wZXJ0
eTogY3B1Q2FjaGVNb2RlCitfTVRMX0lOTElORSBNVEw6OkNQVUNhY2hlTW9kZSBNVEw6OkhlYXBE
ZXNjcmlwdG9yOjpjcHVDYWNoZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6Q1BVQ2FjaGVNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNwdUNh
Y2hlTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6OnNl
dENwdUNhY2hlTW9kZShNVEw6OkNQVUNhY2hlTW9kZSBjcHVDYWNoZU1vZGUpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENwdUNhY2hl
TW9kZV8pLCBjcHVDYWNoZU1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogaGF6YXJkVHJhY2tpbmdN
b2RlCitfTVRMX0lOTElORSBNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBNVEw6OkhlYXBEZXNjcmlw
dG9yOjpoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGhhemFyZFRyYWNraW5nTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERl
c2NyaXB0b3I6OnNldEhhemFyZFRyYWNraW5nTW9kZShNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBo
YXphcmRUcmFja2luZ01vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEhhemFyZFRyYWNraW5nTW9kZV8pLCBoYXphcmRUcmFja2lu
Z01vZGUpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb3VyY2VPcHRpb25zCitfTVRMX0lOTElORSBN
VEw6OlJlc291cmNlT3B0aW9ucyBNVEw6OkhlYXBEZXNjcmlwdG9yOjpyZXNvdXJjZU9wdGlvbnMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VP
cHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc291cmNlT3B0aW9ucykpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6OnNldFJlc291cmNlT3B0aW9ucyhN
VEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc291cmNlT3B0aW9uc18p
LCByZXNvdXJjZU9wdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogdHlwZQorX01UTF9JTkxJTkUg
TVRMOjpIZWFwVHlwZSBNVEw6OkhlYXBEZXNjcmlwdG9yOjp0eXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkhlYXBUeXBlPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXBEZXNjcmlwdG9y
OjpzZXRUeXBlKE1UTDo6SGVhcFR5cGUgdHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHlwZV8pLCB0eXBlKTsKK30KKworLy8g
cHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkhlYXA6OmxhYmVs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6SGVhcDo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxh
YmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2Uq
IE1UTDo6SGVhcDo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBzdG9yYWdlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTdG9yYWdlTW9kZSBN
VEw6OkhlYXA6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlN0b3JhZ2VNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3JhZ2VN
b2RlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjcHVDYWNoZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6
Q1BVQ2FjaGVNb2RlIE1UTDo6SGVhcDo6Y3B1Q2FjaGVNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNQVUNhY2hlTW9kZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChjcHVDYWNoZU1vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IGhhemFyZFRyYWNraW5n
TW9kZQorX01UTF9JTkxJTkUgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgTVRMOjpIZWFwOjpoYXph
cmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhhemFyZFRy
YWNraW5nTW9kZSkpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb3VyY2VPcHRpb25zCitfTVRMX0lO
TElORSBNVEw6OlJlc291cmNlT3B0aW9ucyBNVEw6OkhlYXA6OnJlc291cmNlT3B0aW9ucygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZU9wdGlv
bnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzb3VyY2VPcHRpb25zKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBzaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpIZWFwOjpzaXplKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2l6ZSkpOworfQorCisvLyBwcm9wZXJ0eTogdXNlZFNpemUK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkhlYXA6OnVzZWRTaXplKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodXNlZFNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IGN1cnJlbnRBbGxvY2F0
ZWRTaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpIZWFwOjpjdXJyZW50QWxsb2Nh
dGVkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGN1cnJlbnRBbGxvY2F0ZWRTaXplKSk7Cit9
CisKKy8vIG1ldGhvZDogbWF4QXZhaWxhYmxlU2l6ZVdpdGhBbGlnbm1lbnQ6CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpIZWFwOjptYXhBdmFpbGFibGVTaXplKE5TOjpVSW50ZWdlciBh
bGlnbm1lbnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heEF2YWlsYWJsZVNpemVXaXRoQWxpZ25tZW50Xyks
IGFsaWdubWVudCk7Cit9CisKKy8vIG1ldGhvZDogbmV3QnVmZmVyV2l0aExlbmd0aDpvcHRpb25z
OgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6SGVhcDo6bmV3QnVmZmVyKE5TOjpVSW50
ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9uc18pLCBsZW5ndGgsIG9wdGlvbnMpOworfQorCisv
LyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6VGV4
dHVyZSogTVRMOjpIZWFwOjpuZXdUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3Iq
IGRlc2MpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3JfKSwgZGVzYyk7
Cit9CisKKy8vIG1ldGhvZDogc2V0UHVyZ2VhYmxlU3RhdGU6CitfTVRMX0lOTElORSBNVEw6OlB1
cmdlYWJsZVN0YXRlIE1UTDo6SGVhcDo6c2V0UHVyZ2VhYmxlU3RhdGUoTVRMOjpQdXJnZWFibGVT
dGF0ZSBzdGF0ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlB1cmdl
YWJsZVN0YXRlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFB1cmdlYWJsZVN0YXRlXyksIHN0
YXRlKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5MSU5FIE1UTDo6SGVhcFR5cGUg
TVRMOjpIZWFwOjp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkhlYXBUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8g
bWV0aG9kOiBuZXdCdWZmZXJXaXRoTGVuZ3RoOm9wdGlvbnM6b2Zmc2V0OgorX01UTF9JTkxJTkUg
TVRMOjpCdWZmZXIqIE1UTDo6SGVhcDo6bmV3QnVmZmVyKE5TOjpVSW50ZWdlciBsZW5ndGgsIE1U
TDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMsIE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9uc19vZmZzZXRfKSwgbGVuZ3RoLCBvcHRp
b25zLCBvZmZzZXQpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjpv
ZmZzZXQ6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6SGVhcDo6bmV3VGV4dHVyZShj
b25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6VUludGVnZXIgb2Zm
c2V0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yX29mZnNldF8pLCBk
ZXNjcmlwdG9yLCBvZmZzZXQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YWEzYTM1OTc3YjAxZTJiMDBiMjZhMThhOTUyNzM0ZDU1MzdhZDUxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTElu
ZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAKQEAgLTAsMCArMSwxODkgQEAKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEluZGlyZWN0
Q29tbWFuZEJ1ZmZlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFuZEJ1
ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7
CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBJbmRpcmVjdENvbW1hbmRUeXBlKSB7CisgICAg
SW5kaXJlY3RDb21tYW5kVHlwZURyYXcgPSAxLAorICAgIEluZGlyZWN0Q29tbWFuZFR5cGVEcmF3
SW5kZXhlZCA9IDIsCisgICAgSW5kaXJlY3RDb21tYW5kVHlwZURyYXdQYXRjaGVzID0gNCwKKyAg
ICBJbmRpcmVjdENvbW1hbmRUeXBlRHJhd0luZGV4ZWRQYXRjaGVzID0gOCwKKyAgICBJbmRpcmVj
dENvbW1hbmRUeXBlQ29uY3VycmVudERpc3BhdGNoID0gMzIsCisgICAgSW5kaXJlY3RDb21tYW5k
VHlwZUNvbmN1cnJlbnREaXNwYXRjaFRocmVhZHMgPSA2NCwKK307CisKK3N0cnVjdCBJbmRpcmVj
dENvbW1hbmRCdWZmZXJFeGVjdXRpb25SYW5nZQoreworICAgIHVpbnQzMl90IGxvY2F0aW9uOwor
ICAgIHVpbnQzMl90IGxlbmd0aDsKK30gX01UTF9QQUNLRUQ7CisKK2NsYXNzIEluZGlyZWN0Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SW5kaXJlY3RDb21tYW5k
QnVmZmVyRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgSW5kaXJlY3RD
b21tYW5kQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEluZGlyZWN0Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkluZGlyZWN0
Q29tbWFuZFR5cGUgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZFR5cGVzKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbW1h
bmRUeXBlcyhNVEw6OkluZGlyZWN0Q29tbWFuZFR5cGUgY29tbWFuZFR5cGVzKTsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0UGlwZWxp
bmVTdGF0ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZShib29sIGluaGVyaXRQaXBlbGluZVN0
YXRlKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmhlcml0QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRJbmhlcml0QnVmZmVycyhib29sIGluaGVyaXRCdWZmZXJz
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4VmVydGV4QnVmZmVyQmluZENvdW50KE5T
OjpVSW50ZWdlciBtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEZyYWdtZW50QnVmZmVyQmluZENv
dW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldE1heEZyYWdtZW50QnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhGcmFn
bWVudEJ1ZmZlckJpbmRDb3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heEtlcm5l
bEJ1ZmZlckJpbmRDb3VudChOUzo6VUludGVnZXIgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KTsK
K307CisKK2NsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNp
bmc8SW5kaXJlY3RDb21tYW5kQnVmZmVyLCBSZXNvdXJjZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICBzaXplKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNldChOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgY2xhc3Mg
SW5kaXJlY3RSZW5kZXJDb21tYW5kKiAgaW5kaXJlY3RSZW5kZXJDb21tYW5kKE5TOjpVSW50ZWdl
ciBjb21tYW5kSW5kZXgpOworCisgICAgY2xhc3MgSW5kaXJlY3RDb21wdXRlQ29tbWFuZCogaW5k
aXJlY3RDb21wdXRlQ29tbWFuZChOUzo6VUludGVnZXIgY29tbWFuZEluZGV4KTsKK307CisKK30K
KworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6SW5kaXJlY3RDb21t
YW5kQnVmZmVyRGVzY3JpcHRvciogTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9y
OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6SW5kaXJlY3RD
b21tYW5kQnVmZmVyRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExJbmRpcmVjdENvbW1h
bmRCdWZmZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OkluZGlyZWN0Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0
PE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVy
dHk6IGNvbW1hbmRUeXBlcworX01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdENvbW1hbmRUeXBlIE1U
TDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6Y29tbWFuZFR5cGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGlyZWN0Q29tbWFuZFR5
cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZFR5cGVzKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRDb21tYW5k
VHlwZXMoTVRMOjpJbmRpcmVjdENvbW1hbmRUeXBlIGNvbW1hbmRUeXBlcykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tbWFuZFR5
cGVzXyksIGNvbW1hbmRUeXBlcyk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmhlcml0UGlwZWxpbmVT
dGF0ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0
b3I6OmluaGVyaXRQaXBlbGluZVN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluaGVyaXRQaXBlbGluZVN0
YXRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJE
ZXNjcmlwdG9yOjpzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZShib29sIGluaGVyaXRQaXBlbGluZVN0
YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZV8pLCBpbmhlcml0UGlwZWxpbmVTdGF0ZSk7Cit9
CisKKy8vIHByb3BlcnR5OiBpbmhlcml0QnVmZmVycworX01UTF9JTkxJTkUgYm9vbCBNVEw6Oklu
ZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmluaGVyaXRCdWZmZXJzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluaGVyaXRCdWZmZXJzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVj
dENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRJbmhlcml0QnVmZmVycyhib29sIGluaGVyaXRC
dWZmZXJzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRJbmhlcml0QnVmZmVyc18pLCBpbmhlcml0QnVmZmVycyk7Cit9CisKKy8vIHBy
b3BlcnR5OiBtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6Om1heFZlcnRleEJ1ZmZlckJp
bmRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFZlcnRleEJ1ZmZlckJpbmRDb3VudCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3Jp
cHRvcjo6c2V0TWF4VmVydGV4QnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhWZXJ0ZXhC
dWZmZXJCaW5kQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldE1heFZlcnRleEJ1ZmZlckJpbmRDb3VudF8pLCBtYXhWZXJ0ZXhC
dWZmZXJCaW5kQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogbWF4RnJhZ21lbnRCdWZmZXJCaW5k
Q291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZl
ckRlc2NyaXB0b3I6Om1heEZyYWdtZW50QnVmZmVyQmluZENvdW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNldE1heEZyYWdtZW50QnVm
ZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
TWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnRfKSwgbWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQp
OworfQorCisvLyBwcm9wZXJ0eTogbWF4S2VybmVsQnVmZmVyQmluZENvdW50CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjptYXhL
ZXJuZWxCdWZmZXJCaW5kQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhLZXJuZWxCdWZm
ZXJCaW5kQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3I6OnNldE1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudChOUzo6VUludGVn
ZXIgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhLZXJuZWxCdWZmZXJCaW5kQ291bnRf
KSwgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHNpemUKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlcjo6c2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNpemUpKTsKK30KKworLy8gbWV0aG9kOiByZXNldFdpdGhS
YW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXI6OnJlc2V0
KE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwocmVzZXRXaXRoUmFuZ2VfKSwgcmFuZ2UpOworfQorCisvLyBtZXRo
b2Q6IGluZGlyZWN0UmVuZGVyQ29tbWFuZEF0SW5kZXg6CitfTVRMX0lOTElORSBNVEw6OkluZGly
ZWN0UmVuZGVyQ29tbWFuZCogTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXI6OmluZGlyZWN0UmVu
ZGVyQ29tbWFuZChOUzo6VUludGVnZXIgY29tbWFuZEluZGV4KQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChpbmRpcmVjdFJlbmRlckNvbW1hbmRBdEluZGV4XyksIGNvbW1hbmRJbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogaW5kaXJlY3RDb21wdXRlQ29tbWFuZEF0SW5kZXg6CitfTVRMX0lO
TElORSBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQqIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVm
ZmVyOjppbmRpcmVjdENvbXB1dGVDb21tYW5kKE5TOjpVSW50ZWdlciBjb21tYW5kSW5kZXgpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRpcmVjdENvbXB1dGVDb21t
YW5kKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRpcmVjdENvbXB1dGVDb21tYW5kQXRJbmRl
eF8pLCBjb21tYW5kSW5kZXgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA2ZDUyZmQ3ZGNlMTIxNmZhNDcwZWYyOThiYWQwMWZkMzBhNjE3NDgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
SW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSwxODcgQEAKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEluZGly
ZWN0Q29tbWFuZEVuY29kZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJ
bmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRM
SGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZW5kZXJDb21tYW5k
RW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBw
IgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgSW5k
aXJlY3RSZW5kZXJDb21tYW5kIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxJbmRpcmVjdFJlbmRl
ckNvbW1hbmQ+Cit7CitwdWJsaWM6CisgICAgdm9pZCBzZXRSZW5kZXJQaXBlbGluZVN0YXRlKGNv
bnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lU3RhdGUpOworCisgICAgdm9p
ZCBzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdl
ciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldEZyYWdtZW50QnVm
ZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6
VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVt
YmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUlu
dGVnZXIgcGF0Y2hDb3VudCwgY29uc3QgY2xhc3MgQnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBO
Uzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNl
Q291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UsIGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVm
ZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VTdHJpZGUpOwor
CisgICAgdm9pZCBkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hD
b250cm9sUG9pbnRzLCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNo
Q291bnQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogY29udHJvbFBvaW50
SW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UsIGNv
bnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVn
ZXIgaW5zdGFuY2VTdHJpZGUpOworCisgICAgdm9pZCBkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1p
dGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUlu
dGVnZXIgdmVydGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVn
ZXIgYmFzZUluc3RhbmNlKTsKKworICAgIHZvaWQgZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6
UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRM
OjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyLCBO
Uzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50
LCBOUzo6SW50ZWdlciBiYXNlVmVydGV4LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKTsKKwor
ICAgIHZvaWQgcmVzZXQoKTsKK307CisKK2NsYXNzIEluZGlyZWN0Q29tcHV0ZUNvbW1hbmQgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPEluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ+Cit7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlw
ZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSk7CisKKyAgICB2b2lkIHNldEtlcm5lbEJ1ZmZlcihj
b25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRl
Z2VyIGluZGV4KTsKKworICAgIHZvaWQgY29uY3VycmVudERpc3BhdGNoVGhyZWFkZ3JvdXBzKE1U
TDo6U2l6ZSB0aHJlYWRncm91cHNQZXJHcmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdy
b3VwKTsKKworICAgIHZvaWQgY29uY3VycmVudERpc3BhdGNoVGhyZWFkcyhNVEw6OlNpemUgdGhy
ZWFkc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworCisgICAgdm9p
ZCBzZXRCYXJyaWVyKCk7CisKKyAgICB2b2lkIGNsZWFyQmFycmllcigpOworCisgICAgdm9pZCBz
ZXRJbWFnZWJsb2NrV2lkdGgoTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0
KTsKKworICAgIHZvaWQgcmVzZXQoKTsKKworICAgIHZvaWQgc2V0VGhyZWFkZ3JvdXBNZW1vcnlM
ZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZv
aWQgc2V0U3RhZ2VJblJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24pOworfTsKKworfQorCisvLyBt
ZXRob2Q6IHNldFJlbmRlclBpcGVsaW5lU3RhdGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5k
aXJlY3RSZW5kZXJDb21tYW5kOjpzZXRSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6UmVu
ZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZV8p
LCBwaXBlbGluZVN0YXRlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhCdWZmZXI6b2Zmc2V0
OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kOjpz
ZXRWZXJ0ZXhCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJfb2Zmc2V0X2F0SW5kZXhf
KSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEJ1
ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJlbmRl
ckNvbW1hbmQ6OnNldEZyYWdtZW50QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5T
OjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRCdWZmZXJf
b2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBkcmF3UGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRj
aEluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOnRlc3NlbGxhdGlv
bkZhY3RvckJ1ZmZlcjp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXQ6dGVzc2VsbGF0aW9u
RmFjdG9yQnVmZmVySW5zdGFuY2VTdHJpZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJl
Y3RSZW5kZXJDb21tYW5kOjpkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENv
bnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVnZXIgcGF0Y2hD
b3VudCwgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBw
YXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJ
bnRlZ2VyIGJhc2VJbnN0YW5jZSwgY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3UGF0Y2hlc19wYXRj
aFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0
X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlX3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcl90ZXNz
ZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXRfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVySW5zdGFu
Y2VTdHJpZGVfKSwgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIHBhdGNoU3RhcnQsIHBhdGNo
Q291bnQsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNl
Q291bnQsIGJhc2VJbnN0YW5jZSwgYnVmZmVyLCBvZmZzZXQsIGluc3RhbmNlU3RyaWRlKTsKK30K
KworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENvdW50OnBh
dGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1
ZmZlcjpjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VJbnN0
YW5jZTp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXI6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zm
c2V0OnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3RhbmNlU3RyaWRlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6ZHJhd0luZGV4ZWRQYXRjaGVzKE5TOjpV
SW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRlZ2VyIHBhdGNoU3Rh
cnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBNVEw6OkJ1ZmZlciogcGF0Y2hJbmRl
eEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IE1UTDo6
QnVmZmVyKiBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvbnRyb2xQb2lu
dEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRl
Z2VyIGJhc2VJbnN0YW5jZSwgY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFBhdGNoZXNf
cGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZlck9m
ZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9jb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNl
dF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJfdGVz
c2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0X3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3Rh
bmNlU3RyaWRlXyksIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBwYXRjaFN0YXJ0LCBwYXRj
aENvdW50LCBwYXRjaEluZGV4QnVmZmVyLCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb250cm9s
UG9pbnRJbmRleEJ1ZmZlciwgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNl
Q291bnQsIGJhc2VJbnN0YW5jZSwgYnVmZmVyLCBvZmZzZXQsIGluc3RhbmNlU3RyaWRlKTsKK30K
KworLy8gbWV0aG9kOiBkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDppbnN0
YW5jZUNvdW50OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJl
bmRlckNvbW1hbmQ6OmRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVU
eXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRy
YXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50X2luc3RhbmNlQ291bnRfYmFzZUlu
c3RhbmNlXyksIHByaW1pdGl2ZVR5cGUsIHZlcnRleFN0YXJ0LCB2ZXJ0ZXhDb3VudCwgaW5zdGFu
Y2VDb3VudCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFByaW1p
dGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6
aW5zdGFuY2VDb3VudDpiYXNlVmVydGV4OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQ6OmRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlBy
aW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6
SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6
VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBO
Uzo6SW50ZWdlciBiYXNlVmVydGV4LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5k
ZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZm
ZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlVmVydGV4X2Jhc2VJbnN0YW5jZV8pLCBwcmltaXRp
dmVUeXBlLCBpbmRleENvdW50LCBpbmRleFR5cGUsIGluZGV4QnVmZmVyLCBpbmRleEJ1ZmZlck9m
ZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZVZlcnRleCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8g
bWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFu
ZDo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChyZXNldCkpOworfQorCisvLyBtZXRob2Q6IHNldENvbXB1dGVQaXBlbGluZVN0
YXRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnNldENv
bXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBpcGVs
aW5lU3RhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldENvbXB1dGVQaXBlbGluZVN0YXRlXyksIHBpcGVsaW5lU3RhdGUpOworfQor
CisvLyBtZXRob2Q6IHNldEtlcm5lbEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRLZXJuZWxCdWZmZXIoY29uc3Qg
TVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRLZXJuZWxCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGlu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRncm91cHM6dGhy
ZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0
ZUNvbW1hbmQ6OmNvbmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3VwcyhNVEw6OlNpemUgdGhyZWFk
Z3JvdXBzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29uY3VycmVu
dERpc3BhdGNoVGhyZWFkZ3JvdXBzX3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCB0aHJlYWRncm91
cHNQZXJHcmlkLCB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IGNvbmN1
cnJlbnREaXNwYXRjaFRocmVhZHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OmNvbmN1cnJlbnREaXNwYXRjaFRocmVh
ZHMoTVRMOjpTaXplIHRocmVhZHNQZXJHcmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdy
b3VwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCB0
aHJlYWRzUGVyR3JpZCwgdGhyZWFkc1BlclRocmVhZGdyb3VwKTsKK30KKworLy8gbWV0aG9kOiBz
ZXRCYXJyaWVyCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6
c2V0QmFycmllcigpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEJhcnJpZXIpKTsKK30KKworLy8gbWV0aG9kOiBjbGVhckJhcnJpZXIK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpjbGVhckJhcnJp
ZXIoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChjbGVhckJhcnJpZXIpKTsKK30KKworLy8gbWV0aG9kOiBzZXRJbWFnZWJsb2NrV2lkdGg6
aGVpZ2h0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnNl
dEltYWdlYmxvY2tXaWR0aChOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEltYWdlYmxvY2tXaWR0aF9oZWlnaHRfKSwgd2lkdGgsIGhlaWdodCk7Cit9CisKKy8vIG1l
dGhvZDogcmVzZXQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5k
OjpyZXNldCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHJlc2V0KSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGhyZWFkZ3JvdXBNZW1vcnlM
ZW5ndGg6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21t
YW5kOjpzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoX2F0SW5kZXhfKSwgbGVu
Z3RoLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RhZ2VJblJlZ2lvbjoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRTdGFnZUluUmVnaW9uKE1U
TDo6UmVnaW9uIHJlZ2lvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0U3RhZ2VJblJlZ2lvbl8pLCByZWdpb24pOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyMzgzNWQxZGI3
OGFkODJkZjQ3NmQyNjBjMzJkYmQ5Y2JlODEzNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZS5ocHAKQEAgLTAsMCArMSwxNTcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUu
aHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIK
KyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0
aW9uSGFuZGxlLmhwcCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhw
cCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisjaW5jbHVkZSAiTVRMVmlzaWJsZUZ1bmN0
aW9uVGFibGUuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX09QVElPTlMoTlM6OlVJbnRl
Z2VyLCBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZSkgeworICAgIEludGVyc2VjdGlvbkZ1
bmN0aW9uU2lnbmF0dXJlTm9uZSA9IDAsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1
cmVJbnN0YW5jaW5nID0gMSwKKyAgICBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZVRyaWFu
Z2xlRGF0YSA9IDIsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVXb3JsZFNwYWNl
RGF0YSA9IDQsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVJbnN0YW5jZU1vdGlv
biA9IDgsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVQcmltaXRpdmVNb3Rpb24g
PSAxNiwKKyAgICBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZUV4dGVuZGVkTGltaXRzID0g
MzIsCit9OworCitjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciA6IHB1
YmxpYyBOUzo6Q29weWluZzxJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2Ny
aXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVz
Y3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlRGVzY3JpcHRvciogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0
b3IoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb25Db3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnVuY3Rpb25Db3VudChOUzo6VUludGVnZXIg
ZnVuY3Rpb25Db3VudCk7Cit9OworCitjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlIDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBSZXNvdXJj
ZT4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZv
aWQgc2V0QnVmZmVycyhjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJ
bnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgc2V0RnVuY3Rp
b24oY29uc3QgY2xhc3MgRnVuY3Rpb25IYW5kbGUqIGZ1bmN0aW9uLCBOUzo6VUludGVnZXIgaW5k
ZXgpOworCisgICAgdm9pZCBzZXRGdW5jdGlvbnMoY29uc3QgY2xhc3MgRnVuY3Rpb25IYW5kbGUq
IGZ1bmN0aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCBzZXRPcGFxdWVUcmlh
bmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1
cmUgc2lnbmF0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBzZXRPcGFxdWVU
cmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWdu
YXR1cmUgc2lnbmF0dXJlLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCBzZXRWaXNpYmxl
RnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25U
YWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgc2V0VmlzaWJsZUZ1
bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRh
Ymxlc1tdLCBOUzo6UmFuZ2UgYnVmZmVyUmFuZ2UpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVz
Y3JpcHRvciogTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogTVRMOjpJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4oKTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IK
K19NVExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIE1U
TDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OmludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NM
UyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9T
RUwoaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVy
dHk6IGZ1bmN0aW9uQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yOjpmdW5jdGlvbkNvdW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZnVuY3Rpb25Db3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OnNldEZ1bmN0aW9uQ291bnQoTlM6OlVJ
bnRlZ2VyIGZ1bmN0aW9uQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uQ291bnRfKSwgZnVuY3Rpb25Db3VudCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6OnNldEJ1ZmZlcihjb25zdCBNVEw6
OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQor
CisvLyBtZXRob2Q6IHNldEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTo6c2V0QnVmZmVycyhjb25zdCBNVEw6
OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfKSwgYnVmZmVycywgb2Zmc2V0
cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZ1bmN0aW9uOmF0SW5kZXg6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb24oY29u
c3QgTVRMOjpGdW5jdGlvbkhhbmRsZSogZnVuY3Rpb24sIE5TOjpVSW50ZWdlciBpbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RnVuY3Rpb25fYXRJbmRleF8pLCBmdW5jdGlvbiwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNl
dEZ1bmN0aW9uczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb25zKGNvbnN0IE1UTDo6RnVuY3Rpb25IYW5kbGUqIGZ1
bmN0aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uc193aXRoUmFuZ2VfKSwgZnVu
Y3Rpb25zLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNl
Y3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOjpzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlv
bkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmUgc2lnbmF0dXJlLCBO
Uzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb25X
aXRoU2lnbmF0dXJlX2F0SW5kZXhfKSwgc2lnbmF0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmU6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6
OnNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb24oTVRMOjpJbnRlcnNlY3Rpb25G
dW5jdGlvblNpZ25hdHVyZSBzaWduYXR1cmUsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3BhcXVlVHJp
YW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmVfd2l0aFJhbmdlXyksIHNpZ25h
dHVyZSwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZpc2libGVGdW5jdGlvblRhYmxlOmF0
QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZTo6c2V0VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25U
YWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaXNpYmxl
RnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIGZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4
KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJh
bmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6OnNl
dFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiBm
dW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgYnVmZmVyUmFuZ2UpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZpc2libGVGdW5jdGlv
blRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgZnVuY3Rpb25UYWJsZXMsIGJ1ZmZlclJhbmdlKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExM
aWJyYXJ5LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaWJy
YXJ5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xYTUyNjdhMTZmYzE5ZDQxOTYxYWVmZjljMDlmYWM3ZDAxMDk3
MmM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTExpYnJhcnkuaHBwCkBAIC0wLDAgKzEsNjIxIEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExMaWJyYXJ5LmhwcAor
Ly8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5j
bHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aHBwPgorCisjaW5jbHVkZSAiTVRMQXJndW1lbnQuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9u
RGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMTGlicmFyeS5ocHAiCisjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgUGF0
Y2hUeXBlKSB7CisgICAgUGF0Y2hUeXBlTm9uZSA9IDAsCisgICAgUGF0Y2hUeXBlVHJpYW5nbGUg
PSAxLAorICAgIFBhdGNoVHlwZVF1YWQgPSAyLAorfTsKKworY2xhc3MgVmVydGV4QXR0cmlidXRl
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxWZXJ0ZXhBdHRyaWJ1dGU+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIFZlcnRleEF0dHJpYnV0ZSogYWxsb2MoKTsKKworICAgIGNsYXNzIFZl
cnRleEF0dHJpYnV0ZSogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAg
ICAgICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZUluZGV4KCkgY29uc3Q7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVUeXBlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY3RpdmUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdGNoRGF0YSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGF0Y2hDb250cm9sUG9pbnREYXRhKCkgY29uc3Q7Cit9OworCitjbGFzcyBBdHRyaWJ1
dGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEF0dHJpYnV0ZT4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgQXR0cmlidXRlKiBhbGxvYygpOworCisgICAgY2xhc3MgQXR0cmlidXRlKiAg
ICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgbmFtZSgpIGNvbnN0
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgYXR0cmlidXRlSW5kZXgoKSBjb25zdDsK
KworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgIGF0dHJpYnV0ZVR5cGUoKSBjb25zdDsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSgpIGNvbnN0OworCisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgcGF0Y2hEYXRhKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICBwYXRjaENvbnRyb2xQb2ludERhdGEoKSBjb25zdDsKK307CisKK19NVExfRU5V
TShOUzo6VUludGVnZXIsIEZ1bmN0aW9uVHlwZSkgeworICAgIEZ1bmN0aW9uVHlwZVZlcnRleCA9
IDEsCisgICAgRnVuY3Rpb25UeXBlRnJhZ21lbnQgPSAyLAorICAgIEZ1bmN0aW9uVHlwZUtlcm5l
bCA9IDMsCisgICAgRnVuY3Rpb25UeXBlVmlzaWJsZSA9IDUsCisgICAgRnVuY3Rpb25UeXBlSW50
ZXJzZWN0aW9uID0gNiwKK307CisKK2NsYXNzIEZ1bmN0aW9uQ29uc3RhbnQgOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPEZ1bmN0aW9uQ29uc3RhbnQ+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIEZ1bmN0aW9uQ29uc3RhbnQqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBGdW5jdGlvbkNvbnN0
YW50KiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAg
IG5hbWUoKSBjb25zdDsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgICAgICB0eXBl
KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgaW5kZXgoKSBj
b25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCgpIGNv
bnN0OworfTsKKwordXNpbmcgQXV0b3JlbGVhc2VkQXJndW1lbnQgPSBjbGFzcyBBcmd1bWVudCo7
CisKK2NsYXNzIEZ1bmN0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbj4KK3sK
K3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7
CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTVRM
OjpGdW5jdGlvblR5cGUgICAgICBmdW5jdGlvblR5cGUoKSBjb25zdDsKKworICAgIE1UTDo6UGF0
Y2hUeXBlICAgICAgICAgcGF0Y2hUeXBlKCkgY29uc3Q7CisKKyAgICBOUzo6SW50ZWdlciAgICAg
ICAgICAgIHBhdGNoQ29udHJvbFBvaW50Q291bnQoKSBjb25zdDsKKworICAgIE5TOjpBcnJheSog
ICAgICAgICAgICAgdmVydGV4QXR0cmlidXRlcygpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAg
ICAgICAgICAgICBzdGFnZUlucHV0QXR0cmlidXRlcygpIGNvbnN0OworCisgICAgTlM6OlN0cmlu
ZyogICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAgICBOUzo6RGljdGlvbmFyeSogICAgICAg
IGZ1bmN0aW9uQ29uc3RhbnRzRGljdGlvbmFyeSgpIGNvbnN0OworCisgICAgY2xhc3MgQXJndW1l
bnRFbmNvZGVyKiBuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsK
KworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlciogbmV3QXJndW1lbnRFbmNvZGVyKE5TOjpVSW50
ZWdlciBidWZmZXJJbmRleCwgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRBcmd1bWVudCogcmVmbGVj
dGlvbik7CisKKyAgICBNVEw6OkZ1bmN0aW9uT3B0aW9ucyAgIG9wdGlvbnMoKSBjb25zdDsKK307
CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIExhbmd1YWdlVmVyc2lvbikgeworICAgIExhbmd1
YWdlVmVyc2lvbjFfMCA9IDY1NTM2LAorICAgIExhbmd1YWdlVmVyc2lvbjFfMSA9IDY1NTM3LAor
ICAgIExhbmd1YWdlVmVyc2lvbjFfMiA9IDY1NTM4LAorICAgIExhbmd1YWdlVmVyc2lvbjJfMCA9
IDEzMTA3MiwKKyAgICBMYW5ndWFnZVZlcnNpb24yXzEgPSAxMzEwNzMsCisgICAgTGFuZ3VhZ2VW
ZXJzaW9uMl8yID0gMTMxMDc0LAorICAgIExhbmd1YWdlVmVyc2lvbjJfMyA9IDEzMTA3NSwKKyAg
ICBMYW5ndWFnZVZlcnNpb24yXzQgPSAxMzEwNzYsCit9OworCitfTVRMX0VOVU0oTlM6OkludGVn
ZXIsIExpYnJhcnlUeXBlKSB7CisgICAgTGlicmFyeVR5cGVFeGVjdXRhYmxlID0gMCwKKyAgICBM
aWJyYXJ5VHlwZUR5bmFtaWMgPSAxLAorfTsKKworY2xhc3MgQ29tcGlsZU9wdGlvbnMgOiBwdWJs
aWMgTlM6OkNvcHlpbmc8Q29tcGlsZU9wdGlvbnM+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIENvbXBpbGVPcHRpb25zKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcGlsZU9wdGlvbnMq
ICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6RGljdGlvbmFyeSogICAgICAgICAgICAgIHByZXBy
b2Nlc3Nvck1hY3JvcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0UHJlcHJvY2Vzc29yTWFjcm9zKGNvbnN0IE5TOjpEaWN0aW9uYXJ5KiBwcmVwcm9jZXNzb3JN
YWNyb3MpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBmYXN0TWF0aEVuYWJs
ZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZhc3RNYXRo
RW5hYmxlZChib29sIGZhc3RNYXRoRW5hYmxlZCk7CisKKyAgICBNVEw6Okxhbmd1YWdlVmVyc2lv
biAgICAgICAgIGxhbmd1YWdlVmVyc2lvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0TGFuZ3VhZ2VWZXJzaW9uKE1UTDo6TGFuZ3VhZ2VWZXJzaW9uIGxhbmd1
YWdlVmVyc2lvbik7CisKKyAgICBNVEw6OkxpYnJhcnlUeXBlICAgICAgICAgICAgIGxpYnJhcnlU
eXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMaWJyYXJ5
VHlwZShNVEw6OkxpYnJhcnlUeXBlIGxpYnJhcnlUeXBlKTsKKworICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgICAgICAgICAgaW5zdGFsbE5hbWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEluc3RhbGxOYW1lKGNvbnN0IE5TOjpTdHJpbmcqIGluc3RhbGxOYW1l
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgbGlicmFyaWVzKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMaWJyYXJpZXMoY29uc3QgTlM6
OkFycmF5KiBsaWJyYXJpZXMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBw
cmVzZXJ2ZUludmFyaWFuY2UoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFByZXNlcnZlSW52YXJpYW5jZShib29sIHByZXNlcnZlSW52YXJpYW5jZSk7Cit9Owor
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBMaWJyYXJ5RXJyb3IpIHsKKyAgICBMaWJyYXJ5RXJy
b3JVbnN1cHBvcnRlZCA9IDEsCisgICAgTGlicmFyeUVycm9yQ29tcGlsZUZhaWx1cmUgPSAzLAor
ICAgIExpYnJhcnlFcnJvckNvbXBpbGVXYXJuaW5nID0gNCwKKyAgICBMaWJyYXJ5RXJyb3JGdW5j
dGlvbk5vdEZvdW5kID0gNSwKKyAgICBMaWJyYXJ5RXJyb3JGaWxlTm90Rm91bmQgPSA2LAorfTsK
KworY2xhc3MgTGlicmFyeSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8TGlicmFyeT4KK3sKK3B1
YmxpYzoKKyAgICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcq
IHBGdW5jdGlvbk5hbWUsIGNvbnN0IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIHBDb25z
dGFudFZhbHVlcywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgbmV3RnVuY3Rpb24oY29uc3QgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBwRGVz
Y3JpcHRvciwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5T
OjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb24oY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVu
Y3Rpb25EZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1
bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVy
KTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERl
dmljZSogICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogIG5ld0Z1bmN0
aW9uKGNvbnN0IE5TOjpTdHJpbmcqIGZ1bmN0aW9uTmFtZSk7CisKKyAgICBjbGFzcyBGdW5jdGlv
biogIG5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUsIGNvbnN0IGNsYXNzIEZ1bmN0
aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFsdWVzLCBOUzo6RXJyb3IqKiBlcnJvcik7CisK
KyAgICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUs
IGNvbnN0IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFsdWVzLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uRGVzY3Jp
cHRvciogZGVzY3JpcHRvciwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShNVEw6OkZ1bmN0aW9u
KiwgTlM6OkVycm9yKikpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICBuZXdGdW5jdGlvbihjb25z
dCBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb24oY29uc3Qg
Y2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSk7CisKKyAgICBj
bGFzcyBGdW5jdGlvbiogIG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKGNvbnN0IGNsYXNzIEludGVy
c2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3Ip
OworCisgICAgTlM6OkFycmF5KiAgICAgICBmdW5jdGlvbk5hbWVzKCkgY29uc3Q7CisKKyAgICBN
VEw6OkxpYnJhcnlUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgaW5z
dGFsbE5hbWUoKSBjb25zdDsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRlKiBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlZlcnRleEF0dHJpYnV0
ZT4oX01UTF9QUklWQVRFX0NMUyhNVExWZXJ0ZXhBdHRyaWJ1dGUpKTsKK30KKworLy8gbWV0aG9k
OiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0ZSogTVRMOjpWZXJ0ZXhBdHRy
aWJ1dGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VmVydGV4
QXR0cmlidXRlPigpOworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0
cmluZyogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5h
bWUpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJpYnV0ZUluZGV4CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OmF0dHJpYnV0ZUluZGV4KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYXR0cmlidXRlSW5kZXgpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJpYnV0
ZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OmF0
dHJpYnV0ZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0cmlidXRlVHlwZSkpOworfQor
CisvLyBwcm9wZXJ0eTogYWN0aXZlCitfTVRMX0lOTElORSBib29sIE1UTDo6VmVydGV4QXR0cmli
dXRlOjphY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNBY3RpdmUpKTsKK30KKworLy8gcHJvcGVydHk6
IHBhdGNoRGF0YQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6cGF0Y2hE
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGlzUGF0Y2hEYXRhKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXRj
aENvbnRyb2xQb2ludERhdGEKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6
OnBhdGNoQ29udHJvbFBvaW50RGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1BhdGNoQ29udHJvbFBvaW50
RGF0YSkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpB
dHRyaWJ1dGUqIE1UTDo6QXR0cmlidXRlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6QXR0cmlidXRlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEF0dHJpYnV0ZSkp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlKiBNVEw6
OkF0dHJpYnV0ZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpB
dHRyaWJ1dGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3Ry
aW5nKiBNVEw6OkF0dHJpYnV0ZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlSW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OkF0dHJpYnV0ZTo6YXR0cmlidXRlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChh
dHRyaWJ1dGVJbmRleCkpOworfQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlVHlwZQorX01UTF9J
TkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OkF0dHJpYnV0ZTo6YXR0cmlidXRlVHlwZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTChhdHRyaWJ1dGVUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY3Rp
dmUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpBdHRyaWJ1dGU6OmFjdGl2ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChpc0FjdGl2ZSkpOworfQorCisvLyBwcm9wZXJ0eTogcGF0Y2hEYXRhCitfTVRMX0lOTElORSBi
b29sIE1UTDo6QXR0cmlidXRlOjpwYXRjaERhdGEoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNQYXRjaERhdGEp
KTsKK30KKworLy8gcHJvcGVydHk6IHBhdGNoQ29udHJvbFBvaW50RGF0YQorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkF0dHJpYnV0ZTo6cGF0Y2hDb250cm9sUG9pbnREYXRhKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGlzUGF0Y2hDb250cm9sUG9pbnREYXRhKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQqIE1UTDo6RnVuY3Rpb25Db25zdGFu
dDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9u
Q29uc3RhbnQ+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25Db25zdGFudCkpOworfQorCisv
LyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25Db25zdGFudCogTVRMOjpG
dW5jdGlvbkNvbnN0YW50Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OkZ1bmN0aW9uQ29uc3RhbnQ+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ6Om5hbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5MSU5FIE1U
TDo6RGF0YVR5cGUgTVRMOjpGdW5jdGlvbkNvbnN0YW50Ojp0eXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpGdW5jdGlvbkNvbnN0YW50OjppbmRleCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluZGV4KSk7Cit9CisKKy8vIHByb3BlcnR5OiByZXF1aXJlZAorX01UTF9JTkxJTkUgYm9v
bCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ6OnJlcXVpcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlcXVpcmVk
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRM
OjpGdW5jdGlvbjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyog
bGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01U
TF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6RnVuY3Rpb246OmRldmljZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25UeXBlCitfTVRM
X0lOTElORSBNVEw6OkZ1bmN0aW9uVHlwZSBNVEw6OkZ1bmN0aW9uOjpmdW5jdGlvblR5cGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25UeXBl
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uVHlwZSkpOworfQorCisvLyBwcm9wZXJ0
eTogcGF0Y2hUeXBlCitfTVRMX0lOTElORSBNVEw6OlBhdGNoVHlwZSBNVEw6OkZ1bmN0aW9uOjpw
YXRjaFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UGF0Y2hUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhdGNoVHlwZSkpOworfQorCisvLyBw
cm9wZXJ0eTogcGF0Y2hDb250cm9sUG9pbnRDb3VudAorX01UTF9JTkxJTkUgTlM6OkludGVnZXIg
TVRMOjpGdW5jdGlvbjo6cGF0Y2hDb250cm9sUG9pbnRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocGF0Y2hDb250cm9sUG9pbnRDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4QXR0
cmlidXRlcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uOjp2ZXJ0ZXhBdHRy
aWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJy
YXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleEF0dHJpYnV0ZXMpKTsKK30KKworLy8g
cHJvcGVydHk6IHN0YWdlSW5wdXRBdHRyaWJ1dGVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1U
TDo6RnVuY3Rpb246OnN0YWdlSW5wdXRBdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0
YWdlSW5wdXRBdHRyaWJ1dGVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElO
RSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
YW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvbkNvbnN0YW50c0RpY3Rpb25hcnkKK19N
VExfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBNVEw6OkZ1bmN0aW9uOjpmdW5jdGlvbkNvbnN0YW50
c0RpY3Rpb25hcnkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpEaWN0aW9uYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkNvbnN0YW50c0Rp
Y3Rpb25hcnkpKTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVy
SW5kZXg6CitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RW5jb2RlciogTVRMOjpGdW5jdGlvbjo6
bmV3QXJndW1lbnRFbmNvZGVyKE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50RW5jb2Rlcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4XyksIGJ1ZmZlcklu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXg6
cmVmbGVjdGlvbjoKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRFbmNvZGVyKiBNVEw6OkZ1bmN0
aW9uOjpuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4LCBjb25zdCBN
VEw6OkF1dG9yZWxlYXNlZEFyZ3VtZW50KiByZWZsZWN0aW9uKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXhfcmVmbGVjdGlvbl8pLCBidWZm
ZXJJbmRleCwgcmVmbGVjdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBvcHRpb25zCitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uT3B0aW9ucyBNVEw6OkZ1bmN0aW9uOjpvcHRpb25zKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uT3B0aW9ucz4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChvcHRpb25zKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvbXBpbGVPcHRpb25zKiBNVEw6OkNvbXBpbGVPcHRp
b25zOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcGls
ZU9wdGlvbnM+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcGlsZU9wdGlvbnMpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXBpbGVPcHRpb25zKiBNVEw6OkNvbXBp
bGVPcHRpb25zOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNv
bXBpbGVPcHRpb25zPigpOworfQorCisvLyBwcm9wZXJ0eTogcHJlcHJvY2Vzc29yTWFjcm9zCitf
TVRMX0lOTElORSBOUzo6RGljdGlvbmFyeSogTVRMOjpDb21waWxlT3B0aW9uczo6cHJlcHJvY2Vz
c29yTWFjcm9zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
RGljdGlvbmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlcHJvY2Vzc29yTWFjcm9zKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9uczo6c2V0UHJlcHJvY2Vz
c29yTWFjcm9zKGNvbnN0IE5TOjpEaWN0aW9uYXJ5KiBwcmVwcm9jZXNzb3JNYWNyb3MpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFBy
ZXByb2Nlc3Nvck1hY3Jvc18pLCBwcmVwcm9jZXNzb3JNYWNyb3MpOworfQorCisvLyBwcm9wZXJ0
eTogZmFzdE1hdGhFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcGlsZU9wdGlvbnM6
OmZhc3RNYXRoRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChmYXN0TWF0aEVuYWJsZWQpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXBpbGVPcHRpb25zOjpzZXRGYXN0TWF0aEVuYWJsZWQo
Ym9vbCBmYXN0TWF0aEVuYWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZhc3RNYXRoRW5hYmxlZF8pLCBmYXN0TWF0aEVuYWJs
ZWQpOworfQorCisvLyBwcm9wZXJ0eTogbGFuZ3VhZ2VWZXJzaW9uCitfTVRMX0lOTElORSBNVEw6
Okxhbmd1YWdlVmVyc2lvbiBNVEw6OkNvbXBpbGVPcHRpb25zOjpsYW5ndWFnZVZlcnNpb24oKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGFuZ3VhZ2VWZXJz
aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhbmd1YWdlVmVyc2lvbikpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q29tcGlsZU9wdGlvbnM6OnNldExhbmd1YWdlVmVyc2lvbihNVEw6
Okxhbmd1YWdlVmVyc2lvbiBsYW5ndWFnZVZlcnNpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhbmd1YWdlVmVyc2lvbl8pLCBs
YW5ndWFnZVZlcnNpb24pOworfQorCisvLyBwcm9wZXJ0eTogbGlicmFyeVR5cGUKK19NVExfSU5M
SU5FIE1UTDo6TGlicmFyeVR5cGUgTVRMOjpDb21waWxlT3B0aW9uczo6bGlicmFyeVR5cGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlicmFyeVR5cGU+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGlicmFyeVR5cGUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkNvbXBpbGVPcHRpb25zOjpzZXRMaWJyYXJ5VHlwZShNVEw6OkxpYnJhcnlUeXBl
IGxpYnJhcnlUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRMaWJyYXJ5VHlwZV8pLCBsaWJyYXJ5VHlwZSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBpbnN0YWxsTmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21waWxl
T3B0aW9uczo6aW5zdGFsbE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbGxOYW1lKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9uczo6c2V0SW5zdGFsbE5h
bWUoY29uc3QgTlM6OlN0cmluZyogaW5zdGFsbE5hbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbGxOYW1lXyksIGluc3Rh
bGxOYW1lKTsKK30KKworLy8gcHJvcGVydHk6IGxpYnJhcmllcworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OkNvbXBpbGVPcHRpb25zOjpsaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9uczo6
c2V0TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogbGlicmFyaWVzKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMaWJyYXJpZXNfKSwg
bGlicmFyaWVzKTsKK30KKworLy8gcHJvcGVydHk6IHByZXNlcnZlSW52YXJpYW5jZQorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkNvbXBpbGVPcHRpb25zOjpwcmVzZXJ2ZUludmFyaWFuY2UoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwocHJlc2VydmVJbnZhcmlhbmNlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21waWxlT3B0aW9uczo6c2V0UHJlc2VydmVJbnZhcmlhbmNlKGJvb2wgcHJlc2VydmVJbnZh
cmlhbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRQcmVzZXJ2ZUludmFyaWFuY2VfKSwgcHJlc2VydmVJbnZhcmlhbmNlKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpT
dHJpbmcqIHBGdW5jdGlvbk5hbWUsIGNvbnN0IEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIHBDb25z
dGFudFZhbHVlcywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sg
c3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uICogcEZ1bmN0aW9uLCBOUzo6RXJyb3IgKiBwRXJy
b3IpPiBibG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBu
ZXdGdW5jdGlvbihwRnVuY3Rpb25OYW1lLCBwQ29uc3RhbnRWYWx1ZXMsIF4oRnVuY3Rpb24qIHBG
dW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwRnVu
Y3Rpb24sIHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6
bmV3RnVuY3Rpb24oY29uc3QgRnVuY3Rpb25EZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3Qg
c3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVycm9y
KT4mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sgc3RkOjpmdW5jdGlvbjx2b2lk
KEZ1bmN0aW9uICogcEZ1bmN0aW9uLCBOUzo6RXJyb3IgKiBwRXJyb3IpPiBibG9ja0NvbXBsZXRp
b25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdGdW5jdGlvbihwRGVzY3Jp
cHRvciwgXihGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0Nv
bXBsZXRpb25IYW5kbGVyKHBGdW5jdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpMaWJyYXJ5OjpuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbihjb25zdCBJbnRlcnNl
Y3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoRnVuY3Rpb24qIHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpPiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgX19ibG9jayBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb24gKiBw
RnVuY3Rpb24sIE5TOjpFcnJvciAqIHBFcnJvcik+IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBj
b21wbGV0aW9uSGFuZGxlcjsKKworICAgIG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKHBEZXNjcmlw
dG9yLCBeKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29t
cGxldGlvbkhhbmRsZXIocEZ1bmN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKworLy8gcHJvcGVydHk6
IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkxpYnJhcnk6OmxhYmVsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGli
cmFyeTo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVs
KTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1U
TDo6TGlicmFyeTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisK
Ky8vIG1ldGhvZDogbmV3RnVuY3Rpb25XaXRoTmFtZToKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rp
b24qIE1UTDo6TGlicmFyeTo6bmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0cmluZyogZnVuY3Rpb25O
YW1lKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Z1bmN0aW9uV2l0aE5hbWVfKSwgZnVuY3Rpb25OYW1l
KTsKK30KKworLy8gbWV0aG9kOiBuZXdGdW5jdGlvbldpdGhOYW1lOmNvbnN0YW50VmFsdWVzOmVy
cm9yOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpMaWJyYXJ5OjpuZXdGdW5jdGlv
bihjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1
ZXMqIGNvbnN0YW50VmFsdWVzLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdGdW5jdGlvbldpdGhOYW1lX2NvbnN0YW50VmFsdWVzX2Vycm9yXyksIG5hbWUsIGNvbnN0YW50
VmFsdWVzLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3RnVuY3Rpb25XaXRoTmFtZTpjb25z
dGFudFZhbHVlczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaWJy
YXJ5OjpuZXdGdW5jdGlvbihjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBNVEw6OkZ1bmN0
aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFsdWVzLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVuY3Rpb25XaXRoTmFtZV9jb25z
dGFudFZhbHVlc19jb21wbGV0aW9uSGFuZGxlcl8pLCBuYW1lLCBjb25zdGFudFZhbHVlcywgY29t
cGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0
b3I6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6bmV3
RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpGdW5jdGlvbiosIE5TOjpFcnJvciopKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdGdW5j
dGlvbldpdGhEZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXyksIGRlc2NyaXB0b3IsIGNvbXBs
ZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9y
OmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpMaWJyYXJ5OjpuZXdGdW5j
dGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9y
KiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlv
bio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9lcnJv
cl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3SW50ZXJzZWN0aW9u
RnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpMaWJyYXJ5OjpuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbihjb25zdCBNVEw6OkludGVy
c2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShNVEw6OkZ1bmN0aW9uKiwgTlM6OkVycm9yKikpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0
aW9uV2l0aERlc2NyaXB0b3JfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgY29tcGxl
dGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uV2l0
aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6OkxpYnJh
cnk6Om5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2Ny
aXB0b3IsIGVycm9yKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uTmFtZXMKK19NVExfSU5M
SU5FIE5TOjpBcnJheSogTVRMOjpMaWJyYXJ5OjpmdW5jdGlvbk5hbWVzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGZ1bmN0aW9uTmFtZXMpKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5M
SU5FIE1UTDo6TGlicmFyeVR5cGUgTVRMOjpMaWJyYXJ5Ojp0eXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnlUeXBlPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbGxOYW1lCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkxpYnJhcnk6Omluc3RhbGxOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChpbnN0YWxsTmFtZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHAgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlua2VkRnVuY3Rpb25zLmhwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NjMxOWE1YTk0MWJmZDgzODdhNjI3NzYxMDg2ZWM5NmMyNjBlZWNmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0
aW9ucy5ocHAKQEAgLTAsMCArMSwxMTUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHAKKy8v
CisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1
ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhw
cD4KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgTGlua2VkRnVuY3Rpb25zIDogcHVibGljIE5T
OjpDb3B5aW5nPExpbmtlZEZ1bmN0aW9ucz4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
TGlua2VkRnVuY3Rpb25zKiBhbGxvYygpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiAg
ICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogbGlua2Vk
RnVuY3Rpb25zKCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGdW5jdGlv
bnMoY29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAg
ICAgICAgICAgICAgYmluYXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0QmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogYmluYXJ5
RnVuY3Rpb25zKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgIGdyb3Vwcygp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEdyb3Vwcyhjb25z
dCBOUzo6QXJyYXkqIGdyb3Vwcyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAg
ICBwcml2YXRlRnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0UHJpdmF0ZUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIHByaXZhdGVGdW5jdGlv
bnMpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6TGlua2VkRnVuY3Rpb25zPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTExpbmtlZEZ1bmN0aW9ucykpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpMaW5rZWRGdW5jdGlvbnM+KCk7
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGxpbmtlZEZ1bmN0aW9ucworX01UTF9JTkxJTkUgTVRM
OjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpsaW5rZWRGdW5jdGlvbnMo
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlua2VkRnVuY3Rpb25z
Kj4oX01UTF9QUklWQVRFX0NMUyhNVExMaW5rZWRGdW5jdGlvbnMpLCBfTVRMX1BSSVZBVEVfU0VM
KGxpbmtlZEZ1bmN0aW9ucykpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25zCitfTVRMX0lO
TElORSBOUzo6QXJyYXkqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpmdW5jdGlvbnMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaW5r
ZWRGdW5jdGlvbnM6OnNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9ucykKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RnVuY3Rpb25zXyksIGZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlGdW5jdGlv
bnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpMaW5rZWRGdW5jdGlvbnM6OmJpbmFyeUZ1
bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChiaW5hcnlGdW5jdGlvbnMpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6c2V0QmluYXJ5RnVuY3Rpb25zKGNv
bnN0IE5TOjpBcnJheSogYmluYXJ5RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCaW5hcnlGdW5jdGlvbnNfKSwgYmlu
YXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IGdyb3VwcworX01UTF9JTkxJTkUgTlM6
OkFycmF5KiBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6Z3JvdXBzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGdyb3VwcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpz
ZXRHcm91cHMoY29uc3QgTlM6OkFycmF5KiBncm91cHMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEdyb3Vwc18pLCBncm91cHMpOwor
fQorCisvLyBwcm9wZXJ0eTogcHJpdmF0ZUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5
KiBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6cHJpdmF0ZUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChwcml2YXRlRnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaW5r
ZWRGdW5jdGlvbnM6OnNldFByaXZhdGVGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiBwcml2YXRl
RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRQcml2YXRlRnVuY3Rpb25zXyksIHByaXZhdGVGdW5jdGlvbnMpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBhcmFs
bGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA0MzdiNGM4Yzk3ZDE1MmRjYjYyYTAwMTJkNGVmNjU0OGJkNWE0N2YKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSw5NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExI
ZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVy
LmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQYXNzLmhwcCIKKworbmFtZXNwYWNlIE1UTAorewor
Y2xhc3MgUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNp
bmc8UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlciwgQ29tbWFuZEVuY29kZXI+Cit7CitwdWJs
aWM6CisgICAgY2xhc3MgUmVuZGVyQ29tbWFuZEVuY29kZXIqIHJlbmRlckNvbW1hbmRFbmNvZGVy
KCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29sb3JTdG9yZUFjdGlv
bihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUludGVnZXIgY29sb3JBdHRhY2ht
ZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoU3Rv
cmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbik7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24g
c3RvcmVBY3Rpb24pOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbG9y
U3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0
aW9ucywgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3Jl
QWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlv
bk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zKTsKK307CisKK30KKworLy8gbWV0aG9kOiByZW5k
ZXJDb21tYW5kRW5jb2RlcgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlciog
TVRMOjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpyZW5kZXJDb21tYW5kRW5jb2Rlcigp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJDb21tYW5kRW5j
b2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyQ29tbWFuZEVuY29kZXIpKTsKK30K
KworLy8gbWV0aG9kOiBzZXRDb2xvclN0b3JlQWN0aW9uOmF0SW5kZXg6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Q29sb3JTdG9yZUFjdGlv
bihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUludGVnZXIgY29sb3JBdHRhY2ht
ZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldENvbG9yU3RvcmVBY3Rpb25fYXRJbmRleF8pLCBzdG9yZUFjdGlvbiwgY29s
b3JBdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoU3RvcmVBY3Rpb246
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
RGVwdGhTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFN0
b3JlQWN0aW9uXyksIHN0b3JlQWN0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzZXRTdGVuY2lsU3Rv
cmVBY3Rpb246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5j
b2Rlcjo6c2V0U3RlbmNpbFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24p
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFN0ZW5jaWxTdG9yZUFjdGlvbl8pLCBzdG9yZUFjdGlvbik7Cit9CisKKy8vIG1ldGhvZDog
c2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnM6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9u
cyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMsIE5TOjpVSW50ZWdl
ciBjb2xvckF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnNfYXRJbmRl
eF8pLCBzdG9yZUFjdGlvbk9wdGlvbnMsIGNvbG9yQXR0YWNobWVudEluZGV4KTsKK30KKworLy8g
bWV0aG9kOiBzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9u
cyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoU3Rv
cmVBY3Rpb25PcHRpb25zXyksIHN0b3JlQWN0aW9uT3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDog
c2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQYXJh
bGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zKE1U
TDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFN0b3Jl
QWN0aW9uT3B0aW9uc18pLCBzdG9yZUFjdGlvbk9wdGlvbnMpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBpcGVsaW5lLmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXBlbGluZS5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmEzYzk0NzczOTZhZDdjMzE2ZDZiNmNkYmVmMmEyMDhjNGY5ODc4OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXBlbGluZS5o
cHAKQEAgLTAsMCArMSwxMDkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFBpcGVsaW5lLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVk
ZSAiTVRMUGlwZWxpbmUuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJ
bnRlZ2VyLCBNdXRhYmlsaXR5KSB7CisgICAgTXV0YWJpbGl0eURlZmF1bHQgPSAwLAorICAgIE11
dGFiaWxpdHlNdXRhYmxlID0gMSwKKyAgICBNdXRhYmlsaXR5SW1tdXRhYmxlID0gMiwKK307CisK
K2NsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFBpcGVs
aW5lQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFBpcGVsaW5lQnVmZmVy
RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6TXV0YWJpbGl0eSAgICAgICAg
ICAgICAgICAgICAgICAgIG11dGFiaWxpdHkoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRNdXRhYmlsaXR5KE1UTDo6TXV0YWJpbGl0eSBtdXRh
YmlsaXR5KTsKK307CisKK2NsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5IDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheT4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqIGFs
bG9jKCk7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogICAgICAg
IGluaXQoKTsKKworICAgIGNsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciogICAgICAgICAg
ICAgb2JqZWN0KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3IqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsK
K307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UGlw
ZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcjo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlBpcGVsaW5lQnVmZmVy
RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3Ip
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVy
RGVzY3JpcHRvciogTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yPigp
OworfQorCisvLyBwcm9wZXJ0eTogbXV0YWJpbGl0eQorX01UTF9JTkxJTkUgTVRMOjpNdXRhYmls
aXR5IE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yOjptdXRhYmlsaXR5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Ok11dGFiaWxpdHk+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobXV0YWJpbGl0eSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yOjpzZXRNdXRhYmlsaXR5KE1UTDo6TXV0YWJpbGl0eSBt
dXRhYmlsaXR5KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRNdXRhYmlsaXR5XyksIG11dGFiaWxpdHkpOworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JB
cnJheSogTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFy
cmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRl
c2NyaXB0b3JBcnJheSogTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2Ny
aXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6
CitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciogTVRMOjpQaXBlbGlu
ZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpcGVsaW5lQnVmZmVyRGVz
Y3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0
XyksIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vi
c2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFy
cmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqIGJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0
XyksIGJ1ZmZlciwgYnVmZmVySW5kZXgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBpeGVsRm9ybWF0LmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXhlbEZvcm1hdC5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMy
MGM4MjllYmEwNTIyN2M1Yzk0NTkzZjQ3YmJiNzZmMTEyNDFjZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXhlbEZvcm1hdC5ocHAK
QEAgLTAsMCArMSwxNzMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFBpeGVsRm9ybWF0LmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1lc3Bh
Y2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQaXhlbEZvcm1hdCkgeworICAgIFBp
eGVsRm9ybWF0SW52YWxpZCA9IDAsCisgICAgUGl4ZWxGb3JtYXRBOFVub3JtID0gMSwKKyAgICBQ
aXhlbEZvcm1hdFI4VW5vcm0gPSAxMCwKKyAgICBQaXhlbEZvcm1hdFI4VW5vcm1fc1JHQiA9IDEx
LAorICAgIFBpeGVsRm9ybWF0UjhTbm9ybSA9IDEyLAorICAgIFBpeGVsRm9ybWF0UjhVaW50ID0g
MTMsCisgICAgUGl4ZWxGb3JtYXRSOFNpbnQgPSAxNCwKKyAgICBQaXhlbEZvcm1hdFIxNlVub3Jt
ID0gMjAsCisgICAgUGl4ZWxGb3JtYXRSMTZTbm9ybSA9IDIyLAorICAgIFBpeGVsRm9ybWF0UjE2
VWludCA9IDIzLAorICAgIFBpeGVsRm9ybWF0UjE2U2ludCA9IDI0LAorICAgIFBpeGVsRm9ybWF0
UjE2RmxvYXQgPSAyNSwKKyAgICBQaXhlbEZvcm1hdFJHOFVub3JtID0gMzAsCisgICAgUGl4ZWxG
b3JtYXRSRzhVbm9ybV9zUkdCID0gMzEsCisgICAgUGl4ZWxGb3JtYXRSRzhTbm9ybSA9IDMyLAor
ICAgIFBpeGVsRm9ybWF0Ukc4VWludCA9IDMzLAorICAgIFBpeGVsRm9ybWF0Ukc4U2ludCA9IDM0
LAorICAgIFBpeGVsRm9ybWF0QjVHNlI1VW5vcm0gPSA0MCwKKyAgICBQaXhlbEZvcm1hdEExQkdS
NVVub3JtID0gNDEsCisgICAgUGl4ZWxGb3JtYXRBQkdSNFVub3JtID0gNDIsCisgICAgUGl4ZWxG
b3JtYXRCR1I1QTFVbm9ybSA9IDQzLAorICAgIFBpeGVsRm9ybWF0UjMyVWludCA9IDUzLAorICAg
IFBpeGVsRm9ybWF0UjMyU2ludCA9IDU0LAorICAgIFBpeGVsRm9ybWF0UjMyRmxvYXQgPSA1NSwK
KyAgICBQaXhlbEZvcm1hdFJHMTZVbm9ybSA9IDYwLAorICAgIFBpeGVsRm9ybWF0UkcxNlNub3Jt
ID0gNjIsCisgICAgUGl4ZWxGb3JtYXRSRzE2VWludCA9IDYzLAorICAgIFBpeGVsRm9ybWF0Ukcx
NlNpbnQgPSA2NCwKKyAgICBQaXhlbEZvcm1hdFJHMTZGbG9hdCA9IDY1LAorICAgIFBpeGVsRm9y
bWF0UkdCQThVbm9ybSA9IDcwLAorICAgIFBpeGVsRm9ybWF0UkdCQThVbm9ybV9zUkdCID0gNzEs
CisgICAgUGl4ZWxGb3JtYXRSR0JBOFNub3JtID0gNzIsCisgICAgUGl4ZWxGb3JtYXRSR0JBOFVp
bnQgPSA3MywKKyAgICBQaXhlbEZvcm1hdFJHQkE4U2ludCA9IDc0LAorICAgIFBpeGVsRm9ybWF0
QkdSQThVbm9ybSA9IDgwLAorICAgIFBpeGVsRm9ybWF0QkdSQThVbm9ybV9zUkdCID0gODEsCisg
ICAgUGl4ZWxGb3JtYXRSR0IxMEEyVW5vcm0gPSA5MCwKKyAgICBQaXhlbEZvcm1hdFJHQjEwQTJV
aW50ID0gOTEsCisgICAgUGl4ZWxGb3JtYXRSRzExQjEwRmxvYXQgPSA5MiwKKyAgICBQaXhlbEZv
cm1hdFJHQjlFNUZsb2F0ID0gOTMsCisgICAgUGl4ZWxGb3JtYXRCR1IxMEEyVW5vcm0gPSA5NCwK
KyAgICBQaXhlbEZvcm1hdFJHMzJVaW50ID0gMTAzLAorICAgIFBpeGVsRm9ybWF0UkczMlNpbnQg
PSAxMDQsCisgICAgUGl4ZWxGb3JtYXRSRzMyRmxvYXQgPSAxMDUsCisgICAgUGl4ZWxGb3JtYXRS
R0JBMTZVbm9ybSA9IDExMCwKKyAgICBQaXhlbEZvcm1hdFJHQkExNlNub3JtID0gMTEyLAorICAg
IFBpeGVsRm9ybWF0UkdCQTE2VWludCA9IDExMywKKyAgICBQaXhlbEZvcm1hdFJHQkExNlNpbnQg
PSAxMTQsCisgICAgUGl4ZWxGb3JtYXRSR0JBMTZGbG9hdCA9IDExNSwKKyAgICBQaXhlbEZvcm1h
dFJHQkEzMlVpbnQgPSAxMjMsCisgICAgUGl4ZWxGb3JtYXRSR0JBMzJTaW50ID0gMTI0LAorICAg
IFBpeGVsRm9ybWF0UkdCQTMyRmxvYXQgPSAxMjUsCisgICAgUGl4ZWxGb3JtYXRCQzFfUkdCQSA9
IDEzMCwKKyAgICBQaXhlbEZvcm1hdEJDMV9SR0JBX3NSR0IgPSAxMzEsCisgICAgUGl4ZWxGb3Jt
YXRCQzJfUkdCQSA9IDEzMiwKKyAgICBQaXhlbEZvcm1hdEJDMl9SR0JBX3NSR0IgPSAxMzMsCisg
ICAgUGl4ZWxGb3JtYXRCQzNfUkdCQSA9IDEzNCwKKyAgICBQaXhlbEZvcm1hdEJDM19SR0JBX3NS
R0IgPSAxMzUsCisgICAgUGl4ZWxGb3JtYXRCQzRfUlVub3JtID0gMTQwLAorICAgIFBpeGVsRm9y
bWF0QkM0X1JTbm9ybSA9IDE0MSwKKyAgICBQaXhlbEZvcm1hdEJDNV9SR1Vub3JtID0gMTQyLAor
ICAgIFBpeGVsRm9ybWF0QkM1X1JHU25vcm0gPSAxNDMsCisgICAgUGl4ZWxGb3JtYXRCQzZIX1JH
QkZsb2F0ID0gMTUwLAorICAgIFBpeGVsRm9ybWF0QkM2SF9SR0JVZmxvYXQgPSAxNTEsCisgICAg
UGl4ZWxGb3JtYXRCQzdfUkdCQVVub3JtID0gMTUyLAorICAgIFBpeGVsRm9ybWF0QkM3X1JHQkFV
bm9ybV9zUkdCID0gMTUzLAorICAgIFBpeGVsRm9ybWF0UFZSVENfUkdCXzJCUFAgPSAxNjAsCisg
ICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JfMkJQUF9zUkdCID0gMTYxLAorICAgIFBpeGVsRm9ybWF0
UFZSVENfUkdCXzRCUFAgPSAxNjIsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JfNEJQUF9zUkdC
ID0gMTYzLAorICAgIFBpeGVsRm9ybWF0UFZSVENfUkdCQV8yQlBQID0gMTY0LAorICAgIFBpeGVs
Rm9ybWF0UFZSVENfUkdCQV8yQlBQX3NSR0IgPSAxNjUsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19S
R0JBXzRCUFAgPSAxNjYsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JBXzRCUFBfc1JHQiA9IDE2
NywKKyAgICBQaXhlbEZvcm1hdEVBQ19SMTFVbm9ybSA9IDE3MCwKKyAgICBQaXhlbEZvcm1hdEVB
Q19SMTFTbm9ybSA9IDE3MiwKKyAgICBQaXhlbEZvcm1hdEVBQ19SRzExVW5vcm0gPSAxNzQsCisg
ICAgUGl4ZWxGb3JtYXRFQUNfUkcxMVNub3JtID0gMTc2LAorICAgIFBpeGVsRm9ybWF0RUFDX1JH
QkE4ID0gMTc4LAorICAgIFBpeGVsRm9ybWF0RUFDX1JHQkE4X3NSR0IgPSAxNzksCisgICAgUGl4
ZWxGb3JtYXRFVEMyX1JHQjggPSAxODAsCisgICAgUGl4ZWxGb3JtYXRFVEMyX1JHQjhfc1JHQiA9
IDE4MSwKKyAgICBQaXhlbEZvcm1hdEVUQzJfUkdCOEExID0gMTgyLAorICAgIFBpeGVsRm9ybWF0
RVRDMl9SR0I4QTFfc1JHQiA9IDE4MywKKyAgICBQaXhlbEZvcm1hdEFTVENfNHg0X3NSR0IgPSAx
ODYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzV4NF9zUkdCID0gMTg3LAorICAgIFBpeGVsRm9ybWF0
QVNUQ181eDVfc1JHQiA9IDE4OCwKKyAgICBQaXhlbEZvcm1hdEFTVENfNng1X3NSR0IgPSAxODks
CisgICAgUGl4ZWxGb3JtYXRBU1RDXzZ4Nl9zUkdCID0gMTkwLAorICAgIFBpeGVsRm9ybWF0QVNU
Q184eDVfc1JHQiA9IDE5MiwKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg2X3NSR0IgPSAxOTMsCisg
ICAgUGl4ZWxGb3JtYXRBU1RDXzh4OF9zUkdCID0gMTk0LAorICAgIFBpeGVsRm9ybWF0QVNUQ18x
MHg1X3NSR0IgPSAxOTUsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDZfc1JHQiA9IDE5NiwKKyAg
ICBQaXhlbEZvcm1hdEFTVENfMTB4OF9zUkdCID0gMTk3LAorICAgIFBpeGVsRm9ybWF0QVNUQ18x
MHgxMF9zUkdCID0gMTk4LAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMngxMF9zUkdCID0gMTk5LAor
ICAgIFBpeGVsRm9ybWF0QVNUQ18xMngxMl9zUkdCID0gMjAwLAorICAgIFBpeGVsRm9ybWF0QVNU
Q180eDRfTERSID0gMjA0LAorICAgIFBpeGVsRm9ybWF0QVNUQ181eDRfTERSID0gMjA1LAorICAg
IFBpeGVsRm9ybWF0QVNUQ181eDVfTERSID0gMjA2LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDVf
TERSID0gMjA3LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDZfTERSID0gMjA4LAorICAgIFBpeGVs
Rm9ybWF0QVNUQ184eDVfTERSID0gMjEwLAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDZfTERSID0g
MjExLAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDhfTERSID0gMjEyLAorICAgIFBpeGVsRm9ybWF0
QVNUQ18xMHg1X0xEUiA9IDIxMywKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4Nl9MRFIgPSAyMTQs
CisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDhfTERSID0gMjE1LAorICAgIFBpeGVsRm9ybWF0QVNU
Q18xMHgxMF9MRFIgPSAyMTYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEyeDEwX0xEUiA9IDIxNywK
KyAgICBQaXhlbEZvcm1hdEFTVENfMTJ4MTJfTERSID0gMjE4LAorICAgIFBpeGVsRm9ybWF0QVNU
Q180eDRfSERSID0gMjIyLAorICAgIFBpeGVsRm9ybWF0QVNUQ181eDRfSERSID0gMjIzLAorICAg
IFBpeGVsRm9ybWF0QVNUQ181eDVfSERSID0gMjI0LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDVf
SERSID0gMjI1LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDZfSERSID0gMjI2LAorICAgIFBpeGVs
Rm9ybWF0QVNUQ184eDVfSERSID0gMjI4LAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDZfSERSID0g
MjI5LAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDhfSERSID0gMjMwLAorICAgIFBpeGVsRm9ybWF0
QVNUQ18xMHg1X0hEUiA9IDIzMSwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4Nl9IRFIgPSAyMzIs
CisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDhfSERSID0gMjMzLAorICAgIFBpeGVsRm9ybWF0QVNU
Q18xMHgxMF9IRFIgPSAyMzQsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEyeDEwX0hEUiA9IDIzNSwK
KyAgICBQaXhlbEZvcm1hdEFTVENfMTJ4MTJfSERSID0gMjM2LAorICAgIFBpeGVsRm9ybWF0R0JH
UjQyMiA9IDI0MCwKKyAgICBQaXhlbEZvcm1hdEJHUkc0MjIgPSAyNDEsCisgICAgUGl4ZWxGb3Jt
YXREZXB0aDE2VW5vcm0gPSAyNTAsCisgICAgUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXQgPSAyNTIs
CisgICAgUGl4ZWxGb3JtYXRTdGVuY2lsOCA9IDI1MywKKyAgICBQaXhlbEZvcm1hdERlcHRoMjRV
bm9ybV9TdGVuY2lsOCA9IDI1NSwKKyAgICBQaXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2ls
OCA9IDI2MCwKKyAgICBQaXhlbEZvcm1hdFgzMl9TdGVuY2lsOCA9IDI2MSwKKyAgICBQaXhlbEZv
cm1hdFgyNF9TdGVuY2lsOCA9IDI2MiwKKyAgICBQaXhlbEZvcm1hdEJHUkExMF9YUiA9IDU1MiwK
KyAgICBQaXhlbEZvcm1hdEJHUkExMF9YUl9zUkdCID0gNTUzLAorICAgIFBpeGVsRm9ybWF0QkdS
MTBfWFIgPSA1NTQsCisgICAgUGl4ZWxGb3JtYXRCR1IxMF9YUl9zUkdCID0gNTU1LAorfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBy
aXZhdGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFByaXZh
dGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNhZTRkNzllNDg3MTZjYTM2N2FkYTg1MWEwNWY1ZjQ2YjE1MGRj
MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMUHJpdmF0ZS5ocHAKQEAgLTAsMCArMSwxMzUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFByaXZhdGUuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorCisjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIF9NVExfUFJJVkFURV9D
TFMoc3ltYm9sKSAoUHJpdmF0ZTo6Q2xhc3M6OnNfayMjc3ltYm9sKQorI2RlZmluZSBfTVRMX1BS
SVZBVEVfU0VMKGFjY2Vzc29yKSAoUHJpdmF0ZTo6U2VsZWN0b3I6OnNfayMjYWNjZXNzb3IpCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaWYgZGVm
aW5lZChNVExfUFJJVkFURV9JTVBMRU1FTlRBVElPTikKKworI2RlZmluZSBfTVRMX1BSSVZBVEVf
VklTSUJJTElUWSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCisjZGVmaW5l
IF9NVExfUFJJVkFURV9JTVBPUlQgX19hdHRyaWJ1dGVfXygod2Vha19pbXBvcnQpKQorCisjaWYg
X19PQkpDX18KKyNkZWZpbmUgX01UTF9QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkg
KChfX2JyaWRnZSB2b2lkKilvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wpKQorI2Vsc2UKKyNkZWZp
bmUgX01UTF9QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgb2JqY19sb29rVXBDbGFz
cygjc3ltYm9sKQorI2VuZGlmIC8vIF9fT0JKQ19fCisKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RF
Rl9DTFMoc3ltYm9sKSB2b2lkKiBzX2sjI3N5bWJvbCBfTVRMX1BSSVZBVEVfVklTSUJJTElUWSA9
IF9NVExfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpOworI2RlZmluZSBfTVRMX1BS
SVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfU0VMKGFjY2Vz
c29yLCBzeW1ib2wpIFNFTCBzX2sjI2FjY2Vzc29yIF9NVExfUFJJVkFURV9WSVNJQklMSVRZID0g
c2VsX3JlZ2lzdGVyTmFtZShzeW1ib2wpOworCisjaWYgZGVmaW5lZChfX01BQ18xMF8xNikgfHwg
ZGVmaW5lZChfX01BQ18xMV8wKSB8fCBkZWZpbmVkKF9fTUFDXzEyXzApIHx8IGRlZmluZWQoX19J
UEhPTkVfMTRfMCkgfHwgZGVmaW5lZChfX0lQSE9ORV8xNV8wKSB8fCBkZWZpbmVkKF9fVFZPU18x
NF8wKSB8fCBkZWZpbmVkKF9fVFZPU18xNV8wKQorCisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZf
U1RSKHR5cGUsIHN5bWJvbCkgICAgICAgICAgICAgICAgICBcCisgICAgX01UTF9FWFRFUk4gdHlw
ZSBjb25zdCBNVEwjI3N5bWJvbCBfTVRMX1BSSVZBVEVfSU1QT1JUOyBcCisgICAgdHlwZSBjb25z
dCAgICAgICAgICAgICAgICAgICAgICAgICBNVEw6OnN5bWJvbCA9IChudWxscHRyICE9ICZNVEwj
I3N5bWJvbCkgPyBNVEwjI3N5bWJvbCA6IG51bGxwdHI7CisKKyNlbHNlCisKKyNpbmNsdWRlIDxk
bGZjbi5oPgorCituYW1lc3BhY2UgTVRMCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIF9UeXBlPgorICAgIGlubGluZSBfVHlwZSBjb25zdCBMb2FkU3lt
Ym9sKGNvbnN0IGNoYXIqIHBTeW1ib2wpCisgICAgeworICAgICAgICBjb25zdCBfVHlwZSogcEFk
ZHJlc3MgPSBzdGF0aWNfY2FzdDxfVHlwZSo+KGRsc3ltKFJUTERfREVGQVVMVCwgcFN5bWJvbCkp
OworCisgICAgICAgIHJldHVybiBwQWRkcmVzcyA/ICpwQWRkcmVzcyA6IG51bGxwdHI7CisgICAg
fQorCit9IC8vIFByaXZhdGUKK30gLy8gTVRMCisKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9T
VFIodHlwZSwgc3ltYm9sKSBcCisgICAgX01UTF9FWFRFUk4gdHlwZSBjb25zdCBNVEwjI3N5bWJv
bDsgICAgXAorICAgIHR5cGUgY29uc3QgICAgICAgICAgICAgTVRMOjpzeW1ib2wgPSBQcml2YXRl
OjpMb2FkU3ltYm9sPHR5cGU+KCJNVEwiICNzeW1ib2wpOworCisjZW5kaWYgLy8gZGVmaW5lZChf
X01BQ18xMF8xNikgfHwgZGVmaW5lZChfX01BQ18xMV8wKSB8fCBkZWZpbmVkKF9fTUFDXzEyXzAp
IHx8IGRlZmluZWQoX19JUEhPTkVfMTRfMCkgfHwgZGVmaW5lZChfX0lQSE9ORV8xNV8wKSB8fCBk
ZWZpbmVkKF9fVFZPU18xNF8wKSB8fCBkZWZpbmVkKF9fVFZPU18xNV8wKQorCisjZWxzZQorCisj
ZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfQ0xTKHN5bWJvbCkgZXh0ZXJuIHZvaWQqIHNfayMjc3lt
Ym9sOworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9NVExf
UFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIGV4dGVybiBTRUwgc19rIyNhY2Nlc3Nv
cjsKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9TVFIodHlwZSwgc3ltYm9sKQorCisjZW5kaWYg
Ly8gTVRMX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBNVEwKK3sKK25hbWVzcGFjZSBQcml2
YXRlCit7CisgICAgbmFtZXNwYWNlIENsYXNzCisgICAgeworCisgICAgfSAvLyBDbGFzcworfSAv
LyBQcml2YXRlCit9IC8vIE1UTAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE1UTAoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAg
ICBuYW1lc3BhY2UgUHJvdG9jb2wKKyAgICB7CisKKyAgICB9IC8vIFByb3RvY29sCit9IC8vIFBy
aXZhdGUKK30gLy8gTVRMCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCituYW1lc3BhY2UgTVRMCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5h
bWVzcGFjZSBTZWxlY3RvcgorICAgIHsKKworICAgICAgICBfTVRMX1BSSVZBVEVfREVGX1NFTChi
ZWdpblNjb3BlLAorICAgICAgICAgICAgImJlZ2luU2NvcGUiKTsKKyAgICAgICAgX01UTF9QUklW
QVRFX0RFRl9TRUwoZW5kU2NvcGUsCisgICAgICAgICAgICAiZW5kU2NvcGUiKTsKKyAgICB9IC8v
IENsYXNzCit9IC8vIFByaXZhdGUKK30gLy8gTVRMCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRlLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTg2Njk1NDVjYjJjOGVhMzMwOTFjZmU1YTlmOGVjMTg2YmJhMTJiZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSYXN0ZXJpemF0
aW9uUmF0ZS5ocHAKQEAgLTAsMCArMSwzODYgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRlLmhw
cAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisj
aW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaHBwPgorCisjaW5jbHVkZSAiTVRMRGV2aWNlLmhwcCIKKyNpbmNsdWRlICJNVExUeXBlcy5o
cHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIFJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJy
YXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXk+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJy
YXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiAg
ICAgICAgaW5pdCgpOworCisgICAgTlM6Ok51bWJlciogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBOUzo6TnVtYmVyKiB2
YWx1ZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2NsYXNzIFJhc3Rlcml6YXRpb25SYXRl
TGF5ZXJEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJhc3Rlcml6YXRpb25SYXRlTGF5
ZXJEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSYXN0ZXJpemF0aW9u
UmF0ZUxheWVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIE1UTDo6UmFzdGVyaXphdGlvblJh
dGVMYXllckRlc2NyaXB0b3IqICAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogICAgICAgICBpbml0KE1UTDo6U2l6ZSBzYW1wbGVDb3Vu
dCk7CisKKyAgICBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiAgICAgICAg
IGluaXQoTVRMOjpTaXplIHNhbXBsZUNvdW50LCBjb25zdCBmbG9hdCogaG9yaXpvbnRhbCwgY29u
c3QgZmxvYXQqIHZlcnRpY2FsKTsKKworICAgIE1UTDo6U2l6ZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQoKSBjb25zdDsKKworICAgIE1UTDo6U2l6ZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4U2FtcGxlQ291bnQoKSBjb25z
dDsKKworICAgIGZsb2F0KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aG9yaXpvbnRhbFNhbXBsZVN0b3JhZ2UoKSBjb25zdDsKKworICAgIGZsb2F0KiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWxTYW1wbGVTdG9yYWdlKCkgY29u
c3Q7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiAgICAgICAgICAg
IGhvcml6b250YWwoKSBjb25zdDsKKworICAgIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlU2FtcGxl
QXJyYXkqICAgICAgICAgICAgdmVydGljYWwoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FtcGxlQ291bnQoTVRMOjpTaXpl
IHNhbXBsZUNvdW50KTsKK307CisKK2NsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheSA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5Pgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkqIGFs
bG9jKCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkqICAgICAgICBp
bml0KCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogICBv
YmplY3QoTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBsYXllciwgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpOwor
fTsKKworY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yIDogcHVibGljIE5TOjpD
b3B5aW5nPFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBhbGxvYygpOworCisg
ICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOwor
CisgICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogcmFzdGVy
aXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKE1UTDo6U2l6ZSBzY3JlZW5TaXplKTsKKworICAgIHN0
YXRpYyBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIHJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvcihNVEw6OlNpemUgc2NyZWVuU2l6ZSwgY29uc3QgY2xhc3MgUmFzdGVy
aXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGxheWVyKTsKKworICAgIHN0YXRpYyBjbGFzcyBS
YXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3Jp
cHRvcihNVEw6OlNpemUgc2NyZWVuU2l6ZSwgTlM6OlVJbnRlZ2VyIGxheWVyQ291bnQsIE1UTDo6
UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGNvbnN0KiBsYXllcnMpOworCisgICAg
Y2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqICAgICAgbGF5ZXIoTlM6OlVJ
bnRlZ2VyIGxheWVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0TGF5ZXIoY29uc3QgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3IqIGxheWVyLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCk7CisKKyAgICBjbGFz
cyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkqICAgICAgICAgICBsYXllcnMoKSBjb25zdDsK
KworICAgIE1UTDo6U2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVl
blNpemUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTY3JlZW5TaXplKE1UTDo6U2l6ZSBzY3JlZW5TaXplKTsKKworICAgIE5TOjpT
dHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGF5ZXJDb3VudCgpIGNvbnN0OworfTsKKworY2xhc3MgUmFz
dGVyaXphdGlvblJhdGVNYXAgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJhc3Rlcml6YXRpb25S
YXRlTWFwPgoreworcHVibGljOgorICAgIGNsYXNzIERldmljZSogICAgIGRldmljZSgpIGNvbnN0
OworCisgICAgTlM6OlN0cmluZyogICAgICAgbGFiZWwoKSBjb25zdDsKKworICAgIE1UTDo6U2l6
ZSAgICAgICAgIHNjcmVlblNpemUoKSBjb25zdDsKKworICAgIE1UTDo6U2l6ZSAgICAgICAgIHBo
eXNpY2FsR3JhbnVsYXJpdHkoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgIGxheWVy
Q291bnQoKSBjb25zdDsKKworICAgIE1UTDo6U2l6ZUFuZEFsaWduIHBhcmFtZXRlckJ1ZmZlclNp
emVBbmRBbGlnbigpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgY29weVBhcmFtZXRl
ckRhdGFUb0J1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCk7CisKKyAgICBNVEw6OlNpemUgICAgICAgICBwaHlzaWNhbFNpemUoTlM6OlVJbnRlZ2Vy
IGxheWVySW5kZXgpOworCisgICAgTVRMOjpDb29yZGluYXRlMkQgbWFwU2NyZWVuVG9QaHlzaWNh
bENvb3JkaW5hdGVzKE1UTDo6Q29vcmRpbmF0ZTJEIHNjcmVlbkNvb3JkaW5hdGVzLCBOUzo6VUlu
dGVnZXIgbGF5ZXJJbmRleCk7CisKKyAgICBNVEw6OkNvb3JkaW5hdGUyRCBtYXBQaHlzaWNhbFRv
U2NyZWVuQ29vcmRpbmF0ZXMoTVRMOjpDb29yZGluYXRlMkQgcGh5c2ljYWxDb29yZGluYXRlcywg
TlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiBNVEw6
OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5PihfTVRMX1BS
SVZBVEVfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkq
IE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5PigpOwor
fQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE5T
OjpOdW1iZXIqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheTo6b2JqZWN0KE5TOjpV
SW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6TnVt
YmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwg
aW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheTo6c2V0T2Jq
ZWN0KGNvbnN0IE5TOjpOdW1iZXIqIHZhbHVlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVj
dF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgdmFsdWUsIGluZGV4KTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2Ny
aXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVy
RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVz
Y3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVy
aXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRl
c2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmFz
dGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I+KCk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdp
dGhTYW1wbGVDb3VudDoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRl
c2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6OmluaXQoTVRM
OjpTaXplIHNhbXBsZUNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluaXRXaXRoU2FtcGxlQ291bnRfKSwgc2FtcGxlQ291bnQpOworfQorCisvLyBtZXRob2Q6
IGluaXRXaXRoU2FtcGxlQ291bnQ6aG9yaXpvbnRhbDp2ZXJ0aWNhbDoKK19NVExfSU5MSU5FIE1U
TDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJh
dGVMYXllckRlc2NyaXB0b3I6OmluaXQoTVRMOjpTaXplIHNhbXBsZUNvdW50LCBjb25zdCBmbG9h
dCogaG9yaXpvbnRhbCwgY29uc3QgZmxvYXQqIHZlcnRpY2FsKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluaXRXaXRoU2FtcGxlQ291bnRfaG9yaXpvbnRhbF92ZXJ0
aWNhbF8pLCBzYW1wbGVDb3VudCwgaG9yaXpvbnRhbCwgdmVydGljYWwpOworfQorCisvLyBwcm9w
ZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJEZXNjcmlwdG9yOjpzYW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNh
bXBsZUNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhTYW1wbGVDb3VudAorX01UTF9JTkxJ
TkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6Om1heFNh
bXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OlNpemU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4U2FtcGxlQ291bnQpKTsKK30KKworLy8g
cHJvcGVydHk6IGhvcml6b250YWxTYW1wbGVTdG9yYWdlCitfTVRMX0lOTElORSBmbG9hdCogTVRM
OjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6aG9yaXpvbnRhbFNhbXBsZVN0b3Jh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGZsb2F0Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChob3Jpem9udGFsU2FtcGxlU3RvcmFnZSkpOworfQorCisvLyBw
cm9wZXJ0eTogdmVydGljYWxTYW1wbGVTdG9yYWdlCitfTVRMX0lOTElORSBmbG9hdCogTVRMOjpS
YXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6dmVydGljYWxTYW1wbGVTdG9yYWdlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxmbG9hdCo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodmVydGljYWxTYW1wbGVTdG9yYWdlKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBob3Jpem9udGFsCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJy
YXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6Omhvcml6b250YWwoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlv
blJhdGVTYW1wbGVBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaG9yaXpvbnRhbCkpOwor
fQorCisvLyBwcm9wZXJ0eTogdmVydGljYWwKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlv
blJhdGVTYW1wbGVBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6
dmVydGljYWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVy
dGljYWwpKTsKK30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVDb3VudDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6c2V0U2FtcGxlQ291bnQo
TVRMOjpTaXplIHNhbXBsZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVDb3VudF8pLCBzYW1wbGVDb3VudCk7Cit9
CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXk6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZUxheWVyQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVMYXllckFy
cmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZUxheWVyQXJyYXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5Ojppbml0
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJhc3Rlcml6YXRpb25SYXRl
TGF5ZXJBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6
CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBNVEw6
OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBsYXllcklu
ZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlv
blJhdGVMYXllckRlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5k
ZXhlZFN1YnNjcmlwdF8pLCBsYXllckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6
YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTGF5ZXJBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3IqIGxheWVyLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0
SW5kZXhlZFN1YnNjcmlwdF8pLCBsYXllciwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3Jp
cHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcERlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpp
bml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogcmFzdGVyaXphdGlv
blJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemU6CitfTVRMX0lOTElORSBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3I6OnJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcihNVEw6OlNpemUgc2NyZWVuU2l6
ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVN
YXBEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3JXaXRoU2NyZWVuU2l6ZV8pLCBzY3JlZW5TaXplKTsKK30KKworLy8gc3RhdGljIG1ldGhv
ZDogcmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemU6bGF5ZXI6Citf
TVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogTVRMOjpSYXN0
ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OnJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRv
cihNVEw6OlNpemUgc2NyZWVuU2l6ZSwgY29uc3QgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVy
RGVzY3JpcHRvciogbGF5ZXIpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJh
c3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwocmFzdGVyaXph
dGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemVfbGF5ZXJfKSwgc2NyZWVuU2l6ZSwg
bGF5ZXIpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3JXaXRoU2NyZWVuU2l6ZTpsYXllckNvdW50OmxheWVyczoKK19NVExfSU5MSU5FIE1UTDo6
UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFw
RGVzY3JpcHRvcjo6cmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKE1UTDo6U2l6ZSBzY3Jl
ZW5TaXplLCBOUzo6VUludGVnZXIgbGF5ZXJDb3VudCwgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxh
eWVyRGVzY3JpcHRvciogY29uc3QqIGxheWVycykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcio+KF9NVExfUFJJVkFU
RV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NF
TChyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZV9sYXllckNvdW50
X2xheWVyc18pLCBzY3JlZW5TaXplLCBsYXllckNvdW50LCBsYXllcnMpOworfQorCisvLyBtZXRo
b2Q6IGxheWVyQXRJbmRleDoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpsYXllcihO
Uzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChsYXllckF0SW5kZXhfKSwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
TGF5ZXI6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1h
cERlc2NyaXB0b3I6OnNldExheWVyKGNvbnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRl
c2NyaXB0b3IqIGxheWVyLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGF5ZXJfYXRJbmRl
eF8pLCBsYXllciwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYXllcnMKK19NVExf
SU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KiBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTWFwRGVzY3JpcHRvcjo6bGF5ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobGF5ZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzY3JlZW5TaXplCitf
TVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6
OnNjcmVlblNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzY3JlZW5TaXplKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OnNldFNjcmVl
blNpemUoTVRMOjpTaXplIHNjcmVlblNpemUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNjcmVlblNpemVfKSwgc2NyZWVuU2l6ZSk7
Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpS
YXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVN
YXBEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxf
KSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogbGF5ZXJDb3VudAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpsYXllckNvdW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGF5ZXJDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTog
ZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1h
cDo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZU1hcDo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBzY3JlZW5TaXplCitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcDo6c2NyZWVuU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNjcmVlblNpemUpKTsKK30K
KworLy8gcHJvcGVydHk6IHBoeXNpY2FsR3JhbnVsYXJpdHkKK19NVExfSU5MSU5FIE1UTDo6U2l6
ZSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpwaHlzaWNhbEdyYW51bGFyaXR5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemU+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwocGh5c2ljYWxHcmFudWxhcml0eSkpOworfQorCisvLyBwcm9wZXJ0eTogbGF5
ZXJDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmFzdGVyaXphdGlvblJhdGVN
YXA6OmxheWVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXllckNvdW50KSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBwYXJhbWV0ZXJCdWZmZXJTaXplQW5kQWxpZ24KK19NVExfSU5MSU5FIE1U
TDo6U2l6ZUFuZEFsaWduIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OnBhcmFtZXRlckJ1ZmZl
clNpemVBbmRBbGlnbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpTaXplQW5kQWxpZ24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGFyYW1ldGVyQnVmZmVy
U2l6ZUFuZEFsaWduKSk7Cit9CisKKy8vIG1ldGhvZDogY29weVBhcmFtZXRlckRhdGFUb0J1ZmZl
cjpvZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OmNv
cHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIG9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoY29weVBhcmFtZXRlckRhdGFUb0J1ZmZlcl9vZmZzZXRfKSwgYnVmZmVy
LCBvZmZzZXQpOworfQorCisvLyBtZXRob2Q6IHBoeXNpY2FsU2l6ZUZvckxheWVyOgorX01UTF9J
TkxJTkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OnBoeXNpY2FsU2l6ZShO
Uzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlNpemU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGh5c2ljYWxTaXplRm9yTGF5ZXJf
KSwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogbWFwU2NyZWVuVG9QaHlzaWNhbENvb3Jk
aW5hdGVzOmZvckxheWVyOgorX01UTF9JTkxJTkUgTVRMOjpDb29yZGluYXRlMkQgTVRMOjpSYXN0
ZXJpemF0aW9uUmF0ZU1hcDo6bWFwU2NyZWVuVG9QaHlzaWNhbENvb3JkaW5hdGVzKE1UTDo6Q29v
cmRpbmF0ZTJEIHNjcmVlbkNvb3JkaW5hdGVzLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvb3JkaW5hdGUyRD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChtYXBTY3JlZW5Ub1BoeXNpY2FsQ29vcmRpbmF0ZXNfZm9yTGF5ZXJf
KSwgc2NyZWVuQ29vcmRpbmF0ZXMsIGxheWVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IG1hcFBo
eXNpY2FsVG9TY3JlZW5Db29yZGluYXRlczpmb3JMYXllcjoKK19NVExfSU5MSU5FIE1UTDo6Q29v
cmRpbmF0ZTJEIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6Om1hcFBoeXNpY2FsVG9TY3JlZW5D
b29yZGluYXRlcyhNVEw6OkNvb3JkaW5hdGUyRCBwaHlzaWNhbENvb3JkaW5hdGVzLCBOUzo6VUlu
dGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkNvb3JkaW5hdGUyRD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXBQaHlzaWNhbFRvU2NyZWVu
Q29vcmRpbmF0ZXNfZm9yTGF5ZXJfKSwgcGh5c2ljYWxDb29yZGluYXRlcywgbGF5ZXJJbmRleCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
UmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmRhODU2MTM1
ZDk3YWJkMmQ4NTZmMDQ2ZThjNzM2MDIzMmM2ZGU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhw
cApAQCAtMCwwICsxLDk1OCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCisvLwor
Ly8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
TVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRl
ICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+
CisKKyNpbmNsdWRlICJNVExCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVy
LmhwcCIKKyNpbmNsdWRlICJNVExIZWFwLmhwcCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAi
CisjaW5jbHVkZSAiTVRMUmVuZGVyUGFzcy5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBw
IgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRPdXRw
dXREZXNjcmlwdG9yLmhwcCIKKyNpbmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKyNpbmNsdWRlICJN
VExUeXBlcy5ocHAiCisjaW5jbHVkZSAiTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwIgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQcmltaXRpdmVUeXBlKSB7
CisgICAgUHJpbWl0aXZlVHlwZVBvaW50ID0gMCwKKyAgICBQcmltaXRpdmVUeXBlTGluZSA9IDEs
CisgICAgUHJpbWl0aXZlVHlwZUxpbmVTdHJpcCA9IDIsCisgICAgUHJpbWl0aXZlVHlwZVRyaWFu
Z2xlID0gMywKKyAgICBQcmltaXRpdmVUeXBlVHJpYW5nbGVTdHJpcCA9IDQsCit9OworCitfTVRM
X0VOVU0oTlM6OlVJbnRlZ2VyLCBWaXNpYmlsaXR5UmVzdWx0TW9kZSkgeworICAgIFZpc2liaWxp
dHlSZXN1bHRNb2RlRGlzYWJsZWQgPSAwLAorICAgIFZpc2liaWxpdHlSZXN1bHRNb2RlQm9vbGVh
biA9IDEsCisgICAgVmlzaWJpbGl0eVJlc3VsdE1vZGVDb3VudGluZyA9IDIsCit9OworCitzdHJ1
Y3QgU2Npc3NvclJlY3QKK3sKKyAgICBOUzo6VUludGVnZXIgeDsKKyAgICBOUzo6VUludGVnZXIg
eTsKKyAgICBOUzo6VUludGVnZXIgd2lkdGg7CisgICAgTlM6OlVJbnRlZ2VyIGhlaWdodDsKK30g
X01UTF9QQUNLRUQ7CisKK3N0cnVjdCBWaWV3cG9ydAoreworICAgIGRvdWJsZSBvcmlnaW5YOwor
ICAgIGRvdWJsZSBvcmlnaW5ZOworICAgIGRvdWJsZSB3aWR0aDsKKyAgICBkb3VibGUgaGVpZ2h0
OworICAgIGRvdWJsZSB6bmVhcjsKKyAgICBkb3VibGUgemZhcjsKK30gX01UTF9QQUNLRUQ7CisK
K19NVExfRU5VTShOUzo6VUludGVnZXIsIEN1bGxNb2RlKSB7CisgICAgQ3VsbE1vZGVOb25lID0g
MCwKKyAgICBDdWxsTW9kZUZyb250ID0gMSwKKyAgICBDdWxsTW9kZUJhY2sgPSAyLAorfTsKKwor
X01UTF9FTlVNKE5TOjpVSW50ZWdlciwgV2luZGluZykgeworICAgIFdpbmRpbmdDbG9ja3dpc2Ug
PSAwLAorICAgIFdpbmRpbmdDb3VudGVyQ2xvY2t3aXNlID0gMSwKK307CisKK19NVExfRU5VTShO
Uzo6VUludGVnZXIsIERlcHRoQ2xpcE1vZGUpIHsKKyAgICBEZXB0aENsaXBNb2RlQ2xpcCA9IDAs
CisgICAgRGVwdGhDbGlwTW9kZUNsYW1wID0gMSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVn
ZXIsIFRyaWFuZ2xlRmlsbE1vZGUpIHsKKyAgICBUcmlhbmdsZUZpbGxNb2RlRmlsbCA9IDAsCisg
ICAgVHJpYW5nbGVGaWxsTW9kZUxpbmVzID0gMSwKK307CisKK3N0cnVjdCBEcmF3UHJpbWl0aXZl
c0luZGlyZWN0QXJndW1lbnRzCit7CisgICAgdWludDMyX3QgdmVydGV4Q291bnQ7CisgICAgdWlu
dDMyX3QgaW5zdGFuY2VDb3VudDsKKyAgICB1aW50MzJfdCB2ZXJ0ZXhTdGFydDsKKyAgICB1aW50
MzJfdCBiYXNlSW5zdGFuY2U7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgRHJhd0luZGV4ZWRQ
cmltaXRpdmVzSW5kaXJlY3RBcmd1bWVudHMKK3sKKyAgICB1aW50MzJfdCBpbmRleENvdW50Owor
ICAgIHVpbnQzMl90IGluc3RhbmNlQ291bnQ7CisgICAgdWludDMyX3QgaW5kZXhTdGFydDsKKyAg
ICBpbnQzMl90ICBiYXNlVmVydGV4OworICAgIHVpbnQzMl90IGJhc2VJbnN0YW5jZTsKK30gX01U
TF9QQUNLRUQ7CisKK3N0cnVjdCBWZXJ0ZXhBbXBsaWZpY2F0aW9uVmlld01hcHBpbmcKK3sKKyAg
ICB1aW50MzJfdCB2aWV3cG9ydEFycmF5SW5kZXhPZmZzZXQ7CisgICAgdWludDMyX3QgcmVuZGVy
VGFyZ2V0QXJyYXlJbmRleE9mZnNldDsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBEcmF3UGF0
Y2hJbmRpcmVjdEFyZ3VtZW50cworeworICAgIHVpbnQzMl90IHBhdGNoQ291bnQ7CisgICAgdWlu
dDMyX3QgaW5zdGFuY2VDb3VudDsKKyAgICB1aW50MzJfdCBwYXRjaFN0YXJ0OworICAgIHVpbnQz
Ml90IGJhc2VJbnN0YW5jZTsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBRdWFkVGVzc2VsbGF0
aW9uRmFjdG9yc0hhbGYKK3sKKyAgICB1aW50MTZfdCBlZGdlVGVzc2VsbGF0aW9uRmFjdG9yWzRd
OworICAgIHVpbnQxNl90IGluc2lkZVRlc3NlbGxhdGlvbkZhY3RvclsyXTsKK30gX01UTF9QQUNL
RUQ7CisKK3N0cnVjdCBUcmlhbmdsZVRlc3NlbGxhdGlvbkZhY3RvcnNIYWxmCit7CisgICAgdWlu
dDE2X3QgZWRnZVRlc3NlbGxhdGlvbkZhY3RvclszXTsKKyAgICB1aW50MTZfdCBpbnNpZGVUZXNz
ZWxsYXRpb25GYWN0b3I7Cit9IF9NVExfUEFDS0VEOworCitfTVRMX09QVElPTlMoTlM6OlVJbnRl
Z2VyLCBSZW5kZXJTdGFnZXMpIHsKKyAgICBSZW5kZXJTdGFnZVZlcnRleCA9IDEsCisgICAgUmVu
ZGVyU3RhZ2VGcmFnbWVudCA9IDIsCisgICAgUmVuZGVyU3RhZ2VUaWxlID0gNCwKK307CisKK2Ns
YXNzIFJlbmRlckNvbW1hbmRFbmNvZGVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSZW5kZXJD
b21tYW5kRW5jb2RlciwgQ29tbWFuZEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgdm9pZCAgICAg
ICAgIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0
ZSogcGlwZWxpbmVTdGF0ZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4Qnl0ZXMoY29u
c3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCk7
CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciog
YnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAg
dm9pZCAgICAgICAgIHNldFZlcnRleEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0LCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleEJ1ZmZlcnMo
TVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6
OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhUZXh0dXJlKGNvbnN0
IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lk
ICAgICAgICAgc2V0VmVydGV4VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6
UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleFNhbXBsZXJTdGF0ZShj
b25zdCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRleCk7CisK
KyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0
ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRW
ZXJ0ZXhTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9h
dCBsb2RNaW5DbGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCk7CisK
KyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0
ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0IGZsb2F0IGxv
ZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFZl
cnRleFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxl
KiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAg
ICAgICAgIHNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBjbGFzcyBWaXNpYmxl
RnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAg
IHZvaWQgICAgICAgICBzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNs
YXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUs
IE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsK
KworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3Qg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpV
SW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0Vmlld3BvcnQoTVRM
OjpWaWV3cG9ydCB2aWV3cG9ydCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0Vmlld3BvcnRzKGNv
bnN0IE1UTDo6Vmlld3BvcnQqIHZpZXdwb3J0cywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAg
IHZvaWQgICAgICAgICBzZXRGcm9udEZhY2luZ1dpbmRpbmcoTVRMOjpXaW5kaW5nIGZyb250RmFj
aW5nV2luZGluZyk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4QW1wbGlmaWNhdGlvbkNv
dW50KE5TOjpVSW50ZWdlciBjb3VudCwgY29uc3QgTVRMOjpWZXJ0ZXhBbXBsaWZpY2F0aW9uVmll
d01hcHBpbmcqIHZpZXdNYXBwaW5ncyk7CisKKyAgICB2b2lkICAgICAgICAgc2V0Q3VsbE1vZGUo
TVRMOjpDdWxsTW9kZSBjdWxsTW9kZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RGVwdGhDbGlw
TW9kZShNVEw6OkRlcHRoQ2xpcE1vZGUgZGVwdGhDbGlwTW9kZSk7CisKKyAgICB2b2lkICAgICAg
ICAgc2V0RGVwdGhCaWFzKGZsb2F0IGRlcHRoQmlhcywgZmxvYXQgc2xvcGVTY2FsZSwgZmxvYXQg
Y2xhbXApOworCisgICAgdm9pZCAgICAgICAgIHNldFNjaXNzb3JSZWN0KE1UTDo6U2Npc3NvclJl
Y3QgcmVjdCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0U2Npc3NvclJlY3RzKGNvbnN0IE1UTDo6
U2Npc3NvclJlY3QqIHNjaXNzb3JSZWN0cywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAgIHZv
aWQgICAgICAgICBzZXRUcmlhbmdsZUZpbGxNb2RlKE1UTDo6VHJpYW5nbGVGaWxsTW9kZSBmaWxs
TW9kZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRCeXRlcyhjb25zdCB2b2lkKiBi
eXRlcywgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZv
aWQgICAgICAgICBzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICBzZXRGcmFnbWVudEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUlu
dGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50QnVmZmVycyhNVEw6
OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50VGV4dHVyZShjb25zdCBj
bGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAg
ICAgICAgIHNldEZyYWdtZW50VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6
UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50U2FtcGxlclN0YXRl
KGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsK
KworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVy
U3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAg
c2V0RnJhZ21lbnRTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVy
LCBmbG9hdCBsb2RNaW5DbGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzKE1UTDo6U2Ft
cGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25zdCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3Qg
ZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAg
ICAgc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVu
Y3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBW
aXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsK
KworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUo
Y29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBz
ZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNzIEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5n
ZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1
Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1
Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0
QmxlbmRDb2xvclJlZChmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBh
bHBoYSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgY2xh
c3MgRGVwdGhTdGVuY2lsU3RhdGUqIGRlcHRoU3RlbmNpbFN0YXRlKTsKKworICAgIHZvaWQgICAg
ICAgICBzZXRTdGVuY2lsUmVmZXJlbmNlVmFsdWUodWludDMyX3QgcmVmZXJlbmNlVmFsdWUpOwor
CisgICAgdm9pZCAgICAgICAgIHNldFN0ZW5jaWxGcm9udFJlZmVyZW5jZVZhbHVlKHVpbnQzMl90
IGZyb250UmVmZXJlbmNlVmFsdWUsIHVpbnQzMl90IGJhY2tSZWZlcmVuY2VWYWx1ZSk7CisKKyAg
ICB2b2lkICAgICAgICAgc2V0VmlzaWJpbGl0eVJlc3VsdE1vZGUoTVRMOjpWaXNpYmlsaXR5UmVz
dWx0TW9kZSBtb2RlLCBOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAgICBz
ZXRDb2xvclN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24sIE5TOjpVSW50
ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RGVwdGhT
dG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKTsKKworICAgIHZvaWQgICAg
ICAgICBzZXRTdGVuY2lsU3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbik7
CisKKyAgICB2b2lkICAgICAgICAgc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9y
ZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zLCBOUzo6VUludGVnZXIgY29sb3JBdHRh
Y2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldERlcHRoU3RvcmVBY3Rpb25PcHRp
b25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucyk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9u
T3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQcmlt
aXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVy
dGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNl
Q291bnQpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZl
VHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdl
ciB2ZXJ0ZXhDb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgZHJhd0luZGV4ZWRQcmltaXRpdmVz
KE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3Vu
dCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVm
ZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5j
ZUNvdW50KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQ
cmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6
OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIsIE5T
OjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgZHJhd1By
aW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciB2
ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50LCBOUzo6VUludGVnZXIgaW5zdGFu
Y2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7CisKKyAgICB2b2lkICAgICAgICAg
ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBO
Uzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBj
bGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQs
IE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6SW50ZWdlciBiYXNlVmVydGV4LCBOUzo6
VUludGVnZXIgYmFzZUluc3RhbmNlKTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UHJpbWl0aXZl
cyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBp
bmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKworICAg
IHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHBy
aW1pdGl2ZVR5cGUsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgY2xhc3MgQnVmZmVy
KiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBjbGFz
cyBCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZz
ZXQpOworCisgICAgdm9pZCAgICAgICAgIHRleHR1cmVCYXJyaWVyKCk7CisKKyAgICB2b2lkICAg
ICAgICAgdXBkYXRlRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlLCBNVEw6OlJlbmRlclN0
YWdlcyBzdGFnZXMpOworCisgICAgdm9pZCAgICAgICAgIHdhaXRGb3JGZW5jZShjb25zdCBjbGFz
cyBGZW5jZSogZmVuY2UsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcyk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVm
ZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VTdHJpZGUpOwor
CisgICAgdm9pZCAgICAgICAgIHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlKGZsb2F0IHNjYWxl
KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQ
YXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVnZXIg
cGF0Y2hDb3VudCwgY29uc3QgY2xhc3MgQnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUlu
dGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQs
IE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQYXRj
aGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgY29uc3QgY2xhc3Mg
QnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9m
ZnNldCwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGlu
ZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFBhdGNo
ZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBOUzo6VUludGVnZXIg
cGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQsIGNvbnN0IGNsYXNzIEJ1ZmZlciog
cGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNv
bnN0IGNsYXNzIEJ1ZmZlciogY29udHJvbFBvaW50SW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBj
b250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQs
IE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdJbmRl
eGVkUGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIGNvbnN0
IGNsYXNzIEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhC
dWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogY29udHJvbFBvaW50SW5kZXhCdWZmZXIs
IE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgY2xhc3Mg
QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0
KTsKKworICAgIE5TOjpVSW50ZWdlciB0aWxlV2lkdGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50
ZWdlciB0aWxlSGVpZ2h0KCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZUJ5dGVz
KGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5k
ZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVy
KiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAg
ICB2b2lkICAgICAgICAgc2V0VGlsZUJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0LCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVCdWZmZXJzKE1U
TDo6QnVmZmVyKiBidWZmZXJzLCBjb25zdCBOUzo6VUludGVnZXIqIG9mZnNldHMsIE5TOjpSYW5n
ZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZVRleHR1cmUoY29uc3QgY2xhc3Mg
VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRUaWxlVGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFu
Z2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3Mg
U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAg
ICAgICAgIHNldFRpbGVTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1td
LCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVTYW1wbGVyU3Rh
dGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9hdCBsb2RNaW5DbGFtcCwg
ZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAg
ICAgc2V0VGlsZVNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNv
bnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6
OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlVmlzaWJsZUZ1bmN0aW9u
VGFibGUoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5T
OjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZVZpc2li
bGVGdW5jdGlvblRhYmxlcyhjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rp
b25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxl
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5k
ZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
cyhjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFRp
bGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJl
KiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAg
ICB2b2lkICAgICAgICAgZGlzcGF0Y2hUaHJlYWRzUGVyVGlsZShNVEw6OlNpemUgdGhyZWFkc1Bl
clRpbGUpOworCisgICAgdm9pZCAgICAgICAgIHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKE5T
OjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3VyY2Uq
IHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCAgICAgICAg
IHVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2VyIGNv
dW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCAgICAgICAgIHVzZVJl
c291cmNlKGNvbnN0IGNsYXNzIFJlc291cmNlKiByZXNvdXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdl
IHVzYWdlLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpOworCisgICAgdm9pZCAgICAgICAgIHVz
ZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXMsIE5TOjpVSW50ZWdlciBjb3VudCwg
TVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpOworCisg
ICAgdm9pZCAgICAgICAgIHVzZUhlYXAoY29uc3QgY2xhc3MgSGVhcCogaGVhcCk7CisKKyAgICB2
b2lkICAgICAgICAgdXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291
bnQpOworCisgICAgdm9pZCAgICAgICAgIHVzZUhlYXAoY29uc3QgY2xhc3MgSGVhcCogaGVhcCwg
TVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICB1c2VIZWFwcyhN
VEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZW5kZXJTdGFnZXMg
c3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25z
dCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6
OlJhbmdlIGV4ZWN1dGlvblJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBleGVjdXRlQ29tbWFu
ZHNJbkJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29t
bWFuZGJ1ZmZlciwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRpcmVjdFJhbmdlQnVmZmVyLCBOUzo6
VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgIG1lbW9y
eUJhcnJpZXIoTVRMOjpCYXJyaWVyU2NvcGUgc2NvcGUsIE1UTDo6UmVuZGVyU3RhZ2VzIGFmdGVy
LCBNVEw6OlJlbmRlclN0YWdlcyBiZWZvcmUpOworCisgICAgdm9pZCAgICAgICAgIG1lbW9yeUJh
cnJpZXIoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRM
OjpSZW5kZXJTdGFnZXMgYWZ0ZXIsIE1UTDo6UmVuZGVyU3RhZ2VzIGJlZm9yZSk7CisKKyAgICB2
b2lkICAgICAgICAgc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2Ft
cGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBi
YXJyaWVyKTsKK307CisKK30KKworLy8gbWV0aG9kOiBzZXRSZW5kZXJQaXBlbGluZVN0YXRlOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRSZW5kZXJQaXBl
bGluZVN0YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZV8pLCBwaXBlbGluZVN0YXRlKTsKK30KKworLy8gbWV0aG9k
OiBzZXRWZXJ0ZXhCeXRlczpsZW5ndGg6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4Qnl0ZXMoY29uc3Qgdm9pZCogYnl0ZXMsIE5T
OjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4Qnl0ZXNfbGVu
Z3RoX2F0SW5kZXhfKSwgYnl0ZXMsIGxlbmd0aCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNl
dFZlcnRleEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZm
ZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4QnVm
ZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0VmVydGV4QnVmZmVyT2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleEJ1ZmZlck9mZnNldChOUzo6VUludGVn
ZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEJ1ZmZlck9mZnNldF9hdElu
ZGV4XyksIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEJ1ZmZlcnM6
b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNldFZlcnRleEJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6
OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJzX29m
ZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJhbmdlKTsKK30KKworLy8gbWV0
aG9kOiBzZXRWZXJ0ZXhUZXh0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiB0
ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFRleHR1cmVfYXRJbmRleF8pLCB0
ZXh0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4VGV4dHVyZXM6d2l0aFJh
bmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0
ZXhUZXh0dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VmVydGV4VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1cmVzLCByYW5nZSk7Cit9CisKKy8vIG1l
dGhvZDogc2V0VmVydGV4U2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhTYW1w
bGVyU3RhdGVfYXRJbmRleF8pLCBzYW1wbGVyLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
VmVydGV4U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3Rh
dGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlc193
aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhT
YW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4U2FtcGxlclN0YXRlKGNv
bnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9hdCBsb2RNaW5DbGFtcCwgZmxvYXQg
bG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlX2xv
ZE1pbkNsYW1wX2xvZE1heENsYW1wX2F0SW5kZXhfKSwgc2FtcGxlciwgbG9kTWluQ2xhbXAsIGxv
ZE1heENsYW1wLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4U2FtcGxlclN0YXRl
czpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4U2FtcGxlclN0YXRlcyhNVEw6OlNh
bXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0
IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFNhbXBsZXJT
dGF0ZXNfbG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIGxv
ZE1pbkNsYW1wcywgbG9kTWF4Q2xhbXBzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVy
dGV4VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGUo
Y29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRl
Z2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlcklu
ZGV4XyksIGZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRW
ZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25U
YWJsZXMoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwg
TlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZl
clJhbmdlXyksIGZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVy
dGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgaW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZXMoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcywg
cmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEFjY2VsZXJhdGlvblN0cnVjdHVyZTph
dEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZmZXJJbmRleF8pLCBhY2NlbGVy
YXRpb25TdHJ1Y3R1cmUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaWV3cG9y
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Vmlld3Bv
cnQoTVRMOjpWaWV3cG9ydCB2aWV3cG9ydCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Vmlld3BvcnRfKSwgdmlld3BvcnQpOworfQor
CisvLyBtZXRob2Q6IHNldFZpZXdwb3J0czpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Vmlld3BvcnRzKGNvbnN0IE1UTDo6Vmlld3BvcnQqIHZp
ZXdwb3J0cywgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaWV3cG9ydHNfY291bnRfKSwgdmlld3Bv
cnRzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJvbnRGYWNpbmdXaW5kaW5nOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcm9udEZhY2luZ1dp
bmRpbmcoTVRMOjpXaW5kaW5nIGZyb250RmFjaW5nV2luZGluZykKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJvbnRGYWNpbmdXaW5k
aW5nXyksIGZyb250RmFjaW5nV2luZGluZyk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4QW1w
bGlmaWNhdGlvbkNvdW50OnZpZXdNYXBwaW5nczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KE5TOjpVSW50ZWdl
ciBjb3VudCwgY29uc3QgTVRMOjpWZXJ0ZXhBbXBsaWZpY2F0aW9uVmlld01hcHBpbmcqIHZpZXdN
YXBwaW5ncykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50X3ZpZXdNYXBwaW5nc18pLCBjb3Vu
dCwgdmlld01hcHBpbmdzKTsKK30KKworLy8gbWV0aG9kOiBzZXRDdWxsTW9kZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Q3VsbE1vZGUoTVRMOjpDdWxs
TW9kZSBjdWxsTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0Q3VsbE1vZGVfKSwgY3VsbE1vZGUpOworfQorCisvLyBtZXRob2Q6
IHNldERlcHRoQ2xpcE1vZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNldERlcHRoQ2xpcE1vZGUoTVRMOjpEZXB0aENsaXBNb2RlIGRlcHRoQ2xpcE1vZGUp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldERlcHRoQ2xpcE1vZGVfKSwgZGVwdGhDbGlwTW9kZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0
RGVwdGhCaWFzOnNsb3BlU2NhbGU6Y2xhbXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnNldERlcHRoQmlhcyhmbG9hdCBkZXB0aEJpYXMsIGZsb2F0IHNsb3Bl
U2NhbGUsIGZsb2F0IGNsYW1wKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aEJpYXNfc2xvcGVTY2FsZV9jbGFtcF8pLCBkZXB0
aEJpYXMsIHNsb3BlU2NhbGUsIGNsYW1wKTsKK30KKworLy8gbWV0aG9kOiBzZXRTY2lzc29yUmVj
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0U2Npc3Nv
clJlY3QoTVRMOjpTY2lzc29yUmVjdCByZWN0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTY2lzc29yUmVjdF8pLCByZWN0KTsKK30K
KworLy8gbWV0aG9kOiBzZXRTY2lzc29yUmVjdHM6Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFNjaXNzb3JSZWN0cyhjb25zdCBNVEw6OlNjaXNz
b3JSZWN0KiBzY2lzc29yUmVjdHMsIE5TOjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2Npc3NvclJlY3Rz
X2NvdW50XyksIHNjaXNzb3JSZWN0cywgY291bnQpOworfQorCisvLyBtZXRob2Q6IHNldFRyaWFu
Z2xlRmlsbE1vZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
OnNldFRyaWFuZ2xlRmlsbE1vZGUoTVRMOjpUcmlhbmdsZUZpbGxNb2RlIGZpbGxNb2RlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRU
cmlhbmdsZUZpbGxNb2RlXyksIGZpbGxNb2RlKTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVu
dEJ5dGVzOmxlbmd0aDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVn
ZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50Qnl0ZXNfbGVuZ3RoX2F0
SW5kZXhfKSwgYnl0ZXMsIGxlbmd0aCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdt
ZW50QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVy
LCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50QnVm
ZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0RnJhZ21lbnRCdWZmZXJPZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRCdWZmZXJPZmZzZXQoTlM6OlVJ
bnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEJ1ZmZlck9mZnNl
dF9hdEluZGV4XyksIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50
QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10s
IGNvbnN0IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21l
bnRCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJhbmdlKTsK
K30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudFRleHR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRUZXh0dXJlKGNvbnN0
IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFRl
eHR1cmVfYXRJbmRleF8pLCB0ZXh0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJh
Z21lbnRUZXh0dXJlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnNldEZyYWdtZW50VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1td
LCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1
cmVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGU6YXRJ
bmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJh
Z21lbnRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpV
SW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVfYXRJbmRleF8pLCBzYW1wbGVy
LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzOndpdGhS
YW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJh
Z21lbnRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZTpsb2RNaW5D
bGFtcDpsb2RNYXhDbGFtcDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6OlNhbXBsZXJT
dGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlX2xvZE1pbkNsYW1wX2xvZE1h
eENsYW1wX2F0SW5kZXhfKSwgc2FtcGxlciwgbG9kTWluQ2xhbXAsIGxvZE1heENsYW1wLCBpbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1w
czpsb2RNYXhDbGFtcHM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUq
IHNhbXBsZXJzW10sIGNvbnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RN
YXhDbGFtcHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXNfbG9k
TWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIGxvZE1pbkNsYW1w
cywgbG9kTWF4Q2xhbXBzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRWaXNp
YmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0
IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBi
dWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4
XyksIGZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFn
bWVudFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9u
VGFibGVzKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10s
IE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1
ZmZlclJhbmdlXyksIGZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0
RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50SW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGlu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJh
Z21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgaW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdt
ZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudElu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBpbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50QWNjZWxl
cmF0aW9uU3RydWN0dXJlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpV
SW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRC
dWZmZXJJbmRleF8pLCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGJ1ZmZlckluZGV4KTsKK30KKwor
Ly8gbWV0aG9kOiBzZXRCbGVuZENvbG9yUmVkOmdyZWVuOmJsdWU6YWxwaGE6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEJsZW5kQ29sb3JSZWQoZmxvYXQg
cmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJsZW5kQ29sb3JS
ZWRfZ3JlZW5fYmx1ZV9hbHBoYV8pLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0RGVwdGhTdGVuY2lsU3RhdGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IE1UTDo6RGVwdGhT
dGVuY2lsU3RhdGUqIGRlcHRoU3RlbmNpbFN0YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFN0ZW5jaWxTdGF0ZV8pLCBk
ZXB0aFN0ZW5jaWxTdGF0ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RlbmNpbFJlZmVyZW5jZVZh
bHVlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVu
Y2lsUmVmZXJlbmNlVmFsdWUodWludDMyX3QgcmVmZXJlbmNlVmFsdWUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxSZWZl
cmVuY2VWYWx1ZV8pLCByZWZlcmVuY2VWYWx1ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RlbmNp
bEZyb250UmVmZXJlbmNlVmFsdWU6YmFja1JlZmVyZW5jZVZhbHVlOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVuY2lsRnJvbnRSZWZlcmVuY2VWYWx1
ZSh1aW50MzJfdCBmcm9udFJlZmVyZW5jZVZhbHVlLCB1aW50MzJfdCBiYWNrUmVmZXJlbmNlVmFs
dWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFN0ZW5jaWxGcm9udFJlZmVyZW5jZVZhbHVlX2JhY2tSZWZlcmVuY2VWYWx1ZV8pLCBm
cm9udFJlZmVyZW5jZVZhbHVlLCBiYWNrUmVmZXJlbmNlVmFsdWUpOworfQorCisvLyBtZXRob2Q6
IHNldFZpc2liaWxpdHlSZXN1bHRNb2RlOm9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmlzaWJpbGl0eVJlc3VsdE1vZGUoTVRMOjpWaXNpYmls
aXR5UmVzdWx0TW9kZSBtb2RlLCBOUzo6VUludGVnZXIgb2Zmc2V0KQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaXNpYmlsaXR5UmVz
dWx0TW9kZV9vZmZzZXRfKSwgbW9kZSwgb2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiBzZXRDb2xv
clN0b3JlQWN0aW9uOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFu
ZEVuY29kZXI6OnNldENvbG9yU3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlv
biwgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb2xvclN0b3JlQWN0aW9u
X2F0SW5kZXhfKSwgc3RvcmVBY3Rpb24sIGNvbG9yQXR0YWNobWVudEluZGV4KTsKK30KKworLy8g
bWV0aG9kOiBzZXREZXB0aFN0b3JlQWN0aW9uOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3Rv
cmVBY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldERlcHRoU3RvcmVBY3Rpb25fKSwgc3RvcmVBY3Rpb24pOworfQorCisvLyBt
ZXRob2Q6IHNldFN0ZW5jaWxTdG9yZUFjdGlvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0U3RlbmNpbFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24g
c3RvcmVBY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxTdG9yZUFjdGlvbl8pLCBzdG9yZUFjdGlvbik7Cit9CisK
Ky8vIG1ldGhvZDogc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnM6YXRJbmRleDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Q29sb3JTdG9yZUFjdGlvbk9w
dGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zLCBOUzo6VUlu
dGVnZXIgY29sb3JBdHRhY2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zX2F0
SW5kZXhfKSwgc3RvcmVBY3Rpb25PcHRpb25zLCBjb2xvckF0dGFjaG1lbnRJbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnM6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldERlcHRoU3RvcmVBY3Rpb25PcHRpb25zKE1U
TDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhTdG9yZUFj
dGlvbk9wdGlvbnNfKSwgc3RvcmVBY3Rpb25PcHRpb25zKTsKK30KKworLy8gbWV0aG9kOiBzZXRT
dGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rp
b25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9u
c18pLCBzdG9yZUFjdGlvbk9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IGRyYXdQcmltaXRpdmVz
OnZlcnRleFN0YXJ0OnZlcnRleENvdW50Omluc3RhbmNlQ291bnQ6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZl
VHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdl
ciB2ZXJ0ZXhDb3VudCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQcmltaXRpdmVz
X3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50X2luc3RhbmNlQ291bnRfKSwgcHJpbWl0aXZlVHlwZSwg
dmVydGV4U3RhcnQsIHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50KTsKK30KKworLy8gbWV0aG9k
OiBkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRp
dmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRl
Z2VyIHZlcnRleENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0ZXhDb3VudF8p
LCBwcmltaXRpdmVUeXBlLCB2ZXJ0ZXhTdGFydCwgdmVydGV4Q291bnQpOworfQorCisvLyBtZXRo
b2Q6IGRyYXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlwZTppbmRleEJ1ZmZl
cjppbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRp
dmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6OkluZGV4
VHlwZSBpbmRleFR5cGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0lu
ZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5kZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4QnVm
ZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfKSwgcHJpbWl0aXZlVHlwZSwgaW5kZXhDb3VudCwgaW5k
ZXhUeXBlLCBpbmRleEJ1ZmZlciwgaW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNlQ291bnQpOwor
fQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlw
ZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZl
VHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5
cGUgaW5kZXhUeXBlLCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdl
ciBpbmRleEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0luZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5k
ZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4QnVmZmVyT2Zmc2V0XyksIHByaW1pdGl2ZVR5cGUsIGlu
ZGV4Q291bnQsIGluZGV4VHlwZSwgaW5kZXhCdWZmZXIsIGluZGV4QnVmZmVyT2Zmc2V0KTsKK30K
KworLy8gbWV0aG9kOiBkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDppbnN0
YW5jZUNvdW50OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6ZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5
cGUsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50LCBO
Uzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJh
d1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVydGV4Q291bnRfaW5zdGFuY2VDb3VudF9iYXNlSW5z
dGFuY2VfKSwgcHJpbWl0aXZlVHlwZSwgdmVydGV4U3RhcnQsIHZlcnRleENvdW50LCBpbnN0YW5j
ZUNvdW50LCBiYXNlSW5zdGFuY2UpOworfQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUHJpbWl0
aXZlczppbmRleENvdW50OmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDpp
bnN0YW5jZUNvdW50OmJhc2VWZXJ0ZXg6YmFzZUluc3RhbmNlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmlt
aXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6Oklu
ZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6
OkludGVnZXIgYmFzZVZlcnRleCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0luZGV4
ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5kZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4QnVmZmVy
T2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZVZlcnRleF9iYXNlSW5zdGFuY2VfKSwgcHJpbWl0aXZl
VHlwZSwgaW5kZXhDb3VudCwgaW5kZXhUeXBlLCBpbmRleEJ1ZmZlciwgaW5kZXhCdWZmZXJPZmZz
ZXQsIGluc3RhbmNlQ291bnQsIGJhc2VWZXJ0ZXgsIGJhc2VJbnN0YW5jZSk7Cit9CisKKy8vIG1l
dGhvZDogZHJhd1ByaW1pdGl2ZXM6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQcmltaXRp
dmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBjb25zdCBNVEw6OkJ1ZmZlciog
aW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd1By
aW1pdGl2ZXNfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgcHJpbWl0aXZl
VHlwZSwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0
aG9kOiBkcmF3SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhUeXBlOmluZGV4QnVmZmVyOmluZGV4QnVm
ZmVyT2Zmc2V0OmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5kZXhlZFByaW1pdGl2ZXMo
TVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlw
ZSwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZm
ZXJPZmZzZXQsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhUeXBlX2lu
ZGV4QnVmZmVyX2luZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVy
T2Zmc2V0XyksIHByaW1pdGl2ZVR5cGUsIGluZGV4VHlwZSwgaW5kZXhCdWZmZXIsIGluZGV4QnVm
ZmVyT2Zmc2V0LCBpbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworfQorCisv
LyBtZXRob2Q6IHRleHR1cmVCYXJyaWVyCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnRleHR1cmVCYXJyaWVyKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZUJhcnJpZXIpKTsKK30KKworLy8g
bWV0aG9kOiB1cGRhdGVGZW5jZTphZnRlclN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2Us
IE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlRmVuY2VfYWZ0ZXJTdGFnZXNfKSwgZmVu
Y2UsIHN0YWdlcyk7Cit9CisKKy8vIG1ldGhvZDogd2FpdEZvckZlbmNlOmJlZm9yZVN0YWdlczoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6d2FpdEZvckZlbmNl
KGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdhaXRG
b3JGZW5jZV9iZWZvcmVTdGFnZXNfKSwgZmVuY2UsIHN0YWdlcyk7Cit9CisKKy8vIG1ldGhvZDog
c2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOm9mZnNldDppbnN0YW5jZVN0cmlkZToKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGVzc2VsbGF0aW9uRmFj
dG9yQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQs
IE5TOjpVSW50ZWdlciBpbnN0YW5jZVN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVy
X29mZnNldF9pbnN0YW5jZVN0cmlkZV8pLCBidWZmZXIsIG9mZnNldCwgaW5zdGFuY2VTdHJpZGUp
OworfQorCisvLyBtZXRob2Q6IHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUZXNzZWxsYXRpb25GYWN0b3JT
Y2FsZShmbG9hdCBzY2FsZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVfKSwgc2NhbGUpOwor
fQorCisvLyBtZXRob2Q6IGRyYXdQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaElu
ZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFu
Y2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQYXRj
aGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRlZ2Vy
IHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBNVEw6OkJ1ZmZlciog
cGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIE5T
OjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3
UGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4
QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlXyksIG51bWJlck9mUGF0Y2hD
b250cm9sUG9pbnRzLCBwYXRjaFN0YXJ0LCBwYXRjaENvdW50LCBwYXRjaEluZGV4QnVmZmVyLCBw
YXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlSW5zdGFuY2UpOworfQor
CisvLyBtZXRob2Q6IGRyYXdQYXRjaGVzOnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZl
ck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd1BhdGNoZXMoTlM6OlVJbnRlZ2Vy
IG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBjb25zdCBNVEw6OkJ1ZmZlciogcGF0Y2hJbmRl
eEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IE1UTDo6
QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChkcmF3UGF0Y2hlc19wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5k
aXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgbnVtYmVyT2ZQYXRjaENvbnRyb2xQ
b2ludHMsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGluZGlyZWN0
QnVmZmVyLCBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4
ZWRQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5k
ZXhCdWZmZXJPZmZzZXQ6Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhC
dWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdJbmRleGVkUGF0Y2hlcyhOUzo6VUludGVn
ZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBO
Uzo6VUludGVnZXIgcGF0Y2hDb3VudCwgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZm
ZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZl
ciogY29udHJvbFBvaW50SW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRl
eEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBi
YXNlSW5zdGFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNoQ291bnRfcGF0
Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQb2ludEluZGV4QnVm
ZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZUluc3Rh
bmNlXyksIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBwYXRjaFN0YXJ0LCBwYXRjaENvdW50
LCBwYXRjaEluZGV4QnVmZmVyLCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb250cm9sUG9pbnRJ
bmRleEJ1ZmZlciwgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNlQ291bnQs
IGJhc2VJbnN0YW5jZSk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNo
SW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1ZmZl
cjpjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1
ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
ZHJhd0luZGV4ZWRQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50
cywgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRj
aEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZlciogY29udHJvbFBvaW50SW5kZXhC
dWZmZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwgY29uc3Qg
TVRMOjpCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJP
ZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZm
ZXJPZmZzZXRfY29udHJvbFBvaW50SW5kZXhCdWZmZXJfY29udHJvbFBvaW50SW5kZXhCdWZmZXJP
ZmZzZXRfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgbnVtYmVyT2ZQYXRj
aENvbnRyb2xQb2ludHMsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQs
IGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwg
aW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6
IHRpbGVXaWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnRpbGVXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRpbGVXaWR0aCkpOworfQor
CisvLyBwcm9wZXJ0eTogdGlsZUhlaWdodAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnRpbGVIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0
aWxlSGVpZ2h0KSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZUJ5dGVzOmxlbmd0aDphdEluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlQnl0
ZXMoY29uc3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBp
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VGlsZUJ5dGVzX2xlbmd0aF9hdEluZGV4XyksIGJ5dGVzLCBsZW5ndGgsIGluZGV4
KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlQnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlQnVmZmVyKGNvbnN0
IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBp
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VGlsZUJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVCdWZmZXJPZmZzZXQ6YXRJbmRleDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZUJ1ZmZlck9mZnNl
dChOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVCdWZmZXJP
ZmZzZXRfYXRJbmRleF8pLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxl
QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0VGlsZUJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnMsIGNvbnN0
IE5TOjpVSW50ZWdlciogb2Zmc2V0cywgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlQnVmZmVyc19v
ZmZzZXRzX3dpdGhSYW5nZV8pLCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1l
dGhvZDogc2V0VGlsZVRleHR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0
dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVUZXh0dXJlX2F0SW5kZXhfKSwgdGV4dHVy
ZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVUZXh0dXJlczp3aXRoUmFuZ2U6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVUZXh0dXJl
cyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZVRleHR1
cmVzX3dpdGhSYW5nZV8pLCB0ZXh0dXJlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFRp
bGVTYW1wbGVyU3RhdGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6c2V0VGlsZVNhbXBsZXJTdGF0ZShjb25zdCBNVEw6OlNhbXBsZXJTdGF0ZSog
c2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlU2FtcGxlclN0YXRlX2F0SW5kZXhf
KSwgc2FtcGxlciwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVTYW1wbGVyU3RhdGVz
OndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
c2V0VGlsZVNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpS
YW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZXNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBy
YW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZVNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDps
b2RNYXhDbGFtcDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRF
bmNvZGVyOjpzZXRUaWxlU2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1w
bGVyLCBmbG9hdCBsb2RNaW5DbGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBp
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdEluZGV4
XyksIHNhbXBsZXIsIGxvZE1pbkNsYW1wLCBsb2RNYXhDbGFtcCwgaW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldFRpbGVTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RNYXhDbGFtcHM6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRU
aWxlU2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxv
YXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2Ug
cmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNfd2l0
aFJhbmdlXyksIHNhbXBsZXJzLCBsb2RNaW5DbGFtcHMsIGxvZE1heENsYW1wcywgcmFuZ2UpOwor
fQorCisvLyBtZXRob2Q6IHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlVmlz
aWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rp
b25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlVmlzaWJsZUZ1bmN0aW9u
VGFibGVfYXRCdWZmZXJJbmRleF8pLCBmdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVWaXNp
YmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rp
b25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlVmlzaWJsZUZ1bmN0aW9uVGFibGVz
X3dpdGhCdWZmZXJSYW5nZV8pLCBmdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRo
b2Q6IHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxl
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIGludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlSW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZXMoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMsIHJh
bmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVm
ZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNl
dFRpbGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRU
aWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfKSwgYWNjZWxlcmF0aW9uU3Ry
dWN0dXJlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogZGlzcGF0Y2hUaHJlYWRzUGVy
VGlsZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZGlzcGF0
Y2hUaHJlYWRzUGVyVGlsZShNVEw6OlNpemUgdGhyZWFkc1BlclRpbGUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVGhyZWFk
c1BlclRpbGVfKSwgdGhyZWFkc1BlclRpbGUpOworfQorCisvLyBtZXRob2Q6IHNldFRocmVhZGdy
b3VwTWVtb3J5TGVuZ3RoOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVn
ZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRo
cmVhZGdyb3VwTWVtb3J5TGVuZ3RoX29mZnNldF9hdEluZGV4XyksIGxlbmd0aCwgb2Zmc2V0LCBp
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2U6dXNhZ2U6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlKGNvbnN0IE1UTDo6UmVz
b3VyY2UqIHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJlc291cmNlX3Vz
YWdlXyksIHJlc291cmNlLCB1c2FnZSk7Cit9CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2VzOmNv
dW50OnVzYWdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1
c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3Vu
dCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZXNfY291bnRfdXNhZ2VfKSwg
cmVzb3VyY2VzLCBjb3VudCwgdXNhZ2UpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlOnVz
YWdlOnN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
dXNlUmVzb3VyY2UoY29uc3QgTVRMOjpSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VV
c2FnZSB1c2FnZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZV91c2FnZV9z
dGFnZXNfKSwgcmVzb3VyY2UsIHVzYWdlLCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6IHVzZVJl
c291cmNlczpjb3VudDp1c2FnZTpzdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXMsIE5T
OjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlLCBNVEw6OlJlbmRlclN0
YWdlcyBzdGFnZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHVzZVJlc291cmNlc19jb3VudF91c2FnZV9zdGFnZXNfKSwgcmVzb3VyY2Vz
LCBjb3VudCwgdXNhZ2UsIHN0YWdlcyk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcChjb25zdCBNVEw6
OkhlYXAqIGhlYXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHVzZUhlYXBfKSwgaGVhcCk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcHM6
Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVzZUhl
YXBzKE1UTDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwc19jb3Vu
dF8pLCBoZWFwcywgY291bnQpOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXA6c3RhZ2VzOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwKGNvbnN0IE1U
TDo6SGVhcCogaGVhcCwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwX3N0YWdlc18p
LCBoZWFwLCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXBzOmNvdW50OnN0YWdlczoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcHMoTVRM
OjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0
YWdlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodXNlSGVhcHNfY291bnRfc3RhZ2VzXyksIGhlYXBzLCBjb3VudCwgc3RhZ2VzKTsKK30K
KworLy8gbWV0aG9kOiBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmV4ZWN1dGVDb21tYW5kc0luQnVm
ZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZm
ZXIsIE5TOjpSYW5nZSBleGVjdXRpb25SYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXJfd2l0
aFJhbmdlXyksIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgZXhlY3V0aW9uUmFuZ2UpOworfQorCisv
LyBtZXRob2Q6IGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyOmluZGlyZWN0QnVmZmVyOmluZGlyZWN0
QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZl
ciogaW5kaXJlY3RDb21tYW5kYnVmZmVyLCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kaXJlY3RSYW5n
ZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChleGVjdXRlQ29tbWFu
ZHNJbkJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8pLCBpbmRpcmVj
dENvbW1hbmRidWZmZXIsIGluZGlyZWN0UmFuZ2VCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0
KTsKK30KKworLy8gbWV0aG9kOiBtZW1vcnlCYXJyaWVyV2l0aFNjb3BlOmFmdGVyU3RhZ2VzOmJl
Zm9yZVN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
bWVtb3J5QmFycmllcihNVEw6OkJhcnJpZXJTY29wZSBzY29wZSwgTVRMOjpSZW5kZXJTdGFnZXMg
YWZ0ZXIsIE1UTDo6UmVuZGVyU3RhZ2VzIGJlZm9yZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtb3J5QmFycmllcldpdGhTY29wZV9h
ZnRlclN0YWdlc19iZWZvcmVTdGFnZXNfKSwgc2NvcGUsIGFmdGVyLCBiZWZvcmUpOworfQorCisv
LyBtZXRob2Q6IG1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzOmNvdW50OmFmdGVyU3RhZ2VzOmJl
Zm9yZVN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
bWVtb3J5QmFycmllcihNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2VyIGNv
dW50LCBNVEw6OlJlbmRlclN0YWdlcyBhZnRlciwgTVRMOjpSZW5kZXJTdGFnZXMgYmVmb3JlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCht
ZW1vcnlCYXJyaWVyV2l0aFJlc291cmNlc19jb3VudF9hZnRlclN0YWdlc19iZWZvcmVTdGFnZXNf
KSwgcmVzb3VyY2VzLCBjb3VudCwgYWZ0ZXIsIGJlZm9yZSk7Cit9CisKKy8vIG1ldGhvZDogc2Ft
cGxlQ291bnRlcnNJbkJ1ZmZlcjphdFNhbXBsZUluZGV4OndpdGhCYXJyaWVyOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzYW1wbGVDb3VudGVyc0luQnVmZmVy
KGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6VUludGVn
ZXIgc2FtcGxlSW5kZXgsIGJvb2wgYmFycmllcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcl9hdFNh
bXBsZUluZGV4X3dpdGhCYXJyaWVyXyksIHNhbXBsZUJ1ZmZlciwgc2FtcGxlSW5kZXgsIGJhcnJp
ZXIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTFJlbmRlclBhc3MuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTFJlbmRlclBhc3MuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1NzUxZWFhZTU1ZTBkODRjOTAzZjMzNzFk
MjViMTI5OTI1Mzk3ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGFzcy5ocHAKQEAgLTAsMCArMSw3ODYgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01U
TFJlbmRlclBhc3MuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisv
LworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVy
QnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZW5kZXJQYXNzLmhwcCIKKwor
bmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgTG9hZEFjdGlvbikgewor
ICAgIExvYWRBY3Rpb25Eb250Q2FyZSA9IDAsCisgICAgTG9hZEFjdGlvbkxvYWQgPSAxLAorICAg
IExvYWRBY3Rpb25DbGVhciA9IDIsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBTdG9y
ZUFjdGlvbikgeworICAgIFN0b3JlQWN0aW9uRG9udENhcmUgPSAwLAorICAgIFN0b3JlQWN0aW9u
U3RvcmUgPSAxLAorICAgIFN0b3JlQWN0aW9uTXVsdGlzYW1wbGVSZXNvbHZlID0gMiwKKyAgICBT
dG9yZUFjdGlvblN0b3JlQW5kTXVsdGlzYW1wbGVSZXNvbHZlID0gMywKKyAgICBTdG9yZUFjdGlv
blVua25vd24gPSA0LAorICAgIFN0b3JlQWN0aW9uQ3VzdG9tU2FtcGxlRGVwdGhTdG9yZSA9IDUs
Cit9OworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBTdG9yZUFjdGlvbk9wdGlvbnMpIHsK
KyAgICBTdG9yZUFjdGlvbk9wdGlvbk5vbmUgPSAwLAorICAgIFN0b3JlQWN0aW9uT3B0aW9uVmFs
aWRNYXNrID0gMSwKKyAgICBTdG9yZUFjdGlvbk9wdGlvbkN1c3RvbVNhbXBsZVBvc2l0aW9ucyA9
IDEsCit9OworCitzdHJ1Y3QgQ2xlYXJDb2xvcgoreworICAgIHN0YXRpYyBDbGVhckNvbG9yIE1h
a2UoZG91YmxlIHJlZCwgZG91YmxlIGdyZWVuLCBkb3VibGUgYmx1ZSwgZG91YmxlIGFscGhhKTsK
KworICAgIENsZWFyQ29sb3IoKSA9IGRlZmF1bHQ7CisKKyAgICBDbGVhckNvbG9yKGRvdWJsZSBy
ZWQsIGRvdWJsZSBncmVlbiwgZG91YmxlIGJsdWUsIGRvdWJsZSBhbHBoYSk7CisKKyAgICBkb3Vi
bGUgcmVkOworICAgIGRvdWJsZSBncmVlbjsKKyAgICBkb3VibGUgYmx1ZTsKKyAgICBkb3VibGUg
YWxwaGE7Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiB0
ZXh0dXJlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxldmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0TGV2ZWwoTlM6OlVJbnRlZ2VyIGxldmVsKTsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2xpY2UoTlM6
OlVJbnRlZ2VyIHNsaWNlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlcHRoUGxhbmUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFBsYW5lKE5TOjpVSW50ZWdlciBkZXB0
aFBsYW5lKTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc29sdmVUZXh0dXJlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0UmVzb2x2ZVRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVy
ZSogcmVzb2x2ZVRleHR1cmUpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZUxldmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzb2x2ZUxldmVsKE5TOjpVSW50ZWdl
ciByZXNvbHZlTGV2ZWwpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZVNsaWNlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzb2x2ZVNsaWNlKE5TOjpVSW50ZWdlciBy
ZXNvbHZlU2xpY2UpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzb2x2ZURlcHRoUGxhbmUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNvbHZlRGVwdGhQbGFuZShOUzo6VUlu
dGVnZXIgcmVzb2x2ZURlcHRoUGxhbmUpOworCisgICAgTVRMOjpMb2FkQWN0aW9uICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZEFjdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExvYWRBY3Rpb24oTVRMOjpMb2Fk
QWN0aW9uIGxvYWRBY3Rpb24pOworCisgICAgTVRMOjpTdG9yZUFjdGlvbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RvcmVBY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0
aW9uIHN0b3JlQWN0aW9uKTsKKworICAgIE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zICAgICAgICAg
ICAgICAgICAgICAgIHN0b3JlQWN0aW9uT3B0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0b3JlQWN0aW9uT3B0aW9ucyhN
VEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpOworfTsKKworY2xhc3Mg
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IsIE1UTDo6UmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpD
bGVhckNvbG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckNvbG9yKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRDbGVhckNvbG9yKE1UTDo6Q2xlYXJDb2xvciBjbGVhckNvbG9yKTsKK307CisKK19N
VExfRU5VTShOUzo6VUludGVnZXIsIE11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyKSB7Cisg
ICAgTXVsdGlzYW1wbGVEZXB0aFJlc29sdmVGaWx0ZXJTYW1wbGUwID0gMCwKKyAgICBNdWx0aXNh
bXBsZURlcHRoUmVzb2x2ZUZpbHRlck1pbiA9IDEsCisgICAgTXVsdGlzYW1wbGVEZXB0aFJlc29s
dmVGaWx0ZXJNYXggPSAyLAorfTsKKworY2xhc3MgUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IsIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciog
YWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
KiAgICAgICAgaW5pdCgpOworCisgICAgZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGVhckRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDbGVhckRlcHRoKGRvdWJsZSBj
bGVhckRlcHRoKTsKKworICAgIE1UTDo6TXVsdGlzYW1wbGVEZXB0aFJlc29sdmVGaWx0ZXIgICAg
ICAgICAgICAgICAgZGVwdGhSZXNvbHZlRmlsdGVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFJlc29sdmVGaWx0
ZXIoTVRMOjpNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlciBkZXB0aFJlc29sdmVGaWx0ZXIp
OworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgTXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2
ZUZpbHRlcikgeworICAgIE11bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXJTYW1wbGUwID0g
MCwKKyAgICBNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyRGVwdGhSZXNvbHZlZFNhbXBs
ZSA9IDEsCit9OworCitjbGFzcyBSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9y
IDogcHVibGljIE5TOjpDb3B5aW5nPFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0
b3IsIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgorICAg
IHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciog
ICAgICAgIGluaXQoKTsKKworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGVhclN0ZW5jaWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q2xlYXJTdGVuY2lsKHVp
bnQzMl90IGNsZWFyU3RlbmNpbCk7CisKKyAgICBNVEw6Ok11bHRpc2FtcGxlU3RlbmNpbFJlc29s
dmVGaWx0ZXIgICAgICAgICAgICAgICAgc3RlbmNpbFJlc29sdmVGaWx0ZXIoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
U3RlbmNpbFJlc29sdmVGaWx0ZXIoTVRMOjpNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVy
IHN0ZW5jaWxSZXNvbHZlRmlsdGVyKTsKK307CisKK2NsYXNzIFJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAgICAg
ICAgaW5pdCgpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRPYmplY3QoY29uc3QgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworfTsKKworY2xh
c3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIE5T
OjpDb3B5aW5nPFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQ291bnRl
clNhbXBsZUJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQnVmZmVy
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0U2FtcGxlQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVC
dWZmZXIqIHNhbXBsZUJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRTdGFydE9mVmVydGV4U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0
T2ZWZXJ0ZXhTYW1wbGVJbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRPZlZlcnRleFNhbXBsZUluZGV4KCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZWZXJ0
ZXhTYW1wbGVJbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9m
RnJhZ21lbnRTYW1wbGVJbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRFbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9m
RnJhZ21lbnRTYW1wbGVJbmRleCk7Cit9OworCitjbGFzcyBSZW5kZXJQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVy
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
ckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBSZW5kZXJQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChO
Uzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0
IGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNo
bWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7Cit9OworCitjbGFzcyBSZW5kZXJQ
YXNzRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQYXNzRGVzY3JpcHRvcj4K
K3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc0Rlc2NyaXB0b3IqICAgICAg
ICAgICAgICAgICAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NEZXNjcmlwdG9y
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xhc3Mg
UmVuZGVyUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgcmVuZGVyUGFzc0Rlc2Ny
aXB0b3IoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
QXJyYXkqICAgICAgICBjb2xvckF0dGFjaG1lbnRzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgZGVwdGhBdHRhY2ht
ZW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldERlcHRoQXR0YWNobWVudChjb25zdCBjbGFzcyBSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVwdGhBdHRhY2htZW50KTsKKworICAgIGNsYXNz
IFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICBzdGVuY2ls
QXR0YWNobWVudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVuY2lsQXR0YWNobWVudChjb25zdCBjbGFzcyBS
ZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiBzdGVuY2lsQXR0YWNobWVudCk7
CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWaXNpYmlsaXR5UmVz
dWx0QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogdmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcik7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVuZGVyVGFyZ2V0QXJy
YXlMZW5ndGgoTlM6OlVJbnRlZ2VyIHJlbmRlclRhcmdldEFycmF5TGVuZ3RoKTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFn
ZWJsb2NrU2FtcGxlTGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEltYWdlYmxvY2tTYW1wbGVMZW5ndGgo
TlM6OlVJbnRlZ2VyIGltYWdlYmxvY2tTYW1wbGVMZW5ndGgpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGdyb3VwTWVt
b3J5TGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKE5TOjpVSW50
ZWdlciB0aHJlYWRncm91cE1lbW9yeUxlbmd0aCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZVdpZHRoKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFRpbGVXaWR0aChOUzo6VUludGVnZXIgdGlsZVdpZHRoKTsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlSGVpZ2h0KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFRpbGVIZWlnaHQoTlM6OlVJbnRlZ2VyIHRpbGVIZWlnaHQpOworCisgICAg
TlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZWZhdWx0UmFzdGVyU2FtcGxl
Q291bnQoTlM6OlVJbnRlZ2VyIGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVy
VGFyZ2V0V2lkdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVuZGVyVGFyZ2V0V2lkdGgoTlM6OlVJbnRlZ2Vy
IHJlbmRlclRhcmdldFdpZHRoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXRIZWlnaHQoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0UmVuZGVyVGFyZ2V0SGVpZ2h0KE5TOjpVSW50ZWdlciByZW5kZXJUYXJnZXRIZWlnaHQpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFNhbXBsZVBvc2l0aW9ucyhjb25zdCBNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlv
bnMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2FtcGxlUG9zaXRpb25zKE1UTDo6U2Ft
cGxlUG9zaXRpb24qIHBvc2l0aW9ucywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAgIGNsYXNz
IFJhc3Rlcml6YXRpb25SYXRlTWFwKiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXN0ZXJp
emF0aW9uUmF0ZU1hcCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcChjb25zdCBj
bGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcCogcmFzdGVyaXphdGlvblJhdGVNYXApOworCisgICAg
Y2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIHNh
bXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3Q7Cit9OworCit9CisKK19NVExfSU5MSU5FIE1U
TDo6Q2xlYXJDb2xvciBNVEw6OkNsZWFyQ29sb3I6Ok1ha2UoZG91YmxlIHJlZCwgZG91YmxlIGdy
ZWVuLCBkb3VibGUgYmx1ZSwgZG91YmxlIGFscGhhKQoreworICAgIHJldHVybiBDbGVhckNvbG9y
KHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKK30KKworX01UTF9JTkxJTkUgTVRMOjpDbGVhckNv
bG9yOjpDbGVhckNvbG9yKGRvdWJsZSBfcmVkLCBkb3VibGUgX2dyZWVuLCBkb3VibGUgX2JsdWUs
IGRvdWJsZSBfYWxwaGEpCisgICAgOiByZWQoX3JlZCkKKyAgICAsIGdyZWVuKF9ncmVlbikKKyAg
ICAsIGJsdWUoX2JsdWUpCisgICAgLCBhbHBoYShfYWxwaGEpCit7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvciogTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpp
bml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmUKK19NVExfSU5M
SU5FIE1UTDo6VGV4dHVyZSogTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnRl
eHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4
dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZSkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRUZXh0dXJlKGNv
bnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGV4dHVyZV8pLCB0ZXh0dXJlKTsKK30KKwor
Ly8gcHJvcGVydHk6IGxldmVsCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OmxldmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGV2
ZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcjo6c2V0TGV2ZWwoTlM6OlVJbnRlZ2VyIGxldmVsKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMZXZlbF8pLCBsZXZlbCk7
Cit9CisKKy8vIHByb3BlcnR5OiBzbGljZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzbGljZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNsaWNlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3I6OnNldFNsaWNlKE5TOjpVSW50ZWdlciBzbGljZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2xpY2VfKSwg
c2xpY2UpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGhQbGFuZQorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpkZXB0aFBsYW5lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhQbGFuZSkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXREZXB0aFBsYW5lKE5TOjpV
SW50ZWdlciBkZXB0aFBsYW5lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFBsYW5lXyksIGRlcHRoUGxhbmUpOworfQorCisv
LyBwcm9wZXJ0eTogcmVzb2x2ZVRleHR1cmUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRM
OjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnJlc29sdmVUZXh0dXJlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHJlc29sdmVUZXh0dXJlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFJlc29sdmVUZXh0dXJlKGNv
bnN0IE1UTDo6VGV4dHVyZSogcmVzb2x2ZVRleHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc29sdmVUZXh0dXJlXyksIHJl
c29sdmVUZXh0dXJlKTsKK30KKworLy8gcHJvcGVydHk6IHJlc29sdmVMZXZlbAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpyZXNv
bHZlTGV2ZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvbHZlTGV2ZWwpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UmVz
b2x2ZUxldmVsKE5TOjpVSW50ZWdlciByZXNvbHZlTGV2ZWwpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc29sdmVMZXZlbF8pLCBy
ZXNvbHZlTGV2ZWwpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb2x2ZVNsaWNlCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnJlc29s
dmVTbGljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc29sdmVTbGljZSkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRSZXNv
bHZlU2xpY2UoTlM6OlVJbnRlZ2VyIHJlc29sdmVTbGljZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVzb2x2ZVNsaWNlXyksIHJl
c29sdmVTbGljZSk7Cit9CisKKy8vIHByb3BlcnR5OiByZXNvbHZlRGVwdGhQbGFuZQorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpy
ZXNvbHZlRGVwdGhQbGFuZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc29sdmVEZXB0aFBsYW5l
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3I6OnNldFJlc29sdmVEZXB0aFBsYW5lKE5TOjpVSW50ZWdlciByZXNvbHZlRGVwdGhQbGFu
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0UmVzb2x2ZURlcHRoUGxhbmVfKSwgcmVzb2x2ZURlcHRoUGxhbmUpOworfQorCisvLyBw
cm9wZXJ0eTogbG9hZEFjdGlvbgorX01UTF9JTkxJTkUgTVRMOjpMb2FkQWN0aW9uIE1UTDo6UmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpsb2FkQWN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxvYWRBY3Rpb24+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobG9hZEFjdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRMb2FkQWN0aW9uKE1UTDo6TG9hZEFjdGlvbiBs
b2FkQWN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRMb2FkQWN0aW9uXyksIGxvYWRBY3Rpb24pOworfQorCisvLyBwcm9wZXJ0
eTogc3RvcmVBY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6U3RvcmVBY3Rpb24gTVRMOjpSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnN0b3JlQWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JlQWN0aW9uPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHN0b3JlQWN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24g
c3RvcmVBY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFN0b3JlQWN0aW9uXyksIHN0b3JlQWN0aW9uKTsKK30KKworLy8gcHJv
cGVydHk6IHN0b3JlQWN0aW9uT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpTdG9yZUFjdGlvbk9w
dGlvbnMgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnN0b3JlQWN0aW9uT3B0
aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdG9y
ZUFjdGlvbk9wdGlvbnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RvcmVBY3Rpb25PcHRpb25z
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3I6OnNldFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9y
ZUFjdGlvbk9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0b3JlQWN0aW9uT3B0aW9uc18pLCBzdG9yZUFjdGlvbk9wdGlv
bnMpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVf
Q0xTKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGNsZWFyQ29sb3IKK19NVExf
SU5MSU5FIE1UTDo6Q2xlYXJDb2xvciBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjpjbGVhckNvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkNsZWFyQ29sb3I+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY2xlYXJDb2xvcikp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I6OnNldENsZWFyQ29sb3IoTVRMOjpDbGVhckNvbG9yIGNsZWFyQ29sb3IpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENs
ZWFyQ29sb3JfKSwgY2xlYXJDb2xvcik7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6
OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6
OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0
eTogY2xlYXJEZXB0aAorX01UTF9JTkxJTkUgZG91YmxlIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3I6OmNsZWFyRGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPGRvdWJsZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChjbGVhckRlcHRo
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6c2V0Q2xlYXJEZXB0aChkb3VibGUgY2xlYXJEZXB0aCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q2xlYXJEZXB0
aF8pLCBjbGVhckRlcHRoKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoUmVzb2x2ZUZpbHRlcgor
X01UTF9JTkxJTkUgTVRMOjpNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlciBNVEw6OlJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpkZXB0aFJlc29sdmVGaWx0ZXIoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TXVsdGlzYW1wbGVEZXB0
aFJlc29sdmVGaWx0ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhSZXNvbHZlRmlsdGVy
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6c2V0RGVwdGhSZXNvbHZlRmlsdGVyKE1UTDo6TXVsdGlzYW1wbGVEZXB0aFJl
c29sdmVGaWx0ZXIgZGVwdGhSZXNvbHZlRmlsdGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFJlc29sdmVGaWx0ZXJfKSwg
ZGVwdGhSZXNvbHZlRmlsdGVyKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExf
SU5MSU5FIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpS
ZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnRE
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5k
ZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NTdGVuY2ls
QXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj4oKTsKK30KKwor
Ly8gcHJvcGVydHk6IGNsZWFyU3RlbmNpbAorX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpSZW5k
ZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhclN0ZW5jaWwoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGNsZWFyU3RlbmNpbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJTdGVuY2lsKHVpbnQz
Ml90IGNsZWFyU3RlbmNpbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0Q2xlYXJTdGVuY2lsXyksIGNsZWFyU3RlbmNpbCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBzdGVuY2lsUmVzb2x2ZUZpbHRlcgorX01UTF9JTkxJTkUgTVRMOjpNdWx0
aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c3RlbmNpbFJlc29sdmVGaWx0ZXIoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZpbHRl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVuY2lsUmVzb2x2ZUZpbHRlcikpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRv
cjo6c2V0U3RlbmNpbFJlc29sdmVGaWx0ZXIoTVRMOjpNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZl
RmlsdGVyIHN0ZW5jaWxSZXNvbHZlRmlsdGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsUmVzb2x2ZUZpbHRlcl8pLCBz
dGVuY2lsUmVzb2x2ZUZpbHRlcik7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1U
TDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0
OgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciog
TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6
OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudEluZGV4
KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6
OnNldE9iamVjdChjb25zdCBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJ
bmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I+KF9NVExf
UFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oKTsK
K30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpDb3VudGVy
U2FtcGxlQnVmZmVyKiBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2FtcGxlQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNh
bXBsZUJ1ZmZlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTYW1wbGVCdWZmZXIoY29uc3QgTVRMOjpD
b3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZUJ1ZmZlcl8pLCBzYW1w
bGVCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3I6OnN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdGFy
dE9mVmVydGV4U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0U3RhcnRPZlZlcnRleFNhbXBsZUluZGV4XyksIHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRl
eCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmRPZlZlcnRleFNhbXBsZUluZGV4CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3I6OmVuZE9mVmVydGV4U2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmRP
ZlZlcnRleFNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldEVuZE9mVmVydGV4U2FtcGxl
SW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mVmVydGV4U2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEVuZE9mVmVydGV4
U2FtcGxlSW5kZXhfKSwgZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5
OiBzdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzdGFydE9mRnJh
Z21lbnRTYW1wbGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0T2ZGcmFnbWVudFNh
bXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4
KE5TOjpVSW50ZWdlciBzdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhcnRPZkZyYWdt
ZW50U2FtcGxlSW5kZXhfKSwgc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgpOworfQorCisvLyBw
cm9wZXJ0eTogZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OmVuZE9m
RnJhZ21lbnRTYW1wbGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZE9mRnJhZ21lbnRT
YW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRFbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgo
TlM6OlVJbnRlZ2VyIGVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RW5kT2ZGcmFnbWVudFNh
bXBsZUluZGV4XyksIGVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+
KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJl
bmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRl
clBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhl
ZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRl
eGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2Jq
ZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1U
TDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50
LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2Ny
aXB0XyksIGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yKiBNVEw6OlJl
bmRlclBhc3NEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVy
UGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OlJlbmRlclBhc3NEZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9y
PigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiByZW5kZXJQYXNzRGVzY3JpcHRvcgorX01UTF9J
TkxJTkUgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRv
cjo6cmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRl
clBhc3NEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChyZW5kZXJQYXNzRGVzY3JpcHRvcikp
OworfQorCisvLyBwcm9wZXJ0eTogY29sb3JBdHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBhc3NE
ZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbG9yQXR0YWNobWVudHMpKTsKK30KKworLy8g
cHJvcGVydHk6IGRlcHRoQXR0YWNobWVudAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6ZGVwdGhB
dHRhY2htZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChkZXB0aEF0dGFjaG1lbnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
clBhc3NEZXNjcmlwdG9yOjpzZXREZXB0aEF0dGFjaG1lbnQoY29uc3QgTVRMOjpSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVwdGhBdHRhY2htZW50KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aEF0dGFj
aG1lbnRfKSwgZGVwdGhBdHRhY2htZW50KTsKK30KKworLy8gcHJvcGVydHk6IHN0ZW5jaWxBdHRh
Y2htZW50CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3IqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnN0ZW5jaWxBdHRhY2htZW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBhc3NTdGVu
Y2lsQXR0YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZW5jaWxB
dHRhY2htZW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3Jp
cHRvcjo6c2V0U3RlbmNpbEF0dGFjaG1lbnQoY29uc3QgTVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0
dGFjaG1lbnREZXNjcmlwdG9yKiBzdGVuY2lsQXR0YWNobWVudCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbEF0dGFjaG1l
bnRfKSwgc3RlbmNpbEF0dGFjaG1lbnQpOworfQorCisvLyBwcm9wZXJ0eTogdmlzaWJpbGl0eVJl
c3VsdEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6UmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OnZpc2liaWxpdHlSZXN1bHRCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2aXNp
YmlsaXR5UmVzdWx0QnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
YXNzRGVzY3JpcHRvcjo6c2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZl
ciogdmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcl8pLCB2
aXNpYmlsaXR5UmVzdWx0QnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IHJlbmRlclRhcmdldEFy
cmF5TGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3Jp
cHRvcjo6cmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZW5k
ZXJUYXJnZXRBcnJheUxlbmd0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGFzc0Rlc2NyaXB0b3I6OnNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdlciBy
ZW5kZXJUYXJnZXRBcnJheUxlbmd0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGhfKSwgcmVu
ZGVyVGFyZ2V0QXJyYXlMZW5ndGgpOworfQorCisvLyBwcm9wZXJ0eTogaW1hZ2VibG9ja1NhbXBs
ZUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0
b3I6OmltYWdlYmxvY2tTYW1wbGVMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbWFnZWJs
b2NrU2FtcGxlTGVuZ3RoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNz
RGVzY3JpcHRvcjo6c2V0SW1hZ2VibG9ja1NhbXBsZUxlbmd0aChOUzo6VUludGVnZXIgaW1hZ2Vi
bG9ja1NhbXBsZUxlbmd0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0SW1hZ2VibG9ja1NhbXBsZUxlbmd0aF8pLCBpbWFnZWJsb2Nr
U2FtcGxlTGVuZ3RoKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZGdyb3VwTWVtb3J5TGVuZ3Ro
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dGhy
ZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRncm91cE1l
bW9yeUxlbmd0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OnNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKE5TOjpVSW50ZWdlciB0aHJlYWRncm91
cE1lbW9yeUxlbmd0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGhfKSwgdGhyZWFkZ3JvdXBN
ZW1vcnlMZW5ndGgpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZVdpZHRoCitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dGlsZVdpZHRoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodGlsZVdpZHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0VGlsZVdpZHRoKE5TOjpVSW50ZWdlciB0aWxlV2lkdGgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFRpbGVXaWR0aF8pLCB0aWxlV2lkdGgpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZUhlaWdo
dAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnRp
bGVIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aWxlSGVpZ2h0KSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0VGlsZUhlaWdodChOUzo6
VUludGVnZXIgdGlsZUhlaWdodCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUhlaWdodF8pLCB0aWxlSGVpZ2h0KTsKK30KKwor
Ly8gcHJvcGVydHk6IGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmRlZmF1bHRSYXN0ZXJTYW1wbGVDb3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldERlZmF1bHRS
YXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgZGVmYXVsdFJhc3RlclNhbXBsZUNvdW50KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXREZWZhdWx0UmFzdGVyU2FtcGxlQ291bnRfKSwgZGVmYXVsdFJhc3RlclNhbXBsZUNvdW50KTsK
K30KKworLy8gcHJvcGVydHk6IHJlbmRlclRhcmdldFdpZHRoCitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6cmVuZGVyVGFyZ2V0V2lkdGgoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChyZW5kZXJUYXJnZXRXaWR0aCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFJlbmRlclRhcmdldFdpZHRoKE5TOjpV
SW50ZWdlciByZW5kZXJUYXJnZXRXaWR0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyVGFyZ2V0V2lkdGhfKSwgcmVuZGVy
VGFyZ2V0V2lkdGgpOworfQorCisvLyBwcm9wZXJ0eTogcmVuZGVyVGFyZ2V0SGVpZ2h0CitfTVRM
X0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6cmVuZGVyVGFy
Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyVGFyZ2V0SGVpZ2h0KSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0UmVuZGVy
VGFyZ2V0SGVpZ2h0KE5TOjpVSW50ZWdlciByZW5kZXJUYXJnZXRIZWlnaHQpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlbmRlclRh
cmdldEhlaWdodF8pLCByZW5kZXJUYXJnZXRIZWlnaHQpOworfQorCisvLyBtZXRob2Q6IHNldFNh
bXBsZVBvc2l0aW9uczpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVz
Y3JpcHRvcjo6c2V0U2FtcGxlUG9zaXRpb25zKGNvbnN0IE1UTDo6U2FtcGxlUG9zaXRpb24qIHBv
c2l0aW9ucywgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVQb3NpdGlvbnNfY291bnRfKSwg
cG9zaXRpb25zLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZ2V0U2FtcGxlUG9zaXRpb25zOmNv
dW50OgorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6
OmdldFNhbXBsZVBvc2l0aW9ucyhNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5TOjpV
SW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZ2V0U2FtcGxlUG9zaXRpb25zX2NvdW50Xyks
IHBvc2l0aW9ucywgY291bnQpOworfQorCisvLyBwcm9wZXJ0eTogcmFzdGVyaXphdGlvblJhdGVN
YXAKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXAqIE1UTDo6UmVuZGVyUGFz
c0Rlc2NyaXB0b3I6OnJhc3Rlcml6YXRpb25SYXRlTWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChyYXN0ZXJpemF0aW9uUmF0ZU1hcCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFJhc3Rlcml6YXRpb25SYXRlTWFwKGNv
bnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXAqIHJhc3Rlcml6YXRpb25SYXRlTWFwKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRS
YXN0ZXJpemF0aW9uUmF0ZU1hcF8pLCByYXN0ZXJpemF0aW9uUmF0ZU1hcCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBzYW1wbGVCdWZmZXJBdHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQYXNz
RGVzY3JpcHRvcjo6c2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlckF0
dGFjaG1lbnRzKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMUmVuZGVyUGlwZWxpbmUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDFkYjZmNmIz
N2UwMmZlM2I2YTZmMDZkYjkzMGE2ZjIzY2FlMWMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhwcApAQCAt
MCwwICsxLDEyMTIgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIE1ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVk
ZSAiTVRMUGl4ZWxGb3JtYXQuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlckNvbW1hbmRFbmNvZGVy
LmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQaXBlbGluZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlw
ZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBCbGVu
ZEZhY3RvcikgeworICAgIEJsZW5kRmFjdG9yWmVybyA9IDAsCisgICAgQmxlbmRGYWN0b3JPbmUg
PSAxLAorICAgIEJsZW5kRmFjdG9yU291cmNlQ29sb3IgPSAyLAorICAgIEJsZW5kRmFjdG9yT25l
TWludXNTb3VyY2VDb2xvciA9IDMsCisgICAgQmxlbmRGYWN0b3JTb3VyY2VBbHBoYSA9IDQsCisg
ICAgQmxlbmRGYWN0b3JPbmVNaW51c1NvdXJjZUFscGhhID0gNSwKKyAgICBCbGVuZEZhY3RvckRl
c3RpbmF0aW9uQ29sb3IgPSA2LAorICAgIEJsZW5kRmFjdG9yT25lTWludXNEZXN0aW5hdGlvbkNv
bG9yID0gNywKKyAgICBCbGVuZEZhY3RvckRlc3RpbmF0aW9uQWxwaGEgPSA4LAorICAgIEJsZW5k
RmFjdG9yT25lTWludXNEZXN0aW5hdGlvbkFscGhhID0gOSwKKyAgICBCbGVuZEZhY3RvclNvdXJj
ZUFscGhhU2F0dXJhdGVkID0gMTAsCisgICAgQmxlbmRGYWN0b3JCbGVuZENvbG9yID0gMTEsCisg
ICAgQmxlbmRGYWN0b3JPbmVNaW51c0JsZW5kQ29sb3IgPSAxMiwKKyAgICBCbGVuZEZhY3RvckJs
ZW5kQWxwaGEgPSAxMywKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzQmxlbmRBbHBoYSA9IDE0LAor
ICAgIEJsZW5kRmFjdG9yU291cmNlMUNvbG9yID0gMTUsCisgICAgQmxlbmRGYWN0b3JPbmVNaW51
c1NvdXJjZTFDb2xvciA9IDE2LAorICAgIEJsZW5kRmFjdG9yU291cmNlMUFscGhhID0gMTcsCisg
ICAgQmxlbmRGYWN0b3JPbmVNaW51c1NvdXJjZTFBbHBoYSA9IDE4LAorfTsKKworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgQmxlbmRPcGVyYXRpb24pIHsKKyAgICBCbGVuZE9wZXJhdGlvbkFkZCA9
IDAsCisgICAgQmxlbmRPcGVyYXRpb25TdWJ0cmFjdCA9IDEsCisgICAgQmxlbmRPcGVyYXRpb25S
ZXZlcnNlU3VidHJhY3QgPSAyLAorICAgIEJsZW5kT3BlcmF0aW9uTWluID0gMywKKyAgICBCbGVu
ZE9wZXJhdGlvbk1heCA9IDQsCit9OworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBDb2xv
cldyaXRlTWFzaykgeworICAgIENvbG9yV3JpdGVNYXNrTm9uZSA9IDAsCisgICAgQ29sb3JXcml0
ZU1hc2tBbHBoYSA9IDEsCisgICAgQ29sb3JXcml0ZU1hc2tCbHVlID0gMiwKKyAgICBDb2xvcldy
aXRlTWFza0dyZWVuID0gNCwKKyAgICBDb2xvcldyaXRlTWFza1JlZCA9IDgsCisgICAgQ29sb3JX
cml0ZU1hc2tBbGwgPSAxNSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFByaW1pdGl2
ZVRvcG9sb2d5Q2xhc3MpIHsKKyAgICBQcmltaXRpdmVUb3BvbG9neUNsYXNzVW5zcGVjaWZpZWQg
PSAwLAorICAgIFByaW1pdGl2ZVRvcG9sb2d5Q2xhc3NQb2ludCA9IDEsCisgICAgUHJpbWl0aXZl
VG9wb2xvZ3lDbGFzc0xpbmUgPSAyLAorICAgIFByaW1pdGl2ZVRvcG9sb2d5Q2xhc3NUcmlhbmds
ZSA9IDMsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBUZXNzZWxsYXRpb25QYXJ0aXRp
b25Nb2RlKSB7CisgICAgVGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZVBvdzIgPSAwLAorICAgIFRl
c3NlbGxhdGlvblBhcnRpdGlvbk1vZGVJbnRlZ2VyID0gMSwKKyAgICBUZXNzZWxsYXRpb25QYXJ0
aXRpb25Nb2RlRnJhY3Rpb25hbE9kZCA9IDIsCisgICAgVGVzc2VsbGF0aW9uUGFydGl0aW9uTW9k
ZUZyYWN0aW9uYWxFdmVuID0gMywKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFRlc3Nl
bGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbikgeworICAgIFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBG
dW5jdGlvbkNvbnN0YW50ID0gMCwKKyAgICBUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb25Q
ZXJQYXRjaCA9IDEsCisgICAgVGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uUGVySW5zdGFu
Y2UgPSAyLAorICAgIFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvblBlclBhdGNoQW5kUGVy
SW5zdGFuY2UgPSAzLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVGVzc2VsbGF0aW9u
RmFjdG9yRm9ybWF0KSB7CisgICAgVGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0SGFsZiA9IDAsCit9
OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRl
eFR5cGUpIHsKKyAgICBUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGVOb25lID0gMCwK
KyAgICBUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGVVSW50MTYgPSAxLAorICAgIFRl
c3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZVVJbnQzMiA9IDIsCit9OworCitjbGFzcyBS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlp
bmc8UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbEZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBpeGVs
Rm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpOworCisgICAgYm9vbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRpbmdFbmFibGVk
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0QmxlbmRpbmdFbmFibGVkKGJvb2wgYmxlbmRpbmdFbmFibGVkKTsKKwor
ICAgIE1UTDo6QmxlbmRGYWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNvdXJjZVJHQkJsZW5kRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U291cmNlUkdCQmxlbmRGYWN0b3Io
TVRMOjpCbGVuZEZhY3RvciBzb3VyY2VSR0JCbGVuZEZhY3Rvcik7CisKKyAgICBNVEw6OkJsZW5k
RmFjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvblJH
QkJsZW5kRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcihNVEw6
OkJsZW5kRmFjdG9yIGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IpOworCisgICAgTVRMOjpCbGVu
ZE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiQmxlbmRPcGVy
YXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRSZ2JCbGVuZE9wZXJhdGlvbihNVEw6OkJsZW5kT3BlcmF0aW9u
IHJnYkJsZW5kT3BlcmF0aW9uKTsKKworICAgIE1UTDo6QmxlbmRGYWN0b3IgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUFscGhhQmxlbmRGYWN0b3IoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yKE1UTDo6QmxlbmRGYWN0b3Igc291cmNlQWxwaGFC
bGVuZEZhY3Rvcik7CisKKyAgICBNVEw6OkJsZW5kRmFjdG9yICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXREZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBkZXN0aW5hdGlv
bkFscGhhQmxlbmRGYWN0b3IpOworCisgICAgTVRMOjpCbGVuZE9wZXJhdGlvbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFCbGVuZE9wZXJhdGlvbigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEFscGhhQmxlbmRPcGVyYXRpb24oTVRMOjpCbGVuZE9wZXJhdGlvbiBhbHBoYUJsZW5kT3BlcmF0
aW9uKTsKKworICAgIE1UTDo6Q29sb3JXcml0ZU1hc2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdyaXRlTWFzaygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFdyaXRlTWFzayhNVEw6OkNvbG9yV3Jp
dGVNYXNrIHdyaXRlTWFzayk7Cit9OworCitjbGFzcyBSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24g
OiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbj4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBhbGxvYygp
OworCisgICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiAgICAgICAgaW5pdCgpOwor
CisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4QXJndW1l
bnRzKCkgY29uc3Q7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFnbWVudEFyZ3VtZW50cygpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGlsZUFyZ3VtZW50cygpIGNvbnN0OworfTsKKworY2xhc3MgUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKiAgICAgICAgICAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6U3Ry
aW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRnVuY3Rp
b24qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEZ1bmN0aW9uKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFZlcnRleEZ1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiB2ZXJ0ZXhGdW5j
dGlvbik7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhZ21lbnRGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGcmFnbWVudEZ1bmN0aW9uKGNv
bnN0IGNsYXNzIEZ1bmN0aW9uKiBmcmFnbWVudEZ1bmN0aW9uKTsKKworICAgIGNsYXNzIFZlcnRl
eERlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhEZXNjcmlwdG9y
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFZlcnRleERlc2NyaXB0b3IoY29uc3QgY2xhc3MgVmVydGV4RGVzY3JpcHRv
ciogdmVydGV4RGVzY3JpcHRvcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FtcGxlQ291
bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXN0ZXJTYW1wbGVDb3VudCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRSYXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgcmFzdGVyU2FtcGxlQ291bnQpOwor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWxwaGFUb0NvdmVyYWdlRW5hYmxl
ZChib29sIGFscGhhVG9Db3ZlcmFnZUVuYWJsZWQpOworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhVG9PbmVFbmFibGVkKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldEFscGhhVG9PbmVFbmFibGVkKGJvb2wgYWxwaGFUb09uZUVuYWJsZWQpOworCisgICAg
Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhc3Rl
cml6YXRpb25FbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJhc3Rlcml6YXRpb25FbmFibGVkKGJvb2wgcmFz
dGVyaXphdGlvbkVuYWJsZWQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRNYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQoTlM6OlVJbnRlZ2VyIG1heFZlcnRleEFt
cGxpZmljYXRpb25Db3VudCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSogY29sb3JBdHRhY2htZW50cygpIGNvbnN0OworCisgICAgTVRM
OjpQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoQXR0
YWNobWVudFBpeGVsRm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0
KE1UTDo6UGl4ZWxGb3JtYXQgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQpOworCisgICAgTVRM
OjpQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZW5jaWxB
dHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZv
cm1hdChNVEw6OlBpeGVsRm9ybWF0IHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQpOworCisg
ICAgTVRMOjpQcmltaXRpdmVUb3BvbG9neUNsYXNzICAgICAgICAgICAgICAgICAgICAgICAgIGlu
cHV0UHJpbWl0aXZlVG9wb2xvZ3koKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRQcmltaXRpdmVUb3BvbG9neShN
VEw6OlByaW1pdGl2ZVRvcG9sb2d5Q2xhc3MgaW5wdXRQcmltaXRpdmVUb3BvbG9neSk7CisKKyAg
ICBNVEw6OlRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUgICAgICAgICAgICAgICAgICAgICAgdGVz
c2VsbGF0aW9uUGFydGl0aW9uTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXNzZWxsYXRpb25QYXJ0aXRpb25N
b2RlKE1UTDo6VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSB0ZXNzZWxsYXRpb25QYXJ0aXRpb25N
b2RlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhUZXNzZWxsYXRpb25GYWN0b3IoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4VGVzc2VsbGF0aW9u
RmFjdG9yKE5TOjpVSW50ZWdlciBtYXhUZXNzZWxsYXRpb25GYWN0b3IpOworCisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3NlbGxhdGlv
bkZhY3RvclNjYWxlRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVu
YWJsZWQoYm9vbCB0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQpOworCisgICAgTVRMOjpU
ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgIHRlc3NlbGxhdGlv
bkZhY3RvckZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQoTVRMOjpU
ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQgdGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KTsKKworICAg
IE1UTDo6VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlICAgICAgICAgICAgICB0ZXNz
ZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGVzc2VsbGF0aW9uQ29u
dHJvbFBvaW50SW5kZXhUeXBlKE1UTDo6VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBl
IHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSk7CisKKyAgICBNVEw6OlRlc3NlbGxh
dGlvbkZhY3RvclN0ZXBGdW5jdGlvbiAgICAgICAgICAgICAgICAgdGVzc2VsbGF0aW9uRmFjdG9y
U3RlcEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbihN
VEw6OlRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbiB0ZXNzZWxsYXRpb25GYWN0b3JTdGVw
RnVuY3Rpb24pOworCisgICAgTVRMOjpXaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRU
ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIoTVRMOjpXaW5kaW5nIHRlc3NlbGxhdGlvbk91
dHB1dFdpbmRpbmdPcmRlcik7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JB
cnJheSogICAgICAgICAgICAgICAgdmVydGV4QnVmZmVycygpIGNvbnN0OworCisgICAgY2xhc3Mg
UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqICAgICAgICAgICAgICAgIGZyYWdtZW50QnVm
ZmVycygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKGJvb2wgc3VwcG9ydEluZGlyZWN0Q29tbWFu
ZEJ1ZmZlcnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJpbmFyeUFyY2hpdmVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpbmFyeUFyY2hpdmVzKGNv
bnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleFByZWxvYWRlZExpYnJhcmll
cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRWZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiB2
ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogZnJh
Z21lbnRQcmVsb2FkZWRMaWJyYXJpZXMpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleExpbmtlZEZ1bmN0aW9ucygpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRWZXJ0ZXhMaW5rZWRGdW5jdGlvbnMoY29uc3QgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiB2
ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEZyYWdtZW50TGlua2VkRnVuY3Rpb25zKGNvbnN0IGNsYXNzIExpbmtlZEZ1bmN0aW9ucyog
ZnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5j
dGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0U3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucyhib29s
IHN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMpOworCisgICAgYm9vbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRBZGRpbmdGcmFn
bWVudEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5h
cnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1heFZlcnRleENhbGxTdGFja0RlcHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heFZlcnRleENhbGxTdGFja0Rl
cHRoKE5TOjpVSW50ZWdlciBtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RnJhZ21lbnRD
YWxsU3RhY2tEZXB0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKE5TOjpV
SW50ZWdlciBtYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworY2xh
c3MgUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5n
PFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yKiBhbGxvYygpOworCisg
ICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgp
OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleEFkZGl0aW9uYWxC
aW5hcnlGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiB2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVu
Y3Rpb25zKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZyYWdtZW50
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZyYWdtZW50QWRkaXRp
b25hbEJpbmFyeUZ1bmN0aW9ucyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogdGlsZUFkZGl0
aW9uYWxCaW5hcnlGdW5jdGlvbnMpOworfTsKKworY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVyUGlwZWxpbmVTdGF0ZT4KK3sKK3B1YmxpYzoK
KyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworCisg
ICAgY2xhc3MgRGV2aWNlKiAgICAgICAgICAgICAgICAgICAgZGV2aWNlKCkgY29uc3Q7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBtYXhUb3RhbFRocmVhZHNQZXJUaHJl
YWRncm91cCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgICBpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBpbWFnZWJsb2NrTWVtb3J5TGVu
Z3RoKE1UTDo6U2l6ZSBpbWFnZWJsb2NrRGltZW5zaW9ucyk7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0
OworCisgICAgY2xhc3MgRnVuY3Rpb25IYW5kbGUqICAgICAgICAgICAgZnVuY3Rpb25IYW5kbGUo
Y29uc3QgY2xhc3MgRnVuY3Rpb24qIGZ1bmN0aW9uLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZSk7
CisKKyAgICBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogICAgICBuZXdWaXNpYmxlRnVuY3Rp
b25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlKTsKKworICAgIGNsYXNzIEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUqIG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3Mg
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UmVu
ZGVyU3RhZ2VzIHN0YWdlKTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqICAgICAg
IG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVGdW5jdGlv
bnNEZXNjcmlwdG9yKiBhZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLCBOUzo6RXJyb3IqKiBlcnJv
cik7Cit9OworCitjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xh
c3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBp
bml0KCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7Cit9
OworCitjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDog
cHVibGljIE5TOjpDb3B5aW5nPFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBUaWxlUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAg
TVRMOjpQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBpeGVsRm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQpOworfTsKKworY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxUaWxlUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAg
c3RhdGljIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIFRpbGVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChO
Uzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25z
dCBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRh
Y2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIFRpbGVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VGlsZVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVGlsZVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciogICAgICAgICAgICAgIGFsbG9jKCk7CisKKyAgICBjbGFzcyBU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGluaXQoKTsK
KworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVs
KTsKKworICAgIGNsYXNzIEZ1bmN0aW9uKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGlsZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaWxlRnVuY3Rpb24oY29uc3Qg
Y2xhc3MgRnVuY3Rpb24qIHRpbGVGdW5jdGlvbik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhc3RlclNhbXBsZUNvdW50KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRSYXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgcmFzdGVyU2FtcGxl
Q291bnQpOworCisgICAgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5KiBjb2xvckF0dGFjaG1lbnRzKCkgY29uc3Q7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGdyb3Vw
U2l6ZU1hdGNoZXNUaWxlU2l6ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGhyZWFkZ3JvdXBTaXplTWF0Y2hl
c1RpbGVTaXplKGJvb2wgdGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKTsKKworICAgIGNs
YXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiAgICAgICAgICAgICAgICAgICAgdGls
ZUJ1ZmZlcnMoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldE1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKE5TOjpVSW50ZWdlciBt
YXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeUFyY2hpdmVzKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hpdmVz
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJlbG9hZGVkTGlicmFyaWVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcmVsb2FkZWRMaWJy
YXJpZXMoY29uc3QgTlM6OkFycmF5KiBwcmVsb2FkZWRMaWJyYXJpZXMpOworCisgICAgY2xhc3Mg
TGlua2VkRnVuY3Rpb25zKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZWRG
dW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldExpbmtlZEZ1bmN0aW9ucyhjb25zdCBjbGFzcyBMaW5r
ZWRGdW5jdGlvbnMqIGxpbmtlZEZ1bmN0aW9ucyk7CisKKyAgICBib29sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRBZGRpbmdCaW5hcnlG
dW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMoYm9v
bCBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Q2FsbFN0YWNrRGVwdGgo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1heENhbGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhDYWxsU3Rh
Y2tEZXB0aCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc2V0KCk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciogTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1U
TDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHBpeGVsRm9ybWF0CitfTVRMX0lO
TElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpwaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpQaXhlbEZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaXhlbEZv
cm1hdCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRQaXhlbEZvcm1hdF8pLCBwaXhlbEZvcm1hdCk7Cit9CisKKy8vIHByb3BlcnR5
OiBibGVuZGluZ0VuYWJsZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmJsZW5kaW5nRW5hYmxlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
c0JsZW5kaW5nRW5hYmxlZCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRCbGVuZGluZ0VuYWJsZWQoYm9vbCBi
bGVuZGluZ0VuYWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEJsZW5kaW5nRW5hYmxlZF8pLCBibGVuZGluZ0VuYWJsZWQpOwor
fQorCisvLyBwcm9wZXJ0eTogc291cmNlUkdCQmxlbmRGYWN0b3IKK19NVExfSU5MSU5FIE1UTDo6
QmxlbmRGYWN0b3IgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
OnNvdXJjZVJHQkJsZW5kRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkJsZW5kRmFjdG9yPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNvdXJjZVJH
QkJsZW5kRmFjdG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFNvdXJjZVJHQkJsZW5kRmFjdG9yKE1UTDo6
QmxlbmRGYWN0b3Igc291cmNlUkdCQmxlbmRGYWN0b3IpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNvdXJjZVJHQkJsZW5kRmFjdG9y
XyksIHNvdXJjZVJHQkJsZW5kRmFjdG9yKTsKK30KKworLy8gcHJvcGVydHk6IGRlc3RpbmF0aW9u
UkdCQmxlbmRGYWN0b3IKK19NVExfSU5MSU5FIE1UTDo6QmxlbmRGYWN0b3IgTVRMOjpSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0
b3IoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxlbmRG
YWN0b3I+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVzdGluYXRpb25SR0JCbGVuZEZhY3Rvcikp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yOjpzZXREZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKE1UTDo6QmxlbmRGYWN0
b3IgZGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVzdGluYXRpb25SR0JCbGVuZEZhY3Rv
cl8pLCBkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKTsKK30KKworLy8gcHJvcGVydHk6IHJnYkJs
ZW5kT3BlcmF0aW9uCitfTVRMX0lOTElORSBNVEw6OkJsZW5kT3BlcmF0aW9uIE1UTDo6UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpyZ2JCbGVuZE9wZXJhdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGVuZE9wZXJhdGlv
bj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZ2JCbGVuZE9wZXJhdGlvbikpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
OjpzZXRSZ2JCbGVuZE9wZXJhdGlvbihNVEw6OkJsZW5kT3BlcmF0aW9uIHJnYkJsZW5kT3BlcmF0
aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRSZ2JCbGVuZE9wZXJhdGlvbl8pLCByZ2JCbGVuZE9wZXJhdGlvbik7Cit9CisKKy8v
IHByb3BlcnR5OiBzb3VyY2VBbHBoYUJsZW5kRmFjdG9yCitfTVRMX0lOTElORSBNVEw6OkJsZW5k
RmFjdG9yIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzb3Vy
Y2VBbHBoYUJsZW5kRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkJsZW5kRmFjdG9yPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNvdXJjZUFscGhh
QmxlbmRGYWN0b3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U291cmNlQWxwaGFCbGVuZEZhY3RvcihNVEw6
OkJsZW5kRmFjdG9yIHNvdXJjZUFscGhhQmxlbmRGYWN0b3IpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNvdXJjZUFscGhhQmxlbmRG
YWN0b3JfKSwgc291cmNlQWxwaGFCbGVuZEZhY3Rvcik7Cit9CisKKy8vIHByb3BlcnR5OiBkZXN0
aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IKK19NVExfSU5MSU5FIE1UTDo6QmxlbmRGYWN0b3IgTVRM
OjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmRlc3RpbmF0aW9uQWxw
aGFCbGVuZEZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpCbGVuZEZhY3Rvcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXN0aW5hdGlvbkFscGhh
QmxlbmRGYWN0b3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0RGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9y
KE1UTDo6QmxlbmRGYWN0b3IgZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXN0aW5h
dGlvbkFscGhhQmxlbmRGYWN0b3JfKSwgZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKTsKK30K
KworLy8gcHJvcGVydHk6IGFscGhhQmxlbmRPcGVyYXRpb24KK19NVExfSU5MSU5FIE1UTDo6Qmxl
bmRPcGVyYXRpb24gTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
OmFscGhhQmxlbmRPcGVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6QmxlbmRPcGVyYXRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWxwaGFC
bGVuZE9wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRBbHBoYUJsZW5kT3BlcmF0aW9uKE1UTDo6
QmxlbmRPcGVyYXRpb24gYWxwaGFCbGVuZE9wZXJhdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWxwaGFCbGVuZE9wZXJhdGlv
bl8pLCBhbHBoYUJsZW5kT3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHdyaXRlTWFzawor
X01UTF9JTkxJTkUgTVRMOjpDb2xvcldyaXRlTWFzayBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6d3JpdGVNYXNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbG9yV3JpdGVNYXNrPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHdyaXRlTWFzaykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRXcml0ZU1hc2soTVRMOjpDb2xvcldyaXRl
TWFzayB3cml0ZU1hc2spCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFdyaXRlTWFza18pLCB3cml0ZU1hc2spOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZVJlZmxlY3Rp
b24qIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uOjphbGxvYygpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBNVEw6OlJl
bmRlclBpcGVsaW5lUmVmbGVjdGlvbjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmluaXQ8TVRMOjpSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiB2ZXJ0ZXhBcmd1bWVudHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQaXBl
bGluZVJlZmxlY3Rpb246OnZlcnRleEFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0
ZXhBcmd1bWVudHMpKTsKK30KKworLy8gcHJvcGVydHk6IGZyYWdtZW50QXJndW1lbnRzCitfTVRM
X0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uOjpmcmFnbWVu
dEFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudEFyZ3VtZW50cykpOworfQor
CisvLyBwcm9wZXJ0eTogdGlsZUFyZ3VtZW50cworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6
OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbjo6dGlsZUFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh0aWxlQXJndW1lbnRzKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRM
OjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBO
Uzo6U3RyaW5nKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRM
YWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhGdW5jdGlvbgorX01UTF9J
TkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnZlcnRl
eEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhGdW5jdGlvbikpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRWZXJ0
ZXhGdW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uKiB2ZXJ0ZXhGdW5jdGlvbikKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4
RnVuY3Rpb25fKSwgdmVydGV4RnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogZnJhZ21lbnRG
dW5jdGlvbgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OmZyYWdtZW50RnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZyYWdt
ZW50RnVuY3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6c2V0RnJhZ21lbnRGdW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uKiBmcmFn
bWVudEZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEZ1bmN0aW9uXyksIGZyYWdtZW50RnVuY3Rpb24pOwor
fQorCisvLyBwcm9wZXJ0eTogdmVydGV4RGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpWZXJ0
ZXhEZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dmVydGV4RGVzY3Jp
cHRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWZXJ0
ZXhEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhEZXNjcmlwdG9yKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNl
dFZlcnRleERlc2NyaXB0b3IoY29uc3QgTVRMOjpWZXJ0ZXhEZXNjcmlwdG9yKiB2ZXJ0ZXhEZXNj
cmlwdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRWZXJ0ZXhEZXNjcmlwdG9yXyksIHZlcnRleERlc2NyaXB0b3IpOworfQorCisv
LyBwcm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzYW1wbGVDb3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxlQ291bnQpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFNhbXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHJhc3RlclNh
bXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnJhc3RlclNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmFzdGVy
U2FtcGxlQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6c2V0UmFzdGVyU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHJhc3RlclNhbXBs
ZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRSYXN0ZXJTYW1wbGVDb3VudF8pLCByYXN0ZXJTYW1wbGVDb3VudCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBhbHBoYVRvQ292ZXJhZ2VFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1U
TDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjphbHBoYVRvQ292ZXJhZ2VFbmFibGVkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGlzQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRBbHBoYVRvQ292ZXJhZ2VFbmFi
bGVkKGJvb2wgYWxwaGFUb0NvdmVyYWdlRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWxwaGFUb0NvdmVyYWdlRW5hYmxl
ZF8pLCBhbHBoYVRvQ292ZXJhZ2VFbmFibGVkKTsKK30KKworLy8gcHJvcGVydHk6IGFscGhhVG9P
bmVFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
OjphbHBoYVRvT25lRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0FscGhhVG9PbmVFbmFibGVkKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNl
dEFscGhhVG9PbmVFbmFibGVkKGJvb2wgYWxwaGFUb09uZUVuYWJsZWQpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFscGhhVG9PbmVF
bmFibGVkXyksIGFscGhhVG9PbmVFbmFibGVkKTsKK30KKworLy8gcHJvcGVydHk6IHJhc3Rlcml6
YXRpb25FbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjpyYXN0ZXJpemF0aW9uRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1Jhc3Rlcml6YXRpb25F
bmFibGVkKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OnNldFJhc3Rlcml6YXRpb25FbmFibGVkKGJvb2wgcmFzdGVyaXphdGlvbkVuYWJsZWQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFJhc3Rlcml6YXRpb25FbmFibGVkXyksIHJhc3Rlcml6YXRpb25FbmFibGVkKTsKK30KKwor
Ly8gcHJvcGVydHk6IG1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhWZXJ0ZXhBbXBsaWZp
Y2F0aW9uQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9u
Q291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6c2V0TWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KE5TOjpVSW50ZWdlciBtYXhWZXJ0
ZXhBbXBsaWZpY2F0aW9uQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudF8pLCBt
YXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogY29sb3JBdHRh
Y2htZW50cworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmNvbG9yQXR0YWNo
bWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGNvbG9yQXR0YWNobWVudHMpKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoQXR0
YWNobWVudFBpeGVsRm9ybWF0CitfTVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXhlbEZvcm1hdD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXREZXB0aEF0
dGFjaG1lbnRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGRlcHRoQXR0YWNobWVudFBpeGVs
Rm9ybWF0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdF8pLCBkZXB0aEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9y
bWF0CitfTVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3RlbmNpbEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXRfKSwgc3RlbmNpbEF0dGFjaG1lbnRQaXhl
bEZvcm1hdCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnB1dFByaW1pdGl2ZVRvcG9sb2d5CitfTVRM
X0lOTElORSBNVEw6OlByaW1pdGl2ZVRvcG9sb2d5Q2xhc3MgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OmlucHV0UHJpbWl0aXZlVG9wb2xvZ3koKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UHJpbWl0aXZlVG9wb2xvZ3lDbGFzcz4odGhpcywgX01U
TF9QUklWQVRFX1NFTChpbnB1dFByaW1pdGl2ZVRvcG9sb2d5KSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldElucHV0UHJpbWl0aXZlVG9w
b2xvZ3koTVRMOjpQcmltaXRpdmVUb3BvbG9neUNsYXNzIGlucHV0UHJpbWl0aXZlVG9wb2xvZ3kp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldElucHV0UHJpbWl0aXZlVG9wb2xvZ3lfKSwgaW5wdXRQcmltaXRpdmVUb3BvbG9neSk7Cit9
CisKKy8vIHByb3BlcnR5OiB0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlCitfTVRMX0lOTElORSBN
VEw6OlRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I6OnRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZT4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvblBh
cnRpdGlvbk1vZGUoTVRMOjpUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlIHRlc3NlbGxhdGlvblBh
cnRpdGlvbk1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVfKSwgdGVzc2VsbGF0aW9u
UGFydGl0aW9uTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUZXNzZWxsYXRpb25GYWN0b3IK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6
bWF4VGVzc2VsbGF0aW9uRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VGVzc2VsbGF0
aW9uRmFjdG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldE1heFRlc3NlbGxhdGlvbkZhY3RvcihOUzo6VUludGVnZXIgbWF4VGVzc2Vs
bGF0aW9uRmFjdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRNYXhUZXNzZWxsYXRpb25GYWN0b3JfKSwgbWF4VGVzc2VsbGF0aW9u
RmFjdG9yKTsKK30KKworLy8gcHJvcGVydHk6IHRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxl
ZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2Vs
bGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzVGVzc2VsbGF0aW9uRmFj
dG9yU2NhbGVFbmFibGVkKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZChib29sIHRl
c3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVF
bmFibGVkXyksIHRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCk7Cit9CisKKy8vIHByb3Bl
cnR5OiB0ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6VGVzc2VsbGF0
aW9uRmFjdG9yRm9ybWF0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0ZXNzZWxsYXRp
b25GYWN0b3JGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRl
c3NlbGxhdGlvbkZhY3RvckZvcm1hdCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQoTVRMOjpU
ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQgdGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXNz
ZWxsYXRpb25GYWN0b3JGb3JtYXRfKSwgdGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KTsKK30KKwor
Ly8gcHJvcGVydHk6IHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZQorX01UTF9JTkxJ
TkUgTVRMOjpUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUgTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXNzZWxsYXRpb25Db250
cm9sUG9pbnRJbmRleFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGVzc2VsbGF0aW9uQ29u
dHJvbFBvaW50SW5kZXhUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZShN
VEw6OlRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSB0ZXNzZWxsYXRpb25Db250cm9s
UG9pbnRJbmRleFR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZV8pLCB0
ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogdGVz
c2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OlRlc3NlbGxhdGlv
bkZhY3RvclN0ZXBGdW5jdGlvbiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2Vs
bGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbj4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24pKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGVzc2VsbGF0
aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9u
IHRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU3Rl
cEZ1bmN0aW9uXyksIHRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbik7Cit9CisKKy8vIHBy
b3BlcnR5OiB0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIKK19NVExfSU5MSU5FIE1UTDo6
V2luZGluZyBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2VsbGF0aW9uT3V0cHV0
V2luZGluZ09yZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OldpbmRpbmc+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGVzc2VsbGF0aW9uT3V0cHV0V2lu
ZGluZ09yZGVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcihNVEw6OldpbmRpbmcg
dGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXNzZWxsYXRpb25PdXRwdXRXaW5k
aW5nT3JkZXJfKSwgdGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyKTsKK30KKworLy8gcHJv
cGVydHk6IHZlcnRleEJ1ZmZlcnMKK19NVExfSU5MSU5FIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNj
cmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhCdWZmZXJz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpcGVsaW5l
QnVmZmVyRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZm
ZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudEJ1ZmZlcnMKK19NVExfSU5MSU5FIE1U
TDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpmcmFnbWVudEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGZyYWdtZW50QnVmZmVycykpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9y
dEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycykpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdXBwb3J0SW5kaXJlY3RD
b21tYW5kQnVmZmVycyhib29sIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdXBw
b3J0SW5kaXJlY3RDb21tYW5kQnVmZmVyc18pLCBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVy
cyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlBcmNoaXZlcworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6YmluYXJ5QXJjaGl2ZXMoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYmluYXJ5QXJjaGl2ZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMoY29uc3QgTlM6
OkFycmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmluYXJ5QXJjaGl2
ZXMpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4UHJlbG9hZGVkTGlicmFyaWVzCitfTVRMX0lO
TElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhQcmVs
b2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVydGV4UHJlbG9hZGVkTGlicmFy
aWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I6OnNldFZlcnRleFByZWxvYWRlZExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIHZlcnRleFBy
ZWxvYWRlZExpYnJhcmllcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4UHJlbG9hZGVkTGlicmFyaWVzXyksIHZlcnRleFBy
ZWxvYWRlZExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudFByZWxvYWRlZExp
YnJhcmllcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6ZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnJh
Z21lbnRQcmVsb2FkZWRMaWJyYXJpZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0RnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMoY29u
c3QgTlM6OkFycmF5KiBmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRQcmVs
b2FkZWRMaWJyYXJpZXNfKSwgZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMpOworfQorCisvLyBw
cm9wZXJ0eTogdmVydGV4TGlua2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1
bmN0aW9ucyogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnZlcnRleExpbmtlZEZ1bmN0
aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaW5r
ZWRGdW5jdGlvbnMqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleExpbmtlZEZ1bmN0aW9u
cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
OjpzZXRWZXJ0ZXhMaW5rZWRGdW5jdGlvbnMoY29uc3QgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIHZl
cnRleExpbmtlZEZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4TGlua2VkRnVuY3Rpb25zXyksIHZlcnRleExp
bmtlZEZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudExpbmtlZEZ1bmN0aW9u
cworX01UTF9JTkxJTkUgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpmcmFnbWVudExpbmtlZEZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaW5rZWRGdW5jdGlvbnMqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEZyYWdtZW50TGlua2VkRnVuY3Rp
b25zKGNvbnN0IE1UTDo6TGlua2VkRnVuY3Rpb25zKiBmcmFnbWVudExpbmtlZEZ1bmN0aW9ucykK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnNfKSwgZnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMpOwor
fQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucworX01U
TF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c3VwcG9ydEFkZGlu
Z1ZlcnRleEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEFkZGluZ1Zl
cnRleEJpbmFyeUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25z
KGJvb2wgc3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFkZGlu
Z1ZlcnRleEJpbmFyeUZ1bmN0aW9uc18pLCBzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rp
b25zKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0
aW9ucworX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c3Vw
cG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBw
b3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50
QmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25z
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnNfKSwgc3VwcG9ydEFkZGlu
Z0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IG1heFZlcnRleENh
bGxTdGFja0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6Om1heFZlcnRleENhbGxTdGFja0RlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgoTlM6
OlVJbnRlZ2VyIG1heFZlcnRleENhbGxTdGFja0RlcHRoKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhWZXJ0ZXhDYWxsU3RhY2tE
ZXB0aF8pLCBtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhG
cmFnbWVudENhbGxTdGFja0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6Om1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChtYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldE1heEZyYWdtZW50Q2Fs
bFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1h
eEZyYWdtZW50Q2FsbFN0YWNrRGVwdGhfKSwgbWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aCk7Cit9
CisKKy8vIG1ldGhvZDogcmVzZXQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxs
b2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yKiBN
VEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3Jp
cHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0
b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVs
aW5lRnVuY3Rpb25zRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2Ny
aXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVy
UGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlJl
bmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6dmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1
bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rp
b25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9u
c0Rlc2NyaXB0b3I6OnNldFZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoY29uc3QgTlM6
OkFycmF5KiB2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhBZGRpdGlv
bmFsQmluYXJ5RnVuY3Rpb25zXyksIHZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpOwor
fQorCisvLyBwcm9wZXJ0eTogZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zCitfTVRM
X0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9y
OjpmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I6OnNldEZyYWdtZW50QWRk
aXRpb25hbEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZyYWdtZW50QWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zXyks
IGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiB0
aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6
OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6dGlsZUFkZGl0aW9uYWxCaW5hcnlG
dW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpB
cnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25z
RGVzY3JpcHRvcjo6c2V0VGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoY29uc3QgTlM6OkFy
cmF5KiB0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnNfKSwgdGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpOworfQorCisvLyBw
cm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6UmVuZGVyUGlwZWxp
bmVTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OlJlbmRlclBpcGVs
aW5lU3RhdGU6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisv
LyBwcm9wZXJ0eTogbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6Om1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VG90YWxUaHJlYWRzUGVyVGhyZWFk
Z3JvdXApKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6
ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OnRocmVhZGdyb3Vw
U2l6ZU1hdGNoZXNUaWxlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRncm91cFNpemVNYXRjaGVz
VGlsZVNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IGltYWdlYmxvY2tTYW1wbGVMZW5ndGgKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OmltYWdlYmxv
Y2tTYW1wbGVMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbWFnZWJsb2NrU2FtcGxlTGVu
Z3RoKSk7Cit9CisKKy8vIG1ldGhvZDogaW1hZ2VibG9ja01lbW9yeUxlbmd0aEZvckRpbWVuc2lv
bnM6CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpp
bWFnZWJsb2NrTWVtb3J5TGVuZ3RoKE1UTDo6U2l6ZSBpbWFnZWJsb2NrRGltZW5zaW9ucykKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaW1hZ2VibG9ja01lbW9yeUxlbmd0aEZvckRpbWVuc2lvbnNfKSwgaW1hZ2Vi
bG9ja0RpbWVuc2lvbnMpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydEluZGlyZWN0Q29tbWFu
ZEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpzdXBw
b3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEluZGly
ZWN0Q29tbWFuZEJ1ZmZlcnMpKTsKK30KKworLy8gbWV0aG9kOiBmdW5jdGlvbkhhbmRsZVdpdGhG
dW5jdGlvbjpzdGFnZToKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25IYW5kbGUqIE1UTDo6UmVu
ZGVyUGlwZWxpbmVTdGF0ZTo6ZnVuY3Rpb25IYW5kbGUoY29uc3QgTVRMOjpGdW5jdGlvbiogZnVu
Y3Rpb24sIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25IYW5kbGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1
bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uX3N0YWdlXyksIGZ1bmN0aW9uLCBzdGFnZSk7Cit9CisK
Ky8vIG1ldGhvZDogbmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcjpzdGFnZToK
K19NVExfSU5MSU5FIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIE1UTDo6UmVuZGVyUGlwZWxp
bmVTdGF0ZTo6bmV3VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rp
b25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFi
bGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0aERl
c2NyaXB0b3Jfc3RhZ2VfKSwgZGVzY3JpcHRvciwgc3RhZ2UpOworfQorCisvLyBtZXRob2Q6IG5l
d0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcjpzdGFnZToKK19NVExfSU5M
SU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogTVRMOjpSZW5kZXJQaXBlbGluZVN0
YXRlOjpuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0
YWdlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3SW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yX3N0YWdlXyksIGRlc2NyaXB0b3IsIHN0YWdlKTsKK30K
KworLy8gbWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlG
dW5jdGlvbnM6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqIE1U
TDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6
OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvciogYWRkaXRpb25hbEJpbmFyeUZ1bmN0
aW9ucywgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfZXJyb3JfKSwg
YWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywgZXJyb3IpOworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3JBcnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVf
Q0xTKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9
CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6Omlu
aXQ8TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oKTsK
K30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBN
VEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdl
ciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOwor
fQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6
OnNldE9iamVjdChjb25zdCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0
X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6YWxsb2M8TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRpbGVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6VGlsZVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogcGl4ZWxGb3JtYXQKK19NVExfSU5MSU5FIE1U
TDo6UGl4ZWxGb3JtYXQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjpwaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpQaXhlbEZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaXhlbEZvcm1h
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0UGl4ZWxGb3JtYXRfKSwgcGl4ZWxGb3JtYXQpOworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6
OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0
QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5k
ZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChv
YmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gbWV0
aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0T2Jq
ZWN0KGNvbnN0IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0
SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRpbGVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5T
OjpTdHJpbmcqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJl
bCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZUZ1bmN0aW9uCitf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I6OnRpbGVGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUZ1bmN0aW9uKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
OjpzZXRUaWxlRnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbiogdGlsZUZ1bmN0aW9uKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRU
aWxlRnVuY3Rpb25fKSwgdGlsZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHJhc3RlclNh
bXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpyYXN0ZXJTYW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJh
c3RlclNhbXBsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRSYXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgcmFz
dGVyU2FtcGxlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFJhc3RlclNhbXBsZUNvdW50XyksIHJhc3RlclNhbXBsZUNvdW50
KTsKK30KKworLy8gcHJvcGVydHk6IGNvbG9yQXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1UTDo6
VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlRp
bGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmNvbG9yQXR0YWNobWVudHMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb2xv
ckF0dGFjaG1lbnRzKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0aHJlYWRncm91cFNpemVNYXRjaGVz
VGlsZVNpemUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjp0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFk
Z3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUaHJlYWRncm91cFNpemVNYXRjaGVzVGls
ZVNpemUoYm9vbCB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRocmVhZGdyb3Vw
U2l6ZU1hdGNoZXNUaWxlU2l6ZV8pLCB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUpOwor
fQorCisvLyBwcm9wZXJ0eTogdGlsZUJ1ZmZlcnMKK19NVExfSU5MSU5FIE1UTDo6UGlwZWxpbmVC
dWZmZXJEZXNjcmlwdG9yQXJyYXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6
dGlsZUJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHRpbGVCdWZmZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUb3RhbFRocmVhZHNQZXJUaHJl
YWRncm91cAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6bWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4VG90YWxUaHJl
YWRzUGVyVGhyZWFkZ3JvdXAoTlM6OlVJbnRlZ2VyIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdy
b3VwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cF8pLCBtYXhUb3RhbFRocmVhZHNQ
ZXJUaHJlYWRncm91cCk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlBcmNoaXZlcworX01UTF9J
TkxJTkUgTlM6OkFycmF5KiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmJpbmFy
eUFyY2hpdmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJpbmFyeUFyY2hpdmVzKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRCaW5h
cnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hpdmVzKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCaW5hcnlBcmNo
aXZlc18pLCBiaW5hcnlBcmNoaXZlcyk7Cit9CisKKy8vIHByb3BlcnR5OiBwcmVsb2FkZWRMaWJy
YXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpwcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlbG9hZGVk
TGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRQcmVsb2FkZWRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiBwcmVs
b2FkZWRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFByZWxvYWRlZExpYnJhcmllc18pLCBwcmVsb2FkZWRMaWJyYXJp
ZXMpOworfQorCisvLyBwcm9wZXJ0eTogbGlua2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6
OkxpbmtlZEZ1bmN0aW9ucyogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpsaW5r
ZWRGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6TGlua2VkRnVuY3Rpb25zKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsaW5rZWRGdW5jdGlv
bnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OnNldExpbmtlZEZ1bmN0aW9ucyhjb25zdCBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogbGlu
a2VkRnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRMaW5rZWRGdW5jdGlvbnNfKSwgbGlua2VkRnVuY3Rpb25zKTsKK30K
KworLy8gcHJvcGVydHk6IHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5F
IGJvb2wgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0QWRkaW5nQmlu
YXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNh
ZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rp
b25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFkZGlu
Z0JpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9uc18pLCBzdXBw
b3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IG1heENhbGxTdGFj
a0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjptYXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heENh
bGxTdGFja0RlcHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4Q2Fs
bFN0YWNrRGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldE1heENhbGxTdGFja0RlcHRoXyksIG1heENhbGxTdGFja0RlcHRoKTsK
K30KKworLy8gbWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZS5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2UuaHBwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYzZTI2OGIxNzk0ODI5ZTFhNTAxNmY2M2QxZGJkNDk5YWMwNWU5ZDYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2UuaHBw
CkBAIC0wLDAgKzEsMTc4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExSZXNvdXJjZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQg
MjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhw
cCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUu
aHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUg
Ik1UTFJlc291cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50
ZWdlciwgUHVyZ2VhYmxlU3RhdGUpIHsKKyAgICBQdXJnZWFibGVTdGF0ZUtlZXBDdXJyZW50ID0g
MSwKKyAgICBQdXJnZWFibGVTdGF0ZU5vblZvbGF0aWxlID0gMiwKKyAgICBQdXJnZWFibGVTdGF0
ZVZvbGF0aWxlID0gMywKKyAgICBQdXJnZWFibGVTdGF0ZUVtcHR5ID0gNCwKK307CisKK19NVExf
RU5VTShOUzo6VUludGVnZXIsIENQVUNhY2hlTW9kZSkgeworICAgIENQVUNhY2hlTW9kZURlZmF1
bHRDYWNoZSA9IDAsCisgICAgQ1BVQ2FjaGVNb2RlV3JpdGVDb21iaW5lZCA9IDEsCit9OworCitf
TVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBTdG9yYWdlTW9kZSkgeworICAgIFN0b3JhZ2VNb2RlU2hh
cmVkID0gMCwKKyAgICBTdG9yYWdlTW9kZU1hbmFnZWQgPSAxLAorICAgIFN0b3JhZ2VNb2RlUHJp
dmF0ZSA9IDIsCisgICAgU3RvcmFnZU1vZGVNZW1vcnlsZXNzID0gMywKK307CisKK19NVExfRU5V
TShOUzo6VUludGVnZXIsIEhhemFyZFRyYWNraW5nTW9kZSkgeworICAgIEhhemFyZFRyYWNraW5n
TW9kZURlZmF1bHQgPSAwLAorICAgIEhhemFyZFRyYWNraW5nTW9kZVVudHJhY2tlZCA9IDEsCisg
ICAgSGF6YXJkVHJhY2tpbmdNb2RlVHJhY2tlZCA9IDIsCit9OworCitfTVRMX09QVElPTlMoTlM6
OlVJbnRlZ2VyLCBSZXNvdXJjZU9wdGlvbnMpIHsKKyAgICBSZXNvdXJjZVN0b3JhZ2VNb2RlU2hh
cmVkID0gMCwKKyAgICBSZXNvdXJjZUhhemFyZFRyYWNraW5nTW9kZURlZmF1bHQgPSAwLAorICAg
IFJlc291cmNlQ1BVQ2FjaGVNb2RlRGVmYXVsdENhY2hlID0gMCwKKyAgICBSZXNvdXJjZU9wdGlv
bkNQVUNhY2hlTW9kZURlZmF1bHQgPSAwLAorICAgIFJlc291cmNlQ1BVQ2FjaGVNb2RlV3JpdGVD
b21iaW5lZCA9IDEsCisgICAgUmVzb3VyY2VPcHRpb25DUFVDYWNoZU1vZGVXcml0ZUNvbWJpbmVk
ID0gMSwKKyAgICBSZXNvdXJjZVN0b3JhZ2VNb2RlTWFuYWdlZCA9IDE2LAorICAgIFJlc291cmNl
U3RvcmFnZU1vZGVQcml2YXRlID0gMzIsCisgICAgUmVzb3VyY2VTdG9yYWdlTW9kZU1lbW9yeWxl
c3MgPSA0OCwKKyAgICBSZXNvdXJjZUhhemFyZFRyYWNraW5nTW9kZVVudHJhY2tlZCA9IDI1NiwK
KyAgICBSZXNvdXJjZUhhemFyZFRyYWNraW5nTW9kZVRyYWNrZWQgPSA1MTIsCit9OworCitjbGFz
cyBSZXNvdXJjZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVzb3VyY2U+Cit7CitwdWJsaWM6
CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisKKyAg
ICBjbGFzcyBEZXZpY2UqICAgICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE1UTDo6Q1BV
Q2FjaGVNb2RlICAgICAgIGNwdUNhY2hlTW9kZSgpIGNvbnN0OworCisgICAgTVRMOjpTdG9yYWdl
TW9kZSAgICAgICAgc3RvcmFnZU1vZGUoKSBjb25zdDsKKworICAgIE1UTDo6SGF6YXJkVHJhY2tp
bmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0OworCisgICAgTVRMOjpSZXNvdXJjZU9w
dGlvbnMgICAgcmVzb3VyY2VPcHRpb25zKCkgY29uc3Q7CisKKyAgICBNVEw6OlB1cmdlYWJsZVN0
YXRlICAgICBzZXRQdXJnZWFibGVTdGF0ZShNVEw6OlB1cmdlYWJsZVN0YXRlIHN0YXRlKTsKKwor
ICAgIGNsYXNzIEhlYXAqICAgICAgICAgICAgIGhlYXAoKSBjb25zdDsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgIGhlYXBPZmZzZXQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgIGFsbG9jYXRlZFNpemUoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgIG1ha2VBbGlhc2FibGUoKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGlz
QWxpYXNhYmxlKCk7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUg
TlM6OlN0cmluZyogTVRMOjpSZXNvdXJjZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxh
YmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZTo6c2V0TGFiZWwoY29u
c3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVy
dHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6UmVzb3VyY2U6OmRldmlj
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2Uq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogY3B1
Q2FjaGVNb2RlCitfTVRMX0lOTElORSBNVEw6OkNQVUNhY2hlTW9kZSBNVEw6OlJlc291cmNlOjpj
cHVDYWNoZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6Q1BVQ2FjaGVNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNwdUNhY2hlTW9kZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogc3RvcmFnZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6U3RvcmFnZU1v
ZGUgTVRMOjpSZXNvdXJjZTo6c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RvcmFnZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c3RvcmFnZU1vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IGhhemFyZFRyYWNraW5nTW9kZQorX01U
TF9JTkxJTkUgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgTVRMOjpSZXNvdXJjZTo6aGF6YXJkVHJh
Y2tpbmdNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkhhemFyZFRyYWNraW5nTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChoYXphcmRUcmFja2lu
Z01vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IHJlc291cmNlT3B0aW9ucworX01UTF9JTkxJTkUg
TVRMOjpSZXNvdXJjZU9wdGlvbnMgTVRMOjpSZXNvdXJjZTo6cmVzb3VyY2VPcHRpb25zKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlT3B0aW9u
cz4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvdXJjZU9wdGlvbnMpKTsKK30KKworLy8gbWV0
aG9kOiBzZXRQdXJnZWFibGVTdGF0ZToKK19NVExfSU5MSU5FIE1UTDo6UHVyZ2VhYmxlU3RhdGUg
TVRMOjpSZXNvdXJjZTo6c2V0UHVyZ2VhYmxlU3RhdGUoTVRMOjpQdXJnZWFibGVTdGF0ZSBzdGF0
ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlB1cmdlYWJsZVN0YXRl
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFB1cmdlYWJsZVN0YXRlXyksIHN0YXRlKTsKK30K
KworLy8gcHJvcGVydHk6IGhlYXAKK19NVExfSU5MSU5FIE1UTDo6SGVhcCogTVRMOjpSZXNvdXJj
ZTo6aGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpI
ZWFwKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChoZWFwKSk7Cit9CisKKy8vIHByb3BlcnR5OiBo
ZWFwT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZXNvdXJjZTo6aGVhcE9m
ZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhlYXBPZmZzZXQpKTsKK30KKworLy8gcHJvcGVy
dHk6IGFsbG9jYXRlZFNpemUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlc291cmNl
OjphbGxvY2F0ZWRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWxsb2NhdGVkU2l6ZSkpOwor
fQorCisvLyBtZXRob2Q6IG1ha2VBbGlhc2FibGUKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNv
dXJjZTo6bWFrZUFsaWFzYWJsZSgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1ha2VBbGlhc2FibGUpKTsKK30KKworLy8gbWV0aG9kOiBp
c0FsaWFzYWJsZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlc291cmNlOjppc0FsaWFzYWJsZSgp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChpc0FsaWFzYWJsZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZUNvbW1h
bmRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjgzYWMxZjhiMTZiZDVlNWIxYmEzYjdiZTIyZWY3
Nzk0ZjQ5YjkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSw5
NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwor
Ly8gTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJp
dmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5j
bHVkZSAiTVRMQ29tbWFuZEVuY29kZXIuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUpIHsKKyAgICBTcGFyc2VU
ZXh0dXJlTWFwcGluZ01vZGVNYXAgPSAwLAorICAgIFNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZVVu
bWFwID0gMSwKK307CisKK3N0cnVjdCBNYXBJbmRpcmVjdEFyZ3VtZW50cworeworICAgIHVpbnQz
Ml90IHJlZ2lvbk9yaWdpblg7CisgICAgdWludDMyX3QgcmVnaW9uT3JpZ2luWTsKKyAgICB1aW50
MzJfdCByZWdpb25PcmlnaW5aOworICAgIHVpbnQzMl90IHJlZ2lvblNpemVXaWR0aDsKKyAgICB1
aW50MzJfdCByZWdpb25TaXplSGVpZ2h0OworICAgIHVpbnQzMl90IHJlZ2lvblNpemVEZXB0aDsK
KyAgICB1aW50MzJfdCBtaXBNYXBMZXZlbDsKKyAgICB1aW50MzJfdCBzbGljZUlkOworfSBfTVRM
X1BBQ0tFRDsKKworY2xhc3MgUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyIDogcHVibGljIE5T
OjpSZWZlcmVuY2luZzxSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIsIENvbW1hbmRFbmNvZGVy
PgoreworcHVibGljOgorICAgIHZvaWQgdXBkYXRlVGV4dHVyZU1hcHBpbmdzKGNvbnN0IGNsYXNz
IFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlIG1v
ZGUsIGNvbnN0IE1UTDo6UmVnaW9uKiByZWdpb25zLCBjb25zdCBOUzo6VUludGVnZXIqIG1pcExl
dmVscywgY29uc3QgTlM6OlVJbnRlZ2VyKiBzbGljZXMsIE5TOjpVSW50ZWdlciBudW1SZWdpb25z
KTsKKworICAgIHZvaWQgdXBkYXRlVGV4dHVyZU1hcHBpbmcoY29uc3QgY2xhc3MgVGV4dHVyZSog
dGV4dHVyZSwgY29uc3QgTVRMOjpTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUgbW9kZSwgY29uc3Qg
TVRMOjpSZWdpb24gcmVnaW9uLCBjb25zdCBOUzo6VUludGVnZXIgbWlwTGV2ZWwsIGNvbnN0IE5T
OjpVSW50ZWdlciBzbGljZSk7CisKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVNYXBwaW5nKGNvbnN0
IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdN
b2RlIG1vZGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdl
ciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkIHVwZGF0ZUZlbmNlKGNvbnN0IGNs
YXNzIEZlbmNlKiBmZW5jZSk7CisKKyAgICB2b2lkIHdhaXRGb3JGZW5jZShjb25zdCBjbGFzcyBG
ZW5jZSogZmVuY2UpOworfTsKKworfQorCisvLyBtZXRob2Q6IHVwZGF0ZVRleHR1cmVNYXBwaW5n
czptb2RlOnJlZ2lvbnM6bWlwTGV2ZWxzOnNsaWNlczpudW1SZWdpb25zOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcjo6dXBkYXRlVGV4dHVyZU1hcHBp
bmdzKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgTVRMOjpTcGFyc2VUZXh0dXJl
TWFwcGluZ01vZGUgbW9kZSwgY29uc3QgTVRMOjpSZWdpb24qIHJlZ2lvbnMsIGNvbnN0IE5TOjpV
SW50ZWdlciogbWlwTGV2ZWxzLCBjb25zdCBOUzo6VUludGVnZXIqIHNsaWNlcywgTlM6OlVJbnRl
Z2VyIG51bVJlZ2lvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHVwZGF0ZVRleHR1cmVNYXBwaW5nc19tb2RlX3JlZ2lvbnNfbWlwTGV2
ZWxzX3NsaWNlc19udW1SZWdpb25zXyksIHRleHR1cmUsIG1vZGUsIHJlZ2lvbnMsIG1pcExldmVs
cywgc2xpY2VzLCBudW1SZWdpb25zKTsKK30KKworLy8gbWV0aG9kOiB1cGRhdGVUZXh0dXJlTWFw
cGluZzptb2RlOnJlZ2lvbjptaXBMZXZlbDpzbGljZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXI6OnVwZGF0ZVRleHR1cmVNYXBwaW5nKGNvbnN0IE1U
TDo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgTVRMOjpTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUg
bW9kZSwgY29uc3QgTVRMOjpSZWdpb24gcmVnaW9uLCBjb25zdCBOUzo6VUludGVnZXIgbWlwTGV2
ZWwsIGNvbnN0IE5TOjpVSW50ZWdlciBzbGljZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlVGV4dHVyZU1hcHBpbmdfbW9kZV9y
ZWdpb25fbWlwTGV2ZWxfc2xpY2VfKSwgdGV4dHVyZSwgbW9kZSwgcmVnaW9uLCBtaXBMZXZlbCwg
c2xpY2UpOworfQorCisvLyBtZXRob2Q6IHVwZGF0ZVRleHR1cmVNYXBwaW5nOm1vZGU6aW5kaXJl
Y3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVz
b3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyOjp1cGRhdGVUZXh0dXJlTWFwcGluZyhjb25zdCBNVEw6
OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlIG1v
ZGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGly
ZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh1cGRhdGVUZXh0dXJlTWFwcGluZ19tb2RlX2luZGlyZWN0QnVmZmVy
X2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIHRleHR1cmUsIG1vZGUsIGluZGlyZWN0QnVmZmVyLCBp
bmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlRmVuY2U6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyOjp1cGRhdGVGZW5j
ZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOworfQorCisv
LyBtZXRob2Q6IHdhaXRGb3JGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXI6OndhaXRGb3JGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
d2FpdEZvckZlbmNlXyksIGZlbmNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZjNzcwZjY0MDIxMzE3ZDAyNDljZWFlZWYxYjVlNmNiNDQ4YWNhYTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3Vy
Y2VTdGF0ZVBhc3MuaHBwCkBAIC0wLDAgKzEsMTY1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFz
cy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBw
IgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZXNv
dXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNz
IENvdW50ZXJTYW1wbGVCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FtcGxlQnVmZmVyKGNvbnN0
IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlcik7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydE9m
RW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZFbmNvZGVy
U2FtcGxlSW5kZXgpOworfTsKKworY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSZXNvdXJj
ZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlc291cmNlU3RhdGVQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsK
KworICAgIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBSZXNvdXJjZVN0YXRlUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVn
ZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIFJlc291cmNlU3RhdGVQYXNzRGVzY3Jp
cHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3I+Cit7
CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciog
ICAgICAgICAgICAgICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZVBh
c3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBz
dGF0aWMgY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAg
ICAgIHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcigpOworCisgICAgY2xhc3MgUmVzb3VyY2VT
dGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBzYW1wbGVCdWZm
ZXJBdHRhY2htZW50cygpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxv
YworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yKiBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlc291
cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQnVm
ZmVyCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIE1UTDo6UmVzb3VyY2VT
dGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2FtcGxlQnVmZmVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvdW50ZXJTYW1w
bGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlcikpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c2V0U2FtcGxlQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1
ZmZlciogc2FtcGxlQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVCdWZmZXJfKSwgc2FtcGxlQnVmZmVyKTsKK30K
KworLy8gcHJvcGVydHk6IHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I6OnN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRT
dGFydE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRW5jb2RlclNhbXBs
ZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4XyksIHN0YXJ0T2ZFbmNvZGVyU2Ft
cGxlSW5kZXgpOworfQorCisvLyBwcm9wZXJ0eTogZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3I6OmVuZE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3I6OnNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVuY29kZXJT
YW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXhfKSwgZW5kT2ZFbmNvZGVyU2Ft
cGxlSW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkq
IE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PihfTVRMX1BS
SVZBVEVfQ0xTKE1UTFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVz
b3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6
OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZXNvdXJjZVN0YXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1l
dGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJj
ZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlc291cmNl
U3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5T
OjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwg
YXR0YWNobWVudEluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vi
c2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6UmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwg
TlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlw
dF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqIE1U
TDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTFJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRo
b2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKiBN
VEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHN0YXRpYyBtZXRob2Q6IHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcgorX01UTF9JTkxJ
TkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqIE1UTDo6UmVzb3VyY2VTdGF0ZVBh
c3NEZXNjcmlwdG9yOjpyZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IoKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKj4o
X01UTF9QUklWQVRFX0NMUyhNVExSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IpLCBfTVRMX1BS
SVZBVEVfU0VMKHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0
eTogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlc291cmNl
U3RhdGVQYXNzRGVzY3JpcHRvcjo6c2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzYW1wbGVCdWZmZXJBdHRhY2htZW50cykpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFNhbXBsZXIuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFNhbXBsZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwZTc5MTUy
ZTE1YTg3YTRlYTI5ZTBjZTY5ZTJiNDZjOTAwNDUyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMU2FtcGxlci5ocHAKQEAgLTAsMCAr
MSwzMTAgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIE1ldGFsL01UTFNhbXBsZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVk
ZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2lu
Y2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExEZXB0aFN0
ZW5jaWwuaHBwIgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorCituYW1lc3BhY2UgTVRMCit7
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBTYW1wbGVyTWluTWFnRmlsdGVyKSB7CisgICAgU2Ft
cGxlck1pbk1hZ0ZpbHRlck5lYXJlc3QgPSAwLAorICAgIFNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5l
YXIgPSAxLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU2FtcGxlck1pcEZpbHRlcikg
eworICAgIFNhbXBsZXJNaXBGaWx0ZXJOb3RNaXBtYXBwZWQgPSAwLAorICAgIFNhbXBsZXJNaXBG
aWx0ZXJOZWFyZXN0ID0gMSwKKyAgICBTYW1wbGVyTWlwRmlsdGVyTGluZWFyID0gMiwKK307CisK
K19NVExfRU5VTShOUzo6VUludGVnZXIsIFNhbXBsZXJBZGRyZXNzTW9kZSkgeworICAgIFNhbXBs
ZXJBZGRyZXNzTW9kZUNsYW1wVG9FZGdlID0gMCwKKyAgICBTYW1wbGVyQWRkcmVzc01vZGVNaXJy
b3JDbGFtcFRvRWRnZSA9IDEsCisgICAgU2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0ID0gMiwKKyAg
ICBTYW1wbGVyQWRkcmVzc01vZGVNaXJyb3JSZXBlYXQgPSAzLAorICAgIFNhbXBsZXJBZGRyZXNz
TW9kZUNsYW1wVG9aZXJvID0gNCwKKyAgICBTYW1wbGVyQWRkcmVzc01vZGVDbGFtcFRvQm9yZGVy
Q29sb3IgPSA1LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU2FtcGxlckJvcmRlckNv
bG9yKSB7CisgICAgU2FtcGxlckJvcmRlckNvbG9yVHJhbnNwYXJlbnRCbGFjayA9IDAsCisgICAg
U2FtcGxlckJvcmRlckNvbG9yT3BhcXVlQmxhY2sgPSAxLAorICAgIFNhbXBsZXJCb3JkZXJDb2xv
ck9wYXF1ZVdoaXRlID0gMiwKK307CisKK2NsYXNzIFNhbXBsZXJEZXNjcmlwdG9yIDogcHVibGlj
IE5TOjpDb3B5aW5nPFNhbXBsZXJEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBj
bGFzcyBTYW1wbGVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFNhbXBsZXJEZXNj
cmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpTYW1wbGVyTWluTWFnRmlsdGVyICAg
ICAgICBtaW5GaWx0ZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldE1pbkZpbHRlcihNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgbWluRmlsdGVyKTsKKwor
ICAgIE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciAgICAgICAgbWFnRmlsdGVyKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYWdGaWx0ZXIoTVRMOjpTYW1w
bGVyTWluTWFnRmlsdGVyIG1hZ0ZpbHRlcik7CisKKyAgICBNVEw6OlNhbXBsZXJNaXBGaWx0ZXIg
ICAgICAgICAgIG1pcEZpbHRlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0TWlwRmlsdGVyKE1UTDo6U2FtcGxlck1pcEZpbHRlciBtaXBGaWx0ZXIpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBtYXhBbmlzb3Ryb3B5KCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhBbmlzb3Ryb3B5
KE5TOjpVSW50ZWdlciBtYXhBbmlzb3Ryb3B5KTsKKworICAgIE1UTDo6U2FtcGxlckFkZHJlc3NN
b2RlICAgICAgICAgc0FkZHJlc3NNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRTQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgc0Fk
ZHJlc3NNb2RlKTsKKworICAgIE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlICAgICAgICAgdEFkZHJl
c3NNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRU
QWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgdEFkZHJlc3NNb2RlKTsKKworICAg
IE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlICAgICAgICAgckFkZHJlc3NNb2RlKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSQWRkcmVzc01vZGUoTVRMOjpT
YW1wbGVyQWRkcmVzc01vZGUgckFkZHJlc3NNb2RlKTsKKworICAgIE1UTDo6U2FtcGxlckJvcmRl
ckNvbG9yICAgICAgICAgYm9yZGVyQ29sb3IoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEJvcmRlckNvbG9yKE1UTDo6U2FtcGxlckJvcmRlckNvbG9yIGJv
cmRlckNvbG9yKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFs
aXplZENvb3JkaW5hdGVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXROb3JtYWxpemVkQ29vcmRpbmF0ZXMoYm9vbCBub3JtYWxpemVkQ29vcmRpbmF0ZXMp
OworCisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2RNaW5DbGFtcCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9kTWluQ2xhbXAo
ZmxvYXQgbG9kTWluQ2xhbXApOworCisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2RNYXhDbGFtcCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0TG9kTWF4Q2xhbXAoZmxvYXQgbG9kTWF4Q2xhbXApOworCisgICAgYm9vbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsb2RBdmVyYWdlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRMb2RBdmVyYWdlKGJvb2wgbG9kQXZlcmFnZSk7CisKKyAg
ICBNVEw6OkNvbXBhcmVGdW5jdGlvbiAgICAgICAgICAgIGNvbXBhcmVGdW5jdGlvbigpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29tcGFyZUZ1bmN0aW9u
KE1UTDo6Q29tcGFyZUZ1bmN0aW9uIGNvbXBhcmVGdW5jdGlvbik7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1cHBvcnRBcmd1bWVudEJ1ZmZl
cnMoYm9vbCBzdXBwb3J0QXJndW1lbnRCdWZmZXJzKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAg
ICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKK307CisKK2NsYXNz
IFNhbXBsZXJTdGF0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8U2FtcGxlclN0YXRlPgorewor
cHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNzIERl
dmljZSogZGV2aWNlKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yKiBNVEw6OlNhbXBsZXJEZXNjcmlw
dG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U2FtcGxl
ckRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMU2FtcGxlckRlc2NyaXB0b3IpKTsKK30K
KworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yKiBN
VEw6OlNhbXBsZXJEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OlNhbXBsZXJEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogbWluRmls
dGVyCitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgTVRMOjpTYW1wbGVyRGVz
Y3JpcHRvcjo6bWluRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWlu
RmlsdGVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6
c2V0TWluRmlsdGVyKE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciBtaW5GaWx0ZXIpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1pbkZp
bHRlcl8pLCBtaW5GaWx0ZXIpOworfQorCisvLyBwcm9wZXJ0eTogbWFnRmlsdGVyCitfTVRMX0lO
TElORSBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bWFn
RmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNh
bXBsZXJNaW5NYWdGaWx0ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWFnRmlsdGVyKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TWFnRmlsdGVy
KE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciBtYWdGaWx0ZXIpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1hZ0ZpbHRlcl8pLCBtYWdG
aWx0ZXIpOworfQorCisvLyBwcm9wZXJ0eTogbWlwRmlsdGVyCitfTVRMX0lOTElORSBNVEw6OlNh
bXBsZXJNaXBGaWx0ZXIgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bWlwRmlsdGVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNhbXBsZXJNaXBGaWx0ZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWlwRmlsdGVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TWlwRmlsdGVyKE1UTDo6U2FtcGxlck1pcEZp
bHRlciBtaXBGaWx0ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldE1pcEZpbHRlcl8pLCBtaXBGaWx0ZXIpOworfQorCisvLyBwcm9w
ZXJ0eTogbWF4QW5pc290cm9weQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6U2FtcGxl
ckRlc2NyaXB0b3I6Om1heEFuaXNvdHJvcHkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhBbmlz
b3Ryb3B5KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6
c2V0TWF4QW5pc290cm9weShOUzo6VUludGVnZXIgbWF4QW5pc290cm9weSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4QW5pc290
cm9weV8pLCBtYXhBbmlzb3Ryb3B5KTsKK30KKworLy8gcHJvcGVydHk6IHNBZGRyZXNzTW9kZQor
X01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgTVRMOjpTYW1wbGVyRGVzY3JpcHRv
cjo6c0FkZHJlc3NNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzQWRkcmVz
c01vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpz
ZXRTQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgc0FkZHJlc3NNb2RlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRT
QWRkcmVzc01vZGVfKSwgc0FkZHJlc3NNb2RlKTsKK30KKworLy8gcHJvcGVydHk6IHRBZGRyZXNz
TW9kZQorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgTVRMOjpTYW1wbGVyRGVz
Y3JpcHRvcjo6dEFkZHJlc3NNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0
QWRkcmVzc01vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlw
dG9yOjpzZXRUQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgdEFkZHJlc3NNb2Rl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRUQWRkcmVzc01vZGVfKSwgdEFkZHJlc3NNb2RlKTsKK30KKworLy8gcHJvcGVydHk6IHJB
ZGRyZXNzTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgTVRMOjpTYW1w
bGVyRGVzY3JpcHRvcjo6ckFkZHJlc3NNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTChyQWRkcmVzc01vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJE
ZXNjcmlwdG9yOjpzZXRSQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgckFkZHJl
c3NNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRSQWRkcmVzc01vZGVfKSwgckFkZHJlc3NNb2RlKTsKK30KKworLy8gcHJvcGVy
dHk6IGJvcmRlckNvbG9yCitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJCb3JkZXJDb2xvciBNVEw6
OlNhbXBsZXJEZXNjcmlwdG9yOjpib3JkZXJDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyQm9yZGVyQ29sb3I+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYm9yZGVyQ29sb3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBs
ZXJEZXNjcmlwdG9yOjpzZXRCb3JkZXJDb2xvcihNVEw6OlNhbXBsZXJCb3JkZXJDb2xvciBib3Jk
ZXJDb2xvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0Qm9yZGVyQ29sb3JfKSwgYm9yZGVyQ29sb3IpOworfQorCisvLyBwcm9wZXJ0
eTogbm9ybWFsaXplZENvb3JkaW5hdGVzCitfTVRMX0lOTElORSBib29sIE1UTDo6U2FtcGxlckRl
c2NyaXB0b3I6Om5vcm1hbGl6ZWRDb29yZGluYXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChub3JtYWxpemVk
Q29vcmRpbmF0ZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlw
dG9yOjpzZXROb3JtYWxpemVkQ29vcmRpbmF0ZXMoYm9vbCBub3JtYWxpemVkQ29vcmRpbmF0ZXMp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE5vcm1hbGl6ZWRDb29yZGluYXRlc18pLCBub3JtYWxpemVkQ29vcmRpbmF0ZXMpOworfQor
CisvLyBwcm9wZXJ0eTogbG9kTWluQ2xhbXAKK19NVExfSU5MSU5FIGZsb2F0IE1UTDo6U2FtcGxl
ckRlc2NyaXB0b3I6OmxvZE1pbkNsYW1wKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxmbG9hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChsb2RNaW5DbGFtcCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldExvZE1pbkNs
YW1wKGZsb2F0IGxvZE1pbkNsYW1wKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMb2RNaW5DbGFtcF8pLCBsb2RNaW5DbGFtcCk7Cit9
CisKKy8vIHByb3BlcnR5OiBsb2RNYXhDbGFtcAorX01UTF9JTkxJTkUgZmxvYXQgTVRMOjpTYW1w
bGVyRGVzY3JpcHRvcjo6bG9kTWF4Q2xhbXAoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPGZsb2F0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxvZE1heENsYW1wKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TG9kTWF4
Q2xhbXAoZmxvYXQgbG9kTWF4Q2xhbXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExvZE1heENsYW1wXyksIGxvZE1heENsYW1wKTsK
K30KKworLy8gcHJvcGVydHk6IGxvZEF2ZXJhZ2UKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpTYW1w
bGVyRGVzY3JpcHRvcjo6bG9kQXZlcmFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChsb2RBdmVyYWdlKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TG9kQXZlcmFn
ZShib29sIGxvZEF2ZXJhZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldExvZEF2ZXJhZ2VfKSwgbG9kQXZlcmFnZSk7Cit9CisKKy8v
IHByb3BlcnR5OiBjb21wYXJlRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6Q29tcGFyZUZ1bmN0
aW9uIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmNvbXBhcmVGdW5jdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21wYXJlRnVuY3Rpb24+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoY29tcGFyZUZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0Q29tcGFyZUZ1bmN0aW9uKE1UTDo6Q29tcGFy
ZUZ1bmN0aW9uIGNvbXBhcmVGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tcGFyZUZ1bmN0aW9uXyksIGNvbXBhcmVG
dW5jdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0QXJndW1lbnRCdWZmZXJzCitfTVRM
X0lOTElORSBib29sIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnN1cHBvcnRBcmd1bWVudEJ1ZmZl
cnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRTdXBwb3J0QXJndW1lbnRC
dWZmZXJzKGJvb2wgc3VwcG9ydEFyZ3VtZW50QnVmZmVycykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFyZ3VtZW50QnVm
ZmVyc18pLCBzdXBwb3J0QXJndW1lbnRCdWZmZXJzKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVs
CitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpsYWJlbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5T
OjpTdHJpbmcqIE1UTDo6U2FtcGxlclN0YXRlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZp
Y2UqIE1UTDo6U2FtcGxlclN0YXRlOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZp
Y2UpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg3OTI0NGUyNGUwMjE5MzkyM2EzYzQxNzNkMTZkOTUwYzFlZTQxMmEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJ
bnB1dE91dHB1dERlc2NyaXB0b3IuaHBwCkBAIC0wLDAgKzEsMzgxIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExTdGFnZUlu
cHV0T3V0cHV0RGVzY3JpcHRvci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVk
ZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRP
dXRwdXREZXNjcmlwdG9yLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpV
SW50ZWdlciwgQXR0cmlidXRlRm9ybWF0KSB7CisgICAgQXR0cmlidXRlRm9ybWF0SW52YWxpZCA9
IDAsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIyID0gMSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRV
Q2hhcjMgPSAyLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyNCA9IDMsCisgICAgQXR0cmlidXRl
Rm9ybWF0Q2hhcjIgPSA0LAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXIzID0gNSwKKyAgICBBdHRy
aWJ1dGVGb3JtYXRDaGFyNCA9IDYsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIyTm9ybWFsaXpl
ZCA9IDcsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIzTm9ybWFsaXplZCA9IDgsCisgICAgQXR0
cmlidXRlRm9ybWF0VUNoYXI0Tm9ybWFsaXplZCA9IDksCisgICAgQXR0cmlidXRlRm9ybWF0Q2hh
cjJOb3JtYWxpemVkID0gMTAsCisgICAgQXR0cmlidXRlRm9ybWF0Q2hhcjNOb3JtYWxpemVkID0g
MTEsCisgICAgQXR0cmlidXRlRm9ybWF0Q2hhcjROb3JtYWxpemVkID0gMTIsCisgICAgQXR0cmli
dXRlRm9ybWF0VVNob3J0MiA9IDEzLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydDMgPSAxNCwK
KyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQ0ID0gMTUsCisgICAgQXR0cmlidXRlRm9ybWF0U2hv
cnQyID0gMTYsCisgICAgQXR0cmlidXRlRm9ybWF0U2hvcnQzID0gMTcsCisgICAgQXR0cmlidXRl
Rm9ybWF0U2hvcnQ0ID0gMTgsCisgICAgQXR0cmlidXRlRm9ybWF0VVNob3J0Mk5vcm1hbGl6ZWQg
PSAxOSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQzTm9ybWFsaXplZCA9IDIwLAorICAgIEF0
dHJpYnV0ZUZvcm1hdFVTaG9ydDROb3JtYWxpemVkID0gMjEsCisgICAgQXR0cmlidXRlRm9ybWF0
U2hvcnQyTm9ybWFsaXplZCA9IDIyLAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0M05vcm1hbGl6
ZWQgPSAyMywKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydDROb3JtYWxpemVkID0gMjQsCisgICAg
QXR0cmlidXRlRm9ybWF0SGFsZjIgPSAyNSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRIYWxmMyA9IDI2
LAorICAgIEF0dHJpYnV0ZUZvcm1hdEhhbGY0ID0gMjcsCisgICAgQXR0cmlidXRlRm9ybWF0Rmxv
YXQgPSAyOCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRGbG9hdDIgPSAyOSwKKyAgICBBdHRyaWJ1dGVG
b3JtYXRGbG9hdDMgPSAzMCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRGbG9hdDQgPSAzMSwKKyAgICBB
dHRyaWJ1dGVGb3JtYXRJbnQgPSAzMiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRJbnQyID0gMzMsCisg
ICAgQXR0cmlidXRlRm9ybWF0SW50MyA9IDM0LAorICAgIEF0dHJpYnV0ZUZvcm1hdEludDQgPSAz
NSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50ID0gMzYsCisgICAgQXR0cmlidXRlRm9ybWF0VUlu
dDIgPSAzNywKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50MyA9IDM4LAorICAgIEF0dHJpYnV0ZUZv
cm1hdFVJbnQ0ID0gMzksCisgICAgQXR0cmlidXRlRm9ybWF0SW50MTAxMDEwMk5vcm1hbGl6ZWQg
PSA0MCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50MTAxMDEwMk5vcm1hbGl6ZWQgPSA0MSwKKyAg
ICBBdHRyaWJ1dGVGb3JtYXRVQ2hhcjROb3JtYWxpemVkX0JHUkEgPSA0MiwKKyAgICBBdHRyaWJ1
dGVGb3JtYXRVQ2hhciA9IDQ1LAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXIgPSA0NiwKKyAgICBB
dHRyaWJ1dGVGb3JtYXRVQ2hhck5vcm1hbGl6ZWQgPSA0NywKKyAgICBBdHRyaWJ1dGVGb3JtYXRD
aGFyTm9ybWFsaXplZCA9IDQ4LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydCA9IDQ5LAorICAg
IEF0dHJpYnV0ZUZvcm1hdFNob3J0ID0gNTAsCisgICAgQXR0cmlidXRlRm9ybWF0VVNob3J0Tm9y
bWFsaXplZCA9IDUxLAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0Tm9ybWFsaXplZCA9IDUyLAor
ICAgIEF0dHJpYnV0ZUZvcm1hdEhhbGYgPSA1MywKK307CisKK19NVExfRU5VTShOUzo6VUludGVn
ZXIsIEluZGV4VHlwZSkgeworICAgIEluZGV4VHlwZVVJbnQxNiA9IDAsCisgICAgSW5kZXhUeXBl
VUludDMyID0gMSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFN0ZXBGdW5jdGlvbikg
eworICAgIFN0ZXBGdW5jdGlvbkNvbnN0YW50ID0gMCwKKyAgICBTdGVwRnVuY3Rpb25QZXJWZXJ0
ZXggPSAxLAorICAgIFN0ZXBGdW5jdGlvblBlckluc3RhbmNlID0gMiwKKyAgICBTdGVwRnVuY3Rp
b25QZXJQYXRjaCA9IDMsCisgICAgU3RlcEZ1bmN0aW9uUGVyUGF0Y2hDb250cm9sUG9pbnQgPSA0
LAorICAgIFN0ZXBGdW5jdGlvblRocmVhZFBvc2l0aW9uSW5HcmlkWCA9IDUsCisgICAgU3RlcEZ1
bmN0aW9uVGhyZWFkUG9zaXRpb25JbkdyaWRZID0gNiwKKyAgICBTdGVwRnVuY3Rpb25UaHJlYWRQ
b3NpdGlvbkluR3JpZFhJbmRleGVkID0gNywKKyAgICBTdGVwRnVuY3Rpb25UaHJlYWRQb3NpdGlv
bkluR3JpZFlJbmRleGVkID0gOCwKK307CisKK2NsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0b3Ig
OiBwdWJsaWMgTlM6OkNvcHlpbmc8QnVmZmVyTGF5b3V0RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAg
IGNsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0cmlkZShOUzo6VUludGVnZXIg
c3RyaWRlKTsKKworICAgIE1UTDo6U3RlcEZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICBzdGVw
RnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0U3RlcEZ1bmN0aW9uKE1UTDo6U3RlcEZ1bmN0aW9uIHN0ZXBGdW5jdGlvbik7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcFJhdGUoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RlcFJhdGUoTlM6
OlVJbnRlZ2VyIHN0ZXBSYXRlKTsKK307CisKK2NsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0b3JB
cnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJy
YXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqICAg
ICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiAgICAgICAg
ICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBCdWZmZXJMYXlv
dXREZXNjcmlwdG9yKiBidWZmZXJEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpOworfTsKKworY2xh
c3MgQXR0cmlidXRlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBdHRyaWJ1dGVEZXNj
cmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9y
KiBhbGxvYygpOworCisgICAgY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvciogICAgICAgIGluaXQo
KTsKKworICAgIE1UTDo6QXR0cmlidXRlRm9ybWF0ICAgICAgICAgICAgICBmb3JtYXQoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Rm9ybWF0KE1UTDo6
QXR0cmlidXRlRm9ybWF0IGZvcm1hdCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldE9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICAgICBidWZmZXJJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCdWZmZXJJbmRleChOUzo6VUludGVnZXIgYnVm
ZmVySW5kZXgpOworfTsKKworY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvckFycmF5IDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAg
IGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNs
YXNzIEF0dHJpYnV0ZURlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIg
aW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
T2JqZWN0KGNvbnN0IGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3IqIGF0dHJpYnV0ZURlc2MsIE5T
OjpVSW50ZWdlciBpbmRleCk7Cit9OworCitjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRv
ciA6IHB1YmxpYyBOUzo6Q29weWluZzxTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcj4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIGFsbG9j
KCk7CisKKyAgICBjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogICAgICAgIGluaXQo
KTsKKworICAgIHN0YXRpYyBjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogc3RhZ2VJ
bnB1dE91dHB1dERlc2NyaXB0b3IoKTsKKworICAgIGNsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheSogICAgICAgbGF5b3V0cygpIGNvbnN0OworCisgICAgY2xhc3MgQXR0cmlidXRlRGVz
Y3JpcHRvckFycmF5KiAgICAgICAgICBhdHRyaWJ1dGVzKCkgY29uc3Q7CisKKyAgICBNVEw6Oklu
ZGV4VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4VHlwZSgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhUeXBlKE1U
TDo6SW5kZXhUeXBlIGluZGV4VHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4QnVmZmVySW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluZGV4QnVmZmVySW5kZXgoTlM6OlVJ
bnRlZ2VyIGluZGV4QnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBNVEw6OkJ1ZmZl
ckxheW91dERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEJ1ZmZl
ckxheW91dERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBN
VEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3IqIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc3RyaWRlCitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzdHJpZGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdHJpZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlckxh
eW91dERlc2NyaXB0b3I6OnNldFN0cmlkZShOUzo6VUludGVnZXIgc3RyaWRlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdHJpZGVf
KSwgc3RyaWRlKTsKK30KKworLy8gcHJvcGVydHk6IHN0ZXBGdW5jdGlvbgorX01UTF9JTkxJTkUg
TVRMOjpTdGVwRnVuY3Rpb24gTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzdGVwRnVuY3Rp
b24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RlcEZ1
bmN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZXBGdW5jdGlvbikpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c2V0U3RlcEZ1bmN0aW9u
KE1UTDo6U3RlcEZ1bmN0aW9uIHN0ZXBGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlcEZ1bmN0aW9uXyksIHN0ZXBG
dW5jdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBzdGVwUmF0ZQorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RlcFJhdGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdGVwUmF0ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QnVmZmVy
TGF5b3V0RGVzY3JpcHRvcjo6c2V0U3RlcFJhdGUoTlM6OlVJbnRlZ2VyIHN0ZXBSYXRlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRT
dGVwUmF0ZV8pLCBzdGVwUmF0ZSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogTVRMOjpCdWZmZXJMYXlv
dXREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRM
QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqIE1UTDo6QnVmZmVyTGF5
b3V0RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5p
dDxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBv
YmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlckxheW91dERl
c2NyaXB0b3IqIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJ
bnRlZ2VyIGluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVm
ZmVyTGF5b3V0RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRl
eGVkU3Vic2NyaXB0XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRl
eGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogYnVm
ZmVyRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0
XyksIGJ1ZmZlckRlc2MsIGluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpBdHRyaWJ1dGVEZXNjcmlw
dG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QXR0cmli
dXRlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExBdHRyaWJ1dGVEZXNjcmlwdG9yKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNjcmlw
dG9yKiBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVy
dHk6IGZvcm1hdAorX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVGb3JtYXQgTVRMOjpBdHRyaWJ1
dGVEZXNjcmlwdG9yOjpmb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6QXR0cmlidXRlRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZvcm1h
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6c2V0
Rm9ybWF0KE1UTDo6QXR0cmlidXRlRm9ybWF0IGZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Rm9ybWF0XyksIGZvcm1hdCk7
Cit9CisKKy8vIHByb3BlcnR5OiBvZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OkF0dHJpYnV0ZURlc2NyaXB0b3I6Om9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9mZnNl
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6c2V0
T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9mZnNldF8pLCBvZmZzZXQpOworfQorCisv
LyBwcm9wZXJ0eTogYnVmZmVySW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkF0
dHJpYnV0ZURlc2NyaXB0b3I6OmJ1ZmZlckluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVm
ZmVySW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0
b3I6OnNldEJ1ZmZlckluZGV4KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVySW5k
ZXhfKSwgYnVmZmVySW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9J
TkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIE1UTDo6QXR0cmlidXRlRGVzY3Jp
cHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6
QXR0cmlidXRlRGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBdHRyaWJ1dGVEZXNj
cmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0
OgorX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yKiBNVEw6OkF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3IqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBpbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OkF0dHJp
YnV0ZURlc2NyaXB0b3IqIGF0dHJpYnV0ZURlc2MsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2Jq
ZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRyaWJ1dGVEZXNjLCBpbmRleCk7Cit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlN0YWdlSW5wdXRPdXRwdXRE
ZXNjcmlwdG9yKiBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0
b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IpKTsKK30K
KworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNj
cmlwdG9yKiBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yPigp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcgorX01U
TF9JTkxJTkUgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogTVRMOjpTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvcjo6c3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IoKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3Iq
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKSwgX01UTF9Q
UklWQVRFX1NFTChzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0
eTogbGF5b3V0cworX01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkq
IE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OmxheW91dHMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXlvdXRzKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBhdHRyaWJ1dGVzCitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSog
TVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6YXR0cmlidXRlcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJy
YXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0ZXMpKTsKK30KKworLy8gcHJvcGVy
dHk6IGluZGV4VHlwZQorX01UTF9JTkxJTkUgTVRMOjpJbmRleFR5cGUgTVRMOjpTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvcjo6aW5kZXhUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkluZGV4VHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRl
eFR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNj
cmlwdG9yOjpzZXRJbmRleFR5cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleFR5
cGVfKSwgaW5kZXhUeXBlKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4QnVmZmVySW5kZXgKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjpp
bmRleEJ1ZmZlckluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXhCdWZmZXJJbmRleCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6
OnNldEluZGV4QnVmZmVySW5kZXgoTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVySW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldElu
ZGV4QnVmZmVySW5kZXhfKSwgaW5kZXhCdWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogcmVz
ZXQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6cmVz
ZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChyZXNldCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFRleHR1cmUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFRleHR1cmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMmJhNDkwZTdhZjg3NWM2MjNkZjE4
MDAxOGM0MDE0Y2U0MDAzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMVGV4dHVyZS5ocHAKQEAgLTAsMCArMSw2NTggQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01U
TFRleHR1cmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJp
ZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExQaXhlbEZvcm1hdC5ocHAiCisjaW5j
bHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBwIgorI2luY2x1
ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlIDxJT1N1cmZhY2UvSU9TdXJmYWNlUmVmLmg+CisK
K25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFRleHR1cmVUeXBlKSB7
CisgICAgVGV4dHVyZVR5cGUxRCA9IDAsCisgICAgVGV4dHVyZVR5cGUxREFycmF5ID0gMSwKKyAg
ICBUZXh0dXJlVHlwZTJEID0gMiwKKyAgICBUZXh0dXJlVHlwZTJEQXJyYXkgPSAzLAorICAgIFRl
eHR1cmVUeXBlMkRNdWx0aXNhbXBsZSA9IDQsCisgICAgVGV4dHVyZVR5cGVDdWJlID0gNSwKKyAg
ICBUZXh0dXJlVHlwZUN1YmVBcnJheSA9IDYsCisgICAgVGV4dHVyZVR5cGUzRCA9IDcsCisgICAg
VGV4dHVyZVR5cGUyRE11bHRpc2FtcGxlQXJyYXkgPSA4LAorICAgIFRleHR1cmVUeXBlVGV4dHVy
ZUJ1ZmZlciA9IDksCit9OworCitfTVRMX0VOVU0odWludDhfdCwgVGV4dHVyZVN3aXp6bGUpIHsK
KyAgICBUZXh0dXJlU3dpenpsZVplcm8gPSAwLAorICAgIFRleHR1cmVTd2l6emxlT25lID0gMSwK
KyAgICBUZXh0dXJlU3dpenpsZVJlZCA9IDIsCisgICAgVGV4dHVyZVN3aXp6bGVHcmVlbiA9IDMs
CisgICAgVGV4dHVyZVN3aXp6bGVCbHVlID0gNCwKKyAgICBUZXh0dXJlU3dpenpsZUFscGhhID0g
NSwKK307CisKK3N0cnVjdCBUZXh0dXJlU3dpenpsZUNoYW5uZWxzCit7CisgICAgTVRMOjpUZXh0
dXJlU3dpenpsZSByZWQ7CisgICAgTVRMOjpUZXh0dXJlU3dpenpsZSBncmVlbjsKKyAgICBNVEw6
OlRleHR1cmVTd2l6emxlIGJsdWU7CisgICAgTVRMOjpUZXh0dXJlU3dpenpsZSBhbHBoYTsKK30g
X01UTF9QQUNLRUQ7CisKK2NsYXNzIFNoYXJlZFRleHR1cmVIYW5kbGUgOiBwdWJsaWMgTlM6OlJl
ZmVyZW5jaW5nPFNoYXJlZFRleHR1cmVIYW5kbGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIFNoYXJlZFRleHR1cmVIYW5kbGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBTaGFyZWRUZXh0
dXJlSGFuZGxlKiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgRGV2aWNlKiAgICAgICAgICAg
ICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAg
ICAgICAgICAgIGxhYmVsKCkgY29uc3Q7Cit9OworCitzdHJ1Y3QgU2hhcmVkVGV4dHVyZUhhbmRs
ZVByaXZhdGUKK3sKK30gX01UTF9QQUNLRUQ7CisKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIs
IFRleHR1cmVVc2FnZSkgeworICAgIFRleHR1cmVVc2FnZVVua25vd24gPSAwLAorICAgIFRleHR1
cmVVc2FnZVNoYWRlclJlYWQgPSAxLAorICAgIFRleHR1cmVVc2FnZVNoYWRlcldyaXRlID0gMiwK
KyAgICBUZXh0dXJlVXNhZ2VSZW5kZXJUYXJnZXQgPSA0LAorICAgIFRleHR1cmVVc2FnZVBpeGVs
Rm9ybWF0VmlldyA9IDE2LAorfTsKKworX01UTF9FTlVNKE5TOjpJbnRlZ2VyLCBUZXh0dXJlQ29t
cHJlc3Npb25UeXBlKSB7CisgICAgVGV4dHVyZUNvbXByZXNzaW9uVHlwZUxvc3NsZXNzID0gMCwK
KyAgICBUZXh0dXJlQ29tcHJlc3Npb25UeXBlTG9zc3kgPSAxLAorfTsKKworY2xhc3MgVGV4dHVy
ZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VGV4dHVyZURlc2NyaXB0b3I+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBhbGxvYygpOworCisg
ICAgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMg
Y2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIHRleHR1cmUyRERlc2NyaXB0b3IoTVRMOjpQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0
LCBib29sIG1pcG1hcHBlZCk7CisKKyAgICBzdGF0aWMgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3Iq
IHRleHR1cmVDdWJlRGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBOUzo6
VUludGVnZXIgc2l6ZSwgYm9vbCBtaXBtYXBwZWQpOworCisgICAgc3RhdGljIGNsYXNzIFRleHR1
cmVEZXNjcmlwdG9yKiB0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBOUzo6VUludGVnZXIgd2lkdGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIHJlc291
cmNlT3B0aW9ucywgTVRMOjpUZXh0dXJlVXNhZ2UgdXNhZ2UpOworCisgICAgTVRMOjpUZXh0dXJl
VHlwZSAgICAgICAgICAgICAgICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0VGV4dHVyZVR5cGUoTVRMOjpUZXh0dXJlVHlwZSB0ZXh0
dXJlVHlwZSk7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAgICAgIHBpeGVsRm9y
bWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQaXhl
bEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KTsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICAgd2lkdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFdpZHRoKE5TOjpVSW50ZWdlciB3aWR0aCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGVpZ2h0KE5TOjpVSW50ZWdlciBoZWlnaHQpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBkZXB0aCgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVwdGgoTlM6OlVJbnRlZ2VyIGRl
cHRoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWlwbWFwTGV2ZWxD
b3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWlw
bWFwTGV2ZWxDb3VudChOUzo6VUludGVnZXIgbWlwbWFwTGV2ZWxDb3VudCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIg
c2FtcGxlQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBhcnJh
eUxlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFycmF5TGVuZ3RoKTsKKworICAgIE1UTDo6UmVzb3Vy
Y2VPcHRpb25zICAgICAgICAgICAgcmVzb3VyY2VPcHRpb25zKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNvdXJjZU9wdGlvbnMoTVRMOjpSZXNvdXJj
ZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zKTsKKworICAgIE1UTDo6Q1BVQ2FjaGVNb2RlICAgICAg
ICAgICAgICAgY3B1Q2FjaGVNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRDcHVDYWNoZU1vZGUoTVRMOjpDUFVDYWNoZU1vZGUgY3B1Q2FjaGVNb2Rl
KTsKKworICAgIE1UTDo6U3RvcmFnZU1vZGUgICAgICAgICAgICAgICAgc3RvcmFnZU1vZGUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0b3JhZ2VNb2Rl
KE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpOworCisgICAgTVRMOjpIYXphcmRUcmFja2lu
Z01vZGUgICAgICAgICBoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldEhhemFyZFRyYWNraW5nTW9kZShNVEw6OkhhemFyZFRy
YWNraW5nTW9kZSBoYXphcmRUcmFja2luZ01vZGUpOworCisgICAgTVRMOjpUZXh0dXJlVXNhZ2Ug
ICAgICAgICAgICAgICB1c2FnZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0VXNhZ2UoTVRMOjpUZXh0dXJlVXNhZ2UgdXNhZ2UpOworCisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0dQVU9wdGltaXplZENvbnRlbnRzKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBbGxvd0dQVU9wdGlt
aXplZENvbnRlbnRzKGJvb2wgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cyk7CisKKyAgICBNVEw6
OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgICAgIHN3aXp6bGUoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN3aXp6bGUoTVRMOjpUZXh0dXJlU3dpenpsZUNo
YW5uZWxzIHN3aXp6bGUpOworfTsKKworY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8VGV4dHVyZSwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgUmVzb3VyY2Uq
ICAgICAgICAgICAgIHJvb3RSZXNvdXJjZSgpIGNvbnN0OworCisgICAgY2xhc3MgVGV4dHVyZSog
ICAgICAgICAgICAgIHBhcmVudFRleHR1cmUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICBwYXJlbnRSZWxhdGl2ZUxldmVsKCkgY29uc3Q7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgcGFyZW50UmVsYXRpdmVTbGljZSgpIGNvbnN0OworCisgICAg
Y2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgIGJ1ZmZlcigpIGNvbnN0OworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgIGJ1ZmZlck9mZnNldCgpIGNvbnN0OworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgIGJ1ZmZlckJ5dGVzUGVyUm93KCkgY29uc3Q7CisKKyAgICBJ
T1N1cmZhY2VSZWYgICAgICAgICAgICAgICAgaW9zdXJmYWNlKCkgY29uc3Q7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgaW9zdXJmYWNlUGxhbmUoKSBjb25zdDsKKworICAgIE1U
TDo6VGV4dHVyZVR5cGUgICAgICAgICAgICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworCisgICAgTVRM
OjpQaXhlbEZvcm1hdCAgICAgICAgICAgIHBpeGVsRm9ybWF0KCkgY29uc3Q7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgd2lkdGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICBoZWlnaHQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICBkZXB0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgIG1pcG1hcExldmVsQ291bnQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICBzYW1wbGVDb3VudCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgIGFycmF5TGVuZ3RoKCkgY29uc3Q7CisKKyAgICBNVEw6OlRleHR1cmVVc2FnZSAgICAg
ICAgICAgdXNhZ2UoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBz
aGFyZWFibGUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBmcmFt
ZWJ1ZmZlck9ubHkoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBm
aXJzdE1pcG1hcEluVGFpbCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgIHRhaWxTaXplSW5CeXRlcygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAg
ICAgICAgIGlzU3BhcnNlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAg
ICAgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cygpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgIGdldEJ5dGVzKGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50
ZWdlciBieXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVySW1hZ2UsIE1UTDo6UmVnaW9u
IHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVsLCBOUzo6VUludGVnZXIgc2xpY2UpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VSZWdpb24oTVRMOjpSZWdpb24gcmVn
aW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZSwgY29uc3Qgdm9pZCog
cGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgYnl0ZXNQ
ZXJJbWFnZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Qnl0ZXMoY29u
c3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93LCBNVEw6OlJlZ2lv
biByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZlbCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwbGFjZVJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBs
ZXZlbCwgY29uc3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93KTsK
KworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICBuZXdUZXh0dXJlVmlldyhNVEw6OlBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0KTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAg
ICBuZXdUZXh0dXJlVmlldyhNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBNVEw6OlRleHR1
cmVUeXBlIHRleHR1cmVUeXBlLCBOUzo6UmFuZ2UgbGV2ZWxSYW5nZSwgTlM6OlJhbmdlIHNsaWNl
UmFuZ2UpOworCisgICAgY2xhc3MgU2hhcmVkVGV4dHVyZUhhbmRsZSogIG5ld1NoYXJlZFRleHR1
cmVIYW5kbGUoKTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICByZW1vdGVTdG9y
YWdlVGV4dHVyZSgpIGNvbnN0OworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgICAgIG5l
d1JlbW90ZVRleHR1cmVWaWV3Rm9yRGV2aWNlKGNvbnN0IGNsYXNzIERldmljZSogZGV2aWNlKTsK
KworICAgIE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBzd2l6emxlKCkgY29uc3Q7CisKKyAg
ICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgbmV3VGV4dHVyZVZpZXcoTVRMOjpQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSwgTlM6OlJhbmdl
IGxldmVsUmFuZ2UsIE5TOjpSYW5nZSBzbGljZVJhbmdlLCBNVEw6OlRleHR1cmVTd2l6emxlQ2hh
bm5lbHMgc3dpenpsZSk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGUqIE1UTDo6U2hhcmVkVGV4dHVyZUhhbmRs
ZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlNoYXJlZFRl
eHR1cmVIYW5kbGU+KF9NVExfUFJJVkFURV9DTFMoTVRMU2hhcmVkVGV4dHVyZUhhbmRsZSkpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6U2hhcmVkVGV4dHVyZUhhbmRs
ZSogTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGU+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OlNoYXJlZFRleHR1cmVIYW5k
bGU6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6U2hhcmVkVGV4dHVyZUhh
bmRsZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBNVEw6
OlRleHR1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6VGV4dHVyZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVGV4dHVyZURl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRleHR1
cmVEZXNjcmlwdG9yKiBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlRleHR1cmVEZXNjcmlwdG9yPigpOworfQorCisvLyBz
dGF0aWMgbWV0aG9kOiB0ZXh0dXJlMkREZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0OndpZHRoOmhl
aWdodDptaXBtYXBwZWQ6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBNVEw6
OlRleHR1cmVEZXNjcmlwdG9yOjp0ZXh0dXJlMkREZXNjcmlwdG9yKE1UTDo6UGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwgYm9v
bCBtaXBtYXBwZWQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0
dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMVGV4dHVyZURlc2NyaXB0b3IpLCBf
TVRMX1BSSVZBVEVfU0VMKHRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXRfd2lkdGhf
aGVpZ2h0X21pcG1hcHBlZF8pLCBwaXhlbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgbWlwbWFwcGVk
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogdGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0aFBpeGVs
Rm9ybWF0OnNpemU6bWlwbWFwcGVkOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlRGVzY3JpcHRv
ciogTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6dGV4dHVyZUN1YmVEZXNjcmlwdG9yKE1UTDo6UGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciBzaXplLCBib29sIG1pcG1hcHBlZCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVEZXNjcmlwdG9y
Kj4oX01UTF9QUklWQVRFX0NMUyhNVExUZXh0dXJlRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9T
RUwodGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0X3NpemVfbWlwbWFwcGVkXyks
IHBpeGVsRm9ybWF0LCBzaXplLCBtaXBtYXBwZWQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiB0
ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdDp3aWR0aDpyZXNvdXJjZU9wdGlv
bnM6dXNhZ2U6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBNVEw6OlRleHR1
cmVEZXNjcmlwdG9yOjp0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBOUzo6VUludGVnZXIgd2lkdGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIHJlc291
cmNlT3B0aW9ucywgTVRMOjpUZXh0dXJlVXNhZ2UgdXNhZ2UpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMo
TVRMVGV4dHVyZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVCdWZmZXJEZXNj
cmlwdG9yV2l0aFBpeGVsRm9ybWF0X3dpZHRoX3Jlc291cmNlT3B0aW9uc191c2FnZV8pLCBwaXhl
bEZvcm1hdCwgd2lkdGgsIHJlc291cmNlT3B0aW9ucywgdXNhZ2UpOworfQorCisvLyBwcm9wZXJ0
eTogdGV4dHVyZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVR5cGUgTVRMOjpUZXh0dXJl
RGVzY3JpcHRvcjo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVy
ZVR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpz
ZXRUZXh0dXJlVHlwZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXh0dXJlVHlw
ZV8pLCB0ZXh0dXJlVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBwaXhlbEZvcm1hdAorX01UTF9J
TkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpwaXhlbEZvcm1h
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXhlbEZv
cm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaXhlbEZvcm1hdCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFBpeGVsRm9ybWF0KE1UTDo6UGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFBpeGVsRm9ybWF0XyksIHBpeGVsRm9ybWF0KTsKK30K
KworLy8gcHJvcGVydHk6IHdpZHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0
dXJlRGVzY3JpcHRvcjo6d2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3aWR0aCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFdpZHRoKE5TOjpV
SW50ZWdlciB3aWR0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0V2lkdGhfKSwgd2lkdGgpOworfQorCisvLyBwcm9wZXJ0eTogaGVp
Z2h0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6aGVp
Z2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaGVpZ2h0KSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0SGVpZ2h0KE5TOjpVSW50ZWdlciBoZWlnaHQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEhlaWdodF8pLCBoZWlnaHQpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpkZXB0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGRlcHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJl
RGVzY3JpcHRvcjo6c2V0RGVwdGgoTlM6OlVJbnRlZ2VyIGRlcHRoKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aF8pLCBkZXB0
aCk7Cit9CisKKy8vIHByb3BlcnR5OiBtaXBtYXBMZXZlbENvdW50CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6bWlwbWFwTGV2ZWxDb3VudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG1pcG1hcExldmVsQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRNaXBtYXBMZXZlbENvdW50KE5TOjpVSW50ZWdl
ciBtaXBtYXBMZXZlbENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRNaXBtYXBMZXZlbENvdW50XyksIG1pcG1hcExldmVsQ291
bnQpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzYW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNhbXBsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJl
RGVzY3JpcHRvcjo6c2V0U2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRT
YW1wbGVDb3VudF8pLCBzYW1wbGVDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBhcnJheUxlbmd0
aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmFycmF5
TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRBcnJheUxlbmd0aChOUzo6VUlu
dGVnZXIgYXJyYXlMZW5ndGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEFycmF5TGVuZ3RoXyksIGFycmF5TGVuZ3RoKTsKK30KKwor
Ly8gcHJvcGVydHk6IHJlc291cmNlT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZU9w
dGlvbnMgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6cmVzb3VyY2VPcHRpb25zKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlT3B0aW9ucz4odGhp
cywgX01UTF9QUklWQVRFX1NFTChyZXNvdXJjZU9wdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRSZXNvdXJjZU9wdGlvbnMoTVRMOjpSZXNv
dXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZXNvdXJjZU9wdGlvbnNfKSwgcmVzb3Vy
Y2VPcHRpb25zKTsKK30KKworLy8gcHJvcGVydHk6IGNwdUNhY2hlTW9kZQorX01UTF9JTkxJTkUg
TVRMOjpDUFVDYWNoZU1vZGUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6Y3B1Q2FjaGVNb2RlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNQVUNhY2hlTW9k
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChjcHVDYWNoZU1vZGUpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRDcHVDYWNoZU1vZGUoTVRMOjpDUFVD
YWNoZU1vZGUgY3B1Q2FjaGVNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDcHVDYWNoZU1vZGVfKSwgY3B1Q2FjaGVNb2RlKTsK
K30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VNb2RlCitfTVRMX0lOTElORSBNVEw6OlN0b3JhZ2VN
b2RlIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JhZ2VNb2RlPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHN0b3JhZ2VNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0
dXJlRGVzY3JpcHRvcjo6c2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBzdG9yYWdlTW9k
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0U3RvcmFnZU1vZGVfKSwgc3RvcmFnZU1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogaGF6
YXJkVHJhY2tpbmdNb2RlCitfTVRMX0lOTElORSBNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBNVEw6
OlRleHR1cmVEZXNjcmlwdG9yOjpoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGhhemFyZFRyYWNraW5nTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldEhhemFyZFRyYWNraW5nTW9kZShNVEw6Okhh
emFyZFRyYWNraW5nTW9kZSBoYXphcmRUcmFja2luZ01vZGUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEhhemFyZFRyYWNraW5nTW9k
ZV8pLCBoYXphcmRUcmFja2luZ01vZGUpOworfQorCisvLyBwcm9wZXJ0eTogdXNhZ2UKK19NVExf
SU5MSU5FIE1UTDo6VGV4dHVyZVVzYWdlIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnVzYWdlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVVc2Fn
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2FnZSkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFVzYWdlKE1UTDo6VGV4dHVyZVVzYWdlIHVzYWdl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRVc2FnZV8pLCB1c2FnZSk7Cit9CisKKy8vIHByb3BlcnR5OiBhbGxvd0dQVU9wdGltaXpl
ZENvbnRlbnRzCitfTVRMX0lOTElORSBib29sIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmFsbG93
R1BVT3B0aW1pemVkQ29udGVudHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWxsb3dHUFVPcHRpbWl6ZWRDb250
ZW50cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNl
dEFsbG93R1BVT3B0aW1pemVkQ29udGVudHMoYm9vbCBhbGxvd0dQVU9wdGltaXplZENvbnRlbnRz
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRBbGxvd0dQVU9wdGltaXplZENvbnRlbnRzXyksIGFsbG93R1BVT3B0aW1pemVkQ29udGVu
dHMpOworfQorCisvLyBwcm9wZXJ0eTogc3dpenpsZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJl
U3dpenpsZUNoYW5uZWxzIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnN3aXp6bGUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFu
bmVscz4odGhpcywgX01UTF9QUklWQVRFX1NFTChzd2l6emxlKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0U3dpenpsZShNVEw6OlRleHR1cmVTd2l6
emxlQ2hhbm5lbHMgc3dpenpsZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3dpenpsZV8pLCBzd2l6emxlKTsKK30KKworLy8gcHJv
cGVydHk6IHJvb3RSZXNvdXJjZQorX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZSogTVRMOjpUZXh0
dXJlOjpyb290UmVzb3VyY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6UmVzb3VyY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJvb3RSZXNvdXJjZSkp
OworfQorCisvLyBwcm9wZXJ0eTogcGFyZW50VGV4dHVyZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0
dXJlKiBNVEw6OlRleHR1cmU6OnBhcmVudFRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
cGFyZW50VGV4dHVyZSkpOworfQorCisvLyBwcm9wZXJ0eTogcGFyZW50UmVsYXRpdmVMZXZlbAor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6cGFyZW50UmVsYXRpdmVMZXZl
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhcmVudFJlbGF0aXZlTGV2ZWwpKTsKK30KKworLy8g
cHJvcGVydHk6IHBhcmVudFJlbGF0aXZlU2xpY2UKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OlRleHR1cmU6OnBhcmVudFJlbGF0aXZlU2xpY2UoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChw
YXJlbnRSZWxhdGl2ZVNsaWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXIKK19NVExfSU5M
SU5FIE1UTDo6QnVmZmVyKiBNVEw6OlRleHR1cmU6OmJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGJ1ZmZlcikpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyT2Zmc2V0CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjpidWZmZXJPZmZzZXQoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChidWZmZXJPZmZzZXQpKTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckJ5dGVzUGVy
Um93CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjpidWZmZXJCeXRlc1Bl
clJvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlckJ5dGVzUGVyUm93KSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpb3N1cmZhY2UKK19NVExfSU5MSU5FIElPU3VyZmFjZVJlZiBNVEw6OlRleHR1
cmU6Omlvc3VyZmFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
SU9TdXJmYWNlUmVmPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlvc3VyZmFjZSkpOworfQorCisv
LyBwcm9wZXJ0eTogaW9zdXJmYWNlUGxhbmUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OlRleHR1cmU6Omlvc3VyZmFjZVBsYW5lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW9zdXJmYWNl
UGxhbmUpKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVUeXBlCitfTVRMX0lOTElORSBNVEw6
OlRleHR1cmVUeXBlIE1UTDo6VGV4dHVyZTo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodGV4dHVyZVR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHBpeGVsRm9ybWF0Citf
TVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6VGV4dHVyZTo6cGl4ZWxGb3JtYXQoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3JtYXQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGl4ZWxGb3JtYXQpKTsKK30KKworLy8gcHJvcGVydHk6
IHdpZHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjp3aWR0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHdpZHRoKSk7Cit9CisKKy8vIHByb3BlcnR5OiBoZWlnaHQKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OmhlaWdodCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGhlaWdodCkpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGgKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OmRlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZGVwdGgpKTsKK30KKworLy8gcHJvcGVydHk6IG1pcG1hcExldmVsQ291bnQKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6Om1pcG1hcExldmVsQ291bnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChtaXBtYXBMZXZlbENvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVD
b3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6c2FtcGxlQ291bnQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTog
YXJyYXlMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OmFycmF5
TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KKworLy8gcHJv
cGVydHk6IHVzYWdlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVVc2FnZSBNVEw6OlRleHR1cmU6
OnVzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRl
eHR1cmVVc2FnZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2FnZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogc2hhcmVhYmxlCitfTVRMX0lOTElORSBib29sIE1UTDo6VGV4dHVyZTo6c2hhcmVhYmxl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGlzU2hhcmVhYmxlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFtZWJ1
ZmZlck9ubHkKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJlOjpmcmFtZWJ1ZmZlck9ubHko
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaXNGcmFtZWJ1ZmZlck9ubHkpKTsKK30KKworLy8gcHJvcGVydHk6IGZp
cnN0TWlwbWFwSW5UYWlsCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjpm
aXJzdE1pcG1hcEluVGFpbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZpcnN0TWlwbWFwSW5UYWls
KSk7Cit9CisKKy8vIHByb3BlcnR5OiB0YWlsU2l6ZUluQnl0ZXMKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlRleHR1cmU6OnRhaWxTaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHRhaWxTaXplSW5CeXRlcykpOworfQorCisvLyBwcm9wZXJ0eTogaXNTcGFyc2UKK19NVExf
SU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJlOjppc1NwYXJzZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1NwYXJz
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cworX01UTF9J
TkxJTkUgYm9vbCBNVEw6OlRleHR1cmU6OmFsbG93R1BVT3B0aW1pemVkQ29udGVudHMoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cykpOworfQorCisvLyBtZXRob2Q6IGdl
dEJ5dGVzOmJ5dGVzUGVyUm93OmJ5dGVzUGVySW1hZ2U6ZnJvbVJlZ2lvbjptaXBtYXBMZXZlbDpz
bGljZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlOjpnZXRCeXRlcyhjb25zdCB2b2lk
KiBwaXhlbEJ5dGVzLCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBieXRl
c1BlckltYWdlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZlbCwgTlM6OlVJ
bnRlZ2VyIHNsaWNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChnZXRCeXRlc19ieXRlc1BlclJvd19ieXRlc1BlckltYWdlX2Zyb21SZWdp
b25fbWlwbWFwTGV2ZWxfc2xpY2VfKSwgcGl4ZWxCeXRlcywgYnl0ZXNQZXJSb3csIGJ5dGVzUGVy
SW1hZ2UsIHJlZ2lvbiwgbGV2ZWwsIHNsaWNlKTsKK30KKworLy8gbWV0aG9kOiByZXBsYWNlUmVn
aW9uOm1pcG1hcExldmVsOnNsaWNlOndpdGhCeXRlczpieXRlc1BlclJvdzpieXRlc1BlckltYWdl
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmU6OnJlcGxhY2VSZWdpb24oTVRMOjpSZWdp
b24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZSwgY29uc3Qg
dm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIg
Ynl0ZXNQZXJJbWFnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocmVwbGFjZVJlZ2lvbl9taXBtYXBMZXZlbF9zbGljZV93aXRoQnl0ZXNf
Ynl0ZXNQZXJSb3dfYnl0ZXNQZXJJbWFnZV8pLCByZWdpb24sIGxldmVsLCBzbGljZSwgcGl4ZWxC
eXRlcywgYnl0ZXNQZXJSb3csIGJ5dGVzUGVySW1hZ2UpOworfQorCisvLyBtZXRob2Q6IGdldEJ5
dGVzOmJ5dGVzUGVyUm93OmZyb21SZWdpb246bWlwbWFwTGV2ZWw6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6VGV4dHVyZTo6Z2V0Qnl0ZXMoY29uc3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRl
Z2VyIGJ5dGVzUGVyUm93LCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZlbCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
Z2V0Qnl0ZXNfYnl0ZXNQZXJSb3dfZnJvbVJlZ2lvbl9taXBtYXBMZXZlbF8pLCBwaXhlbEJ5dGVz
LCBieXRlc1BlclJvdywgcmVnaW9uLCBsZXZlbCk7Cit9CisKKy8vIG1ldGhvZDogcmVwbGFjZVJl
Z2lvbjptaXBtYXBMZXZlbDp3aXRoQnl0ZXM6Ynl0ZXNQZXJSb3c6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6VGV4dHVyZTo6cmVwbGFjZVJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50
ZWdlciBsZXZlbCwgY29uc3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVy
Um93KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChyZXBsYWNlUmVnaW9uX21pcG1hcExldmVsX3dpdGhCeXRlc19ieXRlc1BlclJvd18pLCBy
ZWdpb24sIGxldmVsLCBwaXhlbEJ5dGVzLCBieXRlc1BlclJvdyk7Cit9CisKKy8vIG1ldGhvZDog
bmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUq
IE1UTDo6VGV4dHVyZTo6bmV3VGV4dHVyZVZpZXcoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0XyksIHBpeGVs
Rm9ybWF0KTsKK30KKworLy8gbWV0aG9kOiBuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdDp0
ZXh0dXJlVHlwZTpsZXZlbHM6c2xpY2VzOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6
OlRleHR1cmU6Om5ld1RleHR1cmVWaWV3KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE1U
TDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUsIE5TOjpSYW5nZSBsZXZlbFJhbmdlLCBOUzo6UmFu
Z2Ugc2xpY2VSYW5nZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRl
eHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9y
bWF0X3RleHR1cmVUeXBlX2xldmVsc19zbGljZXNfKSwgcGl4ZWxGb3JtYXQsIHRleHR1cmVUeXBl
LCBsZXZlbFJhbmdlLCBzbGljZVJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRUZXh0
dXJlSGFuZGxlCitfTVRMX0lOTElORSBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGUqIE1UTDo6VGV4
dHVyZTo6bmV3U2hhcmVkVGV4dHVyZUhhbmRsZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuZXdTaGFyZWRUZXh0dXJlSGFuZGxlKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZW1vdGVTdG9y
YWdlVGV4dHVyZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OlRleHR1cmU6OnJlbW90
ZVN0b3JhZ2VUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlbW90ZVN0b3JhZ2VUZXh0
dXJlKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVtb3RlVGV4dHVyZVZpZXdGb3JEZXZpY2U6Citf
TVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6VGV4dHVyZTo6bmV3UmVtb3RlVGV4dHVyZVZp
ZXdGb3JEZXZpY2UoY29uc3QgTVRMOjpEZXZpY2UqIGRldmljZSkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1JlbW90ZVRleHR1cmVWaWV3Rm9yRGV2aWNlXyksIGRldmljZSk7Cit9CisKKy8vIHByb3BlcnR5
OiBzd2l6emxlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgTVRMOjpU
ZXh0dXJlOjpzd2l6emxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3dp
enpsZSkpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0OnRl
eHR1cmVUeXBlOmxldmVsczpzbGljZXM6c3dpenpsZToKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVy
ZSogTVRMOjpUZXh0dXJlOjpuZXdUZXh0dXJlVmlldyhNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlLCBOUzo6UmFuZ2UgbGV2ZWxSYW5nZSwg
TlM6OlJhbmdlIHNsaWNlUmFuZ2UsIE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBzd2l6emxl
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXRfdGV4dHVyZVR5
cGVfbGV2ZWxzX3NsaWNlc19zd2l6emxlXyksIHBpeGVsRm9ybWF0LCB0ZXh0dXJlVHlwZSwgbGV2
ZWxSYW5nZSwgc2xpY2VSYW5nZSwgc3dpenpsZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVHlwZXMuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjhjNGQ5YTJj
MzhhNTllNTQ5M2NlODg5ZDBkNWUyZDM3YWVhOGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcApAQCAtMCwwICsxLDE2
MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwor
Ly8gTWV0YWwvTVRMVHlwZXMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJ
bmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRM
SGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisK
K25hbWVzcGFjZSBNVEwKK3sKK3N0cnVjdCBPcmlnaW4KK3sKKyAgICBPcmlnaW4oKSA9IGRlZmF1
bHQ7CisKKyAgICBPcmlnaW4oTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUlu
dGVnZXIgeik7CisKKyAgICBzdGF0aWMgT3JpZ2luIE1ha2UoTlM6OlVJbnRlZ2VyIHgsIE5TOjpV
SW50ZWdlciB5LCBOUzo6VUludGVnZXIgeik7CisKKyAgICBOUzo6VUludGVnZXIgIHg7CisgICAg
TlM6OlVJbnRlZ2VyICB5OworICAgIE5TOjpVSW50ZWdlciAgejsKK30gX01UTF9QQUNLRUQ7CisK
K3N0cnVjdCBTaXplCit7CisgICAgU2l6ZSgpID0gZGVmYXVsdDsKKworICAgIFNpemUoTlM6OlVJ
bnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpOwor
CisgICAgc3RhdGljIFNpemUgIE1ha2UoTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIg
aGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpOworCisgICAgTlM6OlVJbnRlZ2VyIHdpZHRoOwor
ICAgIE5TOjpVSW50ZWdlciBoZWlnaHQ7CisgICAgTlM6OlVJbnRlZ2VyIGRlcHRoOworfSBfTVRM
X1BBQ0tFRDsKKworc3RydWN0IFJlZ2lvbgoreworICAgIFJlZ2lvbigpID0gZGVmYXVsdDsKKwor
ICAgIFJlZ2lvbihOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHdpZHRoKTsKKworICAgIFJl
Z2lvbihOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB3aWR0aCwg
TlM6OlVJbnRlZ2VyIGhlaWdodCk7CisKKyAgICBSZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5TOjpV
SW50ZWdlciB5LCBOUzo6VUludGVnZXIgeiwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVn
ZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpOworCisgICAgc3RhdGljIFJlZ2lvbiBNYWtl
MUQoTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB3aWR0aCk7CisKKyAgICBzdGF0aWMgUmVn
aW9uIE1ha2UyRChOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB3
aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCk7CisKKyAgICBzdGF0aWMgUmVnaW9uIE1ha2UzRChO
Uzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6LCBOUzo6VUludGVn
ZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIE5TOjpVSW50ZWdlciBkZXB0aCk7CisKKyAg
ICBNVEw6Ok9yaWdpbiAgIG9yaWdpbjsKKyAgICBNVEw6OlNpemUgICAgIHNpemU7Cit9IF9NVExf
UEFDS0VEOworCitzdHJ1Y3QgU2FtcGxlUG9zaXRpb247CisKK3VzaW5nIENvb3JkaW5hdGUyRCA9
IFNhbXBsZVBvc2l0aW9uOworCitzdHJ1Y3QgU2FtcGxlUG9zaXRpb24KK3sKKyAgICBTYW1wbGVQ
b3NpdGlvbigpID0gZGVmYXVsdDsKKworICAgIFNhbXBsZVBvc2l0aW9uKGZsb2F0IF94LCBmbG9h
dCBfeSk7CisKKyAgICBzdGF0aWMgU2FtcGxlUG9zaXRpb24gTWFrZShmbG9hdCB4LCBmbG9hdCB5
KTsKKworICAgIGZsb2F0ICAgICAgICAgICAgICAgICB4OworICAgIGZsb2F0ICAgICAgICAgICAg
ICAgICB5OworfSBfTVRMX1BBQ0tFRDsKKworfQorCitfTVRMX0lOTElORSBNVEw6Ok9yaWdpbjo6
T3JpZ2luKE5TOjpVSW50ZWdlciBfeCwgTlM6OlVJbnRlZ2VyIF95LCBOUzo6VUludGVnZXIgX3op
CisgICAgOiB4KF94KQorICAgICwgeShfeSkKKyAgICAsIHooX3opCit7Cit9CisKK19NVExfSU5M
SU5FIE1UTDo6T3JpZ2luIE1UTDo6T3JpZ2luOjpNYWtlKE5TOjpVSW50ZWdlciB4LCBOUzo6VUlu
dGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHopCit7CisgICAgcmV0dXJuIE9yaWdpbih4LCB5LCB6KTsK
K30KKworX01UTF9JTkxJTkUgTVRMOjpTaXplOjpTaXplKE5TOjpVSW50ZWdlciBfd2lkdGgsIE5T
OjpVSW50ZWdlciBfaGVpZ2h0LCBOUzo6VUludGVnZXIgX2RlcHRoKQorICAgIDogd2lkdGgoX3dp
ZHRoKQorICAgICwgaGVpZ2h0KF9oZWlnaHQpCisgICAgLCBkZXB0aChfZGVwdGgpCit7Cit9CisK
K19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlNpemU6Ok1ha2UoTlM6OlVJbnRlZ2VyIHdpZHRo
LCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpCit7CisgICAgcmV0dXJu
IFNpemUod2lkdGgsIGhlaWdodCwgZGVwdGgpOworfQorCitfTVRMX0lOTElORSBNVEw6OlJlZ2lv
bjo6UmVnaW9uKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgd2lkdGgpCisgICAgOiBvcmln
aW4oeCwgMCwgMCkKKyAgICAsIHNpemUod2lkdGgsIDEsIDEpCit7Cit9CisKK19NVExfSU5MSU5F
IE1UTDo6UmVnaW9uOjpSZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6
VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpCisgICAgOiBvcmlnaW4oeCwgeSwg
MCkKKyAgICAsIHNpemUod2lkdGgsIGhlaWdodCwgMSkKK3sKK30KKworX01UTF9JTkxJTkUgTVRM
OjpSZWdpb246OlJlZ2lvbihOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50
ZWdlciB6LCBOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIE5TOjpVSW50
ZWdlciBkZXB0aCkKKyAgICA6IG9yaWdpbih4LCB5LCB6KQorICAgICwgc2l6ZSh3aWR0aCwgaGVp
Z2h0LCBkZXB0aCkKK3sKK30KKworX01UTF9JTkxJTkUgTVRMOjpSZWdpb24gTVRMOjpSZWdpb246
Ok1ha2UxRChOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHdpZHRoKQoreworICAgIHJldHVy
biBSZWdpb24oeCwgd2lkdGgpOworfQorCitfTVRMX0lOTElORSBNVEw6OlJlZ2lvbiBNVEw6OlJl
Z2lvbjo6TWFrZTJEKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2Vy
IHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KQoreworICAgIHJldHVybiBSZWdpb24oeCwgeSwg
d2lkdGgsIGhlaWdodCk7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6UmVnaW9uIE1UTDo6UmVnaW9u
OjpNYWtlM0QoTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgeiwg
TlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVw
dGgpCit7CisgICAgcmV0dXJuIFJlZ2lvbih4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7
Cit9CisKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlUG9zaXRpb246OlNhbXBsZVBvc2l0aW9uKGZs
b2F0IF94LCBmbG9hdCBfeSkKKyAgICA6IHgoX3gpCisgICAgLCB5KF95KQoreworfQorCitfTVRM
X0lOTElORSBNVEw6OlNhbXBsZVBvc2l0aW9uIE1UTDo6U2FtcGxlUG9zaXRpb246Ok1ha2UoZmxv
YXQgeCwgZmxvYXQgeSkKK3sKKyAgICByZXR1cm4gU2FtcGxlUG9zaXRpb24oeCwgeSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmVydGV4
RGVzY3JpcHRvci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
VmVydGV4RGVzY3JpcHRvci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE3ZjgyM2FhMGFmOTUzMGIyNWMzMzFh
OWY1NmQxMjU2Njc2Mzg1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcApAQCAtMCwwICsxLDM0NCBA
QAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8g
TWV0YWwvTVRMVmVydGV4RGVzY3JpcHRvci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNs
dWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisj
aW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTFZlcnRl
eERlc2NyaXB0b3IuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRl
Z2VyLCBWZXJ0ZXhGb3JtYXQpIHsKKyAgICBWZXJ0ZXhGb3JtYXRJbnZhbGlkID0gMCwKKyAgICBW
ZXJ0ZXhGb3JtYXRVQ2hhcjIgPSAxLAorICAgIFZlcnRleEZvcm1hdFVDaGFyMyA9IDIsCisgICAg
VmVydGV4Rm9ybWF0VUNoYXI0ID0gMywKKyAgICBWZXJ0ZXhGb3JtYXRDaGFyMiA9IDQsCisgICAg
VmVydGV4Rm9ybWF0Q2hhcjMgPSA1LAorICAgIFZlcnRleEZvcm1hdENoYXI0ID0gNiwKKyAgICBW
ZXJ0ZXhGb3JtYXRVQ2hhcjJOb3JtYWxpemVkID0gNywKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hhcjNO
b3JtYWxpemVkID0gOCwKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hhcjROb3JtYWxpemVkID0gOSwKKyAg
ICBWZXJ0ZXhGb3JtYXRDaGFyMk5vcm1hbGl6ZWQgPSAxMCwKKyAgICBWZXJ0ZXhGb3JtYXRDaGFy
M05vcm1hbGl6ZWQgPSAxMSwKKyAgICBWZXJ0ZXhGb3JtYXRDaGFyNE5vcm1hbGl6ZWQgPSAxMiwK
KyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQyID0gMTMsCisgICAgVmVydGV4Rm9ybWF0VVNob3J0MyA9
IDE0LAorICAgIFZlcnRleEZvcm1hdFVTaG9ydDQgPSAxNSwKKyAgICBWZXJ0ZXhGb3JtYXRTaG9y
dDIgPSAxNiwKKyAgICBWZXJ0ZXhGb3JtYXRTaG9ydDMgPSAxNywKKyAgICBWZXJ0ZXhGb3JtYXRT
aG9ydDQgPSAxOCwKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQyTm9ybWFsaXplZCA9IDE5LAorICAg
IFZlcnRleEZvcm1hdFVTaG9ydDNOb3JtYWxpemVkID0gMjAsCisgICAgVmVydGV4Rm9ybWF0VVNo
b3J0NE5vcm1hbGl6ZWQgPSAyMSwKKyAgICBWZXJ0ZXhGb3JtYXRTaG9ydDJOb3JtYWxpemVkID0g
MjIsCisgICAgVmVydGV4Rm9ybWF0U2hvcnQzTm9ybWFsaXplZCA9IDIzLAorICAgIFZlcnRleEZv
cm1hdFNob3J0NE5vcm1hbGl6ZWQgPSAyNCwKKyAgICBWZXJ0ZXhGb3JtYXRIYWxmMiA9IDI1LAor
ICAgIFZlcnRleEZvcm1hdEhhbGYzID0gMjYsCisgICAgVmVydGV4Rm9ybWF0SGFsZjQgPSAyNywK
KyAgICBWZXJ0ZXhGb3JtYXRGbG9hdCA9IDI4LAorICAgIFZlcnRleEZvcm1hdEZsb2F0MiA9IDI5
LAorICAgIFZlcnRleEZvcm1hdEZsb2F0MyA9IDMwLAorICAgIFZlcnRleEZvcm1hdEZsb2F0NCA9
IDMxLAorICAgIFZlcnRleEZvcm1hdEludCA9IDMyLAorICAgIFZlcnRleEZvcm1hdEludDIgPSAz
MywKKyAgICBWZXJ0ZXhGb3JtYXRJbnQzID0gMzQsCisgICAgVmVydGV4Rm9ybWF0SW50NCA9IDM1
LAorICAgIFZlcnRleEZvcm1hdFVJbnQgPSAzNiwKKyAgICBWZXJ0ZXhGb3JtYXRVSW50MiA9IDM3
LAorICAgIFZlcnRleEZvcm1hdFVJbnQzID0gMzgsCisgICAgVmVydGV4Rm9ybWF0VUludDQgPSAz
OSwKKyAgICBWZXJ0ZXhGb3JtYXRJbnQxMDEwMTAyTm9ybWFsaXplZCA9IDQwLAorICAgIFZlcnRl
eEZvcm1hdFVJbnQxMDEwMTAyTm9ybWFsaXplZCA9IDQxLAorICAgIFZlcnRleEZvcm1hdFVDaGFy
NE5vcm1hbGl6ZWRfQkdSQSA9IDQyLAorICAgIFZlcnRleEZvcm1hdFVDaGFyID0gNDUsCisgICAg
VmVydGV4Rm9ybWF0Q2hhciA9IDQ2LAorICAgIFZlcnRleEZvcm1hdFVDaGFyTm9ybWFsaXplZCA9
IDQ3LAorICAgIFZlcnRleEZvcm1hdENoYXJOb3JtYWxpemVkID0gNDgsCisgICAgVmVydGV4Rm9y
bWF0VVNob3J0ID0gNDksCisgICAgVmVydGV4Rm9ybWF0U2hvcnQgPSA1MCwKKyAgICBWZXJ0ZXhG
b3JtYXRVU2hvcnROb3JtYWxpemVkID0gNTEsCisgICAgVmVydGV4Rm9ybWF0U2hvcnROb3JtYWxp
emVkID0gNTIsCisgICAgVmVydGV4Rm9ybWF0SGFsZiA9IDUzLAorfTsKKworX01UTF9FTlVNKE5T
OjpVSW50ZWdlciwgVmVydGV4U3RlcEZ1bmN0aW9uKSB7CisgICAgVmVydGV4U3RlcEZ1bmN0aW9u
Q29uc3RhbnQgPSAwLAorICAgIFZlcnRleFN0ZXBGdW5jdGlvblBlclZlcnRleCA9IDEsCisgICAg
VmVydGV4U3RlcEZ1bmN0aW9uUGVySW5zdGFuY2UgPSAyLAorICAgIFZlcnRleFN0ZXBGdW5jdGlv
blBlclBhdGNoID0gMywKKyAgICBWZXJ0ZXhTdGVwRnVuY3Rpb25QZXJQYXRjaENvbnRyb2xQb2lu
dCA9IDQsCit9OworCitjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yIDogcHVibGlj
IE5TOjpDb3B5aW5nPFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRTdHJpZGUoTlM6OlVJbnRlZ2VyIHN0cmlkZSk7CisKKyAgICBNVEw6OlZlcnRleFN0ZXBGdW5j
dGlvbiAgICAgICAgICAgICAgICAgICAgc3RlcEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZXBGdW5jdGlvbihNVEw6
OlZlcnRleFN0ZXBGdW5jdGlvbiBzdGVwRnVuY3Rpb24pOworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBSYXRlKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZXBSYXRlKE5TOjpVSW50
ZWdlciBzdGVwUmF0ZSk7Cit9OworCitjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9y
QXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0
RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0
RGVzY3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgVmVydGV4QnVmZmVy
TGF5b3V0RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCk7
CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRPYmplY3QoY29uc3QgY2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogYnVmZmVy
RGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2NsYXNzIFZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcj4K
K3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciog
YWxsb2MoKTsKKworICAgIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IqICAgICAgICBp
bml0KCk7CisKKyAgICBNVEw6OlZlcnRleEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgZm9y
bWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEZvcm1hdChNVEw6OlZlcnRleEZvcm1hdCBmb3JtYXQpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPZmZzZXQoTlM6OlVJbnRlZ2VyIG9m
ZnNldCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVm
ZmVySW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0QnVmZmVySW5kZXgoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKK307CisKK2Ns
YXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNp
bmc8VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRp
YyBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBj
bGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAg
ICBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6
OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlw
dG9yKiBhdHRyaWJ1dGVEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpOworfTsKKworY2xhc3MgVmVy
dGV4RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxWZXJ0ZXhEZXNjcmlwdG9yPgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBWZXJ0ZXhEZXNjcmlwdG9yKiAgICAgICAgICAgYWxs
b2MoKTsKKworICAgIGNsYXNzIFZlcnRleERlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgaW5p
dCgpOworCisgICAgc3RhdGljIGNsYXNzIFZlcnRleERlc2NyaXB0b3IqICAgICAgICAgICB2ZXJ0
ZXhEZXNjcmlwdG9yKCk7CisKKyAgICBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9y
QXJyYXkqIGxheW91dHMoKSBjb25zdDsKKworICAgIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3JBcnJheSogICAgYXR0cmlidXRlcygpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yKiBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9y
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IpKTsKK30K
KworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERl
c2NyaXB0b3IqIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6aW5pdCgpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc3RyaWRlCitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzdHJpZGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdHJpZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRleEJ1
ZmZlckxheW91dERlc2NyaXB0b3I6OnNldFN0cmlkZShOUzo6VUludGVnZXIgc3RyaWRlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRT
dHJpZGVfKSwgc3RyaWRlKTsKK30KKworLy8gcHJvcGVydHk6IHN0ZXBGdW5jdGlvbgorX01UTF9J
TkxJTkUgTVRMOjpWZXJ0ZXhTdGVwRnVuY3Rpb24gTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNj
cmlwdG9yOjpzdGVwRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6VmVydGV4U3RlcEZ1bmN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0
ZXBGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QnVmZmVyTGF5
b3V0RGVzY3JpcHRvcjo6c2V0U3RlcEZ1bmN0aW9uKE1UTDo6VmVydGV4U3RlcEZ1bmN0aW9uIHN0
ZXBGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0U3RlcEZ1bmN0aW9uXyksIHN0ZXBGdW5jdGlvbik7Cit9CisKKy8vIHBy
b3BlcnR5OiBzdGVwUmF0ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmVydGV4QnVm
ZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RlcFJhdGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVw
UmF0ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVz
Y3JpcHRvcjo6c2V0U3RlcFJhdGUoTlM6OlVJbnRlZ2VyIHN0ZXBSYXRlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVwUmF0ZV8p
LCBzdGVwUmF0ZSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBN
VEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhCdWZmZXJM
YXlvdXREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFU
RV9DTFMoTVRMVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9y
QXJyYXkqIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2Ny
aXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6
CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIE1UTDo6VmVy
dGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmVydGV4QnVmZmVyTGF5
b3V0RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vi
c2NyaXB0XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vi
c2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRv
ciogYnVmZmVyRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vi
c2NyaXB0XyksIGJ1ZmZlckRlc2MsIGluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxs
b2MKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpWZXJ0
ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhN
VExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiBNVEw6OlZlcnRleEF0dHJp
YnV0ZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1U
TDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGZvcm1h
dAorX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhGb3JtYXQgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNj
cmlwdG9yOjpmb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6VmVydGV4Rm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZvcm1hdCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6c2V0Rm9y
bWF0KE1UTDo6VmVydGV4Rm9ybWF0IGZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Rm9ybWF0XyksIGZvcm1hdCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBvZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlZlcnRl
eEF0dHJpYnV0ZURlc2NyaXB0b3I6Om9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9mZnNl
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
cjo6c2V0T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9mZnNldF8pLCBvZmZzZXQpOwor
fQorCisvLyBwcm9wZXJ0eTogYnVmZmVySW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OmJ1ZmZlckluZGV4KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYnVmZmVySW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRl
eEF0dHJpYnV0ZURlc2NyaXB0b3I6OnNldEJ1ZmZlckluZGV4KE5TOjpVSW50ZWdlciBidWZmZXJJ
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0QnVmZmVySW5kZXhfKSwgYnVmZmVySW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJy
YXkqIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFy
cmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSkp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRl
RGVzY3JpcHRvckFycmF5KiBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2Ny
aXB0OgorX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiBNVEw6OlZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlw
dF8pLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlw
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6
OnNldE9iamVjdChjb25zdCBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IqIGF0dHJpYnV0
ZURlc2MsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8p
LCBhdHRyaWJ1dGVEZXNjLCBpbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6OlZlcnRleERlc2NyaXB0b3IqIE1UTDo6VmVydGV4RGVzY3JpcHRvcjo6
YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlZlcnRleERlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVmVydGV4RGVzY3JpcHRvcikpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4RGVzY3JpcHRvciogTVRMOjpWZXJ0
ZXhEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6
OlZlcnRleERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHZlcnRleERlc2Ny
aXB0b3IKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4RGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhEZXNj
cmlwdG9yOjp2ZXJ0ZXhEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlZlcnRleERlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleERl
c2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleERlc2NyaXB0b3IpKTsKK30KKworLy8g
cHJvcGVydHk6IGxheW91dHMKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVz
Y3JpcHRvckFycmF5KiBNVEw6OlZlcnRleERlc2NyaXB0b3I6OmxheW91dHMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVz
Y3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXlvdXRzKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBhdHRyaWJ1dGVzCitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhEZXNjcmlwdG9yOjphdHRyaWJ1dGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0cmlidXRlcykpOworfQor
CisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4RGVzY3JpcHRv
cjo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChyZXNldCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjM0ZDNhMWE2Y2UxMGI5MjVjZjYxMjU2ZmVkNTE2ZGMzMzBiZGQxMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNp
YmxlRnVuY3Rpb25UYWJsZS5ocHAKQEAgLTAsMCArMSw5NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMVmlzaWJsZUZ1bmN0
aW9uVGFibGUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJp
ZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExGdW5jdGlvbkhhbmRsZS5ocHAiCisj
aW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBWaXNp
YmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VmlzaWJsZUZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBWaXNp
YmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBWaXNpYmxl
RnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xh
c3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiB2aXNpYmxlRnVuY3Rpb25UYWJsZURl
c2NyaXB0b3IoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRGdW5jdGlvbkNvdW50KE5TOjpVSW50ZWdlciBmdW5j
dGlvbkNvdW50KTsKK307CisKK2NsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlIDogcHVibGljIE5T
OjpSZWZlcmVuY2luZzxWaXNpYmxlRnVuY3Rpb25UYWJsZSwgUmVzb3VyY2U+Cit7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbkhhbmRsZSogZnVuY3Rp
b24sIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldEZ1bmN0aW9ucyhjb25zdCBj
bGFzcyBGdW5jdGlvbkhhbmRsZSogZnVuY3Rpb25zW10sIE5TOjpSYW5nZSByYW5nZSk7Cit9Owor
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlZpc2libGVG
dW5jdGlvblRhYmxlRGVzY3JpcHRvciogTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0
b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpWaXNpYmxl
RnVuY3Rpb25UYWJsZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVmlzaWJsZUZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIE1UTDo6VmlzaWJsZUZ1bmN0aW9u
VGFibGVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogdmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlZp
c2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciogTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURl
c2NyaXB0b3I6OnZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3Iq
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciksIF9N
VExfUFJJVkFURV9TRUwodmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBmdW5jdGlvbkNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpW
aXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OmZ1bmN0aW9uQ291bnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChmdW5jdGlvbkNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpW
aXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OnNldEZ1bmN0aW9uQ291bnQoTlM6OlVJbnRl
Z2VyIGZ1bmN0aW9uQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uQ291bnRfKSwgZnVuY3Rpb25Db3VudCk7Cit9
CisKKy8vIG1ldGhvZDogc2V0RnVuY3Rpb246YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpWaXNpYmxlRnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbkhh
bmRsZSogZnVuY3Rpb24sIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnVuY3Rpb25fYXRJbmRleF8p
LCBmdW5jdGlvbiwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZ1bmN0aW9uczp3aXRoUmFu
Z2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGU6OnNldEZ1bmN0
aW9ucyhjb25zdCBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlvbnNbXSwgTlM6OlJhbmdlIHJh
bmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRGdW5jdGlvbnNfd2l0aFJhbmdlXyksIGZ1bmN0aW9ucywgcmFuZ2UpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01ldGFsLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NZXRhbC5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTZhMzYwNjZiNTkyNTNkYmQ3ZGFjZWI3NDZjMGM5NDE0MzNmZmNkYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NZXRhbC5ocHAKQEAg
LTAsMCArMSw4MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWV0YWwvTWV0YWwuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAiCisj
aW5jbHVkZSAiTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwIgorI2lu
Y2x1ZGUgIk1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcCIKKyNpbmNsdWRlICJNVExB
cmd1bWVudC5ocHAiCisjaW5jbHVkZSAiTVRMQXJndW1lbnRFbmNvZGVyLmhwcCIKKyNpbmNsdWRl
ICJNVExCaW5hcnlBcmNoaXZlLmhwcCIKKyNpbmNsdWRlICJNVExCbGl0Q29tbWFuZEVuY29kZXIu
aHBwIgorI2luY2x1ZGUgIk1UTEJsaXRQYXNzLmhwcCIKKyNpbmNsdWRlICJNVExCdWZmZXIuaHBw
IgorI2luY2x1ZGUgIk1UTENhcHR1cmVNYW5hZ2VyLmhwcCIKKyNpbmNsdWRlICJNVExDYXB0dXJl
U2NvcGUuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1hbmRCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1U
TENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kUXVldWUuaHBwIgorI2lu
Y2x1ZGUgIk1UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMQ29tcHV0
ZVBhc3MuaHBwIgorI2luY2x1ZGUgIk1UTENvbXB1dGVQaXBlbGluZS5ocHAiCisjaW5jbHVkZSAi
TVRMQ291bnRlcnMuaHBwIgorI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1U
TERlcHRoU3RlbmNpbC5ocHAiCisjaW5jbHVkZSAiTVRMRGV2aWNlLmhwcCIKKyNpbmNsdWRlICJN
VExEcmF3YWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMRHluYW1pY0xpYnJhcnkuaHBwIgorI2luY2x1
ZGUgIk1UTEV2ZW50LmhwcCIKKyNpbmNsdWRlICJNVExGZW5jZS5ocHAiCisjaW5jbHVkZSAiTVRM
RnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAiCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25EZXNjcmlw
dG9yLmhwcCIKKyNpbmNsdWRlICJNVExGdW5jdGlvbkhhbmRsZS5ocHAiCisjaW5jbHVkZSAiTVRM
RnVuY3Rpb25Mb2cuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcCIKKyNp
bmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTEhlYXAuaHBwIgorI2lu
Y2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMSW5kaXJl
Y3RDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMTGlicmFyeS5ocHAiCisjaW5jbHVkZSAiTVRMTGlua2Vk
RnVuY3Rpb25zLmhwcCIKKyNpbmNsdWRlICJNVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVy
LmhwcCIKKyNpbmNsdWRlICJNVExQaXBlbGluZS5ocHAiCisjaW5jbHVkZSAiTVRMUGl4ZWxGb3Jt
YXQuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk1UTFJhc3Rlcml6
YXRpb25SYXRlLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAiCisj
aW5jbHVkZSAiTVRMUmVuZGVyUGFzcy5ocHAiCisjaW5jbHVkZSAiTVRMUmVuZGVyUGlwZWxpbmUu
aHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlU3RhdGVQYXNzLmhw
cCIKKyNpbmNsdWRlICJNVExTYW1wbGVyLmhwcCIKKyNpbmNsdWRlICJNVExTdGFnZUlucHV0T3V0
cHV0RGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAi
TVRMVHlwZXMuaHBwIgorI2luY2x1ZGUgIk1UTFZlcnRleERlc2NyaXB0b3IuaHBwIgorI2luY2x1
ZGUgIk1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQURlZmluZXMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FEZWZpbmVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWY3ZWZm
ZTNhMTgzZWIyMjZiN2UwYTkwNmU0MmIyOWFhZmQwMTI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FEZWZpbmVzLmhwcApAQCAt
MCwwICsxLDQxIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vCisvLyBRdWFydHpDb3JlL0NBRGVmaW5lcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAy
MC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiLi4vRm91bmRhdGlvbi9OU0RlZmluZXMu
aHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I2RlZmluZSBfQ0FfRVhQT1JUIF9OU19FWFBPUlQKKyNkZWZpbmUgX0NBX0VYVEVSTiBfTlNfRVhU
RVJOCisjZGVmaW5lIF9DQV9JTkxJTkUgX05TX0lOTElORQorI2RlZmluZSBfQ0FfUEFDS0VEIF9O
U19QQUNLRUQKKworI2RlZmluZSBfQ0FfQ09OU1QodHlwZSwgbmFtZSkgX05TX0NPTlNUKHR5cGUs
IG5hbWUpCisjZGVmaW5lIF9DQV9FTlVNKHR5cGUsIG5hbWUpIF9OU19FTlVNKHR5cGUsIG5hbWUp
CisjZGVmaW5lIF9DQV9PUFRJT05TKHR5cGUsIG5hbWUpIF9OU19PUFRJT05TKHR5cGUsIG5hbWUp
CisKKyNkZWZpbmUgX0NBX1ZBTElEQVRFX1NJWkUobnMsIG5hbWUpIF9OU19WQUxJREFURV9TSVpF
KG5zLCBuYW1lKQorI2RlZmluZSBfQ0FfVkFMSURBVEVfRU5VTShucywgbmFtZSkgX05TX1ZBTElE
QVRFX0VOVU0obnMsIG5hbWUpCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1
YXJ0ekNvcmUvQ0FNZXRhbERyYXdhYmxlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9RdWFydHpDb3JlL0NBTWV0YWxEcmF3YWJsZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQwODc1NzIx
Y2E5ODA0ZmZkYzM0YmE0NWVmNTk1NDIzMDk3NGExMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBTWV0YWxEcmF3YWJsZS5ocHAK
QEAgLTAsMCArMSw1NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gUXVhcnR6Q29yZS9DQU1ldGFsRHJhd2FibGUuaHBwCisvLworLy8gQ29w
eXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIi4uL01ldGFsL01UTERy
YXdhYmxlLmhwcCIKKyNpbmNsdWRlICIuLi9NZXRhbC9NVExUZXh0dXJlLmhwcCIKKworI2luY2x1
ZGUgIkNBRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiQ0FQcml2YXRlLmhwcCIKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBDQQorewor
Y2xhc3MgTWV0YWxEcmF3YWJsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8TWV0YWxEcmF3YWJs
ZSwgTVRMOjpEcmF3YWJsZT4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBNZXRhbExheWVyKiBsYXll
cigpIGNvbnN0OworICAgIE1UTDo6VGV4dHVyZSogICAgIHRleHR1cmUoKSBjb25zdDsKK307Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfQ0Ff
SU5MSU5FIENBOjpNZXRhbExheWVyKiBDQTo6TWV0YWxEcmF3YWJsZTo6bGF5ZXIoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1ldGFsTGF5ZXIqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGxheWVyKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfQ0FfSU5MSU5FIE1UTDo6VGV4dHVyZSogQ0E6Ok1ldGFsRHJh
d2FibGU6OnRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZSkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHAg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg5YzYwMjQ3MDE1MWUxODczMWE0ZjNkM2NlYjFhM2JmN2IyYmFlMTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29y
ZS9DQVByaXZhdGUuaHBwCkBAIC0wLDAgKzEsMTA5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBRdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiQ0FE
ZWZpbmVzLmhwcCIKKworI2luY2x1ZGUgPG9iamMvcnVudGltZS5oPgorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2RlZmluZSBfQ0FfUFJJVkFURV9D
TFMoc3ltYm9sKSAoUHJpdmF0ZTo6Q2xhc3M6OnNfayMjc3ltYm9sKQorI2RlZmluZSBfQ0FfUFJJ
VkFURV9TRUwoYWNjZXNzb3IpIChQcml2YXRlOjpTZWxlY3Rvcjo6c19rIyNhY2Nlc3NvcikKKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBkZWZp
bmVkKENBX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04pCisKKyNkZWZpbmUgX0NBX1BSSVZBVEVfVklT
SUJJTElUWSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCisjZGVmaW5lIF9D
QV9QUklWQVRFX0lNUE9SVCBfX2F0dHJpYnV0ZV9fKCh3ZWFrX2ltcG9ydCkpCisKKyNpZiBfX09C
SkNfXworI2RlZmluZSBfQ0FfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpICgoX19i
cmlkZ2Ugdm9pZCopb2JqY19sb29rVXBDbGFzcygjc3ltYm9sKSkKKyNlbHNlCisjZGVmaW5lIF9D
QV9QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgb2JqY19sb29rVXBDbGFzcygjc3lt
Ym9sKQorI2VuZGlmIC8vIF9fT0JKQ19fCisKKyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX0NMUyhz
eW1ib2wpIHZvaWQqIHNfayMjc3ltYm9sIF9DQV9QUklWQVRFX1ZJU0lCSUxJVFkgPSBfQ0FfUFJJ
VkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpOworI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZf
UFJPKHN5bWJvbCkKKyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX1NFTChhY2Nlc3Nvciwgc3ltYm9s
KSBTRUwgc19rIyNhY2Nlc3NvciBfQ0FfUFJJVkFURV9WSVNJQklMSVRZID0gc2VsX3JlZ2lzdGVy
TmFtZShzeW1ib2wpOworI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfU1RSKHR5cGUsIHN5bWJvbCkg
ICAgICAgICAgICAgICAgXAorICAgIF9DQV9FWFRFUk4gdHlwZSBjb25zdCBDQSMjc3ltYm9sIF9D
QV9QUklWQVRFX0lNUE9SVDsgXAorICAgIHR5cGUgY29uc3QgICAgICAgICAgICAgICAgICAgICAg
IENBOjpzeW1ib2wgPSAobnVsbHB0ciAhPSAmQ0EjI3N5bWJvbCkgPyBDQSMjc3ltYm9sIDogbnVs
bHB0cjsKKworI2Vsc2UKKworI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfQ0xTKHN5bWJvbCkgZXh0
ZXJuIHZvaWQqIHNfayMjc3ltYm9sOworI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfUFJPKHN5bWJv
bCkKKyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX1NFTChhY2Nlc3Nvciwgc3ltYm9sKSBleHRlcm4g
U0VMIHNfayMjYWNjZXNzb3I7CisjZGVmaW5lIF9DQV9QUklWQVRFX0RFRl9TVFIodHlwZSwgc3lt
Ym9sKQorCisjZW5kaWYgLy8gQ0FfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIENBCit7Citu
YW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBDbGFzcworICAgIHsKKworICAgIH0g
Ly8gQ2xhc3MKK30gLy8gUHJpdmF0ZQorfSAvLyBDQQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIENBCit7CituYW1lc3BhY2UgUHJp
dmF0ZQoreworICAgIG5hbWVzcGFjZSBQcm90b2NvbAorICAgIHsKKworICAgICAgICBfQ0FfUFJJ
VkFURV9ERUZfUFJPKENBTWV0YWxEcmF3YWJsZSk7CisKKyAgICB9IC8vIFByb3RvY29sCit9IC8v
IFByaXZhdGUKK30gLy8gQ0EKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK25hbWVzcGFjZSBDQQoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAgICBu
YW1lc3BhY2UgU2VsZWN0b3IKKyAgICB7CisKKyAgICAgICAgX0NBX1BSSVZBVEVfREVGX1NFTChs
YXllciwKKyAgICAgICAgICAgICJsYXllciIpOworICAgICAgICBfQ0FfUFJJVkFURV9ERUZfU0VM
KHRleHR1cmUsCisgICAgICAgICAgICAidGV4dHVyZSIpOworCisgICAgfSAvLyBDbGFzcworfSAv
LyBQcml2YXRlCit9IC8vIENBCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1
YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
UXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTFlYjQ2N2IxNmJiODBmZGZk
MTk2YWE4YjkzYmZlZGM1NDQ3MTk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAKQEAgLTAsMCArMSwyNyBA
QAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8g
UXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyNpbmNsdWRlICJDQU1ldGFsRHJhd2FibGUuaHBwIgorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9SRUFETUUubWQgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NTA3MTU1ZWI3N2ZjMjQ3ZjQ2M2I1NDJh
ZjliZWYwZWVkNzM4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMjQ1IEBACisjIyBBYm91dAorCisqKm1ldGFs
LWNwcCoqIGlzIGEgbG93IG92ZXJoZWFkIGFuZCBoZWFkZXIgb25seSBDKysgaW50ZXJmYWNlIGZv
ciBNZXRhbCB0aGF0IGhlbHBzIGRldmVsb3BlcnMgYWRkIE1ldGFsIGZ1bmN0aW9uYWxpdHkgdG8g
Z3JhcGhpY3MgYXBwbGljYXRpb25zIHRoYXQgYXJlIHdyaXR0ZW4gaW4gQysrIChzdWNoIGFzIGdh
bWUgZW5naW5lcykuICoqbWV0YWwtY3BwKiogcmVtb3ZlcyB0aGUgbmVlZCB0byBjcmVhdGUgYSBz
aGltIGFuZCBhbGxvd3MgZGV2ZWxvcGVycyB0byBjYWxsIE1ldGFsIGZ1bmN0aW9ucyBkaXJlY3Rs
eSBmcm9tIGFueXdoZXJlIGluIHRoZWlyIGV4aXN0aW5nIEMrKyBjb2RlLgorCisKKyMjIEhpZ2hs
aWdodHMKKworLSBEcm9wIGluIEMrKyBhbHRlcm5hdGl2ZSBpbnRlcmZhY2UgdG8gdGhlIE1ldGFs
IE9iamVjdGl2ZS1DIGhlYWRlcnMuCistIERpcmVjdCBtYXBwaW5nIG9mIGFsbCBNZXRhbCBPYmpl
Y3RpdmUtQyBjbGFzc2VzLCBjb25zdGFudHMgYW5kIGVudW1zIHRvIEMrKyBpbiB0aGUgTVRMIEMr
KyBuYW1lc3BhY2UuCistIE5vIG1lYXN1cmFibGUgb3ZlcmhlYWQgY29tcGFyZWQgdG8gY2FsbGlu
ZyBNZXRhbCBPYmplY3RpdmUtQyBoZWFkZXJzLCBkdWUgdG8gaW5saW5pbmcgb2YgQysrIGZ1bmN0
aW9uIGNhbGxzLgorLSBObyB1c2FnZSBvZiB3cmFwcGVyIGNvbnRhaW5lcnMgdGhhdCByZXF1aXJl
IGFkZGl0aW9uYWwgYWxsb2NhdGlvbnMuCistIFJlcXVpcmVzIEMrKzE3IGR1ZSB0byB0aGUgdXNh
Z2Ugb2YgYGNvbnN0ZXhwcmAgaW4gYE5TOjpPYmplY3RgLgorLSBJZGVudGljYWwgaGVhZGVyIGZp
bGVzIGFuZCBmdW5jdGlvbi9jb25zdGFudC9lbnVtIGF2YWlsYWJpbGl0eSBmb3IgaU9TLCBtYWNP
UyBhbmQgdHZPUy4KKy0gQmFja3dhcmRzIGNvbXBhdGliaWxpdHk6IEFsbCBgYm9vbCBNVEw6OkRl
dmljZTo6c3VwcG9ydHMuLi4oKWAgZnVuY3Rpb25zIGNoZWNrIGlmIHRoZWlyIHJlcXVpcmVkIHNl
bGVjdG9ycyBleGlzdCBhbmQgYXV0b21hdGljYWxseSByZXR1cm4gYGZhbHNlYCBpZiBub3QuCist
IFN0cmluZyAoYEVycm9yRG9tYWluYCkgY29uc3RhbnRzIGFyZSB3ZWFrIGxpbmtlZCBhbmQgYXV0
b21hdGljYWxseSBzZXQgdG8gYG51bGxwdHJgIGlmIG5vdCBhdmFpbGFibGUuCisKKyMjIE1lbW9y
eSBBbGxvY2F0aW9uIFBvbGljeQorCisqKm1ldGFsLWNwcCoqIGZvbGxvd3MgdGhlIG9iamVjdCBh
bGxvY2F0aW9uIHBvbGljaWVzIG9mIENvY29hIGFuZCBDb2NvYSBUb3VjaC4gVW5kZXJzdGFuZGlu
ZyB0aG9zZSBydWxlcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB3aGVuIHVzaW5nIG1ldGFsLWNw
cCwgYXMgQysrIG9iamVjdHMgYXJlIG5vdCBlbGlnaWJsZSBmb3IgYXV0b21hdGljIHJlZmVyZW5j
ZSBjb3VudGluZyAoQVJDKS4KKworKiptZXRhbC1jcHAqKiBvYmplY3RzIGFyZSByZWZlcmVuY2Ug
Y291bnRlZC4gVG8gaGVscCBjb252ZXkgYW5kIG1hbmFnZSBvYmplY3QgbGlmZWN5Y2xlcywgdGhl
IGZvbGxvd2luZyBjb252ZW50aW9ucyBhcmUgb2JzZXJ2ZWQ6CisKKzEuICpZb3Ugb3duIGFueSBv
YmplY3QgcmV0dXJuZWQgYnkgbWV0aG9kcyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoKiBgYWxsb2Ng
ICosKiBgbmV3YCAqLCogYGNvcHlgICosIG9yKiBgbXV0YWJsZUNvcHlgLiBUaGUgbWV0aG9kIHJl
dHVybnMgdGhlc2Ugb2JqZWN0cyB3aXRoIGByZXRhaW5Db3VudGAgZXF1YWxzIHRvIGAxYC4KKzIu
ICpZb3UgY2FuIHRha2Ugb3duZXJzaGlwIG9mIGFuIG9iamVjdCBieSBjYWxsaW5nIGl0cyogYGBg
cmV0YWluKClgYGAgKm1ldGhvZCouIEEgcmVjZWl2ZWQgb2JqZWN0IGlzIG5vcm1hbGx5IGd1YXJh
bnRlZWQgdG8gcmVtYWluIHZhbGlkIHdpdGhpbiB0aGUgbWV0aG9kIGl0IHdhcyByZWNlaXZlZCBp
bi4gWW91IHVzZSBgcmV0YWluYCBpbiB0d28gc2l0dWF0aW9uczogKDEpIEluIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBhbiBhY2Nlc3NvciBtZXRob2QgKGEgc2V0dGVyKSBvciB0byB0YWtlIG93bmVy
c2hpcCBvZiBhbiBvYmplY3Q7IGFuZCAoMikgVG8gcHJldmVudCBhbiBvYmplY3QgZnJvbSBiZWlu
ZyBkZWFsbG9jYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHNvbWUgb3RoZXIgb3BlcmF0aW9uLgor
My4gKldoZW4geW91IG5vIGxvbmdlciBuZWVkIGl0LCB5b3UgbXVzdCByZWxpbnF1aXNoIG93bmVy
c2hpcCBvZiBhbiBvYmplY3QgeW91IG93biouIFlvdSByZWxpbnF1aXNoIG93bmVyc2hpcCBieSBj
YWxsaW5nIGl0cyBgcmVsZWFzZSgpYCBvciBgYXV0b3JlbGVhc2UoKWAgbWV0aG9kLgorNC4gKllv
dSBtdXN0IG5vdCByZWxpbnF1aXNoIG93bmVyc2hpcCBvZiBhbiBvYmplY3QgeW91IGRvIG5vdCBv
d24qLgorCitXaGVuIGFuIG9iamVjdCdzIGByZXRhaW5Db3VudGAgcmVhY2hlcyBgMGAsIHRoZSBv
YmplY3QgaXMgaW1tZWRpYXRlbHkgZGVhbGxvY2F0ZWQuIEl0IGlzIGlsbGVnYWwgdG8gY2FsbCBt
ZXRob2RzIG9uIGEgZGVhbGxvY2F0ZWQgb2JqZWN0IGFuZCBpdCBtYXkgbGVhZCB0byBhbiBhcHBs
aWNhdGlvbiBjcmFzaC4KKworIyMjIEF1dG9yZWxlYXNlUG9vbHMgYW5kIE9iamVjdHMKKworU2V2
ZXJhbCBtZXRob2RzIHRoYXQgY3JlYXRlIHRlbXBvcmFyeSBvYmplY3RzIGluICoqbWV0YWwtY3Bw
KiogYWRkIHRoZW0gdG8gYW4gYEF1dG9yZWxlYXNlUG9vbGAgdG8gaGVscCBtYW5hZ2UgdGhlaXIg
bGlmZXRpbWVzLiBJbiB0aGVzZSBzaXR1YXRpb25zLCBhZnRlciAqKm1ldGFsLWNwcCoqIGNyZWF0
ZXMgdGhlIG9iamVjdCwgaXQgYWRkcyBpdCB0byBhbiBgQXV0b3JlbGVhc2VQb29sYCwgd2hpY2gg
d2lsbCByZWxlYXNlIGl0cyBvYmplY3RzIHdoZW4geW91IHJlbGVhc2UgKG9yIGRyYWluKSBpdC4K
KworQnkgYWRkaW5nIHRlbXBvcmFyeSBvYmplY3RzIHRvIGFuIEF1dG9yZWxlYXNlUG9vbCwgeW91
IGRvIG5vdCBuZWVkIHRvIGV4cGxpY2l0bHkgY2FsbCBgcmVsZWFzZSgpYCB0byBkZWFsbG9jYXRl
IHRoZW0uIEluc3RlYWQsIHlvdSBjYW4gcmVseSBvbiB0aGUgYEF1dG9yZWxlYXNlUG9vbGAgdG8g
aW1wbGljaXRseSBtYW5hZ2UgdGhvc2UgbGlmZXRpbWVzLgorCitJZiB5b3UgY3JlYXRlIGFuIG9i
amVjdCB3aXRoIGEgbWV0aG9kIHRoYXQgZG9lcyBub3QgYmVnaW4gd2l0aCBgYWxsb2NgLCBgbmV3
YCwgYGNvcHlgLCBvciBgbXV0YWJsZUNvcHlgLCB0aGUgY3JlYXRpbmcgbWV0aG9kIGFkZHMgdGhl
IG9iamVjdCB0byBhbiBhdXRvcmVsZWFzZSBwb29sLgorCitUaGUgdHlwaWNhbCBzY29wZSBvZiBh
biBgQXV0b3JlbGVhc2VQb29sYCBpcyBvbmUgZnJhbWUgb2YgcmVuZGVyaW5nIGZvciB0aGUgbWFp
biB0aHJlYWQgb2YgdGhlIHByb2dyYW0uIFdoZW4gdGhlIHRocmVhZCByZXR1cm5zIGNvbnRyb2wg
dG8gdGhlIFJ1bkxvb3AgKGFuIG9iamVjdCByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIGlucHV0
IGFuZCBldmVudHMgZnJvbSB0aGUgd2luZG93aW5nIHN5c3RlbSksIHRoZSBwb29sIGlzICpkcmFp
bmVkKiwgcmVsZWFzaW5nIGl0cyBvYmplY3RzLgorCitZb3UgY2FuIGNyZWF0ZSBhbmQgbWFuYWdl
IGFkZGl0aW9uYWwgYEF1dG9yZWxlYXNlUG9vbGBzIGF0IHNtYWxsZXIgc2NvcGVzIHRvIHJlZHVj
ZSB5b3VyIHByb2dyYW0ncyB3b3JraW5nIHNldCwgYW5kIHlvdSBhcmUgcmVxdWlyZWQgdG8gZG8g
c28gZm9yIGFueSBhZGRpdGlvbmFsIHRocmVhZHMgeW91ciBwcm9ncmFtIGNyZWF0ZXMuCisKK0lm
IGFuIG9iamVjdCdzIGxpZmVjeWNsZSBuZWVkcyB0byBiZSBleHRlbmRlZCBiZXlvbmQgdGhlIGBB
dXRvcmVsZWFzZVBvb2xgJ3Mgc2NvcGUsIHlvdSBjYW4gY2xhaW0gb3duZXJzaGlwIG9mIGl0IChh
dm9pZGluZyBpdHMgcmVsZWFzZSBiZXlvbmQgdGhlIHBvb2wncyBzY29wZSkgYnkgY2FsbGluZyBp
dHMgYHJldGFpbigpYCBtZXRob2QgYmVmb3JlIGl0cyBwb29sIGlzIGRyYWluZWQuIEluIHRoZXNl
IGNhc2VzLCB5b3Ugd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgbWFraW5nIHRoZSBhcHByb3ByaWF0
ZSBgcmVsZWFzZSgpYCBjYWxsIG9uIHRoZSBvYmplY3QgYWZ0ZXIgeW91IG5vIGxvbmdlciBuZWVk
IGl0LiAKKworWW91IGNhbiBmaW5kIGEgbW9yZS1kZXRhaWxlZCBpbnRyb2R1Y3Rpb24gdG8gdGhl
IG1lbW9yeSBtYW5hZ2VtZW50IHJ1bGVzIGhlcmU6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNv
bS9saWJyYXJ5L2FyY2hpdmUvZG9jdW1lbnRhdGlvbi9Db2NvYS9Db25jZXB0dWFsL01lbW9yeU1n
bXQvQXJ0aWNsZXMvbW1SdWxlcy5odG1sLgorCitGb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBh
cHBsaWNhdGlvbidzIFJ1bkxvb3AsIHBsZWFzZSBmaW5kIGl0cyBkb2N1bWVudGF0aW9uIGhlcmU6
IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL2ZvdW5kYXRpb24vbnNy
dW5sb29wCisKKyMjIyBVc2UgYW5kIGRlYnVnIEF1dG9yZWxlYXNlUG9vbHMKKworV2hlbiB5b3Ug
Y3JlYXRlIGFuIGF1dG9yZWxlYXNlZCBvYmplY3QgYW5kIHRoZXJlIGlzIG5vIGVuY2xvc2luZyBg
QXV0b3JlbGVhc2VQb29sYCwgdGhlIG9iamVjdCBpcyBsZWFrZWQuCisKK1RvIHByZXZlbnQgdGhp
cywgeW91IG5vcm1hbGx5IGNyZWF0ZSBhbiBgQXV0b3JlbGVhc2VQb29sYCBpbiB5b3VyIHByb2dy
YW0ncyBgbWFpbmAgZnVuY3Rpb24sIGFuZCBpbiB0aGUgZW50cnkgZnVuY3Rpb24gZm9yIGV2ZXJ5
IHRocmVhZCB5b3UgY3JlYXRlLiBZb3UgbWF5IGFsc28gY3JlYXRlIGFkZGl0aW9uYWwgYEF1dG9y
ZWxlYXNlUG9vbGBzIHRvIGF2b2lkIGdyb3dpbmcgeW91ciBwcm9ncmFtJ3MgaGlnaCBtZW1vcnkg
d2F0ZXJtYXJrIHdoZW4geW91IGNyZWF0ZSBzZXZlcmFsIGF1dG9yZWxlYXNlZCBvYmplY3RzLCBz
dWNoIGFzIHdoZW4gcmVuZGVyaW5nLgorCitVc2UgdGhlIEVudmlyb25tZW50IFZhcmlhYmxlIGBP
QkpDX0RFQlVHX01JU1NJTkdfUE9PTFM9WUVTYCB0byBwcmludCBhIHJ1bnRpbWUgd2FybmluZyB3
aGVuIGFuIGF1dG9yZWxlYXNlZCBvYmplY3QgaXMgbGVha2VkIGJlY2F1c2Ugbm8gZW5jbG9zaW5n
IGBBdXRvcmVsZWFzZVBvb2xgIGlzIGF2YWlsYWJsZSBmb3IgaXRzIHRocmVhZC4KKworWW91IGNh
biBhbHNvIHJ1biBgbGVha3MgLS1hdXRvcmVsZWFzZVBvb2xzYCBvbiBhIG1lbWdyYXBoIGZpbGUg
b3IgYSBwcm9jZXNzIElEIChtYWNPUyBvbmx5KSB0byB2aWV3IGEgbGlzdGluZyBvZiB5b3VyIHBy
b2dyYW0ncyBgQXV0b3JlbGVhc2VQb29sYHMgYW5kIGFsbCBvYmplY3RzIHRoZXkgY29udGFpbi4K
KworIyMjIG51bGxwdHIKKworU2ltaWxhciB0byBPYmplY3RpdmUtQywgaXQgaXMgbGVnYWwgdG8g
Y2FsbCBhbnkgbWV0aG9kLCBpbmNsdWRpbmcgYHJldGFpbigpYCBhbmQgYHJlbGVhc2UoKWAsIG9u
IGBudWxscHRyYCAib2JqZWN0cyIuIFdoaWxlIGNhbGxpbmcgbWV0aG9kcyBvbiBgbnVsbHB0cmAg
c3RpbGwgZG9lcyBpbmN1ciBpbiBmdW5jdGlvbiBjYWxsIG92ZXJoZWFkLCB0aGUgZWZmZWN0aXZl
IHJlc3VsdCBpcyBlcXVpdmFsZW50IG9mIGEgTk9QLgorCitDb252ZXJzZWx5LCBkbyBub3QgYXNz
dW1lIHRoYXQgYmVjYXVzZSBjYWxsaW5nIGEgbWV0aG9kIG9uIGEgcG9pbnRlciBkaWQgbm90IHJl
c3VsdCBpbiBhIGNyYXNoLCB0aGF0IHRoZSBwb2ludGVkLXRvIG9iamVjdCBpcyB2YWxpZC4KKwor
IyMgQWRkaW5nIG1ldGFsLWNwcCB0byBhIFByb2plY3QKKworU2ltcGx5IGluY2x1ZGUgYE1ldGFs
L01ldGFsLmhwcGAuIFRvIGVuc3VyZSB0aGF0IHRoZSBzZWxlY3RvciBhbmQgY2xhc3Mgc3ltYm9s
cyBhcmUgbGlua2VkLCBhZGQgdG8gb25lIG9mIHlvdXIgY3BwIGZpbGVzOgorCitgYGBjcHAKKyNk
ZWZpbmUgTlNfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorI2RlZmluZSBNVExfUFJJVkFURV9JTVBM
RU1FTlRBVElPTgorCisjaW5jbHVkZSAiTWV0YWwvTWV0YWwuaHBwIgorYGBgCisKK0lmIHlvdSB3
YW50IHRvIHVzZSB0aGUgUXVhcnR6Q29yZSB3cmFwcGVyLCBhZGQ6CisKK2BgYGNwcAorI2RlZmlu
ZSBDQV9QUklWQVRFX0lNUExFTUVOVEFUSU9OCisKKyNpbmNsdWRlICJRdWFydHpDb3JlL1F1YXJ0
ekNvcmUuaHBwIgorYGBgCisKKyMjIEdlbmVyYXRpbmcgYSBTaW5nbGUgSGVhZGVyIEZpbGUKKwor
UHVyZWx5IG9wdGlvbmFsOiBZb3UgY2FuIGdlbmVyYXRlIGEgc2luZ2xlIGhlYWRlciBmaWxlIHRo
YXQgY29udGFpbnMgYWxsICoqbWV0YWwtY3BwKiogaGVhZGVycyB2aWE6CisKK2BgYHNoZWxsCisu
L1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5IEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHAgUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcCBNZXRhbC9NZXRhbC5ocHAKK2BgYAorCitCeSBk
ZWZhdWx0IHRoZSBnZW5lcmF0ZWQgaGVhZGVyIGZpbGUgd2lsbCBiZSB3cml0dGVuIHRvIGAuL1Np
bmdsZUhlYWRlci9NZXRhbC5ocHBgCisKKyMjIEV4YW1wbGVzCisKKyMjIyMgQ3JlYXRpbmcgdGhl
IGRldmljZQorCisjIyMjIyMgT2JqZWN0aXZlLUMgKHdpdGggYXV0b21hdGljIHJlZmVyZW5jZSBj
b3VudGluZykKKworYGBgb2JqYworaWQ8IE1UTERldmljZSA+IGRldmljZSA9IE1UTENyZWF0ZVN5
c3RlbURlZmF1bHREZXZpY2UoKTsKKworLy8gLi4uCitgYGAKKworIyMjIyMjIE9iamVjdGl2ZS1D
CisKK2BgYG9iamMKK2lkPCBNVExEZXZpY2UgPiBkZXZpY2UgPSBNVExDcmVhdGVTeXN0ZW1EZWZh
dWx0RGV2aWNlKCk7CisKKy8vIC4uLgorCitbZGV2aWNlIHJlbGVhc2VdOworYGBgCisKKyMjIyMj
IyBDKysKKworYGBgY3BwCitNVEw6OkRldmljZSogcERldmljZSA9IE1UTDo6Q3JlYXRlU3lzdGVt
RGVmYXVsdERldmljZSgpOworCisvLyAuLi4KKworcERldmljZS0+cmVsZWFzZSgpOworYGBgCisK
KyMjIyMgTWV0YWwgZnVuY3Rpb24gY2FsbHMgbWFwIGRpcmVjdGx5IHRvIEMrKworCisjIyMjIyMg
T2JqZWN0aXZlLUMgKHdpdGggYXV0b21hdGljIHJlZmVyZW5jZSBjb3VudGluZykKKworYGBgb2Jq
YworTVRMU2FtcGxlckRlc2NyaXB0b3IqIHNhbXBsZXJEZXNjcmlwdG9yID0gW1tNVExTYW1wbGVy
RGVzY3JpcHRvciBhbGxvY10gaW5pdF07CisKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRTQWRkcmVz
c01vZGU6IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRlc2NyaXB0b3Ig
c2V0VEFkZHJlc3NNb2RlOiBNVExTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXRdOworW3NhbXBsZXJE
ZXNjcmlwdG9yIHNldFJBZGRyZXNzTW9kZTogTVRMU2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0XTsK
K1tzYW1wbGVyRGVzY3JpcHRvciBzZXRNYWdGaWx0ZXI6IE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJM
aW5lYXJdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldE1pbkZpbHRlcjogTVRMU2FtcGxlck1pbk1h
Z0ZpbHRlckxpbmVhcl07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0TWlwRmlsdGVyOiBNVExTYW1w
bGVyTWlwRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRTdXBwb3J0QXJndW1l
bnRCdWZmZXJzOiBZRVNdOworCitpZDwgTVRMU2FtcGxlclN0YXRlID4gc2FtcGxlclN0YXRlID0g
W2RldmljZSBuZXdTYW1wbGVyU3RhdGVXaXRoRGVzY3JpcHRvcjpzYW1wbGVyRGVzY3JpcHRvcl07
CitgYGAKKworIyMjIyMjIE9iamVjdGl2ZS1DCisKK2BgYG9iamMKK01UTFNhbXBsZXJEZXNjcmlw
dG9yKiBzYW1wbGVyRGVzY3JpcHRvciA9IFtbTVRMU2FtcGxlckRlc2NyaXB0b3IgYWxsb2NdIGlu
aXRdOworCitbc2FtcGxlckRlc2NyaXB0b3Igc2V0U0FkZHJlc3NNb2RlOiBNVExTYW1wbGVyQWRk
cmVzc01vZGVSZXBlYXRdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldFRBZGRyZXNzTW9kZTogTVRM
U2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0XTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRSQWRkcmVz
c01vZGU6IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRlc2NyaXB0b3Ig
c2V0TWFnRmlsdGVyOiBNVExTYW1wbGVyTWluTWFnRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVz
Y3JpcHRvciBzZXRNaW5GaWx0ZXI6IE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5lYXJdOworW3Nh
bXBsZXJEZXNjcmlwdG9yIHNldE1pcEZpbHRlcjogTVRMU2FtcGxlck1pcEZpbHRlckxpbmVhcl07
Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0U3VwcG9ydEFyZ3VtZW50QnVmZmVyczogWUVTXTsKKwor
aWQ8IE1UTFNhbXBsZXJTdGF0ZSA+IHNhbXBsZXJTdGF0ZSA9IFtkZXZpY2UgbmV3U2FtcGxlclN0
YXRlV2l0aERlc2NyaXB0b3I6c2FtcGxlckRlc2NyaXB0b3JdOworCitbc2FtcGxlckRlc2NyaXB0
b3IgcmVsZWFzZV07CisKKy8vIC4uLgorCitbc2FtcGxlclN0YXRlIHJlbGVhc2VdOworYGBgCisK
KyMjIyMjIyBDKysKKworYGBgY3BwCitNVEw6OlNhbXBsZXJEZXNjcmlwdG9yKiBwU2FtcGxlckRl
c2NyaXB0b3IgPSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjphbGxvYygpLT5pbml0KCk7CisKK3BT
YW1wbGVyRGVzY3JpcHRvci0+c2V0U0FkZHJlc3NNb2RlKCBNVEw6OlNhbXBsZXJBZGRyZXNzTW9k
ZVJlcGVhdCApOworcFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRUQWRkcmVzc01vZGUoIE1UTDo6U2Ft
cGxlckFkZHJlc3NNb2RlUmVwZWF0ICk7CitwU2FtcGxlckRlc2NyaXB0b3ItPnNldFJBZGRyZXNz
TW9kZSggTVRMOjpTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXQgKTsKK3BTYW1wbGVyRGVzY3JpcHRv
ci0+c2V0TWFnRmlsdGVyKCBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5lYXIgKTsKK3BTYW1w
bGVyRGVzY3JpcHRvci0+c2V0TWluRmlsdGVyKCBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5l
YXIgKTsKK3BTYW1wbGVyRGVzY3JpcHRvci0+c2V0TWlwRmlsdGVyKCBNVEw6OlNhbXBsZXJNaXBG
aWx0ZXJMaW5lYXIgKTsKK3BTYW1wbGVyRGVzY3JpcHRvci0+c2V0U3VwcG9ydEFyZ3VtZW50QnVm
ZmVycyggdHJ1ZSApOworCitNVEw6OlNhbXBsZXJTdGF0ZSogcFNhbXBsZXJTdGF0ZSA9IHBEZXZp
Y2UtPm5ld1NhbXBsZXJTdGF0ZSggcFNhbXBsZXJEZXNjcmlwdG9yICk7CisKK3BTYW1wbGVyRGVz
Y3JpcHRvci0+cmVsZWFzZSgpOworCisvLyAuLi4KKworcFNhbXBsZXJTdGF0ZS0+cmVsZWFzZSgp
OworYGBgCisKKyMjIyMgQSBzdWJzZXQgb2YgYmluZGluZ3MgZm9yIEZvdW5kYXRpb24gY2xhc3Nl
cyBpcyBwcm92aWRlZCBmb3Igc2VhbWxlc3MgaW50ZWdyYXRpb24KKworIyMjIyMjIE9iamVjdGl2
ZS1DICh3aXRoIGF1dG9tYXRpYyByZWZlcmVuY2UgY291bnRpbmcpCisKK2BgYG9iamMKK05TQXV0
b3JlbGVhc2VQb29sKiAgcG9vbCAgID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07
CitOU1N0cmluZyogICAgICAgICAgIHN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmlu
ZzogIkhlbGxvIFdvcmxkIiBlbmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXTsKKworcHJp
bnRmKCAic3RyaW5nID0gXCIlc1wiXG4iLCBbc3RyaW5nIGNTdHJpbmdVc2luZ0VuY29kaW5nOiBO
U0FTQ0lJU3RyaW5nRW5jb2RpbmddICk7CitgYGAKKworIyMjIyMjIE9iamVjdGl2ZS1DCisKK2Bg
YG9iamMKK05TQXV0b3JlbGVhc2VQb29sKiBwb29sICAgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFs
bG9jXSBpbml0XTsKK05TU3RyaW5nKiAgICAgICAgICBzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENTdHJpbmc6ICJIZWxsbyBXb3JsZCIgZW5jb2Rpbmc6IE5TQVNDSUlTdHJpbmdFbmNvZGlu
Z107CisJCQkJCQkJCQorcHJpbnRmKCAic3RyaW5nID0gXCIlc1wiXG4iLCBbc3RyaW5nIGNTdHJp
bmdVc2luZ0VuY29kaW5nOiBOU0FTQ0lJU3RyaW5nRW5jb2RpbmddICk7CisKK1twb29sIHJlbGVh
c2VdOworYGBgCisKKyMjIyMjIyBDKysKKworYGBgY3BwCitOUzo6QXV0b3JlbGVhc2VQb29sKiBw
UG9vbCAgID0gTlM6OkF1dG9yZWxlYXNlUG9vbDo6YWxsb2MoKS0+aW5pdCgpOworTlM6OlN0cmlu
ZyogICAgICAgICAgcFN0cmluZyA9IE5TOjpTdHJpbmc6OnN0cmluZyggIkhlbGxvIFdvcmxkIiwg
TlM6OkFTQ0lJU3RyaW5nRW5jb2RpbmcgKTsKKworcHJpbnRmKCAicFN0cmluZyA9IFwiJXNcIlxu
IiwgcFN0cmluZy0+Y1N0cmluZyggTlM6OkFTQ0lJU3RyaW5nRW5jb2RpbmcgKSApOworCitwUG9v
bC0+cmVsZWFzZSgpOworYGBgCisKKyMjIyMgIEludGVyb3BlcmFiaWxpdHkgd2l0aCBDb3JlRm91
bmRhdGlvbgorCitgYGBjcHAKK01UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9t
ZXRyeURlc2NyaXB0b3IqIHBHZW9EZXNjcmlwdG9yICA9IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9jKCktPmluaXQoKTsKK0NGVHlwZVJl
ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Jz
W10gICA9IHsgKCBDRlR5cGVSZWYgKSggcEdlb0Rlc2NyaXB0b3IgKSB9OworTlM6OkFycmF5KiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEdlb0Rlc2NyaXB0b3Jz
ID0gKCBOUzo6QXJyYXkqICkoIENGQXJyYXlDcmVhdGUoIGtDRkFsbG9jYXRvckRlZmF1bHQsIGRl
c2NyaXB0b3JzLCBTSVpFT0ZfQVJSQVkoIGRlc2NyaXB0b3JzKSwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcyApICk7CisKKy8vIC4uLgorCitwR2VvRGVzY3JpcHRvcnMtPnJlbGVhc2UoKTsKK2BgYAor
CisjIyMjIEFjY2Vzc2luZyBhIENBTWV0YWxEcmF3YWJsZQorCitgYGBvYmpjCisjaW1wb3J0IDxR
dWFydHpDb3JlL0NBTWV0YWxMYXllci5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3Jl
LmhwcD4KKworLy8gLi4uCisKK0NBTWV0YWxMYXllciogICAgICAgICBtZXRhbExheWVyICAgICAg
ICAgPSAvKiBnZXQgeW91ciBsYXllciBmcm9tIHlvdXIgdmlldyAqLzsKK2lkPCBDQU1ldGFsRHJh
d2FibGUgPiBtZXRhbERyYXdhYmxlICAgICAgPSBbbWV0YWxMYXllciBuZXh0RHJhd2FibGVdOwor
Q0E6Ok1ldGFsRHJhd2FibGUqICAgIHBNZXRhbENwcERyYXdhYmxlICA9ICggX19icmlkZ2UgQ0E6
Ok1ldGFsRHJhd2FibGUqICkgbWV0YWxEcmF3YWJsZTsKKworLy8gLi4uCitgYGAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9TaW5nbGVIZWFkZXIvTWFrZVNpbmds
ZUhlYWRlci5weSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9TaW5nbGVIZWFkZXIv
TWFrZVNpbmdsZUhlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNThlNDllYzc3NmFjOTlmNzA5MDVmNmE1
MWQ3NjlkMDc1MzllNTRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5CkBAIC0wLDAgKzEsMjcx
IEBACisjIS91c3IvYmluL3B5dGhvbgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMKKyMgU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkKKyMK
KyMgQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisjCisjIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
KyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9y
dCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9y
dCBzeXMKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K2NsYXNzIEhlYWRlclByZWZpeCggb2JqZWN0ICk6CisJX190ZW1wbGF0ZSAJCQk9ICggJy8vXG4n
CisJCQkJCQkJJy8vIHtmaWxlfVxuJworCQkJCQkJCScvL1xuJworCQkJCQkJCScvLyB7bWV0YV9k
YXRhfVxuJworCQkJCQkJCScvL1xuJworCQkJCQkJCScvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFw
cGxlIEluYy5cbicKKwkJCQkJCQknLy9cbicKKwkJCQkJCQknLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7XG4nCisJCQkJCQkJ
Jy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS5cbicKKwkJCQkJCQknLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0XG4nCisJCQkJCQkJJy8vXG4nCisJCQkJCQkJJy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbicKKwkJCQkJCQknLy9cbicKKwkJCQkJCQkn
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZVxuJworCQkJCQkJCScvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLFxuJworCQkJCQkJCScvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC5cbicKKwkJCQkJCQknLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuJworCQkJCQkJCScvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbicKKwkJCQkJCQknLy9cbicKKwkJCQkJCQknXG4n
ICkKKworCV9fdGVtcGxhdGVfY29tbWl0CT0JJ0F1dG9nZW5lcmF0ZWQgZnJvbSBjb21taXQge2Nv
bW1pdH0uJworCV9fdGVtcGxhdGVfZGF0ZQkJPQknQXV0b2dlbmVyYXRlZCBvbiAlQiAlZCwgJVku
JworCisJZGVmIF9faW5pdF9fKCBzZWxmLCBmaWxlICk6CisJCXNlbGYuX19maWxlID0gZmlsZQor
CisJZGVmIF9fc3RyX18oIHNlbGYgKToKKwkJcmV0dXJuIHNlbGYuX190ZW1wbGF0ZS5mb3JtYXQo
IGZpbGUgPSBzZWxmLl9fZmlsZSwgbWV0YV9kYXRhID0gc2VsZi5fX21ldGFfZGF0YV9zdHJpbmco
KSApCisKKwlkZWYgX19nZXRfY29tbWl0X2hhc2goIHNlbGYgKToKKwkJZ2l0X2NvbW1pdF9oYXNo
ID0gTm9uZQorCisJCXRyeToKKwkJCWdpdF9kaXIJCQk9IG9zLnBhdGguZGlybmFtZSggb3MucGF0
aC5yZWFscGF0aCggX19maWxlX18gKSApCisJCQlwcm9jIAkJCT0gc3VicHJvY2Vzcy5Qb3Blbigg
WyAnZ2l0JywgJ3Jldi1wYXJzZScsICdIRUFEJyBdLCBjd2QgPSBnaXRfZGlyLCBzdGRvdXQgPSBz
dWJwcm9jZXNzLlBJUEUsIHN0ZGVyciA9IHN1YnByb2Nlc3MuUElQRSApCisJCQlnaXRfY29tbWl0
X2hhc2ggPSBwcm9jLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCAndXRmLTgnLCAncmVwbGFjZScgKS5z
dHJpcCgpCisJCWV4Y2VwdDoKKwkJCWxvZ2dpbmcuZXJyb3IoICdGYWlsZWQgdG8gZGV0ZXJtaW5l
IGdpdCBjb21taXQgaGFzaCEnICkKKwkJCXBhc3MKKworCQlyZXR1cm4gZ2l0X2NvbW1pdF9oYXNo
CisKKwlkZWYgX19nZXRfY29tbWl0X3N0cmluZyggc2VsZiApOgorCQltZXRhX2RhdGEJCT0gTm9u
ZQorCQlnaXRfY29tbWl0X2hhc2gJPSBzZWxmLl9fZ2V0X2NvbW1pdF9oYXNoKCkKKworCQlpZiBn
aXRfY29tbWl0X2hhc2g6CisJCQltZXRhX2RhdGEgPSBzZWxmLl9fdGVtcGxhdGVfY29tbWl0LmZv
cm1hdCggY29tbWl0ID0gZ2l0X2NvbW1pdF9oYXNoICkKKworCQlyZXR1cm4gbWV0YV9kYXRhCisK
KwlkZWYgX19nZXRfZGF0ZV9zdHJpbmcoIHNlbGYgKToKKwkJdG9kYXkgPSBkYXRldGltZS5kYXRl
LnRvZGF5KCkKKyAKKwkJcmV0dXJuIHRvZGF5LnN0cmZ0aW1lKCBzZWxmLl9fdGVtcGxhdGVfZGF0
ZSApCisKKwlkZWYgX19tZXRhX2RhdGFfc3RyaW5nKCBzZWxmICk6CisJCW1ldGFfZGF0YSA9IHNl
bGYuX19nZXRfY29tbWl0X3N0cmluZygpCisKKwkJaWYgbm90IG1ldGFfZGF0YToKKwkJCW1ldGFf
ZGF0YSA9IHNlbGYuX19nZXRfZGF0ZV9zdHJpbmcoKQorCisJCXJldHVybiBtZXRhX2RhdGEKKwor
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIFNp
bmdsZUhlYWRlciggb2JqZWN0ICk6CisJX19wcmFnbWFfb25jZSA9ICcjcHJhZ21hIG9uY2Vcblxu
JworCisJZGVmIF9faW5pdF9fKCBzZWxmICk6CisJCXNlbGYuX19oZWFkZXJfcGF0aHMgPSBsaXN0
KCkKKworCWRlZiBfX3N0cl9fKCBzZWxmICk6CisJCXJldHVybiBzZWxmLnByb2Nlc3MoKQorCisJ
ZGVmIGFwcGVuZCggc2VsZiwgaGVhZGVyX3BhdGggKToKKwkJc2VsZi5fX2hlYWRlcl9wYXRocy5h
cHBlbmQoIGhlYWRlcl9wYXRoICkKKworCWRlZiBwcm9jZXNzKCBzZWxmICk6CisJCW91dF9oZWFk
ZXIgCQkJCT0gc2VsZi5fX3ByYWdtYV9vbmNlCisKKwkJc2VsZi5fX2luY2x1ZGVkX2hlYWRlcnMJ
PSBzZXQoKQorCQlzZWxmLl9fYmFzZV9wYXRoIAkJPSBsaXN0KCkKKworCQlmb3IgaGVhZGVyX3Bh
dGggaW4gc2VsZi5fX2hlYWRlcl9wYXRoczoKKwkJCW91dF9oZWFkZXIgKz0gc2VsZi5fX3Byb2Nl
c3NfaGVhZGVyKCBoZWFkZXJfcGF0aCApCisKKwkJcmV0dXJuIHNlbGYuX19zdHJpcF9lbXB0eV9s
aW5lcyggb3V0X2hlYWRlciApCisKKwlkZWYgX19yZWFkX2hlYWRlciggc2VsZiwgcGF0aCApOgor
CQlwYXRoID0gb3MucGF0aC5yZWFscGF0aCggcGF0aCApCisKKwkJdHJ5OgorCQkJZiA9IG9wZW4o
IHBhdGgsICdyJyApCisJCWV4Y2VwdDoKKwkJCXJhaXNlIFJ1bnRpbWVFcnJvciggJ0ZhaWxlZCB0
byBvcGVuIGZpbGUgXCInICsgcGF0aCArICdcIiBmb3IgcmVhZCEnICkKKworCQlyZXR1cm4gZi5y
ZWFkKCkKKworCWRlZiBfX3N0cmlwX3ByYWdtYV9vbmNlKCBzZWxmLCBoZWFkZXIgKToKKwkJcmV0
dXJuIHJlLnN1YiggJ1xccyojcHJhZ21hIG9uY2VccypcXC9cXC8tKlxcbicsICcnLCBoZWFkZXIg
KQorCisJZGVmIF9fc3RyaXBfY29tbWVudHMoIHNlbGYsIGhlYWRlciApOgorCQlyZXR1cm4gcmUu
c3ViKCAnXi8vLipcXG4nLCAnJywgaGVhZGVyLCBmbGFncyA9IHJlLk1VTFRJTElORSApCisKKwlk
ZWYgX19zdHJpcF9lbXB0eV9saW5lcyggc2VsZiwgaGVhZGVyICk6CisJCXJldHVybiByZS5zdWIo
ICdcXG5cXG4rJywgJ1xcblxcbicsIGhlYWRlciwgZmxhZ3MgPSByZS5NVUxUSUxJTkUgKQorCisJ
ZGVmIF9fc3Vic3RpdHV0ZV9pbmNsdWRlX2RpcmVjdGl2ZSggc2VsZiwgbWF0Y2ggKToKKwkJaGVh
ZGVyX3BhdGggPSBtYXRjaC5ncm91cCggJ0hFQURFUl9QQVRIJyApCisKKwkJbG9nZ2luZy5pbmZv
KCAnXHRTdWJzdGl0dXRpbmcgXCInICsgaGVhZGVyX3BhdGggKyAnXCIuLi4nICkKKworCQlyZXR1
cm4gc2VsZi5fX3Byb2Nlc3NfaGVhZGVyKCBvcy5wYXRoLmpvaW4oIHNlbGYuX19iYXNlX3BhdGhb
LTFdLCBoZWFkZXJfcGF0aCApICkKKworCWRlZiBfX3Byb2Nlc3NfaW5jbHVkZV9kaXJlY3RpdmVz
KCBzZWxmLCBoZWFkZXIgKToKKwkJcmV0dXJuIHJlLnN1YiggJ15cXHMqI2luY2x1ZGVcXHNcXCIo
P1A8SEVBREVSX1BBVEg+XFxTKilcXCInLCBzZWxmLl9fc3Vic3RpdHV0ZV9pbmNsdWRlX2RpcmVj
dGl2ZSwgaGVhZGVyLCBmbGFncyA9IHJlLk1VTFRJTElORSApCisKKwlkZWYgX19wcm9jZXNzX2Zv
dW5kYXRpb25fZGlyZWN0aXZlcyggc2VsZiwgaGVhZGVyICk6CisJCWlmIGhlYWRlci5maW5kKCIj
aW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4iKSAhPSAtMToKKwkJCWxvZ2dpbmcu
aW5mbyggJ1x0U3Vic3RpdHV0aW5nIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPi4uLicgKQor
CQkJcmV0dXJuIGhlYWRlci5yZXBsYWNlKCIjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
LmhwcD4iLCBzZWxmLl9fcHJvY2Vzc19oZWFkZXIoIG9zLnBhdGguam9pbiggc2VsZi5fX2Jhc2Vf
cGF0aFstMV0sICIuLi9Gb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwIiApICkgKQorCQlyZXR1cm4g
aGVhZGVyCisKKworCWRlZiBfX3Byb2Nlc3NfaGVhZGVyKCBzZWxmLCBoZWFkZXJfcGF0aCApOgor
CQlvdXRfaGVhZGVyID0gJycJCQorCisJCWhlYWRlcl9wYXRoID0gb3MucGF0aC5yZWFscGF0aCgg
aGVhZGVyX3BhdGggKQorCisJCWlmIG5vdCBoZWFkZXJfcGF0aCBpbiBzZWxmLl9faW5jbHVkZWRf
aGVhZGVyczoKKwkJCWxvZ2dpbmcuaW5mbyggJ1Byb2Nlc3NpbmcgXCInICsgaGVhZGVyX3BhdGgg
KyAnXCIuLi4nICkKKworCQkJc2VsZi5fX2Jhc2VfcGF0aC5hcHBlbmQoIG9zLnBhdGguZGlybmFt
ZSggaGVhZGVyX3BhdGggKSApCisJCQlzZWxmLl9faW5jbHVkZWRfaGVhZGVycy5hZGQoIGhlYWRl
cl9wYXRoICkKKwkJCQorCQkJb3V0X2hlYWRlciA9IHNlbGYuX19yZWFkX2hlYWRlciggaGVhZGVy
X3BhdGggKQorCQkJb3V0X2hlYWRlciA9IHNlbGYuX19zdHJpcF9wcmFnbWFfb25jZSggb3V0X2hl
YWRlciApCisJCQlvdXRfaGVhZGVyID0gc2VsZi5fX3N0cmlwX2NvbW1lbnRzKCBvdXRfaGVhZGVy
ICkKKwkJCW91dF9oZWFkZXIgPSBzZWxmLl9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2ZXMoIG91
dF9oZWFkZXIgKQorCQkJb3V0X2hlYWRlciA9IHNlbGYuX19wcm9jZXNzX2ZvdW5kYXRpb25fZGly
ZWN0aXZlcyggb3V0X2hlYWRlciApCisKKwkJCXNlbGYuX19iYXNlX3BhdGgucG9wKCkKKwkJZWxz
ZToKKwkJCWxvZ2dpbmcuaW5mbyggJ1x0U2tpcHBpbmcgXCInICsgaGVhZGVyX3BhdGggKyAnXCIu
Li4nICkKKworCQlyZXR1cm4gb3V0X2hlYWRlcgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVmIGNyZWF0ZV9hcmd1bWVudF9wYXJzZXIoKToKKwlw
YXJzZXIgCQkJPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisJYmFzZV9wYXRoIAkJPSBvcy5w
YXRoLmRpcm5hbWUoIG9zLnBhdGgucmVhbHBhdGgoIF9fZmlsZV9fICkgKQorCW91dHB1dF9wYXRo
CQk9IG9zLnBhdGguam9pbiggYmFzZV9wYXRoLCAnTWV0YWwuaHBwJyApCisKKwlwYXJzZXIuYWRk
X2FyZ3VtZW50KCAnLW8nLCAnLS1vdXRwdXQnLCAgZGVzdCA9ICdvdXRwdXRfcGF0aCcsIG1ldGF2
YXIgPSAnUEFUSCcsIGRlZmF1bHQgPSBvdXRwdXRfcGF0aCwgaGVscCA9ICdPdXRwdXQgcGF0aCBm
b3IgdGhlIHNpbmdsZSBoZWFkZXIgZmlsZS4nICkKKwlwYXJzZXIuYWRkX2FyZ3VtZW50KCAnLXYn
LCAnLS12ZXJib3NlJywgYWN0aW9uID0gJ3N0b3JlX3RydWUnLCAgaGVscCA9ICdTaG93IHZlcmJv
c2Ugb3V0cHV0LicgKQorCXBhcnNlci5hZGRfYXJndW1lbnQoIGRlc3QgPSAnaGVhZGVyX3BhdGhz
JywgbWV0YXZhciA9ICdIRUFERVJfRklMRScsIG5hcmdzPScrJywgaGVscCA9ICdJbnB1dCBoZWFk
ZXIgZmlsZS4nICkKKworCXJldHVybiBwYXJzZXIKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlZiBwYXJzZV9hcmd1bWVudHMoKToKKwlwYXJzZXIJ
PSBjcmVhdGVfYXJndW1lbnRfcGFyc2VyKCkKKwlhcmdzCT0gcGFyc2VyLnBhcnNlX2FyZ3MoKQor
CisJaWYgYXJncy52ZXJib3NlOgorCQlsb2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKCBsb2dn
aW5nLklORk8gKQorCWVsc2U6CisJCWxvZ2dpbmcuZ2V0TG9nZ2VyKCkuc2V0TGV2ZWwoIGxvZ2dp
bmcuRVJST1IgKQorCisJcmV0dXJuIGFyZ3MKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlZiBtYWtlX2hlYWRlciggYXJncyApOgorCXByZWZpeCA9
IEhlYWRlclByZWZpeCggb3MucGF0aC5iYXNlbmFtZSggYXJncy5vdXRwdXRfcGF0aCApICkKKwlo
ZWFkZXIgPSBTaW5nbGVIZWFkZXIoKQorCQorCWZvciBoZWFkZXJfcGF0aCBpbiBhcmdzLmhlYWRl
cl9wYXRoczoKKwkJaGVhZGVyLmFwcGVuZCggaGVhZGVyX3BhdGggKQorCisJcmV0dXJuIHN0cigg
cHJlZml4ICkgKyBzdHIoIGhlYWRlciApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitkZWYgbWFrZV9kaXIoIHBhdGggKToKKwl0cnk6CisJCWlmIG5v
dCBvcy5wYXRoLmV4aXN0cyggcGF0aCApOgorCQkJb3MubWFrZWRpcnMoIHBhdGggKQorCWV4Y2Vw
dCBvcy5lcnJvcjoKKwkJcGFzcworCWV4Y2VwdDoKKwkJcmFpc2UKKworIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlZiB3cml0ZV9oZWFkZXIoIGFyZ3Ms
IGNvbnRlbnQgKToKKwlwYXRoID0gb3MucGF0aC5yZWFscGF0aCggYXJncy5vdXRwdXRfcGF0aCAp
CisKKwlsb2dnaW5nLmluZm8oICdXcml0aW5nIFwiJyArIHBhdGggKyAnXCIuLi4nICkKKworCW1h
a2VfZGlyKCBvcy5wYXRoLmRpcm5hbWUoIHBhdGggKSApCisKKwl0cnk6CisJCWYgPSBvcGVuKCBw
YXRoLCAndycgKQorCWV4Y2VwdDoKKwkJcmFpc2UgUnVudGltZUVycm9yKCAnRmFpbGVkIHRvIG9w
ZW4gZmlsZSBcIicgKyBwYXRoICsgJ1wiIGZvciB3cml0ZSEnICkKKworCWYud3JpdGUoIGNvbnRl
bnQgKQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKwlyZXN1bHQgPSAtMQorCQorCXRyeToKKwkJaWYg
c3lzLmdldGRlZmF1bHRlbmNvZGluZygpLmxvd2VyKCkgPT0gJ2FzY2lpJzoKKwkJCXJlbG9hZCgg
c3lzICkKKwkJCXN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoICd1dGYtOCcgKQorCisJCWFyZ3MgCT0g
cGFyc2VfYXJndW1lbnRzKCkKKwkJaGVhZGVyIAk9IG1ha2VfaGVhZGVyKCBhcmdzICkKKworCQl3
cml0ZV9oZWFkZXIoIGFyZ3MsIGhlYWRlciApCisKKwkJcmVzdWx0ID0gMAorCisJZXhjZXB0ICgg
S2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQgKToKKwkgCXBhc3MKKwlleGNlcHQ6CisJIAly
YWlzZQorCisJc3lzLmV4aXQoIHJlc3VsdCApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGM1MGQyMTIyOTAzNDFjY2E3MThjNWI1YWM3YTIwMGRiNWQxZjhjNGYu
LmI5M2JmMzI5MjYwNjhjOWI5OGVjNDVjZGNhOGE4YzgzNzYzOWUwNDAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
Mi0wMi0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXZWJHUFVdIEludGVncmF0ZSBNZXRhbC1jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY5NworCisgICAgICAgIFJldmlld2VkIGJ5IERl
YW4gSmFja3Nvbi4KKworICAgICAgICBNZXRhbC1jcHAgZmlsZXMgc2hvdWxkIG5vdCBiZSBzdHls
ZS1jaGVja2VkLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5
OgorCiAyMDIyLTAyLTE3ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIEVuc3VyZSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhIHBlcmZvcm1zIG1vdmUg
b3BlcmF0aW9uIGJhc2VkIG9uIGRhdGEgdHlwZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlci5weQppbmRleCBkZDU1ZjgzOTI4NjBhYmZmZGY0NTk5MDZlMTIyZWZmNjZhMWMwYzA1
Li5hYjc4OWQ3MWM5YTExZWYwYjNiZDdhZDZiNjcyZDI3ZjI4ZTViYTMwIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC00MDIsNyArNDAyLDggQEAgX1NLSVBQRURf
RklMRVNfV0lUSF9XQVJOSU5HID0gWwogICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYktp
dCcsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICd3cGUnLCAnd2Via2l0
LXdlYi1leHRlbnNpb24uaCcpLAogICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYktpdCcs
ICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICd3cGUnLCAnRE9NJywgJ3dl
YmtpdGRvbS5oJyksCiAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViR1BVJywgJ1dlYkdQ
VScsICdXZWJHUFUuaCcpLAotICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkdQVScsICdX
ZWJHUFUnLCAnV2ViR1BVRXh0LmgnKV0KKyAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJH
UFUnLCAnV2ViR1BVJywgJ1dlYkdQVUV4dC5oJyksCisgICAgb3MucGF0aC5qb2luKCdTb3VyY2Un
LCAnV2ViR1BVJywgJ1dlYkdQVScsICdtZXRhbC1jcHAnLCAnU2luZ2xlSGVhZGVyJywgJ01ha2VT
aW5nbGVIZWFkZXIucHknKV0KIAogIyBGaWxlcyB0byBza2lwIHRoYXQgYXJlIG1vcmUgY29tbW9u
IG9yIG9idmlvdXMuCiAjCg==
</data>
<flag name="commit-queue"
          id="479480"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452447</attachid>
            <date>2022-02-17 17:00:41 -0800</date>
            <delta_ts>2022-02-17 17:49:26 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-236697-20220217170040.patch</filename>
            <type>text/plain</type>
            <size>982639</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDljOWY1YTI2YjJmNjhhYWY2
ODM5MjkwY2U3YTcxYTRlYjJmNGI4MzkuLmFmMGE5OGExZjRmMmU2MmY4MTM0NTM0NTUyOGY3NDkx
YjgwZTM3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDIyLTAyLTE3ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW50
ZWdyYXRlIE1ldGFsLWNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2Njk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisg
ICAgICAgIE1ldGFsLWNwcCBpcyBhIGxvdy1vdmVyaGVhZCBDKysgaW50ZXJmYWNlIGZvciBNZXRh
bC4KKyAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL21ldGFsL2NwcC8KKworICAg
ICAgICBNZXRhbC1jcHAgaXNuJ3QgYSBsaWJyYXJ5IHBlci1zZSwgYnV0IGlzIGluc3RlYWQganVz
dCBhIGNvbGxlY3Rpb24gb2YgZmlsZXMgd2hpY2ggdXNlcnMKKyAgICAgICAgYXJlIHN1cHBvc2Vk
IHRvIGp1c3QgY29weSBpbnRvIHRoZWlyIHByb2plY3QuIFRoaXMgZG9lcyBqdXN0IHRoYXQsIGFu
ZCBob29rcyB1cCBhbGwgdGhlCisgICAgICAgIG5lY2Vzc2FyeSBmbGFncyBhbmQgcGF0aHMgYW5k
IGV2ZXJ5dGhpbmcuCisKKyAgICAgICAgVGhpcyB1c2VzIHRoZSAic2luZ2xlIGhlYWRlciBhbHRl
cm5hdGl2ZSIgZGVzY3JpYmVkIG9uIHRoYXQgd2VicGFnZSwgYW5kIGNyZWF0ZXMgdGhlCisgICAg
ICAgIHNpbmdsZSBmaWxlIGFzIGEgYnVpbGQgc3RlcC4KKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL1dlYkdQVS54Y2NvbmZpZzoKKyAgICAgICAgKiBXZWJHUFUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJHUFUvTWV0YWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJHUFUvY29uZmlnLmg6CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNBcnJheS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvRm91bmRhdGlvbi9OU0J1bmRsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGEuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcDogQWRk
ZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90aWZpY2F0aW9u
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTnVt
YmVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
T2JqQ1J1bnRpbWUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNPYmplY3QuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNQcml2YXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TUHJvY2Vzc0luZm8uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1N0cmluZy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1R5cGVzLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVVJMLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9MSUNFTlNFLnR4dDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1h
bmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50RW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAg
ICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmluYXJ5QXJjaGl2ZS5ocHA6IEFkZGVkLgor
ICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFzcy5o
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlTWFu
YWdlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2Fw
dHVyZVNjb3BlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExDb21tYW5kQnVmZmVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQ29tbWFuZFF1ZXVlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBw
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvdW50ZXJzLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5j
aWwuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERldmlj
ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHJhd2Fi
bGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFt
aWNMaWJyYXJ5LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExFdmVudC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RmVuY2UuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1
bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcDogQWRkZWQuCisg
ICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvblN0aXRjaGluZy5ocHA6
IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJpZGdl
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFwLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVjdENv
bW1hbmRCdWZmZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpYnJhcnkuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHA6
IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUGlwZWxpbmUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFBpeGVsRm9ybWF0LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExQcml2YXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBhc3MuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZS5o
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFzcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMU2FtcGxlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFRleHR1cmUuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNpYmxlRnVu
Y3Rpb25UYWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TWV0YWwuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUv
Q0FEZWZpbmVzLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9RdWFydHpD
b3JlL0NBTWV0YWxEcmF3YWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1j
cHAvUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0
YWwtY3BwL1F1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvUkVBRE1FLm1kOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3Bw
L1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEhlYWRl
clByZWZpeCk6CisgICAgICAgIChIZWFkZXJQcmVmaXguX19pbml0X18pOgorICAgICAgICAoSGVh
ZGVyUHJlZml4Ll9fc3RyX18pOgorICAgICAgICAoSGVhZGVyUHJlZml4Ll9fZ2V0X2NvbW1pdF9o
YXNoKToKKyAgICAgICAgKEhlYWRlclByZWZpeC5fX2dldF9jb21taXRfc3RyaW5nKToKKyAgICAg
ICAgKEhlYWRlclByZWZpeC5fX2dldF9kYXRlX3N0cmluZyk6CisgICAgICAgIChfX21ldGFfZGF0
YV9zdHJpbmcpOgorICAgICAgICAoU2luZ2xlSGVhZGVyKToKKyAgICAgICAgKFNpbmdsZUhlYWRl
ci5fX2luaXRfXyk6CisgICAgICAgIChTaW5nbGVIZWFkZXIuX19zdHJfXyk6CisgICAgICAgIChT
aW5nbGVIZWFkZXIuYXBwZW5kKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5wcm9jZXNzKToKKyAg
ICAgICAgKFNpbmdsZUhlYWRlci5fX3JlYWRfaGVhZGVyKToKKyAgICAgICAgKFNpbmdsZUhlYWRl
ci5fX3N0cmlwX3ByYWdtYV9vbmNlKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX2Nv
bW1lbnRzKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX2VtcHR5X2xpbmVzKToKKyAg
ICAgICAgKFNpbmdsZUhlYWRlci5fX3N1YnN0aXR1dGVfaW5jbHVkZV9kaXJlY3RpdmUpOgorICAg
ICAgICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2ZXMpOgorICAgICAg
ICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19mb3VuZGF0aW9uX2RpcmVjdGl2ZXMpOgorICAgICAg
ICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19oZWFkZXIpOgorICAgICAgICAoY3JlYXRlX2FyZ3Vt
ZW50X3BhcnNlcik6CisgICAgICAgIChwYXJzZV9hcmd1bWVudHMpOgorICAgICAgICAobWFrZV9o
ZWFkZXIpOgorICAgICAgICAobWFrZV9kaXIpOgorICAgICAgICAod3JpdGVfaGVhZGVyKToKKwog
MjAyMi0wMi0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWJHUFVdIEFkZCBhIHBsYXlncm91bmQgZXhhbXBsZSB0YXJnZXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnIGIvU291cmNl
L1dlYkdQVS9Db25maWd1cmF0aW9ucy9XZWJHUFUueGNjb25maWcKaW5kZXggZDQ1NTllZTk4YjI2
NDFiNTdlZDNiMDZlZjNjZTI2YjZiMjNkY2NiYy4uZjk0NmU2ZmZhNjBlNzYzNjQ2N2RmNjRiNWY5
ZTAwODkzNWIwOGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9X
ZWJHUFUueGNjb25maWcKKysrIGIvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9XZWJHUFUu
eGNjb25maWcKQEAgLTIzLDcgKzIzLDEwIEBACiAKICNpbmNsdWRlICJWZXJzaW9uLnhjY29uZmln
IgogCitXQVJOSU5HX0NGTEFHUyA9IC1XYWxsIC1XZXh0cmEgLVdjYXN0LXF1YWwgLVdjaGFyLXN1
YnNjcmlwdHMgLVdjb25kaXRpb25hbC11bmluaXRpYWxpemVkIC1XZXh0cmEtdG9rZW5zIC1XZm9y
bWF0PTIgLVdpbml0LXNlbGYgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5v
cmV0dXJuIC1XcG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3dyaXRlLXN0cmluZ3Mg
LVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMgLVd0YXV0b2xvZ2ljYWwtY29tcGFyZSAtV2ltcGxpY2l0
LWZhbGx0aHJvdWdoIC1XdmxhIC1XbGl0ZXJhbC1jb252ZXJzaW9uIC1XdGhyZWFkLXNhZmV0eSAt
V25vLXR5cGVkZWYtcmVkZWZpbml0aW9uIC1Xbm8taWdub3JlZC1xdWFsaWZpZXJzOworCiBIRUFE
RVJfU0VBUkNIX1BBVEhTID0gIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVk
ZSIgJChpbmhlcml0ZWQpOworU1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViR1BVL21ldGFsLWNwcCAkKGluaGVyaXRlZCk7
CiAKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIApAQCAtNjksMyArNzIsNyBAQCBNT0RV
TEVNQVBfRklMRSA9IFdlYkdQVS9XZWJHUFUubW9kdWxlbWFwOwogCiBTVVBQT1JUU19URVhUX0JB
U0VEX0FQSSA9IFlFUzsKIFRBUElfVkVSSUZZX01PREUgPSBQZWRhbnRpYzsKKworT1RIRVJfTERG
TEFHUyA9ICQoaW5oZXJpdGVkKSAtWGxpbmtlciAtbm9fd2Fybl9pbml0czsKKworSEVBREVSTUFQ
X0lOQ0xVREVTX1BST0pFQ1RfSEVBREVSUyA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzA0N2NjNjkxM2ZhYzRhNmUzNjE1ZjNl
NTg0YTBiMzZjNDgxM2E5MS4uZWZhOWMyNmVhNzViMmYwMmFlYWViN2E0N2IxNjlkZWQ5NWNhN2Vh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0zLDcgKzMsNyBAQAogCWFyY2hpdmVWZXJzaW9uID0gMTsKIAljbGFzc2VzID0gewogCX07
Ci0Jb2JqZWN0VmVyc2lvbiA9IDU1OworCW9iamVjdFZlcnNpb24gPSA1MTsKIAlvYmplY3RzID0g
ewogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwpAQCAtMTEsNiArMTEsNyBAQAog
CQkxQzAyM0Q0MDI3NDQ5MDcwMDAxREI3MzQgLyogbGlid2dzbC5hIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFQkQ3RjIyNzE2QjJDQzAwQTUyNTRE
IC8qIGxpYndnc2wuYSAqLzsgfTsKIAkJMUMwMjNENEIyNzQ0OTVCOTAwMURCNzM0IC8qIEphdmFT
Y3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDMDIzRDRBMjc0NDk1QjkwMDFEQjczNCAvKiBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgKi87IH07CiAJCTFDMkNFREVFMjcxRThBNzMwMEVEQzE2RiAvKiBNZXRhbC5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzJDRURFRDI3MUU4QTczMDBFREMxNkYgLyogTWV0YWwuZnJhbWV3b3JrICovOyB9OworCQkxQzUz
MUEyNTI3QkRERjU1MDBDRDEyN0UgLyogTWV0YWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1MzFBMjQyN0JEREY1NTAwQ0QxMjdFIC8qIE1ldGFs
LmNwcCAqLzsgfTsKIAkJMUM1MzE5QzAyN0JEQzZDQzAwQ0QxMjdFIC8qIG1haW4uc3dpZnQgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUzMTlCRjI3QkRD
NkNDMDBDRDEyN0UgLyogbWFpbi5zd2lmdCAqLzsgfTsKIAkJMUM1MzE5QzUyN0JEQzcyNzAwQ0Qx
MjdFIC8qIFdlYkdQVS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQ0VCRDdFMzI3MTZBRkJBMDBBNTI1NEQgLyogV2ViR1BVLmZyYW1l
d29yayAqLzsgfTsKIAkJMUM1QUNBOTQyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBOTIyNzNB
NDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tICovOyB9OwpAQCAtOTIsNiArOTMsOTEgQEAKIAkJ
MUMwMjNENDcyNzQ0OTE2RDAwMURCNzM0IC8qIFdHU0xVbml0VGVzdHMueGNjb25maWcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmln
OyBwYXRoID0gV0dTTFVuaXRUZXN0cy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMwMjNENEEyNzQ0OTVCOTAwMURCNzM0IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29y
ayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBw
ZXIuZnJhbWV3b3JrOyBwYXRoID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzJDRURFRDI3MUU4QTczMDBFREMxNkYgLyog
TWV0YWwuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBNZXRhbC5mcmFtZXdvcms7IHBhdGgg
PSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL01ldGFsLmZyYW1ld29yazsgc291cmNlVHJlZSA9
IFNES1JPT1Q7IH07CisJCTFDNTMxOUNEMjdCRERENkUwMENEMTI3RSAvKiBNVExUeXBlcy5ocHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5oOyBwYXRoID0gTVRMVHlwZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMTlDRTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRF
bmNvZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29k
ZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlDRjI3QkRERDZFMDBD
RDEyN0UgLyogTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0g
TVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNTMxOUQwMjdCRERENkUwMENEMTI3RSAvKiBNVExDb21wdXRlUGlwZWxpbmUuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE1UTENvbXB1dGVQaXBlbGluZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNTMxOUQxMjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5jdGlvbkhhbmRs
ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRnVuY3Rpb25IYW5kbGUuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEMjI3QkRERDZFMDBDRDEyN0UgLyogTVRMRHJhd2Fi
bGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTERyYXdhYmxlLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTER5bmFtaWNMaWJy
YXJ5LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExEeW5hbWljTGlicmFyeS5ocHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQ0MjdCRERENkUwMENEMTI3RSAvKiBNVExDb21w
dXRlUGFzcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ29tcHV0ZVBhc3MuaHBwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlENTI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVu
Y3Rpb25Db25zdGFudFZhbHVlcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRnVuY3Rpb25Db25z
dGFudFZhbHVlcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQ2MjdC
RERENkUwMENEMTI3RSAvKiBNVExQaXBlbGluZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUGlw
ZWxpbmUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlENzI3QkRERDZF
MDBDRDEyN0UgLyogTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9
IE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1MzE5RDgyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5oOyBwYXRoID0gTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENhcHR1cmVN
YW5hZ2VyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDYXB0dXJlTWFuYWdlci5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOURBMjdCRERENkUwMENEMTI3RSAvKiBNVExD
b21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ29tbWFuZEVuY29kZXIuaHBw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEQjI3QkRERDZFMDBDRDEyN0Ug
LyogTWV0YWwuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1ldGFsLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzE5REMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFN0YWdlSW5wdXRP
dXRwdXREZXNjcmlwdG9yLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExTdGFnZUlucHV0T3V0cHV0
RGVzY3JpcHRvci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUREMjdC
RERENkUwMENEMTI3RSAvKiBNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5oOyBwYXRoID0gTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlERTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGFyYWxs
ZWxSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUGFyYWxsZWxS
ZW5kZXJDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NTMxOURGMjdCRERENkUwMENEMTI3RSAvKiBNVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5oOyBwYXRoID0gTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzUzMTlFMDI3QkRERDZFMDBDRDEyN0UgLyogTVRMTGlua2VkRnVuY3Rpb25z
LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExMaW5rZWRGdW5jdGlvbnMuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFMTI3QkRERDZFMDBDRDEyN0UgLyogTVRMVGV4dHVy
ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMVGV4dHVyZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNTMxOUUyMjdCRERENkUwMENEMTI3RSAvKiBNVExTYW1wbGVyLmhwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmg7IHBhdGggPSBNVExTYW1wbGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzE5RTMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTERlcHRoU3RlbmNpbC5ocHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5oOyBwYXRoID0gTVRMRGVwdGhTdGVuY2lsLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MzE5RTQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFyZ3VtZW50RW5jb2Rlci5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQXJndW1lbnRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFNjI3
QkRERDZFMDBDRDEyN0UgLyogTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MzE5RTcyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFByaXZhdGUuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE1UTFByaXZhdGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzUzMTlFODI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2UuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTFJlc291cmNlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzE5RTkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5oOyBwYXRoID0gTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RUEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTERldmljZS5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRGV2aWNlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MzE5RUIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFyZ3VtZW50LmhwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmg7IHBhdGggPSBNVExBcmd1bWVudC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNTMxOUVDMjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5jdGlvbkxvZy5ocHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5oOyBwYXRoID0gTVRMRnVuY3Rpb25Mb2cuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMTlFRDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQnVmZmVyLmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBNVExCdWZmZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
MTlFRTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVuZGVyUGFzcy5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTVRMUmVuZGVyUGFzcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMx
OUVGMjdCRERENkUwMENEMTI3RSAvKiBNVExIZWFwLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExI
ZWFwLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjAyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTFZlcnRleERlc2NyaXB0b3IuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFZl
cnRleERlc2NyaXB0b3IuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlG
MTI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzE5RjIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTExpYnJhcnkuaHBwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
aDsgcGF0aCA9IE1UTExpYnJhcnkuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzUzMTlGMzI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGl4ZWxGb3JtYXQuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTFBpeGVsRm9ybWF0LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzE5RjQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZlbmNlLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBNVExGZW5jZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUY1MjdC
RERENkUwMENEMTI3RSAvKiBNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFDNTMxOUY2MjdCRERENkUwMENEMTI3RSAvKiBNVExSZW5kZXJQaXBlbGluZS5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmVuZGVyUGlwZWxpbmUuaHBwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzUzMTlGNzI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ29tbWFuZFF1
ZXVlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDb21tYW5kUXVldWUuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGODI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVuY3Rp
b25EZXNjcmlwdG9yLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExGdW5jdGlvbkRlc2NyaXB0b3Iu
aHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGOTI3QkRERDZFMDBDRDEy
N0UgLyogTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
aDsgcGF0aCA9IE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RkEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TEJsaXRQYXNzLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExCbGl0UGFzcy5ocHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZCMjdCRERENkUwMENEMTI3RSAvKiBNVExFdmVu
dC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRXZlbnQuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzUzMTlGQzI3QkRERDZFMDBDRDEyN0UgLyogTVRMQmluYXJ5QXJjaGl2ZS5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQmluYXJ5QXJjaGl2ZS5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTMxOUZEMjdCRERENkUwMENEMTI3RSAvKiBNVExDYXB0dXJlU2Nv
cGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTENhcHR1cmVTY29wZS5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZFMjdCRERENkUwMENEMTI3RSAvKiBNVExDb21wdXRl
Q29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTENvbXB1dGVDb21tYW5kRW5j
b2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZGMjdCRERENkUw
MENEMTI3RSAvKiBNVExIZWFkZXJCcmlkZ2UuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEhlYWRl
ckJyaWRnZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTAwMjdCRERE
NkUwMENEMTI3RSAvKiBNVExDb3VudGVycy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ291bnRl
cnMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwMTI3QkRERDZFMDBD
RDEyN0UgLyogTVRMRGVmaW5lcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRGVmaW5lcy5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTAyMjdCRERENkUwMENEMTI3RSAv
KiBNVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmVzb3VyY2VT
dGF0ZVBhc3MuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwMzI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMQ29tbWFuZEJ1ZmZlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRM
Q29tbWFuZEJ1ZmZlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTA1
MjdCRERENkUwMENEMTI3RSAvKiBOU1N0cmluZy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNTdHJp
bmcuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwNjI3QkRERDZFMDBD
RDEyN0UgLyogTlNEaWN0aW9uYXJ5LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0RpY3Rpb25hcnku
aHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwNzI3QkRERDZFMDBDRDEy
N0UgLyogTlNMb2NrLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0xvY2suaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwODI3QkRERDZFMDBDRDEyN0UgLyogTlNQcm9jZXNz
SW5mby5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNQcm9jZXNzSW5mby5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTA5MjdCRERENkUwMENEMTI3RSAvKiBOU0Vycm9yLmhw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmg7IHBhdGggPSBOU0Vycm9yLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzFBMEEyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TT2JqQ1J1bnRpbWUuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE5TT2JqQ1J1bnRpbWUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMUEwQjI3QkRERDZFMDBDRDEyN0UgLyogTlNPYmplY3QuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE5TT2JqZWN0LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFB
MEMyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TTm90aWZpY2F0aW9uLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBOU05vdGlmaWNhdGlvbi5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMx
QTBEMjdCRERENkUwMENEMTI3RSAvKiBOU1ByaXZhdGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5T
UHJpdmF0ZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTBFMjdCRERE
NkUwMENEMTI3RSAvKiBOU1VSTC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNVUkwuaHBwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwRjI3QkRERDZFMDBDRDEyN0UgLyogTlNB
dXRvcmVsZWFzZVBvb2wuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TQXV0b3JlbGVhc2VQb29sLmhw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMTAyN0JEREQ2RTAwQ0QxMjdF
IC8qIE5TUmFuZ2UuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TUmFuZ2UuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExMTI3QkRERDZFMDBDRDEyN0UgLyogTlNUeXBlcy5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNUeXBlcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNTMxQTEyMjdCRERENkUwMENEMTI3RSAvKiBOU0RhdGEuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE5TRGF0YS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTEz
MjdCRERENkUwMENEMTI3RSAvKiBOU051bWJlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNOdW1i
ZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExNDI3QkRERDZFMDBD
RDEyN0UgLyogRm91bmRhdGlvbi5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gRm91bmRhdGlvbi5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTE1MjdCRERENkUwMENEMTI3RSAv
KiBOU0RhdGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TRGF0ZS5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTMxQTE2MjdCRERENkUwMENEMTI3RSAvKiBOU0RlZmluZXMuaHBw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuaDsgcGF0aCA9IE5TRGVmaW5lcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNTMxQTE3MjdCRERENkUwMENEMTI3RSAvKiBOU0J1bmRsZS5ocHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBwYXRoID0gTlNCdW5kbGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
MUExODI3QkRERDZFMDBDRDEyN0UgLyogTlNFbnVtZXJhdG9yLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBOU0VudW1lcmF0b3IuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEx
OTI3QkRERDZFMDBDRDEyN0UgLyogTlNBcnJheS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNBcnJh
eS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFBMjdCRERENkUwMENE
MTI3RSAvKiBSRUFETUUubWQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBuZXQuZGFyaW5nZmlyZWJhbGwubWFya2Rvd247IHBhdGggPSBSRUFETUUubWQ7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFDMjdCRERENkUwMENEMTI3RSAv
KiBRdWFydHpDb3JlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBRdWFydHpDb3JlLmhwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMUQyN0JEREQ2RTAwQ0QxMjdFIC8qIENBUHJp
dmF0ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gQ0FQcml2YXRlLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMUUyN0JEREQ2RTAwQ0QxMjdFIC8qIENBTWV0YWxEcmF3YWJs
ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gQ0FNZXRhbERyYXdhYmxlLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMUYyN0JEREQ2RTAwQ0QxMjdFIC8qIENBRGVmaW5lcy5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gQ0FEZWZpbmVzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MzFBMjAyN0JEREQ2RTAwQ0QxMjdFIC8qIExJQ0VOU0UudHh0ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IExJ
Q0VOU0UudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEyMjI3QkRERDZF
MDBDRDEyN0UgLyogTWFrZVNpbmdsZUhlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IE1ha2VT
aW5nbGVIZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTI0MjdC
RERGNTUwMENEMTI3RSAvKiBNZXRhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXRhbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTJBMjdCREUwNjcwMENEMTI3RSAv
KiBNZXRhbC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTWV0YWwuaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzUzMTlCRDI3QkRDNkNCMDBDRDEyN0UgLyogQ29tbWFuZExpbmVQbGF5
Z3JvdW5kICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBD
b21tYW5kTGluZVBsYXlncm91bmQ7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCTFDNTMxOUJGMjdCREM2Q0MwMENEMTI3RSAvKiBtYWluLnN3aWZ0ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0
aCA9IG1haW4uc3dpZnQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNTMxOUNBMjdC
REQ3MDAwMENEMTI3RSAvKiBDb21tYW5kTGluZVBsYXlncm91bmQueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gQ29tbWFuZExpbmVQbGF5Z3JvdW5kLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjI1LDYgKzMxMSwxNTMgQEAKIAkJCXBhdGggPSBDb21tYW5kTGluZVBsYXln
cm91bmQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkxQzUzMTlDQjI3QkRE
RDZFMDBDRDEyN0UgLyogbWV0YWwtY3BwICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEwNDI3QkRERDZFMDBDRDEyN0UgLyogRm91bmRhdGlvbiAq
LywKKwkJCQkxQzUzMTlDQzI3QkRERDZFMDBDRDEyN0UgLyogTWV0YWwgKi8sCisJCQkJMUM1MzFB
MUIyN0JEREQ2RTAwQ0QxMjdFIC8qIFF1YXJ0ekNvcmUgKi8sCisJCQkJMUM1MzFBMjEyN0JEREQ2
RTAwQ0QxMjdFIC8qIFNpbmdsZUhlYWRlciAqLywKKwkJCQkxQzUzMUEyMDI3QkRERDZFMDBDRDEy
N0UgLyogTElDRU5TRS50eHQgKi8sCisJCQkJMUM1MzFBMUEyN0JEREQ2RTAwQ0QxMjdFIC8qIFJF
QURNRS5tZCAqLywKKwkJCSk7CisJCQlwYXRoID0gIm1ldGFsLWNwcCI7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQkxQzUzMTlDQzI3QkRERDZFMDBDRDEyN0UgLyogTWV0YWwg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTMxOURC
MjdCRERENkUwMENEMTI3RSAvKiBNZXRhbC5ocHAgKi8sCisJCQkJMUM1MzE5RTkyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAgKi8sCisJCQkJMUM1MzE5Rjky
N0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVy
LmhwcCAqLywKKwkJCQkxQzUzMTlERDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQWNjZWxlcmF0aW9u
U3RydWN0dXJlVHlwZXMuaHBwICovLAorCQkJCTFDNTMxOUVCMjdCRERENkUwMENEMTI3RSAvKiBN
VExBcmd1bWVudC5ocHAgKi8sCisJCQkJMUM1MzE5RTQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFy
Z3VtZW50RW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5RkMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TEJpbmFyeUFyY2hpdmUuaHBwICovLAorCQkJCTFDNTMxOUQ4MjdCRERENkUwMENEMTI3RSAvKiBN
VExCbGl0Q29tbWFuZEVuY29kZXIuaHBwICovLAorCQkJCTFDNTMxOUZBMjdCRERENkUwMENEMTI3
RSAvKiBNVExCbGl0UGFzcy5ocHAgKi8sCisJCQkJMUM1MzE5RUQyN0JEREQ2RTAwQ0QxMjdFIC8q
IE1UTEJ1ZmZlci5ocHAgKi8sCisJCQkJMUM1MzE5RDkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENh
cHR1cmVNYW5hZ2VyLmhwcCAqLywKKwkJCQkxQzUzMTlGRDI3QkRERDZFMDBDRDEyN0UgLyogTVRM
Q2FwdHVyZVNjb3BlLmhwcCAqLywKKwkJCQkxQzUzMUEwMzI3QkRERDZFMDBDRDEyN0UgLyogTVRM
Q29tbWFuZEJ1ZmZlci5ocHAgKi8sCisJCQkJMUM1MzE5REEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TENvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlGNzI3QkRERDZFMDBDRDEyN0UgLyog
TVRMQ29tbWFuZFF1ZXVlLmhwcCAqLywKKwkJCQkxQzUzMTlGRTI3QkRERDZFMDBDRDEyN0UgLyog
TVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlENDI3QkRERDZFMDBD
RDEyN0UgLyogTVRMQ29tcHV0ZVBhc3MuaHBwICovLAorCQkJCTFDNTMxOUQwMjdCRERENkUwMENE
MTI3RSAvKiBNVExDb21wdXRlUGlwZWxpbmUuaHBwICovLAorCQkJCTFDNTMxQTAwMjdCRERENkUw
MENEMTI3RSAvKiBNVExDb3VudGVycy5ocHAgKi8sCisJCQkJMUM1MzFBMDEyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1UTERlZmluZXMuaHBwICovLAorCQkJCTFDNTMxOUUzMjdCRERENkUwMENEMTI3RSAv
KiBNVExEZXB0aFN0ZW5jaWwuaHBwICovLAorCQkJCTFDNTMxOUVBMjdCRERENkUwMENEMTI3RSAv
KiBNVExEZXZpY2UuaHBwICovLAorCQkJCTFDNTMxOUQyMjdCRERENkUwMENEMTI3RSAvKiBNVExE
cmF3YWJsZS5ocHAgKi8sCisJCQkJMUM1MzE5RDMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTER5bmFt
aWNMaWJyYXJ5LmhwcCAqLywKKwkJCQkxQzUzMTlGQjI3QkRERDZFMDBDRDEyN0UgLyogTVRMRXZl
bnQuaHBwICovLAorCQkJCTFDNTMxOUY0MjdCRERENkUwMENEMTI3RSAvKiBNVExGZW5jZS5ocHAg
Ki8sCisJCQkJMUM1MzE5RDUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uQ29uc3RhbnRW
YWx1ZXMuaHBwICovLAorCQkJCTFDNTMxOUY4MjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5jdGlv
bkRlc2NyaXB0b3IuaHBwICovLAorCQkJCTFDNTMxOUQxMjdCRERENkUwMENEMTI3RSAvKiBNVExG
dW5jdGlvbkhhbmRsZS5ocHAgKi8sCisJCQkJMUM1MzE5RUMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TEZ1bmN0aW9uTG9nLmhwcCAqLywKKwkJCQkxQzUzMTlGMTI3QkRERDZFMDBDRDEyN0UgLyogTVRM
RnVuY3Rpb25TdGl0Y2hpbmcuaHBwICovLAorCQkJCTFDNTMxOUZGMjdCRERENkUwMENEMTI3RSAv
KiBNVExIZWFkZXJCcmlkZ2UuaHBwICovLAorCQkJCTFDNTMxOUVGMjdCRERENkUwMENEMTI3RSAv
KiBNVExIZWFwLmhwcCAqLywKKwkJCQkxQzUzMTlGNTI3QkRERDZFMDBDRDEyN0UgLyogTVRMSW5k
aXJlY3RDb21tYW5kQnVmZmVyLmhwcCAqLywKKwkJCQkxQzUzMTlDRjI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5RTUyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwICovLAorCQkJCTFD
NTMxOUYyMjdCRERENkUwMENEMTI3RSAvKiBNVExMaWJyYXJ5LmhwcCAqLywKKwkJCQkxQzUzMTlF
MDI3QkRERDZFMDBDRDEyN0UgLyogTVRMTGlua2VkRnVuY3Rpb25zLmhwcCAqLywKKwkJCQkxQzUz
MTlERTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlci5o
cHAgKi8sCisJCQkJMUM1MzE5RDYyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFBpcGVsaW5lLmhwcCAq
LywKKwkJCQkxQzUzMTlGMzI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGl4ZWxGb3JtYXQuaHBwICov
LAorCQkJCTFDNTMxOUU3MjdCRERENkUwMENEMTI3RSAvKiBNVExQcml2YXRlLmhwcCAqLywKKwkJ
CQkxQzUzMTlERjI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwICov
LAorCQkJCTFDNTMxOUQ3MjdCRERENkUwMENEMTI3RSAvKiBNVExSZW5kZXJDb21tYW5kRW5jb2Rl
ci5ocHAgKi8sCisJCQkJMUM1MzE5RUUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlbmRlclBhc3Mu
aHBwICovLAorCQkJCTFDNTMxOUY2MjdCRERENkUwMENEMTI3RSAvKiBNVExSZW5kZXJQaXBlbGlu
ZS5ocHAgKi8sCisJCQkJMUM1MzE5RTgyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlc291cmNlLmhw
cCAqLywKKwkJCQkxQzUzMTlDRTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2VTdGF0ZUNv
bW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMUEwMjI3QkRERDZFMDBDRDEyN0UgLyogTVRM
UmVzb3VyY2VTdGF0ZVBhc3MuaHBwICovLAorCQkJCTFDNTMxOUUyMjdCRERENkUwMENEMTI3RSAv
KiBNVExTYW1wbGVyLmhwcCAqLywKKwkJCQkxQzUzMTlEQzI3QkRERDZFMDBDRDEyN0UgLyogTVRM
U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwICovLAorCQkJCTFDNTMxOUUxMjdCRERENkUw
MENEMTI3RSAvKiBNVExUZXh0dXJlLmhwcCAqLywKKwkJCQkxQzUzMTlDRDI3QkRERDZFMDBDRDEy
N0UgLyogTVRMVHlwZXMuaHBwICovLAorCQkJCTFDNTMxOUYwMjdCRERENkUwMENEMTI3RSAvKiBN
VExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCAqLywKKwkJCQkxQzUzMTlFNjI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwICovLAorCQkJKTsKKwkJCXBhdGggPSBNZXRh
bDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDNTMxQTA0MjdCRERENkUw
MENEMTI3RSAvKiBGb3VuZGF0aW9uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQkxQzUzMUExNDI3QkRERDZFMDBDRDEyN0UgLyogRm91bmRhdGlvbi5ocHAg
Ki8sCisJCQkJMUM1MzFBMTkyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TQXJyYXkuaHBwICovLAorCQkJ
CTFDNTMxQTBGMjdCRERENkUwMENEMTI3RSAvKiBOU0F1dG9yZWxlYXNlUG9vbC5ocHAgKi8sCisJ
CQkJMUM1MzFBMTcyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TQnVuZGxlLmhwcCAqLywKKwkJCQkxQzUz
MUExMjI3QkRERDZFMDBDRDEyN0UgLyogTlNEYXRhLmhwcCAqLywKKwkJCQkxQzUzMUExNTI3QkRE
RDZFMDBDRDEyN0UgLyogTlNEYXRlLmhwcCAqLywKKwkJCQkxQzUzMUExNjI3QkRERDZFMDBDRDEy
N0UgLyogTlNEZWZpbmVzLmhwcCAqLywKKwkJCQkxQzUzMUEwNjI3QkRERDZFMDBDRDEyN0UgLyog
TlNEaWN0aW9uYXJ5LmhwcCAqLywKKwkJCQkxQzUzMUExODI3QkRERDZFMDBDRDEyN0UgLyogTlNF
bnVtZXJhdG9yLmhwcCAqLywKKwkJCQkxQzUzMUEwOTI3QkRERDZFMDBDRDEyN0UgLyogTlNFcnJv
ci5ocHAgKi8sCisJCQkJMUM1MzFBMDcyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TTG9jay5ocHAgKi8s
CisJCQkJMUM1MzFBMEMyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TTm90aWZpY2F0aW9uLmhwcCAqLywK
KwkJCQkxQzUzMUExMzI3QkRERDZFMDBDRDEyN0UgLyogTlNOdW1iZXIuaHBwICovLAorCQkJCTFD
NTMxQTBBMjdCRERENkUwMENEMTI3RSAvKiBOU09iakNSdW50aW1lLmhwcCAqLywKKwkJCQkxQzUz
MUEwQjI3QkRERDZFMDBDRDEyN0UgLyogTlNPYmplY3QuaHBwICovLAorCQkJCTFDNTMxQTBEMjdC
RERENkUwMENEMTI3RSAvKiBOU1ByaXZhdGUuaHBwICovLAorCQkJCTFDNTMxQTA4MjdCRERENkUw
MENEMTI3RSAvKiBOU1Byb2Nlc3NJbmZvLmhwcCAqLywKKwkJCQkxQzUzMUExMDI3QkRERDZFMDBD
RDEyN0UgLyogTlNSYW5nZS5ocHAgKi8sCisJCQkJMUM1MzFBMDUyN0JEREQ2RTAwQ0QxMjdFIC8q
IE5TU3RyaW5nLmhwcCAqLywKKwkJCQkxQzUzMUExMTI3QkRERDZFMDBDRDEyN0UgLyogTlNUeXBl
cy5ocHAgKi8sCisJCQkJMUM1MzFBMEUyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TVVJMLmhwcCAqLywK
KwkJCSk7CisJCQlwYXRoID0gRm91bmRhdGlvbjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCTFDNTMxQTFCMjdCRERENkUwMENEMTI3RSAvKiBRdWFydHpDb3JlICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUExRjI3QkRERDZF
MDBDRDEyN0UgLyogQ0FEZWZpbmVzLmhwcCAqLywKKwkJCQkxQzUzMUExRTI3QkRERDZFMDBDRDEy
N0UgLyogQ0FNZXRhbERyYXdhYmxlLmhwcCAqLywKKwkJCQkxQzUzMUExRDI3QkRERDZFMDBDRDEy
N0UgLyogQ0FQcml2YXRlLmhwcCAqLywKKwkJCQkxQzUzMUExQzI3QkRERDZFMDBDRDEyN0UgLyog
UXVhcnR6Q29yZS5ocHAgKi8sCisJCQkpOworCQkJcGF0aCA9IFF1YXJ0ekNvcmU7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzUzMUEyMTI3QkRERDZFMDBDRDEyN0UgLyog
U2luZ2xlSGVhZGVyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkxQzUzMUEyMjI3QkRERDZFMDBDRDEyN0UgLyogTWFrZVNpbmdsZUhlYWRlci5weSAqLywK
KwkJCSk7CisJCQlwYXRoID0gU2luZ2xlSGVhZGVyOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKKwkJMUM1MzFBMjYyN0JEREZFMTAwQ0QxMjdFIC8qIERlcml2ZWRTb3VyY2VzICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEyODI3
QkRFMDMzMDBDRDEyN0UgLyogbWV0YWwtY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBEZXJpdmVk
U291cmNlczsKKwkJCXBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJHUFU7CisJCQlzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOworCQl9OworCQkxQzUzMUEyODI3QkRFMDMzMDBDRDEyN0Ug
LyogbWV0YWwtY3BwICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkxQzUzMUEyOTI3QkRFMDQ5MDBDRDEyN0UgLyogTWV0YWwgKi8sCisJCQkpOworCQkJcGF0
aCA9ICJtZXRhbC1jcHAiOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUM1
MzFBMjkyN0JERTA0OTAwQ0QxMjdFIC8qIE1ldGFsICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEyQTI3QkRFMDY3MDBDRDEyN0UgLyogTWV0YWwu
aHBwICovLAorCQkJKTsKKwkJCXBhdGggPSBNZXRhbDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CiAJCTFDRUJEN0Q5MjcxNkFGQkEwMEE1MjU0RCA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNTMsNiArNDg2LDggQEAKIAkJMUNFQkQ3RTUyNzE2
QUZCQTAwQTUyNTREIC8qIFdlYkdQVSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMUM1MzFBMjYyN0JEREZFMTAwQ0QxMjdFIC8qIERlcml2ZWRTb3VyY2Vz
ICovLAorCQkJCTFDNTMxOUNCMjdCRERENkUwMENEMTI3RSAvKiBtZXRhbC1jcHAgKi8sCiAJCQkJ
MUM1QUNBQjIyNzNBNDI2RDAwOTVGOEQ1IC8qIEFkYXB0ZXIuaCAqLywKIAkJCQkxQzVBQ0FBOTI3
M0E0MjZEMDA5NUY4RDUgLyogQWRhcHRlci5tbSAqLywKIAkJCQkxQzVBQ0FENTI3M0E0RDcwMDA5
NUY4RDUgLyogQmluZEdyb3VwLmggKi8sCkBAIC0yNzUsNiArNTEwLDcgQEAKIAkJCQkxQ0VCRDgw
QjI3MTZDMzc5MDBBNTI1NEQgLyogRXhwb3J0TWFjcm9zLmggKi8sCiAJCQkJMUM1QUNBQTAyNzNB
NDI2RDAwOTVGOEQ1IC8qIEluc3RhbmNlLmggKi8sCiAJCQkJMUM1QUNBOTIyNzNBNDFDMjAwOTVG
OEQ1IC8qIEluc3RhbmNlLm1tICovLAorCQkJCTFDNTMxQTI0MjdCRERGNTUwMENEMTI3RSAvKiBN
ZXRhbC5jcHAgKi8sCiAJCQkJMUM1QUNBREEyNzNBNEU3MTAwOTVGOEQ1IC8qIFBpcGVsaW5lTGF5
b3V0LmggKi8sCiAJCQkJMUM1QUNBRTQyNzNBNTVERDAwOTVGOEQ1IC8qIFBpcGVsaW5lTGF5b3V0
Lm1tICovLAogCQkJCTFDNUFDQUFDMjczQTQyNkQwMDk1RjhENSAvKiBRdWVyeVNldC5oICovLApA
QCAtNDIwLDYgKzY1Niw3IEBACiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMUNFQkQ3RUEyNzE2QUZCQTAwQTUyNTREIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJHUFUiICovOwogCQkJYnVpbGRQ
aGFzZXMgPSAoCisJCQkJMUM1MzFBMjMyN0JERERCNTAwQ0QxMjdFIC8qIFNoZWxsU2NyaXB0ICov
LAogCQkJCTFDRUJEN0RFMjcxNkFGQkEwMEE1MjU0RCAvKiBIZWFkZXJzICovLAogCQkJCTFDRUJE
N0RGMjcxNkFGQkEwMEE1MjU0RCAvKiBTb3VyY2VzICovLAogCQkJCTFDRUJEN0UwMjcxNkFGQkEw
MEE1MjU0RCAvKiBGcmFtZXdvcmtzICovLApAQCAtNTE3LDYgKzc1NCwxMDUgQEAKIC8qIEVuZCBQ
QlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxTY3Jp
cHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMUM1MzFBMjMyN0JERERCNTAwQ0QxMjdFIC8qIFNo
ZWxsU2NyaXB0ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlu
cHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNS
Q1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHki
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9Gb3VuZGF0aW9u
LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXJy
YXkuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNB
dXRvcmVsZWFzZVBvb2wuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNCdW5kbGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3Bw
L0ZvdW5kYXRpb24vTlNEYXRhLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TRGF0ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU0RlZmluZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNEaWN0aW9uYXJ5LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRW51bWVyYXRvci5ocHAiLAorCQkJCSIkKFNSQ1JP
T1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vycm9yLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTG9jay5ocHAiLAorCQkJCSIkKFNS
Q1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAiLAor
CQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU051bWJlci5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iakNSdW50
aW1lLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
T2JqZWN0LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TUHJpdmF0ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU1Byb2Nlc3NJbmZvLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TUmFuZ2UuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNTdHJpbmcuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNUeXBlcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU1VSTC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21t
YW5kRW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNS
T09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJpbmFyeUFyY2hpdmUuaHBwIiwKKwkJCQki
JChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRDb21tYW5kRW5jb2Rlci5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdFBhc3Mu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJ1ZmZlci5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1h
bmFnZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENh
cHR1cmVTY29wZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ29tbWFuZEJ1ZmZlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMQ29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTENvbW1hbmRRdWV1ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQo
U1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGFzcy5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb3VudGVycy5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVmaW5lcy5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVwdGhTdGVu
Y2lsLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXZp
Y2UuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERyYXdh
YmxlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEeW5h
bWljTGlicmFyeS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMRXZlbnQuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TEZlbmNlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExG
dW5jdGlvbkNvbnN0YW50VmFsdWVzLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwIiwKKwkJCQkiJChTUkNST09UKS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uSGFuZGxlLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAiLAorCQkJCSIk
KFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBw
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEhlYWRlckJyaWRn
ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RD
b21tYW5kQnVmZmVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExJbmRpcmVjdENvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaWJyYXJ5LmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaW5rZWRGdW5jdGlvbnMuaHBw
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBhcmFsbGVsUmVu
ZGVyQ29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFBpcGVsaW5lLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExQaXhlbEZvcm1hdC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMUHJpdmF0ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQYXNzLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQaXBlbGluZS5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2Uu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNl
U3RhdGVDb21tYW5kRW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFNhbXBsZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUZXh0dXJlLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUeXBlcy5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmVydGV4RGVzY3JpcHRvci5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmlzaWJsZUZ1
bmN0aW9uVGFibGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01ldGFsLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3Jl
L0NBRGVmaW5lcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6
Q29yZS9DQU1ldGFsRHJhd2FibGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwt
Y3BwL1F1YXJ0ekNvcmUvQ0FQcml2YXRlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9RdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwIiwKKwkJCSk7CisJCQlvdXRwdXRGaWxl
TGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC5ocHAiLAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hl
bGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wICR7QlVJTFRfUFJP
RFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJHUFUvbWV0YWwtY3BwL01ldGFsXG5cbmNkIFdl
YkdQVS9tZXRhbC1jcHBcbi4vU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkgLW8gJHtC
VUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TWV0YWwuaHBwIEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAgUXVhcnR6Q29yZS9RdWFydHpDb3Jl
LmhwcCBNZXRhbC9NZXRhbC5ocHBcbiI7CisJCX07CiAJCTY1NzdGRkM4Mjc2QUNBMDYwMDExQUVD
OCAvKiBDcmVhdGUgU3ltbGluayB0byBBbHQgUm9vdCBQYXRoICovID0gewogCQkJaXNhID0gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gODsKQEAgLTU2OSw2
ICs5MDUsNyBAQAogCQkJCTFDNUFDQUMwMjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGlwZWxp
bmUubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0FDMTI3M0E0MjZEMDA5NUY4RDUgLyogRGV2
aWNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1QUNBOTQyNzNBNDFDMjAwOTVGOEQ1IC8qIElu
c3RhbmNlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1MzFBMjUyN0JEREY1NTAwQ0QxMjdFIC8q
IE1ldGFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUU1MjczQTU1REQwMDk1RjhENSAv
KiBQaXBlbGluZUxheW91dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUJEMjczQTQyNkQw
MDk1RjhENSAvKiBRdWVyeVNldC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUNCMjczQTQy
NkUwMDk1RjhENSAvKiBRdWV1ZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvTWV0YWwuY3BwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvTWV0YWwuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ0ZmI2NGUxM2EyOWYzMmY4ZmEzZDUxYmJhZGQ5ZTk1ZWYzZGM0MGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9NZXRhbC5jcHAKQEAgLTAsMCAr
MSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNk
ZWZpbmUgTlNfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorI2RlZmluZSBDQV9QUklWQVRFX0lNUExF
TUVOVEFUSU9OCisjZGVmaW5lIE1UTF9QUklWQVRFX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSA8
TWV0YWwvTWV0YWwuaHBwPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvY29uZmln
LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaAppbmRleCA4YzEyN2E5NDM0MGE3ZDdh
YzAyOTliYmY0MjdhMTI3NmU1MTU2NzNiLi40NjVmMWY1M2FlNDc4ODlkZTA4NmM5MDZjNDYwMGJm
ZjI1MWRjOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaApAQCAtMjUsOCArMjUsMjEgQEAKIAogI2lu
Y2x1ZGUgIkV4cG9ydE1hY3Jvcy5oIgogCituYW1lc3BhY2UgTVRMIHsKK2NsYXNzIEZ1bmN0aW9u
OworfQorCituYW1lc3BhY2UgTlMgeworY2xhc3MgU3RyaW5nOworY2xhc3MgVVJMOworfQorCisj
aW5jbHVkZSA8TWV0YWwvTWV0YWwuaHBwPgorCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
IAogI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CiAKICNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDA4MjUyZTliMTY2NGQ5YmQ4NjEyMTQ0ZTViYjBjNGFlNjZlMjg1NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaHBwCkBAIC0wLDAgKzEsNDUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNBcnJheS5o
cHAiCisjaW5jbHVkZSAiTlNBdXRvcmVsZWFzZVBvb2wuaHBwIgorI2luY2x1ZGUgIk5TQnVuZGxl
LmhwcCIKKyNpbmNsdWRlICJOU0RhdGEuaHBwIgorI2luY2x1ZGUgIk5TRGF0ZS5ocHAiCisjaW5j
bHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU0RpY3Rpb25hcnkuaHBwIgorI2luY2x1
ZGUgIk5TRW51bWVyYXRvci5ocHAiCisjaW5jbHVkZSAiTlNFcnJvci5ocHAiCisjaW5jbHVkZSAi
TlNMb2NrLmhwcCIKKyNpbmNsdWRlICJOU05vdGlmaWNhdGlvbi5ocHAiCisjaW5jbHVkZSAiTlNO
dW1iZXIuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUu
aHBwIgorI2luY2x1ZGUgIk5TUHJvY2Vzc0luZm8uaHBwIgorI2luY2x1ZGUgIk5TUmFuZ2UuaHBw
IgorI2luY2x1ZGUgIk5TU3RyaW5nLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKyNpbmNs
dWRlICJOU1VSTC5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNBcnJheS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU0FycmF5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzMwZGY5OTQ5NjdhZjIzZjI4ZDVjNzQ1ZmRh
NGNhZDk3MjA0MGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNBcnJheS5ocHAKQEAgLTAsMCArMSwxMTUgQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24v
TlNBcnJheS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
aW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7
CitjbGFzcyBBcnJheSA6IHB1YmxpYyBDb3B5aW5nPEFycmF5PgoreworcHVibGljOgorICAgIHN0
YXRpYyBBcnJheSogYXJyYXkoKTsKKyAgICBzdGF0aWMgQXJyYXkqIGFycmF5KGNvbnN0IE9iamVj
dCogcE9iamVjdCk7CisgICAgc3RhdGljIEFycmF5KiBhcnJheShjb25zdCBPYmplY3QqIGNvbnN0
KiBwT2JqZWN0cywgVUludGVnZXIgY291bnQpOworCisgICAgc3RhdGljIEFycmF5KiBhbGxvYygp
OworCisgICAgQXJyYXkqICAgICAgICBpbml0KCk7CisgICAgQXJyYXkqICAgICAgICBpbml0KGNv
bnN0IE9iamVjdCogY29uc3QqIHBPYmplY3RzLCBVSW50ZWdlciBjb3VudCk7CisgICAgQXJyYXkq
ICAgICAgICBpbml0KGNvbnN0IGNsYXNzIENvZGVyKiBwQ29kZXIpOworCisgICAgdGVtcGxhdGUg
PGNsYXNzIF9PYmplY3QgPSBPYmplY3Q+CisgICAgX09iamVjdCogb2JqZWN0KFVJbnRlZ2VyIGlu
ZGV4KSBjb25zdDsKKyAgICBVSW50ZWdlciBjb3VudCgpIGNvbnN0OworfTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OkFycmF5KiBOUzo6QXJyYXk6OmFycmF5KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxBcnJheSo+KF9OU19QUklWQVRFX0NMUyhOU0FycmF5KSwgX05TX1BSSVZBVEVfU0VMKGFy
cmF5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5OjphcnJheShjb25zdCBPYmplY3Qq
IHBPYmplY3QpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPihfTlNf
UFJJVkFURV9DTFMoTlNBcnJheSksIF9OU19QUklWQVRFX1NFTChhcnJheVdpdGhPYmplY3RfKSwg
cE9iamVjdCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5OjphcnJheShjb25zdCBPYmpl
Y3QqIGNvbnN0KiBwT2JqZWN0cywgVUludGVnZXIgY291bnQpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8QXJyYXkqPihfTlNfUFJJVkFURV9DTFMoTlNBcnJheSksIF9OU19QUklW
QVRFX1NFTChhcnJheVdpdGhPYmplY3RzX2NvdW50XyksIHBPYmplY3RzLCBjb3VudCk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpBcnJheSogTlM6OkFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPEFycmF5PihfTlNfUFJJVkFURV9DTFMoTlNBcnJheSkpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
QXJyYXkqIE5TOjpBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8
QXJyYXk+KCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5Ojppbml0KGNvbnN0IE9iamVj
dCogY29uc3QqIHBPYmplY3RzLCBVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aE9iamVj
dHNfY291bnRfKSwgcE9iamVjdHMsIGNvdW50KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBOUzo6QXJy
YXk6OmluaXQoY29uc3QgY2xhc3MgQ29kZXIqIHBDb2RlcikKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aENvZGVy
XyksIHBDb2Rlcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6QXJyYXk6OmNvdW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdD4KK19OU19JTkxJTkUg
X09iamVjdCogTlM6OkFycmF5OjpvYmplY3QoVUludGVnZXIgaW5kZXgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8X09iamVjdCo+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChvYmplY3RBdEluZGV4XyksIGluZGV4KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHAgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTIzODNhNTVmZTA2MmJlMjVhYzg1MDhmZGQ2YjQ5NWUzMmI4ZGY4YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXV0
b3JlbGVhc2VQb29sLmhwcApAQCAtMCwwICsxLDgzIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TQXV0b3JlbGVhc2VQ
b29sLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UK
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNs
dWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJO
U1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitjbGFzcyBB
dXRvcmVsZWFzZVBvb2wgOiBwdWJsaWMgT2JqZWN0Cit7CitwdWJsaWM6CisgICAgc3RhdGljIEF1
dG9yZWxlYXNlUG9vbCogYWxsb2MoKTsKKyAgICBBdXRvcmVsZWFzZVBvb2wqICAgICAgICBpbml0
KCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBkcmFpbigpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgYWRkT2JqZWN0KE9iamVjdCogcE9iamVjdCk7CisKKyAgICBzdGF0
aWMgdm9pZCAgICAgICAgICAgICBzaG93UG9vbHMoKTsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBdXRvcmVs
ZWFzZVBvb2wqIE5TOjpBdXRvcmVsZWFzZVBvb2w6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8QXV0b3JlbGVhc2VQb29sPihfTlNfUFJJVkFURV9DTFMoTlNBdXRvcmVs
ZWFzZVBvb2wpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkF1dG9yZWxlYXNlUG9vbCogTlM6OkF1dG9yZWxlYXNl
UG9vbDo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8QXV0b3JlbGVhc2VQ
b29sPigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSB2b2lkIE5TOjpBdXRvcmVsZWFzZVBvb2w6OmRyYWluKCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkcmFpbikp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSB2b2lkIE5TOjpBdXRvcmVsZWFzZVBvb2w6OmFkZE9iamVjdChPYmplY3QqIHBP
YmplY3QpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwoYWRkT2JqZWN0XyksIHBPYmplY3QpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpBdXRvcmVsZWFz
ZVBvb2w6OnNob3dQb29scygpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPihfTlNf
UFJJVkFURV9DTFMoTlNBdXRvcmVsZWFzZVBvb2wpLCBfTlNfUFJJVkFURV9TRUwoc2hvd1Bvb2xz
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNC
dW5kbGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNC
dW5kbGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlOGM1Mzk1YmIwMTE2YmYyMTE5MGNlMTczZjAxMDY4OGVk
ZTkyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
Rm91bmRhdGlvbi9OU0J1bmRsZS5ocHAKQEAgLTAsMCArMSwzNzQgQEAKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNCdW5k
bGUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1
ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNOb3RpZmljYXRpb24uaHBwIgorI2luY2x1
ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworX05T
X0NPTlNUKE5vdGlmaWNhdGlvbk5hbWUsIEJ1bmRsZURpZExvYWROb3RpZmljYXRpb24pOworX05T
X0NPTlNUKE5vdGlmaWNhdGlvbk5hbWUsIEJ1bmRsZVJlc291cmNlUmVxdWVzdExvd0Rpc2tTcGFj
ZU5vdGlmaWNhdGlvbik7CisKK2NsYXNzIFN0cmluZyogTG9jYWxpemVkU3RyaW5nKGNvbnN0IFN0
cmluZyogcEtleSwgY29uc3QgU3RyaW5nKik7CitjbGFzcyBTdHJpbmcqIExvY2FsaXplZFN0cmlu
Z0Zyb21UYWJsZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwgY29uc3Qg
U3RyaW5nKik7CitjbGFzcyBTdHJpbmcqIExvY2FsaXplZFN0cmluZ0Zyb21UYWJsZUluQnVuZGxl
KGNvbnN0IFN0cmluZyogcEtleSwgY29uc3QgU3RyaW5nKiBwVGJsLCBjb25zdCBjbGFzcyBCdW5k
bGUqIHBCZGxlLCBjb25zdCBTdHJpbmcqKTsKK2NsYXNzIFN0cmluZyogTG9jYWxpemVkU3RyaW5n
V2l0aERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwg
Y29uc3QgY2xhc3MgQnVuZGxlKiBwQmRsZSwgY29uc3QgU3RyaW5nKiBwVmFsLCBjb25zdCBTdHJp
bmcqKTsKKworY2xhc3MgQnVuZGxlIDogcHVibGljIFJlZmVyZW5jaW5nPEJ1bmRsZT4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgQnVuZGxlKiAgICBtYWluQnVuZGxlKCk7CisKKyAgICBzdGF0aWMg
QnVuZGxlKiAgICBidW5kbGUoY29uc3QgY2xhc3MgU3RyaW5nKiBwUGF0aCk7CisgICAgc3RhdGlj
IEJ1bmRsZSogICAgYnVuZGxlKGNvbnN0IGNsYXNzIFVSTCogcFVSTCk7CisKKyAgICBzdGF0aWMg
QnVuZGxlKiAgICBhbGxvYygpOworCisgICAgQnVuZGxlKiAgICAgICAgICAgaW5pdChjb25zdCBj
bGFzcyBTdHJpbmcqIHBQYXRoKTsKKyAgICBCdW5kbGUqICAgICAgICAgICBpbml0KGNvbnN0IGNs
YXNzIFVSTCogcFVSTCk7CisKKyAgICBjbGFzcyBBcnJheSogICAgICBhbGxCdW5kbGVzKCkgY29u
c3Q7CisgICAgY2xhc3MgQXJyYXkqICAgICAgYWxsRnJhbWV3b3JrcygpIGNvbnN0OworCisgICAg
Ym9vbCAgICAgICAgICAgICAgbG9hZCgpOworICAgIGJvb2wgICAgICAgICAgICAgIHVubG9hZCgp
OworCisgICAgYm9vbCAgICAgICAgICAgICAgaXNMb2FkZWQoKSBjb25zdDsKKworICAgIGJvb2wg
ICAgICAgICAgICAgIHByZWZsaWdodEFuZFJldHVybkVycm9yKGNsYXNzIEVycm9yKiogcEVycm9y
KSBjb25zdDsKKyAgICBib29sICAgICAgICAgICAgICBsb2FkQW5kUmV0dXJuRXJyb3IoY2xhc3Mg
RXJyb3IqKiBwRXJyb3IpOworCisgICAgY2xhc3MgVVJMKiAgICAgICAgYnVuZGxlVVJMKCkgY29u
c3Q7CisgICAgY2xhc3MgVVJMKiAgICAgICAgcmVzb3VyY2VVUkwoKSBjb25zdDsKKyAgICBjbGFz
cyBVUkwqICAgICAgICBleGVjdXRhYmxlVVJMKCkgY29uc3Q7CisgICAgY2xhc3MgVVJMKiAgICAg
ICAgVVJMRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZShjb25zdCBjbGFzcyBTdHJpbmcqIHBFeGVjdXRh
YmxlTmFtZSkgY29uc3Q7CisKKyAgICBjbGFzcyBVUkwqICAgICAgICBwcml2YXRlRnJhbWV3b3Jr
c1VSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAgICAgIHNoYXJlZEZyYW1ld29ya3NVUkwo
KSBjb25zdDsKKyAgICBjbGFzcyBVUkwqICAgICAgICBzaGFyZWRTdXBwb3J0VVJMKCkgY29uc3Q7
CisgICAgY2xhc3MgVVJMKiAgICAgICAgYnVpbHRJblBsdWdJbnNVUkwoKSBjb25zdDsKKyAgICBj
bGFzcyBVUkwqICAgICAgICBhcHBTdG9yZVJlY2VpcHRVUkwoKSBjb25zdDsKKworICAgIGNsYXNz
IFN0cmluZyogICAgIGJ1bmRsZVBhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICBy
ZXNvdXJjZVBhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICBleGVjdXRhYmxlUGF0
aCgpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRh
YmxlKGNvbnN0IGNsYXNzIFN0cmluZyogcEV4ZWN1dGFibGVOYW1lKSBjb25zdDsKKworICAgIGNs
YXNzIFN0cmluZyogICAgIHByaXZhdGVGcmFtZXdvcmtzUGF0aCgpIGNvbnN0OworICAgIGNsYXNz
IFN0cmluZyogICAgIHNoYXJlZEZyYW1ld29ya3NQYXRoKCkgY29uc3Q7CisgICAgY2xhc3MgU3Ry
aW5nKiAgICAgc2hhcmVkU3VwcG9ydFBhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAg
ICBidWlsdEluUGx1Z0luc1BhdGgoKSBjb25zdDsKKworICAgIGNsYXNzIFN0cmluZyogICAgIGJ1
bmRsZUlkZW50aWZpZXIoKSBjb25zdDsKKyAgICBjbGFzcyBEaWN0aW9uYXJ5KiBpbmZvRGljdGlv
bmFyeSgpIGNvbnN0OworICAgIGNsYXNzIERpY3Rpb25hcnkqIGxvY2FsaXplZEluZm9EaWN0aW9u
YXJ5KCkgY29uc3Q7CisgICAgY2xhc3MgT2JqZWN0KiAgICAgb2JqZWN0Rm9ySW5mb0RpY3Rpb25h
cnlLZXkoY29uc3QgY2xhc3MgU3RyaW5nKiBwS2V5KTsKKworICAgIGNsYXNzIFN0cmluZyogICAg
IGxvY2FsaXplZFN0cmluZyhjb25zdCBjbGFzcyBTdHJpbmcqIHBLZXksIGNvbnN0IGNsYXNzIFN0
cmluZyogcFZhbHVlID0gbnVsbHB0ciwgY29uc3QgY2xhc3MgU3RyaW5nKiBwVGFibGVOYW1lID0g
bnVsbHB0cikgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpOb3RpZmljYXRpb25O
YW1lLCBCdW5kbGVEaWRMb2FkTm90aWZpY2F0aW9uKTsKK19OU19QUklWQVRFX0RFRl9DT05TVChO
Uzo6Tm90aWZpY2F0aW9uTmFtZSwgQnVuZGxlUmVzb3VyY2VSZXF1ZXN0TG93RGlza1NwYWNlTm90
aWZpY2F0aW9uKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkxvY2FsaXplZFN0cmluZyhjb25zdCBT
dHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyopCit7CisgICAgcmV0dXJuIEJ1bmRsZTo6bWFpbkJ1
bmRsZSgpLT5sb2NhbGl6ZWRTdHJpbmcocEtleSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpTdHJpbmcqIE5TOjpMb2NhbGl6ZWRTdHJpbmdGcm9tVGFibGUoY29uc3QgU3RyaW5nKiBw
S2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNvbnN0IFN0cmluZyopCit7CisgICAgcmV0dXJuIEJ1
bmRsZTo6bWFpbkJ1bmRsZSgpLT5sb2NhbGl6ZWRTdHJpbmcocEtleSwgbnVsbHB0ciwgcFRibCk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpMb2NhbGl6ZWRTdHJpbmdGcm9tVGFibGVJbkJ1bmRs
ZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwgY29uc3QgQnVuZGxlKiBw
QmRsLCBjb25zdCBTdHJpbmcqKQoreworICAgIHJldHVybiBwQmRsLT5sb2NhbGl6ZWRTdHJpbmco
cEtleSwgbnVsbHB0ciwgcFRibCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpMb2NhbGl6ZWRT
dHJpbmdXaXRoRGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyogcEtleSwgY29uc3QgU3RyaW5nKiBw
VGJsLCBjb25zdCBCdW5kbGUqIHBCZGwsIGNvbnN0IFN0cmluZyogcFZhbCwgY29uc3QgU3RyaW5n
KikKK3sKKyAgICByZXR1cm4gcEJkbC0+bG9jYWxpemVkU3RyaW5nKHBLZXksIHBWYWwsIHBUYmwp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6QnVuZGxlKiBOUzo6QnVuZGxlOjptYWluQnVuZGxlKCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5kbGUqPihfTlNfUFJJVkFURV9DTFMoTlNCdW5k
bGUpLCBfTlNfUFJJVkFURV9TRUwobWFpbkJ1bmRsZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QnVuZGxlKiBO
Uzo6QnVuZGxlOjpidW5kbGUoY29uc3QgY2xhc3MgU3RyaW5nKiBwUGF0aCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5kbGUqPihfTlNfUFJJVkFURV9DTFMoTlNCdW5kbGUp
LCBfTlNfUFJJVkFURV9TRUwoYnVuZGxlV2l0aFBhdGhfKSwgcFBhdGgpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
QnVuZGxlKiBOUzo6QnVuZGxlOjpidW5kbGUoY29uc3QgY2xhc3MgVVJMKiBwVVJMKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1bmRsZSo+KF9OU19QUklWQVRFX0NMUyhOU0J1
bmRsZSksIF9OU19QUklWQVRFX1NFTChidW5kbGVXaXRoVVJMXyksIHBVUkwpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6QnVuZGxlKiBOUzo6QnVuZGxlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8QnVuZGxlKj4oX05TX1BSSVZBVEVfQ0xTKE5TQnVuZGxlKSwgX05TX1BSSVZBVEVf
U0VMKGFsbG9jKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpCdW5kbGUqIE5TOjpCdW5kbGU6OmluaXQoY29uc3Qg
U3RyaW5nKiBwUGF0aCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5kbGUq
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhQYXRoXyksIHBQYXRoKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OkJ1bmRsZSogTlM6OkJ1bmRsZTo6aW5pdChjb25zdCBVUkwqIHBVUkwpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QnVuZGxlKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlu
aXRXaXRoVVJMXyksIHBVUkwpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpCdW5kbGU6OmFsbEJ1
bmRsZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGFsbEJ1bmRsZXMpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBO
Uzo6QnVuZGxlOjphbGxGcmFtZXdvcmtzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhbGxGcmFtZXdvcmtzKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIGJvb2wgTlM6OkJ1bmRsZTo6bG9hZCgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvYWQpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
Ym9vbCBOUzo6QnVuZGxlOjp1bmxvYWQoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bmxvYWQpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBO
Uzo6QnVuZGxlOjppc0xvYWRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzTG9hZGVkKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJv
b2wgTlM6OkJ1bmRsZTo6cHJlZmxpZ2h0QW5kUmV0dXJuRXJyb3IoRXJyb3IqKiBwRXJyb3IpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BS
SVZBVEVfU0VMKHByZWZsaWdodEFuZFJldHVybkVycm9yXyksIHBFcnJvcik7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJv
b2wgTlM6OkJ1bmRsZTo6bG9hZEFuZFJldHVybkVycm9yKEVycm9yKiogcEVycm9yKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChs
b2FkQW5kUmV0dXJuRXJyb3JfKSwgcEVycm9yKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRs
ZTo6YnVuZGxlVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxV
UkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnVuZGxlVVJMKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwq
IE5TOjpCdW5kbGU6OnJlc291cmNlVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocmVzb3VyY2VVUkwpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6ZXhlY3V0YWJsZVVSTCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGV4
ZWN1dGFibGVVUkwpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6VVJMRm9yQXV4aWxp
YXJ5RXhlY3V0YWJsZShjb25zdCBTdHJpbmcqIHBFeGVjdXRhYmxlTmFtZSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
VVJMRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8pLCBwRXhlY3V0YWJsZU5hbWUpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6VVJMKiBOUzo6QnVuZGxlOjpwcml2YXRlRnJhbWV3b3Jrc1VSTCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHBy
aXZhdGVGcmFtZXdvcmtzVVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OnNoYXJl
ZEZyYW1ld29ya3NVUkwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzaGFyZWRGcmFtZXdvcmtzVVJMKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OnNoYXJlZFN1cHBvcnRVUkwoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChz
aGFyZWRTdXBwb3J0VVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OmJ1aWx0SW5Q
bHVnSW5zVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwq
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnVpbHRJblBsdWdJbnNVUkwpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OlVSTCogTlM6OkJ1bmRsZTo6YXBwU3RvcmVSZWNlaXB0VVJMKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYXBwU3Rv
cmVSZWNlaXB0VVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OmJ1bmRsZVBh
dGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChidW5kbGVQYXRoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5T
OjpCdW5kbGU6OnJlc291cmNlUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHJlc291cmNlUGF0aCkpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpleGVjdXRhYmxlUGF0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGV4ZWN1dGFibGVQYXRoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6
OnBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlKGNvbnN0IFN0cmluZyogcEV4ZWN1dGFibGVOYW1l
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8pLCBwRXhlY3V0YWJs
ZU5hbWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpwcml2YXRlRnJhbWV3b3Jr
c1BhdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChwcml2YXRlRnJhbWV3b3Jrc1BhdGgpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6c2hhcmVkRnJhbWV3b3Jrc1BhdGgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChzaGFyZWRGcmFtZXdvcmtzUGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVu
ZGxlOjpzaGFyZWRTdXBwb3J0UGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHNoYXJlZFN1cHBvcnRQYXRo
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OmJ1aWx0SW5QbHVnSW5zUGF0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGJ1aWx0SW5QbHVnSW5zUGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5n
KiBOUzo6QnVuZGxlOjpidW5kbGVJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnVuZGxlSWRl
bnRpZmllcikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkJ1bmRsZTo6aW5mb0RpY3Rp
b25hcnkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25h
cnkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5mb0RpY3Rpb25hcnkpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OkRpY3Rpb25hcnkqIE5TOjpCdW5kbGU6OmxvY2FsaXplZEluZm9EaWN0aW9uYXJ5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGxvY2FsaXplZEluZm9EaWN0aW9uYXJ5KSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpPYmpl
Y3QqIE5TOjpCdW5kbGU6Om9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5KGNvbnN0IFN0cmluZyog
cEtleSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxPYmplY3QqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwob2JqZWN0Rm9ySW5mb0RpY3Rpb25hcnlLZXlfKSwgcEtleSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OmxvY2FsaXplZFN0cmluZyhjb25zdCBTdHJpbmcq
IHBLZXksIGNvbnN0IFN0cmluZyogcFZhbHVlIC8qID0gbnVsbHB0ciAqLywgY29uc3QgU3RyaW5n
KiBwVGFibGVOYW1lIC8qID0gbnVsbHB0ciAqLykgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkU3Ry
aW5nRm9yS2V5X3ZhbHVlX3RhYmxlXyksIHBLZXksIHBWYWx1ZSwgcFRhYmxlTmFtZSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRhLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0YS5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWM2OTllNDc0NGY4MTNkNmVmZGNkNWY2Yjc0NjczZWZlY2EwM2U3YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
RGF0YS5ocHAKQEAgLTAsMCArMSw1NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0RhdGEuaHBwCisvLworLy8gQ29w
eXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIK
KyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworY2xhc3MgRGF0YSA6IHB1YmxpYyBD
b3B5aW5nPERhdGE+Cit7CitwdWJsaWM6CisgICAgdm9pZCogICAgbXV0YWJsZUJ5dGVzKCkgY29u
c3Q7CisgICAgVUludGVnZXIgbGVuZ3RoKCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkKiBOUzo6
RGF0YTo6bXV0YWJsZUJ5dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG11dGFibGVCeXRlcykpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6VUludGVnZXIgTlM6OkRhdGE6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsZW5ndGgp
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Rh
dGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRl
LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZTZjODNhZjdjNWMzYWY3ODczMjQ1Yzk2ZTAzNzA1ODY1Yjk2NjIw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNEYXRlLmhwcApAQCAtMCwwICsxLDQwIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TRGF0ZS5ocHAKKy8v
CisvLyBTZWUgTElDRU5TRS50eHQgZm9yIHRoaXMgcHJvamVjdCBsaWNlbnNpbmcgaW5mb3JtYXRp
b24uCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBw
IgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2Ug
TlMKK3sKKwordXNpbmcgVGltZUludGVydmFsID0gZG91YmxlOworCitjbGFzcyBEYXRlIDogcHVi
bGljIENvcHlpbmc8RGF0ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgRGF0ZSogZGF0ZVdpdGhU
aW1lSW50ZXJ2YWxTaW5jZU5vdyhUaW1lSW50ZXJ2YWwgc2Vjcyk7Cit9OworCit9IC8vIE5TCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpEYXRlKiBOUzo6RGF0ZTo6ZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdyhOUzo6
VGltZUludGVydmFsIHNlY3MpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpEYXRlKj4oX05TX1BSSVZBVEVfQ0xTKE5TRGF0ZSksIF9OU19QUklWQVRFX1NFTChkYXRl
V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93XyksIHNlY3MpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9O
U0RlZmluZXMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNEZWZpbmVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yzk2OTg5Y2I1ZGE1ZmExMGM5OGEzMjljMTMzYjA3
YWU4MmRhMWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcApAQCAtMCwwICsxLDQxIEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05T
RGVmaW5lcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
ZGVmaW5lIF9OU19XRUFLX0lNUE9SVCBfX2F0dHJpYnV0ZV9fKCh3ZWFrX2ltcG9ydCkpCisjZGVm
aW5lIF9OU19FWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKQorI2Rl
ZmluZSBfTlNfRVhURVJOIGV4dGVybiAiQyIgX05TX0VYUE9SVAorI2RlZmluZSBfTlNfSU5MSU5F
IGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKKyNkZWZpbmUgX05TX1BBQ0tF
RCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQorCisjZGVmaW5lIF9OU19DT05TVCh0eXBlLCBuYW1l
KSBfTlNfRVhURVJOIHR5cGUgY29uc3QgbmFtZTsKKyNkZWZpbmUgX05TX0VOVU0odHlwZSwgbmFt
ZSkgZW51bSBuYW1lIDogdHlwZQorI2RlZmluZSBfTlNfT1BUSU9OUyh0eXBlLCBuYW1lKSBcCisg
ICAgdXNpbmcgbmFtZSA9IHR5cGU7ICAgICAgICAgIFwKKyAgICBlbnVtIDogbmFtZQorCisjZGVm
aW5lIF9OU19DQVNUX1RPX1VJTlQodmFsdWUpIHN0YXRpY19jYXN0PE5TOjpVSW50ZWdlcj4odmFs
dWUpCisjZGVmaW5lIF9OU19WQUxJREFURV9TSVpFKG5zLCBuYW1lKSBzdGF0aWNfYXNzZXJ0KHNp
emVvZihuczo6bmFtZSkgPT0gc2l6ZW9mKG5zIyNuYW1lKSwgInNpemUgbWlzbWF0Y2ggIiAjbnMg
Ijo6IiAjbmFtZSkKKyNkZWZpbmUgX05TX1ZBTElEQVRFX0VOVU0obnMsIG5hbWUpIHN0YXRpY19h
c3NlcnQoX05TX0NBU1RfVE9fVUlOVChuczo6bmFtZSkgPT0gX05TX0NBU1RfVE9fVUlOVChucyMj
bmFtZSksICJ2YWx1ZSBtaXNtYXRjaCAiICNucyAiOjoiICNuYW1lKQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGljdGlvbmFyeS5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNjYmUyYmQ4M2QzZDQxZTU1ZWJiNjk1MTYxZjkwZTEwODViNTM5NDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Rp
Y3Rpb25hcnkuaHBwCkBAIC0wLDAgKzEsMTI4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TRGljdGlvbmFyeS5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNF
bnVtZXJhdG9yLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNUeXBl
cy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIERpY3Rpb25hcnkgOiBwdWJsaWMgTlM6OkNvcHlpbmc8
RGljdGlvbmFyeT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgRGljdGlvbmFyeSogZGljdGlvbmFy
eSgpOworICAgIHN0YXRpYyBEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5KGNvbnN0IE9iamVjdCogcE9i
amVjdCwgY29uc3QgT2JqZWN0KiBwS2V5KTsKKyAgICBzdGF0aWMgRGljdGlvbmFyeSogZGljdGlv
bmFyeShjb25zdCBPYmplY3QqIGNvbnN0KiBwT2JqZWN0cywgY29uc3QgT2JqZWN0KiBjb25zdCog
cEtleXMsIFVJbnRlZ2VyIGNvdW50KTsKKworICAgIHN0YXRpYyBEaWN0aW9uYXJ5KiBhbGxvYygp
OworCisgICAgRGljdGlvbmFyeSogICAgICAgIGluaXQoKTsKKyAgICBEaWN0aW9uYXJ5KiAgICAg
ICAgaW5pdChjb25zdCBPYmplY3QqIGNvbnN0KiBwT2JqZWN0cywgY29uc3QgT2JqZWN0KiBjb25z
dCogcEtleXMsIFVJbnRlZ2VyIGNvdW50KTsKKyAgICBEaWN0aW9uYXJ5KiAgICAgICAgaW5pdChj
b25zdCBjbGFzcyBDb2RlciogcENvZGVyKTsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBfS2V5VHlw
ZSA9IE9iamVjdD4KKyAgICBFbnVtZXJhdG9yPF9LZXlUeXBlPioga2V5RW51bWVyYXRvcigpIGNv
bnN0OworCisgICAgdGVtcGxhdGUgPGNsYXNzIF9PYmplY3QgPSBPYmplY3Q+CisgICAgX09iamVj
dCogb2JqZWN0KGNvbnN0IE9iamVjdCogcEtleSkgY29uc3Q7CisgICAgVUludGVnZXIgY291bnQo
KSBjb25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6ZGlj
dGlvbmFyeSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+
KF9OU19QUklWQVRFX0NMUyhOU0RpY3Rpb25hcnkpLCBfTlNfUFJJVkFURV9TRUwoZGljdGlvbmFy
eSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6OmRpY3Rpb25hcnko
Y29uc3QgT2JqZWN0KiBwT2JqZWN0LCBjb25zdCBPYmplY3QqIHBLZXkpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KF9OU19QUklWQVRFX0NMUyhOU0RpY3Rp
b25hcnkpLCBfTlNfUFJJVkFURV9TRUwoZGljdGlvbmFyeVdpdGhPYmplY3RfZm9yS2V5XyksIHBP
YmplY3QsIHBLZXkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6OmRp
Y3Rpb25hcnkoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMsIGNvbnN0IE9iamVjdCogY29u
c3QqIHBLZXlzLCBVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxEaWN0aW9uYXJ5Kj4oX05TX1BSSVZBVEVfQ0xTKE5TRGljdGlvbmFyeSksIF9OU19QUklW
QVRFX1NFTChkaWN0aW9uYXJ5V2l0aE9iamVjdHNfZm9yS2V5c19jb3VudF8pLAorICAgICAgICBw
T2JqZWN0cywgcEtleXMsIGNvdW50KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE5TOjpEaWN0
aW9uYXJ5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPERpY3Rpb25h
cnk+KF9OU19QUklWQVRFX0NMUyhOU0RpY3Rpb25hcnkpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25h
cnkqIE5TOjpEaWN0aW9uYXJ5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5p
dDxEaWN0aW9uYXJ5PigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6
OmluaXQoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMsIGNvbnN0IE9iamVjdCogY29uc3Qq
IHBLZXlzLCBVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxEaWN0aW9uYXJ5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoT2JqZWN0c19mb3JL
ZXlzX2NvdW50XyksIHBPYmplY3RzLCBwS2V5cywgY291bnQpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlv
bmFyeSogTlM6OkRpY3Rpb25hcnk6OmluaXQoY29uc3QgY2xhc3MgQ29kZXIqIHBDb2RlcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKGluaXRXaXRoQ29kZXJfKSwgcENvZGVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfS2V5VHlw
ZT4KK19OU19JTkxJTkUgTlM6OkVudW1lcmF0b3I8X0tleVR5cGU+KiBOUzo6RGljdGlvbmFyeTo6
a2V5RW51bWVyYXRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
RW51bWVyYXRvcjxfS2V5VHlwZT4qPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoa2V5RW51bWVyYXRv
cikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KwordGVtcGxhdGUgPGNsYXNzIF9PYmplY3Q+CitfTlNfSU5MSU5FIF9PYmplY3QqIE5TOjpEaWN0
aW9uYXJ5OjpvYmplY3QoY29uc3QgT2JqZWN0KiBwS2V5KSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPF9PYmplY3QqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob2JqZWN0
Rm9yS2V5XyksIHBLZXkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OkRpY3Rpb25hcnk6OmNv
dW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRW51bWVyYXRvci5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Njk1OTZjMDRkZGFmYTgwMWZhZWI1MWM3ODYyY2VkODMwZDAxMjZiYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRW51bWVyYXRv
ci5ocHAKQEAgLTAsMCArMSw3OCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0VudW1lcmF0b3IuaHBwCisvLworLy8g
Q29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TT2JqZWN0Lmhw
cCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworc3RydWN0IEZhc3RFbnVtZXJh
dGlvblN0YXRlCit7CisgICAgdW5zaWduZWQgbG9uZyAgc3RhdGU7CisgICAgT2JqZWN0KiogICAg
ICAgaXRlbXNQdHI7CisgICAgdW5zaWduZWQgbG9uZyogbXV0YXRpb25zUHRyOworICAgIHVuc2ln
bmVkIGxvbmcgIGV4dHJhWzVdOworfSBfTlNfUEFDS0VEOworCitjbGFzcyBGYXN0RW51bWVyYXRp
b24gOiBwdWJsaWMgUmVmZXJlbmNpbmc8RmFzdEVudW1lcmF0aW9uPgoreworcHVibGljOgorICAg
IE5TOjpVSW50ZWdlciBjb3VudEJ5RW51bWVyYXRpbmcoRmFzdEVudW1lcmF0aW9uU3RhdGUqIHBT
dGF0ZSwgT2JqZWN0KiogcEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGxlbik7Cit9OworCit0ZW1wbGF0
ZSA8Y2xhc3MgX09iamVjdFR5cGU+CitjbGFzcyBFbnVtZXJhdG9yIDogcHVibGljIFJlZmVyZW5j
aW5nPEVudW1lcmF0b3I8X09iamVjdFR5cGU+LCBGYXN0RW51bWVyYXRpb24+Cit7CitwdWJsaWM6
CisgICAgX09iamVjdFR5cGUqIG5leHRPYmplY3QoKTsKKyAgICBjbGFzcyBBcnJheSogYWxsT2Jq
ZWN0cygpOworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpGYXN0RW51bWVyYXRpb246OmNv
dW50QnlFbnVtZXJhdGluZyhGYXN0RW51bWVyYXRpb25TdGF0ZSogcFN0YXRlLCBPYmplY3QqKiBw
QnVmZmVyLCBOUzo6VUludGVnZXIgbGVuKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY291bnRCeUVudW1lcmF0aW5nV2l0
aFN0YXRlX29iamVjdHNfY291bnRfKSwgcFN0YXRlLCBwQnVmZmVyLCBsZW4pOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNs
YXNzIF9PYmplY3RUeXBlPgorX05TX0lOTElORSBfT2JqZWN0VHlwZSogTlM6OkVudW1lcmF0b3I8
X09iamVjdFR5cGU+OjpuZXh0T2JqZWN0KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxfT2JqZWN0VHlwZSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChuZXh0T2JqZWN0KSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1w
bGF0ZSA8Y2xhc3MgX09iamVjdFR5cGU+CitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkVudW1l
cmF0b3I8X09iamVjdFR5cGU+OjphbGxPYmplY3RzKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhbGxPYmplY3RzKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFcnJvci5o
cHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vycm9yLmhw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZWJmOTgxOGFjN2M4OGExZTViZGU2M2VmZGQxMTYwYzJkNGE0MTRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNFcnJvci5ocHAKQEAgLTAsMCArMSwxNzMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNFcnJvci5ocHAKKy8v
CisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZp
bmVzLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhw
cCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworewordXNpbmcgRXJyb3JEb21haW4g
PSBjbGFzcyBTdHJpbmcqOworCitfTlNfQ09OU1QoRXJyb3JEb21haW4sIENvY29hRXJyb3JEb21h
aW4pOworX05TX0NPTlNUKEVycm9yRG9tYWluLCBQT1NJWEVycm9yRG9tYWluKTsKK19OU19DT05T
VChFcnJvckRvbWFpbiwgT1NTdGF0dXNFcnJvckRvbWFpbik7CitfTlNfQ09OU1QoRXJyb3JEb21h
aW4sIE1hY2hFcnJvckRvbWFpbik7CisKK3VzaW5nIEVycm9yVXNlckluZm9LZXkgPSBjbGFzcyBT
dHJpbmcqOworCitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgVW5kZXJseWluZ0Vycm9yS2V5
KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWREZXNjcmlwdGlvbktleSk7
CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9y
S2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dl
c3Rpb25FcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkUmVj
b3ZlcnlPcHRpb25zRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIFJlY292
ZXJ5QXR0ZW1wdGVyRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIEhlbHBB
bmNob3JFcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgRGVidWdEZXNjcmlw
dGlvbkVycm9yS2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRGYWls
dXJlRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIFN0cmluZ0VuY29kaW5n
RXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIFVSTEVycm9yS2V5KTsKK19O
U19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBGaWxlUGF0aEVycm9yS2V5KTsKKworY2xhc3MgRXJy
b3IgOiBwdWJsaWMgQ29weWluZzxFcnJvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXJyb3Iq
ICAgICBlcnJvcihFcnJvckRvbWFpbiBkb21haW4sIEludGVnZXIgY29kZSwgY2xhc3MgRGljdGlv
bmFyeSogcERpY3Rpb25hcnkpOworCisgICAgc3RhdGljIEVycm9yKiAgICAgYWxsb2MoKTsKKyAg
ICBFcnJvciogICAgICAgICAgICBpbml0KCk7CisgICAgRXJyb3IqICAgICAgICAgICAgaW5pdChF
cnJvckRvbWFpbiBkb21haW4sIEludGVnZXIgY29kZSwgY2xhc3MgRGljdGlvbmFyeSogcERpY3Rp
b25hcnkpOworCisgICAgSW50ZWdlciAgICAgICAgICAgY29kZSgpIGNvbnN0OworICAgIEVycm9y
RG9tYWluICAgICAgIGRvbWFpbigpIGNvbnN0OworICAgIGNsYXNzIERpY3Rpb25hcnkqIHVzZXJJ
bmZvKCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJpbmcqICAgICBsb2NhbGl6ZWREZXNjcmlwdGlv
bigpIGNvbnN0OworICAgIGNsYXNzIEFycmF5KiAgICAgIGxvY2FsaXplZFJlY292ZXJ5T3B0aW9u
cygpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIGxvY2FsaXplZFJlY292ZXJ5U3VnZ2Vz
dGlvbigpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIGxvY2FsaXplZEZhaWx1cmVSZWFz
b24oKSBjb25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yRG9tYWluLCBDb2Nv
YUVycm9yRG9tYWluKTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JEb21haW4sIFBP
U0lYRXJyb3JEb21haW4pOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvckRvbWFpbiwg
T1NTdGF0dXNFcnJvckRvbWFpbik7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yRG9t
YWluLCBNYWNoRXJyb3JEb21haW4pOworCitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9y
VXNlckluZm9LZXksIFVuZGVybHlpbmdFcnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1Qo
TlM6OkVycm9yVXNlckluZm9LZXksIExvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKK19OU19QUklW
QVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkRmFpbHVyZVJlYXNv
bkVycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwg
TG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NP
TlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnNFcnJvcktl
eSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIFJlY292ZXJ5
QXR0ZW1wdGVyRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJ
bmZvS2V5LCBIZWxwQW5jaG9yRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpF
cnJvclVzZXJJbmZvS2V5LCBEZWJ1Z0Rlc2NyaXB0aW9uRXJyb3JLZXkpOworX05TX1BSSVZBVEVf
REVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRGYWlsdXJlRXJyb3JLZXkp
OworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBTdHJpbmdFbmNv
ZGluZ0Vycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tl
eSwgVVJMRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZv
S2V5LCBGaWxlUGF0aEVycm9yS2V5KTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkVycm9yKiBOUzo6RXJyb3I6OmVycm9y
KEVycm9yRG9tYWluIGRvbWFpbiwgSW50ZWdlciBjb2RlLCBjbGFzcyBEaWN0aW9uYXJ5KiBwRGlj
dGlvbmFyeSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxFcnJvcio+KF9OU19Q
UklWQVRFX0NMUyhOU0Vycm9yKSwgX05TX1BSSVZBVEVfU0VMKGVycm9yV2l0aERvbWFpbl9jb2Rl
X3VzZXJJbmZvXyksIGRvbWFpbiwgY29kZSwgcERpY3Rpb25hcnkpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RXJy
b3IqIE5TOjpFcnJvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBPYmplY3Q6OmFsbG9jPEVycm9y
PihfTlNfUFJJVkFURV9DTFMoTlNFcnJvcikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RXJyb3IqIE5TOjpFcnJv
cjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6aW5pdDxFcnJvcj4oKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OkVycm9yKiBOUzo6RXJyb3I6OmluaXQoRXJyb3JEb21haW4gZG9tYWluLCBJbnRlZ2VyIGNv
ZGUsIGNsYXNzIERpY3Rpb25hcnkqIHBEaWN0aW9uYXJ5KQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPEVycm9yKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoRG9tYWlu
X2NvZGVfdXNlckluZm9fKSwgZG9tYWluLCBjb2RlLCBwRGljdGlvbmFyeSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpJbnRlZ2VyIE5TOjpFcnJvcjo6Y29kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8SW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNvZGUpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkVycm9yRG9tYWluIE5TOjpFcnJvcjo6ZG9tYWluKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxFcnJvckRvbWFpbj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGRvbWFpbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkVycm9yOjp1c2VySW5mbygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTCh1c2VySW5mbykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6
RXJyb3I6OmxvY2FsaXplZERlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkRGVz
Y3JpcHRpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBOUzo6RXJyb3I6OmxvY2FsaXplZFJlY292
ZXJ5T3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJy
YXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpFcnJvcjo6bG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpTdHJpbmcqIE5TOjpFcnJvcjo6bG9jYWxpemVkRmFpbHVyZVJlYXNvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGxvY2FsaXplZEZhaWx1cmVSZWFzb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0xvY2suaHBwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjdkZTA4MTk0
ZjM0MjQ4OThmYzFmYjIzNzVmNjIzZDQ4NzhiNDRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcApAQCAtMCwwICsx
LDEwNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gRm91bmRhdGlvbi9OU0xvY2suaHBwCisvLworLy8gU2VlIExJQ0VOU0UudHh0IGZvciB0
aGlzIHByb2plY3QgbGljZW5zaW5nIGluZm9ybWF0aW9uLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBw
IgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorI2luY2x1ZGUgIk5TRGF0ZS5ocHAiCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMK
K3sKKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgPSBjbGFzcyBPYmplY3Q+
CitjbGFzcyBMb2NraW5nIDogcHVibGljIF9CYXNlCit7CitwdWJsaWM6CisgICAgdm9pZCBsb2Nr
KCk7CisgICAgdm9pZCB1bmxvY2soKTsKK307CisKK2NsYXNzIENvbmRpdGlvbiA6IHB1YmxpYyBM
b2NraW5nPENvbmRpdGlvbj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgQ29uZGl0aW9uKiBhbGxv
YygpOworCisgICAgQ29uZGl0aW9uKiAgICAgICAgaW5pdCgpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgd2FpdCgpOworICAgIGJvb2wgICAgICAgICAgICAgIHdhaXRVbnRpbERhdGUoRGF0ZSog
cExpbWl0KTsKKyAgICB2b2lkICAgICAgICAgICAgICBzaWduYWwoKTsKKyAgICB2b2lkICAgICAg
ICAgICAgICBicm9hZGNhc3QoKTsKK307CisKK30gLy8gTlMKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlPGNsYXNzIF9DbGFzcywgY2xh
c3MgX0Jhc2UgLyogPSBOUzo6T2JqZWN0ICovPgorX05TX0lOTElORSB2b2lkIE5TOjpMb2NraW5n
PF9DbGFzcywgX0Jhc2U+Ojpsb2NrKCkKK3sKKyAgICBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jaykpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGU8Y2xhc3MgX0NsYXNzLCBj
bGFzcyBfQmFzZSAvKiA9IE5TOjpPYmplY3QgKi8+CitfTlNfSU5MSU5FIHZvaWQgTlM6OkxvY2tp
bmc8X0NsYXNzLCBfQmFzZT46OnVubG9jaygpCit7CisgICAgTlM6Ok9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVubG9jaykpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6Q29u
ZGl0aW9uKiBOUzo6Q29uZGl0aW9uOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE5TOjpDb25kaXRpb24+KF9OU19QUklWQVRFX0NMUyhOU0NvbmRpdGlvbikpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6Q29uZGl0aW9uKiBOUzo6Q29uZGl0aW9uOjppbml0KCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6aW5pdDxOUzo6Q29uZGl0aW9uPigpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpDb25k
aXRpb246OndhaXQoKQoreworICAgIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9OU19QUklWQVRFX1NFTCh3YWl0KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OkNvbmRpdGlvbjo6d2Fp
dFVudGlsRGF0ZShOUzo6RGF0ZSogcExpbWl0KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpz
ZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwod2FpdFVudGlsRGF0ZV8pLCBw
TGltaXQpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSB2b2lkIE5TOjpDb25kaXRpb246OnNpZ25hbCgpCit7CisgICAgTlM6
Ok9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHNpZ25hbCkp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSB2b2lkIE5TOjpDb25kaXRpb246OmJyb2FkY2FzdCgpCit7CisgICAgTlM6Ok9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGJyb2FkY2FzdCkp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGFiYmM5ZjU4MDZiNjY1MDFkMzc5NTRiOGVmNTBlNjMyZjVjMmQ2NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90aWZp
Y2F0aW9uLmhwcApAQCAtMCwwICsxLDY3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TTm90aWZpY2F0aW9uLmhwcAor
Ly8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0Rl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TRGljdGlvbmFyeS5ocHAiCisjaW5jbHVkZSAiTlNPYmpl
Y3QuaHBwIgorI2luY2x1ZGUgIk5TU3RyaW5nLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIK
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVz
cGFjZSBOUworewordXNpbmcgTm90aWZpY2F0aW9uTmFtZSA9IGNsYXNzIFN0cmluZyo7CisKK2Ns
YXNzIE5vdGlmaWNhdGlvbiA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Tm90aWZpY2F0aW9uPgor
eworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgICBuYW1lKCkgY29uc3Q7CisgICAgTlM6Ok9i
amVjdCogICAgIG9iamVjdCgpIGNvbnN0OworICAgIE5TOjpEaWN0aW9uYXJ5KiB1c2VySW5mbygp
IGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6Ok5vdGlmaWNhdGlvbjo6bmFtZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpPYmplY3QqIE5TOjpOb3Rp
ZmljYXRpb246Om9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6Ok9iamVjdCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChvYmplY3QpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OkRpY3Rpb25hcnkqIE5TOjpOb3RpZmljYXRpb246OnVzZXJJbmZvKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6RGljdGlvbmFyeSo+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTCh1c2VySW5mbykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9Gb3VuZGF0aW9uL05TTnVtYmVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9Gb3VuZGF0aW9uL05TTnVtYmVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDBmNjZmMzc0ZmJjMzk2
MWQ1NTU2NDYxNjAxZjBlZTc0OWViZjQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOdW1iZXIuaHBwCkBAIC0wLDAgKzEsNTAx
IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBGb3VuZGF0aW9uL05TTnVtYmVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU09iakNSdW50aW1lLmhwcCIKKyNpbmNsdWRlICJOU09i
amVjdC5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIFZhbHVl
IDogcHVibGljIENvcHlpbmc8VmFsdWU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIFZhbHVlKiB2
YWx1ZShjb25zdCB2b2lkKiBwVmFsdWUsIGNvbnN0IGNoYXIqIHBUeXBlKTsKKyAgICBzdGF0aWMg
VmFsdWUqIHZhbHVlKGNvbnN0IHZvaWQqIHBQb2ludGVyKTsKKworICAgIHN0YXRpYyBWYWx1ZSog
YWxsb2MoKTsKKworICAgIFZhbHVlKiAgICAgICAgaW5pdChjb25zdCB2b2lkKiBwVmFsdWUsIGNv
bnN0IGNoYXIqIHBUeXBlKTsKKyAgICBWYWx1ZSogICAgICAgIGluaXQoY29uc3QgY2xhc3MgQ29k
ZXIqIHBDb2Rlcik7CisKKyAgICB2b2lkICAgICAgICAgIGdldFZhbHVlKHZvaWQqIHBWYWx1ZSwg
VUludGVnZXIgc2l6ZSkgY29uc3Q7CisgICAgY29uc3QgY2hhciogICBvYmpDVHlwZSgpIGNvbnN0
OworCisgICAgYm9vbCAgICAgICAgICBpc0VxdWFsVG9WYWx1ZShWYWx1ZSogcFZhbHVlKSBjb25z
dDsKKyAgICB2b2lkKiAgICAgICAgIHBvaW50ZXJWYWx1ZSgpIGNvbnN0OworfTsKKworY2xhc3Mg
TnVtYmVyIDogcHVibGljIENvcHlpbmc8TnVtYmVyLCBWYWx1ZT4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGNoYXIgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIq
ICAgICBudW1iZXIodW5zaWduZWQgY2hhciB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAg
IG51bWJlcihzaG9ydCB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcih1bnNp
Z25lZCBzaG9ydCB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcihpbnQgdmFs
dWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIodW5zaWduZWQgaW50IHZhbHVlKTsK
KyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGxvbmcgdmFsdWUpOworICAgIHN0YXRpYyBO
dW1iZXIqICAgICBudW1iZXIodW5zaWduZWQgbG9uZyB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJl
ciogICAgIG51bWJlcihsb25nIGxvbmcgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBu
dW1iZXIodW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAg
bnVtYmVyKGZsb2F0IHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGRvdWJs
ZSB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcihib29sIHZhbHVlKTsKKwor
ICAgIHN0YXRpYyBOdW1iZXIqICAgICBhbGxvYygpOworCisgICAgTnVtYmVyKiAgICAgICAgICAg
IGluaXQoY29uc3QgY2xhc3MgQ29kZXIqIHBDb2Rlcik7CisgICAgTnVtYmVyKiAgICAgICAgICAg
IGluaXQoY2hhciB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQodW5zaWduZWQg
Y2hhciB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQoc2hvcnQgdmFsdWUpOwor
ICAgIE51bWJlciogICAgICAgICAgICBpbml0KHVuc2lnbmVkIHNob3J0IHZhbHVlKTsKKyAgICBO
dW1iZXIqICAgICAgICAgICAgaW5pdChpbnQgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAg
ICBpbml0KHVuc2lnbmVkIGludCB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQo
bG9uZyB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQodW5zaWduZWQgbG9uZyB2
YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQobG9uZyBsb25nIHZhbHVlKTsKKyAg
ICBOdW1iZXIqICAgICAgICAgICAgaW5pdCh1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpOworICAg
IE51bWJlciogICAgICAgICAgICBpbml0KGZsb2F0IHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAg
ICAgICAgaW5pdChkb3VibGUgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KGJv
b2wgdmFsdWUpOworCisgICAgY2hhciAgICAgICAgICAgICAgIGNoYXJWYWx1ZSgpIGNvbnN0Owor
ICAgIHVuc2lnbmVkIGNoYXIgICAgICB1bnNpZ25lZENoYXJWYWx1ZSgpIGNvbnN0OworICAgIHNo
b3J0ICAgICAgICAgICAgICBzaG9ydFZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgc2hvcnQg
ICAgIHVuc2lnbmVkU2hvcnRWYWx1ZSgpIGNvbnN0OworICAgIGludCAgICAgICAgICAgICAgICBp
bnRWYWx1ZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCAgICAgICB1bnNpZ25lZEludFZhbHVl
KCkgY29uc3Q7CisgICAgbG9uZyAgICAgICAgICAgICAgIGxvbmdWYWx1ZSgpIGNvbnN0OworICAg
IHVuc2lnbmVkIGxvbmcgICAgICB1bnNpZ25lZExvbmdWYWx1ZSgpIGNvbnN0OworICAgIGxvbmcg
bG9uZyAgICAgICAgICBsb25nTG9uZ1ZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9uZyBs
b25nIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZSgpIGNvbnN0OworICAgIGZsb2F0ICAgICAgICAgICAg
ICBmbG9hdFZhbHVlKCkgY29uc3Q7CisgICAgZG91YmxlICAgICAgICAgICAgIGRvdWJsZVZhbHVl
KCkgY29uc3Q7CisgICAgYm9vbCAgICAgICAgICAgICAgIGJvb2xWYWx1ZSgpIGNvbnN0OworICAg
IEludGVnZXIgICAgICAgICAgICBpbnRlZ2VyVmFsdWUoKSBjb25zdDsKKyAgICBVSW50ZWdlciAg
ICAgICAgICAgdW5zaWduZWRJbnRlZ2VyVmFsdWUoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcq
ICAgICAgc3RyaW5nVmFsdWUoKSBjb25zdDsKKworICAgIENvbXBhcmlzb25SZXN1bHQgICBjb21w
YXJlKGNvbnN0IE51bWJlciogcE90aGVyTnVtYmVyKSBjb25zdDsKKyAgICBib29sICAgICAgICAg
ICAgICAgaXNFcXVhbFRvTnVtYmVyKGNvbnN0IE51bWJlciogcE51bWJlcikgY29uc3Q7CisKKyAg
ICBjbGFzcyBTdHJpbmcqICAgICAgZGVzY3JpcHRpb25XaXRoTG9jYWxlKGNvbnN0IE9iamVjdCog
cExvY2FsZSkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VmFsdWUqIE5TOjpWYWx1ZTo6dmFsdWUo
Y29uc3Qgdm9pZCogcFZhbHVlLCBjb25zdCBjaGFyKiBwVHlwZSkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxWYWx1ZSo+KF9OU19QUklWQVRFX0NMUyhOU1ZhbHVlKSwgX05TX1BS
SVZBVEVfU0VMKHZhbHVlV2l0aEJ5dGVzX29iakNUeXBlXyksIHBWYWx1ZSwgcFR5cGUpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6VmFsdWUqIE5TOjpWYWx1ZTo6dmFsdWUoY29uc3Qgdm9pZCogcFBvaW50ZXIpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VmFsdWUqPihfTlNfUFJJVkFURV9DTFMo
TlNWYWx1ZSksIF9OU19QUklWQVRFX1NFTCh2YWx1ZVdpdGhQb2ludGVyXyksIHBQb2ludGVyKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6OlZhbHVlKiBOUzo6VmFsdWU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8VmFsdWU+KF9OU19QUklWQVRFX0NMUyhOU1ZhbHVlKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpWYWx1ZSogTlM6OlZhbHVlOjppbml0KGNvbnN0IHZvaWQqIHBWYWx1ZSwgY29uc3QgY2hh
ciogcFR5cGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VmFsdWUqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhCeXRlc19vYmpDVHlwZV8pLCBwVmFsdWUsIHBUeXBl
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19OU19JTkxJTkUgTlM6OlZhbHVlKiBOUzo6VmFsdWU6OmluaXQoY29uc3QgY2xhc3MgQ29kZXIq
IHBDb2RlcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxWYWx1ZSo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChpbml0V2l0aENvZGVyXyksIHBDb2Rlcik7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQg
TlM6OlZhbHVlOjpnZXRWYWx1ZSh2b2lkKiBwVmFsdWUsIFVJbnRlZ2VyIHNpemUpIGNvbnN0Cit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZ2V0
VmFsdWVfc2l6ZV8pLCBwVmFsdWUsIHNpemUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBjb25zdCBjaGFyKiBOUzo6VmFs
dWU6Om9iakNUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxj
b25zdCBjaGFyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9iakNUeXBlKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJv
b2wgTlM6OlZhbHVlOjppc0VxdWFsVG9WYWx1ZShWYWx1ZSogcFZhbHVlKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChp
c0VxdWFsVG9WYWx1ZV8pLCBwVmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkKiBOUzo6VmFsdWU6OnBvaW50
ZXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZCo+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChwb2ludGVyVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJl
ciogTlM6Ok51bWJlcjo6bnVtYmVyKGNoYXIgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BSSVZB
VEVfU0VMKG51bWJlcldpdGhDaGFyXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6
Ok51bWJlcjo6bnVtYmVyKHVuc2lnbmVkIGNoYXIgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BS
SVZBVEVfU0VMKG51bWJlcldpdGhVbnNpZ25lZENoYXJfKSwgdmFsdWUpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIoc2hvcnQgdmFsdWUpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05T
X1BSSVZBVEVfU0VMKG51bWJlcldpdGhTaG9ydF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1i
ZXIqIE5TOjpOdW1iZXI6Om51bWJlcih1bnNpZ25lZCBzaG9ydCB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIp
LCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFVuc2lnbmVkU2hvcnRfKSwgdmFsdWUpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIoaW50IHZhbHVlKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJl
ciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoSW50XyksIHZhbHVlKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKHVuc2lnbmVkIGludCB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1i
ZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFVuc2lnbmVkSW50XyksIHZhbHVlKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKGxvbmcgdmFsdWUpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVt
YmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhMb25nXyksIHZhbHVlKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKHVuc2lnbmVkIGxvbmcgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5T
TnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhVbnNpZ25lZExvbmdfKSwgdmFsdWUp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIobG9uZyBsb25nIHZhbHVl
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRF
X0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoTG9uZ0xvbmdfKSwgdmFs
dWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIodW5zaWduZWQgbG9u
ZyBsb25nIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+
KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoVW5z
aWduZWRMb25nTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6
Om51bWJlcihmbG9hdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
dW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVy
V2l0aEZsb2F0XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVt
YmVyKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1i
ZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0
aERvdWJsZV8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJl
cihib29sIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+
KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoQm9v
bF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TnVtYmVyPihfTlNfUFJJVkFURV9DTFMoTlNO
dW1iZXIpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChjb25zdCBDb2Rl
ciogcENvZGVyKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aENvZGVyXyksIHBDb2Rlcik7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoY2hhciB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhD
aGFyXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdCh1bnNp
Z25lZCBjaGFyIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJl
cio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aFVuc2lnbmVkQ2hhcl8pLCB2YWx1ZSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoc2hvcnQgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGluaXRXaXRoU2hvcnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVt
YmVyOjppbml0KHVuc2lnbmVkIHNob3J0IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aFVuc2lnbmVk
U2hvcnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KGlu
dCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhJbnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVt
YmVyKiBOUzo6TnVtYmVyOjppbml0KHVuc2lnbmVkIGludCB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdp
dGhVbnNpZ25lZEludF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6
OmluaXQobG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1i
ZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhMb25nXyksIHZhbHVlKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdCh1bnNpZ25lZCBsb25nIHZhbHVlKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChpbml0V2l0aFVuc2lnbmVkTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIq
IE5TOjpOdW1iZXI6OmluaXQobG9uZyBsb25nIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aExvbmdM
b25nXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdCh1bnNp
Z25lZCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoVW5zaWduZWRMb25nTG9uZ18p
LCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoZmxvYXQgdmFs
dWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGluaXRXaXRoRmxvYXRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVy
KiBOUzo6TnVtYmVyOjppbml0KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhEb3VibGVf
KSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KGJvb2wgdmFs
dWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGluaXRXaXRoQm9vbF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGNoYXIgTlM6Ok51
bWJlcjo6Y2hhclZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxjaGFyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY2hhclZhbHVlKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVuc2ln
bmVkIGNoYXIgTlM6Ok51bWJlcjo6dW5zaWduZWRDaGFyVmFsdWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVkIGNoYXI+KHRoaXMsIF9OU19QUklWQVRF
X1NFTCh1bnNpZ25lZENoYXJWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBzaG9ydCBOUzo6TnVtYmVyOjpzaG9y
dFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxzaG9ydD4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKHNob3J0VmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdW5zaWduZWQgc2hv
cnQgTlM6Ok51bWJlcjo6dW5zaWduZWRTaG9ydFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTx1bnNpZ25lZCBzaG9ydD4odGhpcywgX05TX1BSSVZBVEVfU0VM
KHVuc2lnbmVkU2hvcnRWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBpbnQgTlM6Ok51bWJlcjo6aW50VmFsdWUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGludD4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGludFZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIGludCBOUzo6TnVtYmVy
Ojp1bnNpZ25lZEludFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTx1bnNpZ25lZCBpbnQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNpZ25lZEludFZhbHVl
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIGxvbmcgTlM6Ok51bWJlcjo6bG9uZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxsb25nPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9u
Z1ZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIGxvbmcgTlM6Ok51bWJlcjo6dW5zaWduZWRMb25n
VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVk
IGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNpZ25lZExvbmdWYWx1ZSkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBsb25nIGxvbmcgTlM6Ok51bWJlcjo6bG9uZ0xvbmdWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8bG9uZyBsb25nPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
bG9uZ0xvbmdWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSB1bnNpZ25lZCBsb25nIGxvbmcgTlM6Ok51bWJlcjo6
dW5zaWduZWRMb25nTG9uZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTx1bnNpZ25lZCBsb25nIGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNpZ25l
ZExvbmdMb25nVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgZmxvYXQgTlM6Ok51bWJlcjo6ZmxvYXRWYWx1ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChmbG9hdFZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGRvdWJsZSBOUzo6TnVtYmVyOjpk
b3VibGVWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZG91
YmxlPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZG91YmxlVmFsdWUpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBO
Uzo6TnVtYmVyOjpib29sVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChib29sVmFsdWUpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OkludGVnZXIgTlM6Ok51bWJlcjo6aW50ZWdlclZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW50
ZWdlclZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6TnVtYmVyOjp1bnNpZ25lZElu
dGVnZXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUlu
dGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNpZ25lZEludGVnZXJWYWx1ZSkpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6U3RyaW5nKiBOUzo6TnVtYmVyOjpzdHJpbmdWYWx1ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KHN0cmluZ1ZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpDb21wYXJpc29uUmVzdWx0IE5TOjpOdW1iZXI6
OmNvbXBhcmUoY29uc3QgTnVtYmVyKiBwT3RoZXJOdW1iZXIpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8Q29tcGFyaXNvblJlc3VsdD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGNvbXBhcmVfKSwgcE90aGVyTnVtYmVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6TnVtYmVyOjpp
c0VxdWFsVG9OdW1iZXIoY29uc3QgTnVtYmVyKiBwTnVtYmVyKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpc0VxdWFs
VG9OdW1iZXJfKSwgcE51bWJlcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpOdW1iZXI6OmRl
c2NyaXB0aW9uV2l0aExvY2FsZShjb25zdCBPYmplY3QqIHBMb2NhbGUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGRlc2NyaXB0aW9uV2l0aExvY2FsZV8pLCBwTG9jYWxlKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iakNSdW50aW1lLmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqQ1J1bnRpbWUuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ4ZTY1MDY2ZTU4Y2E3MDU3NDIwZTZmNTg5ZTc5NWEyZWRmYzZhZTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09i
akNSdW50aW1lLmhwcApAQCAtMCwwICsxLDQzIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TT2JqQ1J1bnRpbWUuaHBw
CisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5T
RGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKKworX05TX0VO
VU0oSW50ZWdlciwgQ29tcGFyaXNvblJlc3VsdCkgeworICAgIE9yZGVyZWRBc2NlbmRpbmcgPSAt
MSwKKyAgICBPcmRlcmVkU2FtZSA9IDAsCisgICAgT3JkZXJlZERlc2NlbmRpbmcgPSAxLAorfTsK
KworY29uc3QgSW50ZWdlciBOb3RGb3VuZCA9IEludGVnZXJNYXg7CisKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iamVjdC5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iamVjdC5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjRlMWM2MzJjOWQ1YmExZWI2NDQ3YWEyZTlhYjUzMDFmYWI2ZjI1MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqZWN0
LmhwcApAQCAtMCwwICsxLDI5NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU09iamVjdC5ocHAKKy8vCisvLyBDb3B5
cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIK
KyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisjaW5j
bHVkZSA8b2JqYy9tZXNzYWdlLmg+CisjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisKKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworewordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xh
c3MgX0Jhc2UgPSBjbGFzcyBPYmplY3Q+CitjbGFzcyBSZWZlcmVuY2luZyA6IHB1YmxpYyBfQmFz
ZQoreworcHVibGljOgorICAgIF9DbGFzcyogIHJldGFpbigpOworICAgIHZvaWQgICAgIHJlbGVh
c2UoKTsKKworICAgIF9DbGFzcyogIGF1dG9yZWxlYXNlKCk7CisKKyAgICBVSW50ZWdlciByZXRh
aW5Db3VudCgpIGNvbnN0OworfTsKKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jh
c2UgPSBjbGFzcyBPYmplY3Q+CitjbGFzcyBDb3B5aW5nIDogcHVibGljIFJlZmVyZW5jaW5nPF9D
bGFzcywgX0Jhc2U+Cit7CitwdWJsaWM6CisgICAgX0NsYXNzKiBjb3B5KCkgY29uc3Q7Cit9Owor
CitjbGFzcyBPYmplY3QgOiBwdWJsaWMgUmVmZXJlbmNpbmc8T2JqZWN0LCBvYmpjX29iamVjdD4K
K3sKK3B1YmxpYzoKKyAgICBVSW50ZWdlciAgICAgIGhhc2goKSBjb25zdDsKKyAgICBib29sICAg
ICAgICAgIGlzRXF1YWwoY29uc3QgT2JqZWN0KiBwT2JqZWN0KSBjb25zdDsKKworICAgIGNsYXNz
IFN0cmluZyogZGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqIGRlYnVnRGVz
Y3JpcHRpb24oKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBSZWZlcmVu
Y2luZzxPYmplY3QsIG9iamNfb2JqZWN0PjsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBfQ2xhc3M+
CisgICAgc3RhdGljIF9DbGFzcyogYWxsb2MoY29uc3QgY2hhciogcENsYXNzTmFtZSk7CisgICAg
dGVtcGxhdGUgPGNsYXNzIF9DbGFzcz4KKyAgICBzdGF0aWMgX0NsYXNzKiBhbGxvYyhjb25zdCB2
b2lkKiBwQ2xhc3MpOworICAgIHRlbXBsYXRlIDxjbGFzcyBfQ2xhc3M+CisgICAgX0NsYXNzKiBp
bml0KCk7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0RzdD4KKyAgICBzdGF0aWMgX0RzdCAgICAg
ICAgICAgICAgICAgICBicmlkZ2luZ0Nhc3QoY29uc3Qgdm9pZCogcE9iaik7CisgICAgc3RhdGlj
IGNsYXNzIE1ldGhvZFNpZ25hdHVyZSogbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3IoY29uc3Qg
dm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yKTsKKyAgICBzdGF0aWMgYm9vbCAgICAgICAgICAgICAg
ICAgICByZXNwb25kc1RvU2VsZWN0b3IoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yKTsK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1R5cGU+CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGRvZXNSZXF1aXJlTXNnU2VuZFN0cmV0KCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9SZXQs
IHR5cGVuYW1lLi4uIF9BcmdzPgorICAgIHN0YXRpYyBfUmV0IHNlbmRNZXNzYWdlKGNvbnN0IHZv
aWQqIHBPYmosIFNFTCBzZWxlY3RvciwgX0FyZ3MuLi4gYXJncyk7CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIF9SZXQsIHR5cGVuYW1lLi4uIF9BcmdzPgorICAgIHN0YXRpYyBfUmV0IHNlbmRNZXNz
YWdlU2FmZShjb25zdCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IsIF9BcmdzLi4uIGFyZ3MpOwor
Citwcml2YXRlOgorICAgIE9iamVjdCgpID0gZGVsZXRlOworICAgIE9iamVjdChjb25zdCBPYmpl
Y3QmKSA9IGRlbGV0ZTsKKyAgICB+T2JqZWN0KCkgPSBkZWxldGU7CisKKyAgICBPYmplY3QmIG9w
ZXJhdG9yPShjb25zdCBPYmplY3QmKSA9IGRlbGV0ZTsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNz
LCBjbGFzcyBfQmFzZSAvKiA9IE9iamVjdCAqLz4KK19OU19JTkxJTkUgX0NsYXNzKiBOUzo6UmVm
ZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT46OnJldGFpbigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8X0NsYXNzKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHJldGFpbikpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxh
dGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgLyogPSBPYmplY3QgKi8+CitfTlNfSU5MSU5F
IHZvaWQgTlM6OlJlZmVyZW5jaW5nPF9DbGFzcywgX0Jhc2U+OjpyZWxlYXNlKCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChyZWxlYXNlKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0
ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSAvKiA9IE9iamVjdCAqLz4KK19OU19J
TkxJTkUgX0NsYXNzKiBOUzo6UmVmZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT46OmF1dG9yZWxlYXNl
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxfQ2xhc3MqPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwoYXV0b3JlbGVhc2UpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9C
YXNlIC8qID0gT2JqZWN0ICovPgorX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OlJlZmVyZW5j
aW5nPF9DbGFzcywgX0Jhc2U+OjpyZXRhaW5Db3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChyZXRhaW5D
b3VudCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgLyogPSBPYmplY3QgKi8+
CitfTlNfSU5MSU5FIF9DbGFzcyogTlM6OkNvcHlpbmc8X0NsYXNzLCBfQmFzZT46OmNvcHkoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPF9DbGFzcyo+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChjb3B5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0RzdD4KK19OU19JTkxJTkUgX0Rz
dCBOUzo6T2JqZWN0OjpicmlkZ2luZ0Nhc3QoY29uc3Qgdm9pZCogcE9iaikKK3sKKyNpZiBfX09C
SkNfXworICAgIHJldHVybiAoX19icmlkZ2UgX0RzdClwT2JqOworI2Vsc2UKKyAgICByZXR1cm4g
KF9Ec3QpcE9iajsKKyNlbmRpZiAvLyBfX09CSkNfXworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPHR5cGVuYW1lIF9UeXBlPgor
X05TX0lOTElORSBjb25zdGV4cHIgYm9vbCBOUzo6T2JqZWN0Ojpkb2VzUmVxdWlyZU1zZ1NlbmRT
dHJldCgpCit7CisjaWYgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykp
CisgICAgY29uc3RleHByIHNpemVfdCBrU3RydWN0TGltaXQgPSAoc2l6ZW9mKHN0ZDo6dWludHB0
cl90KSA8PCAxKTsKKworICAgIHJldHVybiBzaXplb2YoX1R5cGUpID4ga1N0cnVjdExpbWl0Owor
I2VsaWYgZGVmaW5lZChfX2FybTY0X18pCisgICAgcmV0dXJuIGZhbHNlOworI2VsaWYgZGVmaW5l
ZChfX2FybV9fKQorICAgIGNvbnN0ZXhwciBzaXplX3Qga1N0cnVjdExpbWl0ID0gc2l6ZW9mKHN0
ZDo6dWludHB0cl90KTsKKworICAgIHJldHVybiBzdGQ6OmlzX2NsYXNzKF9UeXBlKSAmJiAoc2l6
ZW9mKF9UeXBlKSA+IGtTdHJ1Y3RMaW1pdCk7CisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBh
cmNoaXRlY3R1cmUhIgorI2VuZGlmCit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8PgorX05TX0lOTElORSBjb25zdGV4cHIgYm9v
bCBOUzo6T2JqZWN0Ojpkb2VzUmVxdWlyZU1zZ1NlbmRTdHJldDx2b2lkPigpCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKwordGVtcGxhdGUgPHR5cGVuYW1lIF9SZXQsIHR5cGVuYW1lLi4uIF9BcmdzPgorX05T
X0lOTElORSBfUmV0IE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlKGNvbnN0IHZvaWQqIHBPYmosIFNF
TCBzZWxlY3RvciwgX0FyZ3MuLi4gYXJncykKK3sKKyNpZiAoZGVmaW5lZChfX2kzODZfXykgfHwg
ZGVmaW5lZChfX3g4Nl82NF9fKSkKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfZmxvYXRpbmdf
cG9pbnQ8X1JldD4oKSkKKyAgICB7CisgICAgICAgIHVzaW5nIFNlbmRNZXNzYWdlUHJvY0ZwcmV0
ID0gX1JldCAoKikoY29uc3Qgdm9pZCosIFNFTCwgX0FyZ3MuLi4pOworCisgICAgICAgIGNvbnN0
IFNlbmRNZXNzYWdlUHJvY0ZwcmV0IHBQcm9jID0gcmVpbnRlcnByZXRfY2FzdDxTZW5kTWVzc2Fn
ZVByb2NGcHJldD4oJm9iamNfbXNnU2VuZF9mcHJldCk7CisKKyAgICAgICAgcmV0dXJuICgqcFBy
b2MpKHBPYmosIHNlbGVjdG9yLCBhcmdzLi4uKTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmIC8v
ICggZGVmaW5lZCggX19pMzg2X18gKSAgfHwgZGVmaW5lZCggX194ODZfNjRfXyApICApCisjaWYg
IWRlZmluZWQoX19hcm02NF9fKQorICAgICAgICBpZiBjb25zdGV4cHIgKGRvZXNSZXF1aXJlTXNn
U2VuZFN0cmV0PF9SZXQ+KCkpCisgICAgeworICAgICAgICB1c2luZyBTZW5kTWVzc2FnZVByb2NT
dHJldCA9IHZvaWQgKCopKF9SZXQqLCBjb25zdCB2b2lkKiwgU0VMLCBfQXJncy4uLik7CisKKyAg
ICAgICAgY29uc3QgU2VuZE1lc3NhZ2VQcm9jU3RyZXQgcFByb2MgPSByZWludGVycHJldF9jYXN0
PFNlbmRNZXNzYWdlUHJvY1N0cmV0Pigmb2JqY19tc2dTZW5kX3N0cmV0KTsKKyAgICAgICAgX1Jl
dCAgICAgICAgICAgICAgICAgICAgICAgcmV0OworCisgICAgICAgICgqcFByb2MpKCZyZXQsIHBP
YmosIHNlbGVjdG9yLCBhcmdzLi4uKTsKKworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKyAg
ICBlbHNlCisjZW5kaWYgLy8gIWRlZmluZWQoIF9fYXJtNjRfXyApCisgICAgeworICAgICAgICB1
c2luZyBTZW5kTWVzc2FnZVByb2MgPSBfUmV0ICgqKShjb25zdCB2b2lkKiwgU0VMLCBfQXJncy4u
Lik7CisKKyAgICAgICAgY29uc3QgU2VuZE1lc3NhZ2VQcm9jIHBQcm9jID0gcmVpbnRlcnByZXRf
Y2FzdDxTZW5kTWVzc2FnZVByb2M+KCZvYmpjX21zZ1NlbmQpOworCisgICAgICAgIHJldHVybiAo
KnBQcm9jKShwT2JqLCBzZWxlY3RvciwgYXJncy4uLik7CisgICAgfQorfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TWV0
aG9kU2lnbmF0dXJlKiBOUzo6T2JqZWN0OjptZXRob2RTaWduYXR1cmVGb3JTZWxlY3Rvcihjb25z
dCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IpCit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlPE1l
dGhvZFNpZ25hdHVyZSo+KHBPYmosIF9OU19QUklWQVRFX1NFTChtZXRob2RTaWduYXR1cmVGb3JT
ZWxlY3Rvcl8pLCBzZWxlY3Rvcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6Ok9iamVjdDo6cmVzcG9uZHNU
b1NlbGVjdG9yKGNvbnN0IHZvaWQqIHBPYmosIFNFTCBzZWxlY3RvcikKK3sKKyAgICByZXR1cm4g
c2VuZE1lc3NhZ2U8Ym9vbD4ocE9iaiwgX05TX1BSSVZBVEVfU0VMKHJlc3BvbmRzVG9TZWxlY3Rv
cl8pLCBzZWxlY3Rvcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUuLi4gX0FyZ3M+
CitfTlNfSU5MSU5FIF9SZXQgTlM6Ok9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlKGNvbnN0IHZvaWQq
IHBPYmosIFNFTCBzZWxlY3RvciwgX0FyZ3MuLi4gYXJncykKK3sKKyAgICBpZiAoKHJlc3BvbmRz
VG9TZWxlY3RvcihwT2JqLCBzZWxlY3RvcikpIHx8IChudWxscHRyICE9IG1ldGhvZFNpZ25hdHVy
ZUZvclNlbGVjdG9yKHBPYmosIHNlbGVjdG9yKSkpCisgICAgeworICAgICAgICByZXR1cm4gc2Vu
ZE1lc3NhZ2U8X1JldD4ocE9iaiwgc2VsZWN0b3IsIGFyZ3MuLi4pOworICAgIH0KKworICAgIGlm
IGNvbnN0ZXhwciAoIXN0ZDo6aXNfdm9pZDxfUmV0Pjo6dmFsdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzPgorX05TX0lOTElORSBfQ2xhc3Mq
IE5TOjpPYmplY3Q6OmFsbG9jKGNvbnN0IGNoYXIqIHBDbGFzc05hbWUpCit7CisgICAgcmV0dXJu
IHNlbmRNZXNzYWdlPF9DbGFzcyo+KG9iamNfbG9va1VwQ2xhc3MocENsYXNzTmFtZSksIF9OU19Q
UklWQVRFX1NFTChhbGxvYykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcz4KK19OU19JTkxJTkUgX0Ns
YXNzKiBOUzo6T2JqZWN0OjphbGxvYyhjb25zdCB2b2lkKiBwQ2xhc3MpCit7CisgICAgcmV0dXJu
IHNlbmRNZXNzYWdlPF9DbGFzcyo+KHBDbGFzcywgX05TX1BSSVZBVEVfU0VMKGFsbG9jKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1w
bGF0ZSA8Y2xhc3MgX0NsYXNzPgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpPYmplY3Q6OmluaXQo
KQoreworICAgIHJldHVybiBzZW5kTWVzc2FnZTxfQ2xhc3MqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoaW5pdCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6Ok9iamVjdDo6aGFzaCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoaGFzaCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpPYmplY3Q6OmlzRXF1YWwoY29uc3QgT2JqZWN0
KiBwT2JqZWN0KSBjb25zdAoreworICAgIHJldHVybiBzZW5kTWVzc2FnZTxib29sPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoaXNFcXVhbF8pLCBwT2JqZWN0KTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyog
TlM6Ok9iamVjdDo6ZGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJldHVybiBzZW5kTWVzc2Fn
ZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGVzY3JpcHRpb24pKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlN0cmluZyogTlM6Ok9iamVjdDo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHNlbmRNZXNzYWdlU2FmZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGVi
dWdEZXNjcmlwdGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9G
b3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
Rm91bmRhdGlvbi9OU1ByaXZhdGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4YTRmYTU2NzIyMzIzMjIwNjU0
YTFlMGE1YjEzMTExZThjYTc4NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1ByaXZhdGUuaHBwCkBAIC0wLDAgKzEsNDg4IEBA
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBG
b3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIF9OU19QUklWQVRFX0NMUyhz
eW1ib2wpIChQcml2YXRlOjpDbGFzczo6c19rIyNzeW1ib2wpCisjZGVmaW5lIF9OU19QUklWQVRF
X1NFTChhY2Nlc3NvcikgKFByaXZhdGU6OlNlbGVjdG9yOjpzX2sjI2FjY2Vzc29yKQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lmIGRlZmluZWQo
TlNfUFJJVkFURV9JTVBMRU1FTlRBVElPTikKKworI2RlZmluZSBfTlNfUFJJVkFURV9WSVNJQklM
SVRZIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKKyNkZWZpbmUgX05TX1BS
SVZBVEVfSU1QT1JUIF9fYXR0cmlidXRlX18oKHdlYWtfaW1wb3J0KSkKKworI2lmIF9fT0JKQ19f
CisjZGVmaW5lIF9OU19QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgKChfX2JyaWRn
ZSB2b2lkKilvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wpKQorI2Vsc2UKKyNkZWZpbmUgX05TX1BS
SVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKSBvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wp
CisjZW5kaWYgLy8gX19PQkpDX18KKworI2RlZmluZSBfTlNfUFJJVkFURV9ERUZfQ0xTKHN5bWJv
bCkgdm9pZCogc19rIyNzeW1ib2wgX05TX1BSSVZBVEVfVklTSUJJTElUWSA9IF9OU19QUklWQVRF
X09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCk7CisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9QUk8o
c3ltYm9sKQorI2RlZmluZSBfTlNfUFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIFNF
TCBzX2sjI2FjY2Vzc29yIF9OU19QUklWQVRFX1ZJU0lCSUxJVFkgPSBzZWxfcmVnaXN0ZXJOYW1l
KHN5bWJvbCk7CisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9DT05TVCh0eXBlLCBzeW1ib2wpICAg
ICAgICAgICAgICBcCisgICAgX05TX0VYVEVSTiB0eXBlIGNvbnN0IE5TIyNzeW1ib2wgX05TX1BS
SVZBVEVfSU1QT1JUOyBcCisgICAgdHlwZSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgTlM6
OnN5bWJvbCA9IChudWxscHRyICE9ICZOUyMjc3ltYm9sKSA/IE5TIyNzeW1ib2wgOiBudWxscHRy
OworCisjZWxzZQorCisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9DTFMoc3ltYm9sKSBleHRlcm4g
dm9pZCogc19rIyNzeW1ib2w7CisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9QUk8oc3ltYm9sKQor
I2RlZmluZSBfTlNfUFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIGV4dGVybiBTRUwg
c19rIyNhY2Nlc3NvcjsKKyNkZWZpbmUgX05TX1BSSVZBVEVfREVGX0NPTlNUKHR5cGUsIHN5bWJv
bCkKKworI2VuZGlmIC8vIE5TX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworbmFt
ZXNwYWNlIFByaXZhdGUKK3sKKyAgICBuYW1lc3BhY2UgQ2xhc3MKKyAgICB7CisKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX0NMUyhOU0FycmF5KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NM
UyhOU0F1dG9yZWxlYXNlUG9vbCk7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNCdW5k
bGUpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TQ29uZGl0aW9uKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX0NMUyhOU0RhdGUpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xT
KE5TRGljdGlvbmFyeSk7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNFcnJvcik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNOdW1iZXIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfQ0xTKE5TT2JqZWN0KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU1Byb2Nl
c3NJbmZvKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU1N0cmluZyk7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9DTFMoTlNVUkwpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xT
KE5TVmFsdWUpOworCisgICAgfSAvLyBDbGFzcworfSAvLyBQcml2YXRlCit9IC8vIE1UTAorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNl
IE5TCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBQcm90b2NvbAorICAg
IHsKKworICAgIH0gLy8gUHJvdG9jb2wKK30gLy8gUHJpdmF0ZQorfSAvLyBOUworCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7
CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBTZWxlY3RvcgorICAgIHsKKwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFkZE9iamVjdF8sCisgICAgICAgICAgICAiYWRk
T2JqZWN0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFjdGl2ZVByb2Nlc3NvckNv
dW50LAorICAgICAgICAgICAgImFjdGl2ZVByb2Nlc3NvckNvdW50Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoYWxsQnVuZGxlcywKKyAgICAgICAgICAgICJhbGxCdW5kbGVzIik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYWxsRnJhbWV3b3JrcywKKyAgICAgICAgICAgICJh
bGxGcmFtZXdvcmtzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYWxsT2JqZWN0cywK
KyAgICAgICAgICAgICJhbGxPYmplY3RzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
YWxsb2MsCisgICAgICAgICAgICAiYWxsb2MiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChhcHBTdG9yZVJlY2VpcHRVUkwsCisgICAgICAgICAgICAiYXBwU3RvcmVSZWNlaXB0VVJMIik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYXJndW1lbnRzLAorICAgICAgICAgICAgImFy
Z3VtZW50cyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFycmF5LAorICAgICAgICAg
ICAgImFycmF5Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYXJyYXlXaXRoT2JqZWN0
XywKKyAgICAgICAgICAgICJhcnJheVdpdGhPYmplY3Q6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoYXJyYXlXaXRoT2JqZWN0c19jb3VudF8sCisgICAgICAgICAgICAiYXJyYXlXaXRo
T2JqZWN0czpjb3VudDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhdXRvbWF0aWNU
ZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkLAorICAgICAgICAgICAgImF1dG9tYXRpY1Rlcm1pbmF0
aW9uU3VwcG9ydEVuYWJsZWQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhdXRvcmVs
ZWFzZSwKKyAgICAgICAgICAgICJhdXRvcmVsZWFzZSIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uc19yZWFzb25fLAorICAgICAgICAgICAgImJl
Z2luQWN0aXZpdHlXaXRoT3B0aW9uczpyZWFzb246Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoYm9vbFZhbHVlLAorICAgICAgICAgICAgImJvb2xWYWx1ZSIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGJyb2FkY2FzdCwKKyAgICAgICAgICAgICJicm9hZGNhc3QiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidWlsdEluUGx1Z0luc1BhdGgsCisgICAgICAgICAg
ICAiYnVpbHRJblBsdWdJbnNQYXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYnVp
bHRJblBsdWdJbnNVUkwsCisgICAgICAgICAgICAiYnVpbHRJblBsdWdJbnNVUkwiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChidW5kbGVJZGVudGlmaWVyLAorICAgICAgICAgICAgImJ1
bmRsZUlkZW50aWZpZXIiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidW5kbGVQYXRo
LAorICAgICAgICAgICAgImJ1bmRsZVBhdGgiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChidW5kbGVVUkwsCisgICAgICAgICAgICAiYnVuZGxlVVJMIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoYnVuZGxlV2l0aFBhdGhfLAorICAgICAgICAgICAgImJ1bmRsZVdpdGhQYXRo
OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRsZVdpdGhVUkxfLAorICAgICAg
ICAgICAgImJ1bmRsZVdpdGhVUkw6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoY2hh
cmFjdGVyQXRJbmRleF8sCisgICAgICAgICAgICAiY2hhcmFjdGVyQXRJbmRleDoiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChjaGFyVmFsdWUsCisgICAgICAgICAgICAiY2hhclZhbHVl
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoY291bnRCeUVudW1lcmF0aW5nV2l0aFN0
YXRlX29iamVjdHNfY291bnRfLAorICAgICAgICAgICAgImNvdW50QnlFbnVtZXJhdGluZ1dpdGhT
dGF0ZTpvYmplY3RzOmNvdW50OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNTdHJp
bmdVc2luZ0VuY29kaW5nXywKKyAgICAgICAgICAgICJjU3RyaW5nVXNpbmdFbmNvZGluZzoiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjb2RlLAorICAgICAgICAgICAgImNvZGUiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjb21wYXJlXywKKyAgICAgICAgICAgICJjb21w
YXJlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNvcHksCisgICAgICAgICAgICAi
Y29weSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNvdW50LAorICAgICAgICAgICAg
ImNvdW50Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZGF0ZVdpdGhUaW1lSW50ZXJ2
YWxTaW5jZU5vd18sCisgICAgICAgICAgICAiZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdzoi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkZXNjcmlwdGlvbldpdGhMb2NhbGVfLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uV2l0aExvY2FsZToiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb25fLAorICAgICAgICAgICAgImRp
c2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChkaXNhYmxlU3VkZGVuVGVybWluYXRpb24sCisgICAgICAgICAgICAiZGlzYWJsZVN1ZGRlblRl
cm1pbmF0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZGVidWdEZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICJkZWJ1Z0Rlc2NyaXB0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoZGVzY3JpcHRpb24sCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChkaWN0aW9uYXJ5LAorICAgICAgICAgICAgImRpY3Rpb25h
cnkiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkaWN0aW9uYXJ5V2l0aE9iamVjdF9m
b3JLZXlfLAorICAgICAgICAgICAgImRpY3Rpb25hcnlXaXRoT2JqZWN0OmZvcktleToiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkaWN0aW9uYXJ5V2l0aE9iamVjdHNfZm9yS2V5c19j
b3VudF8sCisgICAgICAgICAgICAiZGljdGlvbmFyeVdpdGhPYmplY3RzOmZvcktleXM6Y291bnQ6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZG9tYWluLAorICAgICAgICAgICAgImRv
bWFpbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRvdWJsZVZhbHVlLAorICAgICAg
ICAgICAgImRvdWJsZVZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZHJhaW4s
CisgICAgICAgICAgICAiZHJhaW4iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChlbmFi
bGVBdXRvbWF0aWNUZXJtaW5hdGlvbl8sCisgICAgICAgICAgICAiZW5hYmxlQXV0b21hdGljVGVy
bWluYXRpb246Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZW5hYmxlU3VkZGVuVGVy
bWluYXRpb24sCisgICAgICAgICAgICAiZW5hYmxlU3VkZGVuVGVybWluYXRpb24iKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChlbmRBY3Rpdml0eV8sCisgICAgICAgICAgICAiZW5kQWN0
aXZpdHk6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZW52aXJvbm1lbnQsCisgICAg
ICAgICAgICAiZW52aXJvbm1lbnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChlcnJv
cldpdGhEb21haW5fY29kZV91c2VySW5mb18sCisgICAgICAgICAgICAiZXJyb3JXaXRoRG9tYWlu
OmNvZGU6dXNlckluZm86Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZXhlY3V0YWJs
ZVBhdGgsCisgICAgICAgICAgICAiZXhlY3V0YWJsZVBhdGgiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChleGVjdXRhYmxlVVJMLAorICAgICAgICAgICAgImV4ZWN1dGFibGVVUkwiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24sCisg
ICAgICAgICAgICAiZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoZmlsZVVSTFdpdGhQYXRoXywKKyAgICAgICAgICAgICJmaWxlVVJMV2l0aFBh
dGg6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZmxvYXRWYWx1ZSwKKyAgICAgICAg
ICAgICJmbG9hdFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZnVsbFVzZXJO
YW1lLAorICAgICAgICAgICAgImZ1bGxVc2VyTmFtZSIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGdldFZhbHVlX3NpemVfLAorICAgICAgICAgICAgImdldFZhbHVlOnNpemU6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZ2xvYmFsbHlVbmlxdWVTdHJpbmcsCisgICAgICAg
ICAgICAiZ2xvYmFsbHlVbmlxdWVTdHJpbmciKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChoYXNoLAorICAgICAgICAgICAgImhhc2giKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChob3N0TmFtZSwKKyAgICAgICAgICAgICJob3N0TmFtZSIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKGluZm9EaWN0aW9uYXJ5LAorICAgICAgICAgICAgImluZm9EaWN0aW9uYXJ5Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdCwKKyAgICAgICAgICAgICJpbml0Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdEZpbGVVUkxXaXRoUGF0aF8sCisgICAg
ICAgICAgICAiaW5pdEZpbGVVUkxXaXRoUGF0aDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChpbml0V2l0aEJvb2xfLAorICAgICAgICAgICAgImluaXRXaXRoQm9vbDoiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEJ5dGVzX29iakNUeXBlXywKKyAgICAgICAg
ICAgICJpbml0V2l0aEJ5dGVzOm9iakNUeXBlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGluaXRXaXRoQnl0ZXNOb0NvcHlfbGVuZ3RoX2VuY29kaW5nX2ZyZWVXaGVuRG9uZV8sCisg
ICAgICAgICAgICAiaW5pdFdpdGhCeXRlc05vQ29weTpsZW5ndGg6ZW5jb2Rpbmc6ZnJlZVdoZW5E
b25lOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoQ2hhcl8sCisgICAg
ICAgICAgICAiaW5pdFdpdGhDaGFyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlu
aXRXaXRoQ29kZXJfLAorICAgICAgICAgICAgImluaXRXaXRoQ29kZXI6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhDU3RyaW5nX2VuY29kaW5nXywKKyAgICAgICAgICAg
ICJpbml0V2l0aENTdHJpbmc6ZW5jb2Rpbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoaW5pdFdpdGhEb21haW5fY29kZV91c2VySW5mb18sCisgICAgICAgICAgICAiaW5pdFdpdGhE
b21haW46Y29kZTp1c2VySW5mbzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0
V2l0aERvdWJsZV8sCisgICAgICAgICAgICAiaW5pdFdpdGhEb3VibGU6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhGbG9hdF8sCisgICAgICAgICAgICAiaW5pdFdpdGhG
bG9hdDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEludF8sCisgICAg
ICAgICAgICAiaW5pdFdpdGhJbnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5p
dFdpdGhMb25nXywKKyAgICAgICAgICAgICJpbml0V2l0aExvbmc6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoaW5pdFdpdGhMb25nTG9uZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhM
b25nTG9uZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aE9iamVjdHNf
Y291bnRfLAorICAgICAgICAgICAgImluaXRXaXRoT2JqZWN0czpjb3VudDoiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aE9iamVjdHNfZm9yS2V5c19jb3VudF8sCisgICAg
ICAgICAgICAiaW5pdFdpdGhPYmplY3RzOmZvcktleXM6Y291bnQ6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoaW5pdFdpdGhQYXRoXywKKyAgICAgICAgICAgICJpbml0V2l0aFBhdGg6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhTaG9ydF8sCisgICAgICAg
ICAgICAiaW5pdFdpdGhTaG9ydDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0
V2l0aFN0cmluZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhTdHJpbmc6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZENoYXJfLAorICAgICAgICAgICAgImlu
aXRXaXRoVW5zaWduZWRDaGFyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRX
aXRoVW5zaWduZWRJbnRfLAorICAgICAgICAgICAgImluaXRXaXRoVW5zaWduZWRJbnQ6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZExvbmdfLAorICAgICAg
ICAgICAgImluaXRXaXRoVW5zaWduZWRMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGluaXRXaXRoVW5zaWduZWRMb25nTG9uZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhVbnNp
Z25lZExvbmdMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoVW5z
aWduZWRTaG9ydF8sCisgICAgICAgICAgICAiaW5pdFdpdGhVbnNpZ25lZFNob3J0OiIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoVVJMXywKKyAgICAgICAgICAgICJpbml0
V2l0aFVSTDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbnRlZ2VyVmFsdWUsCisg
ICAgICAgICAgICAiaW50ZWdlclZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
aW50VmFsdWUsCisgICAgICAgICAgICAiaW50VmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChpc0VxdWFsXywKKyAgICAgICAgICAgICJpc0VxdWFsOiIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGlzRXF1YWxUb051bWJlcl8sCisgICAgICAgICAgICAiaXNFcXVhbFRv
TnVtYmVyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlzRXF1YWxUb1N0cmluZ18s
CisgICAgICAgICAgICAiaXNFcXVhbFRvU3RyaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGlzRXF1YWxUb1ZhbHVlXywKKyAgICAgICAgICAgICJpc0VxdWFsVG9WYWx1ZToiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc2lPU0FwcE9uTWFjLAorICAgICAgICAgICAg
ImlzaU9TQXBwT25NYWMiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc0xvYWRlZCwK
KyAgICAgICAgICAgICJpc0xvYWRlZCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlz
TG93UG93ZXJNb2RlRW5hYmxlZCwKKyAgICAgICAgICAgICJpc0xvd1Bvd2VyTW9kZUVuYWJsZWQi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc01hY0NhdGFseXN0QXBwLAorICAgICAg
ICAgICAgImlzTWFjQ2F0YWx5c3RBcHAiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChp
c09wZXJhdGluZ1N5c3RlbUF0TGVhc3RWZXJzaW9uXywKKyAgICAgICAgICAgICJpc09wZXJhdGlu
Z1N5c3RlbUF0TGVhc3RWZXJzaW9uOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGtl
eUVudW1lcmF0b3IsCisgICAgICAgICAgICAia2V5RW51bWVyYXRvciIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGxlbmd0aCwKKyAgICAgICAgICAgICJsZW5ndGgiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZ18sCisgICAgICAg
ICAgICAibGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobG9hZCwKKyAgICAgICAgICAgICJsb2FkIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobG9hZEFuZFJldHVybkVycm9yXywKKyAgICAgICAgICAgICJsb2FkQW5kUmV0dXJu
RXJyb3I6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobG9jYWxpemVkRGVzY3JpcHRp
b24sCisgICAgICAgICAgICAibG9jYWxpemVkRGVzY3JpcHRpb24iKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChsb2NhbGl6ZWRGYWlsdXJlUmVhc29uLAorICAgICAgICAgICAgImxvY2Fs
aXplZEZhaWx1cmVSZWFzb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2NhbGl6
ZWRJbmZvRGljdGlvbmFyeSwKKyAgICAgICAgICAgICJsb2NhbGl6ZWRJbmZvRGljdGlvbmFyeSIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZFJlY292ZXJ5T3B0aW9ucywK
KyAgICAgICAgICAgICJsb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnMiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24sCisgICAgICAgICAgICAi
bG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwobG9jYWxpemVkU3RyaW5nRm9yS2V5X3ZhbHVlX3RhYmxlXywKKyAgICAgICAgICAgICJsb2Nh
bGl6ZWRTdHJpbmdGb3JLZXk6dmFsdWU6dGFibGU6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwobG9jaywKKyAgICAgICAgICAgICJsb2NrIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwobG9uZ1ZhbHVlLAorICAgICAgICAgICAgImxvbmdWYWx1ZSIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGxvbmdMb25nVmFsdWUsCisgICAgICAgICAgICAibG9uZ0xvbmdWYWx1
ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG1haW5CdW5kbGUsCisgICAgICAgICAg
ICAibWFpbkJ1bmRsZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG1heGltdW1MZW5n
dGhPZkJ5dGVzVXNpbmdFbmNvZGluZ18sCisgICAgICAgICAgICAibWF4aW11bUxlbmd0aE9mQnl0
ZXNVc2luZ0VuY29kaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG1ldGhvZFNp
Z25hdHVyZUZvclNlbGVjdG9yXywKKyAgICAgICAgICAgICJtZXRob2RTaWduYXR1cmVGb3JTZWxl
Y3RvcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChtdXRhYmxlQnl0ZXMsCisgICAg
ICAgICAgICAibXV0YWJsZUJ5dGVzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobmFt
ZSwKKyAgICAgICAgICAgICJuYW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobmV4
dE9iamVjdCwKKyAgICAgICAgICAgICJuZXh0T2JqZWN0Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobnVtYmVyV2l0aEJvb2xfLAorICAgICAgICAgICAgIm51bWJlcldpdGhCb29sOiIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhDaGFyXywKKyAgICAgICAg
ICAgICJudW1iZXJXaXRoQ2hhcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1i
ZXJXaXRoRG91YmxlXywKKyAgICAgICAgICAgICJudW1iZXJXaXRoRG91YmxlOiIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhGbG9hdF8sCisgICAgICAgICAgICAibnVt
YmVyV2l0aEZsb2F0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhJ
bnRfLAorICAgICAgICAgICAgIm51bWJlcldpdGhJbnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobnVtYmVyV2l0aExvbmdfLAorICAgICAgICAgICAgIm51bWJlcldpdGhMb25nOiIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhMb25nTG9uZ18sCisgICAg
ICAgICAgICAibnVtYmVyV2l0aExvbmdMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKG51bWJlcldpdGhTaG9ydF8sCisgICAgICAgICAgICAibnVtYmVyV2l0aFNob3J0OiIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhVbnNpZ25lZENoYXJfLAorICAg
ICAgICAgICAgIm51bWJlcldpdGhVbnNpZ25lZENoYXI6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobnVtYmVyV2l0aFVuc2lnbmVkSW50XywKKyAgICAgICAgICAgICJudW1iZXJXaXRo
VW5zaWduZWRJbnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aFVu
c2lnbmVkTG9uZ18sCisgICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkTG9uZzoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoVW5zaWduZWRMb25nTG9uZ18sCisg
ICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aFVuc2lnbmVkU2hvcnRfLAorICAgICAgICAgICAgIm51
bWJlcldpdGhVbnNpZ25lZFNob3J0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG9i
akNUeXBlLAorICAgICAgICAgICAgIm9iakNUeXBlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwob2JqZWN0LAorICAgICAgICAgICAgIm9iamVjdCIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKG9iamVjdEF0SW5kZXhfLAorICAgICAgICAgICAgIm9iamVjdEF0SW5kZXg6Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob2JqZWN0Rm9ySW5mb0RpY3Rpb25hcnlLZXlf
LAorICAgICAgICAgICAgIm9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5OiIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKG9iamVjdEZvcktleV8sCisgICAgICAgICAgICAib2JqZWN0Rm9y
S2V5OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG9wZXJhdGluZ1N5c3RlbSwKKyAg
ICAgICAgICAgICJvcGVyYXRpbmdTeXN0ZW0iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uLAorICAgICAgICAgICAgIm9wZXJhdGluZ1N5c3RlbVZl
cnNpb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChvcGVyYXRpbmdTeXN0ZW1WZXJz
aW9uU3RyaW5nLAorICAgICAgICAgICAgIm9wZXJhdGluZ1N5c3RlbVZlcnNpb25TdHJpbmciKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8s
CisgICAgICAgICAgICAicGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwocGVyZm9ybUFjdGl2aXR5V2l0aE9wdGlvbnNfcmVhc29uX3VzaW5n
QmxvY2tfLAorICAgICAgICAgICAgInBlcmZvcm1BY3Rpdml0eVdpdGhPcHRpb25zOnJlYXNvbjp1
c2luZ0Jsb2NrOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBlcmZvcm1FeHBpcmlu
Z0FjdGl2aXR5V2l0aFJlYXNvbl91c2luZ0Jsb2NrXywKKyAgICAgICAgICAgICJwZXJmb3JtRXhw
aXJpbmdBY3Rpdml0eVdpdGhSZWFzb246dXNpbmdCbG9jazoiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChwaHlzaWNhbE1lbW9yeSwKKyAgICAgICAgICAgICJwaHlzaWNhbE1lbW9yeSIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBvaW50ZXJWYWx1ZSwKKyAgICAgICAgICAg
ICJwb2ludGVyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwcmVmbGlnaHRB
bmRSZXR1cm5FcnJvcl8sCisgICAgICAgICAgICAicHJlZmxpZ2h0QW5kUmV0dXJuRXJyb3I6Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJpdmF0ZUZyYW1ld29ya3NQYXRoLAorICAg
ICAgICAgICAgInByaXZhdGVGcmFtZXdvcmtzUGF0aCIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKHByaXZhdGVGcmFtZXdvcmtzVVJMLAorICAgICAgICAgICAgInByaXZhdGVGcmFtZXdv
cmtzVVJMIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJvY2Vzc0lkZW50aWZpZXIs
CisgICAgICAgICAgICAicHJvY2Vzc0lkZW50aWZpZXIiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChwcm9jZXNzSW5mbywKKyAgICAgICAgICAgICJwcm9jZXNzSW5mbyIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKHByb2Nlc3NOYW1lLAorICAgICAgICAgICAgInByb2Nlc3NO
YW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJvY2Vzc29yQ291bnQsCisgICAg
ICAgICAgICAicHJvY2Vzc29yQ291bnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChy
YW5nZU9mU3RyaW5nX29wdGlvbnNfLAorICAgICAgICAgICAgInJhbmdlT2ZTdHJpbmc6b3B0aW9u
czoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZWxlYXNlLAorICAgICAgICAgICAg
InJlbGVhc2UiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVBhdGgsCisg
ICAgICAgICAgICAicmVzb3VyY2VQYXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
cmVzb3VyY2VVUkwsCisgICAgICAgICAgICAicmVzb3VyY2VVUkwiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChyZXNwb25kc1RvU2VsZWN0b3JfLAorICAgICAgICAgICAgInJlc3BvbmRz
VG9TZWxlY3RvcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZXRhaW4sCisgICAg
ICAgICAgICAicmV0YWluIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocmV0YWluQ291
bnQsCisgICAgICAgICAgICAicmV0YWluQ291bnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChzZXRBdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkXywKKyAgICAgICAgICAg
ICJzZXRBdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkOiIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKHNldFByb2Nlc3NOYW1lXywKKyAgICAgICAgICAgICJzZXRQcm9jZXNz
TmFtZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzaGFyZWRGcmFtZXdvcmtzUGF0
aCwKKyAgICAgICAgICAgICJzaGFyZWRGcmFtZXdvcmtzUGF0aCIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKHNoYXJlZEZyYW1ld29ya3NVUkwsCisgICAgICAgICAgICAic2hhcmVkRnJh
bWV3b3Jrc1VSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHNoYXJlZFN1cHBvcnRQ
YXRoLAorICAgICAgICAgICAgInNoYXJlZFN1cHBvcnRQYXRoIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoc2hhcmVkU3VwcG9ydFVSTCwKKyAgICAgICAgICAgICJzaGFyZWRTdXBwb3J0
VVJMIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2hvcnRWYWx1ZSwKKyAgICAgICAg
ICAgICJzaG9ydFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2hvd1Bvb2xz
LAorICAgICAgICAgICAgInNob3dQb29scyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHNpZ25hbCwKKyAgICAgICAgICAgICJzaWduYWwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChzdHJpbmcsCisgICAgICAgICAgICAic3RyaW5nIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoc3RyaW5nVmFsdWUsCisgICAgICAgICAgICAic3RyaW5nVmFsdWUiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChzdHJpbmdXaXRoU3RyaW5nXywKKyAgICAgICAgICAgICJz
dHJpbmdXaXRoU3RyaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHN0cmluZ1dp
dGhDU3RyaW5nX2VuY29kaW5nXywKKyAgICAgICAgICAgICJzdHJpbmdXaXRoQ1N0cmluZzplbmNv
ZGluZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzdHJpbmdCeUFwcGVuZGluZ1N0
cmluZ18sCisgICAgICAgICAgICAic3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoc3lzdGVtVXB0aW1lLAorICAgICAgICAgICAgInN5c3RlbVVw
dGltZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHRoZXJtYWxTdGF0ZSwKKyAgICAg
ICAgICAgICJ0aGVybWFsU3RhdGUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bmxv
YWQsCisgICAgICAgICAgICAidW5sb2FkIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
dW5sb2NrLAorICAgICAgICAgICAgInVubG9jayIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKHVuc2lnbmVkQ2hhclZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkQ2hhclZhbHVlIik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodW5zaWduZWRJbnRlZ2VyVmFsdWUsCisgICAg
ICAgICAgICAidW5zaWduZWRJbnRlZ2VyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTCh1bnNpZ25lZEludFZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkSW50VmFsdWUiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bnNpZ25lZExvbmdWYWx1ZSwKKyAgICAgICAg
ICAgICJ1bnNpZ25lZExvbmdWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVu
c2lnbmVkTG9uZ0xvbmdWYWx1ZSwKKyAgICAgICAgICAgICJ1bnNpZ25lZExvbmdMb25nVmFsdWUi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bnNpZ25lZFNob3J0VmFsdWUsCisgICAg
ICAgICAgICAidW5zaWduZWRTaG9ydFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoVVJMRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8sCisgICAgICAgICAgICAiVVJMRm9yQXV4aWxp
YXJ5RXhlY3V0YWJsZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1c2VySW5mbywK
KyAgICAgICAgICAgICJ1c2VySW5mbyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVz
ZXJOYW1lLAorICAgICAgICAgICAgInVzZXJOYW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoVVRGOFN0cmluZywKKyAgICAgICAgICAgICJVVEY4U3RyaW5nIik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwodmFsdWVXaXRoQnl0ZXNfb2JqQ1R5cGVfLAorICAgICAgICAgICAg
InZhbHVlV2l0aEJ5dGVzOm9iakNUeXBlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHZhbHVlV2l0aFBvaW50ZXJfLAorICAgICAgICAgICAgInZhbHVlV2l0aFBvaW50ZXI6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwod2FpdCwKKyAgICAgICAgICAgICJ3YWl0Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwod2FpdFVudGlsRGF0ZV8sCisgICAgICAgICAgICAi
d2FpdFVudGlsRGF0ZToiKTsKKyAgICB9IC8vIENsYXNzCit9IC8vIFByaXZhdGUKK30gLy8gTVRM
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQcm9jZXNz
SW5mby5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1By
b2Nlc3NJbmZvLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGUzMTQ3ZmU4YTdjNjhkMmZhY2MzYTZlZDQ3N2Y2
NzUxZWU1ZGU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNQcm9jZXNzSW5mby5ocHAKQEAgLTAsMCArMSwzNTQgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRp
b24vTlNQcm9jZXNzSW5mby5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU05vdGlmaWNhdGlv
bi5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAi
CisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5T
Cit7CitfTlNfQ09OU1QoTm90aWZpY2F0aW9uTmFtZSwgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVE
aWRDaGFuZ2VOb3RpZmljYXRpb24pOworX05TX0NPTlNUKE5vdGlmaWNhdGlvbk5hbWUsIFByb2Nl
c3NJbmZvUG93ZXJTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbik7CisKK19OU19FTlVNKE5TOjpJ
bnRlZ2VyLCBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZSkgeworICAgIFByb2Nlc3NJbmZvVGhlcm1h
bFN0YXRlTm9taW5hbCA9IDAsCisgICAgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVGYWlyID0gMSwK
KyAgICBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZVNlcmlvdXMgPSAyLAorICAgIFByb2Nlc3NJbmZv
VGhlcm1hbFN0YXRlQ3JpdGljYWwgPSAzCit9OworCitfTlNfT1BUSU9OUyhzdGQ6OnVpbnQ2NF90
LCBBY3Rpdml0eU9wdGlvbnMpIHsKKyAgICBBY3Rpdml0eUlkbGVEaXNwbGF5U2xlZXBEaXNhYmxl
ZCA9ICgxVUxMIDw8IDQwKSwKKyAgICBBY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2FibGVkID0g
KDFVTEwgPDwgMjApLAorICAgIEFjdGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCA9ICgx
VUxMIDw8IDE0KSwKKyAgICBBY3Rpdml0eUF1dG9tYXRpY1Rlcm1pbmF0aW9uRGlzYWJsZWQgPSAo
MVVMTCA8PCAxNSksCisgICAgQWN0aXZpdHlVc2VySW5pdGlhdGVkID0gKDB4MDBGRkZGRkZVTEwg
fCBBY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2FibGVkKSwKKyAgICBBY3Rpdml0eVVzZXJJbml0
aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1TbGVlcCA9IChBY3Rpdml0eVVzZXJJbml0aWF0ZWQgJiB+
QWN0aXZpdHlJZGxlU3lzdGVtU2xlZXBEaXNhYmxlZCksCisgICAgQWN0aXZpdHlCYWNrZ3JvdW5k
ID0gMHgwMDAwMDBGRlVMTCwKKyAgICBBY3Rpdml0eUxhdGVuY3lDcml0aWNhbCA9IDB4RkYwMDAw
MDAwMFVMTCwKK307CisKK2NsYXNzIFByb2Nlc3NJbmZvIDogcHVibGljIFJlZmVyZW5jaW5nPFBy
b2Nlc3NJbmZvPgoreworcHVibGljOgorICAgIHN0YXRpYyBQcm9jZXNzSW5mbyogICAgIHByb2Nl
c3NJbmZvKCk7CisKKyAgICBjbGFzcyBBcnJheSogICAgICAgICAgICBhcmd1bWVudHMoKSBjb25z
dDsKKyAgICBjbGFzcyBEaWN0aW9uYXJ5KiAgICAgICBlbnZpcm9ubWVudCgpIGNvbnN0OworICAg
IGNsYXNzIFN0cmluZyogICAgICAgICAgIGhvc3ROYW1lKCkgY29uc3Q7CisgICAgY2xhc3MgU3Ry
aW5nKiAgICAgICAgICAgcHJvY2Vzc05hbWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICBzZXRQcm9jZXNzTmFtZShjb25zdCBTdHJpbmcqIHBTdHJpbmcpOworICAgIGludCAg
ICAgICAgICAgICAgICAgICAgIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgY2xhc3Mg
U3RyaW5nKiAgICAgICAgICAgZ2xvYmFsbHlVbmlxdWVTdHJpbmcoKSBjb25zdDsKKworICAgIGNs
YXNzIFN0cmluZyogICAgICAgICAgIHVzZXJOYW1lKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5n
KiAgICAgICAgICAgZnVsbFVzZXJOYW1lKCkgY29uc3Q7CisKKyAgICBVSW50ZWdlciAgICAgICAg
ICAgICAgICBvcGVyYXRpbmdTeXN0ZW0oKSBjb25zdDsKKyAgICBPcGVyYXRpbmdTeXN0ZW1WZXJz
aW9uICBvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAg
ICAgICAgICAgb3BlcmF0aW5nU3lzdGVtVmVyc2lvblN0cmluZygpIGNvbnN0OworICAgIGJvb2wg
ICAgICAgICAgICAgICAgICAgIGlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNpb24oT3BlcmF0
aW5nU3lzdGVtVmVyc2lvbiB2ZXJzaW9uKSBjb25zdDsKKworICAgIFVJbnRlZ2VyICAgICAgICAg
ICAgICAgIHByb2Nlc3NvckNvdW50KCkgY29uc3Q7CisgICAgVUludGVnZXIgICAgICAgICAgICAg
ICAgYWN0aXZlUHJvY2Vzc29yQ291bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcg
ICAgICBwaHlzaWNhbE1lbW9yeSgpIGNvbnN0OworICAgIFRpbWVJbnRlcnZhbCAgICAgICAgICAg
IHN5c3RlbVVwdGltZSgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZGlz
YWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZW5h
YmxlU3VkZGVuVGVybWluYXRpb24oKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGRp
c2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbihjb25zdCBjbGFzcyBTdHJpbmcqIHBSZWFzb24pOwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uKGNv
bnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbik7CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
YXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgIHNldEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWQoYm9v
bCBlbmFibGVkKTsKKworICAgIGNsYXNzIE9iamVjdCogICAgICAgICAgIGJlZ2luQWN0aXZpdHko
QWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIGNvbnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbik7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZW5kQWN0aXZpdHkoY2xhc3MgT2JqZWN0KiBwQWN0
aXZpdHkpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1BY3Rpdml0eShBY3Rp
dml0eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uLCB2b2lkIChe
YmxvY2spKHZvaWQpKTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBwZXJmb3JtQWN0aXZp
dHkoQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIGNvbnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbiwg
Y29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiBmdW5jKTsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICBwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShjb25zdCBjbGFzcyBTdHJpbmcqIHBSZWFz
b24sIHZvaWQgKF5ibG9jaykoYm9vbCBleHBpcmVkKSk7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgcGVyZm9ybUV4cGlyaW5nQWN0aXZpdHkoY29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29u
LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBleHBpcmVkKT4mIGZ1bmMpOworCisgICAg
UHJvY2Vzc0luZm9UaGVybWFsU3RhdGUgdGhlcm1hbFN0YXRlKCkgY29uc3Q7CisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICBpc2lPU0FwcE9uTWFjKCkgY29uc3Q7CisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgaXNNYWNDYXRhbHlzdEFwcCgpIGNvbnN0OworfTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19QUklWQVRF
X0RFRl9DT05TVChOUzo6Tm90aWZpY2F0aW9uTmFtZSwgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVE
aWRDaGFuZ2VOb3RpZmljYXRpb24pOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpOb3RpZmlj
YXRpb25OYW1lLCBQcm9jZXNzSW5mb1Bvd2VyU3RhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24pOwor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6UHJvY2Vzc0luZm8qIE5TOjpQcm9jZXNzSW5mbzo6cHJvY2Vzc0luZm8oKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFByb2Nlc3NJbmZvKj4oX05TX1BSSVZBVEVf
Q0xTKE5TUHJvY2Vzc0luZm8pLCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc0luZm8pKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkFycmF5KiBOUzo6UHJvY2Vzc0luZm86OmFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
YXJndW1lbnRzKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6UHJvY2Vzc0luZm86OmVu
dmlyb25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0
aW9uYXJ5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGVudmlyb25tZW50KSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpTdHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6aG9zdE5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChob3N0
TmFtZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6UHJvY2Vzc0luZm86OnByb2Nlc3NOYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc05hbWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vz
c0luZm86OnNldFByb2Nlc3NOYW1lKGNvbnN0IFN0cmluZyogcFN0cmluZykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzZXRQcm9jZXNzTmFt
ZV8pLCBwU3RyaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgaW50IE5TOjpQcm9jZXNzSW5mbzo6cHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGludD4odGhp
cywgX05TX1BSSVZBVEVfU0VMKHByb2Nlc3NJZGVudGlmaWVyKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJp
bmcqIE5TOjpQcm9jZXNzSW5mbzo6Z2xvYmFsbHlVbmlxdWVTdHJpbmcoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChnbG9iYWxseVVuaXF1ZVN0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6UHJvY2Vz
c0luZm86OnVzZXJOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZVNhZmU8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVzZXJOYW1lKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpTdHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6ZnVsbFVzZXJOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8U3RyaW5nKj4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGZ1bGxVc2VyTmFtZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OlByb2Nlc3NJ
bmZvOjpvcGVyYXRpbmdTeXN0ZW0oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob3BlcmF0aW5nU3lzdGVtKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIE5TOjpQcm9jZXNzSW5mbzo6b3Bl
cmF0aW5nU3lzdGVtVmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8T3BlcmF0aW5nU3lzdGVtVmVyc2lvbj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9wZXJh
dGluZ1N5c3RlbVZlcnNpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZv
OjpvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob3BlcmF0aW5n
U3lzdGVtVmVyc2lvblN0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9jZXNzSW5mbzo6aXNP
cGVyYXRpbmdTeXN0ZW1BdExlYXN0VmVyc2lvbihPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIHZlcnNp
b24pIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNpb25fKSwgdmVyc2lv
bik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6UHJvY2Vzc0luZm86OnByb2Nlc3NvckNvdW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKHByb2Nlc3NvckNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdl
ciBOUzo6UHJvY2Vzc0luZm86OmFjdGl2ZVByb2Nlc3NvckNvdW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGFjdGl2ZVByb2Nlc3NvckNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIGxvbmcgbG9uZyBOUzo6
UHJvY2Vzc0luZm86OnBoeXNpY2FsTWVtb3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTx1bnNpZ25lZCBsb25nIGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTChw
aHlzaWNhbE1lbW9yeSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VGltZUludGVydmFsIE5TOjpQcm9jZXNzSW5m
bzo6c3lzdGVtVXB0aW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxUaW1lSW50ZXJ2YWw+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzeXN0ZW1VcHRpbWUpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5m
bzo6ZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2VT
YWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChlbmFibGVTdWRkZW5UZXJtaW5hdGlvbikp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0
aW9uKGNvbnN0IFN0cmluZyogcFJlYXNvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlU2Fm
ZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9u
XyksIHBSZWFzb24pOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZW5hYmxlQXV0b21h
dGljVGVybWluYXRpb24oY29uc3QgU3RyaW5nKiBwUmVhc29uKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2VTYWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChlbmFibGVBdXRvbWF0aWNU
ZXJtaW5hdGlvbl8pLCBwUmVhc29uKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6UHJvY2Vzc0luZm86OmF1
dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYXV0b21h
dGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNz
SW5mbzo6c2V0QXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKHNldEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWRfKSwgZW5hYmxlZCk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpPYmplY3QqIE5TOjpQcm9jZXNzSW5mbzo6YmVnaW5BY3Rpdml0eShBY3Rpdml0
eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU3RyaW5nKiBwUmVhc29uKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE9iamVjdCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChiZWdpbkFj
dGl2aXR5V2l0aE9wdGlvbnNfcmVhc29uXyksIG9wdGlvbnMsIHBSZWFzb24pOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2
b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZW5kQWN0aXZpdHkoT2JqZWN0KiBwQWN0aXZpdHkpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZW5kQWN0
aXZpdHlfKSwgcEFjdGl2aXR5KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OnBlcmZv
cm1BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU3RyaW5nKiBwUmVhc29u
LCB2b2lkICheYmxvY2spKHZvaWQpKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKHBlcmZvcm1BY3Rpdml0eVdpdGhPcHRpb25zX3JlYXNvbl91
c2luZ0Jsb2NrXyksIG9wdGlvbnMsIHBSZWFzb24sIGJsb2NrKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6
UHJvY2Vzc0luZm86OnBlcmZvcm1BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgY29u
c3QgU3RyaW5nKiBwUmVhc29uLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9u
KQoreworICAgIF9fYmxvY2sgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGJsb2NrRnVuY3Rpb24gPSBm
dW5jdGlvbjsKKworICAgIHBlcmZvcm1BY3Rpdml0eShvcHRpb25zLCBwUmVhc29uLCBeKCkgeyBi
bG9ja0Z1bmN0aW9uKCk7IH0pOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6cGVyZm9y
bUV4cGlyaW5nQWN0aXZpdHkoY29uc3QgU3RyaW5nKiBwUmVhc29uLCB2b2lkICheYmxvY2spKGJv
b2wgZXhwaXJlZCkpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywg
X05TX1BSSVZBVEVfU0VMKHBlcmZvcm1FeHBpcmluZ0FjdGl2aXR5V2l0aFJlYXNvbl91c2luZ0Js
b2NrXyksIHBSZWFzb24sIGJsb2NrKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OnBl
cmZvcm1FeHBpcmluZ0FjdGl2aXR5KGNvbnN0IFN0cmluZyogcFJlYXNvbiwgY29uc3Qgc3RkOjpm
dW5jdGlvbjx2b2lkKGJvb2wgZXhwaXJlZCk+JiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIHN0
ZDo6ZnVuY3Rpb248dm9pZChib29sIGV4cGlyZWQpPiBibG9ja0Z1bmN0aW9uID0gZnVuY3Rpb247
CisKKyAgICBwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShwUmVhc29uLCBeKGJvb2wgZXhwaXJlZCkg
eyBibG9ja0Z1bmN0aW9uKGV4cGlyZWQpOyB9KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlByb2Nlc3NJbmZvVGhl
cm1hbFN0YXRlIE5TOjpQcm9jZXNzSW5mbzo6dGhlcm1hbFN0YXRlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZT4odGhpcywg
X05TX1BSSVZBVEVfU0VMKHRoZXJtYWxTdGF0ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9jZXNz
SW5mbzo6aXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzTG93UG93ZXJN
b2RlRW5hYmxlZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9jZXNzSW5mbzo6aXNpT1NBcHBPbk1h
YygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChpc2lPU0FwcE9uTWFjKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlBy
b2Nlc3NJbmZvOjppc01hY0NhdGFseXN0QXBwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzTWFjQ2F0YWx5
c3RBcHApKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU1JhbmdlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TUmFuZ2UuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNDY3ZDYwY2VlMzNhYjI4YjA4MWUwZDJkZDUzNzI4
NzY1YjBhOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU1JhbmdlLmhwcApAQCAtMCwwICsxLDgzIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TUmFu
Z2UuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1
ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK3N0
cnVjdCBSYW5nZQoreworICAgIHN0YXRpYyBSYW5nZSBNYWtlKFVJbnRlZ2VyIGxvYywgVUludGVn
ZXIgbGVuKTsKKworICAgIFJhbmdlKFVJbnRlZ2VyIGxvYywgVUludGVnZXIgbGVuKTsKKworICAg
IGJvb2wgICAgIEVxdWFsKGNvbnN0IFJhbmdlJiByYW5nZSkgY29uc3Q7CisgICAgYm9vbCAgICAg
TG9jYXRpb25JblJhbmdlKFVJbnRlZ2VyIGxvYykgY29uc3Q7CisgICAgVUludGVnZXIgTWF4KCkg
Y29uc3Q7CisKKyAgICBVSW50ZWdlciBsb2NhdGlvbjsKKyAgICBVSW50ZWdlciBsZW5ndGg7Cit9
IF9OU19QQUNLRUQ7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpSYW5nZTo6UmFuZ2UoVUludGVnZXIgbG9jLCBVSW50
ZWdlciBsZW4pCisgICAgOiBsb2NhdGlvbihsb2MpCisgICAgLCBsZW5ndGgobGVuKQoreworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6UmFuZ2UgTlM6OlJhbmdlOjpNYWtlKFVJbnRlZ2VyIGxvYywgVUludGVnZXIgbGVu
KQoreworICAgIHJldHVybiBSYW5nZShsb2MsIGxlbik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlJhbmdl
OjpFcXVhbChjb25zdCBSYW5nZSYgcmFuZ2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIChsb2NhdGlv
biA9PSByYW5nZS5sb2NhdGlvbikgJiYgKGxlbmd0aCA9PSByYW5nZS5sZW5ndGgpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBib29sIE5TOjpSYW5nZTo6TG9jYXRpb25JblJhbmdlKFVJbnRlZ2VyIGxvYykgY29uc3QKK3sK
KyAgICByZXR1cm4gKCEobG9jIDwgbG9jYXRpb24pKSAmJiAoKGxvYyAtIGxvY2F0aW9uKSA8IGxl
bmd0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6UmFuZ2U6Ok1heCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGxvY2F0aW9uICsgbGVuZ3RoOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjlkZWNiOTAx
ZjczNWUxNGU4N2YwZWJlOGZkOTE3YWE0ZTAyZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNTdHJpbmcuaHBwCkBAIC0wLDAg
KzEsMjQ1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vCisvLyBGb3VuZGF0aW9uL05TU3RyaW5nLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIw
MjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5T
T2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TUmFuZ2Uu
aHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitfTlNfRU5VTShOUzo6VUlu
dGVnZXIsIFN0cmluZ0VuY29kaW5nKSB7CisgICAgQVNDSUlTdHJpbmdFbmNvZGluZyA9IDEsCisg
ICAgTkVYVFNURVBTdHJpbmdFbmNvZGluZyA9IDIsCisgICAgSmFwYW5lc2VFVUNTdHJpbmdFbmNv
ZGluZyA9IDMsCisgICAgVVRGOFN0cmluZ0VuY29kaW5nID0gNCwKKyAgICBJU09MYXRpbjFTdHJp
bmdFbmNvZGluZyA9IDUsCisgICAgU3ltYm9sU3RyaW5nRW5jb2RpbmcgPSA2LAorICAgIE5vbkxv
c3N5QVNDSUlTdHJpbmdFbmNvZGluZyA9IDcsCisgICAgU2hpZnRKSVNTdHJpbmdFbmNvZGluZyA9
IDgsCisgICAgSVNPTGF0aW4yU3RyaW5nRW5jb2RpbmcgPSA5LAorICAgIFVuaWNvZGVTdHJpbmdF
bmNvZGluZyA9IDEwLAorICAgIFdpbmRvd3NDUDEyNTFTdHJpbmdFbmNvZGluZyA9IDExLAorICAg
IFdpbmRvd3NDUDEyNTJTdHJpbmdFbmNvZGluZyA9IDEyLAorICAgIFdpbmRvd3NDUDEyNTNTdHJp
bmdFbmNvZGluZyA9IDEzLAorICAgIFdpbmRvd3NDUDEyNTRTdHJpbmdFbmNvZGluZyA9IDE0LAor
ICAgIFdpbmRvd3NDUDEyNTBTdHJpbmdFbmNvZGluZyA9IDE1LAorICAgIElTTzIwMjJKUFN0cmlu
Z0VuY29kaW5nID0gMjEsCisgICAgTWFjT1NSb21hblN0cmluZ0VuY29kaW5nID0gMzAsCisKKyAg
ICBVVEYxNlN0cmluZ0VuY29kaW5nID0gVW5pY29kZVN0cmluZ0VuY29kaW5nLAorCisgICAgVVRG
MTZCaWdFbmRpYW5TdHJpbmdFbmNvZGluZyA9IDB4OTAwMDAxMDAsCisgICAgVVRGMTZMaXR0bGVF
bmRpYW5TdHJpbmdFbmNvZGluZyA9IDB4OTQwMDAxMDAsCisKKyAgICBVVEYzMlN0cmluZ0VuY29k
aW5nID0gMHg4YzAwMDEwMCwKKyAgICBVVEYzMkJpZ0VuZGlhblN0cmluZ0VuY29kaW5nID0gMHg5
ODAwMDEwMCwKKyAgICBVVEYzMkxpdHRsZUVuZGlhblN0cmluZ0VuY29kaW5nID0gMHg5YzAwMDEw
MAorfTsKKworX05TX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBTdHJpbmdDb21wYXJlT3B0aW9ucykg
eworICAgIENhc2VJbnNlbnNpdGl2ZVNlYXJjaCA9IDEsCisgICAgTGl0ZXJhbFNlYXJjaCA9IDIs
CisgICAgQmFja3dhcmRzU2VhcmNoID0gNCwKKyAgICBBbmNob3JlZFNlYXJjaCA9IDgsCisgICAg
TnVtZXJpY1NlYXJjaCA9IDY0LAorICAgIERpYWNyaXRpY0luc2Vuc2l0aXZlU2VhcmNoID0gMTI4
LAorICAgIFdpZHRoSW5zZW5zaXRpdmVTZWFyY2ggPSAyNTYsCisgICAgRm9yY2VkT3JkZXJpbmdT
ZWFyY2ggPSA1MTIsCisgICAgUmVndWxhckV4cHJlc3Npb25TZWFyY2ggPSAxMDI0Cit9OworCit1
c2luZyB1bmljaGFyID0gdW5zaWduZWQgc2hvcnQ7CisKK2NsYXNzIFN0cmluZyA6IHB1YmxpYyBD
b3B5aW5nPFN0cmluZz4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RyaW5nKiBzdHJpbmcoKTsK
KyAgICBzdGF0aWMgU3RyaW5nKiBzdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nKTsKKyAgICBz
dGF0aWMgU3RyaW5nKiBzdHJpbmcoY29uc3QgY2hhciogcFN0cmluZywgU3RyaW5nRW5jb2Rpbmcg
ZW5jb2RpbmcpOworCisgICAgc3RhdGljIFN0cmluZyogYWxsb2MoKTsKKyAgICBTdHJpbmcqICAg
ICAgICBpbml0KCk7CisgICAgU3RyaW5nKiAgICAgICAgaW5pdChjb25zdCBTdHJpbmcqIHBTdHJp
bmcpOworICAgIFN0cmluZyogICAgICAgIGluaXQoY29uc3QgY2hhciogcFN0cmluZywgU3RyaW5n
RW5jb2RpbmcgZW5jb2RpbmcpOworICAgIFN0cmluZyogICAgICAgIGluaXQodm9pZCogcEJ5dGVz
LCBVSW50ZWdlciBsZW4sIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nLCBib29sIGZyZWVCdWZmZXIp
OworCisgICAgdW5pY2hhciAgICAgICAgY2hhcmFjdGVyKFVJbnRlZ2VyIGluZGV4KSBjb25zdDsK
KyAgICBVSW50ZWdlciAgICAgICBsZW5ndGgoKSBjb25zdDsKKworICAgIGNvbnN0IGNoYXIqICAg
IGNTdHJpbmcoU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpIGNvbnN0OworICAgIGNvbnN0IGNoYXIq
ICAgIHV0ZjhTdHJpbmcoKSBjb25zdDsKKyAgICBVSW50ZWdlciAgICAgICBtYXhpbXVtTGVuZ3Ro
T2ZCeXRlcyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3Q7CisgICAgVUludGVnZXIgICAg
ICAgbGVuZ3RoT2ZCeXRlcyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICBpc0VxdWFsVG9TdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nKSBjb25z
dDsKKyAgICBSYW5nZSAgICAgICAgICByYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyogcFN0cmlu
ZywgU3RyaW5nQ29tcGFyZU9wdGlvbnMgb3B0aW9ucykgY29uc3Q7CisKKyAgICBjb25zdCBjaGFy
KiAgICBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKworICAgIFN0cmluZyogICAg
ICAgIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nKGNvbnN0IFN0cmluZyogcFN0cmluZykgY29uc3Q7
CisKK307CisKK3RlbXBsYXRlPCBzdGQ6OnNpemVfdCBfU3RyaW5nTGVuID4KK2NvbnN0ZXhwciBj
b25zdCBTdHJpbmcqIE1ha2VDb25zdGFudFN0cmluZyggY29uc3QgY2hhciAoICZzdHIgKVtfU3Ry
aW5nTGVuXSApCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8IGNvbnN0IFN0cmluZyog
PiggX19DRlN0cmluZ01ha2VDb25zdGFudFN0cmluZyggc3RyICkgKTsKK30KKworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6U3RyaW5nKiBOUzo6U3RyaW5nOjpzdHJpbmcoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPFN0cmluZyo+KF9OU19QUklWQVRFX0NMUyhOU1N0cmluZyksIF9OU19QUklWQVRF
X1NFTChzdHJpbmcpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlN0cmluZzo6c3RyaW5nKGNv
bnN0IFN0cmluZyogcFN0cmluZykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxT
dHJpbmcqPihfTlNfUFJJVkFURV9DTFMoTlNTdHJpbmcpLCBfTlNfUFJJVkFURV9TRUwoc3RyaW5n
V2l0aFN0cmluZ18pLCBwU3RyaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlN0cmluZzo6
c3RyaW5nKGNvbnN0IGNoYXIqIHBTdHJpbmcsIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KF9OU19QUklWQVRFX0NMUyhO
U1N0cmluZyksIF9OU19QUklWQVRFX1NFTChzdHJpbmdXaXRoQ1N0cmluZ19lbmNvZGluZ18pLCBw
U3RyaW5nLCBlbmNvZGluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjphbGxvYzxTdHJpbmc+KF9OU19QUklWQVRFX0NMUyhO
U1N0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0Ojppbml0PFN0cmluZz4oKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6
OlN0cmluZzo6aW5pdChjb25zdCBTdHJpbmcqIHBTdHJpbmcpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoU3Ry
aW5nXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KGNv
bnN0IGNoYXIqIHBTdHJpbmcsIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0
V2l0aENTdHJpbmdfZW5jb2RpbmdfKSwgcFN0cmluZywgZW5jb2RpbmcpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KHZvaWQqIHBCeXRlcywgVUludGVnZXIgbGVuLCBTdHJp
bmdFbmNvZGluZyBlbmNvZGluZywgYm9vbCBmcmVlQnVmZmVyKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aEJ5
dGVzTm9Db3B5X2xlbmd0aF9lbmNvZGluZ19mcmVlV2hlbkRvbmVfKSwgcEJ5dGVzLCBsZW4sIGVu
Y29kaW5nLCBmcmVlQnVmZmVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OnVuaWNoYXIgTlM6OlN0cmluZzo6Y2hh
cmFjdGVyKFVJbnRlZ2VyIGluZGV4KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHVuaWNoYXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChjaGFyYWN0ZXJBdEluZGV4Xyks
IGluZGV4KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpTdHJpbmc6Omxlbmd0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChsZW5ndGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgY29uc3QgY2hhciogTlM6OlN0cmluZzo6Y1N0
cmluZyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxjb25zdCBjaGFyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNTdHJpbmdV
c2luZ0VuY29kaW5nXyksIGVuY29kaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgY29uc3QgY2hhciogTlM6OlN0cmlu
Zzo6dXRmOFN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Y29uc3QgY2hhcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChVVEY4U3RyaW5nKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpVSW50ZWdlciBOUzo6U3RyaW5nOjptYXhpbXVtTGVuZ3RoT2ZCeXRlcyhTdHJpbmdFbmNv
ZGluZyBlbmNvZGluZykgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxV
SW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG1heGltdW1MZW5ndGhPZkJ5dGVzVXNpbmdF
bmNvZGluZ18pLCBlbmNvZGluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6U3RyaW5nOjps
ZW5ndGhPZkJ5dGVzKFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobGVu
Z3RoT2ZCeXRlc1VzaW5nRW5jb2RpbmdfKSwgZW5jb2RpbmcpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpT
dHJpbmc6OmlzRXF1YWxUb1N0cmluZyhjb25zdCBOUzo6U3RyaW5nKiBwU3RyaW5nKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChpc0VxdWFsVG9TdHJpbmdfKSwgcFN0cmluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpSYW5nZSBOUzo6
U3RyaW5nOjpyYW5nZU9mU3RyaW5nKGNvbnN0IE5TOjpTdHJpbmcqIHBTdHJpbmcsIE5TOjpTdHJp
bmdDb21wYXJlT3B0aW9ucyBvcHRpb25zKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPFJhbmdlPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocmFuZ2VPZlN0cmluZ19vcHRp
b25zXyksIHBTdHJpbmcsIG9wdGlvbnMpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBjb25zdCBjaGFyKiBOUzo6U3RyaW5nOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGNvbnN0IGNoYXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OnN0cmluZ0J5QXBw
ZW5kaW5nU3RyaW5nKGNvbnN0IFN0cmluZyogcFN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHN0
cmluZ0J5QXBwZW5kaW5nU3RyaW5nXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNUeXBlcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY4YWRh
MTJjZThmYmZiM2NhOTZiOGQ1ODU2MjI0NjE3MTllODdlNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwCkBAIC0w
LDAgKzEsNTEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIEZvdW5kYXRpb24vTlNUeXBlcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0y
MDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKworI2luY2x1ZGUg
PENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFj
ZSBOUworewordXNpbmcgVGltZUludGVydmFsID0gZG91YmxlOworCit1c2luZyBJbnRlZ2VyID0g
c3RkOjppbnRwdHJfdDsKK3VzaW5nIFVJbnRlZ2VyID0gc3RkOjp1aW50cHRyX3Q7CisKK2NvbnN0
IEludGVnZXIgIEludGVnZXJNYXggPSBJTlRQVFJfTUFYOworY29uc3QgSW50ZWdlciAgSW50ZWdl
ck1pbiA9IElOVFBUUl9NSU47Citjb25zdCBVSW50ZWdlciBVSW50ZWdlck1heCA9IFVJTlRQVFJf
TUFYOworCitzdHJ1Y3QgT3BlcmF0aW5nU3lzdGVtVmVyc2lvbgoreworICAgIEludGVnZXIgbWFq
b3JWZXJzaW9uOworICAgIEludGVnZXIgbWlub3JWZXJzaW9uOworICAgIEludGVnZXIgcGF0Y2hW
ZXJzaW9uOworfSBfTlNfUEFDS0VEOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9Gb3VuZGF0aW9uL05TVVJMLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TVVJMLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTBlN2EyMDc3MDczNGRmZGEyY2Rl
Nzc0ZGFhNGM0MzIyNGRkYmQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwCkBAIC0wLDAgKzEsOTAgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRp
b24vTlNVUkwuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1
ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK2Ns
YXNzIFVSTCA6IHB1YmxpYyBDb3B5aW5nPFVSTD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgVVJM
KiBmaWxlVVJMV2l0aFBhdGgoY29uc3QgY2xhc3MgU3RyaW5nKiBwUGF0aCk7CisKKyAgICBzdGF0
aWMgVVJMKiBhbGxvYygpOworICAgIFVSTCogICAgICAgIGluaXQoKTsKKyAgICBVUkwqICAgICAg
ICBpbml0KGNvbnN0IGNsYXNzIFN0cmluZyogcFN0cmluZyk7CisgICAgVVJMKiAgICAgICAgaW5p
dEZpbGVVUkxXaXRoUGF0aChjb25zdCBjbGFzcyBTdHJpbmcqIHBQYXRoKTsKKworICAgIGNvbnN0
IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigpIGNvbnN0OworfTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OlVSTCogTlM6OlVSTDo6ZmlsZVVSTFdpdGhQYXRoKGNvbnN0IFN0cmluZyogcFBhdGgpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4oX05TX1BSSVZBVEVfQ0xTKE5TVVJM
KSwgX05TX1BSSVZBVEVfU0VMKGZpbGVVUkxXaXRoUGF0aF8pLCBwUGF0aCk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpVUkwqIE5TOjpVUkw6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjphbGxvYzxVUkw+
KF9OU19QUklWQVRFX0NMUyhOU1VSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjppbml0
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojppbml0PFVSTD4oKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCog
TlM6OlVSTDo6aW5pdChjb25zdCBTdHJpbmcqIHBTdHJpbmcpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoU3RyaW5n
XyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjppbml0RmlsZVVSTFdpdGhQ
YXRoKGNvbnN0IFN0cmluZyogcFBhdGgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRGaWxlVVJMV2l0aFBhdGhfKSwgcFBh
dGgpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBjb25zdCBjaGFyKiBOUzo6VVJMOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNvbnN0IGNoYXIq
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0xJQ0VOU0UudHh0IGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL0xJQ0VOU0UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNzQzYzY3ZTlm
ZDM2NDljYzBlMWM4NmI5MTExZWUxZWEyNTkzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTElDRU5TRS50eHQKQEAgLTAsMCArMSwyMDIgQEAKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMi4wLCBKYW51YXJ5IDIwMDQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8KKworICAgVEVSTVMg
QU5EIENPTkRJVElPTlMgRk9SIFVTRSwgUkVQUk9EVUNUSU9OLCBBTkQgRElTVFJJQlVUSU9OCisK
KyAgIDEuIERlZmluaXRpb25zLgorCisgICAgICAiTGljZW5zZSIgc2hhbGwgbWVhbiB0aGUgdGVy
bXMgYW5kIGNvbmRpdGlvbnMgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLAorICAgICAgYW5kIGRpc3Ry
aWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1l
bnQuCisKKyAgICAgICJMaWNlbnNvciIgc2hhbGwgbWVhbiB0aGUgY29weXJpZ2h0IG93bmVyIG9y
IGVudGl0eSBhdXRob3JpemVkIGJ5CisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMg
Z3JhbnRpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgICJMZWdhbCBFbnRpdHkiIHNoYWxsIG1lYW4g
dGhlIHVuaW9uIG9mIHRoZSBhY3RpbmcgZW50aXR5IGFuZCBhbGwKKyAgICAgIG90aGVyIGVudGl0
aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24K
KyAgICAgIGNvbnRyb2wgd2l0aCB0aGF0IGVudGl0eS4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlz
IGRlZmluaXRpb24sCisgICAgICAiY29udHJvbCIgbWVhbnMgKGkpIHRoZSBwb3dlciwgZGlyZWN0
IG9yIGluZGlyZWN0LCB0byBjYXVzZSB0aGUKKyAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50
IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCisgICAgICBvdGhlcndpc2Us
IG9yIChpaSkgb3duZXJzaGlwIG9mIGZpZnR5IHBlcmNlbnQgKDUwJSkgb3IgbW9yZSBvZiB0aGUK
KyAgICAgIG91dHN0YW5kaW5nIHNoYXJlcywgb3IgKGlpaSkgYmVuZWZpY2lhbCBvd25lcnNoaXAg
b2Ygc3VjaCBlbnRpdHkuCisKKyAgICAgICJZb3UiIChvciAiWW91ciIpIHNoYWxsIG1lYW4gYW4g
aW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKKyAgICAgIGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMg
Z3JhbnRlZCBieSB0aGlzIExpY2Vuc2UuCisKKyAgICAgICJTb3VyY2UiIGZvcm0gc2hhbGwgbWVh
biB0aGUgcHJlZmVycmVkIGZvcm0gZm9yIG1ha2luZyBtb2RpZmljYXRpb25zLAorICAgICAgaW5j
bHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBzb2Z0d2FyZSBzb3VyY2UgY29kZSwgZG9jdW1lbnRh
dGlvbgorICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KKworICAgICAgIk9i
amVjdCIgZm9ybSBzaGFsbCBtZWFuIGFueSBmb3JtIHJlc3VsdGluZyBmcm9tIG1lY2hhbmljYWwK
KyAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGlu
Y2x1ZGluZyBidXQKKyAgICAgIG5vdCBsaW1pdGVkIHRvIGNvbXBpbGVkIG9iamVjdCBjb2RlLCBn
ZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiwKKyAgICAgIGFuZCBjb252ZXJzaW9ucyB0byBvdGhlciBt
ZWRpYSB0eXBlcy4KKworICAgICAgIldvcmsiIHNoYWxsIG1lYW4gdGhlIHdvcmsgb2YgYXV0aG9y
c2hpcCwgd2hldGhlciBpbiBTb3VyY2Ugb3IKKyAgICAgIE9iamVjdCBmb3JtLCBtYWRlIGF2YWls
YWJsZSB1bmRlciB0aGUgTGljZW5zZSwgYXMgaW5kaWNhdGVkIGJ5IGEKKyAgICAgIGNvcHlyaWdo
dCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yaworICAg
ICAgKGFuIGV4YW1wbGUgaXMgcHJvdmlkZWQgaW4gdGhlIEFwcGVuZGl4IGJlbG93KS4KKworICAg
ICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291
cmNlIG9yIE9iamVjdAorICAgICAgZm9ybSwgdGhhdCBpcyBiYXNlZCBvbiAob3IgZGVyaXZlZCBm
cm9tKSB0aGUgV29yayBhbmQgZm9yIHdoaWNoIHRoZQorICAgICAgZWRpdG9yaWFsIHJldmlzaW9u
cywgYW5ub3RhdGlvbnMsIGVsYWJvcmF0aW9ucywgb3Igb3RoZXIgbW9kaWZpY2F0aW9ucworICAg
ICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAu
IEZvciB0aGUgcHVycG9zZXMKKyAgICAgIG9mIHRoaXMgTGljZW5zZSwgRGVyaXZhdGl2ZSBXb3Jr
cyBzaGFsbCBub3QgaW5jbHVkZSB3b3JrcyB0aGF0IHJlbWFpbgorICAgICAgc2VwYXJhYmxlIGZy
b20sIG9yIG1lcmVseSBsaW5rIChvciBiaW5kIGJ5IG5hbWUpIHRvIHRoZSBpbnRlcmZhY2VzIG9m
LAorICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KKworICAgICAg
IkNvbnRyaWJ1dGlvbiIgc2hhbGwgbWVhbiBhbnkgd29yayBvZiBhdXRob3JzaGlwLCBpbmNsdWRp
bmcKKyAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZp
Y2F0aW9ucyBvciBhZGRpdGlvbnMKKyAgICAgIHRvIHRoYXQgV29yayBvciBEZXJpdmF0aXZlIFdv
cmtzIHRoZXJlb2YsIHRoYXQgaXMgaW50ZW50aW9uYWxseQorICAgICAgc3VibWl0dGVkIHRvIExp
Y2Vuc29yIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsgYnkgdGhlIGNvcHlyaWdodCBvd25lcgor
ICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBz
dWJtaXQgb24gYmVoYWxmIG9mCisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyLiBGb3IgdGhlIHB1
cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgInN1Ym1pdHRlZCIKKyAgICAgIG1lYW5zIGFueSBm
b3JtIG9mIGVsZWN0cm9uaWMsIHZlcmJhbCwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9uIHNlbnQK
KyAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcg
YnV0IG5vdCBsaW1pdGVkIHRvCisgICAgICBjb21tdW5pY2F0aW9uIG9uIGVsZWN0cm9uaWMgbWFp
bGluZyBsaXN0cywgc291cmNlIGNvZGUgY29udHJvbCBzeXN0ZW1zLAorICAgICAgYW5kIGlzc3Vl
IHRyYWNraW5nIHN5c3RlbXMgdGhhdCBhcmUgbWFuYWdlZCBieSwgb3Igb24gYmVoYWxmIG9mLCB0
aGUKKyAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXBy
b3ZpbmcgdGhlIFdvcmssIGJ1dAorICAgICAgZXhjbHVkaW5nIGNvbW11bmljYXRpb24gdGhhdCBp
cyBjb25zcGljdW91c2x5IG1hcmtlZCBvciBvdGhlcndpc2UKKyAgICAgIGRlc2lnbmF0ZWQgaW4g
d3JpdGluZyBieSB0aGUgY29weXJpZ2h0IG93bmVyIGFzICJOb3QgYSBDb250cmlidXRpb24uIgor
CisgICAgICAiQ29udHJpYnV0b3IiIHNoYWxsIG1lYW4gTGljZW5zb3IgYW5kIGFueSBpbmRpdmlk
dWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgb24gYmVoYWxmIG9mIHdob20gYSBDb250cmlidXRp
b24gaGFzIGJlZW4gcmVjZWl2ZWQgYnkgTGljZW5zb3IgYW5kCisgICAgICBzdWJzZXF1ZW50bHkg
aW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KKworICAgMi4gR3JhbnQgb2YgQ29weXJpZ2h0
IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0
aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJw
ZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0
eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgY29weXJpZ2h0IGxpY2Vuc2UgdG8gcmVwcm9kdWNl
LCBwcmVwYXJlIERlcml2YXRpdmUgV29ya3Mgb2YsCisgICAgICBwdWJsaWNseSBkaXNwbGF5LCBw
dWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKKyAgICAgIFdv
cmsgYW5kIHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0uCisK
KyAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQg
Y29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVi
eSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVz
aXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAgIChleGNlcHQg
YXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBt
YWRlLAorICAgICAgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCBvdGhlcndp
c2UgdHJhbnNmZXIgdGhlIFdvcmssCisgICAgICB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBv
bmx5IHRvIHRob3NlIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZQorICAgICAgYnkgc3VjaCBDb250
cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKKyAgICAgIENv
bnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciBDb250cmlidXRp
b24ocykKKyAgICAgIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBDb250cmlidXRpb24ocykg
d2FzIHN1Ym1pdHRlZC4gSWYgWW91CisgICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24g
YWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQorICAgICAgY3Jvc3MtY2xhaW0gb3IgY291
bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgV29yaworICAgICAgb3Ig
YSBDb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyBk
aXJlY3QKKyAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFu
eSBwYXRlbnQgbGljZW5zZXMKKyAgICAgIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5z
ZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZQorICAgICAgYXMgb2YgdGhlIGRhdGUgc3Vj
aCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgorCisgICA0LiBSZWRpc3RyaWJ1dGlvbi4gWW91IG1heSBy
ZXByb2R1Y2UgYW5kIGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZQorICAgICAgV29yayBvciBEZXJp
dmF0aXZlIFdvcmtzIHRoZXJlb2YgaW4gYW55IG1lZGl1bSwgd2l0aCBvciB3aXRob3V0CisgICAg
ICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0
aGF0IFlvdQorICAgICAgbWVldCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICAgIChh
KSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCisgICAg
ICAgICAgRGVyaXZhdGl2ZSBXb3JrcyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlOyBhbmQKKworICAg
ICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5l
bnQgbm90aWNlcworICAgICAgICAgIHN0YXRpbmcgdGhhdCBZb3UgY2hhbmdlZCB0aGUgZmlsZXM7
IGFuZAorCisgICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2Yg
YW55IERlcml2YXRpdmUgV29ya3MKKyAgICAgICAgICB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbGwg
Y29weXJpZ2h0LCBwYXRlbnQsIHRyYWRlbWFyaywgYW5kCisgICAgICAgICAgYXR0cmlidXRpb24g
bm90aWNlcyBmcm9tIHRoZSBTb3VyY2UgZm9ybSBvZiB0aGUgV29yaywKKyAgICAgICAgICBleGNs
dWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCisg
ICAgICAgICAgdGhlIERlcml2YXRpdmUgV29ya3M7IGFuZAorCisgICAgICAoZCkgSWYgdGhlIFdv
cmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKKyAgICAgICAg
ICBkaXN0cmlidXRpb24sIHRoZW4gYW55IERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJp
YnV0ZSBtdXN0CisgICAgICAgICAgaW5jbHVkZSBhIHJlYWRhYmxlIGNvcHkgb2YgdGhlIGF0dHJp
YnV0aW9uIG5vdGljZXMgY29udGFpbmVkCisgICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZp
bGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CisgICAgICAgICAgcGVydGFp
biB0byBhbnkgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaW4gYXQgbGVhc3Qgb25lCisg
ICAgICAgICAgb2YgdGhlIGZvbGxvd2luZyBwbGFjZXM6IHdpdGhpbiBhIE5PVElDRSB0ZXh0IGZp
bGUgZGlzdHJpYnV0ZWQKKyAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtz
OyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCisgICAgICAgICAgZG9jdW1lbnRhdGlvbiwgaWYg
cHJvdmlkZWQgYWxvbmcgd2l0aCB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgb3IsCisgICAgICAgICAg
d2l0aGluIGEgZGlzcGxheSBnZW5lcmF0ZWQgYnkgdGhlIERlcml2YXRpdmUgV29ya3MsIGlmIGFu
ZAorICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBh
cHBlYXIuIFRoZSBjb250ZW50cworICAgICAgICAgIG9mIHRoZSBOT1RJQ0UgZmlsZSBhcmUgZm9y
IGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSBhbmQKKyAgICAgICAgICBkbyBub3QgbW9kaWZ5
IHRoZSBMaWNlbnNlLiBZb3UgbWF5IGFkZCBZb3VyIG93biBhdHRyaWJ1dGlvbgorICAgICAgICAg
IG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxv
bmdzaWRlCisgICAgICAgICAgb3IgYXMgYW4gYWRkZW5kdW0gdG8gdGhlIE5PVElDRSB0ZXh0IGZy
b20gdGhlIFdvcmssIHByb3ZpZGVkCisgICAgICAgICAgdGhhdCBzdWNoIGFkZGl0aW9uYWwgYXR0
cmlidXRpb24gbm90aWNlcyBjYW5ub3QgYmUgY29uc3RydWVkCisgICAgICAgICAgYXMgbW9kaWZ5
aW5nIHRoZSBMaWNlbnNlLgorCisgICAgICBZb3UgbWF5IGFkZCBZb3VyIG93biBjb3B5cmlnaHQg
c3RhdGVtZW50IHRvIFlvdXIgbW9kaWZpY2F0aW9ucyBhbmQKKyAgICAgIG1heSBwcm92aWRlIGFk
ZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKKyAgICAg
IGZvciB1c2UsIHJlcHJvZHVjdGlvbiwgb3IgZGlzdHJpYnV0aW9uIG9mIFlvdXIgbW9kaWZpY2F0
aW9ucywgb3IKKyAgICAgIGZvciBhbnkgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGFzIGEgd2hvbGUs
IHByb3ZpZGVkIFlvdXIgdXNlLAorICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9u
IG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCisgICAgICB0aGUgY29uZGl0aW9u
cyBzdGF0ZWQgaW4gdGhpcyBMaWNlbnNlLgorCisgICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1
dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCisgICAgICBhbnkg
Q29udHJpYnV0aW9uIGludGVudGlvbmFsbHkgc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW4gdGhl
IFdvcmsKKyAgICAgIGJ5IFlvdSB0byB0aGUgTGljZW5zb3Igc2hhbGwgYmUgdW5kZXIgdGhlIHRl
cm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFk
ZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KKyAgICAgIE5vdHdpdGhzdGFuZGluZyB0aGUg
YWJvdmUsIG5vdGhpbmcgaGVyZWluIHNoYWxsIHN1cGVyc2VkZSBvciBtb2RpZnkKKyAgICAgIHRo
ZSB0ZXJtcyBvZiBhbnkgc2VwYXJhdGUgbGljZW5zZSBhZ3JlZW1lbnQgeW91IG1heSBoYXZlIGV4
ZWN1dGVkCisgICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMu
CisKKyAgIDYuIFRyYWRlbWFya3MuIFRoaXMgTGljZW5zZSBkb2VzIG5vdCBncmFudCBwZXJtaXNz
aW9uIHRvIHVzZSB0aGUgdHJhZGUKKyAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1h
cmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKKyAgICAgIGV4Y2VwdCBhcyBy
ZXF1aXJlZCBmb3IgcmVhc29uYWJsZSBhbmQgY3VzdG9tYXJ5IHVzZSBpbiBkZXNjcmliaW5nIHRo
ZQorICAgICAgb3JpZ2luIG9mIHRoZSBXb3JrIGFuZCByZXByb2R1Y2luZyB0aGUgY29udGVudCBv
ZiB0aGUgTk9USUNFIGZpbGUuCisKKyAgIDcuIERpc2NsYWltZXIgb2YgV2FycmFudHkuIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvcgorICAgICAgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIExpY2Vuc29yIHByb3ZpZGVzIHRoZSBXb3JrIChhbmQgZWFjaAorICAgICAgQ29udHJpYnV0
b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAg
ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IKKyAgICAgIGltcGxpZWQsIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCBh
bnkgd2FycmFudGllcyBvciBjb25kaXRpb25zCisgICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdF
TUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCisgICAgICBQQVJUSUNVTEFS
IFBVUlBPU0UuIFlvdSBhcmUgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUK
KyAgICAgIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBvciByZWRpc3RyaWJ1dGluZyB0aGUgV29y
ayBhbmQgYXNzdW1lIGFueQorICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNp
c2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisgICA4LiBMaW1pdGF0aW9u
IG9mIExpYWJpbGl0eS4gSW4gbm8gZXZlbnQgYW5kIHVuZGVyIG5vIGxlZ2FsIHRoZW9yeSwKKyAg
ICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Ig
b3RoZXJ3aXNlLAorICAgICAgdW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IChzdWNo
IGFzIGRlbGliZXJhdGUgYW5kIGdyb3NzbHkKKyAgICAgIG5lZ2xpZ2VudCBhY3RzKSBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc2hhbGwgYW55IENvbnRyaWJ1dG9yIGJlCisgICAgICBsaWFibGUg
dG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNp
YWwsCisgICAgICBpbmNpZGVudGFsLCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb2YgYW55IGNo
YXJhY3RlciBhcmlzaW5nIGFzIGEKKyAgICAgIHJlc3VsdCBvZiB0aGlzIExpY2Vuc2Ugb3Igb3V0
IG9mIHRoZSB1c2Ugb3IgaW5hYmlsaXR5IHRvIHVzZSB0aGUKKyAgICAgIFdvcmsgKGluY2x1ZGlu
ZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKKyAgICAg
IHdvcmsgc3RvcHBhZ2UsIGNvbXB1dGVyIGZhaWx1cmUgb3IgbWFsZnVuY3Rpb24sIG9yIGFueSBh
bmQgYWxsCisgICAgICBvdGhlciBjb21tZXJjaWFsIGRhbWFnZXMgb3IgbG9zc2VzKSwgZXZlbiBp
ZiBzdWNoIENvbnRyaWJ1dG9yCisgICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJp
bGl0eSBvZiBzdWNoIGRhbWFnZXMuCisKKyAgIDkuIEFjY2VwdGluZyBXYXJyYW50eSBvciBBZGRp
dGlvbmFsIExpYWJpbGl0eS4gV2hpbGUgcmVkaXN0cmlidXRpbmcKKyAgICAgIHRoZSBXb3JrIG9y
IERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCisgICAg
ICBhbmQgY2hhcmdlIGEgZmVlIGZvciwgYWNjZXB0YW5jZSBvZiBzdXBwb3J0LCB3YXJyYW50eSwg
aW5kZW1uaXR5LAorICAgICAgb3Igb3RoZXIgbGlhYmlsaXR5IG9ibGlnYXRpb25zIGFuZC9vciBy
aWdodHMgY29uc2lzdGVudCB3aXRoIHRoaXMKKyAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFj
Y2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CisgICAgICBvbiBZb3Vy
IG93biBiZWhhbGYgYW5kIG9uIFlvdXIgc29sZSByZXNwb25zaWJpbGl0eSwgbm90IG9uIGJlaGFs
ZgorICAgICAgb2YgYW55IG90aGVyIENvbnRyaWJ1dG9yLCBhbmQgb25seSBpZiBZb3UgYWdyZWUg
dG8gaW5kZW1uaWZ5LAorICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhh
cm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CisgICAgICBpbmN1cnJlZCBieSwgb3IgY2xhaW1zIGFz
c2VydGVkIGFnYWluc3QsIHN1Y2ggQ29udHJpYnV0b3IgYnkgcmVhc29uCisgICAgICBvZiB5b3Vy
IGFjY2VwdGluZyBhbnkgc3VjaCB3YXJyYW50eSBvciBhZGRpdGlvbmFsIGxpYWJpbGl0eS4KKwor
ICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCisKKyAgIEFQUEVORElYOiBIb3cgdG8gYXBw
bHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KKworICAgICAgVG8gYXBwbHkgdGhl
IEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yaywgYXR0YWNoIHRoZSBmb2xsb3dpbmcKKyAgICAg
IGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRz
ICJbXSIKKyAgICAgIHJlcGxhY2VkIHdpdGggeW91ciBvd24gaWRlbnRpZnlpbmcgaW5mb3JtYXRp
b24uIChEb24ndCBpbmNsdWRlCisgICAgICB0aGUgYnJhY2tldHMhKSAgVGhlIHRleHQgc2hvdWxk
IGJlIGVuY2xvc2VkIGluIHRoZSBhcHByb3ByaWF0ZQorICAgICAgY29tbWVudCBzeW50YXggZm9y
IHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCisgICAgICBmaWxlIG9y
IGNsYXNzIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHB1cnBvc2UgYmUgaW5jbHVkZWQgb24gdGhl
CisgICAgICBzYW1lICJwcmludGVkIHBhZ2UiIGFzIHRoZSBjb3B5cmlnaHQgbm90aWNlIGZvciBl
YXNpZXIKKyAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4K
KworICAgQ29weXJpZ2h0IMKpIDIwMjEgQXBwbGUgSW5jLgorCisgICBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJl
LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZDQ1NmM4NzEyMjdkYjljNDIwYjE3YWE3MTU3ZjhmODUxZWRlNmQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAKQEAgLTAsMCArMSw5MzIgQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEFj
Y2VsZXJhdGlvblN0cnVjdHVyZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVk
ZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFjY2VsZXJhdGlv
blN0cnVjdHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMu
aHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvci5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfT1BUSU9OUyhO
Uzo6VUludGVnZXIsIEFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlKSB7CisgICAgQWNjZWxlcmF0
aW9uU3RydWN0dXJlVXNhZ2VOb25lID0gMCwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2Fn
ZVJlZml0ID0gMSwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZVByZWZlckZhc3RCdWls
ZCA9IDIsCisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2VFeHRlbmRlZExpbWl0cyA9IDQs
Cit9OworCitfTVRMX09QVElPTlModWludDMyX3QsIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3Rh
bmNlT3B0aW9ucykgeworICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlT3B0aW9uTm9u
ZSA9IDAsCisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25EaXNhYmxlVHJp
YW5nbGVDdWxsaW5nID0gMSwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlv
blRyaWFuZ2xlRnJvbnRGYWNpbmdXaW5kaW5nQ291bnRlckNsb2Nrd2lzZSA9IDIsCisgICAgQWNj
ZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25PcGFxdWUgPSA0LAorICAgIEFjY2VsZXJh
dGlvblN0cnVjdHVyZUluc3RhbmNlT3B0aW9uTm9uT3BhcXVlID0gOCwKK307CisKK2NsYXNzIEFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QWNjZWxl
cmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlICAgICAgICAgICAgICAgdXNhZ2UoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VXNh
Z2UoTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZSB1c2FnZSk7Cit9OworCitjbGFzcyBB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlp
bmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2Ny
aXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldChOUzo6VUludGVn
ZXIgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCk7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFxdWUoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRPcGFxdWUoYm9vbCBvcGFxdWUpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25G
dW5jdGlvbkludm9jYXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlv
bkZ1bmN0aW9uSW52b2NhdGlvbihib29sIGFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rp
b25JbnZvY2F0aW9uKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0
cmluZyogbGFiZWwpOworfTsKKworX01UTF9FTlVNKHVpbnQzMl90LCBNb3Rpb25Cb3JkZXJNb2Rl
KSB7CisgICAgTW90aW9uQm9yZGVyTW9kZUNsYW1wID0gMCwKKyAgICBNb3Rpb25Cb3JkZXJNb2Rl
VmFuaXNoID0gMSwKK307CisKK2NsYXNzIFByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0
dXJlRGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVE
ZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpBcnJheSogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW9tZXRyeURlc2NyaXB0b3Jz
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEdlb21ldHJ5RGVzY3JpcHRvcnMoY29uc3QgTlM6OkFycmF5KiBnZW9t
ZXRyeURlc2NyaXB0b3JzKTsKKworICAgIE1UTDo6TW90aW9uQm9yZGVyTW9kZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25TdGFydEJvcmRlck1vZGUoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TW90aW9uU3RhcnRCb3JkZXJNb2RlKE1UTDo6TW90aW9uQm9yZGVyTW9kZSBtb3Rpb25TdGFy
dEJvcmRlck1vZGUpOworCisgICAgTVRMOjpNb3Rpb25Cb3JkZXJNb2RlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vdGlvbkVuZEJvcmRlck1vZGUoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW90
aW9uRW5kQm9yZGVyTW9kZShNVEw6Ok1vdGlvbkJvcmRlck1vZGUgbW90aW9uRW5kQm9yZGVyTW9k
ZSk7CisKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW90aW9uU3RhcnRUaW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblN0YXJ0VGltZShm
bG9hdCBtb3Rpb25TdGFydFRpbWUpOworCisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbkVuZFRpbWUoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TW90aW9uRW5kVGltZShmbG9hdCBtb3Rpb25FbmRUaW1lKTsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25LZXlmcmFtZUNv
dW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldE1vdGlvbktleWZyYW1lQ291bnQoTlM6OlVJbnRlZ2VyIG1vdGlv
bktleWZyYW1lQ291bnQpOworCisgICAgc3RhdGljIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvciogIGRlc2NyaXB0b3IoKTsKK307CisKK2NsYXNzIEFjY2VsZXJh
dGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPEFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yLCBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2Ny
aXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmds
ZUdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIEJ1ZmZlciog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4QnVm
ZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVy
KiB2ZXJ0ZXhCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhCdWZmZXJPZmZzZXQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFZlcnRleEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgdmVydGV4QnVmZmVy
T2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmVydGV4U3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRW
ZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlkZSk7CisKKyAgICBjbGFzcyBCdWZm
ZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmRleEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZm
ZXIqIGluZGV4QnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhCdWZmZXJPZmZzZXQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEluZGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9m
ZnNldCk7CisKKyAgICBNVEw6OkluZGV4VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4VHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhU
eXBlKE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWFuZ2xlQ291bnQo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRlZ2VyIHRyaWFuZ2xl
Q291bnQpOworCisgICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVH
ZW9tZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitjbGFzcyBBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29w
eWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciwg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJl
Qm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFz
cyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvdW5kaW5nQm94QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCb3VuZGluZ0Jv
eEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJvdW5kaW5nQm94QnVmZmVyKTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm91bmRpbmdCb3hCdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJv
dW5kaW5nQm94QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveEJ1ZmZlck9mZnNl
dCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94U3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRCb3VuZGluZ0JveFN0cmlkZShOUzo6VUludGVnZXIgYm91bmRpbmdCb3hTdHJpZGUpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib3VuZGluZ0JveENvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRC
b3VuZGluZ0JveENvdW50KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveENvdW50KTsKKworICAgIHN0
YXRpYyBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlw
dG9yKiAgZGVzY3JpcHRvcigpOworfTsKKworY2xhc3MgTW90aW9uS2V5ZnJhbWVEYXRhIDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxNb3Rpb25LZXlmcmFtZURhdGE+Cit7CitwdWJsaWM6CisgICAg
c3RhdGljIGNsYXNzIE1vdGlvbktleWZyYW1lRGF0YSogYWxsb2MoKTsKKworICAgIGNsYXNzIE1v
dGlvbktleWZyYW1lRGF0YSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAg
ICAgICAgICAgICAgICAgIGJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlcik7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBvZmZzZXQoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPZmZzZXQoTlM6OlVJbnRlZ2VyIG9m
ZnNldCk7CisKKyAgICBzdGF0aWMgTVRMOjpNb3Rpb25LZXlmcmFtZURhdGEqICBkYXRhKCk7Cit9
OworCitjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVz
Y3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25U
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9t
ZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiBhbGxvYygpOworCisg
ICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2Ny
aXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEJ1ZmZlcnMoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiB2
ZXJ0ZXhCdWZmZXJzKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4U3RyaWRlKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRWZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlkZSk7
CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRJbmRleEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyKTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhCdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElu
ZGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCk7CisKKyAgICBN
VEw6OkluZGV4VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4VHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhUeXBl
KE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWFuZ2xlQ291
bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRlZ2Vy
IHRyaWFuZ2xlQ291bnQpOworCisgICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
TW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitj
bGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3Jp
cHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3Vu
ZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9t
ZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBhbGxvYygpOwor
CisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRy
eURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5n
Qm94QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hCdWZm
ZXJzKGNvbnN0IE5TOjpBcnJheSogYm91bmRpbmdCb3hCdWZmZXJzKTsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm91bmRpbmdCb3hTdHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJv
dW5kaW5nQm94U3RyaWRlKE5TOjpVSW50ZWdlciBib3VuZGluZ0JveFN0cmlkZSk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvdW5kaW5nQm94Q291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEJvdW5kaW5nQm94Q291bnQoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94Q291bnQpOworCisg
ICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9t
ZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitzdHJ1Y3QgQWNjZWxlcmF0aW9u
U3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yCit7CisgICAgTVRMOjpQYWNrZWRGbG9hdDR4MyAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXg7CisgICAgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlvbnMgb3B0aW9uczsKKyAgICB1aW50MzJfdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrOworICAgIHVpbnQzMl90ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZz
ZXQ7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZWxl
cmF0aW9uU3RydWN0dXJlSW5kZXg7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgQWNjZWxlcmF0
aW9uU3RydWN0dXJlVXNlcklESW5zdGFuY2VEZXNjcmlwdG9yCit7CisgICAgTVRMOjpQYWNrZWRG
bG9hdDR4MyAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXg7CisgICAg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlvbnMgb3B0aW9uczsKKyAgICB1
aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrOworICAgIHVpbnQz
Ml90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVPZmZzZXQ7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWNjZWxlcmF0aW9uU3RydWN0dXJlSW5kZXg7CisgICAgdWludDMyX3QgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXNlcklEOworfSBfTVRMX1BBQ0tFRDsKKworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlw
ZSkgeworICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGVEZWZh
dWx0ID0gMCwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBl
VXNlcklEID0gMSwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JU
eXBlTW90aW9uID0gMiwKK307CisKK3N0cnVjdCBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25J
bnN0YW5jZURlc2NyaXB0b3IKK3sKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3Rh
bmNlT3B0aW9ucyBvcHRpb25zOworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hc2s7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldDsKKyAgICB1aW50MzJfdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbmRleDsK
KyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySUQ7Cisg
ICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW90aW9uVHJhbnNm
b3Jtc1N0YXJ0SW5kZXg7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbW90aW9uVHJhbnNmb3Jtc0NvdW50OworICAgIE1UTDo6TW90aW9uQm9yZGVyTW9kZSAg
ICAgICAgICAgICAgICAgICAgIG1vdGlvblN0YXJ0Qm9yZGVyTW9kZTsKKyAgICBNVEw6Ok1vdGlv
bkJvcmRlck1vZGUgICAgICAgICAgICAgICAgICAgICBtb3Rpb25FbmRCb3JkZXJNb2RlOworICAg
IGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvblN0YXJ0VGlt
ZTsKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25F
bmRUaW1lOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEluc3RhbmNlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9y
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbnN0YW5jZUFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBCdWZmZXIq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZURlc2NyaXB0
b3JCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIoY29uc3QgY2xh
c3MgQnVmZmVyKiBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VEZXNjcmlw
dG9yQnVmZmVyT2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zm
c2V0KE5TOjpVSW50ZWdlciBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQpOworCisgICAg
TlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5z
dGFuY2VEZXNjcmlwdG9yU3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VEZXNjcmlwdG9yU3Ry
aWRlKE5TOjpVSW50ZWdlciBpbnN0YW5jZURlc2NyaXB0b3JTdHJpZGUpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VD
b3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEluc3RhbmNlQ291bnQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291
bnQpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcygpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElu
c3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMoY29uc3QgTlM6OkFycmF5KiBpbnN0YW5jZWRB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVzKTsKKworICAgIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
SW5zdGFuY2VEZXNjcmlwdG9yVHlwZSAgICAgIGluc3RhbmNlRGVzY3JpcHRvclR5cGUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRJbnN0YW5jZURlc2NyaXB0b3JUeXBlKE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
SW5zdGFuY2VEZXNjcmlwdG9yVHlwZSBpbnN0YW5jZURlc2NyaXB0b3JUeXBlKTsKKworICAgIGNs
YXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlv
blRyYW5zZm9ybUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlcihjb25z
dCBjbGFzcyBCdWZmZXIqIG1vdGlvblRyYW5zZm9ybUJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25UcmFuc2Zv
cm1CdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQo
TlM6OlVJbnRlZ2VyIG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25UcmFu
c2Zvcm1Db3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblRyYW5zZm9ybUNvdW50KE5TOjpVSW50ZWdl
ciBtb3Rpb25UcmFuc2Zvcm1Db3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpJbnN0YW5jZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitjbGFzcyBB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFjY2VsZXJhdGlv
blN0cnVjdHVyZSwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgTlM6OlVJbnRlZ2VyIHNpemUo
KSBjb25zdDsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NM
UyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4o
KTsKK30KKworLy8gcHJvcGVydHk6IHVzYWdlCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZVVzYWdlIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6dXNh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlVXNhZ2U+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNhZ2UpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6
OnNldFVzYWdlKE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2UgdXNhZ2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFVzYWdl
XyksIHVzYWdlKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0OjphbGxvYzxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3Jp
cHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yPigpOwor
fQorCisvLyBwcm9wZXJ0eTogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldAorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNj
cmlwdG9yOjppbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0KE5TOjpVSW50ZWdlciBpbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0Xyks
IGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogb3Bh
cXVlCitfTVRMX0lOTElORSBib29sIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlE
ZXNjcmlwdG9yOjpvcGFxdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3BhcXVlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OnNl
dE9wYXF1ZShib29sIG9wYXF1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3BhcXVlXyksIG9wYXF1ZSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbgorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6
YWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24oKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24pKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6c2V0QWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24oYm9v
bCBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbikKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWxsb3dE
dXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb25fKSwgYWxsb3dEdXBsaWNhdGVJ
bnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24pOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwK
K19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0
cnlEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVs
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UHJpbWl0
aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpQcmltaXRpdmVBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4o
X01UTF9QUklWQVRFX0NMUyhNVExQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlw
dG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpQcmltaXRpdmVB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4oKTsKK30K
KworLy8gcHJvcGVydHk6IGdlb21ldHJ5RGVzY3JpcHRvcnMKK19NVExfSU5MSU5FIE5TOjpBcnJh
eSogTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpnZW9tZXRy
eURlc2NyaXB0b3JzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdlb21ldHJ5RGVzY3JpcHRvcnMpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3I6OnNldEdlb21ldHJ5RGVzY3JpcHRvcnMoY29uc3QgTlM6OkFycmF5KiBnZW9t
ZXRyeURlc2NyaXB0b3JzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRHZW9tZXRyeURlc2NyaXB0b3JzXyksIGdlb21ldHJ5RGVzY3Jp
cHRvcnMpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uU3RhcnRCb3JkZXJNb2RlCitfTVRMX0lO
TElORSBNVEw6Ok1vdGlvbkJvcmRlck1vZGUgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25TdGFydEJvcmRlck1vZGUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TW90aW9uQm9yZGVyTW9kZT4odGhpcywgX01U
TF9QUklWQVRFX1NFTChtb3Rpb25TdGFydEJvcmRlck1vZGUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1v
dGlvblN0YXJ0Qm9yZGVyTW9kZShNVEw6Ok1vdGlvbkJvcmRlck1vZGUgbW90aW9uU3RhcnRCb3Jk
ZXJNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRNb3Rpb25TdGFydEJvcmRlck1vZGVfKSwgbW90aW9uU3RhcnRCb3JkZXJNb2Rl
KTsKK30KKworLy8gcHJvcGVydHk6IG1vdGlvbkVuZEJvcmRlck1vZGUKK19NVExfSU5MSU5FIE1U
TDo6TW90aW9uQm9yZGVyTW9kZSBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3I6Om1vdGlvbkVuZEJvcmRlck1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6TW90aW9uQm9yZGVyTW9kZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtb3Rpb25FbmRCb3JkZXJNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQ
cmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25FbmRCb3Jk
ZXJNb2RlKE1UTDo6TW90aW9uQm9yZGVyTW9kZSBtb3Rpb25FbmRCb3JkZXJNb2RlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNb3Rp
b25FbmRCb3JkZXJNb2RlXyksIG1vdGlvbkVuZEJvcmRlck1vZGUpOworfQorCisvLyBwcm9wZXJ0
eTogbW90aW9uU3RhcnRUaW1lCitfTVRMX0lOTElORSBmbG9hdCBNVEw6OlByaW1pdGl2ZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvblN0YXJ0VGltZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobW90aW9uU3RhcnRUaW1lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQcmltaXRp
dmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25TdGFydFRpbWUoZmxv
YXQgbW90aW9uU3RhcnRUaW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRNb3Rpb25TdGFydFRpbWVfKSwgbW90aW9uU3RhcnRUaW1l
KTsKK30KKworLy8gcHJvcGVydHk6IG1vdGlvbkVuZFRpbWUKK19NVExfSU5MSU5FIGZsb2F0IE1U
TDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uRW5kVGlt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobW90aW9uRW5kVGltZSkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9u
RW5kVGltZShmbG9hdCBtb3Rpb25FbmRUaW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNb3Rpb25FbmRUaW1lXyksIG1vdGlvbkVu
ZFRpbWUpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uS2V5ZnJhbWVDb3VudAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3Jp
cHRvcjo6bW90aW9uS2V5ZnJhbWVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvbktl
eWZyYW1lQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1vdGlvbktleWZyYW1lQ291bnQoTlM6OlVJ
bnRlZ2VyIG1vdGlvbktleWZyYW1lQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvbktleWZyYW1lQ291bnRfKSwgbW90
aW9uS2V5ZnJhbWVDb3VudCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19N
VExfSU5MSU5FIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciog
TVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpkZXNjcmlwdG9y
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlByaW1pdGl2ZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFByaW1pdGl2
ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGRlc2Ny
aXB0b3IpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVU
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9t
ZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRy
eURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiB2ZXJ0ZXhCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0ZXhC
dWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVm
ZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZmZXIpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjpzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIHZlcnRleEJ1ZmZlcikK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0VmVydGV4QnVmZmVyXyksIHZlcnRleEJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0
ZXhCdWZmZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0ZXhCdWZmZXJPZmZzZXQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjpzZXRWZXJ0ZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIHZlcnRleEJ1ZmZlck9m
ZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VmVydGV4QnVmZmVyT2Zmc2V0XyksIHZlcnRleEJ1ZmZlck9mZnNldCk7Cit9CisK
Ky8vIHByb3BlcnR5OiB2ZXJ0ZXhTdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0ZXhT
dHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhTdHJpZGUpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjpzZXRWZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlkZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVy
dGV4U3RyaWRlXyksIHZlcnRleFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleEJ1ZmZl
cgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluZGV4QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoaW5kZXhCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJbmRleEJ1ZmZlcihjb25z
dCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGV4QnVmZmVyXyksIGluZGV4QnVmZmVy
KTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4QnVmZmVyT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6aW5kZXhCdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleEJ1ZmZl
ck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldEluZGV4QnVmZmVyT2Zmc2V0KE5TOjpV
SW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhCdWZmZXJPZmZzZXRfKSwgaW5kZXhC
dWZmZXJPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhUeXBlCitfTVRMX0lOTElORSBN
VEw6OkluZGV4VHlwZSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlE
ZXNjcmlwdG9yOjppbmRleFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6SW5kZXhUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4VHlwZSkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5n
bGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldEluZGV4VHlwZShNVEw6OkluZGV4VHlwZSBpbmRleFR5
cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEluZGV4VHlwZV8pLCBpbmRleFR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogdHJpYW5n
bGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnRyaWFuZ2xlQ291bnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh0cmlhbmdsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VHJpYW5n
bGVDb3VudChOUzo6VUludGVnZXIgdHJpYW5nbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHJpYW5nbGVDb3VudF8pLCB0
cmlhbmdsZUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgorX01UTF9J
TkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
ciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6
ZGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcio+KF9NVExfUFJJVkFU
RV9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3Ip
LCBfTVRMX1BSSVZBVEVfU0VMKGRlc2NyaXB0b3IpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hH
ZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hH
ZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRv
cj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdl
b21ldHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiBib3VuZGluZ0JveEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94
QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1
ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hCdWZmZXIpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciog
Ym91bmRpbmdCb3hCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyXyksIGJvdW5kaW5nQm94QnVm
ZmVyKTsKK30KKworLy8gcHJvcGVydHk6IGJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0CitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdl
b21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hCdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChib3VuZGluZ0JveEJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6
OnNldEJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveEJ1ZmZl
ck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXRfKSwgYm91bmRpbmdCb3hCdWZmZXJP
ZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hTdHJpZGUKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yOjpib3VuZGluZ0JveFN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJv
dW5kaW5nQm94U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91bmRpbmdCb3hT
dHJpZGUoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94U3RyaWRlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3VuZGluZ0JveFN0cmlk
ZV8pLCBib3VuZGluZ0JveFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBib3VuZGluZ0JveENv
dW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVC
b3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hDb3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGJvdW5kaW5nQm94Q291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjpz
ZXRCb3VuZGluZ0JveENvdW50KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveENvdW50KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3Vu
ZGluZ0JveENvdW50XyksIGJvdW5kaW5nQm94Q291bnQpOworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5k
aW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5k
aW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3Jp
cHRvcikpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpN
b3Rpb25LZXlmcmFtZURhdGEqIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTE1vdGlvbktleWZyYW1lRGF0YSkpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhKiBNVEw6Ok1vdGlvbktleWZy
YW1lRGF0YTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpNb3Rp
b25LZXlmcmFtZURhdGE+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXIKK19NVExfSU5MSU5F
IE1UTDo6QnVmZmVyKiBNVEw6Ok1vdGlvbktleWZyYW1lRGF0YTo6YnVmZmVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpNb3Rpb25L
ZXlmcmFtZURhdGE6OnNldEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZm
ZXJfKSwgYnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IG9mZnNldAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjpvZmZzZXQoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChvZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Ok1vdGlvbktleWZy
YW1lRGF0YTo6c2V0T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9mZnNldF8pLCBvZmZz
ZXQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBkYXRhCitfTVRMX0lOTElORSBNVEw6Ok1vdGlv
bktleWZyYW1lRGF0YSogTVRMOjpNb3Rpb25LZXlmcmFtZURhdGE6OmRhdGEoKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhKj4oX01UTF9Q
UklWQVRFX0NMUyhNVExNb3Rpb25LZXlmcmFtZURhdGEpLCBfTVRMX1BSSVZBVEVfU0VMKGRhdGEp
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhN
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcikp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9u
VHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhC
dWZmZXJzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
TW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnZlcnRleEJ1ZmZlcnMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodmVydGV4QnVmZmVycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNl
dFZlcnRleEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiB2ZXJ0ZXhCdWZmZXJzKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhC
dWZmZXJzXyksIHZlcnRleEJ1ZmZlcnMpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4U3RyaWRl
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rp
b25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6dmVydGV4U3RyaWRlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodmVydGV4U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VmVy
dGV4U3RyaWRlKE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFN0cmlkZV8pLCB2
ZXJ0ZXhTdHJpZGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhCdWZmZXIKK19NVExfSU5MSU5F
IE1UTDo6QnVmZmVyKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2Vv
bWV0cnlEZXNjcmlwdG9yOjppbmRleEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4
QnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0SW5kZXhCdWZmZXIoY29uc3Qg
TVRMOjpCdWZmZXIqIGluZGV4QnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleEJ1ZmZlcl8pLCBpbmRleEJ1ZmZlcik7
Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleEJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3I6OmluZGV4QnVmZmVyT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXhC
dWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJbmRleEJ1ZmZlck9m
ZnNldChOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGV4QnVmZmVyT2Zmc2V0
XyksIGluZGV4QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4VHlwZQorX01U
TF9JTkxJTkUgTVRMOjpJbmRleFR5cGUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25U
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5kZXhUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGV4VHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTChpbmRleFR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJbmRleFR5cGUo
TVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleFR5cGVfKSwgaW5kZXhUeXBlKTsKK30K
KworLy8gcHJvcGVydHk6IHRyaWFuZ2xlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9y
Ojp0cmlhbmdsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHJpYW5nbGVDb3VudCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRlZ2VyIHRy
aWFuZ2xlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFRyaWFuZ2xlQ291bnRfKSwgdHJpYW5nbGVDb3VudCk7Cit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmRlc2NyaXB0b3Io
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9y
KSwgX01UTF9QUklWQVRFX1NFTChkZXNjcmlwdG9yKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5k
aW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlv
bkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdC
b3hHZW9tZXRyeURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJv
dW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1v
dGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6aW5pdDxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5n
Qm94R2VvbWV0cnlEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hC
dWZmZXJzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
TW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94QnVmZmVycygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChib3VuZGluZ0JveEJ1ZmZlcnMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiBib3Vu
ZGluZ0JveEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyc18pLCBib3VuZGluZ0JveEJ1ZmZl
cnMpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hTdHJpZGUKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yOjpib3VuZGluZ0JveFN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGJvdW5kaW5nQm94U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91
bmRpbmdCb3hTdHJpZGUoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94U3RyaWRlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3VuZGlu
Z0JveFN0cmlkZV8pLCBib3VuZGluZ0JveFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBib3Vu
ZGluZ0JveENvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hD
b3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJvdW5kaW5nQm94Q291bnQpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94
R2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveENvdW50KE5TOjpVSW50ZWdlciBib3Vu
ZGluZ0JveENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRCb3VuZGluZ0JveENvdW50XyksIGJvdW5kaW5nQm94Q291bnQpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9y
OjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKj4o
X01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0Jv
eEdlb21ldHJ5RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3JpcHRvcikpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpJbnN0YW5jZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTEluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcikpOworfQor
CisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yKiBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpJbnN0
YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6
Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5zdGFuY2VEZXNjcmlw
dG9yQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVy
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3I6OnNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcihjb25zdCBNVEw6OkJ1
ZmZlciogaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZm
ZXJfKSwgaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IGluc3Rh
bmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbnN0YW5jZURlc2NyaXB0
b3JCdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnN0YW5jZURlc2NyaXB0b3JC
dWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxl
cmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zm
c2V0KE5TOjpVSW50ZWdlciBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3Rh
bmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldF8pLCBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZz
ZXQpOworfQorCisvLyBwcm9wZXJ0eTogaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlCitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2Ny
aXB0b3I6Omluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlu
c3RhbmNlRGVzY3JpcHRvclN0cmlkZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5z
dGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRJbnN0YW5jZURlc2NyaXB0
b3JTdHJpZGUoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5zdGFu
Y2VEZXNjcmlwdG9yU3RyaWRlXyksIGluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpbnN0YW5jZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJ
bnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Omluc3RhbmNlQ291bnQoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChpbnN0YW5jZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldEluc3Rh
bmNlQ291bnQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlQ291bnRfKSwg
aW5zdGFuY2VDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnN0YW5jZWRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6c2V0SW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcyhjb25zdCBOUzo6QXJy
YXkqIGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlZEFjY2VsZXJh
dGlvblN0cnVjdHVyZXNfKSwgaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcyk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpbnN0YW5jZURlc2NyaXB0b3JUeXBlCitfTVRMX0lOTElORSBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGUgTVRMOjpJbnN0YW5jZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Omluc3RhbmNlRGVzY3JpcHRvclR5cGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
bnN0YW5jZURlc2NyaXB0b3JUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnN0
YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldEluc3RhbmNlRGVzY3JpcHRv
clR5cGUoTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlIGlu
c3RhbmNlRGVzY3JpcHRvclR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvclR5cGVfKSwgaW5zdGFu
Y2VEZXNjcmlwdG9yVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25UcmFuc2Zvcm1CdWZm
ZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uVHJhbnNmb3JtQnVmZmVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobW90aW9uVHJhbnNmb3JtQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1vdGlvblRyYW5z
Zm9ybUJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogbW90aW9uVHJhbnNmb3JtQnVmZmVyKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRN
b3Rpb25UcmFuc2Zvcm1CdWZmZXJfKSwgbW90aW9uVHJhbnNmb3JtQnVmZmVyKTsKK30KKworLy8g
cHJvcGVydHk6IG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rp
b25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25UcmFu
c2Zvcm1CdWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNl
QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9uVHJhbnNmb3JtQnVmZmVy
T2Zmc2V0KE5TOjpVSW50ZWdlciBtb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlv
blRyYW5zZm9ybUJ1ZmZlck9mZnNldF8pLCBtb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQpOwor
fQorCisvLyBwcm9wZXJ0eTogbW90aW9uVHJhbnNmb3JtQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90
aW9uVHJhbnNmb3JtQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25UcmFuc2Zvcm1D
b3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25UcmFuc2Zvcm1Db3VudChOUzo6VUludGVnZXIg
bW90aW9uVHJhbnNmb3JtQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvblRyYW5zZm9ybUNvdW50XyksIG1vdGlvblRy
YW5zZm9ybUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgorX01UTF9J
TkxJTkUgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6
SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMSW5zdGFuY2VBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChkZXNjcmlwdG9yKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBzaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmU6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzaXplKSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNv
ZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wZmY0YzljOGJkMWVkNDI4YTQzZjdlZjJlMTZjNjkyOGMxNTQ5
Y2MzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcApAQCAtMCwwICsx
LDE0NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNs
dWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHA+CisKKyNpbmNsdWRlICJNVExBcmd1bWVudC5ocHAiCisjaW5jbHVkZSAiTVRMQ29tbWFuZEVu
Y29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTEhlYXAuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNl
LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29t
bWFuZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFjY2VsZXJhdGlvblN0cnVjdHVy
ZUNvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rlcj4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIGJ1
aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVy
ZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBjbGFzcyBCdWZmZXIqIHNjcmF0Y2hCdWZm
ZXIsIE5TOjpVSW50ZWdlciBzY3JhdGNoQnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgcmVmaXRB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBz
b3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEJ1ZmZl
ciogc2NyYXRjaEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNjcmF0Y2hCdWZmZXJPZmZzZXQpOworCisg
ICAgdm9pZCBjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZSogc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBjbGFzcyBBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUqIGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0dXJlKTsKKwor
ICAgIHZvaWQgd3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplKGNvbnN0IGNs
YXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBj
bGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCk7CisKKyAgICB2b2lkIHdy
aXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZShjb25zdCBjbGFzcyBBY2NlbGVy
YXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgY2xhc3MgQnVmZmVy
KiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE1UTDo6RGF0YVR5cGUgc2l6ZURhdGFUeXBl
KTsKKworICAgIHZvaWQgY29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3Qg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRp
b25TdHJ1Y3R1cmUpOworCisgICAgdm9pZCB1cGRhdGVGZW5jZShjb25zdCBjbGFzcyBGZW5jZSog
ZmVuY2UpOworCisgICAgdm9pZCB3YWl0Rm9yRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNl
KTsKKworICAgIHZvaWQgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3VyY2UqIHJlc291cmNl
LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCB1c2VSZXNvdXJjZXMoTVRM
OjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZXNvdXJj
ZVVzYWdlIHVzYWdlKTsKKworICAgIHZvaWQgdXNlSGVhcChjb25zdCBjbGFzcyBIZWFwKiBoZWFw
KTsKKworICAgIHZvaWQgdXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIg
Y291bnQpOworCisgICAgdm9pZCBzYW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IGNsYXNzIENv
dW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUluZGV4
LCBib29sIGJhcnJpZXIpOworfTsKKworfQorCisvLyBtZXRob2Q6IGJ1aWxkQWNjZWxlcmF0aW9u
U3RydWN0dXJlOmRlc2NyaXB0b3I6c2NyYXRjaEJ1ZmZlcjpzY3JhdGNoQnVmZmVyT2Zmc2V0Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVy
OjpidWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IE1UTDo6QnVmZmVyKiBzY3JhdGNoQnVm
ZmVyLCBOUzo6VUludGVnZXIgc2NyYXRjaEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVpbGRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVfZGVzY3JpcHRvcl9zY3JhdGNoQnVmZmVyX3NjcmF0Y2hCdWZmZXJPZmZzZXRfKSwg
YWNjZWxlcmF0aW9uU3RydWN0dXJlLCBkZXNjcmlwdG9yLCBzY3JhdGNoQnVmZmVyLCBzY3JhdGNo
QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiByZWZpdEFjY2VsZXJhdGlvblN0cnVjdHVy
ZTpkZXNjcmlwdG9yOmRlc3RpbmF0aW9uOnNjcmF0Y2hCdWZmZXI6c2NyYXRjaEJ1ZmZlck9mZnNl
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5j
b2Rlcjo6cmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1U
TDo6QnVmZmVyKiBzY3JhdGNoQnVmZmVyLCBOUzo6VUludGVnZXIgc2NyYXRjaEJ1ZmZlck9mZnNl
dCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfZGVzY3JpcHRvcl9kZXN0aW5hdGlvbl9zY3Jh
dGNoQnVmZmVyX3NjcmF0Y2hCdWZmZXJPZmZzZXRfKSwgc291cmNlQWNjZWxlcmF0aW9uU3RydWN0
dXJlLCBkZXNjcmlwdG9yLCBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSwgc2NyYXRj
aEJ1ZmZlciwgc2NyYXRjaEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogY29weUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZTp0b0FjY2VsZXJhdGlvblN0cnVjdHVyZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6Y29weUFjY2VsZXJh
dGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogc291cmNlQWNj
ZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogZGVz
dGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmVf
dG9BY2NlbGVyYXRpb25TdHJ1Y3R1cmVfKSwgc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBk
ZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSk7Cit9CisKKy8vIG1ldGhvZDogd3JpdGVD
b21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6d3Jp
dGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplKGNvbnN0IE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1UTDo6QnVmZmVyKiBi
dWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlU2l6ZV90b0J1ZmZlcl9vZmZzZXRfKSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBidWZm
ZXIsIG9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogd3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDpzaXplRGF0YVR5cGU6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OndyaXRlQ29tcGFj
dGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBO
Uzo6VUludGVnZXIgb2Zmc2V0LCBNVEw6OkRhdGFUeXBlIHNpemVEYXRhVHlwZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod3JpdGVDb21w
YWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplX3RvQnVmZmVyX29mZnNldF9zaXplRGF0YVR5
cGVfKSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBidWZmZXIsIG9mZnNldCwgc2l6ZURhdGFUeXBl
KTsKK30KKworLy8gbWV0aG9kOiBjb3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlvblN0cnVjdHVyZTp0
b0FjY2VsZXJhdGlvblN0cnVjdHVyZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6Y29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25TdHJ1
Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJhdGlv
blN0cnVjdHVyZSwgY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGRlc3RpbmF0aW9u
QWNjZWxlcmF0aW9uU3RydWN0dXJlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlvblN0cnVjdHVy
ZV90b0FjY2VsZXJhdGlvblN0cnVjdHVyZV8pLCBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0dXJlKTsKK30KKworLy8gbWV0aG9kOiB1cGRh
dGVGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21t
YW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVwZGF0ZUZl
bmNlXyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB3YWl0Rm9yRmVuY2U6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OndhaXRGb3JG
ZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2FpdEZvckZlbmNlXyksIGZlbmNlKTsKK30K
KworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZTp1c2FnZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3VyY2UoY29uc3QgTVRM
OjpSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVzb3Vy
Y2VfdXNhZ2VfKSwgcmVzb3VyY2UsIHVzYWdlKTsKK30KKworLy8gbWV0aG9kOiB1c2VSZXNvdXJj
ZXM6Y291bnQ6dXNhZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNb
XSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJlc291
cmNlc19jb3VudF91c2FnZV8pLCByZXNvdXJjZXMsIGNvdW50LCB1c2FnZSk7Cit9CisKKy8vIG1l
dGhvZDogdXNlSGVhcDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcChjb25zdCBNVEw6OkhlYXAqIGhlYXApCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBf
KSwgaGVhcCk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcHM6Y291bnQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OnVzZUhlYXBzKE1U
TDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwc19jb3VudF8pLCBo
ZWFwcywgY291bnQpOworfQorCisvLyBtZXRob2Q6IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRT
YW1wbGVJbmRleDp3aXRoQmFycmllcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6c2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBN
VEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBs
ZUluZGV4LCBib29sIGJhcnJpZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50ZXJzSW5CdWZmZXJfYXRTYW1wbGVJbmRl
eF93aXRoQmFycmllcl8pLCBzYW1wbGVCdWZmZXIsIHNhbXBsZUluZGV4LCBiYXJyaWVyKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJl
NzY3ZGM5MTVjYzFiYjkwYzQxOGFiNDA3ODAyYjUwZDljMTU3YjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlVHlwZXMuaHBwCkBAIC0wLDAgKzEsMTY5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVUeXBlcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdt
YSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisj
aW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRPdXRwdXRE
ZXNjcmlwdG9yLmhwcCIKKworI2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHAiCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3Bh
Y2UgTVRMCit7CitzdHJ1Y3QgUGFja2VkRmxvYXQzCit7CisgICAgUGFja2VkRmxvYXQzKCk7Cisg
ICAgUGFja2VkRmxvYXQzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOworCisgICAgZmxvYXQm
IG9wZXJhdG9yW10oaW50IGlkeCk7CisgICAgZmxvYXQgIG9wZXJhdG9yW10oaW50IGlkeCkgY29u
c3Q7CisKKyAgICB1bmlvbgorICAgIHsKKyAgICAgICAgc3RydWN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZsb2F0IHg7CisgICAgICAgICAgICBmbG9hdCB5OworICAgICAgICAgICAgZmxvYXQg
ejsKKyAgICAgICAgfTsKKworICAgICAgICBmbG9hdCBlbGVtZW50c1szXTsKKyAgICB9OworfSBf
TVRMX1BBQ0tFRDsKKworc3RydWN0IFBhY2tlZEZsb2F0NHgzCit7CisgICAgUGFja2VkRmxvYXQ0
eDMoKTsKKyAgICBQYWNrZWRGbG9hdDR4Myhjb25zdCBQYWNrZWRGbG9hdDMmIGNvbDAsIGNvbnN0
IFBhY2tlZEZsb2F0MyYgY29sMSwgY29uc3QgUGFja2VkRmxvYXQzJiBjb2wyLCBjb25zdCBQYWNr
ZWRGbG9hdDMmIGNvbDMpOworCisgICAgUGFja2VkRmxvYXQzJiAgICAgICBvcGVyYXRvcltdKGlu
dCBpZHgpOworICAgIGNvbnN0IFBhY2tlZEZsb2F0MyYgb3BlcmF0b3JbXShpbnQgaWR4KSBjb25z
dDsKKworICAgIFBhY2tlZEZsb2F0MyAgICAgICAgY29sdW1uc1s0XTsKK30gX01UTF9QQUNLRUQ7
CisKK3N0cnVjdCBBeGlzQWxpZ25lZEJvdW5kaW5nQm94Cit7CisgICAgQXhpc0FsaWduZWRCb3Vu
ZGluZ0JveCgpOworICAgIEF4aXNBbGlnbmVkQm91bmRpbmdCb3goUGFja2VkRmxvYXQzIHApOwor
ICAgIEF4aXNBbGlnbmVkQm91bmRpbmdCb3goUGFja2VkRmxvYXQzIG1pbiwgUGFja2VkRmxvYXQz
IG1heCk7CisKKyAgICBQYWNrZWRGbG9hdDMgbWluOworICAgIFBhY2tlZEZsb2F0MyBtYXg7Cit9
IF9NVExfUEFDS0VEOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpQYWNrZWRGbG9hdDM6OlBhY2tlZEZsb2F0Mygp
CisgICAgOiB4KDAuMGYpCisgICAgLCB5KDAuMGYpCisgICAgLCB6KDAuMGYpCit7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElO
RSBNVEw6OlBhY2tlZEZsb2F0Mzo6UGFja2VkRmxvYXQzKGZsb2F0IF94LCBmbG9hdCBfeSwgZmxv
YXQgX3opCisgICAgOiB4KF94KQorICAgICwgeShfeSkKKyAgICAsIHooX3opCit7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElO
RSBmbG9hdCYgTVRMOjpQYWNrZWRGbG9hdDM6Om9wZXJhdG9yW10oaW50IGlkeCkKK3sKKyAgICBy
ZXR1cm4gZWxlbWVudHNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIGZsb2F0IE1UTDo6UGFja2VkRmxvYXQzOjpv
cGVyYXRvcltdKGludCBpZHgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVsZW1lbnRzW2lkeF07Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRM
X0lOTElORSBNVEw6OlBhY2tlZEZsb2F0NHgzOjpQYWNrZWRGbG9hdDR4MygpCit7CisgICAgY29s
dW1uc1swXSA9IFBhY2tlZEZsb2F0MygwLjBmLCAwLjBmLCAwLjBmKTsKKyAgICBjb2x1bW5zWzFd
ID0gUGFja2VkRmxvYXQzKDAuMGYsIDAuMGYsIDAuMGYpOworICAgIGNvbHVtbnNbMl0gPSBQYWNr
ZWRGbG9hdDMoMC4wZiwgMC4wZiwgMC4wZik7CisgICAgY29sdW1uc1szXSA9IFBhY2tlZEZsb2F0
MygwLjBmLCAwLjBmLCAwLjBmKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6UGFja2VkRmxvYXQ0eDM6OlBhY2tl
ZEZsb2F0NHgzKGNvbnN0IFBhY2tlZEZsb2F0MyYgY29sMCwgY29uc3QgUGFja2VkRmxvYXQzJiBj
b2wxLCBjb25zdCBQYWNrZWRGbG9hdDMmIGNvbDIsIGNvbnN0IFBhY2tlZEZsb2F0MyYgY29sMykK
K3sKKyAgICBjb2x1bW5zWzBdID0gY29sMDsKKyAgICBjb2x1bW5zWzFdID0gY29sMTsKKyAgICBj
b2x1bW5zWzJdID0gY29sMjsKKyAgICBjb2x1bW5zWzNdID0gY29sMzsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6
UGFja2VkRmxvYXQzJiBNVEw6OlBhY2tlZEZsb2F0NHgzOjpvcGVyYXRvcltdKGludCBpZHgpCit7
CisgICAgcmV0dXJuIGNvbHVtbnNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIGNvbnN0IE1UTDo6UGFja2VkRmxv
YXQzJiBNVEw6OlBhY2tlZEZsb2F0NHgzOjpvcGVyYXRvcltdKGludCBpZHgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNvbHVtbnNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6QXhpc0FsaWduZWRCb3VuZGlu
Z0JveDo6QXhpc0FsaWduZWRCb3VuZGluZ0JveCgpCisgICAgOiBtaW4oSU5GSU5JVFksIElORklO
SVRZLCBJTkZJTklUWSkKKyAgICAsIG1heCgtSU5GSU5JVFksIC1JTkZJTklUWSwgLUlORklOSVRZ
KQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX01UTF9JTkxJTkUgTVRMOjpBeGlzQWxpZ25lZEJvdW5kaW5nQm94OjpBeGlzQWxpZ25lZEJv
dW5kaW5nQm94KFBhY2tlZEZsb2F0MyBwKQorICAgIDogbWluKHApCisgICAgLCBtYXgocCkKK3sK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19N
VExfSU5MSU5FIE1UTDo6QXhpc0FsaWduZWRCb3VuZGluZ0JveDo6QXhpc0FsaWduZWRCb3VuZGlu
Z0JveChQYWNrZWRGbG9hdDMgX21pbiwgUGFja2VkRmxvYXQzIF9tYXgpCisgICAgOiBtaW4oX21p
bikKKyAgICAsIG1heChfbWF4KQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExBcmd1bWVudC5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNTdmZTA4MDI4ZTIwMDA3MzRm
MjIyZDI1ODA0YmI4MmM2YTdmY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwCkBAIC0wLDAgKzEsNjU1IEBACisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRh
bC9NVExBcmd1bWVudC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKyNp
bmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5T
OjpVSW50ZWdlciwgRGF0YVR5cGUpIHsKKyAgICBEYXRhVHlwZU5vbmUgPSAwLAorICAgIERhdGFU
eXBlU3RydWN0ID0gMSwKKyAgICBEYXRhVHlwZUFycmF5ID0gMiwKKyAgICBEYXRhVHlwZUZsb2F0
ID0gMywKKyAgICBEYXRhVHlwZUZsb2F0MiA9IDQsCisgICAgRGF0YVR5cGVGbG9hdDMgPSA1LAor
ICAgIERhdGFUeXBlRmxvYXQ0ID0gNiwKKyAgICBEYXRhVHlwZUZsb2F0MngyID0gNywKKyAgICBE
YXRhVHlwZUZsb2F0MngzID0gOCwKKyAgICBEYXRhVHlwZUZsb2F0Mng0ID0gOSwKKyAgICBEYXRh
VHlwZUZsb2F0M3gyID0gMTAsCisgICAgRGF0YVR5cGVGbG9hdDN4MyA9IDExLAorICAgIERhdGFU
eXBlRmxvYXQzeDQgPSAxMiwKKyAgICBEYXRhVHlwZUZsb2F0NHgyID0gMTMsCisgICAgRGF0YVR5
cGVGbG9hdDR4MyA9IDE0LAorICAgIERhdGFUeXBlRmxvYXQ0eDQgPSAxNSwKKyAgICBEYXRhVHlw
ZUhhbGYgPSAxNiwKKyAgICBEYXRhVHlwZUhhbGYyID0gMTcsCisgICAgRGF0YVR5cGVIYWxmMyA9
IDE4LAorICAgIERhdGFUeXBlSGFsZjQgPSAxOSwKKyAgICBEYXRhVHlwZUhhbGYyeDIgPSAyMCwK
KyAgICBEYXRhVHlwZUhhbGYyeDMgPSAyMSwKKyAgICBEYXRhVHlwZUhhbGYyeDQgPSAyMiwKKyAg
ICBEYXRhVHlwZUhhbGYzeDIgPSAyMywKKyAgICBEYXRhVHlwZUhhbGYzeDMgPSAyNCwKKyAgICBE
YXRhVHlwZUhhbGYzeDQgPSAyNSwKKyAgICBEYXRhVHlwZUhhbGY0eDIgPSAyNiwKKyAgICBEYXRh
VHlwZUhhbGY0eDMgPSAyNywKKyAgICBEYXRhVHlwZUhhbGY0eDQgPSAyOCwKKyAgICBEYXRhVHlw
ZUludCA9IDI5LAorICAgIERhdGFUeXBlSW50MiA9IDMwLAorICAgIERhdGFUeXBlSW50MyA9IDMx
LAorICAgIERhdGFUeXBlSW50NCA9IDMyLAorICAgIERhdGFUeXBlVUludCA9IDMzLAorICAgIERh
dGFUeXBlVUludDIgPSAzNCwKKyAgICBEYXRhVHlwZVVJbnQzID0gMzUsCisgICAgRGF0YVR5cGVV
SW50NCA9IDM2LAorICAgIERhdGFUeXBlU2hvcnQgPSAzNywKKyAgICBEYXRhVHlwZVNob3J0MiA9
IDM4LAorICAgIERhdGFUeXBlU2hvcnQzID0gMzksCisgICAgRGF0YVR5cGVTaG9ydDQgPSA0MCwK
KyAgICBEYXRhVHlwZVVTaG9ydCA9IDQxLAorICAgIERhdGFUeXBlVVNob3J0MiA9IDQyLAorICAg
IERhdGFUeXBlVVNob3J0MyA9IDQzLAorICAgIERhdGFUeXBlVVNob3J0NCA9IDQ0LAorICAgIERh
dGFUeXBlQ2hhciA9IDQ1LAorICAgIERhdGFUeXBlQ2hhcjIgPSA0NiwKKyAgICBEYXRhVHlwZUNo
YXIzID0gNDcsCisgICAgRGF0YVR5cGVDaGFyNCA9IDQ4LAorICAgIERhdGFUeXBlVUNoYXIgPSA0
OSwKKyAgICBEYXRhVHlwZVVDaGFyMiA9IDUwLAorICAgIERhdGFUeXBlVUNoYXIzID0gNTEsCisg
ICAgRGF0YVR5cGVVQ2hhcjQgPSA1MiwKKyAgICBEYXRhVHlwZUJvb2wgPSA1MywKKyAgICBEYXRh
VHlwZUJvb2wyID0gNTQsCisgICAgRGF0YVR5cGVCb29sMyA9IDU1LAorICAgIERhdGFUeXBlQm9v
bDQgPSA1NiwKKyAgICBEYXRhVHlwZVRleHR1cmUgPSA1OCwKKyAgICBEYXRhVHlwZVNhbXBsZXIg
PSA1OSwKKyAgICBEYXRhVHlwZVBvaW50ZXIgPSA2MCwKKyAgICBEYXRhVHlwZVI4VW5vcm0gPSA2
MiwKKyAgICBEYXRhVHlwZVI4U25vcm0gPSA2MywKKyAgICBEYXRhVHlwZVIxNlVub3JtID0gNjQs
CisgICAgRGF0YVR5cGVSMTZTbm9ybSA9IDY1LAorICAgIERhdGFUeXBlUkc4VW5vcm0gPSA2NiwK
KyAgICBEYXRhVHlwZVJHOFNub3JtID0gNjcsCisgICAgRGF0YVR5cGVSRzE2VW5vcm0gPSA2OCwK
KyAgICBEYXRhVHlwZVJHMTZTbm9ybSA9IDY5LAorICAgIERhdGFUeXBlUkdCQThVbm9ybSA9IDcw
LAorICAgIERhdGFUeXBlUkdCQThVbm9ybV9zUkdCID0gNzEsCisgICAgRGF0YVR5cGVSR0JBOFNu
b3JtID0gNzIsCisgICAgRGF0YVR5cGVSR0JBMTZVbm9ybSA9IDczLAorICAgIERhdGFUeXBlUkdC
QTE2U25vcm0gPSA3NCwKKyAgICBEYXRhVHlwZVJHQjEwQTJVbm9ybSA9IDc1LAorICAgIERhdGFU
eXBlUkcxMUIxMEZsb2F0ID0gNzYsCisgICAgRGF0YVR5cGVSR0I5RTVGbG9hdCA9IDc3LAorICAg
IERhdGFUeXBlUmVuZGVyUGlwZWxpbmUgPSA3OCwKKyAgICBEYXRhVHlwZUNvbXB1dGVQaXBlbGlu
ZSA9IDc5LAorICAgIERhdGFUeXBlSW5kaXJlY3RDb21tYW5kQnVmZmVyID0gODAsCisgICAgRGF0
YVR5cGVMb25nID0gODEsCisgICAgRGF0YVR5cGVMb25nMiA9IDgyLAorICAgIERhdGFUeXBlTG9u
ZzMgPSA4MywKKyAgICBEYXRhVHlwZUxvbmc0ID0gODQsCisgICAgRGF0YVR5cGVVTG9uZyA9IDg1
LAorICAgIERhdGFUeXBlVUxvbmcyID0gODYsCisgICAgRGF0YVR5cGVVTG9uZzMgPSA4NywKKyAg
ICBEYXRhVHlwZVVMb25nNCA9IDg4LAorICAgIERhdGFUeXBlVmlzaWJsZUZ1bmN0aW9uVGFibGUg
PSAxMTUsCisgICAgRGF0YVR5cGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlID0gMTE2LAorICAg
IERhdGFUeXBlUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlID0gMTE3LAorICAgIERhdGFU
eXBlSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUgPSAxMTgsCit9OworCitfTVRMX0VOVU0o
TlM6OlVJbnRlZ2VyLCBBcmd1bWVudFR5cGUpIHsKKyAgICBBcmd1bWVudFR5cGVCdWZmZXIgPSAw
LAorICAgIEFyZ3VtZW50VHlwZVRocmVhZGdyb3VwTWVtb3J5ID0gMSwKKyAgICBBcmd1bWVudFR5
cGVUZXh0dXJlID0gMiwKKyAgICBBcmd1bWVudFR5cGVTYW1wbGVyID0gMywKKyAgICBBcmd1bWVu
dFR5cGVJbWFnZWJsb2NrRGF0YSA9IDE2LAorICAgIEFyZ3VtZW50VHlwZUltYWdlYmxvY2sgPSAx
NywKKyAgICBBcmd1bWVudFR5cGVWaXNpYmxlRnVuY3Rpb25UYWJsZSA9IDI0LAorICAgIEFyZ3Vt
ZW50VHlwZVByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZSA9IDI1LAorICAgIEFyZ3VtZW50
VHlwZUluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlID0gMjYsCisgICAgQXJndW1lbnRUeXBl
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSA9IDI3LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50
ZWdlciwgQXJndW1lbnRBY2Nlc3MpIHsKKyAgICBBcmd1bWVudEFjY2Vzc1JlYWRPbmx5ID0gMCwK
KyAgICBBcmd1bWVudEFjY2Vzc1JlYWRXcml0ZSA9IDEsCisgICAgQXJndW1lbnRBY2Nlc3NXcml0
ZU9ubHkgPSAyLAorfTsKKworY2xhc3MgVHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8VHlw
ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVHlwZSogYWxsb2MoKTsKKworICAgIGNs
YXNzIFR5cGUqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgZGF0YVR5
cGUoKSBjb25zdDsKK307CisKK2NsYXNzIFN0cnVjdE1lbWJlciA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8U3RydWN0TWVtYmVyPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTdHJ1Y3RN
ZW1iZXIqICBhbGxvYygpOworCisgICAgY2xhc3MgU3RydWN0TWVtYmVyKiAgICAgICAgIGluaXQo
KTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgb2Zmc2V0KCkgY29uc3Q7CisKKyAgICBNVEw6
OkRhdGFUeXBlICAgICAgICAgICAgICAgZGF0YVR5cGUoKSBjb25zdDsKKworICAgIGNsYXNzIFN0
cnVjdFR5cGUqICAgICAgICAgICBzdHJ1Y3RUeXBlKCk7CisKKyAgICBjbGFzcyBBcnJheVR5cGUq
ICAgICAgICAgICAgYXJyYXlUeXBlKCk7CisKKyAgICBjbGFzcyBUZXh0dXJlUmVmZXJlbmNlVHlw
ZSogdGV4dHVyZVJlZmVyZW5jZVR5cGUoKTsKKworICAgIGNsYXNzIFBvaW50ZXJUeXBlKiAgICAg
ICAgICBwb2ludGVyVHlwZSgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGFy
Z3VtZW50SW5kZXgoKSBjb25zdDsKK307CisKK2NsYXNzIFN0cnVjdFR5cGUgOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPFN0cnVjdFR5cGUsIFR5cGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIFN0cnVjdFR5cGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBTdHJ1Y3RUeXBlKiAgICAgICAg
aW5pdCgpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgIG1lbWJlcnMoKSBjb25zdDsK
KworICAgIGNsYXNzIFN0cnVjdE1lbWJlciogICAgICBtZW1iZXJCeU5hbWUoY29uc3QgTlM6OlN0
cmluZyogbmFtZSk7Cit9OworCitjbGFzcyBBcnJheVR5cGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5j
aW5nPEFycmF5VHlwZSwgVHlwZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQXJyYXlU
eXBlKiAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIEFycmF5VHlwZSogICAgICAgICAgICBpbml0
KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgICAgICAgZWxlbWVudFR5cGUoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBhcnJheUxlbmd0aCgpIGNvbnN0
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIHN0cmlkZSgpIGNvbnN0OworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXhTdHJpZGUoKSBjb25z
dDsKKworICAgIGNsYXNzIFN0cnVjdFR5cGUqICAgICAgICAgICBlbGVtZW50U3RydWN0VHlwZSgp
OworCisgICAgY2xhc3MgQXJyYXlUeXBlKiAgICAgICAgICAgIGVsZW1lbnRBcnJheVR5cGUoKTsK
KworICAgIGNsYXNzIFRleHR1cmVSZWZlcmVuY2VUeXBlKiBlbGVtZW50VGV4dHVyZVJlZmVyZW5j
ZVR5cGUoKTsKKworICAgIGNsYXNzIFBvaW50ZXJUeXBlKiAgICAgICAgICBlbGVtZW50UG9pbnRl
clR5cGUoKTsKK307CisKK2NsYXNzIFBvaW50ZXJUeXBlIDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxQb2ludGVyVHlwZSwgVHlwZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUG9pbnRl
clR5cGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBQb2ludGVyVHlwZSogICAgICAgIGluaXQoKTsK
KworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgZWxlbWVudFR5cGUoKSBjb25zdDsKKwor
ICAgIE1UTDo6QXJndW1lbnRBY2Nlc3MgICAgICAgYWNjZXNzKCkgY29uc3Q7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgIGFsaWdubWVudCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICBkYXRhU2l6ZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICBlbGVtZW50SXNBcmd1bWVudEJ1ZmZlcigpIGNvbnN0OworCisgICAgY2xhc3Mg
U3RydWN0VHlwZSogICAgICAgICBlbGVtZW50U3RydWN0VHlwZSgpOworCisgICAgY2xhc3MgQXJy
YXlUeXBlKiAgICAgICAgICBlbGVtZW50QXJyYXlUeXBlKCk7Cit9OworCitjbGFzcyBUZXh0dXJl
UmVmZXJlbmNlVHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8VGV4dHVyZVJlZmVyZW5jZVR5
cGUsIFR5cGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFRleHR1cmVSZWZlcmVuY2VU
eXBlKiBhbGxvYygpOworCisgICAgY2xhc3MgVGV4dHVyZVJlZmVyZW5jZVR5cGUqICAgICAgICBp
bml0KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVE
YXRhVHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpUZXh0dXJlVHlwZSAgICAgICAgICAgICAgICAg
ICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpBcmd1bWVudEFjY2VzcyAgICAgICAg
ICAgICAgICBhY2Nlc3MoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaXNEZXB0aFRleHR1cmUoKSBjb25zdDsKK307CisKK2NsYXNzIEFyZ3VtZW50IDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxBcmd1bWVudD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y2xhc3MgQXJndW1lbnQqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBcmd1bWVudCogICAgICAgIGlu
aXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworCisgICAg
TVRMOjpBcmd1bWVudFR5cGUgICAgICB0eXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OkFyZ3VtZW50
QWNjZXNzICAgIGFjY2VzcygpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICBp
bmRleCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICBhY3RpdmUoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgYnVmZmVyQWxpZ25tZW50KCkgY29uc3Q7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgIGJ1ZmZlckRhdGFTaXplKCkgY29uc3Q7CisK
KyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgIGJ1ZmZlckRhdGFUeXBlKCkgY29uc3Q7CisKKyAg
ICBjbGFzcyBTdHJ1Y3RUeXBlKiAgICAgIGJ1ZmZlclN0cnVjdFR5cGUoKSBjb25zdDsKKworICAg
IGNsYXNzIFBvaW50ZXJUeXBlKiAgICAgYnVmZmVyUG9pbnRlclR5cGUoKSBjb25zdDsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgdGhyZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgdGhyZWFkZ3JvdXBNZW1vcnlEYXRhU2l6
ZSgpIGNvbnN0OworCisgICAgTVRMOjpUZXh0dXJlVHlwZSAgICAgICB0ZXh0dXJlVHlwZSgpIGNv
bnN0OworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAgICB0ZXh0dXJlRGF0YVR5cGUoKSBjb25z
dDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgaXNEZXB0aFRleHR1cmUoKSBjb25zdDsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgYXJyYXlMZW5ndGgoKSBjb25zdDsKK307CisK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VHlwZSogTVRM
OjpUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VHlw
ZT4oX01UTF9QUklWQVRFX0NMUyhNVExUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpUeXBlKiBNVEw6OlR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6VHlwZT4oKTsKK30KKworLy8gcHJvcGVydHk6IGRhdGFUeXBlCitf
TVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6VHlwZTo6ZGF0YVR5cGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZGF0YVR5cGUpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6U3RydWN0TWVtYmVyKiBNVEw6OlN0cnVjdE1lbWJlcjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlN0cnVjdE1lbWJlcj4oX01UTF9Q
UklWQVRFX0NMUyhNVExTdHJ1Y3RNZW1iZXIpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OlN0cnVjdE1lbWJlciogTVRMOjpTdHJ1Y3RNZW1iZXI6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U3RydWN0TWVtYmVyPigpOworfQorCisv
LyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpTdHJ1Y3RNZW1i
ZXI6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpT
dHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6
IG9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6U3RydWN0TWVtYmVyOjpvZmZz
ZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvZmZzZXQpKTsKK30KKworLy8gcHJvcGVydHk6IGRh
dGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6U3RydWN0TWVtYmVyOjpkYXRh
VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRh
VHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChkYXRhVHlwZSkpOworfQorCisvLyBtZXRob2Q6
IHN0cnVjdFR5cGUKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpTdHJ1Y3RNZW1i
ZXI6OnN0cnVjdFR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
U3RydWN0VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RydWN0VHlwZSkpOworfQorCisv
LyBtZXRob2Q6IGFycmF5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpBcnJheVR5cGUqIE1UTDo6U3Ry
dWN0TWVtYmVyOjphcnJheVR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6QXJyYXlUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcnJheVR5cGUpKTsKK30K
KworLy8gbWV0aG9kOiB0ZXh0dXJlUmVmZXJlbmNlVHlwZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0
dXJlUmVmZXJlbmNlVHlwZSogTVRMOjpTdHJ1Y3RNZW1iZXI6OnRleHR1cmVSZWZlcmVuY2VUeXBl
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVSZWZlcmVu
Y2VUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlUmVmZXJlbmNlVHlwZSkpOwor
fQorCisvLyBtZXRob2Q6IHBvaW50ZXJUeXBlCitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJUeXBl
KiBNVEw6OlN0cnVjdE1lbWJlcjo6cG9pbnRlclR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6UG9pbnRlclR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBv
aW50ZXJUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhcmd1bWVudEluZGV4CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpTdHJ1Y3RNZW1iZXI6OmFyZ3VtZW50SW5kZXgoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChhcmd1bWVudEluZGV4KSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OlN0cnVjdFR5cGUqIE1UTDo6U3RydWN0VHlwZTo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlN0cnVjdFR5cGU+KF9NVExf
UFJJVkFURV9DTFMoTVRMU3RydWN0VHlwZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpTdHJ1Y3RUeXBlOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlN0cnVjdFR5cGU+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBtZW1iZXJzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6U3RydWN0VHlwZTo6bWVt
YmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtZW1iZXJzKSk7Cit9CisKKy8vIG1ldGhvZDogbWVt
YmVyQnlOYW1lOgorX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RNZW1iZXIqIE1UTDo6U3RydWN0VHlw
ZTo6bWVtYmVyQnlOYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RNZW1iZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG1lbWJlckJ5TmFtZV8pLCBuYW1lKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MK
K19NVExfSU5MSU5FIE1UTDo6QXJyYXlUeXBlKiBNVEw6OkFycmF5VHlwZTo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFycmF5VHlwZT4oX01UTF9QUklWQVRF
X0NMUyhNVExBcnJheVR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBN
VEw6OkFycmF5VHlwZSogTVRMOjpBcnJheVR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6QXJyYXlUeXBlPigpOworfQorCisvLyBwcm9wZXJ0eTogZWxlbWVu
dFR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpBcnJheVR5cGU6OmVsZW1lbnRU
eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFU
eXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRUeXBlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBhcnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJyYXlUeXBl
OjphcnJheUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFycmF5TGVuZ3RoKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBzdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFycmF5
VHlwZTo6c3RyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RyaWRlKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBhcmd1bWVudEluZGV4U3RyaWRlCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpBcnJheVR5cGU6OmFyZ3VtZW50SW5kZXhTdHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChh
cmd1bWVudEluZGV4U3RyaWRlKSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVudFN0cnVjdFR5cGUK
K19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpBcnJheVR5cGU6OmVsZW1lbnRTdHJ1
Y3RUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0cnVjdFR5
cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRTdHJ1Y3RUeXBlKSk7Cit9CisKKy8v
IG1ldGhvZDogZWxlbWVudEFycmF5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpBcnJheVR5cGUqIE1U
TDo6QXJyYXlUeXBlOjplbGVtZW50QXJyYXlUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkFycmF5VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZWxlbWVu
dEFycmF5VHlwZSkpOworfQorCisvLyBtZXRob2Q6IGVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlw
ZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZSogTVRMOjpBcnJheVR5cGU6
OmVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlwZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoZWxlbWVudFRleHR1cmVSZWZlcmVuY2VUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVu
dFBvaW50ZXJUeXBlCitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJUeXBlKiBNVEw6OkFycmF5VHlw
ZTo6ZWxlbWVudFBvaW50ZXJUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlBvaW50ZXJUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50UG9pbnRl
clR5cGUpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
UG9pbnRlclR5cGUqIE1UTDo6UG9pbnRlclR5cGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8TVRMOjpQb2ludGVyVHlwZT4oX01UTF9QUklWQVRFX0NMUyhNVExQb2lu
dGVyVHlwZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UG9pbnRl
clR5cGUqIE1UTDo6UG9pbnRlclR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6UG9pbnRlclR5cGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbGVtZW50VHlw
ZQorX01UTF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OlBvaW50ZXJUeXBlOjplbGVtZW50VHlw
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlw
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50VHlwZSkpOworfQorCisvLyBwcm9wZXJ0
eTogYWNjZXNzCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50QWNjZXNzIE1UTDo6UG9pbnRlclR5
cGU6OmFjY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBcmd1bWVudEFjY2Vzcz4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nlc3MpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGFsaWdubWVudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UG9p
bnRlclR5cGU6OmFsaWdubWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsaWdubWVudCkpOwor
fQorCisvLyBwcm9wZXJ0eTogZGF0YVNpemUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OlBvaW50ZXJUeXBlOjpkYXRhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRhdGFTaXplKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBlbGVtZW50SXNBcmd1bWVudEJ1ZmZlcgorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OlBvaW50ZXJUeXBlOjplbGVtZW50SXNBcmd1bWVudEJ1ZmZlcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChlbGVtZW50SXNBcmd1bWVudEJ1ZmZlcikpOworfQorCisvLyBtZXRob2Q6IGVsZW1lbnRT
dHJ1Y3RUeXBlCitfTVRMX0lOTElORSBNVEw6OlN0cnVjdFR5cGUqIE1UTDo6UG9pbnRlclR5cGU6
OmVsZW1lbnRTdHJ1Y3RUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlN0cnVjdFR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRTdHJ1Y3RUeXBl
KSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVudEFycmF5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpB
cnJheVR5cGUqIE1UTDo6UG9pbnRlclR5cGU6OmVsZW1lbnRBcnJheVR5cGUoKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJyYXlUeXBlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChlbGVtZW50QXJyYXlUeXBlKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlKiBNVEw6OlRleHR1cmVSZWZl
cmVuY2VUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6
VGV4dHVyZVJlZmVyZW5jZVR5cGU+KF9NVExfUFJJVkFURV9DTFMoTVRMVGV4dHVyZVJlZmVyZW5j
ZVR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVS
ZWZlcmVuY2VUeXBlKiBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlPigpOworfQor
CisvLyBwcm9wZXJ0eTogdGV4dHVyZURhdGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBl
IE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGU6OnRleHR1cmVEYXRhVHlwZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh0ZXh0dXJlRGF0YVR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVU
eXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVUeXBlIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5
cGU6OnRleHR1cmVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRleHR1cmVUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVUeXBlKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRBY2Nl
c3MgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6YWNjZXNzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGFjY2VzcykpOworfQorCisvLyBwcm9wZXJ0eTogaXNEZXB0aFRleHR1cmUKK19N
VExfSU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6aXNEZXB0aFRleHR1cmUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaXNEZXB0aFRleHR1cmUpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnQqIE1UTDo6QXJndW1lbnQ6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBcmd1bWVudD4oX01UTF9QUklW
QVRFX0NMUyhNVExBcmd1bWVudCkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5F
IE1UTDo6QXJndW1lbnQqIE1UTDo6QXJndW1lbnQ6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6QXJndW1lbnQ+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitf
TVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkFyZ3VtZW50OjpuYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0eXBlCitfTVRMX0lOTElORSBNVEw6
OkFyZ3VtZW50VHlwZSBNVEw6OkFyZ3VtZW50Ojp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50VHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh0eXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6
QXJndW1lbnRBY2Nlc3MgTVRMOjpBcmd1bWVudDo6YWNjZXNzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGFjY2VzcykpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXgKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50OjppbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGluZGV4KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY3RpdmUKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpBcmd1bWVudDo6YWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzQWN0aXZlKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBidWZmZXJBbGlnbm1lbnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFy
Z3VtZW50OjpidWZmZXJBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXJBbGln
bm1lbnQpKTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckRhdGFTaXplCitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpBcmd1bWVudDo6YnVmZmVyRGF0YVNpemUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChidWZmZXJEYXRhU2l6ZSkpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyRGF0YVR5
cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpBcmd1bWVudDo6YnVmZmVyRGF0YVR5
cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5
cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVyRGF0YVR5cGUpKTsKK30KKworLy8gcHJv
cGVydHk6IGJ1ZmZlclN0cnVjdFR5cGUKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRM
OjpBcmd1bWVudDo6YnVmZmVyU3RydWN0VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChi
dWZmZXJTdHJ1Y3RUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJQb2ludGVyVHlwZQor
X01UTF9JTkxJTkUgTVRMOjpQb2ludGVyVHlwZSogTVRMOjpBcmd1bWVudDo6YnVmZmVyUG9pbnRl
clR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UG9p
bnRlclR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlclBvaW50ZXJUeXBlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiB0aHJlYWRncm91cE1lbW9yeUFsaWdubWVudAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6OnRocmVhZGdyb3VwTWVtb3J5QWxpZ25tZW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQpKTsKK30KKwor
Ly8gcHJvcGVydHk6IHRocmVhZGdyb3VwTWVtb3J5RGF0YVNpemUKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OkFyZ3VtZW50Ojp0aHJlYWRncm91cE1lbW9yeURhdGFTaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodGhyZWFkZ3JvdXBNZW1vcnlEYXRhU2l6ZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogdGV4dHVyZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVR5cGUgTVRMOjpBcmd1
bWVudDo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZVR5cGUp
KTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVEYXRhVHlwZQorX01UTF9JTkxJTkUgTVRMOjpE
YXRhVHlwZSBNVEw6OkFyZ3VtZW50Ojp0ZXh0dXJlRGF0YVR5cGUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodGV4dHVyZURhdGFUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBpc0RlcHRoVGV4dHVy
ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkFyZ3VtZW50Ojppc0RlcHRoVGV4dHVyZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChpc0RlcHRoVGV4dHVyZSkpOworfQorCisvLyBwcm9wZXJ0eTogYXJyYXlMZW5ndGgK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50OjphcnJheUxlbmd0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGFycmF5TGVuZ3RoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnRFbmNvZGVyLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudEVuY29kZXIuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBjZWNjN2Q5NTY3NTJjNjMzMWE2MzA3ZGE1MDg5MWE3MWQyYzEwNGQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
QXJndW1lbnRFbmNvZGVyLmhwcApAQCAtMCwwICsxLDI1MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQXJndW1lbnRFbmNv
ZGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5o
cHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExD
b21wdXRlUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5o
cHAiCisjaW5jbHVkZSAiTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUmVuZGVyUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorI2lu
Y2x1ZGUgIk1UTFRleHR1cmUuaHBwIgorI2luY2x1ZGUgIk1UTFZpc2libGVGdW5jdGlvblRhYmxl
LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQXJndW1lbnRFbmNvZGVyIDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxBcmd1bWVudEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgY2xhc3Mg
RGV2aWNlKiAgICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAg
ICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldExhYmVs
KGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ZW5jb2RlZExlbmd0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICBhbGln
bm1lbnQoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0QXJndW1lbnRC
dWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBhcmd1bWVudEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEFyZ3VtZW50QnVmZmVyKGNv
bnN0IGNsYXNzIEJ1ZmZlciogYXJndW1lbnRCdWZmZXIsIE5TOjpVSW50ZWdlciBzdGFydE9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGFycmF5RWxlbWVudCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
c2V0QnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zm
c2V0c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBz
ZXRUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFRleHR1cmVzKE1UTDo6VGV4dHVy
ZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgc2V0U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0U2Ft
cGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdl
KTsKKworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgY29uc3RhbnREYXRhKE5TOjpVSW50ZWdl
ciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFJlbmRlclBpcGVsaW5l
U3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUsIE5TOjpVSW50
ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFJlbmRlclBpcGVs
aW5lU3RhdGVzKE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVzLCBOUzo6UmFuZ2Ug
cmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRDb21wdXRlUGlwZWxpbmVT
dGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUsIE5TOjpVSW50
ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldENvbXB1dGVQaXBl
bGluZVN0YXRlcyhNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZXMsIE5TOjpSYW5n
ZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEluZGlyZWN0Q29tbWFu
ZEJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFu
ZEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVycyhNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciog
YnVmZmVycywgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
c2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVy
ZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgY2xh
c3MgQXJndW1lbnRFbmNvZGVyKiBuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGluZGV4
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGUo
Y29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5jdGlvblRhYmxlLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRWaXNp
YmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5j
dGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBp
bmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVzKGNvbnN0IEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7Cit9OworCit9CisKKy8vIHByb3BlcnR5
OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6
ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRl
dmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpBcmd1bWVudEVuY29kZXI6Omxh
YmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5n
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogZW5jb2RlZExlbmd0aAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnRFbmNvZGVyOjplbmNvZGVkTGVuZ3Ro
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlZExlbmd0aCkpOworfQorCisvLyBwcm9wZXJ0
eTogYWxpZ25tZW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudEVuY29k
ZXI6OmFsaWdubWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsaWdubWVudCkpOworfQorCisv
LyBtZXRob2Q6IHNldEFyZ3VtZW50QnVmZmVyOm9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBcmd1bWVudEVuY29kZXI6OnNldEFyZ3VtZW50QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBh
cmd1bWVudEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QXJndW1lbnRCdWZmZXJfb2Zm
c2V0XyksIGFyZ3VtZW50QnVmZmVyLCBvZmZzZXQpOworfQorCisvLyBtZXRob2Q6IHNldEFyZ3Vt
ZW50QnVmZmVyOnN0YXJ0T2Zmc2V0OmFycmF5RWxlbWVudDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBcmd1bWVudEVuY29kZXI6OnNldEFyZ3VtZW50QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBh
cmd1bWVudEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHN0YXJ0T2Zmc2V0LCBOUzo6VUludGVnZXIgYXJy
YXlFbGVtZW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRBcmd1bWVudEJ1ZmZlcl9zdGFydE9mZnNldF9hcnJheUVsZW1lbnRfKSwg
YXJndW1lbnRCdWZmZXIsIHN0YXJ0T2Zmc2V0LCBhcnJheUVsZW1lbnQpOworfQorCisvLyBtZXRo
b2Q6IHNldEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1
bWVudEVuY29kZXI6OnNldEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUlu
dGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcl9vZmZzZXRfYXRJbmRl
eF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEJ1ZmZlcnM6
b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVy
OjpzZXRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdlciBv
ZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5nZV8p
LCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGV4dHVyZTph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0VGV4dHVy
ZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGV4
dHVyZV9hdEluZGV4XyksIHRleHR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUZXh0
dXJlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpz
ZXRUZXh0dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1cmVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDog
c2V0U2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRF
bmNvZGVyOjpzZXRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIs
IE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRlX2F0SW5kZXhfKSwgc2FtcGxlciwg
aW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZXM6d2l0aFJhbmdlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0U2FtcGxlclN0YXRlcyhNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVyU3Rh
dGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IGNvbnN0
YW50RGF0YUF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkKiBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6
Y29uc3RhbnREYXRhKE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb25zdGFudERhdGFBdElu
ZGV4XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRSZW5kZXJQaXBlbGluZVN0YXRlOmF0
SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRSZW5kZXJQ
aXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUsIE5T
OjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZV9hdEluZGV4XyksIHBpcGVs
aW5lLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXM6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0UmVuZGVy
UGlwZWxpbmVTdGF0ZXMoTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBwaXBlbGluZXMsIE5TOjpS
YW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXNfd2l0aFJhbmdlXyksIHBpcGVsaW5l
cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldENvbXB1dGVQaXBlbGluZVN0YXRlOmF0SW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRDb21wdXRlUGlw
ZWxpbmVTdGF0ZShjb25zdCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZSwgTlM6
OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZV9hdEluZGV4XyksIHBpcGVs
aW5lLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzOndp
dGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldENvbXB1
dGVQaXBlbGluZVN0YXRlcyhNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZXMsIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzX3dpdGhSYW5nZV8pLCBwaXBl
bGluZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXI6
YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldEluZGly
ZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJl
Y3RDb21tYW5kQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGlyZWN0Q29tbWFuZEJ1
ZmZlcl9hdEluZGV4XyksIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgaW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0SW5kaXJlY3RDb21tYW5kQnVmZmVycyhNVEw6
OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogYnVmZmVycywgTlM6OlJhbmdlIHJhbmdlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRp
cmVjdENvbW1hbmRCdWZmZXJzX3dpdGhSYW5nZV8pLCBidWZmZXJzLCByYW5nZSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3Qg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJ
bnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRJbmRleF8pLCBhY2NlbGVy
YXRpb25TdHJ1Y3R1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29k
ZXJGb3JCdWZmZXJBdEluZGV4OgorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEVuY29kZXIqIE1U
TDo6QXJndW1lbnRFbmNvZGVyOjpuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGluZGV4
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRFbmNvZGVy
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBcmd1bWVudEVuY29kZXJGb3JCdWZmZXJBdElu
ZGV4XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0VmlzaWJs
ZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJsZUZ1
bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVf
YXRJbmRleF8pLCB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6
IHNldFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QXJndW1lbnRFbmNvZGVyOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpW
aXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJsZUZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSBy
YW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhSYW5nZV8pLCB2aXNpYmxlRnVuY3Rp
b25UYWJsZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0SW5kZXhfKSwgaW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6
OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoUmFuZ2VfKSwgaW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MTQyZDM3NGMzNWJlMzlkNjY2MmU4MTRiNzcxOWUzNDY4NTJjNWZjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJpbmFyeUFyY2hpdmUu
aHBwCkBAIC0wLDAgKzEsMTM4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBCaW5hcnlBcmNoaXZlRXJy
b3IpIHsKKyAgICBCaW5hcnlBcmNoaXZlRXJyb3JOb25lID0gMCwKKyAgICBCaW5hcnlBcmNoaXZl
RXJyb3JJbnZhbGlkRmlsZSA9IDEsCisgICAgQmluYXJ5QXJjaGl2ZUVycm9yVW5leHBlY3RlZEVs
ZW1lbnQgPSAyLAorICAgIEJpbmFyeUFyY2hpdmVFcnJvckNvbXBpbGF0aW9uRmFpbHVyZSA9IDMs
Cit9OworCitjbGFzcyBCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWlu
ZzxCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCaW5hcnlBcmNo
aXZlRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpVUkwqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXJsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRVcmwoY29uc3QgTlM6OlVSTCogdXJsKTsKK307CisKK2NsYXNz
IEJpbmFyeUFyY2hpdmUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEJpbmFyeUFyY2hpdmU+Cit7
CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRGV2
aWNlKiBkZXZpY2UoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgYWRkQ29tcHV0ZVBpcGVs
aW5lRnVuY3Rpb25zKGNvbnN0IGNsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGJvb2wgICAgICAgICAgYWRkUmVuZGVy
UGlwZWxpbmVGdW5jdGlvbnMoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29sICAgICAgICAgIGFkZFRp
bGVSZW5kZXJQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29sICAg
ICAgICAgIHNlcmlhbGl6ZVRvVVJMKGNvbnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiogZXJy
b3IpOworCisgICAgYm9vbCAgICAgICAgICBhZGRGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlv
bkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IGNsYXNzIExpYnJhcnkqIGxpYnJhcnksIE5T
OjpFcnJvcioqIGVycm9yKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIE1UTDo6QmluYXJ5QXJjaGl2
ZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExCaW5hcnlBcmNo
aXZlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3I6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QmluYXJ5QXJjaGl2ZURl
c2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB1cmwKK19NVExfSU5MSU5FIE5TOjpVUkwq
IE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3I6OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVSTCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXJs
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcjo6
c2V0VXJsKGNvbnN0IE5TOjpVUkwqIHVybCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VXJsXyksIHVybCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpCaW5hcnlBcmNoaXZlOjps
YWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmlu
Zyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkJpbmFyeUFyY2hpdmU6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5F
IE1UTDo6RGV2aWNlKiBNVEw6OkJpbmFyeUFyY2hpdmU6OmRldmljZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGRldmljZSkpOworfQorCisvLyBtZXRob2Q6IGFkZENvbXB1dGVQaXBlbGluZUZ1bmN0
aW9uc1dpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkJpbmFyeUFy
Y2hpdmU6OmFkZENvbXB1dGVQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBNVEw6OkNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRk
Q29tcHV0ZVBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRv
ciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IGFkZFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0
aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6
YWRkUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnMoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRkUmVuZGVyUGlw
ZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7
Cit9CisKKy8vIG1ldGhvZDogYWRkVGlsZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2Ny
aXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6YWRkVGls
ZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zKGNvbnN0IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGRUaWxlUmVu
ZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBl
cnJvcik7Cit9CisKKy8vIG1ldGhvZDogc2VyaWFsaXplVG9VUkw6ZXJyb3I6CitfTVRMX0lOTElO
RSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6c2VyaWFsaXplVG9VUkwoY29uc3QgTlM6OlVSTCog
dXJsLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNlcmlhbGl6ZVRvVVJMX2Vycm9yXyksIHVy
bCwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IGFkZEZ1bmN0aW9uV2l0aERlc2NyaXB0b3I6bGli
cmFyeTplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpCaW5hcnlBcmNoaXZlOjphZGRGdW5j
dGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgTVRM
OjpMaWJyYXJ5KiBsaWJyYXJ5LCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFkZEZ1bmN0aW9u
V2l0aERlc2NyaXB0b3JfbGlicmFyeV9lcnJvcl8pLCBkZXNjcmlwdG9yLCBsaWJyYXJ5LCBlcnJv
cik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhODZiNmE5NTAx
YzY4NTNmMGM4ZjVhMGJiMGFiN2ViNjAzNzdjMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcApA
QCAtMCwwICsxLDI0NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5k
RW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7
CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBCbGl0T3B0aW9uKSB7CisgICAgQmxpdE9wdGlv
bk5vbmUgPSAwLAorICAgIEJsaXRPcHRpb25EZXB0aEZyb21EZXB0aFN0ZW5jaWwgPSAxLAorICAg
IEJsaXRPcHRpb25TdGVuY2lsRnJvbURlcHRoU3RlbmNpbCA9IDIsCisgICAgQmxpdE9wdGlvblJv
d0xpbmVhclBWUlRDID0gNCwKK307CisKK2NsYXNzIEJsaXRDb21tYW5kRW5jb2RlciA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8QmxpdENvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rlcj4KK3sK
K3B1YmxpYzoKKyAgICB2b2lkIHN5bmNocm9uaXplUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3Vy
Y2UqIHJlc291cmNlKTsKKworICAgIHZvaWQgc3luY2hyb25pemVUZXh0dXJlKGNvbnN0IGNsYXNz
IFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6OlVJbnRlZ2VyIGxldmVs
KTsKKworICAgIHZvaWQgY29weUZyb21UZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNvdXJj
ZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxl
dmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25z
dCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRMOjpPcmlnaW4gZGVz
dGluYXRpb25PcmlnaW4pOworCisgICAgdm9pZCBjb3B5RnJvbUJ1ZmZlcihjb25zdCBjbGFzcyBC
dWZmZXIqIHNvdXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgTlM6OlVJbnRl
Z2VyIHNvdXJjZUJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJJbWFnZSwg
TVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IGNsYXNzIFRleHR1cmUqIGRlc3RpbmF0aW9uVGV4
dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBkZXN0aW5hdGlvbk9yaWdpbik7CisKKyAgICB2b2lkIGNv
cHlGcm9tQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUludGVn
ZXIgc291cmNlT2Zmc2V0LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJSb3csIE5TOjpVSW50
ZWdlciBzb3VyY2VCeXRlc1BlckltYWdlLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgY2xh
c3MgVGV4dHVyZSogZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25T
bGljZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3RpbmF0
aW9uT3JpZ2luLCBNVEw6OkJsaXRPcHRpb24gb3B0aW9ucyk7CisKKyAgICB2b2lkIGNvcHlGcm9t
VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIg
c291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZlbCwgTVRMOjpPcmlnaW4gc291cmNl
T3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBkZXN0aW5h
dGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIg
ZGVzdGluYXRpb25CeXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJJ
bWFnZSk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiBz
b3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3Vy
Y2VMZXZlbCwgTVRMOjpPcmlnaW4gc291cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwg
Y29uc3QgY2xhc3MgQnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3Rp
bmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25CeXRlc1BlclJvdywgTlM6OlVJ
bnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZSwgTVRMOjpCbGl0T3B0aW9uIG9wdGlvbnMp
OworCisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcHMoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVy
ZSk7CisKKyAgICB2b2lkIGZpbGxCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5T
OjpSYW5nZSByYW5nZSwgdWludDhfdCB2YWx1ZSk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4dHVy
ZShjb25zdCBjbGFzcyBUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNl
U2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZlbCwgY29uc3QgY2xhc3MgVGV4dHVyZSogZGVz
dGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGljZSwgTlM6OlVJbnRl
Z2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZUNvdW50LCBOUzo6VUludGVn
ZXIgbGV2ZWxDb3VudCk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4dHVyZShjb25zdCBjbGFzcyBU
ZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBjb25zdCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRl
eHR1cmUpOworCisgICAgdm9pZCBjb3B5RnJvbUJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIHNv
dXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgY29uc3QgY2xhc3MgQnVmZmVy
KiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6
VUludGVnZXIgc2l6ZSk7CisKKyAgICB2b2lkIHVwZGF0ZUZlbmNlKGNvbnN0IGNsYXNzIEZlbmNl
KiBmZW5jZSk7CisKKyAgICB2b2lkIHdhaXRGb3JGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVu
Y2UpOworCisgICAgdm9pZCBnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnMoY29uc3QgY2xhc3MgVGV4
dHVyZSogdGV4dHVyZSwgTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbWlwTGV2ZWws
IE5TOjpVSW50ZWdlciBzbGljZSwgYm9vbCByZXNldENvdW50ZXJzLCBjb25zdCBjbGFzcyBCdWZm
ZXIqIGNvdW50ZXJzQnVmZmVyLCBOUzo6VUludGVnZXIgY291bnRlcnNCdWZmZXJPZmZzZXQpOwor
CisgICAgdm9pZCByZXNldFRleHR1cmVBY2Nlc3NDb3VudGVycyhjb25zdCBjbGFzcyBUZXh0dXJl
KiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBtaXBMZXZlbCwgTlM6
OlVJbnRlZ2VyIHNsaWNlKTsKKworICAgIHZvaWQgb3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vz
cyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlKTsKKworICAgIHZvaWQgb3B0aW1pemVDb250
ZW50c0ZvckdQVUFjY2Vzcyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVn
ZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZlbCk7CisKKyAgICB2b2lkIG9wdGltaXplQ29udGVu
dHNGb3JDUFVBY2Nlc3MoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSk7CisKKyAgICB2b2lk
IG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3MoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVy
ZSwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBOUzo6VUludGVnZXIgbGV2ZWwpOworCisgICAgdm9pZCBy
ZXNldENvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBi
dWZmZXIsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkIGNvcHlJbmRpcmVjdENvbW1hbmRC
dWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBzb3VyY2UsIE5TOjpSYW5n
ZSBzb3VyY2VSYW5nZSwgY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBkZXN0aW5h
dGlvbiwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uSW5kZXgpOworCisgICAgdm9pZCBvcHRpbWl6
ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIq
IGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgc2Ft
cGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1w
bGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKTsKKworICAg
IHZvaWQgcmVzb2x2ZUNvdW50ZXJzKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNh
bXBsZUJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGRlc3RpbmF0
aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZzZXQpOworfTsKKworfQorCisv
LyBtZXRob2Q6IHN5bmNocm9uaXplUmVzb3VyY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpzeW5jaHJvbml6ZVJlc291cmNlKGNvbnN0IE1UTDo6UmVzb3VyY2Uq
IHJlc291cmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzeW5jaHJvbml6ZVJlc291cmNlXyksIHJlc291cmNlKTsKK30KKworLy8gbWV0
aG9kOiBzeW5jaHJvbml6ZVRleHR1cmU6c2xpY2U6bGV2ZWw6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QmxpdENvbW1hbmRFbmNvZGVyOjpzeW5jaHJvbml6ZVRleHR1cmUoY29uc3QgTVRMOjpUZXh0
dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZlbCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3lu
Y2hyb25pemVUZXh0dXJlX3NsaWNlX2xldmVsXyksIHRleHR1cmUsIHNsaWNlLCBsZXZlbCk7Cit9
CisKKy8vIG1ldGhvZDogY29weUZyb21UZXh0dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNv
dXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvVGV4dHVyZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0
aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENv
bW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiBzb3VyY2VU
ZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZl
bCwgTVRMOjpPcmlnaW4gc291cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3Qg
TVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlv
blNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRMOjpPcmlnaW4gZGVzdGlu
YXRpb25PcmlnaW4pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF9zb3Vy
Y2VPcmlnaW5fc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGljZV9kZXN0aW5hdGlv
bkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luXyksIHNvdXJjZVRleHR1cmUsIHNvdXJjZVNsaWNlLCBz
b3VyY2VMZXZlbCwgc291cmNlT3JpZ2luLCBzb3VyY2VTaXplLCBkZXN0aW5hdGlvblRleHR1cmUs
IGRlc3RpbmF0aW9uU2xpY2UsIGRlc3RpbmF0aW9uTGV2ZWwsIGRlc3RpbmF0aW9uT3JpZ2luKTsK
K30KKworLy8gbWV0aG9kOiBjb3B5RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6c291cmNlQnl0ZXNQ
ZXJSb3c6c291cmNlQnl0ZXNQZXJJbWFnZTpzb3VyY2VTaXplOnRvVGV4dHVyZTpkZXN0aW5hdGlv
blNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbUJ1ZmZlcihjb25zdCBNVEw6OkJ1
ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUludGVnZXIgc291cmNlT2Zmc2V0LCBOUzo6VUludGVn
ZXIgc291cmNlQnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBzb3VyY2VCeXRlc1BlckltYWdlLCBN
VEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1
cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRp
b25MZXZlbCwgTVRMOjpPcmlnaW4gZGVzdGluYXRpb25PcmlnaW4pCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tQnVmZmVyX3Nv
dXJjZU9mZnNldF9zb3VyY2VCeXRlc1BlclJvd19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJjZVNp
emVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5hdGlv
bk9yaWdpbl8pLCBzb3VyY2VCdWZmZXIsIHNvdXJjZU9mZnNldCwgc291cmNlQnl0ZXNQZXJSb3cs
IHNvdXJjZUJ5dGVzUGVySW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RpbmF0aW9uVGV4dHVyZSwgZGVz
dGluYXRpb25TbGljZSwgZGVzdGluYXRpb25MZXZlbCwgZGVzdGluYXRpb25PcmlnaW4pOworfQor
CisvLyBtZXRob2Q6IGNvcHlGcm9tQnVmZmVyOnNvdXJjZU9mZnNldDpzb3VyY2VCeXRlc1BlclJv
dzpzb3VyY2VCeXRlc1BlckltYWdlOnNvdXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xp
Y2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0aW5hdGlvbk9yaWdpbjpvcHRpb25zOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Y29weUZyb21CdWZmZXIoY29uc3QgTVRM
OjpCdWZmZXIqIHNvdXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgTlM6OlVJ
bnRlZ2VyIHNvdXJjZUJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJJbWFn
ZSwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IE1UTDo6VGV4dHVyZSogZGVzdGluYXRpb25U
ZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGljZSwgTlM6OlVJbnRlZ2VyIGRlc3Rp
bmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3RpbmF0aW9uT3JpZ2luLCBNVEw6OkJsaXRPcHRp
b24gb3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoY29weUZyb21CdWZmZXJfc291cmNlT2Zmc2V0X3NvdXJjZUJ5dGVzUGVyUm93
X3NvdXJjZUJ5dGVzUGVySW1hZ2Vfc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGlj
ZV9kZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luX29wdGlvbnNfKSwgc291cmNlQnVm
ZmVyLCBzb3VyY2VPZmZzZXQsIHNvdXJjZUJ5dGVzUGVyUm93LCBzb3VyY2VCeXRlc1BlckltYWdl
LCBzb3VyY2VTaXplLCBkZXN0aW5hdGlvblRleHR1cmUsIGRlc3RpbmF0aW9uU2xpY2UsIGRlc3Rp
bmF0aW9uTGV2ZWwsIGRlc3RpbmF0aW9uT3JpZ2luLCBvcHRpb25zKTsKK30KKworLy8gbWV0aG9k
OiBjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291cmNlT3JpZ2luOnNv
dXJjZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVzdGluYXRpb25CeXRlc1BlclJv
dzpkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENv
bW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiBzb3VyY2VU
ZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZl
bCwgTVRMOjpPcmlnaW4gc291cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3Qg
TVRMOjpCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25P
ZmZzZXQsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIg
ZGVzdGluYXRpb25CeXRlc1BlckltYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291
cmNlTGV2ZWxfc291cmNlT3JpZ2luX3NvdXJjZVNpemVfdG9CdWZmZXJfZGVzdGluYXRpb25PZmZz
ZXRfZGVzdGluYXRpb25CeXRlc1BlclJvd19kZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2VfKSwgc291
cmNlVGV4dHVyZSwgc291cmNlU2xpY2UsIHNvdXJjZUxldmVsLCBzb3VyY2VPcmlnaW4sIHNvdXJj
ZVNpemUsIGRlc3RpbmF0aW9uQnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNldCwgZGVzdGluYXRpb25C
eXRlc1BlclJvdywgZGVzdGluYXRpb25CeXRlc1BlckltYWdlKTsKK30KKworLy8gbWV0aG9kOiBj
b3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291cmNlT3JpZ2luOnNvdXJj
ZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVzdGluYXRpb25CeXRlc1BlclJvdzpk
ZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6b3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpC
bGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tVGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHNv
dXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJj
ZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBj
b25zdCBNVEw6OkJ1ZmZlciogZGVzdGluYXRpb25CdWZmZXIsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvbk9mZnNldCwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3csIE5TOjpVSW50
ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2UsIE1UTDo6QmxpdE9wdGlvbiBvcHRpb25zKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNlTGV2ZWxfc291cmNlT3JpZ2luX3NvdXJj
ZVNpemVfdG9CdWZmZXJfZGVzdGluYXRpb25PZmZzZXRfZGVzdGluYXRpb25CeXRlc1BlclJvd19k
ZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2Vfb3B0aW9uc18pLCBzb3VyY2VUZXh0dXJlLCBzb3VyY2VT
bGljZSwgc291cmNlTGV2ZWwsIHNvdXJjZU9yaWdpbiwgc291cmNlU2l6ZSwgZGVzdGluYXRpb25C
dWZmZXIsIGRlc3RpbmF0aW9uT2Zmc2V0LCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBkZXN0aW5h
dGlvbkJ5dGVzUGVySW1hZ2UsIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IGdlbmVyYXRlTWlw
bWFwc0ZvclRleHR1cmU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVy
OjpnZW5lcmF0ZU1pcG1hcHMoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChnZW5lcmF0ZU1p
cG1hcHNGb3JUZXh0dXJlXyksIHRleHR1cmUpOworfQorCisvLyBtZXRob2Q6IGZpbGxCdWZmZXI6
cmFuZ2U6dmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpm
aWxsQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpSYW5nZSByYW5nZSwgdWlu
dDhfdCB2YWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZmlsbEJ1ZmZlcl9yYW5nZV92YWx1ZV8pLCBidWZmZXIsIHJhbmdlLCB2YWx1
ZSk7Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21UZXh0dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxl
dmVsOnRvVGV4dHVyZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6c2xpY2VDb3Vu
dDpsZXZlbENvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6
Y29weUZyb21UZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6OlVJ
bnRlZ2VyIHNvdXJjZVNsaWNlLCBOUzo6VUludGVnZXIgc291cmNlTGV2ZWwsIGNvbnN0IE1UTDo6
VGV4dHVyZSogZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGlj
ZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZUNvdW50
LCBOUzo6VUludGVnZXIgbGV2ZWxDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJjZVNsaWNlX3Nv
dXJjZUxldmVsX3RvVGV4dHVyZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfc2xp
Y2VDb3VudF9sZXZlbENvdW50XyksIHNvdXJjZVRleHR1cmUsIHNvdXJjZVNsaWNlLCBzb3VyY2VM
ZXZlbCwgZGVzdGluYXRpb25UZXh0dXJlLCBkZXN0aW5hdGlvblNsaWNlLCBkZXN0aW5hdGlvbkxl
dmVsLCBzbGljZUNvdW50LCBsZXZlbENvdW50KTsKK30KKworLy8gbWV0aG9kOiBjb3B5RnJvbVRl
eHR1cmU6dG9UZXh0dXJlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rl
cjo6Y29weUZyb21UZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwgY29u
c3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tVGV4dHVyZV90b1Rl
eHR1cmVfKSwgc291cmNlVGV4dHVyZSwgZGVzdGluYXRpb25UZXh0dXJlKTsKK30KKworLy8gbWV0
aG9kOiBjb3B5RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZz
ZXQ6c2l6ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlG
cm9tQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBzb3VyY2VCdWZmZXIsIE5TOjpVSW50ZWdlciBz
b3VyY2VPZmZzZXQsIGNvbnN0IE1UTDo6QnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIgc2l6ZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUZyb21CdWZm
ZXJfc291cmNlT2Zmc2V0X3RvQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0X3NpemVfKSwgc291cmNl
QnVmZmVyLCBzb3VyY2VPZmZzZXQsIGRlc3RpbmF0aW9uQnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNl
dCwgc2l6ZSk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlRmVuY2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjp1cGRhdGVGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBm
ZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRob2Q6IHdhaXRGb3JGZW5j
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OndhaXRGb3JGZW5j
ZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2FpdEZvckZlbmNlXyksIGZlbmNlKTsKK30KKwor
Ly8gbWV0aG9kOiBnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExldmVsOnNsaWNl
OnJlc2V0Q291bnRlcnM6Y291bnRlcnNCdWZmZXI6Y291bnRlcnNCdWZmZXJPZmZzZXQ6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpnZXRUZXh0dXJlQWNjZXNzQ291
bnRlcnMoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5T
OjpVSW50ZWdlciBtaXBMZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBib29sIHJlc2V0Q291bnRl
cnMsIGNvbnN0IE1UTDo6QnVmZmVyKiBjb3VudGVyc0J1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvdW50
ZXJzQnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnNfcmVnaW9uX21pcExldmVs
X3NsaWNlX3Jlc2V0Q291bnRlcnNfY291bnRlcnNCdWZmZXJfY291bnRlcnNCdWZmZXJPZmZzZXRf
KSwgdGV4dHVyZSwgcmVnaW9uLCBtaXBMZXZlbCwgc2xpY2UsIHJlc2V0Q291bnRlcnMsIGNvdW50
ZXJzQnVmZmVyLCBjb3VudGVyc0J1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXRU
ZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExldmVsOnNsaWNlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6cmVzZXRUZXh0dXJlQWNjZXNzQ291bnRlcnMo
Y29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50
ZWdlciBtaXBMZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldFRleHR1cmVBY2Nlc3NDb3Vu
dGVyc19yZWdpb25fbWlwTGV2ZWxfc2xpY2VfKSwgdGV4dHVyZSwgcmVnaW9uLCBtaXBMZXZlbCwg
c2xpY2UpOworfQorCisvLyBtZXRob2Q6IG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3M6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUNvbnRlbnRz
Rm9yR1BVQWNjZXNzKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3B0aW1pemVDb250ZW50
c0ZvckdQVUFjY2Vzc18pLCB0ZXh0dXJlKTsKK30KKworLy8gbWV0aG9kOiBvcHRpbWl6ZUNvbnRl
bnRzRm9yR1BVQWNjZXNzOnNsaWNlOmxldmVsOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRD
b21tYW5kRW5jb2Rlcjo6b3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vzcyhjb25zdCBNVEw6OlRl
eHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6OlVJbnRlZ2VyIGxldmVsKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChv
cHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzX3NsaWNlX2xldmVsXyksIHRleHR1cmUsIHNsaWNl
LCBsZXZlbCk7Cit9CisKKy8vIG1ldGhvZDogb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2VzczoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6Om9wdGltaXplQ29udGVu
dHNGb3JDUFVBY2Nlc3MoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChvcHRpbWl6ZUNvbnRl
bnRzRm9yQ1BVQWNjZXNzXyksIHRleHR1cmUpOworfQorCisvLyBtZXRob2Q6IG9wdGltaXplQ29u
dGVudHNGb3JDUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzKGNvbnN0IE1UTDo6
VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBOUzo6VUludGVnZXIgbGV2ZWwp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3Nfc2xpY2VfbGV2ZWxfKSwgdGV4dHVyZSwgc2xp
Y2UsIGxldmVsKTsKK30KKworLy8gbWV0aG9kOiByZXNldENvbW1hbmRzSW5CdWZmZXI6d2l0aFJh
bmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6cmVzZXRDb21t
YW5kc0luQnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBidWZmZXIsIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocmVzZXRDb21tYW5kc0luQnVmZmVyX3dpdGhSYW5nZV8pLCBidWZmZXIs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBjb3B5SW5kaXJlY3RDb21tYW5kQnVmZmVyOnNvdXJj
ZVJhbmdlOmRlc3RpbmF0aW9uOmRlc3RpbmF0aW9uSW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IE1U
TDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBzb3VyY2UsIE5TOjpSYW5nZSBzb3VyY2VSYW5nZSwg
Y29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGRlc3RpbmF0aW9uLCBOUzo6VUludGVn
ZXIgZGVzdGluYXRpb25JbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoY29weUluZGlyZWN0Q29tbWFuZEJ1ZmZlcl9zb3VyY2VSYW5n
ZV9kZXN0aW5hdGlvbl9kZXN0aW5hdGlvbkluZGV4XyksIHNvdXJjZSwgc291cmNlUmFuZ2UsIGRl
c3RpbmF0aW9uLCBkZXN0aW5hdGlvbkluZGV4KTsKK30KKworLy8gbWV0aG9kOiBvcHRpbWl6ZUlu
ZGlyZWN0Q29tbWFuZEJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6
OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6UmFuZ2Ug
cmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG9wdGltaXplSW5kaXJlY3RDb21tYW5kQnVmZmVyX3dpdGhSYW5nZV8pLCBpbmRpcmVj
dENvbW1hbmRCdWZmZXIsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzYW1wbGVDb3VudGVyc0lu
QnVmZmVyOmF0U2FtcGxlSW5kZXg6d2l0aEJhcnJpZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QmxpdENvbW1hbmRFbmNvZGVyOjpzYW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IE1UTDo6Q291
bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6VUludGVnZXIgc2FtcGxlSW5kZXgs
IGJvb2wgYmFycmllcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcl9hdFNhbXBsZUluZGV4X3dpdGhC
YXJyaWVyXyksIHNhbXBsZUJ1ZmZlciwgc2FtcGxlSW5kZXgsIGJhcnJpZXIpOworfQorCisvLyBt
ZXRob2Q6IHJlc29sdmVDb3VudGVyczppblJhbmdlOmRlc3RpbmF0aW9uQnVmZmVyOmRlc3RpbmF0
aW9uT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6cmVz
b2x2ZUNvdW50ZXJzKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVy
LCBOUzo6UmFuZ2UgcmFuZ2UsIGNvbnN0IE1UTDo6QnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvbHZlQ291bnRlcnNfaW5SYW5nZV9k
ZXN0aW5hdGlvbkJ1ZmZlcl9kZXN0aW5hdGlvbk9mZnNldF8pLCBzYW1wbGVCdWZmZXIsIHJhbmdl
LCBkZXN0aW5hdGlvbkJ1ZmZlciwgZGVzdGluYXRpb25PZmZzZXQpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRQYXNzLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFzcy5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzhlYWUzMWQ3MTI0ZGJhMzQ0MTAzZTdhNzNkNzk1NmQ0YmE1MzE2MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFz
cy5ocHAKQEAgLTAsMCArMSwxNjUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEJsaXRQYXNzLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJp
dmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1l
c3BhY2UgTVRMCit7CitjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEJsaXRQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCbGl0UGFzc1Nh
bXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xh
c3MgQ291bnRlclNhbXBsZUJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBs
ZUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVCdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNh
bXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0
YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVu
Y29kZXJTYW1wbGVJbmRleCk7Cit9OworCitjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEJsaXRQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBh
bGxvYygpOworCisgICAgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBh
dHRhY2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIEJsaXRQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdl
ciBhdHRhY2htZW50SW5kZXgpOworfTsKKworY2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yIDogcHVi
bGljIE5TOjpDb3B5aW5nPEJsaXRQYXNzRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGFsbG9jKCk7
CisKKyAgICBjbGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IqICAgICAg
ICAgICAgICAgICAgICAgYmxpdFBhc3NEZXNjcmlwdG9yKCk7CisKKyAgICBjbGFzcyBCbGl0UGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIHNhbXBsZUJ1ZmZlckF0dGFj
aG1lbnRzKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1U
TDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpC
bGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXIKK19NVExfSU5M
SU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0
dGFjaG1lbnREZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpC
bGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTYW1wbGVCdWZmZXIo
Y29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZUJ1
ZmZlcl8pLCBzYW1wbGVCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRPZkVuY29kZXJT
YW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QmxpdFBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3I6OnNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZFbmNv
ZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXhfKSwgc3RhcnRPZkVu
Y29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmRPZkVuY29kZXJTYW1wbGVJ
bmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChlbmRPZkVuY29kZXJTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0RW5k
T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleF8pLCBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCk7
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpCbGl0UGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJ
TkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1U
TDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdElu
ZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IqIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhl
ZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVj
dDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdFBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpC
bGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6
VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0Xyks
IGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzRGVzY3JpcHRvciogTVRMOjpCbGl0UGFzc0Rl
c2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpC
bGl0UGFzc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NEZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc0Rlc2Ny
aXB0b3IqIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6aW5pdDxNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYmxpdFBhc3NEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzRGVz
Y3JpcHRvciogTVRMOjpCbGl0UGFzc0Rlc2NyaXB0b3I6OmJsaXRQYXNzRGVzY3JpcHRvcigpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGl0UGFzc0Rlc2NyaXB0b3Iq
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEJsaXRQYXNzRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9T
RUwoYmxpdFBhc3NEZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXJB
dHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXJB
dHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCdWZmZXIuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYxYmRkZWZlYTc3MGQ1NDczZTMzZjFhYzRhYmIyNjQ2MmJmY2Y0NWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhw
cApAQCAtMCwwICsxLDEwMSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQnVmZmVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAy
MDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBw
IgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5o
cHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAi
TVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBCdWZmZXIgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPEJ1ZmZlciwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgTlM6
OlVJbnRlZ2VyICAgbGVuZ3RoKCkgY29uc3Q7CisKKyAgICB2b2lkKiAgICAgICAgICBjb250ZW50
cygpOworCisgICAgdm9pZCAgICAgICAgICAgZGlkTW9kaWZ5UmFuZ2UoTlM6OlJhbmdlIHJhbmdl
KTsKKworICAgIGNsYXNzIFRleHR1cmUqIG5ld1RleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBi
eXRlc1BlclJvdyk7CisKKyAgICB2b2lkICAgICAgICAgICBhZGREZWJ1Z01hcmtlcihjb25zdCBO
Uzo6U3RyaW5nKiBtYXJrZXIsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAg
ICByZW1vdmVBbGxEZWJ1Z01hcmtlcnMoKTsKKworICAgIGNsYXNzIEJ1ZmZlciogIHJlbW90ZVN0
b3JhZ2VCdWZmZXIoKSBjb25zdDsKKworICAgIGNsYXNzIEJ1ZmZlciogIG5ld1JlbW90ZUJ1ZmZl
clZpZXdGb3JEZXZpY2UoY29uc3QgY2xhc3MgRGV2aWNlKiBkZXZpY2UpOworfTsKKworfQorCisv
LyBwcm9wZXJ0eTogbGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpCdWZmZXI6
Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxlbmd0aCkpOworfQorCisvLyBtZXRob2Q6
IGNvbnRlbnRzCitfTVRMX0lOTElORSB2b2lkKiBNVEw6OkJ1ZmZlcjo6Y29udGVudHMoKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGNvbnRlbnRzKSk7Cit9CisKKy8vIG1ldGhvZDogZGlkTW9kaWZ5UmFuZ2U6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6QnVmZmVyOjpkaWRNb2RpZnlSYW5nZShOUzo6UmFuZ2UgcmFuZ2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRp
ZE1vZGlmeVJhbmdlXyksIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBuZXdUZXh0dXJlV2l0aERl
c2NyaXB0b3I6b2Zmc2V0OmJ5dGVzUGVyUm93OgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBN
VEw6OkJ1ZmZlcjo6bmV3VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNj
cmlwdG9yLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3cpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3Jfb2Zmc2V0X2J5dGVzUGVyUm93
XyksIGRlc2NyaXB0b3IsIG9mZnNldCwgYnl0ZXNQZXJSb3cpOworfQorCisvLyBtZXRob2Q6IGFk
ZERlYnVnTWFya2VyOnJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlcjo6YWRkRGVi
dWdNYXJrZXIoY29uc3QgTlM6OlN0cmluZyogbWFya2VyLCBOUzo6UmFuZ2UgcmFuZ2UpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFkZERl
YnVnTWFya2VyX3JhbmdlXyksIG1hcmtlciwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHJlbW92
ZUFsbERlYnVnTWFya2VycworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlcjo6cmVtb3ZlQWxs
RGVidWdNYXJrZXJzKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocmVtb3ZlQWxsRGVidWdNYXJrZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5
OiByZW1vdGVTdG9yYWdlQnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpCdWZm
ZXI6OnJlbW90ZVN0b3JhZ2VCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZW1vdGVTdG9y
YWdlQnVmZmVyKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVtb3RlQnVmZmVyVmlld0ZvckRldmlj
ZToKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkJ1ZmZlcjo6bmV3UmVtb3RlQnVmZmVy
Vmlld0ZvckRldmljZShjb25zdCBNVEw6OkRldmljZSogZGV2aWNlKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdSZW1vdGVCdWZmZXJWaWV3Rm9yRGV2aWNlXyksIGRldmljZSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1hbmFnZXIuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVNYW5hZ2Vy
LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xOGUxMGY1YzIzNGIwZjFlNDY2MDY0N2QxZWFiOTAwMDA0MjlkODc0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTENhcHR1cmVNYW5hZ2VyLmhwcApAQCAtMCwwICsxLDIyMCBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ2FwdHVyZU1h
bmFnZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdl
LmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExDYXB0dXJlTWFuYWdlci5ocHAiCisKK25h
bWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6SW50ZWdlciwgQ2FwdHVyZUVycm9yKSB7Cisg
ICAgQ2FwdHVyZUVycm9yTm90U3VwcG9ydGVkID0gMSwKKyAgICBDYXB0dXJlRXJyb3JBbHJlYWR5
Q2FwdHVyaW5nID0gMiwKKyAgICBDYXB0dXJlRXJyb3JJbnZhbGlkRGVzY3JpcHRvciA9IDMsCit9
OworCitfTVRMX0VOVU0oTlM6OkludGVnZXIsIENhcHR1cmVEZXN0aW5hdGlvbikgeworICAgIENh
cHR1cmVEZXN0aW5hdGlvbkRldmVsb3BlclRvb2xzID0gMSwKKyAgICBDYXB0dXJlRGVzdGluYXRp
b25HUFVUcmFjZURvY3VtZW50ID0gMiwKK307CisKK2NsYXNzIENhcHR1cmVEZXNjcmlwdG9yIDog
cHVibGljIE5TOjpDb3B5aW5nPENhcHR1cmVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0
YXRpYyBjbGFzcyBDYXB0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIENhcHR1
cmVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXB0dXJlT2JqZWN0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRDYXB0dXJlT2JqZWN0KGlkIGNhcHR1cmVPYmplY3QpOworCisgICAg
TVRMOjpDYXB0dXJlRGVzdGluYXRpb24gICAgICAgICBkZXN0aW5hdGlvbigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVzdGluYXRpb24oTVRMOjpDYXB0
dXJlRGVzdGluYXRpb24gZGVzdGluYXRpb24pOworCisgICAgTlM6OlVSTCogICAgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXRVUkwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldE91dHB1dFVSTChjb25zdCBOUzo6VVJMKiBvdXRwdXRVUkwpOworfTsKKwor
Y2xhc3MgQ2FwdHVyZU1hbmFnZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENhcHR1cmVNYW5h
Z2VyPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDYXB0dXJlTWFuYWdlciogYWxsb2Mo
KTsKKworICAgIHN0YXRpYyBjbGFzcyBDYXB0dXJlTWFuYWdlciogc2hhcmVkQ2FwdHVyZU1hbmFn
ZXIoKTsKKworICAgIE1UTDo6Q2FwdHVyZU1hbmFnZXIqICAgICAgICAgaW5pdCgpOworCisgICAg
Y2xhc3MgQ2FwdHVyZVNjb3BlKiAgICAgICAgICBuZXdDYXB0dXJlU2NvcGUoY29uc3QgY2xhc3Mg
RGV2aWNlKiBkZXZpY2UpOworCisgICAgY2xhc3MgQ2FwdHVyZVNjb3BlKiAgICAgICAgICBuZXdD
YXB0dXJlU2NvcGUoY29uc3QgY2xhc3MgQ29tbWFuZFF1ZXVlKiBjb21tYW5kUXVldWUpOworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0Rlc3RpbmF0aW9uKE1UTDo6
Q2FwdHVyZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKTsKKworICAgIGJvb2wgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhcnRDYXB0dXJlKGNvbnN0IGNsYXNzIENhcHR1cmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0Q2FwdHVyZShjb25zdCBjbGFzcyBEZXZpY2UqIGRldmljZSk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q2FwdHVyZShjb25zdCBjbGFzcyBD
b21tYW5kUXVldWUqIGNvbW1hbmRRdWV1ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0Q2FwdHVyZShjb25zdCBjbGFzcyBDYXB0dXJlU2NvcGUqIGNhcHR1cmVTY29w
ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BDYXB0dXJlKCk7CisK
KyAgICBjbGFzcyBDYXB0dXJlU2NvcGUqICAgICAgICAgIGRlZmF1bHRDYXB0dXJlU2NvcGUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlZmF1bHRDYXB0dXJl
U2NvcGUoY29uc3QgY2xhc3MgQ2FwdHVyZVNjb3BlKiBkZWZhdWx0Q2FwdHVyZVNjb3BlKTsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgaXNDYXB0dXJpbmcoKSBjb25zdDsKK307
CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVy
ZURlc2NyaXB0b3IqIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDYXB0dXJlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRF
X0NMUyhNVExDYXB0dXJlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3IqIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q2FwdHVyZURlc2NyaXB0
b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBjYXB0dXJlT2JqZWN0CitfTVRMX0lOTElORSBpZCBN
VEw6OkNhcHR1cmVEZXNjcmlwdG9yOjpjYXB0dXJlT2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxpZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjYXB0dXJl
T2JqZWN0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlRGVzY3JpcHRvcjo6
c2V0Q2FwdHVyZU9iamVjdChpZCBjYXB0dXJlT2JqZWN0KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDYXB0dXJlT2JqZWN0XyksIGNh
cHR1cmVPYmplY3QpOworfQorCisvLyBwcm9wZXJ0eTogZGVzdGluYXRpb24KK19NVExfSU5MSU5F
IE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OmRlc3RpbmF0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNhcHR1
cmVEZXN0aW5hdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXN0aW5hdGlvbikpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OnNldERlc3RpbmF0aW9u
KE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXN0aW5hdGlvbl8pLCBk
ZXN0aW5hdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBvdXRwdXRVUkwKK19NVExfSU5MSU5FIE5T
OjpVUkwqIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6Om91dHB1dFVSTCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVSTCo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwob3V0cHV0VVJMKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlRGVzY3Jp
cHRvcjo6c2V0T3V0cHV0VVJMKGNvbnN0IE5TOjpVUkwqIG91dHB1dFVSTCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3V0cHV0VVJM
XyksIG91dHB1dFVSTCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OkNhcHR1cmVNYW5hZ2VyKiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q2FwdHVyZU1hbmFnZXI+KF9NVExfUFJJ
VkFURV9DTFMoTVRMQ2FwdHVyZU1hbmFnZXIpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogc2hh
cmVkQ2FwdHVyZU1hbmFnZXIKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVyZU1hbmFnZXIqIE1UTDo6
Q2FwdHVyZU1hbmFnZXI6OnNoYXJlZENhcHR1cmVNYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNhcHR1cmVNYW5hZ2VyKj4oX01UTF9QUklWQVRFX0NMUyhN
VExDYXB0dXJlTWFuYWdlciksIF9NVExfUFJJVkFURV9TRUwoc2hhcmVkQ2FwdHVyZU1hbmFnZXIp
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVNYW5hZ2Vy
KiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OkNhcHR1cmVNYW5hZ2VyPigpOworfQorCisvLyBtZXRob2Q6IG5ld0NhcHR1cmVT
Y29wZVdpdGhEZXZpY2U6CitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVTY29wZSogTVRMOjpDYXB0
dXJlTWFuYWdlcjo6bmV3Q2FwdHVyZVNjb3BlKGNvbnN0IE1UTDo6RGV2aWNlKiBkZXZpY2UpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDYXB0dXJlU2NvcGUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhEZXZpY2VfKSwgZGV2aWNlKTsK
K30KKworLy8gbWV0aG9kOiBuZXdDYXB0dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlOgorX01UTF9J
TkxJTkUgTVRMOjpDYXB0dXJlU2NvcGUqIE1UTDo6Q2FwdHVyZU1hbmFnZXI6Om5ld0NhcHR1cmVT
Y29wZShjb25zdCBNVEw6OkNvbW1hbmRRdWV1ZSogY29tbWFuZFF1ZXVlKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q2FwdHVyZVNjb3BlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdDYXB0dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlXyksIGNvbW1hbmRRdWV1ZSk7
Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNEZXN0aW5hdGlvbjoKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpDYXB0dXJlTWFuYWdlcjo6c3VwcG9ydHNEZXN0aW5hdGlvbihNVEw6OkNhcHR1cmVEZXN0
aW5hdGlvbiBkZXN0aW5hdGlvbikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNh
ZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c0Rlc3RpbmF0aW9uXyksIGRl
c3RpbmF0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRvcjpl
cnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDYXB0dXJlTWFuYWdlcjo6c3RhcnRDYXB0dXJl
KGNvbnN0IE1UTDo6Q2FwdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVy
cm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRv
ciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IHN0YXJ0Q2FwdHVyZVdpdGhEZXZpY2U6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN0YXJ0Q2FwdHVyZShjb25zdCBNVEw6
OkRldmljZSogZGV2aWNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdGFydENhcHR1cmVXaXRoRGV2aWNlXyksIGRldmljZSk7Cit9CisK
Ky8vIG1ldGhvZDogc3RhcnRDYXB0dXJlV2l0aENvbW1hbmRRdWV1ZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDYXB0dXJlTWFuYWdlcjo6c3RhcnRDYXB0dXJlKGNvbnN0IE1UTDo6Q29tbWFuZFF1
ZXVlKiBjb21tYW5kUXVldWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0Q2FwdHVyZVdpdGhDb21tYW5kUXVldWVfKSwgY29tbWFu
ZFF1ZXVlKTsKK30KKworLy8gbWV0aG9kOiBzdGFydENhcHR1cmVXaXRoU2NvcGU6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN0YXJ0Q2FwdHVyZShjb25zdCBNVEw6OkNh
cHR1cmVTY29wZSogY2FwdHVyZVNjb3BlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFydENhcHR1cmVXaXRoU2NvcGVfKSwgY2FwdHVy
ZVNjb3BlKTsKK30KKworLy8gbWV0aG9kOiBzdG9wQ2FwdHVyZQorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNhcHR1cmVNYW5hZ2VyOjpzdG9wQ2FwdHVyZSgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3BDYXB0dXJlKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBkZWZhdWx0Q2FwdHVyZVNjb3BlCitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVT
Y29wZSogTVRMOjpDYXB0dXJlTWFuYWdlcjo6ZGVmYXVsdENhcHR1cmVTY29wZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDYXB0dXJlU2NvcGUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGRlZmF1bHRDYXB0dXJlU2NvcGUpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpzZXREZWZhdWx0Q2FwdHVyZVNjb3BlKGNvbnN0
IE1UTDo6Q2FwdHVyZVNjb3BlKiBkZWZhdWx0Q2FwdHVyZVNjb3BlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZWZhdWx0Q2FwdHVy
ZVNjb3BlXyksIGRlZmF1bHRDYXB0dXJlU2NvcGUpOworfQorCisvLyBwcm9wZXJ0eTogaXNDYXB0
dXJpbmcKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDYXB0dXJlTWFuYWdlcjo6aXNDYXB0dXJpbmco
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaXNDYXB0dXJpbmcpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlU2NvcGUuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVTY29wZS5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjM2MDIzNWExNDg2MWI4ZWNiY2ZmY2Y0MDJkNWEzY2ExMjQ1MTk5OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlU2Nv
cGUuaHBwCkBAIC0wLDAgKzEsOTIgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTENhcHR1cmVTY29wZS5ocHAKKy8vCisvLyBD
b3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5o
cHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlICIuLi9Gb3VuZGF0aW9u
L05TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICIuLi9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcCIKKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFj
ZSBNVEwKK3sKK2NsYXNzIENhcHR1cmVTY29wZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q2Fw
dHVyZVNjb3BlPgoreworcHVibGljOgorICAgIGNsYXNzIERldmljZSogICAgICAgZGV2aWNlKCkg
Y29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBwTGFiZWwpOworCisg
ICAgY2xhc3MgQ29tbWFuZFF1ZXVlKiBjb21tYW5kUXVldWUoKSBjb25zdDsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgYmVnaW5TY29wZSgpOworICAgIHZvaWQgICAgICAgICAgICAgICAgZW5k
U2NvcGUoKTsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpDYXB0dXJlU2NvcGU6OmRl
dmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGV2aWNlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6Q2FwdHVyZVNjb3BlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlU2NvcGU6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcq
IHBMYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0TGFiZWxfKSwgcExhYmVsKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZFF1ZXVl
KiBNVEw6OkNhcHR1cmVTY29wZTo6Y29tbWFuZFF1ZXVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxDb21tYW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGNvbW1hbmRRdWV1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVTY29wZTo6YmVnaW5T
Y29wZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChiZWdpblNjb3BlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZVNj
b3BlOjplbmRTY29wZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChlbmRTY29wZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMGZjOThlNTExYmY2YTNhZjMwZDM0M2Q0YmIzZjY1YjU1NGFmMTIwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRCdWZm
ZXIuaHBwCkBAIC0wLDAgKzEsNDY1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcAorLy8KKy8v
IENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1U
TERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAi
TVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgor
CisjaW5jbHVkZSAiTVRMQ29tbWFuZEJ1ZmZlci5ocHAiCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ29tbWFuZEJ1ZmZl
clN0YXR1cykgeworICAgIENvbW1hbmRCdWZmZXJTdGF0dXNOb3RFbnF1ZXVlZCA9IDAsCisgICAg
Q29tbWFuZEJ1ZmZlclN0YXR1c0VucXVldWVkID0gMSwKKyAgICBDb21tYW5kQnVmZmVyU3RhdHVz
Q29tbWl0dGVkID0gMiwKKyAgICBDb21tYW5kQnVmZmVyU3RhdHVzU2NoZWR1bGVkID0gMywKKyAg
ICBDb21tYW5kQnVmZmVyU3RhdHVzQ29tcGxldGVkID0gNCwKKyAgICBDb21tYW5kQnVmZmVyU3Rh
dHVzRXJyb3IgPSA1LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ29tbWFuZEJ1ZmZl
ckVycm9yKSB7CisgICAgQ29tbWFuZEJ1ZmZlckVycm9yTm9uZSA9IDAsCisgICAgQ29tbWFuZEJ1
ZmZlckVycm9yVGltZW91dCA9IDIsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yUGFnZUZhdWx0ID0g
MywKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JBY2Nlc3NSZXZva2VkID0gNCwKKyAgICBDb21tYW5k
QnVmZmVyRXJyb3JCbGFja2xpc3RlZCA9IDQsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yTm90UGVy
bWl0dGVkID0gNywKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JPdXRPZk1lbW9yeSA9IDgsCisgICAg
Q29tbWFuZEJ1ZmZlckVycm9ySW52YWxpZFJlc291cmNlID0gOSwKKyAgICBDb21tYW5kQnVmZmVy
RXJyb3JNZW1vcnlsZXNzID0gMTAsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yRGV2aWNlUmVtb3Zl
ZCA9IDExLAorICAgIENvbW1hbmRCdWZmZXJFcnJvclN0YWNrT3ZlcmZsb3cgPSAxMiwKK307CisK
K19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIENvbW1hbmRCdWZmZXJFcnJvck9wdGlvbikgewor
ICAgIENvbW1hbmRCdWZmZXJFcnJvck9wdGlvbk5vbmUgPSAwLAorICAgIENvbW1hbmRCdWZmZXJF
cnJvck9wdGlvbkVuY29kZXJFeGVjdXRpb25TdGF0dXMgPSAxLAorfTsKKworX01UTF9FTlVNKE5T
OjpJbnRlZ2VyLCBDb21tYW5kRW5jb2RlckVycm9yU3RhdGUpIHsKKyAgICBDb21tYW5kRW5jb2Rl
ckVycm9yU3RhdGVVbmtub3duID0gMCwKKyAgICBDb21tYW5kRW5jb2RlckVycm9yU3RhdGVDb21w
bGV0ZWQgPSAxLAorICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZUFmZmVjdGVkID0gMiwKKyAg
ICBDb21tYW5kRW5jb2RlckVycm9yU3RhdGVQZW5kaW5nID0gMywKKyAgICBDb21tYW5kRW5jb2Rl
ckVycm9yU3RhdGVGYXVsdGVkID0gNCwKK307CisKK2NsYXNzIENvbW1hbmRCdWZmZXJEZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPgoreworcHVi
bGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsK
KworICAgIGNsYXNzIENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW5lZFJlZmVyZW5j
ZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFJldGFpbmVkUmVmZXJlbmNlcyhib29sIHJldGFpbmVkUmVmZXJlbmNlcyk7CisKKyAgICBNVEw6
OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbiAgICAgICAgIGVycm9yT3B0aW9ucygpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JPcHRpb25z
KE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uIGVycm9yT3B0aW9ucyk7Cit9OworCitjbGFz
cyBDb21tYW5kQnVmZmVyRW5jb2RlckluZm8gOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbW1h
bmRCdWZmZXJFbmNvZGVySW5mbz4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgICAgICAg
ICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAg
ICAgICAgZGVidWdTaWducG9zdHMoKSBjb25zdDsKKworICAgIE1UTDo6Q29tbWFuZEVuY29kZXJF
cnJvclN0YXRlIGVycm9yU3RhdGUoKSBjb25zdDsKK307CisKK19NVExfRU5VTShOUzo6VUludGVn
ZXIsIERpc3BhdGNoVHlwZSkgeworICAgIERpc3BhdGNoVHlwZVNlcmlhbCA9IDAsCisgICAgRGlz
cGF0Y2hUeXBlQ29uY3VycmVudCA9IDEsCit9OworCitjbGFzcyBDb21tYW5kQnVmZmVyOworCit1
c2luZyBDb21tYW5kQnVmZmVySGFuZGxlciA9IHZvaWQgKF4pKENvbW1hbmRCdWZmZXIqKTsKKwor
dXNpbmcgSGFuZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkKENvbW1hbmRCdWZmZXIq
KT47CisKK2NsYXNzIENvbW1hbmRCdWZmZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbW1h
bmRCdWZmZXI+Cit7CitwdWJsaWM6CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZFNjaGVkdWxlZEhhbmRsZXIoY29uc3QgSGFuZGxlckZ1bmN0aW9uJiBm
dW5jdGlvbik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkQ29tcGxldGVkSGFuZGxlcihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKTsK
KworICAgIGNsYXNzIERldmljZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2Uo
KSBjb25zdDsKKworICAgIGNsYXNzIENvbW1hbmRRdWV1ZSogICAgICAgICAgICAgICAgICAgICAg
ICBjb21tYW5kUXVldWUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXRhaW5lZFJlZmVyZW5jZXMoKSBjb25zdDsKKworICAgIE1UTDo6
Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uICAgICAgICAgICAgICBlcnJvck9wdGlvbnMoKSBjb25z
dDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJl
bCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisKKyAgICBDRlRpbWVJbnRlcnZh
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsU3RhcnRUaW1lKCkgY29uc3Q7CisK
KyAgICBDRlRpbWVJbnRlcnZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsRW5k
VGltZSgpIGNvbnN0OworCisgICAgY2xhc3MgTG9nQ29udGFpbmVyKiAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ3MoKSBjb25zdDsKKworICAgIENGVGltZUludGVydmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHUFVTdGFydFRpbWUoKSBjb25zdDsKKworICAgIENGVGltZUludGVydmFs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUFVFbmRUaW1lKCkgY29uc3Q7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5xdWV1ZSgpOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdCgpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFNjaGVk
dWxlZEhhbmRsZXIoY29uc3QgTVRMOjpDb21tYW5kQnVmZmVySGFuZGxlciBibG9jayk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudERyYXdh
YmxlKGNvbnN0IGNsYXNzIERyYXdhYmxlKiBkcmF3YWJsZSk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudERyYXdhYmxlQXRUaW1lKGNvbnN0
IGNsYXNzIERyYXdhYmxlKiBkcmF3YWJsZSwgQ0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9uVGlt
ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJl
c2VudERyYXdhYmxlQWZ0ZXJNaW5pbXVtRHVyYXRpb24oY29uc3QgY2xhc3MgRHJhd2FibGUqIGRy
YXdhYmxlLCBDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbik7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdFVudGlsU2NoZWR1bGVkKCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29tcGxldGVkSGFu
ZGxlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJIYW5kbGVyIGJsb2NrKTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0VW50aWxDb21wbGV0ZWQo
KTsKKworICAgIE1UTDo6Q29tbWFuZEJ1ZmZlclN0YXR1cyAgICAgICAgICAgICAgICAgICBzdGF0
dXMoKSBjb25zdDsKKworICAgIE5TOjpFcnJvciogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcigpIGNvbnN0OworCisgICAgY2xhc3MgQmxpdENvbW1hbmRFbmNvZGVyKiAgICAg
ICAgICAgICAgICAgIGJsaXRDb21tYW5kRW5jb2RlcigpOworCisgICAgY2xhc3MgUmVuZGVyQ29t
bWFuZEVuY29kZXIqICAgICAgICAgICAgICAgIHJlbmRlckNvbW1hbmRFbmNvZGVyKGNvbnN0IGNs
YXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVzY3JpcHRvcik7CisKKyAgICBj
bGFzcyBDb21wdXRlQ29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAgY29tcHV0ZUNvbW1hbmRF
bmNvZGVyKGNvbnN0IGNsYXNzIENvbXB1dGVQYXNzRGVzY3JpcHRvciogY29tcHV0ZVBhc3NEZXNj
cmlwdG9yKTsKKworICAgIGNsYXNzIEJsaXRDb21tYW5kRW5jb2RlciogICAgICAgICAgICAgICAg
ICBibGl0Q29tbWFuZEVuY29kZXIoY29uc3QgY2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yKiBibGl0
UGFzc0Rlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQ29tcHV0ZUNvbW1hbmRFbmNvZGVyKiAgICAg
ICAgICAgICAgIGNvbXB1dGVDb21tYW5kRW5jb2RlcigpOworCisgICAgY2xhc3MgQ29tcHV0ZUNv
bW1hbmRFbmNvZGVyKiAgICAgICAgICAgICAgIGNvbXB1dGVDb21tYW5kRW5jb2RlcihNVEw6OkRp
c3BhdGNoVHlwZSBkaXNwYXRjaFR5cGUpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVuY29kZVdhaXQoY29uc3QgY2xhc3MgRXZlbnQqIGV2ZW50LCB1
aW50NjRfdCB2YWx1ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5jb2RlU2lnbmFsRXZlbnQoY29uc3QgY2xhc3MgRXZlbnQqIGV2ZW50LCB1aW50
NjRfdCB2YWx1ZSk7CisKKyAgICBjbGFzcyBQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyKiAg
ICAgICAgcGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBjbGFzcyBSZW5kZXJQYXNz
RGVzY3JpcHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3IpOworCisgICAgY2xhc3MgUmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyKiAgICAgICAgIHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcigp
OworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKiAgICAgICAgIHJlc291
cmNlU3RhdGVDb21tYW5kRW5jb2Rlcihjb25zdCBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc0Rlc2Ny
aXB0b3IqIHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciogYWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFu
ZEVuY29kZXIoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoRGVidWdHcm91cChjb25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpOworCisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcERlYnVnR3JvdXAoKTsK
K307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21tYW5kQnVmZmVyRGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21tYW5kQnVmZmVyRGVzY3JpcHRvcikpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2Ny
aXB0b3IqIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiByZXRhaW5lZFJlZmVyZW5jZXMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpD
b21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6cmV0YWluZWRSZWZlcmVuY2VzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHJldGFpbmVkUmVmZXJlbmNlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3I6OnNldFJldGFpbmVkUmVmZXJlbmNlcyhib29sIHJldGFpbmVkUmVm
ZXJlbmNlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0UmV0YWluZWRSZWZlcmVuY2VzXyksIHJldGFpbmVkUmVmZXJlbmNlcyk7Cit9
CisKKy8vIHByb3BlcnR5OiBlcnJvck9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1
ZmZlckVycm9yT3B0aW9uIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmVycm9yT3B0aW9u
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5k
QnVmZmVyRXJyb3JPcHRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXJyb3JPcHRpb25zKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6c2V0
RXJyb3JPcHRpb25zKE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uIGVycm9yT3B0aW9ucykK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RXJyb3JPcHRpb25zXyksIGVycm9yT3B0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJl
bAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21tYW5kQnVmZmVyRW5jb2RlckluZm86
OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTog
ZGVidWdTaWducG9zdHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpDb21tYW5kQnVmZmVy
RW5jb2RlckluZm86OmRlYnVnU2lnbnBvc3RzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlYnVnU2ln
bnBvc3RzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBlcnJvclN0YXRlCitfTVRMX0lOTElORSBNVEw6
OkNvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZSBNVEw6OkNvbW1hbmRCdWZmZXJFbmNvZGVySW5mbzo6
ZXJyb3JTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpDb21tYW5kRW5jb2RlckVycm9yU3RhdGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXJyb3JT
dGF0ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YWRkU2No
ZWR1bGVkSGFuZGxlcihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKQoreworICAgIF9f
YmxvY2sgSGFuZGxlckZ1bmN0aW9uIGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIGFk
ZFNjaGVkdWxlZEhhbmRsZXIoXihNVEw6OkNvbW1hbmRCdWZmZXIqIHBDb21tYW5kQnVmZmVyKSB7
IGJsb2NrRnVuY3Rpb24ocENvbW1hbmRCdWZmZXIpOyB9KTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmFkZENvbXBsZXRlZEhhbmRsZXIoY29uc3QgSGFuZGxlckZ1
bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIEhhbmRsZXJGdW5jdGlvbiBibG9ja0Z1
bmN0aW9uID0gZnVuY3Rpb247CisKKyAgICBhZGRDb21wbGV0ZWRIYW5kbGVyKF4oTVRMOjpDb21t
YW5kQnVmZmVyKiBwQ29tbWFuZEJ1ZmZlcikgeyBibG9ja0Z1bmN0aW9uKHBDb21tYW5kQnVmZmVy
KTsgfSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNl
KiBNVEw6OkNvbW1hbmRCdWZmZXI6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmlj
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogY29tbWFuZFF1ZXVlCitfTVRMX0lOTElORSBNVEw6OkNv
bW1hbmRRdWV1ZSogTVRMOjpDb21tYW5kQnVmZmVyOjpjb21tYW5kUXVldWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZFF1ZXVlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChjb21tYW5kUXVldWUpKTsKK30KKworLy8gcHJvcGVydHk6IHJldGFp
bmVkUmVmZXJlbmNlcworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkNvbW1hbmRCdWZmZXI6OnJldGFp
bmVkUmVmZXJlbmNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXRhaW5lZFJlZmVyZW5jZXMpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGVycm9yT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVy
RXJyb3JPcHRpb24gTVRMOjpDb21tYW5kQnVmZmVyOjplcnJvck9wdGlvbnMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0
aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVycm9yT3B0aW9ucykpOworfQorCisvLyBwcm9w
ZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJp
bmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21tYW5kQnVmZmVyOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eToga2VybmVsU3RhcnRUaW1lCitf
TVRMX0lOTElORSBDRlRpbWVJbnRlcnZhbCBNVEw6OkNvbW1hbmRCdWZmZXI6Omtlcm5lbFN0YXJ0
VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Q0ZUaW1lSW50
ZXJ2YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoa2VybmVsU3RhcnRUaW1lKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBrZXJuZWxFbmRUaW1lCitfTVRMX0lOTElORSBDRlRpbWVJbnRlcnZhbCBNVEw6
OkNvbW1hbmRCdWZmZXI6Omtlcm5lbEVuZFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPENGVGltZUludGVydmFsPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGtl
cm5lbEVuZFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGxvZ3MKK19NVExfSU5MSU5FIE1UTDo6
TG9nQ29udGFpbmVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmxvZ3MoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TG9nQ29udGFpbmVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChsb2dzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBHUFVTdGFydFRpbWUKK19NVExf
SU5MSU5FIENGVGltZUludGVydmFsIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6R1BVU3RhcnRUaW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxDRlRpbWVJbnRlcnZhbD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChHUFVTdGFydFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6
IEdQVUVuZFRpbWUKK19NVExfSU5MSU5FIENGVGltZUludGVydmFsIE1UTDo6Q29tbWFuZEJ1ZmZl
cjo6R1BVRW5kVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Q0ZUaW1lSW50ZXJ2YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoR1BVRW5kVGltZSkpOworfQor
CisvLyBtZXRob2Q6IGVucXVldWUKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVy
OjplbnF1ZXVlKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZW5xdWV1ZSkpOworfQorCisvLyBtZXRob2Q6IGNvbW1pdAorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmNvbW1pdCgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbW1pdCkpOworfQorCisvLyBt
ZXRob2Q6IGFkZFNjaGVkdWxlZEhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFu
ZEJ1ZmZlcjo6YWRkU2NoZWR1bGVkSGFuZGxlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJIYW5k
bGVyIGJsb2NrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChhZGRTY2hlZHVsZWRIYW5kbGVyXyksIGJsb2NrKTsKK30KKworLy8gbWV0aG9k
OiBwcmVzZW50RHJhd2FibGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
cHJlc2VudERyYXdhYmxlKGNvbnN0IE1UTDo6RHJhd2FibGUqIGRyYXdhYmxlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVzZW50RHJh
d2FibGVfKSwgZHJhd2FibGUpOworfQorCisvLyBtZXRob2Q6IHByZXNlbnREcmF3YWJsZTphdFRp
bWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cHJlc2VudERyYXdhYmxl
QXRUaW1lKGNvbnN0IE1UTDo6RHJhd2FibGUqIGRyYXdhYmxlLCBDRlRpbWVJbnRlcnZhbCBwcmVz
ZW50YXRpb25UaW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChwcmVzZW50RHJhd2FibGVfYXRUaW1lXyksIGRyYXdhYmxlLCBwcmVzZW50
YXRpb25UaW1lKTsKK30KKworLy8gbWV0aG9kOiBwcmVzZW50RHJhd2FibGU6YWZ0ZXJNaW5pbXVt
RHVyYXRpb246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cHJlc2VudERy
YXdhYmxlQWZ0ZXJNaW5pbXVtRHVyYXRpb24oY29uc3QgTVRMOjpEcmF3YWJsZSogZHJhd2FibGUs
IENGVGltZUludGVydmFsIGR1cmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVzZW50RHJhd2FibGVfYWZ0ZXJNaW5pbXVtRHVy
YXRpb25fKSwgZHJhd2FibGUsIGR1cmF0aW9uKTsKK30KKworLy8gbWV0aG9kOiB3YWl0VW50aWxT
Y2hlZHVsZWQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjp3YWl0VW50aWxT
Y2hlZHVsZWQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh3YWl0VW50aWxTY2hlZHVsZWQpKTsKK30KKworLy8gbWV0aG9kOiBhZGRDb21w
bGV0ZWRIYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmFkZENv
bXBsZXRlZEhhbmRsZXIoY29uc3QgTVRMOjpDb21tYW5kQnVmZmVySGFuZGxlciBibG9jaykKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRk
Q29tcGxldGVkSGFuZGxlcl8pLCBibG9jayk7Cit9CisKKy8vIG1ldGhvZDogd2FpdFVudGlsQ29t
cGxldGVkCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6d2FpdFVudGlsQ29t
cGxldGVkKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwod2FpdFVudGlsQ29tcGxldGVkKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGF0dXMK
K19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlclN0YXR1cyBNVEw6OkNvbW1hbmRCdWZmZXI6
OnN0YXR1cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpD
b21tYW5kQnVmZmVyU3RhdHVzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXR1cykpOworfQor
CisvLyBwcm9wZXJ0eTogZXJyb3IKK19NVExfSU5MSU5FIE5TOjpFcnJvciogTVRMOjpDb21tYW5k
QnVmZmVyOjplcnJvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OkVycm9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlcnJvcikpOworfQorCisvLyBtZXRo
b2Q6IGJsaXRDb21tYW5kRW5jb2RlcgorX01UTF9JTkxJTkUgTVRMOjpCbGl0Q29tbWFuZEVuY29k
ZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YmxpdENvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcio+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYmxpdENvbW1hbmRFbmNvZGVyKSk7Cit9CisKKy8vIG1ldGhvZDogcmVu
ZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cmVuZGVyQ29tbWFuZEVuY29kZXIo
Y29uc3QgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3IpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3Jp
cHRvcl8pLCByZW5kZXJQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogY29tcHV0ZUNv
bW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVDb21t
YW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpjb21wdXRlQ29tbWFuZEVuY29kZXIoY29u
c3QgTVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3IqIGNvbXB1dGVQYXNzRGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rl
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tcHV0ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2Ny
aXB0b3JfKSwgY29tcHV0ZVBhc3NEZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBibGl0Q29t
bWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6QmxpdENvbW1hbmRF
bmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmJsaXRDb21tYW5kRW5jb2Rlcihjb25zdCBNVEw6
OkJsaXRQYXNzRGVzY3JpcHRvciogYmxpdFBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChibGl0Q29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8pLCBibGl0UGFzc0Rl
c2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IGNvbXB1dGVDb21tYW5kRW5jb2RlcgorX01UTF9J
TkxJTkUgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6Y29t
cHV0ZUNvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tcHV0
ZUNvbW1hbmRFbmNvZGVyKSk7Cit9CisKKy8vIG1ldGhvZDogY29tcHV0ZUNvbW1hbmRFbmNvZGVy
V2l0aERpc3BhdGNoVHlwZToKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVy
KiBNVEw6OkNvbW1hbmRCdWZmZXI6OmNvbXB1dGVDb21tYW5kRW5jb2RlcihNVEw6OkRpc3BhdGNo
VHlwZSBkaXNwYXRjaFR5cGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbXB1dGVD
b21tYW5kRW5jb2RlcldpdGhEaXNwYXRjaFR5cGVfKSwgZGlzcGF0Y2hUeXBlKTsKK30KKworLy8g
bWV0aG9kOiBlbmNvZGVXYWl0Rm9yRXZlbnQ6dmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tbWFuZEJ1ZmZlcjo6ZW5jb2RlV2FpdChjb25zdCBNVEw6OkV2ZW50KiBldmVudCwgdWludDY0
X3QgdmFsdWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGVuY29kZVdhaXRGb3JFdmVudF92YWx1ZV8pLCBldmVudCwgdmFsdWUpOworfQor
CisvLyBtZXRob2Q6IGVuY29kZVNpZ25hbEV2ZW50OnZhbHVlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNvbW1hbmRCdWZmZXI6OmVuY29kZVNpZ25hbEV2ZW50KGNvbnN0IE1UTDo6RXZlbnQqIGV2
ZW50LCB1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlU2lnbmFsRXZlbnRfdmFsdWVfKSwgZXZlbnQsIHZh
bHVlKTsKK30KKworLy8gbWV0aG9kOiBwYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERl
c2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIq
IE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBN
VEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVzY3JpcHRvcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29k
ZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXJX
aXRoRGVzY3JpcHRvcl8pLCByZW5kZXJQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDog
cmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3Rh
dGVDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpyZXNvdXJjZVN0YXRlQ29tbWFu
ZEVuY29kZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3Vy
Y2VTdGF0ZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXIpKTsKK30KKworLy8gbWV0aG9kOiByZXNvdXJjZVN0YXRlQ29tbWFu
ZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZUNv
bW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OnJlc291cmNlU3RhdGVDb21tYW5kRW5j
b2Rlcihjb25zdCBNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogcmVzb3VyY2VTdGF0
ZVBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNv
dXJjZVN0YXRlQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8pLCByZXNvdXJjZVN0YXRlUGFz
c0Rlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IGFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1h
bmRFbmNvZGVyCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRF
bmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRF
bmNvZGVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlcikpOworfQorCisvLyBtZXRob2Q6IHB1c2hE
ZWJ1Z0dyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OnB1c2hEZWJ1
Z0dyb3VwKGNvbnN0IE5TOjpTdHJpbmcqIHN0cmluZykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHVzaERlYnVnR3JvdXBfKSwgc3RyaW5n
KTsKK30KKworLy8gbWV0aG9kOiBwb3BEZWJ1Z0dyb3VwCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tbWFuZEJ1ZmZlcjo6cG9wRGVidWdHcm91cCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBvcERlYnVnR3JvdXApKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kRW5j
b2Rlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tbWFu
ZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMWYzOTJiYjRmNjAxNGE5MTNlMWNhMjU1MzAxYWY0
YWU2OGMxZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQ29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsMTAxIEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExD
b21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9PUFRJT05T
KE5TOjpVSW50ZWdlciwgUmVzb3VyY2VVc2FnZSkgeworICAgIFJlc291cmNlVXNhZ2VSZWFkID0g
MSwKKyAgICBSZXNvdXJjZVVzYWdlV3JpdGUgPSAyLAorICAgIFJlc291cmNlVXNhZ2VTYW1wbGUg
PSA0LAorfTsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgQmFycmllclNjb3BlKSB7Cisg
ICAgQmFycmllclNjb3BlQnVmZmVycyA9IDEsCisgICAgQmFycmllclNjb3BlVGV4dHVyZXMgPSAy
LAorICAgIEJhcnJpZXJTY29wZVJlbmRlclRhcmdldHMgPSA0LAorfTsKKworY2xhc3MgQ29tbWFu
ZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbW1hbmRFbmNvZGVyPgoreworcHVi
bGljOgorICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5n
KiAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6
U3RyaW5nKiBsYWJlbCk7CisKKyAgICB2b2lkICAgICAgICAgIGVuZEVuY29kaW5nKCk7CisKKyAg
ICB2b2lkICAgICAgICAgIGluc2VydERlYnVnU2lnbnBvc3QoY29uc3QgTlM6OlN0cmluZyogc3Ry
aW5nKTsKKworICAgIHZvaWQgICAgICAgICAgcHVzaERlYnVnR3JvdXAoY29uc3QgTlM6OlN0cmlu
Zyogc3RyaW5nKTsKKworICAgIHZvaWQgICAgICAgICAgcG9wRGVidWdHcm91cCgpOworfTsKKwor
fQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpD
b21tYW5kRW5jb2Rlcjo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21t
YW5kRW5jb2Rlcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kRW5jb2Rlcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0
cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gbWV0aG9kOiBlbmRFbmNv
ZGluZworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRFbmNvZGVyOjplbmRFbmNvZGluZygp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGVuZEVuY29kaW5nKSk7Cit9CisKKy8vIG1ldGhvZDogaW5zZXJ0RGVidWdTaWducG9zdDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVidWdTaWducG9zdChj
b25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc2VydERlYnVnU2lnbnBvc3RfKSwgc3RyaW5nKTsK
K30KKworLy8gbWV0aG9kOiBwdXNoRGVidWdHcm91cDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21tYW5kRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXAoY29uc3QgTlM6OlN0cmluZyogc3RyaW5nKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChw
dXNoRGVidWdHcm91cF8pLCBzdHJpbmcpOworfQorCisvLyBtZXRob2Q6IHBvcERlYnVnR3JvdXAK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kRW5jb2Rlcjo6cG9wRGVidWdHcm91cCgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBv
cERlYnVnR3JvdXApKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTENvbW1hbmRRdWV1ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU0YTE2ZTE0YTYz
Y2VjYzNlYzRiYzc0ZWJiZjA4NWE0NjVkNjViZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBwCkBAIC0wLDAg
KzEsODkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIE1ldGFsL01UTENvbW1hbmRRdWV1ZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0y
MDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNp
bmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgor
CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAor
eworY2xhc3MgQ29tbWFuZFF1ZXVlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21tYW5kUXVl
dWU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgbGFiZWwoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJl
bCk7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIGNs
YXNzIENvbW1hbmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIoKTsKKworICAgIGNsYXNzIENvbW1hbmRC
dWZmZXIqIGNvbW1hbmRCdWZmZXIoY29uc3QgY2xhc3MgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcldp
dGhVbnJldGFpbmVkUmVmZXJlbmNlcygpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgaW5z
ZXJ0RGVidWdDYXB0dXJlQm91bmRhcnkoKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGxhYmVs
CitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNvbW1hbmRRdWV1ZTo6bGFiZWwoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21t
YW5kUXVldWU6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBs
YWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNl
KiBNVEw6OkNvbW1hbmRRdWV1ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNl
KSk7Cit9CisKKy8vIG1ldGhvZDogY29tbWFuZEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpDb21t
YW5kQnVmZmVyKiBNVEw6OkNvbW1hbmRRdWV1ZTo6Y29tbWFuZEJ1ZmZlcigpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5kQnVmZmVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChjb21tYW5kQnVmZmVyKSk7Cit9CisKKy8vIG1ldGhvZDogY29tbWFuZEJ1ZmZl
cldpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyKiBNVEw6OkNv
bW1hbmRRdWV1ZTo6Y29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
Q29tbWFuZEJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZEJ1ZmZlcldpdGhE
ZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IGNvbW1hbmRCdWZmZXJX
aXRoVW5yZXRhaW5lZFJlZmVyZW5jZXMKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlciog
TVRMOjpDb21tYW5kUXVldWU6OmNvbW1hbmRCdWZmZXJXaXRoVW5yZXRhaW5lZFJlZmVyZW5jZXMo
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZEJ1ZmZlcio+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZEJ1ZmZlcldpdGhVbnJldGFpbmVkUmVmZXJl
bmNlcykpOworfQorCisvLyBtZXRob2Q6IGluc2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZFF1ZXVlOjppbnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFy
eSgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluc2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhw
cCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29tbWFu
ZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYTllZjc4YjFlMGMzMTRkY2NjZmVkMDRjODYzODgx
ZGE4ZmJjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcApAQCAtMCwwICsxLDMzNyBAQAor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0
YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIw
MjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2lu
Y2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisK
KyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQnVm
ZmVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExD
b21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMSGVhcC5ocHAiCisjaW5jbHVkZSAiTVRM
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBw
IgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBwIgor
I2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlICJNVExWaXNpYmxlRnVuY3Rpb25UYWJs
ZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK3N0cnVjdCBEaXNwYXRjaFRocmVhZGdyb3Vwc0lu
ZGlyZWN0QXJndW1lbnRzCit7CisgICAgdWludDMyX3QgdGhyZWFkZ3JvdXBzUGVyR3JpZFszXTsK
K30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBTdGFnZUluUmVnaW9uSW5kaXJlY3RBcmd1bWVudHMK
K3sKKyAgICB1aW50MzJfdCBzdGFnZUluT3JpZ2luWzNdOworICAgIHVpbnQzMl90IHN0YWdlSW5T
aXplWzNdOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgQ29tcHV0ZUNvbW1hbmRFbmNvZGVyIDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRlQ29tbWFuZEVuY29kZXIsIENvbW1hbmRFbmNv
ZGVyPgoreworcHVibGljOgorICAgIE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSgpIGNv
bnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29u
c3QgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHN0YXRlKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgIHNldEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0QnVmZmVyKGNv
bnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVn
ZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0QnVmZmVyT2Zmc2V0KE5TOjpV
SW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICBzZXRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdl
ciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBz
ZXRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSog
dmlzaWJsZUZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgVmlz
aWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFu
Z2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgSW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdl
IHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldEFjY2VsZXJhdGlvblN0cnVjdHVy
ZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVy
ZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNl
dFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4
dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFNh
bXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdl
ciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGVzKE1UTDo6
U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgc2V0U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2Ft
cGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIg
aW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0U2FtcGxlclN0YXRlcyhNVEw6OlNh
bXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0
IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldEltYWdlYmxv
Y2tXaWR0aChOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgc2V0U3RhZ2VJblJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24pOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgc2V0U3RhZ2VJblJlZ2lvbihjb25zdCBjbGFzcyBCdWZm
ZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgZGlzcGF0Y2hUaHJlYWRncm91cHMoTVRMOjpTaXplIHRo
cmVhZGdyb3Vwc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgZGlzcGF0Y2hUaHJlYWRncm91cHMoY29uc3QgY2xhc3MgQnVm
ZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0LCBN
VEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
IGRpc3BhdGNoVGhyZWFkcyhNVEw6OlNpemUgdGhyZWFkc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJl
YWRzUGVyVGhyZWFkZ3JvdXApOworCisgICAgdm9pZCAgICAgICAgICAgICAgdXBkYXRlRmVuY2Uo
Y29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHdhaXRG
b3JGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVuY2UpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3VyY2UqIHJlc291cmNlLCBNVEw6OlJlc291
cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgdXNlUmVzb3VyY2VzKE1U
TDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3Vy
Y2VVc2FnZSB1c2FnZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICB1c2VIZWFwKGNvbnN0IGNs
YXNzIEhlYXAqIGhlYXApOworCisgICAgdm9pZCAgICAgICAgICAgICAgdXNlSGVhcHMoTVRMOjpI
ZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVm
ZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5TOjpSYW5nZSBleGVjdXRpb25SYW5nZSk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBjbGFz
cyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZGJ1ZmZlciwgY29uc3QgY2xh
c3MgQnVmZmVyKiBpbmRpcmVjdFJhbmdlQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZm
ZXJPZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgICAgICAgbWVtb3J5QmFycmllcihNVEw6OkJh
cnJpZXJTY29wZSBzY29wZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBtZW1vcnlCYXJyaWVy
KE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBjbGFzcyBDb3Vu
dGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwg
Ym9vbCBiYXJyaWVyKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGRpc3BhdGNoVHlwZQorX01U
TF9JTkxJTkUgTVRMOjpEaXNwYXRjaFR5cGUgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRp
c3BhdGNoVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpEaXNwYXRjaFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGlzcGF0Y2hUeXBlKSk7Cit9
CisKKy8vIG1ldGhvZDogc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25z
dCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBzdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVfKSwgc3RhdGUpOworfQorCisvLyBtZXRob2Q6IHNldEJ5dGVzOmxlbmd0aDphdEluZGV4Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0Qnl0ZXMoY29u
c3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0Qnl0ZXNfbGVuZ3RoX2F0SW5kZXhfKSwgYnl0ZXMsIGxlbmd0aCwgaW5kZXgpOworfQorCisv
LyBtZXRob2Q6IHNldEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVm
ZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcl9v
ZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6
IHNldEJ1ZmZlck9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVD
b21tYW5kRW5jb2Rlcjo6c2V0QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpV
SW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0QnVmZmVyT2Zmc2V0X2F0SW5kZXhfKSwgb2Zmc2V0LCBpbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcnMoTVRMOjpCdWZm
ZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJh
bmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJh
bmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZlcklu
ZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0Vmlz
aWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJs
ZUZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0
aW9uVGFibGVfYXRCdWZmZXJJbmRleF8pLCB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgYnVmZmVySW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVy
UmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRW
aXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlz
aWJsZUZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9u
VGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCB2aXNpYmxlRnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsK
K30KKworLy8gbWV0aG9kOiBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOmF0QnVmZmVySW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgaW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNv
bnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193
aXRoQnVmZmVyUmFuZ2VfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsKK30K
KworLy8gbWV0aG9kOiBzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEFjY2VsZXJhdGlv
blN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9u
U3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFjY2VsZXJhdGlvblN0cnVj
dHVyZV9hdEJ1ZmZlckluZGV4XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgYnVmZmVySW5kZXgp
OworfQorCisvLyBtZXRob2Q6IHNldFRleHR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJl
KiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVfYXRJbmRleF8pLCB0ZXh0
dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGV4dHVyZXM6d2l0aFJhbmdlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0VGV4dHVyZXMoTVRM
OjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVzX3dpdGhS
YW5nZV8pLCB0ZXh0dXJlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0
ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6
c2V0U2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUlu
dGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFNhbXBsZXJTdGF0ZV9hdEluZGV4XyksIHNhbXBsZXIsIGluZGV4KTsK
K30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZXMoTVRMOjpT
YW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRl
c193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRTYW1w
bGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENs
YW1wLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RN
YXhDbGFtcF9hdEluZGV4XyksIHNhbXBsZXIsIGxvZE1pbkNsYW1wLCBsb2RNYXhDbGFtcCwgaW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1h
eENsYW1wczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRF
bmNvZGVyOjpzZXRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBj
b25zdCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBz
X3dpdGhSYW5nZV8pLCBzYW1wbGVycywgbG9kTWluQ2xhbXBzLCBsb2RNYXhDbGFtcHMsIHJhbmdl
KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aDphdEluZGV4Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0VGhyZWFkZ3Jv
dXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aF9hdEluZGV4XyksIGxlbmd0aCwgaW5kZXgpOworfQor
CisvLyBtZXRob2Q6IHNldEltYWdlYmxvY2tXaWR0aDpoZWlnaHQ6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRJbWFnZWJsb2NrV2lkdGgoTlM6OlVJbnRl
Z2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbWFnZWJsb2NrV2lkdGhfaGVpZ2h0
XyksIHdpZHRoLCBoZWlnaHQpOworfQorCisvLyBtZXRob2Q6IHNldFN0YWdlSW5SZWdpb246Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRTdGFnZUluUmVn
aW9uKE1UTDo6UmVnaW9uIHJlZ2lvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhZ2VJblJlZ2lvbl8pLCByZWdpb24pOworfQor
CisvLyBtZXRob2Q6IHNldFN0YWdlSW5SZWdpb25XaXRoSW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RC
dWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVy
OjpzZXRTdGFnZUluUmVnaW9uKGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6
OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGFnZUluUmVnaW9uV2l0aEluZGly
ZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIGluZGlyZWN0QnVmZmVyLCBpbmRpcmVj
dEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogZGlzcGF0Y2hUaHJlYWRncm91cHM6dGhy
ZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5k
RW5jb2Rlcjo6ZGlzcGF0Y2hUaHJlYWRncm91cHMoTVRMOjpTaXplIHRocmVhZGdyb3Vwc1Blckdy
aWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVGhyZWFkZ3JvdXBz
X3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCB0aHJlYWRncm91cHNQZXJHcmlkLCB0aHJlYWRzUGVy
VGhyZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IGRpc3BhdGNoVGhyZWFkZ3JvdXBzV2l0aElu
ZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OnRocmVhZHNQZXJUaHJlYWRncm91cDoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNoVGhy
ZWFkZ3JvdXBzKGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IGluZGlyZWN0QnVmZmVyT2Zmc2V0LCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChk
aXNwYXRjaFRocmVhZGdyb3Vwc1dpdGhJbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNl
dF90aHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVy
T2Zmc2V0LCB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IGRpc3BhdGNo
VGhyZWFkczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaFRocmVhZHMoTVRMOjpTaXplIHRocmVhZHNQZXJH
cmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkaXNwYXRjaFRocmVhZHNfdGhy
ZWFkc1BlclRocmVhZGdyb3VwXyksIHRocmVhZHNQZXJHcmlkLCB0aHJlYWRzUGVyVGhyZWFkZ3Jv
dXApOworfQorCisvLyBtZXRob2Q6IHVwZGF0ZUZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVu
Y2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHVwZGF0ZUZlbmNlXyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB3YWl0Rm9yRmVuY2U6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp3YWl0Rm9yRmVu
Y2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdhaXRGb3JGZW5jZV8pLCBmZW5jZSk7Cit9CisK
Ky8vIG1ldGhvZDogdXNlUmVzb3VyY2U6dXNhZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjp1c2VSZXNvdXJjZShjb25zdCBNVEw6OlJlc291cmNlKiByZXNv
dXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZV91c2FnZV8pLCByZXNv
dXJjZSwgdXNhZ2UpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlczpjb3VudDp1c2FnZToK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNl
cyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJl
c291cmNlVXNhZ2UgdXNhZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJlc291cmNlc19jb3VudF91c2FnZV8pLCByZXNvdXJjZXMs
IGNvdW50LCB1c2FnZSk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnVzZUhlYXAoY29uc3QgTVRMOjpIZWFwKiBo
ZWFwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh1c2VIZWFwXyksIGhlYXApOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXBzOmNvdW50Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcHMoTVRM
OjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBzX2NvdW50XyksIGhl
YXBzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXI6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6ZXhl
Y3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGlu
ZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlJhbmdlIGV4ZWN1dGlvblJhbmdlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChleGVjdXRlQ29t
bWFuZHNJbkJ1ZmZlcl93aXRoUmFuZ2VfKSwgaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBleGVjdXRp
b25SYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXI6aW5kaXJl
Y3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjpleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBNVEw6Oklu
ZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kYnVmZmVyLCBjb25zdCBNVEw6OkJ1
ZmZlciogaW5kaXJlY3RSYW5nZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zm
c2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZl
ck9mZnNldF8pLCBpbmRpcmVjdENvbW1hbmRidWZmZXIsIGluZGlyZWN0UmFuZ2VCdWZmZXIsIGlu
ZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiBtZW1vcnlCYXJyaWVyV2l0aFNj
b3BlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6bWVtb3J5
QmFycmllcihNVEw6OkJhcnJpZXJTY29wZSBzY29wZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtb3J5QmFycmllcldpdGhTY29wZV8p
LCBzY29wZSk7Cit9CisKKy8vIG1ldGhvZDogbWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXM6Y291
bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjptZW1vcnlC
YXJyaWVyKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1l
bW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzX2NvdW50XyksIHJlc291cmNlcywgY291bnQpOworfQor
CisvLyBtZXRob2Q6IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRTYW1wbGVJbmRleDp3aXRoQmFy
cmllcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNhbXBs
ZUNvdW50ZXJzSW5CdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVC
dWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3Vu
dGVyc0luQnVmZmVyX2F0U2FtcGxlSW5kZXhfd2l0aEJhcnJpZXJfKSwgc2FtcGxlQnVmZmVyLCBz
YW1wbGVJbmRleCwgYmFycmllcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2Q0YjUy
Njc2ZGRiMDFkNmY1ODk4YzVkNzMxNTFhZTNmNzQ2M2VlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcApAQCAt
MCwwICsxLDE4MSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwCisvLworLy8gQ29weXJpZ2h0IDIw
MjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAi
CisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhw
cCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJN
VExDb21tYW5kQnVmZmVyLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQ29tcHV0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxD
b21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvdW50ZXJTYW1wbGVC
dWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVCdWZmZXIoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0U2FtcGxlQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIq
IHNhbXBsZUJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9m
RW5jb2RlclNhbXBsZUluZGV4KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZF
bmNvZGVyU2FtcGxlSW5kZXgpOworfTsKKworY2xhc3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvbXB1
dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVj
dChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChj
b25zdCBjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBh
dHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIENv
bXB1dGVQYXNzRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxDb21wdXRlUGFzc0Rlc2Ny
aXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvbXB1dGVQYXNzRGVzY3JpcHRv
ciogICAgICAgICAgICAgICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBhc3NE
ZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0
aWMgY2xhc3MgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGNvbXB1
dGVQYXNzRGVzY3JpcHRvcigpOworCisgICAgTVRMOjpEaXNwYXRjaFR5cGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaFR5cGUoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERp
c3BhdGNoVHlwZShNVEw6OkRpc3BhdGNoVHlwZSBkaXNwYXRjaFR5cGUpOworCisgICAgY2xhc3Mg
Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBzYW1wbGVC
dWZmZXJBdHRhY2htZW50cygpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpD
b21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBw
cm9wZXJ0eTogc2FtcGxlQnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZm
ZXIqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2Ft
cGxlQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkNvdW50ZXJTYW1wbGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZl
cikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U2FtcGxlQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRlclNh
bXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVCdWZmZXJfKSwgc2FtcGxlQnVmZmVy
KTsKK30KKworLy8gcHJvcGVydHk6IHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I6OnN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdGFydE9m
RW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4XyksIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5k
ZXgpOworfQorCisvLyBwcm9wZXJ0eTogZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I6OmVuZE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNv
bXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldEVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RW5k
T2ZFbmNvZGVyU2FtcGxlSW5kZXhfKSwgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5KiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpDb21wdXRlUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhv
ZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBhdHRh
Y2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21w
dXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudEluZGV4KTsKK30K
KworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRl
UGFzc0Rlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRo
b2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yKiBNVEw6OkNv
bXB1dGVQYXNzRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6Omlu
aXQ8TVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGNvbXB1dGVQYXNzRGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc0Rlc2Ny
aXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjpjb21wdXRlUGFzc0Rlc2NyaXB0b3Io
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBhc3NEZXNj
cmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21wdXRlUGFzc0Rlc2NyaXB0b3IpLCBfTVRM
X1BSSVZBVEVfU0VMKGNvbXB1dGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0eTog
ZGlzcGF0Y2hUeXBlCitfTVRMX0lOTElORSBNVEw6OkRpc3BhdGNoVHlwZSBNVEw6OkNvbXB1dGVQ
YXNzRGVzY3JpcHRvcjo6ZGlzcGF0Y2hUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkRpc3BhdGNoVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChk
aXNwYXRjaFR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQYXNzRGVz
Y3JpcHRvcjo6c2V0RGlzcGF0Y2hUeXBlKE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RGlzcGF0Y2hUeXBlXyksIGRpc3BhdGNoVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1w
bGVCdWZmZXJBdHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9y
OjpzYW1wbGVCdWZmZXJBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRz
KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ29tcHV0ZVBpcGVsaW5lLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlNTZkN2ZmZDJlM2VmNzQ3
Yjk1YmU1NDA5MjhiZTZmZjAyODAyNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcApAQCAtMCwwICsx
LDM1NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIw
LTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgor
I2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAi
CisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRM
VHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBDb21wdXRlUGlwZWxpbmVSZWZs
ZWN0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9u
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9u
KiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogICAgICAg
IGluaXQoKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudHMoKSBjb25zdDsKK307CisKK2NsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Ig
OiBwdWJsaWMgTlM6OkNvcHlpbmc8Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4KK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogYWxsb2MoKTsK
KworICAgIGNsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisK
KyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXB1dGVGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb21wdXRlRnVuY3Rpb24oY29uc3QgY2xh
c3MgRnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbik7CisKKyAgICBib29sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhl
Y3V0aW9uV2lkdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0VGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lk
dGgoYm9vbCB0aHJlYWRHcm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCk7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VG90YWxU
aHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0TWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoTlM6OlVJ
bnRlZ2VyIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKTsKKworICAgIGNsYXNzIFN0YWdl
SW5wdXRPdXRwdXREZXNjcmlwdG9yKiAgICAgICBzdGFnZUlucHV0RGVzY3JpcHRvcigpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFnZUlu
cHV0RGVzY3JpcHRvcihjb25zdCBjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogc3Rh
Z2VJbnB1dERlc2NyaXB0b3IpOworCisgICAgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9y
QXJyYXkqICAgIGJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0SW5k
aXJlY3RDb21tYW5kQnVmZmVycyhib29sIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKTsK
KworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRMaWJy
YXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0SW5zZXJ0TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogaW5zZXJ0TGlicmFyaWVzKTsK
KworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVsb2FkZWRM
aWJyYXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogcHJlbG9hZGVkTGli
cmFyaWVzKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
aW5hcnlBcmNoaXZlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hp
dmVzKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl
dCgpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiAgICAgICAgICAgICAgICAgIGxpbmtl
ZEZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRMaW5rZWRGdW5jdGlvbnMoY29uc3QgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiBs
aW5rZWRGdW5jdGlvbnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VwcG9ydEFkZGluZ0JpbmFyeUZ1
bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heENhbGxTdGFja0RlcHRoKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heENh
bGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhDYWxsU3RhY2tEZXB0aCk7Cit9OworCitjbGFz
cyBDb21wdXRlUGlwZWxpbmVTdGF0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q29tcHV0ZVBp
cGVsaW5lU3RhdGU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAg
ICAgICAgbGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNzIERldmljZSogICAgICAgICAgICAgICAg
ICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdDsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgIHRocmVhZEV4ZWN1dGlvbldpZHRoKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBzdGF0aWNUaHJlYWRncm91cE1l
bW9yeUxlbmd0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgaW1hZ2VibG9ja01lbW9yeUxlbmd0aChNVEw6OlNpemUgaW1hZ2VibG9ja0RpbWVuc2lvbnMp
OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEluZGlyZWN0
Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGNsYXNzIEZ1bmN0aW9uSGFuZGxlKiAgICAg
ICAgICAgIGZ1bmN0aW9uSGFuZGxlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBmdW5jdGlvbik7CisK
KyAgICBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogICAgICBuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZShjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpOworCisg
ICAgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqICAgICAgbmV3VmlzaWJsZUZ1bmN0aW9uVGFi
bGUoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KTsKKworICAgIGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIG5ld0ludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiBNVEw6OkNvbXB1dGVQ
aXBlbGluZVJlZmxlY3Rpb246OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uPihfTVRMX1BSSVZBVEVfQ0xTKE1UTENv
bXB1dGVQaXBlbGluZVJlZmxlY3Rpb24pKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lO
TElORSBNVEw6OkNvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIE1UTDo6Q29tcHV0ZVBpcGVsaW5l
UmVmbGVjdGlvbjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpD
b21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uPigpOworfQorCisvLyBwcm9wZXJ0eTogYXJndW1lbnRz
CitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbjo6
YXJndW1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50cykpOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIE1U
TDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPigpOworfQorCisvLyBw
cm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRMYWJl
bChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBw
cm9wZXJ0eTogY29tcHV0ZUZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6
OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OmNvbXB1dGVGdW5jdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoY29tcHV0ZUZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRDb21wdXRlRnVuY3Rpb24oY29uc3QgTVRM
OjpGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlRnVuY3Rpb25fKSwgY29tcHV0
ZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVP
ZlRocmVhZEV4ZWN1dGlvbldpZHRoCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcjo6dGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9u
V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhl
Y3V0aW9uV2lkdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3I6OnNldFRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlv
bldpZHRoKGJvb2wgdGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lk
dGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoXyks
IHRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKTsKK30KKwor
Ly8gcHJvcGVydHk6IG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhUb3RhbFRocmVh
ZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFRvdGFsVGhyZWFkc1Bl
clRocmVhZGdyb3VwKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cChOUzo6VUludGVn
ZXIgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwXyksIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKTsKK30KKworLy8gcHJv
cGVydHk6IHN0YWdlSW5wdXREZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlN0YWdlSW5wdXRP
dXRwdXREZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnN0YWdlSW5w
dXREZXNjcmlwdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dGFnZUlucHV0RGVzY3JpcHRvcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3RhZ2VJbnB1dERlc2NyaXB0b3IoY29uc3QgTVRMOjpT
dGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogc3RhZ2VJbnB1dERlc2NyaXB0b3IpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YWdl
SW5wdXREZXNjcmlwdG9yXyksIHN0YWdlSW5wdXREZXNjcmlwdG9yKTsKK30KKworLy8gcHJvcGVy
dHk6IGJ1ZmZlcnMKK19NVExfSU5MSU5FIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJy
YXkqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6YnVmZmVycygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0
b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVycykpOworfQorCisvLyBwcm9w
ZXJ0eTogc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVy
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldFN1
cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKGJvb2wgc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1
ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzXyksIHN1cHBvcnRJbmRpcmVj
dENvbW1hbmRCdWZmZXJzKTsKK30KKworLy8gcHJvcGVydHk6IGluc2VydExpYnJhcmllcworX01U
TF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6Omluc2Vy
dExpYnJhcmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnNlcnRMaWJyYXJpZXMpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldEluc2Vy
dExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIGluc2VydExpYnJhcmllcykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5zZXJ0TGli
cmFyaWVzXyksIGluc2VydExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiBwcmVsb2FkZWRM
aWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yOjpwcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlbG9hZGVk
TGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yOjpzZXRQcmVsb2FkZWRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiBwcmVsb2Fk
ZWRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFByZWxvYWRlZExpYnJhcmllc18pLCBwcmVsb2FkZWRMaWJyYXJpZXMp
OworfQorCisvLyBwcm9wZXJ0eTogYmluYXJ5QXJjaGl2ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJh
eSogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpiaW5hcnlBcmNoaXZlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChiaW5hcnlBcmNoaXZlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMoY29uc3QgTlM6
OkFycmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmluYXJ5QXJjaGl2
ZXMpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcjo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldCkpOworfQorCisvLyBwcm9wZXJ0eTog
bGlua2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogTVRMOjpD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpsaW5rZWRGdW5jdGlvbnMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlua2VkRnVuY3Rpb25zKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChsaW5rZWRGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldExpbmtlZEZ1bmN0aW9ucyhjb25z
dCBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogbGlua2VkRnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMaW5rZWRGdW5jdGlv
bnNfKSwgbGlua2VkRnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRBZGRpbmdC
aW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yOjpzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rp
b25zKGJvb2wgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFkZGluZ0Jp
bmFyeUZ1bmN0aW9uc18pLCBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8g
cHJvcGVydHk6IG1heENhbGxTdGFja0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG1heENhbGxTdGFja0RlcHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhDYWxsU3RhY2tEZXB0aChOUzo6
VUludGVnZXIgbWF4Q2FsbFN0YWNrRGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heENhbGxTdGFja0RlcHRoXyksIG1heENh
bGxTdGFja0RlcHRoKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6
U3RyaW5nKiBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRM
OjpEZXZpY2UqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OmRldmljZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VG90YWxUaHJlYWRzUGVy
VGhyZWFkZ3JvdXAKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBlbGlu
ZVN0YXRlOjptYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0
aHJlYWRFeGVjdXRpb25XaWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lU3RhdGU6OnRocmVhZEV4ZWN1dGlvbldpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwodGhyZWFkRXhlY3V0aW9uV2lkdGgpKTsKK30KKworLy8gcHJvcGVydHk6IHN0YXRpY1RocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpDb21wdXRl
UGlwZWxpbmVTdGF0ZTo6c3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdGF0aWNUaHJlYWRncm91cE1lbW9yeUxlbmd0aCkpOworfQorCisvLyBtZXRo
b2Q6IGltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zOgorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OmltYWdlYmxvY2tNZW1vcnlMZW5n
dGgoTVRMOjpTaXplIGltYWdlYmxvY2tEaW1lbnNpb25zKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbWFnZWJs
b2NrTWVtb3J5TGVuZ3RoRm9yRGltZW5zaW9uc18pLCBpbWFnZWJsb2NrRGltZW5zaW9ucyk7Cit9
CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycworX01UTF9JTkxJ
TkUgYm9vbCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpzdXBwb3J0SW5kaXJlY3RDb21tYW5k
QnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMp
KTsKK30KKworLy8gbWV0aG9kOiBmdW5jdGlvbkhhbmRsZVdpdGhGdW5jdGlvbjoKK19NVExfSU5M
SU5FIE1UTDo6RnVuY3Rpb25IYW5kbGUqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OmZ1bmN0
aW9uSGFuZGxlKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGZ1bmN0aW9uKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25IYW5kbGUqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGZ1bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uXyksIGZ1bmN0aW9uKTsKK30KKworLy8g
bWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rp
b25zOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSogTVRMOjpD
b21wdXRlUGlwZWxpbmVTdGF0ZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTlM6OkFy
cmF5KiBmdW5jdGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnNfZXJyb3JfKSwgZnVuY3Rpb25zLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3VmlzaWJs
ZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6VmlzaWJsZUZ1
bmN0aW9uVGFibGUqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Om5ld1Zpc2libGVGdW5jdGlv
blRhYmxlKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmlzaWJsZUZ1bmN0
aW9uVGFibGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Zpc2libGVGdW5jdGlvblRhYmxl
V2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3SW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlKiBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpuZXdJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRv
cik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ291bnRlcnMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TENvdW50ZXJzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTY1YzFkOGVhMDE4MTZkZDdkZmI2OTQ4MWQ3YTI4
ZGI2NDE3YjUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTENvdW50ZXJzLmhwcApAQCAtMCwwICsxLDI1OCBAQAorLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ291bnRl
cnMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisKK25hbWVzcGFjZSBN
VEwKK3sKKworX01UTF9DT05TVCggTlM6OkVycm9yRG9tYWluLCBDb3VudGVyRXJyb3JEb21haW4g
KTsKKwordXNpbmcgQ29tbW9uQ291bnRlciA9IE5TOjpTdHJpbmcqOworCitfTVRMX0NPTlNUKCBD
b21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVGltZXN0YW1wICk7CitfTVRMX0NPTlNUKCBDb21t
b25Db3VudGVyLCBDb21tb25Db3VudGVyVGVzc2VsbGF0aW9uSW5wdXRQYXRjaGVzICk7CitfTVRM
X0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVmVydGV4SW52b2NhdGlvbnMgKTsK
K19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJQb3N0VGVzc2VsbGF0aW9u
VmVydGV4SW52b2NhdGlvbnMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNv
dW50ZXJDbGlwcGVySW52b2NhdGlvbnMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENv
bW1vbkNvdW50ZXJDbGlwcGVyUHJpbWl0aXZlc091dCApOworX01UTF9DT05TVCggQ29tbW9uQ291
bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50SW52b2NhdGlvbnMgKTsKK19NVExfQ09OU1QoIENv
bW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJGcmFnbWVudHNQYXNzZWQgKTsKK19NVExfQ09OU1Qo
IENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJDb21wdXRlS2VybmVsSW52b2NhdGlvbnMgKTsK
K19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUb3RhbEN5Y2xlcyApOwor
X01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclZlcnRleEN5Y2xlcyApOwor
X01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclRlc3NlbGxhdGlvbkN5Y2xl
cyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclBvc3RUZXNzZWxs
YXRpb25WZXJ0ZXhDeWNsZXMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNv
dW50ZXJGcmFnbWVudEN5Y2xlcyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9u
Q291bnRlclJlbmRlclRhcmdldFdyaXRlQ3ljbGVzICk7CisKK3VzaW5nIENvbW1vbkNvdW50ZXJT
ZXQgPSBOUzo6U3RyaW5nKjsKKworX01UTF9DT05TVCggQ29tbW9uQ291bnRlclNldCwgQ29tbW9u
Q291bnRlclNldFRpbWVzdGFtcCApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlclNldCwgQ29t
bW9uQ291bnRlclNldFN0YWdlVXRpbGl6YXRpb24gKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50
ZXJTZXQsIENvbW1vbkNvdW50ZXJTZXRTdGF0aXN0aWMgKTsKKworc3RydWN0IENvdW50ZXJSZXN1
bHRUaW1lc3RhbXAKK3sKKyAgICB1aW50NjRfdCB0aW1lc3RhbXA7Cit9IF9NVExfUEFDS0VEOwor
CitzdHJ1Y3QgQ291bnRlclJlc3VsdFN0YWdlVXRpbGl6YXRpb24KK3sKKyAgICB1aW50NjRfdCB0
b3RhbEN5Y2xlczsKKyAgICB1aW50NjRfdCB2ZXJ0ZXhDeWNsZXM7CisgICAgdWludDY0X3QgdGVz
c2VsbGF0aW9uQ3ljbGVzOworICAgIHVpbnQ2NF90IHBvc3RUZXNzZWxsYXRpb25WZXJ0ZXhDeWNs
ZXM7CisgICAgdWludDY0X3QgZnJhZ21lbnRDeWNsZXM7CisgICAgdWludDY0X3QgcmVuZGVyVGFy
Z2V0Q3ljbGVzOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IENvdW50ZXJSZXN1bHRTdGF0aXN0
aWMKK3sKKyAgICB1aW50NjRfdCB0ZXNzZWxsYXRpb25JbnB1dFBhdGNoZXM7CisgICAgdWludDY0
X3QgdmVydGV4SW52b2NhdGlvbnM7CisgICAgdWludDY0X3QgcG9zdFRlc3NlbGxhdGlvblZlcnRl
eEludm9jYXRpb25zOworICAgIHVpbnQ2NF90IGNsaXBwZXJJbnZvY2F0aW9uczsKKyAgICB1aW50
NjRfdCBjbGlwcGVyUHJpbWl0aXZlc091dDsKKyAgICB1aW50NjRfdCBmcmFnbWVudEludm9jYXRp
b25zOworICAgIHVpbnQ2NF90IGZyYWdtZW50c1Bhc3NlZDsKKyAgICB1aW50NjRfdCBjb21wdXRl
S2VybmVsSW52b2NhdGlvbnM7Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBDb3VudGVyIDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxDb3VudGVyPgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcq
IG5hbWUoKSBjb25zdDsKK307CisKK2NsYXNzIENvdW50ZXJTZXQgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPENvdW50ZXJTZXQ+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogbmFtZSgpIGNv
bnN0OworCisgICAgTlM6OkFycmF5KiAgY291bnRlcnMoKSBjb25zdDsKK307CisKK2NsYXNzIENv
dW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPENvdW50ZXJT
YW1wbGVCdWZmZXJEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb3Vu
dGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIENvdW50ZXJT
YW1wbGVCdWZmZXJEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQ291bnRl
clNldCogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyU2V0KCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb3VudGVyU2V0
KGNvbnN0IGNsYXNzIENvdW50ZXJTZXQqIGNvdW50ZXJTZXQpOworCisgICAgTlM6OlN0cmluZyog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6
OlN0cmluZyogbGFiZWwpOworCisgICAgTVRMOjpTdG9yYWdlTW9kZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBz
dG9yYWdlTW9kZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxlQ291
bnQpOworfTsKKworY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8Q291bnRlclNhbXBsZUJ1ZmZlcj4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBEZXZpY2Uq
IGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICBsYWJlbCgpIGNvbnN0OworCisg
ICAgTlM6OlVJbnRlZ2VyICBzYW1wbGVDb3VudCgpIGNvbnN0OworCisgICAgTlM6OkRhdGEqICAg
ICByZXNvbHZlQ291bnRlclJhbmdlKE5TOjpSYW5nZSByYW5nZSk7Cit9OworCitfTVRMX0VOVU0o
TlM6OkludGVnZXIsIENvdW50ZXJTYW1wbGVCdWZmZXJFcnJvcikgeworICAgIENvdW50ZXJTYW1w
bGVCdWZmZXJFcnJvck91dE9mTWVtb3J5ID0gMCwKKyAgICBDb3VudGVyU2FtcGxlQnVmZmVyRXJy
b3JJbnZhbGlkID0gMSwKK307CisKK30KKworX01UTF9QUklWQVRFX0RFRl9TVFIoIE5TOjpFcnJv
ckRvbWFpbiwgQ291bnRlckVycm9yRG9tYWluICk7CisKK19NVExfUFJJVkFURV9ERUZfU1RSKCBN
VEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUaW1lc3RhbXAgKTsKK19NVExfUFJJVkFU
RV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUZXNzZWxsYXRpb25J
bnB1dFBhdGNoZXMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIs
IENvbW1vbkNvdW50ZXJWZXJ0ZXhJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIo
IE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclBvc3RUZXNzZWxsYXRpb25WZXJ0ZXhJ
bnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwg
Q29tbW9uQ291bnRlckNsaXBwZXJJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIo
IE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckNsaXBwZXJQcmltaXRpdmVzT3V0ICk7
CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVy
RnJhZ21lbnRJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9u
Q291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50c1Bhc3NlZCApOworX01UTF9QUklWQVRFX0RF
Rl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckNvbXB1dGVLZXJuZWxJbnZv
Y2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29t
bW9uQ291bnRlclRvdGFsQ3ljbGVzICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21t
b25Db3VudGVyLCBDb21tb25Db3VudGVyVmVydGV4Q3ljbGVzICk7CitfTVRMX1BSSVZBVEVfREVG
X1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVGVzc2VsbGF0aW9uQ3ljbGVz
ICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3Vu
dGVyUG9zdFRlc3NlbGxhdGlvblZlcnRleEN5Y2xlcyApOworX01UTF9QUklWQVRFX0RFRl9TVFIo
IE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50Q3ljbGVzICk7CitfTVRM
X1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyUmVuZGVy
VGFyZ2V0V3JpdGVDeWNsZXMgKTsKKworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9u
Q291bnRlclNldCwgQ29tbW9uQ291bnRlclNldFRpbWVzdGFtcCApOworX01UTF9QUklWQVRFX0RF
Rl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlclNldCwgQ29tbW9uQ291bnRlclNldFN0YWdlVXRpbGl6
YXRpb24gKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXJTZXQsIENv
bW1vbkNvdW50ZXJTZXRTdGF0aXN0aWMgKTsKKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5M
SU5FIE5TOjpTdHJpbmcqIE1UTDo6Q291bnRlcjo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyog
TVRMOjpDb3VudGVyU2V0OjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBjb3VudGVycworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkNvdW50
ZXJTZXQ6OmNvdW50ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvdW50ZXJzKSk7Cit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZm
ZXJEZXNjcmlwdG9yKiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZl
ckRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQ291bnRlclNhbXBsZUJ1ZmZlckRlc2Ny
aXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJT
YW1wbGVCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9y
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvdW50ZXJTYW1w
bGVCdWZmZXJEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogY291bnRlclNldAorX01U
TF9JTkxJTkUgTVRMOjpDb3VudGVyU2V0KiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlw
dG9yOjpjb3VudGVyU2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkNvdW50ZXJTZXQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvdW50ZXJTZXQpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9y
OjpzZXRDb3VudGVyU2V0KGNvbnN0IE1UTDo6Q291bnRlclNldCogY291bnRlclNldCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q291
bnRlclNldF8pLCBjb3VudGVyU2V0KTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjpsYWJl
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogc3RvcmFn
ZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6U3RvcmFnZU1vZGUgTVRMOjpDb3VudGVyU2FtcGxlQnVm
ZmVyRGVzY3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6U3RvcmFnZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3Rv
cmFnZU1vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZm
ZXJEZXNjcmlwdG9yOjpzZXRTdG9yYWdlTW9kZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2Rl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTdG9yYWdlTW9kZV8pLCBzdG9yYWdlTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1w
bGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZl
ckRlc2NyaXB0b3I6OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291
bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNj
cmlwdG9yOjpzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxlQ291bnQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBs
ZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9J
TkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcjo6ZGV2aWNlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01U
TF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyOjpsYWJlbCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNvdW50
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyOjpzYW1w
bGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50KSk7Cit9CisKKy8vIG1l
dGhvZDogcmVzb2x2ZUNvdW50ZXJSYW5nZToKK19NVExfSU5MSU5FIE5TOjpEYXRhKiBNVEw6OkNv
dW50ZXJTYW1wbGVCdWZmZXI6OnJlc29sdmVDb3VudGVyUmFuZ2UoTlM6OlJhbmdlIHJhbmdlKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpEYXRhKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChyZXNvbHZlQ291bnRlclJhbmdlXyksIHJhbmdlKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NjJlN2EyY2M5MDQzMmFiMGQyZmQ0OGI5ZmUxOGMwZDUzNWI5N2NhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlZmluZXMu
aHBwCkBAIC0wLDAgKzEsNDEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTERlZmluZXMuaHBwCisvLworLy8gQ29weXJpZ2h0
IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNEZWZp
bmVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNkZWZpbmUgX01UTF9FWFBPUlQgX05TX0VYUE9SVAorI2RlZmluZSBfTVRMX0VYVEVSTiBf
TlNfRVhURVJOCisjZGVmaW5lIF9NVExfSU5MSU5FIF9OU19JTkxJTkUKKyNkZWZpbmUgX01UTF9Q
QUNLRUQgX05TX1BBQ0tFRAorCisjZGVmaW5lIF9NVExfQ09OU1QodHlwZSwgbmFtZSkgX05TX0NP
TlNUKHR5cGUsIG5hbWUpCisjZGVmaW5lIF9NVExfRU5VTSh0eXBlLCBuYW1lKSBfTlNfRU5VTSh0
eXBlLCBuYW1lKQorI2RlZmluZSBfTVRMX09QVElPTlModHlwZSwgbmFtZSkgX05TX09QVElPTlMo
dHlwZSwgbmFtZSkKKworI2RlZmluZSBfTVRMX1ZBTElEQVRFX1NJWkUobnMsIG5hbWUpIF9OU19W
QUxJREFURV9TSVpFKG5zLCBuYW1lKQorI2RlZmluZSBfTVRMX1ZBTElEQVRFX0VOVU0obnMsIG5h
bWUpIF9OU19WQUxJREFURV9FTlVNKG5zLCBuYW1lKQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTERlcHRoU3RlbmNpbC5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ3NzRk
Y2VjMDFlODU5YTEwMDFkZjM5MmRiMzNiYmJlNjgyOTEyNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBwCkBA
IC0wLDAgKzEsMjY5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBNZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBwCisvLworLy8gQ29weXJpZ2h0
IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5o
cHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRl
LmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRl
ICJNVExEZXB0aFN0ZW5jaWwuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6
OlVJbnRlZ2VyLCBDb21wYXJlRnVuY3Rpb24pIHsKKyAgICBDb21wYXJlRnVuY3Rpb25OZXZlciA9
IDAsCisgICAgQ29tcGFyZUZ1bmN0aW9uTGVzcyA9IDEsCisgICAgQ29tcGFyZUZ1bmN0aW9uRXF1
YWwgPSAyLAorICAgIENvbXBhcmVGdW5jdGlvbkxlc3NFcXVhbCA9IDMsCisgICAgQ29tcGFyZUZ1
bmN0aW9uR3JlYXRlciA9IDQsCisgICAgQ29tcGFyZUZ1bmN0aW9uTm90RXF1YWwgPSA1LAorICAg
IENvbXBhcmVGdW5jdGlvbkdyZWF0ZXJFcXVhbCA9IDYsCisgICAgQ29tcGFyZUZ1bmN0aW9uQWx3
YXlzID0gNywKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFN0ZW5jaWxPcGVyYXRpb24p
IHsKKyAgICBTdGVuY2lsT3BlcmF0aW9uS2VlcCA9IDAsCisgICAgU3RlbmNpbE9wZXJhdGlvblpl
cm8gPSAxLAorICAgIFN0ZW5jaWxPcGVyYXRpb25SZXBsYWNlID0gMiwKKyAgICBTdGVuY2lsT3Bl
cmF0aW9uSW5jcmVtZW50Q2xhbXAgPSAzLAorICAgIFN0ZW5jaWxPcGVyYXRpb25EZWNyZW1lbnRD
bGFtcCA9IDQsCisgICAgU3RlbmNpbE9wZXJhdGlvbkludmVydCA9IDUsCisgICAgU3RlbmNpbE9w
ZXJhdGlvbkluY3JlbWVudFdyYXAgPSA2LAorICAgIFN0ZW5jaWxPcGVyYXRpb25EZWNyZW1lbnRX
cmFwID0gNywKK307CisKK2NsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPFN0ZW5jaWxEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTdGVu
Y2lsRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiAg
ICAgICAgaW5pdCgpOworCisgICAgTVRMOjpDb21wYXJlRnVuY3Rpb24gICAgICAgICAgICBzdGVu
Y2lsQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdGVuY2lsQ29tcGFyZUZ1bmN0aW9uKE1UTDo6Q29tcGFyZUZ1bmN0aW9uIHN0
ZW5jaWxDb21wYXJlRnVuY3Rpb24pOworCisgICAgTVRMOjpTdGVuY2lsT3BlcmF0aW9uICAgICAg
ICAgICBzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbEZhaWx1cmVPcGVyYXRpb24oTVRMOjpTdGVuY2ls
T3BlcmF0aW9uIHN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uKTsKKworICAgIE1UTDo6U3RlbmNpbE9w
ZXJhdGlvbiAgICAgICAgICAgZGVwdGhGYWlsdXJlT3BlcmF0aW9uKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aEZhaWx1cmVPcGVyYXRpb24oTVRM
OjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoRmFpbHVyZU9wZXJhdGlvbik7CisKKyAgICBNVEw6OlN0
ZW5jaWxPcGVyYXRpb24gICAgICAgICAgIGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24oKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoU3RlbmNpbFBh
c3NPcGVyYXRpb24oTVRMOjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRp
b24pOworCisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICByZWFkTWFzaygpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVhZE1hc2sodWlu
dDMyX3QgcmVhZE1hc2spOworCisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZU1hc2soKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFdyaXRlTWFzayh1aW50MzJfdCB3cml0ZU1hc2spOworfTsKKworY2xhc3MgRGVwdGhTdGVuY2ls
RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsK
KworICAgIE1UTDo6Q29tcGFyZUZ1bmN0aW9uICAgICAgICAgICAgICAgICBkZXB0aENvbXBhcmVG
dW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXREZXB0aENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBh
cmVGdW5jdGlvbik7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVwdGhXcml0ZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RGVwdGhXcml0ZUVuYWJsZWQoYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCk7
CisKKyAgICBjbGFzcyBTdGVuY2lsRGVzY3JpcHRvciogICAgICAgICAgICAgZnJvbnRGYWNlU3Rl
bmNpbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRGcm9udEZhY2VTdGVuY2lsKGNvbnN0IGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiBmcm9udEZh
Y2VTdGVuY2lsKTsKKworICAgIGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiAgICAgICAgICAgICBi
YWNrRmFjZVN0ZW5jaWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0QmFja0ZhY2VTdGVuY2lsKGNvbnN0IGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9y
KiBiYWNrRmFjZVN0ZW5jaWwpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKK307CisKK2NsYXNzIERl
cHRoU3RlbmNpbFN0YXRlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxEZXB0aFN0ZW5jaWxTdGF0
ZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisKKyAgICBj
bGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3JpcHRvciogTVRMOjpTdGVuY2ls
RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OlN0ZW5jaWxEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0ZW5jaWxEZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3Jp
cHRvciogTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpTdGVuY2lsRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6
IHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6Q29tcGFyZUZ1bmN0aW9u
IE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnN0ZW5jaWxDb21wYXJlRnVuY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcGFyZUZ1bmN0aW9uPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24pKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRTdGVuY2lsQ29tcGFyZUZ1
bmN0aW9uKE1UTDo6Q29tcGFyZUZ1bmN0aW9uIHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24pCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0
ZW5jaWxDb21wYXJlRnVuY3Rpb25fKSwgc3RlbmNpbENvbXBhcmVGdW5jdGlvbik7Cit9CisKKy8v
IHByb3BlcnR5OiBzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbgorX01UTF9JTkxJTkUgTVRMOjpTdGVu
Y2lsT3BlcmF0aW9uIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnN0ZW5jaWxGYWlsdXJlT3BlcmF0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5j
aWxPcGVyYXRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlbmNpbEZhaWx1cmVPcGVyYXRp
b24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRT
dGVuY2lsRmFpbHVyZU9wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24gc3RlbmNpbEZhaWx1
cmVPcGVyYXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uXyksIHN0ZW5jaWxGYWlsdXJl
T3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoRmFpbHVyZU9wZXJhdGlvbgorX01U
TF9JTkxJTkUgTVRMOjpTdGVuY2lsT3BlcmF0aW9uIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OmRl
cHRoRmFpbHVyZU9wZXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpTdGVuY2lsT3BlcmF0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRo
RmFpbHVyZU9wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RlbmNpbERl
c2NyaXB0b3I6OnNldERlcHRoRmFpbHVyZU9wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24g
ZGVwdGhGYWlsdXJlT3BlcmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aEZhaWx1cmVPcGVyYXRpb25fKSwgZGVwdGhG
YWlsdXJlT3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoU3RlbmNpbFBhc3NPcGVy
YXRpb24KK19NVExfSU5MSU5FIE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBNVEw6OlN0ZW5jaWxEZXNj
cmlwdG9yOjpkZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5jaWxPcGVyYXRpb24+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24o
TVRMOjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24pCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRo
U3RlbmNpbFBhc3NPcGVyYXRpb25fKSwgZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbik7Cit9CisK
Ky8vIHByb3BlcnR5OiByZWFkTWFzaworX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpTdGVuY2ls
RGVzY3JpcHRvcjo6cmVhZE1hc2soKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlYWRNYXNrKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6c2V0UmVhZE1hc2sodWlu
dDMyX3QgcmVhZE1hc2spCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFJlYWRNYXNrXyksIHJlYWRNYXNrKTsKK30KKworLy8gcHJvcGVy
dHk6IHdyaXRlTWFzaworX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpTdGVuY2lsRGVzY3JpcHRv
cjo6d3JpdGVNYXNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1
aW50MzJfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3cml0ZU1hc2spKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRXcml0ZU1hc2sodWludDMyX3Qg
d3JpdGVNYXNrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRXcml0ZU1hc2tfKSwgd3JpdGVNYXNrKTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvciogTVRM
OjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhN
VExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9J
TkxJTkUgTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBNVEw6OkRlcHRoU3RlbmNpbERlc2Ny
aXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RGVwdGhT
dGVuY2lsRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoQ29tcGFyZUZ1bmN0
aW9uCitfTVRMX0lOTElORSBNVEw6OkNvbXBhcmVGdW5jdGlvbiBNVEw6OkRlcHRoU3RlbmNpbERl
c2NyaXB0b3I6OmRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXBhcmVGdW5jdGlvbj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChkZXB0aENvbXBhcmVGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oTVRMOjpDb21w
YXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlRnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoQ29tcGFyZUZ1bmN0aW9u
XyksIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoV3JpdGVF
bmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVw
dGhXcml0ZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNEZXB0aFdyaXRlRW5hYmxlZCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhX
cml0ZUVuYWJsZWQoYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhXcml0ZUVuYWJsZWRf
KSwgZGVwdGhXcml0ZUVuYWJsZWQpOworfQorCisvLyBwcm9wZXJ0eTogZnJvbnRGYWNlU3RlbmNp
bAorX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3JpcHRvciogTVRMOjpEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yOjpmcm9udEZhY2VTdGVuY2lsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChmcm9udEZhY2VTdGVuY2lsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRGcm9udEZhY2VTdGVuY2lsKGNvbnN0IE1UTDo6U3RlbmNp
bERlc2NyaXB0b3IqIGZyb250RmFjZVN0ZW5jaWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyb250RmFjZVN0ZW5jaWxfKSwgZnJv
bnRGYWNlU3RlbmNpbCk7Cit9CisKKy8vIHByb3BlcnR5OiBiYWNrRmFjZVN0ZW5jaWwKK19NVExf
SU5MSU5FIE1UTDo6U3RlbmNpbERlc2NyaXB0b3IqIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRv
cjo6YmFja0ZhY2VTdGVuY2lsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChiYWNr
RmFjZVN0ZW5jaWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRlcHRoU3RlbmNpbERl
c2NyaXB0b3I6OnNldEJhY2tGYWNlU3RlbmNpbChjb25zdCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9y
KiBiYWNrRmFjZVN0ZW5jaWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEJhY2tGYWNlU3RlbmNpbF8pLCBiYWNrRmFjZVN0ZW5jaWwp
OworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVs
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpz
ZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQor
CisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RGVwdGhT
dGVuY2lsU3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisv
LyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpEZXB0aFN0
ZW5jaWxTdGF0ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGV2aWNl
LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXZpY2UuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZjZDBkNzc2NGY5NmQyNDYxMDQzNTY2MzA1YTgwYWM3YmVlZTk2NmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RGV2aWNlLmhwcApAQCAtMCwwICsxLDEyNTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTERldmljZS5ocHAKKy8vCisvLyBD
b3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExE
ZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1U
TFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKwor
I2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKyNpbmNsdWRlICJNVExEZXZpY2UuaHBwIgorI2lu
Y2x1ZGUgIk1UTFBpeGVsRm9ybWF0LmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisj
aW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorI2luY2x1
ZGUgPElPU3VyZmFjZS9JT1N1cmZhY2VSZWYuaD4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBGZWF0dXJlU2V0KSB7Cisg
ICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92MSA9IDAsCisgICAgRmVhdHVyZVNldF9pT1Nf
R1BVRmFtaWx5Ml92MSA9IDEsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92MiA9IDIs
CisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92MiA9IDMsCisgICAgRmVhdHVyZVNldF9p
T1NfR1BVRmFtaWx5M192MSA9IDQsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92MyA9
IDUsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92MyA9IDYsCisgICAgRmVhdHVyZVNl
dF9pT1NfR1BVRmFtaWx5M192MiA9IDcsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92
NCA9IDgsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92NCA9IDksCisgICAgRmVhdHVy
ZVNldF9pT1NfR1BVRmFtaWx5M192MyA9IDEwLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWls
eTRfdjEgPSAxMSwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkxX3Y1ID0gMTIsCisgICAg
RmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92NSA9IDEzLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQ
VUZhbWlseTNfdjQgPSAxNCwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHk0X3YyID0gMTUs
CisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5NV92MSA9IDE2LAorICAgIEZlYXR1cmVTZXRf
bWFjT1NfR1BVRmFtaWx5MV92MSA9IDEwMDAwLAorICAgIEZlYXR1cmVTZXRfT1NYX0dQVUZhbWls
eTFfdjEgPSAxMDAwMCwKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTFfdjIgPSAxMDAw
MSwKKyAgICBGZWF0dXJlU2V0X09TWF9HUFVGYW1pbHkxX3YyID0gMTAwMDEsCisgICAgRmVhdHVy
ZVNldF9PU1hfUmVhZFdyaXRlVGV4dHVyZVRpZXIyID0gMTAwMDIsCisgICAgRmVhdHVyZVNldF9t
YWNPU19SZWFkV3JpdGVUZXh0dXJlVGllcjIgPSAxMDAwMiwKKyAgICBGZWF0dXJlU2V0X21hY09T
X0dQVUZhbWlseTFfdjMgPSAxMDAwMywKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTFf
djQgPSAxMDAwNCwKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTJfdjEgPSAxMDAwNSwK
KyAgICBGZWF0dXJlU2V0X3dhdGNoT1NfR1BVRmFtaWx5MV92MSA9IDIwMDAwLAorICAgIEZlYXR1
cmVTZXRfV2F0Y2hPU19HUFVGYW1pbHkxX3YxID0gMjAwMDAsCisgICAgRmVhdHVyZVNldF93YXRj
aE9TX0dQVUZhbWlseTJfdjEgPSAyMDAwMSwKKyAgICBGZWF0dXJlU2V0X1dhdGNoT1NfR1BVRmFt
aWx5Ml92MSA9IDIwMDAxLAorICAgIEZlYXR1cmVTZXRfdHZPU19HUFVGYW1pbHkxX3YxID0gMzAw
MDAsCisgICAgRmVhdHVyZVNldF9UVk9TX0dQVUZhbWlseTFfdjEgPSAzMDAwMCwKKyAgICBGZWF0
dXJlU2V0X3R2T1NfR1BVRmFtaWx5MV92MiA9IDMwMDAxLAorICAgIEZlYXR1cmVTZXRfdHZPU19H
UFVGYW1pbHkxX3YzID0gMzAwMDIsCisgICAgRmVhdHVyZVNldF90dk9TX0dQVUZhbWlseTJfdjEg
PSAzMDAwMywKKyAgICBGZWF0dXJlU2V0X3R2T1NfR1BVRmFtaWx5MV92NCA9IDMwMDA0LAorICAg
IEZlYXR1cmVTZXRfdHZPU19HUFVGYW1pbHkyX3YyID0gMzAwMDUsCit9OworCitfTVRMX0VOVU0o
TlM6OkludGVnZXIsIEdQVUZhbWlseSkgeworICAgIEdQVUZhbWlseUFwcGxlMSA9IDEwMDEsCisg
ICAgR1BVRmFtaWx5QXBwbGUyID0gMTAwMiwKKyAgICBHUFVGYW1pbHlBcHBsZTMgPSAxMDAzLAor
ICAgIEdQVUZhbWlseUFwcGxlNCA9IDEwMDQsCisgICAgR1BVRmFtaWx5QXBwbGU1ID0gMTAwNSwK
KyAgICBHUFVGYW1pbHlBcHBsZTYgPSAxMDA2LAorICAgIEdQVUZhbWlseUFwcGxlNyA9IDEwMDcs
CisgICAgR1BVRmFtaWx5QXBwbGU4ID0gMTAwOCwKKyAgICBHUFVGYW1pbHlNYWMxID0gMjAwMSwK
KyAgICBHUFVGYW1pbHlNYWMyID0gMjAwMiwKKyAgICBHUFVGYW1pbHlDb21tb24xID0gMzAwMSwK
KyAgICBHUFVGYW1pbHlDb21tb24yID0gMzAwMiwKKyAgICBHUFVGYW1pbHlDb21tb24zID0gMzAw
MywKKyAgICBHUFVGYW1pbHlNYWNDYXRhbHlzdDEgPSA0MDAxLAorICAgIEdQVUZhbWlseU1hY0Nh
dGFseXN0MiA9IDQwMDIsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBEZXZpY2VMb2Nh
dGlvbikgeworICAgIERldmljZUxvY2F0aW9uQnVpbHRJbiA9IDAsCisgICAgRGV2aWNlTG9jYXRp
b25TbG90ID0gMSwKKyAgICBEZXZpY2VMb2NhdGlvbkV4dGVybmFsID0gMiwKKyAgICBEZXZpY2VM
b2NhdGlvblVuc3BlY2lmaWVkID0gTlM6OlVJbnRlZ2VyTWF4LAorfTsKKworX01UTF9PUFRJT05T
KE5TOjpVSW50ZWdlciwgUGlwZWxpbmVPcHRpb24pIHsKKyAgICBQaXBlbGluZU9wdGlvbk5vbmUg
PSAwLAorICAgIFBpcGVsaW5lT3B0aW9uQXJndW1lbnRJbmZvID0gMSwKKyAgICBQaXBlbGluZU9w
dGlvbkJ1ZmZlclR5cGVJbmZvID0gMiwKKyAgICBQaXBlbGluZU9wdGlvbkZhaWxPbkJpbmFyeUFy
Y2hpdmVNaXNzID0gNCwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFJlYWRXcml0ZVRl
eHR1cmVUaWVyKSB7CisgICAgUmVhZFdyaXRlVGV4dHVyZVRpZXJOb25lID0gMCwKKyAgICBSZWFk
V3JpdGVUZXh0dXJlVGllcjEgPSAxLAorICAgIFJlYWRXcml0ZVRleHR1cmVUaWVyMiA9IDIsCit9
OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBBcmd1bWVudEJ1ZmZlcnNUaWVyKSB7CisgICAg
QXJndW1lbnRCdWZmZXJzVGllcjEgPSAwLAorICAgIEFyZ3VtZW50QnVmZmVyc1RpZXIyID0gMSwK
K307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFNwYXJzZVRleHR1cmVSZWdpb25BbGlnbm1l
bnRNb2RlKSB7CisgICAgU3BhcnNlVGV4dHVyZVJlZ2lvbkFsaWdubWVudE1vZGVPdXR3YXJkID0g
MCwKKyAgICBTcGFyc2VUZXh0dXJlUmVnaW9uQWxpZ25tZW50TW9kZUlud2FyZCA9IDEsCit9Owor
CitzdHJ1Y3QgQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMKK3sKKyAgICBOUzo6VUludGVnZXIg
YWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZTsKKyAgICBOUzo6VUludGVnZXIgYnVpbGRTY3JhdGNo
QnVmZmVyU2l6ZTsKKyAgICBOUzo6VUludGVnZXIgcmVmaXRTY3JhdGNoQnVmZmVyU2l6ZTsKK30g
X01UTF9QQUNLRUQ7CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIENvdW50ZXJTYW1wbGluZ1Bv
aW50KSB7CisgICAgQ291bnRlclNhbXBsaW5nUG9pbnRBdFN0YWdlQm91bmRhcnkgPSAwLAorICAg
IENvdW50ZXJTYW1wbGluZ1BvaW50QXREcmF3Qm91bmRhcnkgPSAxLAorICAgIENvdW50ZXJTYW1w
bGluZ1BvaW50QXREaXNwYXRjaEJvdW5kYXJ5ID0gMiwKKyAgICBDb3VudGVyU2FtcGxpbmdQb2lu
dEF0VGlsZURpc3BhdGNoQm91bmRhcnkgPSAzLAorICAgIENvdW50ZXJTYW1wbGluZ1BvaW50QXRC
bGl0Qm91bmRhcnkgPSA0LAorfTsKKworc3RydWN0IFNpemVBbmRBbGlnbgoreworICAgIE5TOjpV
SW50ZWdlciBzaXplOworICAgIE5TOjpVSW50ZWdlciBhbGlnbjsKK30gX01UTF9QQUNLRUQ7CisK
K2NsYXNzIEFyZ3VtZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBcmd1bWVudERl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFyZ3VtZW50RGVzY3JpcHRv
ciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFyZ3VtZW50RGVzY3JpcHRvciogICAgICAgIGluaXQo
KTsKKworICAgIHN0YXRpYyBjbGFzcyBBcmd1bWVudERlc2NyaXB0b3IqIGFyZ3VtZW50RGVzY3Jp
cHRvcigpOworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGUo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREYXRhVHlw
ZShNVEw6OkRhdGFUeXBlIGRhdGFUeXBlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgIGluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0SW5kZXgoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICAgICAgIGFycmF5TGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFycmF5TGVu
Z3RoKTsKKworICAgIE1UTDo6QXJndW1lbnRBY2Nlc3MgICAgICAgICAgICAgIGFjY2VzcygpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFjY2VzcyhNVEw6
OkFyZ3VtZW50QWNjZXNzIGFjY2Vzcyk7CisKKyAgICBNVEw6OlRleHR1cmVUeXBlICAgICAgICAg
ICAgICAgICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFRleHR1cmVUeXBlKE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRCbG9ja0FsaWdu
bWVudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENv
bnN0YW50QmxvY2tBbGlnbm1lbnQoTlM6OlVJbnRlZ2VyIGNvbnN0YW50QmxvY2tBbGlnbm1lbnQp
OworfTsKKwordXNpbmcgRGV2aWNlTm90aWZpY2F0aW9uTmFtZSA9IE5TOjpTdHJpbmcqOworCitf
TVRMX0NPTlNUKERldmljZU5vdGlmaWNhdGlvbk5hbWUsIERldmljZVdhc0FkZGVkTm90aWZpY2F0
aW9uKTsKKworX01UTF9DT05TVChEZXZpY2VOb3RpZmljYXRpb25OYW1lLCBEZXZpY2VSZW1vdmFs
UmVxdWVzdGVkTm90aWZpY2F0aW9uKTsKKworX01UTF9DT05TVChEZXZpY2VOb3RpZmljYXRpb25O
YW1lLCBEZXZpY2VXYXNSZW1vdmVkTm90aWZpY2F0aW9uKTsKKwordXNpbmcgRGV2aWNlTm90aWZp
Y2F0aW9uSGFuZGxlckJsb2NrID0gdm9pZCAoXikoY2xhc3MgRGV2aWNlKiBwRGV2aWNlLCBEZXZp
Y2VOb3RpZmljYXRpb25OYW1lIG5vdGlmeU5hbWUpOworCit1c2luZyBEZXZpY2VOb3RpZmljYXRp
b25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgRGV2aWNlKiBwRGV2
aWNlLCBEZXZpY2VOb3RpZmljYXRpb25OYW1lIG5vdGlmeU5hbWUpPjsKKwordXNpbmcgQXV0b3Jl
bGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiA9IGNsYXNzIENvbXB1dGVQaXBlbGluZVJl
ZmxlY3Rpb24qOworCit1c2luZyBBdXRvcmVsZWFzZWRSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24g
PSBjbGFzcyBSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qOworCit1c2luZyBOZXdMaWJyYXJ5Q29t
cGxldGlvbkhhbmRsZXIgPSB2b2lkICheKShjbGFzcyBMaWJyYXJ5KiwgTlM6OkVycm9yKik7CisK
K3VzaW5nIE5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlv
bjx2b2lkKGNsYXNzIExpYnJhcnkqLCBOUzo6RXJyb3IqKT47CisKK3VzaW5nIE5ld1JlbmRlclBp
cGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlciA9IHZvaWQgKF4pKGNsYXNzIFJlbmRlclBpcGVs
aW5lU3RhdGUqLCBOUzo6RXJyb3IqKTsKKwordXNpbmcgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZUNv
bXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgUmVuZGVy
UGlwZWxpbmVTdGF0ZSosIE5TOjpFcnJvciopPjsKKwordXNpbmcgTmV3UmVuZGVyUGlwZWxpbmVT
dGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSB2b2lkICheKShjbGFzcyBSZW5k
ZXJQaXBlbGluZVN0YXRlKiwgY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiwgTlM6OkVy
cm9yKik7CisKK3VzaW5nIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBs
ZXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgUmVuZGVyUGlw
ZWxpbmVTdGF0ZSosIGNsYXNzIFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiosIE5TOjpFcnJvciop
PjsKKwordXNpbmcgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlciA9IHZv
aWQgKF4pKGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiwgTlM6OkVycm9yKik7CisKK3VzaW5n
IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0ZDo6
ZnVuY3Rpb248dm9pZChjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSosIE5TOjpFcnJvciopPjsK
KwordXNpbmcgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25I
YW5kbGVyID0gdm9pZCAoXikoY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUqLCBjbGFzcyBDb21w
dXRlUGlwZWxpbmVSZWZsZWN0aW9uKiwgTlM6OkVycm9yKik7CisKK3VzaW5nIE5ld0NvbXB1dGVQ
aXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uID0gc3Rk
OjpmdW5jdGlvbjx2b2lkKGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiwgY2xhc3MgQ29tcHV0
ZVBpcGVsaW5lUmVmbGVjdGlvbiosIE5TOjpFcnJvciopPjsKKwordXNpbmcgVGltZXN0YW1wID0g
c3RkOjp1aW50NjRfdDsKKworTVRMOjpEZXZpY2UqIENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2Uo
KTsKKworTlM6OkFycmF5KiAgIENvcHlBbGxEZXZpY2VzKCk7CisKK05TOjpBcnJheSogICBDb3B5
QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBEZXZpY2VO
b3RpZmljYXRpb25IYW5kbGVyQmxvY2sgaGFuZGxlcik7CisKK05TOjpBcnJheSogICBDb3B5QWxs
RGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBjb25zdCBEZXZp
Y2VOb3RpZmljYXRpb25IYW5kbGVyRnVuY3Rpb24mIGhhbmRsZXIpOworCit2b2lkICAgICAgICAg
UmVtb3ZlRGV2aWNlT2JzZXJ2ZXIoY29uc3QgTlM6Ok9iamVjdCogcE9ic2VydmVyKTsKKworY2xh
c3MgRGV2aWNlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxEZXZpY2U+Cit7CitwdWJsaWM6Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IE5TOjpT
dHJpbmcqIHBTb3VyY2UsIGNvbnN0IGNsYXNzIENvbXBpbGVPcHRpb25zKiBwT3B0aW9ucywgY29u
c3QgTmV3TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVy
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25z
dCBjbGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3QgTVRM
OjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZW5kZXJQaXBlbGlu
ZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3Is
IGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBj
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKiBwRGVzY3JpcHRvciwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29t
cGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IqIHBEZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBj
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IGNvbnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYg
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogcEZ1bmN0aW9u
LCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdp
dGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRv
ciwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVy
KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIZWFkbGVzcygpIGNv
bnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7
CisKKyAgICB1aW50NjRfdCAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5SUQoKSBjb25z
dDsKKworICAgIE1UTDo6U2l6ZSAgICAgICAgICAgICAgICAgICAgICAgbWF4VGhyZWFkc1BlclRo
cmVhZGdyb3VwKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvd1Bvd2VyKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlYWRsZXNzKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlbW92YWJsZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoYXNVbmlmaWVkTWVtb3J5KCkgY29uc3Q7CisKKyAgICB1aW50NjRfdCAgICAgICAgICAgICAg
ICAgICAgICAgIHJlY29tbWVuZGVkTWF4V29ya2luZ1NldFNpemUoKSBjb25zdDsKKworICAgIE1U
TDo6RGV2aWNlTG9jYXRpb24gICAgICAgICAgICAgbG9jYXRpb24oKSBjb25zdDsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25OdW1iZXIoKSBjb25zdDsKKwor
ICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgbWF4VHJhbnNmZXJSYXRlKCkgY29u
c3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoMjRTdGVuY2ls
OFBpeGVsRm9ybWF0U3VwcG9ydGVkKCkgY29uc3Q7CisKKyAgICBNVEw6OlJlYWRXcml0ZVRleHR1
cmVUaWVyICAgICAgIHJlYWRXcml0ZVRleHR1cmVTdXBwb3J0KCkgY29uc3Q7CisKKyAgICBNVEw6
OkFyZ3VtZW50QnVmZmVyc1RpZXIgICAgICAgIGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQoKSBjb25z
dDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyT3JkZXJHcm91
cHNTdXBwb3J0ZWQoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5nKCkgY29uc3Q7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzMzJCaXRNU0FBKCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUXVlcnlUZXh0dXJlTE9EKCkg
Y29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzQkNU
ZXh0dXJlQ29tcHJlc3Npb24oKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9uKCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcnljZW50cmljQ29vcmRzU3VwcG9ydGVk
KCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRz
U2hhZGVyQmFyeWNlbnRyaWNDb29yZGluYXRlcygpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50QWxsb2NhdGVkU2l6ZSgpIGNvbnN0OworCisgICAg
Y2xhc3MgQ29tbWFuZFF1ZXVlKiAgICAgICAgICAgICBuZXdDb21tYW5kUXVldWUoKTsKKworICAg
IGNsYXNzIENvbW1hbmRRdWV1ZSogICAgICAgICAgICAgbmV3Q29tbWFuZFF1ZXVlKE5TOjpVSW50
ZWdlciBtYXhDb21tYW5kQnVmZmVyQ291bnQpOworCisgICAgTVRMOjpTaXplQW5kQWxpZ24gICAg
ICAgICAgICAgICBoZWFwVGV4dHVyZVNpemVBbmRBbGlnbihjb25zdCBjbGFzcyBUZXh0dXJlRGVz
Y3JpcHRvciogZGVzYyk7CisKKyAgICBNVEw6OlNpemVBbmRBbGlnbiAgICAgICAgICAgICAgIGhl
YXBCdWZmZXJTaXplQW5kQWxpZ24oTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9w
dGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBIZWFwKiAgICAgICAgICAgICAgICAgICAgIG5l
d0hlYXAoY29uc3QgY2xhc3MgSGVhcERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xh
c3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICBuZXdCdWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0
aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBCdWZmZXIqICAg
ICAgICAgICAgICAgICAgIG5ld0J1ZmZlcihjb25zdCB2b2lkKiBwb2ludGVyLCBOUzo6VUludGVn
ZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zKTsKKworICAgIGNsYXNzIEJ1
ZmZlciogICAgICAgICAgICAgICAgICAgbmV3QnVmZmVyKGNvbnN0IHZvaWQqIHBvaW50ZXIsIE5T
OjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMsIGNvbnN0IHZv
aWQgKF5kZWFsbG9jYXRvcikodm9pZCosIE5TOjpVSW50ZWdlcikpOworCisgICAgY2xhc3MgRGVw
dGhTdGVuY2lsU3RhdGUqICAgICAgICBuZXdEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBjbGFzcyBE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNzIFRleHR1cmUq
ICAgICAgICAgICAgICAgICAgbmV3VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlRGVzY3JpcHRv
ciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgICAgIG5l
d1RleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0
IElPU3VyZmFjZVJlZiBpb3N1cmZhY2UsIE5TOjpVSW50ZWdlciBwbGFuZSk7CisKKyAgICBjbGFz
cyBUZXh0dXJlKiAgICAgICAgICAgICAgICAgIG5ld1NoYXJlZFRleHR1cmUoY29uc3QgY2xhc3Mg
VGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAg
ICAgICAgICAgICAgICBuZXdTaGFyZWRUZXh0dXJlKGNvbnN0IGNsYXNzIFNoYXJlZFRleHR1cmVI
YW5kbGUqIHNoYXJlZEhhbmRsZSk7CisKKyAgICBjbGFzcyBTYW1wbGVyU3RhdGUqICAgICAgICAg
ICAgIG5ld1NhbXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyRGVzY3JpcHRvciogZGVzY3Jp
cHRvcik7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5ld0RlZmF1bHRM
aWJyYXJ5KCk7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5ld0RlZmF1
bHRMaWJyYXJ5KGNvbnN0IE5TOjpCdW5kbGUqIGJ1bmRsZSwgTlM6OkVycm9yKiogZXJyb3IpOwor
CisgICAgY2xhc3MgTGlicmFyeSogICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IE5T
OjpTdHJpbmcqIGZpbGVwYXRoLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBMaWJy
YXJ5KiAgICAgICAgICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6
RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5l
d0xpYnJhcnkoY29uc3QgZGlzcGF0Y2hfZGF0YV90IGRhdGEsIE5TOjpFcnJvcioqIGVycm9yKTsK
KworICAgIGNsYXNzIExpYnJhcnkqICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBO
Uzo6U3RyaW5nKiBzb3VyY2UsIGNvbnN0IGNsYXNzIENvbXBpbGVPcHRpb25zKiBvcHRpb25zLCBO
Uzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogc291cmNlLCBjb25zdCBjbGFzcyBDb21waWxl
T3B0aW9ucyogb3B0aW9ucywgY29uc3QgTVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIg
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xhc3MgTGlicmFyeSogICAgICAgICAgICAgICAg
ICBuZXdMaWJyYXJ5KGNvbnN0IGNsYXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3TGlicmFyeShjb25zdCBjbGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlcik7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiAgICAgIG5l
d1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBl
bGluZVN0YXRlKiAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlv
bnMsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiByZWZs
ZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3Mg
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9u
IG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9u
Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xhc3MgQ29tcHV0
ZVBpcGVsaW5lU3RhdGUqICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBG
dW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFz
cyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0
IGNsYXNzIEZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0
aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiBy
ZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0aW9u
KiBjb21wdXRlRnVuY3Rpb24sIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21w
bGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0
aW9uKiBjb21wdXRlRnVuY3Rpb24sIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3Qg
TVRMOjpOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRs
ZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUq
ICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0
IE1UTDo6QXV0b3JlbGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwg
TlM6OkVycm9yKiogZXJyb3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1U
TDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVy
IGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGNsYXNzIEZlbmNlKiAgICAgICAgICAgICAgICAg
ICAgbmV3RmVuY2UoKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw
cG9ydHNGZWF0dXJlU2V0KE1UTDo6RmVhdHVyZVNldCBmZWF0dXJlU2V0KTsKKworICAgIGJvb2wg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNGYW1pbHkoTVRMOjpHUFVGYW1pbHkg
Z3B1RmFtaWx5KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9y
dHNUZXh0dXJlU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWluaW11bUxpbmVhclRleHR1cmVBbGlnbm1l
bnRGb3JQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGZvcm1hdCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgIG1pbmltdW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9y
UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBmb3JtYXQpOworCisgICAgY2xhc3MgUmVuZGVy
UGlwZWxpbmVTdGF0ZSogICAgICBuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFRp
bGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRp
b24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRSZW5kZXJQaXBlbGluZVJlZmxlY3Rp
b24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9u
IG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9u
Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICBtYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0Owor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBtYXhBcmd1bWVudEJ1ZmZlclNh
bXBsZXJDb3VudCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9ncmFtbWFibGVTYW1wbGVQb3NpdGlvbnNTdXBwb3J0ZWQoKSBjb25zdDsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9ucyhN
VEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAg
ICBjbGFzcyBBcmd1bWVudEVuY29kZXIqICAgICAgICAgIG5ld0FyZ3VtZW50RW5jb2Rlcihjb25z
dCBOUzo6QXJyYXkqIGFyZ3VtZW50cyk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1cHBvcnRzUmFzdGVyaXphdGlvblJhdGVNYXAoTlM6OlVJbnRlZ2VyIGxheWVyQ291
bnQpOworCisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXAqICAgICBuZXdSYXN0ZXJpemF0
aW9uUmF0ZU1hcChjb25zdCBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpOworCisgICAgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiAgICBuZXdJbmRp
cmVjdENvbW1hbmRCdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3Jp
cHRvciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG1heENvdW50LCBNVEw6OlJlc291cmNlT3B0
aW9ucyBvcHRpb25zKTsKKworICAgIGNsYXNzIEV2ZW50KiAgICAgICAgICAgICAgICAgICAgbmV3
RXZlbnQoKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50KiAgICAgICAgICAgICAgbmV3U2hhcmVk
RXZlbnQoKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50KiAgICAgICAgICAgICAgbmV3U2hhcmVk
RXZlbnQoY29uc3QgY2xhc3MgU2hhcmVkRXZlbnRIYW5kbGUqIHNoYXJlZEV2ZW50SGFuZGxlKTsK
KworICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgcGVlckdyb3VwSUQoKSBjb25z
dDsKKworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgcGVlckluZGV4KCkgY29u
c3Q7CisKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb3VudCgpIGNv
bnN0OworCisgICAgTVRMOjpTaXplICAgICAgICAgICAgICAgICAgICAgICBzcGFyc2VUaWxlU2l6
ZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlLCBNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBOUzo6VUludGVnZXIgc2FtcGxlQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICBzcGFyc2VUaWxlU2l6ZUluQnl0ZXMoKSBjb25zdDsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFNwYXJzZVBpeGVsUmVnaW9ucyhjb25z
dCBNVEw6OlJlZ2lvbiogcGl4ZWxSZWdpb25zLCBNVEw6OlJlZ2lvbiogdGlsZVJlZ2lvbnMsIE1U
TDo6U2l6ZSB0aWxlU2l6ZSwgTVRMOjpTcGFyc2VUZXh0dXJlUmVnaW9uQWxpZ25tZW50TW9kZSBt
b2RlLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucyk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnZlcnRTcGFyc2VUaWxlUmVnaW9ucyhjb25zdCBNVEw6OlJlZ2lvbiog
dGlsZVJlZ2lvbnMsIE1UTDo6UmVnaW9uKiBwaXhlbFJlZ2lvbnMsIE1UTDo6U2l6ZSB0aWxlU2l6
ZSwgTlM6OlVJbnRlZ2VyIG51bVJlZ2lvbnMpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgICAgICBtYXhCdWZmZXJMZW5ndGgoKSBjb25zdDsKKworICAgIE5TOjpBcnJheSogICAg
ICAgICAgICAgICAgICAgICAgY291bnRlclNldHMoKSBjb25zdDsKKworICAgIGNsYXNzIENvdW50
ZXJTYW1wbGVCdWZmZXIqICAgICAgbmV3Q291bnRlclNhbXBsZUJ1ZmZlcihjb25zdCBjbGFzcyBD
b3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJy
b3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVUaW1lc3Rh
bXBzKE1UTDo6VGltZXN0YW1wKiBjcHVUaW1lc3RhbXAsIE1UTDo6VGltZXN0YW1wKiBncHVUaW1l
c3RhbXApOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0Nv
dW50ZXJTYW1wbGluZyhNVEw6OkNvdW50ZXJTYW1wbGluZ1BvaW50IHNhbXBsaW5nUG9pbnQpOwor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1ZlcnRleEFtcGxp
ZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgY291bnQpOworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0c0R5bmFtaWNMaWJyYXJpZXMoKSBjb25zdDsKKworICAg
IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNSZW5kZXJEeW5hbWljTGli
cmFyaWVzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBEeW5hbWljTGlicmFyeSogICAgICAgICAgIG5l
d0R5bmFtaWNMaWJyYXJ5KGNvbnN0IGNsYXNzIExpYnJhcnkqIGxpYnJhcnksIE5TOjpFcnJvcioq
IGVycm9yKTsKKworICAgIGNsYXNzIER5bmFtaWNMaWJyYXJ5KiAgICAgICAgICAgbmV3RHluYW1p
Y0xpYnJhcnkoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBj
bGFzcyBCaW5hcnlBcmNoaXZlKiAgICAgICAgICAgIG5ld0JpbmFyeUFyY2hpdmUoY29uc3QgY2xh
c3MgQmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNSYXl0cmFj
aW5nKCkgY29uc3Q7CisKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemVzIGFjY2Vs
ZXJhdGlvblN0cnVjdHVyZVNpemVzKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJl
KiAgICBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoTlM6OlVJbnRlZ2VyIHNpemUpOworCisgICAg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiAgICBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmUo
Y29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcik7
CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRnVuY3Rpb25Q
b2ludGVycygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyKCkgY29uc3Q7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5kZXIoKSBj
b25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNQcmlt
aXRpdmVNb3Rpb25CbHVyKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvciogTVRMOjpBcmd1bWVudERl
c2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpB
cmd1bWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQXJndW1lbnREZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudERlc2Ny
aXB0b3IqIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6aW5pdDxNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYXJndW1lbnREZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RGVz
Y3JpcHRvciogTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OmFyZ3VtZW50RGVzY3JpcHRvcigpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcmd1bWVudERlc2NyaXB0b3Iq
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFyZ3VtZW50RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9T
RUwoYXJndW1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkYXRhVHlwZQorX01U
TF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6ZGF0YVR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGF0YVR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0RGF0YVR5cGUoTVRMOjpEYXRhVHlwZSBkYXRh
VHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0RGF0YVR5cGVfKSwgZGF0YVR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXgK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6aW5kZXgo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QXJndW1lbnREZXNjcmlwdG9yOjpzZXRJbmRleChOUzo6VUludGVnZXIgaW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldElu
ZGV4XyksIGluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IGFycmF5TGVuZ3RoCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OmFycmF5TGVuZ3RoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFycmF5
TGVuZ3RoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRBcnJheUxlbmd0aF8pLCBhcnJheUxlbmd0aCk7Cit9CisKKy8vIHByb3BlcnR5
OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRBY2Nlc3MgTVRMOjpBcmd1bWVudERl
c2NyaXB0b3I6OmFjY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpBcmd1bWVudEFjY2Vzcz4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nlc3MpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0QWNjZXNz
KE1UTDo6QXJndW1lbnRBY2Nlc3MgYWNjZXNzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRBY2Nlc3NfKSwgYWNjZXNzKTsKK30KKwor
Ly8gcHJvcGVydHk6IHRleHR1cmVUeXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVUeXBlIE1U
TDo6QXJndW1lbnREZXNjcmlwdG9yOjp0ZXh0dXJlVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh0ZXh0dXJlVHlwZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRE
ZXNjcmlwdG9yOjpzZXRUZXh0dXJlVHlwZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRUZXh0dXJlVHlwZV8pLCB0ZXh0dXJlVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb25zdGFu
dEJsb2NrQWxpZ25tZW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudERl
c2NyaXB0b3I6OmNvbnN0YW50QmxvY2tBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b25zdGFudEJsb2NrQWxpZ25tZW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1
bWVudERlc2NyaXB0b3I6OnNldENvbnN0YW50QmxvY2tBbGlnbm1lbnQoTlM6OlVJbnRlZ2VyIGNv
bnN0YW50QmxvY2tBbGlnbm1lbnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0YW50QmxvY2tBbGlnbm1lbnRfKSwgY29uc3Rh
bnRCbG9ja0FsaWdubWVudCk7Cit9CisKKyNpZiBkZWZpbmVkKE1UTF9QUklWQVRFX0lNUExFTUVO
VEFUSU9OKQorCitleHRlcm4gIkMiIE1UTDo6RGV2aWNlKiBNVExDcmVhdGVTeXN0ZW1EZWZhdWx0
RGV2aWNlKCk7CisKK2V4dGVybiAiQyIgTlM6OkFycmF5KiAgIE1UTENvcHlBbGxEZXZpY2VzKCk7
CisKK2V4dGVybiAiQyIgTlM6OkFycmF5KiAgIE1UTENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVy
KE5TOjpPYmplY3QqKiwgTVRMOjpEZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyQmxvY2spOworCitl
eHRlcm4gIkMiIHZvaWQgICAgICAgICBNVExSZW1vdmVEZXZpY2VPYnNlcnZlcihjb25zdCBOUzo6
T2JqZWN0Kik7CisKKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KKworTVRMOjpEZXZp
Y2UqIE1UTDo6Q3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpCit7CisgICAgcmV0dXJuIDo6TVRM
Q3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOworfQorCitOUzo6QXJyYXkqIE1UTDo6Q29weUFs
bERldmljZXMoKQoreworI2lmIFRBUkdFVF9PU19PU1gKKyAgICByZXR1cm4gOjpNVExDb3B5QWxs
RGV2aWNlcygpOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAvLyBUQVJHRVRf
T1NfT1NYCit9CisKK05TOjpBcnJheSogTVRMOjpDb3B5QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihO
Uzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBEZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyQmxvY2sg
aGFuZGxlcikKK3sKKyNpZiBUQVJHRVRfT1NfT1NYCisgICAgcmV0dXJuIDo6TVRMQ29weUFsbERl
dmljZXNXaXRoT2JzZXJ2ZXIocE91dE9ic2VydmVyLCBoYW5kbGVyKTsKKyNlbHNlCisgICAgKHZv
aWQpcE91dE9ic2VydmVyOworICAgICh2b2lkKWhhbmRsZXI7CisKKyAgICByZXR1cm4gbnVsbHB0
cjsKKyNlbmRpZiAvLyBUQVJHRVRfT1NfT1NYCit9CisKK05TOjpBcnJheSogTVRMOjpDb3B5QWxs
RGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBjb25zdCBEZXZp
Y2VOb3RpZmljYXRpb25IYW5kbGVyRnVuY3Rpb24mIGhhbmRsZXIpCit7CisgICAgX19ibG9jayBE
ZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyRnVuY3Rpb24gZnVuY3Rpb24gPSBoYW5kbGVyOworCisg
ICAgcmV0dXJuIENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKHBPdXRPYnNlcnZlciwgXihEZXZp
Y2UqIHBEZXZpY2UsIERldmljZU5vdGlmaWNhdGlvbk5hbWUgcE5vdGlmaWNhdGlvbk5hbWUpIHsg
ZnVuY3Rpb24ocERldmljZSwgcE5vdGlmaWNhdGlvbk5hbWUpOyB9KTsKK30KKwordm9pZCBNVEw6
OlJlbW92ZURldmljZU9ic2VydmVyKGNvbnN0IE5TOjpPYmplY3QqIHBPYnNlcnZlcikKK3sKKyNp
ZiBUQVJHRVRfT1NfT1NYCisgICAgOjpNVExSZW1vdmVEZXZpY2VPYnNlcnZlcihwT2JzZXJ2ZXIp
OworI2VuZGlmIC8vIFRBUkdFVF9PU19PU1gKK30KKworI2VuZGlmIC8vIE1UTF9QUklWQVRFX0lN
UExFTUVOVEFUSU9OCisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0xpYnJhcnko
Y29uc3QgTlM6OlN0cmluZyogcFNvdXJjZSwgY29uc3QgQ29tcGlsZU9wdGlvbnMqIHBPcHRpb25z
LCBjb25zdCBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgX19ibG9jayBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlv
biBibG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdM
aWJyYXJ5KHBTb3VyY2UsIHBPcHRpb25zLCBeKExpYnJhcnkqIHBMaWJyYXJ5LCBOUzo6RXJyb3Iq
IHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBMaWJyYXJ5LCBwRXJyb3IpOyB9KTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBjbGFz
cyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3QgTVRMOjpOZXdM
aWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgX19ibG9jayBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9ja0NvbXBs
ZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdMaWJyYXJ5KHBEZXNj
cmlwdG9yLCBeKExpYnJhcnkqIHBMaWJyYXJ5LCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0Nv
bXBsZXRpb25IYW5kbGVyKHBMaWJyYXJ5LCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBOZXdSZW5kZXJQaXBlbGluZVN0YXRl
Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgX19i
bG9jayBOZXdSZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9j
a0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdSZW5kZXJQ
aXBlbGluZVN0YXRlKHBEZXNjcmlwdG9yLCBeKFJlbmRlclBpcGVsaW5lU3RhdGUqIHBQaXBlbGlu
ZVN0YXRlLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBQaXBl
bGluZVN0YXRlLCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmlj
ZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iq
IHBEZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5kZXJQaXBl
bGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVm
bGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9
IGNvbXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShwRGVzY3Jp
cHRvciwgb3B0aW9ucywgXihSZW5kZXJQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgY2xh
c3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJy
b3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24s
IHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlKGNvbnN0IFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIHBEZXNj
cmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5kZXJQaXBlbGluZVN0
YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlv
bkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBs
ZXRpb25IYW5kbGVyOworCisgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShwRGVzY3JpcHRvciwg
b3B0aW9ucywgXihSZW5kZXJQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgY2xhc3MgUmVu
ZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpIHsg
YmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24sIHBFcnJv
cik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogcEZ1bmN0aW9uLCBjb25zdCBOZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIF9fYmxvY2sgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFu
ZGxlckZ1bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsK
KworICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKHBGdW5jdGlvbiwgXihDb21wdXRlUGlwZWxp
bmVTdGF0ZSogcFBpcGVsaW5lU3RhdGUsIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxl
dGlvbkhhbmRsZXIocFBpcGVsaW5lU3RhdGUsIHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBGdW5jdGlv
biogcEZ1bmN0aW9uLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhS
ZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9ja0NvbXBsZXRpb25IYW5kbGVy
ID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShwRnVu
Y3Rpb24sIG9wdGlvbnMsIF4oQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBQaXBlbGluZVN0YXRlLCBD
b21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJyb3Ip
IHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24sIHBF
cnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZShjb25zdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRv
ciwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIF9fYmxvY2sgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNv
bXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRp
b25IYW5kbGVyOworCisgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUocERlc2NyaXB0b3IsIG9w
dGlvbnMsIF4oQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBQaXBlbGluZVN0YXRlLCBDb21wdXRlUGlw
ZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tD
b21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24sIHBFcnJvcik7IH0p
OworfQorCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjppc0hlYWRsZXNzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaGVhZGxlc3MoKTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExf
SU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RGV2aWNlOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZWdpc3RyeUlECitfTVRMX0lOTElORSB1aW50
NjRfdCBNVEw6OkRldmljZTo6cmVnaXN0cnlJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVnaXN0cnlJ
RCkpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lO
TElORSBNVEw6OlNpemUgTVRMOjpEZXZpY2U6Om1heFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG1heFRocmVhZHNQZXJUaHJlYWRncm91cCkpOworfQorCisvLyBwcm9w
ZXJ0eTogbG93UG93ZXIKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6Omxvd1Bvd2VyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGlzTG93UG93ZXIpKTsKK30KKworLy8gcHJvcGVydHk6IGhlYWRsZXNzCitf
TVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpoZWFkbGVzcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0hl
YWRsZXNzKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZW1vdmFibGUKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpEZXZpY2U6OnJlbW92YWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1JlbW92YWJsZSkpOworfQor
CisvLyBwcm9wZXJ0eTogaGFzVW5pZmllZE1lbW9yeQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRl
dmljZTo6aGFzVW5pZmllZE1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChoYXNVbmlmaWVkTWVtb3J5KSk7
Cit9CisKKy8vIHByb3BlcnR5OiByZWNvbW1lbmRlZE1heFdvcmtpbmdTZXRTaXplCitfTVRMX0lO
TElORSB1aW50NjRfdCBNVEw6OkRldmljZTo6cmVjb21tZW5kZWRNYXhXb3JraW5nU2V0U2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwocmVjb21tZW5kZWRNYXhXb3JraW5nU2V0U2l6ZSkpOworfQorCisv
LyBwcm9wZXJ0eTogbG9jYXRpb24KK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlTG9jYXRpb24gTVRM
OjpEZXZpY2U6OmxvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZUxvY2F0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxvY2F0aW9u
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBsb2NhdGlvbk51bWJlcgorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6RGV2aWNlOjpsb2NhdGlvbk51bWJlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxvY2F0aW9uTnVtYmVyKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUcmFuc2ZlclJhdGUKK19N
VExfSU5MSU5FIHVpbnQ2NF90IE1UTDo6RGV2aWNlOjptYXhUcmFuc2ZlclJhdGUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQ2NF90Pih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG1heFRyYW5zZmVyUmF0ZSkpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGgyNFN0
ZW5jaWw4UGl4ZWxGb3JtYXRTdXBwb3J0ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6
OmRlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
c0RlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkKSk7Cit9CisKKy8vIHByb3BlcnR5
OiByZWFkV3JpdGVUZXh0dXJlU3VwcG9ydAorX01UTF9JTkxJTkUgTVRMOjpSZWFkV3JpdGVUZXh0
dXJlVGllciBNVEw6OkRldmljZTo6cmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVhZFdyaXRlVGV4dHVyZVRpZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQKK19NVExfSU5MSU5FIE1UTDo6QXJn
dW1lbnRCdWZmZXJzVGllciBNVEw6OkRldmljZTo6YXJndW1lbnRCdWZmZXJzU3VwcG9ydCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcmd1bWVudEJ1ZmZl
cnNUaWVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQpKTsK
K30KKworLy8gcHJvcGVydHk6IHJhc3Rlck9yZGVyR3JvdXBzU3VwcG9ydGVkCitfTVRMX0lOTElO
RSBib29sIE1UTDo6RGV2aWNlOjpyYXN0ZXJPcmRlckdyb3Vwc1N1cHBvcnRlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYXJlUmFzdGVyT3JkZXJHcm91cHNTdXBwb3J0ZWQpKTsKK30KKworLy8gcHJvcGVy
dHk6IHN1cHBvcnRzMzJCaXRGbG9hdEZpbHRlcmluZworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRl
dmljZTo6c3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBw
b3J0czMyQml0RmxvYXRGaWx0ZXJpbmcpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzMzJC
aXRNU0FBCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0czMyQml0TVNBQSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHMzMkJpdE1TQUEpKTsKK30KKworLy8gcHJvcGVydHk6
IHN1cHBvcnRzUXVlcnlUZXh0dXJlTE9ECitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpz
dXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNRdWVyeVRl
eHR1cmVMT0QpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzQkNUZXh0dXJlQ29tcHJlc3Np
b24KK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzQkNUZXh0dXJlQ29tcHJl
c3Npb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzQkNUZXh0dXJlQ29tcHJlc3Npb24pKTsK
K30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzUHVsbE1vZGVsSW50ZXJwb2xhdGlvbgorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1B1bGxNb2RlbEludGVycG9sYXRpb24pKTsKK30KKwor
Ly8gcHJvcGVydHk6IGJhcnljZW50cmljQ29vcmRzU3VwcG9ydGVkCitfTVRMX0lOTElORSBib29s
IE1UTDo6RGV2aWNlOjpiYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYXJlQmFyeWNlbnRyaWNDb29yZHNTdXBwb3J0ZWQpKTsKK30KKworLy8gcHJvcGVydHk6IHN1
cHBvcnRzU2hhZGVyQmFyeWNlbnRyaWNDb29yZGluYXRlcworX01UTF9JTkxJTkUgYm9vbCBNVEw6
OkRldmljZTo6c3VwcG9ydHNTaGFkZXJCYXJ5Y2VudHJpY0Nvb3JkaW5hdGVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdXBwb3J0c1NoYWRlckJhcnljZW50cmljQ29vcmRpbmF0ZXMpKTsKK30KKworLy8g
cHJvcGVydHk6IGN1cnJlbnRBbGxvY2F0ZWRTaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpEZXZpY2U6OmN1cnJlbnRBbGxvY2F0ZWRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
Y3VycmVudEFsbG9jYXRlZFNpemUpKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21tYW5kUXVldWUK
K19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZFF1ZXVlKiBNVEw6OkRldmljZTo6bmV3Q29tbWFuZFF1
ZXVlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRRdWV1
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tbWFuZFF1ZXVlKSk7Cit9CisKKy8vIG1l
dGhvZDogbmV3Q29tbWFuZFF1ZXVlV2l0aE1heENvbW1hbmRCdWZmZXJDb3VudDoKK19NVExfSU5M
SU5FIE1UTDo6Q29tbWFuZFF1ZXVlKiBNVEw6OkRldmljZTo6bmV3Q29tbWFuZFF1ZXVlKE5TOjpV
SW50ZWdlciBtYXhDb21tYW5kQnVmZmVyQ291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpDb21tYW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Nv
bW1hbmRRdWV1ZVdpdGhNYXhDb21tYW5kQnVmZmVyQ291bnRfKSwgbWF4Q29tbWFuZEJ1ZmZlckNv
dW50KTsKK30KKworLy8gbWV0aG9kOiBoZWFwVGV4dHVyZVNpemVBbmRBbGlnbldpdGhEZXNjcmlw
dG9yOgorX01UTF9JTkxJTkUgTVRMOjpTaXplQW5kQWxpZ24gTVRMOjpEZXZpY2U6OmhlYXBUZXh0
dXJlU2l6ZUFuZEFsaWduKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIGRlc2MpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplQW5kQWxpZ24+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaGVhcFRleHR1cmVTaXplQW5kQWxpZ25XaXRoRGVzY3JpcHRvcl8pLCBk
ZXNjKTsKK30KKworLy8gbWV0aG9kOiBoZWFwQnVmZmVyU2l6ZUFuZEFsaWduV2l0aExlbmd0aDpv
cHRpb25zOgorX01UTF9JTkxJTkUgTVRMOjpTaXplQW5kQWxpZ24gTVRMOjpEZXZpY2U6OmhlYXBC
dWZmZXJTaXplQW5kQWxpZ24oTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlv
bnMgb3B0aW9ucykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemVB
bmRBbGlnbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChoZWFwQnVmZmVyU2l6ZUFuZEFsaWduV2l0
aExlbmd0aF9vcHRpb25zXyksIGxlbmd0aCwgb3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogbmV3
SGVhcFdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpIZWFwKiBNVEw6OkRldmljZTo6
bmV3SGVhcChjb25zdCBNVEw6OkhlYXBEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGVhcCo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3SGVhcFdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6
IG5ld0J1ZmZlcldpdGhMZW5ndGg6b3B0aW9uczoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBN
VEw6OkRldmljZTo6bmV3QnVmZmVyKE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VP
cHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpC
dWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9u
c18pLCBsZW5ndGgsIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IG5ld0J1ZmZlcldpdGhCeXRl
czpsZW5ndGg6b3B0aW9uczoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkRldmljZTo6
bmV3QnVmZmVyKGNvbnN0IHZvaWQqIHBvaW50ZXIsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6
UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhCeXRl
c19sZW5ndGhfb3B0aW9uc18pLCBwb2ludGVyLCBsZW5ndGgsIG9wdGlvbnMpOworfQorCisvLyBt
ZXRob2Q6IG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weTpsZW5ndGg6b3B0aW9uczpkZWFsbG9jYXRv
cjoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkRldmljZTo6bmV3QnVmZmVyKGNvbnN0
IHZvaWQqIHBvaW50ZXIsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25z
IG9wdGlvbnMsIGNvbnN0IHZvaWQgKF5kZWFsbG9jYXRvcikodm9pZCosIE5TOjpVSW50ZWdlcikp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weV9sZW5ndGhfb3B0aW9uc19k
ZWFsbG9jYXRvcl8pLCBwb2ludGVyLCBsZW5ndGgsIG9wdGlvbnMsIGRlYWxsb2NhdG9yKTsKK30K
KworLy8gbWV0aG9kOiBuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9yOgorX01UTF9J
TkxJTkUgTVRMOjpEZXB0aFN0ZW5jaWxTdGF0ZSogTVRMOjpEZXZpY2U6Om5ld0RlcHRoU3RlbmNp
bFN0YXRlKGNvbnN0IE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRlcHRoU3RlbmNpbFN0YXRlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9y
XyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRv
cjoKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpEZXZpY2U6Om5ld1RleHR1cmUoY29u
c3QgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1RleHR1cmVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBu
ZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6aW9zdXJmYWNlOnBsYW5lOgorX01UTF9JTkxJTkUgTVRM
OjpUZXh0dXJlKiBNVEw6OkRldmljZTo6bmV3VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmVEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBJT1N1cmZhY2VSZWYgaW9zdXJmYWNlLCBOUzo6VUlu
dGVnZXIgcGxhbmUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0
dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3JfaW9z
dXJmYWNlX3BsYW5lXyksIGRlc2NyaXB0b3IsIGlvc3VyZmFjZSwgcGxhbmUpOworfQorCisvLyBt
ZXRob2Q6IG5ld1NoYXJlZFRleHR1cmVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6
VGV4dHVyZSogTVRMOjpEZXZpY2U6Om5ld1NoYXJlZFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJl
RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1NoYXJlZFRleHR1cmVX
aXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRU
ZXh0dXJlV2l0aEhhbmRsZToKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpEZXZpY2U6
Om5ld1NoYXJlZFRleHR1cmUoY29uc3QgTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlKiBzaGFyZWRI
YW5kbGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdTaGFyZWRUZXh0dXJlV2l0aEhhbmRsZV8pLCBzaGFy
ZWRIYW5kbGUpOworfQorCisvLyBtZXRob2Q6IG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlwdG9y
OgorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdTYW1wbGVy
U3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNhbXBsZXJTdGF0ZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7
Cit9CisKKy8vIG1ldGhvZDogbmV3RGVmYXVsdExpYnJhcnkKK19NVExfSU5MSU5FIE1UTDo6TGli
cmFyeSogTVRMOjpEZXZpY2U6Om5ld0RlZmF1bHRMaWJyYXJ5KCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d0RlZmF1bHRMaWJyYXJ5KSk7Cit9CisKKy8vIG1ldGhvZDogbmV3RGVmYXVsdExpYnJhcnlXaXRo
QnVuZGxlOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3
RGVmYXVsdExpYnJhcnkoY29uc3QgTlM6OkJ1bmRsZSogYnVuZGxlLCBOUzo6RXJyb3IqKiBlcnJv
cikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld0RlZmF1bHRMaWJyYXJ5V2l0aEJ1bmRsZV9lcnJvcl8pLCBi
dW5kbGUsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdMaWJyYXJ5V2l0aEZpbGU6ZXJyb3I6
CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0
IE5TOjpTdHJpbmcqIGZpbGVwYXRoLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0xpYnJhcnlXaXRoRmlsZV9lcnJvcl8pLCBmaWxlcGF0aCwgZXJyb3IpOworfQorCisvLyBt
ZXRob2Q6IG5ld0xpYnJhcnlXaXRoVVJMOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5
KiBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioq
IGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlicmFyeSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhVUkxfZXJyb3JfKSwgdXJsLCBl
cnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3TGlicmFyeVdpdGhEYXRhOmVycm9yOgorX01UTF9J
TkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBkaXNwYXRj
aF9kYXRhX3QgZGF0YSwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdMaWJy
YXJ5V2l0aERhdGFfZXJyb3JfKSwgZGF0YSwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld0xp
YnJhcnlXaXRoU291cmNlOm9wdGlvbnM6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkq
IE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IE5TOjpTdHJpbmcqIHNvdXJjZSwgY29uc3Qg
TVRMOjpDb21waWxlT3B0aW9ucyogb3B0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdMaWJyYXJ5V2l0aFNvdXJjZV9vcHRpb25zX2Vycm9yXyksIHNvdXJjZSwgb3B0
aW9ucywgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld0xpYnJhcnlXaXRoU291cmNlOm9wdGlv
bnM6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdM
aWJyYXJ5KGNvbnN0IE5TOjpTdHJpbmcqIHNvdXJjZSwgY29uc3QgTVRMOjpDb21waWxlT3B0aW9u
cyogb3B0aW9ucywgY29uc3QgTVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG5ld0xpYnJhcnlXaXRoU291cmNlX29wdGlvbnNfY29tcGxldGlvbkhhbmRs
ZXJfKSwgc291cmNlLCBvcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhv
ZDogbmV3TGlicmFyeVdpdGhTdGl0Y2hlZERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBN
VEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IE1UTDo6U3RpdGNoZWRM
aWJyYXJ5RGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlw
dG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3TGlicmFyeVdpdGhTdGl0Y2hlZERlc2Ny
aXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpu
ZXdMaWJyYXJ5KGNvbnN0IE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogZGVzY3JpcHRv
ciwgY29uc3QgTVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0xpYnJhcnlXaXRoU3RpdGNoZWREZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXyks
IGRlc2NyaXB0b3IsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OlJl
bmRlclBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNv
bnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3Iq
KiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBp
cGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1l
dGhvZDogbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVj
dGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogTVRMOjpE
ZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3Qg
TVRMOjpBdXRvcmVsZWFzZWRSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5T
OjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UmVuZGVyUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8pLCBkZXNj
cmlwdG9yLCBvcHRpb25zLCByZWZsZWN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBN
VEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgTVRMOjpOZXdS
ZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8pLCBk
ZXNjcmlwdG9yLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0
IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5l
T3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZs
ZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVs
aW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXyksIGRlc2Ny
aXB0b3IsIG9wdGlvbnMsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdD
b21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6
Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZShjb25zdCBNVEw6OkZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE5TOjpFcnJvcioqIGVycm9y
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBpcGVsaW5l
U3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0
aEZ1bmN0aW9uX2Vycm9yXyksIGNvbXB1dGVGdW5jdGlvbiwgZXJyb3IpOworfQorCisvLyBtZXRo
b2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOm9wdGlvbnM6cmVmbGVjdGlv
bjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2
aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OkZ1bmN0aW9uKiBjb21wdXRl
RnVuY3Rpb24sIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVs
ZWFzZWRDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBl
cnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQaXBl
bGluZVN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZVdpdGhGdW5jdGlvbl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfKSwgY29tcHV0ZUZ1bmN0aW9u
LCBvcHRpb25zLCByZWZsZWN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0
ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb246Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OkZ1
bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5l
U3RhdGVXaXRoRnVuY3Rpb25fY29tcGxldGlvbkhhbmRsZXJfKSwgY29tcHV0ZUZ1bmN0aW9uLCBj
b21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVXaXRoRnVuY3Rpb246b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6RnVuY3Rp
b24qIGNvbXB1dGVGdW5jdGlvbiwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBN
VEw6Ok5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxl
ciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25f
b3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8pLCBjb21wdXRlRnVuY3Rpb24sIG9wdGlvbnMsIGNv
bXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVjdGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1U
TDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZShjb25zdCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1U
TDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRDb21wdXRl
UGlwZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlw
dG9yX29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBvcHRpb25zLCByZWZs
ZWN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoRGVzY3JpcHRvcjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlv
bnMsIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBs
ZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdp
dGhEZXNjcmlwdG9yX29wdGlvbnNfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgb3B0
aW9ucywgY29tcGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0ZlbmNlCitfTVRM
X0lOTElORSBNVEw6OkZlbmNlKiBNVEw6OkRldmljZTo6bmV3RmVuY2UoKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RmVuY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0ZlbmNlKSk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNGZWF0dXJlU2V0OgorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNGZWF0dXJlU2V0KE1UTDo6RmVhdHVyZVNl
dCBmZWF0dXJlU2V0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzRmVhdHVyZVNldF8pLCBmZWF0dXJlU2V0
KTsKK30KKworLy8gbWV0aG9kOiBzdXBwb3J0c0ZhbWlseToKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpEZXZpY2U6OnN1cHBvcnRzRmFtaWx5KE1UTDo6R1BVRmFtaWx5IGdwdUZhbWlseSkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzdXBwb3J0c0ZhbWlseV8pLCBncHVGYW1pbHkpOworfQorCisvLyBtZXRob2Q6IHN1cHBv
cnRzVGV4dHVyZVNhbXBsZUNvdW50OgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3Vw
cG9ydHNUZXh0dXJlU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHN1cHBvcnRzVGV4dHVyZVNhbXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8g
bWV0aG9kOiBtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9ybWF0OgorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2aWNlOjptaW5pbXVtTGluZWFyVGV4dHVyZUFs
aWdubWVudEZvclBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgZm9ybWF0KQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9ybWF0XyksIGZvcm1h
dCk7Cit9CisKKy8vIG1ldGhvZDogbWluaW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhl
bEZvcm1hdDoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6bWluaW11bVRl
eHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGZvcm1h
dCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobWluaW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZv
cm1hdF8pLCBmb3JtYXQpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3RhdGVX
aXRoVGlsZURlc2NyaXB0b3I6b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOgorX01UTF9JTkxJTkUg
TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVT
dGF0ZShjb25zdCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3Is
IE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVz
Y3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfKSwgZGVzY3JpcHRvciwgb3B0aW9ucywg
cmVmbGVjdGlvbiwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVXaXRoVGlsZURlc2NyaXB0b3I6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0
aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0
aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVsaW5l
U3RhdGVXaXRoVGlsZURlc2NyaXB0b3Jfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8pLCBkZXNj
cmlwdG9yLCBvcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIHByb3BlcnR5OiBt
YXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
RGV2aWNlOjptYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG1heFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhBcmd1
bWVudEJ1ZmZlclNhbXBsZXJDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2
aWNlOjptYXhBcmd1bWVudEJ1ZmZlclNhbXBsZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG1heEFyZ3VtZW50QnVmZmVyU2FtcGxlckNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBwcm9n
cmFtbWFibGVTYW1wbGVQb3NpdGlvbnNTdXBwb3J0ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpE
ZXZpY2U6OnByb2dyYW1tYWJsZVNhbXBsZVBvc2l0aW9uc1N1cHBvcnRlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoYXJlUHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRpb25zU3VwcG9ydGVkKSk7Cit9CisKKy8v
IG1ldGhvZDogZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9uczpjb3VudDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpEZXZpY2U6OmdldERlZmF1bHRTYW1wbGVQb3NpdGlvbnMoTVRMOjpTYW1wbGVQb3Np
dGlvbiogcG9zaXRpb25zLCBOUzo6VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdldERlZmF1bHRTYW1wbGVQb3Np
dGlvbnNfY291bnRfKSwgcG9zaXRpb25zLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogbmV3QXJn
dW1lbnRFbmNvZGVyV2l0aEFyZ3VtZW50czoKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRFbmNv
ZGVyKiBNVEw6OkRldmljZTo6bmV3QXJndW1lbnRFbmNvZGVyKGNvbnN0IE5TOjpBcnJheSogYXJn
dW1lbnRzKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRF
bmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJn
dW1lbnRzXyksIGFyZ3VtZW50cyk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNSYXN0ZXJpemF0
aW9uUmF0ZU1hcFdpdGhMYXllckNvdW50OgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6
c3VwcG9ydHNSYXN0ZXJpemF0aW9uUmF0ZU1hcChOUzo6VUludGVnZXIgbGF5ZXJDb3VudCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdXBwb3J0c1Jhc3Rlcml6YXRpb25SYXRlTWFwV2l0aExheWVyQ291bnRfKSwgbGF5
ZXJDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmFzdGVyaXphdGlvblJhdGVNYXBXaXRoRGVz
Y3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXAqIE1UTDo6RGV2
aWNlOjpuZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcChjb25zdCBNVEw6OlJhc3Rlcml6YXRpb25SYXRl
TWFwRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQor
CisvLyBtZXRob2Q6IG5ld0luZGlyZWN0Q29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yOm1heENv
bW1hbmRDb3VudDpvcHRpb25zOgorX01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZm
ZXIqIE1UTDo6RGV2aWNlOjpuZXdJbmRpcmVjdENvbW1hbmRCdWZmZXIoY29uc3QgTVRMOjpJbmRp
cmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6VUludGVnZXIgbWF4
Q291bnQsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG5ld0luZGlyZWN0Q29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yX21heENvbW1h
bmRDb3VudF9vcHRpb25zXyksIGRlc2NyaXB0b3IsIG1heENvdW50LCBvcHRpb25zKTsKK30KKwor
Ly8gbWV0aG9kOiBuZXdFdmVudAorX01UTF9JTkxJTkUgTVRMOjpFdmVudCogTVRMOjpEZXZpY2U6
Om5ld0V2ZW50KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkV2ZW50
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdFdmVudCkpOworfQorCisvLyBtZXRob2Q6IG5l
d1NoYXJlZEV2ZW50CitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50KiBNVEw6OkRldmljZTo6
bmV3U2hhcmVkRXZlbnQoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
U2hhcmVkRXZlbnQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1NoYXJlZEV2ZW50KSk7Cit9
CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlOgorX01UTF9JTkxJTkUgTVRM
OjpTaGFyZWRFdmVudCogTVRMOjpEZXZpY2U6Om5ld1NoYXJlZEV2ZW50KGNvbnN0IE1UTDo6U2hh
cmVkRXZlbnRIYW5kbGUqIHNoYXJlZEV2ZW50SGFuZGxlKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6U2hhcmVkRXZlbnQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1NoYXJlZEV2ZW50V2l0aEhhbmRsZV8pLCBzaGFyZWRFdmVudEhhbmRsZSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBwZWVyR3JvdXBJRAorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpEZXZpY2U6OnBl
ZXJHcm91cElEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50
NjRfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwZWVyR3JvdXBJRCkpOworfQorCisvLyBwcm9w
ZXJ0eTogcGVlckluZGV4CitfTVRMX0lOTElORSB1aW50MzJfdCBNVEw6OkRldmljZTo6cGVlcklu
ZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50MzJfdD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChwZWVySW5kZXgpKTsKK30KKworLy8gcHJvcGVydHk6IHBl
ZXJDb3VudAorX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpEZXZpY2U6OnBlZXJDb3VudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDMyX3Q+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocGVlckNvdW50KSk7Cit9CisKKy8vIG1ldGhvZDogc3BhcnNlVGlsZVNp
emVXaXRoVGV4dHVyZVR5cGU6cGl4ZWxGb3JtYXQ6c2FtcGxlQ291bnQ6CitfTVRMX0lOTElORSBN
VEw6OlNpemUgTVRMOjpEZXZpY2U6OnNwYXJzZVRpbGVTaXplKE1UTDo6VGV4dHVyZVR5cGUgdGV4
dHVyZVR5cGUsIE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciBzYW1w
bGVDb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemU+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc3BhcnNlVGlsZVNpemVXaXRoVGV4dHVyZVR5cGVfcGl4ZWxG
b3JtYXRfc2FtcGxlQ291bnRfKSwgdGV4dHVyZVR5cGUsIHBpeGVsRm9ybWF0LCBzYW1wbGVDb3Vu
dCk7Cit9CisKKy8vIHByb3BlcnR5OiBzcGFyc2VUaWxlU2l6ZUluQnl0ZXMKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6c3BhcnNlVGlsZVNpemVJbkJ5dGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc3BhcnNlVGlsZVNpemVJbkJ5dGVzKSk7Cit9CisKKy8vIG1ldGhvZDog
Y29udmVydFNwYXJzZVBpeGVsUmVnaW9uczp0b1RpbGVSZWdpb25zOndpdGhUaWxlU2l6ZTphbGln
bm1lbnRNb2RlOm51bVJlZ2lvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpjb252
ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zKGNvbnN0IE1UTDo6UmVnaW9uKiBwaXhlbFJlZ2lvbnMsIE1U
TDo6UmVnaW9uKiB0aWxlUmVnaW9ucywgTVRMOjpTaXplIHRpbGVTaXplLCBNVEw6OlNwYXJzZVRl
eHR1cmVSZWdpb25BbGlnbm1lbnRNb2RlIG1vZGUsIE5TOjpVSW50ZWdlciBudW1SZWdpb25zKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zX3RvVGlsZVJlZ2lvbnNfd2l0aFRpbGVTaXplX2FsaWdu
bWVudE1vZGVfbnVtUmVnaW9uc18pLCBwaXhlbFJlZ2lvbnMsIHRpbGVSZWdpb25zLCB0aWxlU2l6
ZSwgbW9kZSwgbnVtUmVnaW9ucyk7Cit9CisKKy8vIG1ldGhvZDogY29udmVydFNwYXJzZVRpbGVS
ZWdpb25zOnRvUGl4ZWxSZWdpb25zOndpdGhUaWxlU2l6ZTpudW1SZWdpb25zOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkRldmljZTo6Y29udmVydFNwYXJzZVRpbGVSZWdpb25zKGNvbnN0IE1UTDo6
UmVnaW9uKiB0aWxlUmVnaW9ucywgTVRMOjpSZWdpb24qIHBpeGVsUmVnaW9ucywgTVRMOjpTaXpl
IHRpbGVTaXplLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29udmVydFNwYXJzZVRpbGVSZWdp
b25zX3RvUGl4ZWxSZWdpb25zX3dpdGhUaWxlU2l6ZV9udW1SZWdpb25zXyksIHRpbGVSZWdpb25z
LCBwaXhlbFJlZ2lvbnMsIHRpbGVTaXplLCBudW1SZWdpb25zKTsKK30KKworLy8gcHJvcGVydHk6
IG1heEJ1ZmZlckxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2aWNlOjpt
YXhCdWZmZXJMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhCdWZmZXJMZW5ndGgpKTsK
K30KKworLy8gcHJvcGVydHk6IGNvdW50ZXJTZXRzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1U
TDo6RGV2aWNlOjpjb3VudGVyU2V0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3VudGVyU2V0cykp
OworfQorCisvLyBtZXRob2Q6IG5ld0NvdW50ZXJTYW1wbGVCdWZmZXJXaXRoRGVzY3JpcHRvcjpl
cnJvcjoKK19NVExfSU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpEZXZpY2U6
Om5ld0NvdW50ZXJTYW1wbGVCdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdDb3VudGVyU2FtcGxlQnVmZmVyV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwg
ZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IHNhbXBsZVRpbWVzdGFtcHM6Z3B1
VGltZXN0YW1wOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6c2FtcGxlVGltZXN0YW1w
cyhNVEw6OlRpbWVzdGFtcCogY3B1VGltZXN0YW1wLCBNVEw6OlRpbWVzdGFtcCogZ3B1VGltZXN0
YW1wKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzYW1wbGVUaW1lc3RhbXBzX2dwdVRpbWVzdGFtcF8pLCBjcHVUaW1lc3RhbXAsIGdwdVRp
bWVzdGFtcCk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNDb3VudGVyU2FtcGxpbmc6CitfTVRM
X0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c0NvdW50ZXJTYW1wbGluZyhNVEw6OkNv
dW50ZXJTYW1wbGluZ1BvaW50IHNhbXBsaW5nUG9pbnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNDb3Vu
dGVyU2FtcGxpbmdfKSwgc2FtcGxpbmdQb2ludCk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNW
ZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQ6CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpz
dXBwb3J0c1ZlcnRleEFtcGxpZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgY291bnQpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc3VwcG9ydHNWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfKSwgY291bnQpOworfQorCisv
LyBwcm9wZXJ0eTogc3VwcG9ydHNEeW5hbWljTGlicmFyaWVzCitfTVRMX0lOTElORSBib29sIE1U
TDo6RGV2aWNlOjpzdXBwb3J0c0R5bmFtaWNMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1
cHBvcnRzRHluYW1pY0xpYnJhcmllcykpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNSZW5k
ZXJEeW5hbWljTGlicmFyaWVzCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0
c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzUmVuZGVy
RHluYW1pY0xpYnJhcmllcykpOworfQorCisvLyBtZXRob2Q6IG5ld0R5bmFtaWNMaWJyYXJ5OmVy
cm9yOgorX01UTF9JTkxJTkUgTVRMOjpEeW5hbWljTGlicmFyeSogTVRMOjpEZXZpY2U6Om5ld0R5
bmFtaWNMaWJyYXJ5KGNvbnN0IE1UTDo6TGlicmFyeSogbGlicmFyeSwgTlM6OkVycm9yKiogZXJy
b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEeW5hbWljTGlicmFy
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RHluYW1pY0xpYnJhcnlfZXJyb3JfKSwgbGli
cmFyeSwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld0R5bmFtaWNMaWJyYXJ5V2l0aFVSTDpl
cnJvcjoKK19NVExfSU5MSU5FIE1UTDo6RHluYW1pY0xpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdE
eW5hbWljTGlicmFyeShjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioqIGVycm9yKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RHluYW1pY0xpYnJhcnkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld0R5bmFtaWNMaWJyYXJ5V2l0aFVSTF9lcnJvcl8pLCB1cmws
IGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdCaW5hcnlBcmNoaXZlV2l0aERlc2NyaXB0b3I6
ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkJpbmFyeUFyY2hpdmUqIE1UTDo6RGV2aWNlOjpuZXdC
aW5hcnlBcmNoaXZlKGNvbnN0IE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIGRlc2NyaXB0
b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6QmluYXJ5QXJjaGl2ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QmluYXJ5QXJj
aGl2ZVdpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8g
cHJvcGVydHk6IHN1cHBvcnRzUmF5dHJhY2luZworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmlj
ZTo6c3VwcG9ydHNSYXl0cmFjaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1JheXRyYWNp
bmcpKTsKK30KKworLy8gbWV0aG9kOiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplc1dpdGhEZXNj
cmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplcyBNVEw6
OkRldmljZTo6YWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMoY29uc3QgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXM+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXNXaXRoRGVzY3JpcHRvcl8pLCBk
ZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRo
U2l6ZToKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBNVEw6OkRldmlj
ZTo6bmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlKE5TOjpVSW50ZWdlciBzaXplKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRoU2l6ZV8pLCBz
aXplKTsKK30KKworLy8gbWV0aG9kOiBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRoRGVzY3Jp
cHRvcjoKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBNVEw6OkRldmlj
ZTo6bmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9
CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnMKK19NVExfSU5MSU5FIGJv
b2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzRnVuY3Rpb25Qb2ludGVycygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0
c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNl
OjpzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyKSk7Cit9CisKKy8vIHByb3BlcnR5OiBz
dXBwb3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNl
OjpzdXBwb3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0
c1JheXRyYWNpbmdGcm9tUmVuZGVyKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c1ByaW1p
dGl2ZU1vdGlvbkJsdXIKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUHJp
bWl0aXZlTW90aW9uQmx1cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNQcmltaXRpdmVNb3Rp
b25CbHVyKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMRHJhd2FibGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTERyYXdhYmxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzQwOTc2MDQxMzdmZTMwYmVlNzBiMmQx
NTVkMzE3YzYyYmI5NjljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTERyYXdhYmxlLmhwcApAQCAtMCwwICsxLDk5IEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExE
cmF3YWJsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlk
Z2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKworbmFtZXNwYWNlIE1UTAorewordXNpbmcg
RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyID0gdm9pZCAoXikoY2xhc3MgRHJhd2FibGUqKTsKKwor
dXNpbmcgRHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZv
aWQoY2xhc3MgRHJhd2FibGUqKT47CisKK2NsYXNzIERyYXdhYmxlIDogcHVibGljIE5TOjpSZWZl
cmVuY2luZzxEcmF3YWJsZT4KK3sKK3B1YmxpYzoKKyAgICB2b2lkICAgICAgICAgICBhZGRQcmVz
ZW50ZWRIYW5kbGVyKGNvbnN0IE1UTDo6RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyRnVuY3Rpb24m
IGZ1bmN0aW9uKTsKKworICAgIHZvaWQgICAgICAgICAgIHByZXNlbnQoKTsKKworICAgIHZvaWQg
ICAgICAgICAgIHByZXNlbnRBdFRpbWUoQ0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9uVGltZSk7
CisKKyAgICB2b2lkICAgICAgICAgICBwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb24oQ0ZUaW1l
SW50ZXJ2YWwgZHVyYXRpb24pOworCisgICAgdm9pZCAgICAgICAgICAgYWRkUHJlc2VudGVkSGFu
ZGxlcihjb25zdCBNVEw6OkRyYXdhYmxlUHJlc2VudGVkSGFuZGxlciBibG9jayk7CisKKyAgICBD
RlRpbWVJbnRlcnZhbCBwcmVzZW50ZWRUaW1lKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIg
ICBkcmF3YWJsZUlEKCkgY29uc3Q7Cit9OworCit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpE
cmF3YWJsZTo6YWRkUHJlc2VudGVkSGFuZGxlcihjb25zdCBNVEw6OkRyYXdhYmxlUHJlc2VudGVk
SGFuZGxlckZ1bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIERyYXdhYmxlUHJlc2Vu
dGVkSGFuZGxlckZ1bmN0aW9uIGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIGFkZFBy
ZXNlbnRlZEhhbmRsZXIoXihEcmF3YWJsZSogcERyYXdhYmxlKSB7IGJsb2NrRnVuY3Rpb24ocERy
YXdhYmxlKTsgfSk7Cit9CisKKy8vIG1ldGhvZDogcHJlc2VudAorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkRyYXdhYmxlOjpwcmVzZW50KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudCkpOworfQorCisvLyBtZXRob2Q6IHByZXNl
bnRBdFRpbWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6OnByZXNlbnRBdFRpbWUo
Q0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9uVGltZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudEF0VGltZV8pLCBwcmVzZW50
YXRpb25UaW1lKTsKK30KKworLy8gbWV0aG9kOiBwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb246
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6OnByZXNlbnRBZnRlck1pbmltdW1EdXJh
dGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudEFmdGVyTWluaW11bUR1cmF0aW9u
XyksIGR1cmF0aW9uKTsKK30KKworLy8gbWV0aG9kOiBhZGRQcmVzZW50ZWRIYW5kbGVyOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkRyYXdhYmxlOjphZGRQcmVzZW50ZWRIYW5kbGVyKGNvbnN0IE1U
TDo6RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyIGJsb2NrKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGRQcmVzZW50ZWRIYW5kbGVyXyks
IGJsb2NrKTsKK30KKworLy8gcHJvcGVydHk6IHByZXNlbnRlZFRpbWUKK19NVExfSU5MSU5FIENG
VGltZUludGVydmFsIE1UTDo6RHJhd2FibGU6OnByZXNlbnRlZFRpbWUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPENGVGltZUludGVydmFsPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHByZXNlbnRlZFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGRyYXdhYmxlSUQK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRyYXdhYmxlOjpkcmF3YWJsZUlEKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZHJhd2FibGVJRCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFtaWNMaWJyYXJ5LmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEeW5hbWljTGlicmFyeS5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDg5Yjk5OTBkNWY2YmYxNzk0NzJlYjFhMzQ0MjYzM2QwOTQxZGI3OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEeW5h
bWljTGlicmFyeS5ocHAKQEAgLTAsMCArMSw4MiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRHluYW1pY0xpYnJhcnkuaHBw
CisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNp
bmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIER5bmFt
aWNMaWJyYXJ5RXJyb3IpIHsKKyAgICBEeW5hbWljTGlicmFyeUVycm9yTm9uZSA9IDAsCisgICAg
RHluYW1pY0xpYnJhcnlFcnJvckludmFsaWRGaWxlID0gMSwKKyAgICBEeW5hbWljTGlicmFyeUVy
cm9yQ29tcGlsYXRpb25GYWlsdXJlID0gMiwKKyAgICBEeW5hbWljTGlicmFyeUVycm9yVW5yZXNv
bHZlZEluc3RhbGxOYW1lID0gMywKKyAgICBEeW5hbWljTGlicmFyeUVycm9yRGVwZW5kZW5jeUxv
YWRGYWlsdXJlID0gNCwKKyAgICBEeW5hbWljTGlicmFyeUVycm9yVW5zdXBwb3J0ZWQgPSA1LAor
fTsKKworY2xhc3MgRHluYW1pY0xpYnJhcnkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPER5bmFt
aWNMaWJyYXJ5PgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKwor
ICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgIGlu
c3RhbGxOYW1lKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgIHNlcmlhbGl6ZVRvVVJMKGNv
bnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiogZXJyb3IpOworfTsKKworfQorCisvLyBwcm9w
ZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RHluYW1pY0xpYnJhcnk6
OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6RHluYW1pY0xpYnJhcnk6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVs
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5M
SU5FIE1UTDo6RGV2aWNlKiBNVEw6OkR5bmFtaWNMaWJyYXJ5OjpkZXZpY2UoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbGxOYW1lCitfTVRM
X0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkR5bmFtaWNMaWJyYXJ5OjppbnN0YWxsTmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaW5zdGFsbE5hbWUpKTsKK30KKworLy8gbWV0aG9kOiBzZXJpYWxp
emVUb1VSTDplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEeW5hbWljTGlicmFyeTo6c2Vy
aWFsaXplVG9VUkwoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNlcmlhbGl6ZVRvVVJMX2Vycm9yXyksIHVybCwgZXJyb3IpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEV2ZW50LmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExFdmVudC5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE5
ZmFjMjM1MThmODZhNTFlNDIwYTQ5ODQ2NzY0YzVlMGRmNThlZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExFdmVudC5ocHAKQEAgLTAs
MCArMSwxNjMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIE1ldGFsL01UTEV2ZW50LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRXZlbnQu
aHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBFdmVudCA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8RXZlbnQ+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBjb25z
dDsKKworICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
IHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKK307CisKK2NsYXNzIFNoYXJlZEV2
ZW50TGlzdGVuZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFNoYXJlZEV2ZW50TGlzdGVuZXI+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFNoYXJlZEV2ZW50TGlzdGVuZXIqIGFsbG9j
KCk7CisKKyAgICBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIqICAgICAgICAgaW5pdCgpOworCisg
ICAgTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyKiAgICAgICAgIGluaXQoY29uc3QgZGlzcGF0Y2hf
cXVldWVfdCBkaXNwYXRjaFF1ZXVlKTsKKworICAgIGRpc3BhdGNoX3F1ZXVlX3QgICAgICAgICAg
ICAgICAgICBkaXNwYXRjaFF1ZXVlKCkgY29uc3Q7Cit9OworCit1c2luZyBTaGFyZWRFdmVudE5v
dGlmaWNhdGlvbkJsb2NrID0gdm9pZCAoXikoU2hhcmVkRXZlbnQqIHBFdmVudCwgc3RkOjp1aW50
NjRfdCB2YWx1ZSk7CisKK2NsYXNzIFNoYXJlZEV2ZW50IDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxTaGFyZWRFdmVudCwgRXZlbnQ+Cit7CitwdWJsaWM6CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgIG5vdGlmeUxpc3RlbmVyKGNvbnN0IGNsYXNzIFNoYXJlZEV2ZW50TGlzdGVuZXIqIGxp
c3RlbmVyLCB1aW50NjRfdCB2YWx1ZSwgY29uc3QgTVRMOjpTaGFyZWRFdmVudE5vdGlmaWNhdGlv
bkJsb2NrIGJsb2NrKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50SGFuZGxlKiBuZXdTaGFyZWRF
dmVudEhhbmRsZSgpOworCisgICAgdWludDY0X3QgICAgICAgICAgICAgICAgIHNpZ25hbGVkVmFs
dWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgc2V0U2lnbmFsZWRWYWx1
ZSh1aW50NjRfdCBzaWduYWxlZFZhbHVlKTsKK307CisKK2NsYXNzIFNoYXJlZEV2ZW50SGFuZGxl
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxTaGFyZWRFdmVudEhhbmRsZT4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgU2hhcmVkRXZlbnRIYW5kbGUqIGFsbG9jKCk7CisKKyAgICBjbGFz
cyBTaGFyZWRFdmVudEhhbmRsZSogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKK307CisKK3N0cnVjdCBTaGFyZWRFdmVu
dEhhbmRsZVByaXZhdGUKK3sKK30gX01UTF9QQUNLRUQ7CisKK30KKworLy8gcHJvcGVydHk6IGRl
dmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6RXZlbnQ6OmRldmljZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExf
SU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RXZlbnQ6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RXZlbnQ6OnNldExhYmVsKGNv
bnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIqIE1U
TDo6U2hhcmVkRXZlbnRMaXN0ZW5lcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI+KF9NVExfUFJJVkFURV9DTFMoTVRMU2hh
cmVkRXZlbnRMaXN0ZW5lcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6U2hhcmVkRXZlbnRMaXN0ZW5lciogTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyOjppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI+
KCk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhEaXNwYXRjaFF1ZXVlOgorX01UTF9JTkxJTkUg
TVRMOjpTaGFyZWRFdmVudExpc3RlbmVyKiBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI6OmluaXQo
Y29uc3QgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lcio+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoaW5pdFdpdGhEaXNwYXRjaFF1ZXVlXyksIGRpc3BhdGNoUXVldWUpOworfQorCisv
LyBwcm9wZXJ0eTogZGlzcGF0Y2hRdWV1ZQorX01UTF9JTkxJTkUgZGlzcGF0Y2hfcXVldWVfdCBN
VEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI6OmRpc3BhdGNoUXVldWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGRpc3BhdGNoX3F1ZXVlX3Q+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZGlzcGF0Y2hRdWV1ZSkpOworfQorCisvLyBtZXRob2Q6IG5vdGlmeUxpc3RlbmVy
OmF0VmFsdWU6YmxvY2s6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2hhcmVkRXZlbnQ6Om5vdGlm
eUxpc3RlbmVyKGNvbnN0IE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIHVpbnQ2
NF90IHZhbHVlLCBjb25zdCBNVEw6OlNoYXJlZEV2ZW50Tm90aWZpY2F0aW9uQmxvY2sgYmxvY2sp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5vdGlmeUxpc3RlbmVyX2F0VmFsdWVfYmxvY2tfKSwgbGlzdGVuZXIsIHZhbHVlLCBibG9jayk7
Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkRXZlbnRIYW5kbGUKK19NVExfSU5MSU5FIE1UTDo6
U2hhcmVkRXZlbnRIYW5kbGUqIE1UTDo6U2hhcmVkRXZlbnQ6Om5ld1NoYXJlZEV2ZW50SGFuZGxl
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNoYXJlZEV2ZW50SGFu
ZGxlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdTaGFyZWRFdmVudEhhbmRsZSkpOworfQor
CisvLyBwcm9wZXJ0eTogc2lnbmFsZWRWYWx1ZQorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpT
aGFyZWRFdmVudDo6c2lnbmFsZWRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2lnbmFsZWRWYWx1
ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2hhcmVkRXZlbnQ6OnNldFNpZ25hbGVk
VmFsdWUodWludDY0X3Qgc2lnbmFsZWRWYWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2lnbmFsZWRWYWx1ZV8pLCBzaWduYWxl
ZFZhbHVlKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
U2hhcmVkRXZlbnRIYW5kbGUqIE1UTDo6U2hhcmVkRXZlbnRIYW5kbGU6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTaGFyZWRFdmVudEhhbmRsZT4oX01UTF9Q
UklWQVRFX0NMUyhNVExTaGFyZWRFdmVudEhhbmRsZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6U2hhcmVkRXZlbnRIYW5kbGUqIE1UTDo6U2hhcmVkRXZlbnRIYW5k
bGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U2hhcmVkRXZl
bnRIYW5kbGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0
cmluZyogTVRMOjpTaGFyZWRFdmVudEhhbmRsZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxhYmVsKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMRmVuY2UuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEZlbmNlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzZlOTMxNGU1MzkzNWQyNDE2NjE5ZWNiMDMwMDM2
MDhmNGM4ZjVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEZlbmNlLmhwcApAQCAtMCwwICsxLDU3IEBACisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExGZW5jZS5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2lu
Y2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
LmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgRmVuY2UgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPEZlbmNlPgoreworcHVibGljOgorICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29u
c3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7Cit9OworCit9CisKKy8vIHByb3Bl
cnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkZlbmNlOjpkZXZpY2Uo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVs
CitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZlbmNlOjpsYWJlbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZlbmNlOjpzZXRM
YWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9u
Q29uc3RhbnRWYWx1ZXMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2MDg1NTRlYzQ2MmI3
YTU0YjI3ZTdmZGIyMzMzM2M3NjAxYTMzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAK
QEAgLTAsMCArMSw4NSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJN
VExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUg
Ik1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4K
KworI2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3Mg
RnVuY3Rpb25Db25zdGFudFZhbHVlcyA6IHB1YmxpYyBOUzo6Q29weWluZzxGdW5jdGlvbkNvbnN0
YW50VmFsdWVzPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvbkNvbnN0YW50
VmFsdWVzKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25Db25zdGFudFZhbHVlcyogICAg
ICAgIGluaXQoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudFZhbHVlKGNvbnN0IHZvaWQqIHZhbHVlLCBNVEw6OkRhdGFUeXBlIHR5cGUsIE5T
OjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnRWYWx1ZXMoY29uc3Qgdm9pZCogdmFsdWVzLCBNVEw6OkRhdGFUeXBl
IHR5cGUsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0Q29uc3RhbnRWYWx1ZShjb25zdCB2b2lkKiB2YWx1ZSwgTVRMOjpEYXRh
VHlwZSB0eXBlLCBjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBNVEw6
OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6YWxsb2M8TVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIE1UTDo6RnVuY3Rpb25Db25zdGFudFZh
bHVlczo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlv
bkNvbnN0YW50VmFsdWVzPigpOworfQorCisvLyBtZXRob2Q6IHNldENvbnN0YW50VmFsdWU6dHlw
ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6
OnNldENvbnN0YW50VmFsdWUoY29uc3Qgdm9pZCogdmFsdWUsIE1UTDo6RGF0YVR5cGUgdHlwZSwg
TlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRDb25zdGFudFZhbHVlX3R5cGVfYXRJbmRleF8pLCB2YWx1
ZSwgdHlwZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldENvbnN0YW50VmFsdWVzOnR5cGU6
d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6
OnNldENvbnN0YW50VmFsdWVzKGNvbnN0IHZvaWQqIHZhbHVlcywgTVRMOjpEYXRhVHlwZSB0eXBl
LCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0YW50VmFsdWVzX3R5cGVfd2l0aFJhbmdlXyksIHZh
bHVlcywgdHlwZSwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldENvbnN0YW50VmFsdWU6dHlw
ZTp3aXRoTmFtZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVz
OjpzZXRDb25zdGFudFZhbHVlKGNvbnN0IHZvaWQqIHZhbHVlLCBNVEw6OkRhdGFUeXBlIHR5cGUs
IGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0YW50VmFsdWVfdHlwZV93aXRoTmFtZV8p
LCB2YWx1ZSwgdHlwZSwgbmFtZSk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXQKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzOjpyZXNldCgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rp
b25EZXNjcmlwdG9yLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ZjAwZDY3ODM0YmRiYjM5ODY4
ZTU0ZjkzZmY5M2FlNTZhYWVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcApAQCAtMCwwICsx
LDE1NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcAorLy8KKy8vIENvcHlyaWdodCAy
MDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBw
IgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5o
cHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAi
TVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9PUFRJ
T05TKE5TOjpVSW50ZWdlciwgRnVuY3Rpb25PcHRpb25zKSB7CisgICAgRnVuY3Rpb25PcHRpb25O
b25lID0gMCwKKyAgICBGdW5jdGlvbk9wdGlvbkNvbXBpbGVUb0JpbmFyeSA9IDEsCit9OworCitj
bGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8RnVuY3Rpb25EZXNj
cmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7
CisKKyAgICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBmdW5jdGlvbkRlc2NyaXB0
b3IoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgIG5hbWUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXROYW1lKGNvbnN0IE5T
OjpTdHJpbmcqIG5hbWUpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICAg
c3BlY2lhbGl6ZWROYW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3BlY2lhbGl6ZWROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIHNwZWNpYWxpemVkTmFt
ZSk7CisKKyAgICBjbGFzcyBGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiAgICBjb25zdGFudFZhbHVl
cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0
YW50VmFsdWVzKGNvbnN0IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFs
dWVzKTsKKworICAgIE1UTDo6RnVuY3Rpb25PcHRpb25zICAgICAgICAgICAgIG9wdGlvbnMoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPcHRpb25zKE1U
TDo6RnVuY3Rpb25PcHRpb25zIG9wdGlvbnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAg
ICAgICAgICAgICAgYmluYXJ5QXJjaGl2ZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFy
eUFyY2hpdmVzKTsKK307CisKK2NsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciA6
IHB1YmxpYyBOUzo6Q29weWluZzxJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IsIE1UTDo6
RnVuY3Rpb25EZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBJbnRlcnNl
Y3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbnRlcnNlY3Rp
b25GdW5jdGlvbkRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7Cit9OworCit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogTVRM
OjpGdW5jdGlvbkRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rp
b25EZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpG
dW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcj4oKTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogZnVuY3Rpb25EZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6
OkZ1bmN0aW9uRGVzY3JpcHRvciogTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OmZ1bmN0aW9uRGVz
Y3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlv
bkRlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEZ1bmN0aW9uRGVzY3JpcHRvciksIF9N
VExfUFJJVkFURV9TRUwoZnVuY3Rpb25EZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBu
YW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6bmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpzZXROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dE5hbWVfKSwgbmFtZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzcGVjaWFsaXplZE5hbWUKK19NVExf
SU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpzcGVjaWFsaXplZE5h
bWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNwZWNpYWxpemVkTmFtZSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpzZXRTcGVjaWFsaXplZE5hbWUoY29u
c3QgTlM6OlN0cmluZyogc3BlY2lhbGl6ZWROYW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTcGVjaWFsaXplZE5hbWVfKSwgc3Bl
Y2lhbGl6ZWROYW1lKTsKK30KKworLy8gcHJvcGVydHk6IGNvbnN0YW50VmFsdWVzCitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9y
Ojpjb25zdGFudFZhbHVlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b25zdGFudFZhbHVlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25EZXNj
cmlwdG9yOjpzZXRDb25zdGFudFZhbHVlcyhjb25zdCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1
ZXMqIGNvbnN0YW50VmFsdWVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRDb25zdGFudFZhbHVlc18pLCBjb25zdGFudFZhbHVlcyk7
Cit9CisKKy8vIHByb3BlcnR5OiBvcHRpb25zCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uT3B0
aW9ucyBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6b3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbk9wdGlvbnM+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwob3B0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rp
b25EZXNjcmlwdG9yOjpzZXRPcHRpb25zKE1UTDo6RnVuY3Rpb25PcHRpb25zIG9wdGlvbnMpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dE9wdGlvbnNfKSwgb3B0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlBcmNoaXZlcwor
X01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6YmluYXJ5QXJj
aGl2ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJh
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYmluYXJ5QXJjaGl2ZXMpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMoY29u
c3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmluYXJ5
QXJjaGl2ZXMpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25EZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1U
TDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTElu
dGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBNVEw6OkludGVy
c2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3I+KCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25I
YW5kbGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0
aW9uSGFuZGxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGYzODUxNDM3YzcxZTgwZGE5ODdlZWNlOThiZDFh
ODA4YzNlMmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEZ1bmN0aW9uSGFuZGxlLmhwcApAQCAtMCwwICsxLDYxIEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExG
dW5jdGlvbkhhbmRsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTExpYnJhcnkuaHBwIgorCitu
YW1lc3BhY2UgTVRMCit7CitjbGFzcyBGdW5jdGlvbkhhbmRsZSA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8RnVuY3Rpb25IYW5kbGU+Cit7CitwdWJsaWM6CisgICAgTVRMOjpGdW5jdGlvblR5cGUg
ZnVuY3Rpb25UeXBlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICBuYW1lKCkgY29u
c3Q7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICBkZXZpY2UoKSBjb25zdDsKK307CisKK30KKwor
Ly8gcHJvcGVydHk6IGZ1bmN0aW9uVHlwZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblR5cGUg
TVRMOjpGdW5jdGlvbkhhbmRsZTo6ZnVuY3Rpb25UeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uVHlwZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTChmdW5jdGlvblR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5F
IE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb25IYW5kbGU6Om5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpE
ZXZpY2UqIE1UTDo6RnVuY3Rpb25IYW5kbGU6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGRldmljZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EzOGRjOWRhYmQ2MWVhYmJl
ZmUwZTRiZGMzNWUyOTNlMjcwODE1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAKQEAgLTAsMCArMSwxMTQg
QEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8v
IE1ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUg
Ik1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNs
dWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25M
b2cuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBGdW5j
dGlvbkxvZ1R5cGUpIHsKKyAgICBGdW5jdGlvbkxvZ1R5cGVWYWxpZGF0aW9uID0gMCwKK307CisK
K2NsYXNzIExvZ0NvbnRhaW5lciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8TG9nQ29udGFpbmVy
LCBOUzo6RmFzdEVudW1lcmF0aW9uPgoreworcHVibGljOgorfTsKKworY2xhc3MgRnVuY3Rpb25M
b2dEZWJ1Z0xvY2F0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbkxvZ0RlYnVn
TG9jYXRpb24+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogIGZ1bmN0aW9uTmFtZSgpIGNv
bnN0OworCisgICAgTlM6OlVSTCogICAgIFVSTCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2Vy
IGxpbmUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciBjb2x1bW4oKSBjb25zdDsKK307CisK
K2NsYXNzIEZ1bmN0aW9uTG9nIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbkxvZz4K
K3sKK3B1YmxpYzoKKyAgICBNVEw6OkZ1bmN0aW9uTG9nVHlwZSAgICAgICAgICAgIHR5cGUoKSBj
b25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgZW5jb2RlckxhYmVs
KCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogICAgICAgICAgICAgICAgIGZ1bmN0aW9u
KCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24qIGRlYnVnTG9j
YXRpb24oKSBjb25zdDsKK307CisKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uTmFtZQorX01U
TF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb246OmZ1bmN0
aW9uTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0
cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25OYW1lKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBVUkwKK19NVExfSU5MSU5FIE5TOjpVUkwqIE1UTDo6RnVuY3Rpb25Mb2dEZWJ1Z0xv
Y2F0aW9uOjpVUkwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVUkwqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKFVSTCkpOworfQorCisvLyBwcm9wZXJ0eTog
bGluZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0
aW9uOjpsaW5lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGluZSkpOworfQorCisvLyBwcm9wZXJ0
eTogY29sdW1uCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpGdW5jdGlvbkxvZ0RlYnVn
TG9jYXRpb246OmNvbHVtbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbHVtbikpOworfQorCisv
LyBwcm9wZXJ0eTogdHlwZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkxvZ1R5cGUgTVRMOjpG
dW5jdGlvbkxvZzo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpGdW5jdGlvbkxvZ1R5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHlwZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogZW5jb2RlckxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBN
VEw6OkZ1bmN0aW9uTG9nOjplbmNvZGVyTGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuY29k
ZXJMYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6
RnVuY3Rpb24qIE1UTDo6RnVuY3Rpb25Mb2c6OmZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChmdW5jdGlvbikpOworfQorCisvLyBwcm9wZXJ0eTogZGVidWdMb2NhdGlvbgorX01UTF9J
TkxJTkUgTVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24qIE1UTDo6RnVuY3Rpb25Mb2c6OmRl
YnVnTG9jYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZWJ1
Z0xvY2F0aW9uKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWRj
YjQ5NmNlZDZiZDdhMzJiNTE2YzJiMmYzNTY1Yzc5YjYxZGQxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3RpdGNoaW5n
LmhwcApAQCAtMCwwICsxLDMwNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwCisvLwor
Ly8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
TVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRl
ICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+
CisKKyNpbmNsdWRlICJNVExGdW5jdGlvblN0aXRjaGluZy5ocHAiCisKK25hbWVzcGFjZSBNVEwK
K3sKK2NsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlIDogcHVibGljIE5TOjpSZWZlcmVu
Y2luZzxGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZT4KK3sKK307CisKK2NsYXNzIEZ1bmN0aW9u
U3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxG
dW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZSwgRnVuY3Rpb25TdGl0Y2hpbmdB
dHRyaWJ1dGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5n
QXR0cmlidXRlQWx3YXlzSW5saW5lKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0
Y2hpbmdBdHRyaWJ1dGVBbHdheXNJbmxpbmUqICAgICAgICBpbml0KCk7Cit9OworCitjbGFzcyBG
dW5jdGlvblN0aXRjaGluZ05vZGUgOiBwdWJsaWMgTlM6OkNvcHlpbmc8RnVuY3Rpb25TdGl0Y2hp
bmdOb2RlPgoreworfTsKKworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlLCBGdW5jdGlvblN0
aXRjaGluZ05vZGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3RpdGNo
aW5nSW5wdXROb2RlKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdJbnB1
dE5vZGUqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFyZ3VtZW50SW5kZXgoTlM6OlVJbnRlZ2VyIGFy
Z3VtZW50SW5kZXgpOworCisgICAgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSogICAg
ICAgICBpbml0KE5TOjpVSW50ZWdlciBhcmd1bWVudCk7Cit9OworCitjbGFzcyBGdW5jdGlvblN0
aXRjaGluZ0Z1bmN0aW9uTm9kZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25TdGl0
Y2hpbmdGdW5jdGlvbk5vZGUsIEZ1bmN0aW9uU3RpdGNoaW5nTm9kZT4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSogICAgICAgIGluaXQoKTsK
KworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TmFtZShjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKKworICAgIE5TOjpBcnJheSogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBcmd1bWVudHMoY29uc3Qg
TlM6OkFycmF5KiBhcmd1bWVudHMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250cm9sRGVwZW5kZW5jaWVzKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250cm9sRGVwZW5kZW5j
aWVzKGNvbnN0IE5TOjpBcnJheSogY29udHJvbERlcGVuZGVuY2llcyk7CisKKyAgICBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiAgICAgICAgIGluaXQoY29uc3QgTlM6OlN0cmlu
ZyogbmFtZSwgY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMsIGNvbnN0IE5TOjpBcnJheSogY29u
dHJvbERlcGVuZGVuY2llcyk7Cit9OworCitjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0dyYXBoIDog
cHVibGljIE5TOjpDb3B5aW5nPEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIGFsbG9jKCk7CisKKyAgICBj
bGFzcyBGdW5jdGlvblN0aXRjaGluZ0dyYXBoKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0
cmluZyogICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGdW5jdGlvbk5hbWUoY29u
c3QgTlM6OlN0cmluZyogZnVuY3Rpb25OYW1lKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXROb2Rlcyhjb25zdCBOUzo6QXJyYXkqIG5vZGVzKTsKKworICAg
IGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBvdXRwdXROb2RlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE91dHB1dE5vZGUo
Y29uc3QgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIG91dHB1dE5vZGUpOwor
CisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0cmli
dXRlcyhjb25zdCBOUzo6QXJyYXkqIGF0dHJpYnV0ZXMpOworCisgICAgTVRMOjpGdW5jdGlvblN0
aXRjaGluZ0dyYXBoKiAgICAgICAgIGluaXQoY29uc3QgTlM6OlN0cmluZyogZnVuY3Rpb25OYW1l
LCBjb25zdCBOUzo6QXJyYXkqIG5vZGVzLCBjb25zdCBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0Z1
bmN0aW9uTm9kZSogb3V0cHV0Tm9kZSwgY29uc3QgTlM6OkFycmF5KiBhdHRyaWJ1dGVzKTsKK307
CisKK2NsYXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8
U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFN0aXRjaGVk
TGlicmFyeURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25HcmFwaHMoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnVuY3Rpb25HcmFwaHMoY29u
c3QgTlM6OkFycmF5KiBmdW5jdGlvbkdyYXBocyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkq
IGZ1bmN0aW9ucyk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKiBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lOjphbGxvYygpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdh
eXNJbmxpbmU+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVB
bHdheXNJbmxpbmUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKiBNVEw6OkZ1bmN0aW9uU3RpdGNo
aW5nQXR0cmlidXRlQWx3YXlzSW5saW5lOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6aW5pdDxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lPigpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0
aXRjaGluZ0lucHV0Tm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZTo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5n
SW5wdXROb2RlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2Rl
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRj
aGluZ0lucHV0Tm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZTo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0
Tm9kZT4oKTsKK30KKworLy8gcHJvcGVydHk6IGFyZ3VtZW50SW5kZXgKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlOjphcmd1bWVudEluZGV4
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJndW1lbnRJbmRleCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU6OnNldEFyZ3VtZW50SW5kZXgo
TlM6OlVJbnRlZ2VyIGFyZ3VtZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFyZ3VtZW50SW5kZXhfKSwgYXJndW1lbnRJ
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhBcmd1bWVudEluZGV4OgorX01UTF9JTkxJ
TkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGlu
Z0lucHV0Tm9kZTo6aW5pdChOUzo6VUludGVnZXIgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaW5pdFdpdGhBcmd1bWVudEluZGV4XyksIGFyZ3VtZW50KTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdGdW5jdGlvbk5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpGdW5jdGlvblN0aXRj
aGluZ0Z1bmN0aW9uTm9kZT4oX01UTF9QUklWQVRFX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0Z1
bmN0aW9uTm9kZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlv
bk5vZGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RnVuY3Rp
b25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRM
X0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpu
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5n
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6c2V0TmFtZShjb25zdCBOUzo6U3Ry
aW5nKiBuYW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXROYW1lXyksIG5hbWUpOworfQorCisvLyBwcm9wZXJ0eTogYXJndW1lbnRz
CitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5v
ZGU6OmFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcmd1bWVudHMpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpzZXRBcmd1
bWVudHMoY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFyZ3VtZW50c18pLCBhcmd1bWVu
dHMpOworfQorCisvLyBwcm9wZXJ0eTogY29udHJvbERlcGVuZGVuY2llcworX01UTF9JTkxJTkUg
TlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpjb250cm9sRGVw
ZW5kZW5jaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbnRyb2xEZXBlbmRlbmNpZXMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpz
ZXRDb250cm9sRGVwZW5kZW5jaWVzKGNvbnN0IE5TOjpBcnJheSogY29udHJvbERlcGVuZGVuY2ll
cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0Q29udHJvbERlcGVuZGVuY2llc18pLCBjb250cm9sRGVwZW5kZW5jaWVzKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0V2l0aE5hbWU6YXJndW1lbnRzOmNvbnRyb2xEZXBlbmRlbmNpZXM6Citf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBNVEw6OkZ1bmN0
aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjppbml0KGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUsIGNv
bnN0IE5TOjpBcnJheSogYXJndW1lbnRzLCBjb25zdCBOUzo6QXJyYXkqIGNvbnRyb2xEZXBlbmRl
bmNpZXMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvblN0
aXRjaGluZ0Z1bmN0aW9uTm9kZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5pdFdpdGhOYW1l
X2FyZ3VtZW50c19jb250cm9sRGVwZW5kZW5jaWVzXyksIG5hbWUsIGFyZ3VtZW50cywgY29udHJv
bERlcGVuZGVuY2llcyk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFw
aDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9u
U3RpdGNoaW5nR3JhcGg+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdHcmFw
aCkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdHcmFwaCogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg+KCk7Cit9
CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvbk5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6ZnVuY3Rpb25OYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChmdW5jdGlvbk5hbWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9u
U3RpdGNoaW5nR3JhcGg6OnNldEZ1bmN0aW9uTmFtZShjb25zdCBOUzo6U3RyaW5nKiBmdW5jdGlv
bk5hbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldEZ1bmN0aW9uTmFtZV8pLCBmdW5jdGlvbk5hbWUpOworfQorCisvLyBwcm9wZXJ0
eTogbm9kZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dy
YXBoOjpub2RlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChub2RlcykpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6c2V0Tm9kZXMoY29uc3QgTlM6OkFy
cmF5KiBub2RlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0Tm9kZXNfKSwgbm9kZXMpOworfQorCisvLyBwcm9wZXJ0eTogb3V0cHV0
Tm9kZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSogTVRM
OjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpvdXRwdXROb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2Rl
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvdXRwdXROb2RlKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpzZXRPdXRwdXROb2RlKGNvbnN0IE1U
TDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIG91dHB1dE5vZGUpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE91dHB1dE5v
ZGVfKSwgb3V0cHV0Tm9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBhdHRyaWJ1dGVzCitfTVRMX0lO
TElORSBOUzo6QXJyYXkqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6YXR0cmlidXRlcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChhdHRyaWJ1dGVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpzZXRBdHRyaWJ1dGVzKGNvbnN0IE5TOjpBcnJh
eSogYXR0cmlidXRlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0QXR0cmlidXRlc18pLCBhdHRyaWJ1dGVzKTsKK30KKworLy8gbWV0
aG9kOiBpbml0V2l0aEZ1bmN0aW9uTmFtZTpub2RlczpvdXRwdXROb2RlOmF0dHJpYnV0ZXM6Citf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdHcmFwaDo6aW5pdChjb25zdCBOUzo6U3RyaW5nKiBmdW5jdGlvbk5hbWUsIGNvbnN0IE5T
OjpBcnJheSogbm9kZXMsIGNvbnN0IE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUq
IG91dHB1dE5vZGUsIGNvbnN0IE5TOjpBcnJheSogYXR0cmlidXRlcykKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGluaXRXaXRoRnVuY3Rpb25OYW1lX25vZGVzX291dHB1dE5vZGVfYXR0
cmlidXRlc18pLCBmdW5jdGlvbk5hbWUsIG5vZGVzLCBvdXRwdXROb2RlLCBhdHRyaWJ1dGVzKTsK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6U3RpdGNoZWRM
aWJyYXJ5RGVzY3JpcHRvciogTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yOjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdGl0Y2hlZExpYnJhcnlE
ZXNjcmlwdG9yKiBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcj4o
KTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uR3JhcGhzCitfTVRMX0lOTElORSBOUzo6QXJy
YXkqIE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcjo6ZnVuY3Rpb25HcmFwaHMoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZnVuY3Rpb25HcmFwaHMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I6OnNldEZ1bmN0aW9uR3JhcGhzKGNvbnN0IE5T
OjpBcnJheSogZnVuY3Rpb25HcmFwaHMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uR3JhcGhzXyksIGZ1bmN0aW9uR3Jh
cGhzKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5
KiBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I6OmZ1bmN0aW9ucygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChmdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0aXRjaGVk
TGlicmFyeURlc2NyaXB0b3I6OnNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9u
cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0RnVuY3Rpb25zXyksIGZ1bmN0aW9ucyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJpZGdlLmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFkZXJCcmlkZ2UuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgxMDA4NWRkYTU3YjQxZTM5NDA4MzM4MmMwYjk5MDJjYzUxMzRlMzcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJp
ZGdlLmhwcApAQCAtMCwwICsxLDIwNDcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEhlYWRlckJyaWRnZS5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKK25hbWVzcGFjZSBNVEw6OlByaXZhdGU6OkNsYXNzCit7CisKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xl
R2VvbWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlv
blN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTEFyZ3VtZW50KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFyZ3VtZW50RGVzY3Jp
cHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBcnJheVR5cGUpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMQXR0cmlidXRlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEF0dHJpYnV0
ZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQXR0cmlidXRlRGVzY3JpcHRv
ckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9y
KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJsaXRQYXNzRGVzY3JpcHRvcik7CitfTVRMX1BS
SVZBVEVfREVGX0NMUyhNVExCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDYXB0dXJlRGVzY3JpcHRvcik7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExDYXB0dXJlTWFuYWdlcik7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExDb21tYW5kQnVmZmVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhN
VExDb21waWxlT3B0aW9ucyk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDb21wdXRlUGFzc0Rl
c2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tcHV0ZVBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTENvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMRnVu
Y3Rpb25Db25zdGFudCk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvbkNvbnN0YW50
VmFsdWVzKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEZ1bmN0aW9uRGVzY3JpcHRvcik7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lu
bGluZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9u
Tm9kZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0dyYXBoKTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTEhlYXBEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcik7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExMaW5rZWRGdW5jdGlvbnMpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMTW90aW9uS2V5ZnJhbWVEYXRhKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1U
TFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQb2lu
dGVyVHlwZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQcmltaXRpdmVBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSYXN0ZXJpemF0aW9u
UmF0ZUxheWVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSYXN0ZXJpemF0
aW9uUmF0ZU1hcERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmFzdGVyaXph
dGlvblJhdGVTYW1wbGVBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZB
VEVfREVGX0NMUyhNVExSZW5kZXJQYXNzRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NM
UyhNVExSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc1N0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVf
REVGX0NMUyhNVExSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24pOworX01UTF9QUklWQVRFX0RFRl9D
TFMoTVRMUmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpOwor
X01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNhbXBsZXJE
ZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNoYXJlZEV2ZW50SGFuZGxlKTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNoYXJlZEV2ZW50TGlzdGVuZXIpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMU2hhcmVkVGV4dHVyZUhhbmRsZSk7CitfTVRMX1BSSVZBVEVfREVGX0NM
UyhNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhN
VExTdGVuY2lsRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExTdGl0Y2hlZExp
YnJhcnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFN0cnVjdE1lbWJlcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExTdHJ1Y3RUeXBlKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTFRleHR1cmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFRleHR1
cmVSZWZlcmVuY2VUeXBlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFRpbGVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMVHlwZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWZXJ0ZXhB
dHRyaWJ1dGUpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
QXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4QnVmZmVyTGF5b3V0RGVzY3Jp
cHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4RGVzY3JpcHRvcik7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpOwor
Cit9CisKK25hbWVzcGFjZSBNVEw6OlByaXZhdGU6OlByb3RvY29sCit7CisKK19NVExfUFJJVkFU
RV9ERUZfUFJPKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZSk7CitfTVRMX1BSSVZBVEVfREVGX1BS
TyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcik7CitfTVRMX1BSSVZBVEVf
REVGX1BSTyhNVExBcmd1bWVudEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQmlu
YXJ5QXJjaGl2ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExCbGl0Q29tbWFuZEVuY29kZXIp
OworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQnVmZmVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJP
KE1UTENvbW1hbmRCdWZmZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ29tbWFuZEJ1ZmZl
ckVuY29kZXJJbmZvKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvbW1hbmRFbmNvZGVyKTsK
K19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvbW1hbmRRdWV1ZSk7CitfTVRMX1BSSVZBVEVfREVG
X1BSTyhNVExDb21wdXRlQ29tbWFuZEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRM
Q29tcHV0ZVBpcGVsaW5lU3RhdGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ291bnRlcik7
CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExDb3VudGVyU2FtcGxlQnVmZmVyKTsKK19NVExfUFJJ
VkFURV9ERUZfUFJPKE1UTENvdW50ZXJTZXQpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRGVw
dGhTdGVuY2lsU3RhdGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRGV2aWNlKTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTERyYXdhYmxlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTER5
bmFtaWNMaWJyYXJ5KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEV2ZW50KTsKK19NVExfUFJJ
VkFURV9ERUZfUFJPKE1UTEZlbmNlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0aW9u
KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0aW9uSGFuZGxlKTsKK19NVExfUFJJVkFU
RV9ERUZfUFJPKE1UTEZ1bmN0aW9uTG9nKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0
aW9uTG9nRGVidWdMb2NhdGlvbik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvblN0
aXRjaGluZ0F0dHJpYnV0ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvblN0aXRj
aGluZ05vZGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMSGVhcCk7CitfTVRMX1BSSVZBVEVf
REVGX1BSTyhNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8o
TVRMSW5kaXJlY3RDb21wdXRlQ29tbWFuZCk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExJbmRp
cmVjdFJlbmRlckNvbW1hbmQpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMSW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExMaWJyYXJ5KTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTExvZ0NvbnRhaW5lcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhN
VExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1U
TFJhc3Rlcml6YXRpb25SYXRlTWFwKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTFJlbmRlckNv
bW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTFJlbmRlclBpcGVsaW5lU3Rh
dGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMUmVzb3VyY2UpOworX01UTF9QUklWQVRFX0RF
Rl9QUk8oTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZf
UFJPKE1UTFNhbXBsZXJTdGF0ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExTaGFyZWRFdmVu
dCk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExUZXh0dXJlKTsKK19NVExfUFJJVkFURV9ERUZf
UFJPKE1UTFZpc2libGVGdW5jdGlvblRhYmxlKTsKKworfQorCituYW1lc3BhY2UgTVRMOjpQcml2
YXRlOjpTZWxlY3RvcgoreworCitfTVRMX1BSSVZBVEVfREVGX1NFTChHUFVFbmRUaW1lLAorICAg
ICJHUFVFbmRUaW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChHUFVTdGFydFRpbWUsCisgICAg
IkdQVVN0YXJ0VGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoVVJMLAorICAgICJVUkwiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVy
LAorICAgICJhY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXNXaXRoRGVzY3JpcHRvcl8sCisg
ICAgImFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemVzV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChhY2Nlc3MsCisgICAgImFjY2VzcyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoYWRkQ29tcGxldGVkSGFuZGxlcl8sCisgICAgImFkZENvbXBsZXRlZEhhbmRsZXI6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChhZGRDb21wdXRlUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3Jp
cHRvcl9lcnJvcl8sCisgICAgImFkZENvbXB1dGVQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlw
dG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWRkRGVidWdNYXJrZXJfcmFuZ2Vf
LAorICAgICJhZGREZWJ1Z01hcmtlcjpyYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFk
ZEZ1bmN0aW9uV2l0aERlc2NyaXB0b3JfbGlicmFyeV9lcnJvcl8sCisgICAgImFkZEZ1bmN0aW9u
V2l0aERlc2NyaXB0b3I6bGlicmFyeTplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFk
ZFByZXNlbnRlZEhhbmRsZXJfLAorICAgICJhZGRQcmVzZW50ZWRIYW5kbGVyOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoYWRkUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcl9l
cnJvcl8sCisgICAgImFkZFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6ZXJy
b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRTY2hlZHVsZWRIYW5kbGVyXywKKyAgICAi
YWRkU2NoZWR1bGVkSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFkZFRpbGVSZW5k
ZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAiYWRkVGlsZVJl
bmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChhbGlnbm1lbnQsCisgICAgImFsaWdubWVudCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoYWxsb2NhdGVkU2l6ZSwKKyAgICAiYWxsb2NhdGVkU2l6ZSIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24sCisg
ICAgImFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChhbGxvd0dQVU9wdGltaXplZENvbnRlbnRzLAorICAgICJhbGxvd0dQ
VU9wdGltaXplZENvbnRlbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhbHBoYUJsZW5kT3Bl
cmF0aW9uLAorICAgICJhbHBoYUJsZW5kT3BlcmF0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChhcmVCYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBvcnRlZCwKKyAgICAiYXJlQmFyeWNlbnRyaWNDb29y
ZHNTdXBwb3J0ZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFyZVByb2dyYW1tYWJsZVNhbXBs
ZVBvc2l0aW9uc1N1cHBvcnRlZCwKKyAgICAiYXJlUHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRpb25z
U3VwcG9ydGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmVSYXN0ZXJPcmRlckdyb3Vwc1N1
cHBvcnRlZCwKKyAgICAiYXJlUmFzdGVyT3JkZXJHcm91cHNTdXBwb3J0ZWQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQsCisgICAgImFyZ3VtZW50QnVmZmVy
c1N1cHBvcnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFyZ3VtZW50RGVzY3JpcHRvciwKKyAg
ICAiYXJndW1lbnREZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmd1bWVudElu
ZGV4LAorICAgICJhcmd1bWVudEluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmd1bWVu
dEluZGV4U3RyaWRlLAorICAgICJhcmd1bWVudEluZGV4U3RyaWRlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChhcmd1bWVudHMsCisgICAgImFyZ3VtZW50cyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoYXJyYXlMZW5ndGgsCisgICAgImFycmF5TGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChhcnJheVR5cGUsCisgICAgImFycmF5VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXR0
cmlidXRlSW5kZXgsCisgICAgImF0dHJpYnV0ZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChhdHRyaWJ1dGVUeXBlLAorICAgICJhdHRyaWJ1dGVUeXBlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChhdHRyaWJ1dGVzLAorICAgICJhdHRyaWJ1dGVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChiYWNrRmFjZVN0ZW5jaWwsCisgICAgImJhY2tGYWNlU3RlbmNpbCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYmluYXJ5QXJjaGl2ZXMsCisgICAgImJpbmFyeUFyY2hpdmVzIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChiaW5hcnlGdW5jdGlvbnMsCisgICAgImJpbmFyeUZ1bmN0aW9ucyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoYmxpdENvbW1hbmRFbmNvZGVyLAorICAgICJibGl0Q29tbWFu
ZEVuY29kZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJsaXRDb21tYW5kRW5jb2RlcldpdGhE
ZXNjcmlwdG9yXywKKyAgICAiYmxpdENvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChibGl0UGFzc0Rlc2NyaXB0b3IsCisgICAgImJsaXRQYXNzRGVz
Y3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYm9yZGVyQ29sb3IsCisgICAgImJvcmRl
ckNvbG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChib3VuZGluZ0JveEJ1ZmZlciwKKyAgICAi
Ym91bmRpbmdCb3hCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94QnVm
ZmVyT2Zmc2V0LAorICAgICJib3VuZGluZ0JveEJ1ZmZlck9mZnNldCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYm91bmRpbmdCb3hCdWZmZXJzLAorICAgICJib3VuZGluZ0JveEJ1ZmZlcnMiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94Q291bnQsCisgICAgImJvdW5kaW5nQm94
Q291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94U3RyaWRlLAorICAgICJi
b3VuZGluZ0JveFN0cmlkZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVyLAorICAgICJi
dWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlckFsaWdubWVudCwKKyAgICAiYnVm
ZmVyQWxpZ25tZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZmZXJCeXRlc1BlclJvdywK
KyAgICAiYnVmZmVyQnl0ZXNQZXJSb3ciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlckRh
dGFTaXplLAorICAgICJidWZmZXJEYXRhU2l6ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVm
ZmVyRGF0YVR5cGUsCisgICAgImJ1ZmZlckRhdGFUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChidWZmZXJJbmRleCwKKyAgICAiYnVmZmVySW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGJ1ZmZlck9mZnNldCwKKyAgICAiYnVmZmVyT2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChidWZmZXJQb2ludGVyVHlwZSwKKyAgICAiYnVmZmVyUG9pbnRlclR5cGUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGJ1ZmZlclN0cnVjdFR5cGUsCisgICAgImJ1ZmZlclN0cnVjdFR5cGUiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlcnMsCisgICAgImJ1ZmZlcnMiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlX2Rlc2NyaXB0b3Jfc2NyYXRj
aEJ1ZmZlcl9zY3JhdGNoQnVmZmVyT2Zmc2V0XywKKyAgICAiYnVpbGRBY2NlbGVyYXRpb25TdHJ1
Y3R1cmU6ZGVzY3JpcHRvcjpzY3JhdGNoQnVmZmVyOnNjcmF0Y2hCdWZmZXJPZmZzZXQ6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChjYXB0dXJlT2JqZWN0LAorICAgICJjYXB0dXJlT2JqZWN0Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChjbGVhckJhcnJpZXIsCisgICAgImNsZWFyQmFycmllciIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoY2xlYXJDb2xvciwKKyAgICAiY2xlYXJDb2xvciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY2xlYXJEZXB0aCwKKyAgICAiY2xlYXJEZXB0aCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoY2xlYXJTdGVuY2lsLAorICAgICJjbGVhclN0ZW5jaWwiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNvbG9yQXR0YWNobWVudHMsCisgICAgImNvbG9yQXR0YWNobWVu
dHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbHVtbiwKKyAgICAiY29sdW1uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChjb21tYW5kQnVmZmVyLAorICAgICJjb21tYW5kQnVmZmVyIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChjb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3JfLAorICAgICJj
b21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21t
YW5kQnVmZmVyV2l0aFVucmV0YWluZWRSZWZlcmVuY2VzLAorICAgICJjb21tYW5kQnVmZmVyV2l0
aFVucmV0YWluZWRSZWZlcmVuY2VzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21tYW5kUXVl
dWUsCisgICAgImNvbW1hbmRRdWV1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWFuZFR5
cGVzLAorICAgICJjb21tYW5kVHlwZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbW1pdCwK
KyAgICAiY29tbWl0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21wYXJlRnVuY3Rpb24sCisg
ICAgImNvbXBhcmVGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tcHV0ZUNvbW1h
bmRFbmNvZGVyLAorICAgICJjb21wdXRlQ29tbWFuZEVuY29kZXIiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXywKKyAgICAiY29tcHV0
ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChj
b21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGlzcGF0Y2hUeXBlXywKKyAgICAiY29tcHV0ZUNvbW1h
bmRFbmNvZGVyV2l0aERpc3BhdGNoVHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbXB1
dGVGdW5jdGlvbiwKKyAgICAiY29tcHV0ZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChjb21wdXRlUGFzc0Rlc2NyaXB0b3IsCisgICAgImNvbXB1dGVQYXNzRGVzY3JpcHRvciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY29uY3VycmVudERpc3BhdGNoVGhyZWFkZ3JvdXBzX3RocmVh
ZHNQZXJUaHJlYWRncm91cF8sCisgICAgImNvbmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3Vwczp0
aHJlYWRzUGVyVGhyZWFkZ3JvdXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb25jdXJyZW50
RGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJlYWRncm91cF8sCisgICAgImNvbmN1cnJlbnRE
aXNwYXRjaFRocmVhZHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoY29uc3RhbnRCbG9ja0FsaWdubWVudCwKKyAgICAiY29uc3RhbnRCbG9ja0FsaWdubWVu
dCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29uc3RhbnREYXRhQXRJbmRleF8sCisgICAgImNv
bnN0YW50RGF0YUF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb25zdGFudFZhbHVl
cywKKyAgICAiY29uc3RhbnRWYWx1ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbnRlbnRz
LAorICAgICJjb250ZW50cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29udHJvbERlcGVuZGVu
Y2llcywKKyAgICAiY29udHJvbERlcGVuZGVuY2llcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
Y29udmVydFNwYXJzZVBpeGVsUmVnaW9uc190b1RpbGVSZWdpb25zX3dpdGhUaWxlU2l6ZV9hbGln
bm1lbnRNb2RlX251bVJlZ2lvbnNfLAorICAgICJjb252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zOnRv
VGlsZVJlZ2lvbnM6d2l0aFRpbGVTaXplOmFsaWdubWVudE1vZGU6bnVtUmVnaW9uczoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNvbnZlcnRTcGFyc2VUaWxlUmVnaW9uc190b1BpeGVsUmVnaW9u
c193aXRoVGlsZVNpemVfbnVtUmVnaW9uc18sCisgICAgImNvbnZlcnRTcGFyc2VUaWxlUmVnaW9u
czp0b1BpeGVsUmVnaW9uczp3aXRoVGlsZVNpemU6bnVtUmVnaW9uczoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGNvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfdG9BY2NlbGVyYXRpb25TdHJ1Y3R1
cmVfLAorICAgICJjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlOnRvQWNjZWxlcmF0aW9uU3RydWN0
dXJlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVfdG9BY2NlbGVyYXRpb25TdHJ1Y3R1cmVfLAorICAgICJjb3B5QW5kQ29tcGFjdEFj
Y2VsZXJhdGlvblN0cnVjdHVyZTp0b0FjY2VsZXJhdGlvblN0cnVjdHVyZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGNvcHlGcm9tQnVmZmVyX3NvdXJjZU9mZnNldF9zb3VyY2VCeXRlc1BlclJv
d19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJjZVNpemVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xp
Y2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5hdGlvbk9yaWdpbl8sCisgICAgImNvcHlGcm9tQnVm
ZmVyOnNvdXJjZU9mZnNldDpzb3VyY2VCeXRlc1BlclJvdzpzb3VyY2VCeXRlc1BlckltYWdlOnNv
dXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0
aW5hdGlvbk9yaWdpbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvcHlGcm9tQnVmZmVyX3Nv
dXJjZU9mZnNldF9zb3VyY2VCeXRlc1BlclJvd19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJjZVNp
emVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5hdGlv
bk9yaWdpbl9vcHRpb25zXywKKyAgICAiY29weUZyb21CdWZmZXI6c291cmNlT2Zmc2V0OnNvdXJj
ZUJ5dGVzUGVyUm93OnNvdXJjZUJ5dGVzUGVySW1hZ2U6c291cmNlU2l6ZTp0b1RleHR1cmU6ZGVz
dGluYXRpb25TbGljZTpkZXN0aW5hdGlvbkxldmVsOmRlc3RpbmF0aW9uT3JpZ2luOm9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbUJ1ZmZlcl9zb3VyY2VPZmZzZXRfdG9C
dWZmZXJfZGVzdGluYXRpb25PZmZzZXRfc2l6ZV8sCisgICAgImNvcHlGcm9tQnVmZmVyOnNvdXJj
ZU9mZnNldDp0b0J1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDpzaXplOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJjZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJjZU9y
aWdpbl9zb3VyY2VTaXplX3RvQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0X2Rlc3RpbmF0aW9uQnl0
ZXNQZXJSb3dfZGVzdGluYXRpb25CeXRlc1BlckltYWdlXywKKyAgICAiY29weUZyb21UZXh0dXJl
OnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNvdXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvQnVmZmVy
OmRlc3RpbmF0aW9uT2Zmc2V0OmRlc3RpbmF0aW9uQnl0ZXNQZXJSb3c6ZGVzdGluYXRpb25CeXRl
c1BlckltYWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJj
ZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJjZU9yaWdpbl9zb3VyY2VTaXplX3RvQnVmZmVyX2Rlc3Rp
bmF0aW9uT2Zmc2V0X2Rlc3RpbmF0aW9uQnl0ZXNQZXJSb3dfZGVzdGluYXRpb25CeXRlc1Blcklt
YWdlX29wdGlvbnNfLAorICAgICJjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2
ZWw6c291cmNlT3JpZ2luOnNvdXJjZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVz
dGluYXRpb25CeXRlc1BlclJvdzpkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6b3B0aW9uczoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VM
ZXZlbF9zb3VyY2VPcmlnaW5fc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGljZV9k
ZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luXywKKyAgICAiY29weUZyb21UZXh0dXJl
OnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNvdXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvVGV4dHVy
ZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNl
TGV2ZWxfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9zbGljZUNv
dW50X2xldmVsQ291bnRfLAorICAgICJjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNl
TGV2ZWw6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpzbGljZUNv
dW50OmxldmVsQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbVRleHR1cmVf
dG9UZXh0dXJlXywKKyAgICAiY29weUZyb21UZXh0dXJlOnRvVGV4dHVyZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGNvcHlJbmRpcmVjdENvbW1hbmRCdWZmZXJfc291cmNlUmFuZ2VfZGVzdGlu
YXRpb25fZGVzdGluYXRpb25JbmRleF8sCisgICAgImNvcHlJbmRpcmVjdENvbW1hbmRCdWZmZXI6
c291cmNlUmFuZ2U6ZGVzdGluYXRpb246ZGVzdGluYXRpb25JbmRleDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXJfb2Zmc2V0XywKKyAgICAiY29weVBh
cmFtZXRlckRhdGFUb0J1ZmZlcjpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3Vu
dGVyU2V0LAorICAgICJjb3VudGVyU2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3VudGVy
U2V0cywKKyAgICAiY291bnRlclNldHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvdW50ZXJz
LAorICAgICJjb3VudGVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY3B1Q2FjaGVNb2RlLAor
ICAgICJjcHVDYWNoZU1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGN1cnJlbnRBbGxvY2F0
ZWRTaXplLAorICAgICJjdXJyZW50QWxsb2NhdGVkU2l6ZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZGF0YSwKKyAgICAiZGF0YSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGF0YVNpemUsCisg
ICAgImRhdGFTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkYXRhVHlwZSwKKyAgICAiZGF0
YVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlYWxsb2MsCisgICAgImRlYWxsb2MiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRlYnVnTG9jYXRpb24sCisgICAgImRlYnVnTG9jYXRpb24i
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlYnVnU2lnbnBvc3RzLAorICAgICJkZWJ1Z1NpZ25w
b3N0cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVmYXVsdENhcHR1cmVTY29wZSwKKyAgICAi
ZGVmYXVsdENhcHR1cmVTY29wZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVmYXVsdFJhc3Rl
clNhbXBsZUNvdW50LAorICAgICJkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGRlcHRoLAorICAgICJkZXB0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
ZGVwdGhBdHRhY2htZW50LAorICAgICJkZXB0aEF0dGFjaG1lbnQiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0LAorICAgICJkZXB0aEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVwdGhDb21wYXJlRnVuY3Rpb24s
CisgICAgImRlcHRoQ29tcGFyZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0
aEZhaWx1cmVPcGVyYXRpb24sCisgICAgImRlcHRoRmFpbHVyZU9wZXJhdGlvbiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZGVwdGhQbGFuZSwKKyAgICAiZGVwdGhQbGFuZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZGVwdGhSZXNvbHZlRmlsdGVyLAorICAgICJkZXB0aFJlc29sdmVGaWx0ZXIi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24sCisgICAg
ImRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlc2Ny
aXB0b3IsCisgICAgImRlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlc3RpbmF0
aW9uLAorICAgICJkZXN0aW5hdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVzdGluYXRp
b25BbHBoYUJsZW5kRmFjdG9yLAorICAgICJkZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IsCisgICAgImRl
c3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRldmljZSwK
KyAgICAiZGV2aWNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkaWRNb2RpZnlSYW5nZV8sCisg
ICAgImRpZE1vZGlmeVJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hRdWV1
ZSwKKyAgICAiZGlzcGF0Y2hRdWV1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hU
aHJlYWRncm91cHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAiZGlzcGF0Y2hUaHJlYWRn
cm91cHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlz
cGF0Y2hUaHJlYWRncm91cHNXaXRoSW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRf
dGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAiZGlzcGF0Y2hUaHJlYWRncm91cHNXaXRoSW5k
aXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJlYWRn
cm91cF8sCisgICAgImRpc3BhdGNoVGhyZWFkczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChkaXNwYXRjaFRocmVhZHNQZXJUaWxlXywKKyAgICAiZGlzcGF0
Y2hUaHJlYWRzUGVyVGlsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRpc3BhdGNoVHlwZSwK
KyAgICAiZGlzcGF0Y2hUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3SW5kZXhlZFBh
dGNoZXNfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQb2lu
dEluZGV4QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVy
X2luZGlyZWN0QnVmZmVyT2Zmc2V0XywKKyAgICAiZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNoSW5k
ZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1ZmZlcjpj
b250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZl
ck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRj
aFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0
X2NvbnRyb2xQb2ludEluZGV4QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2lu
c3RhbmNlQ291bnRfYmFzZUluc3RhbmNlXywKKyAgICAiZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNo
U3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6
Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQ6aW5z
dGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3SW5k
ZXhlZFBhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJ
bmRleEJ1ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9jb250cm9sUG9pbnRJbmRl
eEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV90ZXNzZWxsYXRpb25GYWN0
b3JCdWZmZXJfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0X3Rlc3NlbGxhdGlvbkZhY3Rv
ckJ1ZmZlckluc3RhbmNlU3RyaWRlXywKKyAgICAiZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNoU3Rh
cnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6Y29u
dHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFu
Y2VDb3VudDpiYXNlSW5zdGFuY2U6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOnRlc3NlbGxhdGlv
bkZhY3RvckJ1ZmZlck9mZnNldDp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlk
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRleENv
dW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF8sCisgICAgImRyYXdJ
bmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1
ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZl
c19pbmRleENvdW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbnN0
YW5jZUNvdW50XywKKyAgICAiZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4Q291bnQ6aW5kZXhU
eXBlOmluZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5
cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlVmVydGV4
X2Jhc2VJbnN0YW5jZV8sCisgICAgImRyYXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50Omlu
ZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VW
ZXJ0ZXg6YmFzZUluc3RhbmNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd0luZGV4ZWRQ
cmltaXRpdmVzX2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbmRpcmVj
dEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8sCisgICAgImRyYXdJbmRleGVkUHJpbWl0aXZl
czppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6
aW5kaXJlY3RCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UGF0Y2hl
c19wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5kaXJlY3RCdWZmZXJf
aW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJkcmF3UGF0Y2hlczpwYXRjaEluZGV4QnVmZmVy
OnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZz
ZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNo
Q291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291
bnRfYmFzZUluc3RhbmNlXywKKyAgICAiZHJhd1BhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENvdW50
OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJh
c2VJbnN0YW5jZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdQYXRjaGVzX3BhdGNoU3Rh
cnRfcGF0Y2hDb3VudF9wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5z
dGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyX3Rlc3NlbGxh
dGlvbkZhY3RvckJ1ZmZlck9mZnNldF90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0
cmlkZV8sCisgICAgImRyYXdQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4
QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6
dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlck9mZnNldDp0
ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlkZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGRyYXdQcmltaXRpdmVzX2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0
XywKKyAgICAiZHJhd1ByaW1pdGl2ZXM6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZz
ZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92
ZXJ0ZXhDb3VudF8sCisgICAgImRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0OnZlcnRleENvdW50
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVy
dGV4Q291bnRfaW5zdGFuY2VDb3VudF8sCisgICAgImRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0
OnZlcnRleENvdW50Omluc3RhbmNlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3
UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0ZXhDb3VudF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0
YW5jZV8sCisgICAgImRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0OnZlcnRleENvdW50Omluc3Rh
bmNlQ291bnQ6YmFzZUluc3RhbmNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd2FibGVJ
RCwKKyAgICAiZHJhd2FibGVJRCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudEFycmF5
VHlwZSwKKyAgICAiZWxlbWVudEFycmF5VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxl
bWVudElzQXJndW1lbnRCdWZmZXIsCisgICAgImVsZW1lbnRJc0FyZ3VtZW50QnVmZmVyIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChlbGVtZW50UG9pbnRlclR5cGUsCisgICAgImVsZW1lbnRQb2lu
dGVyVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudFN0cnVjdFR5cGUsCisgICAg
ImVsZW1lbnRTdHJ1Y3RUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbGVtZW50VGV4dHVy
ZVJlZmVyZW5jZVR5cGUsCisgICAgImVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlwZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudFR5cGUsCisgICAgImVsZW1lbnRUeXBlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChlbmNvZGVTaWduYWxFdmVudF92YWx1ZV8sCisgICAgImVuY29kZVNp
Z25hbEV2ZW50OnZhbHVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZW5jb2RlV2FpdEZvckV2
ZW50X3ZhbHVlXywKKyAgICAiZW5jb2RlV2FpdEZvckV2ZW50OnZhbHVlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZW5jb2RlZExlbmd0aCwKKyAgICAiZW5jb2RlZExlbmd0aCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZW5jb2RlckxhYmVsLAorICAgICJlbmNvZGVyTGFiZWwiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGVuZEVuY29kaW5nLAorICAgICJlbmRFbmNvZGluZyIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgsCisgICAgImVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmRPZkZyYWdtZW50U2FtcGxl
SW5kZXgsCisgICAgImVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleCwKKyAgICAiZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRl
eCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZW5xdWV1ZSwKKyAgICAiZW5xdWV1ZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoZXJyb3IsCisgICAgImVycm9yIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChlcnJvck9wdGlvbnMsCisgICAgImVycm9yT3B0aW9ucyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoZXJyb3JTdGF0ZSwKKyAgICAiZXJyb3JTdGF0ZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXJfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJP
ZmZzZXRfLAorICAgICJleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjppbmRpcmVjdEJ1ZmZlcjppbmRp
cmVjdEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGV4ZWN1dGVDb21tYW5k
c0luQnVmZmVyX3dpdGhSYW5nZV8sCisgICAgImV4ZWN1dGVDb21tYW5kc0luQnVmZmVyOndpdGhS
YW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZhc3RNYXRoRW5hYmxlZCwKKyAgICAiZmFz
dE1hdGhFbmFibGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmaWxsQnVmZmVyX3JhbmdlX3Zh
bHVlXywKKyAgICAiZmlsbEJ1ZmZlcjpyYW5nZTp2YWx1ZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGZpcnN0TWlwbWFwSW5UYWlsLAorICAgICJmaXJzdE1pcG1hcEluVGFpbCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZm9ybWF0LAorICAgICJmb3JtYXQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywKKyAgICAiZnJhZ21lbnRBZGRp
dGlvbmFsQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmcmFnbWVudEFy
Z3VtZW50cywKKyAgICAiZnJhZ21lbnRBcmd1bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGZyYWdtZW50QnVmZmVycywKKyAgICAiZnJhZ21lbnRCdWZmZXJzIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChmcmFnbWVudEZ1bmN0aW9uLAorICAgICJmcmFnbWVudEZ1bmN0aW9uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChmcmFnbWVudExpbmtlZEZ1bmN0aW9ucywKKyAgICAiZnJhZ21lbnRM
aW5rZWRGdW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZyYWdtZW50UHJlbG9hZGVk
TGlicmFyaWVzLAorICAgICJmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZnJvbnRGYWNlU3RlbmNpbCwKKyAgICAiZnJvbnRGYWNlU3RlbmNpbCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb24sCisgICAgImZ1bmN0aW9uIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChmdW5jdGlvbkNvbnN0YW50c0RpY3Rpb25hcnksCisgICAgImZ1bmN0aW9u
Q29uc3RhbnRzRGljdGlvbmFyeSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25Db3Vu
dCwKKyAgICAiZnVuY3Rpb25Db3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25E
ZXNjcmlwdG9yLAorICAgICJmdW5jdGlvbkRlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGZ1bmN0aW9uR3JhcGhzLAorICAgICJmdW5jdGlvbkdyYXBocyIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb25fLAorICAgICJmdW5jdGlvbkhhbmRs
ZVdpdGhGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9uSGFuZGxlV2l0
aEZ1bmN0aW9uX3N0YWdlXywKKyAgICAiZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb246c3RhZ2U6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbk5hbWUsCisgICAgImZ1bmN0aW9uTmFt
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25OYW1lcywKKyAgICAiZnVuY3Rpb25O
YW1lcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25UeXBlLAorICAgICJmdW5jdGlv
blR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9ucywKKyAgICAiZnVuY3Rpb25z
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZW5lcmF0ZU1pcG1hcHNGb3JUZXh0dXJlXywKKyAg
ICAiZ2VuZXJhdGVNaXBtYXBzRm9yVGV4dHVyZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdl
b21ldHJ5RGVzY3JpcHRvcnMsCisgICAgImdlb21ldHJ5RGVzY3JpcHRvcnMiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGdldEJ5dGVzX2J5dGVzUGVyUm93X2J5dGVzUGVySW1hZ2VfZnJvbVJlZ2lv
bl9taXBtYXBMZXZlbF9zbGljZV8sCisgICAgImdldEJ5dGVzOmJ5dGVzUGVyUm93OmJ5dGVzUGVy
SW1hZ2U6ZnJvbVJlZ2lvbjptaXBtYXBMZXZlbDpzbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGdldEJ5dGVzX2J5dGVzUGVyUm93X2Zyb21SZWdpb25fbWlwbWFwTGV2ZWxfLAorICAgICJn
ZXRCeXRlczpieXRlc1BlclJvdzpmcm9tUmVnaW9uOm1pcG1hcExldmVsOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9uc19jb3VudF8sCisgICAgImdldERl
ZmF1bHRTYW1wbGVQb3NpdGlvbnM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXRT
YW1wbGVQb3NpdGlvbnNfY291bnRfLAorICAgICJnZXRTYW1wbGVQb3NpdGlvbnM6Y291bnQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnNfcmVnaW9uX21p
cExldmVsX3NsaWNlX3Jlc2V0Q291bnRlcnNfY291bnRlcnNCdWZmZXJfY291bnRlcnNCdWZmZXJP
ZmZzZXRfLAorICAgICJnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExldmVsOnNs
aWNlOnJlc2V0Q291bnRlcnM6Y291bnRlcnNCdWZmZXI6Y291bnRlcnNCdWZmZXJPZmZzZXQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChncm91cHMsCisgICAgImdyb3VwcyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoaGFzVW5pZmllZE1lbW9yeSwKKyAgICAiaGFzVW5pZmllZE1lbW9yeSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaGF6YXJkVHJhY2tpbmdNb2RlLAorICAgICJoYXphcmRUcmFj
a2luZ01vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhlYXAsCisgICAgImhlYXAiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGhlYXBCdWZmZXJTaXplQW5kQWxpZ25XaXRoTGVuZ3RoX29wdGlv
bnNfLAorICAgICJoZWFwQnVmZmVyU2l6ZUFuZEFsaWduV2l0aExlbmd0aDpvcHRpb25zOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaGVhcE9mZnNldCwKKyAgICAiaGVhcE9mZnNldCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoaGVhcFRleHR1cmVTaXplQW5kQWxpZ25XaXRoRGVzY3JpcHRvcl8s
CisgICAgImhlYXBUZXh0dXJlU2l6ZUFuZEFsaWduV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChoZWlnaHQsCisgICAgImhlaWdodCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoaG9yaXpvbnRhbCwKKyAgICAiaG9yaXpvbnRhbCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aG9yaXpvbnRhbFNhbXBsZVN0b3JhZ2UsCisgICAgImhvcml6b250YWxTYW1wbGVTdG9yYWdlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbWFnZWJsb2NrTWVtb3J5TGVuZ3RoRm9yRGltZW5zaW9u
c18sCisgICAgImltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCwKKyAgICAiaW1hZ2VibG9ja1Nh
bXBsZUxlbmd0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5kZXgsCisgICAgImluZGV4Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbmRleEJ1ZmZlciwKKyAgICAiaW5kZXhCdWZmZXIiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGluZGV4QnVmZmVySW5kZXgsCisgICAgImluZGV4QnVmZmVy
SW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGV4QnVmZmVyT2Zmc2V0LAorICAgICJp
bmRleEJ1ZmZlck9mZnNldCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5kZXhUeXBlLAorICAg
ICJpbmRleFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGlyZWN0Q29tcHV0ZUNvbW1h
bmRBdEluZGV4XywKKyAgICAiaW5kaXJlY3RDb21wdXRlQ29tbWFuZEF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChpbmRpcmVjdFJlbmRlckNvbW1hbmRBdEluZGV4XywKKyAgICAiaW5k
aXJlY3RSZW5kZXJDb21tYW5kQXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaGVy
aXRCdWZmZXJzLAorICAgICJpbmhlcml0QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aW5oZXJpdFBpcGVsaW5lU3RhdGUsCisgICAgImluaGVyaXRQaXBlbGluZVN0YXRlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChpbml0LAorICAgICJpbml0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChpbml0V2l0aEFyZ3VtZW50SW5kZXhfLAorICAgICJpbml0V2l0aEFyZ3VtZW50SW5kZXg6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aERpc3BhdGNoUXVldWVfLAorICAgICJpbml0
V2l0aERpc3BhdGNoUXVldWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEZ1bmN0
aW9uTmFtZV9ub2Rlc19vdXRwdXROb2RlX2F0dHJpYnV0ZXNfLAorICAgICJpbml0V2l0aEZ1bmN0
aW9uTmFtZTpub2RlczpvdXRwdXROb2RlOmF0dHJpYnV0ZXM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpbml0V2l0aE5hbWVfYXJndW1lbnRzX2NvbnRyb2xEZXBlbmRlbmNpZXNfLAorICAgICJp
bml0V2l0aE5hbWU6YXJndW1lbnRzOmNvbnRyb2xEZXBlbmRlbmNpZXM6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChpbml0V2l0aFNhbXBsZUNvdW50XywKKyAgICAiaW5pdFdpdGhTYW1wbGVDb3Vu
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoU2FtcGxlQ291bnRfaG9yaXpvbnRh
bF92ZXJ0aWNhbF8sCisgICAgImluaXRXaXRoU2FtcGxlQ291bnQ6aG9yaXpvbnRhbDp2ZXJ0aWNh
bDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlucHV0UHJpbWl0aXZlVG9wb2xvZ3ksCisgICAg
ImlucHV0UHJpbWl0aXZlVG9wb2xvZ3kiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluc2VydERl
YnVnQ2FwdHVyZUJvdW5kYXJ5LAorICAgICJpbnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFyeSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaW5zZXJ0RGVidWdTaWducG9zdF8sCisgICAgImluc2VydERl
YnVnU2lnbnBvc3Q6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnNlcnRMaWJyYXJpZXMsCisg
ICAgImluc2VydExpYnJhcmllcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5zdGFsbE5hbWUs
CisgICAgImluc3RhbGxOYW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZUNvdW50
LAorICAgICJpbnN0YW5jZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZURl
c2NyaXB0b3JCdWZmZXIsCisgICAgImluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlciIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0LAorICAgICJpbnN0
YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluc3Rh
bmNlRGVzY3JpcHRvclN0cmlkZSwKKyAgICAiaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZURlc2NyaXB0b3JUeXBlLAorICAgICJpbnN0YW5j
ZURlc2NyaXB0b3JUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZWRBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVzLAorICAgICJpbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRv
ciwKKyAgICAiaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQsCisgICAgImludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlvc3Vy
ZmFjZSwKKyAgICAiaW9zdXJmYWNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpb3N1cmZhY2VQ
bGFuZSwKKyAgICAiaW9zdXJmYWNlUGxhbmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzQWN0
aXZlLAorICAgICJpc0FjdGl2ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNBbGlhc2FibGUs
CisgICAgImlzQWxpYXNhYmxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0FscGhhVG9Db3Zl
cmFnZUVuYWJsZWQsCisgICAgImlzQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoaXNBbHBoYVRvT25lRW5hYmxlZCwKKyAgICAiaXNBbHBoYVRvT25lRW5hYmxl
ZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNCbGVuZGluZ0VuYWJsZWQsCisgICAgImlzQmxl
bmRpbmdFbmFibGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0NhcHR1cmluZywKKyAgICAi
aXNDYXB0dXJpbmciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzRGVwdGgyNFN0ZW5jaWw4UGl4
ZWxGb3JtYXRTdXBwb3J0ZWQsCisgICAgImlzRGVwdGgyNFN0ZW5jaWw4UGl4ZWxGb3JtYXRTdXBw
b3J0ZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzRGVwdGhUZXh0dXJlLAorICAgICJpc0Rl
cHRoVGV4dHVyZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNEZXB0aFdyaXRlRW5hYmxlZCwK
KyAgICAiaXNEZXB0aFdyaXRlRW5hYmxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNGcmFt
ZWJ1ZmZlck9ubHksCisgICAgImlzRnJhbWVidWZmZXJPbmx5Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpc0hlYWRsZXNzLAorICAgICJpc0hlYWRsZXNzIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChpc0xvd1Bvd2VyLAorICAgICJpc0xvd1Bvd2VyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChp
c1BhdGNoQ29udHJvbFBvaW50RGF0YSwKKyAgICAiaXNQYXRjaENvbnRyb2xQb2ludERhdGEiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGlzUGF0Y2hEYXRhLAorICAgICJpc1BhdGNoRGF0YSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaXNSYXN0ZXJpemF0aW9uRW5hYmxlZCwKKyAgICAiaXNSYXN0
ZXJpemF0aW9uRW5hYmxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNSZW1vdmFibGUsCisg
ICAgImlzUmVtb3ZhYmxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc1NoYXJlYWJsZSwKKyAg
ICAiaXNTaGFyZWFibGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzU3BhcnNlLAorICAgICJp
c1NwYXJzZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNUZXNzZWxsYXRpb25GYWN0b3JTY2Fs
ZUVuYWJsZWQsCisgICAgImlzVGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChrZXJuZWxFbmRUaW1lLAorICAgICJrZXJuZWxFbmRUaW1lIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChrZXJuZWxTdGFydFRpbWUsCisgICAgImtlcm5lbFN0YXJ0VGlt
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGFiZWwsCisgICAgImxhYmVsIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChsYW5ndWFnZVZlcnNpb24sCisgICAgImxhbmd1YWdlVmVyc2lvbiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobGF5ZXJBdEluZGV4XywKKyAgICAibGF5ZXJBdEluZGV4OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobGF5ZXJDb3VudCwKKyAgICAibGF5ZXJDb3VudCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobGF5ZXJzLAorICAgICJsYXllcnMiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGxheW91dHMsCisgICAgImxheW91dHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGxlbmd0aCwKKyAgICAibGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsZXZlbCwKKyAg
ICAibGV2ZWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxpYnJhcmllcywKKyAgICAibGlicmFy
aWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsaWJyYXJ5VHlwZSwKKyAgICAibGlicmFyeVR5
cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxpbmUsCisgICAgImxpbmUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGxpbmtlZEZ1bmN0aW9ucywKKyAgICAibGlua2VkRnVuY3Rpb25zIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChsb2FkQWN0aW9uLAorICAgICJsb2FkQWN0aW9uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChsb2NhdGlvbiwKKyAgICAibG9jYXRpb24iKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGxvY2F0aW9uTnVtYmVyLAorICAgICJsb2NhdGlvbk51bWJlciIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobG9kQXZlcmFnZSwKKyAgICAibG9kQXZlcmFnZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobG9kTWF4Q2xhbXAsCisgICAgImxvZE1heENsYW1wIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChsb2RNaW5DbGFtcCwKKyAgICAibG9kTWluQ2xhbXAiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGxvZ3MsCisgICAgImxvZ3MiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1hZ0Zp
bHRlciwKKyAgICAibWFnRmlsdGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYWtlQWxpYXNh
YmxlLAorICAgICJtYWtlQWxpYXNhYmxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXBQaHlz
aWNhbFRvU2NyZWVuQ29vcmRpbmF0ZXNfZm9yTGF5ZXJfLAorICAgICJtYXBQaHlzaWNhbFRvU2Ny
ZWVuQ29vcmRpbmF0ZXM6Zm9yTGF5ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXBTY3Jl
ZW5Ub1BoeXNpY2FsQ29vcmRpbmF0ZXNfZm9yTGF5ZXJfLAorICAgICJtYXBTY3JlZW5Ub1BoeXNp
Y2FsQ29vcmRpbmF0ZXM6Zm9yTGF5ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhBbmlz
b3Ryb3B5LAorICAgICJtYXhBbmlzb3Ryb3B5Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhB
cmd1bWVudEJ1ZmZlclNhbXBsZXJDb3VudCwKKyAgICAibWF4QXJndW1lbnRCdWZmZXJTYW1wbGVy
Q291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heEF2YWlsYWJsZVNpemVXaXRoQWxpZ25t
ZW50XywKKyAgICAibWF4QXZhaWxhYmxlU2l6ZVdpdGhBbGlnbm1lbnQ6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChtYXhCdWZmZXJMZW5ndGgsCisgICAgIm1heEJ1ZmZlckxlbmd0aCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobWF4Q2FsbFN0YWNrRGVwdGgsCisgICAgIm1heENhbGxTdGFja0Rl
cHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudCwK
KyAgICAibWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgsCisgICAgIm1heEZyYWdtZW50Q2FsbFN0YWNrRGVw
dGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudCwKKyAg
ICAibWF4S2VybmVsQnVmZmVyQmluZENvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhT
YW1wbGVDb3VudCwKKyAgICAibWF4U2FtcGxlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1heFRlc3NlbGxhdGlvbkZhY3RvciwKKyAgICAibWF4VGVzc2VsbGF0aW9uRmFjdG9yIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChtYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCwKKyAgICAibWF4
VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFRocmVh
ZHNQZXJUaHJlYWRncm91cCwKKyAgICAibWF4VGhyZWFkc1BlclRocmVhZGdyb3VwIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCwKKyAgICAibWF4
VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFRy
YW5zZmVyUmF0ZSwKKyAgICAibWF4VHJhbnNmZXJSYXRlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQsCisgICAgIm1heFZlcnRleEFtcGxpZmljYXRp
b25Db3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VmVydGV4QnVmZmVyQmluZENvdW50
LAorICAgICJtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1heFZlcnRleENhbGxTdGFja0RlcHRoLAorICAgICJtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobWVtYmVyQnlOYW1lXywKKyAgICAibWVtYmVyQnlOYW1l
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWVtYmVycywKKyAgICAibWVtYmVycyIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXNfY291bnRfLAorICAg
ICJtZW1vcnlCYXJyaWVyV2l0aFJlc291cmNlczpjb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzX2NvdW50X2FmdGVyU3RhZ2VzX2JlZm9yZVN0
YWdlc18sCisgICAgIm1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzOmNvdW50OmFmdGVyU3RhZ2Vz
OmJlZm9yZVN0YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1lbW9yeUJhcnJpZXJXaXRo
U2NvcGVfLAorICAgICJtZW1vcnlCYXJyaWVyV2l0aFNjb3BlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobWVtb3J5QmFycmllcldpdGhTY29wZV9hZnRlclN0YWdlc19iZWZvcmVTdGFnZXNfLAor
ICAgICJtZW1vcnlCYXJyaWVyV2l0aFNjb3BlOmFmdGVyU3RhZ2VzOmJlZm9yZVN0YWdlczoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG1pbkZpbHRlciwKKyAgICAibWluRmlsdGVyIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9y
bWF0XywKKyAgICAibWluaW11bUxpbmVhclRleHR1cmVBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1pbmltdW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9y
UGl4ZWxGb3JtYXRfLAorICAgICJtaW5pbXVtVGV4dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVs
Rm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWlwRmlsdGVyLAorICAgICJtaXBGaWx0
ZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1pcG1hcExldmVsQ291bnQsCisgICAgIm1pcG1h
cExldmVsQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1vdGlvbkVuZEJvcmRlck1vZGUs
CisgICAgIm1vdGlvbkVuZEJvcmRlck1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1vdGlv
bkVuZFRpbWUsCisgICAgIm1vdGlvbkVuZFRpbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1v
dGlvbktleWZyYW1lQ291bnQsCisgICAgIm1vdGlvbktleWZyYW1lQ291bnQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKG1vdGlvblN0YXJ0Qm9yZGVyTW9kZSwKKyAgICAibW90aW9uU3RhcnRCb3Jk
ZXJNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25TdGFydFRpbWUsCisgICAgIm1v
dGlvblN0YXJ0VGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobW90aW9uVHJhbnNmb3JtQnVm
ZmVyLAorICAgICJtb3Rpb25UcmFuc2Zvcm1CdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCwKKyAgICAibW90aW9uVHJhbnNmb3JtQnVmZmVy
T2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25UcmFuc2Zvcm1Db3VudCwKKyAg
ICAibW90aW9uVHJhbnNmb3JtQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG11dGFiaWxp
dHksCisgICAgIm11dGFiaWxpdHkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5hbWUsCisgICAg
Im5hbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZVdp
dGhEZXNjcmlwdG9yXywKKyAgICAibmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aERlc2NyaXB0
b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRo
U2l6ZV8sCisgICAgIm5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZVdpdGhTaXplOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobmV3QXJndW1lbnRFbmNvZGVyRm9yQnVmZmVyQXRJbmRleF8sCisgICAg
Im5ld0FyZ3VtZW50RW5jb2RlckZvckJ1ZmZlckF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzXywKKyAgICAibmV3QXJndW1lbnRF
bmNvZGVyV2l0aEFyZ3VtZW50czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FyZ3VtZW50
RW5jb2RlcldpdGhCdWZmZXJJbmRleF8sCisgICAgIm5ld0FyZ3VtZW50RW5jb2RlcldpdGhCdWZm
ZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FyZ3VtZW50RW5jb2RlcldpdGhC
dWZmZXJJbmRleF9yZWZsZWN0aW9uXywKKyAgICAibmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZl
ckluZGV4OnJlZmxlY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCaW5hcnlBcmNo
aXZlV2l0aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJuZXdCaW5hcnlBcmNoaXZlV2l0aERlc2Ny
aXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZmZXJXaXRoQnl0ZXNf
bGVuZ3RoX29wdGlvbnNfLAorICAgICJuZXdCdWZmZXJXaXRoQnl0ZXM6bGVuZ3RoOm9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHlfbGVuZ3Ro
X29wdGlvbnNfZGVhbGxvY2F0b3JfLAorICAgICJuZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHk6bGVu
Z3RoOm9wdGlvbnM6ZGVhbGxvY2F0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZm
ZXJXaXRoTGVuZ3RoX29wdGlvbnNfLAorICAgICJuZXdCdWZmZXJXaXRoTGVuZ3RoOm9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZmZXJXaXRoTGVuZ3RoX29wdGlvbnNfb2Zm
c2V0XywKKyAgICAibmV3QnVmZmVyV2l0aExlbmd0aDpvcHRpb25zOm9mZnNldDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhDb21tYW5kUXVldWVfLAorICAgICJu
ZXdDYXB0dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3Q2FwdHVyZVNjb3BlV2l0aERldmljZV8sCisgICAgIm5ld0NhcHR1cmVTY29wZVdpdGhEZXZp
Y2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21tYW5kUXVldWUsCisgICAgIm5ld0Nv
bW1hbmRRdWV1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tbWFuZFF1ZXVlV2l0aE1h
eENvbW1hbmRCdWZmZXJDb3VudF8sCisgICAgIm5ld0NvbW1hbmRRdWV1ZVdpdGhNYXhDb21tYW5k
QnVmZmVyQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXywKKyAgICAibmV3Q29tcHV0
ZVBpcGVsaW5lU3RhdGVXaXRoQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uczplcnJvcjoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jf
b3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
V2l0aERlc2NyaXB0b3I6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jfb3B0aW9uc19y
ZWZsZWN0aW9uX2Vycm9yXywKKyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3Jp
cHRvcjpvcHRpb25zOnJlZmxlY3Rpb246ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChu
ZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9jb21wbGV0aW9uSGFuZGxlcl8sCisg
ICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOmNvbXBsZXRpb25IYW5kbGVy
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVu
Y3Rpb25fZXJyb3JfLAorICAgICJuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpl
cnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0
aEZ1bmN0aW9uX29wdGlvbnNfY29tcGxldGlvbkhhbmRsZXJfLAorICAgICJuZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25fb3B0
aW9uc19yZWZsZWN0aW9uX2Vycm9yXywKKyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRo
RnVuY3Rpb246b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3Q291bnRlclNhbXBsZUJ1ZmZlcldpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3
Q291bnRlclNhbXBsZUJ1ZmZlcldpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3RGVmYXVsdExpYnJhcnksCisgICAgIm5ld0RlZmF1bHRMaWJyYXJ5Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChuZXdEZWZhdWx0TGlicmFyeVdpdGhCdW5kbGVfZXJyb3JfLAor
ICAgICJuZXdEZWZhdWx0TGlicmFyeVdpdGhCdW5kbGU6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9yXywKKyAgICAibmV3RGVw
dGhTdGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d0R5bmFtaWNMaWJyYXJ5X2Vycm9yXywKKyAgICAibmV3RHluYW1pY0xpYnJhcnk6ZXJyb3I6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdEeW5hbWljTGlicmFyeVdpdGhVUkxfZXJyb3JfLAor
ICAgICJuZXdEeW5hbWljTGlicmFyeVdpdGhVUkw6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdFdmVudCwKKyAgICAibmV3RXZlbnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d0ZlbmNlLAorICAgICJuZXdGZW5jZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RnVuY3Rp
b25XaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0Z1bmN0aW9uV2l0
aERlc2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChu
ZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3RnVuY3Rpb25XaXRoRGVz
Y3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0Z1bmN0aW9uV2l0aE5h
bWVfLAorICAgICJuZXdGdW5jdGlvbldpdGhOYW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3RnVuY3Rpb25XaXRoTmFtZV9jb25zdGFudFZhbHVlc19jb21wbGV0aW9uSGFuZGxlcl8sCisg
ICAgIm5ld0Z1bmN0aW9uV2l0aE5hbWU6Y29uc3RhbnRWYWx1ZXM6Y29tcGxldGlvbkhhbmRsZXI6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdGdW5jdGlvbldpdGhOYW1lX2NvbnN0YW50VmFs
dWVzX2Vycm9yXywKKyAgICAibmV3RnVuY3Rpb25XaXRoTmFtZTpjb25zdGFudFZhbHVlczplcnJv
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0hlYXBXaXRoRGVzY3JpcHRvcl8sCisgICAg
Im5ld0hlYXBXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0luZGly
ZWN0Q29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yX21heENvbW1hbmRDb3VudF9vcHRpb25zXywK
KyAgICAibmV3SW5kaXJlY3RDb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6bWF4Q29tbWFuZENv
dW50Om9wdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3Jfc3RhZ2VfLAorICAgICJuZXdJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5k
bGVyXywKKyAgICAibmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpjb21wbGV0
aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0
aW9uV2l0aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldp
dGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdp
dGhEYXRhX2Vycm9yXywKKyAgICAibmV3TGlicmFyeVdpdGhEYXRhOmVycm9yOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhGaWxlX2Vycm9yXywKKyAgICAibmV3TGlicmFy
eVdpdGhGaWxlOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhT
b3VyY2Vfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0xpYnJhcnlXaXRoU291
cmNlOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChu
ZXdMaWJyYXJ5V2l0aFNvdXJjZV9vcHRpb25zX2Vycm9yXywKKyAgICAibmV3TGlicmFyeVdpdGhT
b3VyY2U6b3B0aW9uczplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlX
aXRoU3RpdGNoZWREZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3TGlicmFy
eVdpdGhTdGl0Y2hlZERlc2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcl9lcnJvcl8sCisgICAg
Im5ld0xpYnJhcnlXaXRoU3RpdGNoZWREZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3TGlicmFyeVdpdGhVUkxfZXJyb3JfLAorICAgICJuZXdMaWJyYXJ5V2l0aFVS
TDplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1Jhc3Rlcml6YXRpb25SYXRlTWFw
V2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhEZXNjcmlw
dG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVtb3RlQnVmZmVyVmlld0ZvckRldmlj
ZV8sCisgICAgIm5ld1JlbW90ZUJ1ZmZlclZpZXdGb3JEZXZpY2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRldmljZV8sCisgICAgIm5ld1JlbW90ZVRl
eHR1cmVWaWV3Rm9yRGV2aWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXywKKyAgICAibmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zOmVycm9yOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlw
dG9yX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhE
ZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfY29tcGxldGlv
bkhhbmRsZXJfLAorICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0
aW9uczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1JlbmRl
clBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfLAor
ICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0aW9uczpyZWZsZWN0
aW9uOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0
ZVdpdGhUaWxlRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3
UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVzY3JpcHRvcjpvcHRpb25zOmNvbXBsZXRpb25I
YW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdp
dGhUaWxlRGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfLAorICAgICJuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVjdGlvbjplcnJv
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlwdG9y
XywKKyAgICAibmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdTaGFyZWRFdmVudCwKKyAgICAibmV3U2hhcmVkRXZlbnQiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKG5ld1NoYXJlZEV2ZW50SGFuZGxlLAorICAgICJuZXdTaGFyZWRFdmVudEhh
bmRsZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlXywK
KyAgICAibmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3U2hhcmVkVGV4dHVyZUhhbmRsZSwKKyAgICAibmV3U2hhcmVkVGV4dHVyZUhhbmRsZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobmV3U2hhcmVkVGV4dHVyZVdpdGhEZXNjcmlwdG9yXywKKyAg
ICAibmV3U2hhcmVkVGV4dHVyZVdpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3U2hhcmVkVGV4dHVyZVdpdGhIYW5kbGVfLAorICAgICJuZXdTaGFyZWRUZXh0dXJlV2l0
aEhhbmRsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVWaWV3V2l0aFBpeGVs
Rm9ybWF0XywKKyAgICAibmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdF90ZXh0dXJlVHlwZV9s
ZXZlbHNfc2xpY2VzXywKKyAgICAibmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6dGV4dHVy
ZVR5cGU6bGV2ZWxzOnNsaWNlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVW
aWV3V2l0aFBpeGVsRm9ybWF0X3RleHR1cmVUeXBlX2xldmVsc19zbGljZXNfc3dpenpsZV8sCisg
ICAgIm5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0OnRleHR1cmVUeXBlOmxldmVsczpzbGlj
ZXM6c3dpenpsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVXaXRoRGVzY3Jp
cHRvcl8sCisgICAgIm5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcl9pb3N1cmZhY2VfcGxhbmVfLAorICAgICJu
ZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6aW9zdXJmYWNlOnBsYW5lOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yX29mZnNldF8sCisgICAgIm5ld1RleHR1
cmVXaXRoRGVzY3JpcHRvcjpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdUZXh0
dXJlV2l0aERlc2NyaXB0b3Jfb2Zmc2V0X2J5dGVzUGVyUm93XywKKyAgICAibmV3VGV4dHVyZVdp
dGhEZXNjcmlwdG9yOm9mZnNldDpieXRlc1BlclJvdzoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdWaXNpYmxl
RnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3
VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcl9zdGFnZV8sCisgICAgIm5ld1Zpc2li
bGVGdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChub2RlcywKKyAgICAibm9kZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5vcm1hbGl6
ZWRDb29yZGluYXRlcywKKyAgICAibm9ybWFsaXplZENvb3JkaW5hdGVzIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChub3RpZnlMaXN0ZW5lcl9hdFZhbHVlX2Jsb2NrXywKKyAgICAibm90aWZ5TGlz
dGVuZXI6YXRWYWx1ZTpibG9jazoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9iamVjdEF0SW5k
ZXhlZFN1YnNjcmlwdF8sCisgICAgIm9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG9mZnNldCwKKyAgICAib2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChvcGFxdWUsCisgICAgIm9wYXF1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3B0aW1p
emVDb250ZW50c0ZvckNQVUFjY2Vzc18sCisgICAgIm9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nl
c3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNz
X3NsaWNlX2xldmVsXywKKyAgICAib3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2VzczpzbGljZTps
ZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nl
c3NfLAorICAgICJvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwob3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vzc19zbGljZV9sZXZlbF8sCisgICAg
Im9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChvcHRpbWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcl93aXRoUmFuZ2VfLAorICAg
ICJvcHRpbWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcjp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChvcHRpb25zLAorICAgICJvcHRpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChvdXRwdXROb2RlLAorICAgICJvdXRwdXROb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChv
dXRwdXRVUkwsCisgICAgIm91dHB1dFVSTCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGFyYWxs
ZWxSZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXywKKyAgICAicGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
cGFyYW1ldGVyQnVmZmVyU2l6ZUFuZEFsaWduLAorICAgICJwYXJhbWV0ZXJCdWZmZXJTaXplQW5k
QWxpZ24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhcmVudFJlbGF0aXZlTGV2ZWwsCisgICAg
InBhcmVudFJlbGF0aXZlTGV2ZWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhcmVudFJlbGF0
aXZlU2xpY2UsCisgICAgInBhcmVudFJlbGF0aXZlU2xpY2UiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHBhcmVudFRleHR1cmUsCisgICAgInBhcmVudFRleHR1cmUiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHBhdGNoQ29udHJvbFBvaW50Q291bnQsCisgICAgInBhdGNoQ29udHJvbFBvaW50Q291
bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhdGNoVHlwZSwKKyAgICAicGF0Y2hUeXBlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChwZWVyQ291bnQsCisgICAgInBlZXJDb3VudCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocGVlckdyb3VwSUQsCisgICAgInBlZXJHcm91cElEIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChwZWVySW5kZXgsCisgICAgInBlZXJJbmRleCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwocGh5c2ljYWxHcmFudWxhcml0eSwKKyAgICAicGh5c2ljYWxHcmFudWxhcml0
eSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGh5c2ljYWxTaXplRm9yTGF5ZXJfLAorICAgICJw
aHlzaWNhbFNpemVGb3JMYXllcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBpeGVsRm9ybWF0
LAorICAgICJwaXhlbEZvcm1hdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocG9pbnRlclR5cGUs
CisgICAgInBvaW50ZXJUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwb3BEZWJ1Z0dyb3Vw
LAorICAgICJwb3BEZWJ1Z0dyb3VwIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwcmVsb2FkZWRM
aWJyYXJpZXMsCisgICAgInByZWxvYWRlZExpYnJhcmllcyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocHJlcHJvY2Vzc29yTWFjcm9zLAorICAgICJwcmVwcm9jZXNzb3JNYWNyb3MiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHByZXNlbnQsCisgICAgInByZXNlbnQiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHByZXNlbnRBZnRlck1pbmltdW1EdXJhdGlvbl8sCisgICAgInByZXNlbnRBZnRlck1p
bmltdW1EdXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnRBdFRpbWVfLAor
ICAgICJwcmVzZW50QXRUaW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudERyYXdh
YmxlXywKKyAgICAicHJlc2VudERyYXdhYmxlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJl
c2VudERyYXdhYmxlX2FmdGVyTWluaW11bUR1cmF0aW9uXywKKyAgICAicHJlc2VudERyYXdhYmxl
OmFmdGVyTWluaW11bUR1cmF0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudERy
YXdhYmxlX2F0VGltZV8sCisgICAgInByZXNlbnREcmF3YWJsZTphdFRpbWU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChwcmVzZW50ZWRUaW1lLAorICAgICJwcmVzZW50ZWRUaW1lIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChwcmVzZXJ2ZUludmFyaWFuY2UsCisgICAgInByZXNlcnZlSW52YXJp
YW5jZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJpdmF0ZUZ1bmN0aW9ucywKKyAgICAicHJp
dmF0ZUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHVzaERlYnVnR3JvdXBfLAor
ICAgICJwdXNoRGVidWdHcm91cDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJBZGRyZXNzTW9k
ZSwKKyAgICAickFkZHJlc3NNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyYXN0ZXJTYW1w
bGVDb3VudCwKKyAgICAicmFzdGVyU2FtcGxlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHJhc3Rlcml6YXRpb25SYXRlTWFwLAorICAgICJyYXN0ZXJpemF0aW9uUmF0ZU1hcCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVl
blNpemVfLAorICAgICJyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRv
cldpdGhTY3JlZW5TaXplX2xheWVyXywKKyAgICAicmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlw
dG9yV2l0aFNjcmVlblNpemU6bGF5ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyYXN0ZXJp
emF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZV9sYXllckNvdW50X2xheWVyc18s
CisgICAgInJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOmxheWVy
Q291bnQ6bGF5ZXJzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVhZE1hc2ssCisgICAgInJl
YWRNYXNrIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZWFkV3JpdGVUZXh0dXJlU3VwcG9ydCwK
KyAgICAicmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJl
Y29tbWVuZGVkTWF4V29ya2luZ1NldFNpemUsCisgICAgInJlY29tbWVuZGVkTWF4V29ya2luZ1Nl
dFNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlZml0QWNjZWxlcmF0aW9uU3RydWN0dXJl
X2Rlc2NyaXB0b3JfZGVzdGluYXRpb25fc2NyYXRjaEJ1ZmZlcl9zY3JhdGNoQnVmZmVyT2Zmc2V0
XywKKyAgICAicmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6ZGVzY3JpcHRvcjpkZXN0aW5hdGlv
bjpzY3JhdGNoQnVmZmVyOnNjcmF0Y2hCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChyZWdpc3RyeUlELAorICAgICJyZWdpc3RyeUlEIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChyZW1vdGVTdG9yYWdlQnVmZmVyLAorICAgICJyZW1vdGVTdG9yYWdlQnVmZmVyIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChyZW1vdGVTdG9yYWdlVGV4dHVyZSwKKyAgICAicmVtb3RlU3RvcmFn
ZVRleHR1cmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbW92ZUFsbERlYnVnTWFya2VycywK
KyAgICAicmVtb3ZlQWxsRGVidWdNYXJrZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZW5k
ZXJDb21tYW5kRW5jb2RlciwKKyAgICAicmVuZGVyQ29tbWFuZEVuY29kZXIiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3JfLAorICAgICJy
ZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocmVuZGVyUGFzc0Rlc2NyaXB0b3IsCisgICAgInJlbmRlclBhc3NEZXNjcmlwdG9yIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChyZW5kZXJUYXJnZXRBcnJheUxlbmd0aCwKKyAgICAicmVuZGVy
VGFyZ2V0QXJyYXlMZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbmRlclRhcmdldEhl
aWdodCwKKyAgICAicmVuZGVyVGFyZ2V0SGVpZ2h0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChy
ZW5kZXJUYXJnZXRXaWR0aCwKKyAgICAicmVuZGVyVGFyZ2V0V2lkdGgiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHJlcGxhY2VSZWdpb25fbWlwbWFwTGV2ZWxfc2xpY2Vfd2l0aEJ5dGVzX2J5dGVz
UGVyUm93X2J5dGVzUGVySW1hZ2VfLAorICAgICJyZXBsYWNlUmVnaW9uOm1pcG1hcExldmVsOnNs
aWNlOndpdGhCeXRlczpieXRlc1BlclJvdzpieXRlc1BlckltYWdlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwocmVwbGFjZVJlZ2lvbl9taXBtYXBMZXZlbF93aXRoQnl0ZXNfYnl0ZXNQZXJSb3df
LAorICAgICJyZXBsYWNlUmVnaW9uOm1pcG1hcExldmVsOndpdGhCeXRlczpieXRlc1BlclJvdzoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlcXVpcmVkLAorICAgICJyZXF1aXJlZCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocmVzZXQsCisgICAgInJlc2V0Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChyZXNldENvbW1hbmRzSW5CdWZmZXJfd2l0aFJhbmdlXywKKyAgICAicmVzZXRDb21tYW5k
c0luQnVmZmVyOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc2V0VGV4dHVy
ZUFjY2Vzc0NvdW50ZXJzX3JlZ2lvbl9taXBMZXZlbF9zbGljZV8sCisgICAgInJlc2V0VGV4dHVy
ZUFjY2Vzc0NvdW50ZXJzOnJlZ2lvbjptaXBMZXZlbDpzbGljZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHJlc2V0V2l0aFJhbmdlXywKKyAgICAicmVzZXRXaXRoUmFuZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChyZXNvbHZlQ291bnRlclJhbmdlXywKKyAgICAicmVzb2x2ZUNvdW50ZXJS
YW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc29sdmVDb3VudGVyc19pblJhbmdlX2Rl
c3RpbmF0aW9uQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0XywKKyAgICAicmVzb2x2ZUNvdW50ZXJz
OmluUmFuZ2U6ZGVzdGluYXRpb25CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChyZXNvbHZlRGVwdGhQbGFuZSwKKyAgICAicmVzb2x2ZURlcHRoUGxhbmUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc29sdmVMZXZlbCwKKyAgICAicmVzb2x2ZUxldmVs
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNvbHZlU2xpY2UsCisgICAgInJlc29sdmVTbGlj
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb2x2ZVRleHR1cmUsCisgICAgInJlc29sdmVU
ZXh0dXJlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZU9wdGlvbnMsCisgICAgInJl
c291cmNlT3B0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb3VyY2VTdGF0ZUNvbW1h
bmRFbmNvZGVyLAorICAgICJyZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXywK
KyAgICAicmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IsCisgICAgInJlc291
cmNlU3RhdGVQYXNzRGVzY3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmV0YWluZWRS
ZWZlcmVuY2VzLAorICAgICJyZXRhaW5lZFJlZmVyZW5jZXMiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHJnYkJsZW5kT3BlcmF0aW9uLAorICAgICJyZ2JCbGVuZE9wZXJhdGlvbiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwocm9vdFJlc291cmNlLAorICAgICJyb290UmVzb3VyY2UiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNBZGRyZXNzTW9kZSwKKyAgICAic0FkZHJlc3NNb2RlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzYW1wbGVCdWZmZXIsCisgICAgInNhbXBsZUJ1ZmZlciIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2FtcGxlQnVmZmVyQXR0YWNobWVudHMsCisgICAgInNhbXBsZUJ1
ZmZlckF0dGFjaG1lbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzYW1wbGVDb3VudCwKKyAg
ICAic2FtcGxlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNhbXBsZUNvdW50ZXJzSW5C
dWZmZXJfYXRTYW1wbGVJbmRleF93aXRoQmFycmllcl8sCisgICAgInNhbXBsZUNvdW50ZXJzSW5C
dWZmZXI6YXRTYW1wbGVJbmRleDp3aXRoQmFycmllcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNhbXBsZVRpbWVzdGFtcHNfZ3B1VGltZXN0YW1wXywKKyAgICAic2FtcGxlVGltZXN0YW1wczpn
cHVUaW1lc3RhbXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzY3JlZW5TaXplLAorICAgICJz
Y3JlZW5TaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXJpYWxpemVUb1VSTF9lcnJvcl8s
CisgICAgInNlcmlhbGl6ZVRvVVJMOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRBY2NlbGVyYXRp
b25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFj
Y2VsZXJhdGlvblN0cnVjdHVyZV9hdEluZGV4XywKKyAgICAic2V0QWNjZWxlcmF0aW9uU3RydWN0
dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBY2Nlc3NfLAorICAgICJz
ZXRBY2Nlc3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBbGxvd0R1cGxpY2F0ZUludGVy
c2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbl8sCisgICAgInNldEFsbG93RHVwbGljYXRlSW50ZXJz
ZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QWxs
b3dHUFVPcHRpbWl6ZWRDb250ZW50c18sCisgICAgInNldEFsbG93R1BVT3B0aW1pemVkQ29udGVu
dHM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBbHBoYUJsZW5kT3BlcmF0aW9uXywKKyAg
ICAic2V0QWxwaGFCbGVuZE9wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFs
cGhhVG9Db3ZlcmFnZUVuYWJsZWRfLAorICAgICJzZXRBbHBoYVRvQ292ZXJhZ2VFbmFibGVkOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QWxwaGFUb09uZUVuYWJsZWRfLAorICAgICJzZXRB
bHBoYVRvT25lRW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFyZ3VtZW50QnVm
ZmVyX29mZnNldF8sCisgICAgInNldEFyZ3VtZW50QnVmZmVyOm9mZnNldDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEFyZ3VtZW50QnVmZmVyX3N0YXJ0T2Zmc2V0X2FycmF5RWxlbWVudF8s
CisgICAgInNldEFyZ3VtZW50QnVmZmVyOnN0YXJ0T2Zmc2V0OmFycmF5RWxlbWVudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEFyZ3VtZW50SW5kZXhfLAorICAgICJzZXRBcmd1bWVudElu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QXJndW1lbnRzXywKKyAgICAic2V0QXJn
dW1lbnRzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QXJyYXlMZW5ndGhfLAorICAgICJz
ZXRBcnJheUxlbmd0aDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEF0dHJpYnV0ZXNfLAor
ICAgICJzZXRBdHRyaWJ1dGVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QmFja0ZhY2VT
dGVuY2lsXywKKyAgICAic2V0QmFja0ZhY2VTdGVuY2lsOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0QmFycmllciwKKyAgICAic2V0QmFycmllciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0QmluYXJ5QXJjaGl2ZXNfLAorICAgICJzZXRCaW5hcnlBcmNoaXZlczoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEJpbmFyeUZ1bmN0aW9uc18sCisgICAgInNldEJpbmFyeUZ1bmN0aW9u
czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJsZW5kQ29sb3JSZWRfZ3JlZW5fYmx1ZV9h
bHBoYV8sCisgICAgInNldEJsZW5kQ29sb3JSZWQ6Z3JlZW46Ymx1ZTphbHBoYToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEJsZW5kaW5nRW5hYmxlZF8sCisgICAgInNldEJsZW5kaW5nRW5h
YmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJvcmRlckNvbG9yXywKKyAgICAic2V0
Qm9yZGVyQ29sb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCb3VuZGluZ0JveEJ1ZmZl
cl8sCisgICAgInNldEJvdW5kaW5nQm94QnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXRfLAorICAgICJzZXRCb3VuZGluZ0JveEJ1ZmZlck9m
ZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyc18sCisg
ICAgInNldEJvdW5kaW5nQm94QnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJv
dW5kaW5nQm94Q291bnRfLAorICAgICJzZXRCb3VuZGluZ0JveENvdW50OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0Qm91bmRpbmdCb3hTdHJpZGVfLAorICAgICJzZXRCb3VuZGluZ0JveFN0
cmlkZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJ1ZmZlcl8sCisgICAgInNldEJ1ZmZl
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8sCisg
ICAgInNldEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEJ1ZmZlckluZGV4XywKKyAgICAic2V0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRCdWZmZXJPZmZzZXRfYXRJbmRleF8sCisgICAgInNldEJ1ZmZlck9mZnNldDphdElu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5n
ZV8sCisgICAgInNldEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRCeXRlc19sZW5ndGhfYXRJbmRleF8sCisgICAgInNldEJ5dGVzOmxlbmd0aDph
dEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q2FwdHVyZU9iamVjdF8sCisgICAg
InNldENhcHR1cmVPYmplY3Q6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDbGVhckNvbG9y
XywKKyAgICAic2V0Q2xlYXJDb2xvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENsZWFy
RGVwdGhfLAorICAgICJzZXRDbGVhckRlcHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
Q2xlYXJTdGVuY2lsXywKKyAgICAic2V0Q2xlYXJTdGVuY2lsOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0Q29sb3JTdG9yZUFjdGlvbl9hdEluZGV4XywKKyAgICAic2V0Q29sb3JTdG9yZUFj
dGlvbjphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29sb3JTdG9yZUFjdGlv
bk9wdGlvbnNfYXRJbmRleF8sCisgICAgInNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zOmF0SW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb21tYW5kVHlwZXNfLAorICAgICJzZXRD
b21tYW5kVHlwZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb21wYXJlRnVuY3Rpb25f
LAorICAgICJzZXRDb21wYXJlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRD
b21wdXRlRnVuY3Rpb25fLAorICAgICJzZXRDb21wdXRlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZV8sCisgICAgInNldENvbXB1dGVQaXBl
bGluZVN0YXRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVfYXRJbmRleF8sCisgICAgInNldENvbXB1dGVQaXBlbGluZVN0YXRlOmF0SW5kZXg6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZXNfd2l0aFJhbmdlXywK
KyAgICAic2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldENvbnN0YW50QmxvY2tBbGlnbm1lbnRfLAorICAgICJzZXRDb25zdGFudEJs
b2NrQWxpZ25tZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29uc3RhbnRWYWx1ZV90
eXBlX2F0SW5kZXhfLAorICAgICJzZXRDb25zdGFudFZhbHVlOnR5cGU6YXRJbmRleDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldENvbnN0YW50VmFsdWVfdHlwZV93aXRoTmFtZV8sCisgICAg
InNldENvbnN0YW50VmFsdWU6dHlwZTp3aXRoTmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldENvbnN0YW50VmFsdWVzXywKKyAgICAic2V0Q29uc3RhbnRWYWx1ZXM6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRDb25zdGFudFZhbHVlc190eXBlX3dpdGhSYW5nZV8sCisgICAgInNl
dENvbnN0YW50VmFsdWVzOnR5cGU6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0Q29udHJvbERlcGVuZGVuY2llc18sCisgICAgInNldENvbnRyb2xEZXBlbmRlbmNpZXM6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb3VudGVyU2V0XywKKyAgICAic2V0Q291bnRlclNl
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENwdUNhY2hlTW9kZV8sCisgICAgInNldENw
dUNhY2hlTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEN1bGxNb2RlXywKKyAgICAi
c2V0Q3VsbE1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREYXRhVHlwZV8sCisgICAg
InNldERhdGFUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVmYXVsdENhcHR1cmVT
Y29wZV8sCisgICAgInNldERlZmF1bHRDYXB0dXJlU2NvcGU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXREZWZhdWx0UmFzdGVyU2FtcGxlQ291bnRfLAorICAgICJzZXREZWZhdWx0UmFzdGVy
U2FtcGxlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aF8sCisgICAgInNl
dERlcHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhBdHRhY2htZW50XywKKyAg
ICAic2V0RGVwdGhBdHRhY2htZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhB
dHRhY2htZW50UGl4ZWxGb3JtYXRfLAorICAgICJzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1h
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoQmlhc19zbG9wZVNjYWxlX2NsYW1w
XywKKyAgICAic2V0RGVwdGhCaWFzOnNsb3BlU2NhbGU6Y2xhbXA6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXREZXB0aENsaXBNb2RlXywKKyAgICAic2V0RGVwdGhDbGlwTW9kZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uXywKKyAgICAic2V0RGVw
dGhDb21wYXJlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aEZhaWx1
cmVPcGVyYXRpb25fLAorICAgICJzZXREZXB0aEZhaWx1cmVPcGVyYXRpb246Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXREZXB0aFBsYW5lXywKKyAgICAic2V0RGVwdGhQbGFuZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoUmVzb2x2ZUZpbHRlcl8sCisgICAgInNldERlcHRo
UmVzb2x2ZUZpbHRlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoU3RlbmNpbFBh
c3NPcGVyYXRpb25fLAorICAgICJzZXREZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhTdGVuY2lsU3RhdGVfLAorICAgICJzZXREZXB0aFN0
ZW5jaWxTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoU3RvcmVBY3Rpb25f
LAorICAgICJzZXREZXB0aFN0b3JlQWN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnNfLAorICAgICJzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9u
czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoV3JpdGVFbmFibGVkXywKKyAgICAi
c2V0RGVwdGhXcml0ZUVuYWJsZWQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXN0aW5h
dGlvbl8sCisgICAgInNldERlc3RpbmF0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yXywKKyAgICAic2V0RGVzdGluYXRpb25BbHBoYUJs
ZW5kRmFjdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVzdGluYXRpb25SR0JCbGVu
ZEZhY3Rvcl8sCisgICAgInNldERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXREaXNwYXRjaFR5cGVfLAorICAgICJzZXREaXNwYXRjaFR5cGU6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleF8sCisgICAg
InNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4XywKKyAgICAic2V0RW5kT2ZGcmFnbWVudFNhbXBsZUlu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleF8s
CisgICAgInNldEVuZE9mVmVydGV4U2FtcGxlSW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRFcnJvck9wdGlvbnNfLAorICAgICJzZXRFcnJvck9wdGlvbnM6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRGYXN0TWF0aEVuYWJsZWRfLAorICAgICJzZXRGYXN0TWF0aEVuYWJsZWQ6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGb3JtYXRfLAorICAgICJzZXRGb3JtYXQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZV9h
dEJ1ZmZlckluZGV4XywKKyAgICAic2V0RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRC
dWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50QWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9uc18sCisgICAgInNldEZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0
aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50QnVmZmVyX29mZnNldF9h
dEluZGV4XywKKyAgICAic2V0RnJhZ21lbnRCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEJ1ZmZlck9mZnNldF9hdEluZGV4XywKKyAgICAi
c2V0RnJhZ21lbnRCdWZmZXJPZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEZyYWdtZW50QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5nZV8sCisgICAgInNldEZyYWdtZW50
QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZy
YWdtZW50Qnl0ZXNfbGVuZ3RoX2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudEJ5dGVzOmxlbmd0
aDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRGdW5jdGlvbl8s
CisgICAgInNldEZyYWdtZW50RnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRG
cmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNl
dEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193
aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50
TGlua2VkRnVuY3Rpb25zXywKKyAgICAic2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnM6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFByZWxvYWRlZExpYnJhcmllc18sCisgICAg
InNldEZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVfYXRJbmRleF8sCisgICAgInNldEZyYWdtZW50U2FtcGxl
clN0YXRlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFNhbXBs
ZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdEluZGV4XywKKyAgICAic2V0RnJhZ21l
bnRTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9k
TWF4Q2xhbXBzX3dpdGhSYW5nZV8sCisgICAgInNldEZyYWdtZW50U2FtcGxlclN0YXRlczpsb2RN
aW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEZyYWdtZW50U2FtcGxlclN0YXRlc193aXRoUmFuZ2VfLAorICAgICJzZXRGcmFnbWVudFNh
bXBsZXJTdGF0ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21l
bnRUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudFRleHR1cmU6YXRJbmRleDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50VGV4dHVyZXNfd2l0aFJhbmdlXywKKyAg
ICAic2V0RnJhZ21lbnRUZXh0dXJlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJz
ZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVy
UmFuZ2VfLAorICAgICJzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVy
UmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcm9udEZhY2VTdGVuY2lsXywKKyAg
ICAic2V0RnJvbnRGYWNlU3RlbmNpbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyb250
RmFjaW5nV2luZGluZ18sCisgICAgInNldEZyb250RmFjaW5nV2luZGluZzoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEZ1bmN0aW9uX2F0SW5kZXhfLAorICAgICJzZXRGdW5jdGlvbjphdElu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnVuY3Rpb25Db3VudF8sCisgICAgInNl
dEZ1bmN0aW9uQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGdW5jdGlvbkdyYXBo
c18sCisgICAgInNldEZ1bmN0aW9uR3JhcGhzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RnVuY3Rpb25OYW1lXywKKyAgICAic2V0RnVuY3Rpb25OYW1lOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0RnVuY3Rpb25zXywKKyAgICAic2V0RnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0RnVuY3Rpb25zX3dpdGhSYW5nZV8sCisgICAgInNldEZ1bmN0aW9uczp3aXRo
UmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRHZW9tZXRyeURlc2NyaXB0b3JzXywK
KyAgICAic2V0R2VvbWV0cnlEZXNjcmlwdG9yczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEdyb3Vwc18sCisgICAgInNldEdyb3VwczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEhh
emFyZFRyYWNraW5nTW9kZV8sCisgICAgInNldEhhemFyZFRyYWNraW5nTW9kZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEhlaWdodF8sCisgICAgInNldEhlaWdodDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEltYWdlYmxvY2tTYW1wbGVMZW5ndGhfLAorICAgICJzZXRJbWFnZWJs
b2NrU2FtcGxlTGVuZ3RoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW1hZ2VibG9ja1dp
ZHRoX2hlaWdodF8sCisgICAgInNldEltYWdlYmxvY2tXaWR0aDpoZWlnaHQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRJbmRleF8sCisgICAgInNldEluZGV4OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0SW5kZXhCdWZmZXJfLAorICAgICJzZXRJbmRleEJ1ZmZlcjoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEluZGV4QnVmZmVySW5kZXhfLAorICAgICJzZXRJbmRleEJ1ZmZl
ckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kZXhCdWZmZXJPZmZzZXRfLAor
ICAgICJzZXRJbmRleEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldElu
ZGV4VHlwZV8sCisgICAgInNldEluZGV4VHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEluZGlyZWN0Q29tbWFuZEJ1ZmZlcl9hdEluZGV4XywKKyAgICAic2V0SW5kaXJlY3RDb21tYW5k
QnVmZmVyOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmRpcmVjdENvbW1h
bmRCdWZmZXJzX3dpdGhSYW5nZV8sCisgICAgInNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnM6d2l0
aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5oZXJpdEJ1ZmZlcnNfLAorICAg
ICJzZXRJbmhlcml0QnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluaGVyaXRQ
aXBlbGluZVN0YXRlXywKKyAgICAic2V0SW5oZXJpdFBpcGVsaW5lU3RhdGU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRJbnB1dFByaW1pdGl2ZVRvcG9sb2d5XywKKyAgICAic2V0SW5wdXRQ
cmltaXRpdmVUb3BvbG9neToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluc2VydExpYnJh
cmllc18sCisgICAgInNldEluc2VydExpYnJhcmllczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEluc3RhbGxOYW1lXywKKyAgICAic2V0SW5zdGFsbE5hbWU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRJbnN0YW5jZUNvdW50XywKKyAgICAic2V0SW5zdGFuY2VDb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcl8sCisgICAgInNl
dEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldElu
c3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldF8sCisgICAgInNldEluc3RhbmNlRGVzY3JpcHRv
ckJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlRGVzY3Jp
cHRvclN0cmlkZV8sCisgICAgInNldEluc3RhbmNlRGVzY3JpcHRvclN0cmlkZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvclR5cGVfLAorICAgICJzZXRJbnN0
YW5jZURlc2NyaXB0b3JUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFuY2Vk
QWNjZWxlcmF0aW9uU3RydWN0dXJlc18sCisgICAgInNldEluc3RhbmNlZEFjY2VsZXJhdGlvblN0
cnVjdHVyZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
OmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlX2F0SW5kZXhfLAorICAgICJzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlT2Zmc2V0XywKKyAgICAic2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dp
dGhCdWZmZXJSYW5nZV8sCisgICAgInNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzOndpdGhC
dWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVzX3dpdGhSYW5nZV8sCisgICAgInNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVz
OndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEtlcm5lbEJ1ZmZlcl9vZmZz
ZXRfYXRJbmRleF8sCisgICAgInNldEtlcm5lbEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldExhYmVsXywKKyAgICAic2V0TGFiZWw6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRMYW5ndWFnZVZlcnNpb25fLAorICAgICJzZXRMYW5ndWFnZVZlcnNp
b246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMYXllcl9hdEluZGV4XywKKyAgICAic2V0
TGF5ZXI6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldExldmVsXywKKyAgICAi
c2V0TGV2ZWw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMaWJyYXJpZXNfLAorICAgICJz
ZXRMaWJyYXJpZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMaWJyYXJ5VHlwZV8sCisg
ICAgInNldExpYnJhcnlUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TGlua2VkRnVu
Y3Rpb25zXywKKyAgICAic2V0TGlua2VkRnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0TG9hZEFjdGlvbl8sCisgICAgInNldExvYWRBY3Rpb246Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRMb2RBdmVyYWdlXywKKyAgICAic2V0TG9kQXZlcmFnZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldExvZE1heENsYW1wXywKKyAgICAic2V0TG9kTWF4Q2xhbXA6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRMb2RNaW5DbGFtcF8sCisgICAgInNldExvZE1pbkNsYW1w
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWFnRmlsdGVyXywKKyAgICAic2V0TWFnRmls
dGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4QW5pc290cm9weV8sCisgICAgInNl
dE1heEFuaXNvdHJvcHk6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhDYWxsU3RhY2tE
ZXB0aF8sCisgICAgInNldE1heENhbGxTdGFja0RlcHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0TWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnRfLAorICAgICJzZXRNYXhGcmFnbWVudEJ1
ZmZlckJpbmRDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heEZyYWdtZW50Q2Fs
bFN0YWNrRGVwdGhfLAorICAgICJzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRoOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4S2VybmVsQnVmZmVyQmluZENvdW50XywKKyAgICAic2V0
TWF4S2VybmVsQnVmZmVyQmluZENvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4
VGVzc2VsbGF0aW9uRmFjdG9yXywKKyAgICAic2V0TWF4VGVzc2VsbGF0aW9uRmFjdG9yOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXBfLAor
ICAgICJzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldE1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudF8sCisgICAgInNldE1heFZlcnRl
eEFtcGxpZmljYXRpb25Db3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heFZlcnRl
eEJ1ZmZlckJpbmRDb3VudF8sCisgICAgInNldE1heFZlcnRleEJ1ZmZlckJpbmRDb3VudDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heFZlcnRleENhbGxTdGFja0RlcHRoXywKKyAgICAi
c2V0TWF4VmVydGV4Q2FsbFN0YWNrRGVwdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRN
aW5GaWx0ZXJfLAorICAgICJzZXRNaW5GaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRNaXBGaWx0ZXJfLAorICAgICJzZXRNaXBGaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRNaXBtYXBMZXZlbENvdW50XywKKyAgICAic2V0TWlwbWFwTGV2ZWxDb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvbkVuZEJvcmRlck1vZGVfLAorICAgICJzZXRNb3Rp
b25FbmRCb3JkZXJNb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9uRW5kVGlt
ZV8sCisgICAgInNldE1vdGlvbkVuZFRpbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRN
b3Rpb25LZXlmcmFtZUNvdW50XywKKyAgICAic2V0TW90aW9uS2V5ZnJhbWVDb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvblN0YXJ0Qm9yZGVyTW9kZV8sCisgICAgInNldE1v
dGlvblN0YXJ0Qm9yZGVyTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvblN0
YXJ0VGltZV8sCisgICAgInNldE1vdGlvblN0YXJ0VGltZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlcl8sCisgICAgInNldE1vdGlvblRyYW5zZm9ybUJ1
ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlck9m
ZnNldF8sCisgICAgInNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldE1vdGlvblRyYW5zZm9ybUNvdW50XywKKyAgICAic2V0TW90aW9uVHJh
bnNmb3JtQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNdXRhYmlsaXR5XywKKyAg
ICAic2V0TXV0YWJpbGl0eToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE5hbWVfLAorICAg
ICJzZXROYW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Tm9kZXNfLAorICAgICJzZXRO
b2RlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE5vcm1hbGl6ZWRDb29yZGluYXRlc18s
CisgICAgInNldE5vcm1hbGl6ZWRDb29yZGluYXRlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfLAorICAgICJzZXRPYmplY3Q6YXRJbmRleGVk
U3Vic2NyaXB0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T2Zmc2V0XywKKyAgICAic2V0
T2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3BhcXVlXywKKyAgICAic2V0T3Bh
cXVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rp
b25GdW5jdGlvbldpdGhTaWduYXR1cmVfYXRJbmRleF8sCisgICAgInNldE9wYXF1ZVRyaWFuZ2xl
SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aFNpZ25h
dHVyZV93aXRoUmFuZ2VfLAorICAgICJzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0
aW9uV2l0aFNpZ25hdHVyZTp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRP
cHRpb25zXywKKyAgICAic2V0T3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE91
dHB1dE5vZGVfLAorICAgICJzZXRPdXRwdXROb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0T3V0cHV0VVJMXywKKyAgICAic2V0T3V0cHV0VVJMOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0UGl4ZWxGb3JtYXRfLAorICAgICJzZXRQaXhlbEZvcm1hdDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFByZWxvYWRlZExpYnJhcmllc18sCisgICAgInNldFByZWxvYWRlZExpYnJh
cmllczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFByZXByb2Nlc3Nvck1hY3Jvc18sCisg
ICAgInNldFByZXByb2Nlc3Nvck1hY3JvczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFBy
ZXNlcnZlSW52YXJpYW5jZV8sCisgICAgInNldFByZXNlcnZlSW52YXJpYW5jZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFByaXZhdGVGdW5jdGlvbnNfLAorICAgICJzZXRQcml2YXRlRnVu
Y3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UHVyZ2VhYmxlU3RhdGVfLAorICAg
ICJzZXRQdXJnZWFibGVTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJBZGRyZXNz
TW9kZV8sCisgICAgInNldFJBZGRyZXNzTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFJhc3RlclNhbXBsZUNvdW50XywKKyAgICAic2V0UmFzdGVyU2FtcGxlQ291bnQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRSYXN0ZXJpemF0aW9uRW5hYmxlZF8sCisgICAgInNldFJhc3Rl
cml6YXRpb25FbmFibGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmFzdGVyaXphdGlv
blJhdGVNYXBfLAorICAgICJzZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFJlYWRNYXNrXywKKyAgICAic2V0UmVhZE1hc2s6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRSZW5kZXJQaXBlbGluZVN0YXRlXywKKyAgICAic2V0UmVuZGVyUGlwZWxp
bmVTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlbmRlclBpcGVsaW5lU3RhdGVf
YXRJbmRleF8sCisgICAgInNldFJlbmRlclBpcGVsaW5lU3RhdGU6YXRJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFJlbmRlclBpcGVsaW5lU3RhdGVzX3dpdGhSYW5nZV8sCisgICAg
InNldFJlbmRlclBpcGVsaW5lU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoXywKKyAgICAic2V0UmVuZGVyVGFyZ2V0QXJy
YXlMZW5ndGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZW5kZXJUYXJnZXRIZWlnaHRf
LAorICAgICJzZXRSZW5kZXJUYXJnZXRIZWlnaHQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRSZW5kZXJUYXJnZXRXaWR0aF8sCisgICAgInNldFJlbmRlclRhcmdldFdpZHRoOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0UmVzb2x2ZURlcHRoUGxhbmVfLAorICAgICJzZXRSZXNvbHZl
RGVwdGhQbGFuZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlc29sdmVMZXZlbF8sCisg
ICAgInNldFJlc29sdmVMZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlc29sdmVT
bGljZV8sCisgICAgInNldFJlc29sdmVTbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFJlc29sdmVUZXh0dXJlXywKKyAgICAic2V0UmVzb2x2ZVRleHR1cmU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRSZXNvdXJjZU9wdGlvbnNfLAorICAgICJzZXRSZXNvdXJjZU9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZXRhaW5lZFJlZmVyZW5jZXNfLAorICAgICJz
ZXRSZXRhaW5lZFJlZmVyZW5jZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZ2JCbGVu
ZE9wZXJhdGlvbl8sCisgICAgInNldFJnYkJsZW5kT3BlcmF0aW9uOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U0FkZHJlc3NNb2RlXywKKyAgICAic2V0U0FkZHJlc3NNb2RlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlQnVmZmVyXywKKyAgICAic2V0U2FtcGxlQnVmZmVy
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlQ291bnRfLAorICAgICJzZXRTYW1w
bGVDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNhbXBsZVBvc2l0aW9uc19jb3Vu
dF8sCisgICAgInNldFNhbXBsZVBvc2l0aW9uczpjb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFNhbXBsZXJTdGF0ZV9hdEluZGV4XywKKyAgICAic2V0U2FtcGxlclN0YXRlOmF0SW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTYW1wbGVyU3RhdGVfbG9kTWluQ2xhbXBf
bG9kTWF4Q2xhbXBfYXRJbmRleF8sCisgICAgInNldFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDps
b2RNYXhDbGFtcDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlclN0
YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBzX3dpdGhSYW5nZV8sCisgICAgInNldFNhbXBs
ZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldFNhbXBs
ZXJTdGF0ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2Npc3NvclJl
Y3RfLAorICAgICJzZXRTY2lzc29yUmVjdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNj
aXNzb3JSZWN0c19jb3VudF8sCisgICAgInNldFNjaXNzb3JSZWN0czpjb3VudDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFNjcmVlblNpemVfLAorICAgICJzZXRTY3JlZW5TaXplOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2lnbmFsZWRWYWx1ZV8sCisgICAgInNldFNpZ25hbGVk
VmFsdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTaXplXywKKyAgICAic2V0U2l6ZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNsaWNlXywKKyAgICAic2V0U2xpY2U6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yXywKKyAgICAic2V0
U291cmNlQWxwaGFCbGVuZEZhY3RvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNvdXJj
ZVJHQkJsZW5kRmFjdG9yXywKKyAgICAic2V0U291cmNlUkdCQmxlbmRGYWN0b3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTcGVjaWFsaXplZE5hbWVfLAorICAgICJzZXRTcGVjaWFsaXpl
ZE5hbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGFnZUluUmVnaW9uXywKKyAgICAi
c2V0U3RhZ2VJblJlZ2lvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0YWdlSW5SZWdp
b25XaXRoSW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJzZXRTdGFn
ZUluUmVnaW9uV2l0aEluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0U3RhZ2VJbnB1dERlc2NyaXB0b3JfLAorICAgICJzZXRTdGFn
ZUlucHV0RGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0YXJ0T2ZFbmNv
ZGVyU2FtcGxlSW5kZXhfLAorICAgICJzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4OiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXhfLAorICAg
ICJzZXRTdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleF8sCisgICAgInNldFN0YXJ0T2ZWZXJ0ZXhTYW1w
bGVJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxBdHRhY2htZW50XywK
KyAgICAic2V0U3RlbmNpbEF0dGFjaG1lbnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRT
dGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0XywKKyAgICAic2V0U3RlbmNpbEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxDb21wYXJlRnVu
Y3Rpb25fLAorICAgICJzZXRTdGVuY2lsQ29tcGFyZUZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U3RlbmNpbEZhaWx1cmVPcGVyYXRpb25fLAorICAgICJzZXRTdGVuY2lsRmFp
bHVyZU9wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxGcm9udFJl
ZmVyZW5jZVZhbHVlX2JhY2tSZWZlcmVuY2VWYWx1ZV8sCisgICAgInNldFN0ZW5jaWxGcm9udFJl
ZmVyZW5jZVZhbHVlOmJhY2tSZWZlcmVuY2VWYWx1ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1ZV8sCisgICAgInNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxSZXNvbHZlRmlsdGVyXywKKyAg
ICAic2V0U3RlbmNpbFJlc29sdmVGaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRT
dGVuY2lsU3RvcmVBY3Rpb25fLAorICAgICJzZXRTdGVuY2lsU3RvcmVBY3Rpb246Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zXywKKyAgICAic2V0
U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0
ZXBGdW5jdGlvbl8sCisgICAgInNldFN0ZXBGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFN0ZXBSYXRlXywKKyAgICAic2V0U3RlcFJhdGU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRTdG9yYWdlTW9kZV8sCisgICAgInNldFN0b3JhZ2VNb2RlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0U3RvcmVBY3Rpb25fLAorICAgICJzZXRTdG9yZUFjdGlvbjoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFN0b3JlQWN0aW9uT3B0aW9uc18sCisgICAgInNldFN0b3Jl
QWN0aW9uT3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0cmlkZV8sCisgICAg
InNldFN0cmlkZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN1cHBvcnRBZGRpbmdCaW5h
cnlGdW5jdGlvbnNfLAorICAgICJzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rp
b25zXywKKyAgICAic2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9u
c18sCisgICAgInNldFN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzXywKKyAgICAic2V0U3Vw
cG9ydEFyZ3VtZW50QnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN1cHBvcnRJ
bmRpcmVjdENvbW1hbmRCdWZmZXJzXywKKyAgICAic2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1
ZmZlcnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTd2l6emxlXywKKyAgICAic2V0U3dp
enpsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRBZGRyZXNzTW9kZV8sCisgICAgInNl
dFRBZGRyZXNzTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbkNv
bnRyb2xQb2ludEluZGV4VHlwZV8sCisgICAgInNldFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludElu
ZGV4VHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvckJ1
ZmZlcl9vZmZzZXRfaW5zdGFuY2VTdHJpZGVfLAorICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JC
dWZmZXI6b2Zmc2V0Omluc3RhbmNlU3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0XywKKyAgICAic2V0VGVzc2VsbGF0aW9uRmFjdG9yRm9y
bWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVf
LAorICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZF8sCisgICAgInNldFRlc3NlbGxh
dGlvbkZhY3RvclNjYWxlRW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3Nl
bGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbl8sCisgICAgInNldFRlc3NlbGxhdGlvbkZhY3RvclN0
ZXBGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbk91dHB1
dFdpbmRpbmdPcmRlcl8sCisgICAgInNldFRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVfLAor
ICAgICJzZXRUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0VGV4dHVyZV8sCisgICAgInNldFRleHR1cmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRUZXh0dXJlOmF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRUZXh0dXJlVHlwZV8sCisgICAgInNldFRleHR1cmVUeXBlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGV4dHVyZXNfd2l0aFJhbmdlXywKKyAgICAic2V0
VGV4dHVyZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGhyZWFkR3Jv
dXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGhfLAorICAgICJzZXRUaHJlYWRH
cm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoXywKKyAgICAic2V0VGhyZWFkZ3Jv
dXBNZW1vcnlMZW5ndGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaHJlYWRncm91cE1l
bW9yeUxlbmd0aF9hdEluZGV4XywKKyAgICAic2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGg6YXRJ
bmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3Ro
X29mZnNldF9hdEluZGV4XywKKyAgICAic2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGg6b2Zmc2V0
OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaHJlYWRncm91cFNpemVNYXRj
aGVzVGlsZVNpemVfLAorICAgICJzZXRUaHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemU6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVm
ZmVySW5kZXhfLAorICAgICJzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVmZmVySW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0
aW9uc18sCisgICAgInNldFRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0VGlsZUJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8sCisgICAgInNldFRp
bGVCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxl
QnVmZmVyT2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRUaWxlQnVmZmVyT2Zmc2V0OmF0SW5kZXg6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQnVmZmVyc19vZmZzZXRzX3dpdGhSYW5n
ZV8sCisgICAgInNldFRpbGVCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0VGlsZUJ5dGVzX2xlbmd0aF9hdEluZGV4XywKKyAgICAic2V0VGlsZUJ5
dGVzOmxlbmd0aDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZUZ1bmN0
aW9uXywKKyAgICAic2V0VGlsZUZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VGlsZUhlaWdodF8sCisgICAgInNldFRpbGVIZWlnaHQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XywKKyAgICAi
c2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoQnVm
ZmVyUmFuZ2VfLAorICAgICJzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1
ZmZlclJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9h
dEluZGV4XywKKyAgICAic2V0VGlsZVNhbXBsZXJTdGF0ZTphdEluZGV4OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9h
dEluZGV4XywKKyAgICAic2V0VGlsZVNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RNYXhDbGFt
cDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZXNf
bG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfLAorICAgICJzZXRUaWxlU2FtcGxl
clN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldFRp
bGVTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRp
bGVUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRUaWxlVGV4dHVyZTphdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVRleHR1cmVzX3dpdGhSYW5nZV8sCisgICAgInNldFRp
bGVUZXh0dXJlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlVmlz
aWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldFRpbGVWaXNpYmxlRnVu
Y3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGls
ZVZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRUaWxlVmlz
aWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFRpbGVXaWR0aF8sCisgICAgInNldFRpbGVXaWR0aDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFRyaWFuZ2xlQ291bnRfLAorICAgICJzZXRUcmlhbmdsZUNvdW50OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VHJpYW5nbGVGaWxsTW9kZV8sCisgICAgInNldFRyaWFuZ2xl
RmlsbE1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUeXBlXywKKyAgICAic2V0VHlw
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFVybF8sCisgICAgInNldFVybDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFVzYWdlXywKKyAgICAic2V0VXNhZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZmZXJJbmRl
eF8sCisgICAgInNldFZlcnRleEFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9u
c18sCisgICAgInNldFZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfdmlld01hcHBpbmdzXywK
KyAgICAic2V0VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50OnZpZXdNYXBwaW5nczoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcl8sCisgICAgInNldFZlcnRleEJ1ZmZlcjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8s
CisgICAgInNldFZlcnRleEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFZlcnRleEJ1ZmZlck9mZnNldF8sCisgICAgInNldFZlcnRleEJ1ZmZlck9mZnNl
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlck9mZnNldF9hdEluZGV4
XywKKyAgICAic2V0VmVydGV4QnVmZmVyT2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRWZXJ0ZXhCdWZmZXJzXywKKyAgICAic2V0VmVydGV4QnVmZmVyczoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfLAor
ICAgICJzZXRWZXJ0ZXhCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0VmVydGV4Qnl0ZXNfbGVuZ3RoX2F0SW5kZXhfLAorICAgICJzZXRWZXJ0ZXhC
eXRlczpsZW5ndGg6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleERl
c2NyaXB0b3JfLAorICAgICJzZXRWZXJ0ZXhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0VmVydGV4RnVuY3Rpb25fLAorICAgICJzZXRWZXJ0ZXhGdW5jdGlvbjoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRC
dWZmZXJJbmRleF8sCisgICAgInNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRC
dWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldFZlcnRleEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFZlcnRleExpbmtlZEZ1bmN0aW9uc18sCisgICAgInNldFZlcnRleExpbmtlZEZ1bmN0
aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFByZWxvYWRlZExpYnJhcmll
c18sCisgICAgInNldFZlcnRleFByZWxvYWRlZExpYnJhcmllczoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZV9hdEluZGV4XywKKyAgICAic2V0VmVydGV4U2Ft
cGxlclN0YXRlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhTYW1w
bGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRleF8sCisgICAgInNldFZlcnRl
eFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RNYXhDbGFtcDphdEluZGV4OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4
Q2xhbXBzX3dpdGhSYW5nZV8sCisgICAgInNldFZlcnRleFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xh
bXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRW
ZXJ0ZXhTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldFZlcnRleFNhbXBsZXJTdGF0
ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U3RyaWRlXywK
KyAgICAic2V0VmVydGV4U3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4
VGV4dHVyZV9hdEluZGV4XywKKyAgICAic2V0VmVydGV4VGV4dHVyZTphdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4VGV4dHVyZXNfd2l0aFJhbmdlXywKKyAgICAic2V0
VmVydGV4VGV4dHVyZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVy
dGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldFZlcnRleFZp
c2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXywKKyAgICAi
c2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFZpZXdwb3J0XywKKyAgICAic2V0Vmlld3BvcnQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRWaWV3cG9ydHNfY291bnRfLAorICAgICJzZXRWaWV3cG9ydHM6
Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaXNpYmlsaXR5UmVzdWx0QnVmZmVy
XywKKyAgICAic2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFZpc2liaWxpdHlSZXN1bHRNb2RlX29mZnNldF8sCisgICAgInNldFZpc2liaWxpdHlS
ZXN1bHRNb2RlOm9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZpc2libGVGdW5j
dGlvblRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTph
dEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9u
VGFibGVfYXRJbmRleF8sCisgICAgInNldFZpc2libGVGdW5jdGlvblRhYmxlOmF0SW5kZXg6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZl
clJhbmdlXywKKyAgICAic2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZpc2libGVGdW5jdGlvblRhYmxlc193aXRoUmFu
Z2VfLAorICAgICJzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aFJhbmdlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0V2lkdGhfLAorICAgICJzZXRXaWR0aDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFdyaXRlTWFza18sCisgICAgInNldFdyaXRlTWFzazoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNoYXJlZENhcHR1cmVNYW5hZ2VyLAorICAgICJzaGFyZWRDYXB0dXJlTWFu
YWdlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2lnbmFsZWRWYWx1ZSwKKyAgICAic2lnbmFs
ZWRWYWx1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2l6ZSwKKyAgICAic2l6ZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2xpY2UsCisgICAgInNsaWNlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzb3VyY2VBbHBoYUJsZW5kRmFjdG9yLAorICAgICJzb3VyY2VBbHBoYUJsZW5kRmFjdG9y
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzb3VyY2VSR0JCbGVuZEZhY3RvciwKKyAgICAic291
cmNlUkdCQmxlbmRGYWN0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNwYXJzZVRpbGVTaXpl
SW5CeXRlcywKKyAgICAic3BhcnNlVGlsZVNpemVJbkJ5dGVzIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzcGFyc2VUaWxlU2l6ZVdpdGhUZXh0dXJlVHlwZV9waXhlbEZvcm1hdF9zYW1wbGVDb3Vu
dF8sCisgICAgInNwYXJzZVRpbGVTaXplV2l0aFRleHR1cmVUeXBlOnBpeGVsRm9ybWF0OnNhbXBs
ZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3BlY2lhbGl6ZWROYW1lLAorICAgICJz
cGVjaWFsaXplZE5hbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YWdlSW5wdXRBdHRyaWJ1
dGVzLAorICAgICJzdGFnZUlucHV0QXR0cmlidXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c3RhZ2VJbnB1dERlc2NyaXB0b3IsCisgICAgInN0YWdlSW5wdXREZXNjcmlwdG9yIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciwKKyAgICAic3RhZ2VJ
bnB1dE91dHB1dERlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YXJ0Q2FwdHVy
ZVdpdGhDb21tYW5kUXVldWVfLAorICAgICJzdGFydENhcHR1cmVXaXRoQ29tbWFuZFF1ZXVlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3JfZXJyb3Jf
LAorICAgICJzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHN0YXJ0Q2FwdHVyZVdpdGhEZXZpY2VfLAorICAgICJzdGFydENhcHR1cmVXaXRo
RGV2aWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRDYXB0dXJlV2l0aFNjb3BlXywK
KyAgICAic3RhcnRDYXB0dXJlV2l0aFNjb3BlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3Rh
cnRPZkVuY29kZXJTYW1wbGVJbmRleCwKKyAgICAic3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgsCisgICAg
InN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFy
dE9mVmVydGV4U2FtcGxlSW5kZXgsCisgICAgInN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgsCisgICAg
InN0YXRpY1RocmVhZGdyb3VwTWVtb3J5TGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dGF0dXMsCisgICAgInN0YXR1cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlbmNpbEF0dGFj
aG1lbnQsCisgICAgInN0ZW5jaWxBdHRhY2htZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0LAorICAgICJzdGVuY2lsQXR0YWNobWVudFBpeGVs
Rm9ybWF0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uLAor
ICAgICJzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGVu
Y2lsRmFpbHVyZU9wZXJhdGlvbiwKKyAgICAic3RlbmNpbEZhaWx1cmVPcGVyYXRpb24iKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHN0ZW5jaWxSZXNvbHZlRmlsdGVyLAorICAgICJzdGVuY2lsUmVz
b2x2ZUZpbHRlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlcEZ1bmN0aW9uLAorICAgICJz
dGVwRnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0ZXBSYXRlLAorICAgICJzdGVw
UmF0ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RvcENhcHR1cmUsCisgICAgInN0b3BDYXB0
dXJlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdG9yYWdlTW9kZSwKKyAgICAic3RvcmFnZU1v
ZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0b3JlQWN0aW9uLAorICAgICJzdG9yZUFjdGlv
biIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RvcmVBY3Rpb25PcHRpb25zLAorICAgICJzdG9y
ZUFjdGlvbk9wdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0cmlkZSwKKyAgICAic3Ry
aWRlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdHJ1Y3RUeXBlLAorICAgICJzdHJ1Y3RUeXBl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zLAor
ICAgICJzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMsCisgICAgInN1cHBvcnRBZGRp
bmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9y
dEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucywKKyAgICAic3VwcG9ydEFkZGluZ1ZlcnRleEJp
bmFyeUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydEFyZ3VtZW50QnVm
ZmVycywKKyAgICAic3VwcG9ydEFyZ3VtZW50QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMsCisgICAgInN1cHBvcnRJbmRpcmVjdENv
bW1hbmRCdWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0czMyQml0RmxvYXRG
aWx0ZXJpbmcsCisgICAgInN1cHBvcnRzMzJCaXRGbG9hdEZpbHRlcmluZyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc3VwcG9ydHMzMkJpdE1TQUEsCisgICAgInN1cHBvcnRzMzJCaXRNU0FBIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uLAorICAg
ICJzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dXBwb3J0c0NvdW50ZXJTYW1wbGluZ18sCisgICAgInN1cHBvcnRzQ291bnRlclNhbXBsaW5nOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNEZXN0aW5hdGlvbl8sCisgICAgInN1cHBv
cnRzRGVzdGluYXRpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c0R5bmFtaWNM
aWJyYXJpZXMsCisgICAgInN1cHBvcnRzRHluYW1pY0xpYnJhcmllcyIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc3VwcG9ydHNGYW1pbHlfLAorICAgICJzdXBwb3J0c0ZhbWlseToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzRmVhdHVyZVNldF8sCisgICAgInN1cHBvcnRzRmVhdHVy
ZVNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVycywK
KyAgICAic3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyLAorICAgICJzdXBwb3J0c0Z1bmN0aW9u
UG9pbnRlcnNGcm9tUmVuZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c1ByaW1p
dGl2ZU1vdGlvbkJsdXIsCisgICAgInN1cHBvcnRzUHJpbWl0aXZlTW90aW9uQmx1ciIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9uLAorICAgICJz
dXBwb3J0c1B1bGxNb2RlbEludGVycG9sYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1
cHBvcnRzUXVlcnlUZXh0dXJlTE9ELAorICAgICJzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhMYXll
ckNvdW50XywKKyAgICAic3VwcG9ydHNSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhMYXllckNvdW50
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNSYXl0cmFjaW5nLAorICAgICJzdXBw
b3J0c1JheXRyYWNpbmciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzUmF5dHJhY2lu
Z0Zyb21SZW5kZXIsCisgICAgInN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5kZXIiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzUmVuZGVyRHluYW1pY0xpYnJhcmllcywKKyAgICAic3Vw
cG9ydHNSZW5kZXJEeW5hbWljTGlicmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBw
b3J0c1NoYWRlckJhcnljZW50cmljQ29vcmRpbmF0ZXMsCisgICAgInN1cHBvcnRzU2hhZGVyQmFy
eWNlbnRyaWNDb29yZGluYXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNUZXh0
dXJlU2FtcGxlQ291bnRfLAorICAgICJzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzVmVydGV4QW1wbGlmaWNhdGlvbkNvdW50XywKKyAg
ICAic3VwcG9ydHNWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzd2l6emxlLAorICAgICJzd2l6emxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzeW5j
aHJvbml6ZVJlc291cmNlXywKKyAgICAic3luY2hyb25pemVSZXNvdXJjZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHN5bmNocm9uaXplVGV4dHVyZV9zbGljZV9sZXZlbF8sCisgICAgInN5bmNo
cm9uaXplVGV4dHVyZTpzbGljZTpsZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRBZGRy
ZXNzTW9kZSwKKyAgICAidEFkZHJlc3NNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0YWls
U2l6ZUluQnl0ZXMsCisgICAgInRhaWxTaXplSW5CeXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwodGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlLAorICAgICJ0ZXNzZWxsYXRpb25D
b250cm9sUG9pbnRJbmRleFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlv
bkZhY3RvckZvcm1hdCwKKyAgICAidGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTCh0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24sCisgICAgInRlc3Nl
bGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGVzc2Vs
bGF0aW9uT3V0cHV0V2luZGluZ09yZGVyLAorICAgICJ0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5n
T3JkZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUs
CisgICAgInRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHRleHR1cmUsCisgICAgInRleHR1cmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRleHR1cmUy
RERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXRfd2lkdGhfaGVpZ2h0X21pcG1hcHBlZF8sCisgICAg
InRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6d2lkdGg6aGVpZ2h0Om1pcG1hcHBl
ZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRleHR1cmVCYXJyaWVyLAorICAgICJ0ZXh0dXJl
QmFycmllciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZUJ1ZmZlckRlc2NyaXB0b3JX
aXRoUGl4ZWxGb3JtYXRfd2lkdGhfcmVzb3VyY2VPcHRpb25zX3VzYWdlXywKKyAgICAidGV4dHVy
ZUJ1ZmZlckRlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6d2lkdGg6cmVzb3VyY2VPcHRpb25zOnVz
YWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0aFBp
eGVsRm9ybWF0X3NpemVfbWlwbWFwcGVkXywKKyAgICAidGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0
aFBpeGVsRm9ybWF0OnNpemU6bWlwbWFwcGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4
dHVyZURhdGFUeXBlLAorICAgICJ0ZXh0dXJlRGF0YVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHRleHR1cmVSZWZlcmVuY2VUeXBlLAorICAgICJ0ZXh0dXJlUmVmZXJlbmNlVHlwZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZVR5cGUsCisgICAgInRleHR1cmVUeXBlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRFeGVjdXRpb25XaWR0aCwKKyAgICAidGhyZWFkRXhl
Y3V0aW9uV2lkdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRocmVhZEdyb3VwU2l6ZUlzTXVs
dGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoLAorICAgICJ0aHJlYWRHcm91cFNpemVJc011bHRp
cGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGhyZWFk
Z3JvdXBNZW1vcnlBbGlnbm1lbnQsCisgICAgInRocmVhZGdyb3VwTWVtb3J5QWxpZ25tZW50Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRncm91cE1lbW9yeURhdGFTaXplLAorICAgICJ0
aHJlYWRncm91cE1lbW9yeURhdGFTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRn
cm91cE1lbW9yeUxlbmd0aCwKKyAgICAidGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSwKKyAgICAidGhy
ZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aWxl
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywKKyAgICAidGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5j
dGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVBcmd1bWVudHMsCisgICAgInRpbGVB
cmd1bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVCdWZmZXJzLAorICAgICJ0aWxl
QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGlsZUZ1bmN0aW9uLAorICAgICJ0aWxl
RnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVIZWlnaHQsCisgICAgInRpbGVI
ZWlnaHQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVXaWR0aCwKKyAgICAidGlsZVdpZHRo
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0cmlhbmdsZUNvdW50LAorICAgICJ0cmlhbmdsZUNv
dW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0eXBlLAorICAgICJ0eXBlIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTCh1cGRhdGVGZW5jZV8sCisgICAgInVwZGF0ZUZlbmNlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodXBkYXRlRmVuY2VfYWZ0ZXJTdGFnZXNfLAorICAgICJ1cGRhdGVGZW5j
ZTphZnRlclN0YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVwZGF0ZVRleHR1cmVNYXBw
aW5nX21vZGVfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJ1cGRh
dGVUZXh0dXJlTWFwcGluZzptb2RlOmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXBkYXRlVGV4dHVyZU1hcHBpbmdfbW9kZV9yZWdp
b25fbWlwTGV2ZWxfc2xpY2VfLAorICAgICJ1cGRhdGVUZXh0dXJlTWFwcGluZzptb2RlOnJlZ2lv
bjptaXBMZXZlbDpzbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVwZGF0ZVRleHR1cmVN
YXBwaW5nc19tb2RlX3JlZ2lvbnNfbWlwTGV2ZWxzX3NsaWNlc19udW1SZWdpb25zXywKKyAgICAi
dXBkYXRlVGV4dHVyZU1hcHBpbmdzOm1vZGU6cmVnaW9uczptaXBMZXZlbHM6c2xpY2VzOm51bVJl
Z2lvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1cmwsCisgICAgInVybCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodXNhZ2UsCisgICAgInVzYWdlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TCh1c2VIZWFwXywKKyAgICAidXNlSGVhcDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZUhl
YXBfc3RhZ2VzXywKKyAgICAidXNlSGVhcDpzdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TCh1c2VIZWFwc19jb3VudF8sCisgICAgInVzZUhlYXBzOmNvdW50OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwodXNlSGVhcHNfY291bnRfc3RhZ2VzXywKKyAgICAidXNlSGVhcHM6Y291bnQ6c3Rh
Z2VzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlUmVzb3VyY2VfdXNhZ2VfLAorICAgICJ1
c2VSZXNvdXJjZTp1c2FnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZVJlc291cmNlX3Vz
YWdlX3N0YWdlc18sCisgICAgInVzZVJlc291cmNlOnVzYWdlOnN0YWdlczoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHVzZVJlc291cmNlc19jb3VudF91c2FnZV8sCisgICAgInVzZVJlc291cmNl
czpjb3VudDp1c2FnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZVJlc291cmNlc19jb3Vu
dF91c2FnZV9zdGFnZXNfLAorICAgICJ1c2VSZXNvdXJjZXM6Y291bnQ6dXNhZ2U6c3RhZ2VzOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlZFNpemUsCisgICAgInVzZWRTaXplIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLAorICAgICJ2
ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2
ZXJ0ZXhBcmd1bWVudHMsCisgICAgInZlcnRleEFyZ3VtZW50cyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodmVydGV4QXR0cmlidXRlcywKKyAgICAidmVydGV4QXR0cmlidXRlcyIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodmVydGV4QnVmZmVyLAorICAgICJ2ZXJ0ZXhCdWZmZXIiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHZlcnRleEJ1ZmZlck9mZnNldCwKKyAgICAidmVydGV4QnVmZmVyT2Zm
c2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhCdWZmZXJzLAorICAgICJ2ZXJ0ZXhC
dWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhEZXNjcmlwdG9yLAorICAgICJ2
ZXJ0ZXhEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhGdW5jdGlvbiwK
KyAgICAidmVydGV4RnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleExpbmtl
ZEZ1bmN0aW9ucywKKyAgICAidmVydGV4TGlua2VkRnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTCh2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMsCisgICAgInZlcnRleFByZWxvYWRlZExp
YnJhcmllcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGV4U3RyaWRlLAorICAgICJ2ZXJ0
ZXhTdHJpZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRpY2FsLAorICAgICJ2ZXJ0aWNh
bCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGljYWxTYW1wbGVTdG9yYWdlLAorICAgICJ2
ZXJ0aWNhbFNhbXBsZVN0b3JhZ2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZpc2liaWxpdHlS
ZXN1bHRCdWZmZXIsCisgICAgInZpc2liaWxpdHlSZXN1bHRCdWZmZXIiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciwKKyAgICAidmlzaWJsZUZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0Rm9yRmVu
Y2VfLAorICAgICJ3YWl0Rm9yRmVuY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0Rm9y
RmVuY2VfYmVmb3JlU3RhZ2VzXywKKyAgICAid2FpdEZvckZlbmNlOmJlZm9yZVN0YWdlczoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHdhaXRVbnRpbENvbXBsZXRlZCwKKyAgICAid2FpdFVudGls
Q29tcGxldGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0VW50aWxTY2hlZHVsZWQsCisg
ICAgIndhaXRVbnRpbFNjaGVkdWxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwod2lkdGgsCisg
ICAgIndpZHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3cml0ZUNvbXBhY3RlZEFjY2VsZXJh
dGlvblN0cnVjdHVyZVNpemVfdG9CdWZmZXJfb2Zmc2V0XywKKyAgICAid3JpdGVDb21wYWN0ZWRB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZV90b0J1ZmZl
cl9vZmZzZXRfc2l6ZURhdGFUeXBlXywKKyAgICAid3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDpzaXplRGF0YVR5cGU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTCh3cml0ZU1hc2ssCisgICAgIndyaXRlTWFzayIpOworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWIyYzNlMTJmZTQ4MDc5YmU5NDBhYjgzZTI2OWQ4YmJmMTVlNTljMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFwLmhwcApAQCAt
MCwwICsxLDI4MiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWV0YWwvTVRMSGVhcC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNs
dWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisj
aW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEhlYXAu
aHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01U
TF9FTlVNKE5TOjpJbnRlZ2VyLCBIZWFwVHlwZSkgeworICAgIEhlYXBUeXBlQXV0b21hdGljID0g
MCwKKyAgICBIZWFwVHlwZVBsYWNlbWVudCA9IDEsCisgICAgSGVhcFR5cGVTcGFyc2UgPSAyLAor
fTsKKworY2xhc3MgSGVhcERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SGVhcERlc2Ny
aXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEhlYXBEZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgSGVhcERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgIHNpemUoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFNpemUoTlM6OlVJbnRlZ2VyIHNpemUpOworCisgICAgTVRM
OjpTdG9yYWdlTW9kZSAgICAgICAgICAgICBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBz
dG9yYWdlTW9kZSk7CisKKyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAgICAgICAgIGNwdUNhY2hl
TW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3B1Q2Fj
aGVNb2RlKE1UTDo6Q1BVQ2FjaGVNb2RlIGNwdUNhY2hlTW9kZSk7CisKKyAgICBNVEw6OkhhemFy
ZFRyYWNraW5nTW9kZSAgICAgIGhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGF6YXJkVHJhY2tpbmdNb2RlKE1UTDo6SGF6YXJk
VHJhY2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSk7CisKKyAgICBNVEw6OlJlc291cmNlT3B0
aW9ucyAgICAgICAgIHJlc291cmNlT3B0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0UmVzb3VyY2VPcHRpb25zKE1UTDo6UmVzb3VyY2VPcHRpb25zIHJl
c291cmNlT3B0aW9ucyk7CisKKyAgICBNVEw6OkhlYXBUeXBlICAgICAgICAgICAgICAgIHR5cGUo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldFR5cGUoTVRMOjpI
ZWFwVHlwZSB0eXBlKTsKK307CisKK2NsYXNzIEhlYXAgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5n
PEhlYXA+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgbGFiZWwoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCk7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgICBkZXZpY2UoKSBjb25z
dDsKKworICAgIE1UTDo6U3RvcmFnZU1vZGUgICAgICAgIHN0b3JhZ2VNb2RlKCkgY29uc3Q7CisK
KyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAgICBjcHVDYWNoZU1vZGUoKSBjb25zdDsKKworICAg
IE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0OworCisg
ICAgTVRMOjpSZXNvdXJjZU9wdGlvbnMgICAgcmVzb3VyY2VPcHRpb25zKCkgY29uc3Q7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICBzaXplKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICB1c2VkU2l6ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgY3VycmVudEFsbG9jYXRlZFNpemUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgIG1heEF2YWlsYWJsZVNpemUoTlM6OlVJbnRlZ2VyIGFsaWdubWVudCk7CisKKyAg
ICBjbGFzcyBCdWZmZXIqICAgICAgICAgICBuZXdCdWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0aCwg
TVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAg
ICAgICBuZXdUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjKTsKKwor
ICAgIE1UTDo6UHVyZ2VhYmxlU3RhdGUgICAgIHNldFB1cmdlYWJsZVN0YXRlKE1UTDo6UHVyZ2Vh
YmxlU3RhdGUgc3RhdGUpOworCisgICAgTVRMOjpIZWFwVHlwZSAgICAgICAgICAgdHlwZSgpIGNv
bnN0OworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgbmV3QnVmZmVyKE5TOjpVSW50ZWdl
ciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMsIE5TOjpVSW50ZWdlciBvZmZz
ZXQpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgbmV3VGV4dHVyZShjb25zdCBjbGFz
cyBUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG9mZnNldCk7Cit9
OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkhlYXBE
ZXNjcmlwdG9yKiBNVEw6OkhlYXBEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6SGVhcERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRM
SGVhcERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OkhlYXBEZXNjcmlwdG9yKiBNVEw6OkhlYXBEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkhlYXBEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9w
ZXJ0eTogc2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SGVhcERlc2NyaXB0b3I6
OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzaXplKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0U2l6ZShOUzo6VUludGVnZXIgc2l6ZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2l6
ZV8pLCBzaXplKTsKK30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VNb2RlCitfTVRMX0lOTElORSBN
VEw6OlN0b3JhZ2VNb2RlIE1UTDo6SGVhcERlc2NyaXB0b3I6OnN0b3JhZ2VNb2RlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JhZ2VNb2RlPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN0b3JhZ2VNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBzdG9y
YWdlTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0U3RvcmFnZU1vZGVfKSwgc3RvcmFnZU1vZGUpOworfQorCisvLyBwcm9wZXJ0
eTogY3B1Q2FjaGVNb2RlCitfTVRMX0lOTElORSBNVEw6OkNQVUNhY2hlTW9kZSBNVEw6OkhlYXBE
ZXNjcmlwdG9yOjpjcHVDYWNoZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6Q1BVQ2FjaGVNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNwdUNh
Y2hlTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6OnNl
dENwdUNhY2hlTW9kZShNVEw6OkNQVUNhY2hlTW9kZSBjcHVDYWNoZU1vZGUpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENwdUNhY2hl
TW9kZV8pLCBjcHVDYWNoZU1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogaGF6YXJkVHJhY2tpbmdN
b2RlCitfTVRMX0lOTElORSBNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBNVEw6OkhlYXBEZXNjcmlw
dG9yOjpoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGhhemFyZFRyYWNraW5nTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERl
c2NyaXB0b3I6OnNldEhhemFyZFRyYWNraW5nTW9kZShNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBo
YXphcmRUcmFja2luZ01vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEhhemFyZFRyYWNraW5nTW9kZV8pLCBoYXphcmRUcmFja2lu
Z01vZGUpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb3VyY2VPcHRpb25zCitfTVRMX0lOTElORSBN
VEw6OlJlc291cmNlT3B0aW9ucyBNVEw6OkhlYXBEZXNjcmlwdG9yOjpyZXNvdXJjZU9wdGlvbnMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VP
cHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc291cmNlT3B0aW9ucykpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6OnNldFJlc291cmNlT3B0aW9ucyhN
VEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc291cmNlT3B0aW9uc18p
LCByZXNvdXJjZU9wdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogdHlwZQorX01UTF9JTkxJTkUg
TVRMOjpIZWFwVHlwZSBNVEw6OkhlYXBEZXNjcmlwdG9yOjp0eXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkhlYXBUeXBlPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXBEZXNjcmlwdG9y
OjpzZXRUeXBlKE1UTDo6SGVhcFR5cGUgdHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHlwZV8pLCB0eXBlKTsKK30KKworLy8g
cHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkhlYXA6OmxhYmVs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6SGVhcDo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxh
YmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2Uq
IE1UTDo6SGVhcDo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBzdG9yYWdlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTdG9yYWdlTW9kZSBN
VEw6OkhlYXA6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlN0b3JhZ2VNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3JhZ2VN
b2RlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjcHVDYWNoZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6
Q1BVQ2FjaGVNb2RlIE1UTDo6SGVhcDo6Y3B1Q2FjaGVNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNQVUNhY2hlTW9kZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChjcHVDYWNoZU1vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IGhhemFyZFRyYWNraW5n
TW9kZQorX01UTF9JTkxJTkUgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgTVRMOjpIZWFwOjpoYXph
cmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhhemFyZFRy
YWNraW5nTW9kZSkpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb3VyY2VPcHRpb25zCitfTVRMX0lO
TElORSBNVEw6OlJlc291cmNlT3B0aW9ucyBNVEw6OkhlYXA6OnJlc291cmNlT3B0aW9ucygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZU9wdGlv
bnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzb3VyY2VPcHRpb25zKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBzaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpIZWFwOjpzaXplKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2l6ZSkpOworfQorCisvLyBwcm9wZXJ0eTogdXNlZFNpemUK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkhlYXA6OnVzZWRTaXplKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodXNlZFNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IGN1cnJlbnRBbGxvY2F0
ZWRTaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpIZWFwOjpjdXJyZW50QWxsb2Nh
dGVkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGN1cnJlbnRBbGxvY2F0ZWRTaXplKSk7Cit9
CisKKy8vIG1ldGhvZDogbWF4QXZhaWxhYmxlU2l6ZVdpdGhBbGlnbm1lbnQ6CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpIZWFwOjptYXhBdmFpbGFibGVTaXplKE5TOjpVSW50ZWdlciBh
bGlnbm1lbnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heEF2YWlsYWJsZVNpemVXaXRoQWxpZ25tZW50Xyks
IGFsaWdubWVudCk7Cit9CisKKy8vIG1ldGhvZDogbmV3QnVmZmVyV2l0aExlbmd0aDpvcHRpb25z
OgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6SGVhcDo6bmV3QnVmZmVyKE5TOjpVSW50
ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9uc18pLCBsZW5ndGgsIG9wdGlvbnMpOworfQorCisv
LyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6VGV4
dHVyZSogTVRMOjpIZWFwOjpuZXdUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3Iq
IGRlc2MpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3JfKSwgZGVzYyk7
Cit9CisKKy8vIG1ldGhvZDogc2V0UHVyZ2VhYmxlU3RhdGU6CitfTVRMX0lOTElORSBNVEw6OlB1
cmdlYWJsZVN0YXRlIE1UTDo6SGVhcDo6c2V0UHVyZ2VhYmxlU3RhdGUoTVRMOjpQdXJnZWFibGVT
dGF0ZSBzdGF0ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlB1cmdl
YWJsZVN0YXRlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFB1cmdlYWJsZVN0YXRlXyksIHN0
YXRlKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5MSU5FIE1UTDo6SGVhcFR5cGUg
TVRMOjpIZWFwOjp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkhlYXBUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8g
bWV0aG9kOiBuZXdCdWZmZXJXaXRoTGVuZ3RoOm9wdGlvbnM6b2Zmc2V0OgorX01UTF9JTkxJTkUg
TVRMOjpCdWZmZXIqIE1UTDo6SGVhcDo6bmV3QnVmZmVyKE5TOjpVSW50ZWdlciBsZW5ndGgsIE1U
TDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMsIE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9uc19vZmZzZXRfKSwgbGVuZ3RoLCBvcHRp
b25zLCBvZmZzZXQpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjpv
ZmZzZXQ6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6SGVhcDo6bmV3VGV4dHVyZShj
b25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6VUludGVnZXIgb2Zm
c2V0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yX29mZnNldF8pLCBk
ZXNjcmlwdG9yLCBvZmZzZXQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YWEzYTM1OTc3YjAxZTJiMDBiMjZhMThhOTUyNzM0ZDU1MzdhZDUxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTElu
ZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAKQEAgLTAsMCArMSwxODkgQEAKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEluZGlyZWN0
Q29tbWFuZEJ1ZmZlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFuZEJ1
ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7
CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBJbmRpcmVjdENvbW1hbmRUeXBlKSB7CisgICAg
SW5kaXJlY3RDb21tYW5kVHlwZURyYXcgPSAxLAorICAgIEluZGlyZWN0Q29tbWFuZFR5cGVEcmF3
SW5kZXhlZCA9IDIsCisgICAgSW5kaXJlY3RDb21tYW5kVHlwZURyYXdQYXRjaGVzID0gNCwKKyAg
ICBJbmRpcmVjdENvbW1hbmRUeXBlRHJhd0luZGV4ZWRQYXRjaGVzID0gOCwKKyAgICBJbmRpcmVj
dENvbW1hbmRUeXBlQ29uY3VycmVudERpc3BhdGNoID0gMzIsCisgICAgSW5kaXJlY3RDb21tYW5k
VHlwZUNvbmN1cnJlbnREaXNwYXRjaFRocmVhZHMgPSA2NCwKK307CisKK3N0cnVjdCBJbmRpcmVj
dENvbW1hbmRCdWZmZXJFeGVjdXRpb25SYW5nZQoreworICAgIHVpbnQzMl90IGxvY2F0aW9uOwor
ICAgIHVpbnQzMl90IGxlbmd0aDsKK30gX01UTF9QQUNLRUQ7CisKK2NsYXNzIEluZGlyZWN0Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SW5kaXJlY3RDb21tYW5k
QnVmZmVyRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgSW5kaXJlY3RD
b21tYW5kQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEluZGlyZWN0Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkluZGlyZWN0
Q29tbWFuZFR5cGUgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZFR5cGVzKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbW1h
bmRUeXBlcyhNVEw6OkluZGlyZWN0Q29tbWFuZFR5cGUgY29tbWFuZFR5cGVzKTsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0UGlwZWxp
bmVTdGF0ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZShib29sIGluaGVyaXRQaXBlbGluZVN0
YXRlKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmhlcml0QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRJbmhlcml0QnVmZmVycyhib29sIGluaGVyaXRCdWZmZXJz
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4VmVydGV4QnVmZmVyQmluZENvdW50KE5T
OjpVSW50ZWdlciBtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEZyYWdtZW50QnVmZmVyQmluZENv
dW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldE1heEZyYWdtZW50QnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhGcmFn
bWVudEJ1ZmZlckJpbmRDb3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heEtlcm5l
bEJ1ZmZlckJpbmRDb3VudChOUzo6VUludGVnZXIgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KTsK
K307CisKK2NsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNp
bmc8SW5kaXJlY3RDb21tYW5kQnVmZmVyLCBSZXNvdXJjZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICBzaXplKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNldChOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgY2xhc3Mg
SW5kaXJlY3RSZW5kZXJDb21tYW5kKiAgaW5kaXJlY3RSZW5kZXJDb21tYW5kKE5TOjpVSW50ZWdl
ciBjb21tYW5kSW5kZXgpOworCisgICAgY2xhc3MgSW5kaXJlY3RDb21wdXRlQ29tbWFuZCogaW5k
aXJlY3RDb21wdXRlQ29tbWFuZChOUzo6VUludGVnZXIgY29tbWFuZEluZGV4KTsKK307CisKK30K
KworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6SW5kaXJlY3RDb21t
YW5kQnVmZmVyRGVzY3JpcHRvciogTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9y
OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6SW5kaXJlY3RD
b21tYW5kQnVmZmVyRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExJbmRpcmVjdENvbW1h
bmRCdWZmZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OkluZGlyZWN0Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0
PE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVy
dHk6IGNvbW1hbmRUeXBlcworX01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdENvbW1hbmRUeXBlIE1U
TDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6Y29tbWFuZFR5cGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGlyZWN0Q29tbWFuZFR5
cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZFR5cGVzKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRDb21tYW5k
VHlwZXMoTVRMOjpJbmRpcmVjdENvbW1hbmRUeXBlIGNvbW1hbmRUeXBlcykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tbWFuZFR5
cGVzXyksIGNvbW1hbmRUeXBlcyk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmhlcml0UGlwZWxpbmVT
dGF0ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0
b3I6OmluaGVyaXRQaXBlbGluZVN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluaGVyaXRQaXBlbGluZVN0
YXRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJE
ZXNjcmlwdG9yOjpzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZShib29sIGluaGVyaXRQaXBlbGluZVN0
YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZV8pLCBpbmhlcml0UGlwZWxpbmVTdGF0ZSk7Cit9
CisKKy8vIHByb3BlcnR5OiBpbmhlcml0QnVmZmVycworX01UTF9JTkxJTkUgYm9vbCBNVEw6Oklu
ZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmluaGVyaXRCdWZmZXJzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluaGVyaXRCdWZmZXJzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVj
dENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRJbmhlcml0QnVmZmVycyhib29sIGluaGVyaXRC
dWZmZXJzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRJbmhlcml0QnVmZmVyc18pLCBpbmhlcml0QnVmZmVycyk7Cit9CisKKy8vIHBy
b3BlcnR5OiBtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6Om1heFZlcnRleEJ1ZmZlckJp
bmRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFZlcnRleEJ1ZmZlckJpbmRDb3VudCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3Jp
cHRvcjo6c2V0TWF4VmVydGV4QnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhWZXJ0ZXhC
dWZmZXJCaW5kQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldE1heFZlcnRleEJ1ZmZlckJpbmRDb3VudF8pLCBtYXhWZXJ0ZXhC
dWZmZXJCaW5kQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogbWF4RnJhZ21lbnRCdWZmZXJCaW5k
Q291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZl
ckRlc2NyaXB0b3I6Om1heEZyYWdtZW50QnVmZmVyQmluZENvdW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNldE1heEZyYWdtZW50QnVm
ZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
TWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnRfKSwgbWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQp
OworfQorCisvLyBwcm9wZXJ0eTogbWF4S2VybmVsQnVmZmVyQmluZENvdW50CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjptYXhL
ZXJuZWxCdWZmZXJCaW5kQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhLZXJuZWxCdWZm
ZXJCaW5kQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3I6OnNldE1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudChOUzo6VUludGVn
ZXIgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhLZXJuZWxCdWZmZXJCaW5kQ291bnRf
KSwgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHNpemUKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlcjo6c2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNpemUpKTsKK30KKworLy8gbWV0aG9kOiByZXNldFdpdGhS
YW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXI6OnJlc2V0
KE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwocmVzZXRXaXRoUmFuZ2VfKSwgcmFuZ2UpOworfQorCisvLyBtZXRo
b2Q6IGluZGlyZWN0UmVuZGVyQ29tbWFuZEF0SW5kZXg6CitfTVRMX0lOTElORSBNVEw6OkluZGly
ZWN0UmVuZGVyQ29tbWFuZCogTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXI6OmluZGlyZWN0UmVu
ZGVyQ29tbWFuZChOUzo6VUludGVnZXIgY29tbWFuZEluZGV4KQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChpbmRpcmVjdFJlbmRlckNvbW1hbmRBdEluZGV4XyksIGNvbW1hbmRJbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogaW5kaXJlY3RDb21wdXRlQ29tbWFuZEF0SW5kZXg6CitfTVRMX0lO
TElORSBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQqIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVm
ZmVyOjppbmRpcmVjdENvbXB1dGVDb21tYW5kKE5TOjpVSW50ZWdlciBjb21tYW5kSW5kZXgpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRpcmVjdENvbXB1dGVDb21t
YW5kKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRpcmVjdENvbXB1dGVDb21tYW5kQXRJbmRl
eF8pLCBjb21tYW5kSW5kZXgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA2ZDUyZmQ3ZGNlMTIxNmZhNDcwZWYyOThiYWQwMWZkMzBhNjE3NDgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
SW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSwxODcgQEAKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEluZGly
ZWN0Q29tbWFuZEVuY29kZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJ
bmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRM
SGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZW5kZXJDb21tYW5k
RW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBw
IgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgSW5k
aXJlY3RSZW5kZXJDb21tYW5kIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxJbmRpcmVjdFJlbmRl
ckNvbW1hbmQ+Cit7CitwdWJsaWM6CisgICAgdm9pZCBzZXRSZW5kZXJQaXBlbGluZVN0YXRlKGNv
bnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lU3RhdGUpOworCisgICAgdm9p
ZCBzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdl
ciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldEZyYWdtZW50QnVm
ZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6
VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVt
YmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUlu
dGVnZXIgcGF0Y2hDb3VudCwgY29uc3QgY2xhc3MgQnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBO
Uzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNl
Q291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UsIGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVm
ZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VTdHJpZGUpOwor
CisgICAgdm9pZCBkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hD
b250cm9sUG9pbnRzLCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNo
Q291bnQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogY29udHJvbFBvaW50
SW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UsIGNv
bnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVn
ZXIgaW5zdGFuY2VTdHJpZGUpOworCisgICAgdm9pZCBkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1p
dGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUlu
dGVnZXIgdmVydGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVn
ZXIgYmFzZUluc3RhbmNlKTsKKworICAgIHZvaWQgZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6
UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRM
OjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyLCBO
Uzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50
LCBOUzo6SW50ZWdlciBiYXNlVmVydGV4LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKTsKKwor
ICAgIHZvaWQgcmVzZXQoKTsKK307CisKK2NsYXNzIEluZGlyZWN0Q29tcHV0ZUNvbW1hbmQgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPEluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ+Cit7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlw
ZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSk7CisKKyAgICB2b2lkIHNldEtlcm5lbEJ1ZmZlcihj
b25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRl
Z2VyIGluZGV4KTsKKworICAgIHZvaWQgY29uY3VycmVudERpc3BhdGNoVGhyZWFkZ3JvdXBzKE1U
TDo6U2l6ZSB0aHJlYWRncm91cHNQZXJHcmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdy
b3VwKTsKKworICAgIHZvaWQgY29uY3VycmVudERpc3BhdGNoVGhyZWFkcyhNVEw6OlNpemUgdGhy
ZWFkc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworCisgICAgdm9p
ZCBzZXRCYXJyaWVyKCk7CisKKyAgICB2b2lkIGNsZWFyQmFycmllcigpOworCisgICAgdm9pZCBz
ZXRJbWFnZWJsb2NrV2lkdGgoTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0
KTsKKworICAgIHZvaWQgcmVzZXQoKTsKKworICAgIHZvaWQgc2V0VGhyZWFkZ3JvdXBNZW1vcnlM
ZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZv
aWQgc2V0U3RhZ2VJblJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24pOworfTsKKworfQorCisvLyBt
ZXRob2Q6IHNldFJlbmRlclBpcGVsaW5lU3RhdGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5k
aXJlY3RSZW5kZXJDb21tYW5kOjpzZXRSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6UmVu
ZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZV8p
LCBwaXBlbGluZVN0YXRlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhCdWZmZXI6b2Zmc2V0
OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kOjpz
ZXRWZXJ0ZXhCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJfb2Zmc2V0X2F0SW5kZXhf
KSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEJ1
ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJlbmRl
ckNvbW1hbmQ6OnNldEZyYWdtZW50QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5T
OjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRCdWZmZXJf
b2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBkcmF3UGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRj
aEluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOnRlc3NlbGxhdGlv
bkZhY3RvckJ1ZmZlcjp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXQ6dGVzc2VsbGF0aW9u
RmFjdG9yQnVmZmVySW5zdGFuY2VTdHJpZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJl
Y3RSZW5kZXJDb21tYW5kOjpkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENv
bnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVnZXIgcGF0Y2hD
b3VudCwgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBw
YXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJ
bnRlZ2VyIGJhc2VJbnN0YW5jZSwgY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3UGF0Y2hlc19wYXRj
aFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0
X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlX3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcl90ZXNz
ZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXRfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVySW5zdGFu
Y2VTdHJpZGVfKSwgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIHBhdGNoU3RhcnQsIHBhdGNo
Q291bnQsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNl
Q291bnQsIGJhc2VJbnN0YW5jZSwgYnVmZmVyLCBvZmZzZXQsIGluc3RhbmNlU3RyaWRlKTsKK30K
KworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENvdW50OnBh
dGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1
ZmZlcjpjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VJbnN0
YW5jZTp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXI6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zm
c2V0OnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3RhbmNlU3RyaWRlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6ZHJhd0luZGV4ZWRQYXRjaGVzKE5TOjpV
SW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRlZ2VyIHBhdGNoU3Rh
cnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBNVEw6OkJ1ZmZlciogcGF0Y2hJbmRl
eEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IE1UTDo6
QnVmZmVyKiBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvbnRyb2xQb2lu
dEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRl
Z2VyIGJhc2VJbnN0YW5jZSwgY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFBhdGNoZXNf
cGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZlck9m
ZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9jb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNl
dF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJfdGVz
c2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0X3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3Rh
bmNlU3RyaWRlXyksIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBwYXRjaFN0YXJ0LCBwYXRj
aENvdW50LCBwYXRjaEluZGV4QnVmZmVyLCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb250cm9s
UG9pbnRJbmRleEJ1ZmZlciwgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNl
Q291bnQsIGJhc2VJbnN0YW5jZSwgYnVmZmVyLCBvZmZzZXQsIGluc3RhbmNlU3RyaWRlKTsKK30K
KworLy8gbWV0aG9kOiBkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDppbnN0
YW5jZUNvdW50OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJl
bmRlckNvbW1hbmQ6OmRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVU
eXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRy
YXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50X2luc3RhbmNlQ291bnRfYmFzZUlu
c3RhbmNlXyksIHByaW1pdGl2ZVR5cGUsIHZlcnRleFN0YXJ0LCB2ZXJ0ZXhDb3VudCwgaW5zdGFu
Y2VDb3VudCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFByaW1p
dGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6
aW5zdGFuY2VDb3VudDpiYXNlVmVydGV4OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQ6OmRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlBy
aW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6
SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6
VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBO
Uzo6SW50ZWdlciBiYXNlVmVydGV4LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5k
ZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZm
ZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlVmVydGV4X2Jhc2VJbnN0YW5jZV8pLCBwcmltaXRp
dmVUeXBlLCBpbmRleENvdW50LCBpbmRleFR5cGUsIGluZGV4QnVmZmVyLCBpbmRleEJ1ZmZlck9m
ZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZVZlcnRleCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8g
bWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFu
ZDo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChyZXNldCkpOworfQorCisvLyBtZXRob2Q6IHNldENvbXB1dGVQaXBlbGluZVN0
YXRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnNldENv
bXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBpcGVs
aW5lU3RhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldENvbXB1dGVQaXBlbGluZVN0YXRlXyksIHBpcGVsaW5lU3RhdGUpOworfQor
CisvLyBtZXRob2Q6IHNldEtlcm5lbEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRLZXJuZWxCdWZmZXIoY29uc3Qg
TVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRLZXJuZWxCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGlu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRncm91cHM6dGhy
ZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0
ZUNvbW1hbmQ6OmNvbmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3VwcyhNVEw6OlNpemUgdGhyZWFk
Z3JvdXBzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29uY3VycmVu
dERpc3BhdGNoVGhyZWFkZ3JvdXBzX3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCB0aHJlYWRncm91
cHNQZXJHcmlkLCB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IGNvbmN1
cnJlbnREaXNwYXRjaFRocmVhZHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OmNvbmN1cnJlbnREaXNwYXRjaFRocmVh
ZHMoTVRMOjpTaXplIHRocmVhZHNQZXJHcmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdy
b3VwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCB0
aHJlYWRzUGVyR3JpZCwgdGhyZWFkc1BlclRocmVhZGdyb3VwKTsKK30KKworLy8gbWV0aG9kOiBz
ZXRCYXJyaWVyCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6
c2V0QmFycmllcigpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEJhcnJpZXIpKTsKK30KKworLy8gbWV0aG9kOiBjbGVhckJhcnJpZXIK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpjbGVhckJhcnJp
ZXIoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChjbGVhckJhcnJpZXIpKTsKK30KKworLy8gbWV0aG9kOiBzZXRJbWFnZWJsb2NrV2lkdGg6
aGVpZ2h0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnNl
dEltYWdlYmxvY2tXaWR0aChOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEltYWdlYmxvY2tXaWR0aF9oZWlnaHRfKSwgd2lkdGgsIGhlaWdodCk7Cit9CisKKy8vIG1l
dGhvZDogcmVzZXQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5k
OjpyZXNldCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHJlc2V0KSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGhyZWFkZ3JvdXBNZW1vcnlM
ZW5ndGg6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21t
YW5kOjpzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoX2F0SW5kZXhfKSwgbGVu
Z3RoLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RhZ2VJblJlZ2lvbjoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRTdGFnZUluUmVnaW9uKE1U
TDo6UmVnaW9uIHJlZ2lvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0U3RhZ2VJblJlZ2lvbl8pLCByZWdpb24pOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyMzgzNWQxZGI3
OGFkODJkZjQ3NmQyNjBjMzJkYmQ5Y2JlODEzNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZS5ocHAKQEAgLTAsMCArMSwxNTcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUu
aHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIK
KyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0
aW9uSGFuZGxlLmhwcCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhw
cCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisjaW5jbHVkZSAiTVRMVmlzaWJsZUZ1bmN0
aW9uVGFibGUuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX09QVElPTlMoTlM6OlVJbnRl
Z2VyLCBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZSkgeworICAgIEludGVyc2VjdGlvbkZ1
bmN0aW9uU2lnbmF0dXJlTm9uZSA9IDAsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1
cmVJbnN0YW5jaW5nID0gMSwKKyAgICBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZVRyaWFu
Z2xlRGF0YSA9IDIsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVXb3JsZFNwYWNl
RGF0YSA9IDQsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVJbnN0YW5jZU1vdGlv
biA9IDgsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVQcmltaXRpdmVNb3Rpb24g
PSAxNiwKKyAgICBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZUV4dGVuZGVkTGltaXRzID0g
MzIsCit9OworCitjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciA6IHB1
YmxpYyBOUzo6Q29weWluZzxJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2Ny
aXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVz
Y3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlRGVzY3JpcHRvciogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0
b3IoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb25Db3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnVuY3Rpb25Db3VudChOUzo6VUludGVnZXIg
ZnVuY3Rpb25Db3VudCk7Cit9OworCitjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlIDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBSZXNvdXJj
ZT4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZv
aWQgc2V0QnVmZmVycyhjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJ
bnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgc2V0RnVuY3Rp
b24oY29uc3QgY2xhc3MgRnVuY3Rpb25IYW5kbGUqIGZ1bmN0aW9uLCBOUzo6VUludGVnZXIgaW5k
ZXgpOworCisgICAgdm9pZCBzZXRGdW5jdGlvbnMoY29uc3QgY2xhc3MgRnVuY3Rpb25IYW5kbGUq
IGZ1bmN0aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCBzZXRPcGFxdWVUcmlh
bmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1
cmUgc2lnbmF0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBzZXRPcGFxdWVU
cmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWdu
YXR1cmUgc2lnbmF0dXJlLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCBzZXRWaXNpYmxl
RnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25U
YWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgc2V0VmlzaWJsZUZ1
bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRh
Ymxlc1tdLCBOUzo6UmFuZ2UgYnVmZmVyUmFuZ2UpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVz
Y3JpcHRvciogTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogTVRMOjpJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4oKTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IK
K19NVExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIE1U
TDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OmludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NM
UyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9T
RUwoaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVy
dHk6IGZ1bmN0aW9uQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yOjpmdW5jdGlvbkNvdW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZnVuY3Rpb25Db3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OnNldEZ1bmN0aW9uQ291bnQoTlM6OlVJ
bnRlZ2VyIGZ1bmN0aW9uQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uQ291bnRfKSwgZnVuY3Rpb25Db3VudCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6OnNldEJ1ZmZlcihjb25zdCBNVEw6
OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQor
CisvLyBtZXRob2Q6IHNldEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTo6c2V0QnVmZmVycyhjb25zdCBNVEw6
OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfKSwgYnVmZmVycywgb2Zmc2V0
cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZ1bmN0aW9uOmF0SW5kZXg6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb24oY29u
c3QgTVRMOjpGdW5jdGlvbkhhbmRsZSogZnVuY3Rpb24sIE5TOjpVSW50ZWdlciBpbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RnVuY3Rpb25fYXRJbmRleF8pLCBmdW5jdGlvbiwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNl
dEZ1bmN0aW9uczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb25zKGNvbnN0IE1UTDo6RnVuY3Rpb25IYW5kbGUqIGZ1
bmN0aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uc193aXRoUmFuZ2VfKSwgZnVu
Y3Rpb25zLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNl
Y3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOjpzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlv
bkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmUgc2lnbmF0dXJlLCBO
Uzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb25X
aXRoU2lnbmF0dXJlX2F0SW5kZXhfKSwgc2lnbmF0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmU6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6
OnNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb24oTVRMOjpJbnRlcnNlY3Rpb25G
dW5jdGlvblNpZ25hdHVyZSBzaWduYXR1cmUsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3BhcXVlVHJp
YW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmVfd2l0aFJhbmdlXyksIHNpZ25h
dHVyZSwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZpc2libGVGdW5jdGlvblRhYmxlOmF0
QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZTo6c2V0VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25U
YWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaXNpYmxl
RnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIGZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4
KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJh
bmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6OnNl
dFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiBm
dW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgYnVmZmVyUmFuZ2UpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZpc2libGVGdW5jdGlv
blRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgZnVuY3Rpb25UYWJsZXMsIGJ1ZmZlclJhbmdlKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExM
aWJyYXJ5LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaWJy
YXJ5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xYTUyNjdhMTZmYzE5ZDQxOTYxYWVmZjljMDlmYWM3ZDAxMDk3
MmM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTExpYnJhcnkuaHBwCkBAIC0wLDAgKzEsNjIxIEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExMaWJyYXJ5LmhwcAor
Ly8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8g
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLwor
Ly8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8v
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5j
bHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aHBwPgorCisjaW5jbHVkZSAiTVRMQXJndW1lbnQuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9u
RGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMTGlicmFyeS5ocHAiCisjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgUGF0
Y2hUeXBlKSB7CisgICAgUGF0Y2hUeXBlTm9uZSA9IDAsCisgICAgUGF0Y2hUeXBlVHJpYW5nbGUg
PSAxLAorICAgIFBhdGNoVHlwZVF1YWQgPSAyLAorfTsKKworY2xhc3MgVmVydGV4QXR0cmlidXRl
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxWZXJ0ZXhBdHRyaWJ1dGU+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIFZlcnRleEF0dHJpYnV0ZSogYWxsb2MoKTsKKworICAgIGNsYXNzIFZl
cnRleEF0dHJpYnV0ZSogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAg
ICAgICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZUluZGV4KCkgY29uc3Q7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVUeXBlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY3RpdmUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdGNoRGF0YSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGF0Y2hDb250cm9sUG9pbnREYXRhKCkgY29uc3Q7Cit9OworCitjbGFzcyBBdHRyaWJ1
dGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEF0dHJpYnV0ZT4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgQXR0cmlidXRlKiBhbGxvYygpOworCisgICAgY2xhc3MgQXR0cmlidXRlKiAg
ICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgbmFtZSgpIGNvbnN0
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgYXR0cmlidXRlSW5kZXgoKSBjb25zdDsK
KworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgIGF0dHJpYnV0ZVR5cGUoKSBjb25zdDsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSgpIGNvbnN0OworCisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgcGF0Y2hEYXRhKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICBwYXRjaENvbnRyb2xQb2ludERhdGEoKSBjb25zdDsKK307CisKK19NVExfRU5V
TShOUzo6VUludGVnZXIsIEZ1bmN0aW9uVHlwZSkgeworICAgIEZ1bmN0aW9uVHlwZVZlcnRleCA9
IDEsCisgICAgRnVuY3Rpb25UeXBlRnJhZ21lbnQgPSAyLAorICAgIEZ1bmN0aW9uVHlwZUtlcm5l
bCA9IDMsCisgICAgRnVuY3Rpb25UeXBlVmlzaWJsZSA9IDUsCisgICAgRnVuY3Rpb25UeXBlSW50
ZXJzZWN0aW9uID0gNiwKK307CisKK2NsYXNzIEZ1bmN0aW9uQ29uc3RhbnQgOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPEZ1bmN0aW9uQ29uc3RhbnQ+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIEZ1bmN0aW9uQ29uc3RhbnQqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBGdW5jdGlvbkNvbnN0
YW50KiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAg
IG5hbWUoKSBjb25zdDsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgICAgICB0eXBl
KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgaW5kZXgoKSBj
b25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCgpIGNv
bnN0OworfTsKKwordXNpbmcgQXV0b3JlbGVhc2VkQXJndW1lbnQgPSBjbGFzcyBBcmd1bWVudCo7
CisKK2NsYXNzIEZ1bmN0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbj4KK3sK
K3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7
CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTVRM
OjpGdW5jdGlvblR5cGUgICAgICBmdW5jdGlvblR5cGUoKSBjb25zdDsKKworICAgIE1UTDo6UGF0
Y2hUeXBlICAgICAgICAgcGF0Y2hUeXBlKCkgY29uc3Q7CisKKyAgICBOUzo6SW50ZWdlciAgICAg
ICAgICAgIHBhdGNoQ29udHJvbFBvaW50Q291bnQoKSBjb25zdDsKKworICAgIE5TOjpBcnJheSog
ICAgICAgICAgICAgdmVydGV4QXR0cmlidXRlcygpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAg
ICAgICAgICAgICBzdGFnZUlucHV0QXR0cmlidXRlcygpIGNvbnN0OworCisgICAgTlM6OlN0cmlu
ZyogICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAgICBOUzo6RGljdGlvbmFyeSogICAgICAg
IGZ1bmN0aW9uQ29uc3RhbnRzRGljdGlvbmFyeSgpIGNvbnN0OworCisgICAgY2xhc3MgQXJndW1l
bnRFbmNvZGVyKiBuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsK
KworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlciogbmV3QXJndW1lbnRFbmNvZGVyKE5TOjpVSW50
ZWdlciBidWZmZXJJbmRleCwgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRBcmd1bWVudCogcmVmbGVj
dGlvbik7CisKKyAgICBNVEw6OkZ1bmN0aW9uT3B0aW9ucyAgIG9wdGlvbnMoKSBjb25zdDsKK307
CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIExhbmd1YWdlVmVyc2lvbikgeworICAgIExhbmd1
YWdlVmVyc2lvbjFfMCA9IDY1NTM2LAorICAgIExhbmd1YWdlVmVyc2lvbjFfMSA9IDY1NTM3LAor
ICAgIExhbmd1YWdlVmVyc2lvbjFfMiA9IDY1NTM4LAorICAgIExhbmd1YWdlVmVyc2lvbjJfMCA9
IDEzMTA3MiwKKyAgICBMYW5ndWFnZVZlcnNpb24yXzEgPSAxMzEwNzMsCisgICAgTGFuZ3VhZ2VW
ZXJzaW9uMl8yID0gMTMxMDc0LAorICAgIExhbmd1YWdlVmVyc2lvbjJfMyA9IDEzMTA3NSwKKyAg
ICBMYW5ndWFnZVZlcnNpb24yXzQgPSAxMzEwNzYsCit9OworCitfTVRMX0VOVU0oTlM6OkludGVn
ZXIsIExpYnJhcnlUeXBlKSB7CisgICAgTGlicmFyeVR5cGVFeGVjdXRhYmxlID0gMCwKKyAgICBM
aWJyYXJ5VHlwZUR5bmFtaWMgPSAxLAorfTsKKworY2xhc3MgQ29tcGlsZU9wdGlvbnMgOiBwdWJs
aWMgTlM6OkNvcHlpbmc8Q29tcGlsZU9wdGlvbnM+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIENvbXBpbGVPcHRpb25zKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcGlsZU9wdGlvbnMq
ICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6RGljdGlvbmFyeSogICAgICAgICAgICAgIHByZXBy
b2Nlc3Nvck1hY3JvcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0UHJlcHJvY2Vzc29yTWFjcm9zKGNvbnN0IE5TOjpEaWN0aW9uYXJ5KiBwcmVwcm9jZXNzb3JN
YWNyb3MpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBmYXN0TWF0aEVuYWJs
ZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZhc3RNYXRo
RW5hYmxlZChib29sIGZhc3RNYXRoRW5hYmxlZCk7CisKKyAgICBNVEw6Okxhbmd1YWdlVmVyc2lv
biAgICAgICAgIGxhbmd1YWdlVmVyc2lvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0TGFuZ3VhZ2VWZXJzaW9uKE1UTDo6TGFuZ3VhZ2VWZXJzaW9uIGxhbmd1
YWdlVmVyc2lvbik7CisKKyAgICBNVEw6OkxpYnJhcnlUeXBlICAgICAgICAgICAgIGxpYnJhcnlU
eXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMaWJyYXJ5
VHlwZShNVEw6OkxpYnJhcnlUeXBlIGxpYnJhcnlUeXBlKTsKKworICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgICAgICAgICAgaW5zdGFsbE5hbWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEluc3RhbGxOYW1lKGNvbnN0IE5TOjpTdHJpbmcqIGluc3RhbGxOYW1l
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgbGlicmFyaWVzKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMaWJyYXJpZXMoY29uc3QgTlM6
OkFycmF5KiBsaWJyYXJpZXMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBw
cmVzZXJ2ZUludmFyaWFuY2UoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFByZXNlcnZlSW52YXJpYW5jZShib29sIHByZXNlcnZlSW52YXJpYW5jZSk7Cit9Owor
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBMaWJyYXJ5RXJyb3IpIHsKKyAgICBMaWJyYXJ5RXJy
b3JVbnN1cHBvcnRlZCA9IDEsCisgICAgTGlicmFyeUVycm9yQ29tcGlsZUZhaWx1cmUgPSAzLAor
ICAgIExpYnJhcnlFcnJvckNvbXBpbGVXYXJuaW5nID0gNCwKKyAgICBMaWJyYXJ5RXJyb3JGdW5j
dGlvbk5vdEZvdW5kID0gNSwKKyAgICBMaWJyYXJ5RXJyb3JGaWxlTm90Rm91bmQgPSA2LAorfTsK
KworY2xhc3MgTGlicmFyeSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8TGlicmFyeT4KK3sKK3B1
YmxpYzoKKyAgICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcq
IHBGdW5jdGlvbk5hbWUsIGNvbnN0IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIHBDb25z
dGFudFZhbHVlcywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgbmV3RnVuY3Rpb24oY29uc3QgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBwRGVz
Y3JpcHRvciwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5T
OjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb24oY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVu
Y3Rpb25EZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1
bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVy
KTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERl
dmljZSogICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogIG5ld0Z1bmN0
aW9uKGNvbnN0IE5TOjpTdHJpbmcqIGZ1bmN0aW9uTmFtZSk7CisKKyAgICBjbGFzcyBGdW5jdGlv
biogIG5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUsIGNvbnN0IGNsYXNzIEZ1bmN0
aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFsdWVzLCBOUzo6RXJyb3IqKiBlcnJvcik7CisK
KyAgICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUs
IGNvbnN0IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFsdWVzLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uRGVzY3Jp
cHRvciogZGVzY3JpcHRvciwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShNVEw6OkZ1bmN0aW9u
KiwgTlM6OkVycm9yKikpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICBuZXdGdW5jdGlvbihjb25z
dCBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb24oY29uc3Qg
Y2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSk7CisKKyAgICBj
bGFzcyBGdW5jdGlvbiogIG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKGNvbnN0IGNsYXNzIEludGVy
c2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3Ip
OworCisgICAgTlM6OkFycmF5KiAgICAgICBmdW5jdGlvbk5hbWVzKCkgY29uc3Q7CisKKyAgICBN
VEw6OkxpYnJhcnlUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgaW5z
dGFsbE5hbWUoKSBjb25zdDsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRlKiBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlZlcnRleEF0dHJpYnV0
ZT4oX01UTF9QUklWQVRFX0NMUyhNVExWZXJ0ZXhBdHRyaWJ1dGUpKTsKK30KKworLy8gbWV0aG9k
OiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0ZSogTVRMOjpWZXJ0ZXhBdHRy
aWJ1dGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VmVydGV4
QXR0cmlidXRlPigpOworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0
cmluZyogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5h
bWUpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJpYnV0ZUluZGV4CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OmF0dHJpYnV0ZUluZGV4KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYXR0cmlidXRlSW5kZXgpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJpYnV0
ZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OmF0
dHJpYnV0ZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0cmlidXRlVHlwZSkpOworfQor
CisvLyBwcm9wZXJ0eTogYWN0aXZlCitfTVRMX0lOTElORSBib29sIE1UTDo6VmVydGV4QXR0cmli
dXRlOjphY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNBY3RpdmUpKTsKK30KKworLy8gcHJvcGVydHk6
IHBhdGNoRGF0YQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6cGF0Y2hE
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGlzUGF0Y2hEYXRhKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXRj
aENvbnRyb2xQb2ludERhdGEKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6
OnBhdGNoQ29udHJvbFBvaW50RGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1BhdGNoQ29udHJvbFBvaW50
RGF0YSkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpB
dHRyaWJ1dGUqIE1UTDo6QXR0cmlidXRlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6QXR0cmlidXRlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEF0dHJpYnV0ZSkp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlKiBNVEw6
OkF0dHJpYnV0ZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpB
dHRyaWJ1dGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3Ry
aW5nKiBNVEw6OkF0dHJpYnV0ZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlSW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OkF0dHJpYnV0ZTo6YXR0cmlidXRlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChh
dHRyaWJ1dGVJbmRleCkpOworfQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlVHlwZQorX01UTF9J
TkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OkF0dHJpYnV0ZTo6YXR0cmlidXRlVHlwZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTChhdHRyaWJ1dGVUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY3Rp
dmUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpBdHRyaWJ1dGU6OmFjdGl2ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChpc0FjdGl2ZSkpOworfQorCisvLyBwcm9wZXJ0eTogcGF0Y2hEYXRhCitfTVRMX0lOTElORSBi
b29sIE1UTDo6QXR0cmlidXRlOjpwYXRjaERhdGEoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNQYXRjaERhdGEp
KTsKK30KKworLy8gcHJvcGVydHk6IHBhdGNoQ29udHJvbFBvaW50RGF0YQorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkF0dHJpYnV0ZTo6cGF0Y2hDb250cm9sUG9pbnREYXRhKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGlzUGF0Y2hDb250cm9sUG9pbnREYXRhKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQqIE1UTDo6RnVuY3Rpb25Db25zdGFu
dDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9u
Q29uc3RhbnQ+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25Db25zdGFudCkpOworfQorCisv
LyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25Db25zdGFudCogTVRMOjpG
dW5jdGlvbkNvbnN0YW50Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OkZ1bmN0aW9uQ29uc3RhbnQ+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ6Om5hbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5MSU5FIE1U
TDo6RGF0YVR5cGUgTVRMOjpGdW5jdGlvbkNvbnN0YW50Ojp0eXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpGdW5jdGlvbkNvbnN0YW50OjppbmRleCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluZGV4KSk7Cit9CisKKy8vIHByb3BlcnR5OiByZXF1aXJlZAorX01UTF9JTkxJTkUgYm9v
bCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ6OnJlcXVpcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlcXVpcmVk
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRM
OjpGdW5jdGlvbjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyog
bGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01U
TF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6RnVuY3Rpb246OmRldmljZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25UeXBlCitfTVRM
X0lOTElORSBNVEw6OkZ1bmN0aW9uVHlwZSBNVEw6OkZ1bmN0aW9uOjpmdW5jdGlvblR5cGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25UeXBl
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uVHlwZSkpOworfQorCisvLyBwcm9wZXJ0
eTogcGF0Y2hUeXBlCitfTVRMX0lOTElORSBNVEw6OlBhdGNoVHlwZSBNVEw6OkZ1bmN0aW9uOjpw
YXRjaFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UGF0Y2hUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhdGNoVHlwZSkpOworfQorCisvLyBw
cm9wZXJ0eTogcGF0Y2hDb250cm9sUG9pbnRDb3VudAorX01UTF9JTkxJTkUgTlM6OkludGVnZXIg
TVRMOjpGdW5jdGlvbjo6cGF0Y2hDb250cm9sUG9pbnRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocGF0Y2hDb250cm9sUG9pbnRDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4QXR0
cmlidXRlcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uOjp2ZXJ0ZXhBdHRy
aWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJy
YXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleEF0dHJpYnV0ZXMpKTsKK30KKworLy8g
cHJvcGVydHk6IHN0YWdlSW5wdXRBdHRyaWJ1dGVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1U
TDo6RnVuY3Rpb246OnN0YWdlSW5wdXRBdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0
YWdlSW5wdXRBdHRyaWJ1dGVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElO
RSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
YW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvbkNvbnN0YW50c0RpY3Rpb25hcnkKK19N
VExfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBNVEw6OkZ1bmN0aW9uOjpmdW5jdGlvbkNvbnN0YW50
c0RpY3Rpb25hcnkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpEaWN0aW9uYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkNvbnN0YW50c0Rp
Y3Rpb25hcnkpKTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVy
SW5kZXg6CitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RW5jb2RlciogTVRMOjpGdW5jdGlvbjo6
bmV3QXJndW1lbnRFbmNvZGVyKE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50RW5jb2Rlcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4XyksIGJ1ZmZlcklu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXg6
cmVmbGVjdGlvbjoKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRFbmNvZGVyKiBNVEw6OkZ1bmN0
aW9uOjpuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4LCBjb25zdCBN
VEw6OkF1dG9yZWxlYXNlZEFyZ3VtZW50KiByZWZsZWN0aW9uKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXhfcmVmbGVjdGlvbl8pLCBidWZm
ZXJJbmRleCwgcmVmbGVjdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBvcHRpb25zCitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uT3B0aW9ucyBNVEw6OkZ1bmN0aW9uOjpvcHRpb25zKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uT3B0aW9ucz4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChvcHRpb25zKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvbXBpbGVPcHRpb25zKiBNVEw6OkNvbXBpbGVPcHRp
b25zOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcGls
ZU9wdGlvbnM+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcGlsZU9wdGlvbnMpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXBpbGVPcHRpb25zKiBNVEw6OkNvbXBp
bGVPcHRpb25zOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNv
bXBpbGVPcHRpb25zPigpOworfQorCisvLyBwcm9wZXJ0eTogcHJlcHJvY2Vzc29yTWFjcm9zCitf
TVRMX0lOTElORSBOUzo6RGljdGlvbmFyeSogTVRMOjpDb21waWxlT3B0aW9uczo6cHJlcHJvY2Vz
c29yTWFjcm9zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
RGljdGlvbmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlcHJvY2Vzc29yTWFjcm9zKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9uczo6c2V0UHJlcHJvY2Vz
c29yTWFjcm9zKGNvbnN0IE5TOjpEaWN0aW9uYXJ5KiBwcmVwcm9jZXNzb3JNYWNyb3MpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFBy
ZXByb2Nlc3Nvck1hY3Jvc18pLCBwcmVwcm9jZXNzb3JNYWNyb3MpOworfQorCisvLyBwcm9wZXJ0
eTogZmFzdE1hdGhFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcGlsZU9wdGlvbnM6
OmZhc3RNYXRoRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChmYXN0TWF0aEVuYWJsZWQpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXBpbGVPcHRpb25zOjpzZXRGYXN0TWF0aEVuYWJsZWQo
Ym9vbCBmYXN0TWF0aEVuYWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZhc3RNYXRoRW5hYmxlZF8pLCBmYXN0TWF0aEVuYWJs
ZWQpOworfQorCisvLyBwcm9wZXJ0eTogbGFuZ3VhZ2VWZXJzaW9uCitfTVRMX0lOTElORSBNVEw6
Okxhbmd1YWdlVmVyc2lvbiBNVEw6OkNvbXBpbGVPcHRpb25zOjpsYW5ndWFnZVZlcnNpb24oKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGFuZ3VhZ2VWZXJz
aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhbmd1YWdlVmVyc2lvbikpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q29tcGlsZU9wdGlvbnM6OnNldExhbmd1YWdlVmVyc2lvbihNVEw6
Okxhbmd1YWdlVmVyc2lvbiBsYW5ndWFnZVZlcnNpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhbmd1YWdlVmVyc2lvbl8pLCBs
YW5ndWFnZVZlcnNpb24pOworfQorCisvLyBwcm9wZXJ0eTogbGlicmFyeVR5cGUKK19NVExfSU5M
SU5FIE1UTDo6TGlicmFyeVR5cGUgTVRMOjpDb21waWxlT3B0aW9uczo6bGlicmFyeVR5cGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlicmFyeVR5cGU+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGlicmFyeVR5cGUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkNvbXBpbGVPcHRpb25zOjpzZXRMaWJyYXJ5VHlwZShNVEw6OkxpYnJhcnlUeXBl
IGxpYnJhcnlUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRMaWJyYXJ5VHlwZV8pLCBsaWJyYXJ5VHlwZSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBpbnN0YWxsTmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21waWxl
T3B0aW9uczo6aW5zdGFsbE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbGxOYW1lKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9uczo6c2V0SW5zdGFsbE5h
bWUoY29uc3QgTlM6OlN0cmluZyogaW5zdGFsbE5hbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbGxOYW1lXyksIGluc3Rh
bGxOYW1lKTsKK30KKworLy8gcHJvcGVydHk6IGxpYnJhcmllcworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OkNvbXBpbGVPcHRpb25zOjpsaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9uczo6
c2V0TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogbGlicmFyaWVzKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMaWJyYXJpZXNfKSwg
bGlicmFyaWVzKTsKK30KKworLy8gcHJvcGVydHk6IHByZXNlcnZlSW52YXJpYW5jZQorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkNvbXBpbGVPcHRpb25zOjpwcmVzZXJ2ZUludmFyaWFuY2UoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwocHJlc2VydmVJbnZhcmlhbmNlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21waWxlT3B0aW9uczo6c2V0UHJlc2VydmVJbnZhcmlhbmNlKGJvb2wgcHJlc2VydmVJbnZh
cmlhbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRQcmVzZXJ2ZUludmFyaWFuY2VfKSwgcHJlc2VydmVJbnZhcmlhbmNlKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpT
dHJpbmcqIHBGdW5jdGlvbk5hbWUsIGNvbnN0IEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIHBDb25z
dGFudFZhbHVlcywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sg
c3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uICogcEZ1bmN0aW9uLCBOUzo6RXJyb3IgKiBwRXJy
b3IpPiBibG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBu
ZXdGdW5jdGlvbihwRnVuY3Rpb25OYW1lLCBwQ29uc3RhbnRWYWx1ZXMsIF4oRnVuY3Rpb24qIHBG
dW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwRnVu
Y3Rpb24sIHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6
bmV3RnVuY3Rpb24oY29uc3QgRnVuY3Rpb25EZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3Qg
c3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVycm9y
KT4mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sgc3RkOjpmdW5jdGlvbjx2b2lk
KEZ1bmN0aW9uICogcEZ1bmN0aW9uLCBOUzo6RXJyb3IgKiBwRXJyb3IpPiBibG9ja0NvbXBsZXRp
b25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdGdW5jdGlvbihwRGVzY3Jp
cHRvciwgXihGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0Nv
bXBsZXRpb25IYW5kbGVyKHBGdW5jdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpMaWJyYXJ5OjpuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbihjb25zdCBJbnRlcnNl
Y3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoRnVuY3Rpb24qIHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpPiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgX19ibG9jayBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb24gKiBw
RnVuY3Rpb24sIE5TOjpFcnJvciAqIHBFcnJvcik+IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBj
b21wbGV0aW9uSGFuZGxlcjsKKworICAgIG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKHBEZXNjcmlw
dG9yLCBeKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29t
cGxldGlvbkhhbmRsZXIocEZ1bmN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKworLy8gcHJvcGVydHk6
IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkxpYnJhcnk6OmxhYmVsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGli
cmFyeTo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVs
KTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1U
TDo6TGlicmFyeTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisK
Ky8vIG1ldGhvZDogbmV3RnVuY3Rpb25XaXRoTmFtZToKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rp
b24qIE1UTDo6TGlicmFyeTo6bmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0cmluZyogZnVuY3Rpb25O
YW1lKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Z1bmN0aW9uV2l0aE5hbWVfKSwgZnVuY3Rpb25OYW1l
KTsKK30KKworLy8gbWV0aG9kOiBuZXdGdW5jdGlvbldpdGhOYW1lOmNvbnN0YW50VmFsdWVzOmVy
cm9yOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpMaWJyYXJ5OjpuZXdGdW5jdGlv
bihjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1
ZXMqIGNvbnN0YW50VmFsdWVzLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdGdW5jdGlvbldpdGhOYW1lX2NvbnN0YW50VmFsdWVzX2Vycm9yXyksIG5hbWUsIGNvbnN0YW50
VmFsdWVzLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3RnVuY3Rpb25XaXRoTmFtZTpjb25z
dGFudFZhbHVlczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaWJy
YXJ5OjpuZXdGdW5jdGlvbihjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBNVEw6OkZ1bmN0
aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFsdWVzLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVuY3Rpb25XaXRoTmFtZV9jb25z
dGFudFZhbHVlc19jb21wbGV0aW9uSGFuZGxlcl8pLCBuYW1lLCBjb25zdGFudFZhbHVlcywgY29t
cGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0
b3I6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6bmV3
RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpGdW5jdGlvbiosIE5TOjpFcnJvciopKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdGdW5j
dGlvbldpdGhEZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXyksIGRlc2NyaXB0b3IsIGNvbXBs
ZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9y
OmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpMaWJyYXJ5OjpuZXdGdW5j
dGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9y
KiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlv
bio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9lcnJv
cl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3SW50ZXJzZWN0aW9u
RnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpMaWJyYXJ5OjpuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbihjb25zdCBNVEw6OkludGVy
c2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShNVEw6OkZ1bmN0aW9uKiwgTlM6OkVycm9yKikpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0
aW9uV2l0aERlc2NyaXB0b3JfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgY29tcGxl
dGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uV2l0
aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6OkxpYnJh
cnk6Om5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2Ny
aXB0b3IsIGVycm9yKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uTmFtZXMKK19NVExfSU5M
SU5FIE5TOjpBcnJheSogTVRMOjpMaWJyYXJ5OjpmdW5jdGlvbk5hbWVzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGZ1bmN0aW9uTmFtZXMpKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5M
SU5FIE1UTDo6TGlicmFyeVR5cGUgTVRMOjpMaWJyYXJ5Ojp0eXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnlUeXBlPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbGxOYW1lCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkxpYnJhcnk6Omluc3RhbGxOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChpbnN0YWxsTmFtZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHAgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlua2VkRnVuY3Rpb25zLmhwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NjMxOWE1YTk0MWJmZDgzODdhNjI3NzYxMDg2ZWM5NmMyNjBlZWNmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0
aW9ucy5ocHAKQEAgLTAsMCArMSwxMTUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHAKKy8v
CisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1
ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhw
cD4KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgTGlua2VkRnVuY3Rpb25zIDogcHVibGljIE5T
OjpDb3B5aW5nPExpbmtlZEZ1bmN0aW9ucz4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
TGlua2VkRnVuY3Rpb25zKiBhbGxvYygpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiAg
ICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogbGlua2Vk
RnVuY3Rpb25zKCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGdW5jdGlv
bnMoY29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAg
ICAgICAgICAgICAgYmluYXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0QmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogYmluYXJ5
RnVuY3Rpb25zKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgIGdyb3Vwcygp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEdyb3Vwcyhjb25z
dCBOUzo6QXJyYXkqIGdyb3Vwcyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAg
ICBwcml2YXRlRnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0UHJpdmF0ZUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIHByaXZhdGVGdW5jdGlv
bnMpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6TGlua2VkRnVuY3Rpb25zPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTExpbmtlZEZ1bmN0aW9ucykpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpMaW5rZWRGdW5jdGlvbnM+KCk7
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGxpbmtlZEZ1bmN0aW9ucworX01UTF9JTkxJTkUgTVRM
OjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpsaW5rZWRGdW5jdGlvbnMo
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlua2VkRnVuY3Rpb25z
Kj4oX01UTF9QUklWQVRFX0NMUyhNVExMaW5rZWRGdW5jdGlvbnMpLCBfTVRMX1BSSVZBVEVfU0VM
KGxpbmtlZEZ1bmN0aW9ucykpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25zCitfTVRMX0lO
TElORSBOUzo6QXJyYXkqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpmdW5jdGlvbnMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaW5r
ZWRGdW5jdGlvbnM6OnNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9ucykKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RnVuY3Rpb25zXyksIGZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlGdW5jdGlv
bnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpMaW5rZWRGdW5jdGlvbnM6OmJpbmFyeUZ1
bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChiaW5hcnlGdW5jdGlvbnMpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6c2V0QmluYXJ5RnVuY3Rpb25zKGNv
bnN0IE5TOjpBcnJheSogYmluYXJ5RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCaW5hcnlGdW5jdGlvbnNfKSwgYmlu
YXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IGdyb3VwcworX01UTF9JTkxJTkUgTlM6
OkFycmF5KiBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6Z3JvdXBzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGdyb3VwcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpz
ZXRHcm91cHMoY29uc3QgTlM6OkFycmF5KiBncm91cHMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEdyb3Vwc18pLCBncm91cHMpOwor
fQorCisvLyBwcm9wZXJ0eTogcHJpdmF0ZUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5
KiBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6cHJpdmF0ZUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChwcml2YXRlRnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaW5r
ZWRGdW5jdGlvbnM6OnNldFByaXZhdGVGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiBwcml2YXRl
RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRQcml2YXRlRnVuY3Rpb25zXyksIHByaXZhdGVGdW5jdGlvbnMpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBhcmFs
bGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA0MzdiNGM4Yzk3ZDE1MmRjYjYyYTAwMTJkNGVmNjU0OGJkNWE0N2YKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSw5NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExI
ZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVy
LmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQYXNzLmhwcCIKKworbmFtZXNwYWNlIE1UTAorewor
Y2xhc3MgUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNp
bmc8UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlciwgQ29tbWFuZEVuY29kZXI+Cit7CitwdWJs
aWM6CisgICAgY2xhc3MgUmVuZGVyQ29tbWFuZEVuY29kZXIqIHJlbmRlckNvbW1hbmRFbmNvZGVy
KCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29sb3JTdG9yZUFjdGlv
bihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUludGVnZXIgY29sb3JBdHRhY2ht
ZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoU3Rv
cmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbik7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24g
c3RvcmVBY3Rpb24pOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbG9y
U3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0
aW9ucywgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3Jl
QWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlv
bk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zKTsKK307CisKK30KKworLy8gbWV0aG9kOiByZW5k
ZXJDb21tYW5kRW5jb2RlcgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlciog
TVRMOjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpyZW5kZXJDb21tYW5kRW5jb2Rlcigp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJDb21tYW5kRW5j
b2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyQ29tbWFuZEVuY29kZXIpKTsKK30K
KworLy8gbWV0aG9kOiBzZXRDb2xvclN0b3JlQWN0aW9uOmF0SW5kZXg6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Q29sb3JTdG9yZUFjdGlv
bihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUludGVnZXIgY29sb3JBdHRhY2ht
ZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldENvbG9yU3RvcmVBY3Rpb25fYXRJbmRleF8pLCBzdG9yZUFjdGlvbiwgY29s
b3JBdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoU3RvcmVBY3Rpb246
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
RGVwdGhTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFN0
b3JlQWN0aW9uXyksIHN0b3JlQWN0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzZXRTdGVuY2lsU3Rv
cmVBY3Rpb246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5j
b2Rlcjo6c2V0U3RlbmNpbFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24p
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFN0ZW5jaWxTdG9yZUFjdGlvbl8pLCBzdG9yZUFjdGlvbik7Cit9CisKKy8vIG1ldGhvZDog
c2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnM6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9u
cyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMsIE5TOjpVSW50ZWdl
ciBjb2xvckF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnNfYXRJbmRl
eF8pLCBzdG9yZUFjdGlvbk9wdGlvbnMsIGNvbG9yQXR0YWNobWVudEluZGV4KTsKK30KKworLy8g
bWV0aG9kOiBzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9u
cyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoU3Rv
cmVBY3Rpb25PcHRpb25zXyksIHN0b3JlQWN0aW9uT3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDog
c2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQYXJh
bGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zKE1U
TDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFN0b3Jl
QWN0aW9uT3B0aW9uc18pLCBzdG9yZUFjdGlvbk9wdGlvbnMpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBpcGVsaW5lLmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXBlbGluZS5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmEzYzk0NzczOTZhZDdjMzE2ZDZiNmNkYmVmMmEyMDhjNGY5ODc4OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXBlbGluZS5o
cHAKQEAgLTAsMCArMSwxMDkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFBpcGVsaW5lLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVk
ZSAiTVRMUGlwZWxpbmUuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJ
bnRlZ2VyLCBNdXRhYmlsaXR5KSB7CisgICAgTXV0YWJpbGl0eURlZmF1bHQgPSAwLAorICAgIE11
dGFiaWxpdHlNdXRhYmxlID0gMSwKKyAgICBNdXRhYmlsaXR5SW1tdXRhYmxlID0gMiwKK307CisK
K2NsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFBpcGVs
aW5lQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFBpcGVsaW5lQnVmZmVy
RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6TXV0YWJpbGl0eSAgICAgICAg
ICAgICAgICAgICAgICAgIG11dGFiaWxpdHkoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRNdXRhYmlsaXR5KE1UTDo6TXV0YWJpbGl0eSBtdXRh
YmlsaXR5KTsKK307CisKK2NsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5IDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheT4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqIGFs
bG9jKCk7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogICAgICAg
IGluaXQoKTsKKworICAgIGNsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciogICAgICAgICAg
ICAgb2JqZWN0KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3IqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsK
K307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UGlw
ZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcjo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlBpcGVsaW5lQnVmZmVy
RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3Ip
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVy
RGVzY3JpcHRvciogTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yPigp
OworfQorCisvLyBwcm9wZXJ0eTogbXV0YWJpbGl0eQorX01UTF9JTkxJTkUgTVRMOjpNdXRhYmls
aXR5IE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yOjptdXRhYmlsaXR5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Ok11dGFiaWxpdHk+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobXV0YWJpbGl0eSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yOjpzZXRNdXRhYmlsaXR5KE1UTDo6TXV0YWJpbGl0eSBt
dXRhYmlsaXR5KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRNdXRhYmlsaXR5XyksIG11dGFiaWxpdHkpOworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JB
cnJheSogTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFy
cmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRl
c2NyaXB0b3JBcnJheSogTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2Ny
aXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6
CitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciogTVRMOjpQaXBlbGlu
ZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpcGVsaW5lQnVmZmVyRGVz
Y3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0
XyksIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vi
c2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFy
cmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqIGJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0
XyksIGJ1ZmZlciwgYnVmZmVySW5kZXgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBpeGVsRm9ybWF0LmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXhlbEZvcm1hdC5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMy
MGM4MjllYmEwNTIyN2M1Yzk0NTkzZjQ3YmJiNzZmMTEyNDFjZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXhlbEZvcm1hdC5ocHAK
QEAgLTAsMCArMSwxNzMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFBpeGVsRm9ybWF0LmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1lc3Bh
Y2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQaXhlbEZvcm1hdCkgeworICAgIFBp
eGVsRm9ybWF0SW52YWxpZCA9IDAsCisgICAgUGl4ZWxGb3JtYXRBOFVub3JtID0gMSwKKyAgICBQ
aXhlbEZvcm1hdFI4VW5vcm0gPSAxMCwKKyAgICBQaXhlbEZvcm1hdFI4VW5vcm1fc1JHQiA9IDEx
LAorICAgIFBpeGVsRm9ybWF0UjhTbm9ybSA9IDEyLAorICAgIFBpeGVsRm9ybWF0UjhVaW50ID0g
MTMsCisgICAgUGl4ZWxGb3JtYXRSOFNpbnQgPSAxNCwKKyAgICBQaXhlbEZvcm1hdFIxNlVub3Jt
ID0gMjAsCisgICAgUGl4ZWxGb3JtYXRSMTZTbm9ybSA9IDIyLAorICAgIFBpeGVsRm9ybWF0UjE2
VWludCA9IDIzLAorICAgIFBpeGVsRm9ybWF0UjE2U2ludCA9IDI0LAorICAgIFBpeGVsRm9ybWF0
UjE2RmxvYXQgPSAyNSwKKyAgICBQaXhlbEZvcm1hdFJHOFVub3JtID0gMzAsCisgICAgUGl4ZWxG
b3JtYXRSRzhVbm9ybV9zUkdCID0gMzEsCisgICAgUGl4ZWxGb3JtYXRSRzhTbm9ybSA9IDMyLAor
ICAgIFBpeGVsRm9ybWF0Ukc4VWludCA9IDMzLAorICAgIFBpeGVsRm9ybWF0Ukc4U2ludCA9IDM0
LAorICAgIFBpeGVsRm9ybWF0QjVHNlI1VW5vcm0gPSA0MCwKKyAgICBQaXhlbEZvcm1hdEExQkdS
NVVub3JtID0gNDEsCisgICAgUGl4ZWxGb3JtYXRBQkdSNFVub3JtID0gNDIsCisgICAgUGl4ZWxG
b3JtYXRCR1I1QTFVbm9ybSA9IDQzLAorICAgIFBpeGVsRm9ybWF0UjMyVWludCA9IDUzLAorICAg
IFBpeGVsRm9ybWF0UjMyU2ludCA9IDU0LAorICAgIFBpeGVsRm9ybWF0UjMyRmxvYXQgPSA1NSwK
KyAgICBQaXhlbEZvcm1hdFJHMTZVbm9ybSA9IDYwLAorICAgIFBpeGVsRm9ybWF0UkcxNlNub3Jt
ID0gNjIsCisgICAgUGl4ZWxGb3JtYXRSRzE2VWludCA9IDYzLAorICAgIFBpeGVsRm9ybWF0Ukcx
NlNpbnQgPSA2NCwKKyAgICBQaXhlbEZvcm1hdFJHMTZGbG9hdCA9IDY1LAorICAgIFBpeGVsRm9y
bWF0UkdCQThVbm9ybSA9IDcwLAorICAgIFBpeGVsRm9ybWF0UkdCQThVbm9ybV9zUkdCID0gNzEs
CisgICAgUGl4ZWxGb3JtYXRSR0JBOFNub3JtID0gNzIsCisgICAgUGl4ZWxGb3JtYXRSR0JBOFVp
bnQgPSA3MywKKyAgICBQaXhlbEZvcm1hdFJHQkE4U2ludCA9IDc0LAorICAgIFBpeGVsRm9ybWF0
QkdSQThVbm9ybSA9IDgwLAorICAgIFBpeGVsRm9ybWF0QkdSQThVbm9ybV9zUkdCID0gODEsCisg
ICAgUGl4ZWxGb3JtYXRSR0IxMEEyVW5vcm0gPSA5MCwKKyAgICBQaXhlbEZvcm1hdFJHQjEwQTJV
aW50ID0gOTEsCisgICAgUGl4ZWxGb3JtYXRSRzExQjEwRmxvYXQgPSA5MiwKKyAgICBQaXhlbEZv
cm1hdFJHQjlFNUZsb2F0ID0gOTMsCisgICAgUGl4ZWxGb3JtYXRCR1IxMEEyVW5vcm0gPSA5NCwK
KyAgICBQaXhlbEZvcm1hdFJHMzJVaW50ID0gMTAzLAorICAgIFBpeGVsRm9ybWF0UkczMlNpbnQg
PSAxMDQsCisgICAgUGl4ZWxGb3JtYXRSRzMyRmxvYXQgPSAxMDUsCisgICAgUGl4ZWxGb3JtYXRS
R0JBMTZVbm9ybSA9IDExMCwKKyAgICBQaXhlbEZvcm1hdFJHQkExNlNub3JtID0gMTEyLAorICAg
IFBpeGVsRm9ybWF0UkdCQTE2VWludCA9IDExMywKKyAgICBQaXhlbEZvcm1hdFJHQkExNlNpbnQg
PSAxMTQsCisgICAgUGl4ZWxGb3JtYXRSR0JBMTZGbG9hdCA9IDExNSwKKyAgICBQaXhlbEZvcm1h
dFJHQkEzMlVpbnQgPSAxMjMsCisgICAgUGl4ZWxGb3JtYXRSR0JBMzJTaW50ID0gMTI0LAorICAg
IFBpeGVsRm9ybWF0UkdCQTMyRmxvYXQgPSAxMjUsCisgICAgUGl4ZWxGb3JtYXRCQzFfUkdCQSA9
IDEzMCwKKyAgICBQaXhlbEZvcm1hdEJDMV9SR0JBX3NSR0IgPSAxMzEsCisgICAgUGl4ZWxGb3Jt
YXRCQzJfUkdCQSA9IDEzMiwKKyAgICBQaXhlbEZvcm1hdEJDMl9SR0JBX3NSR0IgPSAxMzMsCisg
ICAgUGl4ZWxGb3JtYXRCQzNfUkdCQSA9IDEzNCwKKyAgICBQaXhlbEZvcm1hdEJDM19SR0JBX3NS
R0IgPSAxMzUsCisgICAgUGl4ZWxGb3JtYXRCQzRfUlVub3JtID0gMTQwLAorICAgIFBpeGVsRm9y
bWF0QkM0X1JTbm9ybSA9IDE0MSwKKyAgICBQaXhlbEZvcm1hdEJDNV9SR1Vub3JtID0gMTQyLAor
ICAgIFBpeGVsRm9ybWF0QkM1X1JHU25vcm0gPSAxNDMsCisgICAgUGl4ZWxGb3JtYXRCQzZIX1JH
QkZsb2F0ID0gMTUwLAorICAgIFBpeGVsRm9ybWF0QkM2SF9SR0JVZmxvYXQgPSAxNTEsCisgICAg
UGl4ZWxGb3JtYXRCQzdfUkdCQVVub3JtID0gMTUyLAorICAgIFBpeGVsRm9ybWF0QkM3X1JHQkFV
bm9ybV9zUkdCID0gMTUzLAorICAgIFBpeGVsRm9ybWF0UFZSVENfUkdCXzJCUFAgPSAxNjAsCisg
ICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JfMkJQUF9zUkdCID0gMTYxLAorICAgIFBpeGVsRm9ybWF0
UFZSVENfUkdCXzRCUFAgPSAxNjIsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JfNEJQUF9zUkdC
ID0gMTYzLAorICAgIFBpeGVsRm9ybWF0UFZSVENfUkdCQV8yQlBQID0gMTY0LAorICAgIFBpeGVs
Rm9ybWF0UFZSVENfUkdCQV8yQlBQX3NSR0IgPSAxNjUsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19S
R0JBXzRCUFAgPSAxNjYsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JBXzRCUFBfc1JHQiA9IDE2
NywKKyAgICBQaXhlbEZvcm1hdEVBQ19SMTFVbm9ybSA9IDE3MCwKKyAgICBQaXhlbEZvcm1hdEVB
Q19SMTFTbm9ybSA9IDE3MiwKKyAgICBQaXhlbEZvcm1hdEVBQ19SRzExVW5vcm0gPSAxNzQsCisg
ICAgUGl4ZWxGb3JtYXRFQUNfUkcxMVNub3JtID0gMTc2LAorICAgIFBpeGVsRm9ybWF0RUFDX1JH
QkE4ID0gMTc4LAorICAgIFBpeGVsRm9ybWF0RUFDX1JHQkE4X3NSR0IgPSAxNzksCisgICAgUGl4
ZWxGb3JtYXRFVEMyX1JHQjggPSAxODAsCisgICAgUGl4ZWxGb3JtYXRFVEMyX1JHQjhfc1JHQiA9
IDE4MSwKKyAgICBQaXhlbEZvcm1hdEVUQzJfUkdCOEExID0gMTgyLAorICAgIFBpeGVsRm9ybWF0
RVRDMl9SR0I4QTFfc1JHQiA9IDE4MywKKyAgICBQaXhlbEZvcm1hdEFTVENfNHg0X3NSR0IgPSAx
ODYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzV4NF9zUkdCID0gMTg3LAorICAgIFBpeGVsRm9ybWF0
QVNUQ181eDVfc1JHQiA9IDE4OCwKKyAgICBQaXhlbEZvcm1hdEFTVENfNng1X3NSR0IgPSAxODks
CisgICAgUGl4ZWxGb3JtYXRBU1RDXzZ4Nl9zUkdCID0gMTkwLAorICAgIFBpeGVsRm9ybWF0QVNU
Q184eDVfc1JHQiA9IDE5MiwKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg2X3NSR0IgPSAxOTMsCisg
ICAgUGl4ZWxGb3JtYXRBU1RDXzh4OF9zUkdCID0gMTk0LAorICAgIFBpeGVsRm9ybWF0QVNUQ18x
MHg1X3NSR0IgPSAxOTUsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDZfc1JHQiA9IDE5NiwKKyAg
ICBQaXhlbEZvcm1hdEFTVENfMTB4OF9zUkdCID0gMTk3LAorICAgIFBpeGVsRm9ybWF0QVNUQ18x
MHgxMF9zUkdCID0gMTk4LAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMngxMF9zUkdCID0gMTk5LAor
ICAgIFBpeGVsRm9ybWF0QVNUQ18xMngxMl9zUkdCID0gMjAwLAorICAgIFBpeGVsRm9ybWF0QVNU
Q180eDRfTERSID0gMjA0LAorICAgIFBpeGVsRm9ybWF0QVNUQ181eDRfTERSID0gMjA1LAorICAg
IFBpeGVsRm9ybWF0QVNUQ181eDVfTERSID0gMjA2LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDVf
TERSID0gMjA3LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDZfTERSID0gMjA4LAorICAgIFBpeGVs
Rm9ybWF0QVNUQ184eDVfTERSID0gMjEwLAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDZfTERSID0g
MjExLAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDhfTERSID0gMjEyLAorICAgIFBpeGVsRm9ybWF0
QVNUQ18xMHg1X0xEUiA9IDIxMywKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4Nl9MRFIgPSAyMTQs
CisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDhfTERSID0gMjE1LAorICAgIFBpeGVsRm9ybWF0QVNU
Q18xMHgxMF9MRFIgPSAyMTYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEyeDEwX0xEUiA9IDIxNywK
KyAgICBQaXhlbEZvcm1hdEFTVENfMTJ4MTJfTERSID0gMjE4LAorICAgIFBpeGVsRm9ybWF0QVNU
Q180eDRfSERSID0gMjIyLAorICAgIFBpeGVsRm9ybWF0QVNUQ181eDRfSERSID0gMjIzLAorICAg
IFBpeGVsRm9ybWF0QVNUQ181eDVfSERSID0gMjI0LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDVf
SERSID0gMjI1LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDZfSERSID0gMjI2LAorICAgIFBpeGVs
Rm9ybWF0QVNUQ184eDVfSERSID0gMjI4LAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDZfSERSID0g
MjI5LAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDhfSERSID0gMjMwLAorICAgIFBpeGVsRm9ybWF0
QVNUQ18xMHg1X0hEUiA9IDIzMSwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4Nl9IRFIgPSAyMzIs
CisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDhfSERSID0gMjMzLAorICAgIFBpeGVsRm9ybWF0QVNU
Q18xMHgxMF9IRFIgPSAyMzQsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEyeDEwX0hEUiA9IDIzNSwK
KyAgICBQaXhlbEZvcm1hdEFTVENfMTJ4MTJfSERSID0gMjM2LAorICAgIFBpeGVsRm9ybWF0R0JH
UjQyMiA9IDI0MCwKKyAgICBQaXhlbEZvcm1hdEJHUkc0MjIgPSAyNDEsCisgICAgUGl4ZWxGb3Jt
YXREZXB0aDE2VW5vcm0gPSAyNTAsCisgICAgUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXQgPSAyNTIs
CisgICAgUGl4ZWxGb3JtYXRTdGVuY2lsOCA9IDI1MywKKyAgICBQaXhlbEZvcm1hdERlcHRoMjRV
bm9ybV9TdGVuY2lsOCA9IDI1NSwKKyAgICBQaXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2ls
OCA9IDI2MCwKKyAgICBQaXhlbEZvcm1hdFgzMl9TdGVuY2lsOCA9IDI2MSwKKyAgICBQaXhlbEZv
cm1hdFgyNF9TdGVuY2lsOCA9IDI2MiwKKyAgICBQaXhlbEZvcm1hdEJHUkExMF9YUiA9IDU1MiwK
KyAgICBQaXhlbEZvcm1hdEJHUkExMF9YUl9zUkdCID0gNTUzLAorICAgIFBpeGVsRm9ybWF0QkdS
MTBfWFIgPSA1NTQsCisgICAgUGl4ZWxGb3JtYXRCR1IxMF9YUl9zUkdCID0gNTU1LAorfTsKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBy
aXZhdGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFByaXZh
dGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNhZTRkNzllNDg3MTZjYTM2N2FkYTg1MWEwNWY1ZjQ2YjE1MGRj
MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMUHJpdmF0ZS5ocHAKQEAgLTAsMCArMSwxMzUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFByaXZhdGUuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorCisjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIF9NVExfUFJJVkFURV9D
TFMoc3ltYm9sKSAoUHJpdmF0ZTo6Q2xhc3M6OnNfayMjc3ltYm9sKQorI2RlZmluZSBfTVRMX1BS
SVZBVEVfU0VMKGFjY2Vzc29yKSAoUHJpdmF0ZTo6U2VsZWN0b3I6OnNfayMjYWNjZXNzb3IpCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaWYgZGVm
aW5lZChNVExfUFJJVkFURV9JTVBMRU1FTlRBVElPTikKKworI2RlZmluZSBfTVRMX1BSSVZBVEVf
VklTSUJJTElUWSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCisjZGVmaW5l
IF9NVExfUFJJVkFURV9JTVBPUlQgX19hdHRyaWJ1dGVfXygod2Vha19pbXBvcnQpKQorCisjaWYg
X19PQkpDX18KKyNkZWZpbmUgX01UTF9QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkg
KChfX2JyaWRnZSB2b2lkKilvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wpKQorI2Vsc2UKKyNkZWZp
bmUgX01UTF9QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgb2JqY19sb29rVXBDbGFz
cygjc3ltYm9sKQorI2VuZGlmIC8vIF9fT0JKQ19fCisKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RF
Rl9DTFMoc3ltYm9sKSB2b2lkKiBzX2sjI3N5bWJvbCBfTVRMX1BSSVZBVEVfVklTSUJJTElUWSA9
IF9NVExfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpOworI2RlZmluZSBfTVRMX1BS
SVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfU0VMKGFjY2Vz
c29yLCBzeW1ib2wpIFNFTCBzX2sjI2FjY2Vzc29yIF9NVExfUFJJVkFURV9WSVNJQklMSVRZID0g
c2VsX3JlZ2lzdGVyTmFtZShzeW1ib2wpOworCisjaWYgZGVmaW5lZChfX01BQ18xMF8xNikgfHwg
ZGVmaW5lZChfX01BQ18xMV8wKSB8fCBkZWZpbmVkKF9fTUFDXzEyXzApIHx8IGRlZmluZWQoX19J
UEhPTkVfMTRfMCkgfHwgZGVmaW5lZChfX0lQSE9ORV8xNV8wKSB8fCBkZWZpbmVkKF9fVFZPU18x
NF8wKSB8fCBkZWZpbmVkKF9fVFZPU18xNV8wKQorCisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZf
U1RSKHR5cGUsIHN5bWJvbCkgICAgICAgICAgICAgICAgICBcCisgICAgX01UTF9FWFRFUk4gdHlw
ZSBjb25zdCBNVEwjI3N5bWJvbCBfTVRMX1BSSVZBVEVfSU1QT1JUOyBcCisgICAgdHlwZSBjb25z
dCAgICAgICAgICAgICAgICAgICAgICAgICBNVEw6OnN5bWJvbCA9IChudWxscHRyICE9ICZNVEwj
I3N5bWJvbCkgPyBNVEwjI3N5bWJvbCA6IG51bGxwdHI7CisKKyNlbHNlCisKKyNpbmNsdWRlIDxk
bGZjbi5oPgorCituYW1lc3BhY2UgTVRMCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIF9UeXBlPgorICAgIGlubGluZSBfVHlwZSBjb25zdCBMb2FkU3lt
Ym9sKGNvbnN0IGNoYXIqIHBTeW1ib2wpCisgICAgeworICAgICAgICBjb25zdCBfVHlwZSogcEFk
ZHJlc3MgPSBzdGF0aWNfY2FzdDxfVHlwZSo+KGRsc3ltKFJUTERfREVGQVVMVCwgcFN5bWJvbCkp
OworCisgICAgICAgIHJldHVybiBwQWRkcmVzcyA/ICpwQWRkcmVzcyA6IG51bGxwdHI7CisgICAg
fQorCit9IC8vIFByaXZhdGUKK30gLy8gTVRMCisKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9T
VFIodHlwZSwgc3ltYm9sKSBcCisgICAgX01UTF9FWFRFUk4gdHlwZSBjb25zdCBNVEwjI3N5bWJv
bDsgICAgXAorICAgIHR5cGUgY29uc3QgICAgICAgICAgICAgTVRMOjpzeW1ib2wgPSBQcml2YXRl
OjpMb2FkU3ltYm9sPHR5cGU+KCJNVEwiICNzeW1ib2wpOworCisjZW5kaWYgLy8gZGVmaW5lZChf
X01BQ18xMF8xNikgfHwgZGVmaW5lZChfX01BQ18xMV8wKSB8fCBkZWZpbmVkKF9fTUFDXzEyXzAp
IHx8IGRlZmluZWQoX19JUEhPTkVfMTRfMCkgfHwgZGVmaW5lZChfX0lQSE9ORV8xNV8wKSB8fCBk
ZWZpbmVkKF9fVFZPU18xNF8wKSB8fCBkZWZpbmVkKF9fVFZPU18xNV8wKQorCisjZWxzZQorCisj
ZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfQ0xTKHN5bWJvbCkgZXh0ZXJuIHZvaWQqIHNfayMjc3lt
Ym9sOworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9NVExf
UFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIGV4dGVybiBTRUwgc19rIyNhY2Nlc3Nv
cjsKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9TVFIodHlwZSwgc3ltYm9sKQorCisjZW5kaWYg
Ly8gTVRMX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBNVEwKK3sKK25hbWVzcGFjZSBQcml2
YXRlCit7CisgICAgbmFtZXNwYWNlIENsYXNzCisgICAgeworCisgICAgfSAvLyBDbGFzcworfSAv
LyBQcml2YXRlCit9IC8vIE1UTAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE1UTAoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAg
ICBuYW1lc3BhY2UgUHJvdG9jb2wKKyAgICB7CisKKyAgICB9IC8vIFByb3RvY29sCit9IC8vIFBy
aXZhdGUKK30gLy8gTVRMCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCituYW1lc3BhY2UgTVRMCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5h
bWVzcGFjZSBTZWxlY3RvcgorICAgIHsKKworICAgICAgICBfTVRMX1BSSVZBVEVfREVGX1NFTChi
ZWdpblNjb3BlLAorICAgICAgICAgICAgImJlZ2luU2NvcGUiKTsKKyAgICAgICAgX01UTF9QUklW
QVRFX0RFRl9TRUwoZW5kU2NvcGUsCisgICAgICAgICAgICAiZW5kU2NvcGUiKTsKKyAgICB9IC8v
IENsYXNzCit9IC8vIFByaXZhdGUKK30gLy8gTVRMCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRlLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTg2Njk1NDVjYjJjOGVhMzMwOTFjZmU1YTlmOGVjMTg2YmJhMTJiZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSYXN0ZXJpemF0
aW9uUmF0ZS5ocHAKQEAgLTAsMCArMSwzODYgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRlLmhw
cAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisj
aW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaHBwPgorCisjaW5jbHVkZSAiTVRMRGV2aWNlLmhwcCIKKyNpbmNsdWRlICJNVExUeXBlcy5o
cHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIFJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJy
YXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXk+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJy
YXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiAg
ICAgICAgaW5pdCgpOworCisgICAgTlM6Ok51bWJlciogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBOUzo6TnVtYmVyKiB2
YWx1ZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2NsYXNzIFJhc3Rlcml6YXRpb25SYXRl
TGF5ZXJEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJhc3Rlcml6YXRpb25SYXRlTGF5
ZXJEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSYXN0ZXJpemF0aW9u
UmF0ZUxheWVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIE1UTDo6UmFzdGVyaXphdGlvblJh
dGVMYXllckRlc2NyaXB0b3IqICAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogICAgICAgICBpbml0KE1UTDo6U2l6ZSBzYW1wbGVDb3Vu
dCk7CisKKyAgICBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiAgICAgICAg
IGluaXQoTVRMOjpTaXplIHNhbXBsZUNvdW50LCBjb25zdCBmbG9hdCogaG9yaXpvbnRhbCwgY29u
c3QgZmxvYXQqIHZlcnRpY2FsKTsKKworICAgIE1UTDo6U2l6ZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQoKSBjb25zdDsKKworICAgIE1UTDo6U2l6ZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4U2FtcGxlQ291bnQoKSBjb25z
dDsKKworICAgIGZsb2F0KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aG9yaXpvbnRhbFNhbXBsZVN0b3JhZ2UoKSBjb25zdDsKKworICAgIGZsb2F0KiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWxTYW1wbGVTdG9yYWdlKCkgY29u
c3Q7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiAgICAgICAgICAg
IGhvcml6b250YWwoKSBjb25zdDsKKworICAgIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlU2FtcGxl
QXJyYXkqICAgICAgICAgICAgdmVydGljYWwoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FtcGxlQ291bnQoTVRMOjpTaXpl
IHNhbXBsZUNvdW50KTsKK307CisKK2NsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheSA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5Pgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkqIGFs
bG9jKCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkqICAgICAgICBp
bml0KCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogICBv
YmplY3QoTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBsYXllciwgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpOwor
fTsKKworY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yIDogcHVibGljIE5TOjpD
b3B5aW5nPFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBhbGxvYygpOworCisg
ICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOwor
CisgICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogcmFzdGVy
aXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKE1UTDo6U2l6ZSBzY3JlZW5TaXplKTsKKworICAgIHN0
YXRpYyBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIHJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvcihNVEw6OlNpemUgc2NyZWVuU2l6ZSwgY29uc3QgY2xhc3MgUmFzdGVy
aXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGxheWVyKTsKKworICAgIHN0YXRpYyBjbGFzcyBS
YXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3Jp
cHRvcihNVEw6OlNpemUgc2NyZWVuU2l6ZSwgTlM6OlVJbnRlZ2VyIGxheWVyQ291bnQsIE1UTDo6
UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGNvbnN0KiBsYXllcnMpOworCisgICAg
Y2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqICAgICAgbGF5ZXIoTlM6OlVJ
bnRlZ2VyIGxheWVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0TGF5ZXIoY29uc3QgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3IqIGxheWVyLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCk7CisKKyAgICBjbGFz
cyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkqICAgICAgICAgICBsYXllcnMoKSBjb25zdDsK
KworICAgIE1UTDo6U2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVl
blNpemUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTY3JlZW5TaXplKE1UTDo6U2l6ZSBzY3JlZW5TaXplKTsKKworICAgIE5TOjpT
dHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGF5ZXJDb3VudCgpIGNvbnN0OworfTsKKworY2xhc3MgUmFz
dGVyaXphdGlvblJhdGVNYXAgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJhc3Rlcml6YXRpb25S
YXRlTWFwPgoreworcHVibGljOgorICAgIGNsYXNzIERldmljZSogICAgIGRldmljZSgpIGNvbnN0
OworCisgICAgTlM6OlN0cmluZyogICAgICAgbGFiZWwoKSBjb25zdDsKKworICAgIE1UTDo6U2l6
ZSAgICAgICAgIHNjcmVlblNpemUoKSBjb25zdDsKKworICAgIE1UTDo6U2l6ZSAgICAgICAgIHBo
eXNpY2FsR3JhbnVsYXJpdHkoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgIGxheWVy
Q291bnQoKSBjb25zdDsKKworICAgIE1UTDo6U2l6ZUFuZEFsaWduIHBhcmFtZXRlckJ1ZmZlclNp
emVBbmRBbGlnbigpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgY29weVBhcmFtZXRl
ckRhdGFUb0J1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCk7CisKKyAgICBNVEw6OlNpemUgICAgICAgICBwaHlzaWNhbFNpemUoTlM6OlVJbnRlZ2Vy
IGxheWVySW5kZXgpOworCisgICAgTVRMOjpDb29yZGluYXRlMkQgbWFwU2NyZWVuVG9QaHlzaWNh
bENvb3JkaW5hdGVzKE1UTDo6Q29vcmRpbmF0ZTJEIHNjcmVlbkNvb3JkaW5hdGVzLCBOUzo6VUlu
dGVnZXIgbGF5ZXJJbmRleCk7CisKKyAgICBNVEw6OkNvb3JkaW5hdGUyRCBtYXBQaHlzaWNhbFRv
U2NyZWVuQ29vcmRpbmF0ZXMoTVRMOjpDb29yZGluYXRlMkQgcGh5c2ljYWxDb29yZGluYXRlcywg
TlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiBNVEw6
OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5PihfTVRMX1BS
SVZBVEVfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkq
IE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5PigpOwor
fQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE5T
OjpOdW1iZXIqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheTo6b2JqZWN0KE5TOjpV
SW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6TnVt
YmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwg
aW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheTo6c2V0T2Jq
ZWN0KGNvbnN0IE5TOjpOdW1iZXIqIHZhbHVlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVj
dF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgdmFsdWUsIGluZGV4KTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2Ny
aXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVy
RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVz
Y3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVy
aXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRl
c2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmFz
dGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I+KCk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdp
dGhTYW1wbGVDb3VudDoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRl
c2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6OmluaXQoTVRM
OjpTaXplIHNhbXBsZUNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluaXRXaXRoU2FtcGxlQ291bnRfKSwgc2FtcGxlQ291bnQpOworfQorCisvLyBtZXRob2Q6
IGluaXRXaXRoU2FtcGxlQ291bnQ6aG9yaXpvbnRhbDp2ZXJ0aWNhbDoKK19NVExfSU5MSU5FIE1U
TDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJh
dGVMYXllckRlc2NyaXB0b3I6OmluaXQoTVRMOjpTaXplIHNhbXBsZUNvdW50LCBjb25zdCBmbG9h
dCogaG9yaXpvbnRhbCwgY29uc3QgZmxvYXQqIHZlcnRpY2FsKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluaXRXaXRoU2FtcGxlQ291bnRfaG9yaXpvbnRhbF92ZXJ0
aWNhbF8pLCBzYW1wbGVDb3VudCwgaG9yaXpvbnRhbCwgdmVydGljYWwpOworfQorCisvLyBwcm9w
ZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJEZXNjcmlwdG9yOjpzYW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNh
bXBsZUNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhTYW1wbGVDb3VudAorX01UTF9JTkxJ
TkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6Om1heFNh
bXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OlNpemU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4U2FtcGxlQ291bnQpKTsKK30KKworLy8g
cHJvcGVydHk6IGhvcml6b250YWxTYW1wbGVTdG9yYWdlCitfTVRMX0lOTElORSBmbG9hdCogTVRM
OjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6aG9yaXpvbnRhbFNhbXBsZVN0b3Jh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGZsb2F0Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChob3Jpem9udGFsU2FtcGxlU3RvcmFnZSkpOworfQorCisvLyBw
cm9wZXJ0eTogdmVydGljYWxTYW1wbGVTdG9yYWdlCitfTVRMX0lOTElORSBmbG9hdCogTVRMOjpS
YXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6dmVydGljYWxTYW1wbGVTdG9yYWdlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxmbG9hdCo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodmVydGljYWxTYW1wbGVTdG9yYWdlKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBob3Jpem9udGFsCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJy
YXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6Omhvcml6b250YWwoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlv
blJhdGVTYW1wbGVBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaG9yaXpvbnRhbCkpOwor
fQorCisvLyBwcm9wZXJ0eTogdmVydGljYWwKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlv
blJhdGVTYW1wbGVBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6
dmVydGljYWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVy
dGljYWwpKTsKK30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVDb3VudDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6c2V0U2FtcGxlQ291bnQo
TVRMOjpTaXplIHNhbXBsZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVDb3VudF8pLCBzYW1wbGVDb3VudCk7Cit9
CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXk6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZUxheWVyQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVMYXllckFy
cmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZUxheWVyQXJyYXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5Ojppbml0
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJhc3Rlcml6YXRpb25SYXRl
TGF5ZXJBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6
CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBNVEw6
OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBsYXllcklu
ZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlv
blJhdGVMYXllckRlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5k
ZXhlZFN1YnNjcmlwdF8pLCBsYXllckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6
YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTGF5ZXJBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3IqIGxheWVyLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0
SW5kZXhlZFN1YnNjcmlwdF8pLCBsYXllciwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3Jp
cHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcERlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpp
bml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogcmFzdGVyaXphdGlv
blJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemU6CitfTVRMX0lOTElORSBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3I6OnJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcihNVEw6OlNpemUgc2NyZWVuU2l6
ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVN
YXBEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3JXaXRoU2NyZWVuU2l6ZV8pLCBzY3JlZW5TaXplKTsKK30KKworLy8gc3RhdGljIG1ldGhv
ZDogcmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemU6bGF5ZXI6Citf
TVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogTVRMOjpSYXN0
ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OnJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRv
cihNVEw6OlNpemUgc2NyZWVuU2l6ZSwgY29uc3QgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVy
RGVzY3JpcHRvciogbGF5ZXIpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJh
c3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwocmFzdGVyaXph
dGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemVfbGF5ZXJfKSwgc2NyZWVuU2l6ZSwg
bGF5ZXIpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3JXaXRoU2NyZWVuU2l6ZTpsYXllckNvdW50OmxheWVyczoKK19NVExfSU5MSU5FIE1UTDo6
UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFw
RGVzY3JpcHRvcjo6cmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKE1UTDo6U2l6ZSBzY3Jl
ZW5TaXplLCBOUzo6VUludGVnZXIgbGF5ZXJDb3VudCwgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxh
eWVyRGVzY3JpcHRvciogY29uc3QqIGxheWVycykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcio+KF9NVExfUFJJVkFU
RV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NF
TChyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZV9sYXllckNvdW50
X2xheWVyc18pLCBzY3JlZW5TaXplLCBsYXllckNvdW50LCBsYXllcnMpOworfQorCisvLyBtZXRo
b2Q6IGxheWVyQXRJbmRleDoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpsYXllcihO
Uzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChsYXllckF0SW5kZXhfKSwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
TGF5ZXI6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1h
cERlc2NyaXB0b3I6OnNldExheWVyKGNvbnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRl
c2NyaXB0b3IqIGxheWVyLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGF5ZXJfYXRJbmRl
eF8pLCBsYXllciwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYXllcnMKK19NVExf
SU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KiBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTWFwRGVzY3JpcHRvcjo6bGF5ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobGF5ZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzY3JlZW5TaXplCitf
TVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6
OnNjcmVlblNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzY3JlZW5TaXplKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OnNldFNjcmVl
blNpemUoTVRMOjpTaXplIHNjcmVlblNpemUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNjcmVlblNpemVfKSwgc2NyZWVuU2l6ZSk7
Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpS
YXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVN
YXBEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxf
KSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogbGF5ZXJDb3VudAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpsYXllckNvdW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGF5ZXJDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTog
ZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1h
cDo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZU1hcDo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBzY3JlZW5TaXplCitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcDo6c2NyZWVuU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNjcmVlblNpemUpKTsKK30K
KworLy8gcHJvcGVydHk6IHBoeXNpY2FsR3JhbnVsYXJpdHkKK19NVExfSU5MSU5FIE1UTDo6U2l6
ZSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpwaHlzaWNhbEdyYW51bGFyaXR5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemU+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwocGh5c2ljYWxHcmFudWxhcml0eSkpOworfQorCisvLyBwcm9wZXJ0eTogbGF5
ZXJDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmFzdGVyaXphdGlvblJhdGVN
YXA6OmxheWVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXllckNvdW50KSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBwYXJhbWV0ZXJCdWZmZXJTaXplQW5kQWxpZ24KK19NVExfSU5MSU5FIE1U
TDo6U2l6ZUFuZEFsaWduIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OnBhcmFtZXRlckJ1ZmZl
clNpemVBbmRBbGlnbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpTaXplQW5kQWxpZ24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGFyYW1ldGVyQnVmZmVy
U2l6ZUFuZEFsaWduKSk7Cit9CisKKy8vIG1ldGhvZDogY29weVBhcmFtZXRlckRhdGFUb0J1ZmZl
cjpvZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OmNv
cHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIG9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoY29weVBhcmFtZXRlckRhdGFUb0J1ZmZlcl9vZmZzZXRfKSwgYnVmZmVy
LCBvZmZzZXQpOworfQorCisvLyBtZXRob2Q6IHBoeXNpY2FsU2l6ZUZvckxheWVyOgorX01UTF9J
TkxJTkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OnBoeXNpY2FsU2l6ZShO
Uzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlNpemU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGh5c2ljYWxTaXplRm9yTGF5ZXJf
KSwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogbWFwU2NyZWVuVG9QaHlzaWNhbENvb3Jk
aW5hdGVzOmZvckxheWVyOgorX01UTF9JTkxJTkUgTVRMOjpDb29yZGluYXRlMkQgTVRMOjpSYXN0
ZXJpemF0aW9uUmF0ZU1hcDo6bWFwU2NyZWVuVG9QaHlzaWNhbENvb3JkaW5hdGVzKE1UTDo6Q29v
cmRpbmF0ZTJEIHNjcmVlbkNvb3JkaW5hdGVzLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvb3JkaW5hdGUyRD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChtYXBTY3JlZW5Ub1BoeXNpY2FsQ29vcmRpbmF0ZXNfZm9yTGF5ZXJf
KSwgc2NyZWVuQ29vcmRpbmF0ZXMsIGxheWVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IG1hcFBo
eXNpY2FsVG9TY3JlZW5Db29yZGluYXRlczpmb3JMYXllcjoKK19NVExfSU5MSU5FIE1UTDo6Q29v
cmRpbmF0ZTJEIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6Om1hcFBoeXNpY2FsVG9TY3JlZW5D
b29yZGluYXRlcyhNVEw6OkNvb3JkaW5hdGUyRCBwaHlzaWNhbENvb3JkaW5hdGVzLCBOUzo6VUlu
dGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkNvb3JkaW5hdGUyRD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXBQaHlzaWNhbFRvU2NyZWVu
Q29vcmRpbmF0ZXNfZm9yTGF5ZXJfKSwgcGh5c2ljYWxDb29yZGluYXRlcywgbGF5ZXJJbmRleCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
UmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmRhODU2MTM1
ZDk3YWJkMmQ4NTZmMDQ2ZThjNzM2MDIzMmM2ZGU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhw
cApAQCAtMCwwICsxLDk1OCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCisvLwor
Ly8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
TVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRl
ICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+
CisKKyNpbmNsdWRlICJNVExCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVy
LmhwcCIKKyNpbmNsdWRlICJNVExIZWFwLmhwcCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAi
CisjaW5jbHVkZSAiTVRMUmVuZGVyUGFzcy5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBw
IgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRPdXRw
dXREZXNjcmlwdG9yLmhwcCIKKyNpbmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKyNpbmNsdWRlICJN
VExUeXBlcy5ocHAiCisjaW5jbHVkZSAiTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwIgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQcmltaXRpdmVUeXBlKSB7
CisgICAgUHJpbWl0aXZlVHlwZVBvaW50ID0gMCwKKyAgICBQcmltaXRpdmVUeXBlTGluZSA9IDEs
CisgICAgUHJpbWl0aXZlVHlwZUxpbmVTdHJpcCA9IDIsCisgICAgUHJpbWl0aXZlVHlwZVRyaWFu
Z2xlID0gMywKKyAgICBQcmltaXRpdmVUeXBlVHJpYW5nbGVTdHJpcCA9IDQsCit9OworCitfTVRM
X0VOVU0oTlM6OlVJbnRlZ2VyLCBWaXNpYmlsaXR5UmVzdWx0TW9kZSkgeworICAgIFZpc2liaWxp
dHlSZXN1bHRNb2RlRGlzYWJsZWQgPSAwLAorICAgIFZpc2liaWxpdHlSZXN1bHRNb2RlQm9vbGVh
biA9IDEsCisgICAgVmlzaWJpbGl0eVJlc3VsdE1vZGVDb3VudGluZyA9IDIsCit9OworCitzdHJ1
Y3QgU2Npc3NvclJlY3QKK3sKKyAgICBOUzo6VUludGVnZXIgeDsKKyAgICBOUzo6VUludGVnZXIg
eTsKKyAgICBOUzo6VUludGVnZXIgd2lkdGg7CisgICAgTlM6OlVJbnRlZ2VyIGhlaWdodDsKK30g
X01UTF9QQUNLRUQ7CisKK3N0cnVjdCBWaWV3cG9ydAoreworICAgIGRvdWJsZSBvcmlnaW5YOwor
ICAgIGRvdWJsZSBvcmlnaW5ZOworICAgIGRvdWJsZSB3aWR0aDsKKyAgICBkb3VibGUgaGVpZ2h0
OworICAgIGRvdWJsZSB6bmVhcjsKKyAgICBkb3VibGUgemZhcjsKK30gX01UTF9QQUNLRUQ7CisK
K19NVExfRU5VTShOUzo6VUludGVnZXIsIEN1bGxNb2RlKSB7CisgICAgQ3VsbE1vZGVOb25lID0g
MCwKKyAgICBDdWxsTW9kZUZyb250ID0gMSwKKyAgICBDdWxsTW9kZUJhY2sgPSAyLAorfTsKKwor
X01UTF9FTlVNKE5TOjpVSW50ZWdlciwgV2luZGluZykgeworICAgIFdpbmRpbmdDbG9ja3dpc2Ug
PSAwLAorICAgIFdpbmRpbmdDb3VudGVyQ2xvY2t3aXNlID0gMSwKK307CisKK19NVExfRU5VTShO
Uzo6VUludGVnZXIsIERlcHRoQ2xpcE1vZGUpIHsKKyAgICBEZXB0aENsaXBNb2RlQ2xpcCA9IDAs
CisgICAgRGVwdGhDbGlwTW9kZUNsYW1wID0gMSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVn
ZXIsIFRyaWFuZ2xlRmlsbE1vZGUpIHsKKyAgICBUcmlhbmdsZUZpbGxNb2RlRmlsbCA9IDAsCisg
ICAgVHJpYW5nbGVGaWxsTW9kZUxpbmVzID0gMSwKK307CisKK3N0cnVjdCBEcmF3UHJpbWl0aXZl
c0luZGlyZWN0QXJndW1lbnRzCit7CisgICAgdWludDMyX3QgdmVydGV4Q291bnQ7CisgICAgdWlu
dDMyX3QgaW5zdGFuY2VDb3VudDsKKyAgICB1aW50MzJfdCB2ZXJ0ZXhTdGFydDsKKyAgICB1aW50
MzJfdCBiYXNlSW5zdGFuY2U7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgRHJhd0luZGV4ZWRQ
cmltaXRpdmVzSW5kaXJlY3RBcmd1bWVudHMKK3sKKyAgICB1aW50MzJfdCBpbmRleENvdW50Owor
ICAgIHVpbnQzMl90IGluc3RhbmNlQ291bnQ7CisgICAgdWludDMyX3QgaW5kZXhTdGFydDsKKyAg
ICBpbnQzMl90ICBiYXNlVmVydGV4OworICAgIHVpbnQzMl90IGJhc2VJbnN0YW5jZTsKK30gX01U
TF9QQUNLRUQ7CisKK3N0cnVjdCBWZXJ0ZXhBbXBsaWZpY2F0aW9uVmlld01hcHBpbmcKK3sKKyAg
ICB1aW50MzJfdCB2aWV3cG9ydEFycmF5SW5kZXhPZmZzZXQ7CisgICAgdWludDMyX3QgcmVuZGVy
VGFyZ2V0QXJyYXlJbmRleE9mZnNldDsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBEcmF3UGF0
Y2hJbmRpcmVjdEFyZ3VtZW50cworeworICAgIHVpbnQzMl90IHBhdGNoQ291bnQ7CisgICAgdWlu
dDMyX3QgaW5zdGFuY2VDb3VudDsKKyAgICB1aW50MzJfdCBwYXRjaFN0YXJ0OworICAgIHVpbnQz
Ml90IGJhc2VJbnN0YW5jZTsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBRdWFkVGVzc2VsbGF0
aW9uRmFjdG9yc0hhbGYKK3sKKyAgICB1aW50MTZfdCBlZGdlVGVzc2VsbGF0aW9uRmFjdG9yWzRd
OworICAgIHVpbnQxNl90IGluc2lkZVRlc3NlbGxhdGlvbkZhY3RvclsyXTsKK30gX01UTF9QQUNL
RUQ7CisKK3N0cnVjdCBUcmlhbmdsZVRlc3NlbGxhdGlvbkZhY3RvcnNIYWxmCit7CisgICAgdWlu
dDE2X3QgZWRnZVRlc3NlbGxhdGlvbkZhY3RvclszXTsKKyAgICB1aW50MTZfdCBpbnNpZGVUZXNz
ZWxsYXRpb25GYWN0b3I7Cit9IF9NVExfUEFDS0VEOworCitfTVRMX09QVElPTlMoTlM6OlVJbnRl
Z2VyLCBSZW5kZXJTdGFnZXMpIHsKKyAgICBSZW5kZXJTdGFnZVZlcnRleCA9IDEsCisgICAgUmVu
ZGVyU3RhZ2VGcmFnbWVudCA9IDIsCisgICAgUmVuZGVyU3RhZ2VUaWxlID0gNCwKK307CisKK2Ns
YXNzIFJlbmRlckNvbW1hbmRFbmNvZGVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSZW5kZXJD
b21tYW5kRW5jb2RlciwgQ29tbWFuZEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgdm9pZCAgICAg
ICAgIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0
ZSogcGlwZWxpbmVTdGF0ZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4Qnl0ZXMoY29u
c3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCk7
CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciog
YnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAg
dm9pZCAgICAgICAgIHNldFZlcnRleEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0LCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleEJ1ZmZlcnMo
TVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6
OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhUZXh0dXJlKGNvbnN0
IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lk
ICAgICAgICAgc2V0VmVydGV4VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6
UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleFNhbXBsZXJTdGF0ZShj
b25zdCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRleCk7CisK
KyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0
ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRW
ZXJ0ZXhTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9h
dCBsb2RNaW5DbGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCk7CisK
KyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0
ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0IGZsb2F0IGxv
ZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFZl
cnRleFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxl
KiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAg
ICAgICAgIHNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBjbGFzcyBWaXNpYmxl
RnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAg
IHZvaWQgICAgICAgICBzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNs
YXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUs
IE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsK
KworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3Qg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpV
SW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0Vmlld3BvcnQoTVRM
OjpWaWV3cG9ydCB2aWV3cG9ydCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0Vmlld3BvcnRzKGNv
bnN0IE1UTDo6Vmlld3BvcnQqIHZpZXdwb3J0cywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAg
IHZvaWQgICAgICAgICBzZXRGcm9udEZhY2luZ1dpbmRpbmcoTVRMOjpXaW5kaW5nIGZyb250RmFj
aW5nV2luZGluZyk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4QW1wbGlmaWNhdGlvbkNv
dW50KE5TOjpVSW50ZWdlciBjb3VudCwgY29uc3QgTVRMOjpWZXJ0ZXhBbXBsaWZpY2F0aW9uVmll
d01hcHBpbmcqIHZpZXdNYXBwaW5ncyk7CisKKyAgICB2b2lkICAgICAgICAgc2V0Q3VsbE1vZGUo
TVRMOjpDdWxsTW9kZSBjdWxsTW9kZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RGVwdGhDbGlw
TW9kZShNVEw6OkRlcHRoQ2xpcE1vZGUgZGVwdGhDbGlwTW9kZSk7CisKKyAgICB2b2lkICAgICAg
ICAgc2V0RGVwdGhCaWFzKGZsb2F0IGRlcHRoQmlhcywgZmxvYXQgc2xvcGVTY2FsZSwgZmxvYXQg
Y2xhbXApOworCisgICAgdm9pZCAgICAgICAgIHNldFNjaXNzb3JSZWN0KE1UTDo6U2Npc3NvclJl
Y3QgcmVjdCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0U2Npc3NvclJlY3RzKGNvbnN0IE1UTDo6
U2Npc3NvclJlY3QqIHNjaXNzb3JSZWN0cywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAgIHZv
aWQgICAgICAgICBzZXRUcmlhbmdsZUZpbGxNb2RlKE1UTDo6VHJpYW5nbGVGaWxsTW9kZSBmaWxs
TW9kZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRCeXRlcyhjb25zdCB2b2lkKiBi
eXRlcywgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZv
aWQgICAgICAgICBzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICBzZXRGcmFnbWVudEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUlu
dGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50QnVmZmVycyhNVEw6
OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50VGV4dHVyZShjb25zdCBj
bGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAg
ICAgICAgIHNldEZyYWdtZW50VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6
UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50U2FtcGxlclN0YXRl
KGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsK
KworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVy
U3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAg
c2V0RnJhZ21lbnRTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVy
LCBmbG9hdCBsb2RNaW5DbGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzKE1UTDo6U2Ft
cGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25zdCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3Qg
ZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAg
ICAgc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVu
Y3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBW
aXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsK
KworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUo
Y29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBz
ZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNzIEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5n
ZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1
Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1
Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0
QmxlbmRDb2xvclJlZChmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBh
bHBoYSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgY2xh
c3MgRGVwdGhTdGVuY2lsU3RhdGUqIGRlcHRoU3RlbmNpbFN0YXRlKTsKKworICAgIHZvaWQgICAg
ICAgICBzZXRTdGVuY2lsUmVmZXJlbmNlVmFsdWUodWludDMyX3QgcmVmZXJlbmNlVmFsdWUpOwor
CisgICAgdm9pZCAgICAgICAgIHNldFN0ZW5jaWxGcm9udFJlZmVyZW5jZVZhbHVlKHVpbnQzMl90
IGZyb250UmVmZXJlbmNlVmFsdWUsIHVpbnQzMl90IGJhY2tSZWZlcmVuY2VWYWx1ZSk7CisKKyAg
ICB2b2lkICAgICAgICAgc2V0VmlzaWJpbGl0eVJlc3VsdE1vZGUoTVRMOjpWaXNpYmlsaXR5UmVz
dWx0TW9kZSBtb2RlLCBOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAgICBz
ZXRDb2xvclN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24sIE5TOjpVSW50
ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RGVwdGhT
dG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKTsKKworICAgIHZvaWQgICAg
ICAgICBzZXRTdGVuY2lsU3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbik7
CisKKyAgICB2b2lkICAgICAgICAgc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9y
ZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zLCBOUzo6VUludGVnZXIgY29sb3JBdHRh
Y2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldERlcHRoU3RvcmVBY3Rpb25PcHRp
b25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucyk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9u
T3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQcmlt
aXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVy
dGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNl
Q291bnQpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZl
VHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdl
ciB2ZXJ0ZXhDb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgZHJhd0luZGV4ZWRQcmltaXRpdmVz
KE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3Vu
dCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVm
ZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5j
ZUNvdW50KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQ
cmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6
OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIsIE5T
OjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgZHJhd1By
aW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciB2
ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50LCBOUzo6VUludGVnZXIgaW5zdGFu
Y2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7CisKKyAgICB2b2lkICAgICAgICAg
ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBO
Uzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBj
bGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQs
IE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6SW50ZWdlciBiYXNlVmVydGV4LCBOUzo6
VUludGVnZXIgYmFzZUluc3RhbmNlKTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UHJpbWl0aXZl
cyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBp
bmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKworICAg
IHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHBy
aW1pdGl2ZVR5cGUsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgY2xhc3MgQnVmZmVy
KiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBjbGFz
cyBCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZz
ZXQpOworCisgICAgdm9pZCAgICAgICAgIHRleHR1cmVCYXJyaWVyKCk7CisKKyAgICB2b2lkICAg
ICAgICAgdXBkYXRlRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlLCBNVEw6OlJlbmRlclN0
YWdlcyBzdGFnZXMpOworCisgICAgdm9pZCAgICAgICAgIHdhaXRGb3JGZW5jZShjb25zdCBjbGFz
cyBGZW5jZSogZmVuY2UsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcyk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVm
ZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VTdHJpZGUpOwor
CisgICAgdm9pZCAgICAgICAgIHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlKGZsb2F0IHNjYWxl
KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQ
YXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVnZXIg
cGF0Y2hDb3VudCwgY29uc3QgY2xhc3MgQnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUlu
dGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQs
IE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQYXRj
aGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgY29uc3QgY2xhc3Mg
QnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9m
ZnNldCwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGlu
ZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFBhdGNo
ZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBOUzo6VUludGVnZXIg
cGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQsIGNvbnN0IGNsYXNzIEJ1ZmZlciog
cGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNv
bnN0IGNsYXNzIEJ1ZmZlciogY29udHJvbFBvaW50SW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBj
b250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQs
IE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdJbmRl
eGVkUGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIGNvbnN0
IGNsYXNzIEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhC
dWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogY29udHJvbFBvaW50SW5kZXhCdWZmZXIs
IE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgY2xhc3Mg
QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0
KTsKKworICAgIE5TOjpVSW50ZWdlciB0aWxlV2lkdGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50
ZWdlciB0aWxlSGVpZ2h0KCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZUJ5dGVz
KGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5k
ZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVy
KiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAg
ICB2b2lkICAgICAgICAgc2V0VGlsZUJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0LCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVCdWZmZXJzKE1U
TDo6QnVmZmVyKiBidWZmZXJzLCBjb25zdCBOUzo6VUludGVnZXIqIG9mZnNldHMsIE5TOjpSYW5n
ZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZVRleHR1cmUoY29uc3QgY2xhc3Mg
VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRUaWxlVGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFu
Z2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3Mg
U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAg
ICAgICAgIHNldFRpbGVTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1td
LCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVTYW1wbGVyU3Rh
dGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9hdCBsb2RNaW5DbGFtcCwg
ZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAg
ICAgc2V0VGlsZVNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNv
bnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6
OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlVmlzaWJsZUZ1bmN0aW9u
VGFibGUoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5T
OjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZVZpc2li
bGVGdW5jdGlvblRhYmxlcyhjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rp
b25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxl
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5k
ZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
cyhjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFRp
bGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJl
KiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAg
ICB2b2lkICAgICAgICAgZGlzcGF0Y2hUaHJlYWRzUGVyVGlsZShNVEw6OlNpemUgdGhyZWFkc1Bl
clRpbGUpOworCisgICAgdm9pZCAgICAgICAgIHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKE5T
OjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3VyY2Uq
IHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCAgICAgICAg
IHVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2VyIGNv
dW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCAgICAgICAgIHVzZVJl
c291cmNlKGNvbnN0IGNsYXNzIFJlc291cmNlKiByZXNvdXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdl
IHVzYWdlLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpOworCisgICAgdm9pZCAgICAgICAgIHVz
ZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXMsIE5TOjpVSW50ZWdlciBjb3VudCwg
TVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpOworCisg
ICAgdm9pZCAgICAgICAgIHVzZUhlYXAoY29uc3QgY2xhc3MgSGVhcCogaGVhcCk7CisKKyAgICB2
b2lkICAgICAgICAgdXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291
bnQpOworCisgICAgdm9pZCAgICAgICAgIHVzZUhlYXAoY29uc3QgY2xhc3MgSGVhcCogaGVhcCwg
TVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICB1c2VIZWFwcyhN
VEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZW5kZXJTdGFnZXMg
c3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25z
dCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6
OlJhbmdlIGV4ZWN1dGlvblJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBleGVjdXRlQ29tbWFu
ZHNJbkJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29t
bWFuZGJ1ZmZlciwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRpcmVjdFJhbmdlQnVmZmVyLCBOUzo6
VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgIG1lbW9y
eUJhcnJpZXIoTVRMOjpCYXJyaWVyU2NvcGUgc2NvcGUsIE1UTDo6UmVuZGVyU3RhZ2VzIGFmdGVy
LCBNVEw6OlJlbmRlclN0YWdlcyBiZWZvcmUpOworCisgICAgdm9pZCAgICAgICAgIG1lbW9yeUJh
cnJpZXIoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRM
OjpSZW5kZXJTdGFnZXMgYWZ0ZXIsIE1UTDo6UmVuZGVyU3RhZ2VzIGJlZm9yZSk7CisKKyAgICB2
b2lkICAgICAgICAgc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2Ft
cGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBi
YXJyaWVyKTsKK307CisKK30KKworLy8gbWV0aG9kOiBzZXRSZW5kZXJQaXBlbGluZVN0YXRlOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRSZW5kZXJQaXBl
bGluZVN0YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZV8pLCBwaXBlbGluZVN0YXRlKTsKK30KKworLy8gbWV0aG9k
OiBzZXRWZXJ0ZXhCeXRlczpsZW5ndGg6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4Qnl0ZXMoY29uc3Qgdm9pZCogYnl0ZXMsIE5T
OjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4Qnl0ZXNfbGVu
Z3RoX2F0SW5kZXhfKSwgYnl0ZXMsIGxlbmd0aCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNl
dFZlcnRleEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZm
ZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4QnVm
ZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0VmVydGV4QnVmZmVyT2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleEJ1ZmZlck9mZnNldChOUzo6VUludGVn
ZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEJ1ZmZlck9mZnNldF9hdElu
ZGV4XyksIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEJ1ZmZlcnM6
b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNldFZlcnRleEJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6
OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJzX29m
ZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJhbmdlKTsKK30KKworLy8gbWV0
aG9kOiBzZXRWZXJ0ZXhUZXh0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiB0
ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFRleHR1cmVfYXRJbmRleF8pLCB0
ZXh0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4VGV4dHVyZXM6d2l0aFJh
bmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0
ZXhUZXh0dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VmVydGV4VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1cmVzLCByYW5nZSk7Cit9CisKKy8vIG1l
dGhvZDogc2V0VmVydGV4U2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhTYW1w
bGVyU3RhdGVfYXRJbmRleF8pLCBzYW1wbGVyLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
VmVydGV4U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3Rh
dGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlc193
aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhT
YW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4U2FtcGxlclN0YXRlKGNv
bnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9hdCBsb2RNaW5DbGFtcCwgZmxvYXQg
bG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlX2xv
ZE1pbkNsYW1wX2xvZE1heENsYW1wX2F0SW5kZXhfKSwgc2FtcGxlciwgbG9kTWluQ2xhbXAsIGxv
ZE1heENsYW1wLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4U2FtcGxlclN0YXRl
czpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4U2FtcGxlclN0YXRlcyhNVEw6OlNh
bXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0
IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFNhbXBsZXJT
dGF0ZXNfbG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIGxv
ZE1pbkNsYW1wcywgbG9kTWF4Q2xhbXBzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVy
dGV4VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGUo
Y29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRl
Z2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlcklu
ZGV4XyksIGZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRW
ZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25U
YWJsZXMoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwg
TlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZl
clJhbmdlXyksIGZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVy
dGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgaW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZXMoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcywg
cmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEFjY2VsZXJhdGlvblN0cnVjdHVyZTph
dEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZmZXJJbmRleF8pLCBhY2NlbGVy
YXRpb25TdHJ1Y3R1cmUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaWV3cG9y
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Vmlld3Bv
cnQoTVRMOjpWaWV3cG9ydCB2aWV3cG9ydCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Vmlld3BvcnRfKSwgdmlld3BvcnQpOworfQor
CisvLyBtZXRob2Q6IHNldFZpZXdwb3J0czpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Vmlld3BvcnRzKGNvbnN0IE1UTDo6Vmlld3BvcnQqIHZp
ZXdwb3J0cywgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaWV3cG9ydHNfY291bnRfKSwgdmlld3Bv
cnRzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJvbnRGYWNpbmdXaW5kaW5nOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcm9udEZhY2luZ1dp
bmRpbmcoTVRMOjpXaW5kaW5nIGZyb250RmFjaW5nV2luZGluZykKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJvbnRGYWNpbmdXaW5k
aW5nXyksIGZyb250RmFjaW5nV2luZGluZyk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4QW1w
bGlmaWNhdGlvbkNvdW50OnZpZXdNYXBwaW5nczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KE5TOjpVSW50ZWdl
ciBjb3VudCwgY29uc3QgTVRMOjpWZXJ0ZXhBbXBsaWZpY2F0aW9uVmlld01hcHBpbmcqIHZpZXdN
YXBwaW5ncykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50X3ZpZXdNYXBwaW5nc18pLCBjb3Vu
dCwgdmlld01hcHBpbmdzKTsKK30KKworLy8gbWV0aG9kOiBzZXRDdWxsTW9kZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Q3VsbE1vZGUoTVRMOjpDdWxs
TW9kZSBjdWxsTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0Q3VsbE1vZGVfKSwgY3VsbE1vZGUpOworfQorCisvLyBtZXRob2Q6
IHNldERlcHRoQ2xpcE1vZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNldERlcHRoQ2xpcE1vZGUoTVRMOjpEZXB0aENsaXBNb2RlIGRlcHRoQ2xpcE1vZGUp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldERlcHRoQ2xpcE1vZGVfKSwgZGVwdGhDbGlwTW9kZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0
RGVwdGhCaWFzOnNsb3BlU2NhbGU6Y2xhbXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnNldERlcHRoQmlhcyhmbG9hdCBkZXB0aEJpYXMsIGZsb2F0IHNsb3Bl
U2NhbGUsIGZsb2F0IGNsYW1wKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aEJpYXNfc2xvcGVTY2FsZV9jbGFtcF8pLCBkZXB0
aEJpYXMsIHNsb3BlU2NhbGUsIGNsYW1wKTsKK30KKworLy8gbWV0aG9kOiBzZXRTY2lzc29yUmVj
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0U2Npc3Nv
clJlY3QoTVRMOjpTY2lzc29yUmVjdCByZWN0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTY2lzc29yUmVjdF8pLCByZWN0KTsKK30K
KworLy8gbWV0aG9kOiBzZXRTY2lzc29yUmVjdHM6Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFNjaXNzb3JSZWN0cyhjb25zdCBNVEw6OlNjaXNz
b3JSZWN0KiBzY2lzc29yUmVjdHMsIE5TOjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2Npc3NvclJlY3Rz
X2NvdW50XyksIHNjaXNzb3JSZWN0cywgY291bnQpOworfQorCisvLyBtZXRob2Q6IHNldFRyaWFu
Z2xlRmlsbE1vZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
OnNldFRyaWFuZ2xlRmlsbE1vZGUoTVRMOjpUcmlhbmdsZUZpbGxNb2RlIGZpbGxNb2RlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRU
cmlhbmdsZUZpbGxNb2RlXyksIGZpbGxNb2RlKTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVu
dEJ5dGVzOmxlbmd0aDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVn
ZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50Qnl0ZXNfbGVuZ3RoX2F0
SW5kZXhfKSwgYnl0ZXMsIGxlbmd0aCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdt
ZW50QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVy
LCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50QnVm
ZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0RnJhZ21lbnRCdWZmZXJPZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRCdWZmZXJPZmZzZXQoTlM6OlVJ
bnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEJ1ZmZlck9mZnNl
dF9hdEluZGV4XyksIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50
QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10s
IGNvbnN0IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21l
bnRCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJhbmdlKTsK
K30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudFRleHR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRUZXh0dXJlKGNvbnN0
IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFRl
eHR1cmVfYXRJbmRleF8pLCB0ZXh0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJh
Z21lbnRUZXh0dXJlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnNldEZyYWdtZW50VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1td
LCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1
cmVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGU6YXRJ
bmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJh
Z21lbnRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpV
SW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVfYXRJbmRleF8pLCBzYW1wbGVy
LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzOndpdGhS
YW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJh
Z21lbnRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZTpsb2RNaW5D
bGFtcDpsb2RNYXhDbGFtcDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6OlNhbXBsZXJT
dGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlX2xvZE1pbkNsYW1wX2xvZE1h
eENsYW1wX2F0SW5kZXhfKSwgc2FtcGxlciwgbG9kTWluQ2xhbXAsIGxvZE1heENsYW1wLCBpbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1w
czpsb2RNYXhDbGFtcHM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUq
IHNhbXBsZXJzW10sIGNvbnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RN
YXhDbGFtcHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXNfbG9k
TWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIGxvZE1pbkNsYW1w
cywgbG9kTWF4Q2xhbXBzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRWaXNp
YmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0
IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBi
dWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4
XyksIGZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFn
bWVudFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9u
VGFibGVzKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10s
IE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1
ZmZlclJhbmdlXyksIGZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0
RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50SW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGlu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJh
Z21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgaW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdt
ZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudElu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBpbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50QWNjZWxl
cmF0aW9uU3RydWN0dXJlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpV
SW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRC
dWZmZXJJbmRleF8pLCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGJ1ZmZlckluZGV4KTsKK30KKwor
Ly8gbWV0aG9kOiBzZXRCbGVuZENvbG9yUmVkOmdyZWVuOmJsdWU6YWxwaGE6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEJsZW5kQ29sb3JSZWQoZmxvYXQg
cmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJsZW5kQ29sb3JS
ZWRfZ3JlZW5fYmx1ZV9hbHBoYV8pLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0RGVwdGhTdGVuY2lsU3RhdGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IE1UTDo6RGVwdGhT
dGVuY2lsU3RhdGUqIGRlcHRoU3RlbmNpbFN0YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFN0ZW5jaWxTdGF0ZV8pLCBk
ZXB0aFN0ZW5jaWxTdGF0ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RlbmNpbFJlZmVyZW5jZVZh
bHVlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVu
Y2lsUmVmZXJlbmNlVmFsdWUodWludDMyX3QgcmVmZXJlbmNlVmFsdWUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxSZWZl
cmVuY2VWYWx1ZV8pLCByZWZlcmVuY2VWYWx1ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RlbmNp
bEZyb250UmVmZXJlbmNlVmFsdWU6YmFja1JlZmVyZW5jZVZhbHVlOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVuY2lsRnJvbnRSZWZlcmVuY2VWYWx1
ZSh1aW50MzJfdCBmcm9udFJlZmVyZW5jZVZhbHVlLCB1aW50MzJfdCBiYWNrUmVmZXJlbmNlVmFs
dWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFN0ZW5jaWxGcm9udFJlZmVyZW5jZVZhbHVlX2JhY2tSZWZlcmVuY2VWYWx1ZV8pLCBm
cm9udFJlZmVyZW5jZVZhbHVlLCBiYWNrUmVmZXJlbmNlVmFsdWUpOworfQorCisvLyBtZXRob2Q6
IHNldFZpc2liaWxpdHlSZXN1bHRNb2RlOm9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmlzaWJpbGl0eVJlc3VsdE1vZGUoTVRMOjpWaXNpYmls
aXR5UmVzdWx0TW9kZSBtb2RlLCBOUzo6VUludGVnZXIgb2Zmc2V0KQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaXNpYmlsaXR5UmVz
dWx0TW9kZV9vZmZzZXRfKSwgbW9kZSwgb2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiBzZXRDb2xv
clN0b3JlQWN0aW9uOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFu
ZEVuY29kZXI6OnNldENvbG9yU3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlv
biwgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb2xvclN0b3JlQWN0aW9u
X2F0SW5kZXhfKSwgc3RvcmVBY3Rpb24sIGNvbG9yQXR0YWNobWVudEluZGV4KTsKK30KKworLy8g
bWV0aG9kOiBzZXREZXB0aFN0b3JlQWN0aW9uOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3Rv
cmVBY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldERlcHRoU3RvcmVBY3Rpb25fKSwgc3RvcmVBY3Rpb24pOworfQorCisvLyBt
ZXRob2Q6IHNldFN0ZW5jaWxTdG9yZUFjdGlvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0U3RlbmNpbFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24g
c3RvcmVBY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxTdG9yZUFjdGlvbl8pLCBzdG9yZUFjdGlvbik7Cit9CisK
Ky8vIG1ldGhvZDogc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnM6YXRJbmRleDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Q29sb3JTdG9yZUFjdGlvbk9w
dGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zLCBOUzo6VUlu
dGVnZXIgY29sb3JBdHRhY2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zX2F0
SW5kZXhfKSwgc3RvcmVBY3Rpb25PcHRpb25zLCBjb2xvckF0dGFjaG1lbnRJbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnM6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldERlcHRoU3RvcmVBY3Rpb25PcHRpb25zKE1U
TDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhTdG9yZUFj
dGlvbk9wdGlvbnNfKSwgc3RvcmVBY3Rpb25PcHRpb25zKTsKK30KKworLy8gbWV0aG9kOiBzZXRT
dGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rp
b25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9u
c18pLCBzdG9yZUFjdGlvbk9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IGRyYXdQcmltaXRpdmVz
OnZlcnRleFN0YXJ0OnZlcnRleENvdW50Omluc3RhbmNlQ291bnQ6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZl
VHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdl
ciB2ZXJ0ZXhDb3VudCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQcmltaXRpdmVz
X3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50X2luc3RhbmNlQ291bnRfKSwgcHJpbWl0aXZlVHlwZSwg
dmVydGV4U3RhcnQsIHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50KTsKK30KKworLy8gbWV0aG9k
OiBkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRp
dmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRl
Z2VyIHZlcnRleENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0ZXhDb3VudF8p
LCBwcmltaXRpdmVUeXBlLCB2ZXJ0ZXhTdGFydCwgdmVydGV4Q291bnQpOworfQorCisvLyBtZXRo
b2Q6IGRyYXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlwZTppbmRleEJ1ZmZl
cjppbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRp
dmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6OkluZGV4
VHlwZSBpbmRleFR5cGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0lu
ZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5kZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4QnVm
ZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfKSwgcHJpbWl0aXZlVHlwZSwgaW5kZXhDb3VudCwgaW5k
ZXhUeXBlLCBpbmRleEJ1ZmZlciwgaW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNlQ291bnQpOwor
fQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlw
ZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZl
VHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5
cGUgaW5kZXhUeXBlLCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdl
ciBpbmRleEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0luZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5k
ZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4QnVmZmVyT2Zmc2V0XyksIHByaW1pdGl2ZVR5cGUsIGlu
ZGV4Q291bnQsIGluZGV4VHlwZSwgaW5kZXhCdWZmZXIsIGluZGV4QnVmZmVyT2Zmc2V0KTsKK30K
KworLy8gbWV0aG9kOiBkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDppbnN0
YW5jZUNvdW50OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6ZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5
cGUsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50LCBO
Uzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJh
d1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVydGV4Q291bnRfaW5zdGFuY2VDb3VudF9iYXNlSW5z
dGFuY2VfKSwgcHJpbWl0aXZlVHlwZSwgdmVydGV4U3RhcnQsIHZlcnRleENvdW50LCBpbnN0YW5j
ZUNvdW50LCBiYXNlSW5zdGFuY2UpOworfQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUHJpbWl0
aXZlczppbmRleENvdW50OmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDpp
bnN0YW5jZUNvdW50OmJhc2VWZXJ0ZXg6YmFzZUluc3RhbmNlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmlt
aXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6Oklu
ZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6
OkludGVnZXIgYmFzZVZlcnRleCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0luZGV4
ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5kZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4QnVmZmVy
T2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZVZlcnRleF9iYXNlSW5zdGFuY2VfKSwgcHJpbWl0aXZl
VHlwZSwgaW5kZXhDb3VudCwgaW5kZXhUeXBlLCBpbmRleEJ1ZmZlciwgaW5kZXhCdWZmZXJPZmZz
ZXQsIGluc3RhbmNlQ291bnQsIGJhc2VWZXJ0ZXgsIGJhc2VJbnN0YW5jZSk7Cit9CisKKy8vIG1l
dGhvZDogZHJhd1ByaW1pdGl2ZXM6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQcmltaXRp
dmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBjb25zdCBNVEw6OkJ1ZmZlciog
aW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd1By
aW1pdGl2ZXNfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgcHJpbWl0aXZl
VHlwZSwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0
aG9kOiBkcmF3SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhUeXBlOmluZGV4QnVmZmVyOmluZGV4QnVm
ZmVyT2Zmc2V0OmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5kZXhlZFByaW1pdGl2ZXMo
TVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlw
ZSwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZm
ZXJPZmZzZXQsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhUeXBlX2lu
ZGV4QnVmZmVyX2luZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVy
T2Zmc2V0XyksIHByaW1pdGl2ZVR5cGUsIGluZGV4VHlwZSwgaW5kZXhCdWZmZXIsIGluZGV4QnVm
ZmVyT2Zmc2V0LCBpbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworfQorCisv
LyBtZXRob2Q6IHRleHR1cmVCYXJyaWVyCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnRleHR1cmVCYXJyaWVyKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZUJhcnJpZXIpKTsKK30KKworLy8g
bWV0aG9kOiB1cGRhdGVGZW5jZTphZnRlclN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2Us
IE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlRmVuY2VfYWZ0ZXJTdGFnZXNfKSwgZmVu
Y2UsIHN0YWdlcyk7Cit9CisKKy8vIG1ldGhvZDogd2FpdEZvckZlbmNlOmJlZm9yZVN0YWdlczoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6d2FpdEZvckZlbmNl
KGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdhaXRG
b3JGZW5jZV9iZWZvcmVTdGFnZXNfKSwgZmVuY2UsIHN0YWdlcyk7Cit9CisKKy8vIG1ldGhvZDog
c2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOm9mZnNldDppbnN0YW5jZVN0cmlkZToKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGVzc2VsbGF0aW9uRmFj
dG9yQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQs
IE5TOjpVSW50ZWdlciBpbnN0YW5jZVN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVy
X29mZnNldF9pbnN0YW5jZVN0cmlkZV8pLCBidWZmZXIsIG9mZnNldCwgaW5zdGFuY2VTdHJpZGUp
OworfQorCisvLyBtZXRob2Q6IHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUZXNzZWxsYXRpb25GYWN0b3JT
Y2FsZShmbG9hdCBzY2FsZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVfKSwgc2NhbGUpOwor
fQorCisvLyBtZXRob2Q6IGRyYXdQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaElu
ZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFu
Y2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQYXRj
aGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRlZ2Vy
IHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBNVEw6OkJ1ZmZlciog
cGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIE5T
OjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3
UGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4
QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlXyksIG51bWJlck9mUGF0Y2hD
b250cm9sUG9pbnRzLCBwYXRjaFN0YXJ0LCBwYXRjaENvdW50LCBwYXRjaEluZGV4QnVmZmVyLCBw
YXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlSW5zdGFuY2UpOworfQor
CisvLyBtZXRob2Q6IGRyYXdQYXRjaGVzOnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZl
ck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd1BhdGNoZXMoTlM6OlVJbnRlZ2Vy
IG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBjb25zdCBNVEw6OkJ1ZmZlciogcGF0Y2hJbmRl
eEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IE1UTDo6
QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChkcmF3UGF0Y2hlc19wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5k
aXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgbnVtYmVyT2ZQYXRjaENvbnRyb2xQ
b2ludHMsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGluZGlyZWN0
QnVmZmVyLCBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4
ZWRQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5k
ZXhCdWZmZXJPZmZzZXQ6Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhC
dWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdJbmRleGVkUGF0Y2hlcyhOUzo6VUludGVn
ZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBO
Uzo6VUludGVnZXIgcGF0Y2hDb3VudCwgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZm
ZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZl
ciogY29udHJvbFBvaW50SW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRl
eEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBi
YXNlSW5zdGFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNoQ291bnRfcGF0
Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQb2ludEluZGV4QnVm
ZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZUluc3Rh
bmNlXyksIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBwYXRjaFN0YXJ0LCBwYXRjaENvdW50
LCBwYXRjaEluZGV4QnVmZmVyLCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb250cm9sUG9pbnRJ
bmRleEJ1ZmZlciwgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNlQ291bnQs
IGJhc2VJbnN0YW5jZSk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNo
SW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1ZmZl
cjpjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1
ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
ZHJhd0luZGV4ZWRQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50
cywgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRj
aEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZlciogY29udHJvbFBvaW50SW5kZXhC
dWZmZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwgY29uc3Qg
TVRMOjpCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJP
ZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZm
ZXJPZmZzZXRfY29udHJvbFBvaW50SW5kZXhCdWZmZXJfY29udHJvbFBvaW50SW5kZXhCdWZmZXJP
ZmZzZXRfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgbnVtYmVyT2ZQYXRj
aENvbnRyb2xQb2ludHMsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQs
IGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwg
aW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6
IHRpbGVXaWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnRpbGVXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRpbGVXaWR0aCkpOworfQor
CisvLyBwcm9wZXJ0eTogdGlsZUhlaWdodAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnRpbGVIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0
aWxlSGVpZ2h0KSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZUJ5dGVzOmxlbmd0aDphdEluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlQnl0
ZXMoY29uc3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBp
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VGlsZUJ5dGVzX2xlbmd0aF9hdEluZGV4XyksIGJ5dGVzLCBsZW5ndGgsIGluZGV4
KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlQnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlQnVmZmVyKGNvbnN0
IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBp
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VGlsZUJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVCdWZmZXJPZmZzZXQ6YXRJbmRleDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZUJ1ZmZlck9mZnNl
dChOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVCdWZmZXJP
ZmZzZXRfYXRJbmRleF8pLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxl
QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0VGlsZUJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnMsIGNvbnN0
IE5TOjpVSW50ZWdlciogb2Zmc2V0cywgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlQnVmZmVyc19v
ZmZzZXRzX3dpdGhSYW5nZV8pLCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1l
dGhvZDogc2V0VGlsZVRleHR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0
dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVUZXh0dXJlX2F0SW5kZXhfKSwgdGV4dHVy
ZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVUZXh0dXJlczp3aXRoUmFuZ2U6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVUZXh0dXJl
cyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZVRleHR1
cmVzX3dpdGhSYW5nZV8pLCB0ZXh0dXJlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFRp
bGVTYW1wbGVyU3RhdGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6c2V0VGlsZVNhbXBsZXJTdGF0ZShjb25zdCBNVEw6OlNhbXBsZXJTdGF0ZSog
c2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlU2FtcGxlclN0YXRlX2F0SW5kZXhf
KSwgc2FtcGxlciwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVTYW1wbGVyU3RhdGVz
OndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
c2V0VGlsZVNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpS
YW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZXNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBy
YW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZVNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDps
b2RNYXhDbGFtcDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRF
bmNvZGVyOjpzZXRUaWxlU2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1w
bGVyLCBmbG9hdCBsb2RNaW5DbGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBp
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdEluZGV4
XyksIHNhbXBsZXIsIGxvZE1pbkNsYW1wLCBsb2RNYXhDbGFtcCwgaW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldFRpbGVTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RNYXhDbGFtcHM6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRU
aWxlU2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxv
YXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2Ug
cmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNfd2l0
aFJhbmdlXyksIHNhbXBsZXJzLCBsb2RNaW5DbGFtcHMsIGxvZE1heENsYW1wcywgcmFuZ2UpOwor
fQorCisvLyBtZXRob2Q6IHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlVmlz
aWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rp
b25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlVmlzaWJsZUZ1bmN0aW9u
VGFibGVfYXRCdWZmZXJJbmRleF8pLCBmdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVWaXNp
YmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rp
b25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlVmlzaWJsZUZ1bmN0aW9uVGFibGVz
X3dpdGhCdWZmZXJSYW5nZV8pLCBmdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRo
b2Q6IHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxl
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIGludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlSW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZXMoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMsIHJh
bmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVm
ZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNl
dFRpbGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRU
aWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfKSwgYWNjZWxlcmF0aW9uU3Ry
dWN0dXJlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogZGlzcGF0Y2hUaHJlYWRzUGVy
VGlsZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZGlzcGF0
Y2hUaHJlYWRzUGVyVGlsZShNVEw6OlNpemUgdGhyZWFkc1BlclRpbGUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVGhyZWFk
c1BlclRpbGVfKSwgdGhyZWFkc1BlclRpbGUpOworfQorCisvLyBtZXRob2Q6IHNldFRocmVhZGdy
b3VwTWVtb3J5TGVuZ3RoOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVn
ZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRo
cmVhZGdyb3VwTWVtb3J5TGVuZ3RoX29mZnNldF9hdEluZGV4XyksIGxlbmd0aCwgb2Zmc2V0LCBp
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2U6dXNhZ2U6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlKGNvbnN0IE1UTDo6UmVz
b3VyY2UqIHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJlc291cmNlX3Vz
YWdlXyksIHJlc291cmNlLCB1c2FnZSk7Cit9CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2VzOmNv
dW50OnVzYWdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1
c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3Vu
dCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZXNfY291bnRfdXNhZ2VfKSwg
cmVzb3VyY2VzLCBjb3VudCwgdXNhZ2UpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlOnVz
YWdlOnN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
dXNlUmVzb3VyY2UoY29uc3QgTVRMOjpSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VV
c2FnZSB1c2FnZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZV91c2FnZV9z
dGFnZXNfKSwgcmVzb3VyY2UsIHVzYWdlLCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6IHVzZVJl
c291cmNlczpjb3VudDp1c2FnZTpzdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXMsIE5T
OjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlLCBNVEw6OlJlbmRlclN0
YWdlcyBzdGFnZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHVzZVJlc291cmNlc19jb3VudF91c2FnZV9zdGFnZXNfKSwgcmVzb3VyY2Vz
LCBjb3VudCwgdXNhZ2UsIHN0YWdlcyk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcChjb25zdCBNVEw6
OkhlYXAqIGhlYXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHVzZUhlYXBfKSwgaGVhcCk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcHM6
Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVzZUhl
YXBzKE1UTDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwc19jb3Vu
dF8pLCBoZWFwcywgY291bnQpOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXA6c3RhZ2VzOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwKGNvbnN0IE1U
TDo6SGVhcCogaGVhcCwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwX3N0YWdlc18p
LCBoZWFwLCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXBzOmNvdW50OnN0YWdlczoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcHMoTVRM
OjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0
YWdlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodXNlSGVhcHNfY291bnRfc3RhZ2VzXyksIGhlYXBzLCBjb3VudCwgc3RhZ2VzKTsKK30K
KworLy8gbWV0aG9kOiBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmV4ZWN1dGVDb21tYW5kc0luQnVm
ZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZm
ZXIsIE5TOjpSYW5nZSBleGVjdXRpb25SYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXJfd2l0
aFJhbmdlXyksIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgZXhlY3V0aW9uUmFuZ2UpOworfQorCisv
LyBtZXRob2Q6IGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyOmluZGlyZWN0QnVmZmVyOmluZGlyZWN0
QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZl
ciogaW5kaXJlY3RDb21tYW5kYnVmZmVyLCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kaXJlY3RSYW5n
ZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChleGVjdXRlQ29tbWFu
ZHNJbkJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8pLCBpbmRpcmVj
dENvbW1hbmRidWZmZXIsIGluZGlyZWN0UmFuZ2VCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0
KTsKK30KKworLy8gbWV0aG9kOiBtZW1vcnlCYXJyaWVyV2l0aFNjb3BlOmFmdGVyU3RhZ2VzOmJl
Zm9yZVN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
bWVtb3J5QmFycmllcihNVEw6OkJhcnJpZXJTY29wZSBzY29wZSwgTVRMOjpSZW5kZXJTdGFnZXMg
YWZ0ZXIsIE1UTDo6UmVuZGVyU3RhZ2VzIGJlZm9yZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtb3J5QmFycmllcldpdGhTY29wZV9h
ZnRlclN0YWdlc19iZWZvcmVTdGFnZXNfKSwgc2NvcGUsIGFmdGVyLCBiZWZvcmUpOworfQorCisv
LyBtZXRob2Q6IG1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzOmNvdW50OmFmdGVyU3RhZ2VzOmJl
Zm9yZVN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
bWVtb3J5QmFycmllcihNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2VyIGNv
dW50LCBNVEw6OlJlbmRlclN0YWdlcyBhZnRlciwgTVRMOjpSZW5kZXJTdGFnZXMgYmVmb3JlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCht
ZW1vcnlCYXJyaWVyV2l0aFJlc291cmNlc19jb3VudF9hZnRlclN0YWdlc19iZWZvcmVTdGFnZXNf
KSwgcmVzb3VyY2VzLCBjb3VudCwgYWZ0ZXIsIGJlZm9yZSk7Cit9CisKKy8vIG1ldGhvZDogc2Ft
cGxlQ291bnRlcnNJbkJ1ZmZlcjphdFNhbXBsZUluZGV4OndpdGhCYXJyaWVyOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzYW1wbGVDb3VudGVyc0luQnVmZmVy
KGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6VUludGVn
ZXIgc2FtcGxlSW5kZXgsIGJvb2wgYmFycmllcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcl9hdFNh
bXBsZUluZGV4X3dpdGhCYXJyaWVyXyksIHNhbXBsZUJ1ZmZlciwgc2FtcGxlSW5kZXgsIGJhcnJp
ZXIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTFJlbmRlclBhc3MuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTFJlbmRlclBhc3MuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1NzUxZWFhZTU1ZTBkODRjOTAzZjMzNzFk
MjViMTI5OTI1Mzk3ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGFzcy5ocHAKQEAgLTAsMCArMSw3ODYgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01U
TFJlbmRlclBhc3MuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisv
LworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVy
QnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZW5kZXJQYXNzLmhwcCIKKwor
bmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgTG9hZEFjdGlvbikgewor
ICAgIExvYWRBY3Rpb25Eb250Q2FyZSA9IDAsCisgICAgTG9hZEFjdGlvbkxvYWQgPSAxLAorICAg
IExvYWRBY3Rpb25DbGVhciA9IDIsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBTdG9y
ZUFjdGlvbikgeworICAgIFN0b3JlQWN0aW9uRG9udENhcmUgPSAwLAorICAgIFN0b3JlQWN0aW9u
U3RvcmUgPSAxLAorICAgIFN0b3JlQWN0aW9uTXVsdGlzYW1wbGVSZXNvbHZlID0gMiwKKyAgICBT
dG9yZUFjdGlvblN0b3JlQW5kTXVsdGlzYW1wbGVSZXNvbHZlID0gMywKKyAgICBTdG9yZUFjdGlv
blVua25vd24gPSA0LAorICAgIFN0b3JlQWN0aW9uQ3VzdG9tU2FtcGxlRGVwdGhTdG9yZSA9IDUs
Cit9OworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBTdG9yZUFjdGlvbk9wdGlvbnMpIHsK
KyAgICBTdG9yZUFjdGlvbk9wdGlvbk5vbmUgPSAwLAorICAgIFN0b3JlQWN0aW9uT3B0aW9uVmFs
aWRNYXNrID0gMSwKKyAgICBTdG9yZUFjdGlvbk9wdGlvbkN1c3RvbVNhbXBsZVBvc2l0aW9ucyA9
IDEsCit9OworCitzdHJ1Y3QgQ2xlYXJDb2xvcgoreworICAgIHN0YXRpYyBDbGVhckNvbG9yIE1h
a2UoZG91YmxlIHJlZCwgZG91YmxlIGdyZWVuLCBkb3VibGUgYmx1ZSwgZG91YmxlIGFscGhhKTsK
KworICAgIENsZWFyQ29sb3IoKSA9IGRlZmF1bHQ7CisKKyAgICBDbGVhckNvbG9yKGRvdWJsZSBy
ZWQsIGRvdWJsZSBncmVlbiwgZG91YmxlIGJsdWUsIGRvdWJsZSBhbHBoYSk7CisKKyAgICBkb3Vi
bGUgcmVkOworICAgIGRvdWJsZSBncmVlbjsKKyAgICBkb3VibGUgYmx1ZTsKKyAgICBkb3VibGUg
YWxwaGE7Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiB0
ZXh0dXJlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxldmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0TGV2ZWwoTlM6OlVJbnRlZ2VyIGxldmVsKTsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2xpY2UoTlM6
OlVJbnRlZ2VyIHNsaWNlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlcHRoUGxhbmUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFBsYW5lKE5TOjpVSW50ZWdlciBkZXB0
aFBsYW5lKTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc29sdmVUZXh0dXJlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0UmVzb2x2ZVRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVy
ZSogcmVzb2x2ZVRleHR1cmUpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZUxldmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzb2x2ZUxldmVsKE5TOjpVSW50ZWdl
ciByZXNvbHZlTGV2ZWwpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZVNsaWNlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzb2x2ZVNsaWNlKE5TOjpVSW50ZWdlciBy
ZXNvbHZlU2xpY2UpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzb2x2ZURlcHRoUGxhbmUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNvbHZlRGVwdGhQbGFuZShOUzo6VUlu
dGVnZXIgcmVzb2x2ZURlcHRoUGxhbmUpOworCisgICAgTVRMOjpMb2FkQWN0aW9uICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZEFjdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExvYWRBY3Rpb24oTVRMOjpMb2Fk
QWN0aW9uIGxvYWRBY3Rpb24pOworCisgICAgTVRMOjpTdG9yZUFjdGlvbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RvcmVBY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0
aW9uIHN0b3JlQWN0aW9uKTsKKworICAgIE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zICAgICAgICAg
ICAgICAgICAgICAgIHN0b3JlQWN0aW9uT3B0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0b3JlQWN0aW9uT3B0aW9ucyhN
VEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpOworfTsKKworY2xhc3Mg
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IsIE1UTDo6UmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpD
bGVhckNvbG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckNvbG9yKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRDbGVhckNvbG9yKE1UTDo6Q2xlYXJDb2xvciBjbGVhckNvbG9yKTsKK307CisKK19N
VExfRU5VTShOUzo6VUludGVnZXIsIE11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyKSB7Cisg
ICAgTXVsdGlzYW1wbGVEZXB0aFJlc29sdmVGaWx0ZXJTYW1wbGUwID0gMCwKKyAgICBNdWx0aXNh
bXBsZURlcHRoUmVzb2x2ZUZpbHRlck1pbiA9IDEsCisgICAgTXVsdGlzYW1wbGVEZXB0aFJlc29s
dmVGaWx0ZXJNYXggPSAyLAorfTsKKworY2xhc3MgUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IsIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciog
YWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
KiAgICAgICAgaW5pdCgpOworCisgICAgZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGVhckRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDbGVhckRlcHRoKGRvdWJsZSBj
bGVhckRlcHRoKTsKKworICAgIE1UTDo6TXVsdGlzYW1wbGVEZXB0aFJlc29sdmVGaWx0ZXIgICAg
ICAgICAgICAgICAgZGVwdGhSZXNvbHZlRmlsdGVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFJlc29sdmVGaWx0
ZXIoTVRMOjpNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlciBkZXB0aFJlc29sdmVGaWx0ZXIp
OworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgTXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2
ZUZpbHRlcikgeworICAgIE11bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXJTYW1wbGUwID0g
MCwKKyAgICBNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyRGVwdGhSZXNvbHZlZFNhbXBs
ZSA9IDEsCit9OworCitjbGFzcyBSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9y
IDogcHVibGljIE5TOjpDb3B5aW5nPFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0
b3IsIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgorICAg
IHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciog
ICAgICAgIGluaXQoKTsKKworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGVhclN0ZW5jaWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q2xlYXJTdGVuY2lsKHVp
bnQzMl90IGNsZWFyU3RlbmNpbCk7CisKKyAgICBNVEw6Ok11bHRpc2FtcGxlU3RlbmNpbFJlc29s
dmVGaWx0ZXIgICAgICAgICAgICAgICAgc3RlbmNpbFJlc29sdmVGaWx0ZXIoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
U3RlbmNpbFJlc29sdmVGaWx0ZXIoTVRMOjpNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVy
IHN0ZW5jaWxSZXNvbHZlRmlsdGVyKTsKK307CisKK2NsYXNzIFJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAgICAg
ICAgaW5pdCgpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRPYmplY3QoY29uc3QgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworfTsKKworY2xh
c3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIE5T
OjpDb3B5aW5nPFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQ291bnRl
clNhbXBsZUJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQnVmZmVy
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0U2FtcGxlQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVC
dWZmZXIqIHNhbXBsZUJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRTdGFydE9mVmVydGV4U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0
T2ZWZXJ0ZXhTYW1wbGVJbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRPZlZlcnRleFNhbXBsZUluZGV4KCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZWZXJ0
ZXhTYW1wbGVJbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9m
RnJhZ21lbnRTYW1wbGVJbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRFbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9m
RnJhZ21lbnRTYW1wbGVJbmRleCk7Cit9OworCitjbGFzcyBSZW5kZXJQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVy
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
ckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBSZW5kZXJQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChO
Uzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0
IGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNo
bWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7Cit9OworCitjbGFzcyBSZW5kZXJQ
YXNzRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQYXNzRGVzY3JpcHRvcj4K
K3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc0Rlc2NyaXB0b3IqICAgICAg
ICAgICAgICAgICAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NEZXNjcmlwdG9y
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xhc3Mg
UmVuZGVyUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgcmVuZGVyUGFzc0Rlc2Ny
aXB0b3IoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
QXJyYXkqICAgICAgICBjb2xvckF0dGFjaG1lbnRzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgZGVwdGhBdHRhY2ht
ZW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldERlcHRoQXR0YWNobWVudChjb25zdCBjbGFzcyBSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVwdGhBdHRhY2htZW50KTsKKworICAgIGNsYXNz
IFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICBzdGVuY2ls
QXR0YWNobWVudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVuY2lsQXR0YWNobWVudChjb25zdCBjbGFzcyBS
ZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiBzdGVuY2lsQXR0YWNobWVudCk7
CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWaXNpYmlsaXR5UmVz
dWx0QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogdmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcik7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVuZGVyVGFyZ2V0QXJy
YXlMZW5ndGgoTlM6OlVJbnRlZ2VyIHJlbmRlclRhcmdldEFycmF5TGVuZ3RoKTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFn
ZWJsb2NrU2FtcGxlTGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEltYWdlYmxvY2tTYW1wbGVMZW5ndGgo
TlM6OlVJbnRlZ2VyIGltYWdlYmxvY2tTYW1wbGVMZW5ndGgpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGdyb3VwTWVt
b3J5TGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKE5TOjpVSW50
ZWdlciB0aHJlYWRncm91cE1lbW9yeUxlbmd0aCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZVdpZHRoKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFRpbGVXaWR0aChOUzo6VUludGVnZXIgdGlsZVdpZHRoKTsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlSGVpZ2h0KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFRpbGVIZWlnaHQoTlM6OlVJbnRlZ2VyIHRpbGVIZWlnaHQpOworCisgICAg
TlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZWZhdWx0UmFzdGVyU2FtcGxl
Q291bnQoTlM6OlVJbnRlZ2VyIGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVy
VGFyZ2V0V2lkdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVuZGVyVGFyZ2V0V2lkdGgoTlM6OlVJbnRlZ2Vy
IHJlbmRlclRhcmdldFdpZHRoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXRIZWlnaHQoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0UmVuZGVyVGFyZ2V0SGVpZ2h0KE5TOjpVSW50ZWdlciByZW5kZXJUYXJnZXRIZWlnaHQpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFNhbXBsZVBvc2l0aW9ucyhjb25zdCBNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlv
bnMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2FtcGxlUG9zaXRpb25zKE1UTDo6U2Ft
cGxlUG9zaXRpb24qIHBvc2l0aW9ucywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAgIGNsYXNz
IFJhc3Rlcml6YXRpb25SYXRlTWFwKiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXN0ZXJp
emF0aW9uUmF0ZU1hcCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcChjb25zdCBj
bGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcCogcmFzdGVyaXphdGlvblJhdGVNYXApOworCisgICAg
Y2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIHNh
bXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3Q7Cit9OworCit9CisKK19NVExfSU5MSU5FIE1U
TDo6Q2xlYXJDb2xvciBNVEw6OkNsZWFyQ29sb3I6Ok1ha2UoZG91YmxlIHJlZCwgZG91YmxlIGdy
ZWVuLCBkb3VibGUgYmx1ZSwgZG91YmxlIGFscGhhKQoreworICAgIHJldHVybiBDbGVhckNvbG9y
KHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKK30KKworX01UTF9JTkxJTkUgTVRMOjpDbGVhckNv
bG9yOjpDbGVhckNvbG9yKGRvdWJsZSBfcmVkLCBkb3VibGUgX2dyZWVuLCBkb3VibGUgX2JsdWUs
IGRvdWJsZSBfYWxwaGEpCisgICAgOiByZWQoX3JlZCkKKyAgICAsIGdyZWVuKF9ncmVlbikKKyAg
ICAsIGJsdWUoX2JsdWUpCisgICAgLCBhbHBoYShfYWxwaGEpCit7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvciogTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpp
bml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmUKK19NVExfSU5M
SU5FIE1UTDo6VGV4dHVyZSogTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnRl
eHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4
dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZSkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRUZXh0dXJlKGNv
bnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGV4dHVyZV8pLCB0ZXh0dXJlKTsKK30KKwor
Ly8gcHJvcGVydHk6IGxldmVsCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OmxldmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGV2
ZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcjo6c2V0TGV2ZWwoTlM6OlVJbnRlZ2VyIGxldmVsKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMZXZlbF8pLCBsZXZlbCk7
Cit9CisKKy8vIHByb3BlcnR5OiBzbGljZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzbGljZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNsaWNlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3I6OnNldFNsaWNlKE5TOjpVSW50ZWdlciBzbGljZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2xpY2VfKSwg
c2xpY2UpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGhQbGFuZQorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpkZXB0aFBsYW5lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhQbGFuZSkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXREZXB0aFBsYW5lKE5TOjpV
SW50ZWdlciBkZXB0aFBsYW5lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFBsYW5lXyksIGRlcHRoUGxhbmUpOworfQorCisv
LyBwcm9wZXJ0eTogcmVzb2x2ZVRleHR1cmUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRM
OjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnJlc29sdmVUZXh0dXJlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHJlc29sdmVUZXh0dXJlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFJlc29sdmVUZXh0dXJlKGNv
bnN0IE1UTDo6VGV4dHVyZSogcmVzb2x2ZVRleHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc29sdmVUZXh0dXJlXyksIHJl
c29sdmVUZXh0dXJlKTsKK30KKworLy8gcHJvcGVydHk6IHJlc29sdmVMZXZlbAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpyZXNv
bHZlTGV2ZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvbHZlTGV2ZWwpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UmVz
b2x2ZUxldmVsKE5TOjpVSW50ZWdlciByZXNvbHZlTGV2ZWwpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc29sdmVMZXZlbF8pLCBy
ZXNvbHZlTGV2ZWwpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb2x2ZVNsaWNlCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnJlc29s
dmVTbGljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc29sdmVTbGljZSkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRSZXNv
bHZlU2xpY2UoTlM6OlVJbnRlZ2VyIHJlc29sdmVTbGljZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVzb2x2ZVNsaWNlXyksIHJl
c29sdmVTbGljZSk7Cit9CisKKy8vIHByb3BlcnR5OiByZXNvbHZlRGVwdGhQbGFuZQorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpy
ZXNvbHZlRGVwdGhQbGFuZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc29sdmVEZXB0aFBsYW5l
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3I6OnNldFJlc29sdmVEZXB0aFBsYW5lKE5TOjpVSW50ZWdlciByZXNvbHZlRGVwdGhQbGFu
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0UmVzb2x2ZURlcHRoUGxhbmVfKSwgcmVzb2x2ZURlcHRoUGxhbmUpOworfQorCisvLyBw
cm9wZXJ0eTogbG9hZEFjdGlvbgorX01UTF9JTkxJTkUgTVRMOjpMb2FkQWN0aW9uIE1UTDo6UmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpsb2FkQWN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxvYWRBY3Rpb24+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobG9hZEFjdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRMb2FkQWN0aW9uKE1UTDo6TG9hZEFjdGlvbiBs
b2FkQWN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRMb2FkQWN0aW9uXyksIGxvYWRBY3Rpb24pOworfQorCisvLyBwcm9wZXJ0
eTogc3RvcmVBY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6U3RvcmVBY3Rpb24gTVRMOjpSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnN0b3JlQWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JlQWN0aW9uPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHN0b3JlQWN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24g
c3RvcmVBY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFN0b3JlQWN0aW9uXyksIHN0b3JlQWN0aW9uKTsKK30KKworLy8gcHJv
cGVydHk6IHN0b3JlQWN0aW9uT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpTdG9yZUFjdGlvbk9w
dGlvbnMgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnN0b3JlQWN0aW9uT3B0
aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdG9y
ZUFjdGlvbk9wdGlvbnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RvcmVBY3Rpb25PcHRpb25z
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3I6OnNldFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9y
ZUFjdGlvbk9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0b3JlQWN0aW9uT3B0aW9uc18pLCBzdG9yZUFjdGlvbk9wdGlv
bnMpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVf
Q0xTKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGNsZWFyQ29sb3IKK19NVExf
SU5MSU5FIE1UTDo6Q2xlYXJDb2xvciBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjpjbGVhckNvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkNsZWFyQ29sb3I+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY2xlYXJDb2xvcikp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I6OnNldENsZWFyQ29sb3IoTVRMOjpDbGVhckNvbG9yIGNsZWFyQ29sb3IpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENs
ZWFyQ29sb3JfKSwgY2xlYXJDb2xvcik7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6
OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6
OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0
eTogY2xlYXJEZXB0aAorX01UTF9JTkxJTkUgZG91YmxlIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3I6OmNsZWFyRGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPGRvdWJsZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChjbGVhckRlcHRo
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6c2V0Q2xlYXJEZXB0aChkb3VibGUgY2xlYXJEZXB0aCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q2xlYXJEZXB0
aF8pLCBjbGVhckRlcHRoKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoUmVzb2x2ZUZpbHRlcgor
X01UTF9JTkxJTkUgTVRMOjpNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlciBNVEw6OlJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpkZXB0aFJlc29sdmVGaWx0ZXIoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TXVsdGlzYW1wbGVEZXB0
aFJlc29sdmVGaWx0ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhSZXNvbHZlRmlsdGVy
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6c2V0RGVwdGhSZXNvbHZlRmlsdGVyKE1UTDo6TXVsdGlzYW1wbGVEZXB0aFJl
c29sdmVGaWx0ZXIgZGVwdGhSZXNvbHZlRmlsdGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFJlc29sdmVGaWx0ZXJfKSwg
ZGVwdGhSZXNvbHZlRmlsdGVyKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExf
SU5MSU5FIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpS
ZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnRE
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5k
ZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NTdGVuY2ls
QXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj4oKTsKK30KKwor
Ly8gcHJvcGVydHk6IGNsZWFyU3RlbmNpbAorX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpSZW5k
ZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhclN0ZW5jaWwoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGNsZWFyU3RlbmNpbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJTdGVuY2lsKHVpbnQz
Ml90IGNsZWFyU3RlbmNpbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0Q2xlYXJTdGVuY2lsXyksIGNsZWFyU3RlbmNpbCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBzdGVuY2lsUmVzb2x2ZUZpbHRlcgorX01UTF9JTkxJTkUgTVRMOjpNdWx0
aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c3RlbmNpbFJlc29sdmVGaWx0ZXIoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZpbHRl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVuY2lsUmVzb2x2ZUZpbHRlcikpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRv
cjo6c2V0U3RlbmNpbFJlc29sdmVGaWx0ZXIoTVRMOjpNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZl
RmlsdGVyIHN0ZW5jaWxSZXNvbHZlRmlsdGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsUmVzb2x2ZUZpbHRlcl8pLCBz
dGVuY2lsUmVzb2x2ZUZpbHRlcik7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1U
TDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0
OgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciog
TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6
OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudEluZGV4
KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6
OnNldE9iamVjdChjb25zdCBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJ
bmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I+KF9NVExf
UFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oKTsK
K30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpDb3VudGVy
U2FtcGxlQnVmZmVyKiBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2FtcGxlQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNh
bXBsZUJ1ZmZlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTYW1wbGVCdWZmZXIoY29uc3QgTVRMOjpD
b3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZUJ1ZmZlcl8pLCBzYW1w
bGVCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3I6OnN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdGFy
dE9mVmVydGV4U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0U3RhcnRPZlZlcnRleFNhbXBsZUluZGV4XyksIHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRl
eCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmRPZlZlcnRleFNhbXBsZUluZGV4CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3I6OmVuZE9mVmVydGV4U2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmRP
ZlZlcnRleFNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldEVuZE9mVmVydGV4U2FtcGxl
SW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mVmVydGV4U2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEVuZE9mVmVydGV4
U2FtcGxlSW5kZXhfKSwgZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5
OiBzdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzdGFydE9mRnJh
Z21lbnRTYW1wbGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0T2ZGcmFnbWVudFNh
bXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4
KE5TOjpVSW50ZWdlciBzdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhcnRPZkZyYWdt
ZW50U2FtcGxlSW5kZXhfKSwgc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgpOworfQorCisvLyBw
cm9wZXJ0eTogZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OmVuZE9m
RnJhZ21lbnRTYW1wbGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZE9mRnJhZ21lbnRT
YW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRFbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgo
TlM6OlVJbnRlZ2VyIGVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RW5kT2ZGcmFnbWVudFNh
bXBsZUluZGV4XyksIGVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+
KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJl
bmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRl
clBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhl
ZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRl
eGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2Jq
ZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1U
TDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50
LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2Ny
aXB0XyksIGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yKiBNVEw6OlJl
bmRlclBhc3NEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVy
UGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OlJlbmRlclBhc3NEZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9y
PigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiByZW5kZXJQYXNzRGVzY3JpcHRvcgorX01UTF9J
TkxJTkUgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRv
cjo6cmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRl
clBhc3NEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChyZW5kZXJQYXNzRGVzY3JpcHRvcikp
OworfQorCisvLyBwcm9wZXJ0eTogY29sb3JBdHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBhc3NE
ZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbG9yQXR0YWNobWVudHMpKTsKK30KKworLy8g
cHJvcGVydHk6IGRlcHRoQXR0YWNobWVudAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6ZGVwdGhB
dHRhY2htZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChkZXB0aEF0dGFjaG1lbnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
clBhc3NEZXNjcmlwdG9yOjpzZXREZXB0aEF0dGFjaG1lbnQoY29uc3QgTVRMOjpSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVwdGhBdHRhY2htZW50KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aEF0dGFj
aG1lbnRfKSwgZGVwdGhBdHRhY2htZW50KTsKK30KKworLy8gcHJvcGVydHk6IHN0ZW5jaWxBdHRh
Y2htZW50CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3IqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnN0ZW5jaWxBdHRhY2htZW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBhc3NTdGVu
Y2lsQXR0YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZW5jaWxB
dHRhY2htZW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3Jp
cHRvcjo6c2V0U3RlbmNpbEF0dGFjaG1lbnQoY29uc3QgTVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0
dGFjaG1lbnREZXNjcmlwdG9yKiBzdGVuY2lsQXR0YWNobWVudCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbEF0dGFjaG1l
bnRfKSwgc3RlbmNpbEF0dGFjaG1lbnQpOworfQorCisvLyBwcm9wZXJ0eTogdmlzaWJpbGl0eVJl
c3VsdEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6UmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OnZpc2liaWxpdHlSZXN1bHRCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2aXNp
YmlsaXR5UmVzdWx0QnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
YXNzRGVzY3JpcHRvcjo6c2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZl
ciogdmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcl8pLCB2
aXNpYmlsaXR5UmVzdWx0QnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IHJlbmRlclRhcmdldEFy
cmF5TGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3Jp
cHRvcjo6cmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZW5k
ZXJUYXJnZXRBcnJheUxlbmd0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGFzc0Rlc2NyaXB0b3I6OnNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdlciBy
ZW5kZXJUYXJnZXRBcnJheUxlbmd0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGhfKSwgcmVu
ZGVyVGFyZ2V0QXJyYXlMZW5ndGgpOworfQorCisvLyBwcm9wZXJ0eTogaW1hZ2VibG9ja1NhbXBs
ZUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0
b3I6OmltYWdlYmxvY2tTYW1wbGVMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbWFnZWJs
b2NrU2FtcGxlTGVuZ3RoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNz
RGVzY3JpcHRvcjo6c2V0SW1hZ2VibG9ja1NhbXBsZUxlbmd0aChOUzo6VUludGVnZXIgaW1hZ2Vi
bG9ja1NhbXBsZUxlbmd0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0SW1hZ2VibG9ja1NhbXBsZUxlbmd0aF8pLCBpbWFnZWJsb2Nr
U2FtcGxlTGVuZ3RoKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZGdyb3VwTWVtb3J5TGVuZ3Ro
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dGhy
ZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRncm91cE1l
bW9yeUxlbmd0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OnNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKE5TOjpVSW50ZWdlciB0aHJlYWRncm91
cE1lbW9yeUxlbmd0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGhfKSwgdGhyZWFkZ3JvdXBN
ZW1vcnlMZW5ndGgpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZVdpZHRoCitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dGlsZVdpZHRoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodGlsZVdpZHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0VGlsZVdpZHRoKE5TOjpVSW50ZWdlciB0aWxlV2lkdGgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFRpbGVXaWR0aF8pLCB0aWxlV2lkdGgpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZUhlaWdo
dAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnRp
bGVIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aWxlSGVpZ2h0KSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0VGlsZUhlaWdodChOUzo6
VUludGVnZXIgdGlsZUhlaWdodCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUhlaWdodF8pLCB0aWxlSGVpZ2h0KTsKK30KKwor
Ly8gcHJvcGVydHk6IGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmRlZmF1bHRSYXN0ZXJTYW1wbGVDb3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldERlZmF1bHRS
YXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgZGVmYXVsdFJhc3RlclNhbXBsZUNvdW50KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXREZWZhdWx0UmFzdGVyU2FtcGxlQ291bnRfKSwgZGVmYXVsdFJhc3RlclNhbXBsZUNvdW50KTsK
K30KKworLy8gcHJvcGVydHk6IHJlbmRlclRhcmdldFdpZHRoCitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6cmVuZGVyVGFyZ2V0V2lkdGgoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChyZW5kZXJUYXJnZXRXaWR0aCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFJlbmRlclRhcmdldFdpZHRoKE5TOjpV
SW50ZWdlciByZW5kZXJUYXJnZXRXaWR0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyVGFyZ2V0V2lkdGhfKSwgcmVuZGVy
VGFyZ2V0V2lkdGgpOworfQorCisvLyBwcm9wZXJ0eTogcmVuZGVyVGFyZ2V0SGVpZ2h0CitfTVRM
X0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6cmVuZGVyVGFy
Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyVGFyZ2V0SGVpZ2h0KSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0UmVuZGVy
VGFyZ2V0SGVpZ2h0KE5TOjpVSW50ZWdlciByZW5kZXJUYXJnZXRIZWlnaHQpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlbmRlclRh
cmdldEhlaWdodF8pLCByZW5kZXJUYXJnZXRIZWlnaHQpOworfQorCisvLyBtZXRob2Q6IHNldFNh
bXBsZVBvc2l0aW9uczpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVz
Y3JpcHRvcjo6c2V0U2FtcGxlUG9zaXRpb25zKGNvbnN0IE1UTDo6U2FtcGxlUG9zaXRpb24qIHBv
c2l0aW9ucywgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVQb3NpdGlvbnNfY291bnRfKSwg
cG9zaXRpb25zLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZ2V0U2FtcGxlUG9zaXRpb25zOmNv
dW50OgorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6
OmdldFNhbXBsZVBvc2l0aW9ucyhNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5TOjpV
SW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZ2V0U2FtcGxlUG9zaXRpb25zX2NvdW50Xyks
IHBvc2l0aW9ucywgY291bnQpOworfQorCisvLyBwcm9wZXJ0eTogcmFzdGVyaXphdGlvblJhdGVN
YXAKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXAqIE1UTDo6UmVuZGVyUGFz
c0Rlc2NyaXB0b3I6OnJhc3Rlcml6YXRpb25SYXRlTWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChyYXN0ZXJpemF0aW9uUmF0ZU1hcCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFJhc3Rlcml6YXRpb25SYXRlTWFwKGNv
bnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXAqIHJhc3Rlcml6YXRpb25SYXRlTWFwKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRS
YXN0ZXJpemF0aW9uUmF0ZU1hcF8pLCByYXN0ZXJpemF0aW9uUmF0ZU1hcCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBzYW1wbGVCdWZmZXJBdHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQYXNz
RGVzY3JpcHRvcjo6c2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlckF0
dGFjaG1lbnRzKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMUmVuZGVyUGlwZWxpbmUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDFkYjZmNmIz
N2UwMmZlM2I2YTZmMDZkYjkzMGE2ZjIzY2FlMWMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhwcApAQCAt
MCwwICsxLDEyMTIgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIE1ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVk
ZSAiTVRMUGl4ZWxGb3JtYXQuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlckNvbW1hbmRFbmNvZGVy
LmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQaXBlbGluZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlw
ZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBCbGVu
ZEZhY3RvcikgeworICAgIEJsZW5kRmFjdG9yWmVybyA9IDAsCisgICAgQmxlbmRGYWN0b3JPbmUg
PSAxLAorICAgIEJsZW5kRmFjdG9yU291cmNlQ29sb3IgPSAyLAorICAgIEJsZW5kRmFjdG9yT25l
TWludXNTb3VyY2VDb2xvciA9IDMsCisgICAgQmxlbmRGYWN0b3JTb3VyY2VBbHBoYSA9IDQsCisg
ICAgQmxlbmRGYWN0b3JPbmVNaW51c1NvdXJjZUFscGhhID0gNSwKKyAgICBCbGVuZEZhY3RvckRl
c3RpbmF0aW9uQ29sb3IgPSA2LAorICAgIEJsZW5kRmFjdG9yT25lTWludXNEZXN0aW5hdGlvbkNv
bG9yID0gNywKKyAgICBCbGVuZEZhY3RvckRlc3RpbmF0aW9uQWxwaGEgPSA4LAorICAgIEJsZW5k
RmFjdG9yT25lTWludXNEZXN0aW5hdGlvbkFscGhhID0gOSwKKyAgICBCbGVuZEZhY3RvclNvdXJj
ZUFscGhhU2F0dXJhdGVkID0gMTAsCisgICAgQmxlbmRGYWN0b3JCbGVuZENvbG9yID0gMTEsCisg
ICAgQmxlbmRGYWN0b3JPbmVNaW51c0JsZW5kQ29sb3IgPSAxMiwKKyAgICBCbGVuZEZhY3RvckJs
ZW5kQWxwaGEgPSAxMywKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzQmxlbmRBbHBoYSA9IDE0LAor
ICAgIEJsZW5kRmFjdG9yU291cmNlMUNvbG9yID0gMTUsCisgICAgQmxlbmRGYWN0b3JPbmVNaW51
c1NvdXJjZTFDb2xvciA9IDE2LAorICAgIEJsZW5kRmFjdG9yU291cmNlMUFscGhhID0gMTcsCisg
ICAgQmxlbmRGYWN0b3JPbmVNaW51c1NvdXJjZTFBbHBoYSA9IDE4LAorfTsKKworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgQmxlbmRPcGVyYXRpb24pIHsKKyAgICBCbGVuZE9wZXJhdGlvbkFkZCA9
IDAsCisgICAgQmxlbmRPcGVyYXRpb25TdWJ0cmFjdCA9IDEsCisgICAgQmxlbmRPcGVyYXRpb25S
ZXZlcnNlU3VidHJhY3QgPSAyLAorICAgIEJsZW5kT3BlcmF0aW9uTWluID0gMywKKyAgICBCbGVu
ZE9wZXJhdGlvbk1heCA9IDQsCit9OworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBDb2xv
cldyaXRlTWFzaykgeworICAgIENvbG9yV3JpdGVNYXNrTm9uZSA9IDAsCisgICAgQ29sb3JXcml0
ZU1hc2tBbHBoYSA9IDEsCisgICAgQ29sb3JXcml0ZU1hc2tCbHVlID0gMiwKKyAgICBDb2xvcldy
aXRlTWFza0dyZWVuID0gNCwKKyAgICBDb2xvcldyaXRlTWFza1JlZCA9IDgsCisgICAgQ29sb3JX
cml0ZU1hc2tBbGwgPSAxNSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFByaW1pdGl2
ZVRvcG9sb2d5Q2xhc3MpIHsKKyAgICBQcmltaXRpdmVUb3BvbG9neUNsYXNzVW5zcGVjaWZpZWQg
PSAwLAorICAgIFByaW1pdGl2ZVRvcG9sb2d5Q2xhc3NQb2ludCA9IDEsCisgICAgUHJpbWl0aXZl
VG9wb2xvZ3lDbGFzc0xpbmUgPSAyLAorICAgIFByaW1pdGl2ZVRvcG9sb2d5Q2xhc3NUcmlhbmds
ZSA9IDMsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBUZXNzZWxsYXRpb25QYXJ0aXRp
b25Nb2RlKSB7CisgICAgVGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZVBvdzIgPSAwLAorICAgIFRl
c3NlbGxhdGlvblBhcnRpdGlvbk1vZGVJbnRlZ2VyID0gMSwKKyAgICBUZXNzZWxsYXRpb25QYXJ0
aXRpb25Nb2RlRnJhY3Rpb25hbE9kZCA9IDIsCisgICAgVGVzc2VsbGF0aW9uUGFydGl0aW9uTW9k
ZUZyYWN0aW9uYWxFdmVuID0gMywKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFRlc3Nl
bGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbikgeworICAgIFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBG
dW5jdGlvbkNvbnN0YW50ID0gMCwKKyAgICBUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb25Q
ZXJQYXRjaCA9IDEsCisgICAgVGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uUGVySW5zdGFu
Y2UgPSAyLAorICAgIFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvblBlclBhdGNoQW5kUGVy
SW5zdGFuY2UgPSAzLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVGVzc2VsbGF0aW9u
RmFjdG9yRm9ybWF0KSB7CisgICAgVGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0SGFsZiA9IDAsCit9
OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRl
eFR5cGUpIHsKKyAgICBUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGVOb25lID0gMCwK
KyAgICBUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGVVSW50MTYgPSAxLAorICAgIFRl
c3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZVVJbnQzMiA9IDIsCit9OworCitjbGFzcyBS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlp
bmc8UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbEZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBpeGVs
Rm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpOworCisgICAgYm9vbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRpbmdFbmFibGVk
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0QmxlbmRpbmdFbmFibGVkKGJvb2wgYmxlbmRpbmdFbmFibGVkKTsKKwor
ICAgIE1UTDo6QmxlbmRGYWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNvdXJjZVJHQkJsZW5kRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U291cmNlUkdCQmxlbmRGYWN0b3Io
TVRMOjpCbGVuZEZhY3RvciBzb3VyY2VSR0JCbGVuZEZhY3Rvcik7CisKKyAgICBNVEw6OkJsZW5k
RmFjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvblJH
QkJsZW5kRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcihNVEw6
OkJsZW5kRmFjdG9yIGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IpOworCisgICAgTVRMOjpCbGVu
ZE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiQmxlbmRPcGVy
YXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRSZ2JCbGVuZE9wZXJhdGlvbihNVEw6OkJsZW5kT3BlcmF0aW9u
IHJnYkJsZW5kT3BlcmF0aW9uKTsKKworICAgIE1UTDo6QmxlbmRGYWN0b3IgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUFscGhhQmxlbmRGYWN0b3IoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yKE1UTDo6QmxlbmRGYWN0b3Igc291cmNlQWxwaGFC
bGVuZEZhY3Rvcik7CisKKyAgICBNVEw6OkJsZW5kRmFjdG9yICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXREZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBkZXN0aW5hdGlv
bkFscGhhQmxlbmRGYWN0b3IpOworCisgICAgTVRMOjpCbGVuZE9wZXJhdGlvbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFCbGVuZE9wZXJhdGlvbigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEFscGhhQmxlbmRPcGVyYXRpb24oTVRMOjpCbGVuZE9wZXJhdGlvbiBhbHBoYUJsZW5kT3BlcmF0
aW9uKTsKKworICAgIE1UTDo6Q29sb3JXcml0ZU1hc2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdyaXRlTWFzaygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFdyaXRlTWFzayhNVEw6OkNvbG9yV3Jp
dGVNYXNrIHdyaXRlTWFzayk7Cit9OworCitjbGFzcyBSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24g
OiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbj4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBhbGxvYygp
OworCisgICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiAgICAgICAgaW5pdCgpOwor
CisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4QXJndW1l
bnRzKCkgY29uc3Q7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFnbWVudEFyZ3VtZW50cygpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGlsZUFyZ3VtZW50cygpIGNvbnN0OworfTsKKworY2xhc3MgUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKiAgICAgICAgICAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6U3Ry
aW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRnVuY3Rp
b24qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEZ1bmN0aW9uKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFZlcnRleEZ1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiB2ZXJ0ZXhGdW5j
dGlvbik7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJhZ21lbnRGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGcmFnbWVudEZ1bmN0aW9uKGNv
bnN0IGNsYXNzIEZ1bmN0aW9uKiBmcmFnbWVudEZ1bmN0aW9uKTsKKworICAgIGNsYXNzIFZlcnRl
eERlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhEZXNjcmlwdG9y
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFZlcnRleERlc2NyaXB0b3IoY29uc3QgY2xhc3MgVmVydGV4RGVzY3JpcHRv
ciogdmVydGV4RGVzY3JpcHRvcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FtcGxlQ291
bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXN0ZXJTYW1wbGVDb3VudCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRSYXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgcmFzdGVyU2FtcGxlQ291bnQpOwor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWxwaGFUb0NvdmVyYWdlRW5hYmxl
ZChib29sIGFscGhhVG9Db3ZlcmFnZUVuYWJsZWQpOworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhVG9PbmVFbmFibGVkKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldEFscGhhVG9PbmVFbmFibGVkKGJvb2wgYWxwaGFUb09uZUVuYWJsZWQpOworCisgICAg
Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhc3Rl
cml6YXRpb25FbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJhc3Rlcml6YXRpb25FbmFibGVkKGJvb2wgcmFz
dGVyaXphdGlvbkVuYWJsZWQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRNYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQoTlM6OlVJbnRlZ2VyIG1heFZlcnRleEFt
cGxpZmljYXRpb25Db3VudCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSogY29sb3JBdHRhY2htZW50cygpIGNvbnN0OworCisgICAgTVRM
OjpQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoQXR0
YWNobWVudFBpeGVsRm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0
KE1UTDo6UGl4ZWxGb3JtYXQgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQpOworCisgICAgTVRM
OjpQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZW5jaWxB
dHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZv
cm1hdChNVEw6OlBpeGVsRm9ybWF0IHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQpOworCisg
ICAgTVRMOjpQcmltaXRpdmVUb3BvbG9neUNsYXNzICAgICAgICAgICAgICAgICAgICAgICAgIGlu
cHV0UHJpbWl0aXZlVG9wb2xvZ3koKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRQcmltaXRpdmVUb3BvbG9neShN
VEw6OlByaW1pdGl2ZVRvcG9sb2d5Q2xhc3MgaW5wdXRQcmltaXRpdmVUb3BvbG9neSk7CisKKyAg
ICBNVEw6OlRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUgICAgICAgICAgICAgICAgICAgICAgdGVz
c2VsbGF0aW9uUGFydGl0aW9uTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXNzZWxsYXRpb25QYXJ0aXRpb25N
b2RlKE1UTDo6VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSB0ZXNzZWxsYXRpb25QYXJ0aXRpb25N
b2RlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhUZXNzZWxsYXRpb25GYWN0b3IoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4VGVzc2VsbGF0aW9u
RmFjdG9yKE5TOjpVSW50ZWdlciBtYXhUZXNzZWxsYXRpb25GYWN0b3IpOworCisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3NlbGxhdGlv
bkZhY3RvclNjYWxlRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVu
YWJsZWQoYm9vbCB0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQpOworCisgICAgTVRMOjpU
ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgIHRlc3NlbGxhdGlv
bkZhY3RvckZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQoTVRMOjpU
ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQgdGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KTsKKworICAg
IE1UTDo6VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlICAgICAgICAgICAgICB0ZXNz
ZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGVzc2VsbGF0aW9uQ29u
dHJvbFBvaW50SW5kZXhUeXBlKE1UTDo6VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBl
IHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSk7CisKKyAgICBNVEw6OlRlc3NlbGxh
dGlvbkZhY3RvclN0ZXBGdW5jdGlvbiAgICAgICAgICAgICAgICAgdGVzc2VsbGF0aW9uRmFjdG9y
U3RlcEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbihN
VEw6OlRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbiB0ZXNzZWxsYXRpb25GYWN0b3JTdGVw
RnVuY3Rpb24pOworCisgICAgTVRMOjpXaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRU
ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIoTVRMOjpXaW5kaW5nIHRlc3NlbGxhdGlvbk91
dHB1dFdpbmRpbmdPcmRlcik7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JB
cnJheSogICAgICAgICAgICAgICAgdmVydGV4QnVmZmVycygpIGNvbnN0OworCisgICAgY2xhc3Mg
UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqICAgICAgICAgICAgICAgIGZyYWdtZW50QnVm
ZmVycygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKGJvb2wgc3VwcG9ydEluZGlyZWN0Q29tbWFu
ZEJ1ZmZlcnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJpbmFyeUFyY2hpdmVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpbmFyeUFyY2hpdmVzKGNv
bnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleFByZWxvYWRlZExpYnJhcmll
cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRWZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiB2
ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogZnJh
Z21lbnRQcmVsb2FkZWRMaWJyYXJpZXMpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleExpbmtlZEZ1bmN0aW9ucygpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRWZXJ0ZXhMaW5rZWRGdW5jdGlvbnMoY29uc3QgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiB2
ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEZyYWdtZW50TGlua2VkRnVuY3Rpb25zKGNvbnN0IGNsYXNzIExpbmtlZEZ1bmN0aW9ucyog
ZnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5j
dGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0U3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucyhib29s
IHN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMpOworCisgICAgYm9vbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRBZGRpbmdGcmFn
bWVudEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5h
cnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1heFZlcnRleENhbGxTdGFja0RlcHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heFZlcnRleENhbGxTdGFja0Rl
cHRoKE5TOjpVSW50ZWdlciBtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RnJhZ21lbnRD
YWxsU3RhY2tEZXB0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKE5TOjpV
SW50ZWdlciBtYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworY2xh
c3MgUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5n
PFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yKiBhbGxvYygpOworCisg
ICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgp
OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleEFkZGl0aW9uYWxC
aW5hcnlGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiB2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVu
Y3Rpb25zKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZyYWdtZW50
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZyYWdtZW50QWRkaXRp
b25hbEJpbmFyeUZ1bmN0aW9ucyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogdGlsZUFkZGl0
aW9uYWxCaW5hcnlGdW5jdGlvbnMpOworfTsKKworY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVyUGlwZWxpbmVTdGF0ZT4KK3sKK3B1YmxpYzoK
KyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworCisg
ICAgY2xhc3MgRGV2aWNlKiAgICAgICAgICAgICAgICAgICAgZGV2aWNlKCkgY29uc3Q7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBtYXhUb3RhbFRocmVhZHNQZXJUaHJl
YWRncm91cCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgICBpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBpbWFnZWJsb2NrTWVtb3J5TGVu
Z3RoKE1UTDo6U2l6ZSBpbWFnZWJsb2NrRGltZW5zaW9ucyk7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0
OworCisgICAgY2xhc3MgRnVuY3Rpb25IYW5kbGUqICAgICAgICAgICAgZnVuY3Rpb25IYW5kbGUo
Y29uc3QgY2xhc3MgRnVuY3Rpb24qIGZ1bmN0aW9uLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZSk7
CisKKyAgICBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogICAgICBuZXdWaXNpYmxlRnVuY3Rp
b25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlKTsKKworICAgIGNsYXNzIEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUqIG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3Mg
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UmVu
ZGVyU3RhZ2VzIHN0YWdlKTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqICAgICAg
IG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVGdW5jdGlv
bnNEZXNjcmlwdG9yKiBhZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLCBOUzo6RXJyb3IqKiBlcnJv
cik7Cit9OworCitjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xh
c3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBp
bml0KCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7Cit9
OworCitjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yIDog
cHVibGljIE5TOjpDb3B5aW5nPFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBUaWxlUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAg
TVRMOjpQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBpeGVsRm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQpOworfTsKKworY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxUaWxlUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAg
c3RhdGljIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIFRpbGVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChO
Uzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25z
dCBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRh
Y2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIFRpbGVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VGlsZVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVGlsZVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciogICAgICAgICAgICAgIGFsbG9jKCk7CisKKyAgICBjbGFzcyBU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGluaXQoKTsK
KworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVs
KTsKKworICAgIGNsYXNzIEZ1bmN0aW9uKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGlsZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaWxlRnVuY3Rpb24oY29uc3Qg
Y2xhc3MgRnVuY3Rpb24qIHRpbGVGdW5jdGlvbik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhc3RlclNhbXBsZUNvdW50KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRSYXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgcmFzdGVyU2FtcGxl
Q291bnQpOworCisgICAgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5KiBjb2xvckF0dGFjaG1lbnRzKCkgY29uc3Q7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGdyb3Vw
U2l6ZU1hdGNoZXNUaWxlU2l6ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGhyZWFkZ3JvdXBTaXplTWF0Y2hl
c1RpbGVTaXplKGJvb2wgdGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKTsKKworICAgIGNs
YXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiAgICAgICAgICAgICAgICAgICAgdGls
ZUJ1ZmZlcnMoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldE1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKE5TOjpVSW50ZWdlciBt
YXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeUFyY2hpdmVzKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hpdmVz
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJlbG9hZGVkTGlicmFyaWVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcmVsb2FkZWRMaWJy
YXJpZXMoY29uc3QgTlM6OkFycmF5KiBwcmVsb2FkZWRMaWJyYXJpZXMpOworCisgICAgY2xhc3Mg
TGlua2VkRnVuY3Rpb25zKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZWRG
dW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldExpbmtlZEZ1bmN0aW9ucyhjb25zdCBjbGFzcyBMaW5r
ZWRGdW5jdGlvbnMqIGxpbmtlZEZ1bmN0aW9ucyk7CisKKyAgICBib29sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRBZGRpbmdCaW5hcnlG
dW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMoYm9v
bCBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Q2FsbFN0YWNrRGVwdGgo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1heENhbGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhDYWxsU3Rh
Y2tEZXB0aCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc2V0KCk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciogTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1U
TDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHBpeGVsRm9ybWF0CitfTVRMX0lO
TElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpwaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpQaXhlbEZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaXhlbEZv
cm1hdCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRQaXhlbEZvcm1hdF8pLCBwaXhlbEZvcm1hdCk7Cit9CisKKy8vIHByb3BlcnR5
OiBibGVuZGluZ0VuYWJsZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmJsZW5kaW5nRW5hYmxlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
c0JsZW5kaW5nRW5hYmxlZCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRCbGVuZGluZ0VuYWJsZWQoYm9vbCBi
bGVuZGluZ0VuYWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEJsZW5kaW5nRW5hYmxlZF8pLCBibGVuZGluZ0VuYWJsZWQpOwor
fQorCisvLyBwcm9wZXJ0eTogc291cmNlUkdCQmxlbmRGYWN0b3IKK19NVExfSU5MSU5FIE1UTDo6
QmxlbmRGYWN0b3IgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
OnNvdXJjZVJHQkJsZW5kRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkJsZW5kRmFjdG9yPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNvdXJjZVJH
QkJsZW5kRmFjdG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFNvdXJjZVJHQkJsZW5kRmFjdG9yKE1UTDo6
QmxlbmRGYWN0b3Igc291cmNlUkdCQmxlbmRGYWN0b3IpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNvdXJjZVJHQkJsZW5kRmFjdG9y
XyksIHNvdXJjZVJHQkJsZW5kRmFjdG9yKTsKK30KKworLy8gcHJvcGVydHk6IGRlc3RpbmF0aW9u
UkdCQmxlbmRGYWN0b3IKK19NVExfSU5MSU5FIE1UTDo6QmxlbmRGYWN0b3IgTVRMOjpSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0
b3IoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxlbmRG
YWN0b3I+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVzdGluYXRpb25SR0JCbGVuZEZhY3Rvcikp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yOjpzZXREZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKE1UTDo6QmxlbmRGYWN0
b3IgZGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVzdGluYXRpb25SR0JCbGVuZEZhY3Rv
cl8pLCBkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKTsKK30KKworLy8gcHJvcGVydHk6IHJnYkJs
ZW5kT3BlcmF0aW9uCitfTVRMX0lOTElORSBNVEw6OkJsZW5kT3BlcmF0aW9uIE1UTDo6UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpyZ2JCbGVuZE9wZXJhdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGVuZE9wZXJhdGlv
bj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZ2JCbGVuZE9wZXJhdGlvbikpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
OjpzZXRSZ2JCbGVuZE9wZXJhdGlvbihNVEw6OkJsZW5kT3BlcmF0aW9uIHJnYkJsZW5kT3BlcmF0
aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRSZ2JCbGVuZE9wZXJhdGlvbl8pLCByZ2JCbGVuZE9wZXJhdGlvbik7Cit9CisKKy8v
IHByb3BlcnR5OiBzb3VyY2VBbHBoYUJsZW5kRmFjdG9yCitfTVRMX0lOTElORSBNVEw6OkJsZW5k
RmFjdG9yIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzb3Vy
Y2VBbHBoYUJsZW5kRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkJsZW5kRmFjdG9yPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNvdXJjZUFscGhh
QmxlbmRGYWN0b3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U291cmNlQWxwaGFCbGVuZEZhY3RvcihNVEw6
OkJsZW5kRmFjdG9yIHNvdXJjZUFscGhhQmxlbmRGYWN0b3IpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNvdXJjZUFscGhhQmxlbmRG
YWN0b3JfKSwgc291cmNlQWxwaGFCbGVuZEZhY3Rvcik7Cit9CisKKy8vIHByb3BlcnR5OiBkZXN0
aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IKK19NVExfSU5MSU5FIE1UTDo6QmxlbmRGYWN0b3IgTVRM
OjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmRlc3RpbmF0aW9uQWxw
aGFCbGVuZEZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpCbGVuZEZhY3Rvcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXN0aW5hdGlvbkFscGhh
QmxlbmRGYWN0b3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0RGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9y
KE1UTDo6QmxlbmRGYWN0b3IgZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXN0aW5h
dGlvbkFscGhhQmxlbmRGYWN0b3JfKSwgZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKTsKK30K
KworLy8gcHJvcGVydHk6IGFscGhhQmxlbmRPcGVyYXRpb24KK19NVExfSU5MSU5FIE1UTDo6Qmxl
bmRPcGVyYXRpb24gTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
OmFscGhhQmxlbmRPcGVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6QmxlbmRPcGVyYXRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWxwaGFC
bGVuZE9wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRBbHBoYUJsZW5kT3BlcmF0aW9uKE1UTDo6
QmxlbmRPcGVyYXRpb24gYWxwaGFCbGVuZE9wZXJhdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWxwaGFCbGVuZE9wZXJhdGlv
bl8pLCBhbHBoYUJsZW5kT3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHdyaXRlTWFzawor
X01UTF9JTkxJTkUgTVRMOjpDb2xvcldyaXRlTWFzayBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6d3JpdGVNYXNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbG9yV3JpdGVNYXNrPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHdyaXRlTWFzaykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRXcml0ZU1hc2soTVRMOjpDb2xvcldyaXRl
TWFzayB3cml0ZU1hc2spCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFdyaXRlTWFza18pLCB3cml0ZU1hc2spOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZVJlZmxlY3Rp
b24qIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uOjphbGxvYygpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBNVEw6OlJl
bmRlclBpcGVsaW5lUmVmbGVjdGlvbjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmluaXQ8TVRMOjpSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiB2ZXJ0ZXhBcmd1bWVudHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQaXBl
bGluZVJlZmxlY3Rpb246OnZlcnRleEFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0
ZXhBcmd1bWVudHMpKTsKK30KKworLy8gcHJvcGVydHk6IGZyYWdtZW50QXJndW1lbnRzCitfTVRM
X0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uOjpmcmFnbWVu
dEFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudEFyZ3VtZW50cykpOworfQor
CisvLyBwcm9wZXJ0eTogdGlsZUFyZ3VtZW50cworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6
OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbjo6dGlsZUFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTCh0aWxlQXJndW1lbnRzKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRM
OjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBO
Uzo6U3RyaW5nKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRM
YWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhGdW5jdGlvbgorX01UTF9J
TkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnZlcnRl
eEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhGdW5jdGlvbikpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRWZXJ0
ZXhGdW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uKiB2ZXJ0ZXhGdW5jdGlvbikKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4
RnVuY3Rpb25fKSwgdmVydGV4RnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogZnJhZ21lbnRG
dW5jdGlvbgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OmZyYWdtZW50RnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZyYWdt
ZW50RnVuY3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6c2V0RnJhZ21lbnRGdW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uKiBmcmFn
bWVudEZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEZ1bmN0aW9uXyksIGZyYWdtZW50RnVuY3Rpb24pOwor
fQorCisvLyBwcm9wZXJ0eTogdmVydGV4RGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpWZXJ0
ZXhEZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dmVydGV4RGVzY3Jp
cHRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWZXJ0
ZXhEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhEZXNjcmlwdG9yKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNl
dFZlcnRleERlc2NyaXB0b3IoY29uc3QgTVRMOjpWZXJ0ZXhEZXNjcmlwdG9yKiB2ZXJ0ZXhEZXNj
cmlwdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRWZXJ0ZXhEZXNjcmlwdG9yXyksIHZlcnRleERlc2NyaXB0b3IpOworfQorCisv
LyBwcm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzYW1wbGVDb3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxlQ291bnQpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFNhbXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHJhc3RlclNh
bXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnJhc3RlclNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmFzdGVy
U2FtcGxlQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6c2V0UmFzdGVyU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHJhc3RlclNhbXBs
ZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRSYXN0ZXJTYW1wbGVDb3VudF8pLCByYXN0ZXJTYW1wbGVDb3VudCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBhbHBoYVRvQ292ZXJhZ2VFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1U
TDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjphbHBoYVRvQ292ZXJhZ2VFbmFibGVkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGlzQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRBbHBoYVRvQ292ZXJhZ2VFbmFi
bGVkKGJvb2wgYWxwaGFUb0NvdmVyYWdlRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWxwaGFUb0NvdmVyYWdlRW5hYmxl
ZF8pLCBhbHBoYVRvQ292ZXJhZ2VFbmFibGVkKTsKK30KKworLy8gcHJvcGVydHk6IGFscGhhVG9P
bmVFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
OjphbHBoYVRvT25lRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0FscGhhVG9PbmVFbmFibGVkKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNl
dEFscGhhVG9PbmVFbmFibGVkKGJvb2wgYWxwaGFUb09uZUVuYWJsZWQpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFscGhhVG9PbmVF
bmFibGVkXyksIGFscGhhVG9PbmVFbmFibGVkKTsKK30KKworLy8gcHJvcGVydHk6IHJhc3Rlcml6
YXRpb25FbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjpyYXN0ZXJpemF0aW9uRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1Jhc3Rlcml6YXRpb25F
bmFibGVkKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OnNldFJhc3Rlcml6YXRpb25FbmFibGVkKGJvb2wgcmFzdGVyaXphdGlvbkVuYWJsZWQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFJhc3Rlcml6YXRpb25FbmFibGVkXyksIHJhc3Rlcml6YXRpb25FbmFibGVkKTsKK30KKwor
Ly8gcHJvcGVydHk6IG1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhWZXJ0ZXhBbXBsaWZp
Y2F0aW9uQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9u
Q291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6c2V0TWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KE5TOjpVSW50ZWdlciBtYXhWZXJ0
ZXhBbXBsaWZpY2F0aW9uQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudF8pLCBt
YXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogY29sb3JBdHRh
Y2htZW50cworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmNvbG9yQXR0YWNo
bWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGNvbG9yQXR0YWNobWVudHMpKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoQXR0
YWNobWVudFBpeGVsRm9ybWF0CitfTVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXhlbEZvcm1hdD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXREZXB0aEF0
dGFjaG1lbnRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGRlcHRoQXR0YWNobWVudFBpeGVs
Rm9ybWF0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdF8pLCBkZXB0aEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9y
bWF0CitfTVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3RlbmNpbEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXRfKSwgc3RlbmNpbEF0dGFjaG1lbnRQaXhl
bEZvcm1hdCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnB1dFByaW1pdGl2ZVRvcG9sb2d5CitfTVRM
X0lOTElORSBNVEw6OlByaW1pdGl2ZVRvcG9sb2d5Q2xhc3MgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OmlucHV0UHJpbWl0aXZlVG9wb2xvZ3koKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UHJpbWl0aXZlVG9wb2xvZ3lDbGFzcz4odGhpcywgX01U
TF9QUklWQVRFX1NFTChpbnB1dFByaW1pdGl2ZVRvcG9sb2d5KSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldElucHV0UHJpbWl0aXZlVG9w
b2xvZ3koTVRMOjpQcmltaXRpdmVUb3BvbG9neUNsYXNzIGlucHV0UHJpbWl0aXZlVG9wb2xvZ3kp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldElucHV0UHJpbWl0aXZlVG9wb2xvZ3lfKSwgaW5wdXRQcmltaXRpdmVUb3BvbG9neSk7Cit9
CisKKy8vIHByb3BlcnR5OiB0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlCitfTVRMX0lOTElORSBN
VEw6OlRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I6OnRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZT4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvblBh
cnRpdGlvbk1vZGUoTVRMOjpUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlIHRlc3NlbGxhdGlvblBh
cnRpdGlvbk1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVfKSwgdGVzc2VsbGF0aW9u
UGFydGl0aW9uTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUZXNzZWxsYXRpb25GYWN0b3IK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6
bWF4VGVzc2VsbGF0aW9uRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VGVzc2VsbGF0
aW9uRmFjdG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldE1heFRlc3NlbGxhdGlvbkZhY3RvcihOUzo6VUludGVnZXIgbWF4VGVzc2Vs
bGF0aW9uRmFjdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRNYXhUZXNzZWxsYXRpb25GYWN0b3JfKSwgbWF4VGVzc2VsbGF0aW9u
RmFjdG9yKTsKK30KKworLy8gcHJvcGVydHk6IHRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxl
ZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2Vs
bGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzVGVzc2VsbGF0aW9uRmFj
dG9yU2NhbGVFbmFibGVkKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZChib29sIHRl
c3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVF
bmFibGVkXyksIHRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCk7Cit9CisKKy8vIHByb3Bl
cnR5OiB0ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6VGVzc2VsbGF0
aW9uRmFjdG9yRm9ybWF0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0ZXNzZWxsYXRp
b25GYWN0b3JGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRl
c3NlbGxhdGlvbkZhY3RvckZvcm1hdCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQoTVRMOjpU
ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQgdGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXNz
ZWxsYXRpb25GYWN0b3JGb3JtYXRfKSwgdGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KTsKK30KKwor
Ly8gcHJvcGVydHk6IHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZQorX01UTF9JTkxJ
TkUgTVRMOjpUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUgTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXNzZWxsYXRpb25Db250
cm9sUG9pbnRJbmRleFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGVzc2VsbGF0aW9uQ29u
dHJvbFBvaW50SW5kZXhUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZShN
VEw6OlRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSB0ZXNzZWxsYXRpb25Db250cm9s
UG9pbnRJbmRleFR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZV8pLCB0
ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogdGVz
c2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OlRlc3NlbGxhdGlv
bkZhY3RvclN0ZXBGdW5jdGlvbiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2Vs
bGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbj4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24pKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGVzc2VsbGF0
aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9u
IHRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU3Rl
cEZ1bmN0aW9uXyksIHRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbik7Cit9CisKKy8vIHBy
b3BlcnR5OiB0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIKK19NVExfSU5MSU5FIE1UTDo6
V2luZGluZyBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2VsbGF0aW9uT3V0cHV0
V2luZGluZ09yZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OldpbmRpbmc+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGVzc2VsbGF0aW9uT3V0cHV0V2lu
ZGluZ09yZGVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcihNVEw6OldpbmRpbmcg
dGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXNzZWxsYXRpb25PdXRwdXRXaW5k
aW5nT3JkZXJfKSwgdGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyKTsKK30KKworLy8gcHJv
cGVydHk6IHZlcnRleEJ1ZmZlcnMKK19NVExfSU5MSU5FIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNj
cmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhCdWZmZXJz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpcGVsaW5l
QnVmZmVyRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZm
ZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudEJ1ZmZlcnMKK19NVExfSU5MSU5FIE1U
TDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpmcmFnbWVudEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGZyYWdtZW50QnVmZmVycykpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9y
dEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycykpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdXBwb3J0SW5kaXJlY3RD
b21tYW5kQnVmZmVycyhib29sIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdXBw
b3J0SW5kaXJlY3RDb21tYW5kQnVmZmVyc18pLCBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVy
cyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlBcmNoaXZlcworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6YmluYXJ5QXJjaGl2ZXMoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYmluYXJ5QXJjaGl2ZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMoY29uc3QgTlM6
OkFycmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmluYXJ5QXJjaGl2
ZXMpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4UHJlbG9hZGVkTGlicmFyaWVzCitfTVRMX0lO
TElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhQcmVs
b2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVydGV4UHJlbG9hZGVkTGlicmFy
aWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I6OnNldFZlcnRleFByZWxvYWRlZExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIHZlcnRleFBy
ZWxvYWRlZExpYnJhcmllcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4UHJlbG9hZGVkTGlicmFyaWVzXyksIHZlcnRleFBy
ZWxvYWRlZExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudFByZWxvYWRlZExp
YnJhcmllcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6ZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnJh
Z21lbnRQcmVsb2FkZWRMaWJyYXJpZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0RnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMoY29u
c3QgTlM6OkFycmF5KiBmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRQcmVs
b2FkZWRMaWJyYXJpZXNfKSwgZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMpOworfQorCisvLyBw
cm9wZXJ0eTogdmVydGV4TGlua2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1
bmN0aW9ucyogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnZlcnRleExpbmtlZEZ1bmN0
aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaW5r
ZWRGdW5jdGlvbnMqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleExpbmtlZEZ1bmN0aW9u
cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
OjpzZXRWZXJ0ZXhMaW5rZWRGdW5jdGlvbnMoY29uc3QgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIHZl
cnRleExpbmtlZEZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4TGlua2VkRnVuY3Rpb25zXyksIHZlcnRleExp
bmtlZEZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudExpbmtlZEZ1bmN0aW9u
cworX01UTF9JTkxJTkUgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpmcmFnbWVudExpbmtlZEZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaW5rZWRGdW5jdGlvbnMqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEZyYWdtZW50TGlua2VkRnVuY3Rp
b25zKGNvbnN0IE1UTDo6TGlua2VkRnVuY3Rpb25zKiBmcmFnbWVudExpbmtlZEZ1bmN0aW9ucykK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnNfKSwgZnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMpOwor
fQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucworX01U
TF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c3VwcG9ydEFkZGlu
Z1ZlcnRleEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEFkZGluZ1Zl
cnRleEJpbmFyeUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25z
KGJvb2wgc3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFkZGlu
Z1ZlcnRleEJpbmFyeUZ1bmN0aW9uc18pLCBzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rp
b25zKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0
aW9ucworX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c3Vw
cG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBw
b3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50
QmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25z
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnNfKSwgc3VwcG9ydEFkZGlu
Z0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IG1heFZlcnRleENh
bGxTdGFja0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6Om1heFZlcnRleENhbGxTdGFja0RlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgoTlM6
OlVJbnRlZ2VyIG1heFZlcnRleENhbGxTdGFja0RlcHRoKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhWZXJ0ZXhDYWxsU3RhY2tE
ZXB0aF8pLCBtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhG
cmFnbWVudENhbGxTdGFja0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6Om1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChtYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldE1heEZyYWdtZW50Q2Fs
bFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1h
eEZyYWdtZW50Q2FsbFN0YWNrRGVwdGhfKSwgbWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aCk7Cit9
CisKKy8vIG1ldGhvZDogcmVzZXQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxs
b2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yKiBN
VEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3Jp
cHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0
b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVs
aW5lRnVuY3Rpb25zRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2Ny
aXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVy
UGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlJl
bmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6dmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1
bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rp
b25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9u
c0Rlc2NyaXB0b3I6OnNldFZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoY29uc3QgTlM6
OkFycmF5KiB2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhBZGRpdGlv
bmFsQmluYXJ5RnVuY3Rpb25zXyksIHZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpOwor
fQorCisvLyBwcm9wZXJ0eTogZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zCitfTVRM
X0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9y
OjpmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I6OnNldEZyYWdtZW50QWRk
aXRpb25hbEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZyYWdtZW50QWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zXyks
IGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiB0
aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6
OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6dGlsZUFkZGl0aW9uYWxCaW5hcnlG
dW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpB
cnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25z
RGVzY3JpcHRvcjo6c2V0VGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoY29uc3QgTlM6OkFy
cmF5KiB0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnNfKSwgdGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpOworfQorCisvLyBw
cm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6UmVuZGVyUGlwZWxp
bmVTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OlJlbmRlclBpcGVs
aW5lU3RhdGU6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisv
LyBwcm9wZXJ0eTogbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6Om1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VG90YWxUaHJlYWRzUGVyVGhyZWFk
Z3JvdXApKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6
ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OnRocmVhZGdyb3Vw
U2l6ZU1hdGNoZXNUaWxlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRncm91cFNpemVNYXRjaGVz
VGlsZVNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IGltYWdlYmxvY2tTYW1wbGVMZW5ndGgKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OmltYWdlYmxv
Y2tTYW1wbGVMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbWFnZWJsb2NrU2FtcGxlTGVu
Z3RoKSk7Cit9CisKKy8vIG1ldGhvZDogaW1hZ2VibG9ja01lbW9yeUxlbmd0aEZvckRpbWVuc2lv
bnM6CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpp
bWFnZWJsb2NrTWVtb3J5TGVuZ3RoKE1UTDo6U2l6ZSBpbWFnZWJsb2NrRGltZW5zaW9ucykKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaW1hZ2VibG9ja01lbW9yeUxlbmd0aEZvckRpbWVuc2lvbnNfKSwgaW1hZ2Vi
bG9ja0RpbWVuc2lvbnMpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydEluZGlyZWN0Q29tbWFu
ZEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpzdXBw
b3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEluZGly
ZWN0Q29tbWFuZEJ1ZmZlcnMpKTsKK30KKworLy8gbWV0aG9kOiBmdW5jdGlvbkhhbmRsZVdpdGhG
dW5jdGlvbjpzdGFnZToKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25IYW5kbGUqIE1UTDo6UmVu
ZGVyUGlwZWxpbmVTdGF0ZTo6ZnVuY3Rpb25IYW5kbGUoY29uc3QgTVRMOjpGdW5jdGlvbiogZnVu
Y3Rpb24sIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25IYW5kbGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1
bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uX3N0YWdlXyksIGZ1bmN0aW9uLCBzdGFnZSk7Cit9CisK
Ky8vIG1ldGhvZDogbmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcjpzdGFnZToK
K19NVExfSU5MSU5FIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIE1UTDo6UmVuZGVyUGlwZWxp
bmVTdGF0ZTo6bmV3VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rp
b25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFi
bGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0aERl
c2NyaXB0b3Jfc3RhZ2VfKSwgZGVzY3JpcHRvciwgc3RhZ2UpOworfQorCisvLyBtZXRob2Q6IG5l
d0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcjpzdGFnZToKK19NVExfSU5M
SU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogTVRMOjpSZW5kZXJQaXBlbGluZVN0
YXRlOjpuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0
YWdlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3SW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yX3N0YWdlXyksIGRlc2NyaXB0b3IsIHN0YWdlKTsKK30K
KworLy8gbWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlG
dW5jdGlvbnM6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqIE1U
TDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6
OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvciogYWRkaXRpb25hbEJpbmFyeUZ1bmN0
aW9ucywgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfZXJyb3JfKSwg
YWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywgZXJyb3IpOworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3JBcnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVf
Q0xTKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9
CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6Omlu
aXQ8TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oKTsK
K30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBN
VEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdl
ciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOwor
fQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6
OnNldE9iamVjdChjb25zdCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0
X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6YWxsb2M8TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRpbGVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6VGlsZVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogcGl4ZWxGb3JtYXQKK19NVExfSU5MSU5FIE1U
TDo6UGl4ZWxGb3JtYXQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjpwaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpQaXhlbEZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaXhlbEZvcm1h
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0UGl4ZWxGb3JtYXRfKSwgcGl4ZWxGb3JtYXQpOworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6
OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0
QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5k
ZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChv
YmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gbWV0
aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0T2Jq
ZWN0KGNvbnN0IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0
SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRpbGVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5T
OjpTdHJpbmcqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJl
bCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZUZ1bmN0aW9uCitf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I6OnRpbGVGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUZ1bmN0aW9uKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
OjpzZXRUaWxlRnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbiogdGlsZUZ1bmN0aW9uKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRU
aWxlRnVuY3Rpb25fKSwgdGlsZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHJhc3RlclNh
bXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpyYXN0ZXJTYW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJh
c3RlclNhbXBsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRSYXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgcmFz
dGVyU2FtcGxlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFJhc3RlclNhbXBsZUNvdW50XyksIHJhc3RlclNhbXBsZUNvdW50
KTsKK30KKworLy8gcHJvcGVydHk6IGNvbG9yQXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1UTDo6
VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlRp
bGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmNvbG9yQXR0YWNobWVudHMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb2xv
ckF0dGFjaG1lbnRzKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0aHJlYWRncm91cFNpemVNYXRjaGVz
VGlsZVNpemUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjp0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFk
Z3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUaHJlYWRncm91cFNpemVNYXRjaGVzVGls
ZVNpemUoYm9vbCB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRocmVhZGdyb3Vw
U2l6ZU1hdGNoZXNUaWxlU2l6ZV8pLCB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUpOwor
fQorCisvLyBwcm9wZXJ0eTogdGlsZUJ1ZmZlcnMKK19NVExfSU5MSU5FIE1UTDo6UGlwZWxpbmVC
dWZmZXJEZXNjcmlwdG9yQXJyYXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6
dGlsZUJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHRpbGVCdWZmZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUb3RhbFRocmVhZHNQZXJUaHJl
YWRncm91cAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6bWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4VG90YWxUaHJl
YWRzUGVyVGhyZWFkZ3JvdXAoTlM6OlVJbnRlZ2VyIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdy
b3VwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cF8pLCBtYXhUb3RhbFRocmVhZHNQ
ZXJUaHJlYWRncm91cCk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlBcmNoaXZlcworX01UTF9J
TkxJTkUgTlM6OkFycmF5KiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmJpbmFy
eUFyY2hpdmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJpbmFyeUFyY2hpdmVzKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRCaW5h
cnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hpdmVzKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCaW5hcnlBcmNo
aXZlc18pLCBiaW5hcnlBcmNoaXZlcyk7Cit9CisKKy8vIHByb3BlcnR5OiBwcmVsb2FkZWRMaWJy
YXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpwcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlbG9hZGVk
TGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRQcmVsb2FkZWRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiBwcmVs
b2FkZWRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFByZWxvYWRlZExpYnJhcmllc18pLCBwcmVsb2FkZWRMaWJyYXJp
ZXMpOworfQorCisvLyBwcm9wZXJ0eTogbGlua2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6
OkxpbmtlZEZ1bmN0aW9ucyogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpsaW5r
ZWRGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6TGlua2VkRnVuY3Rpb25zKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsaW5rZWRGdW5jdGlv
bnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OnNldExpbmtlZEZ1bmN0aW9ucyhjb25zdCBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogbGlu
a2VkRnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRMaW5rZWRGdW5jdGlvbnNfKSwgbGlua2VkRnVuY3Rpb25zKTsKK30K
KworLy8gcHJvcGVydHk6IHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5F
IGJvb2wgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0QWRkaW5nQmlu
YXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNh
ZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rp
b25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFkZGlu
Z0JpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9uc18pLCBzdXBw
b3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IG1heENhbGxTdGFj
a0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjptYXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heENh
bGxTdGFja0RlcHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4Q2Fs
bFN0YWNrRGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldE1heENhbGxTdGFja0RlcHRoXyksIG1heENhbGxTdGFja0RlcHRoKTsK
K30KKworLy8gbWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZS5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2UuaHBwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYzZTI2OGIxNzk0ODI5ZTFhNTAxNmY2M2QxZGJkNDk5YWMwNWU5ZDYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2UuaHBw
CkBAIC0wLDAgKzEsMTc4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExSZXNvdXJjZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQg
MjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhw
cCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUu
aHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUg
Ik1UTFJlc291cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50
ZWdlciwgUHVyZ2VhYmxlU3RhdGUpIHsKKyAgICBQdXJnZWFibGVTdGF0ZUtlZXBDdXJyZW50ID0g
MSwKKyAgICBQdXJnZWFibGVTdGF0ZU5vblZvbGF0aWxlID0gMiwKKyAgICBQdXJnZWFibGVTdGF0
ZVZvbGF0aWxlID0gMywKKyAgICBQdXJnZWFibGVTdGF0ZUVtcHR5ID0gNCwKK307CisKK19NVExf
RU5VTShOUzo6VUludGVnZXIsIENQVUNhY2hlTW9kZSkgeworICAgIENQVUNhY2hlTW9kZURlZmF1
bHRDYWNoZSA9IDAsCisgICAgQ1BVQ2FjaGVNb2RlV3JpdGVDb21iaW5lZCA9IDEsCit9OworCitf
TVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBTdG9yYWdlTW9kZSkgeworICAgIFN0b3JhZ2VNb2RlU2hh
cmVkID0gMCwKKyAgICBTdG9yYWdlTW9kZU1hbmFnZWQgPSAxLAorICAgIFN0b3JhZ2VNb2RlUHJp
dmF0ZSA9IDIsCisgICAgU3RvcmFnZU1vZGVNZW1vcnlsZXNzID0gMywKK307CisKK19NVExfRU5V
TShOUzo6VUludGVnZXIsIEhhemFyZFRyYWNraW5nTW9kZSkgeworICAgIEhhemFyZFRyYWNraW5n
TW9kZURlZmF1bHQgPSAwLAorICAgIEhhemFyZFRyYWNraW5nTW9kZVVudHJhY2tlZCA9IDEsCisg
ICAgSGF6YXJkVHJhY2tpbmdNb2RlVHJhY2tlZCA9IDIsCit9OworCitfTVRMX09QVElPTlMoTlM6
OlVJbnRlZ2VyLCBSZXNvdXJjZU9wdGlvbnMpIHsKKyAgICBSZXNvdXJjZVN0b3JhZ2VNb2RlU2hh
cmVkID0gMCwKKyAgICBSZXNvdXJjZUhhemFyZFRyYWNraW5nTW9kZURlZmF1bHQgPSAwLAorICAg
IFJlc291cmNlQ1BVQ2FjaGVNb2RlRGVmYXVsdENhY2hlID0gMCwKKyAgICBSZXNvdXJjZU9wdGlv
bkNQVUNhY2hlTW9kZURlZmF1bHQgPSAwLAorICAgIFJlc291cmNlQ1BVQ2FjaGVNb2RlV3JpdGVD
b21iaW5lZCA9IDEsCisgICAgUmVzb3VyY2VPcHRpb25DUFVDYWNoZU1vZGVXcml0ZUNvbWJpbmVk
ID0gMSwKKyAgICBSZXNvdXJjZVN0b3JhZ2VNb2RlTWFuYWdlZCA9IDE2LAorICAgIFJlc291cmNl
U3RvcmFnZU1vZGVQcml2YXRlID0gMzIsCisgICAgUmVzb3VyY2VTdG9yYWdlTW9kZU1lbW9yeWxl
c3MgPSA0OCwKKyAgICBSZXNvdXJjZUhhemFyZFRyYWNraW5nTW9kZVVudHJhY2tlZCA9IDI1NiwK
KyAgICBSZXNvdXJjZUhhemFyZFRyYWNraW5nTW9kZVRyYWNrZWQgPSA1MTIsCit9OworCitjbGFz
cyBSZXNvdXJjZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVzb3VyY2U+Cit7CitwdWJsaWM6
CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisKKyAg
ICBjbGFzcyBEZXZpY2UqICAgICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE1UTDo6Q1BV
Q2FjaGVNb2RlICAgICAgIGNwdUNhY2hlTW9kZSgpIGNvbnN0OworCisgICAgTVRMOjpTdG9yYWdl
TW9kZSAgICAgICAgc3RvcmFnZU1vZGUoKSBjb25zdDsKKworICAgIE1UTDo6SGF6YXJkVHJhY2tp
bmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0OworCisgICAgTVRMOjpSZXNvdXJjZU9w
dGlvbnMgICAgcmVzb3VyY2VPcHRpb25zKCkgY29uc3Q7CisKKyAgICBNVEw6OlB1cmdlYWJsZVN0
YXRlICAgICBzZXRQdXJnZWFibGVTdGF0ZShNVEw6OlB1cmdlYWJsZVN0YXRlIHN0YXRlKTsKKwor
ICAgIGNsYXNzIEhlYXAqICAgICAgICAgICAgIGhlYXAoKSBjb25zdDsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgIGhlYXBPZmZzZXQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgIGFsbG9jYXRlZFNpemUoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgIG1ha2VBbGlhc2FibGUoKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGlz
QWxpYXNhYmxlKCk7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUg
TlM6OlN0cmluZyogTVRMOjpSZXNvdXJjZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxh
YmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZTo6c2V0TGFiZWwoY29u
c3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVy
dHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6UmVzb3VyY2U6OmRldmlj
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2Uq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogY3B1
Q2FjaGVNb2RlCitfTVRMX0lOTElORSBNVEw6OkNQVUNhY2hlTW9kZSBNVEw6OlJlc291cmNlOjpj
cHVDYWNoZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6Q1BVQ2FjaGVNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNwdUNhY2hlTW9kZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogc3RvcmFnZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6U3RvcmFnZU1v
ZGUgTVRMOjpSZXNvdXJjZTo6c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RvcmFnZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c3RvcmFnZU1vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IGhhemFyZFRyYWNraW5nTW9kZQorX01U
TF9JTkxJTkUgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgTVRMOjpSZXNvdXJjZTo6aGF6YXJkVHJh
Y2tpbmdNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkhhemFyZFRyYWNraW5nTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChoYXphcmRUcmFja2lu
Z01vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IHJlc291cmNlT3B0aW9ucworX01UTF9JTkxJTkUg
TVRMOjpSZXNvdXJjZU9wdGlvbnMgTVRMOjpSZXNvdXJjZTo6cmVzb3VyY2VPcHRpb25zKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlT3B0aW9u
cz4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvdXJjZU9wdGlvbnMpKTsKK30KKworLy8gbWV0
aG9kOiBzZXRQdXJnZWFibGVTdGF0ZToKK19NVExfSU5MSU5FIE1UTDo6UHVyZ2VhYmxlU3RhdGUg
TVRMOjpSZXNvdXJjZTo6c2V0UHVyZ2VhYmxlU3RhdGUoTVRMOjpQdXJnZWFibGVTdGF0ZSBzdGF0
ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlB1cmdlYWJsZVN0YXRl
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFB1cmdlYWJsZVN0YXRlXyksIHN0YXRlKTsKK30K
KworLy8gcHJvcGVydHk6IGhlYXAKK19NVExfSU5MSU5FIE1UTDo6SGVhcCogTVRMOjpSZXNvdXJj
ZTo6aGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpI
ZWFwKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChoZWFwKSk7Cit9CisKKy8vIHByb3BlcnR5OiBo
ZWFwT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZXNvdXJjZTo6aGVhcE9m
ZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhlYXBPZmZzZXQpKTsKK30KKworLy8gcHJvcGVy
dHk6IGFsbG9jYXRlZFNpemUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlc291cmNl
OjphbGxvY2F0ZWRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWxsb2NhdGVkU2l6ZSkpOwor
fQorCisvLyBtZXRob2Q6IG1ha2VBbGlhc2FibGUKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNv
dXJjZTo6bWFrZUFsaWFzYWJsZSgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1ha2VBbGlhc2FibGUpKTsKK30KKworLy8gbWV0aG9kOiBp
c0FsaWFzYWJsZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlc291cmNlOjppc0FsaWFzYWJsZSgp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChpc0FsaWFzYWJsZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZUNvbW1h
bmRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjgzYWMxZjhiMTZiZDVlNWIxYmEzYjdiZTIyZWY3
Nzk0ZjQ5YjkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSw5
NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwor
Ly8gTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJp
dmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5j
bHVkZSAiTVRMQ29tbWFuZEVuY29kZXIuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUpIHsKKyAgICBTcGFyc2VU
ZXh0dXJlTWFwcGluZ01vZGVNYXAgPSAwLAorICAgIFNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZVVu
bWFwID0gMSwKK307CisKK3N0cnVjdCBNYXBJbmRpcmVjdEFyZ3VtZW50cworeworICAgIHVpbnQz
Ml90IHJlZ2lvbk9yaWdpblg7CisgICAgdWludDMyX3QgcmVnaW9uT3JpZ2luWTsKKyAgICB1aW50
MzJfdCByZWdpb25PcmlnaW5aOworICAgIHVpbnQzMl90IHJlZ2lvblNpemVXaWR0aDsKKyAgICB1
aW50MzJfdCByZWdpb25TaXplSGVpZ2h0OworICAgIHVpbnQzMl90IHJlZ2lvblNpemVEZXB0aDsK
KyAgICB1aW50MzJfdCBtaXBNYXBMZXZlbDsKKyAgICB1aW50MzJfdCBzbGljZUlkOworfSBfTVRM
X1BBQ0tFRDsKKworY2xhc3MgUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyIDogcHVibGljIE5T
OjpSZWZlcmVuY2luZzxSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIsIENvbW1hbmRFbmNvZGVy
PgoreworcHVibGljOgorICAgIHZvaWQgdXBkYXRlVGV4dHVyZU1hcHBpbmdzKGNvbnN0IGNsYXNz
IFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlIG1v
ZGUsIGNvbnN0IE1UTDo6UmVnaW9uKiByZWdpb25zLCBjb25zdCBOUzo6VUludGVnZXIqIG1pcExl
dmVscywgY29uc3QgTlM6OlVJbnRlZ2VyKiBzbGljZXMsIE5TOjpVSW50ZWdlciBudW1SZWdpb25z
KTsKKworICAgIHZvaWQgdXBkYXRlVGV4dHVyZU1hcHBpbmcoY29uc3QgY2xhc3MgVGV4dHVyZSog
dGV4dHVyZSwgY29uc3QgTVRMOjpTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUgbW9kZSwgY29uc3Qg
TVRMOjpSZWdpb24gcmVnaW9uLCBjb25zdCBOUzo6VUludGVnZXIgbWlwTGV2ZWwsIGNvbnN0IE5T
OjpVSW50ZWdlciBzbGljZSk7CisKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVNYXBwaW5nKGNvbnN0
IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdN
b2RlIG1vZGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdl
ciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkIHVwZGF0ZUZlbmNlKGNvbnN0IGNs
YXNzIEZlbmNlKiBmZW5jZSk7CisKKyAgICB2b2lkIHdhaXRGb3JGZW5jZShjb25zdCBjbGFzcyBG
ZW5jZSogZmVuY2UpOworfTsKKworfQorCisvLyBtZXRob2Q6IHVwZGF0ZVRleHR1cmVNYXBwaW5n
czptb2RlOnJlZ2lvbnM6bWlwTGV2ZWxzOnNsaWNlczpudW1SZWdpb25zOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcjo6dXBkYXRlVGV4dHVyZU1hcHBp
bmdzKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgTVRMOjpTcGFyc2VUZXh0dXJl
TWFwcGluZ01vZGUgbW9kZSwgY29uc3QgTVRMOjpSZWdpb24qIHJlZ2lvbnMsIGNvbnN0IE5TOjpV
SW50ZWdlciogbWlwTGV2ZWxzLCBjb25zdCBOUzo6VUludGVnZXIqIHNsaWNlcywgTlM6OlVJbnRl
Z2VyIG51bVJlZ2lvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHVwZGF0ZVRleHR1cmVNYXBwaW5nc19tb2RlX3JlZ2lvbnNfbWlwTGV2
ZWxzX3NsaWNlc19udW1SZWdpb25zXyksIHRleHR1cmUsIG1vZGUsIHJlZ2lvbnMsIG1pcExldmVs
cywgc2xpY2VzLCBudW1SZWdpb25zKTsKK30KKworLy8gbWV0aG9kOiB1cGRhdGVUZXh0dXJlTWFw
cGluZzptb2RlOnJlZ2lvbjptaXBMZXZlbDpzbGljZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXI6OnVwZGF0ZVRleHR1cmVNYXBwaW5nKGNvbnN0IE1U
TDo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgTVRMOjpTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUg
bW9kZSwgY29uc3QgTVRMOjpSZWdpb24gcmVnaW9uLCBjb25zdCBOUzo6VUludGVnZXIgbWlwTGV2
ZWwsIGNvbnN0IE5TOjpVSW50ZWdlciBzbGljZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlVGV4dHVyZU1hcHBpbmdfbW9kZV9y
ZWdpb25fbWlwTGV2ZWxfc2xpY2VfKSwgdGV4dHVyZSwgbW9kZSwgcmVnaW9uLCBtaXBMZXZlbCwg
c2xpY2UpOworfQorCisvLyBtZXRob2Q6IHVwZGF0ZVRleHR1cmVNYXBwaW5nOm1vZGU6aW5kaXJl
Y3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVz
b3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyOjp1cGRhdGVUZXh0dXJlTWFwcGluZyhjb25zdCBNVEw6
OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlIG1v
ZGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGly
ZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh1cGRhdGVUZXh0dXJlTWFwcGluZ19tb2RlX2luZGlyZWN0QnVmZmVy
X2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIHRleHR1cmUsIG1vZGUsIGluZGlyZWN0QnVmZmVyLCBp
bmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlRmVuY2U6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyOjp1cGRhdGVGZW5j
ZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOworfQorCisv
LyBtZXRob2Q6IHdhaXRGb3JGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXI6OndhaXRGb3JGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
d2FpdEZvckZlbmNlXyksIGZlbmNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZjNzcwZjY0MDIxMzE3ZDAyNDljZWFlZWYxYjVlNmNiNDQ4YWNhYTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3Vy
Y2VTdGF0ZVBhc3MuaHBwCkBAIC0wLDAgKzEsMTY1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFz
cy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBw
IgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZXNv
dXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNz
IENvdW50ZXJTYW1wbGVCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FtcGxlQnVmZmVyKGNvbnN0
IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlcik7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydE9m
RW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZFbmNvZGVy
U2FtcGxlSW5kZXgpOworfTsKKworY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSZXNvdXJj
ZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlc291cmNlU3RhdGVQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsK
KworICAgIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBSZXNvdXJjZVN0YXRlUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVn
ZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIFJlc291cmNlU3RhdGVQYXNzRGVzY3Jp
cHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3I+Cit7
CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciog
ICAgICAgICAgICAgICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZVBh
c3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBz
dGF0aWMgY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAg
ICAgIHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcigpOworCisgICAgY2xhc3MgUmVzb3VyY2VT
dGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBzYW1wbGVCdWZm
ZXJBdHRhY2htZW50cygpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxv
YworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yKiBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlc291
cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQnVm
ZmVyCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIE1UTDo6UmVzb3VyY2VT
dGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2FtcGxlQnVmZmVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvdW50ZXJTYW1w
bGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlcikpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c2V0U2FtcGxlQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1
ZmZlciogc2FtcGxlQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVCdWZmZXJfKSwgc2FtcGxlQnVmZmVyKTsKK30K
KworLy8gcHJvcGVydHk6IHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I6OnN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRT
dGFydE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRW5jb2RlclNhbXBs
ZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4XyksIHN0YXJ0T2ZFbmNvZGVyU2Ft
cGxlSW5kZXgpOworfQorCisvLyBwcm9wZXJ0eTogZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3I6OmVuZE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3I6OnNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVuY29kZXJT
YW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXhfKSwgZW5kT2ZFbmNvZGVyU2Ft
cGxlSW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkq
IE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PihfTVRMX1BS
SVZBVEVfQ0xTKE1UTFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVz
b3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6
OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZXNvdXJjZVN0YXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1l
dGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJj
ZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlc291cmNl
U3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5T
OjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwg
YXR0YWNobWVudEluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vi
c2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6UmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwg
TlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlw
dF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqIE1U
TDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTFJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRo
b2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKiBN
VEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHN0YXRpYyBtZXRob2Q6IHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcgorX01UTF9JTkxJ
TkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqIE1UTDo6UmVzb3VyY2VTdGF0ZVBh
c3NEZXNjcmlwdG9yOjpyZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IoKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKj4o
X01UTF9QUklWQVRFX0NMUyhNVExSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IpLCBfTVRMX1BS
SVZBVEVfU0VMKHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0
eTogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlc291cmNl
U3RhdGVQYXNzRGVzY3JpcHRvcjo6c2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzYW1wbGVCdWZmZXJBdHRhY2htZW50cykpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFNhbXBsZXIuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFNhbXBsZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwZTc5MTUy
ZTE1YTg3YTRlYTI5ZTBjZTY5ZTJiNDZjOTAwNDUyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMU2FtcGxlci5ocHAKQEAgLTAsMCAr
MSwzMTAgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIE1ldGFsL01UTFNhbXBsZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVk
ZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2lu
Y2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExEZXB0aFN0
ZW5jaWwuaHBwIgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorCituYW1lc3BhY2UgTVRMCit7
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBTYW1wbGVyTWluTWFnRmlsdGVyKSB7CisgICAgU2Ft
cGxlck1pbk1hZ0ZpbHRlck5lYXJlc3QgPSAwLAorICAgIFNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5l
YXIgPSAxLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU2FtcGxlck1pcEZpbHRlcikg
eworICAgIFNhbXBsZXJNaXBGaWx0ZXJOb3RNaXBtYXBwZWQgPSAwLAorICAgIFNhbXBsZXJNaXBG
aWx0ZXJOZWFyZXN0ID0gMSwKKyAgICBTYW1wbGVyTWlwRmlsdGVyTGluZWFyID0gMiwKK307CisK
K19NVExfRU5VTShOUzo6VUludGVnZXIsIFNhbXBsZXJBZGRyZXNzTW9kZSkgeworICAgIFNhbXBs
ZXJBZGRyZXNzTW9kZUNsYW1wVG9FZGdlID0gMCwKKyAgICBTYW1wbGVyQWRkcmVzc01vZGVNaXJy
b3JDbGFtcFRvRWRnZSA9IDEsCisgICAgU2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0ID0gMiwKKyAg
ICBTYW1wbGVyQWRkcmVzc01vZGVNaXJyb3JSZXBlYXQgPSAzLAorICAgIFNhbXBsZXJBZGRyZXNz
TW9kZUNsYW1wVG9aZXJvID0gNCwKKyAgICBTYW1wbGVyQWRkcmVzc01vZGVDbGFtcFRvQm9yZGVy
Q29sb3IgPSA1LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU2FtcGxlckJvcmRlckNv
bG9yKSB7CisgICAgU2FtcGxlckJvcmRlckNvbG9yVHJhbnNwYXJlbnRCbGFjayA9IDAsCisgICAg
U2FtcGxlckJvcmRlckNvbG9yT3BhcXVlQmxhY2sgPSAxLAorICAgIFNhbXBsZXJCb3JkZXJDb2xv
ck9wYXF1ZVdoaXRlID0gMiwKK307CisKK2NsYXNzIFNhbXBsZXJEZXNjcmlwdG9yIDogcHVibGlj
IE5TOjpDb3B5aW5nPFNhbXBsZXJEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBj
bGFzcyBTYW1wbGVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFNhbXBsZXJEZXNj
cmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpTYW1wbGVyTWluTWFnRmlsdGVyICAg
ICAgICBtaW5GaWx0ZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldE1pbkZpbHRlcihNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgbWluRmlsdGVyKTsKKwor
ICAgIE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciAgICAgICAgbWFnRmlsdGVyKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYWdGaWx0ZXIoTVRMOjpTYW1w
bGVyTWluTWFnRmlsdGVyIG1hZ0ZpbHRlcik7CisKKyAgICBNVEw6OlNhbXBsZXJNaXBGaWx0ZXIg
ICAgICAgICAgIG1pcEZpbHRlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0TWlwRmlsdGVyKE1UTDo6U2FtcGxlck1pcEZpbHRlciBtaXBGaWx0ZXIpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBtYXhBbmlzb3Ryb3B5KCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhBbmlzb3Ryb3B5
KE5TOjpVSW50ZWdlciBtYXhBbmlzb3Ryb3B5KTsKKworICAgIE1UTDo6U2FtcGxlckFkZHJlc3NN
b2RlICAgICAgICAgc0FkZHJlc3NNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRTQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgc0Fk
ZHJlc3NNb2RlKTsKKworICAgIE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlICAgICAgICAgdEFkZHJl
c3NNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRU
QWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgdEFkZHJlc3NNb2RlKTsKKworICAg
IE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlICAgICAgICAgckFkZHJlc3NNb2RlKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSQWRkcmVzc01vZGUoTVRMOjpT
YW1wbGVyQWRkcmVzc01vZGUgckFkZHJlc3NNb2RlKTsKKworICAgIE1UTDo6U2FtcGxlckJvcmRl
ckNvbG9yICAgICAgICAgYm9yZGVyQ29sb3IoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEJvcmRlckNvbG9yKE1UTDo6U2FtcGxlckJvcmRlckNvbG9yIGJv
cmRlckNvbG9yKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFs
aXplZENvb3JkaW5hdGVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXROb3JtYWxpemVkQ29vcmRpbmF0ZXMoYm9vbCBub3JtYWxpemVkQ29vcmRpbmF0ZXMp
OworCisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2RNaW5DbGFtcCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9kTWluQ2xhbXAo
ZmxvYXQgbG9kTWluQ2xhbXApOworCisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2RNYXhDbGFtcCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0TG9kTWF4Q2xhbXAoZmxvYXQgbG9kTWF4Q2xhbXApOworCisgICAgYm9vbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsb2RBdmVyYWdlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRMb2RBdmVyYWdlKGJvb2wgbG9kQXZlcmFnZSk7CisKKyAg
ICBNVEw6OkNvbXBhcmVGdW5jdGlvbiAgICAgICAgICAgIGNvbXBhcmVGdW5jdGlvbigpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29tcGFyZUZ1bmN0aW9u
KE1UTDo6Q29tcGFyZUZ1bmN0aW9uIGNvbXBhcmVGdW5jdGlvbik7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1cHBvcnRBcmd1bWVudEJ1ZmZl
cnMoYm9vbCBzdXBwb3J0QXJndW1lbnRCdWZmZXJzKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAg
ICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKK307CisKK2NsYXNz
IFNhbXBsZXJTdGF0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8U2FtcGxlclN0YXRlPgorewor
cHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNzIERl
dmljZSogZGV2aWNlKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yKiBNVEw6OlNhbXBsZXJEZXNjcmlw
dG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U2FtcGxl
ckRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMU2FtcGxlckRlc2NyaXB0b3IpKTsKK30K
KworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yKiBN
VEw6OlNhbXBsZXJEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OlNhbXBsZXJEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogbWluRmls
dGVyCitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgTVRMOjpTYW1wbGVyRGVz
Y3JpcHRvcjo6bWluRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWlu
RmlsdGVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6
c2V0TWluRmlsdGVyKE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciBtaW5GaWx0ZXIpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1pbkZp
bHRlcl8pLCBtaW5GaWx0ZXIpOworfQorCisvLyBwcm9wZXJ0eTogbWFnRmlsdGVyCitfTVRMX0lO
TElORSBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bWFn
RmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNh
bXBsZXJNaW5NYWdGaWx0ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWFnRmlsdGVyKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TWFnRmlsdGVy
KE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciBtYWdGaWx0ZXIpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1hZ0ZpbHRlcl8pLCBtYWdG
aWx0ZXIpOworfQorCisvLyBwcm9wZXJ0eTogbWlwRmlsdGVyCitfTVRMX0lOTElORSBNVEw6OlNh
bXBsZXJNaXBGaWx0ZXIgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bWlwRmlsdGVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNhbXBsZXJNaXBGaWx0ZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWlwRmlsdGVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TWlwRmlsdGVyKE1UTDo6U2FtcGxlck1pcEZp
bHRlciBtaXBGaWx0ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldE1pcEZpbHRlcl8pLCBtaXBGaWx0ZXIpOworfQorCisvLyBwcm9w
ZXJ0eTogbWF4QW5pc290cm9weQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6U2FtcGxl
ckRlc2NyaXB0b3I6Om1heEFuaXNvdHJvcHkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhBbmlz
b3Ryb3B5KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6
c2V0TWF4QW5pc290cm9weShOUzo6VUludGVnZXIgbWF4QW5pc290cm9weSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4QW5pc290
cm9weV8pLCBtYXhBbmlzb3Ryb3B5KTsKK30KKworLy8gcHJvcGVydHk6IHNBZGRyZXNzTW9kZQor
X01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgTVRMOjpTYW1wbGVyRGVzY3JpcHRv
cjo6c0FkZHJlc3NNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzQWRkcmVz
c01vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpz
ZXRTQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgc0FkZHJlc3NNb2RlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRT
QWRkcmVzc01vZGVfKSwgc0FkZHJlc3NNb2RlKTsKK30KKworLy8gcHJvcGVydHk6IHRBZGRyZXNz
TW9kZQorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgTVRMOjpTYW1wbGVyRGVz
Y3JpcHRvcjo6dEFkZHJlc3NNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0
QWRkcmVzc01vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlw
dG9yOjpzZXRUQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgdEFkZHJlc3NNb2Rl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRUQWRkcmVzc01vZGVfKSwgdEFkZHJlc3NNb2RlKTsKK30KKworLy8gcHJvcGVydHk6IHJB
ZGRyZXNzTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgTVRMOjpTYW1w
bGVyRGVzY3JpcHRvcjo6ckFkZHJlc3NNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZT4odGhpcywgX01UTF9QUklWQVRF
X1NFTChyQWRkcmVzc01vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJE
ZXNjcmlwdG9yOjpzZXRSQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgckFkZHJl
c3NNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRSQWRkcmVzc01vZGVfKSwgckFkZHJlc3NNb2RlKTsKK30KKworLy8gcHJvcGVy
dHk6IGJvcmRlckNvbG9yCitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJCb3JkZXJDb2xvciBNVEw6
OlNhbXBsZXJEZXNjcmlwdG9yOjpib3JkZXJDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyQm9yZGVyQ29sb3I+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYm9yZGVyQ29sb3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBs
ZXJEZXNjcmlwdG9yOjpzZXRCb3JkZXJDb2xvcihNVEw6OlNhbXBsZXJCb3JkZXJDb2xvciBib3Jk
ZXJDb2xvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0Qm9yZGVyQ29sb3JfKSwgYm9yZGVyQ29sb3IpOworfQorCisvLyBwcm9wZXJ0
eTogbm9ybWFsaXplZENvb3JkaW5hdGVzCitfTVRMX0lOTElORSBib29sIE1UTDo6U2FtcGxlckRl
c2NyaXB0b3I6Om5vcm1hbGl6ZWRDb29yZGluYXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChub3JtYWxpemVk
Q29vcmRpbmF0ZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlw
dG9yOjpzZXROb3JtYWxpemVkQ29vcmRpbmF0ZXMoYm9vbCBub3JtYWxpemVkQ29vcmRpbmF0ZXMp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE5vcm1hbGl6ZWRDb29yZGluYXRlc18pLCBub3JtYWxpemVkQ29vcmRpbmF0ZXMpOworfQor
CisvLyBwcm9wZXJ0eTogbG9kTWluQ2xhbXAKK19NVExfSU5MSU5FIGZsb2F0IE1UTDo6U2FtcGxl
ckRlc2NyaXB0b3I6OmxvZE1pbkNsYW1wKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxmbG9hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChsb2RNaW5DbGFtcCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldExvZE1pbkNs
YW1wKGZsb2F0IGxvZE1pbkNsYW1wKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMb2RNaW5DbGFtcF8pLCBsb2RNaW5DbGFtcCk7Cit9
CisKKy8vIHByb3BlcnR5OiBsb2RNYXhDbGFtcAorX01UTF9JTkxJTkUgZmxvYXQgTVRMOjpTYW1w
bGVyRGVzY3JpcHRvcjo6bG9kTWF4Q2xhbXAoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPGZsb2F0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxvZE1heENsYW1wKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TG9kTWF4
Q2xhbXAoZmxvYXQgbG9kTWF4Q2xhbXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExvZE1heENsYW1wXyksIGxvZE1heENsYW1wKTsK
K30KKworLy8gcHJvcGVydHk6IGxvZEF2ZXJhZ2UKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpTYW1w
bGVyRGVzY3JpcHRvcjo6bG9kQXZlcmFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChsb2RBdmVyYWdlKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TG9kQXZlcmFn
ZShib29sIGxvZEF2ZXJhZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldExvZEF2ZXJhZ2VfKSwgbG9kQXZlcmFnZSk7Cit9CisKKy8v
IHByb3BlcnR5OiBjb21wYXJlRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6Q29tcGFyZUZ1bmN0
aW9uIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmNvbXBhcmVGdW5jdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21wYXJlRnVuY3Rpb24+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoY29tcGFyZUZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0Q29tcGFyZUZ1bmN0aW9uKE1UTDo6Q29tcGFy
ZUZ1bmN0aW9uIGNvbXBhcmVGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tcGFyZUZ1bmN0aW9uXyksIGNvbXBhcmVG
dW5jdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0QXJndW1lbnRCdWZmZXJzCitfTVRM
X0lOTElORSBib29sIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnN1cHBvcnRBcmd1bWVudEJ1ZmZl
cnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRTdXBwb3J0QXJndW1lbnRC
dWZmZXJzKGJvb2wgc3VwcG9ydEFyZ3VtZW50QnVmZmVycykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFyZ3VtZW50QnVm
ZmVyc18pLCBzdXBwb3J0QXJndW1lbnRCdWZmZXJzKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVs
CitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpsYWJlbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5T
OjpTdHJpbmcqIE1UTDo6U2FtcGxlclN0YXRlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZp
Y2UqIE1UTDo6U2FtcGxlclN0YXRlOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZp
Y2UpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg3OTI0NGUyNGUwMjE5MzkyM2EzYzQxNzNkMTZkOTUwYzFlZTQxMmEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJ
bnB1dE91dHB1dERlc2NyaXB0b3IuaHBwCkBAIC0wLDAgKzEsMzgxIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExTdGFnZUlu
cHV0T3V0cHV0RGVzY3JpcHRvci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVk
ZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRP
dXRwdXREZXNjcmlwdG9yLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpV
SW50ZWdlciwgQXR0cmlidXRlRm9ybWF0KSB7CisgICAgQXR0cmlidXRlRm9ybWF0SW52YWxpZCA9
IDAsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIyID0gMSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRV
Q2hhcjMgPSAyLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyNCA9IDMsCisgICAgQXR0cmlidXRl
Rm9ybWF0Q2hhcjIgPSA0LAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXIzID0gNSwKKyAgICBBdHRy
aWJ1dGVGb3JtYXRDaGFyNCA9IDYsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIyTm9ybWFsaXpl
ZCA9IDcsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIzTm9ybWFsaXplZCA9IDgsCisgICAgQXR0
cmlidXRlRm9ybWF0VUNoYXI0Tm9ybWFsaXplZCA9IDksCisgICAgQXR0cmlidXRlRm9ybWF0Q2hh
cjJOb3JtYWxpemVkID0gMTAsCisgICAgQXR0cmlidXRlRm9ybWF0Q2hhcjNOb3JtYWxpemVkID0g
MTEsCisgICAgQXR0cmlidXRlRm9ybWF0Q2hhcjROb3JtYWxpemVkID0gMTIsCisgICAgQXR0cmli
dXRlRm9ybWF0VVNob3J0MiA9IDEzLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydDMgPSAxNCwK
KyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQ0ID0gMTUsCisgICAgQXR0cmlidXRlRm9ybWF0U2hv
cnQyID0gMTYsCisgICAgQXR0cmlidXRlRm9ybWF0U2hvcnQzID0gMTcsCisgICAgQXR0cmlidXRl
Rm9ybWF0U2hvcnQ0ID0gMTgsCisgICAgQXR0cmlidXRlRm9ybWF0VVNob3J0Mk5vcm1hbGl6ZWQg
PSAxOSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQzTm9ybWFsaXplZCA9IDIwLAorICAgIEF0
dHJpYnV0ZUZvcm1hdFVTaG9ydDROb3JtYWxpemVkID0gMjEsCisgICAgQXR0cmlidXRlRm9ybWF0
U2hvcnQyTm9ybWFsaXplZCA9IDIyLAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0M05vcm1hbGl6
ZWQgPSAyMywKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydDROb3JtYWxpemVkID0gMjQsCisgICAg
QXR0cmlidXRlRm9ybWF0SGFsZjIgPSAyNSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRIYWxmMyA9IDI2
LAorICAgIEF0dHJpYnV0ZUZvcm1hdEhhbGY0ID0gMjcsCisgICAgQXR0cmlidXRlRm9ybWF0Rmxv
YXQgPSAyOCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRGbG9hdDIgPSAyOSwKKyAgICBBdHRyaWJ1dGVG
b3JtYXRGbG9hdDMgPSAzMCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRGbG9hdDQgPSAzMSwKKyAgICBB
dHRyaWJ1dGVGb3JtYXRJbnQgPSAzMiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRJbnQyID0gMzMsCisg
ICAgQXR0cmlidXRlRm9ybWF0SW50MyA9IDM0LAorICAgIEF0dHJpYnV0ZUZvcm1hdEludDQgPSAz
NSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50ID0gMzYsCisgICAgQXR0cmlidXRlRm9ybWF0VUlu
dDIgPSAzNywKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50MyA9IDM4LAorICAgIEF0dHJpYnV0ZUZv
cm1hdFVJbnQ0ID0gMzksCisgICAgQXR0cmlidXRlRm9ybWF0SW50MTAxMDEwMk5vcm1hbGl6ZWQg
PSA0MCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50MTAxMDEwMk5vcm1hbGl6ZWQgPSA0MSwKKyAg
ICBBdHRyaWJ1dGVGb3JtYXRVQ2hhcjROb3JtYWxpemVkX0JHUkEgPSA0MiwKKyAgICBBdHRyaWJ1
dGVGb3JtYXRVQ2hhciA9IDQ1LAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXIgPSA0NiwKKyAgICBB
dHRyaWJ1dGVGb3JtYXRVQ2hhck5vcm1hbGl6ZWQgPSA0NywKKyAgICBBdHRyaWJ1dGVGb3JtYXRD
aGFyTm9ybWFsaXplZCA9IDQ4LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydCA9IDQ5LAorICAg
IEF0dHJpYnV0ZUZvcm1hdFNob3J0ID0gNTAsCisgICAgQXR0cmlidXRlRm9ybWF0VVNob3J0Tm9y
bWFsaXplZCA9IDUxLAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0Tm9ybWFsaXplZCA9IDUyLAor
ICAgIEF0dHJpYnV0ZUZvcm1hdEhhbGYgPSA1MywKK307CisKK19NVExfRU5VTShOUzo6VUludGVn
ZXIsIEluZGV4VHlwZSkgeworICAgIEluZGV4VHlwZVVJbnQxNiA9IDAsCisgICAgSW5kZXhUeXBl
VUludDMyID0gMSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFN0ZXBGdW5jdGlvbikg
eworICAgIFN0ZXBGdW5jdGlvbkNvbnN0YW50ID0gMCwKKyAgICBTdGVwRnVuY3Rpb25QZXJWZXJ0
ZXggPSAxLAorICAgIFN0ZXBGdW5jdGlvblBlckluc3RhbmNlID0gMiwKKyAgICBTdGVwRnVuY3Rp
b25QZXJQYXRjaCA9IDMsCisgICAgU3RlcEZ1bmN0aW9uUGVyUGF0Y2hDb250cm9sUG9pbnQgPSA0
LAorICAgIFN0ZXBGdW5jdGlvblRocmVhZFBvc2l0aW9uSW5HcmlkWCA9IDUsCisgICAgU3RlcEZ1
bmN0aW9uVGhyZWFkUG9zaXRpb25JbkdyaWRZID0gNiwKKyAgICBTdGVwRnVuY3Rpb25UaHJlYWRQ
b3NpdGlvbkluR3JpZFhJbmRleGVkID0gNywKKyAgICBTdGVwRnVuY3Rpb25UaHJlYWRQb3NpdGlv
bkluR3JpZFlJbmRleGVkID0gOCwKK307CisKK2NsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0b3Ig
OiBwdWJsaWMgTlM6OkNvcHlpbmc8QnVmZmVyTGF5b3V0RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAg
IGNsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0cmlkZShOUzo6VUludGVnZXIg
c3RyaWRlKTsKKworICAgIE1UTDo6U3RlcEZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICBzdGVw
RnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0U3RlcEZ1bmN0aW9uKE1UTDo6U3RlcEZ1bmN0aW9uIHN0ZXBGdW5jdGlvbik7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcFJhdGUoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RlcFJhdGUoTlM6
OlVJbnRlZ2VyIHN0ZXBSYXRlKTsKK307CisKK2NsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0b3JB
cnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJy
YXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqICAg
ICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiAgICAgICAg
ICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBCdWZmZXJMYXlv
dXREZXNjcmlwdG9yKiBidWZmZXJEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpOworfTsKKworY2xh
c3MgQXR0cmlidXRlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBdHRyaWJ1dGVEZXNj
cmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9y
KiBhbGxvYygpOworCisgICAgY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvciogICAgICAgIGluaXQo
KTsKKworICAgIE1UTDo6QXR0cmlidXRlRm9ybWF0ICAgICAgICAgICAgICBmb3JtYXQoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Rm9ybWF0KE1UTDo6
QXR0cmlidXRlRm9ybWF0IGZvcm1hdCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldE9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICAgICBidWZmZXJJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCdWZmZXJJbmRleChOUzo6VUludGVnZXIgYnVm
ZmVySW5kZXgpOworfTsKKworY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvckFycmF5IDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAg
IGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNs
YXNzIEF0dHJpYnV0ZURlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIg
aW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
T2JqZWN0KGNvbnN0IGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3IqIGF0dHJpYnV0ZURlc2MsIE5T
OjpVSW50ZWdlciBpbmRleCk7Cit9OworCitjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRv
ciA6IHB1YmxpYyBOUzo6Q29weWluZzxTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcj4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIGFsbG9j
KCk7CisKKyAgICBjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogICAgICAgIGluaXQo
KTsKKworICAgIHN0YXRpYyBjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogc3RhZ2VJ
bnB1dE91dHB1dERlc2NyaXB0b3IoKTsKKworICAgIGNsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheSogICAgICAgbGF5b3V0cygpIGNvbnN0OworCisgICAgY2xhc3MgQXR0cmlidXRlRGVz
Y3JpcHRvckFycmF5KiAgICAgICAgICBhdHRyaWJ1dGVzKCkgY29uc3Q7CisKKyAgICBNVEw6Oklu
ZGV4VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4VHlwZSgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhUeXBlKE1U
TDo6SW5kZXhUeXBlIGluZGV4VHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4QnVmZmVySW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluZGV4QnVmZmVySW5kZXgoTlM6OlVJ
bnRlZ2VyIGluZGV4QnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBNVEw6OkJ1ZmZl
ckxheW91dERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEJ1ZmZl
ckxheW91dERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBN
VEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3IqIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc3RyaWRlCitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzdHJpZGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdHJpZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlckxh
eW91dERlc2NyaXB0b3I6OnNldFN0cmlkZShOUzo6VUludGVnZXIgc3RyaWRlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdHJpZGVf
KSwgc3RyaWRlKTsKK30KKworLy8gcHJvcGVydHk6IHN0ZXBGdW5jdGlvbgorX01UTF9JTkxJTkUg
TVRMOjpTdGVwRnVuY3Rpb24gTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzdGVwRnVuY3Rp
b24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RlcEZ1
bmN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZXBGdW5jdGlvbikpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c2V0U3RlcEZ1bmN0aW9u
KE1UTDo6U3RlcEZ1bmN0aW9uIHN0ZXBGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlcEZ1bmN0aW9uXyksIHN0ZXBG
dW5jdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBzdGVwUmF0ZQorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RlcFJhdGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdGVwUmF0ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QnVmZmVy
TGF5b3V0RGVzY3JpcHRvcjo6c2V0U3RlcFJhdGUoTlM6OlVJbnRlZ2VyIHN0ZXBSYXRlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRT
dGVwUmF0ZV8pLCBzdGVwUmF0ZSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogTVRMOjpCdWZmZXJMYXlv
dXREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRM
QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqIE1UTDo6QnVmZmVyTGF5
b3V0RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5p
dDxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBv
YmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlckxheW91dERl
c2NyaXB0b3IqIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJ
bnRlZ2VyIGluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVm
ZmVyTGF5b3V0RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRl
eGVkU3Vic2NyaXB0XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRl
eGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogYnVm
ZmVyRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0
XyksIGJ1ZmZlckRlc2MsIGluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpBdHRyaWJ1dGVEZXNjcmlw
dG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QXR0cmli
dXRlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExBdHRyaWJ1dGVEZXNjcmlwdG9yKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNjcmlw
dG9yKiBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVy
dHk6IGZvcm1hdAorX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVGb3JtYXQgTVRMOjpBdHRyaWJ1
dGVEZXNjcmlwdG9yOjpmb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6QXR0cmlidXRlRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZvcm1h
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6c2V0
Rm9ybWF0KE1UTDo6QXR0cmlidXRlRm9ybWF0IGZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Rm9ybWF0XyksIGZvcm1hdCk7
Cit9CisKKy8vIHByb3BlcnR5OiBvZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OkF0dHJpYnV0ZURlc2NyaXB0b3I6Om9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9mZnNl
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6c2V0
T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9mZnNldF8pLCBvZmZzZXQpOworfQorCisv
LyBwcm9wZXJ0eTogYnVmZmVySW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkF0
dHJpYnV0ZURlc2NyaXB0b3I6OmJ1ZmZlckluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVm
ZmVySW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0
b3I6OnNldEJ1ZmZlckluZGV4KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVySW5k
ZXhfKSwgYnVmZmVySW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9J
TkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIE1UTDo6QXR0cmlidXRlRGVzY3Jp
cHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6
QXR0cmlidXRlRGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBdHRyaWJ1dGVEZXNj
cmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0
OgorX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yKiBNVEw6OkF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3IqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBpbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OkF0dHJp
YnV0ZURlc2NyaXB0b3IqIGF0dHJpYnV0ZURlc2MsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2Jq
ZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRyaWJ1dGVEZXNjLCBpbmRleCk7Cit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlN0YWdlSW5wdXRPdXRwdXRE
ZXNjcmlwdG9yKiBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0
b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IpKTsKK30K
KworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNj
cmlwdG9yKiBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yPigp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcgorX01U
TF9JTkxJTkUgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogTVRMOjpTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvcjo6c3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IoKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3Iq
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKSwgX01UTF9Q
UklWQVRFX1NFTChzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0
eTogbGF5b3V0cworX01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkq
IE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OmxheW91dHMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXlvdXRzKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBhdHRyaWJ1dGVzCitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSog
TVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6YXR0cmlidXRlcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJy
YXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0ZXMpKTsKK30KKworLy8gcHJvcGVy
dHk6IGluZGV4VHlwZQorX01UTF9JTkxJTkUgTVRMOjpJbmRleFR5cGUgTVRMOjpTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvcjo6aW5kZXhUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkluZGV4VHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRl
eFR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNj
cmlwdG9yOjpzZXRJbmRleFR5cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleFR5
cGVfKSwgaW5kZXhUeXBlKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4QnVmZmVySW5kZXgKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjpp
bmRleEJ1ZmZlckluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXhCdWZmZXJJbmRleCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6
OnNldEluZGV4QnVmZmVySW5kZXgoTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVySW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldElu
ZGV4QnVmZmVySW5kZXhfKSwgaW5kZXhCdWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogcmVz
ZXQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6cmVz
ZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChyZXNldCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFRleHR1cmUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFRleHR1cmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMmJhNDkwZTdhZjg3NWM2MjNkZjE4
MDAxOGM0MDE0Y2U0MDAzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMVGV4dHVyZS5ocHAKQEAgLTAsMCArMSw2NTggQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01U
TFRleHR1cmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJp
ZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExQaXhlbEZvcm1hdC5ocHAiCisjaW5j
bHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBwIgorI2luY2x1
ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlIDxJT1N1cmZhY2UvSU9TdXJmYWNlUmVmLmg+CisK
K25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFRleHR1cmVUeXBlKSB7
CisgICAgVGV4dHVyZVR5cGUxRCA9IDAsCisgICAgVGV4dHVyZVR5cGUxREFycmF5ID0gMSwKKyAg
ICBUZXh0dXJlVHlwZTJEID0gMiwKKyAgICBUZXh0dXJlVHlwZTJEQXJyYXkgPSAzLAorICAgIFRl
eHR1cmVUeXBlMkRNdWx0aXNhbXBsZSA9IDQsCisgICAgVGV4dHVyZVR5cGVDdWJlID0gNSwKKyAg
ICBUZXh0dXJlVHlwZUN1YmVBcnJheSA9IDYsCisgICAgVGV4dHVyZVR5cGUzRCA9IDcsCisgICAg
VGV4dHVyZVR5cGUyRE11bHRpc2FtcGxlQXJyYXkgPSA4LAorICAgIFRleHR1cmVUeXBlVGV4dHVy
ZUJ1ZmZlciA9IDksCit9OworCitfTVRMX0VOVU0odWludDhfdCwgVGV4dHVyZVN3aXp6bGUpIHsK
KyAgICBUZXh0dXJlU3dpenpsZVplcm8gPSAwLAorICAgIFRleHR1cmVTd2l6emxlT25lID0gMSwK
KyAgICBUZXh0dXJlU3dpenpsZVJlZCA9IDIsCisgICAgVGV4dHVyZVN3aXp6bGVHcmVlbiA9IDMs
CisgICAgVGV4dHVyZVN3aXp6bGVCbHVlID0gNCwKKyAgICBUZXh0dXJlU3dpenpsZUFscGhhID0g
NSwKK307CisKK3N0cnVjdCBUZXh0dXJlU3dpenpsZUNoYW5uZWxzCit7CisgICAgTVRMOjpUZXh0
dXJlU3dpenpsZSByZWQ7CisgICAgTVRMOjpUZXh0dXJlU3dpenpsZSBncmVlbjsKKyAgICBNVEw6
OlRleHR1cmVTd2l6emxlIGJsdWU7CisgICAgTVRMOjpUZXh0dXJlU3dpenpsZSBhbHBoYTsKK30g
X01UTF9QQUNLRUQ7CisKK2NsYXNzIFNoYXJlZFRleHR1cmVIYW5kbGUgOiBwdWJsaWMgTlM6OlJl
ZmVyZW5jaW5nPFNoYXJlZFRleHR1cmVIYW5kbGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIFNoYXJlZFRleHR1cmVIYW5kbGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBTaGFyZWRUZXh0
dXJlSGFuZGxlKiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgRGV2aWNlKiAgICAgICAgICAg
ICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAg
ICAgICAgICAgIGxhYmVsKCkgY29uc3Q7Cit9OworCitzdHJ1Y3QgU2hhcmVkVGV4dHVyZUhhbmRs
ZVByaXZhdGUKK3sKK30gX01UTF9QQUNLRUQ7CisKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIs
IFRleHR1cmVVc2FnZSkgeworICAgIFRleHR1cmVVc2FnZVVua25vd24gPSAwLAorICAgIFRleHR1
cmVVc2FnZVNoYWRlclJlYWQgPSAxLAorICAgIFRleHR1cmVVc2FnZVNoYWRlcldyaXRlID0gMiwK
KyAgICBUZXh0dXJlVXNhZ2VSZW5kZXJUYXJnZXQgPSA0LAorICAgIFRleHR1cmVVc2FnZVBpeGVs
Rm9ybWF0VmlldyA9IDE2LAorfTsKKworX01UTF9FTlVNKE5TOjpJbnRlZ2VyLCBUZXh0dXJlQ29t
cHJlc3Npb25UeXBlKSB7CisgICAgVGV4dHVyZUNvbXByZXNzaW9uVHlwZUxvc3NsZXNzID0gMCwK
KyAgICBUZXh0dXJlQ29tcHJlc3Npb25UeXBlTG9zc3kgPSAxLAorfTsKKworY2xhc3MgVGV4dHVy
ZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VGV4dHVyZURlc2NyaXB0b3I+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBhbGxvYygpOworCisg
ICAgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMg
Y2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIHRleHR1cmUyRERlc2NyaXB0b3IoTVRMOjpQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0
LCBib29sIG1pcG1hcHBlZCk7CisKKyAgICBzdGF0aWMgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3Iq
IHRleHR1cmVDdWJlRGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBOUzo6
VUludGVnZXIgc2l6ZSwgYm9vbCBtaXBtYXBwZWQpOworCisgICAgc3RhdGljIGNsYXNzIFRleHR1
cmVEZXNjcmlwdG9yKiB0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBOUzo6VUludGVnZXIgd2lkdGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIHJlc291
cmNlT3B0aW9ucywgTVRMOjpUZXh0dXJlVXNhZ2UgdXNhZ2UpOworCisgICAgTVRMOjpUZXh0dXJl
VHlwZSAgICAgICAgICAgICAgICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0VGV4dHVyZVR5cGUoTVRMOjpUZXh0dXJlVHlwZSB0ZXh0
dXJlVHlwZSk7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAgICAgIHBpeGVsRm9y
bWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQaXhl
bEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KTsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICAgd2lkdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFdpZHRoKE5TOjpVSW50ZWdlciB3aWR0aCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGVpZ2h0KE5TOjpVSW50ZWdlciBoZWlnaHQpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBkZXB0aCgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVwdGgoTlM6OlVJbnRlZ2VyIGRl
cHRoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWlwbWFwTGV2ZWxD
b3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWlw
bWFwTGV2ZWxDb3VudChOUzo6VUludGVnZXIgbWlwbWFwTGV2ZWxDb3VudCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIg
c2FtcGxlQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBhcnJh
eUxlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFycmF5TGVuZ3RoKTsKKworICAgIE1UTDo6UmVzb3Vy
Y2VPcHRpb25zICAgICAgICAgICAgcmVzb3VyY2VPcHRpb25zKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNvdXJjZU9wdGlvbnMoTVRMOjpSZXNvdXJj
ZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zKTsKKworICAgIE1UTDo6Q1BVQ2FjaGVNb2RlICAgICAg
ICAgICAgICAgY3B1Q2FjaGVNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRDcHVDYWNoZU1vZGUoTVRMOjpDUFVDYWNoZU1vZGUgY3B1Q2FjaGVNb2Rl
KTsKKworICAgIE1UTDo6U3RvcmFnZU1vZGUgICAgICAgICAgICAgICAgc3RvcmFnZU1vZGUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0b3JhZ2VNb2Rl
KE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpOworCisgICAgTVRMOjpIYXphcmRUcmFja2lu
Z01vZGUgICAgICAgICBoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldEhhemFyZFRyYWNraW5nTW9kZShNVEw6OkhhemFyZFRy
YWNraW5nTW9kZSBoYXphcmRUcmFja2luZ01vZGUpOworCisgICAgTVRMOjpUZXh0dXJlVXNhZ2Ug
ICAgICAgICAgICAgICB1c2FnZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0VXNhZ2UoTVRMOjpUZXh0dXJlVXNhZ2UgdXNhZ2UpOworCisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0dQVU9wdGltaXplZENvbnRlbnRzKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBbGxvd0dQVU9wdGlt
aXplZENvbnRlbnRzKGJvb2wgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cyk7CisKKyAgICBNVEw6
OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgICAgIHN3aXp6bGUoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN3aXp6bGUoTVRMOjpUZXh0dXJlU3dpenpsZUNo
YW5uZWxzIHN3aXp6bGUpOworfTsKKworY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8VGV4dHVyZSwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgUmVzb3VyY2Uq
ICAgICAgICAgICAgIHJvb3RSZXNvdXJjZSgpIGNvbnN0OworCisgICAgY2xhc3MgVGV4dHVyZSog
ICAgICAgICAgICAgIHBhcmVudFRleHR1cmUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICBwYXJlbnRSZWxhdGl2ZUxldmVsKCkgY29uc3Q7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgcGFyZW50UmVsYXRpdmVTbGljZSgpIGNvbnN0OworCisgICAg
Y2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgIGJ1ZmZlcigpIGNvbnN0OworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgIGJ1ZmZlck9mZnNldCgpIGNvbnN0OworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgIGJ1ZmZlckJ5dGVzUGVyUm93KCkgY29uc3Q7CisKKyAgICBJ
T1N1cmZhY2VSZWYgICAgICAgICAgICAgICAgaW9zdXJmYWNlKCkgY29uc3Q7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgaW9zdXJmYWNlUGxhbmUoKSBjb25zdDsKKworICAgIE1U
TDo6VGV4dHVyZVR5cGUgICAgICAgICAgICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworCisgICAgTVRM
OjpQaXhlbEZvcm1hdCAgICAgICAgICAgIHBpeGVsRm9ybWF0KCkgY29uc3Q7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgd2lkdGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICBoZWlnaHQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICBkZXB0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgIG1pcG1hcExldmVsQ291bnQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICBzYW1wbGVDb3VudCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgIGFycmF5TGVuZ3RoKCkgY29uc3Q7CisKKyAgICBNVEw6OlRleHR1cmVVc2FnZSAgICAg
ICAgICAgdXNhZ2UoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBz
aGFyZWFibGUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBmcmFt
ZWJ1ZmZlck9ubHkoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBm
aXJzdE1pcG1hcEluVGFpbCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgIHRhaWxTaXplSW5CeXRlcygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAg
ICAgICAgIGlzU3BhcnNlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAg
ICAgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cygpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgIGdldEJ5dGVzKGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50
ZWdlciBieXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVySW1hZ2UsIE1UTDo6UmVnaW9u
IHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVsLCBOUzo6VUludGVnZXIgc2xpY2UpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VSZWdpb24oTVRMOjpSZWdpb24gcmVn
aW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZSwgY29uc3Qgdm9pZCog
cGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgYnl0ZXNQ
ZXJJbWFnZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Qnl0ZXMoY29u
c3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93LCBNVEw6OlJlZ2lv
biByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZlbCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwbGFjZVJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBs
ZXZlbCwgY29uc3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93KTsK
KworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICBuZXdUZXh0dXJlVmlldyhNVEw6OlBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0KTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAg
ICBuZXdUZXh0dXJlVmlldyhNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBNVEw6OlRleHR1
cmVUeXBlIHRleHR1cmVUeXBlLCBOUzo6UmFuZ2UgbGV2ZWxSYW5nZSwgTlM6OlJhbmdlIHNsaWNl
UmFuZ2UpOworCisgICAgY2xhc3MgU2hhcmVkVGV4dHVyZUhhbmRsZSogIG5ld1NoYXJlZFRleHR1
cmVIYW5kbGUoKTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICByZW1vdGVTdG9y
YWdlVGV4dHVyZSgpIGNvbnN0OworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgICAgIG5l
d1JlbW90ZVRleHR1cmVWaWV3Rm9yRGV2aWNlKGNvbnN0IGNsYXNzIERldmljZSogZGV2aWNlKTsK
KworICAgIE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBzd2l6emxlKCkgY29uc3Q7CisKKyAg
ICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgbmV3VGV4dHVyZVZpZXcoTVRMOjpQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSwgTlM6OlJhbmdl
IGxldmVsUmFuZ2UsIE5TOjpSYW5nZSBzbGljZVJhbmdlLCBNVEw6OlRleHR1cmVTd2l6emxlQ2hh
bm5lbHMgc3dpenpsZSk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGUqIE1UTDo6U2hhcmVkVGV4dHVyZUhhbmRs
ZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlNoYXJlZFRl
eHR1cmVIYW5kbGU+KF9NVExfUFJJVkFURV9DTFMoTVRMU2hhcmVkVGV4dHVyZUhhbmRsZSkpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6U2hhcmVkVGV4dHVyZUhhbmRs
ZSogTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGU+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OlNoYXJlZFRleHR1cmVIYW5k
bGU6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6U2hhcmVkVGV4dHVyZUhh
bmRsZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBNVEw6
OlRleHR1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6VGV4dHVyZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVGV4dHVyZURl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRleHR1
cmVEZXNjcmlwdG9yKiBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlRleHR1cmVEZXNjcmlwdG9yPigpOworfQorCisvLyBz
dGF0aWMgbWV0aG9kOiB0ZXh0dXJlMkREZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0OndpZHRoOmhl
aWdodDptaXBtYXBwZWQ6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBNVEw6
OlRleHR1cmVEZXNjcmlwdG9yOjp0ZXh0dXJlMkREZXNjcmlwdG9yKE1UTDo6UGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwgYm9v
bCBtaXBtYXBwZWQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0
dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMVGV4dHVyZURlc2NyaXB0b3IpLCBf
TVRMX1BSSVZBVEVfU0VMKHRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXRfd2lkdGhf
aGVpZ2h0X21pcG1hcHBlZF8pLCBwaXhlbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgbWlwbWFwcGVk
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogdGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0aFBpeGVs
Rm9ybWF0OnNpemU6bWlwbWFwcGVkOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlRGVzY3JpcHRv
ciogTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6dGV4dHVyZUN1YmVEZXNjcmlwdG9yKE1UTDo6UGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciBzaXplLCBib29sIG1pcG1hcHBlZCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVEZXNjcmlwdG9y
Kj4oX01UTF9QUklWQVRFX0NMUyhNVExUZXh0dXJlRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9T
RUwodGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0X3NpemVfbWlwbWFwcGVkXyks
IHBpeGVsRm9ybWF0LCBzaXplLCBtaXBtYXBwZWQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiB0
ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdDp3aWR0aDpyZXNvdXJjZU9wdGlv
bnM6dXNhZ2U6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBNVEw6OlRleHR1
cmVEZXNjcmlwdG9yOjp0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBOUzo6VUludGVnZXIgd2lkdGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIHJlc291
cmNlT3B0aW9ucywgTVRMOjpUZXh0dXJlVXNhZ2UgdXNhZ2UpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMo
TVRMVGV4dHVyZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVCdWZmZXJEZXNj
cmlwdG9yV2l0aFBpeGVsRm9ybWF0X3dpZHRoX3Jlc291cmNlT3B0aW9uc191c2FnZV8pLCBwaXhl
bEZvcm1hdCwgd2lkdGgsIHJlc291cmNlT3B0aW9ucywgdXNhZ2UpOworfQorCisvLyBwcm9wZXJ0
eTogdGV4dHVyZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVR5cGUgTVRMOjpUZXh0dXJl
RGVzY3JpcHRvcjo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVy
ZVR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpz
ZXRUZXh0dXJlVHlwZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXh0dXJlVHlw
ZV8pLCB0ZXh0dXJlVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBwaXhlbEZvcm1hdAorX01UTF9J
TkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpwaXhlbEZvcm1h
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXhlbEZv
cm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaXhlbEZvcm1hdCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFBpeGVsRm9ybWF0KE1UTDo6UGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFBpeGVsRm9ybWF0XyksIHBpeGVsRm9ybWF0KTsKK30K
KworLy8gcHJvcGVydHk6IHdpZHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0
dXJlRGVzY3JpcHRvcjo6d2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3aWR0aCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFdpZHRoKE5TOjpV
SW50ZWdlciB3aWR0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0V2lkdGhfKSwgd2lkdGgpOworfQorCisvLyBwcm9wZXJ0eTogaGVp
Z2h0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6aGVp
Z2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaGVpZ2h0KSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0SGVpZ2h0KE5TOjpVSW50ZWdlciBoZWlnaHQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEhlaWdodF8pLCBoZWlnaHQpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpkZXB0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGRlcHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJl
RGVzY3JpcHRvcjo6c2V0RGVwdGgoTlM6OlVJbnRlZ2VyIGRlcHRoKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aF8pLCBkZXB0
aCk7Cit9CisKKy8vIHByb3BlcnR5OiBtaXBtYXBMZXZlbENvdW50CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6bWlwbWFwTGV2ZWxDb3VudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG1pcG1hcExldmVsQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRNaXBtYXBMZXZlbENvdW50KE5TOjpVSW50ZWdl
ciBtaXBtYXBMZXZlbENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRNaXBtYXBMZXZlbENvdW50XyksIG1pcG1hcExldmVsQ291
bnQpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzYW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNhbXBsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJl
RGVzY3JpcHRvcjo6c2V0U2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRT
YW1wbGVDb3VudF8pLCBzYW1wbGVDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBhcnJheUxlbmd0
aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmFycmF5
TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRBcnJheUxlbmd0aChOUzo6VUlu
dGVnZXIgYXJyYXlMZW5ndGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEFycmF5TGVuZ3RoXyksIGFycmF5TGVuZ3RoKTsKK30KKwor
Ly8gcHJvcGVydHk6IHJlc291cmNlT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZU9w
dGlvbnMgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6cmVzb3VyY2VPcHRpb25zKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlT3B0aW9ucz4odGhp
cywgX01UTF9QUklWQVRFX1NFTChyZXNvdXJjZU9wdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRSZXNvdXJjZU9wdGlvbnMoTVRMOjpSZXNv
dXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZXNvdXJjZU9wdGlvbnNfKSwgcmVzb3Vy
Y2VPcHRpb25zKTsKK30KKworLy8gcHJvcGVydHk6IGNwdUNhY2hlTW9kZQorX01UTF9JTkxJTkUg
TVRMOjpDUFVDYWNoZU1vZGUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6Y3B1Q2FjaGVNb2RlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNQVUNhY2hlTW9k
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChjcHVDYWNoZU1vZGUpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRDcHVDYWNoZU1vZGUoTVRMOjpDUFVD
YWNoZU1vZGUgY3B1Q2FjaGVNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDcHVDYWNoZU1vZGVfKSwgY3B1Q2FjaGVNb2RlKTsK
K30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VNb2RlCitfTVRMX0lOTElORSBNVEw6OlN0b3JhZ2VN
b2RlIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JhZ2VNb2RlPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHN0b3JhZ2VNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0
dXJlRGVzY3JpcHRvcjo6c2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBzdG9yYWdlTW9k
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0U3RvcmFnZU1vZGVfKSwgc3RvcmFnZU1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogaGF6
YXJkVHJhY2tpbmdNb2RlCitfTVRMX0lOTElORSBNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBNVEw6
OlRleHR1cmVEZXNjcmlwdG9yOjpoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGhhemFyZFRyYWNraW5nTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldEhhemFyZFRyYWNraW5nTW9kZShNVEw6Okhh
emFyZFRyYWNraW5nTW9kZSBoYXphcmRUcmFja2luZ01vZGUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEhhemFyZFRyYWNraW5nTW9k
ZV8pLCBoYXphcmRUcmFja2luZ01vZGUpOworfQorCisvLyBwcm9wZXJ0eTogdXNhZ2UKK19NVExf
SU5MSU5FIE1UTDo6VGV4dHVyZVVzYWdlIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnVzYWdlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVVc2Fn
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2FnZSkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFVzYWdlKE1UTDo6VGV4dHVyZVVzYWdlIHVzYWdl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRVc2FnZV8pLCB1c2FnZSk7Cit9CisKKy8vIHByb3BlcnR5OiBhbGxvd0dQVU9wdGltaXpl
ZENvbnRlbnRzCitfTVRMX0lOTElORSBib29sIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmFsbG93
R1BVT3B0aW1pemVkQ29udGVudHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWxsb3dHUFVPcHRpbWl6ZWRDb250
ZW50cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNl
dEFsbG93R1BVT3B0aW1pemVkQ29udGVudHMoYm9vbCBhbGxvd0dQVU9wdGltaXplZENvbnRlbnRz
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRBbGxvd0dQVU9wdGltaXplZENvbnRlbnRzXyksIGFsbG93R1BVT3B0aW1pemVkQ29udGVu
dHMpOworfQorCisvLyBwcm9wZXJ0eTogc3dpenpsZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJl
U3dpenpsZUNoYW5uZWxzIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnN3aXp6bGUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFu
bmVscz4odGhpcywgX01UTF9QUklWQVRFX1NFTChzd2l6emxlKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0U3dpenpsZShNVEw6OlRleHR1cmVTd2l6
emxlQ2hhbm5lbHMgc3dpenpsZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3dpenpsZV8pLCBzd2l6emxlKTsKK30KKworLy8gcHJv
cGVydHk6IHJvb3RSZXNvdXJjZQorX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZSogTVRMOjpUZXh0
dXJlOjpyb290UmVzb3VyY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6UmVzb3VyY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJvb3RSZXNvdXJjZSkp
OworfQorCisvLyBwcm9wZXJ0eTogcGFyZW50VGV4dHVyZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0
dXJlKiBNVEw6OlRleHR1cmU6OnBhcmVudFRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
cGFyZW50VGV4dHVyZSkpOworfQorCisvLyBwcm9wZXJ0eTogcGFyZW50UmVsYXRpdmVMZXZlbAor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6cGFyZW50UmVsYXRpdmVMZXZl
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhcmVudFJlbGF0aXZlTGV2ZWwpKTsKK30KKworLy8g
cHJvcGVydHk6IHBhcmVudFJlbGF0aXZlU2xpY2UKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OlRleHR1cmU6OnBhcmVudFJlbGF0aXZlU2xpY2UoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChw
YXJlbnRSZWxhdGl2ZVNsaWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXIKK19NVExfSU5M
SU5FIE1UTDo6QnVmZmVyKiBNVEw6OlRleHR1cmU6OmJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGJ1ZmZlcikpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyT2Zmc2V0CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjpidWZmZXJPZmZzZXQoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChidWZmZXJPZmZzZXQpKTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckJ5dGVzUGVy
Um93CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjpidWZmZXJCeXRlc1Bl
clJvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlckJ5dGVzUGVyUm93KSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpb3N1cmZhY2UKK19NVExfSU5MSU5FIElPU3VyZmFjZVJlZiBNVEw6OlRleHR1
cmU6Omlvc3VyZmFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
SU9TdXJmYWNlUmVmPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlvc3VyZmFjZSkpOworfQorCisv
LyBwcm9wZXJ0eTogaW9zdXJmYWNlUGxhbmUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OlRleHR1cmU6Omlvc3VyZmFjZVBsYW5lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW9zdXJmYWNl
UGxhbmUpKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVUeXBlCitfTVRMX0lOTElORSBNVEw6
OlRleHR1cmVUeXBlIE1UTDo6VGV4dHVyZTo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodGV4dHVyZVR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHBpeGVsRm9ybWF0Citf
TVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6VGV4dHVyZTo6cGl4ZWxGb3JtYXQoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3JtYXQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGl4ZWxGb3JtYXQpKTsKK30KKworLy8gcHJvcGVydHk6
IHdpZHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjp3aWR0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHdpZHRoKSk7Cit9CisKKy8vIHByb3BlcnR5OiBoZWlnaHQKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OmhlaWdodCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGhlaWdodCkpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGgKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OmRlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZGVwdGgpKTsKK30KKworLy8gcHJvcGVydHk6IG1pcG1hcExldmVsQ291bnQKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6Om1pcG1hcExldmVsQ291bnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChtaXBtYXBMZXZlbENvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVD
b3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6c2FtcGxlQ291bnQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTog
YXJyYXlMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OmFycmF5
TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KKworLy8gcHJv
cGVydHk6IHVzYWdlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVVc2FnZSBNVEw6OlRleHR1cmU6
OnVzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRl
eHR1cmVVc2FnZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2FnZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogc2hhcmVhYmxlCitfTVRMX0lOTElORSBib29sIE1UTDo6VGV4dHVyZTo6c2hhcmVhYmxl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGlzU2hhcmVhYmxlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFtZWJ1
ZmZlck9ubHkKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJlOjpmcmFtZWJ1ZmZlck9ubHko
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaXNGcmFtZWJ1ZmZlck9ubHkpKTsKK30KKworLy8gcHJvcGVydHk6IGZp
cnN0TWlwbWFwSW5UYWlsCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjpm
aXJzdE1pcG1hcEluVGFpbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZpcnN0TWlwbWFwSW5UYWls
KSk7Cit9CisKKy8vIHByb3BlcnR5OiB0YWlsU2l6ZUluQnl0ZXMKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlRleHR1cmU6OnRhaWxTaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHRhaWxTaXplSW5CeXRlcykpOworfQorCisvLyBwcm9wZXJ0eTogaXNTcGFyc2UKK19NVExf
SU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJlOjppc1NwYXJzZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1NwYXJz
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cworX01UTF9J
TkxJTkUgYm9vbCBNVEw6OlRleHR1cmU6OmFsbG93R1BVT3B0aW1pemVkQ29udGVudHMoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cykpOworfQorCisvLyBtZXRob2Q6IGdl
dEJ5dGVzOmJ5dGVzUGVyUm93OmJ5dGVzUGVySW1hZ2U6ZnJvbVJlZ2lvbjptaXBtYXBMZXZlbDpz
bGljZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlOjpnZXRCeXRlcyhjb25zdCB2b2lk
KiBwaXhlbEJ5dGVzLCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBieXRl
c1BlckltYWdlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZlbCwgTlM6OlVJ
bnRlZ2VyIHNsaWNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChnZXRCeXRlc19ieXRlc1BlclJvd19ieXRlc1BlckltYWdlX2Zyb21SZWdp
b25fbWlwbWFwTGV2ZWxfc2xpY2VfKSwgcGl4ZWxCeXRlcywgYnl0ZXNQZXJSb3csIGJ5dGVzUGVy
SW1hZ2UsIHJlZ2lvbiwgbGV2ZWwsIHNsaWNlKTsKK30KKworLy8gbWV0aG9kOiByZXBsYWNlUmVn
aW9uOm1pcG1hcExldmVsOnNsaWNlOndpdGhCeXRlczpieXRlc1BlclJvdzpieXRlc1BlckltYWdl
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmU6OnJlcGxhY2VSZWdpb24oTVRMOjpSZWdp
b24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZSwgY29uc3Qg
dm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIg
Ynl0ZXNQZXJJbWFnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocmVwbGFjZVJlZ2lvbl9taXBtYXBMZXZlbF9zbGljZV93aXRoQnl0ZXNf
Ynl0ZXNQZXJSb3dfYnl0ZXNQZXJJbWFnZV8pLCByZWdpb24sIGxldmVsLCBzbGljZSwgcGl4ZWxC
eXRlcywgYnl0ZXNQZXJSb3csIGJ5dGVzUGVySW1hZ2UpOworfQorCisvLyBtZXRob2Q6IGdldEJ5
dGVzOmJ5dGVzUGVyUm93OmZyb21SZWdpb246bWlwbWFwTGV2ZWw6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6VGV4dHVyZTo6Z2V0Qnl0ZXMoY29uc3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRl
Z2VyIGJ5dGVzUGVyUm93LCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZlbCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
Z2V0Qnl0ZXNfYnl0ZXNQZXJSb3dfZnJvbVJlZ2lvbl9taXBtYXBMZXZlbF8pLCBwaXhlbEJ5dGVz
LCBieXRlc1BlclJvdywgcmVnaW9uLCBsZXZlbCk7Cit9CisKKy8vIG1ldGhvZDogcmVwbGFjZVJl
Z2lvbjptaXBtYXBMZXZlbDp3aXRoQnl0ZXM6Ynl0ZXNQZXJSb3c6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6VGV4dHVyZTo6cmVwbGFjZVJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50
ZWdlciBsZXZlbCwgY29uc3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVy
Um93KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChyZXBsYWNlUmVnaW9uX21pcG1hcExldmVsX3dpdGhCeXRlc19ieXRlc1BlclJvd18pLCBy
ZWdpb24sIGxldmVsLCBwaXhlbEJ5dGVzLCBieXRlc1BlclJvdyk7Cit9CisKKy8vIG1ldGhvZDog
bmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUq
IE1UTDo6VGV4dHVyZTo6bmV3VGV4dHVyZVZpZXcoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0XyksIHBpeGVs
Rm9ybWF0KTsKK30KKworLy8gbWV0aG9kOiBuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdDp0
ZXh0dXJlVHlwZTpsZXZlbHM6c2xpY2VzOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6
OlRleHR1cmU6Om5ld1RleHR1cmVWaWV3KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE1U
TDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUsIE5TOjpSYW5nZSBsZXZlbFJhbmdlLCBOUzo6UmFu
Z2Ugc2xpY2VSYW5nZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRl
eHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9y
bWF0X3RleHR1cmVUeXBlX2xldmVsc19zbGljZXNfKSwgcGl4ZWxGb3JtYXQsIHRleHR1cmVUeXBl
LCBsZXZlbFJhbmdlLCBzbGljZVJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRUZXh0
dXJlSGFuZGxlCitfTVRMX0lOTElORSBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGUqIE1UTDo6VGV4
dHVyZTo6bmV3U2hhcmVkVGV4dHVyZUhhbmRsZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuZXdTaGFyZWRUZXh0dXJlSGFuZGxlKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZW1vdGVTdG9y
YWdlVGV4dHVyZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OlRleHR1cmU6OnJlbW90
ZVN0b3JhZ2VUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlbW90ZVN0b3JhZ2VUZXh0
dXJlKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVtb3RlVGV4dHVyZVZpZXdGb3JEZXZpY2U6Citf
TVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6VGV4dHVyZTo6bmV3UmVtb3RlVGV4dHVyZVZp
ZXdGb3JEZXZpY2UoY29uc3QgTVRMOjpEZXZpY2UqIGRldmljZSkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1JlbW90ZVRleHR1cmVWaWV3Rm9yRGV2aWNlXyksIGRldmljZSk7Cit9CisKKy8vIHByb3BlcnR5
OiBzd2l6emxlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgTVRMOjpU
ZXh0dXJlOjpzd2l6emxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3dp
enpsZSkpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0OnRl
eHR1cmVUeXBlOmxldmVsczpzbGljZXM6c3dpenpsZToKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVy
ZSogTVRMOjpUZXh0dXJlOjpuZXdUZXh0dXJlVmlldyhNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlLCBOUzo6UmFuZ2UgbGV2ZWxSYW5nZSwg
TlM6OlJhbmdlIHNsaWNlUmFuZ2UsIE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBzd2l6emxl
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXRfdGV4dHVyZVR5
cGVfbGV2ZWxzX3NsaWNlc19zd2l6emxlXyksIHBpeGVsRm9ybWF0LCB0ZXh0dXJlVHlwZSwgbGV2
ZWxSYW5nZSwgc2xpY2VSYW5nZSwgc3dpenpsZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVHlwZXMuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjhjNGQ5YTJj
MzhhNTllNTQ5M2NlODg5ZDBkNWUyZDM3YWVhOGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcApAQCAtMCwwICsxLDE2
MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwor
Ly8gTWV0YWwvTVRMVHlwZXMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJ
bmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRM
SGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisK
K25hbWVzcGFjZSBNVEwKK3sKK3N0cnVjdCBPcmlnaW4KK3sKKyAgICBPcmlnaW4oKSA9IGRlZmF1
bHQ7CisKKyAgICBPcmlnaW4oTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUlu
dGVnZXIgeik7CisKKyAgICBzdGF0aWMgT3JpZ2luIE1ha2UoTlM6OlVJbnRlZ2VyIHgsIE5TOjpV
SW50ZWdlciB5LCBOUzo6VUludGVnZXIgeik7CisKKyAgICBOUzo6VUludGVnZXIgIHg7CisgICAg
TlM6OlVJbnRlZ2VyICB5OworICAgIE5TOjpVSW50ZWdlciAgejsKK30gX01UTF9QQUNLRUQ7CisK
K3N0cnVjdCBTaXplCit7CisgICAgU2l6ZSgpID0gZGVmYXVsdDsKKworICAgIFNpemUoTlM6OlVJ
bnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpOwor
CisgICAgc3RhdGljIFNpemUgIE1ha2UoTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIg
aGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpOworCisgICAgTlM6OlVJbnRlZ2VyIHdpZHRoOwor
ICAgIE5TOjpVSW50ZWdlciBoZWlnaHQ7CisgICAgTlM6OlVJbnRlZ2VyIGRlcHRoOworfSBfTVRM
X1BBQ0tFRDsKKworc3RydWN0IFJlZ2lvbgoreworICAgIFJlZ2lvbigpID0gZGVmYXVsdDsKKwor
ICAgIFJlZ2lvbihOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHdpZHRoKTsKKworICAgIFJl
Z2lvbihOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB3aWR0aCwg
TlM6OlVJbnRlZ2VyIGhlaWdodCk7CisKKyAgICBSZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5TOjpV
SW50ZWdlciB5LCBOUzo6VUludGVnZXIgeiwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVn
ZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpOworCisgICAgc3RhdGljIFJlZ2lvbiBNYWtl
MUQoTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB3aWR0aCk7CisKKyAgICBzdGF0aWMgUmVn
aW9uIE1ha2UyRChOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB3
aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCk7CisKKyAgICBzdGF0aWMgUmVnaW9uIE1ha2UzRChO
Uzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6LCBOUzo6VUludGVn
ZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIE5TOjpVSW50ZWdlciBkZXB0aCk7CisKKyAg
ICBNVEw6Ok9yaWdpbiAgIG9yaWdpbjsKKyAgICBNVEw6OlNpemUgICAgIHNpemU7Cit9IF9NVExf
UEFDS0VEOworCitzdHJ1Y3QgU2FtcGxlUG9zaXRpb247CisKK3VzaW5nIENvb3JkaW5hdGUyRCA9
IFNhbXBsZVBvc2l0aW9uOworCitzdHJ1Y3QgU2FtcGxlUG9zaXRpb24KK3sKKyAgICBTYW1wbGVQ
b3NpdGlvbigpID0gZGVmYXVsdDsKKworICAgIFNhbXBsZVBvc2l0aW9uKGZsb2F0IF94LCBmbG9h
dCBfeSk7CisKKyAgICBzdGF0aWMgU2FtcGxlUG9zaXRpb24gTWFrZShmbG9hdCB4LCBmbG9hdCB5
KTsKKworICAgIGZsb2F0ICAgICAgICAgICAgICAgICB4OworICAgIGZsb2F0ICAgICAgICAgICAg
ICAgICB5OworfSBfTVRMX1BBQ0tFRDsKKworfQorCitfTVRMX0lOTElORSBNVEw6Ok9yaWdpbjo6
T3JpZ2luKE5TOjpVSW50ZWdlciBfeCwgTlM6OlVJbnRlZ2VyIF95LCBOUzo6VUludGVnZXIgX3op
CisgICAgOiB4KF94KQorICAgICwgeShfeSkKKyAgICAsIHooX3opCit7Cit9CisKK19NVExfSU5M
SU5FIE1UTDo6T3JpZ2luIE1UTDo6T3JpZ2luOjpNYWtlKE5TOjpVSW50ZWdlciB4LCBOUzo6VUlu
dGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHopCit7CisgICAgcmV0dXJuIE9yaWdpbih4LCB5LCB6KTsK
K30KKworX01UTF9JTkxJTkUgTVRMOjpTaXplOjpTaXplKE5TOjpVSW50ZWdlciBfd2lkdGgsIE5T
OjpVSW50ZWdlciBfaGVpZ2h0LCBOUzo6VUludGVnZXIgX2RlcHRoKQorICAgIDogd2lkdGgoX3dp
ZHRoKQorICAgICwgaGVpZ2h0KF9oZWlnaHQpCisgICAgLCBkZXB0aChfZGVwdGgpCit7Cit9CisK
K19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlNpemU6Ok1ha2UoTlM6OlVJbnRlZ2VyIHdpZHRo
LCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpCit7CisgICAgcmV0dXJu
IFNpemUod2lkdGgsIGhlaWdodCwgZGVwdGgpOworfQorCitfTVRMX0lOTElORSBNVEw6OlJlZ2lv
bjo6UmVnaW9uKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgd2lkdGgpCisgICAgOiBvcmln
aW4oeCwgMCwgMCkKKyAgICAsIHNpemUod2lkdGgsIDEsIDEpCit7Cit9CisKK19NVExfSU5MSU5F
IE1UTDo6UmVnaW9uOjpSZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6
VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpCisgICAgOiBvcmlnaW4oeCwgeSwg
MCkKKyAgICAsIHNpemUod2lkdGgsIGhlaWdodCwgMSkKK3sKK30KKworX01UTF9JTkxJTkUgTVRM
OjpSZWdpb246OlJlZ2lvbihOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50
ZWdlciB6LCBOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIE5TOjpVSW50
ZWdlciBkZXB0aCkKKyAgICA6IG9yaWdpbih4LCB5LCB6KQorICAgICwgc2l6ZSh3aWR0aCwgaGVp
Z2h0LCBkZXB0aCkKK3sKK30KKworX01UTF9JTkxJTkUgTVRMOjpSZWdpb24gTVRMOjpSZWdpb246
Ok1ha2UxRChOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHdpZHRoKQoreworICAgIHJldHVy
biBSZWdpb24oeCwgd2lkdGgpOworfQorCitfTVRMX0lOTElORSBNVEw6OlJlZ2lvbiBNVEw6OlJl
Z2lvbjo6TWFrZTJEKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2Vy
IHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KQoreworICAgIHJldHVybiBSZWdpb24oeCwgeSwg
d2lkdGgsIGhlaWdodCk7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6UmVnaW9uIE1UTDo6UmVnaW9u
OjpNYWtlM0QoTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgeiwg
TlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVw
dGgpCit7CisgICAgcmV0dXJuIFJlZ2lvbih4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7
Cit9CisKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlUG9zaXRpb246OlNhbXBsZVBvc2l0aW9uKGZs
b2F0IF94LCBmbG9hdCBfeSkKKyAgICA6IHgoX3gpCisgICAgLCB5KF95KQoreworfQorCitfTVRM
X0lOTElORSBNVEw6OlNhbXBsZVBvc2l0aW9uIE1UTDo6U2FtcGxlUG9zaXRpb246Ok1ha2UoZmxv
YXQgeCwgZmxvYXQgeSkKK3sKKyAgICByZXR1cm4gU2FtcGxlUG9zaXRpb24oeCwgeSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmVydGV4
RGVzY3JpcHRvci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
VmVydGV4RGVzY3JpcHRvci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE3ZjgyM2FhMGFmOTUzMGIyNWMzMzFh
OWY1NmQxMjU2Njc2Mzg1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcApAQCAtMCwwICsxLDM0NCBA
QAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8g
TWV0YWwvTVRMVmVydGV4RGVzY3JpcHRvci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNs
dWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisj
aW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTFZlcnRl
eERlc2NyaXB0b3IuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRl
Z2VyLCBWZXJ0ZXhGb3JtYXQpIHsKKyAgICBWZXJ0ZXhGb3JtYXRJbnZhbGlkID0gMCwKKyAgICBW
ZXJ0ZXhGb3JtYXRVQ2hhcjIgPSAxLAorICAgIFZlcnRleEZvcm1hdFVDaGFyMyA9IDIsCisgICAg
VmVydGV4Rm9ybWF0VUNoYXI0ID0gMywKKyAgICBWZXJ0ZXhGb3JtYXRDaGFyMiA9IDQsCisgICAg
VmVydGV4Rm9ybWF0Q2hhcjMgPSA1LAorICAgIFZlcnRleEZvcm1hdENoYXI0ID0gNiwKKyAgICBW
ZXJ0ZXhGb3JtYXRVQ2hhcjJOb3JtYWxpemVkID0gNywKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hhcjNO
b3JtYWxpemVkID0gOCwKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hhcjROb3JtYWxpemVkID0gOSwKKyAg
ICBWZXJ0ZXhGb3JtYXRDaGFyMk5vcm1hbGl6ZWQgPSAxMCwKKyAgICBWZXJ0ZXhGb3JtYXRDaGFy
M05vcm1hbGl6ZWQgPSAxMSwKKyAgICBWZXJ0ZXhGb3JtYXRDaGFyNE5vcm1hbGl6ZWQgPSAxMiwK
KyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQyID0gMTMsCisgICAgVmVydGV4Rm9ybWF0VVNob3J0MyA9
IDE0LAorICAgIFZlcnRleEZvcm1hdFVTaG9ydDQgPSAxNSwKKyAgICBWZXJ0ZXhGb3JtYXRTaG9y
dDIgPSAxNiwKKyAgICBWZXJ0ZXhGb3JtYXRTaG9ydDMgPSAxNywKKyAgICBWZXJ0ZXhGb3JtYXRT
aG9ydDQgPSAxOCwKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQyTm9ybWFsaXplZCA9IDE5LAorICAg
IFZlcnRleEZvcm1hdFVTaG9ydDNOb3JtYWxpemVkID0gMjAsCisgICAgVmVydGV4Rm9ybWF0VVNo
b3J0NE5vcm1hbGl6ZWQgPSAyMSwKKyAgICBWZXJ0ZXhGb3JtYXRTaG9ydDJOb3JtYWxpemVkID0g
MjIsCisgICAgVmVydGV4Rm9ybWF0U2hvcnQzTm9ybWFsaXplZCA9IDIzLAorICAgIFZlcnRleEZv
cm1hdFNob3J0NE5vcm1hbGl6ZWQgPSAyNCwKKyAgICBWZXJ0ZXhGb3JtYXRIYWxmMiA9IDI1LAor
ICAgIFZlcnRleEZvcm1hdEhhbGYzID0gMjYsCisgICAgVmVydGV4Rm9ybWF0SGFsZjQgPSAyNywK
KyAgICBWZXJ0ZXhGb3JtYXRGbG9hdCA9IDI4LAorICAgIFZlcnRleEZvcm1hdEZsb2F0MiA9IDI5
LAorICAgIFZlcnRleEZvcm1hdEZsb2F0MyA9IDMwLAorICAgIFZlcnRleEZvcm1hdEZsb2F0NCA9
IDMxLAorICAgIFZlcnRleEZvcm1hdEludCA9IDMyLAorICAgIFZlcnRleEZvcm1hdEludDIgPSAz
MywKKyAgICBWZXJ0ZXhGb3JtYXRJbnQzID0gMzQsCisgICAgVmVydGV4Rm9ybWF0SW50NCA9IDM1
LAorICAgIFZlcnRleEZvcm1hdFVJbnQgPSAzNiwKKyAgICBWZXJ0ZXhGb3JtYXRVSW50MiA9IDM3
LAorICAgIFZlcnRleEZvcm1hdFVJbnQzID0gMzgsCisgICAgVmVydGV4Rm9ybWF0VUludDQgPSAz
OSwKKyAgICBWZXJ0ZXhGb3JtYXRJbnQxMDEwMTAyTm9ybWFsaXplZCA9IDQwLAorICAgIFZlcnRl
eEZvcm1hdFVJbnQxMDEwMTAyTm9ybWFsaXplZCA9IDQxLAorICAgIFZlcnRleEZvcm1hdFVDaGFy
NE5vcm1hbGl6ZWRfQkdSQSA9IDQyLAorICAgIFZlcnRleEZvcm1hdFVDaGFyID0gNDUsCisgICAg
VmVydGV4Rm9ybWF0Q2hhciA9IDQ2LAorICAgIFZlcnRleEZvcm1hdFVDaGFyTm9ybWFsaXplZCA9
IDQ3LAorICAgIFZlcnRleEZvcm1hdENoYXJOb3JtYWxpemVkID0gNDgsCisgICAgVmVydGV4Rm9y
bWF0VVNob3J0ID0gNDksCisgICAgVmVydGV4Rm9ybWF0U2hvcnQgPSA1MCwKKyAgICBWZXJ0ZXhG
b3JtYXRVU2hvcnROb3JtYWxpemVkID0gNTEsCisgICAgVmVydGV4Rm9ybWF0U2hvcnROb3JtYWxp
emVkID0gNTIsCisgICAgVmVydGV4Rm9ybWF0SGFsZiA9IDUzLAorfTsKKworX01UTF9FTlVNKE5T
OjpVSW50ZWdlciwgVmVydGV4U3RlcEZ1bmN0aW9uKSB7CisgICAgVmVydGV4U3RlcEZ1bmN0aW9u
Q29uc3RhbnQgPSAwLAorICAgIFZlcnRleFN0ZXBGdW5jdGlvblBlclZlcnRleCA9IDEsCisgICAg
VmVydGV4U3RlcEZ1bmN0aW9uUGVySW5zdGFuY2UgPSAyLAorICAgIFZlcnRleFN0ZXBGdW5jdGlv
blBlclBhdGNoID0gMywKKyAgICBWZXJ0ZXhTdGVwRnVuY3Rpb25QZXJQYXRjaENvbnRyb2xQb2lu
dCA9IDQsCit9OworCitjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yIDogcHVibGlj
IE5TOjpDb3B5aW5nPFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRTdHJpZGUoTlM6OlVJbnRlZ2VyIHN0cmlkZSk7CisKKyAgICBNVEw6OlZlcnRleFN0ZXBGdW5j
dGlvbiAgICAgICAgICAgICAgICAgICAgc3RlcEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZXBGdW5jdGlvbihNVEw6
OlZlcnRleFN0ZXBGdW5jdGlvbiBzdGVwRnVuY3Rpb24pOworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBSYXRlKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZXBSYXRlKE5TOjpVSW50
ZWdlciBzdGVwUmF0ZSk7Cit9OworCitjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9y
QXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0
RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0
RGVzY3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgVmVydGV4QnVmZmVy
TGF5b3V0RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCk7
CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRPYmplY3QoY29uc3QgY2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogYnVmZmVy
RGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2NsYXNzIFZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcj4K
K3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciog
YWxsb2MoKTsKKworICAgIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IqICAgICAgICBp
bml0KCk7CisKKyAgICBNVEw6OlZlcnRleEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgZm9y
bWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEZvcm1hdChNVEw6OlZlcnRleEZvcm1hdCBmb3JtYXQpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPZmZzZXQoTlM6OlVJbnRlZ2VyIG9m
ZnNldCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVm
ZmVySW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0QnVmZmVySW5kZXgoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKK307CisKK2Ns
YXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNp
bmc8VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRp
YyBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBj
bGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAg
ICBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6
OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlw
dG9yKiBhdHRyaWJ1dGVEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpOworfTsKKworY2xhc3MgVmVy
dGV4RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxWZXJ0ZXhEZXNjcmlwdG9yPgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBWZXJ0ZXhEZXNjcmlwdG9yKiAgICAgICAgICAgYWxs
b2MoKTsKKworICAgIGNsYXNzIFZlcnRleERlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgaW5p
dCgpOworCisgICAgc3RhdGljIGNsYXNzIFZlcnRleERlc2NyaXB0b3IqICAgICAgICAgICB2ZXJ0
ZXhEZXNjcmlwdG9yKCk7CisKKyAgICBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9y
QXJyYXkqIGxheW91dHMoKSBjb25zdDsKKworICAgIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3JBcnJheSogICAgYXR0cmlidXRlcygpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yKiBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9y
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IpKTsKK30K
KworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERl
c2NyaXB0b3IqIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6aW5pdCgpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc3RyaWRlCitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzdHJpZGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdHJpZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRleEJ1
ZmZlckxheW91dERlc2NyaXB0b3I6OnNldFN0cmlkZShOUzo6VUludGVnZXIgc3RyaWRlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRT
dHJpZGVfKSwgc3RyaWRlKTsKK30KKworLy8gcHJvcGVydHk6IHN0ZXBGdW5jdGlvbgorX01UTF9J
TkxJTkUgTVRMOjpWZXJ0ZXhTdGVwRnVuY3Rpb24gTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNj
cmlwdG9yOjpzdGVwRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6VmVydGV4U3RlcEZ1bmN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0
ZXBGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QnVmZmVyTGF5
b3V0RGVzY3JpcHRvcjo6c2V0U3RlcEZ1bmN0aW9uKE1UTDo6VmVydGV4U3RlcEZ1bmN0aW9uIHN0
ZXBGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0U3RlcEZ1bmN0aW9uXyksIHN0ZXBGdW5jdGlvbik7Cit9CisKKy8vIHBy
b3BlcnR5OiBzdGVwUmF0ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmVydGV4QnVm
ZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RlcFJhdGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVw
UmF0ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVz
Y3JpcHRvcjo6c2V0U3RlcFJhdGUoTlM6OlVJbnRlZ2VyIHN0ZXBSYXRlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVwUmF0ZV8p
LCBzdGVwUmF0ZSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBN
VEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhCdWZmZXJM
YXlvdXREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFU
RV9DTFMoTVRMVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9y
QXJyYXkqIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2Ny
aXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6
CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIE1UTDo6VmVy
dGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmVydGV4QnVmZmVyTGF5
b3V0RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vi
c2NyaXB0XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vi
c2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRv
ciogYnVmZmVyRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vi
c2NyaXB0XyksIGJ1ZmZlckRlc2MsIGluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxs
b2MKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpWZXJ0
ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhN
VExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiBNVEw6OlZlcnRleEF0dHJp
YnV0ZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1U
TDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGZvcm1h
dAorX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhGb3JtYXQgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNj
cmlwdG9yOjpmb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6VmVydGV4Rm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZvcm1hdCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6c2V0Rm9y
bWF0KE1UTDo6VmVydGV4Rm9ybWF0IGZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Rm9ybWF0XyksIGZvcm1hdCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBvZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlZlcnRl
eEF0dHJpYnV0ZURlc2NyaXB0b3I6Om9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9mZnNl
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
cjo6c2V0T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9mZnNldF8pLCBvZmZzZXQpOwor
fQorCisvLyBwcm9wZXJ0eTogYnVmZmVySW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OmJ1ZmZlckluZGV4KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYnVmZmVySW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRl
eEF0dHJpYnV0ZURlc2NyaXB0b3I6OnNldEJ1ZmZlckluZGV4KE5TOjpVSW50ZWdlciBidWZmZXJJ
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0QnVmZmVySW5kZXhfKSwgYnVmZmVySW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJy
YXkqIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFy
cmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSkp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRl
RGVzY3JpcHRvckFycmF5KiBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2Ny
aXB0OgorX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiBNVEw6OlZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlw
dF8pLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlw
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6
OnNldE9iamVjdChjb25zdCBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IqIGF0dHJpYnV0
ZURlc2MsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8p
LCBhdHRyaWJ1dGVEZXNjLCBpbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6OlZlcnRleERlc2NyaXB0b3IqIE1UTDo6VmVydGV4RGVzY3JpcHRvcjo6
YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlZlcnRleERlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVmVydGV4RGVzY3JpcHRvcikpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4RGVzY3JpcHRvciogTVRMOjpWZXJ0
ZXhEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6
OlZlcnRleERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHZlcnRleERlc2Ny
aXB0b3IKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4RGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhEZXNj
cmlwdG9yOjp2ZXJ0ZXhEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlZlcnRleERlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleERl
c2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleERlc2NyaXB0b3IpKTsKK30KKworLy8g
cHJvcGVydHk6IGxheW91dHMKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVz
Y3JpcHRvckFycmF5KiBNVEw6OlZlcnRleERlc2NyaXB0b3I6OmxheW91dHMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVz
Y3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXlvdXRzKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBhdHRyaWJ1dGVzCitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhEZXNjcmlwdG9yOjphdHRyaWJ1dGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0cmlidXRlcykpOworfQor
CisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4RGVzY3JpcHRv
cjo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChyZXNldCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjM0ZDNhMWE2Y2UxMGI5MjVjZjYxMjU2ZmVkNTE2ZGMzMzBiZGQxMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNp
YmxlRnVuY3Rpb25UYWJsZS5ocHAKQEAgLTAsMCArMSw5NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMVmlzaWJsZUZ1bmN0
aW9uVGFibGUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJp
ZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExGdW5jdGlvbkhhbmRsZS5ocHAiCisj
aW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBWaXNp
YmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VmlzaWJsZUZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBWaXNp
YmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBWaXNpYmxl
RnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xh
c3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiB2aXNpYmxlRnVuY3Rpb25UYWJsZURl
c2NyaXB0b3IoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRGdW5jdGlvbkNvdW50KE5TOjpVSW50ZWdlciBmdW5j
dGlvbkNvdW50KTsKK307CisKK2NsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlIDogcHVibGljIE5T
OjpSZWZlcmVuY2luZzxWaXNpYmxlRnVuY3Rpb25UYWJsZSwgUmVzb3VyY2U+Cit7CitwdWJsaWM6
CisgICAgdm9pZCBzZXRGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbkhhbmRsZSogZnVuY3Rp
b24sIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldEZ1bmN0aW9ucyhjb25zdCBj
bGFzcyBGdW5jdGlvbkhhbmRsZSogZnVuY3Rpb25zW10sIE5TOjpSYW5nZSByYW5nZSk7Cit9Owor
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlZpc2libGVG
dW5jdGlvblRhYmxlRGVzY3JpcHRvciogTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0
b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpWaXNpYmxl
RnVuY3Rpb25UYWJsZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVmlzaWJsZUZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIE1UTDo6VmlzaWJsZUZ1bmN0aW9u
VGFibGVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogdmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlZp
c2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciogTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURl
c2NyaXB0b3I6OnZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3Iq
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciksIF9N
VExfUFJJVkFURV9TRUwodmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBmdW5jdGlvbkNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpW
aXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OmZ1bmN0aW9uQ291bnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChmdW5jdGlvbkNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpW
aXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OnNldEZ1bmN0aW9uQ291bnQoTlM6OlVJbnRl
Z2VyIGZ1bmN0aW9uQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uQ291bnRfKSwgZnVuY3Rpb25Db3VudCk7Cit9
CisKKy8vIG1ldGhvZDogc2V0RnVuY3Rpb246YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpWaXNpYmxlRnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbkhh
bmRsZSogZnVuY3Rpb24sIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnVuY3Rpb25fYXRJbmRleF8p
LCBmdW5jdGlvbiwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZ1bmN0aW9uczp3aXRoUmFu
Z2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGU6OnNldEZ1bmN0
aW9ucyhjb25zdCBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlvbnNbXSwgTlM6OlJhbmdlIHJh
bmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRGdW5jdGlvbnNfd2l0aFJhbmdlXyksIGZ1bmN0aW9ucywgcmFuZ2UpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01ldGFsLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NZXRhbC5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTZhMzYwNjZiNTkyNTNkYmQ3ZGFjZWI3NDZjMGM5NDE0MzNmZmNkYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NZXRhbC5ocHAKQEAg
LTAsMCArMSw4MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWV0YWwvTWV0YWwuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAiCisj
aW5jbHVkZSAiTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwIgorI2lu
Y2x1ZGUgIk1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcCIKKyNpbmNsdWRlICJNVExB
cmd1bWVudC5ocHAiCisjaW5jbHVkZSAiTVRMQXJndW1lbnRFbmNvZGVyLmhwcCIKKyNpbmNsdWRl
ICJNVExCaW5hcnlBcmNoaXZlLmhwcCIKKyNpbmNsdWRlICJNVExCbGl0Q29tbWFuZEVuY29kZXIu
aHBwIgorI2luY2x1ZGUgIk1UTEJsaXRQYXNzLmhwcCIKKyNpbmNsdWRlICJNVExCdWZmZXIuaHBw
IgorI2luY2x1ZGUgIk1UTENhcHR1cmVNYW5hZ2VyLmhwcCIKKyNpbmNsdWRlICJNVExDYXB0dXJl
U2NvcGUuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1hbmRCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1U
TENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kUXVldWUuaHBwIgorI2lu
Y2x1ZGUgIk1UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMQ29tcHV0
ZVBhc3MuaHBwIgorI2luY2x1ZGUgIk1UTENvbXB1dGVQaXBlbGluZS5ocHAiCisjaW5jbHVkZSAi
TVRMQ291bnRlcnMuaHBwIgorI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1U
TERlcHRoU3RlbmNpbC5ocHAiCisjaW5jbHVkZSAiTVRMRGV2aWNlLmhwcCIKKyNpbmNsdWRlICJN
VExEcmF3YWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMRHluYW1pY0xpYnJhcnkuaHBwIgorI2luY2x1
ZGUgIk1UTEV2ZW50LmhwcCIKKyNpbmNsdWRlICJNVExGZW5jZS5ocHAiCisjaW5jbHVkZSAiTVRM
RnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAiCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25EZXNjcmlw
dG9yLmhwcCIKKyNpbmNsdWRlICJNVExGdW5jdGlvbkhhbmRsZS5ocHAiCisjaW5jbHVkZSAiTVRM
RnVuY3Rpb25Mb2cuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcCIKKyNp
bmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTEhlYXAuaHBwIgorI2lu
Y2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMSW5kaXJl
Y3RDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMTGlicmFyeS5ocHAiCisjaW5jbHVkZSAiTVRMTGlua2Vk
RnVuY3Rpb25zLmhwcCIKKyNpbmNsdWRlICJNVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVy
LmhwcCIKKyNpbmNsdWRlICJNVExQaXBlbGluZS5ocHAiCisjaW5jbHVkZSAiTVRMUGl4ZWxGb3Jt
YXQuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk1UTFJhc3Rlcml6
YXRpb25SYXRlLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAiCisj
aW5jbHVkZSAiTVRMUmVuZGVyUGFzcy5ocHAiCisjaW5jbHVkZSAiTVRMUmVuZGVyUGlwZWxpbmUu
aHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlU3RhdGVQYXNzLmhw
cCIKKyNpbmNsdWRlICJNVExTYW1wbGVyLmhwcCIKKyNpbmNsdWRlICJNVExTdGFnZUlucHV0T3V0
cHV0RGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAi
TVRMVHlwZXMuaHBwIgorI2luY2x1ZGUgIk1UTFZlcnRleERlc2NyaXB0b3IuaHBwIgorI2luY2x1
ZGUgIk1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQURlZmluZXMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FEZWZpbmVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWY3ZWZm
ZTNhMTgzZWIyMjZiN2UwYTkwNmU0MmIyOWFhZmQwMTI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FEZWZpbmVzLmhwcApAQCAt
MCwwICsxLDQxIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vCisvLyBRdWFydHpDb3JlL0NBRGVmaW5lcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAy
MC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiLi4vRm91bmRhdGlvbi9OU0RlZmluZXMu
aHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I2RlZmluZSBfQ0FfRVhQT1JUIF9OU19FWFBPUlQKKyNkZWZpbmUgX0NBX0VYVEVSTiBfTlNfRVhU
RVJOCisjZGVmaW5lIF9DQV9JTkxJTkUgX05TX0lOTElORQorI2RlZmluZSBfQ0FfUEFDS0VEIF9O
U19QQUNLRUQKKworI2RlZmluZSBfQ0FfQ09OU1QodHlwZSwgbmFtZSkgX05TX0NPTlNUKHR5cGUs
IG5hbWUpCisjZGVmaW5lIF9DQV9FTlVNKHR5cGUsIG5hbWUpIF9OU19FTlVNKHR5cGUsIG5hbWUp
CisjZGVmaW5lIF9DQV9PUFRJT05TKHR5cGUsIG5hbWUpIF9OU19PUFRJT05TKHR5cGUsIG5hbWUp
CisKKyNkZWZpbmUgX0NBX1ZBTElEQVRFX1NJWkUobnMsIG5hbWUpIF9OU19WQUxJREFURV9TSVpF
KG5zLCBuYW1lKQorI2RlZmluZSBfQ0FfVkFMSURBVEVfRU5VTShucywgbmFtZSkgX05TX1ZBTElE
QVRFX0VOVU0obnMsIG5hbWUpCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1
YXJ0ekNvcmUvQ0FNZXRhbERyYXdhYmxlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9RdWFydHpDb3JlL0NBTWV0YWxEcmF3YWJsZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQwODc1NzIx
Y2E5ODA0ZmZkYzM0YmE0NWVmNTk1NDIzMDk3NGExMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBTWV0YWxEcmF3YWJsZS5ocHAK
QEAgLTAsMCArMSw1NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gUXVhcnR6Q29yZS9DQU1ldGFsRHJhd2FibGUuaHBwCisvLworLy8gQ29w
eXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIi4uL01ldGFsL01UTERy
YXdhYmxlLmhwcCIKKyNpbmNsdWRlICIuLi9NZXRhbC9NVExUZXh0dXJlLmhwcCIKKworI2luY2x1
ZGUgIkNBRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiQ0FQcml2YXRlLmhwcCIKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBDQQorewor
Y2xhc3MgTWV0YWxEcmF3YWJsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8TWV0YWxEcmF3YWJs
ZSwgTVRMOjpEcmF3YWJsZT4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBNZXRhbExheWVyKiBsYXll
cigpIGNvbnN0OworICAgIE1UTDo6VGV4dHVyZSogICAgIHRleHR1cmUoKSBjb25zdDsKK307Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfQ0Ff
SU5MSU5FIENBOjpNZXRhbExheWVyKiBDQTo6TWV0YWxEcmF3YWJsZTo6bGF5ZXIoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1ldGFsTGF5ZXIqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGxheWVyKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfQ0FfSU5MSU5FIE1UTDo6VGV4dHVyZSogQ0E6Ok1ldGFsRHJh
d2FibGU6OnRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZSkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHAg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg5YzYwMjQ3MDE1MWUxODczMWE0ZjNkM2NlYjFhM2JmN2IyYmFlMTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29y
ZS9DQVByaXZhdGUuaHBwCkBAIC0wLDAgKzEsMTA5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBRdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiQ0FE
ZWZpbmVzLmhwcCIKKworI2luY2x1ZGUgPG9iamMvcnVudGltZS5oPgorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2RlZmluZSBfQ0FfUFJJVkFURV9D
TFMoc3ltYm9sKSAoUHJpdmF0ZTo6Q2xhc3M6OnNfayMjc3ltYm9sKQorI2RlZmluZSBfQ0FfUFJJ
VkFURV9TRUwoYWNjZXNzb3IpIChQcml2YXRlOjpTZWxlY3Rvcjo6c19rIyNhY2Nlc3NvcikKKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBkZWZp
bmVkKENBX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04pCisKKyNkZWZpbmUgX0NBX1BSSVZBVEVfVklT
SUJJTElUWSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCisjZGVmaW5lIF9D
QV9QUklWQVRFX0lNUE9SVCBfX2F0dHJpYnV0ZV9fKCh3ZWFrX2ltcG9ydCkpCisKKyNpZiBfX09C
SkNfXworI2RlZmluZSBfQ0FfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpICgoX19i
cmlkZ2Ugdm9pZCopb2JqY19sb29rVXBDbGFzcygjc3ltYm9sKSkKKyNlbHNlCisjZGVmaW5lIF9D
QV9QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgb2JqY19sb29rVXBDbGFzcygjc3lt
Ym9sKQorI2VuZGlmIC8vIF9fT0JKQ19fCisKKyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX0NMUyhz
eW1ib2wpIHZvaWQqIHNfayMjc3ltYm9sIF9DQV9QUklWQVRFX1ZJU0lCSUxJVFkgPSBfQ0FfUFJJ
VkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpOworI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZf
UFJPKHN5bWJvbCkKKyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX1NFTChhY2Nlc3Nvciwgc3ltYm9s
KSBTRUwgc19rIyNhY2Nlc3NvciBfQ0FfUFJJVkFURV9WSVNJQklMSVRZID0gc2VsX3JlZ2lzdGVy
TmFtZShzeW1ib2wpOworI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfU1RSKHR5cGUsIHN5bWJvbCkg
ICAgICAgICAgICAgICAgXAorICAgIF9DQV9FWFRFUk4gdHlwZSBjb25zdCBDQSMjc3ltYm9sIF9D
QV9QUklWQVRFX0lNUE9SVDsgXAorICAgIHR5cGUgY29uc3QgICAgICAgICAgICAgICAgICAgICAg
IENBOjpzeW1ib2wgPSAobnVsbHB0ciAhPSAmQ0EjI3N5bWJvbCkgPyBDQSMjc3ltYm9sIDogbnVs
bHB0cjsKKworI2Vsc2UKKworI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfQ0xTKHN5bWJvbCkgZXh0
ZXJuIHZvaWQqIHNfayMjc3ltYm9sOworI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfUFJPKHN5bWJv
bCkKKyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX1NFTChhY2Nlc3Nvciwgc3ltYm9sKSBleHRlcm4g
U0VMIHNfayMjYWNjZXNzb3I7CisjZGVmaW5lIF9DQV9QUklWQVRFX0RFRl9TVFIodHlwZSwgc3lt
Ym9sKQorCisjZW5kaWYgLy8gQ0FfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIENBCit7Citu
YW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBDbGFzcworICAgIHsKKworICAgIH0g
Ly8gQ2xhc3MKK30gLy8gUHJpdmF0ZQorfSAvLyBDQQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIENBCit7CituYW1lc3BhY2UgUHJp
dmF0ZQoreworICAgIG5hbWVzcGFjZSBQcm90b2NvbAorICAgIHsKKworICAgICAgICBfQ0FfUFJJ
VkFURV9ERUZfUFJPKENBTWV0YWxEcmF3YWJsZSk7CisKKyAgICB9IC8vIFByb3RvY29sCit9IC8v
IFByaXZhdGUKK30gLy8gQ0EKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK25hbWVzcGFjZSBDQQoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAgICBu
YW1lc3BhY2UgU2VsZWN0b3IKKyAgICB7CisKKyAgICAgICAgX0NBX1BSSVZBVEVfREVGX1NFTChs
YXllciwKKyAgICAgICAgICAgICJsYXllciIpOworICAgICAgICBfQ0FfUFJJVkFURV9ERUZfU0VM
KHRleHR1cmUsCisgICAgICAgICAgICAidGV4dHVyZSIpOworCisgICAgfSAvLyBDbGFzcworfSAv
LyBQcml2YXRlCit9IC8vIENBCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1
YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
UXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTFlYjQ2N2IxNmJiODBmZGZk
MTk2YWE4YjkzYmZlZGM1NDQ3MTk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAKQEAgLTAsMCArMSwyNyBA
QAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8g
UXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyNpbmNsdWRlICJDQU1ldGFsRHJhd2FibGUuaHBwIgorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9SRUFETUUubWQgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NTA3MTU1ZWI3N2ZjMjQ3ZjQ2M2I1NDJh
ZjliZWYwZWVkNzM4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMjQ1IEBACisjIyBBYm91dAorCisqKm1ldGFs
LWNwcCoqIGlzIGEgbG93IG92ZXJoZWFkIGFuZCBoZWFkZXIgb25seSBDKysgaW50ZXJmYWNlIGZv
ciBNZXRhbCB0aGF0IGhlbHBzIGRldmVsb3BlcnMgYWRkIE1ldGFsIGZ1bmN0aW9uYWxpdHkgdG8g
Z3JhcGhpY3MgYXBwbGljYXRpb25zIHRoYXQgYXJlIHdyaXR0ZW4gaW4gQysrIChzdWNoIGFzIGdh
bWUgZW5naW5lcykuICoqbWV0YWwtY3BwKiogcmVtb3ZlcyB0aGUgbmVlZCB0byBjcmVhdGUgYSBz
aGltIGFuZCBhbGxvd3MgZGV2ZWxvcGVycyB0byBjYWxsIE1ldGFsIGZ1bmN0aW9ucyBkaXJlY3Rs
eSBmcm9tIGFueXdoZXJlIGluIHRoZWlyIGV4aXN0aW5nIEMrKyBjb2RlLgorCisKKyMjIEhpZ2hs
aWdodHMKKworLSBEcm9wIGluIEMrKyBhbHRlcm5hdGl2ZSBpbnRlcmZhY2UgdG8gdGhlIE1ldGFs
IE9iamVjdGl2ZS1DIGhlYWRlcnMuCistIERpcmVjdCBtYXBwaW5nIG9mIGFsbCBNZXRhbCBPYmpl
Y3RpdmUtQyBjbGFzc2VzLCBjb25zdGFudHMgYW5kIGVudW1zIHRvIEMrKyBpbiB0aGUgTVRMIEMr
KyBuYW1lc3BhY2UuCistIE5vIG1lYXN1cmFibGUgb3ZlcmhlYWQgY29tcGFyZWQgdG8gY2FsbGlu
ZyBNZXRhbCBPYmplY3RpdmUtQyBoZWFkZXJzLCBkdWUgdG8gaW5saW5pbmcgb2YgQysrIGZ1bmN0
aW9uIGNhbGxzLgorLSBObyB1c2FnZSBvZiB3cmFwcGVyIGNvbnRhaW5lcnMgdGhhdCByZXF1aXJl
IGFkZGl0aW9uYWwgYWxsb2NhdGlvbnMuCistIFJlcXVpcmVzIEMrKzE3IGR1ZSB0byB0aGUgdXNh
Z2Ugb2YgYGNvbnN0ZXhwcmAgaW4gYE5TOjpPYmplY3RgLgorLSBJZGVudGljYWwgaGVhZGVyIGZp
bGVzIGFuZCBmdW5jdGlvbi9jb25zdGFudC9lbnVtIGF2YWlsYWJpbGl0eSBmb3IgaU9TLCBtYWNP
UyBhbmQgdHZPUy4KKy0gQmFja3dhcmRzIGNvbXBhdGliaWxpdHk6IEFsbCBgYm9vbCBNVEw6OkRl
dmljZTo6c3VwcG9ydHMuLi4oKWAgZnVuY3Rpb25zIGNoZWNrIGlmIHRoZWlyIHJlcXVpcmVkIHNl
bGVjdG9ycyBleGlzdCBhbmQgYXV0b21hdGljYWxseSByZXR1cm4gYGZhbHNlYCBpZiBub3QuCist
IFN0cmluZyAoYEVycm9yRG9tYWluYCkgY29uc3RhbnRzIGFyZSB3ZWFrIGxpbmtlZCBhbmQgYXV0
b21hdGljYWxseSBzZXQgdG8gYG51bGxwdHJgIGlmIG5vdCBhdmFpbGFibGUuCisKKyMjIE1lbW9y
eSBBbGxvY2F0aW9uIFBvbGljeQorCisqKm1ldGFsLWNwcCoqIGZvbGxvd3MgdGhlIG9iamVjdCBh
bGxvY2F0aW9uIHBvbGljaWVzIG9mIENvY29hIGFuZCBDb2NvYSBUb3VjaC4gVW5kZXJzdGFuZGlu
ZyB0aG9zZSBydWxlcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB3aGVuIHVzaW5nIG1ldGFsLWNw
cCwgYXMgQysrIG9iamVjdHMgYXJlIG5vdCBlbGlnaWJsZSBmb3IgYXV0b21hdGljIHJlZmVyZW5j
ZSBjb3VudGluZyAoQVJDKS4KKworKiptZXRhbC1jcHAqKiBvYmplY3RzIGFyZSByZWZlcmVuY2Ug
Y291bnRlZC4gVG8gaGVscCBjb252ZXkgYW5kIG1hbmFnZSBvYmplY3QgbGlmZWN5Y2xlcywgdGhl
IGZvbGxvd2luZyBjb252ZW50aW9ucyBhcmUgb2JzZXJ2ZWQ6CisKKzEuICpZb3Ugb3duIGFueSBv
YmplY3QgcmV0dXJuZWQgYnkgbWV0aG9kcyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoKiBgYWxsb2Ng
ICosKiBgbmV3YCAqLCogYGNvcHlgICosIG9yKiBgbXV0YWJsZUNvcHlgLiBUaGUgbWV0aG9kIHJl
dHVybnMgdGhlc2Ugb2JqZWN0cyB3aXRoIGByZXRhaW5Db3VudGAgZXF1YWxzIHRvIGAxYC4KKzIu
ICpZb3UgY2FuIHRha2Ugb3duZXJzaGlwIG9mIGFuIG9iamVjdCBieSBjYWxsaW5nIGl0cyogYGBg
cmV0YWluKClgYGAgKm1ldGhvZCouIEEgcmVjZWl2ZWQgb2JqZWN0IGlzIG5vcm1hbGx5IGd1YXJh
bnRlZWQgdG8gcmVtYWluIHZhbGlkIHdpdGhpbiB0aGUgbWV0aG9kIGl0IHdhcyByZWNlaXZlZCBp
bi4gWW91IHVzZSBgcmV0YWluYCBpbiB0d28gc2l0dWF0aW9uczogKDEpIEluIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBhbiBhY2Nlc3NvciBtZXRob2QgKGEgc2V0dGVyKSBvciB0byB0YWtlIG93bmVy
c2hpcCBvZiBhbiBvYmplY3Q7IGFuZCAoMikgVG8gcHJldmVudCBhbiBvYmplY3QgZnJvbSBiZWlu
ZyBkZWFsbG9jYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHNvbWUgb3RoZXIgb3BlcmF0aW9uLgor
My4gKldoZW4geW91IG5vIGxvbmdlciBuZWVkIGl0LCB5b3UgbXVzdCByZWxpbnF1aXNoIG93bmVy
c2hpcCBvZiBhbiBvYmplY3QgeW91IG93biouIFlvdSByZWxpbnF1aXNoIG93bmVyc2hpcCBieSBj
YWxsaW5nIGl0cyBgcmVsZWFzZSgpYCBvciBgYXV0b3JlbGVhc2UoKWAgbWV0aG9kLgorNC4gKllv
dSBtdXN0IG5vdCByZWxpbnF1aXNoIG93bmVyc2hpcCBvZiBhbiBvYmplY3QgeW91IGRvIG5vdCBv
d24qLgorCitXaGVuIGFuIG9iamVjdCdzIGByZXRhaW5Db3VudGAgcmVhY2hlcyBgMGAsIHRoZSBv
YmplY3QgaXMgaW1tZWRpYXRlbHkgZGVhbGxvY2F0ZWQuIEl0IGlzIGlsbGVnYWwgdG8gY2FsbCBt
ZXRob2RzIG9uIGEgZGVhbGxvY2F0ZWQgb2JqZWN0IGFuZCBpdCBtYXkgbGVhZCB0byBhbiBhcHBs
aWNhdGlvbiBjcmFzaC4KKworIyMjIEF1dG9yZWxlYXNlUG9vbHMgYW5kIE9iamVjdHMKKworU2V2
ZXJhbCBtZXRob2RzIHRoYXQgY3JlYXRlIHRlbXBvcmFyeSBvYmplY3RzIGluICoqbWV0YWwtY3Bw
KiogYWRkIHRoZW0gdG8gYW4gYEF1dG9yZWxlYXNlUG9vbGAgdG8gaGVscCBtYW5hZ2UgdGhlaXIg
bGlmZXRpbWVzLiBJbiB0aGVzZSBzaXR1YXRpb25zLCBhZnRlciAqKm1ldGFsLWNwcCoqIGNyZWF0
ZXMgdGhlIG9iamVjdCwgaXQgYWRkcyBpdCB0byBhbiBgQXV0b3JlbGVhc2VQb29sYCwgd2hpY2gg
d2lsbCByZWxlYXNlIGl0cyBvYmplY3RzIHdoZW4geW91IHJlbGVhc2UgKG9yIGRyYWluKSBpdC4K
KworQnkgYWRkaW5nIHRlbXBvcmFyeSBvYmplY3RzIHRvIGFuIEF1dG9yZWxlYXNlUG9vbCwgeW91
IGRvIG5vdCBuZWVkIHRvIGV4cGxpY2l0bHkgY2FsbCBgcmVsZWFzZSgpYCB0byBkZWFsbG9jYXRl
IHRoZW0uIEluc3RlYWQsIHlvdSBjYW4gcmVseSBvbiB0aGUgYEF1dG9yZWxlYXNlUG9vbGAgdG8g
aW1wbGljaXRseSBtYW5hZ2UgdGhvc2UgbGlmZXRpbWVzLgorCitJZiB5b3UgY3JlYXRlIGFuIG9i
amVjdCB3aXRoIGEgbWV0aG9kIHRoYXQgZG9lcyBub3QgYmVnaW4gd2l0aCBgYWxsb2NgLCBgbmV3
YCwgYGNvcHlgLCBvciBgbXV0YWJsZUNvcHlgLCB0aGUgY3JlYXRpbmcgbWV0aG9kIGFkZHMgdGhl
IG9iamVjdCB0byBhbiBhdXRvcmVsZWFzZSBwb29sLgorCitUaGUgdHlwaWNhbCBzY29wZSBvZiBh
biBgQXV0b3JlbGVhc2VQb29sYCBpcyBvbmUgZnJhbWUgb2YgcmVuZGVyaW5nIGZvciB0aGUgbWFp
biB0aHJlYWQgb2YgdGhlIHByb2dyYW0uIFdoZW4gdGhlIHRocmVhZCByZXR1cm5zIGNvbnRyb2wg
dG8gdGhlIFJ1bkxvb3AgKGFuIG9iamVjdCByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIGlucHV0
IGFuZCBldmVudHMgZnJvbSB0aGUgd2luZG93aW5nIHN5c3RlbSksIHRoZSBwb29sIGlzICpkcmFp
bmVkKiwgcmVsZWFzaW5nIGl0cyBvYmplY3RzLgorCitZb3UgY2FuIGNyZWF0ZSBhbmQgbWFuYWdl
IGFkZGl0aW9uYWwgYEF1dG9yZWxlYXNlUG9vbGBzIGF0IHNtYWxsZXIgc2NvcGVzIHRvIHJlZHVj
ZSB5b3VyIHByb2dyYW0ncyB3b3JraW5nIHNldCwgYW5kIHlvdSBhcmUgcmVxdWlyZWQgdG8gZG8g
c28gZm9yIGFueSBhZGRpdGlvbmFsIHRocmVhZHMgeW91ciBwcm9ncmFtIGNyZWF0ZXMuCisKK0lm
IGFuIG9iamVjdCdzIGxpZmVjeWNsZSBuZWVkcyB0byBiZSBleHRlbmRlZCBiZXlvbmQgdGhlIGBB
dXRvcmVsZWFzZVBvb2xgJ3Mgc2NvcGUsIHlvdSBjYW4gY2xhaW0gb3duZXJzaGlwIG9mIGl0IChh
dm9pZGluZyBpdHMgcmVsZWFzZSBiZXlvbmQgdGhlIHBvb2wncyBzY29wZSkgYnkgY2FsbGluZyBp
dHMgYHJldGFpbigpYCBtZXRob2QgYmVmb3JlIGl0cyBwb29sIGlzIGRyYWluZWQuIEluIHRoZXNl
IGNhc2VzLCB5b3Ugd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgbWFraW5nIHRoZSBhcHByb3ByaWF0
ZSBgcmVsZWFzZSgpYCBjYWxsIG9uIHRoZSBvYmplY3QgYWZ0ZXIgeW91IG5vIGxvbmdlciBuZWVk
IGl0LiAKKworWW91IGNhbiBmaW5kIGEgbW9yZS1kZXRhaWxlZCBpbnRyb2R1Y3Rpb24gdG8gdGhl
IG1lbW9yeSBtYW5hZ2VtZW50IHJ1bGVzIGhlcmU6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNv
bS9saWJyYXJ5L2FyY2hpdmUvZG9jdW1lbnRhdGlvbi9Db2NvYS9Db25jZXB0dWFsL01lbW9yeU1n
bXQvQXJ0aWNsZXMvbW1SdWxlcy5odG1sLgorCitGb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBh
cHBsaWNhdGlvbidzIFJ1bkxvb3AsIHBsZWFzZSBmaW5kIGl0cyBkb2N1bWVudGF0aW9uIGhlcmU6
IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL2ZvdW5kYXRpb24vbnNy
dW5sb29wCisKKyMjIyBVc2UgYW5kIGRlYnVnIEF1dG9yZWxlYXNlUG9vbHMKKworV2hlbiB5b3Ug
Y3JlYXRlIGFuIGF1dG9yZWxlYXNlZCBvYmplY3QgYW5kIHRoZXJlIGlzIG5vIGVuY2xvc2luZyBg
QXV0b3JlbGVhc2VQb29sYCwgdGhlIG9iamVjdCBpcyBsZWFrZWQuCisKK1RvIHByZXZlbnQgdGhp
cywgeW91IG5vcm1hbGx5IGNyZWF0ZSBhbiBgQXV0b3JlbGVhc2VQb29sYCBpbiB5b3VyIHByb2dy
YW0ncyBgbWFpbmAgZnVuY3Rpb24sIGFuZCBpbiB0aGUgZW50cnkgZnVuY3Rpb24gZm9yIGV2ZXJ5
IHRocmVhZCB5b3UgY3JlYXRlLiBZb3UgbWF5IGFsc28gY3JlYXRlIGFkZGl0aW9uYWwgYEF1dG9y
ZWxlYXNlUG9vbGBzIHRvIGF2b2lkIGdyb3dpbmcgeW91ciBwcm9ncmFtJ3MgaGlnaCBtZW1vcnkg
d2F0ZXJtYXJrIHdoZW4geW91IGNyZWF0ZSBzZXZlcmFsIGF1dG9yZWxlYXNlZCBvYmplY3RzLCBz
dWNoIGFzIHdoZW4gcmVuZGVyaW5nLgorCitVc2UgdGhlIEVudmlyb25tZW50IFZhcmlhYmxlIGBP
QkpDX0RFQlVHX01JU1NJTkdfUE9PTFM9WUVTYCB0byBwcmludCBhIHJ1bnRpbWUgd2FybmluZyB3
aGVuIGFuIGF1dG9yZWxlYXNlZCBvYmplY3QgaXMgbGVha2VkIGJlY2F1c2Ugbm8gZW5jbG9zaW5n
IGBBdXRvcmVsZWFzZVBvb2xgIGlzIGF2YWlsYWJsZSBmb3IgaXRzIHRocmVhZC4KKworWW91IGNh
biBhbHNvIHJ1biBgbGVha3MgLS1hdXRvcmVsZWFzZVBvb2xzYCBvbiBhIG1lbWdyYXBoIGZpbGUg
b3IgYSBwcm9jZXNzIElEIChtYWNPUyBvbmx5KSB0byB2aWV3IGEgbGlzdGluZyBvZiB5b3VyIHBy
b2dyYW0ncyBgQXV0b3JlbGVhc2VQb29sYHMgYW5kIGFsbCBvYmplY3RzIHRoZXkgY29udGFpbi4K
KworIyMjIG51bGxwdHIKKworU2ltaWxhciB0byBPYmplY3RpdmUtQywgaXQgaXMgbGVnYWwgdG8g
Y2FsbCBhbnkgbWV0aG9kLCBpbmNsdWRpbmcgYHJldGFpbigpYCBhbmQgYHJlbGVhc2UoKWAsIG9u
IGBudWxscHRyYCAib2JqZWN0cyIuIFdoaWxlIGNhbGxpbmcgbWV0aG9kcyBvbiBgbnVsbHB0cmAg
c3RpbGwgZG9lcyBpbmN1ciBpbiBmdW5jdGlvbiBjYWxsIG92ZXJoZWFkLCB0aGUgZWZmZWN0aXZl
IHJlc3VsdCBpcyBlcXVpdmFsZW50IG9mIGEgTk9QLgorCitDb252ZXJzZWx5LCBkbyBub3QgYXNz
dW1lIHRoYXQgYmVjYXVzZSBjYWxsaW5nIGEgbWV0aG9kIG9uIGEgcG9pbnRlciBkaWQgbm90IHJl
c3VsdCBpbiBhIGNyYXNoLCB0aGF0IHRoZSBwb2ludGVkLXRvIG9iamVjdCBpcyB2YWxpZC4KKwor
IyMgQWRkaW5nIG1ldGFsLWNwcCB0byBhIFByb2plY3QKKworU2ltcGx5IGluY2x1ZGUgYE1ldGFs
L01ldGFsLmhwcGAuIFRvIGVuc3VyZSB0aGF0IHRoZSBzZWxlY3RvciBhbmQgY2xhc3Mgc3ltYm9s
cyBhcmUgbGlua2VkLCBhZGQgdG8gb25lIG9mIHlvdXIgY3BwIGZpbGVzOgorCitgYGBjcHAKKyNk
ZWZpbmUgTlNfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorI2RlZmluZSBNVExfUFJJVkFURV9JTVBM
RU1FTlRBVElPTgorCisjaW5jbHVkZSAiTWV0YWwvTWV0YWwuaHBwIgorYGBgCisKK0lmIHlvdSB3
YW50IHRvIHVzZSB0aGUgUXVhcnR6Q29yZSB3cmFwcGVyLCBhZGQ6CisKK2BgYGNwcAorI2RlZmlu
ZSBDQV9QUklWQVRFX0lNUExFTUVOVEFUSU9OCisKKyNpbmNsdWRlICJRdWFydHpDb3JlL1F1YXJ0
ekNvcmUuaHBwIgorYGBgCisKKyMjIEdlbmVyYXRpbmcgYSBTaW5nbGUgSGVhZGVyIEZpbGUKKwor
UHVyZWx5IG9wdGlvbmFsOiBZb3UgY2FuIGdlbmVyYXRlIGEgc2luZ2xlIGhlYWRlciBmaWxlIHRo
YXQgY29udGFpbnMgYWxsICoqbWV0YWwtY3BwKiogaGVhZGVycyB2aWE6CisKK2BgYHNoZWxsCisu
L1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5IEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHAgUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcCBNZXRhbC9NZXRhbC5ocHAKK2BgYAorCitCeSBk
ZWZhdWx0IHRoZSBnZW5lcmF0ZWQgaGVhZGVyIGZpbGUgd2lsbCBiZSB3cml0dGVuIHRvIGAuL1Np
bmdsZUhlYWRlci9NZXRhbC5ocHBgCisKKyMjIEV4YW1wbGVzCisKKyMjIyMgQ3JlYXRpbmcgdGhl
IGRldmljZQorCisjIyMjIyMgT2JqZWN0aXZlLUMgKHdpdGggYXV0b21hdGljIHJlZmVyZW5jZSBj
b3VudGluZykKKworYGBgb2JqYworaWQ8IE1UTERldmljZSA+IGRldmljZSA9IE1UTENyZWF0ZVN5
c3RlbURlZmF1bHREZXZpY2UoKTsKKworLy8gLi4uCitgYGAKKworIyMjIyMjIE9iamVjdGl2ZS1D
CisKK2BgYG9iamMKK2lkPCBNVExEZXZpY2UgPiBkZXZpY2UgPSBNVExDcmVhdGVTeXN0ZW1EZWZh
dWx0RGV2aWNlKCk7CisKKy8vIC4uLgorCitbZGV2aWNlIHJlbGVhc2VdOworYGBgCisKKyMjIyMj
IyBDKysKKworYGBgY3BwCitNVEw6OkRldmljZSogcERldmljZSA9IE1UTDo6Q3JlYXRlU3lzdGVt
RGVmYXVsdERldmljZSgpOworCisvLyAuLi4KKworcERldmljZS0+cmVsZWFzZSgpOworYGBgCisK
KyMjIyMgTWV0YWwgZnVuY3Rpb24gY2FsbHMgbWFwIGRpcmVjdGx5IHRvIEMrKworCisjIyMjIyMg
T2JqZWN0aXZlLUMgKHdpdGggYXV0b21hdGljIHJlZmVyZW5jZSBjb3VudGluZykKKworYGBgb2Jq
YworTVRMU2FtcGxlckRlc2NyaXB0b3IqIHNhbXBsZXJEZXNjcmlwdG9yID0gW1tNVExTYW1wbGVy
RGVzY3JpcHRvciBhbGxvY10gaW5pdF07CisKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRTQWRkcmVz
c01vZGU6IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRlc2NyaXB0b3Ig
c2V0VEFkZHJlc3NNb2RlOiBNVExTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXRdOworW3NhbXBsZXJE
ZXNjcmlwdG9yIHNldFJBZGRyZXNzTW9kZTogTVRMU2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0XTsK
K1tzYW1wbGVyRGVzY3JpcHRvciBzZXRNYWdGaWx0ZXI6IE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJM
aW5lYXJdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldE1pbkZpbHRlcjogTVRMU2FtcGxlck1pbk1h
Z0ZpbHRlckxpbmVhcl07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0TWlwRmlsdGVyOiBNVExTYW1w
bGVyTWlwRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRTdXBwb3J0QXJndW1l
bnRCdWZmZXJzOiBZRVNdOworCitpZDwgTVRMU2FtcGxlclN0YXRlID4gc2FtcGxlclN0YXRlID0g
W2RldmljZSBuZXdTYW1wbGVyU3RhdGVXaXRoRGVzY3JpcHRvcjpzYW1wbGVyRGVzY3JpcHRvcl07
CitgYGAKKworIyMjIyMjIE9iamVjdGl2ZS1DCisKK2BgYG9iamMKK01UTFNhbXBsZXJEZXNjcmlw
dG9yKiBzYW1wbGVyRGVzY3JpcHRvciA9IFtbTVRMU2FtcGxlckRlc2NyaXB0b3IgYWxsb2NdIGlu
aXRdOworCitbc2FtcGxlckRlc2NyaXB0b3Igc2V0U0FkZHJlc3NNb2RlOiBNVExTYW1wbGVyQWRk
cmVzc01vZGVSZXBlYXRdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldFRBZGRyZXNzTW9kZTogTVRM
U2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0XTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRSQWRkcmVz
c01vZGU6IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRlc2NyaXB0b3Ig
c2V0TWFnRmlsdGVyOiBNVExTYW1wbGVyTWluTWFnRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVz
Y3JpcHRvciBzZXRNaW5GaWx0ZXI6IE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5lYXJdOworW3Nh
bXBsZXJEZXNjcmlwdG9yIHNldE1pcEZpbHRlcjogTVRMU2FtcGxlck1pcEZpbHRlckxpbmVhcl07
Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0U3VwcG9ydEFyZ3VtZW50QnVmZmVyczogWUVTXTsKKwor
aWQ8IE1UTFNhbXBsZXJTdGF0ZSA+IHNhbXBsZXJTdGF0ZSA9IFtkZXZpY2UgbmV3U2FtcGxlclN0
YXRlV2l0aERlc2NyaXB0b3I6c2FtcGxlckRlc2NyaXB0b3JdOworCitbc2FtcGxlckRlc2NyaXB0
b3IgcmVsZWFzZV07CisKKy8vIC4uLgorCitbc2FtcGxlclN0YXRlIHJlbGVhc2VdOworYGBgCisK
KyMjIyMjIyBDKysKKworYGBgY3BwCitNVEw6OlNhbXBsZXJEZXNjcmlwdG9yKiBwU2FtcGxlckRl
c2NyaXB0b3IgPSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjphbGxvYygpLT5pbml0KCk7CisKK3BT
YW1wbGVyRGVzY3JpcHRvci0+c2V0U0FkZHJlc3NNb2RlKCBNVEw6OlNhbXBsZXJBZGRyZXNzTW9k
ZVJlcGVhdCApOworcFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRUQWRkcmVzc01vZGUoIE1UTDo6U2Ft
cGxlckFkZHJlc3NNb2RlUmVwZWF0ICk7CitwU2FtcGxlckRlc2NyaXB0b3ItPnNldFJBZGRyZXNz
TW9kZSggTVRMOjpTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXQgKTsKK3BTYW1wbGVyRGVzY3JpcHRv
ci0+c2V0TWFnRmlsdGVyKCBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5lYXIgKTsKK3BTYW1w
bGVyRGVzY3JpcHRvci0+c2V0TWluRmlsdGVyKCBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5l
YXIgKTsKK3BTYW1wbGVyRGVzY3JpcHRvci0+c2V0TWlwRmlsdGVyKCBNVEw6OlNhbXBsZXJNaXBG
aWx0ZXJMaW5lYXIgKTsKK3BTYW1wbGVyRGVzY3JpcHRvci0+c2V0U3VwcG9ydEFyZ3VtZW50QnVm
ZmVycyggdHJ1ZSApOworCitNVEw6OlNhbXBsZXJTdGF0ZSogcFNhbXBsZXJTdGF0ZSA9IHBEZXZp
Y2UtPm5ld1NhbXBsZXJTdGF0ZSggcFNhbXBsZXJEZXNjcmlwdG9yICk7CisKK3BTYW1wbGVyRGVz
Y3JpcHRvci0+cmVsZWFzZSgpOworCisvLyAuLi4KKworcFNhbXBsZXJTdGF0ZS0+cmVsZWFzZSgp
OworYGBgCisKKyMjIyMgQSBzdWJzZXQgb2YgYmluZGluZ3MgZm9yIEZvdW5kYXRpb24gY2xhc3Nl
cyBpcyBwcm92aWRlZCBmb3Igc2VhbWxlc3MgaW50ZWdyYXRpb24KKworIyMjIyMjIE9iamVjdGl2
ZS1DICh3aXRoIGF1dG9tYXRpYyByZWZlcmVuY2UgY291bnRpbmcpCisKK2BgYG9iamMKK05TQXV0
b3JlbGVhc2VQb29sKiAgcG9vbCAgID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07
CitOU1N0cmluZyogICAgICAgICAgIHN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmlu
ZzogIkhlbGxvIFdvcmxkIiBlbmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXTsKKworcHJp
bnRmKCAic3RyaW5nID0gXCIlc1wiXG4iLCBbc3RyaW5nIGNTdHJpbmdVc2luZ0VuY29kaW5nOiBO
U0FTQ0lJU3RyaW5nRW5jb2RpbmddICk7CitgYGAKKworIyMjIyMjIE9iamVjdGl2ZS1DCisKK2Bg
YG9iamMKK05TQXV0b3JlbGVhc2VQb29sKiBwb29sICAgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFs
bG9jXSBpbml0XTsKK05TU3RyaW5nKiAgICAgICAgICBzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENTdHJpbmc6ICJIZWxsbyBXb3JsZCIgZW5jb2Rpbmc6IE5TQVNDSUlTdHJpbmdFbmNvZGlu
Z107CisJCQkJCQkJCQorcHJpbnRmKCAic3RyaW5nID0gXCIlc1wiXG4iLCBbc3RyaW5nIGNTdHJp
bmdVc2luZ0VuY29kaW5nOiBOU0FTQ0lJU3RyaW5nRW5jb2RpbmddICk7CisKK1twb29sIHJlbGVh
c2VdOworYGBgCisKKyMjIyMjIyBDKysKKworYGBgY3BwCitOUzo6QXV0b3JlbGVhc2VQb29sKiBw
UG9vbCAgID0gTlM6OkF1dG9yZWxlYXNlUG9vbDo6YWxsb2MoKS0+aW5pdCgpOworTlM6OlN0cmlu
ZyogICAgICAgICAgcFN0cmluZyA9IE5TOjpTdHJpbmc6OnN0cmluZyggIkhlbGxvIFdvcmxkIiwg
TlM6OkFTQ0lJU3RyaW5nRW5jb2RpbmcgKTsKKworcHJpbnRmKCAicFN0cmluZyA9IFwiJXNcIlxu
IiwgcFN0cmluZy0+Y1N0cmluZyggTlM6OkFTQ0lJU3RyaW5nRW5jb2RpbmcgKSApOworCitwUG9v
bC0+cmVsZWFzZSgpOworYGBgCisKKyMjIyMgIEludGVyb3BlcmFiaWxpdHkgd2l0aCBDb3JlRm91
bmRhdGlvbgorCitgYGBjcHAKK01UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9t
ZXRyeURlc2NyaXB0b3IqIHBHZW9EZXNjcmlwdG9yICA9IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9jKCktPmluaXQoKTsKK0NGVHlwZVJl
ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Jz
W10gICA9IHsgKCBDRlR5cGVSZWYgKSggcEdlb0Rlc2NyaXB0b3IgKSB9OworTlM6OkFycmF5KiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEdlb0Rlc2NyaXB0b3Jz
ID0gKCBOUzo6QXJyYXkqICkoIENGQXJyYXlDcmVhdGUoIGtDRkFsbG9jYXRvckRlZmF1bHQsIGRl
c2NyaXB0b3JzLCBTSVpFT0ZfQVJSQVkoIGRlc2NyaXB0b3JzKSwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcyApICk7CisKKy8vIC4uLgorCitwR2VvRGVzY3JpcHRvcnMtPnJlbGVhc2UoKTsKK2BgYAor
CisjIyMjIEFjY2Vzc2luZyBhIENBTWV0YWxEcmF3YWJsZQorCitgYGBvYmpjCisjaW1wb3J0IDxR
dWFydHpDb3JlL0NBTWV0YWxMYXllci5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3Jl
LmhwcD4KKworLy8gLi4uCisKK0NBTWV0YWxMYXllciogICAgICAgICBtZXRhbExheWVyICAgICAg
ICAgPSAvKiBnZXQgeW91ciBsYXllciBmcm9tIHlvdXIgdmlldyAqLzsKK2lkPCBDQU1ldGFsRHJh
d2FibGUgPiBtZXRhbERyYXdhYmxlICAgICAgPSBbbWV0YWxMYXllciBuZXh0RHJhd2FibGVdOwor
Q0E6Ok1ldGFsRHJhd2FibGUqICAgIHBNZXRhbENwcERyYXdhYmxlICA9ICggX19icmlkZ2UgQ0E6
Ok1ldGFsRHJhd2FibGUqICkgbWV0YWxEcmF3YWJsZTsKKworLy8gLi4uCitgYGAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9TaW5nbGVIZWFkZXIvTWFrZVNpbmds
ZUhlYWRlci5weSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9TaW5nbGVIZWFkZXIv
TWFrZVNpbmdsZUhlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNThlNDllYzc3NmFjOTlmNzA5MDVmNmE1
MWQ3NjlkMDc1MzllNTRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5CkBAIC0wLDAgKzEsMjcx
IEBACisjIS91c3IvYmluL3B5dGhvbgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMKKyMgU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkKKyMK
KyMgQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisjCisjIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
KyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9y
dCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9y
dCBzeXMKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K2NsYXNzIEhlYWRlclByZWZpeCggb2JqZWN0ICk6CisJX190ZW1wbGF0ZSAJCQk9ICggJy8vXG4n
CisJCQkJCQkJJy8vIHtmaWxlfVxuJworCQkJCQkJCScvL1xuJworCQkJCQkJCScvLyB7bWV0YV9k
YXRhfVxuJworCQkJCQkJCScvL1xuJworCQkJCQkJCScvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFw
cGxlIEluYy5cbicKKwkJCQkJCQknLy9cbicKKwkJCQkJCQknLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7XG4nCisJCQkJCQkJ
Jy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS5cbicKKwkJCQkJCQknLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0XG4nCisJCQkJCQkJJy8vXG4nCisJCQkJCQkJJy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbicKKwkJCQkJCQknLy9cbicKKwkJCQkJCQkn
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZVxuJworCQkJCQkJCScvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLFxuJworCQkJCQkJCScvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC5cbicKKwkJCQkJCQknLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuJworCQkJCQkJCScvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbicKKwkJCQkJCQknLy9cbicKKwkJCQkJCQknXG4n
ICkKKworCV9fdGVtcGxhdGVfY29tbWl0CT0JJ0F1dG9nZW5lcmF0ZWQgZnJvbSBjb21taXQge2Nv
bW1pdH0uJworCV9fdGVtcGxhdGVfZGF0ZQkJPQknQXV0b2dlbmVyYXRlZCBvbiAlQiAlZCwgJVku
JworCisJZGVmIF9faW5pdF9fKCBzZWxmLCBmaWxlICk6CisJCXNlbGYuX19maWxlID0gZmlsZQor
CisJZGVmIF9fc3RyX18oIHNlbGYgKToKKwkJcmV0dXJuIHNlbGYuX190ZW1wbGF0ZS5mb3JtYXQo
IGZpbGUgPSBzZWxmLl9fZmlsZSwgbWV0YV9kYXRhID0gc2VsZi5fX21ldGFfZGF0YV9zdHJpbmco
KSApCisKKwlkZWYgX19nZXRfY29tbWl0X2hhc2goIHNlbGYgKToKKwkJZ2l0X2NvbW1pdF9oYXNo
ID0gTm9uZQorCisJCXRyeToKKwkJCWdpdF9kaXIJCQk9IG9zLnBhdGguZGlybmFtZSggb3MucGF0
aC5yZWFscGF0aCggX19maWxlX18gKSApCisJCQlwcm9jIAkJCT0gc3VicHJvY2Vzcy5Qb3Blbigg
WyAnZ2l0JywgJ3Jldi1wYXJzZScsICdIRUFEJyBdLCBjd2QgPSBnaXRfZGlyLCBzdGRvdXQgPSBz
dWJwcm9jZXNzLlBJUEUsIHN0ZGVyciA9IHN1YnByb2Nlc3MuUElQRSApCisJCQlnaXRfY29tbWl0
X2hhc2ggPSBwcm9jLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCAndXRmLTgnLCAncmVwbGFjZScgKS5z
dHJpcCgpCisJCWV4Y2VwdDoKKwkJCWxvZ2dpbmcuZXJyb3IoICdGYWlsZWQgdG8gZGV0ZXJtaW5l
IGdpdCBjb21taXQgaGFzaCEnICkKKwkJCXBhc3MKKworCQlyZXR1cm4gZ2l0X2NvbW1pdF9oYXNo
CisKKwlkZWYgX19nZXRfY29tbWl0X3N0cmluZyggc2VsZiApOgorCQltZXRhX2RhdGEJCT0gTm9u
ZQorCQlnaXRfY29tbWl0X2hhc2gJPSBzZWxmLl9fZ2V0X2NvbW1pdF9oYXNoKCkKKworCQlpZiBn
aXRfY29tbWl0X2hhc2g6CisJCQltZXRhX2RhdGEgPSBzZWxmLl9fdGVtcGxhdGVfY29tbWl0LmZv
cm1hdCggY29tbWl0ID0gZ2l0X2NvbW1pdF9oYXNoICkKKworCQlyZXR1cm4gbWV0YV9kYXRhCisK
KwlkZWYgX19nZXRfZGF0ZV9zdHJpbmcoIHNlbGYgKToKKwkJdG9kYXkgPSBkYXRldGltZS5kYXRl
LnRvZGF5KCkKKyAKKwkJcmV0dXJuIHRvZGF5LnN0cmZ0aW1lKCBzZWxmLl9fdGVtcGxhdGVfZGF0
ZSApCisKKwlkZWYgX19tZXRhX2RhdGFfc3RyaW5nKCBzZWxmICk6CisJCW1ldGFfZGF0YSA9IHNl
bGYuX19nZXRfY29tbWl0X3N0cmluZygpCisKKwkJaWYgbm90IG1ldGFfZGF0YToKKwkJCW1ldGFf
ZGF0YSA9IHNlbGYuX19nZXRfZGF0ZV9zdHJpbmcoKQorCisJCXJldHVybiBtZXRhX2RhdGEKKwor
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIFNp
bmdsZUhlYWRlciggb2JqZWN0ICk6CisJX19wcmFnbWFfb25jZSA9ICcjcHJhZ21hIG9uY2Vcblxu
JworCisJZGVmIF9faW5pdF9fKCBzZWxmICk6CisJCXNlbGYuX19oZWFkZXJfcGF0aHMgPSBsaXN0
KCkKKworCWRlZiBfX3N0cl9fKCBzZWxmICk6CisJCXJldHVybiBzZWxmLnByb2Nlc3MoKQorCisJ
ZGVmIGFwcGVuZCggc2VsZiwgaGVhZGVyX3BhdGggKToKKwkJc2VsZi5fX2hlYWRlcl9wYXRocy5h
cHBlbmQoIGhlYWRlcl9wYXRoICkKKworCWRlZiBwcm9jZXNzKCBzZWxmICk6CisJCW91dF9oZWFk
ZXIgCQkJCT0gc2VsZi5fX3ByYWdtYV9vbmNlCisKKwkJc2VsZi5fX2luY2x1ZGVkX2hlYWRlcnMJ
PSBzZXQoKQorCQlzZWxmLl9fYmFzZV9wYXRoIAkJPSBsaXN0KCkKKworCQlmb3IgaGVhZGVyX3Bh
dGggaW4gc2VsZi5fX2hlYWRlcl9wYXRoczoKKwkJCW91dF9oZWFkZXIgKz0gc2VsZi5fX3Byb2Nl
c3NfaGVhZGVyKCBoZWFkZXJfcGF0aCApCisKKwkJcmV0dXJuIHNlbGYuX19zdHJpcF9lbXB0eV9s
aW5lcyggb3V0X2hlYWRlciApCisKKwlkZWYgX19yZWFkX2hlYWRlciggc2VsZiwgcGF0aCApOgor
CQlwYXRoID0gb3MucGF0aC5yZWFscGF0aCggcGF0aCApCisKKwkJdHJ5OgorCQkJZiA9IG9wZW4o
IHBhdGgsICdyJyApCisJCWV4Y2VwdDoKKwkJCXJhaXNlIFJ1bnRpbWVFcnJvciggJ0ZhaWxlZCB0
byBvcGVuIGZpbGUgXCInICsgcGF0aCArICdcIiBmb3IgcmVhZCEnICkKKworCQlyZXR1cm4gZi5y
ZWFkKCkKKworCWRlZiBfX3N0cmlwX3ByYWdtYV9vbmNlKCBzZWxmLCBoZWFkZXIgKToKKwkJcmV0
dXJuIHJlLnN1YiggJ1xccyojcHJhZ21hIG9uY2VccypcXC9cXC8tKlxcbicsICcnLCBoZWFkZXIg
KQorCisJZGVmIF9fc3RyaXBfY29tbWVudHMoIHNlbGYsIGhlYWRlciApOgorCQlyZXR1cm4gcmUu
c3ViKCAnXi8vLipcXG4nLCAnJywgaGVhZGVyLCBmbGFncyA9IHJlLk1VTFRJTElORSApCisKKwlk
ZWYgX19zdHJpcF9lbXB0eV9saW5lcyggc2VsZiwgaGVhZGVyICk6CisJCXJldHVybiByZS5zdWIo
ICdcXG5cXG4rJywgJ1xcblxcbicsIGhlYWRlciwgZmxhZ3MgPSByZS5NVUxUSUxJTkUgKQorCisJ
ZGVmIF9fc3Vic3RpdHV0ZV9pbmNsdWRlX2RpcmVjdGl2ZSggc2VsZiwgbWF0Y2ggKToKKwkJaGVh
ZGVyX3BhdGggPSBtYXRjaC5ncm91cCggJ0hFQURFUl9QQVRIJyApCisKKwkJbG9nZ2luZy5pbmZv
KCAnXHRTdWJzdGl0dXRpbmcgXCInICsgaGVhZGVyX3BhdGggKyAnXCIuLi4nICkKKworCQlyZXR1
cm4gc2VsZi5fX3Byb2Nlc3NfaGVhZGVyKCBvcy5wYXRoLmpvaW4oIHNlbGYuX19iYXNlX3BhdGhb
LTFdLCBoZWFkZXJfcGF0aCApICkKKworCWRlZiBfX3Byb2Nlc3NfaW5jbHVkZV9kaXJlY3RpdmVz
KCBzZWxmLCBoZWFkZXIgKToKKwkJcmV0dXJuIHJlLnN1YiggJ15cXHMqI2luY2x1ZGVcXHNcXCIo
P1A8SEVBREVSX1BBVEg+XFxTKilcXCInLCBzZWxmLl9fc3Vic3RpdHV0ZV9pbmNsdWRlX2RpcmVj
dGl2ZSwgaGVhZGVyLCBmbGFncyA9IHJlLk1VTFRJTElORSApCisKKwlkZWYgX19wcm9jZXNzX2Zv
dW5kYXRpb25fZGlyZWN0aXZlcyggc2VsZiwgaGVhZGVyICk6CisJCWlmIGhlYWRlci5maW5kKCIj
aW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4iKSAhPSAtMToKKwkJCWxvZ2dpbmcu
aW5mbyggJ1x0U3Vic3RpdHV0aW5nIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPi4uLicgKQor
CQkJcmV0dXJuIGhlYWRlci5yZXBsYWNlKCIjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
LmhwcD4iLCBzZWxmLl9fcHJvY2Vzc19oZWFkZXIoIG9zLnBhdGguam9pbiggc2VsZi5fX2Jhc2Vf
cGF0aFstMV0sICIuLi9Gb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwIiApICkgKQorCQlyZXR1cm4g
aGVhZGVyCisKKworCWRlZiBfX3Byb2Nlc3NfaGVhZGVyKCBzZWxmLCBoZWFkZXJfcGF0aCApOgor
CQlvdXRfaGVhZGVyID0gJycJCQorCisJCWhlYWRlcl9wYXRoID0gb3MucGF0aC5yZWFscGF0aCgg
aGVhZGVyX3BhdGggKQorCisJCWlmIG5vdCBoZWFkZXJfcGF0aCBpbiBzZWxmLl9faW5jbHVkZWRf
aGVhZGVyczoKKwkJCWxvZ2dpbmcuaW5mbyggJ1Byb2Nlc3NpbmcgXCInICsgaGVhZGVyX3BhdGgg
KyAnXCIuLi4nICkKKworCQkJc2VsZi5fX2Jhc2VfcGF0aC5hcHBlbmQoIG9zLnBhdGguZGlybmFt
ZSggaGVhZGVyX3BhdGggKSApCisJCQlzZWxmLl9faW5jbHVkZWRfaGVhZGVycy5hZGQoIGhlYWRl
cl9wYXRoICkKKwkJCQorCQkJb3V0X2hlYWRlciA9IHNlbGYuX19yZWFkX2hlYWRlciggaGVhZGVy
X3BhdGggKQorCQkJb3V0X2hlYWRlciA9IHNlbGYuX19zdHJpcF9wcmFnbWFfb25jZSggb3V0X2hl
YWRlciApCisJCQlvdXRfaGVhZGVyID0gc2VsZi5fX3N0cmlwX2NvbW1lbnRzKCBvdXRfaGVhZGVy
ICkKKwkJCW91dF9oZWFkZXIgPSBzZWxmLl9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2ZXMoIG91
dF9oZWFkZXIgKQorCQkJb3V0X2hlYWRlciA9IHNlbGYuX19wcm9jZXNzX2ZvdW5kYXRpb25fZGly
ZWN0aXZlcyggb3V0X2hlYWRlciApCisKKwkJCXNlbGYuX19iYXNlX3BhdGgucG9wKCkKKwkJZWxz
ZToKKwkJCWxvZ2dpbmcuaW5mbyggJ1x0U2tpcHBpbmcgXCInICsgaGVhZGVyX3BhdGggKyAnXCIu
Li4nICkKKworCQlyZXR1cm4gb3V0X2hlYWRlcgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVmIGNyZWF0ZV9hcmd1bWVudF9wYXJzZXIoKToKKwlw
YXJzZXIgCQkJPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisJYmFzZV9wYXRoIAkJPSBvcy5w
YXRoLmRpcm5hbWUoIG9zLnBhdGgucmVhbHBhdGgoIF9fZmlsZV9fICkgKQorCW91dHB1dF9wYXRo
CQk9IG9zLnBhdGguam9pbiggYmFzZV9wYXRoLCAnTWV0YWwuaHBwJyApCisKKwlwYXJzZXIuYWRk
X2FyZ3VtZW50KCAnLW8nLCAnLS1vdXRwdXQnLCAgZGVzdCA9ICdvdXRwdXRfcGF0aCcsIG1ldGF2
YXIgPSAnUEFUSCcsIGRlZmF1bHQgPSBvdXRwdXRfcGF0aCwgaGVscCA9ICdPdXRwdXQgcGF0aCBm
b3IgdGhlIHNpbmdsZSBoZWFkZXIgZmlsZS4nICkKKwlwYXJzZXIuYWRkX2FyZ3VtZW50KCAnLXYn
LCAnLS12ZXJib3NlJywgYWN0aW9uID0gJ3N0b3JlX3RydWUnLCAgaGVscCA9ICdTaG93IHZlcmJv
c2Ugb3V0cHV0LicgKQorCXBhcnNlci5hZGRfYXJndW1lbnQoIGRlc3QgPSAnaGVhZGVyX3BhdGhz
JywgbWV0YXZhciA9ICdIRUFERVJfRklMRScsIG5hcmdzPScrJywgaGVscCA9ICdJbnB1dCBoZWFk
ZXIgZmlsZS4nICkKKworCXJldHVybiBwYXJzZXIKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlZiBwYXJzZV9hcmd1bWVudHMoKToKKwlwYXJzZXIJ
PSBjcmVhdGVfYXJndW1lbnRfcGFyc2VyKCkKKwlhcmdzCT0gcGFyc2VyLnBhcnNlX2FyZ3MoKQor
CisJaWYgYXJncy52ZXJib3NlOgorCQlsb2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKCBsb2dn
aW5nLklORk8gKQorCWVsc2U6CisJCWxvZ2dpbmcuZ2V0TG9nZ2VyKCkuc2V0TGV2ZWwoIGxvZ2dp
bmcuRVJST1IgKQorCisJcmV0dXJuIGFyZ3MKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlZiBtYWtlX2hlYWRlciggYXJncyApOgorCXByZWZpeCA9
IEhlYWRlclByZWZpeCggb3MucGF0aC5iYXNlbmFtZSggYXJncy5vdXRwdXRfcGF0aCApICkKKwlo
ZWFkZXIgPSBTaW5nbGVIZWFkZXIoKQorCQorCWZvciBoZWFkZXJfcGF0aCBpbiBhcmdzLmhlYWRl
cl9wYXRoczoKKwkJaGVhZGVyLmFwcGVuZCggaGVhZGVyX3BhdGggKQorCisJcmV0dXJuIHN0cigg
cHJlZml4ICkgKyBzdHIoIGhlYWRlciApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitkZWYgbWFrZV9kaXIoIHBhdGggKToKKwl0cnk6CisJCWlmIG5v
dCBvcy5wYXRoLmV4aXN0cyggcGF0aCApOgorCQkJb3MubWFrZWRpcnMoIHBhdGggKQorCWV4Y2Vw
dCBvcy5lcnJvcjoKKwkJcGFzcworCWV4Y2VwdDoKKwkJcmFpc2UKKworIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlZiB3cml0ZV9oZWFkZXIoIGFyZ3Ms
IGNvbnRlbnQgKToKKwlwYXRoID0gb3MucGF0aC5yZWFscGF0aCggYXJncy5vdXRwdXRfcGF0aCAp
CisKKwlsb2dnaW5nLmluZm8oICdXcml0aW5nIFwiJyArIHBhdGggKyAnXCIuLi4nICkKKworCW1h
a2VfZGlyKCBvcy5wYXRoLmRpcm5hbWUoIHBhdGggKSApCisKKwl0cnk6CisJCWYgPSBvcGVuKCBw
YXRoLCAndycgKQorCWV4Y2VwdDoKKwkJcmFpc2UgUnVudGltZUVycm9yKCAnRmFpbGVkIHRvIG9w
ZW4gZmlsZSBcIicgKyBwYXRoICsgJ1wiIGZvciB3cml0ZSEnICkKKworCWYud3JpdGUoIGNvbnRl
bnQgKQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKwlyZXN1bHQgPSAtMQorCQorCXRyeToKKwkJaWYg
c3lzLmdldGRlZmF1bHRlbmNvZGluZygpLmxvd2VyKCkgPT0gJ2FzY2lpJzoKKwkJCXJlbG9hZCgg
c3lzICkKKwkJCXN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoICd1dGYtOCcgKQorCisJCWFyZ3MgCT0g
cGFyc2VfYXJndW1lbnRzKCkKKwkJaGVhZGVyIAk9IG1ha2VfaGVhZGVyKCBhcmdzICkKKworCQl3
cml0ZV9oZWFkZXIoIGFyZ3MsIGhlYWRlciApCisKKwkJcmVzdWx0ID0gMAorCisJZXhjZXB0ICgg
S2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQgKToKKwkgCXBhc3MKKwlleGNlcHQ6CisJIAly
YWlzZQorCisJc3lzLmV4aXQoIHJlc3VsdCApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGM1MGQyMTIyOTAzNDFjY2E3MThjNWI1YWM3YTIwMGRiNWQxZjhjNGYu
LmI5M2JmMzI5MjYwNjhjOWI5OGVjNDVjZGNhOGE4YzgzNzYzOWUwNDAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
Mi0wMi0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXZWJHUFVdIEludGVncmF0ZSBNZXRhbC1jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY5NworCisgICAgICAgIFJldmlld2VkIGJ5IERl
YW4gSmFja3Nvbi4KKworICAgICAgICBNZXRhbC1jcHAgZmlsZXMgc2hvdWxkIG5vdCBiZSBzdHls
ZS1jaGVja2VkLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5
OgorCiAyMDIyLTAyLTE3ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIEVuc3VyZSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhIHBlcmZvcm1zIG1vdmUg
b3BlcmF0aW9uIGJhc2VkIG9uIGRhdGEgdHlwZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlci5weQppbmRleCBkZDU1ZjgzOTI4NjBhYmZmZGY0NTk5MDZlMTIyZWZmNjZhMWMwYzA1
Li5hYjc4OWQ3MWM5YTExZWYwYjNiZDdhZDZiNjcyZDI3ZjI4ZTViYTMwIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC00MDIsNyArNDAyLDggQEAgX1NLSVBQRURf
RklMRVNfV0lUSF9XQVJOSU5HID0gWwogICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYktp
dCcsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICd3cGUnLCAnd2Via2l0
LXdlYi1leHRlbnNpb24uaCcpLAogICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYktpdCcs
ICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICd3cGUnLCAnRE9NJywgJ3dl
YmtpdGRvbS5oJyksCiAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViR1BVJywgJ1dlYkdQ
VScsICdXZWJHUFUuaCcpLAotICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkdQVScsICdX
ZWJHUFUnLCAnV2ViR1BVRXh0LmgnKV0KKyAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJH
UFUnLCAnV2ViR1BVJywgJ1dlYkdQVUV4dC5oJyksCisgICAgb3MucGF0aC5qb2luKCdTb3VyY2Un
LCAnV2ViR1BVJywgJ1dlYkdQVScsICdtZXRhbC1jcHAnLCAnU2luZ2xlSGVhZGVyJywgJ01ha2VT
aW5nbGVIZWFkZXIucHknKV0KIAogIyBGaWxlcyB0byBza2lwIHRoYXQgYXJlIG1vcmUgY29tbW9u
IG9yIG9idmlvdXMuCiAjCg==
</data>
<flag name="commit-queue"
          id="479483"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452458</attachid>
            <date>2022-02-17 17:50:05 -0800</date>
            <delta_ts>2022-02-17 20:04:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236697-20220217175003.patch</filename>
            <type>text/plain</type>
            <size>982585</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDljOWY1YTI2YjJmNjhhYWY2
ODM5MjkwY2U3YTcxYTRlYjJmNGI4MzkuLmFmMGE5OGExZjRmMmU2MmY4MTM0NTM0NTUyOGY3NDkx
YjgwZTM3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDIyLTAyLTE3ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW50
ZWdyYXRlIE1ldGFsLWNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2Njk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisg
ICAgICAgIE1ldGFsLWNwcCBpcyBhIGxvdy1vdmVyaGVhZCBDKysgaW50ZXJmYWNlIGZvciBNZXRh
bC4KKyAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL21ldGFsL2NwcC8KKworICAg
ICAgICBNZXRhbC1jcHAgaXNuJ3QgYSBsaWJyYXJ5IHBlci1zZSwgYnV0IGlzIGluc3RlYWQganVz
dCBhIGNvbGxlY3Rpb24gb2YgZmlsZXMgd2hpY2ggdXNlcnMKKyAgICAgICAgYXJlIHN1cHBvc2Vk
IHRvIGp1c3QgY29weSBpbnRvIHRoZWlyIHByb2plY3QuIFRoaXMgZG9lcyBqdXN0IHRoYXQsIGFu
ZCBob29rcyB1cCBhbGwgdGhlCisgICAgICAgIG5lY2Vzc2FyeSBmbGFncyBhbmQgcGF0aHMgYW5k
IGV2ZXJ5dGhpbmcuCisKKyAgICAgICAgVGhpcyB1c2VzIHRoZSAic2luZ2xlIGhlYWRlciBhbHRl
cm5hdGl2ZSIgZGVzY3JpYmVkIG9uIHRoYXQgd2VicGFnZSwgYW5kIGNyZWF0ZXMgdGhlCisgICAg
ICAgIHNpbmdsZSBmaWxlIGFzIGEgYnVpbGQgc3RlcC4KKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL1dlYkdQVS54Y2NvbmZpZzoKKyAgICAgICAgKiBXZWJHUFUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJHUFUvTWV0YWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJHUFUvY29uZmlnLmg6CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNBcnJheS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvRm91bmRhdGlvbi9OU0J1bmRsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGEuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcDogQWRk
ZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90aWZpY2F0aW9u
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTnVt
YmVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
T2JqQ1J1bnRpbWUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNPYmplY3QuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNQcml2YXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TUHJvY2Vzc0luZm8uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1N0cmluZy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1R5cGVzLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVVJMLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9MSUNFTlNFLnR4dDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1h
bmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50RW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAg
ICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmluYXJ5QXJjaGl2ZS5ocHA6IEFkZGVkLgor
ICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFzcy5o
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlTWFu
YWdlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2Fw
dHVyZVNjb3BlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExDb21tYW5kQnVmZmVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQ29tbWFuZFF1ZXVlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBw
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvdW50ZXJzLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5j
aWwuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERldmlj
ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHJhd2Fi
bGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFt
aWNMaWJyYXJ5LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExFdmVudC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RmVuY2UuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1
bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcDogQWRkZWQuCisg
ICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvblN0aXRjaGluZy5ocHA6
IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJpZGdl
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFwLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVjdENv
bW1hbmRCdWZmZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpYnJhcnkuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHA6
IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUGlwZWxpbmUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFBpeGVsRm9ybWF0LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExQcml2YXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBhc3MuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZS5o
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFzcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMU2FtcGxlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFRleHR1cmUuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNpYmxlRnVu
Y3Rpb25UYWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TWV0YWwuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUv
Q0FEZWZpbmVzLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9RdWFydHpD
b3JlL0NBTWV0YWxEcmF3YWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1j
cHAvUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0
YWwtY3BwL1F1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvUkVBRE1FLm1kOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3Bw
L1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEhlYWRl
clByZWZpeCk6CisgICAgICAgIChIZWFkZXJQcmVmaXguX19pbml0X18pOgorICAgICAgICAoSGVh
ZGVyUHJlZml4Ll9fc3RyX18pOgorICAgICAgICAoSGVhZGVyUHJlZml4Ll9fZ2V0X2NvbW1pdF9o
YXNoKToKKyAgICAgICAgKEhlYWRlclByZWZpeC5fX2dldF9jb21taXRfc3RyaW5nKToKKyAgICAg
ICAgKEhlYWRlclByZWZpeC5fX2dldF9kYXRlX3N0cmluZyk6CisgICAgICAgIChfX21ldGFfZGF0
YV9zdHJpbmcpOgorICAgICAgICAoU2luZ2xlSGVhZGVyKToKKyAgICAgICAgKFNpbmdsZUhlYWRl
ci5fX2luaXRfXyk6CisgICAgICAgIChTaW5nbGVIZWFkZXIuX19zdHJfXyk6CisgICAgICAgIChT
aW5nbGVIZWFkZXIuYXBwZW5kKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5wcm9jZXNzKToKKyAg
ICAgICAgKFNpbmdsZUhlYWRlci5fX3JlYWRfaGVhZGVyKToKKyAgICAgICAgKFNpbmdsZUhlYWRl
ci5fX3N0cmlwX3ByYWdtYV9vbmNlKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX2Nv
bW1lbnRzKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX2VtcHR5X2xpbmVzKToKKyAg
ICAgICAgKFNpbmdsZUhlYWRlci5fX3N1YnN0aXR1dGVfaW5jbHVkZV9kaXJlY3RpdmUpOgorICAg
ICAgICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2ZXMpOgorICAgICAg
ICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19mb3VuZGF0aW9uX2RpcmVjdGl2ZXMpOgorICAgICAg
ICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19oZWFkZXIpOgorICAgICAgICAoY3JlYXRlX2FyZ3Vt
ZW50X3BhcnNlcik6CisgICAgICAgIChwYXJzZV9hcmd1bWVudHMpOgorICAgICAgICAobWFrZV9o
ZWFkZXIpOgorICAgICAgICAobWFrZV9kaXIpOgorICAgICAgICAod3JpdGVfaGVhZGVyKToKKwog
MjAyMi0wMi0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWJHUFVdIEFkZCBhIHBsYXlncm91bmQgZXhhbXBsZSB0YXJnZXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnIGIvU291cmNl
L1dlYkdQVS9Db25maWd1cmF0aW9ucy9XZWJHUFUueGNjb25maWcKaW5kZXggZDQ1NTllZTk4YjI2
NDFiNTdlZDNiMDZlZjNjZTI2YjZiMjNkY2NiYy4uZjk0NmU2ZmZhNjBlNzYzNjQ2N2RmNjRiNWY5
ZTAwODkzNWIwOGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9X
ZWJHUFUueGNjb25maWcKKysrIGIvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9XZWJHUFUu
eGNjb25maWcKQEAgLTIzLDcgKzIzLDEwIEBACiAKICNpbmNsdWRlICJWZXJzaW9uLnhjY29uZmln
IgogCitXQVJOSU5HX0NGTEFHUyA9IC1XYWxsIC1XZXh0cmEgLVdjYXN0LXF1YWwgLVdjaGFyLXN1
YnNjcmlwdHMgLVdjb25kaXRpb25hbC11bmluaXRpYWxpemVkIC1XZXh0cmEtdG9rZW5zIC1XZm9y
bWF0PTIgLVdpbml0LXNlbGYgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5v
cmV0dXJuIC1XcG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3dyaXRlLXN0cmluZ3Mg
LVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMgLVd0YXV0b2xvZ2ljYWwtY29tcGFyZSAtV2ltcGxpY2l0
LWZhbGx0aHJvdWdoIC1XdmxhIC1XbGl0ZXJhbC1jb252ZXJzaW9uIC1XdGhyZWFkLXNhZmV0eSAt
V25vLXR5cGVkZWYtcmVkZWZpbml0aW9uIC1Xbm8taWdub3JlZC1xdWFsaWZpZXJzOworCiBIRUFE
RVJfU0VBUkNIX1BBVEhTID0gIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVk
ZSIgJChpbmhlcml0ZWQpOworU1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViR1BVL21ldGFsLWNwcCAkKGluaGVyaXRlZCk7
CiAKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIApAQCAtNjksMyArNzIsNyBAQCBNT0RV
TEVNQVBfRklMRSA9IFdlYkdQVS9XZWJHUFUubW9kdWxlbWFwOwogCiBTVVBQT1JUU19URVhUX0JB
U0VEX0FQSSA9IFlFUzsKIFRBUElfVkVSSUZZX01PREUgPSBQZWRhbnRpYzsKKworT1RIRVJfTERG
TEFHUyA9ICQoaW5oZXJpdGVkKSAtWGxpbmtlciAtbm9fd2Fybl9pbml0czsKKworSEVBREVSTUFQ
X0lOQ0xVREVTX1BST0pFQ1RfSEVBREVSUyA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzA0N2NjNjkxM2ZhYzRhNmUzNjE1ZjNl
NTg0YTBiMzZjNDgxM2E5MS4uM2QwMjhkOWI0YWUyY2QwMDVkNmNiOWQ2ZjNkZTZmYjIwZjY0NGMy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMyw2ICsxMyw3IEBACiAJCTFDMkNFREVFMjcxRThBNzMwMEVEQzE2RiAvKiBNZXRhbC5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzJDRURFRDI3MUU4QTczMDBFREMxNkYgLyogTWV0YWwuZnJhbWV3b3JrICovOyB9OwogCQkx
QzUzMTlDMDI3QkRDNkNDMDBDRDEyN0UgLyogbWFpbi5zd2lmdCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTMxOUJGMjdCREM2Q0MwMENEMTI3RSAvKiBt
YWluLnN3aWZ0ICovOyB9OwogCQkxQzUzMTlDNTI3QkRDNzI3MDBDRDEyN0UgLyogV2ViR1BVLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDRUJEN0UzMjcxNkFGQkEwMEE1MjU0RCAvKiBXZWJHUFUuZnJhbWV3b3JrICovOyB9OworCQkx
QzUzMUEyNTI3QkRERjU1MDBDRDEyN0UgLyogTWV0YWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1MzFBMjQyN0JEREY1NTAwQ0QxMjdFIC8qIE1l
dGFsLmNwcCAqLzsgfTsKIAkJMUM1QUNBOTQyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBOTIy
NzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tICovOyB9OwogCQkxQzVBQ0FCNjI3M0E0MjZE
MDA5NUY4RDUgLyogUmVuZGVyUGlwZWxpbmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0E5ODI3M0E0MjZEMDA5NUY4RDUgLyogUmVuZGVyUGlw
ZWxpbmUubW0gKi87IH07CiAJCTFDNUFDQUJCMjczQTQyNkQwMDk1RjhENSAvKiBCdWZmZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVBQ0E5RDI3
M0E0MjZEMDA5NUY4RDUgLyogQnVmZmVyLm1tICovOyB9OwpAQCAtOTUsNiArOTYsOTEgQEAKIAkJ
MUM1MzE5QkQyN0JEQzZDQjAwQ0QxMjdFIC8qIENvbW1hbmRMaW5lUGxheWdyb3VuZCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gQ29tbWFuZExpbmVQbGF5
Z3JvdW5kOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzUzMTlCRjI3
QkRDNkNDMDBDRDEyN0UgLyogbWFpbi5zd2lmdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuc3dpZnQ7IHBhdGggPSBtYWluLnN3aWZ0
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzUzMTlDQTI3QkRENzAwMDBDRDEyN0Ug
LyogQ29tbWFuZExpbmVQbGF5Z3JvdW5kLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IENvbW1hbmRM
aW5lUGxheWdyb3VuZC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzE5Q0QyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFR5cGVzLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBN
VExUeXBlcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUNFMjdCRERE
NkUwMENEMTI3RSAvKiBNVExSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
aDsgcGF0aCA9IE1UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUNGMjdCRERENkUwMENEMTI3RSAvKiBNVExJbmRpcmVj
dENvbW1hbmRFbmNvZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExJbmRpcmVjdENvbW1hbmRF
bmNvZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDAyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTENvbXB1dGVQaXBlbGluZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRM
Q29tcHV0ZVBpcGVsaW5lLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5
RDEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uSGFuZGxlLmhwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBh
dGggPSBNVExGdW5jdGlvbkhhbmRsZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNTMxOUQyMjdCRERENkUwMENEMTI3RSAvKiBNVExEcmF3YWJsZS5ocHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBw
YXRoID0gTVRMRHJhd2FibGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
MTlEMzI3QkRERDZFMDBDRDEyN0UgLyogTVRMRHluYW1pY0xpYnJhcnkuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTER5bmFtaWNMaWJyYXJ5LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1MzE5RDQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENvbXB1dGVQYXNzLmhwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lmg7IHBhdGggPSBNVExDb21wdXRlUGFzcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNTMxOUQ1MjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVz
LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDYyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TFBpcGVsaW5lLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExQaXBlbGluZS5ocHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQ3MjdCRERENkUwMENEMTI3RSAvKiBNVExSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmVuZGVyQ29tbWFuZEVu
Y29kZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEODI3QkRERDZF
MDBDRDEyN0UgLyogTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBN
VExCbGl0Q29tbWFuZEVuY29kZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzUzMTlEOTI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ2FwdHVyZU1hbmFnZXIuaHBwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
aDsgcGF0aCA9IE1UTENhcHR1cmVNYW5hZ2VyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzE5REEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENvbW1hbmRFbmNvZGVyLmhwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmg7IHBhdGggPSBNVExDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNTMxOURCMjdCRERENkUwMENEMTI3RSAvKiBNZXRhbC5ocHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5oOyBwYXRoID0gTWV0YWwuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
MTlEQzI3QkRERDZFMDBDRDEyN0UgLyogTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuaDsgcGF0aCA9IE1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5REQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNTMxOURFMjdCRERENkUwMENEMTI3RSAvKiBNVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNv
ZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVy
LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5REYyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1UTFJhc3Rlcml6YXRpb25SYXRlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExSYXN0
ZXJpemF0aW9uUmF0ZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUUw
MjdCRERENkUwMENEMTI3RSAvKiBNVExMaW5rZWRGdW5jdGlvbnMuaHBwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0
aCA9IE1UTExpbmtlZEZ1bmN0aW9ucy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNTMxOUUxMjdCRERENkUwMENEMTI3RSAvKiBNVExUZXh0dXJlLmhwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBh
dGggPSBNVExUZXh0dXJlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5
RTIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFNhbXBsZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1U
TFNhbXBsZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFMzI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMRGVwdGhTdGVuY2lsLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExE
ZXB0aFN0ZW5jaWwuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFNDI3
QkRERDZFMDBDRDEyN0UgLyogTVRMQXJndW1lbnRFbmNvZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBNVExBcmd1bWVudEVuY29kZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzUzMTlFNTI3QkRERDZFMDBDRDEyN0UgLyogTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUU2MjdCRERENkUwMENEMTI3RSAvKiBN
VExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMVmlzaWJsZUZ1
bmN0aW9uVGFibGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFNzI3
QkRERDZFMDBDRDEyN0UgLyogTVRMUHJpdmF0ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUHJp
dmF0ZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUU4MjdCRERENkUw
MENEMTI3RSAvKiBNVExSZXNvdXJjZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmVzb3VyY2Uu
aHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFOTI3QkRERDZFMDBDRDEy
N0UgLyogTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzUzMTlFQTI3QkRERDZFMDBDRDEyN0UgLyogTVRMRGV2aWNlLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBNVExEZXZpY2UuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFQjI3
QkRERDZFMDBDRDEyN0UgLyogTVRMQXJndW1lbnQuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEFy
Z3VtZW50LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RUMyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uTG9nLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExGdW5j
dGlvbkxvZy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUVEMjdCRERE
NkUwMENEMTI3RSAvKiBNVExCdWZmZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEJ1ZmZlci5o
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUVFMjdCRERENkUwMENEMTI3
RSAvKiBNVExSZW5kZXJQYXNzLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExSZW5kZXJQYXNzLmhw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RUYyN0JEREQ2RTAwQ0QxMjdF
IC8qIE1UTEhlYXAuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEhlYXAuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGMDI3QkRERDZFMDBDRDEyN0UgLyogTVRMVmVydGV4
RGVzY3JpcHRvci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMVmVydGV4RGVzY3JpcHRvci5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUYxMjdCRERENkUwMENEMTI3RSAv
KiBNVExGdW5jdGlvblN0aXRjaGluZy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRnVuY3Rpb25T
dGl0Y2hpbmcuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGMjI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMTGlicmFyeS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMTGlicmFy
eS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUYzMjdCRERENkUwMENE
MTI3RSAvKiBNVExQaXhlbEZvcm1hdC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUGl4ZWxGb3Jt
YXQuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGNDI3QkRERDZFMDBD
RDEyN0UgLyogTVRMRmVuY2UuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEZlbmNlLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMSW5kaXJlY3RD
b21tYW5kQnVmZmVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjYy
N0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlbmRlclBpcGVsaW5lLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBNVExSZW5kZXJQaXBlbGluZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NTMxOUY3MjdCRERENkUwMENEMTI3RSAvKiBNVExDb21tYW5kUXVldWUuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTENvbW1hbmRRdWV1ZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNTMxOUY4MjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE1UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTMxOUY5MjdCRERENkUwMENEMTI3RSAvKiBNVExBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQWNjZWxl
cmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzUzMTlGQTI3QkRERDZFMDBDRDEyN0UgLyogTVRMQmxpdFBhc3MuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE1UTEJsaXRQYXNzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1MzE5RkIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEV2ZW50LmhwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBh
dGggPSBNVExFdmVudC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZD
MjdCRERENkUwMENEMTI3RSAvKiBNVExCaW5hcnlBcmNoaXZlLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBNVExCaW5hcnlBcmNoaXZlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzE5RkQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENhcHR1cmVTY29wZS5ocHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBw
YXRoID0gTVRMQ2FwdHVyZVNjb3BlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzE5RkUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5oOyBwYXRoID0gTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RkYyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEhlYWRl
ckJyaWRnZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMSGVhZGVyQnJpZGdlLmhwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMDAyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENv
dW50ZXJzLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDb3VudGVycy5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTAxMjdCRERENkUwMENEMTI3RSAvKiBNVExEZWZpbmVz
LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExEZWZpbmVzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1MzFBMDIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlc291cmNlU3RhdGVQ
YXNzLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExSZXNvdXJjZVN0YXRlUGFzcy5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTAzMjdCRERENkUwMENEMTI3RSAvKiBNVExD
b21tYW5kQnVmZmVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDb21tYW5kQnVmZmVyLmhwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMDUyN0JEREQ2RTAwQ0QxMjdFIC8q
IE5TU3RyaW5nLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU1N0cmluZy5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTA2MjdCRERENkUwMENEMTI3RSAvKiBOU0RpY3Rpb25h
cnkuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TRGljdGlvbmFyeS5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTMxQTA3MjdCRERENkUwMENEMTI3RSAvKiBOU0xvY2suaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE5TTG9jay5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNTMxQTA4MjdCRERENkUwMENEMTI3RSAvKiBOU1Byb2Nlc3NJbmZvLmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBOU1Byb2Nlc3NJbmZvLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzFBMDkyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRXJyb3IuaHBwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9
IE5TRXJyb3IuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwQTI3QkRE
RDZFMDBDRDEyN0UgLyogTlNPYmpDUnVudGltZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNPYmpD
UnVudGltZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTBCMjdCRERE
NkUwMENEMTI3RSAvKiBOU09iamVjdC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNPYmplY3QuaHBw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwQzI3QkRERDZFMDBDRDEyN0Ug
LyogTlNOb3RpZmljYXRpb24uaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TTm90aWZpY2F0aW9uLmhw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMEQyN0JEREQ2RTAwQ0QxMjdF
IC8qIE5TUHJpdmF0ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNQcml2YXRlLmhwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMEUyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TVVJM
LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU1VSTC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNTMxQTBGMjdCRERENkUwMENEMTI3RSAvKiBOU0F1dG9yZWxlYXNlUG9vbC5ocHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5oOyBwYXRoID0gTlNBdXRvcmVsZWFzZVBvb2wuaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzUzMUExMDI3QkRERDZFMDBDRDEyN0UgLyogTlNSYW5nZS5ocHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5oOyBwYXRoID0gTlNSYW5nZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNTMxQTExMjdCRERENkUwMENEMTI3RSAvKiBOU1R5cGVzLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBOU1R5cGVzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMTIyN0JE
REQ2RTAwQ0QxMjdFIC8qIE5TRGF0YS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNEYXRhLmhwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMTMyN0JEREQ2RTAwQ0QxMjdFIC8q
IE5TTnVtYmVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU051bWJlci5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTE0MjdCRERENkUwMENEMTI3RSAvKiBGb3VuZGF0aW9u
LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmg7IHBhdGggPSBGb3VuZGF0aW9uLmhwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1MzFBMTUyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRGF0ZS5ocHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5oOyBwYXRoID0gTlNEYXRlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzFBMTYyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRGVmaW5lcy5ocHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0g
TlNEZWZpbmVzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMTcyN0JE
REQ2RTAwQ0QxMjdFIC8qIE5TQnVuZGxlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0J1bmRsZS5o
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTE4MjdCRERENkUwMENEMTI3
RSAvKiBOU0VudW1lcmF0b3IuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TRW51bWVyYXRvci5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTE5MjdCRERENkUwMENEMTI3RSAv
KiBOU0FycmF5LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0FycmF5LmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMUEyN0JEREQ2RTAwQ0QxMjdFIC8qIFJFQURNRS5tZCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IG5ldC5kYXJp
bmdmaXJlYmFsbC5tYXJrZG93bjsgcGF0aCA9IFJFQURNRS5tZDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1MzFBMUMyN0JEREQ2RTAwQ0QxMjdFIC8qIFF1YXJ0ekNvcmUuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IFF1YXJ0ekNvcmUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMUExRDI3QkRERDZFMDBDRDEyN0UgLyogQ0FQcml2YXRlLmhwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7
IHBhdGggPSBDQVByaXZhdGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
MUExRTI3QkRERDZFMDBDRDEyN0UgLyogQ0FNZXRhbERyYXdhYmxlLmhwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBh
dGggPSBDQU1ldGFsRHJhd2FibGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzUzMUExRjI3QkRERDZFMDBDRDEyN0UgLyogQ0FEZWZpbmVzLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBDQURlZmluZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEyMDI3
QkRERDZFMDBDRDEyN0UgLyogTElDRU5TRS50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTElDRU5TRS50eHQ7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTIyMjdCRERENkUwMENEMTI3RSAvKiBNYWtlU2lu
Z2xlSGVhZGVyLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gTWFrZVNpbmdsZUhlYWRlci5weTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMjQyN0JEREY1NTAwQ0QxMjdFIC8qIE1l
dGFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1ldGFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1MzFBMkEyN0JERTA2NzAwQ0QxMjdFIC8qIE1ldGFsLmhwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lmg7IHBhdGggPSBNZXRhbC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNUFD
QTkyMjczQTQxQzIwMDk1RjhENSAvKiBJbnN0YW5jZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEluc3RhbmNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzVBQ0E5NjI3M0E0
MjZEMDA5NUY4RDUgLyogU3VyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdXJmYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNUFDQTk3MjczQTQy
NkQwMDk1RjhENSAvKiBTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjUsNiArMzEx
LDE1MyBAQAogCQkJcGF0aCA9IENvbW1hbmRMaW5lUGxheWdyb3VuZDsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07CisJCTFDNTMxOUNCMjdCRERENkUwMENEMTI3RSAvKiBtZXRhbC1j
cHAgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTMx
QTA0MjdCRERENkUwMENEMTI3RSAvKiBGb3VuZGF0aW9uICovLAorCQkJCTFDNTMxOUNDMjdCRERE
NkUwMENEMTI3RSAvKiBNZXRhbCAqLywKKwkJCQkxQzUzMUExQjI3QkRERDZFMDBDRDEyN0UgLyog
UXVhcnR6Q29yZSAqLywKKwkJCQkxQzUzMUEyMTI3QkRERDZFMDBDRDEyN0UgLyogU2luZ2xlSGVh
ZGVyICovLAorCQkJCTFDNTMxQTIwMjdCRERENkUwMENEMTI3RSAvKiBMSUNFTlNFLnR4dCAqLywK
KwkJCQkxQzUzMUExQTI3QkRERDZFMDBDRDEyN0UgLyogUkVBRE1FLm1kICovLAorCQkJKTsKKwkJ
CXBhdGggPSAibWV0YWwtY3BwIjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJ
CTFDNTMxOUNDMjdCRERENkUwMENEMTI3RSAvKiBNZXRhbCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUM1MzE5REIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1l
dGFsLmhwcCAqLywKKwkJCQkxQzUzMTlFOTI3QkRERDZFMDBDRDEyN0UgLyogTVRMQWNjZWxlcmF0
aW9uU3RydWN0dXJlLmhwcCAqLywKKwkJCQkxQzUzMTlGOTI3QkRERDZFMDBDRDEyN0UgLyogTVRM
QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwICovLAorCQkJCTFDNTMxOURE
MjdCRERENkUwMENEMTI3RSAvKiBNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAgKi8s
CisJCQkJMUM1MzE5RUIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFyZ3VtZW50LmhwcCAqLywKKwkJ
CQkxQzUzMTlFNDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQXJndW1lbnRFbmNvZGVyLmhwcCAqLywK
KwkJCQkxQzUzMTlGQzI3QkRERDZFMDBDRDEyN0UgLyogTVRMQmluYXJ5QXJjaGl2ZS5ocHAgKi8s
CisJCQkJMUM1MzE5RDgyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEJsaXRDb21tYW5kRW5jb2Rlci5o
cHAgKi8sCisJCQkJMUM1MzE5RkEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEJsaXRQYXNzLmhwcCAq
LywKKwkJCQkxQzUzMTlFRDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQnVmZmVyLmhwcCAqLywKKwkJ
CQkxQzUzMTlEOTI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ2FwdHVyZU1hbmFnZXIuaHBwICovLAor
CQkJCTFDNTMxOUZEMjdCRERENkUwMENEMTI3RSAvKiBNVExDYXB0dXJlU2NvcGUuaHBwICovLAor
CQkJCTFDNTMxQTAzMjdCRERENkUwMENEMTI3RSAvKiBNVExDb21tYW5kQnVmZmVyLmhwcCAqLywK
KwkJCQkxQzUzMTlEQTI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ29tbWFuZEVuY29kZXIuaHBwICov
LAorCQkJCTFDNTMxOUY3MjdCRERENkUwMENEMTI3RSAvKiBNVExDb21tYW5kUXVldWUuaHBwICov
LAorCQkJCTFDNTMxOUZFMjdCRERENkUwMENEMTI3RSAvKiBNVExDb21wdXRlQ29tbWFuZEVuY29k
ZXIuaHBwICovLAorCQkJCTFDNTMxOUQ0MjdCRERENkUwMENEMTI3RSAvKiBNVExDb21wdXRlUGFz
cy5ocHAgKi8sCisJCQkJMUM1MzE5RDAyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENvbXB1dGVQaXBl
bGluZS5ocHAgKi8sCisJCQkJMUM1MzFBMDAyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENvdW50ZXJz
LmhwcCAqLywKKwkJCQkxQzUzMUEwMTI3QkRERDZFMDBDRDEyN0UgLyogTVRMRGVmaW5lcy5ocHAg
Ki8sCisJCQkJMUM1MzE5RTMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTERlcHRoU3RlbmNpbC5ocHAg
Ki8sCisJCQkJMUM1MzE5RUEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTERldmljZS5ocHAgKi8sCisJ
CQkJMUM1MzE5RDIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTERyYXdhYmxlLmhwcCAqLywKKwkJCQkx
QzUzMTlEMzI3QkRERDZFMDBDRDEyN0UgLyogTVRMRHluYW1pY0xpYnJhcnkuaHBwICovLAorCQkJ
CTFDNTMxOUZCMjdCRERENkUwMENEMTI3RSAvKiBNVExFdmVudC5ocHAgKi8sCisJCQkJMUM1MzE5
RjQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZlbmNlLmhwcCAqLywKKwkJCQkxQzUzMTlENTI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAgKi8sCisJCQkJMUM1
MzE5RjgyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAgKi8sCisJ
CQkJMUM1MzE5RDEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uSGFuZGxlLmhwcCAqLywK
KwkJCQkxQzUzMTlFQzI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVuY3Rpb25Mb2cuaHBwICovLAor
CQkJCTFDNTMxOUYxMjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5jdGlvblN0aXRjaGluZy5ocHAg
Ki8sCisJCQkJMUM1MzE5RkYyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEhlYWRlckJyaWRnZS5ocHAg
Ki8sCisJCQkJMUM1MzE5RUYyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEhlYXAuaHBwICovLAorCQkJ
CTFDNTMxOUY1MjdCRERENkUwMENEMTI3RSAvKiBNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBw
ICovLAorCQkJCTFDNTMxOUNGMjdCRERENkUwMENEMTI3RSAvKiBNVExJbmRpcmVjdENvbW1hbmRF
bmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlFNTI3QkRERDZFMDBDRDEyN0UgLyogTVRMSW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAgKi8sCisJCQkJMUM1MzE5RjIyN0JEREQ2RTAwQ0QxMjdF
IC8qIE1UTExpYnJhcnkuaHBwICovLAorCQkJCTFDNTMxOUUwMjdCRERENkUwMENEMTI3RSAvKiBN
VExMaW5rZWRGdW5jdGlvbnMuaHBwICovLAorCQkJCTFDNTMxOURFMjdCRERENkUwMENEMTI3RSAv
KiBNVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlENjI3
QkRERDZFMDBDRDEyN0UgLyogTVRMUGlwZWxpbmUuaHBwICovLAorCQkJCTFDNTMxOUYzMjdCRERE
NkUwMENEMTI3RSAvKiBNVExQaXhlbEZvcm1hdC5ocHAgKi8sCisJCQkJMUM1MzE5RTcyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTFByaXZhdGUuaHBwICovLAorCQkJCTFDNTMxOURGMjdCRERENkUwMENE
MTI3RSAvKiBNVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAgKi8sCisJCQkJMUM1MzE5RDcyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlF
RTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVuZGVyUGFzcy5ocHAgKi8sCisJCQkJMUM1MzE5RjYy
N0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlbmRlclBpcGVsaW5lLmhwcCAqLywKKwkJCQkxQzUzMTlF
ODI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2UuaHBwICovLAorCQkJCTFDNTMxOUNFMjdC
RERENkUwMENEMTI3RSAvKiBNVExSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwICovLAor
CQkJCTFDNTMxQTAyMjdCRERENkUwMENEMTI3RSAvKiBNVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAg
Ki8sCisJCQkJMUM1MzE5RTIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFNhbXBsZXIuaHBwICovLAor
CQkJCTFDNTMxOURDMjdCRERENkUwMENEMTI3RSAvKiBNVExTdGFnZUlucHV0T3V0cHV0RGVzY3Jp
cHRvci5ocHAgKi8sCisJCQkJMUM1MzE5RTEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFRleHR1cmUu
aHBwICovLAorCQkJCTFDNTMxOUNEMjdCRERENkUwMENEMTI3RSAvKiBNVExUeXBlcy5ocHAgKi8s
CisJCQkJMUM1MzE5RjAyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFZlcnRleERlc2NyaXB0b3IuaHBw
ICovLAorCQkJCTFDNTMxOUU2MjdCRERENkUwMENEMTI3RSAvKiBNVExWaXNpYmxlRnVuY3Rpb25U
YWJsZS5ocHAgKi8sCisJCQkpOworCQkJcGF0aCA9IE1ldGFsOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKwkJMUM1MzFBMDQyN0JEREQ2RTAwQ0QxMjdFIC8qIEZvdW5kYXRpb24g
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTMxQTE0
MjdCRERENkUwMENEMTI3RSAvKiBGb3VuZGF0aW9uLmhwcCAqLywKKwkJCQkxQzUzMUExOTI3QkRE
RDZFMDBDRDEyN0UgLyogTlNBcnJheS5ocHAgKi8sCisJCQkJMUM1MzFBMEYyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE5TQXV0b3JlbGVhc2VQb29sLmhwcCAqLywKKwkJCQkxQzUzMUExNzI3QkRERDZFMDBD
RDEyN0UgLyogTlNCdW5kbGUuaHBwICovLAorCQkJCTFDNTMxQTEyMjdCRERENkUwMENEMTI3RSAv
KiBOU0RhdGEuaHBwICovLAorCQkJCTFDNTMxQTE1MjdCRERENkUwMENEMTI3RSAvKiBOU0RhdGUu
aHBwICovLAorCQkJCTFDNTMxQTE2MjdCRERENkUwMENEMTI3RSAvKiBOU0RlZmluZXMuaHBwICov
LAorCQkJCTFDNTMxQTA2MjdCRERENkUwMENEMTI3RSAvKiBOU0RpY3Rpb25hcnkuaHBwICovLAor
CQkJCTFDNTMxQTE4MjdCRERENkUwMENEMTI3RSAvKiBOU0VudW1lcmF0b3IuaHBwICovLAorCQkJ
CTFDNTMxQTA5MjdCRERENkUwMENEMTI3RSAvKiBOU0Vycm9yLmhwcCAqLywKKwkJCQkxQzUzMUEw
NzI3QkRERDZFMDBDRDEyN0UgLyogTlNMb2NrLmhwcCAqLywKKwkJCQkxQzUzMUEwQzI3QkRERDZF
MDBDRDEyN0UgLyogTlNOb3RpZmljYXRpb24uaHBwICovLAorCQkJCTFDNTMxQTEzMjdCRERENkUw
MENEMTI3RSAvKiBOU051bWJlci5ocHAgKi8sCisJCQkJMUM1MzFBMEEyN0JEREQ2RTAwQ0QxMjdF
IC8qIE5TT2JqQ1J1bnRpbWUuaHBwICovLAorCQkJCTFDNTMxQTBCMjdCRERENkUwMENEMTI3RSAv
KiBOU09iamVjdC5ocHAgKi8sCisJCQkJMUM1MzFBMEQyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TUHJp
dmF0ZS5ocHAgKi8sCisJCQkJMUM1MzFBMDgyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TUHJvY2Vzc0lu
Zm8uaHBwICovLAorCQkJCTFDNTMxQTEwMjdCRERENkUwMENEMTI3RSAvKiBOU1JhbmdlLmhwcCAq
LywKKwkJCQkxQzUzMUEwNTI3QkRERDZFMDBDRDEyN0UgLyogTlNTdHJpbmcuaHBwICovLAorCQkJ
CTFDNTMxQTExMjdCRERENkUwMENEMTI3RSAvKiBOU1R5cGVzLmhwcCAqLywKKwkJCQkxQzUzMUEw
RTI3QkRERDZFMDBDRDEyN0UgLyogTlNVUkwuaHBwICovLAorCQkJKTsKKwkJCXBhdGggPSBGb3Vu
ZGF0aW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUM1MzFBMUIyN0JE
REQ2RTAwQ0QxMjdFIC8qIFF1YXJ0ekNvcmUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTFDNTMxQTFGMjdCRERENkUwMENEMTI3RSAvKiBDQURlZmluZXMu
aHBwICovLAorCQkJCTFDNTMxQTFFMjdCRERENkUwMENEMTI3RSAvKiBDQU1ldGFsRHJhd2FibGUu
aHBwICovLAorCQkJCTFDNTMxQTFEMjdCRERENkUwMENEMTI3RSAvKiBDQVByaXZhdGUuaHBwICov
LAorCQkJCTFDNTMxQTFDMjdCRERENkUwMENEMTI3RSAvKiBRdWFydHpDb3JlLmhwcCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gUXVhcnR6Q29yZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCTFDNTMxQTIxMjdCRERENkUwMENEMTI3RSAvKiBTaW5nbGVIZWFkZXIgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTMxQTIyMjdCRERENkUw
MENEMTI3RSAvKiBNYWtlU2luZ2xlSGVhZGVyLnB5ICovLAorCQkJKTsKKwkJCXBhdGggPSBTaW5n
bGVIZWFkZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzUzMUEyNjI3
QkRERkUxMDBDRDEyN0UgLyogRGVyaXZlZFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTMxQTI4MjdCREUwMzMwMENEMTI3RSAvKiBtZXRh
bC1jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IERlcml2ZWRTb3VyY2VzOworCQkJcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYkdQVTsKKwkJCXNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
CisJCX07CisJCTFDNTMxQTI4MjdCREUwMzMwMENEMTI3RSAvKiBtZXRhbC1jcHAgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDNTMxQTI5MjdCREUwNDkw
MENEMTI3RSAvKiBNZXRhbCAqLywKKwkJCSk7CisJCQlwYXRoID0gIm1ldGFsLWNwcCI7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzUzMUEyOTI3QkRFMDQ5MDBDRDEyN0Ug
LyogTWV0YWwgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTFDNTMxQTJBMjdCREUwNjcwMENEMTI3RSAvKiBNZXRhbC5ocHAgKi8sCisJCQkpOworCQkJcGF0
aCA9IE1ldGFsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUNFQkQ3RDky
NzE2QUZCQTAwQTUyNTREID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
QEAgLTI1Myw2ICs0ODYsOCBAQAogCQkxQ0VCRDdFNTI3MTZBRkJBMDBBNTI1NEQgLyogV2ViR1BV
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEy
NjI3QkRERkUxMDBDRDEyN0UgLyogRGVyaXZlZFNvdXJjZXMgKi8sCisJCQkJMUM1MzE5Q0IyN0JE
REQ2RTAwQ0QxMjdFIC8qIG1ldGFsLWNwcCAqLywKIAkJCQkxQzVBQ0FCMjI3M0E0MjZEMDA5NUY4
RDUgLyogQWRhcHRlci5oICovLAogCQkJCTFDNUFDQUE5MjczQTQyNkQwMDk1RjhENSAvKiBBZGFw
dGVyLm1tICovLAogCQkJCTFDNUFDQUQ1MjczQTRENzAwMDk1RjhENSAvKiBCaW5kR3JvdXAuaCAq
LywKQEAgLTI3NSw2ICs1MTAsNyBAQAogCQkJCTFDRUJEODBCMjcxNkMzNzkwMEE1MjU0RCAvKiBF
eHBvcnRNYWNyb3MuaCAqLywKIAkJCQkxQzVBQ0FBMDI3M0E0MjZEMDA5NUY4RDUgLyogSW5zdGFu
Y2UuaCAqLywKIAkJCQkxQzVBQ0E5MjI3M0E0MUMyMDA5NUY4RDUgLyogSW5zdGFuY2UubW0gKi8s
CisJCQkJMUM1MzFBMjQyN0JEREY1NTAwQ0QxMjdFIC8qIE1ldGFsLmNwcCAqLywKIAkJCQkxQzVB
Q0FEQTI3M0E0RTcxMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQuaCAqLywKIAkJCQkxQzVBQ0FF
NDI3M0E1NUREMDA5NUY4RDUgLyogUGlwZWxpbmVMYXlvdXQubW0gKi8sCiAJCQkJMUM1QUNBQUMy
NzNBNDI2RDAwOTVGOEQ1IC8qIFF1ZXJ5U2V0LmggKi8sCkBAIC00MjAsNiArNjU2LDcgQEAKIAkJ
CWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxQ0VC
RDdFQTI3MTZBRkJBMDBBNTI1NEQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhO
YXRpdmVUYXJnZXQgIldlYkdQVSIgKi87CiAJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxQzUzMUEy
MzI3QkREREI1MDBDRDEyN0UgLyogU2hlbGxTY3JpcHQgKi8sCiAJCQkJMUNFQkQ3REUyNzE2QUZC
QTAwQTUyNTREIC8qIEhlYWRlcnMgKi8sCiAJCQkJMUNFQkQ3REYyNzE2QUZCQTAwQTUyNTREIC8q
IFNvdXJjZXMgKi8sCiAJCQkJMUNFQkQ3RTAyNzE2QUZCQTAwQTUyNTREIC8qIEZyYW1ld29ya3Mg
Ki8sCkBAIC00NTksNyArNjk2LDYgQEAKIAkJMUNFQkQ3REEyNzE2QUZCQTAwQTUyNTREIC8qIFBy
b2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWF0dHJpYnV0ZXMg
PSB7Ci0JCQkJQnVpbGRJbmRlcGVuZGVudFRhcmdldHNJblBhcmFsbGVsID0gTk87CiAJCQkJRGVm
YXVsdEJ1aWxkU3lzdGVtVHlwZUZvcldvcmtzcGFjZSA9IE9yaWdpbmFsOwogCQkJCUxhc3RTd2lm
dFVwZGF0ZUNoZWNrID0gMTQwMDsKIAkJCQlMYXN0VXBncmFkZUNoZWNrID0gMTMzMDsKQEAgLTUx
Nyw2ICs3NTMsMTA1IEBACiAvKiBFbmQgUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTFDNTMx
QTIzMjdCREREQjUwMENEMTI3RSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJ
aW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL1NpbmdsZUhl
YWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU0FycmF5LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXV0b3JlbGVhc2VQb29sLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQnVuZGxlLmhwcCIsCisJCQkJIiQo
U1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0YS5ocHAiLAorCQkJCSIk
KFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGUuaHBwIiwKKwkJCQki
JChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGljdGlvbmFyeS5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0VudW1l
cmF0b3IuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNFcnJvci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU0xvY2suaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNOb3RpZmljYXRpb24uaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3Bw
L0ZvdW5kYXRpb24vTlNOdW1iZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNPYmpDUnVudGltZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iamVjdC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1ByaXZhdGUuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQcm9jZXNzSW5mby5ocHAiLAorCQkJCSIk
KFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1JhbmdlLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwIiwK
KwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwIiwK
KwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0
cnVjdHVyZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudC5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnRF
bmNvZGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExC
aW5hcnlBcmNoaXZlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEJsaXRQYXNzLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExCdWZmZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTENhcHR1cmVNYW5hZ2VyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlU2NvcGUuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRCdWZmZXIuaHBwIiwKKwkJCQkiJChT
UkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRFbmNvZGVyLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBw
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVDb21t
YW5kRW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ29tcHV0ZVBhc3MuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTENvbXB1dGVQaXBlbGluZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQ291bnRlcnMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTERlZmluZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTERlcHRoU3RlbmNpbC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMRGV2aWNlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExEcmF3YWJsZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMRHluYW1pY0xpYnJhcnkuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEV2ZW50LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGZW5jZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9y
LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlv
bkhhbmRsZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RnVuY3Rpb25Mb2cuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExIZWFkZXJCcmlkZ2UuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEhlYXAuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAiLAorCQkJCSIkKFNSQ1JP
T1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMTGlicmFyeS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMTGlua2VkRnVuY3Rpb25zLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQo
U1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXBlbGluZS5ocHAiLAorCQkJCSIk
KFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGl4ZWxGb3JtYXQuaHBwIiwKKwkJ
CQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFByaXZhdGUuaHBwIiwKKwkJ
CQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRl
LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJD
b21tYW5kRW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMUmVuZGVyUGFzcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUmVuZGVyUGlwZWxpbmUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFJlc291cmNlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQki
JChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVQYXNzLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExTYW1wbGVyLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMVGV4dHVyZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMVHlwZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFZlcnRleERlc2NyaXB0b3IuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCIsCisJCQkJIiQoU1JDUk9P
VCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NZXRhbC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dl
YkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQURlZmluZXMuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FNZXRhbERyYXdhYmxlLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHAiLAor
CQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhw
cCIsCisJCQkpOworCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlvdXRwdXRQ
YXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwuaHBwIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlw
dCA9ICJta2RpciAtcCAke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbFxuXG5jZCBXZWJHUFUvbWV0YWwtY3BwXG5weXRob24zIC4vU2luZ2xl
SGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkgLW8gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2
ZWRTb3VyY2VzL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTWV0YWwuaHBwIEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHAgUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcCBNZXRhbC9NZXRhbC5ocHBcbiI7
CisJCX07CiAJCTY1NzdGRkM4Mjc2QUNBMDYwMDExQUVDOCAvKiBDcmVhdGUgU3ltbGluayB0byBB
bHQgUm9vdCBQYXRoICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwog
CQkJYnVpbGRBY3Rpb25NYXNrID0gODsKQEAgLTU2OSw2ICs5MDQsNyBAQAogCQkJCTFDNUFDQUMw
MjczQTQyNkQwMDk1RjhENSAvKiBDb21wdXRlUGlwZWxpbmUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQzVBQ0FDMTI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUM1QUNBOTQyNzNBNDFDMjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJMUM1MzFBMjUyN0JEREY1NTAwQ0QxMjdFIC8qIE1ldGFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFDNUFDQUU1MjczQTU1REQwMDk1RjhENSAvKiBQaXBlbGluZUxheW91dC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTFDNUFDQUJEMjczQTQyNkQwMDk1RjhENSAvKiBRdWVyeVNldC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTFDNUFDQUNCMjczQTQyNkUwMDk1RjhENSAvKiBRdWV1ZS5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvTWV0YWwuY3Bw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvTWV0YWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0ZmI2NGUxM2Ey
OWYzMmY4ZmEzZDUxYmJhZGQ5ZTk1ZWYzZGM0MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9NZXRhbC5jcHAKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNkZWZpbmUgTlNfUFJJVkFURV9JTVBMRU1F
TlRBVElPTgorI2RlZmluZSBDQV9QUklWQVRFX0lNUExFTUVOVEFUSU9OCisjZGVmaW5lIE1UTF9Q
UklWQVRFX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSA8TWV0YWwvTWV0YWwuaHBwPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvY29uZmlnLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9jb25maWcuaAppbmRleCA4YzEyN2E5NDM0MGE3ZDdhYzAyOTliYmY0MjdhMTI3NmU1MTU2NzNi
Li43OTBlNmMyNTI3NzVhNzNjODJmY2NkN2YwYjc5ZmI1ZTk1NzkzMzAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9j
b25maWcuaApAQCAtMjUsOCArMjUsMTIgQEAKIAogI2luY2x1ZGUgIkV4cG9ydE1hY3Jvcy5oIgog
CisjaW5jbHVkZSA8TWV0YWwvTWV0YWwuaHBwPgorCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KIAogI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CiAKICNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDA4MjUyZTliMTY2NGQ5YmQ4NjEyMTQ0ZTViYjBjNGFlNjZlMjg1NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaHBwCkBAIC0wLDAgKzEsNDUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAKKy8v
CisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNBcnJh
eS5ocHAiCisjaW5jbHVkZSAiTlNBdXRvcmVsZWFzZVBvb2wuaHBwIgorI2luY2x1ZGUgIk5TQnVu
ZGxlLmhwcCIKKyNpbmNsdWRlICJOU0RhdGEuaHBwIgorI2luY2x1ZGUgIk5TRGF0ZS5ocHAiCisj
aW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU0RpY3Rpb25hcnkuaHBwIgorI2lu
Y2x1ZGUgIk5TRW51bWVyYXRvci5ocHAiCisjaW5jbHVkZSAiTlNFcnJvci5ocHAiCisjaW5jbHVk
ZSAiTlNMb2NrLmhwcCIKKyNpbmNsdWRlICJOU05vdGlmaWNhdGlvbi5ocHAiCisjaW5jbHVkZSAi
TlNOdW1iZXIuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZh
dGUuaHBwIgorI2luY2x1ZGUgIk5TUHJvY2Vzc0luZm8uaHBwIgorI2luY2x1ZGUgIk5TUmFuZ2Uu
aHBwIgorI2luY2x1ZGUgIk5TU3RyaW5nLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKyNp
bmNsdWRlICJOU1VSTC5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNBcnJheS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9OU0FycmF5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzMwZGY5OTQ5NjdhZjIzZjI4ZDVjNzQ1
ZmRhNGNhZDk3MjA0MGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNBcnJheS5ocHAKQEAgLTAsMCArMSwxMTUgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRp
b24vTlNBcnJheS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdt
YSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5T
Cit7CitjbGFzcyBBcnJheSA6IHB1YmxpYyBDb3B5aW5nPEFycmF5PgoreworcHVibGljOgorICAg
IHN0YXRpYyBBcnJheSogYXJyYXkoKTsKKyAgICBzdGF0aWMgQXJyYXkqIGFycmF5KGNvbnN0IE9i
amVjdCogcE9iamVjdCk7CisgICAgc3RhdGljIEFycmF5KiBhcnJheShjb25zdCBPYmplY3QqIGNv
bnN0KiBwT2JqZWN0cywgVUludGVnZXIgY291bnQpOworCisgICAgc3RhdGljIEFycmF5KiBhbGxv
YygpOworCisgICAgQXJyYXkqICAgICAgICBpbml0KCk7CisgICAgQXJyYXkqICAgICAgICBpbml0
KGNvbnN0IE9iamVjdCogY29uc3QqIHBPYmplY3RzLCBVSW50ZWdlciBjb3VudCk7CisgICAgQXJy
YXkqICAgICAgICBpbml0KGNvbnN0IGNsYXNzIENvZGVyKiBwQ29kZXIpOworCisgICAgdGVtcGxh
dGUgPGNsYXNzIF9PYmplY3QgPSBPYmplY3Q+CisgICAgX09iamVjdCogb2JqZWN0KFVJbnRlZ2Vy
IGluZGV4KSBjb25zdDsKKyAgICBVSW50ZWdlciBjb3VudCgpIGNvbnN0OworfTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OkFycmF5KiBOUzo6QXJyYXk6OmFycmF5KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxBcnJheSo+KF9OU19QUklWQVRFX0NMUyhOU0FycmF5KSwgX05TX1BSSVZBVEVfU0VM
KGFycmF5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5OjphcnJheShjb25zdCBPYmpl
Y3QqIHBPYmplY3QpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPihf
TlNfUFJJVkFURV9DTFMoTlNBcnJheSksIF9OU19QUklWQVRFX1NFTChhcnJheVdpdGhPYmplY3Rf
KSwgcE9iamVjdCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5OjphcnJheShjb25zdCBP
YmplY3QqIGNvbnN0KiBwT2JqZWN0cywgVUludGVnZXIgY291bnQpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPihfTlNfUFJJVkFURV9DTFMoTlNBcnJheSksIF9OU19Q
UklWQVRFX1NFTChhcnJheVdpdGhPYmplY3RzX2NvdW50XyksIHBPYmplY3RzLCBjb3VudCk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmFsbG9jPEFycmF5PihfTlNfUFJJVkFURV9DTFMoTlNBcnJheSkpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6QXJyYXkqIE5TOjpBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6Omlu
aXQ8QXJyYXk+KCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5Ojppbml0KGNvbnN0IE9i
amVjdCogY29uc3QqIHBPYmplY3RzLCBVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aE9i
amVjdHNfY291bnRfKSwgcE9iamVjdHMsIGNvdW50KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBOUzo6
QXJyYXk6OmluaXQoY29uc3QgY2xhc3MgQ29kZXIqIHBDb2RlcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aENv
ZGVyXyksIHBDb2Rlcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6QXJyYXk6OmNvdW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdD4KK19OU19JTkxJ
TkUgX09iamVjdCogTlM6OkFycmF5OjpvYmplY3QoVUludGVnZXIgaW5kZXgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8X09iamVjdCo+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChvYmplY3RBdEluZGV4XyksIGluZGV4KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTIzODNhNTVmZTA2MmJlMjVhYzg1MDhmZGQ2YjQ5NWUzMmI4ZGY4YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
QXV0b3JlbGVhc2VQb29sLmhwcApAQCAtMCwwICsxLDgzIEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TQXV0b3JlbGVh
c2VQb29sLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9u
Y2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNp
bmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRl
ICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitjbGFz
cyBBdXRvcmVsZWFzZVBvb2wgOiBwdWJsaWMgT2JqZWN0Cit7CitwdWJsaWM6CisgICAgc3RhdGlj
IEF1dG9yZWxlYXNlUG9vbCogYWxsb2MoKTsKKyAgICBBdXRvcmVsZWFzZVBvb2wqICAgICAgICBp
bml0KCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBkcmFpbigpOworCisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgYWRkT2JqZWN0KE9iamVjdCogcE9iamVjdCk7CisKKyAgICBz
dGF0aWMgdm9pZCAgICAgICAgICAgICBzaG93UG9vbHMoKTsKK307Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBdXRv
cmVsZWFzZVBvb2wqIE5TOjpBdXRvcmVsZWFzZVBvb2w6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8QXV0b3JlbGVhc2VQb29sPihfTlNfUFJJVkFURV9DTFMoTlNBdXRv
cmVsZWFzZVBvb2wpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkF1dG9yZWxlYXNlUG9vbCogTlM6OkF1dG9yZWxl
YXNlUG9vbDo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8QXV0b3JlbGVh
c2VQb29sPigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpBdXRvcmVsZWFzZVBvb2w6OmRyYWluKCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkcmFp
bikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSB2b2lkIE5TOjpBdXRvcmVsZWFzZVBvb2w6OmFkZE9iamVjdChPYmplY3Qq
IHBPYmplY3QpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJ
VkFURV9TRUwoYWRkT2JqZWN0XyksIHBPYmplY3QpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpBdXRvcmVs
ZWFzZVBvb2w6OnNob3dQb29scygpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPihf
TlNfUFJJVkFURV9DTFMoTlNBdXRvcmVsZWFzZVBvb2wpLCBfTlNfUFJJVkFURV9TRUwoc2hvd1Bv
b2xzKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNCdW5kbGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNCdW5kbGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlOGM1Mzk1YmIwMTE2YmYyMTE5MGNlMTczZjAxMDY4
OGVkZTkyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU0J1bmRsZS5ocHAKQEAgLTAsMCArMSwzNzQgQEAKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNC
dW5kbGUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lu
Y2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNOb3RpZmljYXRpb24uaHBwIgorI2lu
Y2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworewor
X05TX0NPTlNUKE5vdGlmaWNhdGlvbk5hbWUsIEJ1bmRsZURpZExvYWROb3RpZmljYXRpb24pOwor
X05TX0NPTlNUKE5vdGlmaWNhdGlvbk5hbWUsIEJ1bmRsZVJlc291cmNlUmVxdWVzdExvd0Rpc2tT
cGFjZU5vdGlmaWNhdGlvbik7CisKK2NsYXNzIFN0cmluZyogTG9jYWxpemVkU3RyaW5nKGNvbnN0
IFN0cmluZyogcEtleSwgY29uc3QgU3RyaW5nKik7CitjbGFzcyBTdHJpbmcqIExvY2FsaXplZFN0
cmluZ0Zyb21UYWJsZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwgY29u
c3QgU3RyaW5nKik7CitjbGFzcyBTdHJpbmcqIExvY2FsaXplZFN0cmluZ0Zyb21UYWJsZUluQnVu
ZGxlKGNvbnN0IFN0cmluZyogcEtleSwgY29uc3QgU3RyaW5nKiBwVGJsLCBjb25zdCBjbGFzcyBC
dW5kbGUqIHBCZGxlLCBjb25zdCBTdHJpbmcqKTsKK2NsYXNzIFN0cmluZyogTG9jYWxpemVkU3Ry
aW5nV2l0aERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRi
bCwgY29uc3QgY2xhc3MgQnVuZGxlKiBwQmRsZSwgY29uc3QgU3RyaW5nKiBwVmFsLCBjb25zdCBT
dHJpbmcqKTsKKworY2xhc3MgQnVuZGxlIDogcHVibGljIFJlZmVyZW5jaW5nPEJ1bmRsZT4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgQnVuZGxlKiAgICBtYWluQnVuZGxlKCk7CisKKyAgICBzdGF0
aWMgQnVuZGxlKiAgICBidW5kbGUoY29uc3QgY2xhc3MgU3RyaW5nKiBwUGF0aCk7CisgICAgc3Rh
dGljIEJ1bmRsZSogICAgYnVuZGxlKGNvbnN0IGNsYXNzIFVSTCogcFVSTCk7CisKKyAgICBzdGF0
aWMgQnVuZGxlKiAgICBhbGxvYygpOworCisgICAgQnVuZGxlKiAgICAgICAgICAgaW5pdChjb25z
dCBjbGFzcyBTdHJpbmcqIHBQYXRoKTsKKyAgICBCdW5kbGUqICAgICAgICAgICBpbml0KGNvbnN0
IGNsYXNzIFVSTCogcFVSTCk7CisKKyAgICBjbGFzcyBBcnJheSogICAgICBhbGxCdW5kbGVzKCkg
Y29uc3Q7CisgICAgY2xhc3MgQXJyYXkqICAgICAgYWxsRnJhbWV3b3JrcygpIGNvbnN0OworCisg
ICAgYm9vbCAgICAgICAgICAgICAgbG9hZCgpOworICAgIGJvb2wgICAgICAgICAgICAgIHVubG9h
ZCgpOworCisgICAgYm9vbCAgICAgICAgICAgICAgaXNMb2FkZWQoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgICAgIHByZWZsaWdodEFuZFJldHVybkVycm9yKGNsYXNzIEVycm9yKiogcEVy
cm9yKSBjb25zdDsKKyAgICBib29sICAgICAgICAgICAgICBsb2FkQW5kUmV0dXJuRXJyb3IoY2xh
c3MgRXJyb3IqKiBwRXJyb3IpOworCisgICAgY2xhc3MgVVJMKiAgICAgICAgYnVuZGxlVVJMKCkg
Y29uc3Q7CisgICAgY2xhc3MgVVJMKiAgICAgICAgcmVzb3VyY2VVUkwoKSBjb25zdDsKKyAgICBj
bGFzcyBVUkwqICAgICAgICBleGVjdXRhYmxlVVJMKCkgY29uc3Q7CisgICAgY2xhc3MgVVJMKiAg
ICAgICAgVVJMRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZShjb25zdCBjbGFzcyBTdHJpbmcqIHBFeGVj
dXRhYmxlTmFtZSkgY29uc3Q7CisKKyAgICBjbGFzcyBVUkwqICAgICAgICBwcml2YXRlRnJhbWV3
b3Jrc1VSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAgICAgIHNoYXJlZEZyYW1ld29ya3NV
UkwoKSBjb25zdDsKKyAgICBjbGFzcyBVUkwqICAgICAgICBzaGFyZWRTdXBwb3J0VVJMKCkgY29u
c3Q7CisgICAgY2xhc3MgVVJMKiAgICAgICAgYnVpbHRJblBsdWdJbnNVUkwoKSBjb25zdDsKKyAg
ICBjbGFzcyBVUkwqICAgICAgICBhcHBTdG9yZVJlY2VpcHRVUkwoKSBjb25zdDsKKworICAgIGNs
YXNzIFN0cmluZyogICAgIGJ1bmRsZVBhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAg
ICByZXNvdXJjZVBhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICBleGVjdXRhYmxl
UGF0aCgpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIHBhdGhGb3JBdXhpbGlhcnlFeGVj
dXRhYmxlKGNvbnN0IGNsYXNzIFN0cmluZyogcEV4ZWN1dGFibGVOYW1lKSBjb25zdDsKKworICAg
IGNsYXNzIFN0cmluZyogICAgIHByaXZhdGVGcmFtZXdvcmtzUGF0aCgpIGNvbnN0OworICAgIGNs
YXNzIFN0cmluZyogICAgIHNoYXJlZEZyYW1ld29ya3NQYXRoKCkgY29uc3Q7CisgICAgY2xhc3Mg
U3RyaW5nKiAgICAgc2hhcmVkU3VwcG9ydFBhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcq
ICAgICBidWlsdEluUGx1Z0luc1BhdGgoKSBjb25zdDsKKworICAgIGNsYXNzIFN0cmluZyogICAg
IGJ1bmRsZUlkZW50aWZpZXIoKSBjb25zdDsKKyAgICBjbGFzcyBEaWN0aW9uYXJ5KiBpbmZvRGlj
dGlvbmFyeSgpIGNvbnN0OworICAgIGNsYXNzIERpY3Rpb25hcnkqIGxvY2FsaXplZEluZm9EaWN0
aW9uYXJ5KCkgY29uc3Q7CisgICAgY2xhc3MgT2JqZWN0KiAgICAgb2JqZWN0Rm9ySW5mb0RpY3Rp
b25hcnlLZXkoY29uc3QgY2xhc3MgU3RyaW5nKiBwS2V5KTsKKworICAgIGNsYXNzIFN0cmluZyog
ICAgIGxvY2FsaXplZFN0cmluZyhjb25zdCBjbGFzcyBTdHJpbmcqIHBLZXksIGNvbnN0IGNsYXNz
IFN0cmluZyogcFZhbHVlID0gbnVsbHB0ciwgY29uc3QgY2xhc3MgU3RyaW5nKiBwVGFibGVOYW1l
ID0gbnVsbHB0cikgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpOb3RpZmljYXRp
b25OYW1lLCBCdW5kbGVEaWRMb2FkTm90aWZpY2F0aW9uKTsKK19OU19QUklWQVRFX0RFRl9DT05T
VChOUzo6Tm90aWZpY2F0aW9uTmFtZSwgQnVuZGxlUmVzb3VyY2VSZXF1ZXN0TG93RGlza1NwYWNl
Tm90aWZpY2F0aW9uKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkxvY2FsaXplZFN0cmluZyhjb25z
dCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyopCit7CisgICAgcmV0dXJuIEJ1bmRsZTo6bWFp
bkJ1bmRsZSgpLT5sb2NhbGl6ZWRTdHJpbmcocEtleSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpTdHJpbmcqIE5TOjpMb2NhbGl6ZWRTdHJpbmdGcm9tVGFibGUoY29uc3QgU3RyaW5n
KiBwS2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNvbnN0IFN0cmluZyopCit7CisgICAgcmV0dXJu
IEJ1bmRsZTo6bWFpbkJ1bmRsZSgpLT5sb2NhbGl6ZWRTdHJpbmcocEtleSwgbnVsbHB0ciwgcFRi
bCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpMb2NhbGl6ZWRTdHJpbmdGcm9tVGFibGVJbkJ1
bmRsZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwgY29uc3QgQnVuZGxl
KiBwQmRsLCBjb25zdCBTdHJpbmcqKQoreworICAgIHJldHVybiBwQmRsLT5sb2NhbGl6ZWRTdHJp
bmcocEtleSwgbnVsbHB0ciwgcFRibCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpMb2NhbGl6
ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyogcEtleSwgY29uc3QgU3RyaW5n
KiBwVGJsLCBjb25zdCBCdW5kbGUqIHBCZGwsIGNvbnN0IFN0cmluZyogcFZhbCwgY29uc3QgU3Ry
aW5nKikKK3sKKyAgICByZXR1cm4gcEJkbC0+bG9jYWxpemVkU3RyaW5nKHBLZXksIHBWYWwsIHBU
YmwpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBOUzo6QnVuZGxlKiBOUzo6QnVuZGxlOjptYWluQnVuZGxlKCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5kbGUqPihfTlNfUFJJVkFURV9DTFMoTlNC
dW5kbGUpLCBfTlNfUFJJVkFURV9TRUwobWFpbkJ1bmRsZSkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QnVuZGxl
KiBOUzo6QnVuZGxlOjpidW5kbGUoY29uc3QgY2xhc3MgU3RyaW5nKiBwUGF0aCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5kbGUqPihfTlNfUFJJVkFURV9DTFMoTlNCdW5k
bGUpLCBfTlNfUFJJVkFURV9TRUwoYnVuZGxlV2l0aFBhdGhfKSwgcFBhdGgpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6QnVuZGxlKiBOUzo6QnVuZGxlOjpidW5kbGUoY29uc3QgY2xhc3MgVVJMKiBwVVJMKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1bmRsZSo+KF9OU19QUklWQVRFX0NMUyhO
U0J1bmRsZSksIF9OU19QUklWQVRFX1NFTChidW5kbGVXaXRoVVJMXyksIHBVUkwpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6QnVuZGxlKiBOUzo6QnVuZGxlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8QnVuZGxlKj4oX05TX1BSSVZBVEVfQ0xTKE5TQnVuZGxlKSwgX05TX1BSSVZB
VEVfU0VMKGFsbG9jKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpCdW5kbGUqIE5TOjpCdW5kbGU6OmluaXQoY29u
c3QgU3RyaW5nKiBwUGF0aCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5k
bGUqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhQYXRoXyksIHBQYXRoKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkJ1bmRsZSogTlM6OkJ1bmRsZTo6aW5pdChjb25zdCBVUkwqIHBVUkwpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QnVuZGxlKj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGluaXRXaXRoVVJMXyksIHBVUkwpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpCdW5kbGU6OmFs
bEJ1bmRsZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGFsbEJ1bmRsZXMpKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5
KiBOUzo6QnVuZGxlOjphbGxGcmFtZXdvcmtzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhbGxGcmFtZXdvcmtz
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIGJvb2wgTlM6OkJ1bmRsZTo6bG9hZCgpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvYWQpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgYm9vbCBOUzo6QnVuZGxlOjp1bmxvYWQoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bmxvYWQpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9v
bCBOUzo6QnVuZGxlOjppc0xvYWRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzTG9hZGVkKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IGJvb2wgTlM6OkJ1bmRsZTo6cHJlZmxpZ2h0QW5kUmV0dXJuRXJyb3IoRXJyb3IqKiBwRXJyb3Ip
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05T
X1BSSVZBVEVfU0VMKHByZWZsaWdodEFuZFJldHVybkVycm9yXyksIHBFcnJvcik7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IGJvb2wgTlM6OkJ1bmRsZTo6bG9hZEFuZFJldHVybkVycm9yKEVycm9yKiogcEVycm9yKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChsb2FkQW5kUmV0dXJuRXJyb3JfKSwgcEVycm9yKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OkJ1
bmRsZTo6YnVuZGxlVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnVuZGxlVVJMKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpV
UkwqIE5TOjpCdW5kbGU6OnJlc291cmNlVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocmVzb3VyY2VVUkwpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6ZXhlY3V0YWJsZVVSTCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGV4ZWN1dGFibGVVUkwpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6VVJMRm9yQXV4
aWxpYXJ5RXhlY3V0YWJsZShjb25zdCBTdHJpbmcqIHBFeGVjdXRhYmxlTmFtZSkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoVVJMRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8pLCBwRXhlY3V0YWJsZU5hbWUpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpwcml2YXRlRnJhbWV3b3Jrc1VSTCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KHByaXZhdGVGcmFtZXdvcmtzVVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OnNo
YXJlZEZyYW1ld29ya3NVUkwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzaGFyZWRGcmFtZXdvcmtzVVJMKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OnNoYXJlZFN1cHBvcnRVUkwoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChzaGFyZWRTdXBwb3J0VVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OmJ1aWx0
SW5QbHVnSW5zVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxV
UkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnVpbHRJblBsdWdJbnNVUkwpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlVSTCogTlM6OkJ1bmRsZTo6YXBwU3RvcmVSZWNlaXB0VVJMKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYXBw
U3RvcmVSZWNlaXB0VVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OmJ1bmRs
ZVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChidW5kbGVQYXRoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcq
IE5TOjpCdW5kbGU6OnJlc291cmNlUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHJlc291cmNlUGF0aCkp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpleGVjdXRhYmxlUGF0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKGV4ZWN1dGFibGVQYXRoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5k
bGU6OnBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlKGNvbnN0IFN0cmluZyogcEV4ZWN1dGFibGVO
YW1lKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8pLCBwRXhlY3V0
YWJsZU5hbWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpwcml2YXRlRnJhbWV3
b3Jrc1BhdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmlu
Zyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwcml2YXRlRnJhbWV3b3Jrc1BhdGgpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6c2hhcmVkRnJhbWV3b3Jrc1BhdGgoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklW
QVRFX1NFTChzaGFyZWRGcmFtZXdvcmtzUGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6
QnVuZGxlOjpzaGFyZWRTdXBwb3J0UGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHNoYXJlZFN1cHBvcnRQ
YXRoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OmJ1aWx0SW5QbHVnSW5zUGF0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKGJ1aWx0SW5QbHVnSW5zUGF0aCkpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3Ry
aW5nKiBOUzo6QnVuZGxlOjpidW5kbGVJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnVuZGxl
SWRlbnRpZmllcikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkJ1bmRsZTo6aW5mb0Rp
Y3Rpb25hcnkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rp
b25hcnkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5mb0RpY3Rpb25hcnkpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OkRpY3Rpb25hcnkqIE5TOjpCdW5kbGU6OmxvY2FsaXplZEluZm9EaWN0aW9uYXJ5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGxvY2FsaXplZEluZm9EaWN0aW9uYXJ5KSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpP
YmplY3QqIE5TOjpCdW5kbGU6Om9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5KGNvbnN0IFN0cmlu
ZyogcEtleSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxPYmplY3QqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwob2JqZWN0Rm9ySW5mb0RpY3Rpb25hcnlLZXlfKSwgcEtleSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OmxvY2FsaXplZFN0cmluZyhjb25zdCBTdHJp
bmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFZhbHVlIC8qID0gbnVsbHB0ciAqLywgY29uc3QgU3Ry
aW5nKiBwVGFibGVOYW1lIC8qID0gbnVsbHB0ciAqLykgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVk
U3RyaW5nRm9yS2V5X3ZhbHVlX3RhYmxlXyksIHBLZXksIHBWYWx1ZSwgcFRhYmxlTmFtZSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRhLmhw
cCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0YS5ocHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWM2OTllNDc0NGY4MTNkNmVmZGNkNWY2Yjc0NjczZWZlY2EwM2U3YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TRGF0YS5ocHAKQEAgLTAsMCArMSw1NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0RhdGEuaHBwCisvLworLy8g
Q29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TT2JqZWN0Lmhw
cCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworY2xhc3MgRGF0YSA6IHB1Ymxp
YyBDb3B5aW5nPERhdGE+Cit7CitwdWJsaWM6CisgICAgdm9pZCogICAgbXV0YWJsZUJ5dGVzKCkg
Y29uc3Q7CisgICAgVUludGVnZXIgbGVuZ3RoKCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkKiBO
Uzo6RGF0YTo6bXV0YWJsZUJ5dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG11dGFibGVCeXRlcykpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6VUludGVnZXIgTlM6OkRhdGE6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsZW5n
dGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9O
U0RhdGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNE
YXRlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZTZjODNhZjdjNWMzYWY3ODczMjQ1Yzk2ZTAzNzA1ODY1Yjk2
NjIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNEYXRlLmhwcApAQCAtMCwwICsxLDQwIEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TRGF0ZS5ocHAK
Ky8vCisvLyBTZWUgTElDRU5TRS50eHQgZm9yIHRoaXMgcHJvamVjdCBsaWNlbnNpbmcgaW5mb3Jt
YXRpb24uCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3Qu
aHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3Bh
Y2UgTlMKK3sKKwordXNpbmcgVGltZUludGVydmFsID0gZG91YmxlOworCitjbGFzcyBEYXRlIDog
cHVibGljIENvcHlpbmc8RGF0ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgRGF0ZSogZGF0ZVdp
dGhUaW1lSW50ZXJ2YWxTaW5jZU5vdyhUaW1lSW50ZXJ2YWwgc2Vjcyk7Cit9OworCit9IC8vIE5T
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpEYXRlKiBOUzo6RGF0ZTo6ZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vdyhO
Uzo6VGltZUludGVydmFsIHNlY3MpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpEYXRlKj4oX05TX1BSSVZBVEVfQ0xTKE5TRGF0ZSksIF9OU19QUklWQVRFX1NFTChk
YXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93XyksIHNlY3MpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU0RlZmluZXMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNEZWZpbmVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yzk2OTg5Y2I1ZGE1ZmExMGM5OGEzMjljMTMz
YjA3YWU4MmRhMWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcApAQCAtMCwwICsxLDQxIEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9u
L05TRGVmaW5lcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdt
YSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjZGVmaW5lIF9OU19XRUFLX0lNUE9SVCBfX2F0dHJpYnV0ZV9fKCh3ZWFrX2ltcG9ydCkpCisj
ZGVmaW5lIF9OU19FWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKQor
I2RlZmluZSBfTlNfRVhURVJOIGV4dGVybiAiQyIgX05TX0VYUE9SVAorI2RlZmluZSBfTlNfSU5M
SU5FIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKKyNkZWZpbmUgX05TX1BB
Q0tFRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQorCisjZGVmaW5lIF9OU19DT05TVCh0eXBlLCBu
YW1lKSBfTlNfRVhURVJOIHR5cGUgY29uc3QgbmFtZTsKKyNkZWZpbmUgX05TX0VOVU0odHlwZSwg
bmFtZSkgZW51bSBuYW1lIDogdHlwZQorI2RlZmluZSBfTlNfT1BUSU9OUyh0eXBlLCBuYW1lKSBc
CisgICAgdXNpbmcgbmFtZSA9IHR5cGU7ICAgICAgICAgIFwKKyAgICBlbnVtIDogbmFtZQorCisj
ZGVmaW5lIF9OU19DQVNUX1RPX1VJTlQodmFsdWUpIHN0YXRpY19jYXN0PE5TOjpVSW50ZWdlcj4o
dmFsdWUpCisjZGVmaW5lIF9OU19WQUxJREFURV9TSVpFKG5zLCBuYW1lKSBzdGF0aWNfYXNzZXJ0
KHNpemVvZihuczo6bmFtZSkgPT0gc2l6ZW9mKG5zIyNuYW1lKSwgInNpemUgbWlzbWF0Y2ggIiAj
bnMgIjo6IiAjbmFtZSkKKyNkZWZpbmUgX05TX1ZBTElEQVRFX0VOVU0obnMsIG5hbWUpIHN0YXRp
Y19hc3NlcnQoX05TX0NBU1RfVE9fVUlOVChuczo6bmFtZSkgPT0gX05TX0NBU1RfVE9fVUlOVChu
cyMjbmFtZSksICJ2YWx1ZSBtaXNtYXRjaCAiICNucyAiOjoiICNuYW1lKQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGljdGlvbmFyeS5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNjYmUyYmQ4M2QzZDQxZTU1ZWJiNjk1MTYxZjkwZTEwODViNTM5NDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9O
U0RpY3Rpb25hcnkuaHBwCkBAIC0wLDAgKzEsMTI4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TRGljdGlvbmFyeS5o
cHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAi
TlNFbnVtZXJhdG9yLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNU
eXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIERpY3Rpb25hcnkgOiBwdWJsaWMgTlM6OkNvcHlp
bmc8RGljdGlvbmFyeT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgRGljdGlvbmFyeSogZGljdGlv
bmFyeSgpOworICAgIHN0YXRpYyBEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5KGNvbnN0IE9iamVjdCog
cE9iamVjdCwgY29uc3QgT2JqZWN0KiBwS2V5KTsKKyAgICBzdGF0aWMgRGljdGlvbmFyeSogZGlj
dGlvbmFyeShjb25zdCBPYmplY3QqIGNvbnN0KiBwT2JqZWN0cywgY29uc3QgT2JqZWN0KiBjb25z
dCogcEtleXMsIFVJbnRlZ2VyIGNvdW50KTsKKworICAgIHN0YXRpYyBEaWN0aW9uYXJ5KiBhbGxv
YygpOworCisgICAgRGljdGlvbmFyeSogICAgICAgIGluaXQoKTsKKyAgICBEaWN0aW9uYXJ5KiAg
ICAgICAgaW5pdChjb25zdCBPYmplY3QqIGNvbnN0KiBwT2JqZWN0cywgY29uc3QgT2JqZWN0KiBj
b25zdCogcEtleXMsIFVJbnRlZ2VyIGNvdW50KTsKKyAgICBEaWN0aW9uYXJ5KiAgICAgICAgaW5p
dChjb25zdCBjbGFzcyBDb2RlciogcENvZGVyKTsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBfS2V5
VHlwZSA9IE9iamVjdD4KKyAgICBFbnVtZXJhdG9yPF9LZXlUeXBlPioga2V5RW51bWVyYXRvcigp
IGNvbnN0OworCisgICAgdGVtcGxhdGUgPGNsYXNzIF9PYmplY3QgPSBPYmplY3Q+CisgICAgX09i
amVjdCogb2JqZWN0KGNvbnN0IE9iamVjdCogcEtleSkgY29uc3Q7CisgICAgVUludGVnZXIgY291
bnQoKSBjb25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6
ZGljdGlvbmFyeSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFy
eSo+KF9OU19QUklWQVRFX0NMUyhOU0RpY3Rpb25hcnkpLCBfTlNfUFJJVkFURV9TRUwoZGljdGlv
bmFyeSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6OmRpY3Rpb25h
cnkoY29uc3QgT2JqZWN0KiBwT2JqZWN0LCBjb25zdCBPYmplY3QqIHBLZXkpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KF9OU19QUklWQVRFX0NMUyhOU0Rp
Y3Rpb25hcnkpLCBfTlNfUFJJVkFURV9TRUwoZGljdGlvbmFyeVdpdGhPYmplY3RfZm9yS2V5Xyks
IHBPYmplY3QsIHBLZXkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6
OmRpY3Rpb25hcnkoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMsIGNvbnN0IE9iamVjdCog
Y29uc3QqIHBLZXlzLCBVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxEaWN0aW9uYXJ5Kj4oX05TX1BSSVZBVEVfQ0xTKE5TRGljdGlvbmFyeSksIF9OU19Q
UklWQVRFX1NFTChkaWN0aW9uYXJ5V2l0aE9iamVjdHNfZm9yS2V5c19jb3VudF8pLAorICAgICAg
ICBwT2JqZWN0cywgcEtleXMsIGNvdW50KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE5TOjpE
aWN0aW9uYXJ5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPERpY3Rp
b25hcnk+KF9OU19QUklWQVRFX0NMUyhOU0RpY3Rpb25hcnkpKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rp
b25hcnkqIE5TOjpEaWN0aW9uYXJ5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxEaWN0aW9uYXJ5PigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25h
cnk6OmluaXQoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMsIGNvbnN0IE9iamVjdCogY29u
c3QqIHBLZXlzLCBVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxEaWN0aW9uYXJ5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoT2JqZWN0c19m
b3JLZXlzX2NvdW50XyksIHBPYmplY3RzLCBwS2V5cywgY291bnQpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGlj
dGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6OmluaXQoY29uc3QgY2xhc3MgQ29kZXIqIHBDb2RlcikK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGluaXRXaXRoQ29kZXJfKSwgcENvZGVyKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfS2V5
VHlwZT4KK19OU19JTkxJTkUgTlM6OkVudW1lcmF0b3I8X0tleVR5cGU+KiBOUzo6RGljdGlvbmFy
eTo6a2V5RW51bWVyYXRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8RW51bWVyYXRvcjxfS2V5VHlwZT4qPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoa2V5RW51bWVy
YXRvcikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKwordGVtcGxhdGUgPGNsYXNzIF9PYmplY3Q+CitfTlNfSU5MSU5FIF9PYmplY3QqIE5TOjpE
aWN0aW9uYXJ5OjpvYmplY3QoY29uc3QgT2JqZWN0KiBwS2V5KSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPF9PYmplY3QqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob2Jq
ZWN0Rm9yS2V5XyksIHBLZXkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OkRpY3Rpb25hcnk6
OmNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdl
cj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRW51bWVyYXRvci5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjk1OTZjMDRkZGFmYTgwMWZhZWI1MWM3ODYyY2VkODMwZDAxMjZiYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRW51bWVy
YXRvci5ocHAKQEAgLTAsMCArMSw3OCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0VudW1lcmF0b3IuaHBwCisvLwor
Ly8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TT2JqZWN0
LmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworc3RydWN0IEZhc3RFbnVt
ZXJhdGlvblN0YXRlCit7CisgICAgdW5zaWduZWQgbG9uZyAgc3RhdGU7CisgICAgT2JqZWN0Kiog
ICAgICAgaXRlbXNQdHI7CisgICAgdW5zaWduZWQgbG9uZyogbXV0YXRpb25zUHRyOworICAgIHVu
c2lnbmVkIGxvbmcgIGV4dHJhWzVdOworfSBfTlNfUEFDS0VEOworCitjbGFzcyBGYXN0RW51bWVy
YXRpb24gOiBwdWJsaWMgUmVmZXJlbmNpbmc8RmFzdEVudW1lcmF0aW9uPgoreworcHVibGljOgor
ICAgIE5TOjpVSW50ZWdlciBjb3VudEJ5RW51bWVyYXRpbmcoRmFzdEVudW1lcmF0aW9uU3RhdGUq
IHBTdGF0ZSwgT2JqZWN0KiogcEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGxlbik7Cit9OworCit0ZW1w
bGF0ZSA8Y2xhc3MgX09iamVjdFR5cGU+CitjbGFzcyBFbnVtZXJhdG9yIDogcHVibGljIFJlZmVy
ZW5jaW5nPEVudW1lcmF0b3I8X09iamVjdFR5cGU+LCBGYXN0RW51bWVyYXRpb24+Cit7CitwdWJs
aWM6CisgICAgX09iamVjdFR5cGUqIG5leHRPYmplY3QoKTsKKyAgICBjbGFzcyBBcnJheSogYWxs
T2JqZWN0cygpOworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpGYXN0RW51bWVyYXRpb246
OmNvdW50QnlFbnVtZXJhdGluZyhGYXN0RW51bWVyYXRpb25TdGF0ZSogcFN0YXRlLCBPYmplY3Qq
KiBwQnVmZmVyLCBOUzo6VUludGVnZXIgbGVuKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY291bnRCeUVudW1lcmF0aW5n
V2l0aFN0YXRlX29iamVjdHNfY291bnRfKSwgcFN0YXRlLCBwQnVmZmVyLCBsZW4pOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUg
PGNsYXNzIF9PYmplY3RUeXBlPgorX05TX0lOTElORSBfT2JqZWN0VHlwZSogTlM6OkVudW1lcmF0
b3I8X09iamVjdFR5cGU+OjpuZXh0T2JqZWN0KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxfT2JqZWN0VHlwZSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChuZXh0T2JqZWN0KSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0
ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdFR5cGU+CitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkVu
dW1lcmF0b3I8X09iamVjdFR5cGU+OjphbGxPYmplY3RzKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhbGxPYmplY3RzKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFcnJv
ci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vycm9y
LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZWJmOTgxOGFjN2M4OGExZTViZGU2M2VmZGQxMTYwYzJkNGE0MTRi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNFcnJvci5ocHAKQEAgLTAsMCArMSwxNzMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNFcnJvci5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNE
ZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRl
LmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworewordXNpbmcgRXJyb3JEb21h
aW4gPSBjbGFzcyBTdHJpbmcqOworCitfTlNfQ09OU1QoRXJyb3JEb21haW4sIENvY29hRXJyb3JE
b21haW4pOworX05TX0NPTlNUKEVycm9yRG9tYWluLCBQT1NJWEVycm9yRG9tYWluKTsKK19OU19D
T05TVChFcnJvckRvbWFpbiwgT1NTdGF0dXNFcnJvckRvbWFpbik7CitfTlNfQ09OU1QoRXJyb3JE
b21haW4sIE1hY2hFcnJvckRvbWFpbik7CisKK3VzaW5nIEVycm9yVXNlckluZm9LZXkgPSBjbGFz
cyBTdHJpbmcqOworCitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgVW5kZXJseWluZ0Vycm9y
S2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWREZXNjcmlwdGlvbktl
eSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVy
cm9yS2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRSZWNvdmVyeVN1
Z2dlc3Rpb25FcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVk
UmVjb3ZlcnlPcHRpb25zRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIFJl
Y292ZXJ5QXR0ZW1wdGVyRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIEhl
bHBBbmNob3JFcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwgRGVidWdEZXNj
cmlwdGlvbkVycm9yS2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRG
YWlsdXJlRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIFN0cmluZ0VuY29k
aW5nRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIFVSTEVycm9yS2V5KTsK
K19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBGaWxlUGF0aEVycm9yS2V5KTsKKworY2xhc3Mg
RXJyb3IgOiBwdWJsaWMgQ29weWluZzxFcnJvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXJy
b3IqICAgICBlcnJvcihFcnJvckRvbWFpbiBkb21haW4sIEludGVnZXIgY29kZSwgY2xhc3MgRGlj
dGlvbmFyeSogcERpY3Rpb25hcnkpOworCisgICAgc3RhdGljIEVycm9yKiAgICAgYWxsb2MoKTsK
KyAgICBFcnJvciogICAgICAgICAgICBpbml0KCk7CisgICAgRXJyb3IqICAgICAgICAgICAgaW5p
dChFcnJvckRvbWFpbiBkb21haW4sIEludGVnZXIgY29kZSwgY2xhc3MgRGljdGlvbmFyeSogcERp
Y3Rpb25hcnkpOworCisgICAgSW50ZWdlciAgICAgICAgICAgY29kZSgpIGNvbnN0OworICAgIEVy
cm9yRG9tYWluICAgICAgIGRvbWFpbigpIGNvbnN0OworICAgIGNsYXNzIERpY3Rpb25hcnkqIHVz
ZXJJbmZvKCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJpbmcqICAgICBsb2NhbGl6ZWREZXNjcmlw
dGlvbigpIGNvbnN0OworICAgIGNsYXNzIEFycmF5KiAgICAgIGxvY2FsaXplZFJlY292ZXJ5T3B0
aW9ucygpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIGxvY2FsaXplZFJlY292ZXJ5U3Vn
Z2VzdGlvbigpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIGxvY2FsaXplZEZhaWx1cmVS
ZWFzb24oKSBjb25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yRG9tYWluLCBD
b2NvYUVycm9yRG9tYWluKTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JEb21haW4s
IFBPU0lYRXJyb3JEb21haW4pOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvckRvbWFp
biwgT1NTdGF0dXNFcnJvckRvbWFpbik7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9y
RG9tYWluLCBNYWNoRXJyb3JEb21haW4pOworCitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVy
cm9yVXNlckluZm9LZXksIFVuZGVybHlpbmdFcnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09O
U1QoTlM6OkVycm9yVXNlckluZm9LZXksIExvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKK19OU19Q
UklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkRmFpbHVyZVJl
YXNvbkVycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tl
eSwgTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVG
X0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnNFcnJv
cktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIFJlY292
ZXJ5QXR0ZW1wdGVyRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVz
ZXJJbmZvS2V5LCBIZWxwQW5jaG9yRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5T
OjpFcnJvclVzZXJJbmZvS2V5LCBEZWJ1Z0Rlc2NyaXB0aW9uRXJyb3JLZXkpOworX05TX1BSSVZB
VEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRGYWlsdXJlRXJyb3JL
ZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBTdHJpbmdF
bmNvZGluZ0Vycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5m
b0tleSwgVVJMRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJ
bmZvS2V5LCBGaWxlUGF0aEVycm9yS2V5KTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkVycm9yKiBOUzo6RXJyb3I6OmVy
cm9yKEVycm9yRG9tYWluIGRvbWFpbiwgSW50ZWdlciBjb2RlLCBjbGFzcyBEaWN0aW9uYXJ5KiBw
RGljdGlvbmFyeSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxFcnJvcio+KF9O
U19QUklWQVRFX0NMUyhOU0Vycm9yKSwgX05TX1BSSVZBVEVfU0VMKGVycm9yV2l0aERvbWFpbl9j
b2RlX3VzZXJJbmZvXyksIGRvbWFpbiwgY29kZSwgcERpY3Rpb25hcnkpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
RXJyb3IqIE5TOjpFcnJvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBPYmplY3Q6OmFsbG9jPEVy
cm9yPihfTlNfUFJJVkFURV9DTFMoTlNFcnJvcikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RXJyb3IqIE5TOjpF
cnJvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6aW5pdDxFcnJvcj4oKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkVycm9yKiBOUzo6RXJyb3I6OmluaXQoRXJyb3JEb21haW4gZG9tYWluLCBJbnRlZ2Vy
IGNvZGUsIGNsYXNzIERpY3Rpb25hcnkqIHBEaWN0aW9uYXJ5KQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPEVycm9yKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoRG9t
YWluX2NvZGVfdXNlckluZm9fKSwgZG9tYWluLCBjb2RlLCBwRGljdGlvbmFyeSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpJbnRlZ2VyIE5TOjpFcnJvcjo6Y29kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8SW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNvZGUpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6OkVycm9yRG9tYWluIE5TOjpFcnJvcjo6ZG9tYWluKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxFcnJvckRvbWFpbj4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGRvbWFpbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkVycm9yOjp1c2VySW5m
bygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+
KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1c2VySW5mbykpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBO
Uzo6RXJyb3I6OmxvY2FsaXplZERlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVk
RGVzY3JpcHRpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBOUzo6RXJyb3I6OmxvY2FsaXplZFJl
Y292ZXJ5T3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
QXJyYXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpFcnJvcjo6bG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpTdHJpbmcqIE5TOjpFcnJvcjo6bG9jYWxpemVkRmFpbHVyZVJlYXNvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKGxvY2FsaXplZEZhaWx1cmVSZWFzb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0xvY2suaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjdkZTA4
MTk0ZjM0MjQ4OThmYzFmYjIzNzVmNjIzZDQ4NzhiNDRmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcApAQCAtMCww
ICsxLDEwNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gRm91bmRhdGlvbi9OU0xvY2suaHBwCisvLworLy8gU2VlIExJQ0VOU0UudHh0IGZv
ciB0aGlzIHByb2plY3QgbGljZW5zaW5nIGluZm9ybWF0aW9uLgorLy8KKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0Rl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUu
aHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorI2luY2x1ZGUgIk5TRGF0ZS5ocHAiCisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2Ug
TlMKK3sKKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgPSBjbGFzcyBPYmpl
Y3Q+CitjbGFzcyBMb2NraW5nIDogcHVibGljIF9CYXNlCit7CitwdWJsaWM6CisgICAgdm9pZCBs
b2NrKCk7CisgICAgdm9pZCB1bmxvY2soKTsKK307CisKK2NsYXNzIENvbmRpdGlvbiA6IHB1Ymxp
YyBMb2NraW5nPENvbmRpdGlvbj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgQ29uZGl0aW9uKiBh
bGxvYygpOworCisgICAgQ29uZGl0aW9uKiAgICAgICAgaW5pdCgpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgd2FpdCgpOworICAgIGJvb2wgICAgICAgICAgICAgIHdhaXRVbnRpbERhdGUoRGF0
ZSogcExpbWl0KTsKKyAgICB2b2lkICAgICAgICAgICAgICBzaWduYWwoKTsKKyAgICB2b2lkICAg
ICAgICAgICAgICBicm9hZGNhc3QoKTsKK307CisKK30gLy8gTlMKKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlPGNsYXNzIF9DbGFzcywg
Y2xhc3MgX0Jhc2UgLyogPSBOUzo6T2JqZWN0ICovPgorX05TX0lOTElORSB2b2lkIE5TOjpMb2Nr
aW5nPF9DbGFzcywgX0Jhc2U+Ojpsb2NrKCkKK3sKKyAgICBOUzo6T2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jaykpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGU8Y2xhc3MgX0NsYXNz
LCBjbGFzcyBfQmFzZSAvKiA9IE5TOjpPYmplY3QgKi8+CitfTlNfSU5MSU5FIHZvaWQgTlM6Okxv
Y2tpbmc8X0NsYXNzLCBfQmFzZT46OnVubG9jaygpCit7CisgICAgTlM6Ok9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVubG9jaykpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
Q29uZGl0aW9uKiBOUzo6Q29uZGl0aW9uOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE5TOjpDb25kaXRpb24+KF9OU19QUklWQVRFX0NMUyhOU0NvbmRpdGlvbikpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6Q29uZGl0aW9uKiBOUzo6Q29uZGl0aW9uOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxOUzo6Q29uZGl0aW9uPigpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpD
b25kaXRpb246OndhaXQoKQoreworICAgIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9OU19QUklWQVRFX1NFTCh3YWl0KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OkNvbmRpdGlvbjo6
d2FpdFVudGlsRGF0ZShOUzo6RGF0ZSogcExpbWl0KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwod2FpdFVudGlsRGF0ZV8p
LCBwTGltaXQpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpDb25kaXRpb246OnNpZ25hbCgpCit7CisgICAg
TlM6Ok9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHNpZ25h
bCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSB2b2lkIE5TOjpDb25kaXRpb246OmJyb2FkY2FzdCgpCit7CisgICAgTlM6
Ok9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGJyb2FkY2Fz
dCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGFiYmM5ZjU4MDZiNjY1MDFkMzc5NTRiOGVmNTBlNjMyZjVjMmQ2NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90
aWZpY2F0aW9uLmhwcApAQCAtMCwwICsxLDY3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TTm90aWZpY2F0aW9uLmhw
cAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJO
U0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TRGljdGlvbmFyeS5ocHAiCisjaW5jbHVkZSAiTlNP
YmplY3QuaHBwIgorI2luY2x1ZGUgIk5TU3RyaW5nLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhw
cCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25h
bWVzcGFjZSBOUworewordXNpbmcgTm90aWZpY2F0aW9uTmFtZSA9IGNsYXNzIFN0cmluZyo7CisK
K2NsYXNzIE5vdGlmaWNhdGlvbiA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Tm90aWZpY2F0aW9u
PgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgICBuYW1lKCkgY29uc3Q7CisgICAgTlM6
Ok9iamVjdCogICAgIG9iamVjdCgpIGNvbnN0OworICAgIE5TOjpEaWN0aW9uYXJ5KiB1c2VySW5m
bygpIGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6Ok5vdGlmaWNhdGlvbjo6bmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpPYmplY3QqIE5TOjpO
b3RpZmljYXRpb246Om9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6Ok9iamVjdCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChvYmplY3QpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkRpY3Rpb25hcnkqIE5TOjpOb3RpZmljYXRpb246OnVzZXJJbmZvKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6RGljdGlvbmFyeSo+KHRoaXMsIF9O
U19QUklWQVRFX1NFTCh1c2VySW5mbykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9Gb3VuZGF0aW9uL05TTnVtYmVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9Gb3VuZGF0aW9uL05TTnVtYmVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDBmNjZmMzc0ZmJj
Mzk2MWQ1NTU2NDYxNjAxZjBlZTc0OWViZjQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOdW1iZXIuaHBwCkBAIC0wLDAgKzEs
NTAxIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
CisvLyBGb3VuZGF0aW9uL05TTnVtYmVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU09iakNSdW50aW1lLmhwcCIKKyNpbmNsdWRlICJO
U09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIFZh
bHVlIDogcHVibGljIENvcHlpbmc8VmFsdWU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIFZhbHVl
KiB2YWx1ZShjb25zdCB2b2lkKiBwVmFsdWUsIGNvbnN0IGNoYXIqIHBUeXBlKTsKKyAgICBzdGF0
aWMgVmFsdWUqIHZhbHVlKGNvbnN0IHZvaWQqIHBQb2ludGVyKTsKKworICAgIHN0YXRpYyBWYWx1
ZSogYWxsb2MoKTsKKworICAgIFZhbHVlKiAgICAgICAgaW5pdChjb25zdCB2b2lkKiBwVmFsdWUs
IGNvbnN0IGNoYXIqIHBUeXBlKTsKKyAgICBWYWx1ZSogICAgICAgIGluaXQoY29uc3QgY2xhc3Mg
Q29kZXIqIHBDb2Rlcik7CisKKyAgICB2b2lkICAgICAgICAgIGdldFZhbHVlKHZvaWQqIHBWYWx1
ZSwgVUludGVnZXIgc2l6ZSkgY29uc3Q7CisgICAgY29uc3QgY2hhciogICBvYmpDVHlwZSgpIGNv
bnN0OworCisgICAgYm9vbCAgICAgICAgICBpc0VxdWFsVG9WYWx1ZShWYWx1ZSogcFZhbHVlKSBj
b25zdDsKKyAgICB2b2lkKiAgICAgICAgIHBvaW50ZXJWYWx1ZSgpIGNvbnN0OworfTsKKworY2xh
c3MgTnVtYmVyIDogcHVibGljIENvcHlpbmc8TnVtYmVyLCBWYWx1ZT4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGNoYXIgdmFsdWUpOworICAgIHN0YXRpYyBOdW1i
ZXIqICAgICBudW1iZXIodW5zaWduZWQgY2hhciB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciog
ICAgIG51bWJlcihzaG9ydCB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcih1
bnNpZ25lZCBzaG9ydCB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcihpbnQg
dmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIodW5zaWduZWQgaW50IHZhbHVl
KTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGxvbmcgdmFsdWUpOworICAgIHN0YXRp
YyBOdW1iZXIqICAgICBudW1iZXIodW5zaWduZWQgbG9uZyB2YWx1ZSk7CisgICAgc3RhdGljIE51
bWJlciogICAgIG51bWJlcihsb25nIGxvbmcgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAg
ICBudW1iZXIodW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAg
ICAgbnVtYmVyKGZsb2F0IHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGRv
dWJsZSB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcihib29sIHZhbHVlKTsK
KworICAgIHN0YXRpYyBOdW1iZXIqICAgICBhbGxvYygpOworCisgICAgTnVtYmVyKiAgICAgICAg
ICAgIGluaXQoY29uc3QgY2xhc3MgQ29kZXIqIHBDb2Rlcik7CisgICAgTnVtYmVyKiAgICAgICAg
ICAgIGluaXQoY2hhciB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQodW5zaWdu
ZWQgY2hhciB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQoc2hvcnQgdmFsdWUp
OworICAgIE51bWJlciogICAgICAgICAgICBpbml0KHVuc2lnbmVkIHNob3J0IHZhbHVlKTsKKyAg
ICBOdW1iZXIqICAgICAgICAgICAgaW5pdChpbnQgdmFsdWUpOworICAgIE51bWJlciogICAgICAg
ICAgICBpbml0KHVuc2lnbmVkIGludCB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGlu
aXQobG9uZyB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQodW5zaWduZWQgbG9u
ZyB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQobG9uZyBsb25nIHZhbHVlKTsK
KyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdCh1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpOwor
ICAgIE51bWJlciogICAgICAgICAgICBpbml0KGZsb2F0IHZhbHVlKTsKKyAgICBOdW1iZXIqICAg
ICAgICAgICAgaW5pdChkb3VibGUgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0
KGJvb2wgdmFsdWUpOworCisgICAgY2hhciAgICAgICAgICAgICAgIGNoYXJWYWx1ZSgpIGNvbnN0
OworICAgIHVuc2lnbmVkIGNoYXIgICAgICB1bnNpZ25lZENoYXJWYWx1ZSgpIGNvbnN0OworICAg
IHNob3J0ICAgICAgICAgICAgICBzaG9ydFZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgc2hv
cnQgICAgIHVuc2lnbmVkU2hvcnRWYWx1ZSgpIGNvbnN0OworICAgIGludCAgICAgICAgICAgICAg
ICBpbnRWYWx1ZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCAgICAgICB1bnNpZ25lZEludFZh
bHVlKCkgY29uc3Q7CisgICAgbG9uZyAgICAgICAgICAgICAgIGxvbmdWYWx1ZSgpIGNvbnN0Owor
ICAgIHVuc2lnbmVkIGxvbmcgICAgICB1bnNpZ25lZExvbmdWYWx1ZSgpIGNvbnN0OworICAgIGxv
bmcgbG9uZyAgICAgICAgICBsb25nTG9uZ1ZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9u
ZyBsb25nIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZSgpIGNvbnN0OworICAgIGZsb2F0ICAgICAgICAg
ICAgICBmbG9hdFZhbHVlKCkgY29uc3Q7CisgICAgZG91YmxlICAgICAgICAgICAgIGRvdWJsZVZh
bHVlKCkgY29uc3Q7CisgICAgYm9vbCAgICAgICAgICAgICAgIGJvb2xWYWx1ZSgpIGNvbnN0Owor
ICAgIEludGVnZXIgICAgICAgICAgICBpbnRlZ2VyVmFsdWUoKSBjb25zdDsKKyAgICBVSW50ZWdl
ciAgICAgICAgICAgdW5zaWduZWRJbnRlZ2VyVmFsdWUoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJp
bmcqICAgICAgc3RyaW5nVmFsdWUoKSBjb25zdDsKKworICAgIENvbXBhcmlzb25SZXN1bHQgICBj
b21wYXJlKGNvbnN0IE51bWJlciogcE90aGVyTnVtYmVyKSBjb25zdDsKKyAgICBib29sICAgICAg
ICAgICAgICAgaXNFcXVhbFRvTnVtYmVyKGNvbnN0IE51bWJlciogcE51bWJlcikgY29uc3Q7CisK
KyAgICBjbGFzcyBTdHJpbmcqICAgICAgZGVzY3JpcHRpb25XaXRoTG9jYWxlKGNvbnN0IE9iamVj
dCogcExvY2FsZSkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VmFsdWUqIE5TOjpWYWx1ZTo6dmFs
dWUoY29uc3Qgdm9pZCogcFZhbHVlLCBjb25zdCBjaGFyKiBwVHlwZSkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxWYWx1ZSo+KF9OU19QUklWQVRFX0NMUyhOU1ZhbHVlKSwgX05T
X1BSSVZBVEVfU0VMKHZhbHVlV2l0aEJ5dGVzX29iakNUeXBlXyksIHBWYWx1ZSwgcFR5cGUpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6VmFsdWUqIE5TOjpWYWx1ZTo6dmFsdWUoY29uc3Qgdm9pZCogcFBvaW50ZXIp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VmFsdWUqPihfTlNfUFJJVkFURV9D
TFMoTlNWYWx1ZSksIF9OU19QUklWQVRFX1NFTCh2YWx1ZVdpdGhQb2ludGVyXyksIHBQb2ludGVy
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19OU19JTkxJTkUgTlM6OlZhbHVlKiBOUzo6VmFsdWU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8VmFsdWU+KF9OU19QUklWQVRFX0NMUyhOU1ZhbHVlKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpWYWx1ZSogTlM6OlZhbHVlOjppbml0KGNvbnN0IHZvaWQqIHBWYWx1ZSwgY29uc3Qg
Y2hhciogcFR5cGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VmFsdWUqPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhCeXRlc19vYmpDVHlwZV8pLCBwVmFsdWUsIHBU
eXBlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgTlM6OlZhbHVlKiBOUzo6VmFsdWU6OmluaXQoY29uc3QgY2xhc3MgQ29k
ZXIqIHBDb2RlcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxWYWx1ZSo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aENvZGVyXyksIHBDb2Rlcik7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZv
aWQgTlM6OlZhbHVlOjpnZXRWYWx1ZSh2b2lkKiBwVmFsdWUsIFVJbnRlZ2VyIHNpemUpIGNvbnN0
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
Z2V0VmFsdWVfc2l6ZV8pLCBwVmFsdWUsIHNpemUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBjb25zdCBjaGFyKiBOUzo6
VmFsdWU6Om9iakNUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxjb25zdCBjaGFyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9iakNUeXBlKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IGJvb2wgTlM6OlZhbHVlOjppc0VxdWFsVG9WYWx1ZShWYWx1ZSogcFZhbHVlKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChpc0VxdWFsVG9WYWx1ZV8pLCBwVmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkKiBOUzo6VmFsdWU6OnBv
aW50ZXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwb2ludGVyVmFsdWUpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51
bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKGNoYXIgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BS
SVZBVEVfU0VMKG51bWJlcldpdGhDaGFyXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciog
TlM6Ok51bWJlcjo6bnVtYmVyKHVuc2lnbmVkIGNoYXIgdmFsdWUpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05T
X1BSSVZBVEVfU0VMKG51bWJlcldpdGhVbnNpZ25lZENoYXJfKSwgdmFsdWUpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIoc2hvcnQgdmFsdWUpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwg
X05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhTaG9ydF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpO
dW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcih1bnNpZ25lZCBzaG9ydCB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1i
ZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFVuc2lnbmVkU2hvcnRfKSwgdmFsdWUpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIoaW50IHZhbHVlKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051
bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoSW50XyksIHZhbHVlKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKHVuc2lnbmVkIGludCB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNO
dW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFVuc2lnbmVkSW50XyksIHZhbHVlKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKGxvbmcgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5T
TnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhMb25nXyksIHZhbHVlKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKHVuc2lnbmVkIGxvbmcgdmFsdWUpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xT
KE5TTnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhVbnNpZ25lZExvbmdfKSwgdmFs
dWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIobG9uZyBsb25nIHZh
bHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklW
QVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoTG9uZ0xvbmdfKSwg
dmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIodW5zaWduZWQg
bG9uZyBsb25nIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJl
cio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRo
VW5zaWduZWRMb25nTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1i
ZXI6Om51bWJlcihmbG9hdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVt
YmVyV2l0aEZsb2F0XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6
bnVtYmVyKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
dW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVy
V2l0aERvdWJsZV8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51
bWJlcihib29sIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJl
cio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRo
Qm9vbF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TnVtYmVyPihfTlNfUFJJVkFURV9DTFMo
TlNOdW1iZXIpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChjb25zdCBD
b2RlciogcENvZGVyKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aENvZGVyXyksIHBDb2Rlcik7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoY2hhciB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdp
dGhDaGFyXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdCh1
bnNpZ25lZCBjaGFyIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51
bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aFVuc2lnbmVkQ2hhcl8pLCB2YWx1
ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoc2hvcnQgdmFsdWUpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGluaXRXaXRoU2hvcnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6
TnVtYmVyOjppbml0KHVuc2lnbmVkIHNob3J0IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aFVuc2ln
bmVkU2hvcnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0
KGludCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhJbnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KHVuc2lnbmVkIGludCB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5p
dFdpdGhVbnNpZ25lZEludF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1i
ZXI6OmluaXQobG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
dW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhMb25nXyksIHZhbHVlKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdCh1bnNpZ25lZCBsb25nIHZhbHVlKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklW
QVRFX1NFTChpbml0V2l0aFVuc2lnbmVkTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1i
ZXIqIE5TOjpOdW1iZXI6OmluaXQobG9uZyBsb25nIHZhbHVlKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aExv
bmdMb25nXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdCh1
bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoVW5zaWduZWRMb25nTG9u
Z18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoZmxvYXQg
dmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGluaXRXaXRoRmxvYXRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVt
YmVyKiBOUzo6TnVtYmVyOjppbml0KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhEb3Vi
bGVfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KGJvb2wg
dmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQm9vbF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGNoYXIgTlM6
Ok51bWJlcjo6Y2hhclZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxjaGFyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY2hhclZhbHVlKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVu
c2lnbmVkIGNoYXIgTlM6Ok51bWJlcjo6dW5zaWduZWRDaGFyVmFsdWUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVkIGNoYXI+KHRoaXMsIF9OU19QUklW
QVRFX1NFTCh1bnNpZ25lZENoYXJWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBzaG9ydCBOUzo6TnVtYmVyOjpz
aG9ydFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxzaG9y
dD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHNob3J0VmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdW5zaWduZWQg
c2hvcnQgTlM6Ok51bWJlcjo6dW5zaWduZWRTaG9ydFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1bnNpZ25lZCBzaG9ydD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKHVuc2lnbmVkU2hvcnRWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBpbnQgTlM6Ok51bWJlcjo6aW50VmFs
dWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGludD4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGludFZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIGludCBOUzo6TnVt
YmVyOjp1bnNpZ25lZEludFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTx1bnNpZ25lZCBpbnQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNpZ25lZEludFZh
bHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIGxvbmcgTlM6Ok51bWJlcjo6bG9uZ1ZhbHVlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxsb25nPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
bG9uZ1ZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIGxvbmcgTlM6Ok51bWJlcjo6dW5zaWduZWRM
b25nVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2ln
bmVkIGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNpZ25lZExvbmdWYWx1ZSkpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBsb25nIGxvbmcgTlM6Ok51bWJlcjo6bG9uZ0xvbmdWYWx1ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8bG9uZyBsb25nPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwobG9uZ0xvbmdWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB1bnNpZ25lZCBsb25nIGxvbmcgTlM6Ok51bWJl
cjo6dW5zaWduZWRMb25nTG9uZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx1bnNpZ25lZCBsb25nIGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNp
Z25lZExvbmdMb25nVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgZmxvYXQgTlM6Ok51bWJlcjo6ZmxvYXRWYWx1
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChmbG9hdFZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGRvdWJsZSBOUzo6TnVtYmVy
Ojpkb3VibGVWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
ZG91YmxlPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZG91YmxlVmFsdWUpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9v
bCBOUzo6TnVtYmVyOjpib29sVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChib29sVmFsdWUpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkludGVnZXIgTlM6Ok51bWJlcjo6aW50ZWdlclZhbHVlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
aW50ZWdlclZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6TnVtYmVyOjp1bnNpZ25l
ZEludGVnZXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNpZ25lZEludGVnZXJWYWx1ZSkpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6U3RyaW5nKiBOUzo6TnVtYmVyOjpzdHJpbmdWYWx1ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVf
U0VMKHN0cmluZ1ZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpDb21wYXJpc29uUmVzdWx0IE5TOjpOdW1i
ZXI6OmNvbXBhcmUoY29uc3QgTnVtYmVyKiBwT3RoZXJOdW1iZXIpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Q29tcGFyaXNvblJlc3VsdD4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGNvbXBhcmVfKSwgcE90aGVyTnVtYmVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6TnVtYmVy
Ojppc0VxdWFsVG9OdW1iZXIoY29uc3QgTnVtYmVyKiBwTnVtYmVyKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpc0Vx
dWFsVG9OdW1iZXJfKSwgcE51bWJlcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpOdW1iZXI6
OmRlc2NyaXB0aW9uV2l0aExvY2FsZShjb25zdCBPYmplY3QqIHBMb2NhbGUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGRlc2NyaXB0aW9uV2l0aExvY2FsZV8pLCBwTG9jYWxlKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iakNSdW50aW1lLmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqQ1J1bnRpbWUuaHBwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ4ZTY1MDY2ZTU4Y2E3MDU3NDIwZTZmNTg5ZTc5NWEyZWRmYzZhZTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9O
U09iakNSdW50aW1lLmhwcApAQCAtMCwwICsxLDQzIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TT2JqQ1J1bnRpbWUu
aHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUg
Ik5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKKworX05T
X0VOVU0oSW50ZWdlciwgQ29tcGFyaXNvblJlc3VsdCkgeworICAgIE9yZGVyZWRBc2NlbmRpbmcg
PSAtMSwKKyAgICBPcmRlcmVkU2FtZSA9IDAsCisgICAgT3JkZXJlZERlc2NlbmRpbmcgPSAxLAor
fTsKKworY29uc3QgSW50ZWdlciBOb3RGb3VuZCA9IEludGVnZXJNYXg7CisKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iamVjdC5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iamVjdC5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjRlMWM2MzJjOWQ1YmExZWI2NDQ3YWEyZTlhYjUzMDFmYWI2ZjI1MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2Jq
ZWN0LmhwcApAQCAtMCwwICsxLDI5NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU09iamVjdC5ocHAKKy8vCisvLyBD
b3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
Ky8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhw
cCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisj
aW5jbHVkZSA8b2JqYy9tZXNzYWdlLmg+CisjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisKKyNp
bmNsdWRlIDx0eXBlX3RyYWl0cz4KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworewordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywg
Y2xhc3MgX0Jhc2UgPSBjbGFzcyBPYmplY3Q+CitjbGFzcyBSZWZlcmVuY2luZyA6IHB1YmxpYyBf
QmFzZQoreworcHVibGljOgorICAgIF9DbGFzcyogIHJldGFpbigpOworICAgIHZvaWQgICAgIHJl
bGVhc2UoKTsKKworICAgIF9DbGFzcyogIGF1dG9yZWxlYXNlKCk7CisKKyAgICBVSW50ZWdlciBy
ZXRhaW5Db3VudCgpIGNvbnN0OworfTsKKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3Mg
X0Jhc2UgPSBjbGFzcyBPYmplY3Q+CitjbGFzcyBDb3B5aW5nIDogcHVibGljIFJlZmVyZW5jaW5n
PF9DbGFzcywgX0Jhc2U+Cit7CitwdWJsaWM6CisgICAgX0NsYXNzKiBjb3B5KCkgY29uc3Q7Cit9
OworCitjbGFzcyBPYmplY3QgOiBwdWJsaWMgUmVmZXJlbmNpbmc8T2JqZWN0LCBvYmpjX29iamVj
dD4KK3sKK3B1YmxpYzoKKyAgICBVSW50ZWdlciAgICAgIGhhc2goKSBjb25zdDsKKyAgICBib29s
ICAgICAgICAgIGlzRXF1YWwoY29uc3QgT2JqZWN0KiBwT2JqZWN0KSBjb25zdDsKKworICAgIGNs
YXNzIFN0cmluZyogZGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqIGRlYnVn
RGVzY3JpcHRpb24oKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBSZWZl
cmVuY2luZzxPYmplY3QsIG9iamNfb2JqZWN0PjsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBfQ2xh
c3M+CisgICAgc3RhdGljIF9DbGFzcyogYWxsb2MoY29uc3QgY2hhciogcENsYXNzTmFtZSk7Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIF9DbGFzcz4KKyAgICBzdGF0aWMgX0NsYXNzKiBhbGxvYyhjb25z
dCB2b2lkKiBwQ2xhc3MpOworICAgIHRlbXBsYXRlIDxjbGFzcyBfQ2xhc3M+CisgICAgX0NsYXNz
KiBpbml0KCk7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0RzdD4KKyAgICBzdGF0aWMgX0RzdCAg
ICAgICAgICAgICAgICAgICBicmlkZ2luZ0Nhc3QoY29uc3Qgdm9pZCogcE9iaik7CisgICAgc3Rh
dGljIGNsYXNzIE1ldGhvZFNpZ25hdHVyZSogbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3IoY29u
c3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yKTsKKyAgICBzdGF0aWMgYm9vbCAgICAgICAgICAg
ICAgICAgICByZXNwb25kc1RvU2VsZWN0b3IoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9y
KTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1R5cGU+CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGRvZXNSZXF1aXJlTXNnU2VuZFN0cmV0KCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9S
ZXQsIHR5cGVuYW1lLi4uIF9BcmdzPgorICAgIHN0YXRpYyBfUmV0IHNlbmRNZXNzYWdlKGNvbnN0
IHZvaWQqIHBPYmosIFNFTCBzZWxlY3RvciwgX0FyZ3MuLi4gYXJncyk7CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIF9SZXQsIHR5cGVuYW1lLi4uIF9BcmdzPgorICAgIHN0YXRpYyBfUmV0IHNlbmRN
ZXNzYWdlU2FmZShjb25zdCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IsIF9BcmdzLi4uIGFyZ3Mp
OworCitwcml2YXRlOgorICAgIE9iamVjdCgpID0gZGVsZXRlOworICAgIE9iamVjdChjb25zdCBP
YmplY3QmKSA9IGRlbGV0ZTsKKyAgICB+T2JqZWN0KCkgPSBkZWxldGU7CisKKyAgICBPYmplY3Qm
IG9wZXJhdG9yPShjb25zdCBPYmplY3QmKSA9IGRlbGV0ZTsKK307Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0Ns
YXNzLCBjbGFzcyBfQmFzZSAvKiA9IE9iamVjdCAqLz4KK19OU19JTkxJTkUgX0NsYXNzKiBOUzo6
UmVmZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT46OnJldGFpbigpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8X0NsYXNzKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHJldGFpbikpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVt
cGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgLyogPSBPYmplY3QgKi8+CitfTlNfSU5M
SU5FIHZvaWQgTlM6OlJlZmVyZW5jaW5nPF9DbGFzcywgX0Jhc2U+OjpyZWxlYXNlKCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChyZWxlYXNl
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSAvKiA9IE9iamVjdCAqLz4KK19O
U19JTkxJTkUgX0NsYXNzKiBOUzo6UmVmZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT46OmF1dG9yZWxl
YXNlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxfQ2xhc3MqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoYXV0b3JlbGVhc2UpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNz
IF9CYXNlIC8qID0gT2JqZWN0ICovPgorX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OlJlZmVy
ZW5jaW5nPF9DbGFzcywgX0Jhc2U+OjpyZXRhaW5Db3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChyZXRh
aW5Db3VudCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgLyogPSBPYmplY3Qg
Ki8+CitfTlNfSU5MSU5FIF9DbGFzcyogTlM6OkNvcHlpbmc8X0NsYXNzLCBfQmFzZT46OmNvcHko
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPF9DbGFzcyo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChjb3B5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0RzdD4KK19OU19JTkxJTkUg
X0RzdCBOUzo6T2JqZWN0OjpicmlkZ2luZ0Nhc3QoY29uc3Qgdm9pZCogcE9iaikKK3sKKyNpZiBf
X09CSkNfXworICAgIHJldHVybiAoX19icmlkZ2UgX0RzdClwT2JqOworI2Vsc2UKKyAgICByZXR1
cm4gKF9Ec3QpcE9iajsKKyNlbmRpZiAvLyBfX09CSkNfXworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPHR5cGVuYW1lIF9UeXBl
PgorX05TX0lOTElORSBjb25zdGV4cHIgYm9vbCBOUzo6T2JqZWN0Ojpkb2VzUmVxdWlyZU1zZ1Nl
bmRTdHJldCgpCit7CisjaWYgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRf
XykpCisgICAgY29uc3RleHByIHNpemVfdCBrU3RydWN0TGltaXQgPSAoc2l6ZW9mKHN0ZDo6dWlu
dHB0cl90KSA8PCAxKTsKKworICAgIHJldHVybiBzaXplb2YoX1R5cGUpID4ga1N0cnVjdExpbWl0
OworI2VsaWYgZGVmaW5lZChfX2FybTY0X18pCisgICAgcmV0dXJuIGZhbHNlOworI2VsaWYgZGVm
aW5lZChfX2FybV9fKQorICAgIGNvbnN0ZXhwciBzaXplX3Qga1N0cnVjdExpbWl0ID0gc2l6ZW9m
KHN0ZDo6dWludHB0cl90KTsKKworICAgIHJldHVybiBzdGQ6OmlzX2NsYXNzKF9UeXBlKSAmJiAo
c2l6ZW9mKF9UeXBlKSA+IGtTdHJ1Y3RMaW1pdCk7CisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRl
ZCBhcmNoaXRlY3R1cmUhIgorI2VuZGlmCit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8PgorX05TX0lOTElORSBjb25zdGV4cHIg
Ym9vbCBOUzo6T2JqZWN0Ojpkb2VzUmVxdWlyZU1zZ1NlbmRTdHJldDx2b2lkPigpCit7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKwordGVtcGxhdGUgPHR5cGVuYW1lIF9SZXQsIHR5cGVuYW1lLi4uIF9BcmdzPgor
X05TX0lOTElORSBfUmV0IE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlKGNvbnN0IHZvaWQqIHBPYmos
IFNFTCBzZWxlY3RvciwgX0FyZ3MuLi4gYXJncykKK3sKKyNpZiAoZGVmaW5lZChfX2kzODZfXykg
fHwgZGVmaW5lZChfX3g4Nl82NF9fKSkKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfZmxvYXRp
bmdfcG9pbnQ8X1JldD4oKSkKKyAgICB7CisgICAgICAgIHVzaW5nIFNlbmRNZXNzYWdlUHJvY0Zw
cmV0ID0gX1JldCAoKikoY29uc3Qgdm9pZCosIFNFTCwgX0FyZ3MuLi4pOworCisgICAgICAgIGNv
bnN0IFNlbmRNZXNzYWdlUHJvY0ZwcmV0IHBQcm9jID0gcmVpbnRlcnByZXRfY2FzdDxTZW5kTWVz
c2FnZVByb2NGcHJldD4oJm9iamNfbXNnU2VuZF9mcHJldCk7CisKKyAgICAgICAgcmV0dXJuICgq
cFByb2MpKHBPYmosIHNlbGVjdG9yLCBhcmdzLi4uKTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlm
IC8vICggZGVmaW5lZCggX19pMzg2X18gKSAgfHwgZGVmaW5lZCggX194ODZfNjRfXyApICApCisj
aWYgIWRlZmluZWQoX19hcm02NF9fKQorICAgICAgICBpZiBjb25zdGV4cHIgKGRvZXNSZXF1aXJl
TXNnU2VuZFN0cmV0PF9SZXQ+KCkpCisgICAgeworICAgICAgICB1c2luZyBTZW5kTWVzc2FnZVBy
b2NTdHJldCA9IHZvaWQgKCopKF9SZXQqLCBjb25zdCB2b2lkKiwgU0VMLCBfQXJncy4uLik7CisK
KyAgICAgICAgY29uc3QgU2VuZE1lc3NhZ2VQcm9jU3RyZXQgcFByb2MgPSByZWludGVycHJldF9j
YXN0PFNlbmRNZXNzYWdlUHJvY1N0cmV0Pigmb2JqY19tc2dTZW5kX3N0cmV0KTsKKyAgICAgICAg
X1JldCAgICAgICAgICAgICAgICAgICAgICAgcmV0OworCisgICAgICAgICgqcFByb2MpKCZyZXQs
IHBPYmosIHNlbGVjdG9yLCBhcmdzLi4uKTsKKworICAgICAgICByZXR1cm4gcmV0OworICAgIH0K
KyAgICBlbHNlCisjZW5kaWYgLy8gIWRlZmluZWQoIF9fYXJtNjRfXyApCisgICAgeworICAgICAg
ICB1c2luZyBTZW5kTWVzc2FnZVByb2MgPSBfUmV0ICgqKShjb25zdCB2b2lkKiwgU0VMLCBfQXJn
cy4uLik7CisKKyAgICAgICAgY29uc3QgU2VuZE1lc3NhZ2VQcm9jIHBQcm9jID0gcmVpbnRlcnBy
ZXRfY2FzdDxTZW5kTWVzc2FnZVByb2M+KCZvYmpjX21zZ1NlbmQpOworCisgICAgICAgIHJldHVy
biAoKnBQcm9jKShwT2JqLCBzZWxlY3RvciwgYXJncy4uLik7CisgICAgfQorfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
TWV0aG9kU2lnbmF0dXJlKiBOUzo6T2JqZWN0OjptZXRob2RTaWduYXR1cmVGb3JTZWxlY3Rvcihj
b25zdCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IpCit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdl
PE1ldGhvZFNpZ25hdHVyZSo+KHBPYmosIF9OU19QUklWQVRFX1NFTChtZXRob2RTaWduYXR1cmVG
b3JTZWxlY3Rvcl8pLCBzZWxlY3Rvcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6Ok9iamVjdDo6cmVzcG9u
ZHNUb1NlbGVjdG9yKGNvbnN0IHZvaWQqIHBPYmosIFNFTCBzZWxlY3RvcikKK3sKKyAgICByZXR1
cm4gc2VuZE1lc3NhZ2U8Ym9vbD4ocE9iaiwgX05TX1BSSVZBVEVfU0VMKHJlc3BvbmRzVG9TZWxl
Y3Rvcl8pLCBzZWxlY3Rvcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUuLi4gX0Fy
Z3M+CitfTlNfSU5MSU5FIF9SZXQgTlM6Ok9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlKGNvbnN0IHZv
aWQqIHBPYmosIFNFTCBzZWxlY3RvciwgX0FyZ3MuLi4gYXJncykKK3sKKyAgICBpZiAoKHJlc3Bv
bmRzVG9TZWxlY3RvcihwT2JqLCBzZWxlY3RvcikpIHx8IChudWxscHRyICE9IG1ldGhvZFNpZ25h
dHVyZUZvclNlbGVjdG9yKHBPYmosIHNlbGVjdG9yKSkpCisgICAgeworICAgICAgICByZXR1cm4g
c2VuZE1lc3NhZ2U8X1JldD4ocE9iaiwgc2VsZWN0b3IsIGFyZ3MuLi4pOworICAgIH0KKworICAg
IGlmIGNvbnN0ZXhwciAoIXN0ZDo6aXNfdm9pZDxfUmV0Pjo6dmFsdWUpCisgICAgeworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzPgorX05TX0lOTElORSBfQ2xh
c3MqIE5TOjpPYmplY3Q6OmFsbG9jKGNvbnN0IGNoYXIqIHBDbGFzc05hbWUpCit7CisgICAgcmV0
dXJuIHNlbmRNZXNzYWdlPF9DbGFzcyo+KG9iamNfbG9va1VwQ2xhc3MocENsYXNzTmFtZSksIF9O
U19QUklWQVRFX1NFTChhbGxvYykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcz4KK19OU19JTkxJTkUg
X0NsYXNzKiBOUzo6T2JqZWN0OjphbGxvYyhjb25zdCB2b2lkKiBwQ2xhc3MpCit7CisgICAgcmV0
dXJuIHNlbmRNZXNzYWdlPF9DbGFzcyo+KHBDbGFzcywgX05TX1BSSVZBVEVfU0VMKGFsbG9jKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0
ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzPgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpPYmplY3Q6Omlu
aXQoKQoreworICAgIHJldHVybiBzZW5kTWVzc2FnZTxfQ2xhc3MqPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwoaW5pdCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6Ok9iamVjdDo6aGFzaCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwoaGFzaCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpPYmplY3Q6OmlzRXF1YWwoY29uc3QgT2Jq
ZWN0KiBwT2JqZWN0KSBjb25zdAoreworICAgIHJldHVybiBzZW5kTWVzc2FnZTxib29sPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaXNFcXVhbF8pLCBwT2JqZWN0KTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmlu
ZyogTlM6Ok9iamVjdDo6ZGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJldHVybiBzZW5kTWVz
c2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGVzY3JpcHRpb24pKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlN0cmluZyogTlM6Ok9iamVjdDo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHNlbmRNZXNzYWdlU2FmZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
ZGVidWdEZXNjcmlwdGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU1ByaXZhdGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4YTRmYTU2NzIyMzIzMjIw
NjU0YTFlMGE1YjEzMTExZThjYTc4NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1ByaXZhdGUuaHBwCkBAIC0wLDAgKzEsNDg4
IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBGb3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFw
cGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIF9OU19QUklWQVRFX0NM
UyhzeW1ib2wpIChQcml2YXRlOjpDbGFzczo6c19rIyNzeW1ib2wpCisjZGVmaW5lIF9OU19QUklW
QVRFX1NFTChhY2Nlc3NvcikgKFByaXZhdGU6OlNlbGVjdG9yOjpzX2sjI2FjY2Vzc29yKQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lmIGRlZmlu
ZWQoTlNfUFJJVkFURV9JTVBMRU1FTlRBVElPTikKKworI2RlZmluZSBfTlNfUFJJVkFURV9WSVNJ
QklMSVRZIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKKyNkZWZpbmUgX05T
X1BSSVZBVEVfSU1QT1JUIF9fYXR0cmlidXRlX18oKHdlYWtfaW1wb3J0KSkKKworI2lmIF9fT0JK
Q19fCisjZGVmaW5lIF9OU19QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgKChfX2Jy
aWRnZSB2b2lkKilvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wpKQorI2Vsc2UKKyNkZWZpbmUgX05T
X1BSSVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKSBvYmpjX2xvb2tVcENsYXNzKCNzeW1i
b2wpCisjZW5kaWYgLy8gX19PQkpDX18KKworI2RlZmluZSBfTlNfUFJJVkFURV9ERUZfQ0xTKHN5
bWJvbCkgdm9pZCogc19rIyNzeW1ib2wgX05TX1BSSVZBVEVfVklTSUJJTElUWSA9IF9OU19QUklW
QVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCk7CisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9Q
Uk8oc3ltYm9sKQorI2RlZmluZSBfTlNfUFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wp
IFNFTCBzX2sjI2FjY2Vzc29yIF9OU19QUklWQVRFX1ZJU0lCSUxJVFkgPSBzZWxfcmVnaXN0ZXJO
YW1lKHN5bWJvbCk7CisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9DT05TVCh0eXBlLCBzeW1ib2wp
ICAgICAgICAgICAgICBcCisgICAgX05TX0VYVEVSTiB0eXBlIGNvbnN0IE5TIyNzeW1ib2wgX05T
X1BSSVZBVEVfSU1QT1JUOyBcCisgICAgdHlwZSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAg
TlM6OnN5bWJvbCA9IChudWxscHRyICE9ICZOUyMjc3ltYm9sKSA/IE5TIyNzeW1ib2wgOiBudWxs
cHRyOworCisjZWxzZQorCisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9DTFMoc3ltYm9sKSBleHRl
cm4gdm9pZCogc19rIyNzeW1ib2w7CisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9QUk8oc3ltYm9s
KQorI2RlZmluZSBfTlNfUFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIGV4dGVybiBT
RUwgc19rIyNhY2Nlc3NvcjsKKyNkZWZpbmUgX05TX1BSSVZBVEVfREVGX0NPTlNUKHR5cGUsIHN5
bWJvbCkKKworI2VuZGlmIC8vIE5TX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworewor
bmFtZXNwYWNlIFByaXZhdGUKK3sKKyAgICBuYW1lc3BhY2UgQ2xhc3MKKyAgICB7CisKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU0FycmF5KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X0NMUyhOU0F1dG9yZWxlYXNlUG9vbCk7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNC
dW5kbGUpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TQ29uZGl0aW9uKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU0RhdGUpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
Q0xTKE5TRGljdGlvbmFyeSk7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNFcnJvcik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNOdW1iZXIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfQ0xTKE5TT2JqZWN0KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU1By
b2Nlc3NJbmZvKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU1N0cmluZyk7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNVUkwpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
Q0xTKE5TVmFsdWUpOworCisgICAgfSAvLyBDbGFzcworfSAvLyBQcml2YXRlCit9IC8vIE1UTAor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNw
YWNlIE5TCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBQcm90b2NvbAor
ICAgIHsKKworICAgIH0gLy8gUHJvdG9jb2wKK30gLy8gUHJpdmF0ZQorfSAvLyBOUworCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5T
Cit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBTZWxlY3RvcgorICAgIHsK
KworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFkZE9iamVjdF8sCisgICAgICAgICAgICAi
YWRkT2JqZWN0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFjdGl2ZVByb2Nlc3Nv
ckNvdW50LAorICAgICAgICAgICAgImFjdGl2ZVByb2Nlc3NvckNvdW50Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoYWxsQnVuZGxlcywKKyAgICAgICAgICAgICJhbGxCdW5kbGVzIik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYWxsRnJhbWV3b3JrcywKKyAgICAgICAgICAg
ICJhbGxGcmFtZXdvcmtzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYWxsT2JqZWN0
cywKKyAgICAgICAgICAgICJhbGxPYmplY3RzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoYWxsb2MsCisgICAgICAgICAgICAiYWxsb2MiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChhcHBTdG9yZVJlY2VpcHRVUkwsCisgICAgICAgICAgICAiYXBwU3RvcmVSZWNlaXB0VVJM
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYXJndW1lbnRzLAorICAgICAgICAgICAg
ImFyZ3VtZW50cyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFycmF5LAorICAgICAg
ICAgICAgImFycmF5Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYXJyYXlXaXRoT2Jq
ZWN0XywKKyAgICAgICAgICAgICJhcnJheVdpdGhPYmplY3Q6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoYXJyYXlXaXRoT2JqZWN0c19jb3VudF8sCisgICAgICAgICAgICAiYXJyYXlX
aXRoT2JqZWN0czpjb3VudDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhdXRvbWF0
aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkLAorICAgICAgICAgICAgImF1dG9tYXRpY1Rlcm1p
bmF0aW9uU3VwcG9ydEVuYWJsZWQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhdXRv
cmVsZWFzZSwKKyAgICAgICAgICAgICJhdXRvcmVsZWFzZSIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uc19yZWFzb25fLAorICAgICAgICAgICAg
ImJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uczpyZWFzb246Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoYm9vbFZhbHVlLAorICAgICAgICAgICAgImJvb2xWYWx1ZSIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGJyb2FkY2FzdCwKKyAgICAgICAgICAgICJicm9hZGNhc3QiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidWlsdEluUGx1Z0luc1BhdGgsCisgICAgICAg
ICAgICAiYnVpbHRJblBsdWdJbnNQYXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
YnVpbHRJblBsdWdJbnNVUkwsCisgICAgICAgICAgICAiYnVpbHRJblBsdWdJbnNVUkwiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidW5kbGVJZGVudGlmaWVyLAorICAgICAgICAgICAg
ImJ1bmRsZUlkZW50aWZpZXIiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidW5kbGVQ
YXRoLAorICAgICAgICAgICAgImJ1bmRsZVBhdGgiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChidW5kbGVVUkwsCisgICAgICAgICAgICAiYnVuZGxlVVJMIik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoYnVuZGxlV2l0aFBhdGhfLAorICAgICAgICAgICAgImJ1bmRsZVdpdGhQ
YXRoOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRsZVdpdGhVUkxfLAorICAg
ICAgICAgICAgImJ1bmRsZVdpdGhVUkw6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
Y2hhcmFjdGVyQXRJbmRleF8sCisgICAgICAgICAgICAiY2hhcmFjdGVyQXRJbmRleDoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjaGFyVmFsdWUsCisgICAgICAgICAgICAiY2hhclZh
bHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoY291bnRCeUVudW1lcmF0aW5nV2l0
aFN0YXRlX29iamVjdHNfY291bnRfLAorICAgICAgICAgICAgImNvdW50QnlFbnVtZXJhdGluZ1dp
dGhTdGF0ZTpvYmplY3RzOmNvdW50OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNT
dHJpbmdVc2luZ0VuY29kaW5nXywKKyAgICAgICAgICAgICJjU3RyaW5nVXNpbmdFbmNvZGluZzoi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjb2RlLAorICAgICAgICAgICAgImNvZGUi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjb21wYXJlXywKKyAgICAgICAgICAgICJj
b21wYXJlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNvcHksCisgICAgICAgICAg
ICAiY29weSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNvdW50LAorICAgICAgICAg
ICAgImNvdW50Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZGF0ZVdpdGhUaW1lSW50
ZXJ2YWxTaW5jZU5vd18sCisgICAgICAgICAgICAiZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5v
dzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkZXNjcmlwdGlvbldpdGhMb2NhbGVf
LAorICAgICAgICAgICAgImRlc2NyaXB0aW9uV2l0aExvY2FsZToiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb25fLAorICAgICAgICAgICAg
ImRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChkaXNhYmxlU3VkZGVuVGVybWluYXRpb24sCisgICAgICAgICAgICAiZGlzYWJsZVN1ZGRl
blRlcm1pbmF0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZGVidWdEZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgICJkZWJ1Z0Rlc2NyaXB0aW9uIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoZGVzY3JpcHRpb24sCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkaWN0aW9uYXJ5LAorICAgICAgICAgICAgImRpY3Rp
b25hcnkiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkaWN0aW9uYXJ5V2l0aE9iamVj
dF9mb3JLZXlfLAorICAgICAgICAgICAgImRpY3Rpb25hcnlXaXRoT2JqZWN0OmZvcktleToiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkaWN0aW9uYXJ5V2l0aE9iamVjdHNfZm9yS2V5
c19jb3VudF8sCisgICAgICAgICAgICAiZGljdGlvbmFyeVdpdGhPYmplY3RzOmZvcktleXM6Y291
bnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZG9tYWluLAorICAgICAgICAgICAg
ImRvbWFpbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRvdWJsZVZhbHVlLAorICAg
ICAgICAgICAgImRvdWJsZVZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZHJh
aW4sCisgICAgICAgICAgICAiZHJhaW4iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChl
bmFibGVBdXRvbWF0aWNUZXJtaW5hdGlvbl8sCisgICAgICAgICAgICAiZW5hYmxlQXV0b21hdGlj
VGVybWluYXRpb246Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZW5hYmxlU3VkZGVu
VGVybWluYXRpb24sCisgICAgICAgICAgICAiZW5hYmxlU3VkZGVuVGVybWluYXRpb24iKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChlbmRBY3Rpdml0eV8sCisgICAgICAgICAgICAiZW5k
QWN0aXZpdHk6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZW52aXJvbm1lbnQsCisg
ICAgICAgICAgICAiZW52aXJvbm1lbnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChl
cnJvcldpdGhEb21haW5fY29kZV91c2VySW5mb18sCisgICAgICAgICAgICAiZXJyb3JXaXRoRG9t
YWluOmNvZGU6dXNlckluZm86Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZXhlY3V0
YWJsZVBhdGgsCisgICAgICAgICAgICAiZXhlY3V0YWJsZVBhdGgiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChleGVjdXRhYmxlVVJMLAorICAgICAgICAgICAgImV4ZWN1dGFibGVVUkwi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24s
CisgICAgICAgICAgICAiZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uIik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoZmlsZVVSTFdpdGhQYXRoXywKKyAgICAgICAgICAgICJmaWxlVVJMV2l0
aFBhdGg6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZmxvYXRWYWx1ZSwKKyAgICAg
ICAgICAgICJmbG9hdFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZnVsbFVz
ZXJOYW1lLAorICAgICAgICAgICAgImZ1bGxVc2VyTmFtZSIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKGdldFZhbHVlX3NpemVfLAorICAgICAgICAgICAgImdldFZhbHVlOnNpemU6Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZ2xvYmFsbHlVbmlxdWVTdHJpbmcsCisgICAg
ICAgICAgICAiZ2xvYmFsbHlVbmlxdWVTdHJpbmciKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChoYXNoLAorICAgICAgICAgICAgImhhc2giKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChob3N0TmFtZSwKKyAgICAgICAgICAgICJob3N0TmFtZSIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKGluZm9EaWN0aW9uYXJ5LAorICAgICAgICAgICAgImluZm9EaWN0aW9uYXJ5
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdCwKKyAgICAgICAgICAgICJpbml0
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdEZpbGVVUkxXaXRoUGF0aF8sCisg
ICAgICAgICAgICAiaW5pdEZpbGVVUkxXaXRoUGF0aDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChpbml0V2l0aEJvb2xfLAorICAgICAgICAgICAgImluaXRXaXRoQm9vbDoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEJ5dGVzX29iakNUeXBlXywKKyAgICAg
ICAgICAgICJpbml0V2l0aEJ5dGVzOm9iakNUeXBlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGluaXRXaXRoQnl0ZXNOb0NvcHlfbGVuZ3RoX2VuY29kaW5nX2ZyZWVXaGVuRG9uZV8s
CisgICAgICAgICAgICAiaW5pdFdpdGhCeXRlc05vQ29weTpsZW5ndGg6ZW5jb2Rpbmc6ZnJlZVdo
ZW5Eb25lOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoQ2hhcl8sCisg
ICAgICAgICAgICAiaW5pdFdpdGhDaGFyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGluaXRXaXRoQ29kZXJfLAorICAgICAgICAgICAgImluaXRXaXRoQ29kZXI6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhDU3RyaW5nX2VuY29kaW5nXywKKyAgICAgICAg
ICAgICJpbml0V2l0aENTdHJpbmc6ZW5jb2Rpbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoaW5pdFdpdGhEb21haW5fY29kZV91c2VySW5mb18sCisgICAgICAgICAgICAiaW5pdFdp
dGhEb21haW46Y29kZTp1c2VySW5mbzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChp
bml0V2l0aERvdWJsZV8sCisgICAgICAgICAgICAiaW5pdFdpdGhEb3VibGU6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhGbG9hdF8sCisgICAgICAgICAgICAiaW5pdFdp
dGhGbG9hdDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEludF8sCisg
ICAgICAgICAgICAiaW5pdFdpdGhJbnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
aW5pdFdpdGhMb25nXywKKyAgICAgICAgICAgICJpbml0V2l0aExvbmc6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhMb25nTG9uZ18sCisgICAgICAgICAgICAiaW5pdFdp
dGhMb25nTG9uZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aE9iamVj
dHNfY291bnRfLAorICAgICAgICAgICAgImluaXRXaXRoT2JqZWN0czpjb3VudDoiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aE9iamVjdHNfZm9yS2V5c19jb3VudF8sCisg
ICAgICAgICAgICAiaW5pdFdpdGhPYmplY3RzOmZvcktleXM6Y291bnQ6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhQYXRoXywKKyAgICAgICAgICAgICJpbml0V2l0aFBh
dGg6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhTaG9ydF8sCisgICAg
ICAgICAgICAiaW5pdFdpdGhTaG9ydDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChp
bml0V2l0aFN0cmluZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhTdHJpbmc6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZENoYXJfLAorICAgICAgICAgICAg
ImluaXRXaXRoVW5zaWduZWRDaGFyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlu
aXRXaXRoVW5zaWduZWRJbnRfLAorICAgICAgICAgICAgImluaXRXaXRoVW5zaWduZWRJbnQ6Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZExvbmdfLAorICAg
ICAgICAgICAgImluaXRXaXRoVW5zaWduZWRMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGluaXRXaXRoVW5zaWduZWRMb25nTG9uZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhV
bnNpZ25lZExvbmdMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRo
VW5zaWduZWRTaG9ydF8sCisgICAgICAgICAgICAiaW5pdFdpdGhVbnNpZ25lZFNob3J0OiIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoVVJMXywKKyAgICAgICAgICAgICJp
bml0V2l0aFVSTDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbnRlZ2VyVmFsdWUs
CisgICAgICAgICAgICAiaW50ZWdlclZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoaW50VmFsdWUsCisgICAgICAgICAgICAiaW50VmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChpc0VxdWFsXywKKyAgICAgICAgICAgICJpc0VxdWFsOiIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGlzRXF1YWxUb051bWJlcl8sCisgICAgICAgICAgICAiaXNFcXVh
bFRvTnVtYmVyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlzRXF1YWxUb1N0cmlu
Z18sCisgICAgICAgICAgICAiaXNFcXVhbFRvU3RyaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKGlzRXF1YWxUb1ZhbHVlXywKKyAgICAgICAgICAgICJpc0VxdWFsVG9WYWx1ZToi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc2lPU0FwcE9uTWFjLAorICAgICAgICAg
ICAgImlzaU9TQXBwT25NYWMiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc0xvYWRl
ZCwKKyAgICAgICAgICAgICJpc0xvYWRlZCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGlzTG93UG93ZXJNb2RlRW5hYmxlZCwKKyAgICAgICAgICAgICJpc0xvd1Bvd2VyTW9kZUVuYWJs
ZWQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc01hY0NhdGFseXN0QXBwLAorICAg
ICAgICAgICAgImlzTWFjQ2F0YWx5c3RBcHAiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChpc09wZXJhdGluZ1N5c3RlbUF0TGVhc3RWZXJzaW9uXywKKyAgICAgICAgICAgICJpc09wZXJh
dGluZ1N5c3RlbUF0TGVhc3RWZXJzaW9uOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGtleUVudW1lcmF0b3IsCisgICAgICAgICAgICAia2V5RW51bWVyYXRvciIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGxlbmd0aCwKKyAgICAgICAgICAgICJsZW5ndGgiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZ18sCisgICAg
ICAgICAgICAibGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwobG9hZCwKKyAgICAgICAgICAgICJsb2FkIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwobG9hZEFuZFJldHVybkVycm9yXywKKyAgICAgICAgICAgICJsb2FkQW5kUmV0
dXJuRXJyb3I6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobG9jYWxpemVkRGVzY3Jp
cHRpb24sCisgICAgICAgICAgICAibG9jYWxpemVkRGVzY3JpcHRpb24iKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTChsb2NhbGl6ZWRGYWlsdXJlUmVhc29uLAorICAgICAgICAgICAgImxv
Y2FsaXplZEZhaWx1cmVSZWFzb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2Nh
bGl6ZWRJbmZvRGljdGlvbmFyeSwKKyAgICAgICAgICAgICJsb2NhbGl6ZWRJbmZvRGljdGlvbmFy
eSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZFJlY292ZXJ5T3B0aW9u
cywKKyAgICAgICAgICAgICJsb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnMiKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTChsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24sCisgICAgICAgICAg
ICAibG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwobG9jYWxpemVkU3RyaW5nRm9yS2V5X3ZhbHVlX3RhYmxlXywKKyAgICAgICAgICAgICJs
b2NhbGl6ZWRTdHJpbmdGb3JLZXk6dmFsdWU6dGFibGU6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobG9jaywKKyAgICAgICAgICAgICJsb2NrIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwobG9uZ1ZhbHVlLAorICAgICAgICAgICAgImxvbmdWYWx1ZSIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGxvbmdMb25nVmFsdWUsCisgICAgICAgICAgICAibG9uZ0xvbmdW
YWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG1haW5CdW5kbGUsCisgICAgICAg
ICAgICAibWFpbkJ1bmRsZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG1heGltdW1M
ZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZ18sCisgICAgICAgICAgICAibWF4aW11bUxlbmd0aE9m
Qnl0ZXNVc2luZ0VuY29kaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG1ldGhv
ZFNpZ25hdHVyZUZvclNlbGVjdG9yXywKKyAgICAgICAgICAgICJtZXRob2RTaWduYXR1cmVGb3JT
ZWxlY3RvcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChtdXRhYmxlQnl0ZXMsCisg
ICAgICAgICAgICAibXV0YWJsZUJ5dGVzIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
bmFtZSwKKyAgICAgICAgICAgICJuYW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
bmV4dE9iamVjdCwKKyAgICAgICAgICAgICJuZXh0T2JqZWN0Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwobnVtYmVyV2l0aEJvb2xfLAorICAgICAgICAgICAgIm51bWJlcldpdGhCb29s
OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhDaGFyXywKKyAgICAg
ICAgICAgICJudW1iZXJXaXRoQ2hhcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChu
dW1iZXJXaXRoRG91YmxlXywKKyAgICAgICAgICAgICJudW1iZXJXaXRoRG91YmxlOiIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhGbG9hdF8sCisgICAgICAgICAgICAi
bnVtYmVyV2l0aEZsb2F0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldp
dGhJbnRfLAorICAgICAgICAgICAgIm51bWJlcldpdGhJbnQ6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwobnVtYmVyV2l0aExvbmdfLAorICAgICAgICAgICAgIm51bWJlcldpdGhMb25n
OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhMb25nTG9uZ18sCisg
ICAgICAgICAgICAibnVtYmVyV2l0aExvbmdMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKG51bWJlcldpdGhTaG9ydF8sCisgICAgICAgICAgICAibnVtYmVyV2l0aFNob3J0OiIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhVbnNpZ25lZENoYXJfLAor
ICAgICAgICAgICAgIm51bWJlcldpdGhVbnNpZ25lZENoYXI6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwobnVtYmVyV2l0aFVuc2lnbmVkSW50XywKKyAgICAgICAgICAgICJudW1iZXJX
aXRoVW5zaWduZWRJbnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0
aFVuc2lnbmVkTG9uZ18sCisgICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkTG9uZzoiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoVW5zaWduZWRMb25nTG9uZ18s
CisgICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aFVuc2lnbmVkU2hvcnRfLAorICAgICAgICAgICAg
Im51bWJlcldpdGhVbnNpZ25lZFNob3J0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KG9iakNUeXBlLAorICAgICAgICAgICAgIm9iakNUeXBlIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwob2JqZWN0LAorICAgICAgICAgICAgIm9iamVjdCIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKG9iamVjdEF0SW5kZXhfLAorICAgICAgICAgICAgIm9iamVjdEF0SW5kZXg6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob2JqZWN0Rm9ySW5mb0RpY3Rpb25hcnlL
ZXlfLAorICAgICAgICAgICAgIm9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5OiIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKG9iamVjdEZvcktleV8sCisgICAgICAgICAgICAib2JqZWN0
Rm9yS2V5OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG9wZXJhdGluZ1N5c3RlbSwK
KyAgICAgICAgICAgICJvcGVyYXRpbmdTeXN0ZW0iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uLAorICAgICAgICAgICAgIm9wZXJhdGluZ1N5c3Rl
bVZlcnNpb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChvcGVyYXRpbmdTeXN0ZW1W
ZXJzaW9uU3RyaW5nLAorICAgICAgICAgICAgIm9wZXJhdGluZ1N5c3RlbVZlcnNpb25TdHJpbmci
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJs
ZV8sCisgICAgICAgICAgICAicGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwocGVyZm9ybUFjdGl2aXR5V2l0aE9wdGlvbnNfcmVhc29uX3Vz
aW5nQmxvY2tfLAorICAgICAgICAgICAgInBlcmZvcm1BY3Rpdml0eVdpdGhPcHRpb25zOnJlYXNv
bjp1c2luZ0Jsb2NrOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBlcmZvcm1FeHBp
cmluZ0FjdGl2aXR5V2l0aFJlYXNvbl91c2luZ0Jsb2NrXywKKyAgICAgICAgICAgICJwZXJmb3Jt
RXhwaXJpbmdBY3Rpdml0eVdpdGhSZWFzb246dXNpbmdCbG9jazoiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChwaHlzaWNhbE1lbW9yeSwKKyAgICAgICAgICAgICJwaHlzaWNhbE1lbW9y
eSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBvaW50ZXJWYWx1ZSwKKyAgICAgICAg
ICAgICJwb2ludGVyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwcmVmbGln
aHRBbmRSZXR1cm5FcnJvcl8sCisgICAgICAgICAgICAicHJlZmxpZ2h0QW5kUmV0dXJuRXJyb3I6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJpdmF0ZUZyYW1ld29ya3NQYXRoLAor
ICAgICAgICAgICAgInByaXZhdGVGcmFtZXdvcmtzUGF0aCIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKHByaXZhdGVGcmFtZXdvcmtzVVJMLAorICAgICAgICAgICAgInByaXZhdGVGcmFt
ZXdvcmtzVVJMIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJvY2Vzc0lkZW50aWZp
ZXIsCisgICAgICAgICAgICAicHJvY2Vzc0lkZW50aWZpZXIiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChwcm9jZXNzSW5mbywKKyAgICAgICAgICAgICJwcm9jZXNzSW5mbyIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHByb2Nlc3NOYW1lLAorICAgICAgICAgICAgInByb2Nl
c3NOYW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJvY2Vzc29yQ291bnQsCisg
ICAgICAgICAgICAicHJvY2Vzc29yQ291bnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChyYW5nZU9mU3RyaW5nX29wdGlvbnNfLAorICAgICAgICAgICAgInJhbmdlT2ZTdHJpbmc6b3B0
aW9uczoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZWxlYXNlLAorICAgICAgICAg
ICAgInJlbGVhc2UiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVBhdGgs
CisgICAgICAgICAgICAicmVzb3VyY2VQYXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwocmVzb3VyY2VVUkwsCisgICAgICAgICAgICAicmVzb3VyY2VVUkwiKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTChyZXNwb25kc1RvU2VsZWN0b3JfLAorICAgICAgICAgICAgInJlc3Bv
bmRzVG9TZWxlY3RvcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZXRhaW4sCisg
ICAgICAgICAgICAicmV0YWluIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocmV0YWlu
Q291bnQsCisgICAgICAgICAgICAicmV0YWluQ291bnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChzZXRBdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkXywKKyAgICAgICAg
ICAgICJzZXRBdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkOiIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKHNldFByb2Nlc3NOYW1lXywKKyAgICAgICAgICAgICJzZXRQcm9j
ZXNzTmFtZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzaGFyZWRGcmFtZXdvcmtz
UGF0aCwKKyAgICAgICAgICAgICJzaGFyZWRGcmFtZXdvcmtzUGF0aCIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKHNoYXJlZEZyYW1ld29ya3NVUkwsCisgICAgICAgICAgICAic2hhcmVk
RnJhbWV3b3Jrc1VSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHNoYXJlZFN1cHBv
cnRQYXRoLAorICAgICAgICAgICAgInNoYXJlZFN1cHBvcnRQYXRoIik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoc2hhcmVkU3VwcG9ydFVSTCwKKyAgICAgICAgICAgICJzaGFyZWRTdXBw
b3J0VVJMIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2hvcnRWYWx1ZSwKKyAgICAg
ICAgICAgICJzaG9ydFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2hvd1Bv
b2xzLAorICAgICAgICAgICAgInNob3dQb29scyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKHNpZ25hbCwKKyAgICAgICAgICAgICJzaWduYWwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChzdHJpbmcsCisgICAgICAgICAgICAic3RyaW5nIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoc3RyaW5nVmFsdWUsCisgICAgICAgICAgICAic3RyaW5nVmFsdWUiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzdHJpbmdXaXRoU3RyaW5nXywKKyAgICAgICAgICAg
ICJzdHJpbmdXaXRoU3RyaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHN0cmlu
Z1dpdGhDU3RyaW5nX2VuY29kaW5nXywKKyAgICAgICAgICAgICJzdHJpbmdXaXRoQ1N0cmluZzpl
bmNvZGluZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzdHJpbmdCeUFwcGVuZGlu
Z1N0cmluZ18sCisgICAgICAgICAgICAic3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6Iik7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc3lzdGVtVXB0aW1lLAorICAgICAgICAgICAgInN5c3Rl
bVVwdGltZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHRoZXJtYWxTdGF0ZSwKKyAg
ICAgICAgICAgICJ0aGVybWFsU3RhdGUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1
bmxvYWQsCisgICAgICAgICAgICAidW5sb2FkIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwodW5sb2NrLAorICAgICAgICAgICAgInVubG9jayIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKHVuc2lnbmVkQ2hhclZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkQ2hhclZhbHVl
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodW5zaWduZWRJbnRlZ2VyVmFsdWUsCisg
ICAgICAgICAgICAidW5zaWduZWRJbnRlZ2VyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTCh1bnNpZ25lZEludFZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkSW50VmFsdWUi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bnNpZ25lZExvbmdWYWx1ZSwKKyAgICAg
ICAgICAgICJ1bnNpZ25lZExvbmdWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZSwKKyAgICAgICAgICAgICJ1bnNpZ25lZExvbmdMb25nVmFs
dWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bnNpZ25lZFNob3J0VmFsdWUsCisg
ICAgICAgICAgICAidW5zaWduZWRTaG9ydFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoVVJMRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZV8sCisgICAgICAgICAgICAiVVJMRm9yQXV4
aWxpYXJ5RXhlY3V0YWJsZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1c2VySW5m
bywKKyAgICAgICAgICAgICJ1c2VySW5mbyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHVzZXJOYW1lLAorICAgICAgICAgICAgInVzZXJOYW1lIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoVVRGOFN0cmluZywKKyAgICAgICAgICAgICJVVEY4U3RyaW5nIik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwodmFsdWVXaXRoQnl0ZXNfb2JqQ1R5cGVfLAorICAgICAgICAg
ICAgInZhbHVlV2l0aEJ5dGVzOm9iakNUeXBlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKHZhbHVlV2l0aFBvaW50ZXJfLAorICAgICAgICAgICAgInZhbHVlV2l0aFBvaW50ZXI6Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwod2FpdCwKKyAgICAgICAgICAgICJ3YWl0Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwod2FpdFVudGlsRGF0ZV8sCisgICAgICAgICAg
ICAid2FpdFVudGlsRGF0ZToiKTsKKyAgICB9IC8vIENsYXNzCit9IC8vIFByaXZhdGUKK30gLy8g
TVRMCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQcm9j
ZXNzSW5mby5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9O
U1Byb2Nlc3NJbmZvLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGUzMTQ3ZmU4YTdjNjhkMmZhY2MzYTZlZDQ3
N2Y2NzUxZWU1ZGU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNQcm9jZXNzSW5mby5ocHAKQEAgLTAsMCArMSwzNTQgQEAKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5k
YXRpb24vTlNQcm9jZXNzSW5mby5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU05vdGlmaWNh
dGlvbi5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5o
cHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNl
IE5TCit7CitfTlNfQ09OU1QoTm90aWZpY2F0aW9uTmFtZSwgUHJvY2Vzc0luZm9UaGVybWFsU3Rh
dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24pOworX05TX0NPTlNUKE5vdGlmaWNhdGlvbk5hbWUsIFBy
b2Nlc3NJbmZvUG93ZXJTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbik7CisKK19OU19FTlVNKE5T
OjpJbnRlZ2VyLCBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZSkgeworICAgIFByb2Nlc3NJbmZvVGhl
cm1hbFN0YXRlTm9taW5hbCA9IDAsCisgICAgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVGYWlyID0g
MSwKKyAgICBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZVNlcmlvdXMgPSAyLAorICAgIFByb2Nlc3NJ
bmZvVGhlcm1hbFN0YXRlQ3JpdGljYWwgPSAzCit9OworCitfTlNfT1BUSU9OUyhzdGQ6OnVpbnQ2
NF90LCBBY3Rpdml0eU9wdGlvbnMpIHsKKyAgICBBY3Rpdml0eUlkbGVEaXNwbGF5U2xlZXBEaXNh
YmxlZCA9ICgxVUxMIDw8IDQwKSwKKyAgICBBY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2FibGVk
ID0gKDFVTEwgPDwgMjApLAorICAgIEFjdGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCA9
ICgxVUxMIDw8IDE0KSwKKyAgICBBY3Rpdml0eUF1dG9tYXRpY1Rlcm1pbmF0aW9uRGlzYWJsZWQg
PSAoMVVMTCA8PCAxNSksCisgICAgQWN0aXZpdHlVc2VySW5pdGlhdGVkID0gKDB4MDBGRkZGRkZV
TEwgfCBBY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2FibGVkKSwKKyAgICBBY3Rpdml0eVVzZXJJ
bml0aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1TbGVlcCA9IChBY3Rpdml0eVVzZXJJbml0aWF0ZWQg
JiB+QWN0aXZpdHlJZGxlU3lzdGVtU2xlZXBEaXNhYmxlZCksCisgICAgQWN0aXZpdHlCYWNrZ3Jv
dW5kID0gMHgwMDAwMDBGRlVMTCwKKyAgICBBY3Rpdml0eUxhdGVuY3lDcml0aWNhbCA9IDB4RkYw
MDAwMDAwMFVMTCwKK307CisKK2NsYXNzIFByb2Nlc3NJbmZvIDogcHVibGljIFJlZmVyZW5jaW5n
PFByb2Nlc3NJbmZvPgoreworcHVibGljOgorICAgIHN0YXRpYyBQcm9jZXNzSW5mbyogICAgIHBy
b2Nlc3NJbmZvKCk7CisKKyAgICBjbGFzcyBBcnJheSogICAgICAgICAgICBhcmd1bWVudHMoKSBj
b25zdDsKKyAgICBjbGFzcyBEaWN0aW9uYXJ5KiAgICAgICBlbnZpcm9ubWVudCgpIGNvbnN0Owor
ICAgIGNsYXNzIFN0cmluZyogICAgICAgICAgIGhvc3ROYW1lKCkgY29uc3Q7CisgICAgY2xhc3Mg
U3RyaW5nKiAgICAgICAgICAgcHJvY2Vzc05hbWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICBzZXRQcm9jZXNzTmFtZShjb25zdCBTdHJpbmcqIHBTdHJpbmcpOworICAgIGlu
dCAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgY2xh
c3MgU3RyaW5nKiAgICAgICAgICAgZ2xvYmFsbHlVbmlxdWVTdHJpbmcoKSBjb25zdDsKKworICAg
IGNsYXNzIFN0cmluZyogICAgICAgICAgIHVzZXJOYW1lKCkgY29uc3Q7CisgICAgY2xhc3MgU3Ry
aW5nKiAgICAgICAgICAgZnVsbFVzZXJOYW1lKCkgY29uc3Q7CisKKyAgICBVSW50ZWdlciAgICAg
ICAgICAgICAgICBvcGVyYXRpbmdTeXN0ZW0oKSBjb25zdDsKKyAgICBPcGVyYXRpbmdTeXN0ZW1W
ZXJzaW9uICBvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5n
KiAgICAgICAgICAgb3BlcmF0aW5nU3lzdGVtVmVyc2lvblN0cmluZygpIGNvbnN0OworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgIGlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNpb24oT3Bl
cmF0aW5nU3lzdGVtVmVyc2lvbiB2ZXJzaW9uKSBjb25zdDsKKworICAgIFVJbnRlZ2VyICAgICAg
ICAgICAgICAgIHByb2Nlc3NvckNvdW50KCkgY29uc3Q7CisgICAgVUludGVnZXIgICAgICAgICAg
ICAgICAgYWN0aXZlUHJvY2Vzc29yQ291bnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIGxv
bmcgICAgICBwaHlzaWNhbE1lbW9yeSgpIGNvbnN0OworICAgIFRpbWVJbnRlcnZhbCAgICAgICAg
ICAgIHN5c3RlbVVwdGltZSgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
IGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbihjb25zdCBjbGFzcyBTdHJpbmcqIHBSZWFzb24p
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9u
KGNvbnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbik7CisgICAgYm9vbCAgICAgICAgICAgICAgICAg
ICAgYXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgIHNldEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWQo
Ym9vbCBlbmFibGVkKTsKKworICAgIGNsYXNzIE9iamVjdCogICAgICAgICAgIGJlZ2luQWN0aXZp
dHkoQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIGNvbnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbik7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZW5kQWN0aXZpdHkoY2xhc3MgT2JqZWN0KiBw
QWN0aXZpdHkpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1BY3Rpdml0eShB
Y3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uLCB2b2lk
ICheYmxvY2spKHZvaWQpKTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBwZXJmb3JtQWN0
aXZpdHkoQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIGNvbnN0IGNsYXNzIFN0cmluZyogcFJlYXNv
biwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiBmdW5jKTsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICBwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShjb25zdCBjbGFzcyBTdHJpbmcqIHBS
ZWFzb24sIHZvaWQgKF5ibG9jaykoYm9vbCBleHBpcmVkKSk7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgcGVyZm9ybUV4cGlyaW5nQWN0aXZpdHkoY29uc3QgY2xhc3MgU3RyaW5nKiBwUmVh
c29uLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBleHBpcmVkKT4mIGZ1bmMpOworCisg
ICAgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGUgdGhlcm1hbFN0YXRlKCkgY29uc3Q7CisgICAgYm9v
bCAgICAgICAgICAgICAgICAgICAgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29uc3Q7CisKKyAg
ICBib29sICAgICAgICAgICAgICAgICAgICBpc2lPU0FwcE9uTWFjKCkgY29uc3Q7CisgICAgYm9v
bCAgICAgICAgICAgICAgICAgICAgaXNNYWNDYXRhbHlzdEFwcCgpIGNvbnN0OworfTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19QUklW
QVRFX0RFRl9DT05TVChOUzo6Tm90aWZpY2F0aW9uTmFtZSwgUHJvY2Vzc0luZm9UaGVybWFsU3Rh
dGVEaWRDaGFuZ2VOb3RpZmljYXRpb24pOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpOb3Rp
ZmljYXRpb25OYW1lLCBQcm9jZXNzSW5mb1Bvd2VyU3RhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24p
OworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6UHJvY2Vzc0luZm8qIE5TOjpQcm9jZXNzSW5mbzo6cHJvY2Vzc0luZm8oKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFByb2Nlc3NJbmZvKj4oX05TX1BSSVZB
VEVfQ0xTKE5TUHJvY2Vzc0luZm8pLCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc0luZm8pKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6OkFycmF5KiBOUzo6UHJvY2Vzc0luZm86OmFyZ3VtZW50cygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoYXJndW1lbnRzKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6UHJvY2Vzc0luZm86
OmVudmlyb25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxE
aWN0aW9uYXJ5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGVudmlyb25tZW50KSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpTdHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6aG9zdE5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTCho
b3N0TmFtZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6UHJvY2Vzc0luZm86OnByb2Nlc3NO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc05hbWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJv
Y2Vzc0luZm86OnNldFByb2Nlc3NOYW1lKGNvbnN0IFN0cmluZyogcFN0cmluZykKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzZXRQcm9jZXNz
TmFtZV8pLCBwU3RyaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgaW50IE5TOjpQcm9jZXNzSW5mbzo6cHJvY2Vzc0lk
ZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGludD4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKHByb2Nlc3NJZGVudGlmaWVyKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpT
dHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6Z2xvYmFsbHlVbmlxdWVTdHJpbmcoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChnbG9iYWxseVVuaXF1ZVN0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6UHJv
Y2Vzc0luZm86OnVzZXJOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZVNhZmU8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVzZXJOYW1lKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpTdHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6ZnVsbFVzZXJOYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8U3RyaW5nKj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKGZ1bGxVc2VyTmFtZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OlByb2Nl
c3NJbmZvOjpvcGVyYXRpbmdTeXN0ZW0oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob3BlcmF0aW5nU3lzdGVt
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIE5TOjpQcm9jZXNzSW5mbzo6
b3BlcmF0aW5nU3lzdGVtVmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8T3BlcmF0aW5nU3lzdGVtVmVyc2lvbj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9w
ZXJhdGluZ1N5c3RlbVZlcnNpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJ
bmZvOjpvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob3BlcmF0
aW5nU3lzdGVtVmVyc2lvblN0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9jZXNzSW5mbzo6
aXNPcGVyYXRpbmdTeXN0ZW1BdExlYXN0VmVyc2lvbihPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIHZl
cnNpb24pIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhp
cywgX05TX1BSSVZBVEVfU0VMKGlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNpb25fKSwgdmVy
c2lvbik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6UHJvY2Vzc0luZm86OnByb2Nlc3NvckNv
dW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKHByb2Nlc3NvckNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50
ZWdlciBOUzo6UHJvY2Vzc0luZm86OmFjdGl2ZVByb2Nlc3NvckNvdW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGFjdGl2ZVByb2Nlc3NvckNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIGxvbmcgbG9uZyBO
Uzo6UHJvY2Vzc0luZm86OnBoeXNpY2FsTWVtb3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx1bnNpZ25lZCBsb25nIGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChwaHlzaWNhbE1lbW9yeSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VGltZUludGVydmFsIE5TOjpQcm9jZXNz
SW5mbzo6c3lzdGVtVXB0aW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxUaW1lSW50ZXJ2YWw+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzeXN0ZW1VcHRpbWUpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNz
SW5mbzo6ZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2VTYWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChlbmFibGVTdWRkZW5UZXJtaW5hdGlv
bikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZGlzYWJsZUF1dG9tYXRpY1Rlcm1p
bmF0aW9uKGNvbnN0IFN0cmluZyogcFJlYXNvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
U2FmZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0
aW9uXyksIHBSZWFzb24pOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZW5hYmxlQXV0
b21hdGljVGVybWluYXRpb24oY29uc3QgU3RyaW5nKiBwUmVhc29uKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2VTYWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChlbmFibGVBdXRvbWF0
aWNUZXJtaW5hdGlvbl8pLCBwUmVhc29uKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6UHJvY2Vzc0luZm86
OmF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYXV0
b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9j
ZXNzSW5mbzo6c2V0QXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJs
ZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZB
VEVfU0VMKHNldEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWRfKSwgZW5hYmxlZCk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpPYmplY3QqIE5TOjpQcm9jZXNzSW5mbzo6YmVnaW5BY3Rpdml0eShBY3Rp
dml0eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU3RyaW5nKiBwUmVhc29uKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE9iamVjdCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChiZWdp
bkFjdGl2aXR5V2l0aE9wdGlvbnNfcmVhc29uXyksIG9wdGlvbnMsIHBSZWFzb24pOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6ZW5kQWN0aXZpdHkoT2JqZWN0KiBwQWN0aXZpdHkpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZW5k
QWN0aXZpdHlfKSwgcEFjdGl2aXR5KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OnBl
cmZvcm1BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgY29uc3QgU3RyaW5nKiBwUmVh
c29uLCB2b2lkICheYmxvY2spKHZvaWQpKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHBlcmZvcm1BY3Rpdml0eVdpdGhPcHRpb25zX3JlYXNv
bl91c2luZ0Jsb2NrXyksIG9wdGlvbnMsIHBSZWFzb24sIGJsb2NrKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBO
Uzo6UHJvY2Vzc0luZm86OnBlcmZvcm1BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywg
Y29uc3QgU3RyaW5nKiBwUmVhc29uLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0
aW9uKQoreworICAgIF9fYmxvY2sgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGJsb2NrRnVuY3Rpb24g
PSBmdW5jdGlvbjsKKworICAgIHBlcmZvcm1BY3Rpdml0eShvcHRpb25zLCBwUmVhc29uLCBeKCkg
eyBibG9ja0Z1bmN0aW9uKCk7IH0pOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6cGVy
Zm9ybUV4cGlyaW5nQWN0aXZpdHkoY29uc3QgU3RyaW5nKiBwUmVhc29uLCB2b2lkICheYmxvY2sp
KGJvb2wgZXhwaXJlZCkpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhp
cywgX05TX1BSSVZBVEVfU0VMKHBlcmZvcm1FeHBpcmluZ0FjdGl2aXR5V2l0aFJlYXNvbl91c2lu
Z0Jsb2NrXyksIHBSZWFzb24sIGJsb2NrKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86
OnBlcmZvcm1FeHBpcmluZ0FjdGl2aXR5KGNvbnN0IFN0cmluZyogcFJlYXNvbiwgY29uc3Qgc3Rk
OjpmdW5jdGlvbjx2b2lkKGJvb2wgZXhwaXJlZCk+JiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2Nr
IHN0ZDo6ZnVuY3Rpb248dm9pZChib29sIGV4cGlyZWQpPiBibG9ja0Z1bmN0aW9uID0gZnVuY3Rp
b247CisKKyAgICBwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShwUmVhc29uLCBeKGJvb2wgZXhwaXJl
ZCkgeyBibG9ja0Z1bmN0aW9uKGV4cGlyZWQpOyB9KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlByb2Nlc3NJbmZv
VGhlcm1hbFN0YXRlIE5TOjpQcm9jZXNzSW5mbzo6dGhlcm1hbFN0YXRlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZT4odGhp
cywgX05TX1BSSVZBVEVfU0VMKHRoZXJtYWxTdGF0ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9j
ZXNzSW5mbzo6aXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzTG93UG93
ZXJNb2RlRW5hYmxlZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9jZXNzSW5mbzo6aXNpT1NBcHBP
bk1hYygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChpc2lPU0FwcE9uTWFjKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6
OlByb2Nlc3NJbmZvOjppc01hY0NhdGFseXN0QXBwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzTWFjQ2F0
YWx5c3RBcHApKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU1JhbmdlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0
aW9uL05TUmFuZ2UuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNDY3ZDYwY2VlMzNhYjI4YjA4MWUwZDJkZDUz
NzI4NzY1YjBhOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvRm91bmRhdGlvbi9OU1JhbmdlLmhwcApAQCAtMCwwICsxLDgzIEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05T
UmFuZ2UuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lu
Y2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sK
K3N0cnVjdCBSYW5nZQoreworICAgIHN0YXRpYyBSYW5nZSBNYWtlKFVJbnRlZ2VyIGxvYywgVUlu
dGVnZXIgbGVuKTsKKworICAgIFJhbmdlKFVJbnRlZ2VyIGxvYywgVUludGVnZXIgbGVuKTsKKwor
ICAgIGJvb2wgICAgIEVxdWFsKGNvbnN0IFJhbmdlJiByYW5nZSkgY29uc3Q7CisgICAgYm9vbCAg
ICAgTG9jYXRpb25JblJhbmdlKFVJbnRlZ2VyIGxvYykgY29uc3Q7CisgICAgVUludGVnZXIgTWF4
KCkgY29uc3Q7CisKKyAgICBVSW50ZWdlciBsb2NhdGlvbjsKKyAgICBVSW50ZWdlciBsZW5ndGg7
Cit9IF9OU19QQUNLRUQ7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpSYW5nZTo6UmFuZ2UoVUludGVnZXIgbG9jLCBV
SW50ZWdlciBsZW4pCisgICAgOiBsb2NhdGlvbihsb2MpCisgICAgLCBsZW5ndGgobGVuKQorewor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6UmFuZ2UgTlM6OlJhbmdlOjpNYWtlKFVJbnRlZ2VyIGxvYywgVUludGVnZXIg
bGVuKQoreworICAgIHJldHVybiBSYW5nZShsb2MsIGxlbik7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlJh
bmdlOjpFcXVhbChjb25zdCBSYW5nZSYgcmFuZ2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIChsb2Nh
dGlvbiA9PSByYW5nZS5sb2NhdGlvbikgJiYgKGxlbmd0aCA9PSByYW5nZS5sZW5ndGgpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBib29sIE5TOjpSYW5nZTo6TG9jYXRpb25JblJhbmdlKFVJbnRlZ2VyIGxvYykgY29uc3QK
K3sKKyAgICByZXR1cm4gKCEobG9jIDwgbG9jYXRpb24pKSAmJiAoKGxvYyAtIGxvY2F0aW9uKSA8
IGxlbmd0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6UmFuZ2U6Ok1heCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGxvY2F0aW9uICsgbGVuZ3RoOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjlkZWNi
OTAxZjczNWUxNGU4N2YwZWJlOGZkOTE3YWE0ZTAyZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNTdHJpbmcuaHBwCkBAIC0w
LDAgKzEsMjQ1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vCisvLyBGb3VuZGF0aW9uL05TU3RyaW5nLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIw
LTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUg
Ik5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TUmFu
Z2UuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitfTlNfRU5VTShOUzo6
VUludGVnZXIsIFN0cmluZ0VuY29kaW5nKSB7CisgICAgQVNDSUlTdHJpbmdFbmNvZGluZyA9IDEs
CisgICAgTkVYVFNURVBTdHJpbmdFbmNvZGluZyA9IDIsCisgICAgSmFwYW5lc2VFVUNTdHJpbmdF
bmNvZGluZyA9IDMsCisgICAgVVRGOFN0cmluZ0VuY29kaW5nID0gNCwKKyAgICBJU09MYXRpbjFT
dHJpbmdFbmNvZGluZyA9IDUsCisgICAgU3ltYm9sU3RyaW5nRW5jb2RpbmcgPSA2LAorICAgIE5v
bkxvc3N5QVNDSUlTdHJpbmdFbmNvZGluZyA9IDcsCisgICAgU2hpZnRKSVNTdHJpbmdFbmNvZGlu
ZyA9IDgsCisgICAgSVNPTGF0aW4yU3RyaW5nRW5jb2RpbmcgPSA5LAorICAgIFVuaWNvZGVTdHJp
bmdFbmNvZGluZyA9IDEwLAorICAgIFdpbmRvd3NDUDEyNTFTdHJpbmdFbmNvZGluZyA9IDExLAor
ICAgIFdpbmRvd3NDUDEyNTJTdHJpbmdFbmNvZGluZyA9IDEyLAorICAgIFdpbmRvd3NDUDEyNTNT
dHJpbmdFbmNvZGluZyA9IDEzLAorICAgIFdpbmRvd3NDUDEyNTRTdHJpbmdFbmNvZGluZyA9IDE0
LAorICAgIFdpbmRvd3NDUDEyNTBTdHJpbmdFbmNvZGluZyA9IDE1LAorICAgIElTTzIwMjJKUFN0
cmluZ0VuY29kaW5nID0gMjEsCisgICAgTWFjT1NSb21hblN0cmluZ0VuY29kaW5nID0gMzAsCisK
KyAgICBVVEYxNlN0cmluZ0VuY29kaW5nID0gVW5pY29kZVN0cmluZ0VuY29kaW5nLAorCisgICAg
VVRGMTZCaWdFbmRpYW5TdHJpbmdFbmNvZGluZyA9IDB4OTAwMDAxMDAsCisgICAgVVRGMTZMaXR0
bGVFbmRpYW5TdHJpbmdFbmNvZGluZyA9IDB4OTQwMDAxMDAsCisKKyAgICBVVEYzMlN0cmluZ0Vu
Y29kaW5nID0gMHg4YzAwMDEwMCwKKyAgICBVVEYzMkJpZ0VuZGlhblN0cmluZ0VuY29kaW5nID0g
MHg5ODAwMDEwMCwKKyAgICBVVEYzMkxpdHRsZUVuZGlhblN0cmluZ0VuY29kaW5nID0gMHg5YzAw
MDEwMAorfTsKKworX05TX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBTdHJpbmdDb21wYXJlT3B0aW9u
cykgeworICAgIENhc2VJbnNlbnNpdGl2ZVNlYXJjaCA9IDEsCisgICAgTGl0ZXJhbFNlYXJjaCA9
IDIsCisgICAgQmFja3dhcmRzU2VhcmNoID0gNCwKKyAgICBBbmNob3JlZFNlYXJjaCA9IDgsCisg
ICAgTnVtZXJpY1NlYXJjaCA9IDY0LAorICAgIERpYWNyaXRpY0luc2Vuc2l0aXZlU2VhcmNoID0g
MTI4LAorICAgIFdpZHRoSW5zZW5zaXRpdmVTZWFyY2ggPSAyNTYsCisgICAgRm9yY2VkT3JkZXJp
bmdTZWFyY2ggPSA1MTIsCisgICAgUmVndWxhckV4cHJlc3Npb25TZWFyY2ggPSAxMDI0Cit9Owor
Cit1c2luZyB1bmljaGFyID0gdW5zaWduZWQgc2hvcnQ7CisKK2NsYXNzIFN0cmluZyA6IHB1Ymxp
YyBDb3B5aW5nPFN0cmluZz4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RyaW5nKiBzdHJpbmco
KTsKKyAgICBzdGF0aWMgU3RyaW5nKiBzdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nKTsKKyAg
ICBzdGF0aWMgU3RyaW5nKiBzdHJpbmcoY29uc3QgY2hhciogcFN0cmluZywgU3RyaW5nRW5jb2Rp
bmcgZW5jb2RpbmcpOworCisgICAgc3RhdGljIFN0cmluZyogYWxsb2MoKTsKKyAgICBTdHJpbmcq
ICAgICAgICBpbml0KCk7CisgICAgU3RyaW5nKiAgICAgICAgaW5pdChjb25zdCBTdHJpbmcqIHBT
dHJpbmcpOworICAgIFN0cmluZyogICAgICAgIGluaXQoY29uc3QgY2hhciogcFN0cmluZywgU3Ry
aW5nRW5jb2RpbmcgZW5jb2RpbmcpOworICAgIFN0cmluZyogICAgICAgIGluaXQodm9pZCogcEJ5
dGVzLCBVSW50ZWdlciBsZW4sIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nLCBib29sIGZyZWVCdWZm
ZXIpOworCisgICAgdW5pY2hhciAgICAgICAgY2hhcmFjdGVyKFVJbnRlZ2VyIGluZGV4KSBjb25z
dDsKKyAgICBVSW50ZWdlciAgICAgICBsZW5ndGgoKSBjb25zdDsKKworICAgIGNvbnN0IGNoYXIq
ICAgIGNTdHJpbmcoU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpIGNvbnN0OworICAgIGNvbnN0IGNo
YXIqICAgIHV0ZjhTdHJpbmcoKSBjb25zdDsKKyAgICBVSW50ZWdlciAgICAgICBtYXhpbXVtTGVu
Z3RoT2ZCeXRlcyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3Q7CisgICAgVUludGVnZXIg
ICAgICAgbGVuZ3RoT2ZCeXRlcyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3Q7CisKKyAg
ICBib29sICAgICAgICAgICBpc0VxdWFsVG9TdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nKSBj
b25zdDsKKyAgICBSYW5nZSAgICAgICAgICByYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyogcFN0
cmluZywgU3RyaW5nQ29tcGFyZU9wdGlvbnMgb3B0aW9ucykgY29uc3Q7CisKKyAgICBjb25zdCBj
aGFyKiAgICBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKworICAgIFN0cmluZyog
ICAgICAgIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nKGNvbnN0IFN0cmluZyogcFN0cmluZykgY29u
c3Q7CisKK307CisKK3RlbXBsYXRlPCBzdGQ6OnNpemVfdCBfU3RyaW5nTGVuID4KK2NvbnN0ZXhw
ciBjb25zdCBTdHJpbmcqIE1ha2VDb25zdGFudFN0cmluZyggY29uc3QgY2hhciAoICZzdHIgKVtf
U3RyaW5nTGVuXSApCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8IGNvbnN0IFN0cmlu
ZyogPiggX19DRlN0cmluZ01ha2VDb25zdGFudFN0cmluZyggc3RyICkgKTsKK30KKworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjpzdHJpbmcoKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPFN0cmluZyo+KF9OU19QUklWQVRFX0NMUyhOU1N0cmluZyksIF9OU19QUklW
QVRFX1NFTChzdHJpbmcpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlN0cmluZzo6c3RyaW5n
KGNvbnN0IFN0cmluZyogcFN0cmluZykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxTdHJpbmcqPihfTlNfUFJJVkFURV9DTFMoTlNTdHJpbmcpLCBfTlNfUFJJVkFURV9TRUwoc3Ry
aW5nV2l0aFN0cmluZ18pLCBwU3RyaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlN0cmlu
Zzo6c3RyaW5nKGNvbnN0IGNoYXIqIHBTdHJpbmcsIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KF9OU19QUklWQVRFX0NM
UyhOU1N0cmluZyksIF9OU19QUklWQVRFX1NFTChzdHJpbmdXaXRoQ1N0cmluZ19lbmNvZGluZ18p
LCBwU3RyaW5nLCBlbmNvZGluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjphbGxvYzxTdHJpbmc+KF9OU19QUklWQVRFX0NM
UyhOU1N0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0Ojppbml0PFN0cmluZz4oKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyog
TlM6OlN0cmluZzo6aW5pdChjb25zdCBTdHJpbmcqIHBTdHJpbmcpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRo
U3RyaW5nXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0
KGNvbnN0IGNoYXIqIHBTdHJpbmcsIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChp
bml0V2l0aENTdHJpbmdfZW5jb2RpbmdfKSwgcFN0cmluZywgZW5jb2RpbmcpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KHZvaWQqIHBCeXRlcywgVUludGVnZXIgbGVuLCBT
dHJpbmdFbmNvZGluZyBlbmNvZGluZywgYm9vbCBmcmVlQnVmZmVyKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0
aEJ5dGVzTm9Db3B5X2xlbmd0aF9lbmNvZGluZ19mcmVlV2hlbkRvbmVfKSwgcEJ5dGVzLCBsZW4s
IGVuY29kaW5nLCBmcmVlQnVmZmVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OnVuaWNoYXIgTlM6OlN0cmluZzo6
Y2hhcmFjdGVyKFVJbnRlZ2VyIGluZGV4KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPHVuaWNoYXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChjaGFyYWN0ZXJBdEluZGV4
XyksIGluZGV4KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpTdHJpbmc6Omxlbmd0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChsZW5ndGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgY29uc3QgY2hhciogTlM6OlN0cmluZzo6
Y1N0cmluZyhTdHJpbmdFbmNvZGluZyBlbmNvZGluZykgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxjb25zdCBjaGFyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNTdHJp
bmdVc2luZ0VuY29kaW5nXyksIGVuY29kaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgY29uc3QgY2hhciogTlM6OlN0
cmluZzo6dXRmOFN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Y29uc3QgY2hhcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChVVEY4U3RyaW5nKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpVSW50ZWdlciBOUzo6U3RyaW5nOjptYXhpbXVtTGVuZ3RoT2ZCeXRlcyhTdHJpbmdF
bmNvZGluZyBlbmNvZGluZykgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxVSW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG1heGltdW1MZW5ndGhPZkJ5dGVzVXNp
bmdFbmNvZGluZ18pLCBlbmNvZGluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6U3RyaW5n
OjpsZW5ndGhPZkJ5dGVzKFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
bGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2RpbmdfKSwgZW5jb2RpbmcpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5T
OjpTdHJpbmc6OmlzRXF1YWxUb1N0cmluZyhjb25zdCBOUzo6U3RyaW5nKiBwU3RyaW5nKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklW
QVRFX1NFTChpc0VxdWFsVG9TdHJpbmdfKSwgcFN0cmluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpSYW5nZSBO
Uzo6U3RyaW5nOjpyYW5nZU9mU3RyaW5nKGNvbnN0IE5TOjpTdHJpbmcqIHBTdHJpbmcsIE5TOjpT
dHJpbmdDb21wYXJlT3B0aW9ucyBvcHRpb25zKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPFJhbmdlPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocmFuZ2VPZlN0cmluZ19v
cHRpb25zXyksIHBTdHJpbmcsIG9wdGlvbnMpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBjb25zdCBjaGFyKiBOUzo6U3RyaW5nOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPGNvbnN0IGNoYXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OnN0cmluZ0J5
QXBwZW5kaW5nU3RyaW5nKGNvbnN0IFN0cmluZyogcFN0cmluZykgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNUeXBlcy5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY4
YWRhMTJjZThmYmZiM2NhOTZiOGQ1ODU2MjI0NjE3MTllODdlNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwCkBA
IC0wLDAgKzEsNTEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNUeXBlcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAy
MC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKworI2luY2x1
ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8Y3N0ZGludD4K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVz
cGFjZSBOUworewordXNpbmcgVGltZUludGVydmFsID0gZG91YmxlOworCit1c2luZyBJbnRlZ2Vy
ID0gc3RkOjppbnRwdHJfdDsKK3VzaW5nIFVJbnRlZ2VyID0gc3RkOjp1aW50cHRyX3Q7CisKK2Nv
bnN0IEludGVnZXIgIEludGVnZXJNYXggPSBJTlRQVFJfTUFYOworY29uc3QgSW50ZWdlciAgSW50
ZWdlck1pbiA9IElOVFBUUl9NSU47Citjb25zdCBVSW50ZWdlciBVSW50ZWdlck1heCA9IFVJTlRQ
VFJfTUFYOworCitzdHJ1Y3QgT3BlcmF0aW5nU3lzdGVtVmVyc2lvbgoreworICAgIEludGVnZXIg
bWFqb3JWZXJzaW9uOworICAgIEludGVnZXIgbWlub3JWZXJzaW9uOworICAgIEludGVnZXIgcGF0
Y2hWZXJzaW9uOworfSBfTlNfUEFDS0VEOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9Gb3VuZGF0aW9uL05TVVJMLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9Gb3VuZGF0aW9uL05TVVJMLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTBlN2EyMDc3MDczNGRmZGEy
Y2RlNzc0ZGFhNGM0MzIyNGRkYmQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwCkBAIC0wLDAgKzEsOTAgQEAKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5k
YXRpb24vTlNVUkwuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisv
LworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFn
bWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2lu
Y2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sK
K2NsYXNzIFVSTCA6IHB1YmxpYyBDb3B5aW5nPFVSTD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
VVJMKiBmaWxlVVJMV2l0aFBhdGgoY29uc3QgY2xhc3MgU3RyaW5nKiBwUGF0aCk7CisKKyAgICBz
dGF0aWMgVVJMKiBhbGxvYygpOworICAgIFVSTCogICAgICAgIGluaXQoKTsKKyAgICBVUkwqICAg
ICAgICBpbml0KGNvbnN0IGNsYXNzIFN0cmluZyogcFN0cmluZyk7CisgICAgVVJMKiAgICAgICAg
aW5pdEZpbGVVUkxXaXRoUGF0aChjb25zdCBjbGFzcyBTdHJpbmcqIHBQYXRoKTsKKworICAgIGNv
bnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigpIGNvbnN0OworfTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlVSTCogTlM6OlVSTDo6ZmlsZVVSTFdpdGhQYXRoKGNvbnN0IFN0cmluZyogcFBhdGgpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4oX05TX1BSSVZBVEVfQ0xTKE5T
VVJMKSwgX05TX1BSSVZBVEVfU0VMKGZpbGVVUkxXaXRoUGF0aF8pLCBwUGF0aCk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpVUkwqIE5TOjpVUkw6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjphbGxvYzxV
Ukw+KF9OU19QUklWQVRFX0NMUyhOU1VSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjpp
bml0KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojppbml0PFVSTD4oKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVS
TCogTlM6OlVSTDo6aW5pdChjb25zdCBTdHJpbmcqIHBTdHJpbmcpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoU3Ry
aW5nXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjppbml0RmlsZVVSTFdp
dGhQYXRoKGNvbnN0IFN0cmluZyogcFBhdGgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRGaWxlVVJMV2l0aFBhdGhfKSwg
cFBhdGgpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBjb25zdCBjaGFyKiBOUzo6VVJMOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNvbnN0IGNo
YXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0xJQ0VOU0UudHh0IGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0xJQ0VOU0UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNzQzYzY3
ZTlmZDM2NDljYzBlMWM4NmI5MTExZWUxZWEyNTkzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTElDRU5TRS50eHQKQEAgLTAsMCArMSwyMDIgQEAK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMi4wLCBKYW51YXJ5IDIwMDQKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8KKworICAgVEVS
TVMgQU5EIENPTkRJVElPTlMgRk9SIFVTRSwgUkVQUk9EVUNUSU9OLCBBTkQgRElTVFJJQlVUSU9O
CisKKyAgIDEuIERlZmluaXRpb25zLgorCisgICAgICAiTGljZW5zZSIgc2hhbGwgbWVhbiB0aGUg
dGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLAorICAgICAgYW5kIGRp
c3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9j
dW1lbnQuCisKKyAgICAgICJMaWNlbnNvciIgc2hhbGwgbWVhbiB0aGUgY29weXJpZ2h0IG93bmVy
IG9yIGVudGl0eSBhdXRob3JpemVkIGJ5CisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQg
aXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgICJMZWdhbCBFbnRpdHkiIHNoYWxsIG1l
YW4gdGhlIHVuaW9uIG9mIHRoZSBhY3RpbmcgZW50aXR5IGFuZCBhbGwKKyAgICAgIG90aGVyIGVu
dGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21t
b24KKyAgICAgIGNvbnRyb2wgd2l0aCB0aGF0IGVudGl0eS4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0
aGlzIGRlZmluaXRpb24sCisgICAgICAiY29udHJvbCIgbWVhbnMgKGkpIHRoZSBwb3dlciwgZGly
ZWN0IG9yIGluZGlyZWN0LCB0byBjYXVzZSB0aGUKKyAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2Vt
ZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCisgICAgICBvdGhlcndp
c2UsIG9yIChpaSkgb3duZXJzaGlwIG9mIGZpZnR5IHBlcmNlbnQgKDUwJSkgb3IgbW9yZSBvZiB0
aGUKKyAgICAgIG91dHN0YW5kaW5nIHNoYXJlcywgb3IgKGlpaSkgYmVuZWZpY2lhbCBvd25lcnNo
aXAgb2Ygc3VjaCBlbnRpdHkuCisKKyAgICAgICJZb3UiIChvciAiWW91ciIpIHNoYWxsIG1lYW4g
YW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKKyAgICAgIGV4ZXJjaXNpbmcgcGVybWlzc2lv
bnMgZ3JhbnRlZCBieSB0aGlzIExpY2Vuc2UuCisKKyAgICAgICJTb3VyY2UiIGZvcm0gc2hhbGwg
bWVhbiB0aGUgcHJlZmVycmVkIGZvcm0gZm9yIG1ha2luZyBtb2RpZmljYXRpb25zLAorICAgICAg
aW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBzb2Z0d2FyZSBzb3VyY2UgY29kZSwgZG9jdW1l
bnRhdGlvbgorICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KKworICAgICAg
Ik9iamVjdCIgZm9ybSBzaGFsbCBtZWFuIGFueSBmb3JtIHJlc3VsdGluZyBmcm9tIG1lY2hhbmlj
YWwKKyAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0s
IGluY2x1ZGluZyBidXQKKyAgICAgIG5vdCBsaW1pdGVkIHRvIGNvbXBpbGVkIG9iamVjdCBjb2Rl
LCBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiwKKyAgICAgIGFuZCBjb252ZXJzaW9ucyB0byBvdGhl
ciBtZWRpYSB0eXBlcy4KKworICAgICAgIldvcmsiIHNoYWxsIG1lYW4gdGhlIHdvcmsgb2YgYXV0
aG9yc2hpcCwgd2hldGhlciBpbiBTb3VyY2Ugb3IKKyAgICAgIE9iamVjdCBmb3JtLCBtYWRlIGF2
YWlsYWJsZSB1bmRlciB0aGUgTGljZW5zZSwgYXMgaW5kaWNhdGVkIGJ5IGEKKyAgICAgIGNvcHly
aWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yawor
ICAgICAgKGFuIGV4YW1wbGUgaXMgcHJvdmlkZWQgaW4gdGhlIEFwcGVuZGl4IGJlbG93KS4KKwor
ICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4g
U291cmNlIG9yIE9iamVjdAorICAgICAgZm9ybSwgdGhhdCBpcyBiYXNlZCBvbiAob3IgZGVyaXZl
ZCBmcm9tKSB0aGUgV29yayBhbmQgZm9yIHdoaWNoIHRoZQorICAgICAgZWRpdG9yaWFsIHJldmlz
aW9ucywgYW5ub3RhdGlvbnMsIGVsYWJvcmF0aW9ucywgb3Igb3RoZXIgbW9kaWZpY2F0aW9ucwor
ICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNo
aXAuIEZvciB0aGUgcHVycG9zZXMKKyAgICAgIG9mIHRoaXMgTGljZW5zZSwgRGVyaXZhdGl2ZSBX
b3JrcyBzaGFsbCBub3QgaW5jbHVkZSB3b3JrcyB0aGF0IHJlbWFpbgorICAgICAgc2VwYXJhYmxl
IGZyb20sIG9yIG1lcmVseSBsaW5rIChvciBiaW5kIGJ5IG5hbWUpIHRvIHRoZSBpbnRlcmZhY2Vz
IG9mLAorICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KKworICAg
ICAgIkNvbnRyaWJ1dGlvbiIgc2hhbGwgbWVhbiBhbnkgd29yayBvZiBhdXRob3JzaGlwLCBpbmNs
dWRpbmcKKyAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9k
aWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKKyAgICAgIHRvIHRoYXQgV29yayBvciBEZXJpdmF0aXZl
IFdvcmtzIHRoZXJlb2YsIHRoYXQgaXMgaW50ZW50aW9uYWxseQorICAgICAgc3VibWl0dGVkIHRv
IExpY2Vuc29yIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsgYnkgdGhlIGNvcHlyaWdodCBvd25l
cgorICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0
byBzdWJtaXQgb24gYmVoYWxmIG9mCisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyLiBGb3IgdGhl
IHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgInN1Ym1pdHRlZCIKKyAgICAgIG1lYW5zIGFu
eSBmb3JtIG9mIGVsZWN0cm9uaWMsIHZlcmJhbCwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9uIHNl
bnQKKyAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRp
bmcgYnV0IG5vdCBsaW1pdGVkIHRvCisgICAgICBjb21tdW5pY2F0aW9uIG9uIGVsZWN0cm9uaWMg
bWFpbGluZyBsaXN0cywgc291cmNlIGNvZGUgY29udHJvbCBzeXN0ZW1zLAorICAgICAgYW5kIGlz
c3VlIHRyYWNraW5nIHN5c3RlbXMgdGhhdCBhcmUgbWFuYWdlZCBieSwgb3Igb24gYmVoYWxmIG9m
LCB0aGUKKyAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBp
bXByb3ZpbmcgdGhlIFdvcmssIGJ1dAorICAgICAgZXhjbHVkaW5nIGNvbW11bmljYXRpb24gdGhh
dCBpcyBjb25zcGljdW91c2x5IG1hcmtlZCBvciBvdGhlcndpc2UKKyAgICAgIGRlc2lnbmF0ZWQg
aW4gd3JpdGluZyBieSB0aGUgY29weXJpZ2h0IG93bmVyIGFzICJOb3QgYSBDb250cmlidXRpb24u
IgorCisgICAgICAiQ29udHJpYnV0b3IiIHNoYWxsIG1lYW4gTGljZW5zb3IgYW5kIGFueSBpbmRp
dmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgb24gYmVoYWxmIG9mIHdob20gYSBDb250cmli
dXRpb24gaGFzIGJlZW4gcmVjZWl2ZWQgYnkgTGljZW5zb3IgYW5kCisgICAgICBzdWJzZXF1ZW50
bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KKworICAgMi4gR3JhbnQgb2YgQ29weXJp
Z2h0IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAg
ICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBw
ZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95
YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgY29weXJpZ2h0IGxpY2Vuc2UgdG8gcmVwcm9k
dWNlLCBwcmVwYXJlIERlcml2YXRpdmUgV29ya3Mgb2YsCisgICAgICBwdWJsaWNseSBkaXNwbGF5
LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKKyAgICAg
IFdvcmsgYW5kIHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0u
CisKKyAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBh
bmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhl
cmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBub24tZXhj
bHVzaXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAgIChleGNl
cHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2
ZSBtYWRlLAorICAgICAgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCBvdGhl
cndpc2UgdHJhbnNmZXIgdGhlIFdvcmssCisgICAgICB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGll
cyBvbmx5IHRvIHRob3NlIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZQorICAgICAgYnkgc3VjaCBD
b250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKKyAgICAg
IENvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciBDb250cmli
dXRpb24ocykKKyAgICAgIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBDb250cmlidXRpb24o
cykgd2FzIHN1Ym1pdHRlZC4gSWYgWW91CisgICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRp
b24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQorICAgICAgY3Jvc3MtY2xhaW0gb3Ig
Y291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgV29yaworICAgICAg
b3IgYSBDb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRl
cyBkaXJlY3QKKyAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVu
IGFueSBwYXRlbnQgbGljZW5zZXMKKyAgICAgIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGlj
ZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZQorICAgICAgYXMgb2YgdGhlIGRhdGUg
c3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgorCisgICA0LiBSZWRpc3RyaWJ1dGlvbi4gWW91IG1h
eSByZXByb2R1Y2UgYW5kIGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZQorICAgICAgV29yayBvciBE
ZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YgaW4gYW55IG1lZGl1bSwgd2l0aCBvciB3aXRob3V0Cisg
ICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRl
ZCB0aGF0IFlvdQorICAgICAgbWVldCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICAg
IChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCisg
ICAgICAgICAgRGVyaXZhdGl2ZSBXb3JrcyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlOyBhbmQKKwor
ICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9t
aW5lbnQgbm90aWNlcworICAgICAgICAgIHN0YXRpbmcgdGhhdCBZb3UgY2hhbmdlZCB0aGUgZmls
ZXM7IGFuZAorCisgICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0g
b2YgYW55IERlcml2YXRpdmUgV29ya3MKKyAgICAgICAgICB0aGF0IFlvdSBkaXN0cmlidXRlLCBh
bGwgY29weXJpZ2h0LCBwYXRlbnQsIHRyYWRlbWFyaywgYW5kCisgICAgICAgICAgYXR0cmlidXRp
b24gbm90aWNlcyBmcm9tIHRoZSBTb3VyY2UgZm9ybSBvZiB0aGUgV29yaywKKyAgICAgICAgICBl
eGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9m
CisgICAgICAgICAgdGhlIERlcml2YXRpdmUgV29ya3M7IGFuZAorCisgICAgICAoZCkgSWYgdGhl
IFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKKyAgICAg
ICAgICBkaXN0cmlidXRpb24sIHRoZW4gYW55IERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlz
dHJpYnV0ZSBtdXN0CisgICAgICAgICAgaW5jbHVkZSBhIHJlYWRhYmxlIGNvcHkgb2YgdGhlIGF0
dHJpYnV0aW9uIG5vdGljZXMgY29udGFpbmVkCisgICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNF
IGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CisgICAgICAgICAgcGVy
dGFpbiB0byBhbnkgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaW4gYXQgbGVhc3Qgb25l
CisgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZyBwbGFjZXM6IHdpdGhpbiBhIE5PVElDRSB0ZXh0
IGZpbGUgZGlzdHJpYnV0ZWQKKyAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdv
cmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCisgICAgICAgICAgZG9jdW1lbnRhdGlvbiwg
aWYgcHJvdmlkZWQgYWxvbmcgd2l0aCB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgb3IsCisgICAgICAg
ICAgd2l0aGluIGEgZGlzcGxheSBnZW5lcmF0ZWQgYnkgdGhlIERlcml2YXRpdmUgV29ya3MsIGlm
IGFuZAorICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxs
eSBhcHBlYXIuIFRoZSBjb250ZW50cworICAgICAgICAgIG9mIHRoZSBOT1RJQ0UgZmlsZSBhcmUg
Zm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSBhbmQKKyAgICAgICAgICBkbyBub3QgbW9k
aWZ5IHRoZSBMaWNlbnNlLiBZb3UgbWF5IGFkZCBZb3VyIG93biBhdHRyaWJ1dGlvbgorICAgICAg
ICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwg
YWxvbmdzaWRlCisgICAgICAgICAgb3IgYXMgYW4gYWRkZW5kdW0gdG8gdGhlIE5PVElDRSB0ZXh0
IGZyb20gdGhlIFdvcmssIHByb3ZpZGVkCisgICAgICAgICAgdGhhdCBzdWNoIGFkZGl0aW9uYWwg
YXR0cmlidXRpb24gbm90aWNlcyBjYW5ub3QgYmUgY29uc3RydWVkCisgICAgICAgICAgYXMgbW9k
aWZ5aW5nIHRoZSBMaWNlbnNlLgorCisgICAgICBZb3UgbWF5IGFkZCBZb3VyIG93biBjb3B5cmln
aHQgc3RhdGVtZW50IHRvIFlvdXIgbW9kaWZpY2F0aW9ucyBhbmQKKyAgICAgIG1heSBwcm92aWRl
IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKKyAg
ICAgIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwgb3IgZGlzdHJpYnV0aW9uIG9mIFlvdXIgbW9kaWZp
Y2F0aW9ucywgb3IKKyAgICAgIGZvciBhbnkgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGFzIGEgd2hv
bGUsIHByb3ZpZGVkIFlvdXIgdXNlLAorICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0
aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCisgICAgICB0aGUgY29uZGl0
aW9ucyBzdGF0ZWQgaW4gdGhpcyBMaWNlbnNlLgorCisgICA1LiBTdWJtaXNzaW9uIG9mIENvbnRy
aWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCisgICAgICBh
bnkgQ29udHJpYnV0aW9uIGludGVudGlvbmFsbHkgc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW4g
dGhlIFdvcmsKKyAgICAgIGJ5IFlvdSB0byB0aGUgTGljZW5zb3Igc2hhbGwgYmUgdW5kZXIgdGhl
IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55
IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KKyAgICAgIE5vdHdpdGhzdGFuZGluZyB0
aGUgYWJvdmUsIG5vdGhpbmcgaGVyZWluIHNoYWxsIHN1cGVyc2VkZSBvciBtb2RpZnkKKyAgICAg
IHRoZSB0ZXJtcyBvZiBhbnkgc2VwYXJhdGUgbGljZW5zZSBhZ3JlZW1lbnQgeW91IG1heSBoYXZl
IGV4ZWN1dGVkCisgICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlv
bnMuCisKKyAgIDYuIFRyYWRlbWFya3MuIFRoaXMgTGljZW5zZSBkb2VzIG5vdCBncmFudCBwZXJt
aXNzaW9uIHRvIHVzZSB0aGUgdHJhZGUKKyAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNl
IG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKKyAgICAgIGV4Y2VwdCBh
cyByZXF1aXJlZCBmb3IgcmVhc29uYWJsZSBhbmQgY3VzdG9tYXJ5IHVzZSBpbiBkZXNjcmliaW5n
IHRoZQorICAgICAgb3JpZ2luIG9mIHRoZSBXb3JrIGFuZCByZXByb2R1Y2luZyB0aGUgY29udGVu
dCBvZiB0aGUgTk9USUNFIGZpbGUuCisKKyAgIDcuIERpc2NsYWltZXIgb2YgV2FycmFudHkuIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvcgorICAgICAgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIExpY2Vuc29yIHByb3ZpZGVzIHRoZSBXb3JrIChhbmQgZWFjaAorICAgICAgQ29udHJp
YnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCisg
ICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IKKyAgICAgIGltcGxpZWQsIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9u
LCBhbnkgd2FycmFudGllcyBvciBjb25kaXRpb25zCisgICAgICBvZiBUSVRMRSwgTk9OLUlORlJJ
TkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCisgICAgICBQQVJUSUNV
TEFSIFBVUlBPU0UuIFlvdSBhcmUgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0
aGUKKyAgICAgIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBvciByZWRpc3RyaWJ1dGluZyB0aGUg
V29yayBhbmQgYXNzdW1lIGFueQorICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhl
cmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisgICA4LiBMaW1pdGF0
aW9uIG9mIExpYWJpbGl0eS4gSW4gbm8gZXZlbnQgYW5kIHVuZGVyIG5vIGxlZ2FsIHRoZW9yeSwK
KyAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwg
b3Igb3RoZXJ3aXNlLAorICAgICAgdW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IChz
dWNoIGFzIGRlbGliZXJhdGUgYW5kIGdyb3NzbHkKKyAgICAgIG5lZ2xpZ2VudCBhY3RzKSBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc2hhbGwgYW55IENvbnRyaWJ1dG9yIGJlCisgICAgICBsaWFi
bGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNw
ZWNpYWwsCisgICAgICBpbmNpZGVudGFsLCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb2YgYW55
IGNoYXJhY3RlciBhcmlzaW5nIGFzIGEKKyAgICAgIHJlc3VsdCBvZiB0aGlzIExpY2Vuc2Ugb3Ig
b3V0IG9mIHRoZSB1c2Ugb3IgaW5hYmlsaXR5IHRvIHVzZSB0aGUKKyAgICAgIFdvcmsgKGluY2x1
ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKKyAg
ICAgIHdvcmsgc3RvcHBhZ2UsIGNvbXB1dGVyIGZhaWx1cmUgb3IgbWFsZnVuY3Rpb24sIG9yIGFu
eSBhbmQgYWxsCisgICAgICBvdGhlciBjb21tZXJjaWFsIGRhbWFnZXMgb3IgbG9zc2VzKSwgZXZl
biBpZiBzdWNoIENvbnRyaWJ1dG9yCisgICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3Nz
aWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCisKKyAgIDkuIEFjY2VwdGluZyBXYXJyYW50eSBvciBB
ZGRpdGlvbmFsIExpYWJpbGl0eS4gV2hpbGUgcmVkaXN0cmlidXRpbmcKKyAgICAgIHRoZSBXb3Jr
IG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCisg
ICAgICBhbmQgY2hhcmdlIGEgZmVlIGZvciwgYWNjZXB0YW5jZSBvZiBzdXBwb3J0LCB3YXJyYW50
eSwgaW5kZW1uaXR5LAorICAgICAgb3Igb3RoZXIgbGlhYmlsaXR5IG9ibGlnYXRpb25zIGFuZC9v
ciByaWdodHMgY29uc2lzdGVudCB3aXRoIHRoaXMKKyAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGlu
IGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CisgICAgICBvbiBZ
b3VyIG93biBiZWhhbGYgYW5kIG9uIFlvdXIgc29sZSByZXNwb25zaWJpbGl0eSwgbm90IG9uIGJl
aGFsZgorICAgICAgb2YgYW55IG90aGVyIENvbnRyaWJ1dG9yLCBhbmQgb25seSBpZiBZb3UgYWdy
ZWUgdG8gaW5kZW1uaWZ5LAorICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9y
IGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CisgICAgICBpbmN1cnJlZCBieSwgb3IgY2xhaW1z
IGFzc2VydGVkIGFnYWluc3QsIHN1Y2ggQ29udHJpYnV0b3IgYnkgcmVhc29uCisgICAgICBvZiB5
b3VyIGFjY2VwdGluZyBhbnkgc3VjaCB3YXJyYW50eSBvciBhZGRpdGlvbmFsIGxpYWJpbGl0eS4K
KworICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCisKKyAgIEFQUEVORElYOiBIb3cgdG8g
YXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KKworICAgICAgVG8gYXBwbHkg
dGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yaywgYXR0YWNoIHRoZSBmb2xsb3dpbmcKKyAg
ICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNr
ZXRzICJbXSIKKyAgICAgIHJlcGxhY2VkIHdpdGggeW91ciBvd24gaWRlbnRpZnlpbmcgaW5mb3Jt
YXRpb24uIChEb24ndCBpbmNsdWRlCisgICAgICB0aGUgYnJhY2tldHMhKSAgVGhlIHRleHQgc2hv
dWxkIGJlIGVuY2xvc2VkIGluIHRoZSBhcHByb3ByaWF0ZQorICAgICAgY29tbWVudCBzeW50YXgg
Zm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCisgICAgICBmaWxl
IG9yIGNsYXNzIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHB1cnBvc2UgYmUgaW5jbHVkZWQgb24g
dGhlCisgICAgICBzYW1lICJwcmludGVkIHBhZ2UiIGFzIHRoZSBjb3B5cmlnaHQgbm90aWNlIGZv
ciBlYXNpZXIKKyAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZl
cy4KKworICAgQ29weXJpZ2h0IMKpIDIwMjEgQXBwbGUgSW5jLgorCisgICBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAg
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0
dXJlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZDQ1NmM4NzEyMjdkYjljNDIwYjE3YWE3MTU3ZjhmODUxZWRl
NmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAKQEAgLTAsMCArMSw5MzIgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01U
TEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFw
cGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRl
ICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5j
bHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFjY2VsZXJh
dGlvblN0cnVjdHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlw
ZXMuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExTdGFnZUlu
cHV0T3V0cHV0RGVzY3JpcHRvci5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfT1BUSU9O
UyhOUzo6VUludGVnZXIsIEFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlKSB7CisgICAgQWNjZWxl
cmF0aW9uU3RydWN0dXJlVXNhZ2VOb25lID0gMCwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVV
c2FnZVJlZml0ID0gMSwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZVByZWZlckZhc3RC
dWlsZCA9IDIsCisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2VFeHRlbmRlZExpbWl0cyA9
IDQsCit9OworCitfTVRMX09QVElPTlModWludDMyX3QsIEFjY2VsZXJhdGlvblN0cnVjdHVyZUlu
c3RhbmNlT3B0aW9ucykgeworICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlT3B0aW9u
Tm9uZSA9IDAsCisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25EaXNhYmxl
VHJpYW5nbGVDdWxsaW5nID0gMSwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9w
dGlvblRyaWFuZ2xlRnJvbnRGYWNpbmdXaW5kaW5nQ291bnRlckNsb2Nrd2lzZSA9IDIsCisgICAg
QWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25PcGFxdWUgPSA0LAorICAgIEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlT3B0aW9uTm9uT3BhcXVlID0gOCwKK307CisKK2NsYXNz
IEFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QWNj
ZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xh
c3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNz
IEFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlICAgICAgICAgICAgICAgdXNhZ2UoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
VXNhZ2UoTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZSB1c2FnZSk7Cit9OworCitjbGFz
cyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNv
cHlpbmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0
b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURl
c2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zm
c2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldChOUzo6VUlu
dGVnZXIgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCk7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFxdWUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRPcGFxdWUoYm9vbCBvcGFxdWUpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rp
b25GdW5jdGlvbkludm9jYXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBbGxvd0R1cGxpY2F0ZUludGVyc2Vj
dGlvbkZ1bmN0aW9uSW52b2NhdGlvbihib29sIGFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVu
Y3Rpb25JbnZvY2F0aW9uKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6
OlN0cmluZyogbGFiZWwpOworfTsKKworX01UTF9FTlVNKHVpbnQzMl90LCBNb3Rpb25Cb3JkZXJN
b2RlKSB7CisgICAgTW90aW9uQm9yZGVyTW9kZUNsYW1wID0gMCwKKyAgICBNb3Rpb25Cb3JkZXJN
b2RlVmFuaXNoID0gMSwKK307CisKK2NsYXNzIFByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlRGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUHJpbWl0aXZlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpBcnJheSogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW9tZXRyeURlc2NyaXB0
b3JzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEdlb21ldHJ5RGVzY3JpcHRvcnMoY29uc3QgTlM6OkFycmF5KiBn
ZW9tZXRyeURlc2NyaXB0b3JzKTsKKworICAgIE1UTDo6TW90aW9uQm9yZGVyTW9kZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25TdGFydEJvcmRlck1vZGUoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0TW90aW9uU3RhcnRCb3JkZXJNb2RlKE1UTDo6TW90aW9uQm9yZGVyTW9kZSBtb3Rpb25T
dGFydEJvcmRlck1vZGUpOworCisgICAgTVRMOjpNb3Rpb25Cb3JkZXJNb2RlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbkVuZEJvcmRlck1vZGUoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TW90aW9uRW5kQm9yZGVyTW9kZShNVEw6Ok1vdGlvbkJvcmRlck1vZGUgbW90aW9uRW5kQm9yZGVy
TW9kZSk7CisKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbW90aW9uU3RhcnRUaW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblN0YXJ0VGlt
ZShmbG9hdCBtb3Rpb25TdGFydFRpbWUpOworCisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbkVuZFRpbWUoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TW90aW9uRW5kVGltZShmbG9hdCBtb3Rpb25FbmRUaW1lKTsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25LZXlmcmFt
ZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldE1vdGlvbktleWZyYW1lQ291bnQoTlM6OlVJbnRlZ2VyIG1v
dGlvbktleWZyYW1lQ291bnQpOworCisgICAgc3RhdGljIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0
aW9uU3RydWN0dXJlRGVzY3JpcHRvciogIGRlc2NyaXB0b3IoKTsKK307CisKK2NsYXNzIEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpD
b3B5aW5nPEFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yLCBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlh
bmdsZUdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIEJ1ZmZl
ciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4
QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgY2xhc3MgQnVm
ZmVyKiB2ZXJ0ZXhCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhCdWZmZXJPZmZzZXQoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFZlcnRleEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgdmVydGV4QnVm
ZmVyT2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4U3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRWZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlkZSk7CisKKyAgICBjbGFzcyBC
dWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmRleEJ1ZmZlcihjb25zdCBjbGFzcyBC
dWZmZXIqIGluZGV4QnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhCdWZmZXJPZmZzZXQoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEluZGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZl
ck9mZnNldCk7CisKKyAgICBNVEw6OkluZGV4VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGV4VHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5k
ZXhUeXBlKE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWFuZ2xlQ291
bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRlZ2VyIHRyaWFu
Z2xlQ291bnQpOworCisgICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5n
bGVHZW9tZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitjbGFzcyBBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6
Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRv
ciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0
dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBj
bGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvdW5kaW5nQm94QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCb3VuZGlu
Z0JveEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJvdW5kaW5nQm94QnVmZmVyKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm91bmRpbmdCb3hCdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveEJ1ZmZlck9m
ZnNldCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94U3RyaWRlKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRCb3VuZGluZ0JveFN0cmlkZShOUzo6VUludGVnZXIgYm91bmRpbmdCb3hTdHJpZGUp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib3VuZGluZ0JveENvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRCb3VuZGluZ0JveENvdW50KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveENvdW50KTsKKworICAg
IHN0YXRpYyBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNj
cmlwdG9yKiAgZGVzY3JpcHRvcigpOworfTsKKworY2xhc3MgTW90aW9uS2V5ZnJhbWVEYXRhIDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxNb3Rpb25LZXlmcmFtZURhdGE+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIE1vdGlvbktleWZyYW1lRGF0YSogYWxsb2MoKTsKKworICAgIGNsYXNz
IE1vdGlvbktleWZyYW1lRGF0YSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIEJ1ZmZlciog
ICAgICAgICAgICAgICAgICAgIGJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlcik7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBvZmZzZXQoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPZmZzZXQoTlM6OlVJbnRlZ2Vy
IG9mZnNldCk7CisKKyAgICBzdGF0aWMgTVRMOjpNb3Rpb25LZXlmcmFtZURhdGEqICBkYXRhKCk7
Cit9OworCitjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5
RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rp
b25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVH
ZW9tZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJh
dGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiBhbGxvYygpOwor
CisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEJ1ZmZlcnMo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5
KiB2ZXJ0ZXhCdWZmZXJzKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4U3RyaWRlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRWZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlk
ZSk7CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGV4QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRJbmRleEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kZXhCdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEluZGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCk7CisKKyAg
ICBNVEw6OkluZGV4VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4VHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhU
eXBlKE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWFuZ2xl
Q291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRl
Z2VyIHRyaWFuZ2xlQ291bnQpOworCisgICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9Owor
CitjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVz
Y3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25C
b3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVH
ZW9tZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJh
dGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBhbGxvYygp
OworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9t
ZXRyeURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5k
aW5nQm94QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hC
dWZmZXJzKGNvbnN0IE5TOjpBcnJheSogYm91bmRpbmdCb3hCdWZmZXJzKTsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm91bmRpbmdCb3hTdHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEJvdW5kaW5nQm94U3RyaWRlKE5TOjpVSW50ZWdlciBib3VuZGluZ0JveFN0cmlkZSk7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94Q291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldEJvdW5kaW5nQm94Q291bnQoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94Q291bnQpOwor
CisgICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hH
ZW9tZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitzdHJ1Y3QgQWNjZWxlcmF0
aW9uU3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yCit7CisgICAgTVRMOjpQYWNrZWRGbG9hdDR4
MyAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXg7CisgICAgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlvbnMgb3B0aW9uczsKKyAgICB1aW50MzJf
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrOworICAgIHVpbnQzMl90ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVP
ZmZzZXQ7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNj
ZWxlcmF0aW9uU3RydWN0dXJlSW5kZXg7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgQWNjZWxl
cmF0aW9uU3RydWN0dXJlVXNlcklESW5zdGFuY2VEZXNjcmlwdG9yCit7CisgICAgTVRMOjpQYWNr
ZWRGbG9hdDR4MyAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXg7Cisg
ICAgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlvbnMgb3B0aW9uczsKKyAg
ICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrOworICAgIHVp
bnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVPZmZzZXQ7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWNjZWxlcmF0aW9uU3RydWN0dXJlSW5kZXg7CisgICAgdWludDMyX3QgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXNlcklEOworfSBfTVRMX1BBQ0tFRDsKKworX01UTF9F
TlVNKE5TOjpVSW50ZWdlciwgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9y
VHlwZSkgeworICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGVE
ZWZhdWx0ID0gMCwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JU
eXBlVXNlcklEID0gMSwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0
b3JUeXBlTW90aW9uID0gMiwKK307CisKK3N0cnVjdCBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rp
b25JbnN0YW5jZURlc2NyaXB0b3IKK3sKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUlu
c3RhbmNlT3B0aW9ucyBvcHRpb25zOworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hc2s7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldDsKKyAgICB1aW50MzJfdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbmRl
eDsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySUQ7
CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW90aW9uVHJh
bnNmb3Jtc1N0YXJ0SW5kZXg7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW90aW9uVHJhbnNmb3Jtc0NvdW50OworICAgIE1UTDo6TW90aW9uQm9yZGVyTW9k
ZSAgICAgICAgICAgICAgICAgICAgIG1vdGlvblN0YXJ0Qm9yZGVyTW9kZTsKKyAgICBNVEw6Ok1v
dGlvbkJvcmRlck1vZGUgICAgICAgICAgICAgICAgICAgICBtb3Rpb25FbmRCb3JkZXJNb2RlOwor
ICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvblN0YXJ0
VGltZTsKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rp
b25FbmRUaW1lOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgSW5zdGFuY2VBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEluc3RhbmNlQWNjZWxlcmF0
aW9uU3RydWN0dXJlRGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlw
dG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBJbnN0YW5jZUFjY2VsZXJhdGlvblN0
cnVjdHVyZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbnN0YW5jZUFjY2VsZXJh
dGlvblN0cnVjdHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBCdWZm
ZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZURlc2Ny
aXB0b3JCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIoY29uc3Qg
Y2xhc3MgQnVmZmVyKiBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIpOworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VEZXNj
cmlwdG9yQnVmZmVyT2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVy
T2Zmc2V0KE5TOjpVSW50ZWdlciBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQpOworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VEZXNjcmlwdG9y
U3RyaWRlKE5TOjpVSW50ZWdlciBpbnN0YW5jZURlc2NyaXB0b3JTdHJpZGUpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFu
Y2VDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEluc3RhbmNlQ291bnQoTlM6OlVJbnRlZ2VyIGluc3RhbmNl
Q291bnQpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcygpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMoY29uc3QgTlM6OkFycmF5KiBpbnN0YW5j
ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzKTsKKworICAgIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlwZSAgICAgIGluc3RhbmNlRGVzY3JpcHRvclR5cGUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRJbnN0YW5jZURlc2NyaXB0b3JUeXBlKE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlwZSBpbnN0YW5jZURlc2NyaXB0b3JUeXBlKTsKKworICAg
IGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v
dGlvblRyYW5zZm9ybUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlcihj
b25zdCBjbGFzcyBCdWZmZXIqIG1vdGlvblRyYW5zZm9ybUJ1ZmZlcik7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25UcmFu
c2Zvcm1CdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZz
ZXQoTlM6OlVJbnRlZ2VyIG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25U
cmFuc2Zvcm1Db3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblRyYW5zZm9ybUNvdW50KE5TOjpVSW50
ZWdlciBtb3Rpb25UcmFuc2Zvcm1Db3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpJbnN0YW5jZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitjbGFz
cyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFjY2VsZXJh
dGlvblN0cnVjdHVyZSwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgTlM6OlVJbnRlZ2VyIHNp
emUoKSBjb25zdDsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5M
SU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRF
X0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhv
ZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9y
KiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRv
cj4oKTsKK30KKworLy8gcHJvcGVydHk6IHVzYWdlCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZVVzYWdlIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6
dXNhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2U+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNhZ2UpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0
b3I6OnNldFVzYWdlKE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2UgdXNhZ2UpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFVz
YWdlXyksIHVzYWdlKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRy
eURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yPigp
OworfQorCisvLyBwcm9wZXJ0eTogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlE
ZXNjcmlwdG9yOjppbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjpz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0KE5TOjpVSW50ZWdlciBpbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0
XyksIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTog
b3BhcXVlCitfTVRMX0lOTElORSBib29sIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0
cnlEZXNjcmlwdG9yOjpvcGFxdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3BhcXVlKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6
OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3BhcXVlXyksIG9wYXF1ZSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbgorX01U
TF9JTkxJTkUgYm9vbCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRv
cjo6YWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24oKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24pKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVz
Y3JpcHRvcjo6c2V0QWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24o
Ym9vbCBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbikKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWxs
b3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb25fKSwgYWxsb3dEdXBsaWNh
dGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24pOworfQorCisvLyBwcm9wZXJ0eTogbGFi
ZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2Vv
bWV0cnlEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVz
Y3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxh
YmVsKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UHJp
bWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpQcmltaXRpdmVBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmFsbG9jPE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRv
cj4oX01UTF9QUklWQVRFX0NMUyhNVExQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNj
cmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpQcmltaXRp
dmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBNVEw6OlByaW1pdGl2ZUFjY2VsZXJh
dGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4oKTsK
K30KKworLy8gcHJvcGVydHk6IGdlb21ldHJ5RGVzY3JpcHRvcnMKK19NVExfSU5MSU5FIE5TOjpB
cnJheSogTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpnZW9t
ZXRyeURlc2NyaXB0b3JzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdlb21ldHJ5RGVzY3JpcHRvcnMp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3I6OnNldEdlb21ldHJ5RGVzY3JpcHRvcnMoY29uc3QgTlM6OkFycmF5KiBn
ZW9tZXRyeURlc2NyaXB0b3JzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRHZW9tZXRyeURlc2NyaXB0b3JzXyksIGdlb21ldHJ5RGVz
Y3JpcHRvcnMpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uU3RhcnRCb3JkZXJNb2RlCitfTVRM
X0lOTElORSBNVEw6Ok1vdGlvbkJvcmRlck1vZGUgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25TdGFydEJvcmRlck1vZGUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TW90aW9uQm9yZGVyTW9kZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTChtb3Rpb25TdGFydEJvcmRlck1vZGUpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNl
dE1vdGlvblN0YXJ0Qm9yZGVyTW9kZShNVEw6Ok1vdGlvbkJvcmRlck1vZGUgbW90aW9uU3RhcnRC
b3JkZXJNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRNb3Rpb25TdGFydEJvcmRlck1vZGVfKSwgbW90aW9uU3RhcnRCb3JkZXJN
b2RlKTsKK30KKworLy8gcHJvcGVydHk6IG1vdGlvbkVuZEJvcmRlck1vZGUKK19NVExfSU5MSU5F
IE1UTDo6TW90aW9uQm9yZGVyTW9kZSBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3I6Om1vdGlvbkVuZEJvcmRlck1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TW90aW9uQm9yZGVyTW9kZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChtb3Rpb25FbmRCb3JkZXJNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25FbmRC
b3JkZXJNb2RlKE1UTDo6TW90aW9uQm9yZGVyTW9kZSBtb3Rpb25FbmRCb3JkZXJNb2RlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRN
b3Rpb25FbmRCb3JkZXJNb2RlXyksIG1vdGlvbkVuZEJvcmRlck1vZGUpOworfQorCisvLyBwcm9w
ZXJ0eTogbW90aW9uU3RhcnRUaW1lCitfTVRMX0lOTElORSBmbG9hdCBNVEw6OlByaW1pdGl2ZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvblN0YXJ0VGltZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobW90aW9uU3RhcnRUaW1lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQcmlt
aXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25TdGFydFRpbWUo
ZmxvYXQgbW90aW9uU3RhcnRUaW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNb3Rpb25TdGFydFRpbWVfKSwgbW90aW9uU3RhcnRU
aW1lKTsKK30KKworLy8gcHJvcGVydHk6IG1vdGlvbkVuZFRpbWUKK19NVExfSU5MSU5FIGZsb2F0
IE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uRW5k
VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobW90aW9uRW5kVGltZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0TW90
aW9uRW5kVGltZShmbG9hdCBtb3Rpb25FbmRUaW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNb3Rpb25FbmRUaW1lXyksIG1vdGlv
bkVuZFRpbWUpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uS2V5ZnJhbWVDb3VudAorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6bW90aW9uS2V5ZnJhbWVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlv
bktleWZyYW1lQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1vdGlvbktleWZyYW1lQ291bnQoTlM6
OlVJbnRlZ2VyIG1vdGlvbktleWZyYW1lQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvbktleWZyYW1lQ291bnRfKSwg
bW90aW9uS2V5ZnJhbWVDb3VudCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IK
K19NVExfSU5MSU5FIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRv
ciogTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpkZXNjcmlw
dG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlByaW1pdGl2ZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFByaW1p
dGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGRl
c2NyaXB0b3IpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRo
b2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVH
ZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9t
ZXRyeURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9
CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0
ZXhCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZmZXIpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlE
ZXNjcmlwdG9yOjpzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIHZlcnRleEJ1ZmZl
cikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VmVydGV4QnVmZmVyXyksIHZlcnRleEJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5OiB2
ZXJ0ZXhCdWZmZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0ZXhCdWZmZXJPZmZz
ZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZmZXJPZmZzZXQpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlE
ZXNjcmlwdG9yOjpzZXRWZXJ0ZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIHZlcnRleEJ1ZmZl
ck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VmVydGV4QnVmZmVyT2Zmc2V0XyksIHZlcnRleEJ1ZmZlck9mZnNldCk7Cit9
CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhTdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjp2ZXJ0
ZXhTdHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhTdHJpZGUpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlE
ZXNjcmlwdG9yOjpzZXRWZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRleFN0cmlkZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VmVydGV4U3RyaWRlXyksIHZlcnRleFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleEJ1
ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
VHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluZGV4QnVmZmVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoaW5kZXhCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJbmRleEJ1ZmZlcihj
b25zdCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGV4QnVmZmVyXyksIGluZGV4QnVm
ZmVyKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4QnVmZmVyT2Zmc2V0CitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVz
Y3JpcHRvcjo6aW5kZXhCdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleEJ1
ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldEluZGV4QnVmZmVyT2Zmc2V0KE5T
OjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhCdWZmZXJPZmZzZXRfKSwgaW5k
ZXhCdWZmZXJPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhUeXBlCitfTVRMX0lOTElO
RSBNVEw6OkluZGV4VHlwZSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0
cnlEZXNjcmlwdG9yOjppbmRleFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6SW5kZXhUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4VHlw
ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldEluZGV4VHlwZShNVEw6OkluZGV4VHlwZSBpbmRl
eFR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldEluZGV4VHlwZV8pLCBpbmRleFR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogdHJp
YW5nbGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnRyaWFuZ2xlQ291bnQoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh0cmlhbmdsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VHJp
YW5nbGVDb3VudChOUzo6VUludGVnZXIgdHJpYW5nbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHJpYW5nbGVDb3VudF8p
LCB0cmlhbmdsZUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgorX01U
TF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3Jp
cHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
cjo6ZGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcio+KF9NVExfUFJJ
VkFURV9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0
b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGRlc2NyaXB0b3IpKTsKK30KKworLy8gc3RhdGljIG1ldGhv
ZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdC
b3hHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdC
b3hHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3Jp
cHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0Jv
eEdlb21ldHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5F
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3Iq
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBib3VuZGluZ0JveEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5n
Qm94QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hCdWZmZXIpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94
R2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZl
ciogYm91bmRpbmdCb3hCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyXyksIGJvdW5kaW5nQm94
QnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IGJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0CitfTVRM
X0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0Jv
eEdlb21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hCdWZmZXJPZmZzZXQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChib3VuZGluZ0JveEJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0
b3I6OnNldEJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveEJ1
ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXRfKSwgYm91bmRpbmdCb3hCdWZm
ZXJPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hTdHJpZGUKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yOjpib3VuZGluZ0JveFN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGJvdW5kaW5nQm94U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91bmRpbmdC
b3hTdHJpZGUoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94U3RyaWRlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3VuZGluZ0JveFN0
cmlkZV8pLCBib3VuZGluZ0JveFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBib3VuZGluZ0Jv
eENvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hDb3VudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGJvdW5kaW5nQm94Q291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9y
OjpzZXRCb3VuZGluZ0JveENvdW50KE5TOjpVSW50ZWdlciBib3VuZGluZ0JveENvdW50KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRC
b3VuZGluZ0JveENvdW50XyksIGJvdW5kaW5nQm94Q291bnQpOworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJv
dW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJv
dW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94
R2VvbWV0cnlEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVz
Y3JpcHRvcikpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpNb3Rpb25LZXlmcmFtZURhdGEqIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjphbGxvYygpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTE1vdGlvbktleWZyYW1lRGF0YSkpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhKiBNVEw6Ok1vdGlvbktl
eWZyYW1lRGF0YTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpN
b3Rpb25LZXlmcmFtZURhdGE+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXIKK19NVExfSU5M
SU5FIE1UTDo6QnVmZmVyKiBNVEw6Ok1vdGlvbktleWZyYW1lRGF0YTo6YnVmZmVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpNb3Rp
b25LZXlmcmFtZURhdGE6OnNldEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRC
dWZmZXJfKSwgYnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IG9mZnNldAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjpvZmZzZXQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChvZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Ok1vdGlvbktl
eWZyYW1lRGF0YTo6c2V0T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9mZnNldF8pLCBv
ZmZzZXQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBkYXRhCitfTVRMX0lOTElORSBNVEw6Ok1v
dGlvbktleWZyYW1lRGF0YSogTVRMOjpNb3Rpb25LZXlmcmFtZURhdGE6OmRhdGEoKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhKj4oX01U
TF9QUklWQVRFX0NMUyhNVExNb3Rpb25LZXlmcmFtZURhdGEpLCBfTVRMX1BSSVZBVEVfU0VMKGRh
dGEpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NM
UyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
cikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90
aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0
ZXhCdWZmZXJzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnZlcnRleEJ1ZmZlcnMoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodmVydGV4QnVmZmVycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6
OnNldFZlcnRleEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiB2ZXJ0ZXhCdWZmZXJzKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0
ZXhCdWZmZXJzXyksIHZlcnRleEJ1ZmZlcnMpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4U3Ry
aWRlCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVN
b3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6dmVydGV4U3RyaWRlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodmVydGV4U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0
VmVydGV4U3RyaWRlKE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdHJpZGUpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFN0cmlkZV8p
LCB2ZXJ0ZXhTdHJpZGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhCdWZmZXIKK19NVExfSU5M
SU5FIE1UTDo6QnVmZmVyKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xl
R2VvbWV0cnlEZXNjcmlwdG9yOjppbmRleEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlu
ZGV4QnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0SW5kZXhCdWZmZXIoY29u
c3QgTVRMOjpCdWZmZXIqIGluZGV4QnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleEJ1ZmZlcl8pLCBpbmRleEJ1ZmZl
cik7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleEJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRy
eURlc2NyaXB0b3I6OmluZGV4QnVmZmVyT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5k
ZXhCdWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJbmRleEJ1ZmZl
ck9mZnNldChOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGV4QnVmZmVyT2Zm
c2V0XyksIGluZGV4QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4VHlwZQor
X01UTF9JTkxJTkUgTVRMOjpJbmRleFR5cGUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rp
b25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5kZXhUeXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGV4VHlwZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChpbmRleFR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJbmRleFR5
cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleFR5cGVfKSwgaW5kZXhUeXBlKTsK
K30KKworLy8gcHJvcGVydHk6IHRyaWFuZ2xlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlw
dG9yOjp0cmlhbmdsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHJpYW5nbGVDb3VudCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9u
VHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRlZ2Vy
IHRyaWFuZ2xlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFRyaWFuZ2xlQ291bnRfKSwgdHJpYW5nbGVDb3VudCk7Cit9CisK
Ky8vIHN0YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmRlc2NyaXB0
b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVf
Q0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlw
dG9yKSwgX01UTF9QUklWQVRFX1NFTChkZXNjcmlwdG9yKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJv
dW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1v
dGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRp
bmdCb3hHZW9tZXRyeURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQWNjZWxlcmF0aW9u
U3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlv
bkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5k
aW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdC
b3hCdWZmZXJzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94QnVmZmVy
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChib3VuZGluZ0JveEJ1ZmZlcnMpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiBi
b3VuZGluZ0JveEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyc18pLCBib3VuZGluZ0JveEJ1
ZmZlcnMpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hTdHJpZGUKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94
R2VvbWV0cnlEZXNjcmlwdG9yOjpib3VuZGluZ0JveFN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGJvdW5kaW5nQm94U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0
Qm91bmRpbmdCb3hTdHJpZGUoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94U3RyaWRlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3Vu
ZGluZ0JveFN0cmlkZV8pLCBib3VuZGluZ0JveFN0cmlkZSk7Cit9CisKKy8vIHByb3BlcnR5OiBi
b3VuZGluZ0JveENvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdC
b3hDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJvdW5kaW5nQm94Q291bnQpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5n
Qm94R2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveENvdW50KE5TOjpVSW50ZWdlciBi
b3VuZGluZ0JveENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRCb3VuZGluZ0JveENvdW50XyksIGJvdW5kaW5nQm94Q291bnQp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlw
dG9yOjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9y
Kj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGlu
Z0JveEdlb21ldHJ5RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3JpcHRvcikpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpJbnN0YW5jZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTEluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcikpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJl
RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpJ
bnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBN
VEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5zdGFuY2VEZXNj
cmlwdG9yQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yQnVm
ZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0
cnVjdHVyZURlc2NyaXB0b3I6OnNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcihjb25zdCBNVEw6
OkJ1ZmZlciogaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbnN0YW5jZURlc2NyaXB0b3JC
dWZmZXJfKSwgaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IGlu
c3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbnN0YW5jZURlc2Ny
aXB0b3JCdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnN0YW5jZURlc2NyaXB0
b3JCdWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNj
ZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVy
T2Zmc2V0KE5TOjpVSW50ZWdlciBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldElu
c3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldF8pLCBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJP
ZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlCitfTVRM
X0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3I6Omluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRJbnN0YW5jZURlc2Ny
aXB0b3JTdHJpZGUoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5z
dGFuY2VEZXNjcmlwdG9yU3RyaWRlXyksIGluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpbnN0YW5jZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Omluc3RhbmNlQ291bnQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChpbnN0YW5jZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldElu
c3RhbmNlQ291bnQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlQ291bnRf
KSwgaW5zdGFuY2VDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnN0YW5jZWRBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6SW5zdGFuY2VBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJl
RGVzY3JpcHRvcjo6c2V0SW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcyhjb25zdCBOUzo6
QXJyYXkqIGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlZEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZXNfKSwgaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcyk7Cit9
CisKKy8vIHByb3BlcnR5OiBpbnN0YW5jZURlc2NyaXB0b3JUeXBlCitfTVRMX0lOTElORSBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGUgTVRMOjpJbnN0YW5j
ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Omluc3RhbmNlRGVzY3JpcHRvclR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NF
TChpbnN0YW5jZURlc2NyaXB0b3JUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJ
bnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldEluc3RhbmNlRGVzY3Jp
cHRvclR5cGUoTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBl
IGluc3RhbmNlRGVzY3JpcHRvclR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvclR5cGVfKSwgaW5z
dGFuY2VEZXNjcmlwdG9yVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25UcmFuc2Zvcm1C
dWZmZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uVHJhbnNmb3JtQnVmZmVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobW90aW9uVHJhbnNmb3JtQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1vdGlvblRy
YW5zZm9ybUJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogbW90aW9uVHJhbnNmb3JtQnVmZmVyKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXJfKSwgbW90aW9uVHJhbnNmb3JtQnVmZmVyKTsKK30KKwor
Ly8gcHJvcGVydHk6IG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpt
b3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25U
cmFuc2Zvcm1CdWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3Rh
bmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9uVHJhbnNmb3JtQnVm
ZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBtb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1v
dGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldF8pLCBtb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQp
OworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uVHJhbnNmb3JtQ291bnQKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6
bW90aW9uVHJhbnNmb3JtQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25UcmFuc2Zv
cm1Db3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25UcmFuc2Zvcm1Db3VudChOUzo6VUludGVn
ZXIgbW90aW9uVHJhbnNmb3JtQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvblRyYW5zZm9ybUNvdW50XyksIG1vdGlv
blRyYW5zZm9ybUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgorX01U
TF9JTkxJTkUgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1U
TDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Okluc3RhbmNlQWNjZWxlcmF0
aW9uU3RydWN0dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMSW5zdGFuY2VBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChkZXNjcmlwdG9y
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBzaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzaXpl
KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRF
bmNvZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZmY0YzljOGJkMWVkNDI4YTQzZjdlZjJlMTZjNjkyOGMx
NTQ5Y2MzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcApAQCAtMCww
ICsxLDE0NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBw
CisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNp
bmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5ocHA+CisKKyNpbmNsdWRlICJNVExBcmd1bWVudC5ocHAiCisjaW5jbHVkZSAiTVRMQ29tbWFu
ZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTEhlYXAuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291
cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJl
Q29tbWFuZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFjY2VsZXJhdGlvblN0cnVj
dHVyZUNvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rlcj4KK3sKK3B1YmxpYzoKKyAgICB2b2lk
IGJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBjbGFzcyBCdWZmZXIqIHNjcmF0Y2hC
dWZmZXIsIE5TOjpVSW50ZWdlciBzY3JhdGNoQnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgcmVm
aXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJl
KiBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0
cnVjdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0
cnVjdHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEJ1
ZmZlciogc2NyYXRjaEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNjcmF0Y2hCdWZmZXJPZmZzZXQpOwor
CisgICAgdm9pZCBjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJh
dGlvblN0cnVjdHVyZSogc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBjbGFzcyBB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0dXJlKTsK
KworICAgIHZvaWQgd3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplKGNvbnN0
IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25z
dCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCk7CisKKyAgICB2b2lk
IHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZShjb25zdCBjbGFzcyBBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgY2xhc3MgQnVm
ZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE1UTDo6RGF0YVR5cGUgc2l6ZURhdGFU
eXBlKTsKKworICAgIHZvaWQgY29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29u
c3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1
cmUsIGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogZGVzdGluYXRpb25BY2NlbGVy
YXRpb25TdHJ1Y3R1cmUpOworCisgICAgdm9pZCB1cGRhdGVGZW5jZShjb25zdCBjbGFzcyBGZW5j
ZSogZmVuY2UpOworCisgICAgdm9pZCB3YWl0Rm9yRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZl
bmNlKTsKKworICAgIHZvaWQgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3VyY2UqIHJlc291
cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCB1c2VSZXNvdXJjZXMo
TVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZXNv
dXJjZVVzYWdlIHVzYWdlKTsKKworICAgIHZvaWQgdXNlSGVhcChjb25zdCBjbGFzcyBIZWFwKiBo
ZWFwKTsKKworICAgIHZvaWQgdXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVn
ZXIgY291bnQpOworCisgICAgdm9pZCBzYW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IGNsYXNz
IENvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUlu
ZGV4LCBib29sIGJhcnJpZXIpOworfTsKKworfQorCisvLyBtZXRob2Q6IGJ1aWxkQWNjZWxlcmF0
aW9uU3RydWN0dXJlOmRlc2NyaXB0b3I6c2NyYXRjaEJ1ZmZlcjpzY3JhdGNoQnVmZmVyT2Zmc2V0
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNv
ZGVyOjpidWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IE1UTDo6QnVmZmVyKiBzY3JhdGNo
QnVmZmVyLCBOUzo6VUludGVnZXIgc2NyYXRjaEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVpbGRBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVfZGVzY3JpcHRvcl9zY3JhdGNoQnVmZmVyX3NjcmF0Y2hCdWZmZXJPZmZzZXRf
KSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBkZXNjcmlwdG9yLCBzY3JhdGNoQnVmZmVyLCBzY3Jh
dGNoQnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiByZWZpdEFjY2VsZXJhdGlvblN0cnVj
dHVyZTpkZXNjcmlwdG9yOmRlc3RpbmF0aW9uOnNjcmF0Y2hCdWZmZXI6c2NyYXRjaEJ1ZmZlck9m
ZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5k
RW5jb2Rlcjo6cmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0
IE1UTDo6QnVmZmVyKiBzY3JhdGNoQnVmZmVyLCBOUzo6VUludGVnZXIgc2NyYXRjaEJ1ZmZlck9m
ZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwocmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfZGVzY3JpcHRvcl9kZXN0aW5hdGlvbl9z
Y3JhdGNoQnVmZmVyX3NjcmF0Y2hCdWZmZXJPZmZzZXRfKSwgc291cmNlQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlLCBkZXNjcmlwdG9yLCBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSwgc2Ny
YXRjaEJ1ZmZlciwgc2NyYXRjaEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogY29weUFj
Y2VsZXJhdGlvblN0cnVjdHVyZTp0b0FjY2VsZXJhdGlvblN0cnVjdHVyZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6Y29weUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogc291cmNl
QWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSog
ZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVfdG9BY2NlbGVyYXRpb25TdHJ1Y3R1cmVfKSwgc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJl
LCBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSk7Cit9CisKKy8vIG1ldGhvZDogd3Jp
dGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6
d3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplKGNvbnN0IE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1UTDo6QnVmZmVy
KiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9u
U3RydWN0dXJlU2l6ZV90b0J1ZmZlcl9vZmZzZXRfKSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBi
dWZmZXIsIG9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogd3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDpzaXplRGF0YVR5cGU6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OndyaXRlQ29t
cGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVy
LCBOUzo6VUludGVnZXIgb2Zmc2V0LCBNVEw6OkRhdGFUeXBlIHNpemVEYXRhVHlwZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod3JpdGVD
b21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplX3RvQnVmZmVyX29mZnNldF9zaXplRGF0
YVR5cGVfKSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBidWZmZXIsIG9mZnNldCwgc2l6ZURhdGFU
eXBlKTsKK30KKworLy8gbWV0aG9kOiBjb3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlvblN0cnVjdHVy
ZTp0b0FjY2VsZXJhdGlvblN0cnVjdHVyZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6Y29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25T
dHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJh
dGlvblN0cnVjdHVyZSwgY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGRlc3RpbmF0
aW9uQWNjZWxlcmF0aW9uU3RydWN0dXJlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlvblN0cnVj
dHVyZV90b0FjY2VsZXJhdGlvblN0cnVjdHVyZV8pLCBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1
cmUsIGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0dXJlKTsKK30KKworLy8gbWV0aG9kOiB1
cGRhdGVGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVD
b21tYW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVwZGF0
ZUZlbmNlXyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB3YWl0Rm9yRmVuY2U6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OndhaXRG
b3JGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2FpdEZvckZlbmNlXyksIGZlbmNlKTsK
K30KKworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZTp1c2FnZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3VyY2UoY29uc3Qg
TVRMOjpSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVz
b3VyY2VfdXNhZ2VfKSwgcmVzb3VyY2UsIHVzYWdlKTsKK30KKworLy8gbWV0aG9kOiB1c2VSZXNv
dXJjZXM6Y291bnQ6dXNhZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJj
ZXNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJl
c291cmNlc19jb3VudF91c2FnZV8pLCByZXNvdXJjZXMsIGNvdW50LCB1c2FnZSk7Cit9CisKKy8v
IG1ldGhvZDogdXNlSGVhcDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcChjb25zdCBNVEw6OkhlYXAqIGhlYXApCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhl
YXBfKSwgaGVhcCk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcHM6Y291bnQ6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OnVzZUhlYXBz
KE1UTDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwc19jb3VudF8p
LCBoZWFwcywgY291bnQpOworfQorCisvLyBtZXRob2Q6IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6
YXRTYW1wbGVJbmRleDp3aXRoQmFycmllcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6c2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25z
dCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNh
bXBsZUluZGV4LCBib29sIGJhcnJpZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50ZXJzSW5CdWZmZXJfYXRTYW1wbGVJ
bmRleF93aXRoQmFycmllcl8pLCBzYW1wbGVCdWZmZXIsIHNhbXBsZUluZGV4LCBiYXJyaWVyKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJlNzY3ZGM5MTVjYzFiYjkwYzQxOGFiNDA3ODAyYjUwZDljMTU3YjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9u
U3RydWN0dXJlVHlwZXMuaHBwCkBAIC0wLDAgKzEsMTY5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVUeXBlcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAi
CisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRPdXRw
dXREZXNjcmlwdG9yLmhwcCIKKworI2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHAi
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1l
c3BhY2UgTVRMCit7CitzdHJ1Y3QgUGFja2VkRmxvYXQzCit7CisgICAgUGFja2VkRmxvYXQzKCk7
CisgICAgUGFja2VkRmxvYXQzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOworCisgICAgZmxv
YXQmIG9wZXJhdG9yW10oaW50IGlkeCk7CisgICAgZmxvYXQgIG9wZXJhdG9yW10oaW50IGlkeCkg
Y29uc3Q7CisKKyAgICB1bmlvbgorICAgIHsKKyAgICAgICAgc3RydWN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZsb2F0IHg7CisgICAgICAgICAgICBmbG9hdCB5OworICAgICAgICAgICAgZmxv
YXQgejsKKyAgICAgICAgfTsKKworICAgICAgICBmbG9hdCBlbGVtZW50c1szXTsKKyAgICB9Owor
fSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFBhY2tlZEZsb2F0NHgzCit7CisgICAgUGFja2VkRmxv
YXQ0eDMoKTsKKyAgICBQYWNrZWRGbG9hdDR4Myhjb25zdCBQYWNrZWRGbG9hdDMmIGNvbDAsIGNv
bnN0IFBhY2tlZEZsb2F0MyYgY29sMSwgY29uc3QgUGFja2VkRmxvYXQzJiBjb2wyLCBjb25zdCBQ
YWNrZWRGbG9hdDMmIGNvbDMpOworCisgICAgUGFja2VkRmxvYXQzJiAgICAgICBvcGVyYXRvcltd
KGludCBpZHgpOworICAgIGNvbnN0IFBhY2tlZEZsb2F0MyYgb3BlcmF0b3JbXShpbnQgaWR4KSBj
b25zdDsKKworICAgIFBhY2tlZEZsb2F0MyAgICAgICAgY29sdW1uc1s0XTsKK30gX01UTF9QQUNL
RUQ7CisKK3N0cnVjdCBBeGlzQWxpZ25lZEJvdW5kaW5nQm94Cit7CisgICAgQXhpc0FsaWduZWRC
b3VuZGluZ0JveCgpOworICAgIEF4aXNBbGlnbmVkQm91bmRpbmdCb3goUGFja2VkRmxvYXQzIHAp
OworICAgIEF4aXNBbGlnbmVkQm91bmRpbmdCb3goUGFja2VkRmxvYXQzIG1pbiwgUGFja2VkRmxv
YXQzIG1heCk7CisKKyAgICBQYWNrZWRGbG9hdDMgbWluOworICAgIFBhY2tlZEZsb2F0MyBtYXg7
Cit9IF9NVExfUEFDS0VEOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpQYWNrZWRGbG9hdDM6OlBhY2tlZEZsb2F0
MygpCisgICAgOiB4KDAuMGYpCisgICAgLCB5KDAuMGYpCisgICAgLCB6KDAuMGYpCit7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lO
TElORSBNVEw6OlBhY2tlZEZsb2F0Mzo6UGFja2VkRmxvYXQzKGZsb2F0IF94LCBmbG9hdCBfeSwg
ZmxvYXQgX3opCisgICAgOiB4KF94KQorICAgICwgeShfeSkKKyAgICAsIHooX3opCit7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lO
TElORSBmbG9hdCYgTVRMOjpQYWNrZWRGbG9hdDM6Om9wZXJhdG9yW10oaW50IGlkeCkKK3sKKyAg
ICByZXR1cm4gZWxlbWVudHNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIGZsb2F0IE1UTDo6UGFja2VkRmxvYXQz
OjpvcGVyYXRvcltdKGludCBpZHgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVsZW1lbnRzW2lkeF07
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TVRMX0lOTElORSBNVEw6OlBhY2tlZEZsb2F0NHgzOjpQYWNrZWRGbG9hdDR4MygpCit7CisgICAg
Y29sdW1uc1swXSA9IFBhY2tlZEZsb2F0MygwLjBmLCAwLjBmLCAwLjBmKTsKKyAgICBjb2x1bW5z
WzFdID0gUGFja2VkRmxvYXQzKDAuMGYsIDAuMGYsIDAuMGYpOworICAgIGNvbHVtbnNbMl0gPSBQ
YWNrZWRGbG9hdDMoMC4wZiwgMC4wZiwgMC4wZik7CisgICAgY29sdW1uc1szXSA9IFBhY2tlZEZs
b2F0MygwLjBmLCAwLjBmLCAwLjBmKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6UGFja2VkRmxvYXQ0eDM6OlBh
Y2tlZEZsb2F0NHgzKGNvbnN0IFBhY2tlZEZsb2F0MyYgY29sMCwgY29uc3QgUGFja2VkRmxvYXQz
JiBjb2wxLCBjb25zdCBQYWNrZWRGbG9hdDMmIGNvbDIsIGNvbnN0IFBhY2tlZEZsb2F0MyYgY29s
MykKK3sKKyAgICBjb2x1bW5zWzBdID0gY29sMDsKKyAgICBjb2x1bW5zWzFdID0gY29sMTsKKyAg
ICBjb2x1bW5zWzJdID0gY29sMjsKKyAgICBjb2x1bW5zWzNdID0gY29sMzsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1U
TDo6UGFja2VkRmxvYXQzJiBNVEw6OlBhY2tlZEZsb2F0NHgzOjpvcGVyYXRvcltdKGludCBpZHgp
Cit7CisgICAgcmV0dXJuIGNvbHVtbnNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIGNvbnN0IE1UTDo6UGFja2Vk
RmxvYXQzJiBNVEw6OlBhY2tlZEZsb2F0NHgzOjpvcGVyYXRvcltdKGludCBpZHgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGNvbHVtbnNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6QXhpc0FsaWduZWRCb3Vu
ZGluZ0JveDo6QXhpc0FsaWduZWRCb3VuZGluZ0JveCgpCisgICAgOiBtaW4oSU5GSU5JVFksIElO
RklOSVRZLCBJTkZJTklUWSkKKyAgICAsIG1heCgtSU5GSU5JVFksIC1JTkZJTklUWSwgLUlORklO
SVRZKQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX01UTF9JTkxJTkUgTVRMOjpBeGlzQWxpZ25lZEJvdW5kaW5nQm94OjpBeGlzQWxpZ25l
ZEJvdW5kaW5nQm94KFBhY2tlZEZsb2F0MyBwKQorICAgIDogbWluKHApCisgICAgLCBtYXgocCkK
K3sKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19NVExfSU5MSU5FIE1UTDo6QXhpc0FsaWduZWRCb3VuZGluZ0JveDo6QXhpc0FsaWduZWRCb3Vu
ZGluZ0JveChQYWNrZWRGbG9hdDMgX21pbiwgUGFja2VkRmxvYXQzIF9tYXgpCisgICAgOiBtaW4o
X21pbikKKyAgICAsIG1heChfbWF4KQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudC5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNTdmZTA4MDI4ZTIwMDA3
MzRmMjIyZDI1ODA0YmI4MmM2YTdmY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwCkBAIC0wLDAgKzEsNjU1IEBA
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBN
ZXRhbC9NVExBcmd1bWVudC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExI
ZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIK
KyNpbmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgRGF0YVR5cGUpIHsKKyAgICBEYXRhVHlwZU5vbmUgPSAwLAorICAgIERh
dGFUeXBlU3RydWN0ID0gMSwKKyAgICBEYXRhVHlwZUFycmF5ID0gMiwKKyAgICBEYXRhVHlwZUZs
b2F0ID0gMywKKyAgICBEYXRhVHlwZUZsb2F0MiA9IDQsCisgICAgRGF0YVR5cGVGbG9hdDMgPSA1
LAorICAgIERhdGFUeXBlRmxvYXQ0ID0gNiwKKyAgICBEYXRhVHlwZUZsb2F0MngyID0gNywKKyAg
ICBEYXRhVHlwZUZsb2F0MngzID0gOCwKKyAgICBEYXRhVHlwZUZsb2F0Mng0ID0gOSwKKyAgICBE
YXRhVHlwZUZsb2F0M3gyID0gMTAsCisgICAgRGF0YVR5cGVGbG9hdDN4MyA9IDExLAorICAgIERh
dGFUeXBlRmxvYXQzeDQgPSAxMiwKKyAgICBEYXRhVHlwZUZsb2F0NHgyID0gMTMsCisgICAgRGF0
YVR5cGVGbG9hdDR4MyA9IDE0LAorICAgIERhdGFUeXBlRmxvYXQ0eDQgPSAxNSwKKyAgICBEYXRh
VHlwZUhhbGYgPSAxNiwKKyAgICBEYXRhVHlwZUhhbGYyID0gMTcsCisgICAgRGF0YVR5cGVIYWxm
MyA9IDE4LAorICAgIERhdGFUeXBlSGFsZjQgPSAxOSwKKyAgICBEYXRhVHlwZUhhbGYyeDIgPSAy
MCwKKyAgICBEYXRhVHlwZUhhbGYyeDMgPSAyMSwKKyAgICBEYXRhVHlwZUhhbGYyeDQgPSAyMiwK
KyAgICBEYXRhVHlwZUhhbGYzeDIgPSAyMywKKyAgICBEYXRhVHlwZUhhbGYzeDMgPSAyNCwKKyAg
ICBEYXRhVHlwZUhhbGYzeDQgPSAyNSwKKyAgICBEYXRhVHlwZUhhbGY0eDIgPSAyNiwKKyAgICBE
YXRhVHlwZUhhbGY0eDMgPSAyNywKKyAgICBEYXRhVHlwZUhhbGY0eDQgPSAyOCwKKyAgICBEYXRh
VHlwZUludCA9IDI5LAorICAgIERhdGFUeXBlSW50MiA9IDMwLAorICAgIERhdGFUeXBlSW50MyA9
IDMxLAorICAgIERhdGFUeXBlSW50NCA9IDMyLAorICAgIERhdGFUeXBlVUludCA9IDMzLAorICAg
IERhdGFUeXBlVUludDIgPSAzNCwKKyAgICBEYXRhVHlwZVVJbnQzID0gMzUsCisgICAgRGF0YVR5
cGVVSW50NCA9IDM2LAorICAgIERhdGFUeXBlU2hvcnQgPSAzNywKKyAgICBEYXRhVHlwZVNob3J0
MiA9IDM4LAorICAgIERhdGFUeXBlU2hvcnQzID0gMzksCisgICAgRGF0YVR5cGVTaG9ydDQgPSA0
MCwKKyAgICBEYXRhVHlwZVVTaG9ydCA9IDQxLAorICAgIERhdGFUeXBlVVNob3J0MiA9IDQyLAor
ICAgIERhdGFUeXBlVVNob3J0MyA9IDQzLAorICAgIERhdGFUeXBlVVNob3J0NCA9IDQ0LAorICAg
IERhdGFUeXBlQ2hhciA9IDQ1LAorICAgIERhdGFUeXBlQ2hhcjIgPSA0NiwKKyAgICBEYXRhVHlw
ZUNoYXIzID0gNDcsCisgICAgRGF0YVR5cGVDaGFyNCA9IDQ4LAorICAgIERhdGFUeXBlVUNoYXIg
PSA0OSwKKyAgICBEYXRhVHlwZVVDaGFyMiA9IDUwLAorICAgIERhdGFUeXBlVUNoYXIzID0gNTEs
CisgICAgRGF0YVR5cGVVQ2hhcjQgPSA1MiwKKyAgICBEYXRhVHlwZUJvb2wgPSA1MywKKyAgICBE
YXRhVHlwZUJvb2wyID0gNTQsCisgICAgRGF0YVR5cGVCb29sMyA9IDU1LAorICAgIERhdGFUeXBl
Qm9vbDQgPSA1NiwKKyAgICBEYXRhVHlwZVRleHR1cmUgPSA1OCwKKyAgICBEYXRhVHlwZVNhbXBs
ZXIgPSA1OSwKKyAgICBEYXRhVHlwZVBvaW50ZXIgPSA2MCwKKyAgICBEYXRhVHlwZVI4VW5vcm0g
PSA2MiwKKyAgICBEYXRhVHlwZVI4U25vcm0gPSA2MywKKyAgICBEYXRhVHlwZVIxNlVub3JtID0g
NjQsCisgICAgRGF0YVR5cGVSMTZTbm9ybSA9IDY1LAorICAgIERhdGFUeXBlUkc4VW5vcm0gPSA2
NiwKKyAgICBEYXRhVHlwZVJHOFNub3JtID0gNjcsCisgICAgRGF0YVR5cGVSRzE2VW5vcm0gPSA2
OCwKKyAgICBEYXRhVHlwZVJHMTZTbm9ybSA9IDY5LAorICAgIERhdGFUeXBlUkdCQThVbm9ybSA9
IDcwLAorICAgIERhdGFUeXBlUkdCQThVbm9ybV9zUkdCID0gNzEsCisgICAgRGF0YVR5cGVSR0JB
OFNub3JtID0gNzIsCisgICAgRGF0YVR5cGVSR0JBMTZVbm9ybSA9IDczLAorICAgIERhdGFUeXBl
UkdCQTE2U25vcm0gPSA3NCwKKyAgICBEYXRhVHlwZVJHQjEwQTJVbm9ybSA9IDc1LAorICAgIERh
dGFUeXBlUkcxMUIxMEZsb2F0ID0gNzYsCisgICAgRGF0YVR5cGVSR0I5RTVGbG9hdCA9IDc3LAor
ICAgIERhdGFUeXBlUmVuZGVyUGlwZWxpbmUgPSA3OCwKKyAgICBEYXRhVHlwZUNvbXB1dGVQaXBl
bGluZSA9IDc5LAorICAgIERhdGFUeXBlSW5kaXJlY3RDb21tYW5kQnVmZmVyID0gODAsCisgICAg
RGF0YVR5cGVMb25nID0gODEsCisgICAgRGF0YVR5cGVMb25nMiA9IDgyLAorICAgIERhdGFUeXBl
TG9uZzMgPSA4MywKKyAgICBEYXRhVHlwZUxvbmc0ID0gODQsCisgICAgRGF0YVR5cGVVTG9uZyA9
IDg1LAorICAgIERhdGFUeXBlVUxvbmcyID0gODYsCisgICAgRGF0YVR5cGVVTG9uZzMgPSA4NywK
KyAgICBEYXRhVHlwZVVMb25nNCA9IDg4LAorICAgIERhdGFUeXBlVmlzaWJsZUZ1bmN0aW9uVGFi
bGUgPSAxMTUsCisgICAgRGF0YVR5cGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlID0gMTE2LAor
ICAgIERhdGFUeXBlUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlID0gMTE3LAorICAgIERh
dGFUeXBlSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUgPSAxMTgsCit9OworCitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBBcmd1bWVudFR5cGUpIHsKKyAgICBBcmd1bWVudFR5cGVCdWZmZXIg
PSAwLAorICAgIEFyZ3VtZW50VHlwZVRocmVhZGdyb3VwTWVtb3J5ID0gMSwKKyAgICBBcmd1bWVu
dFR5cGVUZXh0dXJlID0gMiwKKyAgICBBcmd1bWVudFR5cGVTYW1wbGVyID0gMywKKyAgICBBcmd1
bWVudFR5cGVJbWFnZWJsb2NrRGF0YSA9IDE2LAorICAgIEFyZ3VtZW50VHlwZUltYWdlYmxvY2sg
PSAxNywKKyAgICBBcmd1bWVudFR5cGVWaXNpYmxlRnVuY3Rpb25UYWJsZSA9IDI0LAorICAgIEFy
Z3VtZW50VHlwZVByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZSA9IDI1LAorICAgIEFyZ3Vt
ZW50VHlwZUluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlID0gMjYsCisgICAgQXJndW1lbnRU
eXBlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSA9IDI3LAorfTsKKworX01UTF9FTlVNKE5TOjpV
SW50ZWdlciwgQXJndW1lbnRBY2Nlc3MpIHsKKyAgICBBcmd1bWVudEFjY2Vzc1JlYWRPbmx5ID0g
MCwKKyAgICBBcmd1bWVudEFjY2Vzc1JlYWRXcml0ZSA9IDEsCisgICAgQXJndW1lbnRBY2Nlc3NX
cml0ZU9ubHkgPSAyLAorfTsKKworY2xhc3MgVHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8
VHlwZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVHlwZSogYWxsb2MoKTsKKworICAg
IGNsYXNzIFR5cGUqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgZGF0
YVR5cGUoKSBjb25zdDsKK307CisKK2NsYXNzIFN0cnVjdE1lbWJlciA6IHB1YmxpYyBOUzo6UmVm
ZXJlbmNpbmc8U3RydWN0TWVtYmVyPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTdHJ1
Y3RNZW1iZXIqICBhbGxvYygpOworCisgICAgY2xhc3MgU3RydWN0TWVtYmVyKiAgICAgICAgIGlu
aXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgb2Zmc2V0KCkgY29uc3Q7CisKKyAgICBN
VEw6OkRhdGFUeXBlICAgICAgICAgICAgICAgZGF0YVR5cGUoKSBjb25zdDsKKworICAgIGNsYXNz
IFN0cnVjdFR5cGUqICAgICAgICAgICBzdHJ1Y3RUeXBlKCk7CisKKyAgICBjbGFzcyBBcnJheVR5
cGUqICAgICAgICAgICAgYXJyYXlUeXBlKCk7CisKKyAgICBjbGFzcyBUZXh0dXJlUmVmZXJlbmNl
VHlwZSogdGV4dHVyZVJlZmVyZW5jZVR5cGUoKTsKKworICAgIGNsYXNzIFBvaW50ZXJUeXBlKiAg
ICAgICAgICBwb2ludGVyVHlwZSgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
IGFyZ3VtZW50SW5kZXgoKSBjb25zdDsKK307CisKK2NsYXNzIFN0cnVjdFR5cGUgOiBwdWJsaWMg
TlM6OlJlZmVyZW5jaW5nPFN0cnVjdFR5cGUsIFR5cGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNsYXNzIFN0cnVjdFR5cGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBTdHJ1Y3RUeXBlKiAgICAg
ICAgaW5pdCgpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgIG1lbWJlcnMoKSBjb25z
dDsKKworICAgIGNsYXNzIFN0cnVjdE1lbWJlciogICAgICBtZW1iZXJCeU5hbWUoY29uc3QgTlM6
OlN0cmluZyogbmFtZSk7Cit9OworCitjbGFzcyBBcnJheVR5cGUgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPEFycmF5VHlwZSwgVHlwZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQXJy
YXlUeXBlKiAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIEFycmF5VHlwZSogICAgICAgICAgICBp
bml0KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgICAgICAgZWxlbWVudFR5cGUoKSBj
b25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBhcnJheUxlbmd0aCgpIGNv
bnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIHN0cmlkZSgpIGNvbnN0Owor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXhTdHJpZGUoKSBj
b25zdDsKKworICAgIGNsYXNzIFN0cnVjdFR5cGUqICAgICAgICAgICBlbGVtZW50U3RydWN0VHlw
ZSgpOworCisgICAgY2xhc3MgQXJyYXlUeXBlKiAgICAgICAgICAgIGVsZW1lbnRBcnJheVR5cGUo
KTsKKworICAgIGNsYXNzIFRleHR1cmVSZWZlcmVuY2VUeXBlKiBlbGVtZW50VGV4dHVyZVJlZmVy
ZW5jZVR5cGUoKTsKKworICAgIGNsYXNzIFBvaW50ZXJUeXBlKiAgICAgICAgICBlbGVtZW50UG9p
bnRlclR5cGUoKTsKK307CisKK2NsYXNzIFBvaW50ZXJUeXBlIDogcHVibGljIE5TOjpSZWZlcmVu
Y2luZzxQb2ludGVyVHlwZSwgVHlwZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUG9p
bnRlclR5cGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBQb2ludGVyVHlwZSogICAgICAgIGluaXQo
KTsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgZWxlbWVudFR5cGUoKSBjb25zdDsK
KworICAgIE1UTDo6QXJndW1lbnRBY2Nlc3MgICAgICAgYWNjZXNzKCkgY29uc3Q7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgIGFsaWdubWVudCgpIGNvbnN0OworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICBkYXRhU2l6ZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAg
ICAgICAgICAgICAgICBlbGVtZW50SXNBcmd1bWVudEJ1ZmZlcigpIGNvbnN0OworCisgICAgY2xh
c3MgU3RydWN0VHlwZSogICAgICAgICBlbGVtZW50U3RydWN0VHlwZSgpOworCisgICAgY2xhc3Mg
QXJyYXlUeXBlKiAgICAgICAgICBlbGVtZW50QXJyYXlUeXBlKCk7Cit9OworCitjbGFzcyBUZXh0
dXJlUmVmZXJlbmNlVHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8VGV4dHVyZVJlZmVyZW5j
ZVR5cGUsIFR5cGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFRleHR1cmVSZWZlcmVu
Y2VUeXBlKiBhbGxvYygpOworCisgICAgY2xhc3MgVGV4dHVyZVJlZmVyZW5jZVR5cGUqICAgICAg
ICBpbml0KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgICAgICAgICAgICAgIHRleHR1
cmVEYXRhVHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpUZXh0dXJlVHlwZSAgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpBcmd1bWVudEFjY2VzcyAgICAg
ICAgICAgICAgICBhY2Nlc3MoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXNEZXB0aFRleHR1cmUoKSBjb25zdDsKK307CisKK2NsYXNzIEFyZ3VtZW50
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxBcmd1bWVudD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgQXJndW1lbnQqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBcmd1bWVudCogICAgICAg
IGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworCisg
ICAgTVRMOjpBcmd1bWVudFR5cGUgICAgICB0eXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OkFyZ3Vt
ZW50QWNjZXNzICAgIGFjY2VzcygpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICBpbmRleCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICBhY3RpdmUoKSBj
b25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgYnVmZmVyQWxpZ25tZW50KCkgY29u
c3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgIGJ1ZmZlckRhdGFTaXplKCkgY29uc3Q7
CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAgICAgIGJ1ZmZlckRhdGFUeXBlKCkgY29uc3Q7CisK
KyAgICBjbGFzcyBTdHJ1Y3RUeXBlKiAgICAgIGJ1ZmZlclN0cnVjdFR5cGUoKSBjb25zdDsKKwor
ICAgIGNsYXNzIFBvaW50ZXJUeXBlKiAgICAgYnVmZmVyUG9pbnRlclR5cGUoKSBjb25zdDsKKwor
ICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgdGhyZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQoKSBj
b25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgdGhyZWFkZ3JvdXBNZW1vcnlEYXRh
U2l6ZSgpIGNvbnN0OworCisgICAgTVRMOjpUZXh0dXJlVHlwZSAgICAgICB0ZXh0dXJlVHlwZSgp
IGNvbnN0OworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAgICB0ZXh0dXJlRGF0YVR5cGUoKSBj
b25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgaXNEZXB0aFRleHR1cmUoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgYXJyYXlMZW5ndGgoKSBjb25zdDsKK307
CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VHlwZSog
TVRMOjpUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6
VHlwZT4oX01UTF9QUklWQVRFX0NMUyhNVExUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAor
X01UTF9JTkxJTkUgTVRMOjpUeXBlKiBNVEw6OlR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0Ojppbml0PE1UTDo6VHlwZT4oKTsKK30KKworLy8gcHJvcGVydHk6IGRhdGFUeXBl
CitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6VHlwZTo6ZGF0YVR5cGUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZGF0YVR5cGUpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MK
K19NVExfSU5MSU5FIE1UTDo6U3RydWN0TWVtYmVyKiBNVEw6OlN0cnVjdE1lbWJlcjo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlN0cnVjdE1lbWJlcj4oX01U
TF9QUklWQVRFX0NMUyhNVExTdHJ1Y3RNZW1iZXIpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OlN0cnVjdE1lbWJlciogTVRMOjpTdHJ1Y3RNZW1iZXI6OmluaXQoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U3RydWN0TWVtYmVyPigpOworfQor
CisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpTdHJ1Y3RN
ZW1iZXI6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVy
dHk6IG9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6U3RydWN0TWVtYmVyOjpv
ZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvZmZzZXQpKTsKK30KKworLy8gcHJvcGVydHk6
IGRhdGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6U3RydWN0TWVtYmVyOjpk
YXRhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpE
YXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChkYXRhVHlwZSkpOworfQorCisvLyBtZXRo
b2Q6IHN0cnVjdFR5cGUKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpTdHJ1Y3RN
ZW1iZXI6OnN0cnVjdFR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6U3RydWN0VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RydWN0VHlwZSkpOworfQor
CisvLyBtZXRob2Q6IGFycmF5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpBcnJheVR5cGUqIE1UTDo6
U3RydWN0TWVtYmVyOjphcnJheVR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6QXJyYXlUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcnJheVR5cGUpKTsK
K30KKworLy8gbWV0aG9kOiB0ZXh0dXJlUmVmZXJlbmNlVHlwZQorX01UTF9JTkxJTkUgTVRMOjpU
ZXh0dXJlUmVmZXJlbmNlVHlwZSogTVRMOjpTdHJ1Y3RNZW1iZXI6OnRleHR1cmVSZWZlcmVuY2VU
eXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVSZWZl
cmVuY2VUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlUmVmZXJlbmNlVHlwZSkp
OworfQorCisvLyBtZXRob2Q6IHBvaW50ZXJUeXBlCitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJU
eXBlKiBNVEw6OlN0cnVjdE1lbWJlcjo6cG9pbnRlclR5cGUoKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6UG9pbnRlclR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHBvaW50ZXJUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhcmd1bWVudEluZGV4CitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpTdHJ1Y3RNZW1iZXI6OmFyZ3VtZW50SW5kZXgoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChhcmd1bWVudEluZGV4KSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlN0cnVjdFR5cGUqIE1UTDo6U3RydWN0VHlwZTo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlN0cnVjdFR5cGU+KF9N
VExfUFJJVkFURV9DTFMoTVRMU3RydWN0VHlwZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpTdHJ1Y3RUeXBlOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlN0cnVjdFR5cGU+KCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBtZW1iZXJzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6U3RydWN0VHlwZTo6
bWVtYmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtZW1iZXJzKSk7Cit9CisKKy8vIG1ldGhvZDog
bWVtYmVyQnlOYW1lOgorX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RNZW1iZXIqIE1UTDo6U3RydWN0
VHlwZTo6bWVtYmVyQnlOYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RNZW1iZXIqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG1lbWJlckJ5TmFtZV8pLCBuYW1lKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxs
b2MKK19NVExfSU5MSU5FIE1UTDo6QXJyYXlUeXBlKiBNVEw6OkFycmF5VHlwZTo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFycmF5VHlwZT4oX01UTF9QUklW
QVRFX0NMUyhNVExBcnJheVR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElO
RSBNVEw6OkFycmF5VHlwZSogTVRMOjpBcnJheVR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0Ojppbml0PE1UTDo6QXJyYXlUeXBlPigpOworfQorCisvLyBwcm9wZXJ0eTogZWxl
bWVudFR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpBcnJheVR5cGU6OmVsZW1l
bnRUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRh
dGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRUeXBlKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBhcnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJyYXlU
eXBlOjphcnJheUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFycmF5TGVuZ3RoKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBzdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFy
cmF5VHlwZTo6c3RyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RyaWRlKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBhcmd1bWVudEluZGV4U3RyaWRlCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpBcnJheVR5cGU6OmFyZ3VtZW50SW5kZXhTdHJpZGUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChhcmd1bWVudEluZGV4U3RyaWRlKSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVudFN0cnVjdFR5
cGUKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSogTVRMOjpBcnJheVR5cGU6OmVsZW1lbnRT
dHJ1Y3RUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0cnVj
dFR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRTdHJ1Y3RUeXBlKSk7Cit9CisK
Ky8vIG1ldGhvZDogZWxlbWVudEFycmF5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpBcnJheVR5cGUq
IE1UTDo6QXJyYXlUeXBlOjplbGVtZW50QXJyYXlUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkFycmF5VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZWxl
bWVudEFycmF5VHlwZSkpOworfQorCisvLyBtZXRob2Q6IGVsZW1lbnRUZXh0dXJlUmVmZXJlbmNl
VHlwZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZSogTVRMOjpBcnJheVR5
cGU6OmVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlwZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoZWxlbWVudFRleHR1cmVSZWZlcmVuY2VUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogZWxl
bWVudFBvaW50ZXJUeXBlCitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJUeXBlKiBNVEw6OkFycmF5
VHlwZTo6ZWxlbWVudFBvaW50ZXJUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlBvaW50ZXJUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50UG9p
bnRlclR5cGUpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6UG9pbnRlclR5cGUqIE1UTDo6UG9pbnRlclR5cGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpQb2ludGVyVHlwZT4oX01UTF9QUklWQVRFX0NMUyhNVExQ
b2ludGVyVHlwZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UG9p
bnRlclR5cGUqIE1UTDo6UG9pbnRlclR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0Ojppbml0PE1UTDo6UG9pbnRlclR5cGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbGVtZW50
VHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OlBvaW50ZXJUeXBlOjplbGVtZW50
VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRh
VHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50VHlwZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogYWNjZXNzCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50QWNjZXNzIE1UTDo6UG9pbnRl
clR5cGU6OmFjY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpBcmd1bWVudEFjY2Vzcz4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nlc3MpKTsKK30K
KworLy8gcHJvcGVydHk6IGFsaWdubWVudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
UG9pbnRlclR5cGU6OmFsaWdubWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsaWdubWVudCkp
OworfQorCisvLyBwcm9wZXJ0eTogZGF0YVNpemUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OlBvaW50ZXJUeXBlOjpkYXRhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRhdGFTaXpl
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBlbGVtZW50SXNBcmd1bWVudEJ1ZmZlcgorX01UTF9JTkxJ
TkUgYm9vbCBNVEw6OlBvaW50ZXJUeXBlOjplbGVtZW50SXNBcmd1bWVudEJ1ZmZlcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChlbGVtZW50SXNBcmd1bWVudEJ1ZmZlcikpOworfQorCisvLyBtZXRob2Q6IGVsZW1l
bnRTdHJ1Y3RUeXBlCitfTVRMX0lOTElORSBNVEw6OlN0cnVjdFR5cGUqIE1UTDo6UG9pbnRlclR5
cGU6OmVsZW1lbnRTdHJ1Y3RUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlN0cnVjdFR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRTdHJ1Y3RU
eXBlKSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVudEFycmF5VHlwZQorX01UTF9JTkxJTkUgTVRM
OjpBcnJheVR5cGUqIE1UTDo6UG9pbnRlclR5cGU6OmVsZW1lbnRBcnJheVR5cGUoKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJyYXlUeXBlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChlbGVtZW50QXJyYXlUeXBlKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlKiBNVEw6OlRleHR1cmVS
ZWZlcmVuY2VUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1U
TDo6VGV4dHVyZVJlZmVyZW5jZVR5cGU+KF9NVExfUFJJVkFURV9DTFMoTVRMVGV4dHVyZVJlZmVy
ZW5jZVR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRleHR1
cmVSZWZlcmVuY2VUeXBlKiBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlPigpOwor
fQorCisvLyBwcm9wZXJ0eTogdGV4dHVyZURhdGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFU
eXBlIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGU6OnRleHR1cmVEYXRhVHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh0ZXh0dXJlRGF0YVR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1
cmVUeXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVUeXBlIE1UTDo6VGV4dHVyZVJlZmVyZW5j
ZVR5cGU6OnRleHR1cmVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlRleHR1cmVUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVUeXBl
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRB
Y2Nlc3MgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6YWNjZXNzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGFjY2VzcykpOworfQorCisvLyBwcm9wZXJ0eTogaXNEZXB0aFRleHR1cmUK
K19NVExfSU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6aXNEZXB0aFRleHR1
cmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaXNEZXB0aFRleHR1cmUpKTsKK30KKworLy8gc3RhdGljIG1ldGhv
ZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnQqIE1UTDo6QXJndW1lbnQ6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBcmd1bWVudD4oX01UTF9Q
UklWQVRFX0NMUyhNVExBcmd1bWVudCkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6QXJndW1lbnQqIE1UTDo6QXJndW1lbnQ6OmluaXQoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0Ojppbml0PE1UTDo6QXJndW1lbnQ+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1l
CitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkFyZ3VtZW50OjpuYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0eXBlCitfTVRMX0lOTElORSBN
VEw6OkFyZ3VtZW50VHlwZSBNVEw6OkFyZ3VtZW50Ojp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50VHlwZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTCh0eXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1U
TDo6QXJndW1lbnRBY2Nlc3MgTVRMOjpBcmd1bWVudDo6YWNjZXNzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGFjY2VzcykpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50OjppbmRleCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluZGV4KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY3RpdmUKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpBcmd1bWVudDo6YWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzQWN0aXZlKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBidWZmZXJBbGlnbm1lbnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OkFyZ3VtZW50OjpidWZmZXJBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXJB
bGlnbm1lbnQpKTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckRhdGFTaXplCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudDo6YnVmZmVyRGF0YVNpemUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChidWZmZXJEYXRhU2l6ZSkpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyRGF0
YVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpBcmd1bWVudDo6YnVmZmVyRGF0
YVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0
YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVyRGF0YVR5cGUpKTsKK30KKworLy8g
cHJvcGVydHk6IGJ1ZmZlclN0cnVjdFR5cGUKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0VHlwZSog
TVRMOjpBcmd1bWVudDo6YnVmZmVyU3RydWN0VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChidWZmZXJTdHJ1Y3RUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJQb2ludGVyVHlw
ZQorX01UTF9JTkxJTkUgTVRMOjpQb2ludGVyVHlwZSogTVRMOjpBcmd1bWVudDo6YnVmZmVyUG9p
bnRlclR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UG9pbnRlclR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlclBvaW50ZXJUeXBlKSk7
Cit9CisKKy8vIHByb3BlcnR5OiB0aHJlYWRncm91cE1lbW9yeUFsaWdubWVudAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6OnRocmVhZGdyb3VwTWVtb3J5QWxpZ25tZW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQpKTsKK30K
KworLy8gcHJvcGVydHk6IHRocmVhZGdyb3VwTWVtb3J5RGF0YVNpemUKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50Ojp0aHJlYWRncm91cE1lbW9yeURhdGFTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwodGhyZWFkZ3JvdXBNZW1vcnlEYXRhU2l6ZSkpOworfQorCisvLyBw
cm9wZXJ0eTogdGV4dHVyZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVR5cGUgTVRMOjpB
cmd1bWVudDo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZVR5
cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVEYXRhVHlwZQorX01UTF9JTkxJTkUgTVRM
OjpEYXRhVHlwZSBNVEw6OkFyZ3VtZW50Ojp0ZXh0dXJlRGF0YVR5cGUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodGV4dHVyZURhdGFUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBpc0RlcHRoVGV4
dHVyZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkFyZ3VtZW50Ojppc0RlcHRoVGV4dHVyZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChpc0RlcHRoVGV4dHVyZSkpOworfQorCisvLyBwcm9wZXJ0eTogYXJyYXlMZW5n
dGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50OjphcnJheUxlbmd0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFycmF5TGVuZ3RoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnRFbmNvZGVyLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudEVuY29kZXIu
aHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBjZWNjN2Q5NTY3NTJjNjMzMWE2MzA3ZGE1MDg5MWE3MWQyYzEwNGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQXJndW1lbnRFbmNvZGVyLmhwcApAQCAtMCwwICsxLDI1MCBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQXJndW1lbnRF
bmNvZGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRn
ZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJN
VExDb21wdXRlUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZl
ci5ocHAiCisjaW5jbHVkZSAiTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiCisjaW5j
bHVkZSAiTVRMUmVuZGVyUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgor
I2luY2x1ZGUgIk1UTFRleHR1cmUuaHBwIgorI2luY2x1ZGUgIk1UTFZpc2libGVGdW5jdGlvblRh
YmxlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQXJndW1lbnRFbmNvZGVyIDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxBcmd1bWVudEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgY2xh
c3MgRGV2aWNlKiAgICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldExh
YmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgZW5jb2RlZExlbmd0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICBh
bGlnbm1lbnQoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0QXJndW1l
bnRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBhcmd1bWVudEJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IG9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEFyZ3VtZW50QnVmZmVy
KGNvbnN0IGNsYXNzIEJ1ZmZlciogYXJndW1lbnRCdWZmZXIsIE5TOjpVSW50ZWdlciBzdGFydE9m
ZnNldCwgTlM6OlVJbnRlZ2VyIGFycmF5RWxlbWVudCk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgc2V0QnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIg
b2Zmc2V0c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICBzZXRUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBp
bmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFRleHR1cmVzKE1UTDo6VGV4
dHVyZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgc2V0U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxl
ciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0
U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJh
bmdlKTsKKworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgY29uc3RhbnREYXRhKE5TOjpVSW50
ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFJlbmRlclBpcGVs
aW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUsIE5TOjpV
SW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFJlbmRlclBp
cGVsaW5lU3RhdGVzKE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVzLCBOUzo6UmFu
Z2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRDb21wdXRlUGlwZWxp
bmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUsIE5TOjpV
SW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldENvbXB1dGVQ
aXBlbGluZVN0YXRlcyhNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZXMsIE5TOjpS
YW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEluZGlyZWN0Q29t
bWFuZEJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29t
bWFuZEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVycyhNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZl
ciogYnVmZmVycywgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgc2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAg
Y2xhc3MgQXJndW1lbnRFbmNvZGVyKiBuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGlu
ZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0VmlzaWJsZUZ1bmN0aW9uVGFi
bGUoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5jdGlvblRhYmxl
LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRW
aXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVG
dW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdl
ciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVzKGNvbnN0IEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7Cit9OworCit9CisKKy8vIHByb3Bl
cnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkFyZ3VtZW50RW5jb2Rl
cjo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpBcmd1bWVudEVuY29kZXI6
OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJl
bCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogZW5jb2RlZExlbmd0aAor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnRFbmNvZGVyOjplbmNvZGVkTGVu
Z3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlZExlbmd0aCkpOworfQorCisvLyBwcm9w
ZXJ0eTogYWxpZ25tZW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudEVu
Y29kZXI6OmFsaWdubWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsaWdubWVudCkpOworfQor
CisvLyBtZXRob2Q6IHNldEFyZ3VtZW50QnVmZmVyOm9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpBcmd1bWVudEVuY29kZXI6OnNldEFyZ3VtZW50QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVy
KiBhcmd1bWVudEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QXJndW1lbnRCdWZmZXJf
b2Zmc2V0XyksIGFyZ3VtZW50QnVmZmVyLCBvZmZzZXQpOworfQorCisvLyBtZXRob2Q6IHNldEFy
Z3VtZW50QnVmZmVyOnN0YXJ0T2Zmc2V0OmFycmF5RWxlbWVudDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpBcmd1bWVudEVuY29kZXI6OnNldEFyZ3VtZW50QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVy
KiBhcmd1bWVudEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHN0YXJ0T2Zmc2V0LCBOUzo6VUludGVnZXIg
YXJyYXlFbGVtZW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRBcmd1bWVudEJ1ZmZlcl9zdGFydE9mZnNldF9hcnJheUVsZW1lbnRf
KSwgYXJndW1lbnRCdWZmZXIsIHN0YXJ0T2Zmc2V0LCBhcnJheUVsZW1lbnQpOworfQorCisvLyBt
ZXRob2Q6IHNldEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
cmd1bWVudEVuY29kZXI6OnNldEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6
VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcl9vZmZzZXRfYXRJ
bmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEJ1ZmZl
cnM6b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNv
ZGVyOjpzZXRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdl
ciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5n
ZV8pLCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGV4dHVy
ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0VGV4
dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VGV4dHVyZV9hdEluZGV4XyksIHRleHR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRU
ZXh0dXJlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVy
OjpzZXRUZXh0dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1cmVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0U2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1l
bnRFbmNvZGVyOjpzZXRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBs
ZXIsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRlX2F0SW5kZXhfKSwgc2FtcGxl
ciwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZXM6d2l0aFJhbmdlOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0U2FtcGxlclN0YXRlcyhN
VEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVy
U3RhdGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IGNv
bnN0YW50RGF0YUF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkKiBNVEw6OkFyZ3VtZW50RW5jb2Rl
cjo6Y29uc3RhbnREYXRhKE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb25zdGFudERhdGFB
dEluZGV4XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRSZW5kZXJQaXBlbGluZVN0YXRl
OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRSZW5k
ZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUs
IE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZV9hdEluZGV4XyksIHBp
cGVsaW5lLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXM6
d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0UmVu
ZGVyUGlwZWxpbmVTdGF0ZXMoTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBwaXBlbGluZXMsIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXNfd2l0aFJhbmdlXyksIHBpcGVs
aW5lcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldENvbXB1dGVQaXBlbGluZVN0YXRlOmF0
SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRDb21wdXRl
UGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZSwg
TlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZV9hdEluZGV4XyksIHBp
cGVsaW5lLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVz
OndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldENv
bXB1dGVQaXBlbGluZVN0YXRlcyhNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZXMs
IE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzX3dpdGhSYW5nZV8pLCBw
aXBlbGluZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRJbmRpcmVjdENvbW1hbmRCdWZm
ZXI6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldElu
ZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5k
aXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGlyZWN0Q29tbWFu
ZEJ1ZmZlcl9hdEluZGV4XyksIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgaW5kZXgpOworfQorCisv
LyBtZXRob2Q6IHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnM6d2l0aFJhbmdlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0SW5kaXJlY3RDb21tYW5kQnVmZmVycyhN
VEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogYnVmZmVycywgTlM6OlJhbmdlIHJhbmdlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJ
bmRpcmVjdENvbW1hbmRCdWZmZXJzX3dpdGhSYW5nZV8pLCBidWZmZXJzLCByYW5nZSk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29u
c3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6
OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRJbmRleF8pLCBhY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVu
Y29kZXJGb3JCdWZmZXJBdEluZGV4OgorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEVuY29kZXIq
IE1UTDo6QXJndW1lbnRFbmNvZGVyOjpuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRFbmNv
ZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBcmd1bWVudEVuY29kZXJGb3JCdWZmZXJB
dEluZGV4XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJs
ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0Vmlz
aWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJs
ZUZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFi
bGVfYXRJbmRleF8pLCB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgaW5kZXgpOworfQorCisvLyBtZXRo
b2Q6IHNldFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRM
OjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJsZUZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5n
ZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhSYW5nZV8pLCB2aXNpYmxlRnVu
Y3Rpb25UYWJsZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVy
OjpzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0SW5kZXhfKSwgaW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29k
ZXI6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJh
bmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoUmFuZ2VfKSwgaW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MTQyZDM3NGMzNWJlMzlkNjY2MmU4MTRiNzcxOWUzNDY4NTJjNWZjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJpbmFyeUFyY2hp
dmUuaHBwCkBAIC0wLDAgKzEsMTM4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcAorLy8KKy8v
IENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1U
TERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAi
TVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgor
CituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBCaW5hcnlBcmNoaXZl
RXJyb3IpIHsKKyAgICBCaW5hcnlBcmNoaXZlRXJyb3JOb25lID0gMCwKKyAgICBCaW5hcnlBcmNo
aXZlRXJyb3JJbnZhbGlkRmlsZSA9IDEsCisgICAgQmluYXJ5QXJjaGl2ZUVycm9yVW5leHBlY3Rl
ZEVsZW1lbnQgPSAyLAorICAgIEJpbmFyeUFyY2hpdmVFcnJvckNvbXBpbGF0aW9uRmFpbHVyZSA9
IDMsCit9OworCitjbGFzcyBCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29w
eWluZzxCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xh
c3MgQmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCaW5hcnlB
cmNoaXZlRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpVUkwqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXJsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRVcmwoY29uc3QgTlM6OlVSTCogdXJsKTsKK307CisKK2Ns
YXNzIEJpbmFyeUFyY2hpdmUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEJpbmFyeUFyY2hpdmU+
Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3Mg
RGV2aWNlKiBkZXZpY2UoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgYWRkQ29tcHV0ZVBp
cGVsaW5lRnVuY3Rpb25zKGNvbnN0IGNsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGJvb2wgICAgICAgICAgYWRkUmVu
ZGVyUGlwZWxpbmVGdW5jdGlvbnMoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29sICAgICAgICAgIGFk
ZFRpbGVSZW5kZXJQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBjbGFzcyBUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29s
ICAgICAgICAgIHNlcmlhbGl6ZVRvVVJMKGNvbnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiog
ZXJyb3IpOworCisgICAgYm9vbCAgICAgICAgICBhZGRGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5j
dGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IGNsYXNzIExpYnJhcnkqIGxpYnJhcnks
IE5TOjpFcnJvcioqIGVycm9yKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MK
K19NVExfSU5MSU5FIE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIE1UTDo6QmluYXJ5QXJj
aGl2ZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExCaW5hcnlB
cmNoaXZlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3I6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QmluYXJ5QXJjaGl2
ZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB1cmwKK19NVExfSU5MSU5FIE5TOjpV
UkwqIE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3I6OnVybCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVSTCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
dXJsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRv
cjo6c2V0VXJsKGNvbnN0IE5TOjpVUkwqIHVybCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VXJsXyksIHVybCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpCaW5hcnlBcmNoaXZl
OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0
cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkJpbmFyeUFyY2hpdmU6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVs
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5M
SU5FIE1UTDo6RGV2aWNlKiBNVEw6OkJpbmFyeUFyY2hpdmU6OmRldmljZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBtZXRob2Q6IGFkZENvbXB1dGVQaXBlbGluZUZ1
bmN0aW9uc1dpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkJpbmFy
eUFyY2hpdmU6OmFkZENvbXB1dGVQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBNVEw6OkNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
YWRkQ29tcHV0ZVBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3Jp
cHRvciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IGFkZFJlbmRlclBpcGVsaW5lRnVuY3Rpb25z
V2l0aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBib29sIE1UTDo6QmluYXJ5QXJjaGl2
ZTo6YWRkUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnMoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRkUmVuZGVy
UGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJv
cik7Cit9CisKKy8vIG1ldGhvZDogYWRkVGlsZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERl
c2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6YWRk
VGlsZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zKGNvbnN0IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGRUaWxl
UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9y
LCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogc2VyaWFsaXplVG9VUkw6ZXJyb3I6CitfTVRMX0lO
TElORSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6c2VyaWFsaXplVG9VUkwoY29uc3QgTlM6OlVS
TCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNlcmlhbGl6ZVRvVVJMX2Vycm9yXyks
IHVybCwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IGFkZEZ1bmN0aW9uV2l0aERlc2NyaXB0b3I6
bGlicmFyeTplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpCaW5hcnlBcmNoaXZlOjphZGRG
dW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3Qg
TVRMOjpMaWJyYXJ5KiBsaWJyYXJ5LCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFkZEZ1bmN0
aW9uV2l0aERlc2NyaXB0b3JfbGlicmFyeV9lcnJvcl8pLCBkZXNjcmlwdG9yLCBsaWJyYXJ5LCBl
cnJvcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhODZiNmE5
NTAxYzY4NTNmMGM4ZjVhMGJiMGFiN2ViNjAzNzdjMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhw
cApAQCAtMCwwICsxLDI0NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8v
IENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1U
TERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAi
TVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgor
CisjaW5jbHVkZSAiTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21t
YW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRM
Cit7CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBCbGl0T3B0aW9uKSB7CisgICAgQmxpdE9w
dGlvbk5vbmUgPSAwLAorICAgIEJsaXRPcHRpb25EZXB0aEZyb21EZXB0aFN0ZW5jaWwgPSAxLAor
ICAgIEJsaXRPcHRpb25TdGVuY2lsRnJvbURlcHRoU3RlbmNpbCA9IDIsCisgICAgQmxpdE9wdGlv
blJvd0xpbmVhclBWUlRDID0gNCwKK307CisKK2NsYXNzIEJsaXRDb21tYW5kRW5jb2RlciA6IHB1
YmxpYyBOUzo6UmVmZXJlbmNpbmc8QmxpdENvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rlcj4K
K3sKK3B1YmxpYzoKKyAgICB2b2lkIHN5bmNocm9uaXplUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVz
b3VyY2UqIHJlc291cmNlKTsKKworICAgIHZvaWQgc3luY2hyb25pemVUZXh0dXJlKGNvbnN0IGNs
YXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6OlVJbnRlZ2VyIGxl
dmVsKTsKKworICAgIHZvaWQgY29weUZyb21UZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNv
dXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJj
ZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBj
b25zdCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0
aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRMOjpPcmlnaW4g
ZGVzdGluYXRpb25PcmlnaW4pOworCisgICAgdm9pZCBjb3B5RnJvbUJ1ZmZlcihjb25zdCBjbGFz
cyBCdWZmZXIqIHNvdXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgTlM6OlVJ
bnRlZ2VyIHNvdXJjZUJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJJbWFn
ZSwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IGNsYXNzIFRleHR1cmUqIGRlc3RpbmF0aW9u
VGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0
aW5hdGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBkZXN0aW5hdGlvbk9yaWdpbik7CisKKyAgICB2b2lk
IGNvcHlGcm9tQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUlu
dGVnZXIgc291cmNlT2Zmc2V0LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJSb3csIE5TOjpV
SW50ZWdlciBzb3VyY2VCeXRlc1BlckltYWdlLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3Qg
Y2xhc3MgVGV4dHVyZSogZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRp
b25TbGljZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3Rp
bmF0aW9uT3JpZ2luLCBNVEw6OkJsaXRPcHRpb24gb3B0aW9ucyk7CisKKyAgICB2b2lkIGNvcHlG
cm9tVGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVn
ZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZlbCwgTVRMOjpPcmlnaW4gc291
cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBkZXN0
aW5hdGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVn
ZXIgZGVzdGluYXRpb25CeXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQ
ZXJJbWFnZSk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJl
KiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBz
b3VyY2VMZXZlbCwgTVRMOjpPcmlnaW4gc291cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6
ZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRl
c3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25CeXRlc1BlclJvdywgTlM6
OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZSwgTVRMOjpCbGl0T3B0aW9uIG9wdGlv
bnMpOworCisgICAgdm9pZCBnZW5lcmF0ZU1pcG1hcHMoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4
dHVyZSk7CisKKyAgICB2b2lkIGZpbGxCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIs
IE5TOjpSYW5nZSByYW5nZSwgdWludDhfdCB2YWx1ZSk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4
dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291
cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZlbCwgY29uc3QgY2xhc3MgVGV4dHVyZSog
ZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGljZSwgTlM6OlVJ
bnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZUNvdW50LCBOUzo6VUlu
dGVnZXIgbGV2ZWxDb3VudCk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4dHVyZShjb25zdCBjbGFz
cyBUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBjb25zdCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlv
blRleHR1cmUpOworCisgICAgdm9pZCBjb3B5RnJvbUJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIq
IHNvdXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgY29uc3QgY2xhc3MgQnVm
ZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBO
Uzo6VUludGVnZXIgc2l6ZSk7CisKKyAgICB2b2lkIHVwZGF0ZUZlbmNlKGNvbnN0IGNsYXNzIEZl
bmNlKiBmZW5jZSk7CisKKyAgICB2b2lkIHdhaXRGb3JGZW5jZShjb25zdCBjbGFzcyBGZW5jZSog
ZmVuY2UpOworCisgICAgdm9pZCBnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnMoY29uc3QgY2xhc3Mg
VGV4dHVyZSogdGV4dHVyZSwgTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbWlwTGV2
ZWwsIE5TOjpVSW50ZWdlciBzbGljZSwgYm9vbCByZXNldENvdW50ZXJzLCBjb25zdCBjbGFzcyBC
dWZmZXIqIGNvdW50ZXJzQnVmZmVyLCBOUzo6VUludGVnZXIgY291bnRlcnNCdWZmZXJPZmZzZXQp
OworCisgICAgdm9pZCByZXNldFRleHR1cmVBY2Nlc3NDb3VudGVycyhjb25zdCBjbGFzcyBUZXh0
dXJlKiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBtaXBMZXZlbCwg
TlM6OlVJbnRlZ2VyIHNsaWNlKTsKKworICAgIHZvaWQgb3B0aW1pemVDb250ZW50c0ZvckdQVUFj
Y2Vzcyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlKTsKKworICAgIHZvaWQgb3B0aW1pemVD
b250ZW50c0ZvckdQVUFjY2Vzcyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUlu
dGVnZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZlbCk7CisKKyAgICB2b2lkIG9wdGltaXplQ29u
dGVudHNGb3JDUFVBY2Nlc3MoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSk7CisKKyAgICB2
b2lkIG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3MoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4
dHVyZSwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBOUzo6VUludGVnZXIgbGV2ZWwpOworCisgICAgdm9p
ZCByZXNldENvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVy
KiBidWZmZXIsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkIGNvcHlJbmRpcmVjdENvbW1h
bmRCdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBzb3VyY2UsIE5TOjpS
YW5nZSBzb3VyY2VSYW5nZSwgY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBkZXN0
aW5hdGlvbiwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uSW5kZXgpOworCisgICAgdm9pZCBvcHRp
bWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZm
ZXIqIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQg
c2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBz
YW1wbGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKTsKKwor
ICAgIHZvaWQgcmVzb2x2ZUNvdW50ZXJzKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIq
IHNhbXBsZUJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGRlc3Rp
bmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZzZXQpOworfTsKKworfQor
CisvLyBtZXRob2Q6IHN5bmNocm9uaXplUmVzb3VyY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QmxpdENvbW1hbmRFbmNvZGVyOjpzeW5jaHJvbml6ZVJlc291cmNlKGNvbnN0IE1UTDo6UmVzb3Vy
Y2UqIHJlc291cmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzeW5jaHJvbml6ZVJlc291cmNlXyksIHJlc291cmNlKTsKK30KKworLy8g
bWV0aG9kOiBzeW5jaHJvbml6ZVRleHR1cmU6c2xpY2U6bGV2ZWw6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpzeW5jaHJvbml6ZVRleHR1cmUoY29uc3QgTVRMOjpU
ZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZlbCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c3luY2hyb25pemVUZXh0dXJlX3NsaWNlX2xldmVsXyksIHRleHR1cmUsIHNsaWNlLCBsZXZlbCk7
Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21UZXh0dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxldmVs
OnNvdXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvVGV4dHVyZTpkZXN0aW5hdGlvblNsaWNlOmRlc3Rp
bmF0aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiBzb3Vy
Y2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VM
ZXZlbCwgTVRMOjpPcmlnaW4gc291cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29u
c3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRMOjpPcmlnaW4gZGVz
dGluYXRpb25PcmlnaW4pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF9z
b3VyY2VPcmlnaW5fc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGljZV9kZXN0aW5h
dGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luXyksIHNvdXJjZVRleHR1cmUsIHNvdXJjZVNsaWNl
LCBzb3VyY2VMZXZlbCwgc291cmNlT3JpZ2luLCBzb3VyY2VTaXplLCBkZXN0aW5hdGlvblRleHR1
cmUsIGRlc3RpbmF0aW9uU2xpY2UsIGRlc3RpbmF0aW9uTGV2ZWwsIGRlc3RpbmF0aW9uT3JpZ2lu
KTsKK30KKworLy8gbWV0aG9kOiBjb3B5RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6c291cmNlQnl0
ZXNQZXJSb3c6c291cmNlQnl0ZXNQZXJJbWFnZTpzb3VyY2VTaXplOnRvVGV4dHVyZTpkZXN0aW5h
dGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbUJ1ZmZlcihjb25zdCBNVEw6
OkJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUludGVnZXIgc291cmNlT2Zmc2V0LCBOUzo6VUlu
dGVnZXIgc291cmNlQnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBzb3VyY2VCeXRlc1BlckltYWdl
LCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRl
eHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGlu
YXRpb25MZXZlbCwgTVRMOjpPcmlnaW4gZGVzdGluYXRpb25PcmlnaW4pCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tQnVmZmVy
X3NvdXJjZU9mZnNldF9zb3VyY2VCeXRlc1BlclJvd19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJj
ZVNpemVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5h
dGlvbk9yaWdpbl8pLCBzb3VyY2VCdWZmZXIsIHNvdXJjZU9mZnNldCwgc291cmNlQnl0ZXNQZXJS
b3csIHNvdXJjZUJ5dGVzUGVySW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RpbmF0aW9uVGV4dHVyZSwg
ZGVzdGluYXRpb25TbGljZSwgZGVzdGluYXRpb25MZXZlbCwgZGVzdGluYXRpb25PcmlnaW4pOwor
fQorCisvLyBtZXRob2Q6IGNvcHlGcm9tQnVmZmVyOnNvdXJjZU9mZnNldDpzb3VyY2VCeXRlc1Bl
clJvdzpzb3VyY2VCeXRlc1BlckltYWdlOnNvdXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9u
U2xpY2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0aW5hdGlvbk9yaWdpbjpvcHRpb25zOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Y29weUZyb21CdWZmZXIoY29uc3Qg
TVRMOjpCdWZmZXIqIHNvdXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgTlM6
OlVJbnRlZ2VyIHNvdXJjZUJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJJ
bWFnZSwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IE1UTDo6VGV4dHVyZSogZGVzdGluYXRp
b25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGljZSwgTlM6OlVJbnRlZ2VyIGRl
c3RpbmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3RpbmF0aW9uT3JpZ2luLCBNVEw6OkJsaXRP
cHRpb24gb3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoY29weUZyb21CdWZmZXJfc291cmNlT2Zmc2V0X3NvdXJjZUJ5dGVzUGVy
Um93X3NvdXJjZUJ5dGVzUGVySW1hZ2Vfc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25T
bGljZV9kZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luX29wdGlvbnNfKSwgc291cmNl
QnVmZmVyLCBzb3VyY2VPZmZzZXQsIHNvdXJjZUJ5dGVzUGVyUm93LCBzb3VyY2VCeXRlc1Blcklt
YWdlLCBzb3VyY2VTaXplLCBkZXN0aW5hdGlvblRleHR1cmUsIGRlc3RpbmF0aW9uU2xpY2UsIGRl
c3RpbmF0aW9uTGV2ZWwsIGRlc3RpbmF0aW9uT3JpZ2luLCBvcHRpb25zKTsKK30KKworLy8gbWV0
aG9kOiBjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291cmNlT3JpZ2lu
OnNvdXJjZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVzdGluYXRpb25CeXRlc1Bl
clJvdzpkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiBzb3Vy
Y2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VM
ZXZlbCwgTVRMOjpPcmlnaW4gc291cmNlT3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29u
c3QgTVRMOjpCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRp
b25PZmZzZXQsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBOUzo6VUludGVn
ZXIgZGVzdGluYXRpb25CeXRlc1BlckltYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vf
c291cmNlTGV2ZWxfc291cmNlT3JpZ2luX3NvdXJjZVNpemVfdG9CdWZmZXJfZGVzdGluYXRpb25P
ZmZzZXRfZGVzdGluYXRpb25CeXRlc1BlclJvd19kZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2VfKSwg
c291cmNlVGV4dHVyZSwgc291cmNlU2xpY2UsIHNvdXJjZUxldmVsLCBzb3VyY2VPcmlnaW4sIHNv
dXJjZVNpemUsIGRlc3RpbmF0aW9uQnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNldCwgZGVzdGluYXRp
b25CeXRlc1BlclJvdywgZGVzdGluYXRpb25CeXRlc1BlckltYWdlKTsKK30KKworLy8gbWV0aG9k
OiBjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291cmNlT3JpZ2luOnNv
dXJjZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVzdGluYXRpb25CeXRlc1BlclJv
dzpkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6b3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tVGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUq
IHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNv
dXJjZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXpl
LCBjb25zdCBNVEw6OkJ1ZmZlciogZGVzdGluYXRpb25CdWZmZXIsIE5TOjpVSW50ZWdlciBkZXN0
aW5hdGlvbk9mZnNldCwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3csIE5TOjpV
SW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2UsIE1UTDo6QmxpdE9wdGlvbiBvcHRpb25z
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChjb3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNlTGV2ZWxfc291cmNlT3JpZ2luX3Nv
dXJjZVNpemVfdG9CdWZmZXJfZGVzdGluYXRpb25PZmZzZXRfZGVzdGluYXRpb25CeXRlc1BlclJv
d19kZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2Vfb3B0aW9uc18pLCBzb3VyY2VUZXh0dXJlLCBzb3Vy
Y2VTbGljZSwgc291cmNlTGV2ZWwsIHNvdXJjZU9yaWdpbiwgc291cmNlU2l6ZSwgZGVzdGluYXRp
b25CdWZmZXIsIGRlc3RpbmF0aW9uT2Zmc2V0LCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBkZXN0
aW5hdGlvbkJ5dGVzUGVySW1hZ2UsIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IGdlbmVyYXRl
TWlwbWFwc0ZvclRleHR1cmU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNv
ZGVyOjpnZW5lcmF0ZU1pcG1hcHMoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChnZW5lcmF0
ZU1pcG1hcHNGb3JUZXh0dXJlXyksIHRleHR1cmUpOworfQorCisvLyBtZXRob2Q6IGZpbGxCdWZm
ZXI6cmFuZ2U6dmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVy
OjpmaWxsQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpSYW5nZSByYW5nZSwg
dWludDhfdCB2YWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZmlsbEJ1ZmZlcl9yYW5nZV92YWx1ZV8pLCBidWZmZXIsIHJhbmdlLCB2
YWx1ZSk7Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21UZXh0dXJlOnNvdXJjZVNsaWNlOnNvdXJj
ZUxldmVsOnRvVGV4dHVyZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6c2xpY2VD
b3VudDpsZXZlbENvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rl
cjo6Y29weUZyb21UZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6
OlVJbnRlZ2VyIHNvdXJjZVNsaWNlLCBOUzo6VUludGVnZXIgc291cmNlTGV2ZWwsIGNvbnN0IE1U
TDo6VGV4dHVyZSogZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25T
bGljZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZUNv
dW50LCBOUzo6VUludGVnZXIgbGV2ZWxDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJjZVNsaWNl
X3NvdXJjZUxldmVsX3RvVGV4dHVyZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxf
c2xpY2VDb3VudF9sZXZlbENvdW50XyksIHNvdXJjZVRleHR1cmUsIHNvdXJjZVNsaWNlLCBzb3Vy
Y2VMZXZlbCwgZGVzdGluYXRpb25UZXh0dXJlLCBkZXN0aW5hdGlvblNsaWNlLCBkZXN0aW5hdGlv
bkxldmVsLCBzbGljZUNvdW50LCBsZXZlbENvdW50KTsKK30KKworLy8gbWV0aG9kOiBjb3B5RnJv
bVRleHR1cmU6dG9UZXh0dXJlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5j
b2Rlcjo6Y29weUZyb21UZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwg
Y29uc3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tVGV4dHVyZV90
b1RleHR1cmVfKSwgc291cmNlVGV4dHVyZSwgZGVzdGluYXRpb25UZXh0dXJlKTsKK30KKworLy8g
bWV0aG9kOiBjb3B5RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6dG9CdWZmZXI6ZGVzdGluYXRpb25P
ZmZzZXQ6c2l6ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNv
cHlGcm9tQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBzb3VyY2VCdWZmZXIsIE5TOjpVSW50ZWdl
ciBzb3VyY2VPZmZzZXQsIGNvbnN0IE1UTDo6QnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6
OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIgc2l6ZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUZyb21C
dWZmZXJfc291cmNlT2Zmc2V0X3RvQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0X3NpemVfKSwgc291
cmNlQnVmZmVyLCBzb3VyY2VPZmZzZXQsIGRlc3RpbmF0aW9uQnVmZmVyLCBkZXN0aW5hdGlvbk9m
ZnNldCwgc2l6ZSk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlRmVuY2U6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjp1cGRhdGVGZW5jZShjb25zdCBNVEw6OkZlbmNl
KiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRob2Q6IHdhaXRGb3JG
ZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OndhaXRGb3JG
ZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2FpdEZvckZlbmNlXyksIGZlbmNlKTsKK30K
KworLy8gbWV0aG9kOiBnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExldmVsOnNs
aWNlOnJlc2V0Q291bnRlcnM6Y291bnRlcnNCdWZmZXI6Y291bnRlcnNCdWZmZXJPZmZzZXQ6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpnZXRUZXh0dXJlQWNjZXNz
Q291bnRlcnMoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24s
IE5TOjpVSW50ZWdlciBtaXBMZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBib29sIHJlc2V0Q291
bnRlcnMsIGNvbnN0IE1UTDo6QnVmZmVyKiBjb3VudGVyc0J1ZmZlciwgTlM6OlVJbnRlZ2VyIGNv
dW50ZXJzQnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnNfcmVnaW9uX21pcExl
dmVsX3NsaWNlX3Jlc2V0Q291bnRlcnNfY291bnRlcnNCdWZmZXJfY291bnRlcnNCdWZmZXJPZmZz
ZXRfKSwgdGV4dHVyZSwgcmVnaW9uLCBtaXBMZXZlbCwgc2xpY2UsIHJlc2V0Q291bnRlcnMsIGNv
dW50ZXJzQnVmZmVyLCBjb3VudGVyc0J1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogcmVz
ZXRUZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExldmVsOnNsaWNlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6cmVzZXRUZXh0dXJlQWNjZXNzQ291bnRl
cnMoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpV
SW50ZWdlciBtaXBMZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldFRleHR1cmVBY2Nlc3ND
b3VudGVyc19yZWdpb25fbWlwTGV2ZWxfc2xpY2VfKSwgdGV4dHVyZSwgcmVnaW9uLCBtaXBMZXZl
bCwgc2xpY2UpOworfQorCisvLyBtZXRob2Q6IG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3M6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUNvbnRl
bnRzRm9yR1BVQWNjZXNzKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3B0aW1pemVDb250
ZW50c0ZvckdQVUFjY2Vzc18pLCB0ZXh0dXJlKTsKK30KKworLy8gbWV0aG9kOiBvcHRpbWl6ZUNv
bnRlbnRzRm9yR1BVQWNjZXNzOnNsaWNlOmxldmVsOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJs
aXRDb21tYW5kRW5jb2Rlcjo6b3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vzcyhjb25zdCBNVEw6
OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6OlVJbnRlZ2VyIGxldmVs
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzX3NsaWNlX2xldmVsXyksIHRleHR1cmUsIHNs
aWNlLCBsZXZlbCk7Cit9CisKKy8vIG1ldGhvZDogb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vz
czoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6Om9wdGltaXplQ29u
dGVudHNGb3JDUFVBY2Nlc3MoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChvcHRpbWl6ZUNv
bnRlbnRzRm9yQ1BVQWNjZXNzXyksIHRleHR1cmUpOworfQorCisvLyBtZXRob2Q6IG9wdGltaXpl
Q29udGVudHNGb3JDUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QmxpdENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzKGNvbnN0IE1U
TDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBOUzo6VUludGVnZXIgbGV2
ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3Nfc2xpY2VfbGV2ZWxfKSwgdGV4dHVyZSwg
c2xpY2UsIGxldmVsKTsKK30KKworLy8gbWV0aG9kOiByZXNldENvbW1hbmRzSW5CdWZmZXI6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6cmVzZXRD
b21tYW5kc0luQnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBidWZmZXIs
IE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwocmVzZXRDb21tYW5kc0luQnVmZmVyX3dpdGhSYW5nZV8pLCBidWZm
ZXIsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBjb3B5SW5kaXJlY3RDb21tYW5kQnVmZmVyOnNv
dXJjZVJhbmdlOmRlc3RpbmF0aW9uOmRlc3RpbmF0aW9uSW5kZXg6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0
IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBzb3VyY2UsIE5TOjpSYW5nZSBzb3VyY2VSYW5n
ZSwgY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGRlc3RpbmF0aW9uLCBOUzo6VUlu
dGVnZXIgZGVzdGluYXRpb25JbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUluZGlyZWN0Q29tbWFuZEJ1ZmZlcl9zb3VyY2VS
YW5nZV9kZXN0aW5hdGlvbl9kZXN0aW5hdGlvbkluZGV4XyksIHNvdXJjZSwgc291cmNlUmFuZ2Us
IGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbkluZGV4KTsKK30KKworLy8gbWV0aG9kOiBvcHRpbWl6
ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QmxpdENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBN
VEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6UmFu
Z2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG9wdGltaXplSW5kaXJlY3RDb21tYW5kQnVmZmVyX3dpdGhSYW5nZV8pLCBpbmRp
cmVjdENvbW1hbmRCdWZmZXIsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzYW1wbGVDb3VudGVy
c0luQnVmZmVyOmF0U2FtcGxlSW5kZXg6d2l0aEJhcnJpZXI6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QmxpdENvbW1hbmRFbmNvZGVyOjpzYW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IE1UTDo6
Q291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6VUludGVnZXIgc2FtcGxlSW5k
ZXgsIGJvb2wgYmFycmllcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcl9hdFNhbXBsZUluZGV4X3dp
dGhCYXJyaWVyXyksIHNhbXBsZUJ1ZmZlciwgc2FtcGxlSW5kZXgsIGJhcnJpZXIpOworfQorCisv
LyBtZXRob2Q6IHJlc29sdmVDb3VudGVyczppblJhbmdlOmRlc3RpbmF0aW9uQnVmZmVyOmRlc3Rp
bmF0aW9uT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6
cmVzb2x2ZUNvdW50ZXJzKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVm
ZmVyLCBOUzo6UmFuZ2UgcmFuZ2UsIGNvbnN0IE1UTDo6QnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvbHZlQ291bnRlcnNfaW5SYW5n
ZV9kZXN0aW5hdGlvbkJ1ZmZlcl9kZXN0aW5hdGlvbk9mZnNldF8pLCBzYW1wbGVCdWZmZXIsIHJh
bmdlLCBkZXN0aW5hdGlvbkJ1ZmZlciwgZGVzdGluYXRpb25PZmZzZXQpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRQYXNzLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFzcy5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzhlYWUzMWQ3MTI0ZGJhMzQ0MTAzZTdhNzNkNzk1NmQ0YmE1MzE2MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0
UGFzcy5ocHAKQEAgLTAsMCArMSwxNjUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEJsaXRQYXNzLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCitu
YW1lc3BhY2UgTVRMCit7CitjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEJsaXRQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCbGl0UGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAg
Y2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh
bXBsZUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVCdWZmZXIoY29uc3QgY2xhc3MgQ291bnRl
clNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mRW5jb2RlclNhbXBsZUlu
ZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2Vy
IHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRP
ZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9OworCitjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEJsaXRQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5
KiBhbGxvYygpOworCisgICAgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQmxpdFBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdl
ciBhdHRhY2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIEJsaXRQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50
ZWdlciBhdHRhY2htZW50SW5kZXgpOworfTsKKworY2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yIDog
cHVibGljIE5TOjpDb3B5aW5nPEJsaXRQYXNzRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGFsbG9j
KCk7CisKKyAgICBjbGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IqICAg
ICAgICAgICAgICAgICAgICAgYmxpdFBhc3NEZXNjcmlwdG9yKCk7CisKKyAgICBjbGFzcyBCbGl0
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIHNhbXBsZUJ1ZmZlckF0
dGFjaG1lbnRzKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3Iq
IE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRM
OjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXIKK19NVExf
SU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcio+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTYW1wbGVCdWZm
ZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBs
ZUJ1ZmZlcl8pLCBzYW1wbGVCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRPZkVuY29k
ZXJTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QmxpdFBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3I6OnNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZF
bmNvZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXhfKSwgc3RhcnRP
ZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmRPZkVuY29kZXJTYW1w
bGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChlbmRPZkVuY29kZXJTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0
RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNhbXBsZUlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleF8pLCBlbmRPZkVuY29kZXJTYW1wbGVJbmRl
eCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkJsaXRQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpCbGl0UGFzc1Nh
bXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9J
TkxJTkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkq
IE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkJsaXRQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RB
dEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5k
ZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9i
amVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdFBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRM
OjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBO
Uzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0
XyksIGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzRGVzY3JpcHRvciogTVRMOjpCbGl0UGFz
c0Rlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpCbGl0UGFzc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBhc3NEZXNjcmlw
dG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc0Rl
c2NyaXB0b3IqIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6aW5pdDxNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3Rh
dGljIG1ldGhvZDogYmxpdFBhc3NEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNz
RGVzY3JpcHRvciogTVRMOjpCbGl0UGFzc0Rlc2NyaXB0b3I6OmJsaXRQYXNzRGVzY3JpcHRvcigp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGl0UGFzc0Rlc2NyaXB0
b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEJsaXRQYXNzRGVzY3JpcHRvciksIF9NVExfUFJJVkFU
RV9TRUwoYmxpdFBhc3NEZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZm
ZXJBdHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yOjpzYW1wbGVCdWZm
ZXJBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKSk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCdWZmZXIuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYxYmRkZWZlYTc3MGQ1NDczZTMzZjFhYzRhYmIyNjQ2MmJmY2Y0NWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVy
LmhwcApAQCAtMCwwICsxLDEwMSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQnVmZmVyLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVk
ZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBCdWZmZXIgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPEJ1ZmZlciwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAg
TlM6OlVJbnRlZ2VyICAgbGVuZ3RoKCkgY29uc3Q7CisKKyAgICB2b2lkKiAgICAgICAgICBjb250
ZW50cygpOworCisgICAgdm9pZCAgICAgICAgICAgZGlkTW9kaWZ5UmFuZ2UoTlM6OlJhbmdlIHJh
bmdlKTsKKworICAgIGNsYXNzIFRleHR1cmUqIG5ld1RleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVy
ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdl
ciBieXRlc1BlclJvdyk7CisKKyAgICB2b2lkICAgICAgICAgICBhZGREZWJ1Z01hcmtlcihjb25z
dCBOUzo6U3RyaW5nKiBtYXJrZXIsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAg
ICAgICByZW1vdmVBbGxEZWJ1Z01hcmtlcnMoKTsKKworICAgIGNsYXNzIEJ1ZmZlciogIHJlbW90
ZVN0b3JhZ2VCdWZmZXIoKSBjb25zdDsKKworICAgIGNsYXNzIEJ1ZmZlciogIG5ld1JlbW90ZUJ1
ZmZlclZpZXdGb3JEZXZpY2UoY29uc3QgY2xhc3MgRGV2aWNlKiBkZXZpY2UpOworfTsKKworfQor
CisvLyBwcm9wZXJ0eTogbGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpCdWZm
ZXI6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxlbmd0aCkpOworfQorCisvLyBtZXRo
b2Q6IGNvbnRlbnRzCitfTVRMX0lOTElORSB2b2lkKiBNVEw6OkJ1ZmZlcjo6Y29udGVudHMoKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGNvbnRlbnRzKSk7Cit9CisKKy8vIG1ldGhvZDogZGlkTW9kaWZ5UmFuZ2U6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6QnVmZmVyOjpkaWRNb2RpZnlSYW5nZShOUzo6UmFuZ2UgcmFuZ2Up
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGRpZE1vZGlmeVJhbmdlXyksIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBuZXdUZXh0dXJlV2l0
aERlc2NyaXB0b3I6b2Zmc2V0OmJ5dGVzUGVyUm93OgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJl
KiBNVEw6OkJ1ZmZlcjo6bmV3VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3cp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3Jfb2Zmc2V0X2J5dGVzUGVy
Um93XyksIGRlc2NyaXB0b3IsIG9mZnNldCwgYnl0ZXNQZXJSb3cpOworfQorCisvLyBtZXRob2Q6
IGFkZERlYnVnTWFya2VyOnJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlcjo6YWRk
RGVidWdNYXJrZXIoY29uc3QgTlM6OlN0cmluZyogbWFya2VyLCBOUzo6UmFuZ2UgcmFuZ2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFk
ZERlYnVnTWFya2VyX3JhbmdlXyksIG1hcmtlciwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHJl
bW92ZUFsbERlYnVnTWFya2VycworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlcjo6cmVtb3Zl
QWxsRGVidWdNYXJrZXJzKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwocmVtb3ZlQWxsRGVidWdNYXJrZXJzKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiByZW1vdGVTdG9yYWdlQnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpC
dWZmZXI6OnJlbW90ZVN0b3JhZ2VCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZW1vdGVT
dG9yYWdlQnVmZmVyKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVtb3RlQnVmZmVyVmlld0ZvckRl
dmljZToKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkJ1ZmZlcjo6bmV3UmVtb3RlQnVm
ZmVyVmlld0ZvckRldmljZShjb25zdCBNVEw6OkRldmljZSogZGV2aWNlKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuZXdSZW1vdGVCdWZmZXJWaWV3Rm9yRGV2aWNlXyksIGRldmljZSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1hbmFnZXIu
aHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVNYW5h
Z2VyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xOGUxMGY1YzIzNGIwZjFlNDY2MDY0N2QxZWFiOTAwMDA0Mjlk
ODc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTENhcHR1cmVNYW5hZ2VyLmhwcApAQCAtMCwwICsxLDIyMCBAQAorLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ2FwdHVy
ZU1hbmFnZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJp
ZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExDYXB0dXJlTWFuYWdlci5ocHAiCisK
K25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6SW50ZWdlciwgQ2FwdHVyZUVycm9yKSB7
CisgICAgQ2FwdHVyZUVycm9yTm90U3VwcG9ydGVkID0gMSwKKyAgICBDYXB0dXJlRXJyb3JBbHJl
YWR5Q2FwdHVyaW5nID0gMiwKKyAgICBDYXB0dXJlRXJyb3JJbnZhbGlkRGVzY3JpcHRvciA9IDMs
Cit9OworCitfTVRMX0VOVU0oTlM6OkludGVnZXIsIENhcHR1cmVEZXN0aW5hdGlvbikgeworICAg
IENhcHR1cmVEZXN0aW5hdGlvbkRldmVsb3BlclRvb2xzID0gMSwKKyAgICBDYXB0dXJlRGVzdGlu
YXRpb25HUFVUcmFjZURvY3VtZW50ID0gMiwKK307CisKK2NsYXNzIENhcHR1cmVEZXNjcmlwdG9y
IDogcHVibGljIE5TOjpDb3B5aW5nPENhcHR1cmVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAg
IHN0YXRpYyBjbGFzcyBDYXB0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIENh
cHR1cmVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXB0dXJlT2JqZWN0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRDYXB0dXJlT2JqZWN0KGlkIGNhcHR1cmVPYmplY3QpOworCisg
ICAgTVRMOjpDYXB0dXJlRGVzdGluYXRpb24gICAgICAgICBkZXN0aW5hdGlvbigpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVzdGluYXRpb24oTVRMOjpD
YXB0dXJlRGVzdGluYXRpb24gZGVzdGluYXRpb24pOworCisgICAgTlM6OlVSTCogICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwdXRVUkwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE91dHB1dFVSTChjb25zdCBOUzo6VVJMKiBvdXRwdXRVUkwpOworfTsK
KworY2xhc3MgQ2FwdHVyZU1hbmFnZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENhcHR1cmVN
YW5hZ2VyPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDYXB0dXJlTWFuYWdlciogYWxs
b2MoKTsKKworICAgIHN0YXRpYyBjbGFzcyBDYXB0dXJlTWFuYWdlciogc2hhcmVkQ2FwdHVyZU1h
bmFnZXIoKTsKKworICAgIE1UTDo6Q2FwdHVyZU1hbmFnZXIqICAgICAgICAgaW5pdCgpOworCisg
ICAgY2xhc3MgQ2FwdHVyZVNjb3BlKiAgICAgICAgICBuZXdDYXB0dXJlU2NvcGUoY29uc3QgY2xh
c3MgRGV2aWNlKiBkZXZpY2UpOworCisgICAgY2xhc3MgQ2FwdHVyZVNjb3BlKiAgICAgICAgICBu
ZXdDYXB0dXJlU2NvcGUoY29uc3QgY2xhc3MgQ29tbWFuZFF1ZXVlKiBjb21tYW5kUXVldWUpOwor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0Rlc3RpbmF0aW9uKE1U
TDo6Q2FwdHVyZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKTsKKworICAgIGJvb2wgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhcnRDYXB0dXJlKGNvbnN0IGNsYXNzIENhcHR1cmVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0Q2FwdHVyZShjb25zdCBjbGFzcyBEZXZpY2UqIGRldmljZSk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q2FwdHVyZShjb25zdCBjbGFz
cyBDb21tYW5kUXVldWUqIGNvbW1hbmRRdWV1ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0Q2FwdHVyZShjb25zdCBjbGFzcyBDYXB0dXJlU2NvcGUqIGNhcHR1cmVT
Y29wZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BDYXB0dXJlKCk7
CisKKyAgICBjbGFzcyBDYXB0dXJlU2NvcGUqICAgICAgICAgIGRlZmF1bHRDYXB0dXJlU2NvcGUo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlZmF1bHRDYXB0
dXJlU2NvcGUoY29uc3QgY2xhc3MgQ2FwdHVyZVNjb3BlKiBkZWZhdWx0Q2FwdHVyZVNjb3BlKTsK
KworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgaXNDYXB0dXJpbmcoKSBjb25zdDsK
K307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q2Fw
dHVyZURlc2NyaXB0b3IqIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDYXB0dXJlRGVzY3JpcHRvcj4oX01UTF9QUklW
QVRFX0NMUyhNVExDYXB0dXJlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3IqIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q2FwdHVyZURlc2Ny
aXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBjYXB0dXJlT2JqZWN0CitfTVRMX0lOTElORSBp
ZCBNVEw6OkNhcHR1cmVEZXNjcmlwdG9yOjpjYXB0dXJlT2JqZWN0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxpZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjYXB0
dXJlT2JqZWN0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlRGVzY3JpcHRv
cjo6c2V0Q2FwdHVyZU9iamVjdChpZCBjYXB0dXJlT2JqZWN0KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDYXB0dXJlT2JqZWN0Xyks
IGNhcHR1cmVPYmplY3QpOworfQorCisvLyBwcm9wZXJ0eTogZGVzdGluYXRpb24KK19NVExfSU5M
SU5FIE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OmRlc3Rp
bmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNh
cHR1cmVEZXN0aW5hdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXN0aW5hdGlvbikpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OnNldERlc3RpbmF0
aW9uKE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXN0aW5hdGlvbl8p
LCBkZXN0aW5hdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBvdXRwdXRVUkwKK19NVExfSU5MSU5F
IE5TOjpVUkwqIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6Om91dHB1dFVSTCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVSTCo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwob3V0cHV0VVJMKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlRGVz
Y3JpcHRvcjo6c2V0T3V0cHV0VVJMKGNvbnN0IE5TOjpVUkwqIG91dHB1dFVSTCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3V0cHV0
VVJMXyksIG91dHB1dFVSTCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lO
TElORSBNVEw6OkNhcHR1cmVNYW5hZ2VyKiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjphbGxvYygpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q2FwdHVyZU1hbmFnZXI+KF9NVExf
UFJJVkFURV9DTFMoTVRMQ2FwdHVyZU1hbmFnZXIpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
c2hhcmVkQ2FwdHVyZU1hbmFnZXIKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVyZU1hbmFnZXIqIE1U
TDo6Q2FwdHVyZU1hbmFnZXI6OnNoYXJlZENhcHR1cmVNYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNhcHR1cmVNYW5hZ2VyKj4oX01UTF9QUklWQVRFX0NM
UyhNVExDYXB0dXJlTWFuYWdlciksIF9NVExfUFJJVkFURV9TRUwoc2hhcmVkQ2FwdHVyZU1hbmFn
ZXIpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVNYW5h
Z2VyKiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6aW5pdDxNVEw6OkNhcHR1cmVNYW5hZ2VyPigpOworfQorCisvLyBtZXRob2Q6IG5ld0NhcHR1
cmVTY29wZVdpdGhEZXZpY2U6CitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVTY29wZSogTVRMOjpD
YXB0dXJlTWFuYWdlcjo6bmV3Q2FwdHVyZVNjb3BlKGNvbnN0IE1UTDo6RGV2aWNlKiBkZXZpY2Up
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDYXB0dXJlU2NvcGUqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhEZXZpY2VfKSwgZGV2aWNl
KTsKK30KKworLy8gbWV0aG9kOiBuZXdDYXB0dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlOgorX01U
TF9JTkxJTkUgTVRMOjpDYXB0dXJlU2NvcGUqIE1UTDo6Q2FwdHVyZU1hbmFnZXI6Om5ld0NhcHR1
cmVTY29wZShjb25zdCBNVEw6OkNvbW1hbmRRdWV1ZSogY29tbWFuZFF1ZXVlKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q2FwdHVyZVNjb3BlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdDYXB0dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlXyksIGNvbW1hbmRRdWV1
ZSk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNEZXN0aW5hdGlvbjoKK19NVExfSU5MSU5FIGJv
b2wgTVRMOjpDYXB0dXJlTWFuYWdlcjo6c3VwcG9ydHNEZXN0aW5hdGlvbihNVEw6OkNhcHR1cmVE
ZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c0Rlc3RpbmF0aW9uXyks
IGRlc3RpbmF0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRv
cjplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDYXB0dXJlTWFuYWdlcjo6c3RhcnRDYXB0
dXJlKGNvbnN0IE1UTDo6Q2FwdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioq
IGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3Jp
cHRvciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IHN0YXJ0Q2FwdHVyZVdpdGhEZXZpY2U6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN0YXJ0Q2FwdHVyZShjb25zdCBN
VEw6OkRldmljZSogZGV2aWNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzdGFydENhcHR1cmVXaXRoRGV2aWNlXyksIGRldmljZSk7Cit9
CisKKy8vIG1ldGhvZDogc3RhcnRDYXB0dXJlV2l0aENvbW1hbmRRdWV1ZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpDYXB0dXJlTWFuYWdlcjo6c3RhcnRDYXB0dXJlKGNvbnN0IE1UTDo6Q29tbWFu
ZFF1ZXVlKiBjb21tYW5kUXVldWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0Q2FwdHVyZVdpdGhDb21tYW5kUXVldWVfKSwgY29t
bWFuZFF1ZXVlKTsKK30KKworLy8gbWV0aG9kOiBzdGFydENhcHR1cmVXaXRoU2NvcGU6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN0YXJ0Q2FwdHVyZShjb25zdCBNVEw6
OkNhcHR1cmVTY29wZSogY2FwdHVyZVNjb3BlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFydENhcHR1cmVXaXRoU2NvcGVfKSwgY2Fw
dHVyZVNjb3BlKTsKK30KKworLy8gbWV0aG9kOiBzdG9wQ2FwdHVyZQorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpzdG9wQ2FwdHVyZSgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3BDYXB0dXJlKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBkZWZhdWx0Q2FwdHVyZVNjb3BlCitfTVRMX0lOTElORSBNVEw6OkNhcHR1
cmVTY29wZSogTVRMOjpDYXB0dXJlTWFuYWdlcjo6ZGVmYXVsdENhcHR1cmVTY29wZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDYXB0dXJlU2NvcGUqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlZmF1bHRDYXB0dXJlU2NvcGUpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpzZXREZWZhdWx0Q2FwdHVyZVNjb3BlKGNv
bnN0IE1UTDo6Q2FwdHVyZVNjb3BlKiBkZWZhdWx0Q2FwdHVyZVNjb3BlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZWZhdWx0Q2Fw
dHVyZVNjb3BlXyksIGRlZmF1bHRDYXB0dXJlU2NvcGUpOworfQorCisvLyBwcm9wZXJ0eTogaXND
YXB0dXJpbmcKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDYXB0dXJlTWFuYWdlcjo6aXNDYXB0dXJp
bmcoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaXNDYXB0dXJpbmcpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlU2NvcGUuaHBwIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVTY29wZS5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjM2MDIzNWExNDg2MWI4ZWNiY2ZmY2Y0MDJkNWEzY2ExMjQ1MTk5OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJl
U2NvcGUuaHBwCkBAIC0wLDAgKzEsOTIgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTENhcHR1cmVTY29wZS5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTVRMRGVmaW5l
cy5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlICIuLi9Gb3VuZGF0
aW9uL05TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICIuLi9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcCIK
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVz
cGFjZSBNVEwKK3sKK2NsYXNzIENhcHR1cmVTY29wZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8
Q2FwdHVyZVNjb3BlPgoreworcHVibGljOgorICAgIGNsYXNzIERldmljZSogICAgICAgZGV2aWNl
KCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBwTGFiZWwpOwor
CisgICAgY2xhc3MgQ29tbWFuZFF1ZXVlKiBjb21tYW5kUXVldWUoKSBjb25zdDsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgYmVnaW5TY29wZSgpOworICAgIHZvaWQgICAgICAgICAgICAgICAg
ZW5kU2NvcGUoKTsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpDYXB0dXJlU2NvcGU6
OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGV2aWNl
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcq
IE1UTDo6Q2FwdHVyZVNjb3BlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlU2NvcGU6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJp
bmcqIHBMYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgcExhYmVsKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZFF1
ZXVlKiBNVEw6OkNhcHR1cmVTY29wZTo6Y29tbWFuZFF1ZXVlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxDb21tYW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGNvbW1hbmRRdWV1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVTY29wZTo6YmVn
aW5TY29wZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChiZWdpblNjb3BlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVy
ZVNjb3BlOjplbmRTY29wZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmRTY29wZSkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMGZjOThlNTExYmY2YTNhZjMwZDM0M2Q0YmIzZjY1YjU1NGFmMTIwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRC
dWZmZXIuaHBwCkBAIC0wLDAgKzEsNDY1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBw
PgorCisjaW5jbHVkZSAiTVRMQ29tbWFuZEJ1ZmZlci5ocHAiCisjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ29tbWFuZEJ1
ZmZlclN0YXR1cykgeworICAgIENvbW1hbmRCdWZmZXJTdGF0dXNOb3RFbnF1ZXVlZCA9IDAsCisg
ICAgQ29tbWFuZEJ1ZmZlclN0YXR1c0VucXVldWVkID0gMSwKKyAgICBDb21tYW5kQnVmZmVyU3Rh
dHVzQ29tbWl0dGVkID0gMiwKKyAgICBDb21tYW5kQnVmZmVyU3RhdHVzU2NoZWR1bGVkID0gMywK
KyAgICBDb21tYW5kQnVmZmVyU3RhdHVzQ29tcGxldGVkID0gNCwKKyAgICBDb21tYW5kQnVmZmVy
U3RhdHVzRXJyb3IgPSA1LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ29tbWFuZEJ1
ZmZlckVycm9yKSB7CisgICAgQ29tbWFuZEJ1ZmZlckVycm9yTm9uZSA9IDAsCisgICAgQ29tbWFu
ZEJ1ZmZlckVycm9yVGltZW91dCA9IDIsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yUGFnZUZhdWx0
ID0gMywKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JBY2Nlc3NSZXZva2VkID0gNCwKKyAgICBDb21t
YW5kQnVmZmVyRXJyb3JCbGFja2xpc3RlZCA9IDQsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yTm90
UGVybWl0dGVkID0gNywKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JPdXRPZk1lbW9yeSA9IDgsCisg
ICAgQ29tbWFuZEJ1ZmZlckVycm9ySW52YWxpZFJlc291cmNlID0gOSwKKyAgICBDb21tYW5kQnVm
ZmVyRXJyb3JNZW1vcnlsZXNzID0gMTAsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yRGV2aWNlUmVt
b3ZlZCA9IDExLAorICAgIENvbW1hbmRCdWZmZXJFcnJvclN0YWNrT3ZlcmZsb3cgPSAxMiwKK307
CisKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIENvbW1hbmRCdWZmZXJFcnJvck9wdGlvbikg
eworICAgIENvbW1hbmRCdWZmZXJFcnJvck9wdGlvbk5vbmUgPSAwLAorICAgIENvbW1hbmRCdWZm
ZXJFcnJvck9wdGlvbkVuY29kZXJFeGVjdXRpb25TdGF0dXMgPSAxLAorfTsKKworX01UTF9FTlVN
KE5TOjpJbnRlZ2VyLCBDb21tYW5kRW5jb2RlckVycm9yU3RhdGUpIHsKKyAgICBDb21tYW5kRW5j
b2RlckVycm9yU3RhdGVVbmtub3duID0gMCwKKyAgICBDb21tYW5kRW5jb2RlckVycm9yU3RhdGVD
b21wbGV0ZWQgPSAxLAorICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZUFmZmVjdGVkID0gMiwK
KyAgICBDb21tYW5kRW5jb2RlckVycm9yU3RhdGVQZW5kaW5nID0gMywKKyAgICBDb21tYW5kRW5j
b2RlckVycm9yU3RhdGVGYXVsdGVkID0gNCwKK307CisKK2NsYXNzIENvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogYWxsb2Mo
KTsKKworICAgIGNsYXNzIENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOwor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW5lZFJlZmVy
ZW5jZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFJldGFpbmVkUmVmZXJlbmNlcyhib29sIHJldGFpbmVkUmVmZXJlbmNlcyk7CisKKyAgICBN
VEw6OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbiAgICAgICAgIGVycm9yT3B0aW9ucygpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JPcHRp
b25zKE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uIGVycm9yT3B0aW9ucyk7Cit9OworCitj
bGFzcyBDb21tYW5kQnVmZmVyRW5jb2RlckluZm8gOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENv
bW1hbmRCdWZmZXJFbmNvZGVySW5mbz4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgICAg
ICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAg
ICAgICAgICAgZGVidWdTaWducG9zdHMoKSBjb25zdDsKKworICAgIE1UTDo6Q29tbWFuZEVuY29k
ZXJFcnJvclN0YXRlIGVycm9yU3RhdGUoKSBjb25zdDsKK307CisKK19NVExfRU5VTShOUzo6VUlu
dGVnZXIsIERpc3BhdGNoVHlwZSkgeworICAgIERpc3BhdGNoVHlwZVNlcmlhbCA9IDAsCisgICAg
RGlzcGF0Y2hUeXBlQ29uY3VycmVudCA9IDEsCit9OworCitjbGFzcyBDb21tYW5kQnVmZmVyOwor
Cit1c2luZyBDb21tYW5kQnVmZmVySGFuZGxlciA9IHZvaWQgKF4pKENvbW1hbmRCdWZmZXIqKTsK
KwordXNpbmcgSGFuZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkKENvbW1hbmRCdWZm
ZXIqKT47CisKK2NsYXNzIENvbW1hbmRCdWZmZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENv
bW1hbmRCdWZmZXI+Cit7CitwdWJsaWM6CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZFNjaGVkdWxlZEhhbmRsZXIoY29uc3QgSGFuZGxlckZ1bmN0aW9u
JiBmdW5jdGlvbik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkQ29tcGxldGVkSGFuZGxlcihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9u
KTsKKworICAgIGNsYXNzIERldmljZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2UoKSBjb25zdDsKKworICAgIGNsYXNzIENvbW1hbmRRdWV1ZSogICAgICAgICAgICAgICAgICAg
ICAgICBjb21tYW5kUXVldWUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXRhaW5lZFJlZmVyZW5jZXMoKSBjb25zdDsKKworICAgIE1U
TDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uICAgICAgICAgICAgICBlcnJvck9wdGlvbnMoKSBj
b25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
YWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisKKyAgICBDRlRpbWVJbnRl
cnZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsU3RhcnRUaW1lKCkgY29uc3Q7
CisKKyAgICBDRlRpbWVJbnRlcnZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVs
RW5kVGltZSgpIGNvbnN0OworCisgICAgY2xhc3MgTG9nQ29udGFpbmVyKiAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ3MoKSBjb25zdDsKKworICAgIENGVGltZUludGVydmFsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHUFVTdGFydFRpbWUoKSBjb25zdDsKKworICAgIENGVGltZUludGVy
dmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUFVFbmRUaW1lKCkgY29uc3Q7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5xdWV1ZSgpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdCgp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFNj
aGVkdWxlZEhhbmRsZXIoY29uc3QgTVRMOjpDb21tYW5kQnVmZmVySGFuZGxlciBibG9jayk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudERy
YXdhYmxlKGNvbnN0IGNsYXNzIERyYXdhYmxlKiBkcmF3YWJsZSk7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudERyYXdhYmxlQXRUaW1lKGNv
bnN0IGNsYXNzIERyYXdhYmxlKiBkcmF3YWJsZSwgQ0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9u
VGltZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJlc2VudERyYXdhYmxlQWZ0ZXJNaW5pbXVtRHVyYXRpb24oY29uc3QgY2xhc3MgRHJhd2FibGUq
IGRyYXdhYmxlLCBDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbik7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdFVudGlsU2NoZWR1bGVkKCk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29tcGxldGVk
SGFuZGxlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJIYW5kbGVyIGJsb2NrKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0VW50aWxDb21wbGV0
ZWQoKTsKKworICAgIE1UTDo6Q29tbWFuZEJ1ZmZlclN0YXR1cyAgICAgICAgICAgICAgICAgICBz
dGF0dXMoKSBjb25zdDsKKworICAgIE5TOjpFcnJvciogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlcnJvcigpIGNvbnN0OworCisgICAgY2xhc3MgQmxpdENvbW1hbmRFbmNvZGVyKiAg
ICAgICAgICAgICAgICAgIGJsaXRDb21tYW5kRW5jb2RlcigpOworCisgICAgY2xhc3MgUmVuZGVy
Q29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAgIHJlbmRlckNvbW1hbmRFbmNvZGVyKGNvbnN0
IGNsYXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVzY3JpcHRvcik7CisKKyAg
ICBjbGFzcyBDb21wdXRlQ29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAgY29tcHV0ZUNvbW1h
bmRFbmNvZGVyKGNvbnN0IGNsYXNzIENvbXB1dGVQYXNzRGVzY3JpcHRvciogY29tcHV0ZVBhc3NE
ZXNjcmlwdG9yKTsKKworICAgIGNsYXNzIEJsaXRDb21tYW5kRW5jb2RlciogICAgICAgICAgICAg
ICAgICBibGl0Q29tbWFuZEVuY29kZXIoY29uc3QgY2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yKiBi
bGl0UGFzc0Rlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQ29tcHV0ZUNvbW1hbmRFbmNvZGVyKiAg
ICAgICAgICAgICAgIGNvbXB1dGVDb21tYW5kRW5jb2RlcigpOworCisgICAgY2xhc3MgQ29tcHV0
ZUNvbW1hbmRFbmNvZGVyKiAgICAgICAgICAgICAgIGNvbXB1dGVDb21tYW5kRW5jb2RlcihNVEw6
OkRpc3BhdGNoVHlwZSBkaXNwYXRjaFR5cGUpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVuY29kZVdhaXQoY29uc3QgY2xhc3MgRXZlbnQqIGV2ZW50
LCB1aW50NjRfdCB2YWx1ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW5jb2RlU2lnbmFsRXZlbnQoY29uc3QgY2xhc3MgRXZlbnQqIGV2ZW50LCB1
aW50NjRfdCB2YWx1ZSk7CisKKyAgICBjbGFzcyBQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVy
KiAgICAgICAgcGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBjbGFzcyBSZW5kZXJQ
YXNzRGVzY3JpcHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3IpOworCisgICAgY2xhc3MgUmVzb3Vy
Y2VTdGF0ZUNvbW1hbmRFbmNvZGVyKiAgICAgICAgIHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rl
cigpOworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKiAgICAgICAgIHJl
c291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcihjb25zdCBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc0Rl
c2NyaXB0b3IqIHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciogYWNjZWxlcmF0aW9uU3RydWN0dXJlQ29t
bWFuZEVuY29kZXIoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoRGVidWdHcm91cChjb25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcERlYnVnR3JvdXAo
KTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21tYW5kQnVmZmVy
RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21tYW5kQnVmZmVyRGVzY3JpcHRvcikp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlckRl
c2NyaXB0b3IqIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I+KCk7Cit9
CisKKy8vIHByb3BlcnR5OiByZXRhaW5lZFJlZmVyZW5jZXMKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6cmV0YWluZWRSZWZlcmVuY2VzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHJldGFpbmVkUmVmZXJlbmNlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNldFJldGFpbmVkUmVmZXJlbmNlcyhib29sIHJldGFpbmVk
UmVmZXJlbmNlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0UmV0YWluZWRSZWZlcmVuY2VzXyksIHJldGFpbmVkUmVmZXJlbmNlcyk7
Cit9CisKKy8vIHByb3BlcnR5OiBlcnJvck9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFu
ZEJ1ZmZlckVycm9yT3B0aW9uIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmVycm9yT3B0
aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21t
YW5kQnVmZmVyRXJyb3JPcHRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXJyb3JPcHRpb25z
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6
c2V0RXJyb3JPcHRpb25zKE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uIGVycm9yT3B0aW9u
cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0RXJyb3JPcHRpb25zXyksIGVycm9yT3B0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBs
YWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21tYW5kQnVmZmVyRW5jb2Rlcklu
Zm86OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9wZXJ0
eTogZGVidWdTaWducG9zdHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpDb21tYW5kQnVm
ZmVyRW5jb2RlckluZm86OmRlYnVnU2lnbnBvc3RzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlYnVn
U2lnbnBvc3RzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBlcnJvclN0YXRlCitfTVRMX0lOTElORSBN
VEw6OkNvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZSBNVEw6OkNvbW1hbmRCdWZmZXJFbmNvZGVySW5m
bzo6ZXJyb3JTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpDb21tYW5kRW5jb2RlckVycm9yU3RhdGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXJy
b3JTdGF0ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YWRk
U2NoZWR1bGVkSGFuZGxlcihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKQoreworICAg
IF9fYmxvY2sgSGFuZGxlckZ1bmN0aW9uIGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAg
IGFkZFNjaGVkdWxlZEhhbmRsZXIoXihNVEw6OkNvbW1hbmRCdWZmZXIqIHBDb21tYW5kQnVmZmVy
KSB7IGJsb2NrRnVuY3Rpb24ocENvbW1hbmRCdWZmZXIpOyB9KTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmFkZENvbXBsZXRlZEhhbmRsZXIoY29uc3QgSGFuZGxl
ckZ1bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIEhhbmRsZXJGdW5jdGlvbiBibG9j
a0Z1bmN0aW9uID0gZnVuY3Rpb247CisKKyAgICBhZGRDb21wbGV0ZWRIYW5kbGVyKF4oTVRMOjpD
b21tYW5kQnVmZmVyKiBwQ29tbWFuZEJ1ZmZlcikgeyBibG9ja0Z1bmN0aW9uKHBDb21tYW5kQnVm
ZmVyKTsgfSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2
aWNlKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRl
dmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogY29tbWFuZFF1ZXVlCitfTVRMX0lOTElORSBNVEw6
OkNvbW1hbmRRdWV1ZSogTVRMOjpDb21tYW5kQnVmZmVyOjpjb21tYW5kUXVldWUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZFF1ZXVlKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChjb21tYW5kUXVldWUpKTsKK30KKworLy8gcHJvcGVydHk6IHJl
dGFpbmVkUmVmZXJlbmNlcworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkNvbW1hbmRCdWZmZXI6OnJl
dGFpbmVkUmVmZXJlbmNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXRhaW5lZFJlZmVyZW5jZXMpKTsKK30K
KworLy8gcHJvcGVydHk6IGVycm9yT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVm
ZmVyRXJyb3JPcHRpb24gTVRMOjpDb21tYW5kQnVmZmVyOjplcnJvck9wdGlvbnMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9y
T3B0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVycm9yT3B0aW9ucykpOworfQorCisvLyBw
cm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tbWFuZEJ1ZmZl
cjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpT
dHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJl
bCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eToga2VybmVsU3RhcnRUaW1l
CitfTVRMX0lOTElORSBDRlRpbWVJbnRlcnZhbCBNVEw6OkNvbW1hbmRCdWZmZXI6Omtlcm5lbFN0
YXJ0VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Q0ZUaW1l
SW50ZXJ2YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoa2VybmVsU3RhcnRUaW1lKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBrZXJuZWxFbmRUaW1lCitfTVRMX0lOTElORSBDRlRpbWVJbnRlcnZhbCBN
VEw6OkNvbW1hbmRCdWZmZXI6Omtlcm5lbEVuZFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPENGVGltZUludGVydmFsPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGtlcm5lbEVuZFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGxvZ3MKK19NVExfSU5MSU5FIE1U
TDo6TG9nQ29udGFpbmVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmxvZ3MoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TG9nQ29udGFpbmVyKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChsb2dzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBHUFVTdGFydFRpbWUKK19N
VExfSU5MSU5FIENGVGltZUludGVydmFsIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6R1BVU3RhcnRUaW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxDRlRpbWVJbnRlcnZh
bD4odGhpcywgX01UTF9QUklWQVRFX1NFTChHUFVTdGFydFRpbWUpKTsKK30KKworLy8gcHJvcGVy
dHk6IEdQVUVuZFRpbWUKK19NVExfSU5MSU5FIENGVGltZUludGVydmFsIE1UTDo6Q29tbWFuZEJ1
ZmZlcjo6R1BVRW5kVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Q0ZUaW1lSW50ZXJ2YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoR1BVRW5kVGltZSkpOwor
fQorCisvLyBtZXRob2Q6IGVucXVldWUKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVm
ZmVyOjplbnF1ZXVlKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZW5xdWV1ZSkpOworfQorCisvLyBtZXRob2Q6IGNvbW1pdAorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmNvbW1pdCgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbW1pdCkpOworfQorCisv
LyBtZXRob2Q6IGFkZFNjaGVkdWxlZEhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
bWFuZEJ1ZmZlcjo6YWRkU2NoZWR1bGVkSGFuZGxlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJI
YW5kbGVyIGJsb2NrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChhZGRTY2hlZHVsZWRIYW5kbGVyXyksIGJsb2NrKTsKK30KKworLy8gbWV0
aG9kOiBwcmVzZW50RHJhd2FibGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZl
cjo6cHJlc2VudERyYXdhYmxlKGNvbnN0IE1UTDo6RHJhd2FibGUqIGRyYXdhYmxlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVzZW50
RHJhd2FibGVfKSwgZHJhd2FibGUpOworfQorCisvLyBtZXRob2Q6IHByZXNlbnREcmF3YWJsZTph
dFRpbWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cHJlc2VudERyYXdh
YmxlQXRUaW1lKGNvbnN0IE1UTDo6RHJhd2FibGUqIGRyYXdhYmxlLCBDRlRpbWVJbnRlcnZhbCBw
cmVzZW50YXRpb25UaW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChwcmVzZW50RHJhd2FibGVfYXRUaW1lXyksIGRyYXdhYmxlLCBwcmVz
ZW50YXRpb25UaW1lKTsKK30KKworLy8gbWV0aG9kOiBwcmVzZW50RHJhd2FibGU6YWZ0ZXJNaW5p
bXVtRHVyYXRpb246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cHJlc2Vu
dERyYXdhYmxlQWZ0ZXJNaW5pbXVtRHVyYXRpb24oY29uc3QgTVRMOjpEcmF3YWJsZSogZHJhd2Fi
bGUsIENGVGltZUludGVydmFsIGR1cmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVzZW50RHJhd2FibGVfYWZ0ZXJNaW5pbXVt
RHVyYXRpb25fKSwgZHJhd2FibGUsIGR1cmF0aW9uKTsKK30KKworLy8gbWV0aG9kOiB3YWl0VW50
aWxTY2hlZHVsZWQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjp3YWl0VW50
aWxTY2hlZHVsZWQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh3YWl0VW50aWxTY2hlZHVsZWQpKTsKK30KKworLy8gbWV0aG9kOiBhZGRD
b21wbGV0ZWRIYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmFk
ZENvbXBsZXRlZEhhbmRsZXIoY29uc3QgTVRMOjpDb21tYW5kQnVmZmVySGFuZGxlciBibG9jaykK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
YWRkQ29tcGxldGVkSGFuZGxlcl8pLCBibG9jayk7Cit9CisKKy8vIG1ldGhvZDogd2FpdFVudGls
Q29tcGxldGVkCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6d2FpdFVudGls
Q29tcGxldGVkKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwod2FpdFVudGlsQ29tcGxldGVkKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGF0
dXMKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlclN0YXR1cyBNVEw6OkNvbW1hbmRCdWZm
ZXI6OnN0YXR1cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpDb21tYW5kQnVmZmVyU3RhdHVzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXR1cykpOwor
fQorCisvLyBwcm9wZXJ0eTogZXJyb3IKK19NVExfSU5MSU5FIE5TOjpFcnJvciogTVRMOjpDb21t
YW5kQnVmZmVyOjplcnJvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OkVycm9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlcnJvcikpOworfQorCisvLyBt
ZXRob2Q6IGJsaXRDb21tYW5kRW5jb2RlcgorX01UTF9JTkxJTkUgTVRMOjpCbGl0Q29tbWFuZEVu
Y29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YmxpdENvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcio+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoYmxpdENvbW1hbmRFbmNvZGVyKSk7Cit9CisKKy8vIG1ldGhvZDog
cmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cmVuZGVyQ29tbWFuZEVuY29k
ZXIoY29uc3QgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvciogcmVuZGVyUGFzc0Rlc2NyaXB0b3Ip
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJDb21tYW5kRW5j
b2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVz
Y3JpcHRvcl8pLCByZW5kZXJQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogY29tcHV0
ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVD
b21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpjb21wdXRlQ29tbWFuZEVuY29kZXIo
Y29uc3QgTVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3IqIGNvbXB1dGVQYXNzRGVzY3JpcHRvcikK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVDb21tYW5kRW5j
b2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tcHV0ZUNvbW1hbmRFbmNvZGVyV2l0aERl
c2NyaXB0b3JfKSwgY29tcHV0ZVBhc3NEZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBibGl0
Q29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6QmxpdENvbW1h
bmRFbmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmJsaXRDb21tYW5kRW5jb2Rlcihjb25zdCBN
VEw6OkJsaXRQYXNzRGVzY3JpcHRvciogYmxpdFBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChibGl0Q29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8pLCBibGl0UGFz
c0Rlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IGNvbXB1dGVDb21tYW5kRW5jb2RlcgorX01U
TF9JTkxJTkUgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
Y29tcHV0ZUNvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29t
cHV0ZUNvbW1hbmRFbmNvZGVyKSk7Cit9CisKKy8vIG1ldGhvZDogY29tcHV0ZUNvbW1hbmRFbmNv
ZGVyV2l0aERpc3BhdGNoVHlwZToKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmNvbXB1dGVDb21tYW5kRW5jb2RlcihNVEw6OkRpc3Bh
dGNoVHlwZSBkaXNwYXRjaFR5cGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbXB1
dGVDb21tYW5kRW5jb2RlcldpdGhEaXNwYXRjaFR5cGVfKSwgZGlzcGF0Y2hUeXBlKTsKK30KKwor
Ly8gbWV0aG9kOiBlbmNvZGVXYWl0Rm9yRXZlbnQ6dmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tbWFuZEJ1ZmZlcjo6ZW5jb2RlV2FpdChjb25zdCBNVEw6OkV2ZW50KiBldmVudCwgdWlu
dDY0X3QgdmFsdWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGVuY29kZVdhaXRGb3JFdmVudF92YWx1ZV8pLCBldmVudCwgdmFsdWUpOwor
fQorCisvLyBtZXRob2Q6IGVuY29kZVNpZ25hbEV2ZW50OnZhbHVlOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmVuY29kZVNpZ25hbEV2ZW50KGNvbnN0IE1UTDo6RXZlbnQq
IGV2ZW50LCB1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlU2lnbmFsRXZlbnRfdmFsdWVfKSwgZXZlbnQs
IHZhbHVlKTsKK30KKworLy8gbWV0aG9kOiBwYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyV2l0
aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29k
ZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcihjb25z
dCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVzY3JpcHRvcikKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVu
Y29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29k
ZXJXaXRoRGVzY3JpcHRvcl8pLCByZW5kZXJQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhv
ZDogcmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNl
U3RhdGVDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpyZXNvdXJjZVN0YXRlQ29t
bWFuZEVuY29kZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVz
b3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvdXJj
ZVN0YXRlQ29tbWFuZEVuY29kZXIpKTsKK30KKworLy8gbWV0aG9kOiByZXNvdXJjZVN0YXRlQ29t
bWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0
ZUNvbW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OnJlc291cmNlU3RhdGVDb21tYW5k
RW5jb2Rlcihjb25zdCBNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogcmVzb3VyY2VT
dGF0ZVBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChy
ZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8pLCByZXNvdXJjZVN0YXRl
UGFzc0Rlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IGFjY2VsZXJhdGlvblN0cnVjdHVyZUNv
bW1hbmRFbmNvZGVyCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1h
bmRFbmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1h
bmRFbmNvZGVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChh
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlcikpOworfQorCisvLyBtZXRob2Q6IHB1
c2hEZWJ1Z0dyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OnB1c2hE
ZWJ1Z0dyb3VwKGNvbnN0IE5TOjpTdHJpbmcqIHN0cmluZykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHVzaERlYnVnR3JvdXBfKSwgc3Ry
aW5nKTsKK30KKworLy8gbWV0aG9kOiBwb3BEZWJ1Z0dyb3VwCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tbWFuZEJ1ZmZlcjo6cG9wRGVidWdHcm91cCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBvcERlYnVnR3JvdXApKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5k
RW5jb2Rlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29t
bWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMWYzOTJiYjRmNjAxNGE5MTNlMWNhMjU1MzAx
YWY0YWU2OGMxZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQ29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsMTAxIEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9N
VExDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExI
ZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9PUFRJ
T05TKE5TOjpVSW50ZWdlciwgUmVzb3VyY2VVc2FnZSkgeworICAgIFJlc291cmNlVXNhZ2VSZWFk
ID0gMSwKKyAgICBSZXNvdXJjZVVzYWdlV3JpdGUgPSAyLAorICAgIFJlc291cmNlVXNhZ2VTYW1w
bGUgPSA0LAorfTsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgQmFycmllclNjb3BlKSB7
CisgICAgQmFycmllclNjb3BlQnVmZmVycyA9IDEsCisgICAgQmFycmllclNjb3BlVGV4dHVyZXMg
PSAyLAorICAgIEJhcnJpZXJTY29wZVJlbmRlclRhcmdldHMgPSA0LAorfTsKKworY2xhc3MgQ29t
bWFuZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbW1hbmRFbmNvZGVyPgorewor
cHVibGljOgorICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6U3Ry
aW5nKiAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICBzZXRMYWJlbChjb25zdCBO
Uzo6U3RyaW5nKiBsYWJlbCk7CisKKyAgICB2b2lkICAgICAgICAgIGVuZEVuY29kaW5nKCk7CisK
KyAgICB2b2lkICAgICAgICAgIGluc2VydERlYnVnU2lnbnBvc3QoY29uc3QgTlM6OlN0cmluZyog
c3RyaW5nKTsKKworICAgIHZvaWQgICAgICAgICAgcHVzaERlYnVnR3JvdXAoY29uc3QgTlM6OlN0
cmluZyogc3RyaW5nKTsKKworICAgIHZvaWQgICAgICAgICAgcG9wRGVidWdHcm91cCgpOworfTsK
KworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRM
OjpDb21tYW5kRW5jb2Rlcjo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpD
b21tYW5kRW5jb2Rlcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kRW5jb2Rlcjo6c2V0TGFiZWwoY29uc3QgTlM6
OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gbWV0aG9kOiBlbmRF
bmNvZGluZworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRFbmNvZGVyOjplbmRFbmNvZGlu
ZygpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGVuZEVuY29kaW5nKSk7Cit9CisKKy8vIG1ldGhvZDogaW5zZXJ0RGVidWdTaWducG9zdDoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVidWdTaWducG9z
dChjb25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc2VydERlYnVnU2lnbnBvc3RfKSwgc3RyaW5n
KTsKK30KKworLy8gbWV0aG9kOiBwdXNoRGVidWdHcm91cDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21tYW5kRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXAoY29uc3QgTlM6OlN0cmluZyogc3RyaW5n
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChwdXNoRGVidWdHcm91cF8pLCBzdHJpbmcpOworfQorCisvLyBtZXRob2Q6IHBvcERlYnVnR3Jv
dXAKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kRW5jb2Rlcjo6cG9wRGVidWdHcm91cCgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHBvcERlYnVnR3JvdXApKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRRdWV1ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU0YTE2ZTE0
YTYzY2VjYzNlYzRiYzc0ZWJiZjA4NWE0NjVkNjViZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBwCkBAIC0w
LDAgKzEsODkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIE1ldGFsL01UTENvbW1hbmRRdWV1ZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAy
MC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIK
KyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBw
IgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1U
TAoreworY2xhc3MgQ29tbWFuZFF1ZXVlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21tYW5k
UXVldWU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgbGFiZWwoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBs
YWJlbCk7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAg
IGNsYXNzIENvbW1hbmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIoKTsKKworICAgIGNsYXNzIENvbW1h
bmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIoY29uc3QgY2xhc3MgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0
b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZl
cldpdGhVbnJldGFpbmVkUmVmZXJlbmNlcygpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAg
aW5zZXJ0RGVidWdDYXB0dXJlQm91bmRhcnkoKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGxh
YmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNvbW1hbmRRdWV1ZTo6bGFiZWwoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21tYW5kUXVldWU6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8p
LCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2
aWNlKiBNVEw6OkNvbW1hbmRRdWV1ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2
aWNlKSk7Cit9CisKKy8vIG1ldGhvZDogY29tbWFuZEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpD
b21tYW5kQnVmZmVyKiBNVEw6OkNvbW1hbmRRdWV1ZTo6Y29tbWFuZEJ1ZmZlcigpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5kQnVmZmVyKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChjb21tYW5kQnVmZmVyKSk7Cit9CisKKy8vIG1ldGhvZDogY29tbWFuZEJ1
ZmZlcldpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyKiBNVEw6
OkNvbW1hbmRRdWV1ZTo6Y29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6OkNvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6Q29tbWFuZEJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZEJ1ZmZlcldp
dGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IGNvbW1hbmRCdWZm
ZXJXaXRoVW5yZXRhaW5lZFJlZmVyZW5jZXMKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZl
ciogTVRMOjpDb21tYW5kUXVldWU6OmNvbW1hbmRCdWZmZXJXaXRoVW5yZXRhaW5lZFJlZmVyZW5j
ZXMoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZEJ1ZmZl
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZEJ1ZmZlcldpdGhVbnJldGFpbmVkUmVm
ZXJlbmNlcykpOworfQorCisvLyBtZXRob2Q6IGluc2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZFF1ZXVlOjppbnNlcnREZWJ1Z0NhcHR1cmVCb3Vu
ZGFyeSgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGluc2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVy
LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29t
bWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYTllZjc4YjFlMGMzMTRkY2NjZmVkMDRjODYz
ODgxZGE4ZmJjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcApAQCAtMCwwICsxLDMzNyBA
QAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8g
TWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIw
LTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgor
I2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAi
CisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRM
QnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJN
VExDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMSGVhcC5ocHAiCisjaW5jbHVkZSAi
TVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2Uu
aHBwIgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBw
IgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlICJNVExWaXNpYmxlRnVuY3Rpb25U
YWJsZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK3N0cnVjdCBEaXNwYXRjaFRocmVhZGdyb3Vw
c0luZGlyZWN0QXJndW1lbnRzCit7CisgICAgdWludDMyX3QgdGhyZWFkZ3JvdXBzUGVyR3JpZFsz
XTsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBTdGFnZUluUmVnaW9uSW5kaXJlY3RBcmd1bWVu
dHMKK3sKKyAgICB1aW50MzJfdCBzdGFnZUluT3JpZ2luWzNdOworICAgIHVpbnQzMl90IHN0YWdl
SW5TaXplWzNdOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgQ29tcHV0ZUNvbW1hbmRFbmNvZGVy
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRlQ29tbWFuZEVuY29kZXIsIENvbW1hbmRF
bmNvZGVyPgoreworcHVibGljOgorICAgIE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSgp
IGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUo
Y29uc3QgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHN0YXRlKTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgIHNldEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3Ro
LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0QnVmZmVy
KGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUlu
dGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0QnVmZmVyT2Zmc2V0KE5T
OjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICBzZXRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50
ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJs
ZSogdmlzaWJsZUZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3Mg
VmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2Ug
cmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgSW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJh
bmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldEFjY2VsZXJhdGlvblN0cnVj
dHVyZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVj
dHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
IHNldFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFRleHR1cmVzKE1UTDo6VGV4dHVyZSog
dGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNl
dFNhbXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50
ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGVzKE1U
TDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9p
ZCAgICAgICAgICAgICAgc2V0U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSog
c2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVn
ZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0U2FtcGxlclN0YXRlcyhNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNv
bnN0IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0
aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldEltYWdl
YmxvY2tXaWR0aChOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgc2V0U3RhZ2VJblJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24p
OworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0U3RhZ2VJblJlZ2lvbihjb25zdCBjbGFzcyBC
dWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgZGlzcGF0Y2hUaHJlYWRncm91cHMoTVRMOjpTaXpl
IHRocmVhZGdyb3Vwc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgZGlzcGF0Y2hUaHJlYWRncm91cHMoY29uc3QgY2xhc3Mg
QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0
LCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgIGRpc3BhdGNoVGhyZWFkcyhNVEw6OlNpemUgdGhyZWFkc1BlckdyaWQsIE1UTDo6U2l6ZSB0
aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworCisgICAgdm9pZCAgICAgICAgICAgICAgdXBkYXRlRmVu
Y2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHdh
aXRGb3JGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVuY2UpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3VyY2UqIHJlc291cmNlLCBNVEw6OlJl
c291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgdXNlUmVzb3VyY2Vz
KE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVz
b3VyY2VVc2FnZSB1c2FnZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICB1c2VIZWFwKGNvbnN0
IGNsYXNzIEhlYXAqIGhlYXApOworCisgICAgdm9pZCAgICAgICAgICAgICAgdXNlSGVhcHMoTVRM
OjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5k
QnVmZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5TOjpSYW5nZSBleGVjdXRpb25SYW5nZSk7
CisKKyAgICB2b2lkICAgICAgICAgICAgICBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBj
bGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZGJ1ZmZlciwgY29uc3Qg
Y2xhc3MgQnVmZmVyKiBpbmRpcmVjdFJhbmdlQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RC
dWZmZXJPZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgICAgICAgbWVtb3J5QmFycmllcihNVEw6
OkJhcnJpZXJTY29wZSBzY29wZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBtZW1vcnlCYXJy
aWVyKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQpOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBjbGFzcyBD
b3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRl
eCwgYm9vbCBiYXJyaWVyKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGRpc3BhdGNoVHlwZQor
X01UTF9JTkxJTkUgTVRMOjpEaXNwYXRjaFR5cGUgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6
OmRpc3BhdGNoVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpEaXNwYXRjaFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGlzcGF0Y2hUeXBlKSk7
Cit9CisKKy8vIG1ldGhvZDogc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShj
b25zdCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBzdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5l
U3RhdGVfKSwgc3RhdGUpOworfQorCisvLyBtZXRob2Q6IHNldEJ5dGVzOmxlbmd0aDphdEluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0Qnl0ZXMo
Y29uc3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0Qnl0ZXNfbGVuZ3RoX2F0SW5kZXhfKSwgYnl0ZXMsIGxlbmd0aCwgaW5kZXgpOworfQor
CisvLyBtZXRob2Q6IHNldEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciog
YnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZl
cl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRo
b2Q6IHNldEJ1ZmZlck9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1
dGVDb21tYW5kRW5jb2Rlcjo6c2V0QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5T
OjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyT2Zmc2V0X2F0SW5kZXhfKSwgb2Zmc2V0LCBpbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcnMoTVRMOjpC
dWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdl
IHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZl
ckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0
VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlz
aWJsZUZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1
bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8pLCB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgYnVmZmVy
SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVm
ZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpz
ZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSog
dmlzaWJsZUZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0
aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCB2aXNpYmxlRnVuY3Rpb25UYWJsZXMsIHJhbmdl
KTsKK30KKworLy8gbWV0aG9kOiBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOmF0QnVmZmVy
SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgaW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVz
KGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
c193aXRoQnVmZmVyUmFuZ2VfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsK
K30KKworLy8gbWV0aG9kOiBzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEFjY2VsZXJh
dGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0
aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFjY2VsZXJhdGlvblN0
cnVjdHVyZV9hdEJ1ZmZlckluZGV4XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgYnVmZmVySW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRleHR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFRleHR1cmUoY29uc3QgTVRMOjpUZXh0
dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVfYXRJbmRleF8pLCB0
ZXh0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGV4dHVyZXM6d2l0aFJhbmdlOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0VGV4dHVyZXMo
TVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVzX3dp
dGhSYW5nZV8pLCB0ZXh0dXJlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJT
dGF0ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rl
cjo6c2V0U2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZXJTdGF0ZV9hdEluZGV4XyksIHNhbXBsZXIsIGluZGV4
KTsKK30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZXMoTVRM
OjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0
YXRlc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRT
YW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZShjb25zdCBN
VEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1h
eENsYW1wLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9s
b2RNYXhDbGFtcF9hdEluZGV4XyksIHNhbXBsZXIsIGxvZE1pbkNsYW1wLCBsb2RNYXhDbGFtcCwg
aW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxv
ZE1heENsYW1wczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1h
bmRFbmNvZGVyOjpzZXRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1td
LCBjb25zdCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10s
IE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xh
bXBzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgbG9kTWluQ2xhbXBzLCBsb2RNYXhDbGFtcHMsIHJh
bmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aDphdEluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0VGhyZWFk
Z3JvdXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aF9hdEluZGV4XyksIGxlbmd0aCwgaW5kZXgpOwor
fQorCisvLyBtZXRob2Q6IHNldEltYWdlYmxvY2tXaWR0aDpoZWlnaHQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRJbWFnZWJsb2NrV2lkdGgoTlM6OlVJ
bnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbWFnZWJsb2NrV2lkdGhfaGVp
Z2h0XyksIHdpZHRoLCBoZWlnaHQpOworfQorCisvLyBtZXRob2Q6IHNldFN0YWdlSW5SZWdpb246
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRTdGFnZUlu
UmVnaW9uKE1UTDo6UmVnaW9uIHJlZ2lvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhZ2VJblJlZ2lvbl8pLCByZWdpb24pOwor
fQorCisvLyBtZXRob2Q6IHNldFN0YWdlSW5SZWdpb25XaXRoSW5kaXJlY3RCdWZmZXI6aW5kaXJl
Y3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyOjpzZXRTdGFnZUluUmVnaW9uKGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGFnZUluUmVnaW9uV2l0aElu
ZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIGluZGlyZWN0QnVmZmVyLCBpbmRp
cmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogZGlzcGF0Y2hUaHJlYWRncm91cHM6
dGhyZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21t
YW5kRW5jb2Rlcjo6ZGlzcGF0Y2hUaHJlYWRncm91cHMoTVRMOjpTaXplIHRocmVhZGdyb3Vwc1Bl
ckdyaWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVGhyZWFkZ3Jv
dXBzX3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCB0aHJlYWRncm91cHNQZXJHcmlkLCB0aHJlYWRz
UGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IGRpc3BhdGNoVGhyZWFkZ3JvdXBzV2l0
aEluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OnRocmVhZHNQZXJUaHJlYWRncm91
cDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNo
VGhyZWFkZ3JvdXBzKGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0LCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3Vw
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChkaXNwYXRjaFRocmVhZGdyb3Vwc1dpdGhJbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9m
ZnNldF90aHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVm
ZmVyT2Zmc2V0LCB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IGRpc3Bh
dGNoVGhyZWFkczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaFRocmVhZHMoTVRMOjpTaXplIHRocmVhZHNQ
ZXJHcmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkaXNwYXRjaFRocmVhZHNf
dGhyZWFkc1BlclRocmVhZGdyb3VwXyksIHRocmVhZHNQZXJHcmlkLCB0aHJlYWRzUGVyVGhyZWFk
Z3JvdXApOworfQorCisvLyBtZXRob2Q6IHVwZGF0ZUZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSog
ZmVuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHVwZGF0ZUZlbmNlXyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB3YWl0Rm9yRmVu
Y2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp3YWl0Rm9y
RmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdhaXRGb3JGZW5jZV8pLCBmZW5jZSk7Cit9
CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2U6dXNhZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp1c2VSZXNvdXJjZShjb25zdCBNVEw6OlJlc291cmNlKiBy
ZXNvdXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZV91c2FnZV8pLCBy
ZXNvdXJjZSwgdXNhZ2UpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlczpjb3VudDp1c2Fn
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnVzZVJlc291
cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6
OlJlc291cmNlVXNhZ2UgdXNhZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJlc291cmNlc19jb3VudF91c2FnZV8pLCByZXNvdXJj
ZXMsIGNvdW50LCB1c2FnZSk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnVzZUhlYXAoY29uc3QgTVRMOjpIZWFw
KiBoZWFwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTCh1c2VIZWFwXyksIGhlYXApOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXBzOmNvdW50
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcHMo
TVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBzX2NvdW50Xyks
IGhlYXBzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXI6
d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6
ZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIq
IGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlJhbmdlIGV4ZWN1dGlvblJhbmdlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChleGVjdXRl
Q29tbWFuZHNJbkJ1ZmZlcl93aXRoUmFuZ2VfKSwgaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBleGVj
dXRpb25SYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXI6aW5k
aXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBNVEw6
OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kYnVmZmVyLCBjb25zdCBNVEw6
OkJ1ZmZlciogaW5kaXJlY3RSYW5nZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVy
T2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1
ZmZlck9mZnNldF8pLCBpbmRpcmVjdENvbW1hbmRidWZmZXIsIGluZGlyZWN0UmFuZ2VCdWZmZXIs
IGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiBtZW1vcnlCYXJyaWVyV2l0
aFNjb3BlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6bWVt
b3J5QmFycmllcihNVEw6OkJhcnJpZXJTY29wZSBzY29wZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtb3J5QmFycmllcldpdGhTY29w
ZV8pLCBzY29wZSk7Cit9CisKKy8vIG1ldGhvZDogbWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXM6
Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjptZW1v
cnlCYXJyaWVyKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzX2NvdW50XyksIHJlc291cmNlcywgY291bnQpOwor
fQorCisvLyBtZXRob2Q6IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRTYW1wbGVJbmRleDp3aXRo
QmFycmllcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNh
bXBsZUNvdW50ZXJzSW5CdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1w
bGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVD
b3VudGVyc0luQnVmZmVyX2F0U2FtcGxlSW5kZXhfd2l0aEJhcnJpZXJfKSwgc2FtcGxlQnVmZmVy
LCBzYW1wbGVJbmRleCwgYmFycmllcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2Q0
YjUyNjc2ZGRiMDFkNmY1ODk4YzVkNzMxNTFhZTNmNzQ2M2VlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcApA
QCAtMCwwICsxLDE4MSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwCisvLworLy8gQ29weXJpZ2h0
IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2Ug
dGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8g
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5o
cHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRl
LmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRl
ICJNVExDb21tYW5kQnVmZmVyLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQ29tcHV0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWlu
ZzxDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvdW50ZXJTYW1w
bGVCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVCdWZmZXIoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0U2FtcGxlQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZm
ZXIqIHNhbXBsZUJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFy
dE9mRW5jb2RlclNhbXBsZUluZGV4KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5k
T2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworfTsKKworY2xhc3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21w
dXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENv
bXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICAgIG9i
amVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVj
dChjb25zdCBjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
KiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNz
IENvbXB1dGVQYXNzRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxDb21wdXRlUGFzc0Rl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvbXB1dGVQYXNzRGVzY3Jp
cHRvciogICAgICAgICAgICAgICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBh
c3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBz
dGF0aWMgY2xhc3MgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGNv
bXB1dGVQYXNzRGVzY3JpcHRvcigpOworCisgICAgTVRMOjpEaXNwYXRjaFR5cGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaFR5cGUoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dERpc3BhdGNoVHlwZShNVEw6OkRpc3BhdGNoVHlwZSBkaXNwYXRjaFR5cGUpOworCisgICAgY2xh
c3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBzYW1w
bGVCdWZmZXJBdHRhY2htZW50cygpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21w
dXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisv
LyBwcm9wZXJ0eTogc2FtcGxlQnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVC
dWZmZXIqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6
c2FtcGxlQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1
ZmZlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U2FtcGxlQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRl
clNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVCdWZmZXJfKSwgc2FtcGxlQnVm
ZmVyKTsKK30KKworLy8gcHJvcGVydHk6IHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExf
SU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I6OnN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdGFy
dE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRW5jb2RlclNhbXBsZUlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4XyksIHN0YXJ0T2ZFbmNvZGVyU2FtcGxl
SW5kZXgpOworfQorCisvLyBwcm9wZXJ0eTogZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExf
SU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I6OmVuZE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldEVuZE9mRW5j
b2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXhfKSwgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1Nh
bXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6Q29tcHV0ZVBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
ckFycmF5KiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1l
dGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBh
dHRhY2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpD
b21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudEluZGV4KTsK
K30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5k
ZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21w
dXRlUGFzc0Rlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjphbGxvYygpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9y
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yKiBNVEw6
OkNvbXB1dGVQYXNzRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmluaXQ8TVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IGNvbXB1dGVQYXNzRGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc0Rl
c2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjpjb21wdXRlUGFzc0Rlc2NyaXB0
b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBhc3NE
ZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21wdXRlUGFzc0Rlc2NyaXB0b3IpLCBf
TVRMX1BSSVZBVEVfU0VMKGNvbXB1dGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0
eTogZGlzcGF0Y2hUeXBlCitfTVRMX0lOTElORSBNVEw6OkRpc3BhdGNoVHlwZSBNVEw6OkNvbXB1
dGVQYXNzRGVzY3JpcHRvcjo6ZGlzcGF0Y2hUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRpc3BhdGNoVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NF
TChkaXNwYXRjaFR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQYXNz
RGVzY3JpcHRvcjo6c2V0RGlzcGF0Y2hUeXBlKE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlw
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0RGlzcGF0Y2hUeXBlXyksIGRpc3BhdGNoVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBz
YW1wbGVCdWZmZXJBdHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlw
dG9yOjpzYW1wbGVCdWZmZXJBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlckF0dGFjaG1l
bnRzKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlNTZkN2ZmZDJlM2Vm
NzQ3Yjk1YmU1NDA5MjhiZTZmZjAyODAyNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcApAQCAtMCww
ICsxLDM1NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcAorLy8KKy8vIENvcHlyaWdodCAy
MDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBw
IgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5o
cHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAi
TVRMVHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBDb21wdXRlUGlwZWxpbmVS
ZWZsZWN0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRlUGlwZWxpbmVSZWZsZWN0
aW9uPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21wdXRlUGlwZWxpbmVSZWZsZWN0
aW9uKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogICAg
ICAgIGluaXQoKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudHMoKSBjb25zdDsKK307CisKK2NsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogYWxsb2Mo
KTsKKworICAgIGNsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7
CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFi
ZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbXB1dGVGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb21wdXRlRnVuY3Rpb24oY29uc3Qg
Y2xhc3MgRnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbik7CisKKyAgICBib29sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFk
RXhlY3V0aW9uV2lkdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0VGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9u
V2lkdGgoYm9vbCB0aHJlYWRHcm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0
aCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VG90
YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0TWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoTlM6
OlVJbnRlZ2VyIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKTsKKworICAgIGNsYXNzIFN0
YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKiAgICAgICBzdGFnZUlucHV0RGVzY3JpcHRvcigpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFn
ZUlucHV0RGVzY3JpcHRvcihjb25zdCBjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciog
c3RhZ2VJbnB1dERlc2NyaXB0b3IpOworCisgICAgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlw
dG9yQXJyYXkqICAgIGJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0
SW5kaXJlY3RDb21tYW5kQnVmZmVycyhib29sIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJz
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRM
aWJyYXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0SW5zZXJ0TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogaW5zZXJ0TGlicmFyaWVz
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVsb2Fk
ZWRMaWJyYXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogcHJlbG9hZGVk
TGlicmFyaWVzKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiaW5hcnlBcmNoaXZlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFy
Y2hpdmVzKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNldCgpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiAgICAgICAgICAgICAgICAgIGxp
bmtlZEZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRMaW5rZWRGdW5jdGlvbnMoY29uc3QgY2xhc3MgTGlua2VkRnVuY3Rpb25z
KiBsaW5rZWRGdW5jdGlvbnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VwcG9ydEFkZGluZ0JpbmFy
eUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heENhbGxTdGFja0RlcHRoKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1h
eENhbGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhDYWxsU3RhY2tEZXB0aCk7Cit9OworCitj
bGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q29tcHV0
ZVBpcGVsaW5lU3RhdGU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAg
ICAgICAgICAgbGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNzIERldmljZSogICAgICAgICAgICAg
ICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICAgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdDsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgICAgICAgICAgIHRocmVhZEV4ZWN1dGlvbldpZHRoKCkgY29uc3Q7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBzdGF0aWNUaHJlYWRncm91
cE1lbW9yeUxlbmd0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICAgaW1hZ2VibG9ja01lbW9yeUxlbmd0aChNVEw6OlNpemUgaW1hZ2VibG9ja0RpbWVuc2lv
bnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEluZGly
ZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGNsYXNzIEZ1bmN0aW9uSGFuZGxlKiAg
ICAgICAgICAgIGZ1bmN0aW9uSGFuZGxlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBmdW5jdGlvbik7
CisKKyAgICBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogICAgICBuZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZShjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpOwor
CisgICAgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqICAgICAgbmV3VmlzaWJsZUZ1bmN0aW9u
VGFibGUoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKTsKKworICAgIGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIG5ld0ludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxv
YworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiBNVEw6OkNvbXB1
dGVQaXBlbGluZVJlZmxlY3Rpb246OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24pKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OkNvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIE1UTDo6Q29tcHV0ZVBpcGVs
aW5lUmVmbGVjdGlvbjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uPigpOworfQorCisvLyBwcm9wZXJ0eTogYXJndW1l
bnRzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlv
bjo6YXJndW1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50cykpOworfQorCisvLyBz
dGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Iq
IE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPigpOworfQorCisv
LyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRM
YWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisv
LyBwcm9wZXJ0eTogY29tcHV0ZUZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBN
VEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OmNvbXB1dGVGdW5jdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoY29tcHV0ZUZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRDb21wdXRlRnVuY3Rpb24oY29uc3Qg
TVRMOjpGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlRnVuY3Rpb25fKSwgY29t
cHV0ZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZEdyb3VwU2l6ZUlzTXVsdGlw
bGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcjo6dGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0
aW9uV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFk
RXhlY3V0aW9uV2lkdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3I6OnNldFRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1
dGlvbldpZHRoKGJvb2wgdGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9u
V2lkdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRo
XyksIHRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKTsKK30K
KworLy8gcHJvcGVydHk6IG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhUb3RhbFRo
cmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFRvdGFsVGhyZWFk
c1BlclRocmVhZGdyb3VwKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cChOUzo6VUlu
dGVnZXIgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heFRvdGFsVGhyZWFkc1Bl
clRocmVhZGdyb3VwXyksIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKTsKK30KKworLy8g
cHJvcGVydHk6IHN0YWdlSW5wdXREZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlN0YWdlSW5w
dXRPdXRwdXREZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnN0YWdl
SW5wdXREZXNjcmlwdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzdGFnZUlucHV0RGVzY3JpcHRvcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3RhZ2VJbnB1dERlc2NyaXB0b3IoY29uc3QgTVRM
OjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogc3RhZ2VJbnB1dERlc2NyaXB0b3IpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0
YWdlSW5wdXREZXNjcmlwdG9yXyksIHN0YWdlSW5wdXREZXNjcmlwdG9yKTsKK30KKworLy8gcHJv
cGVydHk6IGJ1ZmZlcnMKK19NVExfSU5MSU5FIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9y
QXJyYXkqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6YnVmZmVycygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2Ny
aXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVycykpOworfQorCisvLyBw
cm9wZXJ0eTogc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVm
ZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNl
dFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKGJvb2wgc3VwcG9ydEluZGlyZWN0Q29tbWFu
ZEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzXyksIHN1cHBvcnRJbmRp
cmVjdENvbW1hbmRCdWZmZXJzKTsKK30KKworLy8gcHJvcGVydHk6IGluc2VydExpYnJhcmllcwor
X01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6Omlu
c2VydExpYnJhcmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnNlcnRMaWJyYXJpZXMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldElu
c2VydExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIGluc2VydExpYnJhcmllcykKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5zZXJ0
TGlicmFyaWVzXyksIGluc2VydExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiBwcmVsb2Fk
ZWRMaWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yOjpwcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlbG9h
ZGVkTGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRQcmVsb2FkZWRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiBwcmVs
b2FkZWRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFByZWxvYWRlZExpYnJhcmllc18pLCBwcmVsb2FkZWRMaWJyYXJp
ZXMpOworfQorCisvLyBwcm9wZXJ0eTogYmluYXJ5QXJjaGl2ZXMKK19NVExfSU5MSU5FIE5TOjpB
cnJheSogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpiaW5hcnlBcmNoaXZlcygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChiaW5hcnlBcmNoaXZlcykpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMoY29uc3Qg
TlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmluYXJ5QXJj
aGl2ZXMpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldCkpOworfQorCisvLyBwcm9wZXJ0
eTogbGlua2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpsaW5rZWRGdW5jdGlvbnMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlua2VkRnVuY3Rpb25zKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChsaW5rZWRGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldExpbmtlZEZ1bmN0aW9ucyhj
b25zdCBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogbGlua2VkRnVuY3Rpb25zKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMaW5rZWRGdW5j
dGlvbnNfKSwgbGlua2VkRnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRBZGRp
bmdCaW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yOjpzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVu
Y3Rpb25zKGJvb2wgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFkZGlu
Z0JpbmFyeUZ1bmN0aW9uc18pLCBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKTsKK30KKwor
Ly8gcHJvcGVydHk6IG1heENhbGxTdGFja0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG1heENhbGxTdGFja0RlcHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhDYWxsU3RhY2tEZXB0aChO
Uzo6VUludGVnZXIgbWF4Q2FsbFN0YWNrRGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heENhbGxTdGFja0RlcHRoXyksIG1h
eENhbGxTdGFja0RlcHRoKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBO
Uzo6U3RyaW5nKiBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpsYWJlbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUg
TVRMOjpEZXZpY2UqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OmRldmljZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VG90YWxUaHJlYWRz
UGVyVGhyZWFkZ3JvdXAKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBl
bGluZVN0YXRlOjptYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKSk7Cit9CisKKy8vIHByb3BlcnR5
OiB0aHJlYWRFeGVjdXRpb25XaWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29t
cHV0ZVBpcGVsaW5lU3RhdGU6OnRocmVhZEV4ZWN1dGlvbldpZHRoKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodGhyZWFkRXhlY3V0aW9uV2lkdGgpKTsKK30KKworLy8gcHJvcGVydHk6IHN0YXRpY1Ro
cmVhZGdyb3VwTWVtb3J5TGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpDb21w
dXRlUGlwZWxpbmVTdGF0ZTo6c3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzdGF0aWNUaHJlYWRncm91cE1lbW9yeUxlbmd0aCkpOworfQorCisvLyBt
ZXRob2Q6IGltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zOgorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OmltYWdlYmxvY2tNZW1vcnlM
ZW5ndGgoTVRMOjpTaXplIGltYWdlYmxvY2tEaW1lbnNpb25zKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbWFn
ZWJsb2NrTWVtb3J5TGVuZ3RoRm9yRGltZW5zaW9uc18pLCBpbWFnZWJsb2NrRGltZW5zaW9ucyk7
Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycworX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpzdXBwb3J0SW5kaXJlY3RDb21t
YW5kQnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZl
cnMpKTsKK30KKworLy8gbWV0aG9kOiBmdW5jdGlvbkhhbmRsZVdpdGhGdW5jdGlvbjoKK19NVExf
SU5MSU5FIE1UTDo6RnVuY3Rpb25IYW5kbGUqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OmZ1
bmN0aW9uSGFuZGxlKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGZ1bmN0aW9uKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25IYW5kbGUqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGZ1bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uXyksIGZ1bmN0aW9uKTsKK30KKwor
Ly8gbWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVu
Y3Rpb25zOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSogTVRM
OjpDb21wdXRlUGlwZWxpbmVTdGF0ZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTlM6
OkFycmF5KiBmdW5jdGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlGdW5j
dGlvbnNfZXJyb3JfKSwgZnVuY3Rpb25zLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Vmlz
aWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6VmlzaWJs
ZUZ1bmN0aW9uVGFibGUqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Om5ld1Zpc2libGVGdW5j
dGlvblRhYmxlKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNj
cmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmlzaWJsZUZ1
bmN0aW9uVGFibGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Zpc2libGVGdW5jdGlvblRh
YmxlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3SW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpuZXdJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3Jp
cHRvcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMQ291bnRlcnMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTENvdW50ZXJzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTY1YzFkOGVhMDE4MTZkZDdkZmI2OTQ4MWQ3
YTI4ZGI2NDE3YjUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTENvdW50ZXJzLmhwcApAQCAtMCwwICsxLDI1OCBAQAorLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ291
bnRlcnMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdl
LmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisKK25hbWVzcGFj
ZSBNVEwKK3sKKworX01UTF9DT05TVCggTlM6OkVycm9yRG9tYWluLCBDb3VudGVyRXJyb3JEb21h
aW4gKTsKKwordXNpbmcgQ29tbW9uQ291bnRlciA9IE5TOjpTdHJpbmcqOworCitfTVRMX0NPTlNU
KCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVGltZXN0YW1wICk7CitfTVRMX0NPTlNUKCBD
b21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVGVzc2VsbGF0aW9uSW5wdXRQYXRjaGVzICk7Citf
TVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVmVydGV4SW52b2NhdGlvbnMg
KTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJQb3N0VGVzc2VsbGF0
aW9uVmVydGV4SW52b2NhdGlvbnMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1v
bkNvdW50ZXJDbGlwcGVySW52b2NhdGlvbnMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIs
IENvbW1vbkNvdW50ZXJDbGlwcGVyUHJpbWl0aXZlc091dCApOworX01UTF9DT05TVCggQ29tbW9u
Q291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50SW52b2NhdGlvbnMgKTsKK19NVExfQ09OU1Qo
IENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJGcmFnbWVudHNQYXNzZWQgKTsKK19NVExfQ09O
U1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJDb21wdXRlS2VybmVsSW52b2NhdGlvbnMg
KTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUb3RhbEN5Y2xlcyAp
OworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclZlcnRleEN5Y2xlcyAp
OworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclRlc3NlbGxhdGlvbkN5
Y2xlcyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclBvc3RUZXNz
ZWxsYXRpb25WZXJ0ZXhDeWNsZXMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1v
bkNvdW50ZXJGcmFnbWVudEN5Y2xlcyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29t
bW9uQ291bnRlclJlbmRlclRhcmdldFdyaXRlQ3ljbGVzICk7CisKK3VzaW5nIENvbW1vbkNvdW50
ZXJTZXQgPSBOUzo6U3RyaW5nKjsKKworX01UTF9DT05TVCggQ29tbW9uQ291bnRlclNldCwgQ29t
bW9uQ291bnRlclNldFRpbWVzdGFtcCApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlclNldCwg
Q29tbW9uQ291bnRlclNldFN0YWdlVXRpbGl6YXRpb24gKTsKK19NVExfQ09OU1QoIENvbW1vbkNv
dW50ZXJTZXQsIENvbW1vbkNvdW50ZXJTZXRTdGF0aXN0aWMgKTsKKworc3RydWN0IENvdW50ZXJS
ZXN1bHRUaW1lc3RhbXAKK3sKKyAgICB1aW50NjRfdCB0aW1lc3RhbXA7Cit9IF9NVExfUEFDS0VE
OworCitzdHJ1Y3QgQ291bnRlclJlc3VsdFN0YWdlVXRpbGl6YXRpb24KK3sKKyAgICB1aW50NjRf
dCB0b3RhbEN5Y2xlczsKKyAgICB1aW50NjRfdCB2ZXJ0ZXhDeWNsZXM7CisgICAgdWludDY0X3Qg
dGVzc2VsbGF0aW9uQ3ljbGVzOworICAgIHVpbnQ2NF90IHBvc3RUZXNzZWxsYXRpb25WZXJ0ZXhD
eWNsZXM7CisgICAgdWludDY0X3QgZnJhZ21lbnRDeWNsZXM7CisgICAgdWludDY0X3QgcmVuZGVy
VGFyZ2V0Q3ljbGVzOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IENvdW50ZXJSZXN1bHRTdGF0
aXN0aWMKK3sKKyAgICB1aW50NjRfdCB0ZXNzZWxsYXRpb25JbnB1dFBhdGNoZXM7CisgICAgdWlu
dDY0X3QgdmVydGV4SW52b2NhdGlvbnM7CisgICAgdWludDY0X3QgcG9zdFRlc3NlbGxhdGlvblZl
cnRleEludm9jYXRpb25zOworICAgIHVpbnQ2NF90IGNsaXBwZXJJbnZvY2F0aW9uczsKKyAgICB1
aW50NjRfdCBjbGlwcGVyUHJpbWl0aXZlc091dDsKKyAgICB1aW50NjRfdCBmcmFnbWVudEludm9j
YXRpb25zOworICAgIHVpbnQ2NF90IGZyYWdtZW50c1Bhc3NlZDsKKyAgICB1aW50NjRfdCBjb21w
dXRlS2VybmVsSW52b2NhdGlvbnM7Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBDb3VudGVyIDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxDb3VudGVyPgoreworcHVibGljOgorICAgIE5TOjpTdHJp
bmcqIG5hbWUoKSBjb25zdDsKK307CisKK2NsYXNzIENvdW50ZXJTZXQgOiBwdWJsaWMgTlM6OlJl
ZmVyZW5jaW5nPENvdW50ZXJTZXQ+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogbmFtZSgp
IGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgY291bnRlcnMoKSBjb25zdDsKK307CisKK2NsYXNz
IENvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPENvdW50
ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBD
b3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIENvdW50
ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQ291
bnRlclNldCogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyU2V0KCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb3VudGVy
U2V0KGNvbnN0IGNsYXNzIENvdW50ZXJTZXQqIGNvdW50ZXJTZXQpOworCisgICAgTlM6OlN0cmlu
ZyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3Qg
TlM6OlN0cmluZyogbGFiZWwpOworCisgICAgTVRMOjpTdG9yYWdlTW9kZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9k
ZSBzdG9yYWdlTW9kZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxl
Q291bnQpOworfTsKKworY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciA6IHB1YmxpYyBOUzo6UmVm
ZXJlbmNpbmc8Q291bnRlclNhbXBsZUJ1ZmZlcj4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBEZXZp
Y2UqIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICBsYWJlbCgpIGNvbnN0Owor
CisgICAgTlM6OlVJbnRlZ2VyICBzYW1wbGVDb3VudCgpIGNvbnN0OworCisgICAgTlM6OkRhdGEq
ICAgICByZXNvbHZlQ291bnRlclJhbmdlKE5TOjpSYW5nZSByYW5nZSk7Cit9OworCitfTVRMX0VO
VU0oTlM6OkludGVnZXIsIENvdW50ZXJTYW1wbGVCdWZmZXJFcnJvcikgeworICAgIENvdW50ZXJT
YW1wbGVCdWZmZXJFcnJvck91dE9mTWVtb3J5ID0gMCwKKyAgICBDb3VudGVyU2FtcGxlQnVmZmVy
RXJyb3JJbnZhbGlkID0gMSwKK307CisKK30KKworX01UTF9QUklWQVRFX0RFRl9TVFIoIE5TOjpF
cnJvckRvbWFpbiwgQ291bnRlckVycm9yRG9tYWluICk7CisKK19NVExfUFJJVkFURV9ERUZfU1RS
KCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUaW1lc3RhbXAgKTsKK19NVExfUFJJ
VkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUZXNzZWxsYXRp
b25JbnB1dFBhdGNoZXMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50
ZXIsIENvbW1vbkNvdW50ZXJWZXJ0ZXhJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9T
VFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclBvc3RUZXNzZWxsYXRpb25WZXJ0
ZXhJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRl
ciwgQ29tbW9uQ291bnRlckNsaXBwZXJJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9T
VFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckNsaXBwZXJQcmltaXRpdmVzT3V0
ICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3Vu
dGVyRnJhZ21lbnRJbnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29t
bW9uQ291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50c1Bhc3NlZCApOworX01UTF9QUklWQVRF
X0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckNvbXB1dGVLZXJuZWxJ
bnZvY2F0aW9ucyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwg
Q29tbW9uQ291bnRlclRvdGFsQ3ljbGVzICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpD
b21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVmVydGV4Q3ljbGVzICk7CitfTVRMX1BSSVZBVEVf
REVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVGVzc2VsbGF0aW9uQ3lj
bGVzICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25D
b3VudGVyUG9zdFRlc3NlbGxhdGlvblZlcnRleEN5Y2xlcyApOworX01UTF9QUklWQVRFX0RFRl9T
VFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50Q3ljbGVzICk7Citf
TVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyUmVu
ZGVyVGFyZ2V0V3JpdGVDeWNsZXMgKTsKKworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29t
bW9uQ291bnRlclNldCwgQ29tbW9uQ291bnRlclNldFRpbWVzdGFtcCApOworX01UTF9QUklWQVRF
X0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlclNldCwgQ29tbW9uQ291bnRlclNldFN0YWdlVXRp
bGl6YXRpb24gKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXJTZXQs
IENvbW1vbkNvdW50ZXJTZXRTdGF0aXN0aWMgKTsKKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExf
SU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q291bnRlcjo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmlu
ZyogTVRMOjpDb3VudGVyU2V0OjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBjb3VudGVycworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkNv
dW50ZXJTZXQ6OmNvdW50ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvdW50ZXJzKSk7Cit9CisK
Ky8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVC
dWZmZXJEZXNjcmlwdG9yKiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjphbGxv
YygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q291bnRlclNhbXBsZUJ1
ZmZlckRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQ291bnRlclNhbXBsZUJ1ZmZlckRl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvdW50
ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlw
dG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvdW50ZXJT
YW1wbGVCdWZmZXJEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogY291bnRlclNldAor
X01UTF9JTkxJTkUgTVRMOjpDb3VudGVyU2V0KiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNj
cmlwdG9yOjpjb3VudGVyU2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkNvdW50ZXJTZXQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvdW50ZXJTZXQp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlw
dG9yOjpzZXRDb3VudGVyU2V0KGNvbnN0IE1UTDo6Q291bnRlclNldCogY291bnRlclNldCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
Q291bnRlclNldF8pLCBjb3VudGVyU2V0KTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRM
X0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjps
YWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmlu
Zyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6
U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogc3Rv
cmFnZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6U3RvcmFnZU1vZGUgTVRMOjpDb3VudGVyU2FtcGxl
QnVmZmVyRGVzY3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RvcmFnZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c3RvcmFnZU1vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvdW50ZXJTYW1wbGVC
dWZmZXJEZXNjcmlwdG9yOjpzZXRTdG9yYWdlTW9kZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VN
b2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRTdG9yYWdlTW9kZV8pLCBzdG9yYWdlTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBz
YW1wbGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q291bnRlclNhbXBsZUJ1
ZmZlckRlc2NyaXB0b3I6OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxl
Q291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJE
ZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxlQ291bnQpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNh
bXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01U
TF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcjo6ZGV2aWNlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAor
X01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyOjpsYWJlbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNv
dW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyOjpz
YW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50KSk7Cit9CisKKy8v
IG1ldGhvZDogcmVzb2x2ZUNvdW50ZXJSYW5nZToKK19NVExfSU5MSU5FIE5TOjpEYXRhKiBNVEw6
OkNvdW50ZXJTYW1wbGVCdWZmZXI6OnJlc29sdmVDb3VudGVyUmFuZ2UoTlM6OlJhbmdlIHJhbmdl
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpEYXRhKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChyZXNvbHZlQ291bnRlclJhbmdlXyksIHJhbmdlKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NjJlN2EyY2M5MDQzMmFiMGQyZmQ0OGI5ZmUxOGMwZDUzNWI5N2NhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlZmlu
ZXMuaHBwCkBAIC0wLDAgKzEsNDEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTERlZmluZXMuaHBwCisvLworLy8gQ29weXJp
Z2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNE
ZWZpbmVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNkZWZpbmUgX01UTF9FWFBPUlQgX05TX0VYUE9SVAorI2RlZmluZSBfTVRMX0VYVEVS
TiBfTlNfRVhURVJOCisjZGVmaW5lIF9NVExfSU5MSU5FIF9OU19JTkxJTkUKKyNkZWZpbmUgX01U
TF9QQUNLRUQgX05TX1BBQ0tFRAorCisjZGVmaW5lIF9NVExfQ09OU1QodHlwZSwgbmFtZSkgX05T
X0NPTlNUKHR5cGUsIG5hbWUpCisjZGVmaW5lIF9NVExfRU5VTSh0eXBlLCBuYW1lKSBfTlNfRU5V
TSh0eXBlLCBuYW1lKQorI2RlZmluZSBfTVRMX09QVElPTlModHlwZSwgbmFtZSkgX05TX09QVElP
TlModHlwZSwgbmFtZSkKKworI2RlZmluZSBfTVRMX1ZBTElEQVRFX1NJWkUobnMsIG5hbWUpIF9O
U19WQUxJREFURV9TSVpFKG5zLCBuYW1lKQorI2RlZmluZSBfTVRMX1ZBTElEQVRFX0VOVU0obnMs
IG5hbWUpIF9OU19WQUxJREFURV9FTlVNKG5zLCBuYW1lKQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlcHRoU3RlbmNpbC5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ3
NzRkY2VjMDFlODU5YTEwMDFkZjM5MmRiMzNiYmJlNjgyOTEyNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBw
CkBAIC0wLDAgKzEsMjY5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExEZXB0aFN0ZW5jaWwuaHBwCisvLworLy8gQ29weXJp
Z2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5l
cy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2
YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNs
dWRlICJNVExEZXB0aFN0ZW5jaWwuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0o
TlM6OlVJbnRlZ2VyLCBDb21wYXJlRnVuY3Rpb24pIHsKKyAgICBDb21wYXJlRnVuY3Rpb25OZXZl
ciA9IDAsCisgICAgQ29tcGFyZUZ1bmN0aW9uTGVzcyA9IDEsCisgICAgQ29tcGFyZUZ1bmN0aW9u
RXF1YWwgPSAyLAorICAgIENvbXBhcmVGdW5jdGlvbkxlc3NFcXVhbCA9IDMsCisgICAgQ29tcGFy
ZUZ1bmN0aW9uR3JlYXRlciA9IDQsCisgICAgQ29tcGFyZUZ1bmN0aW9uTm90RXF1YWwgPSA1LAor
ICAgIENvbXBhcmVGdW5jdGlvbkdyZWF0ZXJFcXVhbCA9IDYsCisgICAgQ29tcGFyZUZ1bmN0aW9u
QWx3YXlzID0gNywKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFN0ZW5jaWxPcGVyYXRp
b24pIHsKKyAgICBTdGVuY2lsT3BlcmF0aW9uS2VlcCA9IDAsCisgICAgU3RlbmNpbE9wZXJhdGlv
blplcm8gPSAxLAorICAgIFN0ZW5jaWxPcGVyYXRpb25SZXBsYWNlID0gMiwKKyAgICBTdGVuY2ls
T3BlcmF0aW9uSW5jcmVtZW50Q2xhbXAgPSAzLAorICAgIFN0ZW5jaWxPcGVyYXRpb25EZWNyZW1l
bnRDbGFtcCA9IDQsCisgICAgU3RlbmNpbE9wZXJhdGlvbkludmVydCA9IDUsCisgICAgU3RlbmNp
bE9wZXJhdGlvbkluY3JlbWVudFdyYXAgPSA2LAorICAgIFN0ZW5jaWxPcGVyYXRpb25EZWNyZW1l
bnRXcmFwID0gNywKK307CisKK2NsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yIDogcHVibGljIE5TOjpD
b3B5aW5nPFN0ZW5jaWxEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBT
dGVuY2lsRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9y
KiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpDb21wYXJlRnVuY3Rpb24gICAgICAgICAgICBz
dGVuY2lsQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRTdGVuY2lsQ29tcGFyZUZ1bmN0aW9uKE1UTDo6Q29tcGFyZUZ1bmN0aW9u
IHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24pOworCisgICAgTVRMOjpTdGVuY2lsT3BlcmF0aW9uICAg
ICAgICAgICBzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbEZhaWx1cmVPcGVyYXRpb24oTVRMOjpTdGVu
Y2lsT3BlcmF0aW9uIHN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uKTsKKworICAgIE1UTDo6U3RlbmNp
bE9wZXJhdGlvbiAgICAgICAgICAgZGVwdGhGYWlsdXJlT3BlcmF0aW9uKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aEZhaWx1cmVPcGVyYXRpb24o
TVRMOjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoRmFpbHVyZU9wZXJhdGlvbik7CisKKyAgICBNVEw6
OlN0ZW5jaWxPcGVyYXRpb24gICAgICAgICAgIGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24oKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoU3RlbmNp
bFBhc3NPcGVyYXRpb24oTVRMOjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoU3RlbmNpbFBhc3NPcGVy
YXRpb24pOworCisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICByZWFkTWFzaygp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVhZE1hc2so
dWludDMyX3QgcmVhZE1hc2spOworCisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAg
ICB3cml0ZU1hc2soKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFdyaXRlTWFzayh1aW50MzJfdCB3cml0ZU1hc2spOworfTsKKworY2xhc3MgRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogICAgICAgIGluaXQo
KTsKKworICAgIE1UTDo6Q29tcGFyZUZ1bmN0aW9uICAgICAgICAgICAgICAgICBkZXB0aENvbXBh
cmVGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXREZXB0aENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlvbiBkZXB0aENv
bXBhcmVGdW5jdGlvbik7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVwdGhXcml0ZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0RGVwdGhXcml0ZUVuYWJsZWQoYm9vbCBkZXB0aFdyaXRlRW5hYmxl
ZCk7CisKKyAgICBjbGFzcyBTdGVuY2lsRGVzY3JpcHRvciogICAgICAgICAgICAgZnJvbnRGYWNl
U3RlbmNpbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRGcm9udEZhY2VTdGVuY2lsKGNvbnN0IGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiBmcm9u
dEZhY2VTdGVuY2lsKTsKKworICAgIGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiAgICAgICAgICAg
ICBiYWNrRmFjZVN0ZW5jaWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0QmFja0ZhY2VTdGVuY2lsKGNvbnN0IGNsYXNzIFN0ZW5jaWxEZXNjcmlw
dG9yKiBiYWNrRmFjZVN0ZW5jaWwpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAg
ICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKK307CisKK2NsYXNz
IERlcHRoU3RlbmNpbFN0YXRlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxEZXB0aFN0ZW5jaWxT
dGF0ZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisKKyAg
ICBjbGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3JpcHRvciogTVRMOjpTdGVu
Y2lsRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxN
VEw6OlN0ZW5jaWxEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0ZW5jaWxEZXNjcmlw
dG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVz
Y3JpcHRvciogTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TVRMOjpTdGVuY2lsRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVy
dHk6IHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6Q29tcGFyZUZ1bmN0
aW9uIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnN0ZW5jaWxDb21wYXJlRnVuY3Rpb24oKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcGFyZUZ1bmN0aW9u
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24pKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRTdGVuY2lsQ29tcGFy
ZUZ1bmN0aW9uKE1UTDo6Q29tcGFyZUZ1bmN0aW9uIHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24pCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFN0ZW5jaWxDb21wYXJlRnVuY3Rpb25fKSwgc3RlbmNpbENvbXBhcmVGdW5jdGlvbik7Cit9CisK
Ky8vIHByb3BlcnR5OiBzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbgorX01UTF9JTkxJTkUgTVRMOjpT
dGVuY2lsT3BlcmF0aW9uIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnN0ZW5jaWxGYWlsdXJlT3Bl
cmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0
ZW5jaWxPcGVyYXRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlbmNpbEZhaWx1cmVPcGVy
YXRpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpz
ZXRTdGVuY2lsRmFpbHVyZU9wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24gc3RlbmNpbEZh
aWx1cmVPcGVyYXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uXyksIHN0ZW5jaWxGYWls
dXJlT3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoRmFpbHVyZU9wZXJhdGlvbgor
X01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsT3BlcmF0aW9uIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6
OmRlcHRoRmFpbHVyZU9wZXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpTdGVuY2lsT3BlcmF0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRl
cHRoRmFpbHVyZU9wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RlbmNp
bERlc2NyaXB0b3I6OnNldERlcHRoRmFpbHVyZU9wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRp
b24gZGVwdGhGYWlsdXJlT3BlcmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aEZhaWx1cmVPcGVyYXRpb25fKSwgZGVw
dGhGYWlsdXJlT3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoU3RlbmNpbFBhc3NP
cGVyYXRpb24KK19NVExfSU5MSU5FIE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBNVEw6OlN0ZW5jaWxE
ZXNjcmlwdG9yOjpkZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5jaWxPcGVyYXRpb24+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRoU3RlbmNpbFBhc3NPcGVyYXRp
b24oTVRMOjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24pCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERl
cHRoU3RlbmNpbFBhc3NPcGVyYXRpb25fKSwgZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbik7Cit9
CisKKy8vIHByb3BlcnR5OiByZWFkTWFzaworX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpTdGVu
Y2lsRGVzY3JpcHRvcjo6cmVhZE1hc2soKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlYWRNYXNrKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6c2V0UmVhZE1hc2so
dWludDMyX3QgcmVhZE1hc2spCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlYWRNYXNrXyksIHJlYWRNYXNrKTsKK30KKworLy8gcHJv
cGVydHk6IHdyaXRlTWFzaworX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpTdGVuY2lsRGVzY3Jp
cHRvcjo6d3JpdGVNYXNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx1aW50MzJfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3cml0ZU1hc2spKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRXcml0ZU1hc2sodWludDMy
X3Qgd3JpdGVNYXNrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRXcml0ZU1hc2tfKSwgd3JpdGVNYXNrKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvciog
TVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmFsbG9jPE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NM
UyhNVExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBNVEw6OkRlcHRoU3RlbmNpbERl
c2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RGVw
dGhTdGVuY2lsRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoQ29tcGFyZUZ1
bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OkNvbXBhcmVGdW5jdGlvbiBNVEw6OkRlcHRoU3RlbmNp
bERlc2NyaXB0b3I6OmRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXBhcmVGdW5jdGlvbj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChkZXB0aENvbXBhcmVGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oTVRMOjpD
b21wYXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlRnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoQ29tcGFyZUZ1bmN0
aW9uXyksIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoV3Jp
dGVFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6
ZGVwdGhXcml0ZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNEZXB0aFdyaXRlRW5hYmxlZCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVw
dGhXcml0ZUVuYWJsZWQoYm9vbCBkZXB0aFdyaXRlRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhXcml0ZUVuYWJs
ZWRfKSwgZGVwdGhXcml0ZUVuYWJsZWQpOworfQorCisvLyBwcm9wZXJ0eTogZnJvbnRGYWNlU3Rl
bmNpbAorX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3JpcHRvciogTVRMOjpEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yOjpmcm9udEZhY2VTdGVuY2lsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChmcm9udEZhY2VTdGVuY2lsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRGcm9udEZhY2VTdGVuY2lsKGNvbnN0IE1UTDo6U3Rl
bmNpbERlc2NyaXB0b3IqIGZyb250RmFjZVN0ZW5jaWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyb250RmFjZVN0ZW5jaWxfKSwg
ZnJvbnRGYWNlU3RlbmNpbCk7Cit9CisKKy8vIHByb3BlcnR5OiBiYWNrRmFjZVN0ZW5jaWwKK19N
VExfSU5MSU5FIE1UTDo6U3RlbmNpbERlc2NyaXB0b3IqIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3Jp
cHRvcjo6YmFja0ZhY2VTdGVuY2lsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChi
YWNrRmFjZVN0ZW5jaWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRlcHRoU3RlbmNp
bERlc2NyaXB0b3I6OnNldEJhY2tGYWNlU3RlbmNpbChjb25zdCBNVEw6OlN0ZW5jaWxEZXNjcmlw
dG9yKiBiYWNrRmFjZVN0ZW5jaWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJhY2tGYWNlU3RlbmNpbF8pLCBiYWNrRmFjZVN0ZW5j
aWwpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxh
YmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
OjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOwor
fQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RGVw
dGhTdGVuY2lsU3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQor
CisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpEZXB0
aFN0ZW5jaWxTdGF0ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGV2
aWNlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXZpY2Uu
aHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZjZDBkNzc2NGY5NmQyNDYxMDQzNTY2MzA1YTgwYWM3YmVlZTk2NmUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMRGV2aWNlLmhwcApAQCAtMCwwICsxLDEyNTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTERldmljZS5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJN
VExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUg
Ik1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4K
KworI2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKyNpbmNsdWRlICJNVExEZXZpY2UuaHBwIgor
I2luY2x1ZGUgIk1UTFBpeGVsRm9ybWF0LmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAi
CisjaW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorI2lu
Y2x1ZGUgPElPU3VyZmFjZS9JT1N1cmZhY2VSZWYuaD4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgor
CituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBGZWF0dXJlU2V0KSB7
CisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92MSA9IDAsCisgICAgRmVhdHVyZVNldF9p
T1NfR1BVRmFtaWx5Ml92MSA9IDEsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92MiA9
IDIsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92MiA9IDMsCisgICAgRmVhdHVyZVNl
dF9pT1NfR1BVRmFtaWx5M192MSA9IDQsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5MV92
MyA9IDUsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92MyA9IDYsCisgICAgRmVhdHVy
ZVNldF9pT1NfR1BVRmFtaWx5M192MiA9IDcsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5
MV92NCA9IDgsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92NCA9IDksCisgICAgRmVh
dHVyZVNldF9pT1NfR1BVRmFtaWx5M192MyA9IDEwLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZh
bWlseTRfdjEgPSAxMSwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkxX3Y1ID0gMTIsCisg
ICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5Ml92NSA9IDEzLAorICAgIEZlYXR1cmVTZXRfaU9T
X0dQVUZhbWlseTNfdjQgPSAxNCwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHk0X3YyID0g
MTUsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5NV92MSA9IDE2LAorICAgIEZlYXR1cmVT
ZXRfbWFjT1NfR1BVRmFtaWx5MV92MSA9IDEwMDAwLAorICAgIEZlYXR1cmVTZXRfT1NYX0dQVUZh
bWlseTFfdjEgPSAxMDAwMCwKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTFfdjIgPSAx
MDAwMSwKKyAgICBGZWF0dXJlU2V0X09TWF9HUFVGYW1pbHkxX3YyID0gMTAwMDEsCisgICAgRmVh
dHVyZVNldF9PU1hfUmVhZFdyaXRlVGV4dHVyZVRpZXIyID0gMTAwMDIsCisgICAgRmVhdHVyZVNl
dF9tYWNPU19SZWFkV3JpdGVUZXh0dXJlVGllcjIgPSAxMDAwMiwKKyAgICBGZWF0dXJlU2V0X21h
Y09TX0dQVUZhbWlseTFfdjMgPSAxMDAwMywKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWls
eTFfdjQgPSAxMDAwNCwKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTJfdjEgPSAxMDAw
NSwKKyAgICBGZWF0dXJlU2V0X3dhdGNoT1NfR1BVRmFtaWx5MV92MSA9IDIwMDAwLAorICAgIEZl
YXR1cmVTZXRfV2F0Y2hPU19HUFVGYW1pbHkxX3YxID0gMjAwMDAsCisgICAgRmVhdHVyZVNldF93
YXRjaE9TX0dQVUZhbWlseTJfdjEgPSAyMDAwMSwKKyAgICBGZWF0dXJlU2V0X1dhdGNoT1NfR1BV
RmFtaWx5Ml92MSA9IDIwMDAxLAorICAgIEZlYXR1cmVTZXRfdHZPU19HUFVGYW1pbHkxX3YxID0g
MzAwMDAsCisgICAgRmVhdHVyZVNldF9UVk9TX0dQVUZhbWlseTFfdjEgPSAzMDAwMCwKKyAgICBG
ZWF0dXJlU2V0X3R2T1NfR1BVRmFtaWx5MV92MiA9IDMwMDAxLAorICAgIEZlYXR1cmVTZXRfdHZP
U19HUFVGYW1pbHkxX3YzID0gMzAwMDIsCisgICAgRmVhdHVyZVNldF90dk9TX0dQVUZhbWlseTJf
djEgPSAzMDAwMywKKyAgICBGZWF0dXJlU2V0X3R2T1NfR1BVRmFtaWx5MV92NCA9IDMwMDA0LAor
ICAgIEZlYXR1cmVTZXRfdHZPU19HUFVGYW1pbHkyX3YyID0gMzAwMDUsCit9OworCitfTVRMX0VO
VU0oTlM6OkludGVnZXIsIEdQVUZhbWlseSkgeworICAgIEdQVUZhbWlseUFwcGxlMSA9IDEwMDEs
CisgICAgR1BVRmFtaWx5QXBwbGUyID0gMTAwMiwKKyAgICBHUFVGYW1pbHlBcHBsZTMgPSAxMDAz
LAorICAgIEdQVUZhbWlseUFwcGxlNCA9IDEwMDQsCisgICAgR1BVRmFtaWx5QXBwbGU1ID0gMTAw
NSwKKyAgICBHUFVGYW1pbHlBcHBsZTYgPSAxMDA2LAorICAgIEdQVUZhbWlseUFwcGxlNyA9IDEw
MDcsCisgICAgR1BVRmFtaWx5QXBwbGU4ID0gMTAwOCwKKyAgICBHUFVGYW1pbHlNYWMxID0gMjAw
MSwKKyAgICBHUFVGYW1pbHlNYWMyID0gMjAwMiwKKyAgICBHUFVGYW1pbHlDb21tb24xID0gMzAw
MSwKKyAgICBHUFVGYW1pbHlDb21tb24yID0gMzAwMiwKKyAgICBHUFVGYW1pbHlDb21tb24zID0g
MzAwMywKKyAgICBHUFVGYW1pbHlNYWNDYXRhbHlzdDEgPSA0MDAxLAorICAgIEdQVUZhbWlseU1h
Y0NhdGFseXN0MiA9IDQwMDIsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBEZXZpY2VM
b2NhdGlvbikgeworICAgIERldmljZUxvY2F0aW9uQnVpbHRJbiA9IDAsCisgICAgRGV2aWNlTG9j
YXRpb25TbG90ID0gMSwKKyAgICBEZXZpY2VMb2NhdGlvbkV4dGVybmFsID0gMiwKKyAgICBEZXZp
Y2VMb2NhdGlvblVuc3BlY2lmaWVkID0gTlM6OlVJbnRlZ2VyTWF4LAorfTsKKworX01UTF9PUFRJ
T05TKE5TOjpVSW50ZWdlciwgUGlwZWxpbmVPcHRpb24pIHsKKyAgICBQaXBlbGluZU9wdGlvbk5v
bmUgPSAwLAorICAgIFBpcGVsaW5lT3B0aW9uQXJndW1lbnRJbmZvID0gMSwKKyAgICBQaXBlbGlu
ZU9wdGlvbkJ1ZmZlclR5cGVJbmZvID0gMiwKKyAgICBQaXBlbGluZU9wdGlvbkZhaWxPbkJpbmFy
eUFyY2hpdmVNaXNzID0gNCwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFJlYWRXcml0
ZVRleHR1cmVUaWVyKSB7CisgICAgUmVhZFdyaXRlVGV4dHVyZVRpZXJOb25lID0gMCwKKyAgICBS
ZWFkV3JpdGVUZXh0dXJlVGllcjEgPSAxLAorICAgIFJlYWRXcml0ZVRleHR1cmVUaWVyMiA9IDIs
Cit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBBcmd1bWVudEJ1ZmZlcnNUaWVyKSB7Cisg
ICAgQXJndW1lbnRCdWZmZXJzVGllcjEgPSAwLAorICAgIEFyZ3VtZW50QnVmZmVyc1RpZXIyID0g
MSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFNwYXJzZVRleHR1cmVSZWdpb25BbGln
bm1lbnRNb2RlKSB7CisgICAgU3BhcnNlVGV4dHVyZVJlZ2lvbkFsaWdubWVudE1vZGVPdXR3YXJk
ID0gMCwKKyAgICBTcGFyc2VUZXh0dXJlUmVnaW9uQWxpZ25tZW50TW9kZUlud2FyZCA9IDEsCit9
OworCitzdHJ1Y3QgQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMKK3sKKyAgICBOUzo6VUludGVn
ZXIgYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZTsKKyAgICBOUzo6VUludGVnZXIgYnVpbGRTY3Jh
dGNoQnVmZmVyU2l6ZTsKKyAgICBOUzo6VUludGVnZXIgcmVmaXRTY3JhdGNoQnVmZmVyU2l6ZTsK
K30gX01UTF9QQUNLRUQ7CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIENvdW50ZXJTYW1wbGlu
Z1BvaW50KSB7CisgICAgQ291bnRlclNhbXBsaW5nUG9pbnRBdFN0YWdlQm91bmRhcnkgPSAwLAor
ICAgIENvdW50ZXJTYW1wbGluZ1BvaW50QXREcmF3Qm91bmRhcnkgPSAxLAorICAgIENvdW50ZXJT
YW1wbGluZ1BvaW50QXREaXNwYXRjaEJvdW5kYXJ5ID0gMiwKKyAgICBDb3VudGVyU2FtcGxpbmdQ
b2ludEF0VGlsZURpc3BhdGNoQm91bmRhcnkgPSAzLAorICAgIENvdW50ZXJTYW1wbGluZ1BvaW50
QXRCbGl0Qm91bmRhcnkgPSA0LAorfTsKKworc3RydWN0IFNpemVBbmRBbGlnbgoreworICAgIE5T
OjpVSW50ZWdlciBzaXplOworICAgIE5TOjpVSW50ZWdlciBhbGlnbjsKK30gX01UTF9QQUNLRUQ7
CisKK2NsYXNzIEFyZ3VtZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBcmd1bWVu
dERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFyZ3VtZW50RGVzY3Jp
cHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFyZ3VtZW50RGVzY3JpcHRvciogICAgICAgIGlu
aXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBBcmd1bWVudERlc2NyaXB0b3IqIGFyZ3VtZW50RGVz
Y3JpcHRvcigpOworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAgICAgICAgICAgICAgZGF0YVR5
cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREYXRh
VHlwZShNVEw6OkRhdGFUeXBlIGRhdGFUeXBlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgIGluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0SW5kZXgoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICAgIGFycmF5TGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFycmF5
TGVuZ3RoKTsKKworICAgIE1UTDo6QXJndW1lbnRBY2Nlc3MgICAgICAgICAgICAgIGFjY2Vzcygp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFjY2VzcyhN
VEw6OkFyZ3VtZW50QWNjZXNzIGFjY2Vzcyk7CisKKyAgICBNVEw6OlRleHR1cmVUeXBlICAgICAg
ICAgICAgICAgICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFRleHR1cmVUeXBlKE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRCbG9ja0Fs
aWdubWVudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dENvbnN0YW50QmxvY2tBbGlnbm1lbnQoTlM6OlVJbnRlZ2VyIGNvbnN0YW50QmxvY2tBbGlnbm1l
bnQpOworfTsKKwordXNpbmcgRGV2aWNlTm90aWZpY2F0aW9uTmFtZSA9IE5TOjpTdHJpbmcqOwor
CitfTVRMX0NPTlNUKERldmljZU5vdGlmaWNhdGlvbk5hbWUsIERldmljZVdhc0FkZGVkTm90aWZp
Y2F0aW9uKTsKKworX01UTF9DT05TVChEZXZpY2VOb3RpZmljYXRpb25OYW1lLCBEZXZpY2VSZW1v
dmFsUmVxdWVzdGVkTm90aWZpY2F0aW9uKTsKKworX01UTF9DT05TVChEZXZpY2VOb3RpZmljYXRp
b25OYW1lLCBEZXZpY2VXYXNSZW1vdmVkTm90aWZpY2F0aW9uKTsKKwordXNpbmcgRGV2aWNlTm90
aWZpY2F0aW9uSGFuZGxlckJsb2NrID0gdm9pZCAoXikoY2xhc3MgRGV2aWNlKiBwRGV2aWNlLCBE
ZXZpY2VOb3RpZmljYXRpb25OYW1lIG5vdGlmeU5hbWUpOworCit1c2luZyBEZXZpY2VOb3RpZmlj
YXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgRGV2aWNlKiBw
RGV2aWNlLCBEZXZpY2VOb3RpZmljYXRpb25OYW1lIG5vdGlmeU5hbWUpPjsKKwordXNpbmcgQXV0
b3JlbGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiA9IGNsYXNzIENvbXB1dGVQaXBlbGlu
ZVJlZmxlY3Rpb24qOworCit1c2luZyBBdXRvcmVsZWFzZWRSZW5kZXJQaXBlbGluZVJlZmxlY3Rp
b24gPSBjbGFzcyBSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qOworCit1c2luZyBOZXdMaWJyYXJ5
Q29tcGxldGlvbkhhbmRsZXIgPSB2b2lkICheKShjbGFzcyBMaWJyYXJ5KiwgTlM6OkVycm9yKik7
CisKK3VzaW5nIE5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5j
dGlvbjx2b2lkKGNsYXNzIExpYnJhcnkqLCBOUzo6RXJyb3IqKT47CisKK3VzaW5nIE5ld1JlbmRl
clBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlciA9IHZvaWQgKF4pKGNsYXNzIFJlbmRlclBp
cGVsaW5lU3RhdGUqLCBOUzo6RXJyb3IqKTsKKwordXNpbmcgTmV3UmVuZGVyUGlwZWxpbmVTdGF0
ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgUmVu
ZGVyUGlwZWxpbmVTdGF0ZSosIE5TOjpFcnJvciopPjsKKwordXNpbmcgTmV3UmVuZGVyUGlwZWxp
bmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSB2b2lkICheKShjbGFzcyBS
ZW5kZXJQaXBlbGluZVN0YXRlKiwgY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiwgTlM6
OkVycm9yKik7CisKK3VzaW5nIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNv
bXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgUmVuZGVy
UGlwZWxpbmVTdGF0ZSosIGNsYXNzIFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiosIE5TOjpFcnJv
ciopPjsKKwordXNpbmcgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlciA9
IHZvaWQgKF4pKGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiwgTlM6OkVycm9yKik7CisKK3Vz
aW5nIE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0
ZDo6ZnVuY3Rpb248dm9pZChjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSosIE5TOjpFcnJvciop
PjsKKwordXNpbmcgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRp
b25IYW5kbGVyID0gdm9pZCAoXikoY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUqLCBjbGFzcyBD
b21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiwgTlM6OkVycm9yKik7CisKK3VzaW5nIE5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uID0g
c3RkOjpmdW5jdGlvbjx2b2lkKGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiwgY2xhc3MgQ29t
cHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiosIE5TOjpFcnJvciopPjsKKwordXNpbmcgVGltZXN0YW1w
ID0gc3RkOjp1aW50NjRfdDsKKworTVRMOjpEZXZpY2UqIENyZWF0ZVN5c3RlbURlZmF1bHREZXZp
Y2UoKTsKKworTlM6OkFycmF5KiAgIENvcHlBbGxEZXZpY2VzKCk7CisKK05TOjpBcnJheSogICBD
b3B5QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBEZXZp
Y2VOb3RpZmljYXRpb25IYW5kbGVyQmxvY2sgaGFuZGxlcik7CisKK05TOjpBcnJheSogICBDb3B5
QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBjb25zdCBE
ZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyRnVuY3Rpb24mIGhhbmRsZXIpOworCit2b2lkICAgICAg
ICAgUmVtb3ZlRGV2aWNlT2JzZXJ2ZXIoY29uc3QgTlM6Ok9iamVjdCogcE9ic2VydmVyKTsKKwor
Y2xhc3MgRGV2aWNlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxEZXZpY2U+Cit7CitwdWJsaWM6
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IE5T
OjpTdHJpbmcqIHBTb3VyY2UsIGNvbnN0IGNsYXNzIENvbXBpbGVPcHRpb25zKiBwT3B0aW9ucywg
Y29uc3QgTmV3TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5k
bGVyKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShj
b25zdCBjbGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3Qg
TVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRs
ZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZW5kZXJQaXBl
bGluZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0
b3IsIGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9u
JiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yKiBwRGVzY3JpcHRvciwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3UmVu
ZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYg
Y29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdS
ZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9u
JiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBwRnVuY3Rp
b24sIGNvbnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlv
biYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogcEZ1bmN0
aW9uLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRs
ZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3Jp
cHRvciwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5k
bGVyKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIZWFkbGVzcygp
IGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICBuYW1lKCkgY29u
c3Q7CisKKyAgICB1aW50NjRfdCAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5SUQoKSBj
b25zdDsKKworICAgIE1UTDo6U2l6ZSAgICAgICAgICAgICAgICAgICAgICAgbWF4VGhyZWFkc1Bl
clRocmVhZGdyb3VwKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvd1Bvd2VyKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlYWRsZXNzKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbW92YWJsZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoYXNVbmlmaWVkTWVtb3J5KCkgY29uc3Q7CisKKyAgICB1aW50NjRfdCAgICAgICAgICAg
ICAgICAgICAgICAgIHJlY29tbWVuZGVkTWF4V29ya2luZ1NldFNpemUoKSBjb25zdDsKKworICAg
IE1UTDo6RGV2aWNlTG9jYXRpb24gICAgICAgICAgICAgbG9jYXRpb24oKSBjb25zdDsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25OdW1iZXIoKSBjb25zdDsK
KworICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgbWF4VHJhbnNmZXJSYXRlKCkg
Y29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoMjRTdGVu
Y2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkKCkgY29uc3Q7CisKKyAgICBNVEw6OlJlYWRXcml0ZVRl
eHR1cmVUaWVyICAgICAgIHJlYWRXcml0ZVRleHR1cmVTdXBwb3J0KCkgY29uc3Q7CisKKyAgICBN
VEw6OkFyZ3VtZW50QnVmZmVyc1RpZXIgICAgICAgIGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQoKSBj
b25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyT3JkZXJH
cm91cHNTdXBwb3J0ZWQoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5nKCkgY29uc3Q7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzMzJCaXRNU0FBKCkgY29uc3Q7CisKKyAg
ICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUXVlcnlUZXh0dXJlTE9E
KCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRz
QkNUZXh0dXJlQ29tcHJlc3Npb24oKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9uKCkgY29uc3Q7CisKKyAg
ICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcnljZW50cmljQ29vcmRzU3VwcG9y
dGVkKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBv
cnRzU2hhZGVyQmFyeWNlbnRyaWNDb29yZGluYXRlcygpIGNvbnN0OworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICAgICAgICBjdXJyZW50QWxsb2NhdGVkU2l6ZSgpIGNvbnN0OworCisg
ICAgY2xhc3MgQ29tbWFuZFF1ZXVlKiAgICAgICAgICAgICBuZXdDb21tYW5kUXVldWUoKTsKKwor
ICAgIGNsYXNzIENvbW1hbmRRdWV1ZSogICAgICAgICAgICAgbmV3Q29tbWFuZFF1ZXVlKE5TOjpV
SW50ZWdlciBtYXhDb21tYW5kQnVmZmVyQ291bnQpOworCisgICAgTVRMOjpTaXplQW5kQWxpZ24g
ICAgICAgICAgICAgICBoZWFwVGV4dHVyZVNpemVBbmRBbGlnbihjb25zdCBjbGFzcyBUZXh0dXJl
RGVzY3JpcHRvciogZGVzYyk7CisKKyAgICBNVEw6OlNpemVBbmRBbGlnbiAgICAgICAgICAgICAg
IGhlYXBCdWZmZXJTaXplQW5kQWxpZ24oTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJj
ZU9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBIZWFwKiAgICAgICAgICAgICAgICAgICAg
IG5ld0hlYXAoY29uc3QgY2xhc3MgSGVhcERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAg
Y2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICBuZXdCdWZmZXIoTlM6OlVJbnRlZ2VyIGxl
bmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBCdWZmZXIq
ICAgICAgICAgICAgICAgICAgIG5ld0J1ZmZlcihjb25zdCB2b2lkKiBwb2ludGVyLCBOUzo6VUlu
dGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zKTsKKworICAgIGNsYXNz
IEJ1ZmZlciogICAgICAgICAgICAgICAgICAgbmV3QnVmZmVyKGNvbnN0IHZvaWQqIHBvaW50ZXIs
IE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMsIGNvbnN0
IHZvaWQgKF5kZWFsbG9jYXRvcikodm9pZCosIE5TOjpVSW50ZWdlcikpOworCisgICAgY2xhc3Mg
RGVwdGhTdGVuY2lsU3RhdGUqICAgICAgICBuZXdEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBjbGFz
cyBEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNzIFRleHR1
cmUqICAgICAgICAgICAgICAgICAgbmV3VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlRGVzY3Jp
cHRvciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgICAg
IG5ld1RleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNv
bnN0IElPU3VyZmFjZVJlZiBpb3N1cmZhY2UsIE5TOjpVSW50ZWdlciBwbGFuZSk7CisKKyAgICBj
bGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgICAgIG5ld1NoYXJlZFRleHR1cmUoY29uc3QgY2xh
c3MgVGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgVGV4dHVyZSog
ICAgICAgICAgICAgICAgICBuZXdTaGFyZWRUZXh0dXJlKGNvbnN0IGNsYXNzIFNoYXJlZFRleHR1
cmVIYW5kbGUqIHNoYXJlZEhhbmRsZSk7CisKKyAgICBjbGFzcyBTYW1wbGVyU3RhdGUqICAgICAg
ICAgICAgIG5ld1NhbXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyRGVzY3JpcHRvciogZGVz
Y3JpcHRvcik7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5ld0RlZmF1
bHRMaWJyYXJ5KCk7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5ld0Rl
ZmF1bHRMaWJyYXJ5KGNvbnN0IE5TOjpCdW5kbGUqIGJ1bmRsZSwgTlM6OkVycm9yKiogZXJyb3Ip
OworCisgICAgY2xhc3MgTGlicmFyeSogICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0
IE5TOjpTdHJpbmcqIGZpbGVwYXRoLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBM
aWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3QgTlM6OlVSTCogdXJsLCBO
Uzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAg
IG5ld0xpYnJhcnkoY29uc3QgZGlzcGF0Y2hfZGF0YV90IGRhdGEsIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIGNsYXNzIExpYnJhcnkqICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25z
dCBOUzo6U3RyaW5nKiBzb3VyY2UsIGNvbnN0IGNsYXNzIENvbXBpbGVPcHRpb25zKiBvcHRpb25z
LCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogc291cmNlLCBjb25zdCBjbGFzcyBDb21w
aWxlT3B0aW9ucyogb3B0aW9ucywgY29uc3QgTVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRs
ZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xhc3MgTGlicmFyeSogICAgICAgICAgICAg
ICAgICBuZXdMaWJyYXJ5KGNvbnN0IGNsYXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBjbGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlciBj
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiAgICAg
IG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBSZW5kZXJQ
aXBlbGluZVN0YXRlKiAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9w
dGlvbnMsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBy
ZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld1JlbmRlclBpcGVsaW5l
U3RhdGVDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xh
c3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0
aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0
aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xhc3MgQ29t
cHV0ZVBpcGVsaW5lU3RhdGUqICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFz
cyBGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBj
bGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNv
bnN0IGNsYXNzIEZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE1UTDo6UGlwZWxpbmVPcHRpb24g
b3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9u
KiByZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0
aW9uKiBjb21wdXRlRnVuY3Rpb24sIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVD
b21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1
bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29u
c3QgTVRMOjpOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhh
bmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3Rh
dGUqICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNv
bnN0IE1UTDo6QXV0b3JlbGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVjdGlv
biwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0
IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5k
bGVyIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGNsYXNzIEZlbmNlKiAgICAgICAgICAgICAg
ICAgICAgbmV3RmVuY2UoKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VwcG9ydHNGZWF0dXJlU2V0KE1UTDo6RmVhdHVyZVNldCBmZWF0dXJlU2V0KTsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNGYW1pbHkoTVRMOjpHUFVGYW1p
bHkgZ3B1RmFtaWx5KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw
cG9ydHNUZXh0dXJlU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWluaW11bUxpbmVhclRleHR1cmVBbGln
bm1lbnRGb3JQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGZvcm1hdCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgIG1pbmltdW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50
Rm9yUGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBmb3JtYXQpOworCisgICAgY2xhc3MgUmVu
ZGVyUGlwZWxpbmVTdGF0ZSogICAgICBuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNz
IFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVP
cHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRSZW5kZXJQaXBlbGluZVJlZmxl
Y3Rpb24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0
aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0
aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICAgICAgICBtYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBtYXhBcmd1bWVudEJ1ZmZl
clNhbXBsZXJDb3VudCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9ncmFtbWFibGVTYW1wbGVQb3NpdGlvbnNTdXBwb3J0ZWQoKSBjb25zdDsKKworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9u
cyhNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisK
KyAgICBjbGFzcyBBcmd1bWVudEVuY29kZXIqICAgICAgICAgIG5ld0FyZ3VtZW50RW5jb2Rlcihj
b25zdCBOUzo6QXJyYXkqIGFyZ3VtZW50cyk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1cHBvcnRzUmFzdGVyaXphdGlvblJhdGVNYXAoTlM6OlVJbnRlZ2VyIGxheWVy
Q291bnQpOworCisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXAqICAgICBuZXdSYXN0ZXJp
emF0aW9uUmF0ZU1hcChjb25zdCBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiAgICBuZXdJ
bmRpcmVjdENvbW1hbmRCdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG1heENvdW50LCBNVEw6OlJlc291cmNl
T3B0aW9ucyBvcHRpb25zKTsKKworICAgIGNsYXNzIEV2ZW50KiAgICAgICAgICAgICAgICAgICAg
bmV3RXZlbnQoKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50KiAgICAgICAgICAgICAgbmV3U2hh
cmVkRXZlbnQoKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50KiAgICAgICAgICAgICAgbmV3U2hh
cmVkRXZlbnQoY29uc3QgY2xhc3MgU2hhcmVkRXZlbnRIYW5kbGUqIHNoYXJlZEV2ZW50SGFuZGxl
KTsKKworICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgcGVlckdyb3VwSUQoKSBj
b25zdDsKKworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgcGVlckluZGV4KCkg
Y29uc3Q7CisKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb3VudCgp
IGNvbnN0OworCisgICAgTVRMOjpTaXplICAgICAgICAgICAgICAgICAgICAgICBzcGFyc2VUaWxl
U2l6ZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlLCBNVEw6OlBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBOUzo6VUludGVnZXIgc2FtcGxlQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgICAgICAgICBzcGFyc2VUaWxlU2l6ZUluQnl0ZXMoKSBjb25zdDsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFNwYXJzZVBpeGVsUmVnaW9ucyhj
b25zdCBNVEw6OlJlZ2lvbiogcGl4ZWxSZWdpb25zLCBNVEw6OlJlZ2lvbiogdGlsZVJlZ2lvbnMs
IE1UTDo6U2l6ZSB0aWxlU2l6ZSwgTVRMOjpTcGFyc2VUZXh0dXJlUmVnaW9uQWxpZ25tZW50TW9k
ZSBtb2RlLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucyk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnZlcnRTcGFyc2VUaWxlUmVnaW9ucyhjb25zdCBNVEw6OlJlZ2lv
biogdGlsZVJlZ2lvbnMsIE1UTDo6UmVnaW9uKiBwaXhlbFJlZ2lvbnMsIE1UTDo6U2l6ZSB0aWxl
U2l6ZSwgTlM6OlVJbnRlZ2VyIG51bVJlZ2lvbnMpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICBtYXhCdWZmZXJMZW5ndGgoKSBjb25zdDsKKworICAgIE5TOjpBcnJheSog
ICAgICAgICAgICAgICAgICAgICAgY291bnRlclNldHMoKSBjb25zdDsKKworICAgIGNsYXNzIENv
dW50ZXJTYW1wbGVCdWZmZXIqICAgICAgbmV3Q291bnRlclNhbXBsZUJ1ZmZlcihjb25zdCBjbGFz
cyBDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiog
ZXJyb3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVUaW1l
c3RhbXBzKE1UTDo6VGltZXN0YW1wKiBjcHVUaW1lc3RhbXAsIE1UTDo6VGltZXN0YW1wKiBncHVU
aW1lc3RhbXApOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0
c0NvdW50ZXJTYW1wbGluZyhNVEw6OkNvdW50ZXJTYW1wbGluZ1BvaW50IHNhbXBsaW5nUG9pbnQp
OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1ZlcnRleEFt
cGxpZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgY291bnQpOworCisgICAgYm9vbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0R5bmFtaWNMaWJyYXJpZXMoKSBjb25zdDsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNSZW5kZXJEeW5hbWlj
TGlicmFyaWVzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBEeW5hbWljTGlicmFyeSogICAgICAgICAg
IG5ld0R5bmFtaWNMaWJyYXJ5KGNvbnN0IGNsYXNzIExpYnJhcnkqIGxpYnJhcnksIE5TOjpFcnJv
cioqIGVycm9yKTsKKworICAgIGNsYXNzIER5bmFtaWNMaWJyYXJ5KiAgICAgICAgICAgbmV3RHlu
YW1pY0xpYnJhcnkoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAg
ICBjbGFzcyBCaW5hcnlBcmNoaXZlKiAgICAgICAgICAgIG5ld0JpbmFyeUFyY2hpdmUoY29uc3Qg
Y2xhc3MgQmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVy
cm9yKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNSYXl0
cmFjaW5nKCkgY29uc3Q7CisKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemVzIGFj
Y2VsZXJhdGlvblN0cnVjdHVyZVNpemVzKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0
dXJlKiAgICBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoTlM6OlVJbnRlZ2VyIHNpemUpOworCisg
ICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiAgICBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1
cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRv
cik7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRnVuY3Rp
b25Qb2ludGVycygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyKCkgY29uc3Q7CisKKyAgICBib29s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5kZXIo
KSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNQ
cmltaXRpdmVNb3Rpb25CbHVyKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvciogTVRMOjpBcmd1bWVu
dERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpBcmd1bWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQXJndW1lbnREZXNjcmlw
dG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudERl
c2NyaXB0b3IqIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6aW5pdDxNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3Rh
dGljIG1ldGhvZDogYXJndW1lbnREZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50
RGVzY3JpcHRvciogTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OmFyZ3VtZW50RGVzY3JpcHRvcigp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcmd1bWVudERlc2NyaXB0
b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFyZ3VtZW50RGVzY3JpcHRvciksIF9NVExfUFJJVkFU
RV9TRUwoYXJndW1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkYXRhVHlwZQor
X01UTF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6ZGF0YVR5
cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5
cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGF0YVR5cGUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0RGF0YVR5cGUoTVRMOjpEYXRhVHlwZSBk
YXRhVHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0RGF0YVR5cGVfKSwgZGF0YVR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5k
ZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6aW5k
ZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjpzZXRJbmRleChOUzo6VUludGVnZXIgaW5kZXgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dEluZGV4XyksIGluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IGFycmF5TGVuZ3RoCitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OmFycmF5TGVuZ3RoKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFy
cmF5TGVuZ3RoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRBcnJheUxlbmd0aF8pLCBhcnJheUxlbmd0aCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRBY2Nlc3MgTVRMOjpBcmd1bWVu
dERlc2NyaXB0b3I6OmFjY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpBcmd1bWVudEFjY2Vzcz4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nlc3Mp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0QWNj
ZXNzKE1UTDo6QXJndW1lbnRBY2Nlc3MgYWNjZXNzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRBY2Nlc3NfKSwgYWNjZXNzKTsKK30K
KworLy8gcHJvcGVydHk6IHRleHR1cmVUeXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVUeXBl
IE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjp0ZXh0dXJlVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVHlwZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTCh0ZXh0dXJlVHlwZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1l
bnREZXNjcmlwdG9yOjpzZXRUZXh0dXJlVHlwZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRUZXh0dXJlVHlwZV8pLCB0ZXh0dXJlVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb25z
dGFudEJsb2NrQWxpZ25tZW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVu
dERlc2NyaXB0b3I6OmNvbnN0YW50QmxvY2tBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChjb25zdGFudEJsb2NrQWxpZ25tZW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
cmd1bWVudERlc2NyaXB0b3I6OnNldENvbnN0YW50QmxvY2tBbGlnbm1lbnQoTlM6OlVJbnRlZ2Vy
IGNvbnN0YW50QmxvY2tBbGlnbm1lbnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0YW50QmxvY2tBbGlnbm1lbnRfKSwgY29u
c3RhbnRCbG9ja0FsaWdubWVudCk7Cit9CisKKyNpZiBkZWZpbmVkKE1UTF9QUklWQVRFX0lNUExF
TUVOVEFUSU9OKQorCitleHRlcm4gIkMiIE1UTDo6RGV2aWNlKiBNVExDcmVhdGVTeXN0ZW1EZWZh
dWx0RGV2aWNlKCk7CisKK2V4dGVybiAiQyIgTlM6OkFycmF5KiAgIE1UTENvcHlBbGxEZXZpY2Vz
KCk7CisKK2V4dGVybiAiQyIgTlM6OkFycmF5KiAgIE1UTENvcHlBbGxEZXZpY2VzV2l0aE9ic2Vy
dmVyKE5TOjpPYmplY3QqKiwgTVRMOjpEZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyQmxvY2spOwor
CitleHRlcm4gIkMiIHZvaWQgICAgICAgICBNVExSZW1vdmVEZXZpY2VPYnNlcnZlcihjb25zdCBO
Uzo6T2JqZWN0Kik7CisKKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KKworTVRMOjpE
ZXZpY2UqIE1UTDo6Q3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpCit7CisgICAgcmV0dXJuIDo6
TVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOworfQorCitOUzo6QXJyYXkqIE1UTDo6Q29w
eUFsbERldmljZXMoKQoreworI2lmIFRBUkdFVF9PU19PU1gKKyAgICByZXR1cm4gOjpNVExDb3B5
QWxsRGV2aWNlcygpOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAvLyBUQVJH
RVRfT1NfT1NYCit9CisKK05TOjpBcnJheSogTVRMOjpDb3B5QWxsRGV2aWNlc1dpdGhPYnNlcnZl
cihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBEZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyQmxv
Y2sgaGFuZGxlcikKK3sKKyNpZiBUQVJHRVRfT1NfT1NYCisgICAgcmV0dXJuIDo6TVRMQ29weUFs
bERldmljZXNXaXRoT2JzZXJ2ZXIocE91dE9ic2VydmVyLCBoYW5kbGVyKTsKKyNlbHNlCisgICAg
KHZvaWQpcE91dE9ic2VydmVyOworICAgICh2b2lkKWhhbmRsZXI7CisKKyAgICByZXR1cm4gbnVs
bHB0cjsKKyNlbmRpZiAvLyBUQVJHRVRfT1NfT1NYCit9CisKK05TOjpBcnJheSogTVRMOjpDb3B5
QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiogcE91dE9ic2VydmVyLCBjb25zdCBE
ZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyRnVuY3Rpb24mIGhhbmRsZXIpCit7CisgICAgX19ibG9j
ayBEZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyRnVuY3Rpb24gZnVuY3Rpb24gPSBoYW5kbGVyOwor
CisgICAgcmV0dXJuIENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKHBPdXRPYnNlcnZlciwgXihE
ZXZpY2UqIHBEZXZpY2UsIERldmljZU5vdGlmaWNhdGlvbk5hbWUgcE5vdGlmaWNhdGlvbk5hbWUp
IHsgZnVuY3Rpb24ocERldmljZSwgcE5vdGlmaWNhdGlvbk5hbWUpOyB9KTsKK30KKwordm9pZCBN
VEw6OlJlbW92ZURldmljZU9ic2VydmVyKGNvbnN0IE5TOjpPYmplY3QqIHBPYnNlcnZlcikKK3sK
KyNpZiBUQVJHRVRfT1NfT1NYCisgICAgOjpNVExSZW1vdmVEZXZpY2VPYnNlcnZlcihwT2JzZXJ2
ZXIpOworI2VuZGlmIC8vIFRBUkdFVF9PU19PU1gKK30KKworI2VuZGlmIC8vIE1UTF9QUklWQVRF
X0lNUExFTUVOVEFUSU9OCisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0xpYnJh
cnkoY29uc3QgTlM6OlN0cmluZyogcFNvdXJjZSwgY29uc3QgQ29tcGlsZU9wdGlvbnMqIHBPcHRp
b25zLCBjb25zdCBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgX19ibG9jayBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5j
dGlvbiBibG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBu
ZXdMaWJyYXJ5KHBTb3VyY2UsIHBPcHRpb25zLCBeKExpYnJhcnkqIHBMaWJyYXJ5LCBOUzo6RXJy
b3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBMaWJyYXJ5LCBwRXJyb3IpOyB9
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBj
bGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3QgTVRMOjpO
ZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgX19ibG9jayBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9ja0Nv
bXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdMaWJyYXJ5KHBE
ZXNjcmlwdG9yLCBeKExpYnJhcnkqIHBMaWJyYXJ5LCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9j
a0NvbXBsZXRpb25IYW5kbGVyKHBMaWJyYXJ5LCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBOZXdSZW5kZXJQaXBlbGluZVN0
YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
X19ibG9jayBOZXdSZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBi
bG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlKHBEZXNjcmlwdG9yLCBeKFJlbmRlclBpcGVsaW5lU3RhdGUqIHBQaXBl
bGluZVN0YXRlLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBQ
aXBlbGluZVN0YXRlLCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRl
dmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IqIHBEZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5kZXJQ
aXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRo
UmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxl
ciA9IGNvbXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShwRGVz
Y3JpcHRvciwgb3B0aW9ucywgXihSZW5kZXJQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwg
Y2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBw
RXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rp
b24sIHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIHBE
ZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5kZXJQaXBlbGlu
ZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVj
dGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNv
bXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShwRGVzY3JpcHRv
ciwgb3B0aW9ucywgXihSZW5kZXJQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgY2xhc3Mg
UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJyb3Ip
IHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24sIHBF
cnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogcEZ1bmN0aW9uLCBjb25zdCBOZXdD
b21wdXRlUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIF9fYmxvY2sgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21wbGV0aW9u
SGFuZGxlckZ1bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxl
cjsKKworICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKHBGdW5jdGlvbiwgXihDb21wdXRlUGlw
ZWxpbmVTdGF0ZSogcFBpcGVsaW5lU3RhdGUsIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29t
cGxldGlvbkhhbmRsZXIocFBpcGVsaW5lU3RhdGUsIHBFcnJvcik7IH0pOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBGdW5j
dGlvbiogcEZ1bmN0aW9uLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBOZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdp
dGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9ja0NvbXBsZXRpb25IYW5k
bGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShw
RnVuY3Rpb24sIG9wdGlvbnMsIF4oQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBQaXBlbGluZVN0YXRl
LCBDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJy
b3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24s
IHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZShjb25zdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3Jp
cHRvciwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIF9fYmxvY2sgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlv
bkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBs
ZXRpb25IYW5kbGVyOworCisgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUocERlc2NyaXB0b3Is
IG9wdGlvbnMsIF4oQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBQaXBlbGluZVN0YXRlLCBDb21wdXRl
UGlwZWxpbmVSZWZsZWN0aW9uKiBwUmVmbGVjdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxv
Y2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcFJlZmxlY3Rpb24sIHBFcnJvcik7
IH0pOworfQorCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjppc0hlYWRsZXNzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaGVhZGxlc3MoKTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19N
VExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RGV2aWNlOjpuYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZWdpc3RyeUlECitfTVRMX0lOTElORSB1
aW50NjRfdCBNVEw6OkRldmljZTo6cmVnaXN0cnlJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVnaXN0
cnlJRCkpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRM
X0lOTElORSBNVEw6OlNpemUgTVRMOjpEZXZpY2U6Om1heFRocmVhZHNQZXJUaHJlYWRncm91cCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG1heFRocmVhZHNQZXJUaHJlYWRncm91cCkpOworfQorCisvLyBw
cm9wZXJ0eTogbG93UG93ZXIKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6Omxvd1Bvd2Vy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGlzTG93UG93ZXIpKTsKK30KKworLy8gcHJvcGVydHk6IGhlYWRsZXNz
CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpoZWFkbGVzcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
c0hlYWRsZXNzKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZW1vdmFibGUKK19NVExfSU5MSU5FIGJv
b2wgTVRMOjpEZXZpY2U6OnJlbW92YWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1JlbW92YWJsZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogaGFzVW5pZmllZE1lbW9yeQorX01UTF9JTkxJTkUgYm9vbCBNVEw6
OkRldmljZTo6aGFzVW5pZmllZE1lbW9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChoYXNVbmlmaWVkTWVtb3J5
KSk7Cit9CisKKy8vIHByb3BlcnR5OiByZWNvbW1lbmRlZE1heFdvcmtpbmdTZXRTaXplCitfTVRM
X0lOTElORSB1aW50NjRfdCBNVEw6OkRldmljZTo6cmVjb21tZW5kZWRNYXhXb3JraW5nU2V0U2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwocmVjb21tZW5kZWRNYXhXb3JraW5nU2V0U2l6ZSkpOworfQor
CisvLyBwcm9wZXJ0eTogbG9jYXRpb24KK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlTG9jYXRpb24g
TVRMOjpEZXZpY2U6OmxvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRldmljZUxvY2F0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxvY2F0
aW9uKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsb2NhdGlvbk51bWJlcgorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6RGV2aWNlOjpsb2NhdGlvbk51bWJlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGxvY2F0aW9uTnVtYmVyKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUcmFuc2ZlclJhdGUK
K19NVExfSU5MSU5FIHVpbnQ2NF90IE1UTDo6RGV2aWNlOjptYXhUcmFuc2ZlclJhdGUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQ2NF90Pih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG1heFRyYW5zZmVyUmF0ZSkpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGgy
NFN0ZW5jaWw4UGl4ZWxGb3JtYXRTdXBwb3J0ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZp
Y2U6OmRlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChpc0RlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiByZWFkV3JpdGVUZXh0dXJlU3VwcG9ydAorX01UTF9JTkxJTkUgTVRMOjpSZWFkV3JpdGVU
ZXh0dXJlVGllciBNVEw6OkRldmljZTo6cmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVhZFdyaXRlVGV4dHVyZVRp
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQpKTsKK30K
KworLy8gcHJvcGVydHk6IGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQKK19NVExfSU5MSU5FIE1UTDo6
QXJndW1lbnRCdWZmZXJzVGllciBNVEw6OkRldmljZTo6YXJndW1lbnRCdWZmZXJzU3VwcG9ydCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcmd1bWVudEJ1
ZmZlcnNUaWVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQp
KTsKK30KKworLy8gcHJvcGVydHk6IHJhc3Rlck9yZGVyR3JvdXBzU3VwcG9ydGVkCitfTVRMX0lO
TElORSBib29sIE1UTDo6RGV2aWNlOjpyYXN0ZXJPcmRlckdyb3Vwc1N1cHBvcnRlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYXJlUmFzdGVyT3JkZXJHcm91cHNTdXBwb3J0ZWQpKTsKK30KKworLy8gcHJv
cGVydHk6IHN1cHBvcnRzMzJCaXRGbG9hdEZpbHRlcmluZworX01UTF9JTkxJTkUgYm9vbCBNVEw6
OkRldmljZTo6c3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0czMyQml0RmxvYXRGaWx0ZXJpbmcpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRz
MzJCaXRNU0FBCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0czMyQml0TVNB
QSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHMzMkJpdE1TQUEpKTsKK30KKworLy8gcHJvcGVy
dHk6IHN1cHBvcnRzUXVlcnlUZXh0dXJlTE9ECitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNl
OjpzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNRdWVy
eVRleHR1cmVMT0QpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzQkNUZXh0dXJlQ29tcHJl
c3Npb24KK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzQkNUZXh0dXJlQ29t
cHJlc3Npb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxi
b29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzQkNUZXh0dXJlQ29tcHJlc3Npb24p
KTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzUHVsbE1vZGVsSW50ZXJwb2xhdGlvbgorX01U
TF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1B1bGxNb2RlbEludGVycG9sYXRpb24pKTsKK30K
KworLy8gcHJvcGVydHk6IGJhcnljZW50cmljQ29vcmRzU3VwcG9ydGVkCitfTVRMX0lOTElORSBi
b29sIE1UTDo6RGV2aWNlOjpiYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBvcnRlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoYXJlQmFyeWNlbnRyaWNDb29yZHNTdXBwb3J0ZWQpKTsKK30KKworLy8gcHJvcGVydHk6
IHN1cHBvcnRzU2hhZGVyQmFyeWNlbnRyaWNDb29yZGluYXRlcworX01UTF9JTkxJTkUgYm9vbCBN
VEw6OkRldmljZTo6c3VwcG9ydHNTaGFkZXJCYXJ5Y2VudHJpY0Nvb3JkaW5hdGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdXBwb3J0c1NoYWRlckJhcnljZW50cmljQ29vcmRpbmF0ZXMpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGN1cnJlbnRBbGxvY2F0ZWRTaXplCitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpEZXZpY2U6OmN1cnJlbnRBbGxvY2F0ZWRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoY3VycmVudEFsbG9jYXRlZFNpemUpKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21tYW5kUXVl
dWUKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZFF1ZXVlKiBNVEw6OkRldmljZTo6bmV3Q29tbWFu
ZFF1ZXVlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRR
dWV1ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tbWFuZFF1ZXVlKSk7Cit9CisKKy8v
IG1ldGhvZDogbmV3Q29tbWFuZFF1ZXVlV2l0aE1heENvbW1hbmRCdWZmZXJDb3VudDoKK19NVExf
SU5MSU5FIE1UTDo6Q29tbWFuZFF1ZXVlKiBNVEw6OkRldmljZTo6bmV3Q29tbWFuZFF1ZXVlKE5T
OjpVSW50ZWdlciBtYXhDb21tYW5kQnVmZmVyQ291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d0NvbW1hbmRRdWV1ZVdpdGhNYXhDb21tYW5kQnVmZmVyQ291bnRfKSwgbWF4Q29tbWFuZEJ1ZmZl
ckNvdW50KTsKK30KKworLy8gbWV0aG9kOiBoZWFwVGV4dHVyZVNpemVBbmRBbGlnbldpdGhEZXNj
cmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpTaXplQW5kQWxpZ24gTVRMOjpEZXZpY2U6OmhlYXBU
ZXh0dXJlU2l6ZUFuZEFsaWduKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIGRlc2MpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplQW5kQWxpZ24+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaGVhcFRleHR1cmVTaXplQW5kQWxpZ25XaXRoRGVzY3JpcHRvcl8p
LCBkZXNjKTsKK30KKworLy8gbWV0aG9kOiBoZWFwQnVmZmVyU2l6ZUFuZEFsaWduV2l0aExlbmd0
aDpvcHRpb25zOgorX01UTF9JTkxJTkUgTVRMOjpTaXplQW5kQWxpZ24gTVRMOjpEZXZpY2U6Omhl
YXBCdWZmZXJTaXplQW5kQWxpZ24oTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9w
dGlvbnMgb3B0aW9ucykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNp
emVBbmRBbGlnbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChoZWFwQnVmZmVyU2l6ZUFuZEFsaWdu
V2l0aExlbmd0aF9vcHRpb25zXyksIGxlbmd0aCwgb3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDog
bmV3SGVhcFdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpIZWFwKiBNVEw6OkRldmlj
ZTo6bmV3SGVhcChjb25zdCBNVEw6OkhlYXBEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGVhcCo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobmV3SGVhcFdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRo
b2Q6IG5ld0J1ZmZlcldpdGhMZW5ndGg6b3B0aW9uczoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVy
KiBNVEw6OkRldmljZTo6bmV3QnVmZmVyKE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3Vy
Y2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0
aW9uc18pLCBsZW5ndGgsIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IG5ld0J1ZmZlcldpdGhC
eXRlczpsZW5ndGg6b3B0aW9uczoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkRldmlj
ZTo6bmV3QnVmZmVyKGNvbnN0IHZvaWQqIHBvaW50ZXIsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE1U
TDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhC
eXRlc19sZW5ndGhfb3B0aW9uc18pLCBwb2ludGVyLCBsZW5ndGgsIG9wdGlvbnMpOworfQorCisv
LyBtZXRob2Q6IG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weTpsZW5ndGg6b3B0aW9uczpkZWFsbG9j
YXRvcjoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkRldmljZTo6bmV3QnVmZmVyKGNv
bnN0IHZvaWQqIHBvaW50ZXIsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRp
b25zIG9wdGlvbnMsIGNvbnN0IHZvaWQgKF5kZWFsbG9jYXRvcikodm9pZCosIE5TOjpVSW50ZWdl
cikpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhCeXRlc05vQ29weV9sZW5ndGhfb3B0aW9u
c19kZWFsbG9jYXRvcl8pLCBwb2ludGVyLCBsZW5ndGgsIG9wdGlvbnMsIGRlYWxsb2NhdG9yKTsK
K30KKworLy8gbWV0aG9kOiBuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9yOgorX01U
TF9JTkxJTkUgTVRMOjpEZXB0aFN0ZW5jaWxTdGF0ZSogTVRMOjpEZXZpY2U6Om5ld0RlcHRoU3Rl
bmNpbFN0YXRlKGNvbnN0IE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvciogZGVzY3JpcHRvcikK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRlcHRoU3RlbmNpbFN0YXRl
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlw
dG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3Jp
cHRvcjoKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpEZXZpY2U6Om5ld1RleHR1cmUo
Y29uc3QgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9k
OiBuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6aW9zdXJmYWNlOnBsYW5lOgorX01UTF9JTkxJTkUg
TVRMOjpUZXh0dXJlKiBNVEw6OkRldmljZTo6bmV3VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmVE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBJT1N1cmZhY2VSZWYgaW9zdXJmYWNlLCBOUzo6
VUludGVnZXIgcGxhbmUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpU
ZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3Jf
aW9zdXJmYWNlX3BsYW5lXyksIGRlc2NyaXB0b3IsIGlvc3VyZmFjZSwgcGxhbmUpOworfQorCisv
LyBtZXRob2Q6IG5ld1NoYXJlZFRleHR1cmVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1U
TDo6VGV4dHVyZSogTVRMOjpEZXZpY2U6Om5ld1NoYXJlZFRleHR1cmUoY29uc3QgTVRMOjpUZXh0
dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1NoYXJlZFRleHR1
cmVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFy
ZWRUZXh0dXJlV2l0aEhhbmRsZToKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpEZXZp
Y2U6Om5ld1NoYXJlZFRleHR1cmUoY29uc3QgTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlKiBzaGFy
ZWRIYW5kbGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJl
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdTaGFyZWRUZXh0dXJlV2l0aEhhbmRsZV8pLCBz
aGFyZWRIYW5kbGUpOworfQorCisvLyBtZXRob2Q6IG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlw
dG9yOgorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdTYW1w
bGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNhbXBsZXJTdGF0ZSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRv
cik7Cit9CisKKy8vIG1ldGhvZDogbmV3RGVmYXVsdExpYnJhcnkKK19NVExfSU5MSU5FIE1UTDo6
TGlicmFyeSogTVRMOjpEZXZpY2U6Om5ld0RlZmF1bHRMaWJyYXJ5KCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0RlZmF1bHRMaWJyYXJ5KSk7Cit9CisKKy8vIG1ldGhvZDogbmV3RGVmYXVsdExpYnJhcnlX
aXRoQnVuZGxlOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6
bmV3RGVmYXVsdExpYnJhcnkoY29uc3QgTlM6OkJ1bmRsZSogYnVuZGxlLCBOUzo6RXJyb3IqKiBl
cnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0RlZmF1bHRMaWJyYXJ5V2l0aEJ1bmRsZV9lcnJvcl8p
LCBidW5kbGUsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdMaWJyYXJ5V2l0aEZpbGU6ZXJy
b3I6CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNv
bnN0IE5TOjpTdHJpbmcqIGZpbGVwYXRoLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0xpYnJhcnlXaXRoRmlsZV9lcnJvcl8pLCBmaWxlcGF0aCwgZXJyb3IpOworfQorCisv
LyBtZXRob2Q6IG5ld0xpYnJhcnlXaXRoVVJMOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJy
YXJ5KiBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJv
cioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlicmFy
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhVUkxfZXJyb3JfKSwgdXJs
LCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3TGlicmFyeVdpdGhEYXRhOmVycm9yOgorX01U
TF9JTkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBkaXNw
YXRjaF9kYXRhX3QgZGF0YSwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdM
aWJyYXJ5V2l0aERhdGFfZXJyb3JfKSwgZGF0YSwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5l
d0xpYnJhcnlXaXRoU291cmNlOm9wdGlvbnM6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkxpYnJh
cnkqIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IE5TOjpTdHJpbmcqIHNvdXJjZSwgY29u
c3QgTVRMOjpDb21waWxlT3B0aW9ucyogb3B0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdMaWJyYXJ5V2l0aFNvdXJjZV9vcHRpb25zX2Vycm9yXyksIHNvdXJjZSwg
b3B0aW9ucywgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld0xpYnJhcnlXaXRoU291cmNlOm9w
dGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpu
ZXdMaWJyYXJ5KGNvbnN0IE5TOjpTdHJpbmcqIHNvdXJjZSwgY29uc3QgTVRMOjpDb21waWxlT3B0
aW9ucyogb3B0aW9ucywgY29uc3QgTVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG5ld0xpYnJhcnlXaXRoU291cmNlX29wdGlvbnNfY29tcGxldGlvbkhh
bmRsZXJfKSwgc291cmNlLCBvcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1l
dGhvZDogbmV3TGlicmFyeVdpdGhTdGl0Y2hlZERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElO
RSBNVEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IE1UTDo6U3RpdGNo
ZWRMaWJyYXJ5RGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNj
cmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3TGlicmFyeVdpdGhTdGl0Y2hlZERl
c2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNl
OjpuZXdMaWJyYXJ5KGNvbnN0IE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogZGVzY3Jp
cHRvciwgY29uc3QgTVRMOjpOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG5ld0xpYnJhcnlXaXRoU3RpdGNoZWREZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5kbGVy
XyksIGRlc2NyaXB0b3IsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6
OlJlbmRlclBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0YXRl
KGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJy
b3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRl
clBpcGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVsaW5l
U3RhdGVXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8v
IG1ldGhvZDogbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6cmVm
bGVjdGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogTVRM
OjpEZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29u
c3QgTVRMOjpBdXRvcmVsZWFzZWRSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24s
IE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8pLCBk
ZXNjcmlwdG9yLCBvcHRpb25zLCByZWZsZWN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDog
bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25z
dCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgTVRMOjpO
ZXdSZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8p
LCBkZXNjcmlwdG9yLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVu
ZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNv
bnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVs
aW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhS
ZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBp
cGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXyksIGRl
c2NyaXB0b3IsIG9wdGlvbnMsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBu
ZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1U
TDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZShjb25zdCBNVEw6OkZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE5TOjpFcnJvcioqIGVy
cm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBpcGVs
aW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
V2l0aEZ1bmN0aW9uX2Vycm9yXyksIGNvbXB1dGVGdW5jdGlvbiwgZXJyb3IpOworfQorCisvLyBt
ZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOm9wdGlvbnM6cmVmbGVj
dGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6
RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OkZ1bmN0aW9uKiBjb21w
dXRlRnVuY3Rpb24sIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRv
cmVsZWFzZWRDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3Iq
KiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQ
aXBlbGluZVN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZVdpdGhGdW5jdGlvbl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfKSwgY29tcHV0ZUZ1bmN0
aW9uLCBvcHRpb25zLCByZWZsZWN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29t
cHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb246Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6
OkZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5l
U3RhdGVDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tcHV0ZVBpcGVs
aW5lU3RhdGVXaXRoRnVuY3Rpb25fY29tcGxldGlvbkhhbmRsZXJfKSwgY29tcHV0ZUZ1bmN0aW9u
LCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5l
U3RhdGVXaXRoRnVuY3Rpb246b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6RnVu
Y3Rpb24qIGNvbXB1dGVGdW5jdGlvbiwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25z
dCBNVEw6Ok5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFu
ZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rp
b25fb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8pLCBjb21wdXRlRnVuY3Rpb24sIG9wdGlvbnMs
IGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVjdGlvbjplcnJvcjoKK19NVExfSU5MSU5F
IE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZShjb25zdCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3Is
IE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRDb21w
dXRlUGlwZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRl
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhEZXNj
cmlwdG9yX29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBvcHRpb25zLCBy
ZWZsZWN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVXaXRoRGVzY3JpcHRvcjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9w
dGlvbnMsIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNv
bXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwg
b3B0aW9ucywgY29tcGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0ZlbmNlCitf
TVRMX0lOTElORSBNVEw6OkZlbmNlKiBNVEw6OkRldmljZTo6bmV3RmVuY2UoKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RmVuY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0ZlbmNlKSk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNGZWF0dXJlU2V0OgorX01U
TF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNGZWF0dXJlU2V0KE1UTDo6RmVhdHVy
ZVNldCBmZWF0dXJlU2V0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxi
b29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzRmVhdHVyZVNldF8pLCBmZWF0dXJl
U2V0KTsKK30KKworLy8gbWV0aG9kOiBzdXBwb3J0c0ZhbWlseToKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpEZXZpY2U6OnN1cHBvcnRzRmFtaWx5KE1UTDo6R1BVRmFtaWx5IGdwdUZhbWlseSkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdXBwb3J0c0ZhbWlseV8pLCBncHVGYW1pbHkpOworfQorCisvLyBtZXRob2Q6IHN1
cHBvcnRzVGV4dHVyZVNhbXBsZUNvdW50OgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6
c3VwcG9ydHNUZXh0dXJlU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHN1cHBvcnRzVGV4dHVyZVNhbXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKwor
Ly8gbWV0aG9kOiBtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9ybWF0Ogor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2aWNlOjptaW5pbXVtTGluZWFyVGV4dHVy
ZUFsaWdubWVudEZvclBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgZm9ybWF0KQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9ybWF0XyksIGZv
cm1hdCk7Cit9CisKKy8vIG1ldGhvZDogbWluaW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQ
aXhlbEZvcm1hdDoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6bWluaW11
bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGZv
cm1hdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobWluaW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhl
bEZvcm1hdF8pLCBmb3JtYXQpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVXaXRoVGlsZURlc2NyaXB0b3I6b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOgorX01UTF9JTkxJ
TkUgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxp
bmVTdGF0ZShjb25zdCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0
b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRS
ZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxl
RGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfKSwgZGVzY3JpcHRvciwgb3B0aW9u
cywgcmVmbGVjdGlvbiwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5l
U3RhdGVXaXRoVGlsZURlc2NyaXB0b3I6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRM
OjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5l
T3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZs
ZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVs
aW5lU3RhdGVXaXRoVGlsZURlc2NyaXB0b3Jfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8pLCBk
ZXNjcmlwdG9yLCBvcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIHByb3BlcnR5
OiBtYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6RGV2aWNlOjptYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG1heFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhB
cmd1bWVudEJ1ZmZlclNhbXBsZXJDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
RGV2aWNlOjptYXhBcmd1bWVudEJ1ZmZlclNhbXBsZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG1heEFyZ3VtZW50QnVmZmVyU2FtcGxlckNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBw
cm9ncmFtbWFibGVTYW1wbGVQb3NpdGlvbnNTdXBwb3J0ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpEZXZpY2U6OnByb2dyYW1tYWJsZVNhbXBsZVBvc2l0aW9uc1N1cHBvcnRlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYXJlUHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRpb25zU3VwcG9ydGVkKSk7Cit9CisK
Ky8vIG1ldGhvZDogZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9uczpjb3VudDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpEZXZpY2U6OmdldERlZmF1bHRTYW1wbGVQb3NpdGlvbnMoTVRMOjpTYW1wbGVQ
b3NpdGlvbiogcG9zaXRpb25zLCBOUzo6VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdldERlZmF1bHRTYW1wbGVQ
b3NpdGlvbnNfY291bnRfKSwgcG9zaXRpb25zLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogbmV3
QXJndW1lbnRFbmNvZGVyV2l0aEFyZ3VtZW50czoKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRF
bmNvZGVyKiBNVEw6OkRldmljZTo6bmV3QXJndW1lbnRFbmNvZGVyKGNvbnN0IE5TOjpBcnJheSog
YXJndW1lbnRzKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1l
bnRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRo
QXJndW1lbnRzXyksIGFyZ3VtZW50cyk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNSYXN0ZXJp
emF0aW9uUmF0ZU1hcFdpdGhMYXllckNvdW50OgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmlj
ZTo6c3VwcG9ydHNSYXN0ZXJpemF0aW9uUmF0ZU1hcChOUzo6VUludGVnZXIgbGF5ZXJDb3VudCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdXBwb3J0c1Jhc3Rlcml6YXRpb25SYXRlTWFwV2l0aExheWVyQ291bnRfKSwg
bGF5ZXJDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmFzdGVyaXphdGlvblJhdGVNYXBXaXRo
RGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXAqIE1UTDo6
RGV2aWNlOjpuZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcChjb25zdCBNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOwor
fQorCisvLyBtZXRob2Q6IG5ld0luZGlyZWN0Q29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yOm1h
eENvbW1hbmRDb3VudDpvcHRpb25zOgorX01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdENvbW1hbmRC
dWZmZXIqIE1UTDo6RGV2aWNlOjpuZXdJbmRpcmVjdENvbW1hbmRCdWZmZXIoY29uc3QgTVRMOjpJ
bmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6VUludGVnZXIg
bWF4Q291bnQsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG5ld0luZGlyZWN0Q29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yX21heENv
bW1hbmRDb3VudF9vcHRpb25zXyksIGRlc2NyaXB0b3IsIG1heENvdW50LCBvcHRpb25zKTsKK30K
KworLy8gbWV0aG9kOiBuZXdFdmVudAorX01UTF9JTkxJTkUgTVRMOjpFdmVudCogTVRMOjpEZXZp
Y2U6Om5ld0V2ZW50KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkV2
ZW50Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdFdmVudCkpOworfQorCisvLyBtZXRob2Q6
IG5ld1NoYXJlZEV2ZW50CitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50KiBNVEw6OkRldmlj
ZTo6bmV3U2hhcmVkRXZlbnQoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6U2hhcmVkRXZlbnQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1NoYXJlZEV2ZW50KSk7
Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlOgorX01UTF9JTkxJTkUg
TVRMOjpTaGFyZWRFdmVudCogTVRMOjpEZXZpY2U6Om5ld1NoYXJlZEV2ZW50KGNvbnN0IE1UTDo6
U2hhcmVkRXZlbnRIYW5kbGUqIHNoYXJlZEV2ZW50SGFuZGxlKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2hhcmVkRXZlbnQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld1NoYXJlZEV2ZW50V2l0aEhhbmRsZV8pLCBzaGFyZWRFdmVudEhhbmRsZSk7Cit9CisKKy8v
IHByb3BlcnR5OiBwZWVyR3JvdXBJRAorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpEZXZpY2U6
OnBlZXJHcm91cElEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1
aW50NjRfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwZWVyR3JvdXBJRCkpOworfQorCisvLyBw
cm9wZXJ0eTogcGVlckluZGV4CitfTVRMX0lOTElORSB1aW50MzJfdCBNVEw6OkRldmljZTo6cGVl
ckluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50MzJf
dD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwZWVySW5kZXgpKTsKK30KKworLy8gcHJvcGVydHk6
IHBlZXJDb3VudAorX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpEZXZpY2U6OnBlZXJDb3VudCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDMyX3Q+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwocGVlckNvdW50KSk7Cit9CisKKy8vIG1ldGhvZDogc3BhcnNlVGls
ZVNpemVXaXRoVGV4dHVyZVR5cGU6cGl4ZWxGb3JtYXQ6c2FtcGxlQ291bnQ6CitfTVRMX0lOTElO
RSBNVEw6OlNpemUgTVRMOjpEZXZpY2U6OnNwYXJzZVRpbGVTaXplKE1UTDo6VGV4dHVyZVR5cGUg
dGV4dHVyZVR5cGUsIE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciBz
YW1wbGVDb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemU+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3BhcnNlVGlsZVNpemVXaXRoVGV4dHVyZVR5cGVfcGl4
ZWxGb3JtYXRfc2FtcGxlQ291bnRfKSwgdGV4dHVyZVR5cGUsIHBpeGVsRm9ybWF0LCBzYW1wbGVD
b3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBzcGFyc2VUaWxlU2l6ZUluQnl0ZXMKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6c3BhcnNlVGlsZVNpemVJbkJ5dGVzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc3BhcnNlVGlsZVNpemVJbkJ5dGVzKSk7Cit9CisKKy8vIG1ldGhv
ZDogY29udmVydFNwYXJzZVBpeGVsUmVnaW9uczp0b1RpbGVSZWdpb25zOndpdGhUaWxlU2l6ZTph
bGlnbm1lbnRNb2RlOm51bVJlZ2lvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpj
b252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zKGNvbnN0IE1UTDo6UmVnaW9uKiBwaXhlbFJlZ2lvbnMs
IE1UTDo6UmVnaW9uKiB0aWxlUmVnaW9ucywgTVRMOjpTaXplIHRpbGVTaXplLCBNVEw6OlNwYXJz
ZVRleHR1cmVSZWdpb25BbGlnbm1lbnRNb2RlIG1vZGUsIE5TOjpVSW50ZWdlciBudW1SZWdpb25z
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChjb252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zX3RvVGlsZVJlZ2lvbnNfd2l0aFRpbGVTaXplX2Fs
aWdubWVudE1vZGVfbnVtUmVnaW9uc18pLCBwaXhlbFJlZ2lvbnMsIHRpbGVSZWdpb25zLCB0aWxl
U2l6ZSwgbW9kZSwgbnVtUmVnaW9ucyk7Cit9CisKKy8vIG1ldGhvZDogY29udmVydFNwYXJzZVRp
bGVSZWdpb25zOnRvUGl4ZWxSZWdpb25zOndpdGhUaWxlU2l6ZTpudW1SZWdpb25zOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkRldmljZTo6Y29udmVydFNwYXJzZVRpbGVSZWdpb25zKGNvbnN0IE1U
TDo6UmVnaW9uKiB0aWxlUmVnaW9ucywgTVRMOjpSZWdpb24qIHBpeGVsUmVnaW9ucywgTVRMOjpT
aXplIHRpbGVTaXplLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucykKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29udmVydFNwYXJzZVRpbGVS
ZWdpb25zX3RvUGl4ZWxSZWdpb25zX3dpdGhUaWxlU2l6ZV9udW1SZWdpb25zXyksIHRpbGVSZWdp
b25zLCBwaXhlbFJlZ2lvbnMsIHRpbGVTaXplLCBudW1SZWdpb25zKTsKK30KKworLy8gcHJvcGVy
dHk6IG1heEJ1ZmZlckxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2aWNl
OjptYXhCdWZmZXJMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhCdWZmZXJMZW5ndGgp
KTsKK30KKworLy8gcHJvcGVydHk6IGNvdW50ZXJTZXRzCitfTVRMX0lOTElORSBOUzo6QXJyYXkq
IE1UTDo6RGV2aWNlOjpjb3VudGVyU2V0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3VudGVyU2V0
cykpOworfQorCisvLyBtZXRob2Q6IG5ld0NvdW50ZXJTYW1wbGVCdWZmZXJXaXRoRGVzY3JpcHRv
cjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpEZXZp
Y2U6Om5ld0NvdW50ZXJTYW1wbGVCdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVy
RGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChuZXdDb3VudGVyU2FtcGxlQnVmZmVyV2l0aERlc2NyaXB0b3JfZXJyb3Jf
KSwgZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IHNhbXBsZVRpbWVzdGFtcHM6
Z3B1VGltZXN0YW1wOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6c2FtcGxlVGltZXN0
YW1wcyhNVEw6OlRpbWVzdGFtcCogY3B1VGltZXN0YW1wLCBNVEw6OlRpbWVzdGFtcCogZ3B1VGlt
ZXN0YW1wKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzYW1wbGVUaW1lc3RhbXBzX2dwdVRpbWVzdGFtcF8pLCBjcHVUaW1lc3RhbXAsIGdw
dVRpbWVzdGFtcCk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNDb3VudGVyU2FtcGxpbmc6Citf
TVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c0NvdW50ZXJTYW1wbGluZyhNVEw6
OkNvdW50ZXJTYW1wbGluZ1BvaW50IHNhbXBsaW5nUG9pbnQpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHND
b3VudGVyU2FtcGxpbmdfKSwgc2FtcGxpbmdQb2ludCk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9y
dHNWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQ6CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNl
OjpzdXBwb3J0c1ZlcnRleEFtcGxpZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgY291bnQpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc3VwcG9ydHNWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfKSwgY291bnQpOworfQor
CisvLyBwcm9wZXJ0eTogc3VwcG9ydHNEeW5hbWljTGlicmFyaWVzCitfTVRMX0lOTElORSBib29s
IE1UTDo6RGV2aWNlOjpzdXBwb3J0c0R5bmFtaWNMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHN1cHBvcnRzRHluYW1pY0xpYnJhcmllcykpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNS
ZW5kZXJEeW5hbWljTGlicmFyaWVzCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBw
b3J0c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzUmVu
ZGVyRHluYW1pY0xpYnJhcmllcykpOworfQorCisvLyBtZXRob2Q6IG5ld0R5bmFtaWNMaWJyYXJ5
OmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpEeW5hbWljTGlicmFyeSogTVRMOjpEZXZpY2U6Om5l
d0R5bmFtaWNMaWJyYXJ5KGNvbnN0IE1UTDo6TGlicmFyeSogbGlicmFyeSwgTlM6OkVycm9yKiog
ZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEeW5hbWljTGli
cmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RHluYW1pY0xpYnJhcnlfZXJyb3JfKSwg
bGlicmFyeSwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld0R5bmFtaWNMaWJyYXJ5V2l0aFVS
TDplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6RHluYW1pY0xpYnJhcnkqIE1UTDo6RGV2aWNlOjpu
ZXdEeW5hbWljTGlicmFyeShjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioqIGVycm9yKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RHluYW1pY0xpYnJhcnkqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0R5bmFtaWNMaWJyYXJ5V2l0aFVSTF9lcnJvcl8pLCB1
cmwsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdCaW5hcnlBcmNoaXZlV2l0aERlc2NyaXB0
b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkJpbmFyeUFyY2hpdmUqIE1UTDo6RGV2aWNlOjpu
ZXdCaW5hcnlBcmNoaXZlKGNvbnN0IE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6QmluYXJ5QXJjaGl2ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QmluYXJ5
QXJjaGl2ZVdpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKwor
Ly8gcHJvcGVydHk6IHN1cHBvcnRzUmF5dHJhY2luZworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRl
dmljZTo6c3VwcG9ydHNSYXl0cmFjaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1JheXRy
YWNpbmcpKTsKK30KKworLy8gbWV0aG9kOiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplc1dpdGhE
ZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplcyBN
VEw6OkRldmljZTo6YWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMoY29uc3QgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXM+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXNXaXRoRGVzY3JpcHRvcl8p
LCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVX
aXRoU2l6ZToKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBNVEw6OkRl
dmljZTo6bmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlKE5TOjpVSW50ZWdlciBzaXplKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRoU2l6ZV8p
LCBzaXplKTsKK30KKworLy8gbWV0aG9kOiBuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRoRGVz
Y3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBNVEw6OkRl
dmljZTo6bmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7
Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnMKK19NVExfSU5MSU5F
IGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzRnVuY3Rpb25Qb2ludGVycygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBw
b3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2
aWNlOjpzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBzdXBwb3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2
aWNlOjpzdXBwb3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBw
b3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c1By
aW1pdGl2ZU1vdGlvbkJsdXIKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRz
UHJpbWl0aXZlTW90aW9uQmx1cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNQcmltaXRpdmVN
b3Rpb25CbHVyKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMRHJhd2FibGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTERyYXdhYmxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzQwOTc2MDQxMzdmZTMwYmVlNzBi
MmQxNTVkMzE3YzYyYmI5NjljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTERyYXdhYmxlLmhwcApAQCAtMCwwICsxLDk5IEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9N
VExEcmF3YWJsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJC
cmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKworbmFtZXNwYWNlIE1UTAorewordXNp
bmcgRHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyID0gdm9pZCAoXikoY2xhc3MgRHJhd2FibGUqKTsK
KwordXNpbmcgRHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9u
PHZvaWQoY2xhc3MgRHJhd2FibGUqKT47CisKK2NsYXNzIERyYXdhYmxlIDogcHVibGljIE5TOjpS
ZWZlcmVuY2luZzxEcmF3YWJsZT4KK3sKK3B1YmxpYzoKKyAgICB2b2lkICAgICAgICAgICBhZGRQ
cmVzZW50ZWRIYW5kbGVyKGNvbnN0IE1UTDo6RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyRnVuY3Rp
b24mIGZ1bmN0aW9uKTsKKworICAgIHZvaWQgICAgICAgICAgIHByZXNlbnQoKTsKKworICAgIHZv
aWQgICAgICAgICAgIHByZXNlbnRBdFRpbWUoQ0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9uVGlt
ZSk7CisKKyAgICB2b2lkICAgICAgICAgICBwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb24oQ0ZU
aW1lSW50ZXJ2YWwgZHVyYXRpb24pOworCisgICAgdm9pZCAgICAgICAgICAgYWRkUHJlc2VudGVk
SGFuZGxlcihjb25zdCBNVEw6OkRyYXdhYmxlUHJlc2VudGVkSGFuZGxlciBibG9jayk7CisKKyAg
ICBDRlRpbWVJbnRlcnZhbCBwcmVzZW50ZWRUaW1lKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVn
ZXIgICBkcmF3YWJsZUlEKCkgY29uc3Q7Cit9OworCit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpEcmF3YWJsZTo6YWRkUHJlc2VudGVkSGFuZGxlcihjb25zdCBNVEw6OkRyYXdhYmxlUHJlc2Vu
dGVkSGFuZGxlckZ1bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIERyYXdhYmxlUHJl
c2VudGVkSGFuZGxlckZ1bmN0aW9uIGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIGFk
ZFByZXNlbnRlZEhhbmRsZXIoXihEcmF3YWJsZSogcERyYXdhYmxlKSB7IGJsb2NrRnVuY3Rpb24o
cERyYXdhYmxlKTsgfSk7Cit9CisKKy8vIG1ldGhvZDogcHJlc2VudAorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkRyYXdhYmxlOjpwcmVzZW50KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudCkpOworfQorCisvLyBtZXRob2Q6IHBy
ZXNlbnRBdFRpbWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6OnByZXNlbnRBdFRp
bWUoQ0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9uVGltZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudEF0VGltZV8pLCBwcmVz
ZW50YXRpb25UaW1lKTsKK30KKworLy8gbWV0aG9kOiBwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRp
b246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6OnByZXNlbnRBZnRlck1pbmltdW1E
dXJhdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudEFmdGVyTWluaW11bUR1cmF0
aW9uXyksIGR1cmF0aW9uKTsKK30KKworLy8gbWV0aG9kOiBhZGRQcmVzZW50ZWRIYW5kbGVyOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkRyYXdhYmxlOjphZGRQcmVzZW50ZWRIYW5kbGVyKGNvbnN0
IE1UTDo6RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyIGJsb2NrKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGRQcmVzZW50ZWRIYW5kbGVy
XyksIGJsb2NrKTsKK30KKworLy8gcHJvcGVydHk6IHByZXNlbnRlZFRpbWUKK19NVExfSU5MSU5F
IENGVGltZUludGVydmFsIE1UTDo6RHJhd2FibGU6OnByZXNlbnRlZFRpbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPENGVGltZUludGVydmFsPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHByZXNlbnRlZFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGRyYXdhYmxl
SUQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRyYXdhYmxlOjpkcmF3YWJsZUlEKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd2FibGVJRCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFtaWNMaWJyYXJ5LmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEeW5hbWljTGlicmFyeS5ocHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDg5Yjk5OTBkNWY2YmYxNzk0NzJlYjFhMzQ0MjYzM2QwOTQxZGI3OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExE
eW5hbWljTGlicmFyeS5ocHAKQEAgLTAsMCArMSw4MiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRHluYW1pY0xpYnJhcnku
aHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIK
KyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIER5
bmFtaWNMaWJyYXJ5RXJyb3IpIHsKKyAgICBEeW5hbWljTGlicmFyeUVycm9yTm9uZSA9IDAsCisg
ICAgRHluYW1pY0xpYnJhcnlFcnJvckludmFsaWRGaWxlID0gMSwKKyAgICBEeW5hbWljTGlicmFy
eUVycm9yQ29tcGlsYXRpb25GYWlsdXJlID0gMiwKKyAgICBEeW5hbWljTGlicmFyeUVycm9yVW5y
ZXNvbHZlZEluc3RhbGxOYW1lID0gMywKKyAgICBEeW5hbWljTGlicmFyeUVycm9yRGVwZW5kZW5j
eUxvYWRGYWlsdXJlID0gNCwKKyAgICBEeW5hbWljTGlicmFyeUVycm9yVW5zdXBwb3J0ZWQgPSA1
LAorfTsKKworY2xhc3MgRHluYW1pY0xpYnJhcnkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPER5
bmFtaWNMaWJyYXJ5PgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsK
KworICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAg
IGluc3RhbGxOYW1lKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgIHNlcmlhbGl6ZVRvVVJM
KGNvbnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiogZXJyb3IpOworfTsKKworfQorCisvLyBw
cm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RHluYW1pY0xpYnJh
cnk6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RHluYW1pY0xpYnJhcnk6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxh
YmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExf
SU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkR5bmFtaWNMaWJyYXJ5OjpkZXZpY2UoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbGxOYW1lCitf
TVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkR5bmFtaWNMaWJyYXJ5OjppbnN0YWxsTmFtZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFsbE5hbWUpKTsKK30KKworLy8gbWV0aG9kOiBzZXJp
YWxpemVUb1VSTDplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEeW5hbWljTGlicmFyeTo6
c2VyaWFsaXplVG9VUkwoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNlcmlhbGl6ZVRvVVJMX2Vycm9yXyksIHVybCwgZXJyb3IpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEV2ZW50LmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExFdmVudC5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGE5ZmFjMjM1MThmODZhNTFlNDIwYTQ5ODQ2NzY0YzVlMGRmNThlZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExFdmVudC5ocHAKQEAg
LTAsMCArMSwxNjMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIE1ldGFsL01UTEV2ZW50LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIw
MjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2lu
Y2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisK
KyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRXZl
bnQuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBFdmVudCA6IHB1YmxpYyBOUzo6UmVm
ZXJlbmNpbmc8RXZlbnQ+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBj
b25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKK307CisKK2NsYXNzIFNoYXJl
ZEV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFNoYXJlZEV2ZW50TGlzdGVu
ZXI+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFNoYXJlZEV2ZW50TGlzdGVuZXIqIGFs
bG9jKCk7CisKKyAgICBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIqICAgICAgICAgaW5pdCgpOwor
CisgICAgTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyKiAgICAgICAgIGluaXQoY29uc3QgZGlzcGF0
Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKTsKKworICAgIGRpc3BhdGNoX3F1ZXVlX3QgICAgICAg
ICAgICAgICAgICBkaXNwYXRjaFF1ZXVlKCkgY29uc3Q7Cit9OworCit1c2luZyBTaGFyZWRFdmVu
dE5vdGlmaWNhdGlvbkJsb2NrID0gdm9pZCAoXikoU2hhcmVkRXZlbnQqIHBFdmVudCwgc3RkOjp1
aW50NjRfdCB2YWx1ZSk7CisKK2NsYXNzIFNoYXJlZEV2ZW50IDogcHVibGljIE5TOjpSZWZlcmVu
Y2luZzxTaGFyZWRFdmVudCwgRXZlbnQ+Cit7CitwdWJsaWM6CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgIG5vdGlmeUxpc3RlbmVyKGNvbnN0IGNsYXNzIFNoYXJlZEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCB1aW50NjRfdCB2YWx1ZSwgY29uc3QgTVRMOjpTaGFyZWRFdmVudE5vdGlmaWNh
dGlvbkJsb2NrIGJsb2NrKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50SGFuZGxlKiBuZXdTaGFy
ZWRFdmVudEhhbmRsZSgpOworCisgICAgdWludDY0X3QgICAgICAgICAgICAgICAgIHNpZ25hbGVk
VmFsdWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgc2V0U2lnbmFsZWRW
YWx1ZSh1aW50NjRfdCBzaWduYWxlZFZhbHVlKTsKK307CisKK2NsYXNzIFNoYXJlZEV2ZW50SGFu
ZGxlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxTaGFyZWRFdmVudEhhbmRsZT4KK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY2xhc3MgU2hhcmVkRXZlbnRIYW5kbGUqIGFsbG9jKCk7CisKKyAgICBj
bGFzcyBTaGFyZWRFdmVudEhhbmRsZSogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcq
ICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKK307CisKK3N0cnVjdCBTaGFyZWRF
dmVudEhhbmRsZVByaXZhdGUKK3sKK30gX01UTF9QQUNLRUQ7CisKK30KKworLy8gcHJvcGVydHk6
IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6RXZlbnQ6OmRldmljZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19N
VExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RXZlbnQ6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RXZlbnQ6OnNldExhYmVs
KGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHN0
YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIq
IE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0OjphbGxvYzxNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI+KF9NVExfUFJJVkFURV9DTFMoTVRM
U2hhcmVkRXZlbnRMaXN0ZW5lcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5F
IE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lciogTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyOjppbml0
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlNoYXJlZEV2ZW50TGlzdGVu
ZXI+KCk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhEaXNwYXRjaFF1ZXVlOgorX01UTF9JTkxJ
TkUgTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyKiBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI6Omlu
aXQoY29uc3QgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaW5pdFdpdGhEaXNwYXRjaFF1ZXVlXyksIGRpc3BhdGNoUXVldWUpOworfQor
CisvLyBwcm9wZXJ0eTogZGlzcGF0Y2hRdWV1ZQorX01UTF9JTkxJTkUgZGlzcGF0Y2hfcXVldWVf
dCBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI6OmRpc3BhdGNoUXVldWUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGRpc3BhdGNoX3F1ZXVlX3Q+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZGlzcGF0Y2hRdWV1ZSkpOworfQorCisvLyBtZXRob2Q6IG5vdGlmeUxpc3Rl
bmVyOmF0VmFsdWU6YmxvY2s6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2hhcmVkRXZlbnQ6Om5v
dGlmeUxpc3RlbmVyKGNvbnN0IE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIHVp
bnQ2NF90IHZhbHVlLCBjb25zdCBNVEw6OlNoYXJlZEV2ZW50Tm90aWZpY2F0aW9uQmxvY2sgYmxv
Y2spCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5vdGlmeUxpc3RlbmVyX2F0VmFsdWVfYmxvY2tfKSwgbGlzdGVuZXIsIHZhbHVlLCBibG9j
ayk7Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkRXZlbnRIYW5kbGUKK19NVExfSU5MSU5FIE1U
TDo6U2hhcmVkRXZlbnRIYW5kbGUqIE1UTDo6U2hhcmVkRXZlbnQ6Om5ld1NoYXJlZEV2ZW50SGFu
ZGxlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNoYXJlZEV2ZW50
SGFuZGxlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdTaGFyZWRFdmVudEhhbmRsZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogc2lnbmFsZWRWYWx1ZQorX01UTF9JTkxJTkUgdWludDY0X3QgTVRM
OjpTaGFyZWRFdmVudDo6c2lnbmFsZWRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2lnbmFsZWRW
YWx1ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2hhcmVkRXZlbnQ6OnNldFNpZ25h
bGVkVmFsdWUodWludDY0X3Qgc2lnbmFsZWRWYWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2lnbmFsZWRWYWx1ZV8pLCBzaWdu
YWxlZFZhbHVlKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6U2hhcmVkRXZlbnRIYW5kbGUqIE1UTDo6U2hhcmVkRXZlbnRIYW5kbGU6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTaGFyZWRFdmVudEhhbmRsZT4oX01U
TF9QUklWQVRFX0NMUyhNVExTaGFyZWRFdmVudEhhbmRsZSkpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6U2hhcmVkRXZlbnRIYW5kbGUqIE1UTDo6U2hhcmVkRXZlbnRI
YW5kbGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U2hhcmVk
RXZlbnRIYW5kbGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6
OlN0cmluZyogTVRMOjpTaGFyZWRFdmVudEhhbmRsZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGxhYmVsKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMRmVuY2UuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEZlbmNlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzZlOTMxNGU1MzkzNWQyNDE2NjE5ZWNiMDMw
MDM2MDhmNGM4ZjVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEZlbmNlLmhwcApAQCAtMCwwICsxLDU3IEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExGZW5jZS5o
cHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgor
I2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgRmVuY2UgOiBwdWJsaWMgTlM6OlJl
ZmVyZW5jaW5nPEZlbmNlPgoreworcHVibGljOgorICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkg
Y29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7Cit9OworCit9CisKKy8vIHBy
b3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkZlbmNlOjpkZXZp
Y2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNl
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxh
YmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZlbmNlOjpsYWJlbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZlbmNlOjpz
ZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0
aW9uQ29uc3RhbnRWYWx1ZXMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2MDg1NTRlYzQ2
MmI3YTU0YjI3ZTdmZGIyMzMzM2M3NjAxYTMzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5o
cHAKQEAgLTAsMCArMSw4NSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAKKy8v
CisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1
ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhw
cD4KKworI2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xh
c3MgRnVuY3Rpb25Db25zdGFudFZhbHVlcyA6IHB1YmxpYyBOUzo6Q29weWluZzxGdW5jdGlvbkNv
bnN0YW50VmFsdWVzPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvbkNvbnN0
YW50VmFsdWVzKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25Db25zdGFudFZhbHVlcyog
ICAgICAgIGluaXQoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRDb25zdGFudFZhbHVlKGNvbnN0IHZvaWQqIHZhbHVlLCBNVEw6OkRhdGFUeXBlIHR5cGUs
IE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0Q29uc3RhbnRWYWx1ZXMoY29uc3Qgdm9pZCogdmFsdWVzLCBNVEw6OkRhdGFU
eXBlIHR5cGUsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0Q29uc3RhbnRWYWx1ZShjb25zdCB2b2lkKiB2YWx1ZSwgTVRMOjpE
YXRhVHlwZSB0eXBlLCBjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBN
VEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6YWxsb2M8TVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIE1UTDo6RnVuY3Rpb25Db25zdGFu
dFZhbHVlczo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5j
dGlvbkNvbnN0YW50VmFsdWVzPigpOworfQorCisvLyBtZXRob2Q6IHNldENvbnN0YW50VmFsdWU6
dHlwZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1
ZXM6OnNldENvbnN0YW50VmFsdWUoY29uc3Qgdm9pZCogdmFsdWUsIE1UTDo6RGF0YVR5cGUgdHlw
ZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb25zdGFudFZhbHVlX3R5cGVfYXRJbmRleF8pLCB2
YWx1ZSwgdHlwZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldENvbnN0YW50VmFsdWVzOnR5
cGU6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1
ZXM6OnNldENvbnN0YW50VmFsdWVzKGNvbnN0IHZvaWQqIHZhbHVlcywgTVRMOjpEYXRhVHlwZSB0
eXBlLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0YW50VmFsdWVzX3R5cGVfd2l0aFJhbmdlXyks
IHZhbHVlcywgdHlwZSwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldENvbnN0YW50VmFsdWU6
dHlwZTp3aXRoTmFtZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFs
dWVzOjpzZXRDb25zdGFudFZhbHVlKGNvbnN0IHZvaWQqIHZhbHVlLCBNVEw6OkRhdGFUeXBlIHR5
cGUsIGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0YW50VmFsdWVfdHlwZV93aXRoTmFt
ZV8pLCB2YWx1ZSwgdHlwZSwgbmFtZSk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXQKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzOjpyZXNldCgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVu
Y3Rpb25EZXNjcmlwdG9yLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ZjAwZDY3ODM0YmRiYjM5
ODY4ZTU0ZjkzZmY5M2FlNTZhYWVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcApAQCAtMCww
ICsxLDE1NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVk
ZSAiTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9P
UFRJT05TKE5TOjpVSW50ZWdlciwgRnVuY3Rpb25PcHRpb25zKSB7CisgICAgRnVuY3Rpb25PcHRp
b25Ob25lID0gMCwKKyAgICBGdW5jdGlvbk9wdGlvbkNvbXBpbGVUb0JpbmFyeSA9IDEsCit9Owor
CitjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8RnVuY3Rpb25E
ZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0
b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IqICAgICAgICBpbml0
KCk7CisKKyAgICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBmdW5jdGlvbkRlc2Ny
aXB0b3IoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgIG5hbWUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXROYW1lKGNvbnN0
IE5TOjpTdHJpbmcqIG5hbWUpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAg
ICAgc3BlY2lhbGl6ZWROYW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0U3BlY2lhbGl6ZWROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIHNwZWNpYWxpemVk
TmFtZSk7CisKKyAgICBjbGFzcyBGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiAgICBjb25zdGFudFZh
bHVlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENv
bnN0YW50VmFsdWVzKGNvbnN0IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50
VmFsdWVzKTsKKworICAgIE1UTDo6RnVuY3Rpb25PcHRpb25zICAgICAgICAgICAgIG9wdGlvbnMo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPcHRpb25z
KE1UTDo6RnVuY3Rpb25PcHRpb25zIG9wdGlvbnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAg
ICAgICAgICAgICAgICAgYmluYXJ5QXJjaGl2ZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJp
bmFyeUFyY2hpdmVzKTsKK307CisKK2NsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRv
ciA6IHB1YmxpYyBOUzo6Q29weWluZzxJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IsIE1U
TDo6RnVuY3Rpb25EZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBJbnRl
cnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbnRlcnNl
Y3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7Cit9OworCit9CisKKy8vIHN0
YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciog
TVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6YWxsb2M8TVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVu
Y3Rpb25EZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRM
OjpGdW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjppbml0KCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcj4oKTsK
K30KKworLy8gc3RhdGljIG1ldGhvZDogZnVuY3Rpb25EZXNjcmlwdG9yCitfTVRMX0lOTElORSBN
VEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OmZ1bmN0aW9u
RGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5j
dGlvbkRlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEZ1bmN0aW9uRGVzY3JpcHRvciks
IF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25EZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6
bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmlu
Zyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpzZXROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE5hbWVfKSwgbmFtZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzcGVjaWFsaXplZE5hbWUKK19N
VExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpzcGVjaWFsaXpl
ZE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJp
bmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNwZWNpYWxpemVkTmFtZSkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpzZXRTcGVjaWFsaXplZE5hbWUo
Y29uc3QgTlM6OlN0cmluZyogc3BlY2lhbGl6ZWROYW1lKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTcGVjaWFsaXplZE5hbWVfKSwg
c3BlY2lhbGl6ZWROYW1lKTsKK30KKworLy8gcHJvcGVydHk6IGNvbnN0YW50VmFsdWVzCitfTVRM
X0lOTElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIE1UTDo6RnVuY3Rpb25EZXNjcmlw
dG9yOjpjb25zdGFudFZhbHVlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChjb25zdGFudFZhbHVlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25E
ZXNjcmlwdG9yOjpzZXRDb25zdGFudFZhbHVlcyhjb25zdCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRW
YWx1ZXMqIGNvbnN0YW50VmFsdWVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb25zdGFudFZhbHVlc18pLCBjb25zdGFudFZhbHVl
cyk7Cit9CisKKy8vIHByb3BlcnR5OiBvcHRpb25zCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9u
T3B0aW9ucyBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6b3B0aW9ucygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbk9wdGlvbnM+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwob3B0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVu
Y3Rpb25EZXNjcmlwdG9yOjpzZXRPcHRpb25zKE1UTDo6RnVuY3Rpb25PcHRpb25zIG9wdGlvbnMp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE9wdGlvbnNfKSwgb3B0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlBcmNoaXZl
cworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6YmluYXJ5
QXJjaGl2ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpB
cnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYmluYXJ5QXJjaGl2ZXMpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMo
Y29uc3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmlu
YXJ5QXJjaGl2ZXMpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUg
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6SW50ZXJzZWN0aW9uRnVu
Y3Rpb25EZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBNVEw6Oklu
dGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3I+KCk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rp
b25IYW5kbGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1
bmN0aW9uSGFuZGxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGYzODUxNDM3YzcxZTgwZGE5ODdlZWNlOThi
ZDFhODA4YzNlMmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uSGFuZGxlLmhwcApAQCAtMCwwICsxLDYxIEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9N
VExGdW5jdGlvbkhhbmRsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExI
ZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTExpYnJhcnkuaHBwIgor
CituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBGdW5jdGlvbkhhbmRsZSA6IHB1YmxpYyBOUzo6UmVm
ZXJlbmNpbmc8RnVuY3Rpb25IYW5kbGU+Cit7CitwdWJsaWM6CisgICAgTVRMOjpGdW5jdGlvblR5
cGUgZnVuY3Rpb25UeXBlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICBuYW1lKCkg
Y29uc3Q7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICBkZXZpY2UoKSBjb25zdDsKK307CisKK30K
KworLy8gcHJvcGVydHk6IGZ1bmN0aW9uVHlwZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblR5
cGUgTVRMOjpGdW5jdGlvbkhhbmRsZTo6ZnVuY3Rpb25UeXBlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uVHlwZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChmdW5jdGlvblR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5M
SU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb25IYW5kbGU6Om5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRM
OjpEZXZpY2UqIE1UTDo6RnVuY3Rpb25IYW5kbGU6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGRldmljZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EzOGRjOWRhYmQ2MWVh
YmJlZmUwZTRiZGMzNWUyOTNlMjcwODE1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAKQEAgLTAsMCArMSwx
MTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIE1ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRnVuY3Rp
b25Mb2cuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBG
dW5jdGlvbkxvZ1R5cGUpIHsKKyAgICBGdW5jdGlvbkxvZ1R5cGVWYWxpZGF0aW9uID0gMCwKK307
CisKK2NsYXNzIExvZ0NvbnRhaW5lciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8TG9nQ29udGFp
bmVyLCBOUzo6RmFzdEVudW1lcmF0aW9uPgoreworcHVibGljOgorfTsKKworY2xhc3MgRnVuY3Rp
b25Mb2dEZWJ1Z0xvY2F0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbkxvZ0Rl
YnVnTG9jYXRpb24+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogIGZ1bmN0aW9uTmFtZSgp
IGNvbnN0OworCisgICAgTlM6OlVSTCogICAgIFVSTCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRl
Z2VyIGxpbmUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciBjb2x1bW4oKSBjb25zdDsKK307
CisKK2NsYXNzIEZ1bmN0aW9uTG9nIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbkxv
Zz4KK3sKK3B1YmxpYzoKKyAgICBNVEw6OkZ1bmN0aW9uTG9nVHlwZSAgICAgICAgICAgIHR5cGUo
KSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlckxh
YmVsKCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogICAgICAgICAgICAgICAgIGZ1bmN0
aW9uKCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24qIGRlYnVn
TG9jYXRpb24oKSBjb25zdDsKK307CisKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uTmFtZQor
X01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb246OmZ1
bmN0aW9uTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25OYW1lKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBVUkwKK19NVExfSU5MSU5FIE5TOjpVUkwqIE1UTDo6RnVuY3Rpb25Mb2dEZWJ1
Z0xvY2F0aW9uOjpVUkwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVUkwqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKFVSTCkpOworfQorCisvLyBwcm9wZXJ0
eTogbGluZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RnVuY3Rpb25Mb2dEZWJ1Z0xv
Y2F0aW9uOjpsaW5lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGluZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogY29sdW1uCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpGdW5jdGlvbkxvZ0Rl
YnVnTG9jYXRpb246OmNvbHVtbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbHVtbikpOworfQor
CisvLyBwcm9wZXJ0eTogdHlwZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkxvZ1R5cGUgTVRM
OjpGdW5jdGlvbkxvZzo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpGdW5jdGlvbkxvZ1R5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHlwZSkp
OworfQorCisvLyBwcm9wZXJ0eTogZW5jb2RlckxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5n
KiBNVEw6OkZ1bmN0aW9uTG9nOjplbmNvZGVyTGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVu
Y29kZXJMYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb24KK19NVExfSU5MSU5FIE1U
TDo6RnVuY3Rpb24qIE1UTDo6RnVuY3Rpb25Mb2c6OmZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChmdW5jdGlvbikpOworfQorCisvLyBwcm9wZXJ0eTogZGVidWdMb2NhdGlvbgorX01U
TF9JTkxJTkUgTVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24qIE1UTDo6RnVuY3Rpb25Mb2c6
OmRlYnVnTG9jYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChk
ZWJ1Z0xvY2F0aW9uKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
OWRjYjQ5NmNlZDZiZDdhMzJiNTE2YzJiMmYzNTY1Yzc5YjYxZGQxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3RpdGNo
aW5nLmhwcApAQCAtMCwwICsxLDMwNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNs
dWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHA+CisKKyNpbmNsdWRlICJNVExGdW5jdGlvblN0aXRjaGluZy5ocHAiCisKK25hbWVzcGFjZSBN
VEwKK3sKK2NsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlIDogcHVibGljIE5TOjpSZWZl
cmVuY2luZzxGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZT4KK3sKK307CisKK2NsYXNzIEZ1bmN0
aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lIDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZSwgRnVuY3Rpb25TdGl0Y2hp
bmdBdHRyaWJ1dGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3RpdGNo
aW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25T
dGl0Y2hpbmdBdHRyaWJ1dGVBbHdheXNJbmxpbmUqICAgICAgICBpbml0KCk7Cit9OworCitjbGFz
cyBGdW5jdGlvblN0aXRjaGluZ05vZGUgOiBwdWJsaWMgTlM6OkNvcHlpbmc8RnVuY3Rpb25TdGl0
Y2hpbmdOb2RlPgoreworfTsKKworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlLCBGdW5jdGlv
blN0aXRjaGluZ05vZGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3Rp
dGNoaW5nSW5wdXROb2RlKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdJ
bnB1dE5vZGUqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZ3VtZW50SW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFyZ3VtZW50SW5kZXgoTlM6OlVJbnRlZ2Vy
IGFyZ3VtZW50SW5kZXgpOworCisgICAgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSog
ICAgICAgICBpbml0KE5TOjpVSW50ZWdlciBhcmd1bWVudCk7Cit9OworCitjbGFzcyBGdW5jdGlv
blN0aXRjaGluZ0Z1bmN0aW9uTm9kZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25T
dGl0Y2hpbmdGdW5jdGlvbk5vZGUsIEZ1bmN0aW9uU3RpdGNoaW5nTm9kZT4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIGFsbG9jKCk7
CisKKyAgICBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSogICAgICAgIGluaXQo
KTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFt
ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0TmFtZShjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKKworICAgIE5TOjpBcnJheSogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBcmd1bWVudHMoY29u
c3QgTlM6OkFycmF5KiBhcmd1bWVudHMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250cm9sRGVwZW5kZW5jaWVzKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250cm9sRGVwZW5k
ZW5jaWVzKGNvbnN0IE5TOjpBcnJheSogY29udHJvbERlcGVuZGVuY2llcyk7CisKKyAgICBNVEw6
OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiAgICAgICAgIGluaXQoY29uc3QgTlM6OlN0
cmluZyogbmFtZSwgY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMsIGNvbnN0IE5TOjpBcnJheSog
Y29udHJvbERlcGVuZGVuY2llcyk7Cit9OworCitjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0dyYXBo
IDogcHVibGljIE5TOjpDb3B5aW5nPEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIGFsbG9jKCk7CisKKyAg
ICBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0dyYXBoKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6
OlN0cmluZyogICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGdW5jdGlvbk5hbWUo
Y29uc3QgTlM6OlN0cmluZyogZnVuY3Rpb25OYW1lKTsKKworICAgIE5TOjpBcnJheSogICAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXROb2Rlcyhjb25zdCBOUzo6QXJyYXkqIG5vZGVzKTsKKwor
ICAgIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBvdXRwdXROb2RlKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE91dHB1dE5v
ZGUoY29uc3QgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIG91dHB1dE5vZGUp
OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXR0
cmlidXRlcyhjb25zdCBOUzo6QXJyYXkqIGF0dHJpYnV0ZXMpOworCisgICAgTVRMOjpGdW5jdGlv
blN0aXRjaGluZ0dyYXBoKiAgICAgICAgIGluaXQoY29uc3QgTlM6OlN0cmluZyogZnVuY3Rpb25O
YW1lLCBjb25zdCBOUzo6QXJyYXkqIG5vZGVzLCBjb25zdCBjbGFzcyBGdW5jdGlvblN0aXRjaGlu
Z0Z1bmN0aW9uTm9kZSogb3V0cHV0Tm9kZSwgY29uc3QgTlM6OkFycmF5KiBhdHRyaWJ1dGVzKTsK
K307CisKK2NsYXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlp
bmc8U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xh
c3MgU3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFN0aXRj
aGVkTGlicmFyeURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25HcmFwaHMoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnVuY3Rpb25HcmFwaHMo
Y29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbkdyYXBocyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJy
YXkqIGZ1bmN0aW9ucyk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKiBNVEw6
OkZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lOjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVB
bHdheXNJbmxpbmU+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1
dGVBbHdheXNJbmxpbmUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OkZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKiBNVEw6OkZ1bmN0aW9uU3Rp
dGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lPigp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlv
blN0aXRjaGluZ0lucHV0Tm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZTo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9uU3RpdGNo
aW5nSW5wdXROb2RlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXRO
b2RlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0
aXRjaGluZ0lucHV0Tm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZTo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0lu
cHV0Tm9kZT4oKTsKK30KKworLy8gcHJvcGVydHk6IGFyZ3VtZW50SW5kZXgKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlOjphcmd1bWVudElu
ZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJndW1lbnRJbmRleCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU6OnNldEFyZ3VtZW50SW5k
ZXgoTlM6OlVJbnRlZ2VyIGFyZ3VtZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFyZ3VtZW50SW5kZXhfKSwgYXJndW1l
bnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhBcmd1bWVudEluZGV4OgorX01UTF9J
TkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSogTVRMOjpGdW5jdGlvblN0aXRj
aGluZ0lucHV0Tm9kZTo6aW5pdChOUzo6VUludGVnZXIgYXJndW1lbnQpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoaW5pdFdpdGhBcmd1bWVudEluZGV4XyksIGFyZ3VtZW50KTsK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25T
dGl0Y2hpbmdGdW5jdGlvbk5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU6
OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpGdW5jdGlvblN0
aXRjaGluZ0Z1bmN0aW9uTm9kZT4oX01UTF9QUklWQVRFX0NMUyhNVExGdW5jdGlvblN0aXRjaGlu
Z0Z1bmN0aW9uTm9kZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5j
dGlvbk5vZGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitf
TVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2Rl
OjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6c2V0TmFtZShjb25zdCBOUzo6
U3RyaW5nKiBuYW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXROYW1lXyksIG5hbWUpOworfQorCisvLyBwcm9wZXJ0eTogYXJndW1l
bnRzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlv
bk5vZGU6OmFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcmd1bWVudHMpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpzZXRB
cmd1bWVudHMoY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFyZ3VtZW50c18pLCBhcmd1
bWVudHMpOworfQorCisvLyBwcm9wZXJ0eTogY29udHJvbERlcGVuZGVuY2llcworX01UTF9JTkxJ
TkUgTlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjpjb250cm9s
RGVwZW5kZW5jaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbnRyb2xEZXBlbmRlbmNpZXMpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2Rl
OjpzZXRDb250cm9sRGVwZW5kZW5jaWVzKGNvbnN0IE5TOjpBcnJheSogY29udHJvbERlcGVuZGVu
Y2llcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0Q29udHJvbERlcGVuZGVuY2llc18pLCBjb250cm9sRGVwZW5kZW5jaWVzKTsKK30K
KworLy8gbWV0aG9kOiBpbml0V2l0aE5hbWU6YXJndW1lbnRzOmNvbnRyb2xEZXBlbmRlbmNpZXM6
CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjppbml0KGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUs
IGNvbnN0IE5TOjpBcnJheSogYXJndW1lbnRzLCBjb25zdCBOUzo6QXJyYXkqIGNvbnRyb2xEZXBl
bmRlbmNpZXMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlv
blN0aXRjaGluZ0Z1bmN0aW9uTm9kZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5pdFdpdGhO
YW1lX2FyZ3VtZW50c19jb250cm9sRGVwZW5kZW5jaWVzXyksIG5hbWUsIGFyZ3VtZW50cywgY29u
dHJvbERlcGVuZGVuY2llcyk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lO
TElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdH
cmFwaDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0
aW9uU3RpdGNoaW5nR3JhcGg+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdH
cmFwaCkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25T
dGl0Y2hpbmdHcmFwaCogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg+KCk7
Cit9CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvbk5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcq
IE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6ZnVuY3Rpb25OYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChmdW5jdGlvbk5hbWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0
aW9uU3RpdGNoaW5nR3JhcGg6OnNldEZ1bmN0aW9uTmFtZShjb25zdCBOUzo6U3RyaW5nKiBmdW5j
dGlvbk5hbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEZ1bmN0aW9uTmFtZV8pLCBmdW5jdGlvbk5hbWUpOworfQorCisvLyBwcm9w
ZXJ0eTogbm9kZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpGdW5jdGlvblN0aXRjaGlu
Z0dyYXBoOjpub2RlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChub2RlcykpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6c2V0Tm9kZXMoY29uc3QgTlM6
OkFycmF5KiBub2RlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0Tm9kZXNfKSwgbm9kZXMpOworfQorCisvLyBwcm9wZXJ0eTogb3V0
cHV0Tm9kZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSog
TVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpvdXRwdXROb2RlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25O
b2RlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvdXRwdXROb2RlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpzZXRPdXRwdXROb2RlKGNvbnN0
IE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIG91dHB1dE5vZGUpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE91dHB1
dE5vZGVfKSwgb3V0cHV0Tm9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBhdHRyaWJ1dGVzCitfTVRM
X0lOTElORSBOUzo6QXJyYXkqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6YXR0cmlidXRl
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChhdHRyaWJ1dGVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpzZXRBdHRyaWJ1dGVzKGNvbnN0IE5TOjpB
cnJheSogYXR0cmlidXRlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0QXR0cmlidXRlc18pLCBhdHRyaWJ1dGVzKTsKK30KKworLy8g
bWV0aG9kOiBpbml0V2l0aEZ1bmN0aW9uTmFtZTpub2RlczpvdXRwdXROb2RlOmF0dHJpYnV0ZXM6
CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIE1UTDo6RnVuY3Rpb25T
dGl0Y2hpbmdHcmFwaDo6aW5pdChjb25zdCBOUzo6U3RyaW5nKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IE5TOjpBcnJheSogbm9kZXMsIGNvbnN0IE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5v
ZGUqIG91dHB1dE5vZGUsIGNvbnN0IE5TOjpBcnJheSogYXR0cmlidXRlcykKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGluaXRXaXRoRnVuY3Rpb25OYW1lX25vZGVzX291dHB1dE5vZGVf
YXR0cmlidXRlc18pLCBmdW5jdGlvbk5hbWUsIG5vZGVzLCBvdXRwdXROb2RlLCBhdHRyaWJ1dGVz
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6U3RpdGNo
ZWRMaWJyYXJ5RGVzY3JpcHRvciogTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yOjphbGxv
YygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U3RpdGNoZWRMaWJyYXJ5
RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdGl0Y2hlZExpYnJh
cnlEZXNjcmlwdG9yKiBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRv
cj4oKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uR3JhcGhzCitfTVRMX0lOTElORSBOUzo6
QXJyYXkqIE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcjo6ZnVuY3Rpb25HcmFwaHMoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25HcmFwaHMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I6OnNldEZ1bmN0aW9uR3JhcGhzKGNvbnN0
IE5TOjpBcnJheSogZnVuY3Rpb25HcmFwaHMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uR3JhcGhzXyksIGZ1bmN0aW9u
R3JhcGhzKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I6OmZ1bmN0aW9ucygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChmdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0aXRj
aGVkTGlicmFyeURlc2NyaXB0b3I6OnNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0
aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0RnVuY3Rpb25zXyksIGZ1bmN0aW9ucyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJpZGdlLmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFkZXJCcmlkZ2UuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgxMDA4NWRkYTU3YjQxZTM5NDA4MzM4MmMwYjk5MDJjYzUxMzRlMzcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVy
QnJpZGdlLmhwcApAQCAtMCwwICsxLDIwNDcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEhlYWRlckJyaWRnZS5ocHAKKy8v
CisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8v
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisjaW5jbHVkZSAi
TVRMUHJpdmF0ZS5ocHAiCisKK25hbWVzcGFjZSBNVEw6OlByaXZhdGU6OkNsYXNzCit7CisKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0
cnVjdHVyZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQWNjZWxlcmF0aW9u
U3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFj
Y2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFu
Z2xlR2VvbWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJh
dGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9E
RUZfQ0xTKE1UTEFyZ3VtZW50KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEFyZ3VtZW50RGVz
Y3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBcnJheVR5cGUpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMQXR0cmlidXRlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEF0dHJp
YnV0ZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQXR0cmlidXRlRGVzY3Jp
cHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJpbmFyeUFyY2hpdmVEZXNjcmlw
dG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJsaXRQYXNzRGVzY3JpcHRvcik7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExCdWZmZXJMYXlv
dXREZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJ1ZmZlckxheW91dERlc2Ny
aXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDYXB0dXJlRGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDYXB0dXJlTWFuYWdlcik7CitfTVRMX1BSSVZBVEVf
REVGX0NMUyhNVExDb21tYW5kQnVmZmVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NM
UyhNVExDb21waWxlT3B0aW9ucyk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDb21wdXRlUGFz
c0Rlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tcHV0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDb21w
dXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVf
REVGX0NMUyhNVExDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTENvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
RnVuY3Rpb25Db25zdGFudCk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvbkNvbnN0
YW50VmFsdWVzKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEZ1bmN0aW9uRGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5
c0lubGluZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0Z1bmN0
aW9uTm9kZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0dyYXBo
KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlKTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEhlYXBEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9E
RUZfQ0xTKE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcik7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRv
cik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExMaW5rZWRGdW5jdGlvbnMpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMTW90aW9uS2V5ZnJhbWVEYXRhKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQ
aXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQ
b2ludGVyVHlwZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQcmltaXRpdmVBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJhc3Rlcml6
YXRpb25SYXRlTGF5ZXJBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSYXN0ZXJpemF0
aW9uUmF0ZUxheWVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSYXN0ZXJp
emF0aW9uUmF0ZU1hcERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmFzdGVy
aXphdGlvblJhdGVTYW1wbGVBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVf
REVGX0NMUyhNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BS
SVZBVEVfREVGX0NMUyhNVExSZW5kZXJQYXNzRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc1N0ZW5jaWxB
dHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9E
RUZfQ0xTKE1UTFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcik7CitfTVRMX1BSSVZB
VEVfREVGX0NMUyhNVExSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24pOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMUmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3Ip
OworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNhbXBs
ZXJEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNoYXJlZEV2ZW50SGFuZGxl
KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNoYXJlZEV2ZW50TGlzdGVuZXIpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMU2hhcmVkVGV4dHVyZUhhbmRsZSk7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NM
UyhNVExTdGVuY2lsRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExTdGl0Y2hl
ZExpYnJhcnlEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFN0cnVjdE1lbWJl
cik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExTdHJ1Y3RUeXBlKTsKK19NVExfUFJJVkFURV9E
RUZfQ0xTKE1UTFRleHR1cmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFRl
eHR1cmVSZWZlcmVuY2VUeXBlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFRpbGVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMo
TVRMVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMVHlwZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWZXJ0
ZXhBdHRyaWJ1dGUpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4QXR0cmlidXRlRGVz
Y3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlw
dG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4QnVmZmVyTGF5b3V0RGVz
Y3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWZXJ0ZXhCdWZmZXJMYXlvdXREZXNj
cmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4RGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3Ip
OworCit9CisKK25hbWVzcGFjZSBNVEw6OlByaXZhdGU6OlByb3RvY29sCit7CisKK19NVExfUFJJ
VkFURV9ERUZfUFJPKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZSk7CitfTVRMX1BSSVZBVEVfREVG
X1BSTyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcik7CitfTVRMX1BSSVZB
VEVfREVGX1BSTyhNVExBcmd1bWVudEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRM
QmluYXJ5QXJjaGl2ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExCbGl0Q29tbWFuZEVuY29k
ZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQnVmZmVyKTsKK19NVExfUFJJVkFURV9ERUZf
UFJPKE1UTENvbW1hbmRCdWZmZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ29tbWFuZEJ1
ZmZlckVuY29kZXJJbmZvKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvbW1hbmRFbmNvZGVy
KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvbW1hbmRRdWV1ZSk7CitfTVRMX1BSSVZBVEVf
REVGX1BSTyhNVExDb21wdXRlQ29tbWFuZEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8o
TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ291bnRl
cik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExDb3VudGVyU2FtcGxlQnVmZmVyKTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTENvdW50ZXJTZXQpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRM
RGVwdGhTdGVuY2lsU3RhdGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRGV2aWNlKTsKK19N
VExfUFJJVkFURV9ERUZfUFJPKE1UTERyYXdhYmxlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1U
TER5bmFtaWNMaWJyYXJ5KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEV2ZW50KTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTEZlbmNlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0
aW9uKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0aW9uSGFuZGxlKTsKK19NVExfUFJJ
VkFURV9ERUZfUFJPKE1UTEZ1bmN0aW9uTG9nKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEZ1
bmN0aW9uTG9nRGVidWdMb2NhdGlvbik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlv
blN0aXRjaGluZ0F0dHJpYnV0ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvblN0
aXRjaGluZ05vZGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMSGVhcCk7CitfTVRMX1BSSVZB
VEVfREVGX1BSTyhNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIpOworX01UTF9QUklWQVRFX0RFRl9Q
Uk8oTVRMSW5kaXJlY3RDb21wdXRlQ29tbWFuZCk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExJ
bmRpcmVjdFJlbmRlckNvbW1hbmQpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMSW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExMaWJyYXJ5KTsKK19N
VExfUFJJVkFURV9ERUZfUFJPKE1UTExvZ0NvbnRhaW5lcik7CitfTVRMX1BSSVZBVEVfREVGX1BS
TyhNVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJP
KE1UTFJhc3Rlcml6YXRpb25SYXRlTWFwKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTFJlbmRl
ckNvbW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTFJlbmRlclBpcGVsaW5l
U3RhdGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMUmVzb3VyY2UpOworX01UTF9QUklWQVRF
X0RFRl9QUk8oTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9E
RUZfUFJPKE1UTFNhbXBsZXJTdGF0ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExTaGFyZWRF
dmVudCk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExUZXh0dXJlKTsKK19NVExfUFJJVkFURV9E
RUZfUFJPKE1UTFZpc2libGVGdW5jdGlvblRhYmxlKTsKKworfQorCituYW1lc3BhY2UgTVRMOjpQ
cml2YXRlOjpTZWxlY3RvcgoreworCitfTVRMX1BSSVZBVEVfREVGX1NFTChHUFVFbmRUaW1lLAor
ICAgICJHUFVFbmRUaW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChHUFVTdGFydFRpbWUsCisg
ICAgIkdQVVN0YXJ0VGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoVVJMLAorICAgICJVUkwi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNv
ZGVyLAorICAgICJhY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXNXaXRoRGVzY3JpcHRvcl8s
CisgICAgImFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemVzV2l0aERlc2NyaXB0b3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChhY2Nlc3MsCisgICAgImFjY2VzcyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoYWRkQ29tcGxldGVkSGFuZGxlcl8sCisgICAgImFkZENvbXBsZXRlZEhhbmRsZXI6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRDb21wdXRlUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVz
Y3JpcHRvcl9lcnJvcl8sCisgICAgImFkZENvbXB1dGVQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNj
cmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWRkRGVidWdNYXJrZXJfcmFu
Z2VfLAorICAgICJhZGREZWJ1Z01hcmtlcjpyYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGFkZEZ1bmN0aW9uV2l0aERlc2NyaXB0b3JfbGlicmFyeV9lcnJvcl8sCisgICAgImFkZEZ1bmN0
aW9uV2l0aERlc2NyaXB0b3I6bGlicmFyeTplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGFkZFByZXNlbnRlZEhhbmRsZXJfLAorICAgICJhZGRQcmVzZW50ZWRIYW5kbGVyOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoYWRkUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRv
cl9lcnJvcl8sCisgICAgImFkZFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6
ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRTY2hlZHVsZWRIYW5kbGVyXywKKyAg
ICAiYWRkU2NoZWR1bGVkSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFkZFRpbGVS
ZW5kZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAiYWRkVGls
ZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChhbGlnbm1lbnQsCisgICAgImFsaWdubWVudCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYWxsb2NhdGVkU2l6ZSwKKyAgICAiYWxsb2NhdGVkU2l6ZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24s
CisgICAgImFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChhbGxvd0dQVU9wdGltaXplZENvbnRlbnRzLAorICAgICJhbGxv
d0dQVU9wdGltaXplZENvbnRlbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhbHBoYUJsZW5k
T3BlcmF0aW9uLAorICAgICJhbHBoYUJsZW5kT3BlcmF0aW9uIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChhcmVCYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBvcnRlZCwKKyAgICAiYXJlQmFyeWNlbnRyaWND
b29yZHNTdXBwb3J0ZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFyZVByb2dyYW1tYWJsZVNh
bXBsZVBvc2l0aW9uc1N1cHBvcnRlZCwKKyAgICAiYXJlUHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRp
b25zU3VwcG9ydGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmVSYXN0ZXJPcmRlckdyb3Vw
c1N1cHBvcnRlZCwKKyAgICAiYXJlUmFzdGVyT3JkZXJHcm91cHNTdXBwb3J0ZWQiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGFyZ3VtZW50QnVmZmVyc1N1cHBvcnQsCisgICAgImFyZ3VtZW50QnVm
ZmVyc1N1cHBvcnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFyZ3VtZW50RGVzY3JpcHRvciwK
KyAgICAiYXJndW1lbnREZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmd1bWVu
dEluZGV4LAorICAgICJhcmd1bWVudEluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmd1
bWVudEluZGV4U3RyaWRlLAorICAgICJhcmd1bWVudEluZGV4U3RyaWRlIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChhcmd1bWVudHMsCisgICAgImFyZ3VtZW50cyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoYXJyYXlMZW5ndGgsCisgICAgImFycmF5TGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChhcnJheVR5cGUsCisgICAgImFycmF5VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
YXR0cmlidXRlSW5kZXgsCisgICAgImF0dHJpYnV0ZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChhdHRyaWJ1dGVUeXBlLAorICAgICJhdHRyaWJ1dGVUeXBlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChhdHRyaWJ1dGVzLAorICAgICJhdHRyaWJ1dGVzIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChiYWNrRmFjZVN0ZW5jaWwsCisgICAgImJhY2tGYWNlU3RlbmNpbCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoYmluYXJ5QXJjaGl2ZXMsCisgICAgImJpbmFyeUFyY2hpdmVzIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChiaW5hcnlGdW5jdGlvbnMsCisgICAgImJpbmFyeUZ1bmN0aW9ucyIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoYmxpdENvbW1hbmRFbmNvZGVyLAorICAgICJibGl0Q29t
bWFuZEVuY29kZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJsaXRDb21tYW5kRW5jb2Rlcldp
dGhEZXNjcmlwdG9yXywKKyAgICAiYmxpdENvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChibGl0UGFzc0Rlc2NyaXB0b3IsCisgICAgImJsaXRQYXNz
RGVzY3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYm9yZGVyQ29sb3IsCisgICAgImJv
cmRlckNvbG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChib3VuZGluZ0JveEJ1ZmZlciwKKyAg
ICAiYm91bmRpbmdCb3hCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94
QnVmZmVyT2Zmc2V0LAorICAgICJib3VuZGluZ0JveEJ1ZmZlck9mZnNldCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoYm91bmRpbmdCb3hCdWZmZXJzLAorICAgICJib3VuZGluZ0JveEJ1ZmZlcnMi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94Q291bnQsCisgICAgImJvdW5kaW5n
Qm94Q291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94U3RyaWRlLAorICAg
ICJib3VuZGluZ0JveFN0cmlkZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVyLAorICAg
ICJidWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlckFsaWdubWVudCwKKyAgICAi
YnVmZmVyQWxpZ25tZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZmZXJCeXRlc1BlclJv
dywKKyAgICAiYnVmZmVyQnl0ZXNQZXJSb3ciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZl
ckRhdGFTaXplLAorICAgICJidWZmZXJEYXRhU2l6ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
YnVmZmVyRGF0YVR5cGUsCisgICAgImJ1ZmZlckRhdGFUeXBlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChidWZmZXJJbmRleCwKKyAgICAiYnVmZmVySW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGJ1ZmZlck9mZnNldCwKKyAgICAiYnVmZmVyT2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChidWZmZXJQb2ludGVyVHlwZSwKKyAgICAiYnVmZmVyUG9pbnRlclR5cGUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGJ1ZmZlclN0cnVjdFR5cGUsCisgICAgImJ1ZmZlclN0cnVjdFR5cGUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlcnMsCisgICAgImJ1ZmZlcnMiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlX2Rlc2NyaXB0b3Jfc2Ny
YXRjaEJ1ZmZlcl9zY3JhdGNoQnVmZmVyT2Zmc2V0XywKKyAgICAiYnVpbGRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmU6ZGVzY3JpcHRvcjpzY3JhdGNoQnVmZmVyOnNjcmF0Y2hCdWZmZXJPZmZzZXQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChjYXB0dXJlT2JqZWN0LAorICAgICJjYXB0dXJlT2JqZWN0
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjbGVhckJhcnJpZXIsCisgICAgImNsZWFyQmFycmll
ciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY2xlYXJDb2xvciwKKyAgICAiY2xlYXJDb2xvciIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoY2xlYXJEZXB0aCwKKyAgICAiY2xlYXJEZXB0aCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY2xlYXJTdGVuY2lsLAorICAgICJjbGVhclN0ZW5jaWwiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGNvbG9yQXR0YWNobWVudHMsCisgICAgImNvbG9yQXR0YWNo
bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbHVtbiwKKyAgICAiY29sdW1uIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChjb21tYW5kQnVmZmVyLAorICAgICJjb21tYW5kQnVmZmVyIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3JfLAorICAg
ICJjb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChj
b21tYW5kQnVmZmVyV2l0aFVucmV0YWluZWRSZWZlcmVuY2VzLAorICAgICJjb21tYW5kQnVmZmVy
V2l0aFVucmV0YWluZWRSZWZlcmVuY2VzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21tYW5k
UXVldWUsCisgICAgImNvbW1hbmRRdWV1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWFu
ZFR5cGVzLAorICAgICJjb21tYW5kVHlwZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbW1p
dCwKKyAgICAiY29tbWl0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21wYXJlRnVuY3Rpb24s
CisgICAgImNvbXBhcmVGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tcHV0ZUNv
bW1hbmRFbmNvZGVyLAorICAgICJjb21wdXRlQ29tbWFuZEVuY29kZXIiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXywKKyAgICAiY29t
cHV0ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChjb21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGlzcGF0Y2hUeXBlXywKKyAgICAiY29tcHV0ZUNv
bW1hbmRFbmNvZGVyV2l0aERpc3BhdGNoVHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNv
bXB1dGVGdW5jdGlvbiwKKyAgICAiY29tcHV0ZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChjb21wdXRlUGFzc0Rlc2NyaXB0b3IsCisgICAgImNvbXB1dGVQYXNzRGVzY3JpcHRvciIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoY29uY3VycmVudERpc3BhdGNoVGhyZWFkZ3JvdXBzX3Ro
cmVhZHNQZXJUaHJlYWRncm91cF8sCisgICAgImNvbmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3Vw
czp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb25jdXJy
ZW50RGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJlYWRncm91cF8sCisgICAgImNvbmN1cnJl
bnREaXNwYXRjaFRocmVhZHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoY29uc3RhbnRCbG9ja0FsaWdubWVudCwKKyAgICAiY29uc3RhbnRCbG9ja0FsaWdu
bWVudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29uc3RhbnREYXRhQXRJbmRleF8sCisgICAg
ImNvbnN0YW50RGF0YUF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb25zdGFudFZh
bHVlcywKKyAgICAiY29uc3RhbnRWYWx1ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbnRl
bnRzLAorICAgICJjb250ZW50cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29udHJvbERlcGVu
ZGVuY2llcywKKyAgICAiY29udHJvbERlcGVuZGVuY2llcyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoY29udmVydFNwYXJzZVBpeGVsUmVnaW9uc190b1RpbGVSZWdpb25zX3dpdGhUaWxlU2l6ZV9h
bGlnbm1lbnRNb2RlX251bVJlZ2lvbnNfLAorICAgICJjb252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25z
OnRvVGlsZVJlZ2lvbnM6d2l0aFRpbGVTaXplOmFsaWdubWVudE1vZGU6bnVtUmVnaW9uczoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGNvbnZlcnRTcGFyc2VUaWxlUmVnaW9uc190b1BpeGVsUmVn
aW9uc193aXRoVGlsZVNpemVfbnVtUmVnaW9uc18sCisgICAgImNvbnZlcnRTcGFyc2VUaWxlUmVn
aW9uczp0b1BpeGVsUmVnaW9uczp3aXRoVGlsZVNpemU6bnVtUmVnaW9uczoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGNvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfdG9BY2NlbGVyYXRpb25TdHJ1
Y3R1cmVfLAorICAgICJjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlOnRvQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUFuZENvbXBhY3RBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVfdG9BY2NlbGVyYXRpb25TdHJ1Y3R1cmVfLAorICAgICJjb3B5QW5kQ29tcGFj
dEFjY2VsZXJhdGlvblN0cnVjdHVyZTp0b0FjY2VsZXJhdGlvblN0cnVjdHVyZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGNvcHlGcm9tQnVmZmVyX3NvdXJjZU9mZnNldF9zb3VyY2VCeXRlc1Bl
clJvd19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJjZVNpemVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9u
U2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5hdGlvbk9yaWdpbl8sCisgICAgImNvcHlGcm9t
QnVmZmVyOnNvdXJjZU9mZnNldDpzb3VyY2VCeXRlc1BlclJvdzpzb3VyY2VCeXRlc1BlckltYWdl
OnNvdXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpk
ZXN0aW5hdGlvbk9yaWdpbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvcHlGcm9tQnVmZmVy
X3NvdXJjZU9mZnNldF9zb3VyY2VCeXRlc1BlclJvd19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJj
ZVNpemVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5h
dGlvbk9yaWdpbl9vcHRpb25zXywKKyAgICAiY29weUZyb21CdWZmZXI6c291cmNlT2Zmc2V0OnNv
dXJjZUJ5dGVzUGVyUm93OnNvdXJjZUJ5dGVzUGVySW1hZ2U6c291cmNlU2l6ZTp0b1RleHR1cmU6
ZGVzdGluYXRpb25TbGljZTpkZXN0aW5hdGlvbkxldmVsOmRlc3RpbmF0aW9uT3JpZ2luOm9wdGlv
bnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbUJ1ZmZlcl9zb3VyY2VPZmZzZXRf
dG9CdWZmZXJfZGVzdGluYXRpb25PZmZzZXRfc2l6ZV8sCisgICAgImNvcHlGcm9tQnVmZmVyOnNv
dXJjZU9mZnNldDp0b0J1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDpzaXplOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJjZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJj
ZU9yaWdpbl9zb3VyY2VTaXplX3RvQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0X2Rlc3RpbmF0aW9u
Qnl0ZXNQZXJSb3dfZGVzdGluYXRpb25CeXRlc1BlckltYWdlXywKKyAgICAiY29weUZyb21UZXh0
dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNvdXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvQnVm
ZmVyOmRlc3RpbmF0aW9uT2Zmc2V0OmRlc3RpbmF0aW9uQnl0ZXNQZXJSb3c6ZGVzdGluYXRpb25C
eXRlc1BlckltYWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUZyb21UZXh0dXJlX3Nv
dXJjZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJjZU9yaWdpbl9zb3VyY2VTaXplX3RvQnVmZmVyX2Rl
c3RpbmF0aW9uT2Zmc2V0X2Rlc3RpbmF0aW9uQnl0ZXNQZXJSb3dfZGVzdGluYXRpb25CeXRlc1Bl
ckltYWdlX29wdGlvbnNfLAorICAgICJjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNl
TGV2ZWw6c291cmNlT3JpZ2luOnNvdXJjZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6
ZGVzdGluYXRpb25CeXRlc1BlclJvdzpkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6b3B0aW9uczoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3Vy
Y2VMZXZlbF9zb3VyY2VPcmlnaW5fc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGlj
ZV9kZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luXywKKyAgICAiY29weUZyb21UZXh0
dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNvdXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvVGV4
dHVyZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291
cmNlTGV2ZWxfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9zbGlj
ZUNvdW50X2xldmVsQ291bnRfLAorICAgICJjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291
cmNlTGV2ZWw6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpzbGlj
ZUNvdW50OmxldmVsQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbVRleHR1
cmVfdG9UZXh0dXJlXywKKyAgICAiY29weUZyb21UZXh0dXJlOnRvVGV4dHVyZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGNvcHlJbmRpcmVjdENvbW1hbmRCdWZmZXJfc291cmNlUmFuZ2VfZGVz
dGluYXRpb25fZGVzdGluYXRpb25JbmRleF8sCisgICAgImNvcHlJbmRpcmVjdENvbW1hbmRCdWZm
ZXI6c291cmNlUmFuZ2U6ZGVzdGluYXRpb246ZGVzdGluYXRpb25JbmRleDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXJfb2Zmc2V0XywKKyAgICAiY29w
eVBhcmFtZXRlckRhdGFUb0J1ZmZlcjpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChj
b3VudGVyU2V0LAorICAgICJjb3VudGVyU2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3Vu
dGVyU2V0cywKKyAgICAiY291bnRlclNldHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvdW50
ZXJzLAorICAgICJjb3VudGVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY3B1Q2FjaGVNb2Rl
LAorICAgICJjcHVDYWNoZU1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGN1cnJlbnRBbGxv
Y2F0ZWRTaXplLAorICAgICJjdXJyZW50QWxsb2NhdGVkU2l6ZSIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoZGF0YSwKKyAgICAiZGF0YSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGF0YVNpemUs
CisgICAgImRhdGFTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkYXRhVHlwZSwKKyAgICAi
ZGF0YVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlYWxsb2MsCisgICAgImRlYWxsb2Mi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlYnVnTG9jYXRpb24sCisgICAgImRlYnVnTG9jYXRp
b24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlYnVnU2lnbnBvc3RzLAorICAgICJkZWJ1Z1Np
Z25wb3N0cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVmYXVsdENhcHR1cmVTY29wZSwKKyAg
ICAiZGVmYXVsdENhcHR1cmVTY29wZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVmYXVsdFJh
c3RlclNhbXBsZUNvdW50LAorICAgICJkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGRlcHRoLAorICAgICJkZXB0aCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZGVwdGhBdHRhY2htZW50LAorICAgICJkZXB0aEF0dGFjaG1lbnQiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0LAorICAgICJkZXB0aEF0dGFjaG1l
bnRQaXhlbEZvcm1hdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVwdGhDb21wYXJlRnVuY3Rp
b24sCisgICAgImRlcHRoQ29tcGFyZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChk
ZXB0aEZhaWx1cmVPcGVyYXRpb24sCisgICAgImRlcHRoRmFpbHVyZU9wZXJhdGlvbiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoZGVwdGhQbGFuZSwKKyAgICAiZGVwdGhQbGFuZSIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZGVwdGhSZXNvbHZlRmlsdGVyLAorICAgICJkZXB0aFJlc29sdmVGaWx0
ZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24sCisg
ICAgImRlcHRoU3RlbmNpbFBhc3NPcGVyYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRl
c2NyaXB0b3IsCisgICAgImRlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlc3Rp
bmF0aW9uLAorICAgICJkZXN0aW5hdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVzdGlu
YXRpb25BbHBoYUJsZW5kRmFjdG9yLAorICAgICJkZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3Ii
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IsCisgICAg
ImRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRldmlj
ZSwKKyAgICAiZGV2aWNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkaWRNb2RpZnlSYW5nZV8s
CisgICAgImRpZE1vZGlmeVJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hR
dWV1ZSwKKyAgICAiZGlzcGF0Y2hRdWV1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0
Y2hUaHJlYWRncm91cHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAiZGlzcGF0Y2hUaHJl
YWRncm91cHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
ZGlzcGF0Y2hUaHJlYWRncm91cHNXaXRoSW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZz
ZXRfdGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAiZGlzcGF0Y2hUaHJlYWRncm91cHNXaXRo
SW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6dGhyZWFkc1BlclRocmVhZGdyb3Vw
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJl
YWRncm91cF8sCisgICAgImRpc3BhdGNoVGhyZWFkczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChkaXNwYXRjaFRocmVhZHNQZXJUaWxlXywKKyAgICAiZGlz
cGF0Y2hUaHJlYWRzUGVyVGlsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRpc3BhdGNoVHlw
ZSwKKyAgICAiZGlzcGF0Y2hUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3SW5kZXhl
ZFBhdGNoZXNfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQ
b2ludEluZGV4QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVm
ZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XywKKyAgICAiZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNo
SW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1ZmZl
cjpjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1
ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19w
YXRjaFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zm
c2V0X2NvbnRyb2xQb2ludEluZGV4QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0
X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlXywKKyAgICAiZHJhd0luZGV4ZWRQYXRjaGVzOnBh
dGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZz
ZXQ6Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQ6
aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3
SW5kZXhlZFBhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0
Y2hJbmRleEJ1ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9jb250cm9sUG9pbnRJ
bmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV90ZXNzZWxsYXRpb25G
YWN0b3JCdWZmZXJfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0X3Rlc3NlbGxhdGlvbkZh
Y3RvckJ1ZmZlckluc3RhbmNlU3RyaWRlXywKKyAgICAiZHJhd0luZGV4ZWRQYXRjaGVzOnBhdGNo
U3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6
Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQ6aW5z
dGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOnRlc3NlbGxh
dGlvbkZhY3RvckJ1ZmZlck9mZnNldDp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0
cmlkZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRl
eENvdW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF8sCisgICAgImRy
YXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRl
eEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUHJpbWl0
aXZlc19pbmRleENvdW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9p
bnN0YW5jZUNvdW50XywKKyAgICAiZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4Q291bnQ6aW5k
ZXhUeXBlOmluZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRl
eFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlVmVy
dGV4X2Jhc2VJbnN0YW5jZV8sCisgICAgImRyYXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50
OmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJh
c2VWZXJ0ZXg6YmFzZUluc3RhbmNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd0luZGV4
ZWRQcmltaXRpdmVzX2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbmRp
cmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8sCisgICAgImRyYXdJbmRleGVkUHJpbWl0
aXZlczppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZm
ZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UGF0
Y2hlc19wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5kaXJlY3RCdWZm
ZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJkcmF3UGF0Y2hlczpwYXRjaEluZGV4QnVm
ZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJP
ZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UGF0Y2hlc19wYXRjaFN0YXJ0X3Bh
dGNoQ291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNl
Q291bnRfYmFzZUluc3RhbmNlXywKKyAgICAiZHJhd1BhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENv
dW50OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50
OmJhc2VJbnN0YW5jZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdQYXRjaGVzX3BhdGNo
U3RhcnRfcGF0Y2hDb3VudF9wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRf
aW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyX3Rlc3Nl
bGxhdGlvbkZhY3RvckJ1ZmZlck9mZnNldF90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5j
ZVN0cmlkZV8sCisgICAgImRyYXdQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaElu
ZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFu
Y2U6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlck9mZnNl
dDp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlkZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGRyYXdQcmltaXRpdmVzX2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zm
c2V0XywKKyAgICAiZHJhd1ByaW1pdGl2ZXM6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJP
ZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFy
dF92ZXJ0ZXhDb3VudF8sCisgICAgImRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0OnZlcnRleENv
dW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRf
dmVydGV4Q291bnRfaW5zdGFuY2VDb3VudF8sCisgICAgImRyYXdQcmltaXRpdmVzOnZlcnRleFN0
YXJ0OnZlcnRleENvdW50Omluc3RhbmNlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChk
cmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0ZXhDb3VudF9pbnN0YW5jZUNvdW50X2Jhc2VJ
bnN0YW5jZV8sCisgICAgImRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0OnZlcnRleENvdW50Omlu
c3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd2Fi
bGVJRCwKKyAgICAiZHJhd2FibGVJRCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudEFy
cmF5VHlwZSwKKyAgICAiZWxlbWVudEFycmF5VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
ZWxlbWVudElzQXJndW1lbnRCdWZmZXIsCisgICAgImVsZW1lbnRJc0FyZ3VtZW50QnVmZmVyIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbGVtZW50UG9pbnRlclR5cGUsCisgICAgImVsZW1lbnRQ
b2ludGVyVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudFN0cnVjdFR5cGUsCisg
ICAgImVsZW1lbnRTdHJ1Y3RUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbGVtZW50VGV4
dHVyZVJlZmVyZW5jZVR5cGUsCisgICAgImVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlwZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudFR5cGUsCisgICAgImVsZW1lbnRUeXBlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChlbmNvZGVTaWduYWxFdmVudF92YWx1ZV8sCisgICAgImVuY29k
ZVNpZ25hbEV2ZW50OnZhbHVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZW5jb2RlV2FpdEZv
ckV2ZW50X3ZhbHVlXywKKyAgICAiZW5jb2RlV2FpdEZvckV2ZW50OnZhbHVlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZW5jb2RlZExlbmd0aCwKKyAgICAiZW5jb2RlZExlbmd0aCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoZW5jb2RlckxhYmVsLAorICAgICJlbmNvZGVyTGFiZWwiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGVuZEVuY29kaW5nLAorICAgICJlbmRFbmNvZGluZyIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgsCisgICAgImVuZE9mRW5j
b2RlclNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmRPZkZyYWdtZW50U2Ft
cGxlSW5kZXgsCisgICAgImVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleCwKKyAgICAiZW5kT2ZWZXJ0ZXhTYW1wbGVJ
bmRleCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZW5xdWV1ZSwKKyAgICAiZW5xdWV1ZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZXJyb3IsCisgICAgImVycm9yIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChlcnJvck9wdGlvbnMsCisgICAgImVycm9yT3B0aW9ucyIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoZXJyb3JTdGF0ZSwKKyAgICAiZXJyb3JTdGF0ZSIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXJfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZm
ZXJPZmZzZXRfLAorICAgICJleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjppbmRpcmVjdEJ1ZmZlcjpp
bmRpcmVjdEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGV4ZWN1dGVDb21t
YW5kc0luQnVmZmVyX3dpdGhSYW5nZV8sCisgICAgImV4ZWN1dGVDb21tYW5kc0luQnVmZmVyOndp
dGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZhc3RNYXRoRW5hYmxlZCwKKyAgICAi
ZmFzdE1hdGhFbmFibGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmaWxsQnVmZmVyX3Jhbmdl
X3ZhbHVlXywKKyAgICAiZmlsbEJ1ZmZlcjpyYW5nZTp2YWx1ZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGZpcnN0TWlwbWFwSW5UYWlsLAorICAgICJmaXJzdE1pcG1hcEluVGFpbCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoZm9ybWF0LAorICAgICJmb3JtYXQiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywKKyAgICAiZnJhZ21lbnRB
ZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmcmFnbWVu
dEFyZ3VtZW50cywKKyAgICAiZnJhZ21lbnRBcmd1bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGZyYWdtZW50QnVmZmVycywKKyAgICAiZnJhZ21lbnRCdWZmZXJzIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChmcmFnbWVudEZ1bmN0aW9uLAorICAgICJmcmFnbWVudEZ1bmN0aW9uIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChmcmFnbWVudExpbmtlZEZ1bmN0aW9ucywKKyAgICAiZnJhZ21l
bnRMaW5rZWRGdW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZyYWdtZW50UHJlbG9h
ZGVkTGlicmFyaWVzLAorICAgICJmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcyIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZnJvbnRGYWNlU3RlbmNpbCwKKyAgICAiZnJvbnRGYWNlU3RlbmNpbCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb24sCisgICAgImZ1bmN0aW9uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbkNvbnN0YW50c0RpY3Rpb25hcnksCisgICAgImZ1bmN0
aW9uQ29uc3RhbnRzRGljdGlvbmFyeSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25D
b3VudCwKKyAgICAiZnVuY3Rpb25Db3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rp
b25EZXNjcmlwdG9yLAorICAgICJmdW5jdGlvbkRlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGZ1bmN0aW9uR3JhcGhzLAorICAgICJmdW5jdGlvbkdyYXBocyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb25fLAorICAgICJmdW5jdGlvbkhh
bmRsZVdpdGhGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9uSGFuZGxl
V2l0aEZ1bmN0aW9uX3N0YWdlXywKKyAgICAiZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb246c3Rh
Z2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbk5hbWUsCisgICAgImZ1bmN0aW9u
TmFtZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25OYW1lcywKKyAgICAiZnVuY3Rp
b25OYW1lcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25UeXBlLAorICAgICJmdW5j
dGlvblR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9ucywKKyAgICAiZnVuY3Rp
b25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZW5lcmF0ZU1pcG1hcHNGb3JUZXh0dXJlXywK
KyAgICAiZ2VuZXJhdGVNaXBtYXBzRm9yVGV4dHVyZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGdlb21ldHJ5RGVzY3JpcHRvcnMsCisgICAgImdlb21ldHJ5RGVzY3JpcHRvcnMiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGdldEJ5dGVzX2J5dGVzUGVyUm93X2J5dGVzUGVySW1hZ2VfZnJvbVJl
Z2lvbl9taXBtYXBMZXZlbF9zbGljZV8sCisgICAgImdldEJ5dGVzOmJ5dGVzUGVyUm93OmJ5dGVz
UGVySW1hZ2U6ZnJvbVJlZ2lvbjptaXBtYXBMZXZlbDpzbGljZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGdldEJ5dGVzX2J5dGVzUGVyUm93X2Zyb21SZWdpb25fbWlwbWFwTGV2ZWxfLAorICAg
ICJnZXRCeXRlczpieXRlc1BlclJvdzpmcm9tUmVnaW9uOm1pcG1hcExldmVsOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9uc19jb3VudF8sCisgICAgImdl
dERlZmF1bHRTYW1wbGVQb3NpdGlvbnM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChn
ZXRTYW1wbGVQb3NpdGlvbnNfY291bnRfLAorICAgICJnZXRTYW1wbGVQb3NpdGlvbnM6Y291bnQ6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnNfcmVnaW9u
X21pcExldmVsX3NsaWNlX3Jlc2V0Q291bnRlcnNfY291bnRlcnNCdWZmZXJfY291bnRlcnNCdWZm
ZXJPZmZzZXRfLAorICAgICJnZXRUZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExldmVs
OnNsaWNlOnJlc2V0Q291bnRlcnM6Y291bnRlcnNCdWZmZXI6Y291bnRlcnNCdWZmZXJPZmZzZXQ6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChncm91cHMsCisgICAgImdyb3VwcyIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoaGFzVW5pZmllZE1lbW9yeSwKKyAgICAiaGFzVW5pZmllZE1lbW9yeSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaGF6YXJkVHJhY2tpbmdNb2RlLAorICAgICJoYXphcmRU
cmFja2luZ01vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhlYXAsCisgICAgImhlYXAiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGhlYXBCdWZmZXJTaXplQW5kQWxpZ25XaXRoTGVuZ3RoX29w
dGlvbnNfLAorICAgICJoZWFwQnVmZmVyU2l6ZUFuZEFsaWduV2l0aExlbmd0aDpvcHRpb25zOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaGVhcE9mZnNldCwKKyAgICAiaGVhcE9mZnNldCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaGVhcFRleHR1cmVTaXplQW5kQWxpZ25XaXRoRGVzY3JpcHRv
cl8sCisgICAgImhlYXBUZXh0dXJlU2l6ZUFuZEFsaWduV2l0aERlc2NyaXB0b3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChoZWlnaHQsCisgICAgImhlaWdodCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoaG9yaXpvbnRhbCwKKyAgICAiaG9yaXpvbnRhbCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoaG9yaXpvbnRhbFNhbXBsZVN0b3JhZ2UsCisgICAgImhvcml6b250YWxTYW1wbGVTdG9yYWdl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbWFnZWJsb2NrTWVtb3J5TGVuZ3RoRm9yRGltZW5z
aW9uc18sCisgICAgImltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCwKKyAgICAiaW1hZ2VibG9j
a1NhbXBsZUxlbmd0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5kZXgsCisgICAgImluZGV4
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbmRleEJ1ZmZlciwKKyAgICAiaW5kZXhCdWZmZXIi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGV4QnVmZmVySW5kZXgsCisgICAgImluZGV4QnVm
ZmVySW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGV4QnVmZmVyT2Zmc2V0LAorICAg
ICJpbmRleEJ1ZmZlck9mZnNldCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5kZXhUeXBlLAor
ICAgICJpbmRleFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGlyZWN0Q29tcHV0ZUNv
bW1hbmRBdEluZGV4XywKKyAgICAiaW5kaXJlY3RDb21wdXRlQ29tbWFuZEF0SW5kZXg6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChpbmRpcmVjdFJlbmRlckNvbW1hbmRBdEluZGV4XywKKyAgICAi
aW5kaXJlY3RSZW5kZXJDb21tYW5kQXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlu
aGVyaXRCdWZmZXJzLAorICAgICJpbmhlcml0QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoaW5oZXJpdFBpcGVsaW5lU3RhdGUsCisgICAgImluaGVyaXRQaXBlbGluZVN0YXRlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChpbml0LAorICAgICJpbml0Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpbml0V2l0aEFyZ3VtZW50SW5kZXhfLAorICAgICJpbml0V2l0aEFyZ3VtZW50SW5kZXg6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aERpc3BhdGNoUXVldWVfLAorICAgICJp
bml0V2l0aERpc3BhdGNoUXVldWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEZ1
bmN0aW9uTmFtZV9ub2Rlc19vdXRwdXROb2RlX2F0dHJpYnV0ZXNfLAorICAgICJpbml0V2l0aEZ1
bmN0aW9uTmFtZTpub2RlczpvdXRwdXROb2RlOmF0dHJpYnV0ZXM6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChpbml0V2l0aE5hbWVfYXJndW1lbnRzX2NvbnRyb2xEZXBlbmRlbmNpZXNfLAorICAg
ICJpbml0V2l0aE5hbWU6YXJndW1lbnRzOmNvbnRyb2xEZXBlbmRlbmNpZXM6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChpbml0V2l0aFNhbXBsZUNvdW50XywKKyAgICAiaW5pdFdpdGhTYW1wbGVD
b3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoU2FtcGxlQ291bnRfaG9yaXpv
bnRhbF92ZXJ0aWNhbF8sCisgICAgImluaXRXaXRoU2FtcGxlQ291bnQ6aG9yaXpvbnRhbDp2ZXJ0
aWNhbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlucHV0UHJpbWl0aXZlVG9wb2xvZ3ksCisg
ICAgImlucHV0UHJpbWl0aXZlVG9wb2xvZ3kiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluc2Vy
dERlYnVnQ2FwdHVyZUJvdW5kYXJ5LAorICAgICJpbnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFyeSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5zZXJ0RGVidWdTaWducG9zdF8sCisgICAgImluc2Vy
dERlYnVnU2lnbnBvc3Q6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnNlcnRMaWJyYXJpZXMs
CisgICAgImluc2VydExpYnJhcmllcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5zdGFsbE5h
bWUsCisgICAgImluc3RhbGxOYW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZUNv
dW50LAorICAgICJpbnN0YW5jZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5j
ZURlc2NyaXB0b3JCdWZmZXIsCisgICAgImluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlciIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0LAorICAgICJp
bnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlu
c3RhbmNlRGVzY3JpcHRvclN0cmlkZSwKKyAgICAiaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZURlc2NyaXB0b3JUeXBlLAorICAgICJpbnN0
YW5jZURlc2NyaXB0b3JUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZWRBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVzLAorICAgICJpbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVz
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3Jp
cHRvciwKKyAgICAiaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQsCisgICAgImlu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlv
c3VyZmFjZSwKKyAgICAiaW9zdXJmYWNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpb3N1cmZh
Y2VQbGFuZSwKKyAgICAiaW9zdXJmYWNlUGxhbmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlz
QWN0aXZlLAorICAgICJpc0FjdGl2ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNBbGlhc2Fi
bGUsCisgICAgImlzQWxpYXNhYmxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0FscGhhVG9D
b3ZlcmFnZUVuYWJsZWQsCisgICAgImlzQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoaXNBbHBoYVRvT25lRW5hYmxlZCwKKyAgICAiaXNBbHBoYVRvT25lRW5h
YmxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNCbGVuZGluZ0VuYWJsZWQsCisgICAgImlz
QmxlbmRpbmdFbmFibGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0NhcHR1cmluZywKKyAg
ICAiaXNDYXB0dXJpbmciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzRGVwdGgyNFN0ZW5jaWw4
UGl4ZWxGb3JtYXRTdXBwb3J0ZWQsCisgICAgImlzRGVwdGgyNFN0ZW5jaWw4UGl4ZWxGb3JtYXRT
dXBwb3J0ZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzRGVwdGhUZXh0dXJlLAorICAgICJp
c0RlcHRoVGV4dHVyZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNEZXB0aFdyaXRlRW5hYmxl
ZCwKKyAgICAiaXNEZXB0aFdyaXRlRW5hYmxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNG
cmFtZWJ1ZmZlck9ubHksCisgICAgImlzRnJhbWVidWZmZXJPbmx5Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChpc0hlYWRsZXNzLAorICAgICJpc0hlYWRsZXNzIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpc0xvd1Bvd2VyLAorICAgICJpc0xvd1Bvd2VyIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChpc1BhdGNoQ29udHJvbFBvaW50RGF0YSwKKyAgICAiaXNQYXRjaENvbnRyb2xQb2ludERhdGEi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzUGF0Y2hEYXRhLAorICAgICJpc1BhdGNoRGF0YSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNSYXN0ZXJpemF0aW9uRW5hYmxlZCwKKyAgICAiaXNS
YXN0ZXJpemF0aW9uRW5hYmxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNSZW1vdmFibGUs
CisgICAgImlzUmVtb3ZhYmxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc1NoYXJlYWJsZSwK
KyAgICAiaXNTaGFyZWFibGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzU3BhcnNlLAorICAg
ICJpc1NwYXJzZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNUZXNzZWxsYXRpb25GYWN0b3JT
Y2FsZUVuYWJsZWQsCisgICAgImlzVGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChrZXJuZWxFbmRUaW1lLAorICAgICJrZXJuZWxFbmRUaW1lIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChrZXJuZWxTdGFydFRpbWUsCisgICAgImtlcm5lbFN0YXJ0
VGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGFiZWwsCisgICAgImxhYmVsIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChsYW5ndWFnZVZlcnNpb24sCisgICAgImxhbmd1YWdlVmVyc2lvbiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobGF5ZXJBdEluZGV4XywKKyAgICAibGF5ZXJBdEluZGV4
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGF5ZXJDb3VudCwKKyAgICAibGF5ZXJDb3VudCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobGF5ZXJzLAorICAgICJsYXllcnMiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGxheW91dHMsCisgICAgImxheW91dHMiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGxlbmd0aCwKKyAgICAibGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsZXZlbCwK
KyAgICAibGV2ZWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxpYnJhcmllcywKKyAgICAibGli
cmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsaWJyYXJ5VHlwZSwKKyAgICAibGlicmFy
eVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxpbmUsCisgICAgImxpbmUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGxpbmtlZEZ1bmN0aW9ucywKKyAgICAibGlua2VkRnVuY3Rpb25zIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChsb2FkQWN0aW9uLAorICAgICJsb2FkQWN0aW9uIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChsb2NhdGlvbiwKKyAgICAibG9jYXRpb24iKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGxvY2F0aW9uTnVtYmVyLAorICAgICJsb2NhdGlvbk51bWJlciIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobG9kQXZlcmFnZSwKKyAgICAibG9kQXZlcmFnZSIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwobG9kTWF4Q2xhbXAsCisgICAgImxvZE1heENsYW1wIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChsb2RNaW5DbGFtcCwKKyAgICAibG9kTWluQ2xhbXAiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGxvZ3MsCisgICAgImxvZ3MiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1h
Z0ZpbHRlciwKKyAgICAibWFnRmlsdGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYWtlQWxp
YXNhYmxlLAorICAgICJtYWtlQWxpYXNhYmxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXBQ
aHlzaWNhbFRvU2NyZWVuQ29vcmRpbmF0ZXNfZm9yTGF5ZXJfLAorICAgICJtYXBQaHlzaWNhbFRv
U2NyZWVuQ29vcmRpbmF0ZXM6Zm9yTGF5ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXBT
Y3JlZW5Ub1BoeXNpY2FsQ29vcmRpbmF0ZXNfZm9yTGF5ZXJfLAorICAgICJtYXBTY3JlZW5Ub1Bo
eXNpY2FsQ29vcmRpbmF0ZXM6Zm9yTGF5ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhB
bmlzb3Ryb3B5LAorICAgICJtYXhBbmlzb3Ryb3B5Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCht
YXhBcmd1bWVudEJ1ZmZlclNhbXBsZXJDb3VudCwKKyAgICAibWF4QXJndW1lbnRCdWZmZXJTYW1w
bGVyQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heEF2YWlsYWJsZVNpemVXaXRoQWxp
Z25tZW50XywKKyAgICAibWF4QXZhaWxhYmxlU2l6ZVdpdGhBbGlnbm1lbnQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChtYXhCdWZmZXJMZW5ndGgsCisgICAgIm1heEJ1ZmZlckxlbmd0aCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobWF4Q2FsbFN0YWNrRGVwdGgsCisgICAgIm1heENhbGxTdGFj
a0RlcHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3Vu
dCwKKyAgICAibWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgsCisgICAgIm1heEZyYWdtZW50Q2FsbFN0YWNr
RGVwdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudCwK
KyAgICAibWF4S2VybmVsQnVmZmVyQmluZENvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCht
YXhTYW1wbGVDb3VudCwKKyAgICAibWF4U2FtcGxlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG1heFRlc3NlbGxhdGlvbkZhY3RvciwKKyAgICAibWF4VGVzc2VsbGF0aW9uRmFjdG9yIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCwKKyAgICAi
bWF4VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFRo
cmVhZHNQZXJUaHJlYWRncm91cCwKKyAgICAibWF4VGhyZWFkc1BlclRocmVhZGdyb3VwIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCwKKyAgICAi
bWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1h
eFRyYW5zZmVyUmF0ZSwKKyAgICAibWF4VHJhbnNmZXJSYXRlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQsCisgICAgIm1heFZlcnRleEFtcGxpZmlj
YXRpb25Db3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VmVydGV4QnVmZmVyQmluZENv
dW50LAorICAgICJtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG1heFZlcnRleENhbGxTdGFja0RlcHRoLAorICAgICJtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0
aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWVtYmVyQnlOYW1lXywKKyAgICAibWVtYmVyQnlO
YW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWVtYmVycywKKyAgICAibWVtYmVycyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXNfY291bnRfLAor
ICAgICJtZW1vcnlCYXJyaWVyV2l0aFJlc291cmNlczpjb3VudDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKG1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzX2NvdW50X2FmdGVyU3RhZ2VzX2JlZm9y
ZVN0YWdlc18sCisgICAgIm1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzOmNvdW50OmFmdGVyU3Rh
Z2VzOmJlZm9yZVN0YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1lbW9yeUJhcnJpZXJX
aXRoU2NvcGVfLAorICAgICJtZW1vcnlCYXJyaWVyV2l0aFNjb3BlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobWVtb3J5QmFycmllcldpdGhTY29wZV9hZnRlclN0YWdlc19iZWZvcmVTdGFnZXNf
LAorICAgICJtZW1vcnlCYXJyaWVyV2l0aFNjb3BlOmFmdGVyU3RhZ2VzOmJlZm9yZVN0YWdlczoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1pbkZpbHRlciwKKyAgICAibWluRmlsdGVyIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVs
Rm9ybWF0XywKKyAgICAibWluaW11bUxpbmVhclRleHR1cmVBbGlnbm1lbnRGb3JQaXhlbEZvcm1h
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1pbmltdW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50
Rm9yUGl4ZWxGb3JtYXRfLAorICAgICJtaW5pbXVtVGV4dHVyZUJ1ZmZlckFsaWdubWVudEZvclBp
eGVsRm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWlwRmlsdGVyLAorICAgICJtaXBG
aWx0ZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1pcG1hcExldmVsQ291bnQsCisgICAgIm1p
cG1hcExldmVsQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1vdGlvbkVuZEJvcmRlck1v
ZGUsCisgICAgIm1vdGlvbkVuZEJvcmRlck1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1v
dGlvbkVuZFRpbWUsCisgICAgIm1vdGlvbkVuZFRpbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1vdGlvbktleWZyYW1lQ291bnQsCisgICAgIm1vdGlvbktleWZyYW1lQ291bnQiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG1vdGlvblN0YXJ0Qm9yZGVyTW9kZSwKKyAgICAibW90aW9uU3RhcnRC
b3JkZXJNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25TdGFydFRpbWUsCisgICAg
Im1vdGlvblN0YXJ0VGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobW90aW9uVHJhbnNmb3Jt
QnVmZmVyLAorICAgICJtb3Rpb25UcmFuc2Zvcm1CdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCwKKyAgICAibW90aW9uVHJhbnNmb3JtQnVm
ZmVyT2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25UcmFuc2Zvcm1Db3VudCwK
KyAgICAibW90aW9uVHJhbnNmb3JtQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG11dGFi
aWxpdHksCisgICAgIm11dGFiaWxpdHkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5hbWUsCisg
ICAgIm5hbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FjY2VsZXJhdGlvblN0cnVjdHVy
ZVdpdGhEZXNjcmlwdG9yXywKKyAgICAibmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aERlc2Ny
aXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVX
aXRoU2l6ZV8sCisgICAgIm5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZVdpdGhTaXplOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3QXJndW1lbnRFbmNvZGVyRm9yQnVmZmVyQXRJbmRleF8sCisg
ICAgIm5ld0FyZ3VtZW50RW5jb2RlckZvckJ1ZmZlckF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzXywKKyAgICAibmV3QXJndW1l
bnRFbmNvZGVyV2l0aEFyZ3VtZW50czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FyZ3Vt
ZW50RW5jb2RlcldpdGhCdWZmZXJJbmRleF8sCisgICAgIm5ld0FyZ3VtZW50RW5jb2RlcldpdGhC
dWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FyZ3VtZW50RW5jb2Rlcldp
dGhCdWZmZXJJbmRleF9yZWZsZWN0aW9uXywKKyAgICAibmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1
ZmZlckluZGV4OnJlZmxlY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCaW5hcnlB
cmNoaXZlV2l0aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJuZXdCaW5hcnlBcmNoaXZlV2l0aERl
c2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZmZXJXaXRoQnl0
ZXNfbGVuZ3RoX29wdGlvbnNfLAorICAgICJuZXdCdWZmZXJXaXRoQnl0ZXM6bGVuZ3RoOm9wdGlv
bnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHlfbGVu
Z3RoX29wdGlvbnNfZGVhbGxvY2F0b3JfLAorICAgICJuZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHk6
bGVuZ3RoOm9wdGlvbnM6ZGVhbGxvY2F0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdC
dWZmZXJXaXRoTGVuZ3RoX29wdGlvbnNfLAorICAgICJuZXdCdWZmZXJXaXRoTGVuZ3RoOm9wdGlv
bnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdCdWZmZXJXaXRoTGVuZ3RoX29wdGlvbnNf
b2Zmc2V0XywKKyAgICAibmV3QnVmZmVyV2l0aExlbmd0aDpvcHRpb25zOm9mZnNldDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhDb21tYW5kUXVldWVfLAorICAg
ICJuZXdDYXB0dXJlU2NvcGVXaXRoQ29tbWFuZFF1ZXVlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3Q2FwdHVyZVNjb3BlV2l0aERldmljZV8sCisgICAgIm5ld0NhcHR1cmVTY29wZVdpdGhE
ZXZpY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21tYW5kUXVldWUsCisgICAgIm5l
d0NvbW1hbmRRdWV1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tbWFuZFF1ZXVlV2l0
aE1heENvbW1hbmRCdWZmZXJDb3VudF8sCisgICAgIm5ld0NvbW1hbmRRdWV1ZVdpdGhNYXhDb21t
YW5kQnVmZmVyQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXywKKyAgICAibmV3Q29t
cHV0ZVBpcGVsaW5lU3RhdGVXaXRoQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uczplcnJvcjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0
b3Jfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0
YXRlV2l0aERlc2NyaXB0b3I6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jfb3B0aW9u
c19yZWZsZWN0aW9uX2Vycm9yXywKKyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVz
Y3JpcHRvcjpvcHRpb25zOnJlZmxlY3Rpb246ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9jb21wbGV0aW9uSGFuZGxlcl8s
CisgICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOmNvbXBsZXRpb25IYW5k
bGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRo
RnVuY3Rpb25fZXJyb3JfLAorICAgICJuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlv
bjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
V2l0aEZ1bmN0aW9uX29wdGlvbnNfY29tcGxldGlvbkhhbmRsZXJfLAorICAgICJuZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25f
b3B0aW9uc19yZWZsZWN0aW9uX2Vycm9yXywKKyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoRnVuY3Rpb246b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobmV3Q291bnRlclNhbXBsZUJ1ZmZlcldpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAi
bmV3Q291bnRlclNhbXBsZUJ1ZmZlcldpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobmV3RGVmYXVsdExpYnJhcnksCisgICAgIm5ld0RlZmF1bHRMaWJyYXJ5Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdEZWZhdWx0TGlicmFyeVdpdGhCdW5kbGVfZXJyb3Jf
LAorICAgICJuZXdEZWZhdWx0TGlicmFyeVdpdGhCdW5kbGU6ZXJyb3I6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9yXywKKyAgICAibmV3
RGVwdGhTdGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG5ld0R5bmFtaWNMaWJyYXJ5X2Vycm9yXywKKyAgICAibmV3RHluYW1pY0xpYnJhcnk6ZXJyb3I6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdEeW5hbWljTGlicmFyeVdpdGhVUkxfZXJyb3Jf
LAorICAgICJuZXdEeW5hbWljTGlicmFyeVdpdGhVUkw6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdFdmVudCwKKyAgICAibmV3RXZlbnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG5ld0ZlbmNlLAorICAgICJuZXdGZW5jZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RnVu
Y3Rpb25XaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0Z1bmN0aW9u
V2l0aERlc2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChuZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3RnVuY3Rpb25XaXRo
RGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0Z1bmN0aW9uV2l0
aE5hbWVfLAorICAgICJuZXdGdW5jdGlvbldpdGhOYW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3RnVuY3Rpb25XaXRoTmFtZV9jb25zdGFudFZhbHVlc19jb21wbGV0aW9uSGFuZGxlcl8s
CisgICAgIm5ld0Z1bmN0aW9uV2l0aE5hbWU6Y29uc3RhbnRWYWx1ZXM6Y29tcGxldGlvbkhhbmRs
ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdGdW5jdGlvbldpdGhOYW1lX2NvbnN0YW50
VmFsdWVzX2Vycm9yXywKKyAgICAibmV3RnVuY3Rpb25XaXRoTmFtZTpjb25zdGFudFZhbHVlczpl
cnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0hlYXBXaXRoRGVzY3JpcHRvcl8sCisg
ICAgIm5ld0hlYXBXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0lu
ZGlyZWN0Q29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9yX21heENvbW1hbmRDb3VudF9vcHRpb25z
XywKKyAgICAibmV3SW5kaXJlY3RDb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6bWF4Q29tbWFu
ZENvdW50Om9wdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3Jfc3RhZ2VfLAorICAgICJuZXdJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yX2NvbXBsZXRpb25I
YW5kbGVyXywKKyAgICAibmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpjb21w
bGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0ludGVyc2VjdGlvbkZ1
bmN0aW9uV2l0aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJuZXdJbnRlcnNlY3Rpb25GdW5jdGlv
bldpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFy
eVdpdGhEYXRhX2Vycm9yXywKKyAgICAibmV3TGlicmFyeVdpdGhEYXRhOmVycm9yOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhGaWxlX2Vycm9yXywKKyAgICAibmV3TGli
cmFyeVdpdGhGaWxlOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdp
dGhTb3VyY2Vfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0xpYnJhcnlXaXRo
U291cmNlOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChuZXdMaWJyYXJ5V2l0aFNvdXJjZV9vcHRpb25zX2Vycm9yXywKKyAgICAibmV3TGlicmFyeVdp
dGhTb3VyY2U6b3B0aW9uczplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJh
cnlXaXRoU3RpdGNoZWREZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3TGli
cmFyeVdpdGhTdGl0Y2hlZERlc2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcl9lcnJvcl8sCisg
ICAgIm5ld0xpYnJhcnlXaXRoU3RpdGNoZWREZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhVUkxfZXJyb3JfLAorICAgICJuZXdMaWJyYXJ5V2l0
aFVSTDplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1Jhc3Rlcml6YXRpb25SYXRl
TWFwV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhEZXNj
cmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVtb3RlQnVmZmVyVmlld0ZvckRl
dmljZV8sCisgICAgIm5ld1JlbW90ZUJ1ZmZlclZpZXdGb3JEZXZpY2U6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChuZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRldmljZV8sCisgICAgIm5ld1JlbW90
ZVRleHR1cmVWaWV3Rm9yRGV2aWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXywKKyAgICAi
bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zOmVycm9y
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNj
cmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdp
dGhEZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3UmVu
ZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfY29tcGxl
dGlvbkhhbmRsZXJfLAorICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6
b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1Jl
bmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3Jf
LAorICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0aW9uczpyZWZs
ZWN0aW9uOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVT
dGF0ZVdpdGhUaWxlRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAi
bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVzY3JpcHRvcjpvcHRpb25zOmNvbXBsZXRp
b25IYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0
ZVdpdGhUaWxlRGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfLAorICAgICJuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVjdGlvbjpl
cnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlw
dG9yXywKKyAgICAibmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChuZXdTaGFyZWRFdmVudCwKKyAgICAibmV3U2hhcmVkRXZlbnQiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG5ld1NoYXJlZEV2ZW50SGFuZGxlLAorICAgICJuZXdTaGFyZWRFdmVu
dEhhbmRsZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxl
XywKKyAgICAibmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3U2hhcmVkVGV4dHVyZUhhbmRsZSwKKyAgICAibmV3U2hhcmVkVGV4dHVyZUhhbmRsZSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3U2hhcmVkVGV4dHVyZVdpdGhEZXNjcmlwdG9yXywK
KyAgICAibmV3U2hhcmVkVGV4dHVyZVdpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobmV3U2hhcmVkVGV4dHVyZVdpdGhIYW5kbGVfLAorICAgICJuZXdTaGFyZWRUZXh0dXJl
V2l0aEhhbmRsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVWaWV3V2l0aFBp
eGVsRm9ybWF0XywKKyAgICAibmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdF90ZXh0dXJlVHlw
ZV9sZXZlbHNfc2xpY2VzXywKKyAgICAibmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6dGV4
dHVyZVR5cGU6bGV2ZWxzOnNsaWNlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1
cmVWaWV3V2l0aFBpeGVsRm9ybWF0X3RleHR1cmVUeXBlX2xldmVsc19zbGljZXNfc3dpenpsZV8s
CisgICAgIm5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0OnRleHR1cmVUeXBlOmxldmVsczpz
bGljZXM6c3dpenpsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVXaXRoRGVz
Y3JpcHRvcl8sCisgICAgIm5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcl9pb3N1cmZhY2VfcGxhbmVfLAorICAg
ICJuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6aW9zdXJmYWNlOnBsYW5lOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yX29mZnNldF8sCisgICAgIm5ld1Rl
eHR1cmVXaXRoRGVzY3JpcHRvcjpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdU
ZXh0dXJlV2l0aERlc2NyaXB0b3Jfb2Zmc2V0X2J5dGVzUGVyUm93XywKKyAgICAibmV3VGV4dHVy
ZVdpdGhEZXNjcmlwdG9yOm9mZnNldDpieXRlc1BlclJvdzoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdWaXNp
YmxlRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcl9zdGFnZV8sCisgICAgIm5ld1Zp
c2libGVGdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChub2RlcywKKyAgICAibm9kZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5vcm1h
bGl6ZWRDb29yZGluYXRlcywKKyAgICAibm9ybWFsaXplZENvb3JkaW5hdGVzIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChub3RpZnlMaXN0ZW5lcl9hdFZhbHVlX2Jsb2NrXywKKyAgICAibm90aWZ5
TGlzdGVuZXI6YXRWYWx1ZTpibG9jazoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9iamVjdEF0
SW5kZXhlZFN1YnNjcmlwdF8sCisgICAgIm9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKG9mZnNldCwKKyAgICAib2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChvcGFxdWUsCisgICAgIm9wYXF1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3B0
aW1pemVDb250ZW50c0ZvckNQVUFjY2Vzc18sCisgICAgIm9wdGltaXplQ29udGVudHNGb3JDUFVB
Y2Nlc3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNj
ZXNzX3NsaWNlX2xldmVsXywKKyAgICAib3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2VzczpzbGlj
ZTpsZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wdGltaXplQ29udGVudHNGb3JHUFVB
Y2Nlc3NfLAorICAgICJvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwob3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vzc19zbGljZV9sZXZlbF8sCisg
ICAgIm9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChvcHRpbWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcl93aXRoUmFuZ2VfLAor
ICAgICJvcHRpbWl6ZUluZGlyZWN0Q29tbWFuZEJ1ZmZlcjp3aXRoUmFuZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChvcHRpb25zLAorICAgICJvcHRpb25zIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChvdXRwdXROb2RlLAorICAgICJvdXRwdXROb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChvdXRwdXRVUkwsCisgICAgIm91dHB1dFVSTCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGFy
YWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXywKKyAgICAicGFyYWxsZWxS
ZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocGFyYW1ldGVyQnVmZmVyU2l6ZUFuZEFsaWduLAorICAgICJwYXJhbWV0ZXJCdWZmZXJTaXpl
QW5kQWxpZ24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhcmVudFJlbGF0aXZlTGV2ZWwsCisg
ICAgInBhcmVudFJlbGF0aXZlTGV2ZWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhcmVudFJl
bGF0aXZlU2xpY2UsCisgICAgInBhcmVudFJlbGF0aXZlU2xpY2UiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHBhcmVudFRleHR1cmUsCisgICAgInBhcmVudFRleHR1cmUiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHBhdGNoQ29udHJvbFBvaW50Q291bnQsCisgICAgInBhdGNoQ29udHJvbFBvaW50
Q291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhdGNoVHlwZSwKKyAgICAicGF0Y2hUeXBl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwZWVyQ291bnQsCisgICAgInBlZXJDb3VudCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwocGVlckdyb3VwSUQsCisgICAgInBlZXJHcm91cElEIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChwZWVySW5kZXgsCisgICAgInBlZXJJbmRleCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwocGh5c2ljYWxHcmFudWxhcml0eSwKKyAgICAicGh5c2ljYWxHcmFudWxh
cml0eSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGh5c2ljYWxTaXplRm9yTGF5ZXJfLAorICAg
ICJwaHlzaWNhbFNpemVGb3JMYXllcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBpeGVsRm9y
bWF0LAorICAgICJwaXhlbEZvcm1hdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocG9pbnRlclR5
cGUsCisgICAgInBvaW50ZXJUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwb3BEZWJ1Z0dy
b3VwLAorICAgICJwb3BEZWJ1Z0dyb3VwIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwcmVsb2Fk
ZWRMaWJyYXJpZXMsCisgICAgInByZWxvYWRlZExpYnJhcmllcyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwocHJlcHJvY2Vzc29yTWFjcm9zLAorICAgICJwcmVwcm9jZXNzb3JNYWNyb3MiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnQsCisgICAgInByZXNlbnQiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHByZXNlbnRBZnRlck1pbmltdW1EdXJhdGlvbl8sCisgICAgInByZXNlbnRBZnRl
ck1pbmltdW1EdXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnRBdFRpbWVf
LAorICAgICJwcmVzZW50QXRUaW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudERy
YXdhYmxlXywKKyAgICAicHJlc2VudERyYXdhYmxlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
cHJlc2VudERyYXdhYmxlX2FmdGVyTWluaW11bUR1cmF0aW9uXywKKyAgICAicHJlc2VudERyYXdh
YmxlOmFmdGVyTWluaW11bUR1cmF0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2Vu
dERyYXdhYmxlX2F0VGltZV8sCisgICAgInByZXNlbnREcmF3YWJsZTphdFRpbWU6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChwcmVzZW50ZWRUaW1lLAorICAgICJwcmVzZW50ZWRUaW1lIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChwcmVzZXJ2ZUludmFyaWFuY2UsCisgICAgInByZXNlcnZlSW52
YXJpYW5jZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJpdmF0ZUZ1bmN0aW9ucywKKyAgICAi
cHJpdmF0ZUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHVzaERlYnVnR3JvdXBf
LAorICAgICJwdXNoRGVidWdHcm91cDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJBZGRyZXNz
TW9kZSwKKyAgICAickFkZHJlc3NNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyYXN0ZXJT
YW1wbGVDb3VudCwKKyAgICAicmFzdGVyU2FtcGxlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwLAorICAgICJyYXN0ZXJpemF0aW9uUmF0ZU1hcCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwocmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNj
cmVlblNpemVfLAorICAgICJyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVu
U2l6ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3Jp
cHRvcldpdGhTY3JlZW5TaXplX2xheWVyXywKKyAgICAicmFzdGVyaXphdGlvblJhdGVNYXBEZXNj
cmlwdG9yV2l0aFNjcmVlblNpemU6bGF5ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyYXN0
ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZV9sYXllckNvdW50X2xheWVy
c18sCisgICAgInJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOmxh
eWVyQ291bnQ6bGF5ZXJzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVhZE1hc2ssCisgICAg
InJlYWRNYXNrIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZWFkV3JpdGVUZXh0dXJlU3VwcG9y
dCwKKyAgICAicmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHJlY29tbWVuZGVkTWF4V29ya2luZ1NldFNpemUsCisgICAgInJlY29tbWVuZGVkTWF4V29ya2lu
Z1NldFNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlZml0QWNjZWxlcmF0aW9uU3RydWN0
dXJlX2Rlc2NyaXB0b3JfZGVzdGluYXRpb25fc2NyYXRjaEJ1ZmZlcl9zY3JhdGNoQnVmZmVyT2Zm
c2V0XywKKyAgICAicmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6ZGVzY3JpcHRvcjpkZXN0aW5h
dGlvbjpzY3JhdGNoQnVmZmVyOnNjcmF0Y2hCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChyZWdpc3RyeUlELAorICAgICJyZWdpc3RyeUlEIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChyZW1vdGVTdG9yYWdlQnVmZmVyLAorICAgICJyZW1vdGVTdG9yYWdlQnVmZmVyIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChyZW1vdGVTdG9yYWdlVGV4dHVyZSwKKyAgICAicmVtb3RlU3Rv
cmFnZVRleHR1cmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbW92ZUFsbERlYnVnTWFya2Vy
cywKKyAgICAicmVtb3ZlQWxsRGVidWdNYXJrZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChy
ZW5kZXJDb21tYW5kRW5jb2RlciwKKyAgICAicmVuZGVyQ29tbWFuZEVuY29kZXIiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3JfLAorICAg
ICJyZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwocmVuZGVyUGFzc0Rlc2NyaXB0b3IsCisgICAgInJlbmRlclBhc3NEZXNjcmlwdG9yIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZW5kZXJUYXJnZXRBcnJheUxlbmd0aCwKKyAgICAicmVu
ZGVyVGFyZ2V0QXJyYXlMZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbmRlclRhcmdl
dEhlaWdodCwKKyAgICAicmVuZGVyVGFyZ2V0SGVpZ2h0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChyZW5kZXJUYXJnZXRXaWR0aCwKKyAgICAicmVuZGVyVGFyZ2V0V2lkdGgiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHJlcGxhY2VSZWdpb25fbWlwbWFwTGV2ZWxfc2xpY2Vfd2l0aEJ5dGVzX2J5
dGVzUGVyUm93X2J5dGVzUGVySW1hZ2VfLAorICAgICJyZXBsYWNlUmVnaW9uOm1pcG1hcExldmVs
OnNsaWNlOndpdGhCeXRlczpieXRlc1BlclJvdzpieXRlc1BlckltYWdlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwocmVwbGFjZVJlZ2lvbl9taXBtYXBMZXZlbF93aXRoQnl0ZXNfYnl0ZXNQZXJS
b3dfLAorICAgICJyZXBsYWNlUmVnaW9uOm1pcG1hcExldmVsOndpdGhCeXRlczpieXRlc1BlclJv
dzoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlcXVpcmVkLAorICAgICJyZXF1aXJlZCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwocmVzZXQsCisgICAgInJlc2V0Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChyZXNldENvbW1hbmRzSW5CdWZmZXJfd2l0aFJhbmdlXywKKyAgICAicmVzZXRDb21t
YW5kc0luQnVmZmVyOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc2V0VGV4
dHVyZUFjY2Vzc0NvdW50ZXJzX3JlZ2lvbl9taXBMZXZlbF9zbGljZV8sCisgICAgInJlc2V0VGV4
dHVyZUFjY2Vzc0NvdW50ZXJzOnJlZ2lvbjptaXBMZXZlbDpzbGljZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHJlc2V0V2l0aFJhbmdlXywKKyAgICAicmVzZXRXaXRoUmFuZ2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChyZXNvbHZlQ291bnRlclJhbmdlXywKKyAgICAicmVzb2x2ZUNvdW50
ZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc29sdmVDb3VudGVyc19pblJhbmdl
X2Rlc3RpbmF0aW9uQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0XywKKyAgICAicmVzb2x2ZUNvdW50
ZXJzOmluUmFuZ2U6ZGVzdGluYXRpb25CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChyZXNvbHZlRGVwdGhQbGFuZSwKKyAgICAicmVzb2x2ZURlcHRoUGxh
bmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc29sdmVMZXZlbCwKKyAgICAicmVzb2x2ZUxl
dmVsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNvbHZlU2xpY2UsCisgICAgInJlc29sdmVT
bGljZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb2x2ZVRleHR1cmUsCisgICAgInJlc29s
dmVUZXh0dXJlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZU9wdGlvbnMsCisgICAg
InJlc291cmNlT3B0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb3VyY2VTdGF0ZUNv
bW1hbmRFbmNvZGVyLAorICAgICJyZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9y
XywKKyAgICAicmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IsCisgICAgInJl
c291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmV0YWlu
ZWRSZWZlcmVuY2VzLAorICAgICJyZXRhaW5lZFJlZmVyZW5jZXMiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHJnYkJsZW5kT3BlcmF0aW9uLAorICAgICJyZ2JCbGVuZE9wZXJhdGlvbiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocm9vdFJlc291cmNlLAorICAgICJyb290UmVzb3VyY2UiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNBZGRyZXNzTW9kZSwKKyAgICAic0FkZHJlc3NNb2RlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzYW1wbGVCdWZmZXIsCisgICAgInNhbXBsZUJ1ZmZlciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2FtcGxlQnVmZmVyQXR0YWNobWVudHMsCisgICAgInNhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzYW1wbGVDb3VudCwK
KyAgICAic2FtcGxlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNhbXBsZUNvdW50ZXJz
SW5CdWZmZXJfYXRTYW1wbGVJbmRleF93aXRoQmFycmllcl8sCisgICAgInNhbXBsZUNvdW50ZXJz
SW5CdWZmZXI6YXRTYW1wbGVJbmRleDp3aXRoQmFycmllcjoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNhbXBsZVRpbWVzdGFtcHNfZ3B1VGltZXN0YW1wXywKKyAgICAic2FtcGxlVGltZXN0YW1w
czpncHVUaW1lc3RhbXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzY3JlZW5TaXplLAorICAg
ICJzY3JlZW5TaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXJpYWxpemVUb1VSTF9lcnJv
cl8sCisgICAgInNlcmlhbGl6ZVRvVVJMOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRBY2NlbGVy
YXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEFjY2VsZXJhdGlvblN0cnVjdHVyZV9hdEluZGV4XywKKyAgICAic2V0QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBY2Nlc3NfLAorICAg
ICJzZXRBY2Nlc3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBbGxvd0R1cGxpY2F0ZUlu
dGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbl8sCisgICAgInNldEFsbG93RHVwbGljYXRlSW50
ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
QWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50c18sCisgICAgInNldEFsbG93R1BVT3B0aW1pemVkQ29u
dGVudHM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBbHBoYUJsZW5kT3BlcmF0aW9uXywK
KyAgICAic2V0QWxwaGFCbGVuZE9wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEFscGhhVG9Db3ZlcmFnZUVuYWJsZWRfLAorICAgICJzZXRBbHBoYVRvQ292ZXJhZ2VFbmFibGVk
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QWxwaGFUb09uZUVuYWJsZWRfLAorICAgICJz
ZXRBbHBoYVRvT25lRW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFyZ3VtZW50
QnVmZmVyX29mZnNldF8sCisgICAgInNldEFyZ3VtZW50QnVmZmVyOm9mZnNldDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEFyZ3VtZW50QnVmZmVyX3N0YXJ0T2Zmc2V0X2FycmF5RWxlbWVu
dF8sCisgICAgInNldEFyZ3VtZW50QnVmZmVyOnN0YXJ0T2Zmc2V0OmFycmF5RWxlbWVudDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFyZ3VtZW50SW5kZXhfLAorICAgICJzZXRBcmd1bWVu
dEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QXJndW1lbnRzXywKKyAgICAic2V0
QXJndW1lbnRzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QXJyYXlMZW5ndGhfLAorICAg
ICJzZXRBcnJheUxlbmd0aDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEF0dHJpYnV0ZXNf
LAorICAgICJzZXRBdHRyaWJ1dGVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QmFja0Zh
Y2VTdGVuY2lsXywKKyAgICAic2V0QmFja0ZhY2VTdGVuY2lsOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0QmFycmllciwKKyAgICAic2V0QmFycmllciIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0QmluYXJ5QXJjaGl2ZXNfLAorICAgICJzZXRCaW5hcnlBcmNoaXZlczoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEJpbmFyeUZ1bmN0aW9uc18sCisgICAgInNldEJpbmFyeUZ1bmN0
aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJsZW5kQ29sb3JSZWRfZ3JlZW5fYmx1
ZV9hbHBoYV8sCisgICAgInNldEJsZW5kQ29sb3JSZWQ6Z3JlZW46Ymx1ZTphbHBoYToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEJsZW5kaW5nRW5hYmxlZF8sCisgICAgInNldEJsZW5kaW5n
RW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJvcmRlckNvbG9yXywKKyAgICAi
c2V0Qm9yZGVyQ29sb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCb3VuZGluZ0JveEJ1
ZmZlcl8sCisgICAgInNldEJvdW5kaW5nQm94QnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXRfLAorICAgICJzZXRCb3VuZGluZ0JveEJ1ZmZl
ck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyc18s
CisgICAgInNldEJvdW5kaW5nQm94QnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEJvdW5kaW5nQm94Q291bnRfLAorICAgICJzZXRCb3VuZGluZ0JveENvdW50OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0Qm91bmRpbmdCb3hTdHJpZGVfLAorICAgICJzZXRCb3VuZGluZ0Jv
eFN0cmlkZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJ1ZmZlcl8sCisgICAgInNldEJ1
ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8s
CisgICAgInNldEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEJ1ZmZlckluZGV4XywKKyAgICAic2V0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRCdWZmZXJPZmZzZXRfYXRJbmRleF8sCisgICAgInNldEJ1ZmZlck9mZnNldDph
dEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QnVmZmVyc19vZmZzZXRzX3dpdGhS
YW5nZV8sCisgICAgInNldEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRCeXRlc19sZW5ndGhfYXRJbmRleF8sCisgICAgInNldEJ5dGVzOmxlbmd0
aDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q2FwdHVyZU9iamVjdF8sCisg
ICAgInNldENhcHR1cmVPYmplY3Q6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDbGVhckNv
bG9yXywKKyAgICAic2V0Q2xlYXJDb2xvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENs
ZWFyRGVwdGhfLAorICAgICJzZXRDbGVhckRlcHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0Q2xlYXJTdGVuY2lsXywKKyAgICAic2V0Q2xlYXJTdGVuY2lsOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0Q29sb3JTdG9yZUFjdGlvbl9hdEluZGV4XywKKyAgICAic2V0Q29sb3JTdG9y
ZUFjdGlvbjphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29sb3JTdG9yZUFj
dGlvbk9wdGlvbnNfYXRJbmRleF8sCisgICAgInNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zOmF0
SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb21tYW5kVHlwZXNfLAorICAgICJz
ZXRDb21tYW5kVHlwZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb21wYXJlRnVuY3Rp
b25fLAorICAgICJzZXRDb21wYXJlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRDb21wdXRlRnVuY3Rpb25fLAorICAgICJzZXRDb21wdXRlRnVuY3Rpb246Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZV8sCisgICAgInNldENvbXB1dGVQ
aXBlbGluZVN0YXRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5l
U3RhdGVfYXRJbmRleF8sCisgICAgInNldENvbXB1dGVQaXBlbGluZVN0YXRlOmF0SW5kZXg6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZXNfd2l0aFJhbmdl
XywKKyAgICAic2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldENvbnN0YW50QmxvY2tBbGlnbm1lbnRfLAorICAgICJzZXRDb25zdGFu
dEJsb2NrQWxpZ25tZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29uc3RhbnRWYWx1
ZV90eXBlX2F0SW5kZXhfLAorICAgICJzZXRDb25zdGFudFZhbHVlOnR5cGU6YXRJbmRleDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbnN0YW50VmFsdWVfdHlwZV93aXRoTmFtZV8sCisg
ICAgInNldENvbnN0YW50VmFsdWU6dHlwZTp3aXRoTmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldENvbnN0YW50VmFsdWVzXywKKyAgICAic2V0Q29uc3RhbnRWYWx1ZXM6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRDb25zdGFudFZhbHVlc190eXBlX3dpdGhSYW5nZV8sCisgICAg
InNldENvbnN0YW50VmFsdWVzOnR5cGU6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0Q29udHJvbERlcGVuZGVuY2llc18sCisgICAgInNldENvbnRyb2xEZXBlbmRlbmNpZXM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb3VudGVyU2V0XywKKyAgICAic2V0Q291bnRl
clNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENwdUNhY2hlTW9kZV8sCisgICAgInNl
dENwdUNhY2hlTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEN1bGxNb2RlXywKKyAg
ICAic2V0Q3VsbE1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREYXRhVHlwZV8sCisg
ICAgInNldERhdGFUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVmYXVsdENhcHR1
cmVTY29wZV8sCisgICAgInNldERlZmF1bHRDYXB0dXJlU2NvcGU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXREZWZhdWx0UmFzdGVyU2FtcGxlQ291bnRfLAorICAgICJzZXREZWZhdWx0UmFz
dGVyU2FtcGxlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aF8sCisgICAg
InNldERlcHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhBdHRhY2htZW50XywK
KyAgICAic2V0RGVwdGhBdHRhY2htZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVw
dGhBdHRhY2htZW50UGl4ZWxGb3JtYXRfLAorICAgICJzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZv
cm1hdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoQmlhc19zbG9wZVNjYWxlX2Ns
YW1wXywKKyAgICAic2V0RGVwdGhCaWFzOnNsb3BlU2NhbGU6Y2xhbXA6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXREZXB0aENsaXBNb2RlXywKKyAgICAic2V0RGVwdGhDbGlwTW9kZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uXywKKyAgICAic2V0
RGVwdGhDb21wYXJlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aEZh
aWx1cmVPcGVyYXRpb25fLAorICAgICJzZXREZXB0aEZhaWx1cmVPcGVyYXRpb246Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXREZXB0aFBsYW5lXywKKyAgICAic2V0RGVwdGhQbGFuZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoUmVzb2x2ZUZpbHRlcl8sCisgICAgInNldERl
cHRoUmVzb2x2ZUZpbHRlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoU3RlbmNp
bFBhc3NPcGVyYXRpb25fLAorICAgICJzZXREZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhTdGVuY2lsU3RhdGVfLAorICAgICJzZXREZXB0
aFN0ZW5jaWxTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoU3RvcmVBY3Rp
b25fLAorICAgICJzZXREZXB0aFN0b3JlQWN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnNfLAorICAgICJzZXREZXB0aFN0b3JlQWN0aW9uT3B0
aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoV3JpdGVFbmFibGVkXywKKyAg
ICAic2V0RGVwdGhXcml0ZUVuYWJsZWQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXN0
aW5hdGlvbl8sCisgICAgInNldERlc3RpbmF0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yXywKKyAgICAic2V0RGVzdGluYXRpb25BbHBo
YUJsZW5kRmFjdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVzdGluYXRpb25SR0JC
bGVuZEZhY3Rvcl8sCisgICAgInNldERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXREaXNwYXRjaFR5cGVfLAorICAgICJzZXREaXNwYXRjaFR5cGU6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleF8sCisg
ICAgInNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4XywKKyAgICAic2V0RW5kT2ZGcmFnbWVudFNhbXBs
ZUluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJbmRl
eF8sCisgICAgInNldEVuZE9mVmVydGV4U2FtcGxlSW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRFcnJvck9wdGlvbnNfLAorICAgICJzZXRFcnJvck9wdGlvbnM6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRGYXN0TWF0aEVuYWJsZWRfLAorICAgICJzZXRGYXN0TWF0aEVuYWJs
ZWQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGb3JtYXRfLAorICAgICJzZXRGb3JtYXQ6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEFjY2VsZXJhdGlvblN0cnVjdHVy
ZV9hdEJ1ZmZlckluZGV4XywKKyAgICAic2V0RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6
YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50QWRkaXRp
b25hbEJpbmFyeUZ1bmN0aW9uc18sCisgICAgInNldEZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1
bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50QnVmZmVyX29mZnNl
dF9hdEluZGV4XywKKyAgICAic2V0RnJhZ21lbnRCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEJ1ZmZlck9mZnNldF9hdEluZGV4XywKKyAg
ICAic2V0RnJhZ21lbnRCdWZmZXJPZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldEZyYWdtZW50QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5nZV8sCisgICAgInNldEZyYWdt
ZW50QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEZyYWdtZW50Qnl0ZXNfbGVuZ3RoX2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudEJ5dGVzOmxl
bmd0aDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRGdW5jdGlv
bl8sCisgICAgInNldEZyYWdtZW50RnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAg
InNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
c193aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdt
ZW50TGlua2VkRnVuY3Rpb25zXywKKyAgICAic2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnM6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFByZWxvYWRlZExpYnJhcmllc18sCisg
ICAgInNldEZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVfYXRJbmRleF8sCisgICAgInNldEZyYWdtZW50U2Ft
cGxlclN0YXRlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFNh
bXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdEluZGV4XywKKyAgICAic2V0RnJh
Z21lbnRTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNf
bG9kTWF4Q2xhbXBzX3dpdGhSYW5nZV8sCisgICAgInNldEZyYWdtZW50U2FtcGxlclN0YXRlczps
b2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlc193aXRoUmFuZ2VfLAorICAgICJzZXRGcmFnbWVu
dFNhbXBsZXJTdGF0ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJh
Z21lbnRUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudFRleHR1cmU6YXRJbmRleDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50VGV4dHVyZXNfd2l0aFJhbmdlXywK
KyAgICAic2V0RnJhZ21lbnRUZXh0dXJlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAg
ICJzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVm
ZmVyUmFuZ2VfLAorICAgICJzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVm
ZmVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcm9udEZhY2VTdGVuY2lsXywK
KyAgICAic2V0RnJvbnRGYWNlU3RlbmNpbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZy
b250RmFjaW5nV2luZGluZ18sCisgICAgInNldEZyb250RmFjaW5nV2luZGluZzoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEZ1bmN0aW9uX2F0SW5kZXhfLAorICAgICJzZXRGdW5jdGlvbjph
dEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnVuY3Rpb25Db3VudF8sCisgICAg
InNldEZ1bmN0aW9uQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGdW5jdGlvbkdy
YXBoc18sCisgICAgInNldEZ1bmN0aW9uR3JhcGhzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RnVuY3Rpb25OYW1lXywKKyAgICAic2V0RnVuY3Rpb25OYW1lOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0RnVuY3Rpb25zXywKKyAgICAic2V0RnVuY3Rpb25zOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0RnVuY3Rpb25zX3dpdGhSYW5nZV8sCisgICAgInNldEZ1bmN0aW9uczp3
aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRHZW9tZXRyeURlc2NyaXB0b3Jz
XywKKyAgICAic2V0R2VvbWV0cnlEZXNjcmlwdG9yczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEdyb3Vwc18sCisgICAgInNldEdyb3VwczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEhhemFyZFRyYWNraW5nTW9kZV8sCisgICAgInNldEhhemFyZFRyYWNraW5nTW9kZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEhlaWdodF8sCisgICAgInNldEhlaWdodDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEltYWdlYmxvY2tTYW1wbGVMZW5ndGhfLAorICAgICJzZXRJbWFn
ZWJsb2NrU2FtcGxlTGVuZ3RoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW1hZ2VibG9j
a1dpZHRoX2hlaWdodF8sCisgICAgInNldEltYWdlYmxvY2tXaWR0aDpoZWlnaHQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRJbmRleF8sCisgICAgInNldEluZGV4OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0SW5kZXhCdWZmZXJfLAorICAgICJzZXRJbmRleEJ1ZmZlcjoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEluZGV4QnVmZmVySW5kZXhfLAorICAgICJzZXRJbmRleEJ1
ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kZXhCdWZmZXJPZmZzZXRf
LAorICAgICJzZXRJbmRleEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEluZGV4VHlwZV8sCisgICAgInNldEluZGV4VHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcl9hdEluZGV4XywKKyAgICAic2V0SW5kaXJlY3RDb21t
YW5kQnVmZmVyOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmRpcmVjdENv
bW1hbmRCdWZmZXJzX3dpdGhSYW5nZV8sCisgICAgInNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnM6
d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5oZXJpdEJ1ZmZlcnNfLAor
ICAgICJzZXRJbmhlcml0QnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluaGVy
aXRQaXBlbGluZVN0YXRlXywKKyAgICAic2V0SW5oZXJpdFBpcGVsaW5lU3RhdGU6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRJbnB1dFByaW1pdGl2ZVRvcG9sb2d5XywKKyAgICAic2V0SW5w
dXRQcmltaXRpdmVUb3BvbG9neToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluc2VydExp
YnJhcmllc18sCisgICAgInNldEluc2VydExpYnJhcmllczoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldEluc3RhbGxOYW1lXywKKyAgICAic2V0SW5zdGFsbE5hbWU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRJbnN0YW5jZUNvdW50XywKKyAgICAic2V0SW5zdGFuY2VDb3VudDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcl8sCisgICAg
InNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldF8sCisgICAgInNldEluc3RhbmNlRGVzY3Jp
cHRvckJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlRGVz
Y3JpcHRvclN0cmlkZV8sCisgICAgInNldEluc3RhbmNlRGVzY3JpcHRvclN0cmlkZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvclR5cGVfLAorICAgICJzZXRJ
bnN0YW5jZURlc2NyaXB0b3JUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFu
Y2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlc18sCisgICAgInNldEluc3RhbmNlZEFjY2VsZXJhdGlv
blN0cnVjdHVyZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlX2F0SW5kZXhfLAorICAgICJzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlT2Zmc2V0XywKKyAgICAic2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNl
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVz
X3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzOndp
dGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVzX3dpdGhSYW5nZV8sCisgICAgInNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEtlcm5lbEJ1ZmZlcl9v
ZmZzZXRfYXRJbmRleF8sCisgICAgInNldEtlcm5lbEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldExhYmVsXywKKyAgICAic2V0TGFiZWw6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRMYW5ndWFnZVZlcnNpb25fLAorICAgICJzZXRMYW5ndWFnZVZl
cnNpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMYXllcl9hdEluZGV4XywKKyAgICAi
c2V0TGF5ZXI6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldExldmVsXywKKyAg
ICAic2V0TGV2ZWw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMaWJyYXJpZXNfLAorICAg
ICJzZXRMaWJyYXJpZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMaWJyYXJ5VHlwZV8s
CisgICAgInNldExpYnJhcnlUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TGlua2Vk
RnVuY3Rpb25zXywKKyAgICAic2V0TGlua2VkRnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0TG9hZEFjdGlvbl8sCisgICAgInNldExvYWRBY3Rpb246Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRMb2RBdmVyYWdlXywKKyAgICAic2V0TG9kQXZlcmFnZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldExvZE1heENsYW1wXywKKyAgICAic2V0TG9kTWF4Q2xhbXA6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMb2RNaW5DbGFtcF8sCisgICAgInNldExvZE1pbkNs
YW1wOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWFnRmlsdGVyXywKKyAgICAic2V0TWFn
RmlsdGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4QW5pc290cm9weV8sCisgICAg
InNldE1heEFuaXNvdHJvcHk6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhDYWxsU3Rh
Y2tEZXB0aF8sCisgICAgInNldE1heENhbGxTdGFja0RlcHRoOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0TWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnRfLAorICAgICJzZXRNYXhGcmFnbWVu
dEJ1ZmZlckJpbmRDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heEZyYWdtZW50
Q2FsbFN0YWNrRGVwdGhfLAorICAgICJzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRoOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4S2VybmVsQnVmZmVyQmluZENvdW50XywKKyAgICAi
c2V0TWF4S2VybmVsQnVmZmVyQmluZENvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
TWF4VGVzc2VsbGF0aW9uRmFjdG9yXywKKyAgICAic2V0TWF4VGVzc2VsbGF0aW9uRmFjdG9yOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXBf
LAorICAgICJzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldE1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudF8sCisgICAgInNldE1heFZl
cnRleEFtcGxpZmljYXRpb25Db3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heFZl
cnRleEJ1ZmZlckJpbmRDb3VudF8sCisgICAgInNldE1heFZlcnRleEJ1ZmZlckJpbmRDb3VudDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heFZlcnRleENhbGxTdGFja0RlcHRoXywKKyAg
ICAic2V0TWF4VmVydGV4Q2FsbFN0YWNrRGVwdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRNaW5GaWx0ZXJfLAorICAgICJzZXRNaW5GaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRNaXBGaWx0ZXJfLAorICAgICJzZXRNaXBGaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRNaXBtYXBMZXZlbENvdW50XywKKyAgICAic2V0TWlwbWFwTGV2ZWxDb3VudDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvbkVuZEJvcmRlck1vZGVfLAorICAgICJzZXRN
b3Rpb25FbmRCb3JkZXJNb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9uRW5k
VGltZV8sCisgICAgInNldE1vdGlvbkVuZFRpbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRNb3Rpb25LZXlmcmFtZUNvdW50XywKKyAgICAic2V0TW90aW9uS2V5ZnJhbWVDb3VudDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvblN0YXJ0Qm9yZGVyTW9kZV8sCisgICAgInNl
dE1vdGlvblN0YXJ0Qm9yZGVyTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlv
blN0YXJ0VGltZV8sCisgICAgInNldE1vdGlvblN0YXJ0VGltZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlcl8sCisgICAgInNldE1vdGlvblRyYW5zZm9y
bUJ1ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZl
ck9mZnNldF8sCisgICAgInNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldE1vdGlvblRyYW5zZm9ybUNvdW50XywKKyAgICAic2V0TW90aW9u
VHJhbnNmb3JtQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNdXRhYmlsaXR5XywK
KyAgICAic2V0TXV0YWJpbGl0eToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE5hbWVfLAor
ICAgICJzZXROYW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Tm9kZXNfLAorICAgICJz
ZXROb2RlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE5vcm1hbGl6ZWRDb29yZGluYXRl
c18sCisgICAgInNldE5vcm1hbGl6ZWRDb29yZGluYXRlczoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfLAorICAgICJzZXRPYmplY3Q6YXRJbmRl
eGVkU3Vic2NyaXB0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T2Zmc2V0XywKKyAgICAi
c2V0T2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3BhcXVlXywKKyAgICAic2V0
T3BhcXVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNl
Y3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmVfYXRJbmRleF8sCisgICAgInNldE9wYXF1ZVRyaWFu
Z2xlSW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aFNp
Z25hdHVyZV93aXRoUmFuZ2VfLAorICAgICJzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1
bmN0aW9uV2l0aFNpZ25hdHVyZTp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRPcHRpb25zXywKKyAgICAic2V0T3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dE91dHB1dE5vZGVfLAorICAgICJzZXRPdXRwdXROb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0T3V0cHV0VVJMXywKKyAgICAic2V0T3V0cHV0VVJMOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0UGl4ZWxGb3JtYXRfLAorICAgICJzZXRQaXhlbEZvcm1hdDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFByZWxvYWRlZExpYnJhcmllc18sCisgICAgInNldFByZWxvYWRlZExp
YnJhcmllczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFByZXByb2Nlc3Nvck1hY3Jvc18s
CisgICAgInNldFByZXByb2Nlc3Nvck1hY3JvczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFByZXNlcnZlSW52YXJpYW5jZV8sCisgICAgInNldFByZXNlcnZlSW52YXJpYW5jZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFByaXZhdGVGdW5jdGlvbnNfLAorICAgICJzZXRQcml2YXRl
RnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UHVyZ2VhYmxlU3RhdGVfLAor
ICAgICJzZXRQdXJnZWFibGVTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJBZGRy
ZXNzTW9kZV8sCisgICAgInNldFJBZGRyZXNzTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFJhc3RlclNhbXBsZUNvdW50XywKKyAgICAic2V0UmFzdGVyU2FtcGxlQ291bnQ6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRSYXN0ZXJpemF0aW9uRW5hYmxlZF8sCisgICAgInNldFJh
c3Rlcml6YXRpb25FbmFibGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmFzdGVyaXph
dGlvblJhdGVNYXBfLAorICAgICJzZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFJlYWRNYXNrXywKKyAgICAic2V0UmVhZE1hc2s6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRSZW5kZXJQaXBlbGluZVN0YXRlXywKKyAgICAic2V0UmVuZGVyUGlw
ZWxpbmVTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlbmRlclBpcGVsaW5lU3Rh
dGVfYXRJbmRleF8sCisgICAgInNldFJlbmRlclBpcGVsaW5lU3RhdGU6YXRJbmRleDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFJlbmRlclBpcGVsaW5lU3RhdGVzX3dpdGhSYW5nZV8sCisg
ICAgInNldFJlbmRlclBpcGVsaW5lU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoXywKKyAgICAic2V0UmVuZGVyVGFyZ2V0
QXJyYXlMZW5ndGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZW5kZXJUYXJnZXRIZWln
aHRfLAorICAgICJzZXRSZW5kZXJUYXJnZXRIZWlnaHQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRSZW5kZXJUYXJnZXRXaWR0aF8sCisgICAgInNldFJlbmRlclRhcmdldFdpZHRoOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVzb2x2ZURlcHRoUGxhbmVfLAorICAgICJzZXRSZXNv
bHZlRGVwdGhQbGFuZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlc29sdmVMZXZlbF8s
CisgICAgInNldFJlc29sdmVMZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlc29s
dmVTbGljZV8sCisgICAgInNldFJlc29sdmVTbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFJlc29sdmVUZXh0dXJlXywKKyAgICAic2V0UmVzb2x2ZVRleHR1cmU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRSZXNvdXJjZU9wdGlvbnNfLAorICAgICJzZXRSZXNvdXJjZU9wdGlv
bnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZXRhaW5lZFJlZmVyZW5jZXNfLAorICAg
ICJzZXRSZXRhaW5lZFJlZmVyZW5jZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZ2JC
bGVuZE9wZXJhdGlvbl8sCisgICAgInNldFJnYkJsZW5kT3BlcmF0aW9uOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0U0FkZHJlc3NNb2RlXywKKyAgICAic2V0U0FkZHJlc3NNb2RlOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlQnVmZmVyXywKKyAgICAic2V0U2FtcGxlQnVm
ZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlQ291bnRfLAorICAgICJzZXRT
YW1wbGVDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNhbXBsZVBvc2l0aW9uc19j
b3VudF8sCisgICAgInNldFNhbXBsZVBvc2l0aW9uczpjb3VudDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFNhbXBsZXJTdGF0ZV9hdEluZGV4XywKKyAgICAic2V0U2FtcGxlclN0YXRlOmF0
SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTYW1wbGVyU3RhdGVfbG9kTWluQ2xh
bXBfbG9kTWF4Q2xhbXBfYXRJbmRleF8sCisgICAgInNldFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFt
cDpsb2RNYXhDbGFtcDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxl
clN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBzX3dpdGhSYW5nZV8sCisgICAgInNldFNh
bXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldFNh
bXBsZXJTdGF0ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2Npc3Nv
clJlY3RfLAorICAgICJzZXRTY2lzc29yUmVjdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFNjaXNzb3JSZWN0c19jb3VudF8sCisgICAgInNldFNjaXNzb3JSZWN0czpjb3VudDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFNjcmVlblNpemVfLAorICAgICJzZXRTY3JlZW5TaXplOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2lnbmFsZWRWYWx1ZV8sCisgICAgInNldFNpZ25h
bGVkVmFsdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTaXplXywKKyAgICAic2V0U2l6
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNsaWNlXywKKyAgICAic2V0U2xpY2U6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yXywKKyAgICAi
c2V0U291cmNlQWxwaGFCbGVuZEZhY3RvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNv
dXJjZVJHQkJsZW5kRmFjdG9yXywKKyAgICAic2V0U291cmNlUkdCQmxlbmRGYWN0b3I6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRTcGVjaWFsaXplZE5hbWVfLAorICAgICJzZXRTcGVjaWFs
aXplZE5hbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGFnZUluUmVnaW9uXywKKyAg
ICAic2V0U3RhZ2VJblJlZ2lvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0YWdlSW5S
ZWdpb25XaXRoSW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJzZXRT
dGFnZUluUmVnaW9uV2l0aEluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RhZ2VJbnB1dERlc2NyaXB0b3JfLAorICAgICJzZXRT
dGFnZUlucHV0RGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0YXJ0T2ZF
bmNvZGVyU2FtcGxlSW5kZXhfLAorICAgICJzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXhfLAor
ICAgICJzZXRTdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleF8sCisgICAgInNldFN0YXJ0T2ZWZXJ0ZXhT
YW1wbGVJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxBdHRhY2htZW50
XywKKyAgICAic2V0U3RlbmNpbEF0dGFjaG1lbnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRTdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0XywKKyAgICAic2V0U3RlbmNpbEF0dGFjaG1l
bnRQaXhlbEZvcm1hdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxDb21wYXJl
RnVuY3Rpb25fLAorICAgICJzZXRTdGVuY2lsQ29tcGFyZUZ1bmN0aW9uOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0U3RlbmNpbEZhaWx1cmVPcGVyYXRpb25fLAorICAgICJzZXRTdGVuY2ls
RmFpbHVyZU9wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxGcm9u
dFJlZmVyZW5jZVZhbHVlX2JhY2tSZWZlcmVuY2VWYWx1ZV8sCisgICAgInNldFN0ZW5jaWxGcm9u
dFJlZmVyZW5jZVZhbHVlOmJhY2tSZWZlcmVuY2VWYWx1ZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1ZV8sCisgICAgInNldFN0ZW5jaWxSZWZlcmVuY2VW
YWx1ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxSZXNvbHZlRmlsdGVyXywK
KyAgICAic2V0U3RlbmNpbFJlc29sdmVGaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRTdGVuY2lsU3RvcmVBY3Rpb25fLAorICAgICJzZXRTdGVuY2lsU3RvcmVBY3Rpb246Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zXywKKyAgICAi
c2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFN0ZXBGdW5jdGlvbl8sCisgICAgInNldFN0ZXBGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFN0ZXBSYXRlXywKKyAgICAic2V0U3RlcFJhdGU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRTdG9yYWdlTW9kZV8sCisgICAgInNldFN0b3JhZ2VNb2RlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0U3RvcmVBY3Rpb25fLAorICAgICJzZXRTdG9yZUFjdGlvbjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0b3JlQWN0aW9uT3B0aW9uc18sCisgICAgInNldFN0
b3JlQWN0aW9uT3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0cmlkZV8sCisg
ICAgInNldFN0cmlkZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN1cHBvcnRBZGRpbmdC
aW5hcnlGdW5jdGlvbnNfLAorICAgICJzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVu
Y3Rpb25zXywKKyAgICAic2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0
aW9uc18sCisgICAgInNldFN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnM6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzXywKKyAgICAic2V0
U3VwcG9ydEFyZ3VtZW50QnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN1cHBv
cnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzXywKKyAgICAic2V0U3VwcG9ydEluZGlyZWN0Q29tbWFu
ZEJ1ZmZlcnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTd2l6emxlXywKKyAgICAic2V0
U3dpenpsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRBZGRyZXNzTW9kZV8sCisgICAg
InNldFRBZGRyZXNzTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlv
bkNvbnRyb2xQb2ludEluZGV4VHlwZV8sCisgICAgInNldFRlc3NlbGxhdGlvbkNvbnRyb2xQb2lu
dEluZGV4VHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3Rv
ckJ1ZmZlcl9vZmZzZXRfaW5zdGFuY2VTdHJpZGVfLAorICAgICJzZXRUZXNzZWxsYXRpb25GYWN0
b3JCdWZmZXI6b2Zmc2V0Omluc3RhbmNlU3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0XywKKyAgICAic2V0VGVzc2VsbGF0aW9uRmFjdG9y
Rm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2Nh
bGVfLAorICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZF8sCisgICAgInNldFRlc3Nl
bGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRl
c3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbl8sCisgICAgInNldFRlc3NlbGxhdGlvbkZhY3Rv
clN0ZXBGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbk91
dHB1dFdpbmRpbmdPcmRlcl8sCisgICAgInNldFRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRl
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVf
LAorICAgICJzZXRUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0VGV4dHVyZV8sCisgICAgInNldFRleHR1cmU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRUZXh0dXJlOmF0SW5kZXg6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRUZXh0dXJlVHlwZV8sCisgICAgInNldFRleHR1cmVUeXBl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGV4dHVyZXNfd2l0aFJhbmdlXywKKyAgICAi
c2V0VGV4dHVyZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGhyZWFk
R3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGhfLAorICAgICJzZXRUaHJl
YWRHcm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoXywKKyAgICAic2V0VGhyZWFk
Z3JvdXBNZW1vcnlMZW5ndGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaHJlYWRncm91
cE1lbW9yeUxlbmd0aF9hdEluZGV4XywKKyAgICAic2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGg6
YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVu
Z3RoX29mZnNldF9hdEluZGV4XywKKyAgICAic2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGg6b2Zm
c2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaHJlYWRncm91cFNpemVN
YXRjaGVzVGlsZVNpemVfLAorICAgICJzZXRUaHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemU6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0
QnVmZmVySW5kZXhfLAorICAgICJzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVmZmVy
SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQWRkaXRpb25hbEJpbmFyeUZ1
bmN0aW9uc18sCisgICAgInNldFRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZUJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8sCisgICAgInNl
dFRpbGVCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRU
aWxlQnVmZmVyT2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRUaWxlQnVmZmVyT2Zmc2V0OmF0SW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQnVmZmVyc19vZmZzZXRzX3dpdGhS
YW5nZV8sCisgICAgInNldFRpbGVCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0VGlsZUJ5dGVzX2xlbmd0aF9hdEluZGV4XywKKyAgICAic2V0VGls
ZUJ5dGVzOmxlbmd0aDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZUZ1
bmN0aW9uXywKKyAgICAic2V0VGlsZUZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0VGlsZUhlaWdodF8sCisgICAgInNldFRpbGVIZWlnaHQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XywKKyAg
ICAic2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRo
QnVmZmVyUmFuZ2VfLAorICAgICJzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0
aEJ1ZmZlclJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0
ZV9hdEluZGV4XywKKyAgICAic2V0VGlsZVNhbXBsZXJTdGF0ZTphdEluZGV4OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFt
cF9hdEluZGV4XywKKyAgICAic2V0VGlsZVNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RNYXhD
bGFtcDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0
ZXNfbG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfLAorICAgICJzZXRUaWxlU2Ft
cGxlclN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNl
dFRpbGVTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFRpbGVUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRUaWxlVGV4dHVyZTphdEluZGV4OiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVRleHR1cmVzX3dpdGhSYW5nZV8sCisgICAgInNl
dFRpbGVUZXh0dXJlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxl
VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldFRpbGVWaXNpYmxl
RnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VGlsZVZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRUaWxl
VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFRpbGVXaWR0aF8sCisgICAgInNldFRpbGVXaWR0aDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFRyaWFuZ2xlQ291bnRfLAorICAgICJzZXRUcmlhbmdsZUNvdW50OiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VHJpYW5nbGVGaWxsTW9kZV8sCisgICAgInNldFRyaWFu
Z2xlRmlsbE1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUeXBlXywKKyAgICAic2V0
VHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFVybF8sCisgICAgInNldFVybDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldFVzYWdlXywKKyAgICAic2V0VXNhZ2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZmZXJJ
bmRleF8sCisgICAgInNldFZlcnRleEFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0
aW9uc18sCisgICAgInNldFZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfdmlld01hcHBpbmdz
XywKKyAgICAic2V0VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50OnZpZXdNYXBwaW5nczoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcl8sCisgICAgInNldFZlcnRleEJ1ZmZl
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcl9vZmZzZXRfYXRJbmRl
eF8sCisgICAgInNldFZlcnRleEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlck9mZnNldF8sCisgICAgInNldFZlcnRleEJ1ZmZlck9m
ZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlck9mZnNldF9hdElu
ZGV4XywKKyAgICAic2V0VmVydGV4QnVmZmVyT2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRWZXJ0ZXhCdWZmZXJzXywKKyAgICAic2V0VmVydGV4QnVmZmVyczoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2Vf
LAorICAgICJzZXRWZXJ0ZXhCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0VmVydGV4Qnl0ZXNfbGVuZ3RoX2F0SW5kZXhfLAorICAgICJzZXRWZXJ0
ZXhCeXRlczpsZW5ndGg6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRl
eERlc2NyaXB0b3JfLAorICAgICJzZXRWZXJ0ZXhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0VmVydGV4RnVuY3Rpb25fLAorICAgICJzZXRWZXJ0ZXhGdW5jdGlvbjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVf
YXRCdWZmZXJJbmRleF8sCisgICAgInNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6
YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldFZlcnRleEludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFZlcnRleExpbmtlZEZ1bmN0aW9uc18sCisgICAgInNldFZlcnRleExpbmtlZEZ1
bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFByZWxvYWRlZExpYnJh
cmllc18sCisgICAgInNldFZlcnRleFByZWxvYWRlZExpYnJhcmllczoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZV9hdEluZGV4XywKKyAgICAic2V0VmVydGV4
U2FtcGxlclN0YXRlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhT
YW1wbGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRleF8sCisgICAgInNldFZl
cnRleFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RNYXhDbGFtcDphdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9k
TWF4Q2xhbXBzX3dpdGhSYW5nZV8sCisgICAgInNldFZlcnRleFNhbXBsZXJTdGF0ZXM6bG9kTWlu
Q2xhbXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldFZlcnRleFNhbXBsZXJT
dGF0ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U3RyaWRl
XywKKyAgICAic2V0VmVydGV4U3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVy
dGV4VGV4dHVyZV9hdEluZGV4XywKKyAgICAic2V0VmVydGV4VGV4dHVyZTphdEluZGV4OiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4VGV4dHVyZXNfd2l0aFJhbmdlXywKKyAgICAi
c2V0VmVydGV4VGV4dHVyZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldFZlcnRl
eFZpc2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXywKKyAg
ICAic2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFZpZXdwb3J0XywKKyAgICAic2V0Vmlld3BvcnQ6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaWV3cG9ydHNfY291bnRfLAorICAgICJzZXRWaWV3cG9y
dHM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaXNpYmlsaXR5UmVzdWx0QnVm
ZmVyXywKKyAgICAic2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcjoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFZpc2liaWxpdHlSZXN1bHRNb2RlX29mZnNldF8sCisgICAgInNldFZpc2liaWxp
dHlSZXN1bHRNb2RlOm9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZpc2libGVG
dW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRWaXNpYmxlRnVuY3Rpb25UYWJs
ZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmlzaWJsZUZ1bmN0
aW9uVGFibGVfYXRJbmRleF8sCisgICAgInNldFZpc2libGVGdW5jdGlvblRhYmxlOmF0SW5kZXg6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1
ZmZlclJhbmdlXywKKyAgICAic2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5n
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZpc2libGVGdW5jdGlvblRhYmxlc193aXRo
UmFuZ2VfLAorICAgICJzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aFJhbmdlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0V2lkdGhfLAorICAgICJzZXRXaWR0aDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFdyaXRlTWFza18sCisgICAgInNldFdyaXRlTWFzazoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNoYXJlZENhcHR1cmVNYW5hZ2VyLAorICAgICJzaGFyZWRDYXB0dXJl
TWFuYWdlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2lnbmFsZWRWYWx1ZSwKKyAgICAic2ln
bmFsZWRWYWx1ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2l6ZSwKKyAgICAic2l6ZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2xpY2UsCisgICAgInNsaWNlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzb3VyY2VBbHBoYUJsZW5kRmFjdG9yLAorICAgICJzb3VyY2VBbHBoYUJsZW5kRmFj
dG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzb3VyY2VSR0JCbGVuZEZhY3RvciwKKyAgICAi
c291cmNlUkdCQmxlbmRGYWN0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNwYXJzZVRpbGVT
aXplSW5CeXRlcywKKyAgICAic3BhcnNlVGlsZVNpemVJbkJ5dGVzIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzcGFyc2VUaWxlU2l6ZVdpdGhUZXh0dXJlVHlwZV9waXhlbEZvcm1hdF9zYW1wbGVD
b3VudF8sCisgICAgInNwYXJzZVRpbGVTaXplV2l0aFRleHR1cmVUeXBlOnBpeGVsRm9ybWF0OnNh
bXBsZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3BlY2lhbGl6ZWROYW1lLAorICAg
ICJzcGVjaWFsaXplZE5hbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YWdlSW5wdXRBdHRy
aWJ1dGVzLAorICAgICJzdGFnZUlucHV0QXR0cmlidXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc3RhZ2VJbnB1dERlc2NyaXB0b3IsCisgICAgInN0YWdlSW5wdXREZXNjcmlwdG9yIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciwKKyAgICAic3Rh
Z2VJbnB1dE91dHB1dERlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YXJ0Q2Fw
dHVyZVdpdGhDb21tYW5kUXVldWVfLAorICAgICJzdGFydENhcHR1cmVXaXRoQ29tbWFuZFF1ZXVl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3JfZXJy
b3JfLAorICAgICJzdGFydENhcHR1cmVXaXRoRGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHN0YXJ0Q2FwdHVyZVdpdGhEZXZpY2VfLAorICAgICJzdGFydENhcHR1cmVX
aXRoRGV2aWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRDYXB0dXJlV2l0aFNjb3Bl
XywKKyAgICAic3RhcnRDYXB0dXJlV2l0aFNjb3BlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCwKKyAgICAic3RhcnRPZkVuY29kZXJTYW1wbGVJbmRl
eCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgsCisg
ICAgInN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dGFydE9mVmVydGV4U2FtcGxlSW5kZXgsCisgICAgInN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgsCisg
ICAgInN0YXRpY1RocmVhZGdyb3VwTWVtb3J5TGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzdGF0dXMsCisgICAgInN0YXR1cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlbmNpbEF0
dGFjaG1lbnQsCisgICAgInN0ZW5jaWxBdHRhY2htZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0LAorICAgICJzdGVuY2lsQXR0YWNobWVudFBp
eGVsRm9ybWF0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGVuY2lsQ29tcGFyZUZ1bmN0aW9u
LAorICAgICJzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dGVuY2lsRmFpbHVyZU9wZXJhdGlvbiwKKyAgICAic3RlbmNpbEZhaWx1cmVPcGVyYXRpb24iKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHN0ZW5jaWxSZXNvbHZlRmlsdGVyLAorICAgICJzdGVuY2ls
UmVzb2x2ZUZpbHRlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlcEZ1bmN0aW9uLAorICAg
ICJzdGVwRnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0ZXBSYXRlLAorICAgICJz
dGVwUmF0ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RvcENhcHR1cmUsCisgICAgInN0b3BD
YXB0dXJlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdG9yYWdlTW9kZSwKKyAgICAic3RvcmFn
ZU1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0b3JlQWN0aW9uLAorICAgICJzdG9yZUFj
dGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RvcmVBY3Rpb25PcHRpb25zLAorICAgICJz
dG9yZUFjdGlvbk9wdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0cmlkZSwKKyAgICAi
c3RyaWRlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdHJ1Y3RUeXBlLAorICAgICJzdHJ1Y3RU
eXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25z
LAorICAgICJzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMsCisgICAgInN1cHBvcnRB
ZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3Vw
cG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucywKKyAgICAic3VwcG9ydEFkZGluZ1ZlcnRl
eEJpbmFyeUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydEFyZ3VtZW50
QnVmZmVycywKKyAgICAic3VwcG9ydEFyZ3VtZW50QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMsCisgICAgInN1cHBvcnRJbmRpcmVj
dENvbW1hbmRCdWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0czMyQml0Rmxv
YXRGaWx0ZXJpbmcsCisgICAgInN1cHBvcnRzMzJCaXRGbG9hdEZpbHRlcmluZyIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc3VwcG9ydHMzMkJpdE1TQUEsCisgICAgInN1cHBvcnRzMzJCaXRNU0FB
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uLAor
ICAgICJzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzdXBwb3J0c0NvdW50ZXJTYW1wbGluZ18sCisgICAgInN1cHBvcnRzQ291bnRlclNhbXBsaW5n
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNEZXN0aW5hdGlvbl8sCisgICAgInN1
cHBvcnRzRGVzdGluYXRpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c0R5bmFt
aWNMaWJyYXJpZXMsCisgICAgInN1cHBvcnRzRHluYW1pY0xpYnJhcmllcyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc3VwcG9ydHNGYW1pbHlfLAorICAgICJzdXBwb3J0c0ZhbWlseToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzRmVhdHVyZVNldF8sCisgICAgInN1cHBvcnRzRmVh
dHVyZVNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVy
cywKKyAgICAic3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnNGcm9tUmVuZGVyLAorICAgICJzdXBwb3J0c0Z1bmN0
aW9uUG9pbnRlcnNGcm9tUmVuZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c1By
aW1pdGl2ZU1vdGlvbkJsdXIsCisgICAgInN1cHBvcnRzUHJpbWl0aXZlTW90aW9uQmx1ciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0aW9uLAorICAg
ICJzdXBwb3J0c1B1bGxNb2RlbEludGVycG9sYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHN1cHBvcnRzUXVlcnlUZXh0dXJlTE9ELAorICAgICJzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhM
YXllckNvdW50XywKKyAgICAic3VwcG9ydHNSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhMYXllckNv
dW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNSYXl0cmFjaW5nLAorICAgICJz
dXBwb3J0c1JheXRyYWNpbmciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzUmF5dHJh
Y2luZ0Zyb21SZW5kZXIsCisgICAgInN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5kZXIiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzUmVuZGVyRHluYW1pY0xpYnJhcmllcywKKyAgICAi
c3VwcG9ydHNSZW5kZXJEeW5hbWljTGlicmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dXBwb3J0c1NoYWRlckJhcnljZW50cmljQ29vcmRpbmF0ZXMsCisgICAgInN1cHBvcnRzU2hhZGVy
QmFyeWNlbnRyaWNDb29yZGluYXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNU
ZXh0dXJlU2FtcGxlQ291bnRfLAorICAgICJzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzVmVydGV4QW1wbGlmaWNhdGlvbkNvdW50XywK
KyAgICAic3VwcG9ydHNWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzd2l6emxlLAorICAgICJzd2l6emxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
eW5jaHJvbml6ZVJlc291cmNlXywKKyAgICAic3luY2hyb25pemVSZXNvdXJjZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHN5bmNocm9uaXplVGV4dHVyZV9zbGljZV9sZXZlbF8sCisgICAgInN5
bmNocm9uaXplVGV4dHVyZTpzbGljZTpsZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRB
ZGRyZXNzTW9kZSwKKyAgICAidEFkZHJlc3NNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0
YWlsU2l6ZUluQnl0ZXMsCisgICAgInRhaWxTaXplSW5CeXRlcyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlLAorICAgICJ0ZXNzZWxsYXRp
b25Db250cm9sUG9pbnRJbmRleFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxh
dGlvbkZhY3RvckZvcm1hdCwKKyAgICAidGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTCh0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24sCisgICAgInRl
c3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGVz
c2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyLAorICAgICJ0ZXNzZWxsYXRpb25PdXRwdXRXaW5k
aW5nT3JkZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlvblBhcnRpdGlvbk1v
ZGUsCisgICAgInRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHRleHR1cmUsCisgICAgInRleHR1cmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRleHR1
cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXRfd2lkdGhfaGVpZ2h0X21pcG1hcHBlZF8sCisg
ICAgInRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6d2lkdGg6aGVpZ2h0Om1pcG1h
cHBlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRleHR1cmVCYXJyaWVyLAorICAgICJ0ZXh0
dXJlQmFycmllciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZUJ1ZmZlckRlc2NyaXB0
b3JXaXRoUGl4ZWxGb3JtYXRfd2lkdGhfcmVzb3VyY2VPcHRpb25zX3VzYWdlXywKKyAgICAidGV4
dHVyZUJ1ZmZlckRlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6d2lkdGg6cmVzb3VyY2VPcHRpb25z
OnVzYWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0
aFBpeGVsRm9ybWF0X3NpemVfbWlwbWFwcGVkXywKKyAgICAidGV4dHVyZUN1YmVEZXNjcmlwdG9y
V2l0aFBpeGVsRm9ybWF0OnNpemU6bWlwbWFwcGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
dGV4dHVyZURhdGFUeXBlLAorICAgICJ0ZXh0dXJlRGF0YVR5cGUiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHRleHR1cmVSZWZlcmVuY2VUeXBlLAorICAgICJ0ZXh0dXJlUmVmZXJlbmNlVHlwZSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZVR5cGUsCisgICAgInRleHR1cmVUeXBlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRFeGVjdXRpb25XaWR0aCwKKyAgICAidGhyZWFk
RXhlY3V0aW9uV2lkdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRocmVhZEdyb3VwU2l6ZUlz
TXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoLAorICAgICJ0aHJlYWRHcm91cFNpemVJc011
bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGhy
ZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQsCisgICAgInRocmVhZGdyb3VwTWVtb3J5QWxpZ25tZW50
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRncm91cE1lbW9yeURhdGFTaXplLAorICAg
ICJ0aHJlYWRncm91cE1lbW9yeURhdGFTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJl
YWRncm91cE1lbW9yeUxlbmd0aCwKKyAgICAidGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSwKKyAgICAi
dGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0
aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywKKyAgICAidGlsZUFkZGl0aW9uYWxCaW5hcnlG
dW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVBcmd1bWVudHMsCisgICAgInRp
bGVBcmd1bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVCdWZmZXJzLAorICAgICJ0
aWxlQnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGlsZUZ1bmN0aW9uLAorICAgICJ0
aWxlRnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVIZWlnaHQsCisgICAgInRp
bGVIZWlnaHQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVXaWR0aCwKKyAgICAidGlsZVdp
ZHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0cmlhbmdsZUNvdW50LAorICAgICJ0cmlhbmds
ZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0eXBlLAorICAgICJ0eXBlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTCh1cGRhdGVGZW5jZV8sCisgICAgInVwZGF0ZUZlbmNlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwodXBkYXRlRmVuY2VfYWZ0ZXJTdGFnZXNfLAorICAgICJ1cGRhdGVG
ZW5jZTphZnRlclN0YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVwZGF0ZVRleHR1cmVN
YXBwaW5nX21vZGVfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJ1
cGRhdGVUZXh0dXJlTWFwcGluZzptb2RlOmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zm
c2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXBkYXRlVGV4dHVyZU1hcHBpbmdfbW9kZV9y
ZWdpb25fbWlwTGV2ZWxfc2xpY2VfLAorICAgICJ1cGRhdGVUZXh0dXJlTWFwcGluZzptb2RlOnJl
Z2lvbjptaXBMZXZlbDpzbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVwZGF0ZVRleHR1
cmVNYXBwaW5nc19tb2RlX3JlZ2lvbnNfbWlwTGV2ZWxzX3NsaWNlc19udW1SZWdpb25zXywKKyAg
ICAidXBkYXRlVGV4dHVyZU1hcHBpbmdzOm1vZGU6cmVnaW9uczptaXBMZXZlbHM6c2xpY2VzOm51
bVJlZ2lvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1cmwsCisgICAgInVybCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwodXNhZ2UsCisgICAgInVzYWdlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTCh1c2VIZWFwXywKKyAgICAidXNlSGVhcDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVz
ZUhlYXBfc3RhZ2VzXywKKyAgICAidXNlSGVhcDpzdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTCh1c2VIZWFwc19jb3VudF8sCisgICAgInVzZUhlYXBzOmNvdW50OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwodXNlSGVhcHNfY291bnRfc3RhZ2VzXywKKyAgICAidXNlSGVhcHM6Y291bnQ6
c3RhZ2VzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlUmVzb3VyY2VfdXNhZ2VfLAorICAg
ICJ1c2VSZXNvdXJjZTp1c2FnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZVJlc291cmNl
X3VzYWdlX3N0YWdlc18sCisgICAgInVzZVJlc291cmNlOnVzYWdlOnN0YWdlczoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHVzZVJlc291cmNlc19jb3VudF91c2FnZV8sCisgICAgInVzZVJlc291
cmNlczpjb3VudDp1c2FnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZVJlc291cmNlc19j
b3VudF91c2FnZV9zdGFnZXNfLAorICAgICJ1c2VSZXNvdXJjZXM6Y291bnQ6dXNhZ2U6c3RhZ2Vz
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlZFNpemUsCisgICAgInVzZWRTaXplIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLAorICAg
ICJ2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TCh2ZXJ0ZXhBcmd1bWVudHMsCisgICAgInZlcnRleEFyZ3VtZW50cyIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwodmVydGV4QXR0cmlidXRlcywKKyAgICAidmVydGV4QXR0cmlidXRlcyIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwodmVydGV4QnVmZmVyLAorICAgICJ2ZXJ0ZXhCdWZmZXIiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHZlcnRleEJ1ZmZlck9mZnNldCwKKyAgICAidmVydGV4QnVmZmVy
T2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhCdWZmZXJzLAorICAgICJ2ZXJ0
ZXhCdWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhEZXNjcmlwdG9yLAorICAg
ICJ2ZXJ0ZXhEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhGdW5jdGlv
biwKKyAgICAidmVydGV4RnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleExp
bmtlZEZ1bmN0aW9ucywKKyAgICAidmVydGV4TGlua2VkRnVuY3Rpb25zIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTCh2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMsCisgICAgInZlcnRleFByZWxvYWRl
ZExpYnJhcmllcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGV4U3RyaWRlLAorICAgICJ2
ZXJ0ZXhTdHJpZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRpY2FsLAorICAgICJ2ZXJ0
aWNhbCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGljYWxTYW1wbGVTdG9yYWdlLAorICAg
ICJ2ZXJ0aWNhbFNhbXBsZVN0b3JhZ2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZpc2liaWxp
dHlSZXN1bHRCdWZmZXIsCisgICAgInZpc2liaWxpdHlSZXN1bHRCdWZmZXIiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciwKKyAgICAidmlzaWJs
ZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0Rm9y
RmVuY2VfLAorICAgICJ3YWl0Rm9yRmVuY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0
Rm9yRmVuY2VfYmVmb3JlU3RhZ2VzXywKKyAgICAid2FpdEZvckZlbmNlOmJlZm9yZVN0YWdlczoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHdhaXRVbnRpbENvbXBsZXRlZCwKKyAgICAid2FpdFVu
dGlsQ29tcGxldGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0VW50aWxTY2hlZHVsZWQs
CisgICAgIndhaXRVbnRpbFNjaGVkdWxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwod2lkdGgs
CisgICAgIndpZHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3cml0ZUNvbXBhY3RlZEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZVNpemVfdG9CdWZmZXJfb2Zmc2V0XywKKyAgICAid3JpdGVDb21wYWN0
ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZV90b0J1
ZmZlcl9vZmZzZXRfc2l6ZURhdGFUeXBlXywKKyAgICAid3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVTaXplOnRvQnVmZmVyOm9mZnNldDpzaXplRGF0YVR5cGU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTCh3cml0ZU1hc2ssCisgICAgIndyaXRlTWFzayIpOworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5ocHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWIyYzNlMTJmZTQ4MDc5YmU5NDBhYjgzZTI2OWQ4YmJmMTVlNTljMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFwLmhwcApA
QCAtMCwwICsxLDI4MiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTVRMSGVhcC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0y
MDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNp
bmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgor
CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEhl
YXAuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAorewor
X01UTF9FTlVNKE5TOjpJbnRlZ2VyLCBIZWFwVHlwZSkgeworICAgIEhlYXBUeXBlQXV0b21hdGlj
ID0gMCwKKyAgICBIZWFwVHlwZVBsYWNlbWVudCA9IDEsCisgICAgSGVhcFR5cGVTcGFyc2UgPSAy
LAorfTsKKworY2xhc3MgSGVhcERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SGVhcERl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEhlYXBEZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgSGVhcERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgIHNpemUoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFNpemUoTlM6OlVJbnRlZ2VyIHNpemUpOworCisgICAg
TVRMOjpTdG9yYWdlTW9kZSAgICAgICAgICAgICBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9k
ZSBzdG9yYWdlTW9kZSk7CisKKyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAgICAgICAgIGNwdUNh
Y2hlTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3B1
Q2FjaGVNb2RlKE1UTDo6Q1BVQ2FjaGVNb2RlIGNwdUNhY2hlTW9kZSk7CisKKyAgICBNVEw6Okhh
emFyZFRyYWNraW5nTW9kZSAgICAgIGhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGF6YXJkVHJhY2tpbmdNb2RlKE1UTDo6SGF6
YXJkVHJhY2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSk7CisKKyAgICBNVEw6OlJlc291cmNl
T3B0aW9ucyAgICAgICAgIHJlc291cmNlT3B0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0UmVzb3VyY2VPcHRpb25zKE1UTDo6UmVzb3VyY2VPcHRpb25z
IHJlc291cmNlT3B0aW9ucyk7CisKKyAgICBNVEw6OkhlYXBUeXBlICAgICAgICAgICAgICAgIHR5
cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldFR5cGUoTVRM
OjpIZWFwVHlwZSB0eXBlKTsKK307CisKK2NsYXNzIEhlYXAgOiBwdWJsaWMgTlM6OlJlZmVyZW5j
aW5nPEhlYXA+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgbGFiZWwo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6
U3RyaW5nKiBsYWJlbCk7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgICBkZXZpY2UoKSBj
b25zdDsKKworICAgIE1UTDo6U3RvcmFnZU1vZGUgICAgICAgIHN0b3JhZ2VNb2RlKCkgY29uc3Q7
CisKKyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAgICBjcHVDYWNoZU1vZGUoKSBjb25zdDsKKwor
ICAgIE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0Owor
CisgICAgTVRMOjpSZXNvdXJjZU9wdGlvbnMgICAgcmVzb3VyY2VPcHRpb25zKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICBzaXplKCkgY29uc3Q7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICB1c2VkU2l6ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgY3VycmVudEFsbG9jYXRlZFNpemUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgIG1heEF2YWlsYWJsZVNpemUoTlM6OlVJbnRlZ2VyIGFsaWdubWVudCk7CisK
KyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICBuZXdCdWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0
aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAg
ICAgICAgICBuZXdUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjKTsK
KworICAgIE1UTDo6UHVyZ2VhYmxlU3RhdGUgICAgIHNldFB1cmdlYWJsZVN0YXRlKE1UTDo6UHVy
Z2VhYmxlU3RhdGUgc3RhdGUpOworCisgICAgTVRMOjpIZWFwVHlwZSAgICAgICAgICAgdHlwZSgp
IGNvbnN0OworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgbmV3QnVmZmVyKE5TOjpVSW50
ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMsIE5TOjpVSW50ZWdlciBv
ZmZzZXQpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgbmV3VGV4dHVyZShjb25zdCBj
bGFzcyBUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG9mZnNldCk7
Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6Okhl
YXBEZXNjcmlwdG9yKiBNVEw6OkhlYXBEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6SGVhcERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMo
TVRMSGVhcERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBN
VEw6OkhlYXBEZXNjcmlwdG9yKiBNVEw6OkhlYXBEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkhlYXBEZXNjcmlwdG9yPigpOworfQorCisvLyBw
cm9wZXJ0eTogc2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SGVhcERlc2NyaXB0
b3I6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzaXplKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0U2l6ZShOUzo6VUludGVnZXIgc2l6ZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
U2l6ZV8pLCBzaXplKTsKK30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VNb2RlCitfTVRMX0lOTElO
RSBNVEw6OlN0b3JhZ2VNb2RlIE1UTDo6SGVhcERlc2NyaXB0b3I6OnN0b3JhZ2VNb2RlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JhZ2VNb2RlPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3JhZ2VNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBz
dG9yYWdlTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0U3RvcmFnZU1vZGVfKSwgc3RvcmFnZU1vZGUpOworfQorCisvLyBwcm9w
ZXJ0eTogY3B1Q2FjaGVNb2RlCitfTVRMX0lOTElORSBNVEw6OkNQVUNhY2hlTW9kZSBNVEw6Okhl
YXBEZXNjcmlwdG9yOjpjcHVDYWNoZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q1BVQ2FjaGVNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNw
dUNhY2hlTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6
OnNldENwdUNhY2hlTW9kZShNVEw6OkNQVUNhY2hlTW9kZSBjcHVDYWNoZU1vZGUpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENwdUNh
Y2hlTW9kZV8pLCBjcHVDYWNoZU1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogaGF6YXJkVHJhY2tp
bmdNb2RlCitfTVRMX0lOTElORSBNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBNVEw6OkhlYXBEZXNj
cmlwdG9yOjpoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGhhemFyZFRyYWNraW5nTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVh
cERlc2NyaXB0b3I6OnNldEhhemFyZFRyYWNraW5nTW9kZShNVEw6OkhhemFyZFRyYWNraW5nTW9k
ZSBoYXphcmRUcmFja2luZ01vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEhhemFyZFRyYWNraW5nTW9kZV8pLCBoYXphcmRUcmFj
a2luZ01vZGUpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb3VyY2VPcHRpb25zCitfTVRMX0lOTElO
RSBNVEw6OlJlc291cmNlT3B0aW9ucyBNVEw6OkhlYXBEZXNjcmlwdG9yOjpyZXNvdXJjZU9wdGlv
bnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3Vy
Y2VPcHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc291cmNlT3B0aW9ucykpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6OnNldFJlc291cmNlT3B0aW9u
cyhNVEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc291cmNlT3B0aW9u
c18pLCByZXNvdXJjZU9wdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogdHlwZQorX01UTF9JTkxJ
TkUgTVRMOjpIZWFwVHlwZSBNVEw6OkhlYXBEZXNjcmlwdG9yOjp0eXBlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkhlYXBUeXBlPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXBEZXNjcmlw
dG9yOjpzZXRUeXBlKE1UTDo6SGVhcFR5cGUgdHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHlwZV8pLCB0eXBlKTsKK30KKwor
Ly8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkhlYXA6Omxh
YmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5n
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6SGVhcDo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyks
IGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZp
Y2UqIE1UTDo6SGVhcDo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBzdG9yYWdlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTdG9yYWdlTW9k
ZSBNVEw6OkhlYXA6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlN0b3JhZ2VNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3Jh
Z2VNb2RlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjcHVDYWNoZU1vZGUKK19NVExfSU5MSU5FIE1U
TDo6Q1BVQ2FjaGVNb2RlIE1UTDo6SGVhcDo6Y3B1Q2FjaGVNb2RlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNQVUNhY2hlTW9kZT4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChjcHVDYWNoZU1vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IGhhemFyZFRyYWNr
aW5nTW9kZQorX01UTF9JTkxJTkUgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgTVRMOjpIZWFwOjpo
YXphcmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhhemFy
ZFRyYWNraW5nTW9kZSkpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb3VyY2VPcHRpb25zCitfTVRM
X0lOTElORSBNVEw6OlJlc291cmNlT3B0aW9ucyBNVEw6OkhlYXA6OnJlc291cmNlT3B0aW9ucygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZU9w
dGlvbnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzb3VyY2VPcHRpb25zKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBzaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpIZWFwOjpzaXpl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2l6ZSkpOworfQorCisvLyBwcm9wZXJ0eTogdXNlZFNp
emUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkhlYXA6OnVzZWRTaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodXNlZFNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IGN1cnJlbnRBbGxv
Y2F0ZWRTaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpIZWFwOjpjdXJyZW50QWxs
b2NhdGVkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGN1cnJlbnRBbGxvY2F0ZWRTaXplKSk7
Cit9CisKKy8vIG1ldGhvZDogbWF4QXZhaWxhYmxlU2l6ZVdpdGhBbGlnbm1lbnQ6CitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpIZWFwOjptYXhBdmFpbGFibGVTaXplKE5TOjpVSW50ZWdl
ciBhbGlnbm1lbnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heEF2YWlsYWJsZVNpemVXaXRoQWxpZ25tZW50
XyksIGFsaWdubWVudCk7Cit9CisKKy8vIG1ldGhvZDogbmV3QnVmZmVyV2l0aExlbmd0aDpvcHRp
b25zOgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6SGVhcDo6bmV3QnVmZmVyKE5TOjpV
SW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9uc18pLCBsZW5ndGgsIG9wdGlvbnMpOworfQor
CisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6
VGV4dHVyZSogTVRMOjpIZWFwOjpuZXdUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0
b3IqIGRlc2MpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJl
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3JfKSwgZGVz
Yyk7Cit9CisKKy8vIG1ldGhvZDogc2V0UHVyZ2VhYmxlU3RhdGU6CitfTVRMX0lOTElORSBNVEw6
OlB1cmdlYWJsZVN0YXRlIE1UTDo6SGVhcDo6c2V0UHVyZ2VhYmxlU3RhdGUoTVRMOjpQdXJnZWFi
bGVTdGF0ZSBzdGF0ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlB1
cmdlYWJsZVN0YXRlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFB1cmdlYWJsZVN0YXRlXyks
IHN0YXRlKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5MSU5FIE1UTDo6SGVhcFR5
cGUgTVRMOjpIZWFwOjp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkhlYXBUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHR5cGUpKTsKK30KKwor
Ly8gbWV0aG9kOiBuZXdCdWZmZXJXaXRoTGVuZ3RoOm9wdGlvbnM6b2Zmc2V0OgorX01UTF9JTkxJ
TkUgTVRMOjpCdWZmZXIqIE1UTDo6SGVhcDo6bmV3QnVmZmVyKE5TOjpVSW50ZWdlciBsZW5ndGgs
IE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMsIE5TOjpVSW50ZWdlciBvZmZzZXQpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9uc19vZmZzZXRfKSwgbGVuZ3RoLCBv
cHRpb25zLCBvZmZzZXQpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRv
cjpvZmZzZXQ6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6SGVhcDo6bmV3VGV4dHVy
ZShjb25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6VUludGVnZXIg
b2Zmc2V0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yX29mZnNldF8p
LCBkZXNjcmlwdG9yLCBvZmZzZXQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40YWEzYTM1OTc3YjAxZTJiMDBiMjZhMThhOTUyNzM0ZDU1MzdhZDUxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAKQEAgLTAsMCArMSwxODkgQEAKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEluZGly
ZWN0Q29tbWFuZEJ1ZmZlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExI
ZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFu
ZEJ1ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRM
Cit7CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBJbmRpcmVjdENvbW1hbmRUeXBlKSB7Cisg
ICAgSW5kaXJlY3RDb21tYW5kVHlwZURyYXcgPSAxLAorICAgIEluZGlyZWN0Q29tbWFuZFR5cGVE
cmF3SW5kZXhlZCA9IDIsCisgICAgSW5kaXJlY3RDb21tYW5kVHlwZURyYXdQYXRjaGVzID0gNCwK
KyAgICBJbmRpcmVjdENvbW1hbmRUeXBlRHJhd0luZGV4ZWRQYXRjaGVzID0gOCwKKyAgICBJbmRp
cmVjdENvbW1hbmRUeXBlQ29uY3VycmVudERpc3BhdGNoID0gMzIsCisgICAgSW5kaXJlY3RDb21t
YW5kVHlwZUNvbmN1cnJlbnREaXNwYXRjaFRocmVhZHMgPSA2NCwKK307CisKK3N0cnVjdCBJbmRp
cmVjdENvbW1hbmRCdWZmZXJFeGVjdXRpb25SYW5nZQoreworICAgIHVpbnQzMl90IGxvY2F0aW9u
OworICAgIHVpbnQzMl90IGxlbmd0aDsKK30gX01UTF9QQUNLRUQ7CisKK2NsYXNzIEluZGlyZWN0
Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SW5kaXJlY3RDb21t
YW5kQnVmZmVyRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgSW5kaXJl
Y3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEluZGlyZWN0
Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkluZGly
ZWN0Q29tbWFuZFR5cGUgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZFR5cGVzKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENv
bW1hbmRUeXBlcyhNVEw6OkluZGlyZWN0Q29tbWFuZFR5cGUgY29tbWFuZFR5cGVzKTsKKworICAg
IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0UGlw
ZWxpbmVTdGF0ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZShib29sIGluaGVyaXRQaXBlbGlu
ZVN0YXRlKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmhlcml0QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmhlcml0QnVmZmVycyhib29sIGluaGVyaXRCdWZm
ZXJzKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4VmVydGV4QnVmZmVyQmluZENvdW50
KE5TOjpVSW50ZWdlciBtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQpOworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEZyYWdtZW50QnVmZmVyQmlu
ZENvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldE1heEZyYWdtZW50QnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhG
cmFnbWVudEJ1ZmZlckJpbmRDb3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heEtl
cm5lbEJ1ZmZlckJpbmRDb3VudChOUzo6VUludGVnZXIgbWF4S2VybmVsQnVmZmVyQmluZENvdW50
KTsKK307CisKK2NsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8SW5kaXJlY3RDb21tYW5kQnVmZmVyLCBSZXNvdXJjZT4KK3sKK3B1YmxpYzoKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICBzaXplKCkgY29uc3Q7CisKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNldChOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgY2xh
c3MgSW5kaXJlY3RSZW5kZXJDb21tYW5kKiAgaW5kaXJlY3RSZW5kZXJDb21tYW5kKE5TOjpVSW50
ZWdlciBjb21tYW5kSW5kZXgpOworCisgICAgY2xhc3MgSW5kaXJlY3RDb21wdXRlQ29tbWFuZCog
aW5kaXJlY3RDb21wdXRlQ29tbWFuZChOUzo6VUludGVnZXIgY29tbWFuZEluZGV4KTsKK307CisK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6SW5kaXJlY3RD
b21tYW5kQnVmZmVyRGVzY3JpcHRvciogTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlw
dG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6SW5kaXJl
Y3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExJbmRpcmVjdENv
bW1hbmRCdWZmZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJ
TkUgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OkluZGlyZWN0Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJv
cGVydHk6IGNvbW1hbmRUeXBlcworX01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdENvbW1hbmRUeXBl
IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6Y29tbWFuZFR5cGVzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGlyZWN0Q29tbWFu
ZFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZFR5cGVzKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRDb21t
YW5kVHlwZXMoTVRMOjpJbmRpcmVjdENvbW1hbmRUeXBlIGNvbW1hbmRUeXBlcykKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tbWFu
ZFR5cGVzXyksIGNvbW1hbmRUeXBlcyk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmhlcml0UGlwZWxp
bmVTdGF0ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2Ny
aXB0b3I6OmluaGVyaXRQaXBlbGluZVN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluaGVyaXRQaXBlbGlu
ZVN0YXRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZm
ZXJEZXNjcmlwdG9yOjpzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZShib29sIGluaGVyaXRQaXBlbGlu
ZVN0YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZV8pLCBpbmhlcml0UGlwZWxpbmVTdGF0ZSk7
Cit9CisKKy8vIHByb3BlcnR5OiBpbmhlcml0QnVmZmVycworX01UTF9JTkxJTkUgYm9vbCBNVEw6
OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmluaGVyaXRCdWZmZXJzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGluaGVyaXRCdWZmZXJzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRp
cmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRJbmhlcml0QnVmZmVycyhib29sIGluaGVy
aXRCdWZmZXJzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRJbmhlcml0QnVmZmVyc18pLCBpbmhlcml0QnVmZmVycyk7Cit9CisKKy8v
IHByb3BlcnR5OiBtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6Om1heFZlcnRleEJ1ZmZl
ckJpbmRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFZlcnRleEJ1ZmZlckJpbmRDb3Vu
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVz
Y3JpcHRvcjo6c2V0TWF4VmVydGV4QnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhWZXJ0
ZXhCdWZmZXJCaW5kQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heFZlcnRleEJ1ZmZlckJpbmRDb3VudF8pLCBtYXhWZXJ0
ZXhCdWZmZXJCaW5kQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogbWF4RnJhZ21lbnRCdWZmZXJC
aW5kQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1
ZmZlckRlc2NyaXB0b3I6Om1heEZyYWdtZW50QnVmZmVyQmluZENvdW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNldE1heEZyYWdtZW50
QnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnRfKSwgbWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291
bnQpOworfQorCisvLyBwcm9wZXJ0eTogbWF4S2VybmVsQnVmZmVyQmluZENvdW50CitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpt
YXhLZXJuZWxCdWZmZXJCaW5kQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhLZXJuZWxC
dWZmZXJCaW5kQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNldE1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudChOUzo6VUlu
dGVnZXIgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhLZXJuZWxCdWZmZXJCaW5kQ291
bnRfKSwgbWF4S2VybmVsQnVmZmVyQmluZENvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHNpemUK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlcjo6c2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNpemUpKTsKK30KKworLy8gbWV0aG9kOiByZXNldFdp
dGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXI6OnJl
c2V0KE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXRXaXRoUmFuZ2VfKSwgcmFuZ2UpOworfQorCisvLyBt
ZXRob2Q6IGluZGlyZWN0UmVuZGVyQ29tbWFuZEF0SW5kZXg6CitfTVRMX0lOTElORSBNVEw6Oklu
ZGlyZWN0UmVuZGVyQ29tbWFuZCogTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXI6OmluZGlyZWN0
UmVuZGVyQ29tbWFuZChOUzo6VUludGVnZXIgY29tbWFuZEluZGV4KQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChpbmRpcmVjdFJlbmRlckNvbW1hbmRBdEluZGV4XyksIGNvbW1hbmRJbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogaW5kaXJlY3RDb21wdXRlQ29tbWFuZEF0SW5kZXg6CitfTVRM
X0lOTElORSBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQqIE1UTDo6SW5kaXJlY3RDb21tYW5k
QnVmZmVyOjppbmRpcmVjdENvbXB1dGVDb21tYW5kKE5TOjpVSW50ZWdlciBjb21tYW5kSW5kZXgp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRpcmVjdENvbXB1dGVD
b21tYW5kKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRpcmVjdENvbXB1dGVDb21tYW5kQXRJ
bmRleF8pLCBjb21tYW5kSW5kZXgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIu
aHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA2ZDUyZmQ3ZGNlMTIxNmZhNDcwZWYyOThiYWQwMWZkMzBhNjE3NDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSwxODcgQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTElu
ZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBs
ZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAi
TVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1
ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZW5kZXJDb21t
YW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3Iu
aHBwIgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3Mg
SW5kaXJlY3RSZW5kZXJDb21tYW5kIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxJbmRpcmVjdFJl
bmRlckNvbW1hbmQ+Cit7CitwdWJsaWM6CisgICAgdm9pZCBzZXRSZW5kZXJQaXBlbGluZVN0YXRl
KGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lU3RhdGUpOworCisgICAg
dm9pZCBzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50
ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldEZyYWdtZW50
QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIg
bnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6
VUludGVnZXIgcGF0Y2hDb3VudCwgY29uc3QgY2xhc3MgQnVmZmVyKiBwYXRjaEluZGV4QnVmZmVy
LCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3Rh
bmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UsIGNvbnN0IGNsYXNzIEJ1ZmZlciog
YnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VTdHJpZGUp
OworCisgICAgdm9pZCBkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0
Y2hDb250cm9sUG9pbnRzLCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBh
dGNoQ291bnQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogY29udHJvbFBv
aW50SW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2Us
IGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUlu
dGVnZXIgaW5zdGFuY2VTdHJpZGUpOworCisgICAgdm9pZCBkcmF3UHJpbWl0aXZlcyhNVEw6OlBy
aW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6
VUludGVnZXIgdmVydGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUlu
dGVnZXIgYmFzZUluc3RhbmNlKTsKKworICAgIHZvaWQgZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1U
TDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwg
TVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVy
LCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNv
dW50LCBOUzo6SW50ZWdlciBiYXNlVmVydGV4LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKTsK
KworICAgIHZvaWQgcmVzZXQoKTsKK307CisKK2NsYXNzIEluZGlyZWN0Q29tcHV0ZUNvbW1hbmQg
OiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ+Cit7CitwdWJs
aWM6CisgICAgdm9pZCBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRl
UGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSk7CisKKyAgICB2b2lkIHNldEtlcm5lbEJ1ZmZl
cihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJ
bnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgY29uY3VycmVudERpc3BhdGNoVGhyZWFkZ3JvdXBz
KE1UTDo6U2l6ZSB0aHJlYWRncm91cHNQZXJHcmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVh
ZGdyb3VwKTsKKworICAgIHZvaWQgY29uY3VycmVudERpc3BhdGNoVGhyZWFkcyhNVEw6OlNpemUg
dGhyZWFkc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworCisgICAg
dm9pZCBzZXRCYXJyaWVyKCk7CisKKyAgICB2b2lkIGNsZWFyQmFycmllcigpOworCisgICAgdm9p
ZCBzZXRJbWFnZWJsb2NrV2lkdGgoTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVp
Z2h0KTsKKworICAgIHZvaWQgcmVzZXQoKTsKKworICAgIHZvaWQgc2V0VGhyZWFkZ3JvdXBNZW1v
cnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAg
IHZvaWQgc2V0U3RhZ2VJblJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24pOworfTsKKworfQorCisv
LyBtZXRob2Q6IHNldFJlbmRlclBpcGVsaW5lU3RhdGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
SW5kaXJlY3RSZW5kZXJDb21tYW5kOjpzZXRSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6
UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0
ZV8pLCBwaXBlbGluZVN0YXRlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhCdWZmZXI6b2Zm
c2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5k
OjpzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJfb2Zmc2V0X2F0SW5k
ZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVu
dEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJl
bmRlckNvbW1hbmQ6OnNldEZyYWdtZW50QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIs
IE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRCdWZm
ZXJfb2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0
aG9kOiBkcmF3UGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpw
YXRjaEluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOnRlc3NlbGxh
dGlvbkZhY3RvckJ1ZmZlcjp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXQ6dGVzc2VsbGF0
aW9uRmFjdG9yQnVmZmVySW5zdGFuY2VTdHJpZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5k
aXJlY3RSZW5kZXJDb21tYW5kOjpkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRj
aENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVnZXIgcGF0
Y2hDb3VudCwgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdl
ciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6
OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSwgY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3UGF0Y2hlc19w
YXRjaFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zm
c2V0X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlX3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcl90
ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXRfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVySW5z
dGFuY2VTdHJpZGVfKSwgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIHBhdGNoU3RhcnQsIHBh
dGNoQ291bnQsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGluc3Rh
bmNlQ291bnQsIGJhc2VJbnN0YW5jZSwgYnVmZmVyLCBvZmZzZXQsIGluc3RhbmNlU3RyaWRlKTsK
K30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENvdW50
OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRl
eEJ1ZmZlcjpjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VJ
bnN0YW5jZTp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXI6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVy
T2Zmc2V0OnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3RhbmNlU3RyaWRlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6ZHJhd0luZGV4ZWRQYXRjaGVzKE5T
OjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRlZ2VyIHBhdGNo
U3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBNVEw6OkJ1ZmZlciogcGF0Y2hJ
bmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IE1U
TDo6QnVmZmVyKiBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvbnRyb2xQ
b2ludEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJ
bnRlZ2VyIGJhc2VJbnN0YW5jZSwgY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFBhdGNo
ZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZl
ck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9jb250cm9sUG9pbnRJbmRleEJ1ZmZlck9m
ZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJf
dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0X3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcklu
c3RhbmNlU3RyaWRlXyksIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBwYXRjaFN0YXJ0LCBw
YXRjaENvdW50LCBwYXRjaEluZGV4QnVmZmVyLCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb250
cm9sUG9pbnRJbmRleEJ1ZmZlciwgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGluc3Rh
bmNlQ291bnQsIGJhc2VJbnN0YW5jZSwgYnVmZmVyLCBvZmZzZXQsIGluc3RhbmNlU3RyaWRlKTsK
K30KKworLy8gbWV0aG9kOiBkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDpp
bnN0YW5jZUNvdW50OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVj
dFJlbmRlckNvbW1hbmQ6OmRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRp
dmVUeXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3Vu
dCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2Up
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGRyYXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50X2luc3RhbmNlQ291bnRfYmFz
ZUluc3RhbmNlXyksIHByaW1pdGl2ZVR5cGUsIHZlcnRleFN0YXJ0LCB2ZXJ0ZXhDb3VudCwgaW5z
dGFuY2VDb3VudCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFBy
aW1pdGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZz
ZXQ6aW5zdGFuY2VDb3VudDpiYXNlVmVydGV4OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQ6OmRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6
OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1U
TDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGV4QnVmZmVyLCBO
Uzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50
LCBOUzo6SW50ZWdlciBiYXNlVmVydGV4LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3
SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhC
dWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlVmVydGV4X2Jhc2VJbnN0YW5jZV8pLCBwcmlt
aXRpdmVUeXBlLCBpbmRleENvdW50LCBpbmRleFR5cGUsIGluZGV4QnVmZmVyLCBpbmRleEJ1ZmZl
ck9mZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZVZlcnRleCwgYmFzZUluc3RhbmNlKTsKK30KKwor
Ly8gbWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29t
bWFuZDo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChyZXNldCkpOworfQorCisvLyBtZXRob2Q6IHNldENvbXB1dGVQaXBlbGlu
ZVN0YXRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnNl
dENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBp
cGVsaW5lU3RhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldENvbXB1dGVQaXBlbGluZVN0YXRlXyksIHBpcGVsaW5lU3RhdGUpOwor
fQorCisvLyBtZXRob2Q6IHNldEtlcm5lbEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRLZXJuZWxCdWZmZXIoY29u
c3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2Vy
IGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRLZXJuZWxCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVyLCBvZmZzZXQs
IGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRncm91cHM6
dGhyZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29t
cHV0ZUNvbW1hbmQ6OmNvbmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3VwcyhNVEw6OlNpemUgdGhy
ZWFkZ3JvdXBzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29uY3Vy
cmVudERpc3BhdGNoVGhyZWFkZ3JvdXBzX3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCB0aHJlYWRn
cm91cHNQZXJHcmlkLCB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IGNv
bmN1cnJlbnREaXNwYXRjaFRocmVhZHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OmNvbmN1cnJlbnREaXNwYXRjaFRo
cmVhZHMoTVRMOjpTaXplIHRocmVhZHNQZXJHcmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVh
ZGdyb3VwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJlYWRncm91cF8p
LCB0aHJlYWRzUGVyR3JpZCwgdGhyZWFkc1BlclRocmVhZGdyb3VwKTsKK30KKworLy8gbWV0aG9k
OiBzZXRCYXJyaWVyCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29tbWFu
ZDo6c2V0QmFycmllcigpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEJhcnJpZXIpKTsKK30KKworLy8gbWV0aG9kOiBjbGVhckJhcnJp
ZXIKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpjbGVhckJh
cnJpZXIoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChjbGVhckJhcnJpZXIpKTsKK30KKworLy8gbWV0aG9kOiBzZXRJbWFnZWJsb2NrV2lk
dGg6aGVpZ2h0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6
OnNldEltYWdlYmxvY2tXaWR0aChOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWln
aHQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEltYWdlYmxvY2tXaWR0aF9oZWlnaHRfKSwgd2lkdGgsIGhlaWdodCk7Cit9CisKKy8v
IG1ldGhvZDogcmVzZXQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21t
YW5kOjpyZXNldCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGhyZWFkZ3JvdXBNZW1v
cnlMZW5ndGg6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVD
b21tYW5kOjpzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIgbGVuZ3RoLCBO
Uzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoX2F0SW5kZXhfKSwg
bGVuZ3RoLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RhZ2VJblJlZ2lvbjoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRTdGFnZUluUmVnaW9u
KE1UTDo6UmVnaW9uIHJlZ2lvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhZ2VJblJlZ2lvbl8pLCByZWdpb24pOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyMzgzNWQx
ZGI3OGFkODJkZjQ3NmQyNjBjMzJkYmQ5Y2JlODEzNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZS5ocHAKQEAgLTAsMCArMSwxNTcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTEZ1
bmN0aW9uSGFuZGxlLmhwcCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
LmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisjaW5jbHVkZSAiTVRMVmlzaWJsZUZ1
bmN0aW9uVGFibGUuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX09QVElPTlMoTlM6OlVJ
bnRlZ2VyLCBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZSkgeworICAgIEludGVyc2VjdGlv
bkZ1bmN0aW9uU2lnbmF0dXJlTm9uZSA9IDAsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWdu
YXR1cmVJbnN0YW5jaW5nID0gMSwKKyAgICBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZVRy
aWFuZ2xlRGF0YSA9IDIsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVXb3JsZFNw
YWNlRGF0YSA9IDQsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVJbnN0YW5jZU1v
dGlvbiA9IDgsCisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVQcmltaXRpdmVNb3Rp
b24gPSAxNiwKKyAgICBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZUV4dGVuZGVkTGltaXRz
ID0gMzIsCit9OworCitjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciA6
IHB1YmxpYyBOUzo6Q29weWluZzxJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4K
K3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURl
c2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2Ny
aXB0b3IoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb25Db3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnVuY3Rpb25Db3VudChOUzo6VUludGVn
ZXIgZnVuY3Rpb25Db3VudCk7Cit9OworCitjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBSZXNv
dXJjZT4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIq
IGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAg
IHZvaWQgc2V0QnVmZmVycyhjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6
OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgc2V0RnVu
Y3Rpb24oY29uc3QgY2xhc3MgRnVuY3Rpb25IYW5kbGUqIGZ1bmN0aW9uLCBOUzo6VUludGVnZXIg
aW5kZXgpOworCisgICAgdm9pZCBzZXRGdW5jdGlvbnMoY29uc3QgY2xhc3MgRnVuY3Rpb25IYW5k
bGUqIGZ1bmN0aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCBzZXRPcGFxdWVU
cmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWdu
YXR1cmUgc2lnbmF0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBzZXRPcGFx
dWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25T
aWduYXR1cmUgc2lnbmF0dXJlLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCBzZXRWaXNp
YmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rp
b25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgc2V0VmlzaWJs
ZUZ1bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlv
blRhYmxlc1tdLCBOUzo6UmFuZ2UgYnVmZmVyUmFuZ2UpOworfTsKKworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
RGVzY3JpcHRvciogTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJ
TkUgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogTVRMOjpJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4oKTsK
K30KKworLy8gc3RhdGljIG1ldGhvZDogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0
b3IKK19NVExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3Iq
IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OmludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRF
X0NMUyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciksIF9NVExfUFJJVkFU
RV9TRUwoaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpKTsKK30KKworLy8gcHJv
cGVydHk6IGZ1bmN0aW9uQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yOjpmdW5jdGlvbkNvdW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZnVuY3Rpb25Db3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OnNldEZ1bmN0aW9uQ291bnQoTlM6
OlVJbnRlZ2VyIGZ1bmN0aW9uQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uQ291bnRfKSwgZnVuY3Rpb25Db3Vu
dCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6OnNldEJ1ZmZlcihjb25zdCBN
VEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5k
ZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOwor
fQorCisvLyBtZXRob2Q6IHNldEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTo6c2V0QnVmZmVycyhjb25zdCBN
VEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6
UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfKSwgYnVmZmVycywgb2Zm
c2V0cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZ1bmN0aW9uOmF0SW5kZXg6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb24o
Y29uc3QgTVRMOjpGdW5jdGlvbkhhbmRsZSogZnVuY3Rpb24sIE5TOjpVSW50ZWdlciBpbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RnVuY3Rpb25fYXRJbmRleF8pLCBmdW5jdGlvbiwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6
IHNldEZ1bmN0aW9uczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb25zKGNvbnN0IE1UTDo6RnVuY3Rpb25IYW5kbGUq
IGZ1bmN0aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uc193aXRoUmFuZ2VfKSwg
ZnVuY3Rpb25zLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0T3BhcXVlVHJpYW5nbGVJbnRl
cnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOjpzZXRPcGFxdWVUcmlhbmdsZUludGVyc2Vj
dGlvbkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmUgc2lnbmF0dXJl
LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rp
b25XaXRoU2lnbmF0dXJlX2F0SW5kZXhfKSwgc2lnbmF0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmU6
d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGU6OnNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb24oTVRMOjpJbnRlcnNlY3Rp
b25GdW5jdGlvblNpZ25hdHVyZSBzaWduYXR1cmUsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3BhcXVl
VHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmVfd2l0aFJhbmdlXyksIHNp
Z25hdHVyZSwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZpc2libGVGdW5jdGlvblRhYmxl
OmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZTo6c2V0VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rp
b25UYWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaXNp
YmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIGZ1bmN0aW9uVGFibGUsIGJ1ZmZlcklu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZl
clJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6
OnNldFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxl
KiBmdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgYnVmZmVyUmFuZ2UpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZpc2libGVGdW5j
dGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgZnVuY3Rpb25UYWJsZXMsIGJ1ZmZlclJhbmdl
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExMaWJyYXJ5LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExM
aWJyYXJ5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTUyNjdhMTZmYzE5ZDQxOTYxYWVmZjljMDlmYWM3ZDAx
MDk3MmM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTExpYnJhcnkuaHBwCkBAIC0wLDAgKzEsNjIxIEBACisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExMaWJyYXJ5Lmhw
cAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisj
aW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaHBwPgorCisjaW5jbHVkZSAiTVRMQXJndW1lbnQuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0
aW9uRGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMTGlicmFyeS5ocHAiCisjaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwg
UGF0Y2hUeXBlKSB7CisgICAgUGF0Y2hUeXBlTm9uZSA9IDAsCisgICAgUGF0Y2hUeXBlVHJpYW5n
bGUgPSAxLAorICAgIFBhdGNoVHlwZVF1YWQgPSAyLAorfTsKKworY2xhc3MgVmVydGV4QXR0cmli
dXRlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxWZXJ0ZXhBdHRyaWJ1dGU+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIFZlcnRleEF0dHJpYnV0ZSogYWxsb2MoKTsKKworICAgIGNsYXNz
IFZlcnRleEF0dHJpYnV0ZSogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAg
ICAgICAgICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZUluZGV4KCkgY29uc3Q7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGVUeXBlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAg
ICAgICAgICAgICAgICBhY3RpdmUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhdGNoRGF0YSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGF0Y2hDb250cm9sUG9pbnREYXRhKCkgY29uc3Q7Cit9OworCitjbGFzcyBBdHRy
aWJ1dGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEF0dHJpYnV0ZT4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgQXR0cmlidXRlKiBhbGxvYygpOworCisgICAgY2xhc3MgQXR0cmlidXRl
KiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgbmFtZSgpIGNv
bnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgYXR0cmlidXRlSW5kZXgoKSBjb25z
dDsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgIGF0dHJpYnV0ZVR5cGUoKSBjb25zdDsK
KworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSgpIGNvbnN0OworCisgICAgYm9v
bCAgICAgICAgICAgICAgICAgICAgcGF0Y2hEYXRhKCkgY29uc3Q7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICBwYXRjaENvbnRyb2xQb2ludERhdGEoKSBjb25zdDsKK307CisKK19NVExf
RU5VTShOUzo6VUludGVnZXIsIEZ1bmN0aW9uVHlwZSkgeworICAgIEZ1bmN0aW9uVHlwZVZlcnRl
eCA9IDEsCisgICAgRnVuY3Rpb25UeXBlRnJhZ21lbnQgPSAyLAorICAgIEZ1bmN0aW9uVHlwZUtl
cm5lbCA9IDMsCisgICAgRnVuY3Rpb25UeXBlVmlzaWJsZSA9IDUsCisgICAgRnVuY3Rpb25UeXBl
SW50ZXJzZWN0aW9uID0gNiwKK307CisKK2NsYXNzIEZ1bmN0aW9uQ29uc3RhbnQgOiBwdWJsaWMg
TlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uQ29uc3RhbnQ+Cit7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnQqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBGdW5jdGlvbkNv
bnN0YW50KiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAg
ICAgIG5hbWUoKSBjb25zdDsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgICAgICB0
eXBlKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgaW5kZXgo
KSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCgp
IGNvbnN0OworfTsKKwordXNpbmcgQXV0b3JlbGVhc2VkQXJndW1lbnQgPSBjbGFzcyBBcmd1bWVu
dCo7CisKK2NsYXNzIEZ1bmN0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbj4K
K3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJl
bCk7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAg
TVRMOjpGdW5jdGlvblR5cGUgICAgICBmdW5jdGlvblR5cGUoKSBjb25zdDsKKworICAgIE1UTDo6
UGF0Y2hUeXBlICAgICAgICAgcGF0Y2hUeXBlKCkgY29uc3Q7CisKKyAgICBOUzo6SW50ZWdlciAg
ICAgICAgICAgIHBhdGNoQ29udHJvbFBvaW50Q291bnQoKSBjb25zdDsKKworICAgIE5TOjpBcnJh
eSogICAgICAgICAgICAgdmVydGV4QXR0cmlidXRlcygpIGNvbnN0OworCisgICAgTlM6OkFycmF5
KiAgICAgICAgICAgICBzdGFnZUlucHV0QXR0cmlidXRlcygpIGNvbnN0OworCisgICAgTlM6OlN0
cmluZyogICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAgICBOUzo6RGljdGlvbmFyeSogICAg
ICAgIGZ1bmN0aW9uQ29uc3RhbnRzRGljdGlvbmFyeSgpIGNvbnN0OworCisgICAgY2xhc3MgQXJn
dW1lbnRFbmNvZGVyKiBuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4
KTsKKworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlciogbmV3QXJndW1lbnRFbmNvZGVyKE5TOjpV
SW50ZWdlciBidWZmZXJJbmRleCwgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRBcmd1bWVudCogcmVm
bGVjdGlvbik7CisKKyAgICBNVEw6OkZ1bmN0aW9uT3B0aW9ucyAgIG9wdGlvbnMoKSBjb25zdDsK
K307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIExhbmd1YWdlVmVyc2lvbikgeworICAgIExh
bmd1YWdlVmVyc2lvbjFfMCA9IDY1NTM2LAorICAgIExhbmd1YWdlVmVyc2lvbjFfMSA9IDY1NTM3
LAorICAgIExhbmd1YWdlVmVyc2lvbjFfMiA9IDY1NTM4LAorICAgIExhbmd1YWdlVmVyc2lvbjJf
MCA9IDEzMTA3MiwKKyAgICBMYW5ndWFnZVZlcnNpb24yXzEgPSAxMzEwNzMsCisgICAgTGFuZ3Vh
Z2VWZXJzaW9uMl8yID0gMTMxMDc0LAorICAgIExhbmd1YWdlVmVyc2lvbjJfMyA9IDEzMTA3NSwK
KyAgICBMYW5ndWFnZVZlcnNpb24yXzQgPSAxMzEwNzYsCit9OworCitfTVRMX0VOVU0oTlM6Oklu
dGVnZXIsIExpYnJhcnlUeXBlKSB7CisgICAgTGlicmFyeVR5cGVFeGVjdXRhYmxlID0gMCwKKyAg
ICBMaWJyYXJ5VHlwZUR5bmFtaWMgPSAxLAorfTsKKworY2xhc3MgQ29tcGlsZU9wdGlvbnMgOiBw
dWJsaWMgTlM6OkNvcHlpbmc8Q29tcGlsZU9wdGlvbnM+Cit7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNsYXNzIENvbXBpbGVPcHRpb25zKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcGlsZU9wdGlv
bnMqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6RGljdGlvbmFyeSogICAgICAgICAgICAgIHBy
ZXByb2Nlc3Nvck1hY3JvcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0UHJlcHJvY2Vzc29yTWFjcm9zKGNvbnN0IE5TOjpEaWN0aW9uYXJ5KiBwcmVwcm9jZXNz
b3JNYWNyb3MpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBmYXN0TWF0aEVu
YWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZhc3RN
YXRoRW5hYmxlZChib29sIGZhc3RNYXRoRW5hYmxlZCk7CisKKyAgICBNVEw6Okxhbmd1YWdlVmVy
c2lvbiAgICAgICAgIGxhbmd1YWdlVmVyc2lvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0TGFuZ3VhZ2VWZXJzaW9uKE1UTDo6TGFuZ3VhZ2VWZXJzaW9uIGxh
bmd1YWdlVmVyc2lvbik7CisKKyAgICBNVEw6OkxpYnJhcnlUeXBlICAgICAgICAgICAgIGxpYnJh
cnlUeXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMaWJy
YXJ5VHlwZShNVEw6OkxpYnJhcnlUeXBlIGxpYnJhcnlUeXBlKTsKKworICAgIE5TOjpTdHJpbmcq
ICAgICAgICAgICAgICAgICAgaW5zdGFsbE5hbWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEluc3RhbGxOYW1lKGNvbnN0IE5TOjpTdHJpbmcqIGluc3RhbGxO
YW1lKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgbGlicmFyaWVzKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMaWJyYXJpZXMoY29uc3Qg
TlM6OkFycmF5KiBsaWJyYXJpZXMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmVzZXJ2ZUludmFyaWFuY2UoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFByZXNlcnZlSW52YXJpYW5jZShib29sIHByZXNlcnZlSW52YXJpYW5jZSk7Cit9
OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBMaWJyYXJ5RXJyb3IpIHsKKyAgICBMaWJyYXJ5
RXJyb3JVbnN1cHBvcnRlZCA9IDEsCisgICAgTGlicmFyeUVycm9yQ29tcGlsZUZhaWx1cmUgPSAz
LAorICAgIExpYnJhcnlFcnJvckNvbXBpbGVXYXJuaW5nID0gNCwKKyAgICBMaWJyYXJ5RXJyb3JG
dW5jdGlvbk5vdEZvdW5kID0gNSwKKyAgICBMaWJyYXJ5RXJyb3JGaWxlTm90Rm91bmQgPSA2LAor
fTsKKworY2xhc3MgTGlicmFyeSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8TGlicmFyeT4KK3sK
K3B1YmxpYzoKKyAgICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJp
bmcqIHBGdW5jdGlvbk5hbWUsIGNvbnN0IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIHBD
b25zdGFudFZhbHVlcywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rp
b24sIE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgbmV3RnVuY3Rpb24oY29uc3QgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBw
RGVzY3JpcHRvciwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb24oY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9u
RnVuY3Rpb25EZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lk
KEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5k
bGVyKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNz
IERldmljZSogICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogIG5ld0Z1
bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcqIGZ1bmN0aW9uTmFtZSk7CisKKyAgICBjbGFzcyBGdW5j
dGlvbiogIG5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUsIGNvbnN0IGNsYXNzIEZ1
bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFsdWVzLCBOUzo6RXJyb3IqKiBlcnJvcik7
CisKKyAgICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcqIG5h
bWUsIGNvbnN0IGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFsdWVzLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSk7CisK
KyAgICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShNVEw6OkZ1bmN0
aW9uKiwgTlM6OkVycm9yKikpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICBuZXdGdW5jdGlvbihj
b25zdCBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVy
cm9yKTsKKworICAgIHZvaWQgICAgICAgICAgICAgbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb24oY29u
c3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSk7CisKKyAg
ICBjbGFzcyBGdW5jdGlvbiogIG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKGNvbnN0IGNsYXNzIElu
dGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJy
b3IpOworCisgICAgTlM6OkFycmF5KiAgICAgICBmdW5jdGlvbk5hbWVzKCkgY29uc3Q7CisKKyAg
ICBNVEw6OkxpYnJhcnlUeXBlIHR5cGUoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAg
aW5zdGFsbE5hbWUoKSBjb25zdDsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MK
K19NVExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRlKiBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6
YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlZlcnRleEF0dHJp
YnV0ZT4oX01UTF9QUklWQVRFX0NMUyhNVExWZXJ0ZXhBdHRyaWJ1dGUpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0ZSogTVRMOjpWZXJ0ZXhB
dHRyaWJ1dGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VmVy
dGV4QXR0cmlidXRlPigpOworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6
OlN0cmluZyogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJpYnV0ZUluZGV4CitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OmF0dHJpYnV0ZUluZGV4KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYXR0cmlidXRlSW5kZXgpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJp
YnV0ZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6
OmF0dHJpYnV0ZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0cmlidXRlVHlwZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogYWN0aXZlCitfTVRMX0lOTElORSBib29sIE1UTDo6VmVydGV4QXR0
cmlidXRlOjphY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNBY3RpdmUpKTsKK30KKworLy8gcHJvcGVy
dHk6IHBhdGNoRGF0YQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6cGF0
Y2hEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzUGF0Y2hEYXRhKSk7Cit9CisKKy8vIHByb3BlcnR5OiBw
YXRjaENvbnRyb2xQb2ludERhdGEKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpWZXJ0ZXhBdHRyaWJ1
dGU6OnBhdGNoQ29udHJvbFBvaW50RGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1BhdGNoQ29udHJvbFBv
aW50RGF0YSkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpBdHRyaWJ1dGUqIE1UTDo6QXR0cmlidXRlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmFsbG9jPE1UTDo6QXR0cmlidXRlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEF0dHJpYnV0
ZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlKiBN
VEw6OkF0dHJpYnV0ZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpBdHRyaWJ1dGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6
U3RyaW5nKiBNVEw6OkF0dHJpYnV0ZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkp
OworfQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlSW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OkF0dHJpYnV0ZTo6YXR0cmlidXRlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChhdHRyaWJ1dGVJbmRleCkpOworfQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlVHlwZQorX01U
TF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OkF0dHJpYnV0ZTo6YXR0cmlidXRlVHlwZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhp
cywgX01UTF9QUklWQVRFX1NFTChhdHRyaWJ1dGVUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBh
Y3RpdmUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpBdHRyaWJ1dGU6OmFjdGl2ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChpc0FjdGl2ZSkpOworfQorCisvLyBwcm9wZXJ0eTogcGF0Y2hEYXRhCitfTVRMX0lOTElO
RSBib29sIE1UTDo6QXR0cmlidXRlOjpwYXRjaERhdGEoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNQYXRjaERh
dGEpKTsKK30KKworLy8gcHJvcGVydHk6IHBhdGNoQ29udHJvbFBvaW50RGF0YQorX01UTF9JTkxJ
TkUgYm9vbCBNVEw6OkF0dHJpYnV0ZTo6cGF0Y2hDb250cm9sUG9pbnREYXRhKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGlzUGF0Y2hDb250cm9sUG9pbnREYXRhKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQqIE1UTDo6RnVuY3Rpb25Db25z
dGFudDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0
aW9uQ29uc3RhbnQ+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25Db25zdGFudCkpOworfQor
CisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25Db25zdGFudCogTVRM
OjpGdW5jdGlvbkNvbnN0YW50Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5p
dDxNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRM
X0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ6Om5hbWUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5MSU5F
IE1UTDo6RGF0YVR5cGUgTVRMOjpGdW5jdGlvbkNvbnN0YW50Ojp0eXBlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4CitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpGdW5jdGlvbkNvbnN0YW50OjppbmRleCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGluZGV4KSk7Cit9CisKKy8vIHByb3BlcnR5OiByZXF1aXJlZAorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ6OnJlcXVpcmVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlcXVp
cmVkKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyog
TVRMOjpGdW5jdGlvbjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmlu
ZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQor
X01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6RnVuY3Rpb246OmRldmljZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25UeXBlCitf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uVHlwZSBNVEw6OkZ1bmN0aW9uOjpmdW5jdGlvblR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25U
eXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uVHlwZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogcGF0Y2hUeXBlCitfTVRMX0lOTElORSBNVEw6OlBhdGNoVHlwZSBNVEw6OkZ1bmN0aW9u
OjpwYXRjaFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UGF0Y2hUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhdGNoVHlwZSkpOworfQorCisv
LyBwcm9wZXJ0eTogcGF0Y2hDb250cm9sUG9pbnRDb3VudAorX01UTF9JTkxJTkUgTlM6OkludGVn
ZXIgTVRMOjpGdW5jdGlvbjo6cGF0Y2hDb250cm9sUG9pbnRDb3VudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwocGF0Y2hDb250cm9sUG9pbnRDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4
QXR0cmlidXRlcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uOjp2ZXJ0ZXhB
dHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleEF0dHJpYnV0ZXMpKTsKK30KKwor
Ly8gcHJvcGVydHk6IHN0YWdlSW5wdXRBdHRyaWJ1dGVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkq
IE1UTDo6RnVuY3Rpb246OnN0YWdlSW5wdXRBdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHN0YWdlSW5wdXRBdHRyaWJ1dGVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvbkNvbnN0YW50c0RpY3Rpb25hcnkK
K19NVExfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBNVEw6OkZ1bmN0aW9uOjpmdW5jdGlvbkNvbnN0
YW50c0RpY3Rpb25hcnkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpEaWN0aW9uYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkNvbnN0YW50
c0RpY3Rpb25hcnkpKTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVm
ZmVySW5kZXg6CitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RW5jb2RlciogTVRMOjpGdW5jdGlv
bjo6bmV3QXJndW1lbnRFbmNvZGVyKE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50RW5jb2Rlcio+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4XyksIGJ1ZmZl
ckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5k
ZXg6cmVmbGVjdGlvbjoKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRFbmNvZGVyKiBNVEw6OkZ1
bmN0aW9uOjpuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4LCBjb25z
dCBNVEw6OkF1dG9yZWxlYXNlZEFyZ3VtZW50KiByZWZsZWN0aW9uKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRFbmNvZGVyKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXhfcmVmbGVjdGlvbl8pLCBi
dWZmZXJJbmRleCwgcmVmbGVjdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBvcHRpb25zCitfTVRM
X0lOTElORSBNVEw6OkZ1bmN0aW9uT3B0aW9ucyBNVEw6OkZ1bmN0aW9uOjpvcHRpb25zKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uT3B0aW9u
cz4odGhpcywgX01UTF9QUklWQVRFX1NFTChvcHRpb25zKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvbXBpbGVPcHRpb25zKiBNVEw6OkNvbXBpbGVP
cHRpb25zOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29t
cGlsZU9wdGlvbnM+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcGlsZU9wdGlvbnMpKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXBpbGVPcHRpb25zKiBNVEw6OkNv
bXBpbGVPcHRpb25zOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6
OkNvbXBpbGVPcHRpb25zPigpOworfQorCisvLyBwcm9wZXJ0eTogcHJlcHJvY2Vzc29yTWFjcm9z
CitfTVRMX0lOTElORSBOUzo6RGljdGlvbmFyeSogTVRMOjpDb21waWxlT3B0aW9uczo6cHJlcHJv
Y2Vzc29yTWFjcm9zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6RGljdGlvbmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlcHJvY2Vzc29yTWFjcm9z
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9uczo6c2V0UHJlcHJv
Y2Vzc29yTWFjcm9zKGNvbnN0IE5TOjpEaWN0aW9uYXJ5KiBwcmVwcm9jZXNzb3JNYWNyb3MpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFByZXByb2Nlc3Nvck1hY3Jvc18pLCBwcmVwcm9jZXNzb3JNYWNyb3MpOworfQorCisvLyBwcm9w
ZXJ0eTogZmFzdE1hdGhFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcGlsZU9wdGlv
bnM6OmZhc3RNYXRoRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChmYXN0TWF0aEVuYWJsZWQpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXBpbGVPcHRpb25zOjpzZXRGYXN0TWF0aEVuYWJs
ZWQoYm9vbCBmYXN0TWF0aEVuYWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZhc3RNYXRoRW5hYmxlZF8pLCBmYXN0TWF0aEVu
YWJsZWQpOworfQorCisvLyBwcm9wZXJ0eTogbGFuZ3VhZ2VWZXJzaW9uCitfTVRMX0lOTElORSBN
VEw6Okxhbmd1YWdlVmVyc2lvbiBNVEw6OkNvbXBpbGVPcHRpb25zOjpsYW5ndWFnZVZlcnNpb24o
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGFuZ3VhZ2VW
ZXJzaW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhbmd1YWdlVmVyc2lvbikpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcGlsZU9wdGlvbnM6OnNldExhbmd1YWdlVmVyc2lvbihN
VEw6Okxhbmd1YWdlVmVyc2lvbiBsYW5ndWFnZVZlcnNpb24pCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhbmd1YWdlVmVyc2lvbl8p
LCBsYW5ndWFnZVZlcnNpb24pOworfQorCisvLyBwcm9wZXJ0eTogbGlicmFyeVR5cGUKK19NVExf
SU5MSU5FIE1UTDo6TGlicmFyeVR5cGUgTVRMOjpDb21waWxlT3B0aW9uczo6bGlicmFyeVR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlicmFyeVR5
cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGlicmFyeVR5cGUpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNvbXBpbGVPcHRpb25zOjpzZXRMaWJyYXJ5VHlwZShNVEw6OkxpYnJhcnlU
eXBlIGxpYnJhcnlUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRMaWJyYXJ5VHlwZV8pLCBsaWJyYXJ5VHlwZSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpbnN0YWxsTmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21w
aWxlT3B0aW9uczo6aW5zdGFsbE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbGxOYW1l
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9uczo6c2V0SW5zdGFs
bE5hbWUoY29uc3QgTlM6OlN0cmluZyogaW5zdGFsbE5hbWUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbGxOYW1lXyksIGlu
c3RhbGxOYW1lKTsKK30KKworLy8gcHJvcGVydHk6IGxpYnJhcmllcworX01UTF9JTkxJTkUgTlM6
OkFycmF5KiBNVEw6OkNvbXBpbGVPcHRpb25zOjpsaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9u
czo6c2V0TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogbGlicmFyaWVzKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMaWJyYXJpZXNf
KSwgbGlicmFyaWVzKTsKK30KKworLy8gcHJvcGVydHk6IHByZXNlcnZlSW52YXJpYW5jZQorX01U
TF9JTkxJTkUgYm9vbCBNVEw6OkNvbXBpbGVPcHRpb25zOjpwcmVzZXJ2ZUludmFyaWFuY2UoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwocHJlc2VydmVJbnZhcmlhbmNlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21waWxlT3B0aW9uczo6c2V0UHJlc2VydmVJbnZhcmlhbmNlKGJvb2wgcHJlc2VydmVJ
bnZhcmlhbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRQcmVzZXJ2ZUludmFyaWFuY2VfKSwgcHJlc2VydmVJbnZhcmlhbmNlKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IE5T
OjpTdHJpbmcqIHBGdW5jdGlvbk5hbWUsIGNvbnN0IEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIHBD
b25zdGFudFZhbHVlcywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rp
b24sIE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxv
Y2sgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uICogcEZ1bmN0aW9uLCBOUzo6RXJyb3IgKiBw
RXJyb3IpPiBibG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAg
ICBuZXdGdW5jdGlvbihwRnVuY3Rpb25OYW1lLCBwQ29uc3RhbnRWYWx1ZXMsIF4oRnVuY3Rpb24q
IHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihw
RnVuY3Rpb24sIHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFy
eTo6bmV3RnVuY3Rpb24oY29uc3QgRnVuY3Rpb25EZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29u
c3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVy
cm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sgc3RkOjpmdW5jdGlvbjx2
b2lkKEZ1bmN0aW9uICogcEZ1bmN0aW9uLCBOUzo6RXJyb3IgKiBwRXJyb3IpPiBibG9ja0NvbXBs
ZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdGdW5jdGlvbihwRGVz
Y3JpcHRvciwgXihGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9j
a0NvbXBsZXRpb25IYW5kbGVyKHBGdW5jdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpMaWJyYXJ5OjpuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbihjb25zdCBJbnRl
cnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoRnVuY3Rpb24qIHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpPiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb24g
KiBwRnVuY3Rpb24sIE5TOjpFcnJvciAqIHBFcnJvcik+IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIg
PSBjb21wbGV0aW9uSGFuZGxlcjsKKworICAgIG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKHBEZXNj
cmlwdG9yLCBeKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2Nr
Q29tcGxldGlvbkhhbmRsZXIocEZ1bmN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKworLy8gcHJvcGVy
dHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkxpYnJhcnk6OmxhYmVsKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
TGlicmFyeTo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxh
YmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2Uq
IE1UTDo6TGlicmFyeTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9
CisKKy8vIG1ldGhvZDogbmV3RnVuY3Rpb25XaXRoTmFtZToKK19NVExfSU5MSU5FIE1UTDo6RnVu
Y3Rpb24qIE1UTDo6TGlicmFyeTo6bmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0cmluZyogZnVuY3Rp
b25OYW1lKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24q
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Z1bmN0aW9uV2l0aE5hbWVfKSwgZnVuY3Rpb25O
YW1lKTsKK30KKworLy8gbWV0aG9kOiBuZXdGdW5jdGlvbldpdGhOYW1lOmNvbnN0YW50VmFsdWVz
OmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpMaWJyYXJ5OjpuZXdGdW5j
dGlvbihjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRW
YWx1ZXMqIGNvbnN0YW50VmFsdWVzLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuZXdGdW5jdGlvbldpdGhOYW1lX2NvbnN0YW50VmFsdWVzX2Vycm9yXyksIG5hbWUsIGNvbnN0
YW50VmFsdWVzLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3RnVuY3Rpb25XaXRoTmFtZTpj
b25zdGFudFZhbHVlczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpM
aWJyYXJ5OjpuZXdGdW5jdGlvbihjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBNVEw6OkZ1
bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIGNvbnN0YW50VmFsdWVzLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVuY3Rpb25XaXRoTmFtZV9j
b25zdGFudFZhbHVlc19jb21wbGV0aW9uSGFuZGxlcl8pLCBuYW1lLCBjb25zdGFudFZhbHVlcywg
Y29tcGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0Z1bmN0aW9uV2l0aERlc2Ny
aXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6
bmV3RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIHZv
aWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpGdW5jdGlvbiosIE5TOjpFcnJvciopKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdG
dW5jdGlvbldpdGhEZXNjcmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXyksIGRlc2NyaXB0b3IsIGNv
bXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdGdW5jdGlvbldpdGhEZXNjcmlw
dG9yOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpMaWJyYXJ5OjpuZXdG
dW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVy
cm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5j
dGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9l
cnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3SW50ZXJzZWN0
aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpMaWJyYXJ5OjpuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbihjb25zdCBNVEw6Oklu
dGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShNVEw6OkZ1bmN0aW9uKiwgTlM6OkVycm9yKikpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0ludGVyc2VjdGlvbkZ1
bmN0aW9uV2l0aERlc2NyaXB0b3JfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgY29t
cGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9u
V2l0aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6Okxp
YnJhcnk6Om5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVu
Y3Rpb25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRl
c2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uTmFtZXMKK19NVExf
SU5MSU5FIE5TOjpBcnJheSogTVRMOjpMaWJyYXJ5OjpmdW5jdGlvbk5hbWVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGZ1bmN0aW9uTmFtZXMpKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExf
SU5MSU5FIE1UTDo6TGlicmFyeVR5cGUgTVRMOjpMaWJyYXJ5Ojp0eXBlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnlUeXBlPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbGxOYW1lCitfTVRM
X0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkxpYnJhcnk6Omluc3RhbGxOYW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChpbnN0YWxsTmFtZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlua2VkRnVuY3Rpb25zLmhwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NjMxOWE1YTk0MWJmZDgzODdhNjI3NzYxMDg2ZWM5NmMyNjBlZWNmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1
bmN0aW9ucy5ocHAKQEAgLTAsMCArMSwxMTUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2lu
Y2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
LmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgTGlua2VkRnVuY3Rpb25zIDogcHVibGlj
IE5TOjpDb3B5aW5nPExpbmtlZEZ1bmN0aW9ucz4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xh
c3MgTGlua2VkRnVuY3Rpb25zKiBhbGxvYygpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25z
KiAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogbGlu
a2VkRnVuY3Rpb25zKCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGdW5j
dGlvbnMoY29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbnMpOworCisgICAgTlM6OkFycmF5KiAgICAg
ICAgICAgICAgICAgICAgYmluYXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0QmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogYmlu
YXJ5RnVuY3Rpb25zKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgIGdyb3Vw
cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEdyb3Vwcyhj
b25zdCBOUzo6QXJyYXkqIGdyb3Vwcyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAg
ICAgICBwcml2YXRlRnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0UHJpdmF0ZUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIHByaXZhdGVGdW5j
dGlvbnMpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUg
TVRMOjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6TGlua2VkRnVuY3Rpb25zPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTExpbmtlZEZ1bmN0aW9ucykpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpMaW5rZWRGdW5jdGlvbnM+
KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGxpbmtlZEZ1bmN0aW9ucworX01UTF9JTkxJTkUg
TVRMOjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpsaW5rZWRGdW5jdGlv
bnMoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlua2VkRnVuY3Rp
b25zKj4oX01UTF9QUklWQVRFX0NMUyhNVExMaW5rZWRGdW5jdGlvbnMpLCBfTVRMX1BSSVZBVEVf
U0VMKGxpbmtlZEZ1bmN0aW9ucykpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25zCitfTVRM
X0lOTElORSBOUzo6QXJyYXkqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpmdW5jdGlvbnMoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpM
aW5rZWRGdW5jdGlvbnM6OnNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9ucykK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RnVuY3Rpb25zXyksIGZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlGdW5j
dGlvbnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpMaW5rZWRGdW5jdGlvbnM6OmJpbmFy
eUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChiaW5hcnlGdW5jdGlvbnMpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6c2V0QmluYXJ5RnVuY3Rpb25z
KGNvbnN0IE5TOjpBcnJheSogYmluYXJ5RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCaW5hcnlGdW5jdGlvbnNfKSwg
YmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IGdyb3VwcworX01UTF9JTkxJTkUg
TlM6OkFycmF5KiBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6Z3JvdXBzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGdyb3VwcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlua2VkRnVuY3Rpb25z
OjpzZXRHcm91cHMoY29uc3QgTlM6OkFycmF5KiBncm91cHMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEdyb3Vwc18pLCBncm91cHMp
OworfQorCisvLyBwcm9wZXJ0eTogcHJpdmF0ZUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6cHJpdmF0ZUZ1bmN0aW9ucygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChwcml2YXRlRnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpM
aW5rZWRGdW5jdGlvbnM6OnNldFByaXZhdGVGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiBwcml2
YXRlRnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRQcml2YXRlRnVuY3Rpb25zXyksIHByaXZhdGVGdW5jdGlvbnMpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBh
cmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA0MzdiNGM4Yzk3ZDE1MmRjYjYyYTAwMTJkNGVmNjU0OGJkNWE0N2YKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxS
ZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSw5NCBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUGFyYWxsZWxS
ZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVk
ZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNv
ZGVyLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQYXNzLmhwcCIKKworbmFtZXNwYWNlIE1UTAor
eworY2xhc3MgUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlciwgQ29tbWFuZEVuY29kZXI+Cit7Citw
dWJsaWM6CisgICAgY2xhc3MgUmVuZGVyQ29tbWFuZEVuY29kZXIqIHJlbmRlckNvbW1hbmRFbmNv
ZGVyKCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29sb3JTdG9yZUFj
dGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUludGVnZXIgY29sb3JBdHRh
Y2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRo
U3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbik7CisKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rp
b24gc3RvcmVBY3Rpb24pOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHNldENv
bG9yU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9u
T3B0aW9ucywgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0
b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFj
dGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zKTsKK307CisKK30KKworLy8gbWV0aG9kOiBy
ZW5kZXJDb21tYW5kRW5jb2RlcgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
ciogTVRMOjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpyZW5kZXJDb21tYW5kRW5jb2Rl
cigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJDb21tYW5k
RW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyQ29tbWFuZEVuY29kZXIpKTsK
K30KKworLy8gbWV0aG9kOiBzZXRDb2xvclN0b3JlQWN0aW9uOmF0SW5kZXg6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Q29sb3JTdG9yZUFj
dGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUludGVnZXIgY29sb3JBdHRh
Y2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldENvbG9yU3RvcmVBY3Rpb25fYXRJbmRleF8pLCBzdG9yZUFjdGlvbiwg
Y29sb3JBdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoU3RvcmVBY3Rp
b246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
c2V0RGVwdGhTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0
aFN0b3JlQWN0aW9uXyksIHN0b3JlQWN0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzZXRTdGVuY2ls
U3RvcmVBY3Rpb246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6c2V0U3RlbmNpbFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rp
b24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFN0ZW5jaWxTdG9yZUFjdGlvbl8pLCBzdG9yZUFjdGlvbik7Cit9CisKKy8vIG1ldGhv
ZDogc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnM6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRDb2xvclN0b3JlQWN0aW9uT3B0
aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMsIE5TOjpVSW50
ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnNfYXRJ
bmRleF8pLCBzdG9yZUFjdGlvbk9wdGlvbnMsIGNvbG9yQXR0YWNobWVudEluZGV4KTsKK30KKwor
Ly8gbWV0aG9kOiBzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0b3JlQWN0aW9uT3B0
aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRo
U3RvcmVBY3Rpb25PcHRpb25zXyksIHN0b3JlQWN0aW9uT3B0aW9ucyk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQ
YXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25z
KE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFN0
b3JlQWN0aW9uT3B0aW9uc18pLCBzdG9yZUFjdGlvbk9wdGlvbnMpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBpcGVsaW5lLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXBlbGluZS5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmEzYzk0NzczOTZhZDdjMzE2ZDZiNmNkYmVmMmEyMDhjNGY5ODc4OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXBlbGlu
ZS5ocHAKQEAgLTAsMCArMSwxMDkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFBpcGVsaW5lLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJp
dmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5j
bHVkZSAiTVRMUGlwZWxpbmUuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6
OlVJbnRlZ2VyLCBNdXRhYmlsaXR5KSB7CisgICAgTXV0YWJpbGl0eURlZmF1bHQgPSAwLAorICAg
IE11dGFiaWxpdHlNdXRhYmxlID0gMSwKKyAgICBNdXRhYmlsaXR5SW1tdXRhYmxlID0gMiwKK307
CisKK2NsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxQ
aXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFBp
cGVsaW5lQnVmZmVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFBpcGVsaW5lQnVm
ZmVyRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6TXV0YWJpbGl0eSAgICAg
ICAgICAgICAgICAgICAgICAgIG11dGFiaWxpdHkoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNdXRhYmlsaXR5KE1UTDo6TXV0YWJpbGl0eSBt
dXRhYmlsaXR5KTsKK307CisKK2NsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5IDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheT4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogICAg
ICAgIGluaXQoKTsKKworICAgIGNsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciogICAgICAg
ICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBQ
aXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4
KTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcjo6
YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlBpcGVsaW5lQnVm
ZmVyRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExQaXBlbGluZUJ1ZmZlckRlc2NyaXB0
b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVm
ZmVyRGVzY3JpcHRvciogTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9y
PigpOworfQorCisvLyBwcm9wZXJ0eTogbXV0YWJpbGl0eQorX01UTF9JTkxJTkUgTVRMOjpNdXRh
YmlsaXR5IE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yOjptdXRhYmlsaXR5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Ok11dGFiaWxpdHk+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobXV0YWJpbGl0eSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yOjpzZXRNdXRhYmlsaXR5KE1UTDo6TXV0YWJpbGl0
eSBtdXRhYmlsaXR5KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRNdXRhYmlsaXR5XyksIG11dGFiaWxpdHkpOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0
b3JBcnJheSogTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRv
ckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZl
ckRlc2NyaXB0b3JBcnJheSogTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpQaXBlbGluZUJ1ZmZlckRl
c2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3Jp
cHQ6CitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciogTVRMOjpQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBidWZmZXJJbmRl
eCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpcGVsaW5lQnVmZmVy
RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2Ny
aXB0XyksIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVk
U3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRv
ckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqIGJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2Ny
aXB0XyksIGJ1ZmZlciwgYnVmZmVySW5kZXgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBpeGVsRm9ybWF0LmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXhlbEZvcm1hdC5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjMyMGM4MjllYmEwNTIyN2M1Yzk0NTkzZjQ3YmJiNzZmMTEyNDFjZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQaXhlbEZvcm1hdC5o
cHAKQEAgLTAsMCArMSwxNzMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFBpeGVsRm9ybWF0LmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJp
dmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1l
c3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQaXhlbEZvcm1hdCkgeworICAg
IFBpeGVsRm9ybWF0SW52YWxpZCA9IDAsCisgICAgUGl4ZWxGb3JtYXRBOFVub3JtID0gMSwKKyAg
ICBQaXhlbEZvcm1hdFI4VW5vcm0gPSAxMCwKKyAgICBQaXhlbEZvcm1hdFI4VW5vcm1fc1JHQiA9
IDExLAorICAgIFBpeGVsRm9ybWF0UjhTbm9ybSA9IDEyLAorICAgIFBpeGVsRm9ybWF0UjhVaW50
ID0gMTMsCisgICAgUGl4ZWxGb3JtYXRSOFNpbnQgPSAxNCwKKyAgICBQaXhlbEZvcm1hdFIxNlVu
b3JtID0gMjAsCisgICAgUGl4ZWxGb3JtYXRSMTZTbm9ybSA9IDIyLAorICAgIFBpeGVsRm9ybWF0
UjE2VWludCA9IDIzLAorICAgIFBpeGVsRm9ybWF0UjE2U2ludCA9IDI0LAorICAgIFBpeGVsRm9y
bWF0UjE2RmxvYXQgPSAyNSwKKyAgICBQaXhlbEZvcm1hdFJHOFVub3JtID0gMzAsCisgICAgUGl4
ZWxGb3JtYXRSRzhVbm9ybV9zUkdCID0gMzEsCisgICAgUGl4ZWxGb3JtYXRSRzhTbm9ybSA9IDMy
LAorICAgIFBpeGVsRm9ybWF0Ukc4VWludCA9IDMzLAorICAgIFBpeGVsRm9ybWF0Ukc4U2ludCA9
IDM0LAorICAgIFBpeGVsRm9ybWF0QjVHNlI1VW5vcm0gPSA0MCwKKyAgICBQaXhlbEZvcm1hdEEx
QkdSNVVub3JtID0gNDEsCisgICAgUGl4ZWxGb3JtYXRBQkdSNFVub3JtID0gNDIsCisgICAgUGl4
ZWxGb3JtYXRCR1I1QTFVbm9ybSA9IDQzLAorICAgIFBpeGVsRm9ybWF0UjMyVWludCA9IDUzLAor
ICAgIFBpeGVsRm9ybWF0UjMyU2ludCA9IDU0LAorICAgIFBpeGVsRm9ybWF0UjMyRmxvYXQgPSA1
NSwKKyAgICBQaXhlbEZvcm1hdFJHMTZVbm9ybSA9IDYwLAorICAgIFBpeGVsRm9ybWF0UkcxNlNu
b3JtID0gNjIsCisgICAgUGl4ZWxGb3JtYXRSRzE2VWludCA9IDYzLAorICAgIFBpeGVsRm9ybWF0
UkcxNlNpbnQgPSA2NCwKKyAgICBQaXhlbEZvcm1hdFJHMTZGbG9hdCA9IDY1LAorICAgIFBpeGVs
Rm9ybWF0UkdCQThVbm9ybSA9IDcwLAorICAgIFBpeGVsRm9ybWF0UkdCQThVbm9ybV9zUkdCID0g
NzEsCisgICAgUGl4ZWxGb3JtYXRSR0JBOFNub3JtID0gNzIsCisgICAgUGl4ZWxGb3JtYXRSR0JB
OFVpbnQgPSA3MywKKyAgICBQaXhlbEZvcm1hdFJHQkE4U2ludCA9IDc0LAorICAgIFBpeGVsRm9y
bWF0QkdSQThVbm9ybSA9IDgwLAorICAgIFBpeGVsRm9ybWF0QkdSQThVbm9ybV9zUkdCID0gODEs
CisgICAgUGl4ZWxGb3JtYXRSR0IxMEEyVW5vcm0gPSA5MCwKKyAgICBQaXhlbEZvcm1hdFJHQjEw
QTJVaW50ID0gOTEsCisgICAgUGl4ZWxGb3JtYXRSRzExQjEwRmxvYXQgPSA5MiwKKyAgICBQaXhl
bEZvcm1hdFJHQjlFNUZsb2F0ID0gOTMsCisgICAgUGl4ZWxGb3JtYXRCR1IxMEEyVW5vcm0gPSA5
NCwKKyAgICBQaXhlbEZvcm1hdFJHMzJVaW50ID0gMTAzLAorICAgIFBpeGVsRm9ybWF0UkczMlNp
bnQgPSAxMDQsCisgICAgUGl4ZWxGb3JtYXRSRzMyRmxvYXQgPSAxMDUsCisgICAgUGl4ZWxGb3Jt
YXRSR0JBMTZVbm9ybSA9IDExMCwKKyAgICBQaXhlbEZvcm1hdFJHQkExNlNub3JtID0gMTEyLAor
ICAgIFBpeGVsRm9ybWF0UkdCQTE2VWludCA9IDExMywKKyAgICBQaXhlbEZvcm1hdFJHQkExNlNp
bnQgPSAxMTQsCisgICAgUGl4ZWxGb3JtYXRSR0JBMTZGbG9hdCA9IDExNSwKKyAgICBQaXhlbEZv
cm1hdFJHQkEzMlVpbnQgPSAxMjMsCisgICAgUGl4ZWxGb3JtYXRSR0JBMzJTaW50ID0gMTI0LAor
ICAgIFBpeGVsRm9ybWF0UkdCQTMyRmxvYXQgPSAxMjUsCisgICAgUGl4ZWxGb3JtYXRCQzFfUkdC
QSA9IDEzMCwKKyAgICBQaXhlbEZvcm1hdEJDMV9SR0JBX3NSR0IgPSAxMzEsCisgICAgUGl4ZWxG
b3JtYXRCQzJfUkdCQSA9IDEzMiwKKyAgICBQaXhlbEZvcm1hdEJDMl9SR0JBX3NSR0IgPSAxMzMs
CisgICAgUGl4ZWxGb3JtYXRCQzNfUkdCQSA9IDEzNCwKKyAgICBQaXhlbEZvcm1hdEJDM19SR0JB
X3NSR0IgPSAxMzUsCisgICAgUGl4ZWxGb3JtYXRCQzRfUlVub3JtID0gMTQwLAorICAgIFBpeGVs
Rm9ybWF0QkM0X1JTbm9ybSA9IDE0MSwKKyAgICBQaXhlbEZvcm1hdEJDNV9SR1Vub3JtID0gMTQy
LAorICAgIFBpeGVsRm9ybWF0QkM1X1JHU25vcm0gPSAxNDMsCisgICAgUGl4ZWxGb3JtYXRCQzZI
X1JHQkZsb2F0ID0gMTUwLAorICAgIFBpeGVsRm9ybWF0QkM2SF9SR0JVZmxvYXQgPSAxNTEsCisg
ICAgUGl4ZWxGb3JtYXRCQzdfUkdCQVVub3JtID0gMTUyLAorICAgIFBpeGVsRm9ybWF0QkM3X1JH
QkFVbm9ybV9zUkdCID0gMTUzLAorICAgIFBpeGVsRm9ybWF0UFZSVENfUkdCXzJCUFAgPSAxNjAs
CisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JfMkJQUF9zUkdCID0gMTYxLAorICAgIFBpeGVsRm9y
bWF0UFZSVENfUkdCXzRCUFAgPSAxNjIsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JfNEJQUF9z
UkdCID0gMTYzLAorICAgIFBpeGVsRm9ybWF0UFZSVENfUkdCQV8yQlBQID0gMTY0LAorICAgIFBp
eGVsRm9ybWF0UFZSVENfUkdCQV8yQlBQX3NSR0IgPSAxNjUsCisgICAgUGl4ZWxGb3JtYXRQVlJU
Q19SR0JBXzRCUFAgPSAxNjYsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JBXzRCUFBfc1JHQiA9
IDE2NywKKyAgICBQaXhlbEZvcm1hdEVBQ19SMTFVbm9ybSA9IDE3MCwKKyAgICBQaXhlbEZvcm1h
dEVBQ19SMTFTbm9ybSA9IDE3MiwKKyAgICBQaXhlbEZvcm1hdEVBQ19SRzExVW5vcm0gPSAxNzQs
CisgICAgUGl4ZWxGb3JtYXRFQUNfUkcxMVNub3JtID0gMTc2LAorICAgIFBpeGVsRm9ybWF0RUFD
X1JHQkE4ID0gMTc4LAorICAgIFBpeGVsRm9ybWF0RUFDX1JHQkE4X3NSR0IgPSAxNzksCisgICAg
UGl4ZWxGb3JtYXRFVEMyX1JHQjggPSAxODAsCisgICAgUGl4ZWxGb3JtYXRFVEMyX1JHQjhfc1JH
QiA9IDE4MSwKKyAgICBQaXhlbEZvcm1hdEVUQzJfUkdCOEExID0gMTgyLAorICAgIFBpeGVsRm9y
bWF0RVRDMl9SR0I4QTFfc1JHQiA9IDE4MywKKyAgICBQaXhlbEZvcm1hdEFTVENfNHg0X3NSR0Ig
PSAxODYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzV4NF9zUkdCID0gMTg3LAorICAgIFBpeGVsRm9y
bWF0QVNUQ181eDVfc1JHQiA9IDE4OCwKKyAgICBQaXhlbEZvcm1hdEFTVENfNng1X3NSR0IgPSAx
ODksCisgICAgUGl4ZWxGb3JtYXRBU1RDXzZ4Nl9zUkdCID0gMTkwLAorICAgIFBpeGVsRm9ybWF0
QVNUQ184eDVfc1JHQiA9IDE5MiwKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg2X3NSR0IgPSAxOTMs
CisgICAgUGl4ZWxGb3JtYXRBU1RDXzh4OF9zUkdCID0gMTk0LAorICAgIFBpeGVsRm9ybWF0QVNU
Q18xMHg1X3NSR0IgPSAxOTUsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDZfc1JHQiA9IDE5NiwK
KyAgICBQaXhlbEZvcm1hdEFTVENfMTB4OF9zUkdCID0gMTk3LAorICAgIFBpeGVsRm9ybWF0QVNU
Q18xMHgxMF9zUkdCID0gMTk4LAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMngxMF9zUkdCID0gMTk5
LAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMngxMl9zUkdCID0gMjAwLAorICAgIFBpeGVsRm9ybWF0
QVNUQ180eDRfTERSID0gMjA0LAorICAgIFBpeGVsRm9ybWF0QVNUQ181eDRfTERSID0gMjA1LAor
ICAgIFBpeGVsRm9ybWF0QVNUQ181eDVfTERSID0gMjA2LAorICAgIFBpeGVsRm9ybWF0QVNUQ182
eDVfTERSID0gMjA3LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDZfTERSID0gMjA4LAorICAgIFBp
eGVsRm9ybWF0QVNUQ184eDVfTERSID0gMjEwLAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDZfTERS
ID0gMjExLAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDhfTERSID0gMjEyLAorICAgIFBpeGVsRm9y
bWF0QVNUQ18xMHg1X0xEUiA9IDIxMywKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4Nl9MRFIgPSAy
MTQsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDhfTERSID0gMjE1LAorICAgIFBpeGVsRm9ybWF0
QVNUQ18xMHgxMF9MRFIgPSAyMTYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEyeDEwX0xEUiA9IDIx
NywKKyAgICBQaXhlbEZvcm1hdEFTVENfMTJ4MTJfTERSID0gMjE4LAorICAgIFBpeGVsRm9ybWF0
QVNUQ180eDRfSERSID0gMjIyLAorICAgIFBpeGVsRm9ybWF0QVNUQ181eDRfSERSID0gMjIzLAor
ICAgIFBpeGVsRm9ybWF0QVNUQ181eDVfSERSID0gMjI0LAorICAgIFBpeGVsRm9ybWF0QVNUQ182
eDVfSERSID0gMjI1LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDZfSERSID0gMjI2LAorICAgIFBp
eGVsRm9ybWF0QVNUQ184eDVfSERSID0gMjI4LAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDZfSERS
ID0gMjI5LAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDhfSERSID0gMjMwLAorICAgIFBpeGVsRm9y
bWF0QVNUQ18xMHg1X0hEUiA9IDIzMSwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4Nl9IRFIgPSAy
MzIsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDhfSERSID0gMjMzLAorICAgIFBpeGVsRm9ybWF0
QVNUQ18xMHgxMF9IRFIgPSAyMzQsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEyeDEwX0hEUiA9IDIz
NSwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTJ4MTJfSERSID0gMjM2LAorICAgIFBpeGVsRm9ybWF0
R0JHUjQyMiA9IDI0MCwKKyAgICBQaXhlbEZvcm1hdEJHUkc0MjIgPSAyNDEsCisgICAgUGl4ZWxG
b3JtYXREZXB0aDE2VW5vcm0gPSAyNTAsCisgICAgUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXQgPSAy
NTIsCisgICAgUGl4ZWxGb3JtYXRTdGVuY2lsOCA9IDI1MywKKyAgICBQaXhlbEZvcm1hdERlcHRo
MjRVbm9ybV9TdGVuY2lsOCA9IDI1NSwKKyAgICBQaXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVu
Y2lsOCA9IDI2MCwKKyAgICBQaXhlbEZvcm1hdFgzMl9TdGVuY2lsOCA9IDI2MSwKKyAgICBQaXhl
bEZvcm1hdFgyNF9TdGVuY2lsOCA9IDI2MiwKKyAgICBQaXhlbEZvcm1hdEJHUkExMF9YUiA9IDU1
MiwKKyAgICBQaXhlbEZvcm1hdEJHUkExMF9YUl9zUkdCID0gNTUzLAorICAgIFBpeGVsRm9ybWF0
QkdSMTBfWFIgPSA1NTQsCisgICAgUGl4ZWxGb3JtYXRCR1IxMF9YUl9zUkdCID0gNTU1LAorfTsK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TFByaXZhdGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBy
aXZhdGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhZTRkNzllNDg3MTZjYTM2N2FkYTg1MWEwNWY1ZjQ2YjE1
MGRjMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUHJpdmF0ZS5ocHAKQEAgLTAsMCArMSwxMzUgQEAKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFByaXZhdGUuaHBw
CisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk1U
TERlZmluZXMuaHBwIgorCisjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIF9NVExfUFJJVkFU
RV9DTFMoc3ltYm9sKSAoUHJpdmF0ZTo6Q2xhc3M6OnNfayMjc3ltYm9sKQorI2RlZmluZSBfTVRM
X1BSSVZBVEVfU0VMKGFjY2Vzc29yKSAoUHJpdmF0ZTo6U2VsZWN0b3I6OnNfayMjYWNjZXNzb3Ip
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaWYg
ZGVmaW5lZChNVExfUFJJVkFURV9JTVBMRU1FTlRBVElPTikKKworI2RlZmluZSBfTVRMX1BSSVZB
VEVfVklTSUJJTElUWSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCisjZGVm
aW5lIF9NVExfUFJJVkFURV9JTVBPUlQgX19hdHRyaWJ1dGVfXygod2Vha19pbXBvcnQpKQorCisj
aWYgX19PQkpDX18KKyNkZWZpbmUgX01UTF9QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJv
bCkgKChfX2JyaWRnZSB2b2lkKilvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wpKQorI2Vsc2UKKyNk
ZWZpbmUgX01UTF9QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgb2JqY19sb29rVXBD
bGFzcygjc3ltYm9sKQorI2VuZGlmIC8vIF9fT0JKQ19fCisKKyNkZWZpbmUgX01UTF9QUklWQVRF
X0RFRl9DTFMoc3ltYm9sKSB2b2lkKiBzX2sjI3N5bWJvbCBfTVRMX1BSSVZBVEVfVklTSUJJTElU
WSA9IF9NVExfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpOworI2RlZmluZSBfTVRM
X1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfU0VMKGFj
Y2Vzc29yLCBzeW1ib2wpIFNFTCBzX2sjI2FjY2Vzc29yIF9NVExfUFJJVkFURV9WSVNJQklMSVRZ
ID0gc2VsX3JlZ2lzdGVyTmFtZShzeW1ib2wpOworCisjaWYgZGVmaW5lZChfX01BQ18xMF8xNikg
fHwgZGVmaW5lZChfX01BQ18xMV8wKSB8fCBkZWZpbmVkKF9fTUFDXzEyXzApIHx8IGRlZmluZWQo
X19JUEhPTkVfMTRfMCkgfHwgZGVmaW5lZChfX0lQSE9ORV8xNV8wKSB8fCBkZWZpbmVkKF9fVFZP
U18xNF8wKSB8fCBkZWZpbmVkKF9fVFZPU18xNV8wKQorCisjZGVmaW5lIF9NVExfUFJJVkFURV9E
RUZfU1RSKHR5cGUsIHN5bWJvbCkgICAgICAgICAgICAgICAgICBcCisgICAgX01UTF9FWFRFUk4g
dHlwZSBjb25zdCBNVEwjI3N5bWJvbCBfTVRMX1BSSVZBVEVfSU1QT1JUOyBcCisgICAgdHlwZSBj
b25zdCAgICAgICAgICAgICAgICAgICAgICAgICBNVEw6OnN5bWJvbCA9IChudWxscHRyICE9ICZN
VEwjI3N5bWJvbCkgPyBNVEwjI3N5bWJvbCA6IG51bGxwdHI7CisKKyNlbHNlCisKKyNpbmNsdWRl
IDxkbGZjbi5oPgorCituYW1lc3BhY2UgTVRMCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9UeXBlPgorICAgIGlubGluZSBfVHlwZSBjb25zdCBMb2Fk
U3ltYm9sKGNvbnN0IGNoYXIqIHBTeW1ib2wpCisgICAgeworICAgICAgICBjb25zdCBfVHlwZSog
cEFkZHJlc3MgPSBzdGF0aWNfY2FzdDxfVHlwZSo+KGRsc3ltKFJUTERfREVGQVVMVCwgcFN5bWJv
bCkpOworCisgICAgICAgIHJldHVybiBwQWRkcmVzcyA/ICpwQWRkcmVzcyA6IG51bGxwdHI7Cisg
ICAgfQorCit9IC8vIFByaXZhdGUKK30gLy8gTVRMCisKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RF
Rl9TVFIodHlwZSwgc3ltYm9sKSBcCisgICAgX01UTF9FWFRFUk4gdHlwZSBjb25zdCBNVEwjI3N5
bWJvbDsgICAgXAorICAgIHR5cGUgY29uc3QgICAgICAgICAgICAgTVRMOjpzeW1ib2wgPSBQcml2
YXRlOjpMb2FkU3ltYm9sPHR5cGU+KCJNVEwiICNzeW1ib2wpOworCisjZW5kaWYgLy8gZGVmaW5l
ZChfX01BQ18xMF8xNikgfHwgZGVmaW5lZChfX01BQ18xMV8wKSB8fCBkZWZpbmVkKF9fTUFDXzEy
XzApIHx8IGRlZmluZWQoX19JUEhPTkVfMTRfMCkgfHwgZGVmaW5lZChfX0lQSE9ORV8xNV8wKSB8
fCBkZWZpbmVkKF9fVFZPU18xNF8wKSB8fCBkZWZpbmVkKF9fVFZPU18xNV8wKQorCisjZWxzZQor
CisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfQ0xTKHN5bWJvbCkgZXh0ZXJuIHZvaWQqIHNfayMj
c3ltYm9sOworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9N
VExfUFJJVkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIGV4dGVybiBTRUwgc19rIyNhY2Nl
c3NvcjsKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9TVFIodHlwZSwgc3ltYm9sKQorCisjZW5k
aWYgLy8gTVRMX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBNVEwKK3sKK25hbWVzcGFjZSBQ
cml2YXRlCit7CisgICAgbmFtZXNwYWNlIENsYXNzCisgICAgeworCisgICAgfSAvLyBDbGFzcwor
fSAvLyBQcml2YXRlCit9IC8vIE1UTAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE1UTAoreworbmFtZXNwYWNlIFByaXZhdGUKK3sK
KyAgICBuYW1lc3BhY2UgUHJvdG9jb2wKKyAgICB7CisKKyAgICB9IC8vIFByb3RvY29sCit9IC8v
IFByaXZhdGUKK30gLy8gTVRMCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCituYW1lc3BhY2UgTVRMCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAg
IG5hbWVzcGFjZSBTZWxlY3RvcgorICAgIHsKKworICAgICAgICBfTVRMX1BSSVZBVEVfREVGX1NF
TChiZWdpblNjb3BlLAorICAgICAgICAgICAgImJlZ2luU2NvcGUiKTsKKyAgICAgICAgX01UTF9Q
UklWQVRFX0RFRl9TRUwoZW5kU2NvcGUsCisgICAgICAgICAgICAiZW5kU2NvcGUiKTsKKyAgICB9
IC8vIENsYXNzCit9IC8vIFByaXZhdGUKK30gLy8gTVRMCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRlLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTg2Njk1NDVjYjJjOGVhMzMwOTFjZmU1YTlmOGVjMTg2YmJhMTJiZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSYXN0ZXJp
emF0aW9uUmF0ZS5ocHAKQEAgLTAsMCArMSwzODYgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRl
LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAi
CisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRGV2aWNlLmhwcCIKKyNpbmNsdWRlICJNVExUeXBl
cy5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIFJhc3Rlcml6YXRpb25SYXRlU2FtcGxl
QXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJy
YXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlU2FtcGxl
QXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5
KiAgICAgICAgaW5pdCgpOworCisgICAgTlM6Ok51bWJlciogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBOUzo6TnVtYmVy
KiB2YWx1ZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2NsYXNzIFJhc3Rlcml6YXRpb25S
YXRlTGF5ZXJEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJhc3Rlcml6YXRpb25SYXRl
TGF5ZXJEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSYXN0ZXJpemF0
aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIE1UTDo6UmFzdGVyaXphdGlv
blJhdGVMYXllckRlc2NyaXB0b3IqICAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogICAgICAgICBpbml0KE1UTDo6U2l6ZSBzYW1wbGVD
b3VudCk7CisKKyAgICBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiAgICAg
ICAgIGluaXQoTVRMOjpTaXplIHNhbXBsZUNvdW50LCBjb25zdCBmbG9hdCogaG9yaXpvbnRhbCwg
Y29uc3QgZmxvYXQqIHZlcnRpY2FsKTsKKworICAgIE1UTDo6U2l6ZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQoKSBjb25zdDsKKworICAgIE1UTDo6U2l6
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4U2FtcGxlQ291bnQoKSBj
b25zdDsKKworICAgIGZsb2F0KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaG9yaXpvbnRhbFNhbXBsZVN0b3JhZ2UoKSBjb25zdDsKKworICAgIGZsb2F0KiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWxTYW1wbGVTdG9yYWdlKCkg
Y29uc3Q7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiAgICAgICAg
ICAgIGhvcml6b250YWwoKSBjb25zdDsKKworICAgIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlU2Ft
cGxlQXJyYXkqICAgICAgICAgICAgdmVydGljYWwoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FtcGxlQ291bnQoTVRMOjpT
aXplIHNhbXBsZUNvdW50KTsKK307CisKK2NsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJh
eSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5Pgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkqICAgICAg
ICBpbml0KCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciog
ICBvYmplY3QoTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFJhc3Rlcml6
YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBsYXllciwgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgp
OworfTsKKworY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yIDogcHVibGljIE5T
OjpDb3B5aW5nPFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBhbGxvYygpOwor
CisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgp
OworCisgICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogcmFz
dGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKE1UTDo6U2l6ZSBzY3JlZW5TaXplKTsKKworICAg
IHN0YXRpYyBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIHJhc3Rlcml6YXRp
b25SYXRlTWFwRGVzY3JpcHRvcihNVEw6OlNpemUgc2NyZWVuU2l6ZSwgY29uc3QgY2xhc3MgUmFz
dGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGxheWVyKTsKKworICAgIHN0YXRpYyBjbGFz
cyBSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIHJhc3Rlcml6YXRpb25SYXRlTWFwRGVz
Y3JpcHRvcihNVEw6OlNpemUgc2NyZWVuU2l6ZSwgTlM6OlVJbnRlZ2VyIGxheWVyQ291bnQsIE1U
TDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGNvbnN0KiBsYXllcnMpOworCisg
ICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqICAgICAgbGF5ZXIoTlM6
OlVJbnRlZ2VyIGxheWVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0TGF5ZXIoY29uc3QgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVM
YXllckRlc2NyaXB0b3IqIGxheWVyLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCk7CisKKyAgICBj
bGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkqICAgICAgICAgICBsYXllcnMoKSBjb25z
dDsKKworICAgIE1UTDo6U2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj
cmVlblNpemUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRTY3JlZW5TaXplKE1UTDo6U2l6ZSBzY3JlZW5TaXplKTsKKworICAgIE5T
OjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFi
ZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJDb3VudCgpIGNvbnN0OworfTsKKworY2xhc3Mg
UmFzdGVyaXphdGlvblJhdGVNYXAgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJhc3Rlcml6YXRp
b25SYXRlTWFwPgoreworcHVibGljOgorICAgIGNsYXNzIERldmljZSogICAgIGRldmljZSgpIGNv
bnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAgbGFiZWwoKSBjb25zdDsKKworICAgIE1UTDo6
U2l6ZSAgICAgICAgIHNjcmVlblNpemUoKSBjb25zdDsKKworICAgIE1UTDo6U2l6ZSAgICAgICAg
IHBoeXNpY2FsR3JhbnVsYXJpdHkoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgIGxh
eWVyQ291bnQoKSBjb25zdDsKKworICAgIE1UTDo6U2l6ZUFuZEFsaWduIHBhcmFtZXRlckJ1ZmZl
clNpemVBbmRBbGlnbigpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgY29weVBhcmFt
ZXRlckRhdGFUb0J1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IG9mZnNldCk7CisKKyAgICBNVEw6OlNpemUgICAgICAgICBwaHlzaWNhbFNpemUoTlM6OlVJbnRl
Z2VyIGxheWVySW5kZXgpOworCisgICAgTVRMOjpDb29yZGluYXRlMkQgbWFwU2NyZWVuVG9QaHlz
aWNhbENvb3JkaW5hdGVzKE1UTDo6Q29vcmRpbmF0ZTJEIHNjcmVlbkNvb3JkaW5hdGVzLCBOUzo6
VUludGVnZXIgbGF5ZXJJbmRleCk7CisKKyAgICBNVEw6OkNvb3JkaW5hdGUyRCBtYXBQaHlzaWNh
bFRvU2NyZWVuQ29vcmRpbmF0ZXMoTVRMOjpDb29yZGluYXRlMkQgcGh5c2ljYWxDb29yZGluYXRl
cywgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiBN
VEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5PihfTVRM
X1BSSVZBVEVfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJy
YXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheTo6aW5pdCgpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5Pigp
OworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5F
IE5TOjpOdW1iZXIqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheTo6b2JqZWN0KE5T
OjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
TnVtYmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRf
KSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheTo6c2V0
T2JqZWN0KGNvbnN0IE5TOjpOdW1iZXIqIHZhbHVlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9i
amVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgdmFsdWUsIGluZGV4KTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRl
c2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxh
eWVyRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZUxheWVy
RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmFz
dGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I+KCk7Cit9CisKKy8vIG1ldGhvZDogaW5p
dFdpdGhTYW1wbGVDb3VudDoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6OmluaXQo
TVRMOjpTaXplIHNhbXBsZUNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGluaXRXaXRoU2FtcGxlQ291bnRfKSwgc2FtcGxlQ291bnQpOworfQorCisvLyBtZXRo
b2Q6IGluaXRXaXRoU2FtcGxlQ291bnQ6aG9yaXpvbnRhbDp2ZXJ0aWNhbDoKK19NVExfSU5MSU5F
IE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlv
blJhdGVMYXllckRlc2NyaXB0b3I6OmluaXQoTVRMOjpTaXplIHNhbXBsZUNvdW50LCBjb25zdCBm
bG9hdCogaG9yaXpvbnRhbCwgY29uc3QgZmxvYXQqIHZlcnRpY2FsKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3Iq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluaXRXaXRoU2FtcGxlQ291bnRfaG9yaXpvbnRhbF92
ZXJ0aWNhbF8pLCBzYW1wbGVDb3VudCwgaG9yaXpvbnRhbCwgdmVydGljYWwpOworfQorCisvLyBw
cm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlJhc3Rlcml6
YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjpzYW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNhbXBsZUNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhTYW1wbGVDb3VudAorX01UTF9J
TkxJTkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6Om1h
eFNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlNpemU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4U2FtcGxlQ291bnQpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGhvcml6b250YWxTYW1wbGVTdG9yYWdlCitfTVRMX0lOTElORSBmbG9hdCog
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6aG9yaXpvbnRhbFNhbXBsZVN0
b3JhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGZsb2F0Kj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChob3Jpem9udGFsU2FtcGxlU3RvcmFnZSkpOworfQorCisv
LyBwcm9wZXJ0eTogdmVydGljYWxTYW1wbGVTdG9yYWdlCitfTVRMX0lOTElORSBmbG9hdCogTVRM
OjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6dmVydGljYWxTYW1wbGVTdG9yYWdl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxmbG9hdCo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwodmVydGljYWxTYW1wbGVTdG9yYWdlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBob3Jpem9udGFsCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxl
QXJyYXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6Omhvcml6b250YWwo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXph
dGlvblJhdGVTYW1wbGVBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaG9yaXpvbnRhbCkp
OworfQorCisvLyBwcm9wZXJ0eTogdmVydGljYWwKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXph
dGlvblJhdGVTYW1wbGVBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRv
cjo6dmVydGljYWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
dmVydGljYWwpKTsKK30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVDb3VudDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6c2V0U2FtcGxlQ291
bnQoTVRMOjpTaXplIHNhbXBsZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVDb3VudF8pLCBzYW1wbGVDb3VudCk7
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6
YXRpb25SYXRlTGF5ZXJBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXk6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZUxheWVyQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVMYXll
ckFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZUxheWVyQXJyYXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5Ojpp
bml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTGF5ZXJBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3Jp
cHQ6CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBN
VEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBsYXll
ckluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXph
dGlvblJhdGVMYXllckRlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0
SW5kZXhlZFN1YnNjcmlwdF8pLCBsYXllckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmpl
Y3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVM
YXllckRlc2NyaXB0b3IqIGxheWVyLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0
X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBsYXllciwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVz
Y3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERl
c2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlw
dG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZU1hcERlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9y
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTWFwRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogcmFzdGVyaXph
dGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemU6CitfTVRMX0lOTElORSBNVEw6OlJh
c3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERl
c2NyaXB0b3I6OnJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcihNVEw6OlNpemUgc2NyZWVu
U2l6ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTWFwRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJh
dGVNYXBEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChyYXN0ZXJpemF0aW9uUmF0ZU1hcERl
c2NyaXB0b3JXaXRoU2NyZWVuU2l6ZV8pLCBzY3JlZW5TaXplKTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogcmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemU6bGF5ZXI6
CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogTVRMOjpS
YXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OnJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3Jp
cHRvcihNVEw6OlNpemUgc2NyZWVuU2l6ZSwgY29uc3QgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxh
eWVyRGVzY3JpcHRvciogbGF5ZXIpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwocmFzdGVy
aXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemVfbGF5ZXJfKSwgc2NyZWVuU2l6
ZSwgbGF5ZXIpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiByYXN0ZXJpemF0aW9uUmF0ZU1hcERl
c2NyaXB0b3JXaXRoU2NyZWVuU2l6ZTpsYXllckNvdW50OmxheWVyczoKK19NVExfSU5MSU5FIE1U
TDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRl
TWFwRGVzY3JpcHRvcjo6cmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKE1UTDo6U2l6ZSBz
Y3JlZW5TaXplLCBOUzo6VUludGVnZXIgbGF5ZXJDb3VudCwgTVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZUxheWVyRGVzY3JpcHRvciogY29uc3QqIGxheWVycykKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcio+KF9NVExfUFJJ
VkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRF
X1NFTChyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZV9sYXllckNv
dW50X2xheWVyc18pLCBzY3JlZW5TaXplLCBsYXllckNvdW50LCBsYXllcnMpOworfQorCisvLyBt
ZXRob2Q6IGxheWVyQXRJbmRleDoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVM
YXllckRlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpsYXll
cihOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChsYXllckF0SW5kZXhfKSwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDog
c2V0TGF5ZXI6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZU1hcERlc2NyaXB0b3I6OnNldExheWVyKGNvbnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3IqIGxheWVyLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGF5ZXJfYXRJ
bmRleF8pLCBsYXllciwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYXllcnMKK19N
VExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KiBNVEw6OlJhc3Rlcml6
YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6bGF5ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobGF5ZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzY3JlZW5TaXpl
CitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0
b3I6OnNjcmVlblNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzY3JlZW5TaXplKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OnNldFNj
cmVlblNpemUoTVRMOjpTaXplIHNjcmVlblNpemUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNjcmVlblNpemVfKSwgc2NyZWVuU2l6
ZSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRM
OjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJh
dGVNYXBEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFi
ZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogbGF5ZXJDb3VudAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpsYXllckNv
dW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGF5ZXJDb3VudCkpOworfQorCisvLyBwcm9wZXJ0
eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZU1hcDo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcDo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBzY3JlZW5TaXplCitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZU1hcDo6c2NyZWVuU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNjcmVlblNpemUpKTsK
K30KKworLy8gcHJvcGVydHk6IHBoeXNpY2FsR3JhbnVsYXJpdHkKK19NVExfSU5MSU5FIE1UTDo6
U2l6ZSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpwaHlzaWNhbEdyYW51bGFyaXR5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemU+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocGh5c2ljYWxHcmFudWxhcml0eSkpOworfQorCisvLyBwcm9wZXJ0eTog
bGF5ZXJDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmFzdGVyaXphdGlvblJh
dGVNYXA6OmxheWVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXllckNvdW50KSk7Cit9
CisKKy8vIHByb3BlcnR5OiBwYXJhbWV0ZXJCdWZmZXJTaXplQW5kQWxpZ24KK19NVExfSU5MSU5F
IE1UTDo6U2l6ZUFuZEFsaWduIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OnBhcmFtZXRlckJ1
ZmZlclNpemVBbmRBbGlnbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpTaXplQW5kQWxpZ24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGFyYW1ldGVyQnVm
ZmVyU2l6ZUFuZEFsaWduKSk7Cit9CisKKy8vIG1ldGhvZDogY29weVBhcmFtZXRlckRhdGFUb0J1
ZmZlcjpvZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6
OmNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6
OlVJbnRlZ2VyIG9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoY29weVBhcmFtZXRlckRhdGFUb0J1ZmZlcl9vZmZzZXRfKSwgYnVm
ZmVyLCBvZmZzZXQpOworfQorCisvLyBtZXRob2Q6IHBoeXNpY2FsU2l6ZUZvckxheWVyOgorX01U
TF9JTkxJTkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OnBoeXNpY2FsU2l6
ZShOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlNpemU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGh5c2ljYWxTaXplRm9yTGF5
ZXJfKSwgbGF5ZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogbWFwU2NyZWVuVG9QaHlzaWNhbENv
b3JkaW5hdGVzOmZvckxheWVyOgorX01UTF9JTkxJTkUgTVRMOjpDb29yZGluYXRlMkQgTVRMOjpS
YXN0ZXJpemF0aW9uUmF0ZU1hcDo6bWFwU2NyZWVuVG9QaHlzaWNhbENvb3JkaW5hdGVzKE1UTDo6
Q29vcmRpbmF0ZTJEIHNjcmVlbkNvb3JkaW5hdGVzLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvb3JkaW5hdGUyRD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChtYXBTY3JlZW5Ub1BoeXNpY2FsQ29vcmRpbmF0ZXNfZm9yTGF5
ZXJfKSwgc2NyZWVuQ29vcmRpbmF0ZXMsIGxheWVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IG1h
cFBoeXNpY2FsVG9TY3JlZW5Db29yZGluYXRlczpmb3JMYXllcjoKK19NVExfSU5MSU5FIE1UTDo6
Q29vcmRpbmF0ZTJEIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6Om1hcFBoeXNpY2FsVG9TY3Jl
ZW5Db29yZGluYXRlcyhNVEw6OkNvb3JkaW5hdGUyRCBwaHlzaWNhbENvb3JkaW5hdGVzLCBOUzo6
VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkNvb3JkaW5hdGUyRD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXBQaHlzaWNhbFRvU2Ny
ZWVuQ29vcmRpbmF0ZXNfZm9yTGF5ZXJfKSwgcGh5c2ljYWxDb29yZGluYXRlcywgbGF5ZXJJbmRl
eCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmRhODU2
MTM1ZDk3YWJkMmQ4NTZmMDQ2ZThjNzM2MDIzMmM2ZGU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlckNvbW1hbmRFbmNvZGVy
LmhwcApAQCAtMCwwICsxLDk1OCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNs
dWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHA+CisKKyNpbmNsdWRlICJNVExCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNv
ZGVyLmhwcCIKKyNpbmNsdWRlICJNVExIZWFwLmhwcCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJDb21tYW5kRW5jb2Rlci5o
cHAiCisjaW5jbHVkZSAiTVRMUmVuZGVyUGFzcy5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2Uu
aHBwIgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRP
dXRwdXREZXNjcmlwdG9yLmhwcCIKKyNpbmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKyNpbmNsdWRl
ICJNVExUeXBlcy5ocHAiCisjaW5jbHVkZSAiTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwIgor
CituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQcmltaXRpdmVUeXBl
KSB7CisgICAgUHJpbWl0aXZlVHlwZVBvaW50ID0gMCwKKyAgICBQcmltaXRpdmVUeXBlTGluZSA9
IDEsCisgICAgUHJpbWl0aXZlVHlwZUxpbmVTdHJpcCA9IDIsCisgICAgUHJpbWl0aXZlVHlwZVRy
aWFuZ2xlID0gMywKKyAgICBQcmltaXRpdmVUeXBlVHJpYW5nbGVTdHJpcCA9IDQsCit9OworCitf
TVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBWaXNpYmlsaXR5UmVzdWx0TW9kZSkgeworICAgIFZpc2li
aWxpdHlSZXN1bHRNb2RlRGlzYWJsZWQgPSAwLAorICAgIFZpc2liaWxpdHlSZXN1bHRNb2RlQm9v
bGVhbiA9IDEsCisgICAgVmlzaWJpbGl0eVJlc3VsdE1vZGVDb3VudGluZyA9IDIsCit9OworCitz
dHJ1Y3QgU2Npc3NvclJlY3QKK3sKKyAgICBOUzo6VUludGVnZXIgeDsKKyAgICBOUzo6VUludGVn
ZXIgeTsKKyAgICBOUzo6VUludGVnZXIgd2lkdGg7CisgICAgTlM6OlVJbnRlZ2VyIGhlaWdodDsK
K30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBWaWV3cG9ydAoreworICAgIGRvdWJsZSBvcmlnaW5Y
OworICAgIGRvdWJsZSBvcmlnaW5ZOworICAgIGRvdWJsZSB3aWR0aDsKKyAgICBkb3VibGUgaGVp
Z2h0OworICAgIGRvdWJsZSB6bmVhcjsKKyAgICBkb3VibGUgemZhcjsKK30gX01UTF9QQUNLRUQ7
CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIEN1bGxNb2RlKSB7CisgICAgQ3VsbE1vZGVOb25l
ID0gMCwKKyAgICBDdWxsTW9kZUZyb250ID0gMSwKKyAgICBDdWxsTW9kZUJhY2sgPSAyLAorfTsK
KworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgV2luZGluZykgeworICAgIFdpbmRpbmdDbG9ja3dp
c2UgPSAwLAorICAgIFdpbmRpbmdDb3VudGVyQ2xvY2t3aXNlID0gMSwKK307CisKK19NVExfRU5V
TShOUzo6VUludGVnZXIsIERlcHRoQ2xpcE1vZGUpIHsKKyAgICBEZXB0aENsaXBNb2RlQ2xpcCA9
IDAsCisgICAgRGVwdGhDbGlwTW9kZUNsYW1wID0gMSwKK307CisKK19NVExfRU5VTShOUzo6VUlu
dGVnZXIsIFRyaWFuZ2xlRmlsbE1vZGUpIHsKKyAgICBUcmlhbmdsZUZpbGxNb2RlRmlsbCA9IDAs
CisgICAgVHJpYW5nbGVGaWxsTW9kZUxpbmVzID0gMSwKK307CisKK3N0cnVjdCBEcmF3UHJpbWl0
aXZlc0luZGlyZWN0QXJndW1lbnRzCit7CisgICAgdWludDMyX3QgdmVydGV4Q291bnQ7CisgICAg
dWludDMyX3QgaW5zdGFuY2VDb3VudDsKKyAgICB1aW50MzJfdCB2ZXJ0ZXhTdGFydDsKKyAgICB1
aW50MzJfdCBiYXNlSW5zdGFuY2U7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgRHJhd0luZGV4
ZWRQcmltaXRpdmVzSW5kaXJlY3RBcmd1bWVudHMKK3sKKyAgICB1aW50MzJfdCBpbmRleENvdW50
OworICAgIHVpbnQzMl90IGluc3RhbmNlQ291bnQ7CisgICAgdWludDMyX3QgaW5kZXhTdGFydDsK
KyAgICBpbnQzMl90ICBiYXNlVmVydGV4OworICAgIHVpbnQzMl90IGJhc2VJbnN0YW5jZTsKK30g
X01UTF9QQUNLRUQ7CisKK3N0cnVjdCBWZXJ0ZXhBbXBsaWZpY2F0aW9uVmlld01hcHBpbmcKK3sK
KyAgICB1aW50MzJfdCB2aWV3cG9ydEFycmF5SW5kZXhPZmZzZXQ7CisgICAgdWludDMyX3QgcmVu
ZGVyVGFyZ2V0QXJyYXlJbmRleE9mZnNldDsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBEcmF3
UGF0Y2hJbmRpcmVjdEFyZ3VtZW50cworeworICAgIHVpbnQzMl90IHBhdGNoQ291bnQ7CisgICAg
dWludDMyX3QgaW5zdGFuY2VDb3VudDsKKyAgICB1aW50MzJfdCBwYXRjaFN0YXJ0OworICAgIHVp
bnQzMl90IGJhc2VJbnN0YW5jZTsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBRdWFkVGVzc2Vs
bGF0aW9uRmFjdG9yc0hhbGYKK3sKKyAgICB1aW50MTZfdCBlZGdlVGVzc2VsbGF0aW9uRmFjdG9y
WzRdOworICAgIHVpbnQxNl90IGluc2lkZVRlc3NlbGxhdGlvbkZhY3RvclsyXTsKK30gX01UTF9Q
QUNLRUQ7CisKK3N0cnVjdCBUcmlhbmdsZVRlc3NlbGxhdGlvbkZhY3RvcnNIYWxmCit7CisgICAg
dWludDE2X3QgZWRnZVRlc3NlbGxhdGlvbkZhY3RvclszXTsKKyAgICB1aW50MTZfdCBpbnNpZGVU
ZXNzZWxsYXRpb25GYWN0b3I7Cit9IF9NVExfUEFDS0VEOworCitfTVRMX09QVElPTlMoTlM6OlVJ
bnRlZ2VyLCBSZW5kZXJTdGFnZXMpIHsKKyAgICBSZW5kZXJTdGFnZVZlcnRleCA9IDEsCisgICAg
UmVuZGVyU3RhZ2VGcmFnbWVudCA9IDIsCisgICAgUmVuZGVyU3RhZ2VUaWxlID0gNCwKK307CisK
K2NsYXNzIFJlbmRlckNvbW1hbmRFbmNvZGVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSZW5k
ZXJDb21tYW5kRW5jb2RlciwgQ29tbWFuZEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgdm9pZCAg
ICAgICAgIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVT
dGF0ZSogcGlwZWxpbmVTdGF0ZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4Qnl0ZXMo
Y29uc3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZl
ciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisg
ICAgdm9pZCAgICAgICAgIHNldFZlcnRleEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0
LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleEJ1ZmZl
cnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwg
TlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhUZXh0dXJlKGNv
bnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0VmVydGV4VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBO
Uzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleFNhbXBsZXJTdGF0
ZShjb25zdCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRleCk7
CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJT
dGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBz
ZXRWZXJ0ZXhTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVyLCBm
bG9hdCBsb2RNaW5DbGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCk7
CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJT
dGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0IGZsb2F0
IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNl
dFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRh
YmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9p
ZCAgICAgICAgIHNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBjbGFzcyBWaXNp
YmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0
IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVy
dGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdl
KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29u
c3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5T
OjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0Vmlld3BvcnQo
TVRMOjpWaWV3cG9ydCB2aWV3cG9ydCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0Vmlld3BvcnRz
KGNvbnN0IE1UTDo6Vmlld3BvcnQqIHZpZXdwb3J0cywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRGcm9udEZhY2luZ1dpbmRpbmcoTVRMOjpXaW5kaW5nIGZyb250
RmFjaW5nV2luZGluZyk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4QW1wbGlmaWNhdGlv
bkNvdW50KE5TOjpVSW50ZWdlciBjb3VudCwgY29uc3QgTVRMOjpWZXJ0ZXhBbXBsaWZpY2F0aW9u
Vmlld01hcHBpbmcqIHZpZXdNYXBwaW5ncyk7CisKKyAgICB2b2lkICAgICAgICAgc2V0Q3VsbE1v
ZGUoTVRMOjpDdWxsTW9kZSBjdWxsTW9kZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RGVwdGhD
bGlwTW9kZShNVEw6OkRlcHRoQ2xpcE1vZGUgZGVwdGhDbGlwTW9kZSk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0RGVwdGhCaWFzKGZsb2F0IGRlcHRoQmlhcywgZmxvYXQgc2xvcGVTY2FsZSwgZmxv
YXQgY2xhbXApOworCisgICAgdm9pZCAgICAgICAgIHNldFNjaXNzb3JSZWN0KE1UTDo6U2Npc3Nv
clJlY3QgcmVjdCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0U2Npc3NvclJlY3RzKGNvbnN0IE1U
TDo6U2Npc3NvclJlY3QqIHNjaXNzb3JSZWN0cywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAg
IHZvaWQgICAgICAgICBzZXRUcmlhbmdsZUZpbGxNb2RlKE1UTDo6VHJpYW5nbGVGaWxsTW9kZSBm
aWxsTW9kZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRCeXRlcyhjb25zdCB2b2lk
KiBieXRlcywgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAg
IHZvaWQgICAgICAgICBzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQg
ICAgICAgICBzZXRGcmFnbWVudEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6
VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50QnVmZmVycyhN
VEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6
UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50VGV4dHVyZShjb25z
dCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9p
ZCAgICAgICAgIHNldEZyYWdtZW50VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBO
Uzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50U2FtcGxlclN0
YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4
KTsKKworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1w
bGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAg
ICAgc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBzYW1w
bGVyLCBmbG9hdCBsb2RNaW5DbGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBp
bmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzKE1UTDo6
U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25zdCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29u
c3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxl
RnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsK
KworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25z
dCBWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdl
KTsKKworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGUoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNzIEludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpS
YW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25T
dHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
c2V0QmxlbmRDb2xvclJlZChmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9h
dCBhbHBoYSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3Qg
Y2xhc3MgRGVwdGhTdGVuY2lsU3RhdGUqIGRlcHRoU3RlbmNpbFN0YXRlKTsKKworICAgIHZvaWQg
ICAgICAgICBzZXRTdGVuY2lsUmVmZXJlbmNlVmFsdWUodWludDMyX3QgcmVmZXJlbmNlVmFsdWUp
OworCisgICAgdm9pZCAgICAgICAgIHNldFN0ZW5jaWxGcm9udFJlZmVyZW5jZVZhbHVlKHVpbnQz
Ml90IGZyb250UmVmZXJlbmNlVmFsdWUsIHVpbnQzMl90IGJhY2tSZWZlcmVuY2VWYWx1ZSk7CisK
KyAgICB2b2lkICAgICAgICAgc2V0VmlzaWJpbGl0eVJlc3VsdE1vZGUoTVRMOjpWaXNpYmlsaXR5
UmVzdWx0TW9kZSBtb2RlLCBOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRDb2xvclN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24sIE5TOjpV
SW50ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RGVw
dGhTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKTsKKworICAgIHZvaWQg
ICAgICAgICBzZXRTdGVuY2lsU3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlv
bik7CisKKyAgICB2b2lkICAgICAgICAgc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpT
dG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zLCBOUzo6VUludGVnZXIgY29sb3JB
dHRhY2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldERlcHRoU3RvcmVBY3Rpb25P
cHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucyk7CisKKyAg
ICB2b2lkICAgICAgICAgc2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0
aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQ
cmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIg
dmVydGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCwgTlM6OlVJbnRlZ2VyIGluc3Rh
bmNlQ291bnQpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0
aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50
ZWdlciB2ZXJ0ZXhDb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgZHJhd0luZGV4ZWRQcmltaXRp
dmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhD
b3VudCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4
QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0
YW5jZUNvdW50KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRM
OjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBN
VEw6OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIs
IE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgZHJh
d1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdl
ciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50LCBOUzo6VUludGVnZXIgaW5z
dGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7CisKKyAgICB2b2lkICAgICAg
ICAgZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBl
LCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25z
dCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZz
ZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6SW50ZWdlciBiYXNlVmVydGV4LCBO
Uzo6VUludGVnZXIgYmFzZUluc3RhbmNlKTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UHJpbWl0
aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgY29uc3QgY2xhc3MgQnVmZmVy
KiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKwor
ICAgIHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBl
IHByaW1pdGl2ZVR5cGUsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgY2xhc3MgQnVm
ZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBj
bGFzcyBCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJP
ZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgIHRleHR1cmVCYXJyaWVyKCk7CisKKyAgICB2b2lk
ICAgICAgICAgdXBkYXRlRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlLCBNVEw6OlJlbmRl
clN0YWdlcyBzdGFnZXMpOworCisgICAgdm9pZCAgICAgICAgIHdhaXRGb3JGZW5jZShjb25zdCBj
bGFzcyBGZW5jZSogZmVuY2UsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcyk7CisKKyAgICB2b2lk
ICAgICAgICAgc2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciog
YnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VTdHJpZGUp
OworCisgICAgdm9pZCAgICAgICAgIHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlKGZsb2F0IHNj
YWxlKTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVy
T2ZQYXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVn
ZXIgcGF0Y2hDb3VudCwgY29uc3QgY2xhc3MgQnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6
VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291
bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQ
YXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgY29uc3QgY2xh
c3MgQnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZl
ck9mZnNldCwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFBh
dGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBOUzo6VUludGVn
ZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQsIGNvbnN0IGNsYXNzIEJ1ZmZl
ciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQs
IGNvbnN0IGNsYXNzIEJ1ZmZlciogY29udHJvbFBvaW50SW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdl
ciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291
bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdJ
bmRleGVkUGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIGNv
bnN0IGNsYXNzIEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5k
ZXhCdWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogY29udHJvbFBvaW50SW5kZXhCdWZm
ZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgY2xh
c3MgQnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zm
c2V0KTsKKworICAgIE5TOjpVSW50ZWdlciB0aWxlV2lkdGgoKSBjb25zdDsKKworICAgIE5TOjpV
SW50ZWdlciB0aWxlSGVpZ2h0KCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZUJ5
dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIg
aW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVCdWZmZXIoY29uc3QgY2xhc3MgQnVm
ZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisK
KyAgICB2b2lkICAgICAgICAgc2V0VGlsZUJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0
LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVCdWZmZXJz
KE1UTDo6QnVmZmVyKiBidWZmZXJzLCBjb25zdCBOUzo6VUludGVnZXIqIG9mZnNldHMsIE5TOjpS
YW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZVRleHR1cmUoY29uc3QgY2xh
c3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICBzZXRUaWxlVGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2Ug
cmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVTYW1wbGVyU3RhdGUoY29uc3QgY2xh
c3MgU2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9p
ZCAgICAgICAgIHNldFRpbGVTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVy
c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVTYW1wbGVy
U3RhdGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9hdCBsb2RNaW5DbGFt
cCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0VGlsZVNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10s
IGNvbnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwg
TlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlVmlzaWJsZUZ1bmN0
aW9uVGFibGUoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUs
IE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZVZp
c2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVu
Y3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRU
aWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVy
SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRh
Ymxlcyhjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNl
dFRpbGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0
dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisK
KyAgICB2b2lkICAgICAgICAgZGlzcGF0Y2hUaHJlYWRzUGVyVGlsZShNVEw6OlNpemUgdGhyZWFk
c1BlclRpbGUpOworCisgICAgdm9pZCAgICAgICAgIHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3Ro
KE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBp
bmRleCk7CisKKyAgICB2b2lkICAgICAgICAgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3Vy
Y2UqIHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCAgICAg
ICAgIHVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2Vy
IGNvdW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCAgICAgICAgIHVz
ZVJlc291cmNlKGNvbnN0IGNsYXNzIFJlc291cmNlKiByZXNvdXJjZSwgTVRMOjpSZXNvdXJjZVVz
YWdlIHVzYWdlLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpOworCisgICAgdm9pZCAgICAgICAg
IHVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXMsIE5TOjpVSW50ZWdlciBjb3Vu
dCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpOwor
CisgICAgdm9pZCAgICAgICAgIHVzZUhlYXAoY29uc3QgY2xhc3MgSGVhcCogaGVhcCk7CisKKyAg
ICB2b2lkICAgICAgICAgdXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIg
Y291bnQpOworCisgICAgdm9pZCAgICAgICAgIHVzZUhlYXAoY29uc3QgY2xhc3MgSGVhcCogaGVh
cCwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICB1c2VIZWFw
cyhNVEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZW5kZXJTdGFn
ZXMgc3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihj
b25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwg
TlM6OlJhbmdlIGV4ZWN1dGlvblJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBleGVjdXRlQ29t
bWFuZHNJbkJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0
Q29tbWFuZGJ1ZmZlciwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRpcmVjdFJhbmdlQnVmZmVyLCBO
Uzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgIG1l
bW9yeUJhcnJpZXIoTVRMOjpCYXJyaWVyU2NvcGUgc2NvcGUsIE1UTDo6UmVuZGVyU3RhZ2VzIGFm
dGVyLCBNVEw6OlJlbmRlclN0YWdlcyBiZWZvcmUpOworCisgICAgdm9pZCAgICAgICAgIG1lbW9y
eUJhcnJpZXIoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCwg
TVRMOjpSZW5kZXJTdGFnZXMgYWZ0ZXIsIE1UTDo6UmVuZGVyU3RhZ2VzIGJlZm9yZSk7CisKKyAg
ICB2b2lkICAgICAgICAgc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVy
U2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9v
bCBiYXJyaWVyKTsKK307CisKK30KKworLy8gbWV0aG9kOiBzZXRSZW5kZXJQaXBlbGluZVN0YXRl
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRSZW5kZXJQ
aXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZV8pLCBwaXBlbGluZVN0YXRlKTsKK30KKworLy8gbWV0
aG9kOiBzZXRWZXJ0ZXhCeXRlczpsZW5ndGg6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4Qnl0ZXMoY29uc3Qgdm9pZCogYnl0ZXMs
IE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4Qnl0ZXNf
bGVuZ3RoX2F0SW5kZXhfKSwgYnl0ZXMsIGxlbmd0aCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6
IHNldFZlcnRleEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBi
dWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4
QnVmZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0VmVydGV4QnVmZmVyT2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleEJ1ZmZlck9mZnNldChOUzo6VUlu
dGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEJ1ZmZlck9mZnNldF9h
dEluZGV4XyksIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEJ1ZmZl
cnM6b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFu
ZEVuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3Qg
TlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJz
X29mZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJhbmdlKTsKK30KKworLy8g
bWV0aG9kOiBzZXRWZXJ0ZXhUZXh0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJl
KiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFRleHR1cmVfYXRJbmRleF8p
LCB0ZXh0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4VGV4dHVyZXM6d2l0
aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRW
ZXJ0ZXhUZXh0dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0VmVydGV4VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1cmVzLCByYW5nZSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0VmVydGV4U2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFNhbXBsZXJTdGF0ZShjb25zdCBN
VEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhT
YW1wbGVyU3RhdGVfYXRJbmRleF8pLCBzYW1wbGVyLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDog
c2V0VmVydGV4U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVy
U3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRl
c193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0
ZXhTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4U2FtcGxlclN0YXRl
KGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9hdCBsb2RNaW5DbGFtcCwgZmxv
YXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRl
X2xvZE1pbkNsYW1wX2xvZE1heENsYW1wX2F0SW5kZXhfKSwgc2FtcGxlciwgbG9kTWluQ2xhbXAs
IGxvZE1heENsYW1wLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4U2FtcGxlclN0
YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4U2FtcGxlclN0YXRlcyhNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNv
bnN0IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFNhbXBs
ZXJTdGF0ZXNfbG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMs
IGxvZE1pbkNsYW1wcywgbG9kTWF4Q2xhbXBzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0
VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFi
bGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJ
bnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZl
ckluZGV4XyksIGZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBz
ZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rp
b25UYWJsZXMoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNb
XSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1
ZmZlclJhbmdlXyksIGZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0
VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgaW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZXMoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEFjY2VsZXJhdGlvblN0cnVjdHVy
ZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlcklu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZmZXJJbmRleF8pLCBhY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaWV3
cG9ydDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Vmll
d3BvcnQoTVRMOjpWaWV3cG9ydCB2aWV3cG9ydCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Vmlld3BvcnRfKSwgdmlld3BvcnQpOwor
fQorCisvLyBtZXRob2Q6IHNldFZpZXdwb3J0czpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Vmlld3BvcnRzKGNvbnN0IE1UTDo6Vmlld3BvcnQq
IHZpZXdwb3J0cywgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaWV3cG9ydHNfY291bnRfKSwgdmll
d3BvcnRzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJvbnRGYWNpbmdXaW5kaW5nOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcm9udEZhY2lu
Z1dpbmRpbmcoTVRMOjpXaW5kaW5nIGZyb250RmFjaW5nV2luZGluZykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJvbnRGYWNpbmdX
aW5kaW5nXyksIGZyb250RmFjaW5nV2luZGluZyk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4
QW1wbGlmaWNhdGlvbkNvdW50OnZpZXdNYXBwaW5nczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KE5TOjpVSW50
ZWdlciBjb3VudCwgY29uc3QgTVRMOjpWZXJ0ZXhBbXBsaWZpY2F0aW9uVmlld01hcHBpbmcqIHZp
ZXdNYXBwaW5ncykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50X3ZpZXdNYXBwaW5nc18pLCBj
b3VudCwgdmlld01hcHBpbmdzKTsKK30KKworLy8gbWV0aG9kOiBzZXRDdWxsTW9kZToKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Q3VsbE1vZGUoTVRMOjpD
dWxsTW9kZSBjdWxsTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0Q3VsbE1vZGVfKSwgY3VsbE1vZGUpOworfQorCisvLyBtZXRo
b2Q6IHNldERlcHRoQ2xpcE1vZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFu
ZEVuY29kZXI6OnNldERlcHRoQ2xpcE1vZGUoTVRMOjpEZXB0aENsaXBNb2RlIGRlcHRoQ2xpcE1v
ZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldERlcHRoQ2xpcE1vZGVfKSwgZGVwdGhDbGlwTW9kZSk7Cit9CisKKy8vIG1ldGhvZDog
c2V0RGVwdGhCaWFzOnNsb3BlU2NhbGU6Y2xhbXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldERlcHRoQmlhcyhmbG9hdCBkZXB0aEJpYXMsIGZsb2F0IHNs
b3BlU2NhbGUsIGZsb2F0IGNsYW1wKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aEJpYXNfc2xvcGVTY2FsZV9jbGFtcF8pLCBk
ZXB0aEJpYXMsIHNsb3BlU2NhbGUsIGNsYW1wKTsKK30KKworLy8gbWV0aG9kOiBzZXRTY2lzc29y
UmVjdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0U2Np
c3NvclJlY3QoTVRMOjpTY2lzc29yUmVjdCByZWN0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTY2lzc29yUmVjdF8pLCByZWN0KTsK
K30KKworLy8gbWV0aG9kOiBzZXRTY2lzc29yUmVjdHM6Y291bnQ6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFNjaXNzb3JSZWN0cyhjb25zdCBNVEw6OlNj
aXNzb3JSZWN0KiBzY2lzc29yUmVjdHMsIE5TOjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2Npc3NvclJl
Y3RzX2NvdW50XyksIHNjaXNzb3JSZWN0cywgY291bnQpOworfQorCisvLyBtZXRob2Q6IHNldFRy
aWFuZ2xlRmlsbE1vZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldFRyaWFuZ2xlRmlsbE1vZGUoTVRMOjpUcmlhbmdsZUZpbGxNb2RlIGZpbGxNb2RlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRUcmlhbmdsZUZpbGxNb2RlXyksIGZpbGxNb2RlKTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFn
bWVudEJ5dGVzOmxlbmd0aDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUlu
dGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50Qnl0ZXNfbGVuZ3Ro
X2F0SW5kZXhfKSwgYnl0ZXMsIGxlbmd0aCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZy
YWdtZW50QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVm
ZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50
QnVmZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0RnJhZ21lbnRCdWZmZXJPZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRCdWZmZXJPZmZzZXQoTlM6
OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEJ1ZmZlck9m
ZnNldF9hdEluZGV4XyksIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdt
ZW50QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJz
W10sIGNvbnN0IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJh
Z21lbnRCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJhbmdl
KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudFRleHR1cmU6YXRJbmRleDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRUZXh0dXJlKGNv
bnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVu
dFRleHR1cmVfYXRJbmRleF8pLCB0ZXh0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
RnJhZ21lbnRUZXh0dXJlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJl
c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRl
eHR1cmVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGU6
YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
RnJhZ21lbnRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5T
OjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVfYXRJbmRleF8pLCBzYW1w
bGVyLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzOndp
dGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
RnJhZ21lbnRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6
UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlc193aXRoUmFuZ2VfKSwgc2FtcGxl
cnMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZTpsb2RN
aW5DbGFtcDpsb2RNYXhDbGFtcDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6OlNhbXBs
ZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBO
Uzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlX2xvZE1pbkNsYW1wX2xv
ZE1heENsYW1wX2F0SW5kZXhfKSwgc2FtcGxlciwgbG9kTWluQ2xhbXAsIGxvZE1heENsYW1wLCBp
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzOmxvZE1pbkNs
YW1wczpsb2RNYXhDbGFtcHM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3Rh
dGUqIHNhbXBsZXJzW10sIGNvbnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBs
b2RNYXhDbGFtcHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXNf
bG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIGxvZE1pbkNs
YW1wcywgbG9kTWF4Q2xhbXBzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRW
aXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlKGNv
bnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdl
ciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlcklu
ZGV4XyksIGZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRG
cmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50VmlzaWJsZUZ1bmN0
aW9uVGFibGVzKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVz
W10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0
aEJ1ZmZlclJhbmdlXyksIGZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDog
c2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50SW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUq
IGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgaW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZy
YWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSog
aW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVu
dEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBpbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50QWNj
ZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNv
bnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5T
OjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVf
YXRCdWZmZXJJbmRleF8pLCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGJ1ZmZlckluZGV4KTsKK30K
KworLy8gbWV0aG9kOiBzZXRCbGVuZENvbG9yUmVkOmdyZWVuOmJsdWU6YWxwaGE6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEJsZW5kQ29sb3JSZWQoZmxv
YXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJsZW5kQ29s
b3JSZWRfZ3JlZW5fYmx1ZV9hbHBoYV8pLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0RGVwdGhTdGVuY2lsU3RhdGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IE1UTDo6RGVw
dGhTdGVuY2lsU3RhdGUqIGRlcHRoU3RlbmNpbFN0YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFN0ZW5jaWxTdGF0ZV8p
LCBkZXB0aFN0ZW5jaWxTdGF0ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RlbmNpbFJlZmVyZW5j
ZVZhbHVlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRT
dGVuY2lsUmVmZXJlbmNlVmFsdWUodWludDMyX3QgcmVmZXJlbmNlVmFsdWUpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxS
ZWZlcmVuY2VWYWx1ZV8pLCByZWZlcmVuY2VWYWx1ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0U3Rl
bmNpbEZyb250UmVmZXJlbmNlVmFsdWU6YmFja1JlZmVyZW5jZVZhbHVlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVuY2lsRnJvbnRSZWZlcmVuY2VW
YWx1ZSh1aW50MzJfdCBmcm9udFJlZmVyZW5jZVZhbHVlLCB1aW50MzJfdCBiYWNrUmVmZXJlbmNl
VmFsdWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFN0ZW5jaWxGcm9udFJlZmVyZW5jZVZhbHVlX2JhY2tSZWZlcmVuY2VWYWx1ZV8p
LCBmcm9udFJlZmVyZW5jZVZhbHVlLCBiYWNrUmVmZXJlbmNlVmFsdWUpOworfQorCisvLyBtZXRo
b2Q6IHNldFZpc2liaWxpdHlSZXN1bHRNb2RlOm9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmlzaWJpbGl0eVJlc3VsdE1vZGUoTVRMOjpWaXNp
YmlsaXR5UmVzdWx0TW9kZSBtb2RlLCBOUzo6VUludGVnZXIgb2Zmc2V0KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaXNpYmlsaXR5
UmVzdWx0TW9kZV9vZmZzZXRfKSwgbW9kZSwgb2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiBzZXRD
b2xvclN0b3JlQWN0aW9uOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnNldENvbG9yU3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFj
dGlvbiwgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb2xvclN0b3JlQWN0
aW9uX2F0SW5kZXhfKSwgc3RvcmVBY3Rpb24sIGNvbG9yQXR0YWNobWVudEluZGV4KTsKK30KKwor
Ly8gbWV0aG9kOiBzZXREZXB0aFN0b3JlQWN0aW9uOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24g
c3RvcmVBY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldERlcHRoU3RvcmVBY3Rpb25fKSwgc3RvcmVBY3Rpb24pOworfQorCisv
LyBtZXRob2Q6IHNldFN0ZW5jaWxTdG9yZUFjdGlvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0U3RlbmNpbFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rp
b24gc3RvcmVBY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxTdG9yZUFjdGlvbl8pLCBzdG9yZUFjdGlvbik7Cit9
CisKKy8vIG1ldGhvZDogc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnM6YXRJbmRleDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Q29sb3JTdG9yZUFjdGlv
bk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zLCBOUzo6
VUludGVnZXIgY29sb3JBdHRhY2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25z
X2F0SW5kZXhfKSwgc3RvcmVBY3Rpb25PcHRpb25zLCBjb2xvckF0dGFjaG1lbnRJbmRleCk7Cit9
CisKKy8vIG1ldGhvZDogc2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnM6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldERlcHRoU3RvcmVBY3Rpb25PcHRpb25z
KE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhTdG9y
ZUFjdGlvbk9wdGlvbnNfKSwgc3RvcmVBY3Rpb25PcHRpb25zKTsKK30KKworLy8gbWV0aG9kOiBz
ZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVB
Y3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0
aW9uc18pLCBzdG9yZUFjdGlvbk9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IGRyYXdQcmltaXRp
dmVzOnZlcnRleFN0YXJ0OnZlcnRleENvdW50Omluc3RhbmNlQ291bnQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0
aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50
ZWdlciB2ZXJ0ZXhDb3VudCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQcmltaXRp
dmVzX3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50X2luc3RhbmNlQ291bnRfKSwgcHJpbWl0aXZlVHlw
ZSwgdmVydGV4U3RhcnQsIHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50KTsKK30KKworLy8gbWV0
aG9kOiBkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmlt
aXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJ
bnRlZ2VyIHZlcnRleENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0ZXhDb3Vu
dF8pLCBwcmltaXRpdmVUeXBlLCB2ZXJ0ZXhTdGFydCwgdmVydGV4Q291bnQpOworfQorCisvLyBt
ZXRob2Q6IGRyYXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlwZTppbmRleEJ1
ZmZlcjppbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmlt
aXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6Oklu
ZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJh
d0luZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5kZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4
QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfKSwgcHJpbWl0aXZlVHlwZSwgaW5kZXhDb3VudCwg
aW5kZXhUeXBlLCBpbmRleEJ1ZmZlciwgaW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNlQ291bnQp
OworfQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4
VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0
aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRl
eFR5cGUgaW5kZXhUeXBlLCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50
ZWdlciBpbmRleEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0luZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRf
aW5kZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4QnVmZmVyT2Zmc2V0XyksIHByaW1pdGl2ZVR5cGUs
IGluZGV4Q291bnQsIGluZGV4VHlwZSwgaW5kZXhCdWZmZXIsIGluZGV4QnVmZmVyT2Zmc2V0KTsK
K30KKworLy8gbWV0aG9kOiBkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDpp
bnN0YW5jZUNvdW50OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6ZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2
ZVR5cGUsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50
LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVydGV4Q291bnRfaW5zdGFuY2VDb3VudF9iYXNl
SW5zdGFuY2VfKSwgcHJpbWl0aXZlVHlwZSwgdmVydGV4U3RhcnQsIHZlcnRleENvdW50LCBpbnN0
YW5jZUNvdW50LCBiYXNlSW5zdGFuY2UpOworfQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUHJp
bWl0aXZlczppbmRleENvdW50OmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNl
dDppbnN0YW5jZUNvdW50OmJhc2VWZXJ0ZXg6YmFzZUluc3RhbmNlOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQ
cmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6
OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6
OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwg
TlM6OkludGVnZXIgYmFzZVZlcnRleCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0lu
ZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5kZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4QnVm
ZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZVZlcnRleF9iYXNlSW5zdGFuY2VfKSwgcHJpbWl0
aXZlVHlwZSwgaW5kZXhDb3VudCwgaW5kZXhUeXBlLCBpbmRleEJ1ZmZlciwgaW5kZXhCdWZmZXJP
ZmZzZXQsIGluc3RhbmNlQ291bnQsIGJhc2VWZXJ0ZXgsIGJhc2VJbnN0YW5jZSk7Cit9CisKKy8v
IG1ldGhvZDogZHJhd1ByaW1pdGl2ZXM6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZz
ZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQcmlt
aXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBjb25zdCBNVEw6OkJ1ZmZl
ciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJh
d1ByaW1pdGl2ZXNfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgcHJpbWl0
aXZlVHlwZSwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8g
bWV0aG9kOiBkcmF3SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhUeXBlOmluZGV4QnVmZmVyOmluZGV4
QnVmZmVyT2Zmc2V0OmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5kZXhlZFByaW1pdGl2
ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE1UTDo6SW5kZXhUeXBlIGluZGV4
VHlwZSwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhC
dWZmZXJPZmZzZXQsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhUeXBl
X2luZGV4QnVmZmVyX2luZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVm
ZmVyT2Zmc2V0XyksIHByaW1pdGl2ZVR5cGUsIGluZGV4VHlwZSwgaW5kZXhCdWZmZXIsIGluZGV4
QnVmZmVyT2Zmc2V0LCBpbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworfQor
CisvLyBtZXRob2Q6IHRleHR1cmVCYXJyaWVyCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnRleHR1cmVCYXJyaWVyKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZUJhcnJpZXIpKTsKK30KKwor
Ly8gbWV0aG9kOiB1cGRhdGVGZW5jZTphZnRlclN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVu
Y2UsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlRmVuY2VfYWZ0ZXJTdGFnZXNfKSwg
ZmVuY2UsIHN0YWdlcyk7Cit9CisKKy8vIG1ldGhvZDogd2FpdEZvckZlbmNlOmJlZm9yZVN0YWdl
czoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6d2FpdEZvckZl
bmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdh
aXRGb3JGZW5jZV9iZWZvcmVTdGFnZXNfKSwgZmVuY2UsIHN0YWdlcyk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOm9mZnNldDppbnN0YW5jZVN0cmlkZToKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGVzc2VsbGF0aW9u
RmFjdG9yQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZz
ZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZVN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVm
ZmVyX29mZnNldF9pbnN0YW5jZVN0cmlkZV8pLCBidWZmZXIsIG9mZnNldCwgaW5zdGFuY2VTdHJp
ZGUpOworfQorCisvLyBtZXRob2Q6IHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUZXNzZWxsYXRpb25GYWN0
b3JTY2FsZShmbG9hdCBzY2FsZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVfKSwgc2NhbGUp
OworfQorCisvLyBtZXRob2Q6IGRyYXdQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRj
aEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5z
dGFuY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQ
YXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRl
Z2VyIHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBNVEw6OkJ1ZmZl
ciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQs
IE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChk
cmF3UGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaElu
ZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlXyksIG51bWJlck9mUGF0
Y2hDb250cm9sUG9pbnRzLCBwYXRjaFN0YXJ0LCBwYXRjaENvdW50LCBwYXRjaEluZGV4QnVmZmVy
LCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlSW5zdGFuY2UpOwor
fQorCisvLyBtZXRob2Q6IGRyYXdQYXRjaGVzOnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1
ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd1BhdGNoZXMoTlM6OlVJbnRl
Z2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBjb25zdCBNVEw6OkJ1ZmZlciogcGF0Y2hJ
bmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IE1U
TDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zm
c2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChkcmF3UGF0Y2hlc19wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRf
aW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgbnVtYmVyT2ZQYXRjaENvbnRy
b2xQb2ludHMsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGluZGly
ZWN0QnVmZmVyLCBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0lu
ZGV4ZWRQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNo
SW5kZXhCdWZmZXJPZmZzZXQ6Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5k
ZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdJbmRleGVkUGF0Y2hlcyhOUzo6VUlu
dGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0
LCBOUzo6VUludGVnZXIgcGF0Y2hDb3VudCwgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhC
dWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1
ZmZlciogY29udHJvbFBvaW50SW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJ
bmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdl
ciBiYXNlSW5zdGFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNoQ291bnRf
cGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQb2ludEluZGV4
QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZUlu
c3RhbmNlXyksIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBwYXRjaFN0YXJ0LCBwYXRjaENv
dW50LCBwYXRjaEluZGV4QnVmZmVyLCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb250cm9sUG9p
bnRJbmRleEJ1ZmZlciwgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNlQ291
bnQsIGJhc2VJbnN0YW5jZSk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4ZWRQYXRjaGVzOnBh
dGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1
ZmZlcjpjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVj
dEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6ZHJhd0luZGV4ZWRQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBv
aW50cywgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBw
YXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZlciogY29udHJvbFBvaW50SW5k
ZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwgY29u
c3QgTVRMOjpCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZm
ZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhC
dWZmZXJPZmZzZXRfY29udHJvbFBvaW50SW5kZXhCdWZmZXJfY29udHJvbFBvaW50SW5kZXhCdWZm
ZXJPZmZzZXRfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgbnVtYmVyT2ZQ
YXRjaENvbnRyb2xQb2ludHMsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5kZXhCdWZmZXJPZmZz
ZXQsIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNl
dCwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVy
dHk6IHRpbGVXaWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyQ29tbWFu
ZEVuY29kZXI6OnRpbGVXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRpbGVXaWR0aCkpOwor
fQorCisvLyBwcm9wZXJ0eTogdGlsZUhlaWdodAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnRpbGVIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh0aWxlSGVpZ2h0KSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZUJ5dGVzOmxlbmd0aDphdElu
ZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxl
Qnl0ZXMoY29uc3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdl
ciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VGlsZUJ5dGVzX2xlbmd0aF9hdEluZGV4XyksIGJ5dGVzLCBsZW5ndGgsIGlu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlQnVmZmVyOm9mZnNldDphdEluZGV4OgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlQnVmZmVyKGNv
bnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdl
ciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VGlsZUJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwg
aW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVCdWZmZXJPZmZzZXQ6YXRJbmRleDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZUJ1ZmZlck9m
ZnNldChOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVCdWZm
ZXJPZmZzZXRfYXRJbmRleF8pLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRU
aWxlQnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZUJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnMsIGNv
bnN0IE5TOjpVSW50ZWdlciogb2Zmc2V0cywgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlQnVmZmVy
c19vZmZzZXRzX3dpdGhSYW5nZV8pLCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0VGlsZVRleHR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiB0
ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVUZXh0dXJlX2F0SW5kZXhfKSwgdGV4
dHVyZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVUZXh0dXJlczp3aXRoUmFuZ2U6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVUZXh0
dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZVRl
eHR1cmVzX3dpdGhSYW5nZV8pLCB0ZXh0dXJlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNl
dFRpbGVTYW1wbGVyU3RhdGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0VGlsZVNhbXBsZXJTdGF0ZShjb25zdCBNVEw6OlNhbXBsZXJTdGF0
ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlU2FtcGxlclN0YXRlX2F0SW5k
ZXhfKSwgc2FtcGxlciwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVTYW1wbGVyU3Rh
dGVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6c2V0VGlsZVNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZXNfd2l0aFJhbmdlXyksIHNhbXBsZXJz
LCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZVNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFt
cDpsb2RNYXhDbGFtcDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRUaWxlU2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBz
YW1wbGVyLCBmbG9hdCBsb2RNaW5DbGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdl
ciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdElu
ZGV4XyksIHNhbXBsZXIsIGxvZE1pbkNsYW1wLCBsb2RNYXhDbGFtcCwgaW5kZXgpOworfQorCisv
LyBtZXRob2Q6IHNldFRpbGVTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RNYXhDbGFtcHM6
d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXRUaWxlU2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3Qg
ZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNf
d2l0aFJhbmdlXyksIHNhbXBsZXJzLCBsb2RNaW5DbGFtcHMsIGxvZE1heENsYW1wcywgcmFuZ2Up
OworfQorCisvLyBtZXRob2Q6IHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZlcklu
ZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxl
VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVu
Y3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlVmlzaWJsZUZ1bmN0
aW9uVGFibGVfYXRCdWZmZXJJbmRleF8pLCBmdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9
CisKKy8vIG1ldGhvZDogc2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFu
Z2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVW
aXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVu
Y3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlVmlzaWJsZUZ1bmN0aW9uVGFi
bGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBmdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBt
ZXRob2Q6IHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSog
aW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRU
aWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIGludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlSW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZXMoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0
QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
OnNldFRpbGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfKSwgYWNjZWxlcmF0aW9u
U3RydWN0dXJlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogZGlzcGF0Y2hUaHJlYWRz
UGVyVGlsZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZGlz
cGF0Y2hUaHJlYWRzUGVyVGlsZShNVEw6OlNpemUgdGhyZWFkc1BlclRpbGUpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVGhy
ZWFkc1BlclRpbGVfKSwgdGhyZWFkc1BlclRpbGUpOworfQorCisvLyBtZXRob2Q6IHNldFRocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUlu
dGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoX29mZnNldF9hdEluZGV4XyksIGxlbmd0aCwgb2Zmc2V0
LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2U6dXNhZ2U6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlKGNvbnN0IE1UTDo6
UmVzb3VyY2UqIHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJlc291cmNl
X3VzYWdlXyksIHJlc291cmNlLCB1c2FnZSk7Cit9CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2Vz
OmNvdW50OnVzYWdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
Ojp1c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBj
b3VudCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZXNfY291bnRfdXNhZ2Vf
KSwgcmVzb3VyY2VzLCBjb3VudCwgdXNhZ2UpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNl
OnVzYWdlOnN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6dXNlUmVzb3VyY2UoY29uc3QgTVRMOjpSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3Vy
Y2VVc2FnZSB1c2FnZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZV91c2Fn
ZV9zdGFnZXNfKSwgcmVzb3VyY2UsIHVzYWdlLCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6IHVz
ZVJlc291cmNlczpjb3VudDp1c2FnZTpzdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXMs
IE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlLCBNVEw6OlJlbmRl
clN0YWdlcyBzdGFnZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHVzZVJlc291cmNlc19jb3VudF91c2FnZV9zdGFnZXNfKSwgcmVzb3Vy
Y2VzLCBjb3VudCwgdXNhZ2UsIHN0YWdlcyk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVhcDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcChjb25zdCBN
VEw6OkhlYXAqIGhlYXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBfKSwgaGVhcCk7Cit9CisKKy8vIG1ldGhvZDogdXNlSGVh
cHM6Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVz
ZUhlYXBzKE1UTDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwc19j
b3VudF8pLCBoZWFwcywgY291bnQpOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXA6c3RhZ2VzOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwKGNvbnN0
IE1UTDo6SGVhcCogaGVhcCwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwX3N0YWdl
c18pLCBoZWFwLCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXBzOmNvdW50OnN0YWdl
czoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcHMo
TVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVuZGVyU3RhZ2Vz
IHN0YWdlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodXNlSGVhcHNfY291bnRfc3RhZ2VzXyksIGhlYXBzLCBjb3VudCwgc3RhZ2VzKTsK
K30KKworLy8gbWV0aG9kOiBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmV4ZWN1dGVDb21tYW5kc0lu
QnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRC
dWZmZXIsIE5TOjpSYW5nZSBleGVjdXRpb25SYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXJf
d2l0aFJhbmdlXyksIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgZXhlY3V0aW9uUmFuZ2UpOworfQor
CisvLyBtZXRob2Q6IGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyOmluZGlyZWN0QnVmZmVyOmluZGly
ZWN0QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1
ZmZlciogaW5kaXJlY3RDb21tYW5kYnVmZmVyLCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kaXJlY3RS
YW5nZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChleGVjdXRlQ29t
bWFuZHNJbkJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8pLCBpbmRp
cmVjdENvbW1hbmRidWZmZXIsIGluZGlyZWN0UmFuZ2VCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zm
c2V0KTsKK30KKworLy8gbWV0aG9kOiBtZW1vcnlCYXJyaWVyV2l0aFNjb3BlOmFmdGVyU3RhZ2Vz
OmJlZm9yZVN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6bWVtb3J5QmFycmllcihNVEw6OkJhcnJpZXJTY29wZSBzY29wZSwgTVRMOjpSZW5kZXJTdGFn
ZXMgYWZ0ZXIsIE1UTDo6UmVuZGVyU3RhZ2VzIGJlZm9yZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtb3J5QmFycmllcldpdGhTY29w
ZV9hZnRlclN0YWdlc19iZWZvcmVTdGFnZXNfKSwgc2NvcGUsIGFmdGVyLCBiZWZvcmUpOworfQor
CisvLyBtZXRob2Q6IG1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzOmNvdW50OmFmdGVyU3RhZ2Vz
OmJlZm9yZVN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6bWVtb3J5QmFycmllcihNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2Vy
IGNvdW50LCBNVEw6OlJlbmRlclN0YWdlcyBhZnRlciwgTVRMOjpSZW5kZXJTdGFnZXMgYmVmb3Jl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChtZW1vcnlCYXJyaWVyV2l0aFJlc291cmNlc19jb3VudF9hZnRlclN0YWdlc19iZWZvcmVTdGFn
ZXNfKSwgcmVzb3VyY2VzLCBjb3VudCwgYWZ0ZXIsIGJlZm9yZSk7Cit9CisKKy8vIG1ldGhvZDog
c2FtcGxlQ291bnRlcnNJbkJ1ZmZlcjphdFNhbXBsZUluZGV4OndpdGhCYXJyaWVyOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzYW1wbGVDb3VudGVyc0luQnVm
ZmVyKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6VUlu
dGVnZXIgc2FtcGxlSW5kZXgsIGJvb2wgYmFycmllcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcl9h
dFNhbXBsZUluZGV4X3dpdGhCYXJyaWVyXyksIHNhbXBsZUJ1ZmZlciwgc2FtcGxlSW5kZXgsIGJh
cnJpZXIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFJlbmRlclBhc3MuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFJlbmRlclBhc3MuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1NzUxZWFhZTU1ZTBkODRjOTAzZjMz
NzFkMjViMTI5OTI1Mzk3ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGFzcy5ocHAKQEAgLTAsMCArMSw3ODYgQEAKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFs
L01UTFJlbmRlclBhc3MuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVh
ZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZW5kZXJQYXNzLmhwcCIK
KworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgTG9hZEFjdGlvbikg
eworICAgIExvYWRBY3Rpb25Eb250Q2FyZSA9IDAsCisgICAgTG9hZEFjdGlvbkxvYWQgPSAxLAor
ICAgIExvYWRBY3Rpb25DbGVhciA9IDIsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBT
dG9yZUFjdGlvbikgeworICAgIFN0b3JlQWN0aW9uRG9udENhcmUgPSAwLAorICAgIFN0b3JlQWN0
aW9uU3RvcmUgPSAxLAorICAgIFN0b3JlQWN0aW9uTXVsdGlzYW1wbGVSZXNvbHZlID0gMiwKKyAg
ICBTdG9yZUFjdGlvblN0b3JlQW5kTXVsdGlzYW1wbGVSZXNvbHZlID0gMywKKyAgICBTdG9yZUFj
dGlvblVua25vd24gPSA0LAorICAgIFN0b3JlQWN0aW9uQ3VzdG9tU2FtcGxlRGVwdGhTdG9yZSA9
IDUsCit9OworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBTdG9yZUFjdGlvbk9wdGlvbnMp
IHsKKyAgICBTdG9yZUFjdGlvbk9wdGlvbk5vbmUgPSAwLAorICAgIFN0b3JlQWN0aW9uT3B0aW9u
VmFsaWRNYXNrID0gMSwKKyAgICBTdG9yZUFjdGlvbk9wdGlvbkN1c3RvbVNhbXBsZVBvc2l0aW9u
cyA9IDEsCit9OworCitzdHJ1Y3QgQ2xlYXJDb2xvcgoreworICAgIHN0YXRpYyBDbGVhckNvbG9y
IE1ha2UoZG91YmxlIHJlZCwgZG91YmxlIGdyZWVuLCBkb3VibGUgYmx1ZSwgZG91YmxlIGFscGhh
KTsKKworICAgIENsZWFyQ29sb3IoKSA9IGRlZmF1bHQ7CisKKyAgICBDbGVhckNvbG9yKGRvdWJs
ZSByZWQsIGRvdWJsZSBncmVlbiwgZG91YmxlIGJsdWUsIGRvdWJsZSBhbHBoYSk7CisKKyAgICBk
b3VibGUgcmVkOworICAgIGRvdWJsZSBncmVlbjsKKyAgICBkb3VibGUgYmx1ZTsKKyAgICBkb3Vi
bGUgYWxwaGE7Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXh0dXJlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJl
KiB0ZXh0dXJlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxldmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0TGV2ZWwoTlM6OlVJbnRlZ2VyIGxldmVsKTsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2xpY2Uo
TlM6OlVJbnRlZ2VyIHNsaWNlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlcHRoUGxhbmUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFBsYW5lKE5TOjpVSW50ZWdlciBk
ZXB0aFBsYW5lKTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc29sdmVUZXh0dXJlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzb2x2ZVRleHR1cmUoY29uc3QgY2xhc3MgVGV4
dHVyZSogcmVzb2x2ZVRleHR1cmUpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZUxldmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzb2x2ZUxldmVsKE5TOjpVSW50
ZWdlciByZXNvbHZlTGV2ZWwpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZVNsaWNlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzb2x2ZVNsaWNlKE5TOjpVSW50ZWdl
ciByZXNvbHZlU2xpY2UpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZURlcHRoUGxhbmUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNvbHZlRGVwdGhQbGFuZShOUzo6
VUludGVnZXIgcmVzb2x2ZURlcHRoUGxhbmUpOworCisgICAgTVRMOjpMb2FkQWN0aW9uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9hZEFjdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExvYWRBY3Rpb24oTVRMOjpM
b2FkQWN0aW9uIGxvYWRBY3Rpb24pOworCisgICAgTVRMOjpTdG9yZUFjdGlvbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RvcmVBY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdG9yZUFjdGlvbihNVEw6OlN0b3Jl
QWN0aW9uIHN0b3JlQWN0aW9uKTsKKworICAgIE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zICAgICAg
ICAgICAgICAgICAgICAgIHN0b3JlQWN0aW9uT3B0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0b3JlQWN0aW9uT3B0aW9u
cyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMpOworfTsKKworY2xh
c3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlp
bmc8UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IsIE1UTDo6UmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRM
OjpDbGVhckNvbG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckNvbG9y
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRDbGVhckNvbG9yKE1UTDo6Q2xlYXJDb2xvciBjbGVhckNvbG9yKTsKK307CisK
K19NVExfRU5VTShOUzo6VUludGVnZXIsIE11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyKSB7
CisgICAgTXVsdGlzYW1wbGVEZXB0aFJlc29sdmVGaWx0ZXJTYW1wbGUwID0gMCwKKyAgICBNdWx0
aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlck1pbiA9IDEsCisgICAgTXVsdGlzYW1wbGVEZXB0aFJl
c29sdmVGaWx0ZXJNYXggPSAyLAorfTsKKworY2xhc3MgUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IsIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVi
bGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yKiAgICAgICAgaW5pdCgpOworCisgICAgZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGVhckRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDbGVhckRlcHRoKGRvdWJs
ZSBjbGVhckRlcHRoKTsKKworICAgIE1UTDo6TXVsdGlzYW1wbGVEZXB0aFJlc29sdmVGaWx0ZXIg
ICAgICAgICAgICAgICAgZGVwdGhSZXNvbHZlRmlsdGVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFJlc29sdmVG
aWx0ZXIoTVRMOjpNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlciBkZXB0aFJlc29sdmVGaWx0
ZXIpOworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgTXVsdGlzYW1wbGVTdGVuY2lsUmVz
b2x2ZUZpbHRlcikgeworICAgIE11bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXJTYW1wbGUw
ID0gMCwKKyAgICBNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyRGVwdGhSZXNvbHZlZFNh
bXBsZSA9IDEsCit9OworCitjbGFzcyBSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3IsIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRv
ciogICAgICAgIGluaXQoKTsKKworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGVhclN0ZW5jaWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q2xlYXJTdGVuY2ls
KHVpbnQzMl90IGNsZWFyU3RlbmNpbCk7CisKKyAgICBNVEw6Ok11bHRpc2FtcGxlU3RlbmNpbFJl
c29sdmVGaWx0ZXIgICAgICAgICAgICAgICAgc3RlbmNpbFJlc29sdmVGaWx0ZXIoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0U3RlbmNpbFJlc29sdmVGaWx0ZXIoTVRMOjpNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmls
dGVyIHN0ZW5jaWxSZXNvbHZlRmlsdGVyKTsKK307CisKK2NsYXNzIFJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNsYXNzIFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7
CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAg
ICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworfTsKKwor
Y2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGlj
IE5TOjpDb3B5aW5nPFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4K
K3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQ291
bnRlclNhbXBsZUJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQnVm
ZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0U2FtcGxlQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1w
bGVCdWZmZXIqIHNhbXBsZUJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRTdGFydE9mVmVydGV4U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0
YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRPZlZlcnRleFNhbXBsZUluZGV4KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZW
ZXJ0ZXhTYW1wbGVJbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFy
dE9mRnJhZ21lbnRTYW1wbGVJbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRFbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVu
ZE9mRnJhZ21lbnRTYW1wbGVJbmRleCk7Cit9OworCitjbGFzcyBSZW5kZXJQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVu
ZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBSZW5k
ZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVj
dChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNv
bnN0IGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYXR0
YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7Cit9OworCitjbGFzcyBSZW5k
ZXJQYXNzRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQYXNzRGVzY3JpcHRv
cj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc0Rlc2NyaXB0b3IqICAg
ICAgICAgICAgICAgICAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NEZXNjcmlw
dG9yKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xh
c3MgUmVuZGVyUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgcmVuZGVyUGFzc0Rl
c2NyaXB0b3IoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXkqICAgICAgICBjb2xvckF0dGFjaG1lbnRzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgZGVwdGhBdHRh
Y2htZW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldERlcHRoQXR0YWNobWVudChjb25zdCBjbGFzcyBSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVwdGhBdHRhY2htZW50KTsKKworICAgIGNs
YXNzIFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICBzdGVu
Y2lsQXR0YWNobWVudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVuY2lsQXR0YWNobWVudChjb25zdCBjbGFz
cyBSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiBzdGVuY2lsQXR0YWNobWVu
dCk7CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWaXNpYmlsaXR5
UmVzdWx0QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogdmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcik7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVuZGVyVGFyZ2V0
QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIHJlbmRlclRhcmdldEFycmF5TGVuZ3RoKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bWFnZWJsb2NrU2FtcGxlTGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEltYWdlYmxvY2tTYW1wbGVMZW5n
dGgoTlM6OlVJbnRlZ2VyIGltYWdlYmxvY2tTYW1wbGVMZW5ndGgpOworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGdyb3Vw
TWVtb3J5TGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKE5TOjpV
SW50ZWdlciB0aHJlYWRncm91cE1lbW9yeUxlbmd0aCk7CisKKyAgICBOUzo6VUludGVnZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZVdpZHRoKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFRpbGVXaWR0aChOUzo6VUludGVnZXIgdGlsZVdpZHRoKTsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlSGVpZ2h0
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFRpbGVIZWlnaHQoTlM6OlVJbnRlZ2VyIHRpbGVIZWlnaHQpOworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZWZhdWx0UmFzdGVyU2Ft
cGxlQ291bnQoTlM6OlVJbnRlZ2VyIGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVu
ZGVyVGFyZ2V0V2lkdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVuZGVyVGFyZ2V0V2lkdGgoTlM6OlVJbnRl
Z2VyIHJlbmRlclRhcmdldFdpZHRoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXRIZWlnaHQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0UmVuZGVyVGFyZ2V0SGVpZ2h0KE5TOjpVSW50ZWdlciByZW5kZXJUYXJnZXRIZWlnaHQp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFNhbXBsZVBvc2l0aW9ucyhjb25zdCBNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3Np
dGlvbnMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2FtcGxlUG9zaXRpb25zKE1UTDo6
U2FtcGxlUG9zaXRpb24qIHBvc2l0aW9ucywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAgIGNs
YXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwKiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXN0
ZXJpemF0aW9uUmF0ZU1hcCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcChjb25z
dCBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcCogcmFzdGVyaXphdGlvblJhdGVNYXApOworCisg
ICAgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkq
IHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3Q7Cit9OworCit9CisKK19NVExfSU5MSU5F
IE1UTDo6Q2xlYXJDb2xvciBNVEw6OkNsZWFyQ29sb3I6Ok1ha2UoZG91YmxlIHJlZCwgZG91Ymxl
IGdyZWVuLCBkb3VibGUgYmx1ZSwgZG91YmxlIGFscGhhKQoreworICAgIHJldHVybiBDbGVhckNv
bG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKK30KKworX01UTF9JTkxJTkUgTVRMOjpDbGVh
ckNvbG9yOjpDbGVhckNvbG9yKGRvdWJsZSBfcmVkLCBkb3VibGUgX2dyZWVuLCBkb3VibGUgX2Js
dWUsIGRvdWJsZSBfYWxwaGEpCisgICAgOiByZWQoX3JlZCkKKyAgICAsIGdyZWVuKF9ncmVlbikK
KyAgICAsIGJsdWUoX2JsdWUpCisgICAgLCBhbHBoYShfYWxwaGEpCit7Cit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvciogTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmUKK19NVExf
SU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6
OnRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRUZXh0dXJl
KGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGV4dHVyZV8pLCB0ZXh0dXJlKTsKK30K
KworLy8gcHJvcGVydHk6IGxldmVsCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OmxldmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGV2ZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvcjo6c2V0TGV2ZWwoTlM6OlVJbnRlZ2VyIGxldmVsKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMZXZlbF8pLCBsZXZl
bCk7Cit9CisKKy8vIHByb3BlcnR5OiBzbGljZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzbGljZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNsaWNlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I6OnNldFNsaWNlKE5TOjpVSW50ZWdlciBzbGljZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2xpY2Vf
KSwgc2xpY2UpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGhQbGFuZQorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpkZXB0aFBsYW5l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhQbGFuZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXREZXB0aFBsYW5lKE5T
OjpVSW50ZWdlciBkZXB0aFBsYW5lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFBsYW5lXyksIGRlcHRoUGxhbmUpOworfQor
CisvLyBwcm9wZXJ0eTogcmVzb2x2ZVRleHR1cmUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSog
TVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnJlc29sdmVUZXh0dXJlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHJlc29sdmVUZXh0dXJlKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFJlc29sdmVUZXh0dXJl
KGNvbnN0IE1UTDo6VGV4dHVyZSogcmVzb2x2ZVRleHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc29sdmVUZXh0dXJlXyks
IHJlc29sdmVUZXh0dXJlKTsKK30KKworLy8gcHJvcGVydHk6IHJlc29sdmVMZXZlbAorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpy
ZXNvbHZlTGV2ZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvbHZlTGV2ZWwpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0
UmVzb2x2ZUxldmVsKE5TOjpVSW50ZWdlciByZXNvbHZlTGV2ZWwpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc29sdmVMZXZlbF8p
LCByZXNvbHZlTGV2ZWwpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb2x2ZVNsaWNlCitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnJl
c29sdmVTbGljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc29sdmVTbGljZSkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRS
ZXNvbHZlU2xpY2UoTlM6OlVJbnRlZ2VyIHJlc29sdmVTbGljZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVzb2x2ZVNsaWNlXyks
IHJlc29sdmVTbGljZSk7Cit9CisKKy8vIHByb3BlcnR5OiByZXNvbHZlRGVwdGhQbGFuZQorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
OjpyZXNvbHZlRGVwdGhQbGFuZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc29sdmVEZXB0aFBs
YW5lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3I6OnNldFJlc29sdmVEZXB0aFBsYW5lKE5TOjpVSW50ZWdlciByZXNvbHZlRGVwdGhQ
bGFuZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0UmVzb2x2ZURlcHRoUGxhbmVfKSwgcmVzb2x2ZURlcHRoUGxhbmUpOworfQorCisv
LyBwcm9wZXJ0eTogbG9hZEFjdGlvbgorX01UTF9JTkxJTkUgTVRMOjpMb2FkQWN0aW9uIE1UTDo6
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpsb2FkQWN0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxvYWRBY3Rpb24+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobG9hZEFjdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRMb2FkQWN0aW9uKE1UTDo6TG9hZEFjdGlv
biBsb2FkQWN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRMb2FkQWN0aW9uXyksIGxvYWRBY3Rpb24pOworfQorCisvLyBwcm9w
ZXJ0eTogc3RvcmVBY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6U3RvcmVBY3Rpb24gTVRMOjpSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnN0b3JlQWN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JlQWN0aW9uPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHN0b3JlQWN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rp
b24gc3RvcmVBY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0b3JlQWN0aW9uXyksIHN0b3JlQWN0aW9uKTsKK30KKworLy8g
cHJvcGVydHk6IHN0b3JlQWN0aW9uT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpTdG9yZUFjdGlv
bk9wdGlvbnMgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnN0b3JlQWN0aW9u
T3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpT
dG9yZUFjdGlvbk9wdGlvbnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RvcmVBY3Rpb25PcHRp
b25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3I6OnNldFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBz
dG9yZUFjdGlvbk9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0b3JlQWN0aW9uT3B0aW9uc18pLCBzdG9yZUFjdGlvbk9w
dGlvbnMpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojph
bGxvYzxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8v
IG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGNsZWFyQ29sb3IKK19N
VExfSU5MSU5FIE1UTDo6Q2xlYXJDb2xvciBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpjbGVhckNvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkNsZWFyQ29sb3I+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY2xlYXJDb2xv
cikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldENsZWFyQ29sb3IoTVRMOjpDbGVhckNvbG9yIGNsZWFyQ29sb3IpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dENsZWFyQ29sb3JfKSwgY2xlYXJDb2xvcik7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBN
VEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9w
ZXJ0eTogY2xlYXJEZXB0aAorX01UTF9JTkxJTkUgZG91YmxlIE1UTDo6UmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyRGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPGRvdWJsZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChjbGVhckRl
cHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJEZXB0aChkb3VibGUgY2xlYXJEZXB0aCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q2xlYXJE
ZXB0aF8pLCBjbGVhckRlcHRoKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoUmVzb2x2ZUZpbHRl
cgorX01UTF9JTkxJTkUgTVRMOjpNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlciBNVEw6OlJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpkZXB0aFJlc29sdmVGaWx0ZXIoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TXVsdGlzYW1wbGVE
ZXB0aFJlc29sdmVGaWx0ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhSZXNvbHZlRmls
dGVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c2V0RGVwdGhSZXNvbHZlRmlsdGVyKE1UTDo6TXVsdGlzYW1wbGVEZXB0
aFJlc29sdmVGaWx0ZXIgZGVwdGhSZXNvbHZlRmlsdGVyKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFJlc29sdmVGaWx0ZXJf
KSwgZGVwdGhSZXNvbHZlRmlsdGVyKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciogTVRM
OjpSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50
RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1l
bnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpS
ZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NTdGVu
Y2lsQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcj4oKTsKK30K
KworLy8gcHJvcGVydHk6IGNsZWFyU3RlbmNpbAorX01UTF9JTkxJTkUgdWludDMyX3QgTVRMOjpS
ZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhclN0ZW5jaWwoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGNsZWFyU3RlbmNpbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJTdGVuY2lsKHVp
bnQzMl90IGNsZWFyU3RlbmNpbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q2xlYXJTdGVuY2lsXyksIGNsZWFyU3RlbmNpbCk7Cit9
CisKKy8vIHByb3BlcnR5OiBzdGVuY2lsUmVzb2x2ZUZpbHRlcgorX01UTF9JTkxJTkUgTVRMOjpN
dWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvcjo6c3RlbmNpbFJlc29sdmVGaWx0ZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZp
bHRlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVuY2lsUmVzb2x2ZUZpbHRlcikpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2V0U3RlbmNpbFJlc29sdmVGaWx0ZXIoTVRMOjpNdWx0aXNhbXBsZVN0ZW5jaWxSZXNv
bHZlRmlsdGVyIHN0ZW5jaWxSZXNvbHZlRmlsdGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsUmVzb2x2ZUZpbHRlcl8p
LCBzdGVuY2lsUmVzb2x2ZUZpbHRlcik7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkq
IE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRM
OjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2Ny
aXB0OgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ciogTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpvYmplY3Qo
TlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudElu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXk6OnNldE9iamVjdChjb25zdCBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3Rf
YXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisK
Ky8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I+KF9N
VExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6aW5pdDxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4o
KTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpDb3Vu
dGVyU2FtcGxlQnVmZmVyKiBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvcjo6c2FtcGxlQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNhbXBsZUJ1ZmZlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1Nh
bXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTYW1wbGVCdWZmZXIoY29uc3QgTVRM
OjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZUJ1ZmZlcl8pLCBz
YW1wbGVCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I6OnN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRT
dGFydE9mVmVydGV4U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJ
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0U3RhcnRPZlZlcnRleFNhbXBsZUluZGV4XyksIHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJ
bmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmRPZlZlcnRleFNhbXBsZUluZGV4CitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I6OmVuZE9mVmVydGV4U2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChl
bmRPZlZlcnRleFNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldEVuZE9mVmVydGV4U2Ft
cGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mVmVydGV4U2FtcGxlSW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEVuZE9mVmVy
dGV4U2FtcGxlSW5kZXhfKSwgZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBzdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2Vy
IE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzdGFydE9m
RnJhZ21lbnRTYW1wbGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0T2ZGcmFnbWVu
dFNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0YXJ0T2ZGcmFnbWVudFNhbXBsZUlu
ZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhcnRPZkZy
YWdtZW50U2FtcGxlSW5kZXhfKSwgc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgpOworfQorCisv
LyBwcm9wZXJ0eTogZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OmVu
ZE9mRnJhZ21lbnRTYW1wbGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZE9mRnJhZ21l
bnRTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1Nh
bXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRFbmRPZkZyYWdtZW50U2FtcGxlSW5k
ZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RW5kT2ZGcmFnbWVu
dFNhbXBsZUluZGV4XyksIGVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCk7Cit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJl
bmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5k
ZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0
dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJ
bmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0
IE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2ht
ZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vi
c2NyaXB0XyksIGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yKiBNVEw6
OlJlbmRlclBhc3NEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBN
VEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjppbml0
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NEZXNjcmlw
dG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiByZW5kZXJQYXNzRGVzY3JpcHRvcgorX01U
TF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVzY3Jp
cHRvcjo6cmVuZGVyUGFzc0Rlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJl
bmRlclBhc3NEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChyZW5kZXJQYXNzRGVzY3JpcHRv
cikpOworfQorCisvLyBwcm9wZXJ0eTogY29sb3JBdHRhY2htZW50cworX01UTF9JTkxJTkUgTVRM
OjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBh
c3NEZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbG9yQXR0YWNobWVudHMpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGRlcHRoQXR0YWNobWVudAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6ZGVw
dGhBdHRhY2htZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChkZXB0aEF0dGFjaG1lbnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlclBhc3NEZXNjcmlwdG9yOjpzZXREZXB0aEF0dGFjaG1lbnQoY29uc3QgTVRMOjpSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogZGVwdGhBdHRhY2htZW50KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aEF0
dGFjaG1lbnRfKSwgZGVwdGhBdHRhY2htZW50KTsKK30KKworLy8gcHJvcGVydHk6IHN0ZW5jaWxB
dHRhY2htZW50CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERl
c2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnN0ZW5jaWxBdHRhY2htZW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBhc3NT
dGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZW5j
aWxBdHRhY2htZW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVz
Y3JpcHRvcjo6c2V0U3RlbmNpbEF0dGFjaG1lbnQoY29uc3QgTVRMOjpSZW5kZXJQYXNzU3RlbmNp
bEF0dGFjaG1lbnREZXNjcmlwdG9yKiBzdGVuY2lsQXR0YWNobWVudCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbEF0dGFj
aG1lbnRfKSwgc3RlbmNpbEF0dGFjaG1lbnQpOworfQorCisvLyBwcm9wZXJ0eTogdmlzaWJpbGl0
eVJlc3VsdEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6UmVuZGVyUGFzc0Rl
c2NyaXB0b3I6OnZpc2liaWxpdHlSZXN1bHRCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2
aXNpYmlsaXR5UmVzdWx0QnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJQYXNzRGVzY3JpcHRvcjo6c2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcihjb25zdCBNVEw6OkJ1
ZmZlciogdmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcl8p
LCB2aXNpYmlsaXR5UmVzdWx0QnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IHJlbmRlclRhcmdl
dEFycmF5TGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVz
Y3JpcHRvcjo6cmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChy
ZW5kZXJUYXJnZXRBcnJheUxlbmd0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdl
ciByZW5kZXJUYXJnZXRBcnJheUxlbmd0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGhfKSwg
cmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgpOworfQorCisvLyBwcm9wZXJ0eTogaW1hZ2VibG9ja1Nh
bXBsZUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OmltYWdlYmxvY2tTYW1wbGVMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbWFn
ZWJsb2NrU2FtcGxlTGVuZ3RoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
YXNzRGVzY3JpcHRvcjo6c2V0SW1hZ2VibG9ja1NhbXBsZUxlbmd0aChOUzo6VUludGVnZXIgaW1h
Z2VibG9ja1NhbXBsZUxlbmd0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW1hZ2VibG9ja1NhbXBsZUxlbmd0aF8pLCBpbWFnZWJs
b2NrU2FtcGxlTGVuZ3RoKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZGdyb3VwTWVtb3J5TGVu
Z3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6
dGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRncm91
cE1lbW9yeUxlbmd0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rl
c2NyaXB0b3I6OnNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKE5TOjpVSW50ZWdlciB0aHJlYWRn
cm91cE1lbW9yeUxlbmd0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGhfKSwgdGhyZWFkZ3Jv
dXBNZW1vcnlMZW5ndGgpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZVdpZHRoCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dGlsZVdpZHRoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwodGlsZVdpZHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0VGlsZVdpZHRoKE5TOjpVSW50ZWdlciB0aWxlV2lk
dGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFRpbGVXaWR0aF8pLCB0aWxlV2lkdGgpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZUhl
aWdodAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6
OnRpbGVIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aWxlSGVpZ2h0KSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0VGlsZUhlaWdodChO
Uzo6VUludGVnZXIgdGlsZUhlaWdodCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUhlaWdodF8pLCB0aWxlSGVpZ2h0KTsKK30K
KworLy8gcHJvcGVydHk6IGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmRlZmF1bHRSYXN0ZXJTYW1wbGVD
b3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldERlZmF1
bHRSYXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgZGVmYXVsdFJhc3RlclNhbXBsZUNvdW50
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXREZWZhdWx0UmFzdGVyU2FtcGxlQ291bnRfKSwgZGVmYXVsdFJhc3RlclNhbXBsZUNvdW50
KTsKK30KKworLy8gcHJvcGVydHk6IHJlbmRlclRhcmdldFdpZHRoCitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6cmVuZGVyVGFyZ2V0V2lkdGgoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChyZW5kZXJUYXJnZXRXaWR0aCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFJlbmRlclRhcmdldFdpZHRoKE5T
OjpVSW50ZWdlciByZW5kZXJUYXJnZXRXaWR0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyVGFyZ2V0V2lkdGhfKSwgcmVu
ZGVyVGFyZ2V0V2lkdGgpOworfQorCisvLyBwcm9wZXJ0eTogcmVuZGVyVGFyZ2V0SGVpZ2h0Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6cmVuZGVy
VGFyZ2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyVGFyZ2V0SGVpZ2h0KSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0UmVu
ZGVyVGFyZ2V0SGVpZ2h0KE5TOjpVSW50ZWdlciByZW5kZXJUYXJnZXRIZWlnaHQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlbmRl
clRhcmdldEhlaWdodF8pLCByZW5kZXJUYXJnZXRIZWlnaHQpOworfQorCisvLyBtZXRob2Q6IHNl
dFNhbXBsZVBvc2l0aW9uczpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNz
RGVzY3JpcHRvcjo6c2V0U2FtcGxlUG9zaXRpb25zKGNvbnN0IE1UTDo6U2FtcGxlUG9zaXRpb24q
IHBvc2l0aW9ucywgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVQb3NpdGlvbnNfY291bnRf
KSwgcG9zaXRpb25zLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZ2V0U2FtcGxlUG9zaXRpb25z
OmNvdW50OgorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0
b3I6OmdldFNhbXBsZVBvc2l0aW9ucyhNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5T
OjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZ2V0U2FtcGxlUG9zaXRpb25zX2NvdW50
XyksIHBvc2l0aW9ucywgY291bnQpOworfQorCisvLyBwcm9wZXJ0eTogcmFzdGVyaXphdGlvblJh
dGVNYXAKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXAqIE1UTDo6UmVuZGVy
UGFzc0Rlc2NyaXB0b3I6OnJhc3Rlcml6YXRpb25SYXRlTWFwKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChyYXN0ZXJpemF0aW9uUmF0ZU1hcCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFJhc3Rlcml6YXRpb25SYXRlTWFw
KGNvbnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXAqIHJhc3Rlcml6YXRpb25SYXRlTWFwKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcF8pLCByYXN0ZXJpemF0aW9uUmF0ZU1hcCk7Cit9CisKKy8v
IHByb3BlcnR5OiBzYW1wbGVCdWZmZXJBdHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpSZW5k
ZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQ
YXNzRGVzY3JpcHRvcjo6c2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnRzKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMUmVuZGVyUGlwZWxpbmUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDFkYjZm
NmIzN2UwMmZlM2I2YTZmMDZkYjkzMGE2ZjIzY2FlMWMyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhwcApA
QCAtMCwwICsxLDEyMTIgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJp
dmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5j
bHVkZSAiTVRMUGl4ZWxGb3JtYXQuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlckNvbW1hbmRFbmNv
ZGVyLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQaXBlbGluZS5ocHAiCisjaW5jbHVkZSAiTVRM
VHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBC
bGVuZEZhY3RvcikgeworICAgIEJsZW5kRmFjdG9yWmVybyA9IDAsCisgICAgQmxlbmRGYWN0b3JP
bmUgPSAxLAorICAgIEJsZW5kRmFjdG9yU291cmNlQ29sb3IgPSAyLAorICAgIEJsZW5kRmFjdG9y
T25lTWludXNTb3VyY2VDb2xvciA9IDMsCisgICAgQmxlbmRGYWN0b3JTb3VyY2VBbHBoYSA9IDQs
CisgICAgQmxlbmRGYWN0b3JPbmVNaW51c1NvdXJjZUFscGhhID0gNSwKKyAgICBCbGVuZEZhY3Rv
ckRlc3RpbmF0aW9uQ29sb3IgPSA2LAorICAgIEJsZW5kRmFjdG9yT25lTWludXNEZXN0aW5hdGlv
bkNvbG9yID0gNywKKyAgICBCbGVuZEZhY3RvckRlc3RpbmF0aW9uQWxwaGEgPSA4LAorICAgIEJs
ZW5kRmFjdG9yT25lTWludXNEZXN0aW5hdGlvbkFscGhhID0gOSwKKyAgICBCbGVuZEZhY3RvclNv
dXJjZUFscGhhU2F0dXJhdGVkID0gMTAsCisgICAgQmxlbmRGYWN0b3JCbGVuZENvbG9yID0gMTEs
CisgICAgQmxlbmRGYWN0b3JPbmVNaW51c0JsZW5kQ29sb3IgPSAxMiwKKyAgICBCbGVuZEZhY3Rv
ckJsZW5kQWxwaGEgPSAxMywKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzQmxlbmRBbHBoYSA9IDE0
LAorICAgIEJsZW5kRmFjdG9yU291cmNlMUNvbG9yID0gMTUsCisgICAgQmxlbmRGYWN0b3JPbmVN
aW51c1NvdXJjZTFDb2xvciA9IDE2LAorICAgIEJsZW5kRmFjdG9yU291cmNlMUFscGhhID0gMTcs
CisgICAgQmxlbmRGYWN0b3JPbmVNaW51c1NvdXJjZTFBbHBoYSA9IDE4LAorfTsKKworX01UTF9F
TlVNKE5TOjpVSW50ZWdlciwgQmxlbmRPcGVyYXRpb24pIHsKKyAgICBCbGVuZE9wZXJhdGlvbkFk
ZCA9IDAsCisgICAgQmxlbmRPcGVyYXRpb25TdWJ0cmFjdCA9IDEsCisgICAgQmxlbmRPcGVyYXRp
b25SZXZlcnNlU3VidHJhY3QgPSAyLAorICAgIEJsZW5kT3BlcmF0aW9uTWluID0gMywKKyAgICBC
bGVuZE9wZXJhdGlvbk1heCA9IDQsCit9OworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBD
b2xvcldyaXRlTWFzaykgeworICAgIENvbG9yV3JpdGVNYXNrTm9uZSA9IDAsCisgICAgQ29sb3JX
cml0ZU1hc2tBbHBoYSA9IDEsCisgICAgQ29sb3JXcml0ZU1hc2tCbHVlID0gMiwKKyAgICBDb2xv
cldyaXRlTWFza0dyZWVuID0gNCwKKyAgICBDb2xvcldyaXRlTWFza1JlZCA9IDgsCisgICAgQ29s
b3JXcml0ZU1hc2tBbGwgPSAxNSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFByaW1p
dGl2ZVRvcG9sb2d5Q2xhc3MpIHsKKyAgICBQcmltaXRpdmVUb3BvbG9neUNsYXNzVW5zcGVjaWZp
ZWQgPSAwLAorICAgIFByaW1pdGl2ZVRvcG9sb2d5Q2xhc3NQb2ludCA9IDEsCisgICAgUHJpbWl0
aXZlVG9wb2xvZ3lDbGFzc0xpbmUgPSAyLAorICAgIFByaW1pdGl2ZVRvcG9sb2d5Q2xhc3NUcmlh
bmdsZSA9IDMsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBUZXNzZWxsYXRpb25QYXJ0
aXRpb25Nb2RlKSB7CisgICAgVGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZVBvdzIgPSAwLAorICAg
IFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVJbnRlZ2VyID0gMSwKKyAgICBUZXNzZWxsYXRpb25Q
YXJ0aXRpb25Nb2RlRnJhY3Rpb25hbE9kZCA9IDIsCisgICAgVGVzc2VsbGF0aW9uUGFydGl0aW9u
TW9kZUZyYWN0aW9uYWxFdmVuID0gMywKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFRl
c3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbikgeworICAgIFRlc3NlbGxhdGlvbkZhY3RvclN0
ZXBGdW5jdGlvbkNvbnN0YW50ID0gMCwKKyAgICBUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rp
b25QZXJQYXRjaCA9IDEsCisgICAgVGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uUGVySW5z
dGFuY2UgPSAyLAorICAgIFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvblBlclBhdGNoQW5k
UGVySW5zdGFuY2UgPSAzLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVGVzc2VsbGF0
aW9uRmFjdG9yRm9ybWF0KSB7CisgICAgVGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0SGFsZiA9IDAs
Cit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJ
bmRleFR5cGUpIHsKKyAgICBUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGVOb25lID0g
MCwKKyAgICBUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGVVSW50MTYgPSAxLAorICAg
IFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZVVJbnQzMiA9IDIsCit9OworCitjbGFz
cyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNv
cHlpbmc8UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbEZvcm1hdCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBp
eGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpOworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRpbmdFbmFi
bGVkKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0QmxlbmRpbmdFbmFibGVkKGJvb2wgYmxlbmRpbmdFbmFibGVkKTsK
KworICAgIE1UTDo6QmxlbmRGYWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZVJHQkJsZW5kRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U291cmNlUkdCQmxlbmRGYWN0
b3IoTVRMOjpCbGVuZEZhY3RvciBzb3VyY2VSR0JCbGVuZEZhY3Rvcik7CisKKyAgICBNVEw6OkJs
ZW5kRmFjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlv
blJHQkJsZW5kRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcihN
VEw6OkJsZW5kRmFjdG9yIGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IpOworCisgICAgTVRMOjpC
bGVuZE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiQmxlbmRP
cGVyYXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRSZ2JCbGVuZE9wZXJhdGlvbihNVEw6OkJsZW5kT3BlcmF0
aW9uIHJnYkJsZW5kT3BlcmF0aW9uKTsKKworICAgIE1UTDo6QmxlbmRGYWN0b3IgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUFscGhhQmxlbmRGYWN0b3IoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yKE1UTDo6QmxlbmRGYWN0b3Igc291cmNlQWxw
aGFCbGVuZEZhY3Rvcik7CisKKyAgICBNVEw6OkJsZW5kRmFjdG9yICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXREZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBkZXN0aW5h
dGlvbkFscGhhQmxlbmRGYWN0b3IpOworCisgICAgTVRMOjpCbGVuZE9wZXJhdGlvbiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFCbGVuZE9wZXJhdGlvbigpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEFscGhhQmxlbmRPcGVyYXRpb24oTVRMOjpCbGVuZE9wZXJhdGlvbiBhbHBoYUJsZW5kT3Bl
cmF0aW9uKTsKKworICAgIE1UTDo6Q29sb3JXcml0ZU1hc2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlTWFzaygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFdyaXRlTWFzayhNVEw6OkNvbG9y
V3JpdGVNYXNrIHdyaXRlTWFzayk7Cit9OworCitjbGFzcyBSZW5kZXJQaXBlbGluZVJlZmxlY3Rp
b24gOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbj4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBhbGxv
YygpOworCisgICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiAgICAgICAgaW5pdCgp
OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4QXJn
dW1lbnRzKCkgY29uc3Q7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmcmFnbWVudEFyZ3VtZW50cygpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGlsZUFyZ3VtZW50cygpIGNvbnN0OworfTsKKworY2xhc3Mg
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKiAgICAgICAgICAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6
U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRnVu
Y3Rpb24qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEZ1bmN0aW9u
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFZlcnRleEZ1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiB2ZXJ0ZXhG
dW5jdGlvbik7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnJhZ21lbnRGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGcmFnbWVudEZ1bmN0aW9u
KGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBmcmFnbWVudEZ1bmN0aW9uKTsKKworICAgIGNsYXNzIFZl
cnRleERlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhEZXNjcmlw
dG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFZlcnRleERlc2NyaXB0b3IoY29uc3QgY2xhc3MgVmVydGV4RGVzY3Jp
cHRvciogdmVydGV4RGVzY3JpcHRvcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FtcGxl
Q291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXN0ZXJTYW1wbGVDb3VudCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRSYXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgcmFzdGVyU2FtcGxlQ291bnQp
OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWxwaGFUb0NvdmVyYWdlRW5h
YmxlZChib29sIGFscGhhVG9Db3ZlcmFnZUVuYWJsZWQpOworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhVG9PbmVFbmFibGVkKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEFscGhhVG9PbmVFbmFibGVkKGJvb2wgYWxwaGFUb09uZUVuYWJsZWQpOworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJh
c3Rlcml6YXRpb25FbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJhc3Rlcml6YXRpb25FbmFibGVkKGJvb2wg
cmFzdGVyaXphdGlvbkVuYWJsZWQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRNYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQoTlM6OlVJbnRlZ2VyIG1heFZlcnRl
eEFtcGxpZmljYXRpb25Db3VudCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSogY29sb3JBdHRhY2htZW50cygpIGNvbnN0OworCisgICAg
TVRMOjpQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRo
QXR0YWNobWVudFBpeGVsRm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoQXR0YWNobWVudFBpeGVsRm9y
bWF0KE1UTDo6UGl4ZWxGb3JtYXQgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQpOworCisgICAg
TVRMOjpQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZW5j
aWxBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbEF0dGFjaG1lbnRQaXhl
bEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQpOwor
CisgICAgTVRMOjpQcmltaXRpdmVUb3BvbG9neUNsYXNzICAgICAgICAgICAgICAgICAgICAgICAg
IGlucHV0UHJpbWl0aXZlVG9wb2xvZ3koKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5wdXRQcmltaXRpdmVUb3BvbG9n
eShNVEw6OlByaW1pdGl2ZVRvcG9sb2d5Q2xhc3MgaW5wdXRQcmltaXRpdmVUb3BvbG9neSk7CisK
KyAgICBNVEw6OlRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUgICAgICAgICAgICAgICAgICAgICAg
dGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXNzZWxsYXRpb25QYXJ0aXRp
b25Nb2RlKE1UTDo6VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSB0ZXNzZWxsYXRpb25QYXJ0aXRp
b25Nb2RlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXhUZXNzZWxsYXRpb25GYWN0b3IoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4VGVzc2VsbGF0
aW9uRmFjdG9yKE5TOjpVSW50ZWdlciBtYXhUZXNzZWxsYXRpb25GYWN0b3IpOworCisgICAgYm9v
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3NlbGxh
dGlvbkZhY3RvclNjYWxlRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2Fs
ZUVuYWJsZWQoYm9vbCB0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQpOworCisgICAgTVRM
OjpUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgIHRlc3NlbGxh
dGlvbkZhY3RvckZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQoTVRM
OjpUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQgdGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KTsKKwor
ICAgIE1UTDo6VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlICAgICAgICAgICAgICB0
ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGVzc2VsbGF0aW9u
Q29udHJvbFBvaW50SW5kZXhUeXBlKE1UTDo6VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhU
eXBlIHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSk7CisKKyAgICBNVEw6OlRlc3Nl
bGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbiAgICAgICAgICAgICAgICAgdGVzc2VsbGF0aW9uRmFj
dG9yU3RlcEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlv
bihNVEw6OlRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbiB0ZXNzZWxsYXRpb25GYWN0b3JT
dGVwRnVuY3Rpb24pOworCisgICAgTVRMOjpXaW5kaW5nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcigpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRUZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIoTVRMOjpXaW5kaW5nIHRlc3NlbGxhdGlv
bk91dHB1dFdpbmRpbmdPcmRlcik7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0
b3JBcnJheSogICAgICAgICAgICAgICAgdmVydGV4QnVmZmVycygpIGNvbnN0OworCisgICAgY2xh
c3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqICAgICAgICAgICAgICAgIGZyYWdtZW50
QnVmZmVycygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKGJvb2wgc3VwcG9ydEluZGlyZWN0Q29t
bWFuZEJ1ZmZlcnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJpbmFyeUFyY2hpdmVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpbmFyeUFyY2hpdmVz
KGNvbnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMpOworCisgICAgTlM6OkFycmF5KiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleFByZWxvYWRlZExpYnJh
cmllcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRWZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5
KiB2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVz
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSog
ZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25z
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleExpbmtlZEZ1bmN0aW9ucygpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRWZXJ0ZXhMaW5rZWRGdW5jdGlvbnMoY29uc3QgY2xhc3MgTGlua2VkRnVuY3Rpb25z
KiB2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMpOworCisgICAgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldEZyYWdtZW50TGlua2VkRnVuY3Rpb25zKGNvbnN0IGNsYXNzIExpbmtlZEZ1bmN0aW9u
cyogZnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlG
dW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0U3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucyhi
b29sIHN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMpOworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRBZGRpbmdG
cmFnbWVudEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0QWRkaW5nRnJhZ21lbnRC
aW5hcnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1heFZlcnRleENhbGxTdGFja0RlcHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heFZlcnRleENhbGxTdGFj
a0RlcHRoKE5TOjpVSW50ZWdlciBtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4RnJhZ21l
bnRDYWxsU3RhY2tEZXB0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKE5T
OjpVSW50ZWdlciBtYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKwor
Y2xhc3MgUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yKiBhbGxvYygpOwor
CisgICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yKiAgICAgICAgaW5p
dCgpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleEFkZGl0aW9u
YWxCaW5hcnlGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiB2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5
RnVuY3Rpb25zKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZyYWdt
ZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZyYWdtZW50QWRk
aXRpb25hbEJpbmFyeUZ1bmN0aW9ucyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucygpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogdGlsZUFk
ZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpOworfTsKKworY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0
ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVyUGlwZWxpbmVTdGF0ZT4KK3sKK3B1Ymxp
YzoKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0Owor
CisgICAgY2xhc3MgRGV2aWNlKiAgICAgICAgICAgICAgICAgICAgZGV2aWNlKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBtYXhUb3RhbFRocmVhZHNQZXJU
aHJlYWRncm91cCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKCkgY29uc3Q7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICBpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoKCkgY29uc3Q7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBpbWFnZWJsb2NrTWVtb3J5
TGVuZ3RoKE1UTDo6U2l6ZSBpbWFnZWJsb2NrRGltZW5zaW9ucyk7CisKKyAgICBib29sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNv
bnN0OworCisgICAgY2xhc3MgRnVuY3Rpb25IYW5kbGUqICAgICAgICAgICAgZnVuY3Rpb25IYW5k
bGUoY29uc3QgY2xhc3MgRnVuY3Rpb24qIGZ1bmN0aW9uLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFn
ZSk7CisKKyAgICBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogICAgICBuZXdWaXNpYmxlRnVu
Y3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlKTsKKworICAgIGNsYXNzIEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUqIG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgY2xh
c3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6
UmVuZGVyU3RhZ2VzIHN0YWdlKTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqICAg
ICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVGdW5j
dGlvbnNEZXNjcmlwdG9yKiBhZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLCBOUzo6RXJyb3IqKiBl
cnJvcik7Cit9OworCitjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAg
Y2xhc3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAg
ICBpbml0KCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7
Cit9OworCitjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
IDogcHVibGljIE5TOjpDb3B5aW5nPFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBUaWxlUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisg
ICAgTVRMOjpQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBpeGVsRm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQpOworfTsKKworY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxUaWxlUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIFRpbGVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVj
dChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChj
b25zdCBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBh
dHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIFRp
bGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VGlsZVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVGlsZVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciogICAgICAgICAgICAgIGFsbG9jKCk7CisKKyAgICBjbGFz
cyBUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGluaXQo
KTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxh
YmVsKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGlsZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaWxlRnVuY3Rpb24oY29u
c3QgY2xhc3MgRnVuY3Rpb24qIHRpbGVGdW5jdGlvbik7CisKKyAgICBOUzo6VUludGVnZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhc3RlclNhbXBsZUNvdW50
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRSYXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgcmFzdGVyU2Ft
cGxlQ291bnQpOworCisgICAgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5KiBjb2xvckF0dGFjaG1lbnRzKCkgY29uc3Q7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGdy
b3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGhyZWFkZ3JvdXBTaXplTWF0
Y2hlc1RpbGVTaXplKGJvb2wgdGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKTsKKworICAg
IGNsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiAgICAgICAgICAgICAgICAgICAg
dGlsZUJ1ZmZlcnMoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKE5TOjpVSW50ZWdl
ciBtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeUFyY2hpdmVzKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hp
dmVzKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJlbG9hZGVkTGlicmFyaWVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcmVsb2FkZWRM
aWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiBwcmVsb2FkZWRMaWJyYXJpZXMpOworCisgICAgY2xh
c3MgTGlua2VkRnVuY3Rpb25zKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5r
ZWRGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldExpbmtlZEZ1bmN0aW9ucyhjb25zdCBjbGFzcyBM
aW5rZWRGdW5jdGlvbnMqIGxpbmtlZEZ1bmN0aW9ucyk7CisKKyAgICBib29sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRBZGRpbmdCaW5h
cnlGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMo
Ym9vbCBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKTsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Q2FsbFN0YWNrRGVw
dGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldE1heENhbGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhDYWxs
U3RhY2tEZXB0aCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAor
X01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iq
IE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHBpeGVsRm9ybWF0CitfTVRM
X0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yOjpwaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpQaXhlbEZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaXhl
bEZvcm1hdCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRQaXhlbEZvcm1hdF8pLCBwaXhlbEZvcm1hdCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBibGVuZGluZ0VuYWJsZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmJsZW5kaW5nRW5hYmxlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChpc0JsZW5kaW5nRW5hYmxlZCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRCbGVuZGluZ0VuYWJsZWQoYm9v
bCBibGVuZGluZ0VuYWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEJsZW5kaW5nRW5hYmxlZF8pLCBibGVuZGluZ0VuYWJsZWQp
OworfQorCisvLyBwcm9wZXJ0eTogc291cmNlUkdCQmxlbmRGYWN0b3IKK19NVExfSU5MSU5FIE1U
TDo6QmxlbmRGYWN0b3IgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3I6OnNvdXJjZVJHQkJsZW5kRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkJsZW5kRmFjdG9yPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNvdXJj
ZVJHQkJsZW5kRmFjdG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFNvdXJjZVJHQkJsZW5kRmFjdG9yKE1U
TDo6QmxlbmRGYWN0b3Igc291cmNlUkdCQmxlbmRGYWN0b3IpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNvdXJjZVJHQkJsZW5kRmFj
dG9yXyksIHNvdXJjZVJHQkJsZW5kRmFjdG9yKTsKK30KKworLy8gcHJvcGVydHk6IGRlc3RpbmF0
aW9uUkdCQmxlbmRGYWN0b3IKK19NVExfSU5MSU5FIE1UTDo6QmxlbmRGYWN0b3IgTVRMOjpSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmRlc3RpbmF0aW9uUkdCQmxlbmRG
YWN0b3IoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Qmxl
bmRGYWN0b3I+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVzdGluYXRpb25SR0JCbGVuZEZhY3Rv
cikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yOjpzZXREZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKE1UTDo6QmxlbmRG
YWN0b3IgZGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVzdGluYXRpb25SR0JCbGVuZEZh
Y3Rvcl8pLCBkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKTsKK30KKworLy8gcHJvcGVydHk6IHJn
YkJsZW5kT3BlcmF0aW9uCitfTVRMX0lOTElORSBNVEw6OkJsZW5kT3BlcmF0aW9uIE1UTDo6UmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpyZ2JCbGVuZE9wZXJhdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGVuZE9wZXJh
dGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZ2JCbGVuZE9wZXJhdGlvbikpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOjpzZXRSZ2JCbGVuZE9wZXJhdGlvbihNVEw6OkJsZW5kT3BlcmF0aW9uIHJnYkJsZW5kT3Bl
cmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRSZ2JCbGVuZE9wZXJhdGlvbl8pLCByZ2JCbGVuZE9wZXJhdGlvbik7Cit9CisK
Ky8vIHByb3BlcnR5OiBzb3VyY2VBbHBoYUJsZW5kRmFjdG9yCitfTVRMX0lOTElORSBNVEw6OkJs
ZW5kRmFjdG9yIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpz
b3VyY2VBbHBoYUJsZW5kRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkJsZW5kRmFjdG9yPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNvdXJjZUFs
cGhhQmxlbmRGYWN0b3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U291cmNlQWxwaGFCbGVuZEZhY3RvcihN
VEw6OkJsZW5kRmFjdG9yIHNvdXJjZUFscGhhQmxlbmRGYWN0b3IpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNvdXJjZUFscGhhQmxl
bmRGYWN0b3JfKSwgc291cmNlQWxwaGFCbGVuZEZhY3Rvcik7Cit9CisKKy8vIHByb3BlcnR5OiBk
ZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IKK19NVExfSU5MSU5FIE1UTDo6QmxlbmRGYWN0b3Ig
TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmRlc3RpbmF0aW9u
QWxwaGFCbGVuZEZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpCbGVuZEZhY3Rvcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXN0aW5hdGlvbkFs
cGhhQmxlbmRGYWN0b3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0RGVzdGluYXRpb25BbHBoYUJsZW5kRmFj
dG9yKE1UTDo6QmxlbmRGYWN0b3IgZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXN0
aW5hdGlvbkFscGhhQmxlbmRGYWN0b3JfKSwgZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKTsK
K30KKworLy8gcHJvcGVydHk6IGFscGhhQmxlbmRPcGVyYXRpb24KK19NVExfSU5MSU5FIE1UTDo6
QmxlbmRPcGVyYXRpb24gTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3I6OmFscGhhQmxlbmRPcGVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6QmxlbmRPcGVyYXRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWxw
aGFCbGVuZE9wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRBbHBoYUJsZW5kT3BlcmF0aW9uKE1U
TDo6QmxlbmRPcGVyYXRpb24gYWxwaGFCbGVuZE9wZXJhdGlvbikKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWxwaGFCbGVuZE9wZXJh
dGlvbl8pLCBhbHBoYUJsZW5kT3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHdyaXRlTWFz
aworX01UTF9JTkxJTkUgTVRMOjpDb2xvcldyaXRlTWFzayBNVEw6OlJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcjo6d3JpdGVNYXNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbG9yV3JpdGVNYXNrPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHdyaXRlTWFzaykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRXcml0ZU1hc2soTVRMOjpDb2xvcldy
aXRlTWFzayB3cml0ZU1hc2spCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFdyaXRlTWFza18pLCB3cml0ZU1hc2spOworfQorCisvLyBz
dGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZVJlZmxl
Y3Rpb24qIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uOjphbGxvYygpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbikpOworfQorCisvLyBtZXRo
b2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBNVEw6
OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiB2ZXJ0ZXhBcmd1bWVudHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQ
aXBlbGluZVJlZmxlY3Rpb246OnZlcnRleEFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2
ZXJ0ZXhBcmd1bWVudHMpKTsKK30KKworLy8gcHJvcGVydHk6IGZyYWdtZW50QXJndW1lbnRzCitf
TVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uOjpmcmFn
bWVudEFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudEFyZ3VtZW50cykpOwor
fQorCisvLyBwcm9wZXJ0eTogdGlsZUFyZ3VtZW50cworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBN
VEw6OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbjo6dGlsZUFyZ3VtZW50cygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTCh0aWxlQXJndW1lbnRzKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElO
RSBOUzo6U3RyaW5nKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhGdW5jdGlvbgorX01U
TF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnZl
cnRleEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhGdW5jdGlvbikpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRW
ZXJ0ZXhGdW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uKiB2ZXJ0ZXhGdW5jdGlvbikKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVy
dGV4RnVuY3Rpb25fKSwgdmVydGV4RnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogZnJhZ21l
bnRGdW5jdGlvbgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OmZyYWdtZW50RnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZy
YWdtZW50RnVuY3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6c2V0RnJhZ21lbnRGdW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uKiBm
cmFnbWVudEZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEZ1bmN0aW9uXyksIGZyYWdtZW50RnVuY3Rpb24p
OworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4RGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpW
ZXJ0ZXhEZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dmVydGV4RGVz
Y3JpcHRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpW
ZXJ0ZXhEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhEZXNjcmlwdG9y
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OnNldFZlcnRleERlc2NyaXB0b3IoY29uc3QgTVRMOjpWZXJ0ZXhEZXNjcmlwdG9yKiB2ZXJ0ZXhE
ZXNjcmlwdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRWZXJ0ZXhEZXNjcmlwdG9yXyksIHZlcnRleERlc2NyaXB0b3IpOworfQor
CisvLyBwcm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzYW1wbGVDb3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxlQ291bnQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFNhbXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHJhc3Rl
clNhbXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OnJhc3RlclNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmFz
dGVyU2FtcGxlQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6c2V0UmFzdGVyU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHJhc3RlclNh
bXBsZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRSYXN0ZXJTYW1wbGVDb3VudF8pLCByYXN0ZXJTYW1wbGVDb3VudCk7Cit9
CisKKy8vIHByb3BlcnR5OiBhbHBoYVRvQ292ZXJhZ2VFbmFibGVkCitfTVRMX0lOTElORSBib29s
IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjphbHBoYVRvQ292ZXJhZ2VFbmFibGVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGlzQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRBbHBoYVRvQ292ZXJhZ2VF
bmFibGVkKGJvb2wgYWxwaGFUb0NvdmVyYWdlRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWxwaGFUb0NvdmVyYWdlRW5h
YmxlZF8pLCBhbHBoYVRvQ292ZXJhZ2VFbmFibGVkKTsKK30KKworLy8gcHJvcGVydHk6IGFscGhh
VG9PbmVFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjphbHBoYVRvT25lRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0FscGhhVG9PbmVFbmFibGVk
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OnNldEFscGhhVG9PbmVFbmFibGVkKGJvb2wgYWxwaGFUb09uZUVuYWJsZWQpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFscGhhVG9P
bmVFbmFibGVkXyksIGFscGhhVG9PbmVFbmFibGVkKTsKK30KKworLy8gcHJvcGVydHk6IHJhc3Rl
cml6YXRpb25FbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpyYXN0ZXJpemF0aW9uRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1Jhc3Rlcml6YXRp
b25FbmFibGVkKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldFJhc3Rlcml6YXRpb25FbmFibGVkKGJvb2wgcmFzdGVyaXphdGlvbkVuYWJs
ZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFJhc3Rlcml6YXRpb25FbmFibGVkXyksIHJhc3Rlcml6YXRpb25FbmFibGVkKTsKK30K
KworLy8gcHJvcGVydHk6IG1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhWZXJ0ZXhBbXBs
aWZpY2F0aW9uQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhWZXJ0ZXhBbXBsaWZpY2F0
aW9uQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6c2V0TWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KE5TOjpVSW50ZWdlciBtYXhW
ZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudF8p
LCBtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogY29sb3JB
dHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmNvbG9yQXR0
YWNobWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGNvbG9yQXR0YWNobWVudHMpKTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRo
QXR0YWNobWVudFBpeGVsRm9ybWF0CitfTVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXhlbEZvcm1hdD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXREZXB0
aEF0dGFjaG1lbnRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGRlcHRoQXR0YWNobWVudFBp
eGVsRm9ybWF0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdF8pLCBkZXB0aEF0dGFjaG1l
bnRQaXhlbEZvcm1hdCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGVuY2lsQXR0YWNobWVudFBpeGVs
Rm9ybWF0CitfTVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3RlbmNpbEF0dGFjaG1l
bnRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3Jt
YXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXRfKSwgc3RlbmNpbEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnB1dFByaW1pdGl2ZVRvcG9sb2d5Citf
TVRMX0lOTElORSBNVEw6OlByaW1pdGl2ZVRvcG9sb2d5Q2xhc3MgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OmlucHV0UHJpbWl0aXZlVG9wb2xvZ3koKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UHJpbWl0aXZlVG9wb2xvZ3lDbGFzcz4odGhpcywg
X01UTF9QUklWQVRFX1NFTChpbnB1dFByaW1pdGl2ZVRvcG9sb2d5KSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldElucHV0UHJpbWl0aXZl
VG9wb2xvZ3koTVRMOjpQcmltaXRpdmVUb3BvbG9neUNsYXNzIGlucHV0UHJpbWl0aXZlVG9wb2xv
Z3kpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldElucHV0UHJpbWl0aXZlVG9wb2xvZ3lfKSwgaW5wdXRQcmltaXRpdmVUb3BvbG9neSk7
Cit9CisKKy8vIHByb3BlcnR5OiB0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlCitfTVRMX0lOTElO
RSBNVEw6OlRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OnRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFRlc3NlbGxhdGlv
blBhcnRpdGlvbk1vZGUoTVRMOjpUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlIHRlc3NlbGxhdGlv
blBhcnRpdGlvbk1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVfKSwgdGVzc2VsbGF0
aW9uUGFydGl0aW9uTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUZXNzZWxsYXRpb25GYWN0
b3IKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6bWF4VGVzc2VsbGF0aW9uRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VGVzc2Vs
bGF0aW9uRmFjdG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OnNldE1heFRlc3NlbGxhdGlvbkZhY3RvcihOUzo6VUludGVnZXIgbWF4VGVz
c2VsbGF0aW9uRmFjdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRNYXhUZXNzZWxsYXRpb25GYWN0b3JfKSwgbWF4VGVzc2VsbGF0
aW9uRmFjdG9yKTsKK30KKworLy8gcHJvcGVydHk6IHRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5h
YmxlZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVz
c2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzVGVzc2VsbGF0aW9u
RmFjdG9yU2NhbGVFbmFibGVkKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZChib29s
IHRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2Nh
bGVFbmFibGVkXyksIHRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCk7Cit9CisKKy8vIHBy
b3BlcnR5OiB0ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6VGVzc2Vs
bGF0aW9uRmFjdG9yRm9ybWF0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0ZXNzZWxs
YXRpb25GYWN0b3JGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQoTVRM
OjpUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQgdGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRU
ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXRfKSwgdGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KTsKK30K
KworLy8gcHJvcGVydHk6IHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZQorX01UTF9J
TkxJTkUgTVRMOjpUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXNzZWxsYXRpb25D
b250cm9sUG9pbnRJbmRleFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGVzc2VsbGF0aW9u
Q29udHJvbFBvaW50SW5kZXhUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlw
ZShNVEw6OlRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSB0ZXNzZWxsYXRpb25Db250
cm9sUG9pbnRJbmRleFR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZV8p
LCB0ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUpOworfQorCisvLyBwcm9wZXJ0eTog
dGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OlRlc3NlbGxh
dGlvbkZhY3RvclN0ZXBGdW5jdGlvbiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVz
c2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbj4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24pKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGVzc2Vs
bGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0
aW9uIHRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9y
U3RlcEZ1bmN0aW9uXyksIHRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbik7Cit9CisKKy8v
IHByb3BlcnR5OiB0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIKK19NVExfSU5MSU5FIE1U
TDo6V2luZGluZyBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2VsbGF0aW9uT3V0
cHV0V2luZGluZ09yZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OldpbmRpbmc+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGVzc2VsbGF0aW9uT3V0cHV0
V2luZGluZ09yZGVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcihNVEw6OldpbmRp
bmcgdGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXNzZWxsYXRpb25PdXRwdXRX
aW5kaW5nT3JkZXJfKSwgdGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyKTsKK30KKworLy8g
cHJvcGVydHk6IHZlcnRleEJ1ZmZlcnMKK19NVExfSU5MSU5FIE1UTDo6UGlwZWxpbmVCdWZmZXJE
ZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhCdWZm
ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpcGVs
aW5lQnVmZmVyRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhC
dWZmZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudEJ1ZmZlcnMKK19NVExfSU5MSU5F
IE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpmcmFnbWVudEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGZyYWdtZW50QnVmZmVycykpOworfQorCisvLyBwcm9wZXJ0eTogc3Vw
cG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycykpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdXBwb3J0SW5kaXJl
Y3RDb21tYW5kQnVmZmVycyhib29sIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRT
dXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVyc18pLCBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVm
ZmVycyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlBcmNoaXZlcworX01UTF9JTkxJTkUgTlM6
OkFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6YmluYXJ5QXJjaGl2ZXMoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoYmluYXJ5QXJjaGl2ZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMoY29uc3Qg
TlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmluYXJ5QXJj
aGl2ZXMpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4UHJlbG9hZGVkTGlicmFyaWVzCitfTVRM
X0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhQ
cmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVydGV4UHJlbG9hZGVkTGli
cmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OnNldFZlcnRleFByZWxvYWRlZExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIHZlcnRl
eFByZWxvYWRlZExpYnJhcmllcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4UHJlbG9hZGVkTGlicmFyaWVzXyksIHZlcnRl
eFByZWxvYWRlZExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudFByZWxvYWRl
ZExpYnJhcmllcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6ZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0RnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMo
Y29uc3QgTlM6OkFycmF5KiBmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRQ
cmVsb2FkZWRMaWJyYXJpZXNfKSwgZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMpOworfQorCisv
LyBwcm9wZXJ0eTogdmVydGV4TGlua2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6Okxpbmtl
ZEZ1bmN0aW9ucyogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnZlcnRleExpbmtlZEZ1
bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpM
aW5rZWRGdW5jdGlvbnMqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleExpbmtlZEZ1bmN0
aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjpzZXRWZXJ0ZXhMaW5rZWRGdW5jdGlvbnMoY29uc3QgTVRMOjpMaW5rZWRGdW5jdGlvbnMq
IHZlcnRleExpbmtlZEZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4TGlua2VkRnVuY3Rpb25zXyksIHZlcnRl
eExpbmtlZEZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudExpbmtlZEZ1bmN0
aW9ucworX01UTF9JTkxJTkUgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpmcmFnbWVudExpbmtlZEZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaW5rZWRGdW5jdGlvbnMqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEZyYWdtZW50TGlua2VkRnVu
Y3Rpb25zKGNvbnN0IE1UTDo6TGlua2VkRnVuY3Rpb25zKiBmcmFnbWVudExpbmtlZEZ1bmN0aW9u
cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnNfKSwgZnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMp
OworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucwor
X01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c3VwcG9ydEFk
ZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEFkZGlu
Z1ZlcnRleEJpbmFyeUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rp
b25zKGJvb2wgc3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFk
ZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9uc18pLCBzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVu
Y3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1
bmN0aW9ucworX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6
c3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3VwcG9ydEFkZGluZ0ZyYWdt
ZW50QmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rp
b25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRTdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnNfKSwgc3VwcG9ydEFk
ZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IG1heFZlcnRl
eENhbGxTdGFja0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6Om1heFZlcnRleENhbGxTdGFja0RlcHRoKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgo
TlM6OlVJbnRlZ2VyIG1heFZlcnRleENhbGxTdGFja0RlcHRoKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhWZXJ0ZXhDYWxsU3Rh
Y2tEZXB0aF8pLCBtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCk7Cit9CisKKy8vIHByb3BlcnR5OiBt
YXhGcmFnbWVudENhbGxTdGFja0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6Om1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChtYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldE1heEZyYWdtZW50
Q2FsbFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dE1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGhfKSwgbWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aCk7
Cit9CisKKy8vIG1ldGhvZDogcmVzZXQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9y
KiBNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2Ny
aXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBp
cGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rl
c2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVu
ZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogdmVy
dGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6
OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6dmVydGV4QWRkaXRpb25hbEJpbmFy
eUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVu
Y3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0
aW9uc0Rlc2NyaXB0b3I6OnNldFZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoY29uc3Qg
TlM6OkFycmF5KiB2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhBZGRp
dGlvbmFsQmluYXJ5RnVuY3Rpb25zXyksIHZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMp
OworfQorCisvLyBwcm9wZXJ0eTogZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zCitf
TVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlw
dG9yOjpmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I6OnNldEZyYWdtZW50
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZyYWdtZW50QWRkaXRp
b25hbEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25z
XyksIGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5
OiB0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBN
VEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6dGlsZUFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5j
dGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rp
b25zRGVzY3JpcHRvcjo6c2V0VGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoY29uc3QgTlM6
OkFycmF5KiB0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUFkZGl0aW9uYWxC
aW5hcnlGdW5jdGlvbnNfKSwgdGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpOworfQorCisv
LyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6UmVuZGVyUGlw
ZWxpbmVTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OlJlbmRlclBp
cGVsaW5lU3RhdGU6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQor
CisvLyBwcm9wZXJ0eTogbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6Om1heFRvdGFsVGhyZWFkc1Bl
clRocmVhZGdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VG90YWxUaHJlYWRzUGVyVGhy
ZWFkZ3JvdXApKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxl
U2l6ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OnRocmVhZGdy
b3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRncm91cFNpemVNYXRj
aGVzVGlsZVNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IGltYWdlYmxvY2tTYW1wbGVMZW5ndGgK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OmltYWdl
YmxvY2tTYW1wbGVMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbWFnZWJsb2NrU2FtcGxl
TGVuZ3RoKSk7Cit9CisKKy8vIG1ldGhvZDogaW1hZ2VibG9ja01lbW9yeUxlbmd0aEZvckRpbWVu
c2lvbnM6CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRl
OjppbWFnZWJsb2NrTWVtb3J5TGVuZ3RoKE1UTDo6U2l6ZSBpbWFnZWJsb2NrRGltZW5zaW9ucykK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaW1hZ2VibG9ja01lbW9yeUxlbmd0aEZvckRpbWVuc2lvbnNfKSwgaW1h
Z2VibG9ja0RpbWVuc2lvbnMpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydEluZGlyZWN0Q29t
bWFuZEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpz
dXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydElu
ZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpKTsKK30KKworLy8gbWV0aG9kOiBmdW5jdGlvbkhhbmRsZVdp
dGhGdW5jdGlvbjpzdGFnZToKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25IYW5kbGUqIE1UTDo6
UmVuZGVyUGlwZWxpbmVTdGF0ZTo6ZnVuY3Rpb25IYW5kbGUoY29uc3QgTVRMOjpGdW5jdGlvbiog
ZnVuY3Rpb24sIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25IYW5kbGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGZ1bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uX3N0YWdlXyksIGZ1bmN0aW9uLCBzdGFnZSk7Cit9
CisKKy8vIG1ldGhvZDogbmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcjpzdGFn
ZToKK19NVExfSU5MSU5FIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIE1UTDo6UmVuZGVyUGlw
ZWxpbmVTdGF0ZTo6bmV3VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVu
Y3Rpb25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdl
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmlzaWJsZUZ1bmN0aW9u
VGFibGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0
aERlc2NyaXB0b3Jfc3RhZ2VfKSwgZGVzY3JpcHRvciwgc3RhZ2UpOworfQorCisvLyBtZXRob2Q6
IG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcjpzdGFnZToKK19NVExf
SU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogTVRMOjpSZW5kZXJQaXBlbGlu
ZVN0YXRlOjpuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6SW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UmVuZGVyU3RhZ2Vz
IHN0YWdlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yX3N0YWdlXyksIGRlc2NyaXB0b3IsIHN0YWdlKTsK
K30KKworLy8gbWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnM6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUq
IE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBN
VEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvciogYWRkaXRpb25hbEJpbmFyeUZ1
bmN0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfZXJyb3Jf
KSwgYWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucywgZXJyb3IpOworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3JBcnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZB
VEVfQ0xTKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmluaXQ8TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4o
KTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElO
RSBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50
ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50SW5kZXgp
OworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXk6OnNldE9iamVjdChjb25zdCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2Jq
ZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6YWxsb2M8TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRp
bGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6VGlsZVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogcGl4ZWxGb3JtYXQKK19NVExfSU5MSU5F
IE1UTDo6UGl4ZWxGb3JtYXQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpwaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpQaXhlbEZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaXhlbEZv
cm1hdCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0UGl4ZWxGb3JtYXRfKSwgcGl4ZWxGb3JtYXQpOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5F
IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBN
VEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2Jq
ZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50
SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUaWxlUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8g
bWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0
T2JqZWN0KGNvbnN0IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0
X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRpbGVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5F
IE5TOjpTdHJpbmcqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bGFiZWwoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBs
YWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZUZ1bmN0aW9u
CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OnRpbGVGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUZ1bmN0aW9u
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjpzZXRUaWxlRnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbiogdGlsZUZ1bmN0aW9uKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRUaWxlRnVuY3Rpb25fKSwgdGlsZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHJhc3Rl
clNhbXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpyYXN0ZXJTYW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHJhc3RlclNhbXBsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRSYXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIg
cmFzdGVyU2FtcGxlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFJhc3RlclNhbXBsZUNvdW50XyksIHJhc3RlclNhbXBsZUNv
dW50KTsKK30KKworLy8gcHJvcGVydHk6IGNvbG9yQXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1U
TDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6
OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmNvbG9yQXR0YWNobWVudHMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGlsZVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b2xvckF0dGFjaG1lbnRzKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0aHJlYWRncm91cFNpemVNYXRj
aGVzVGlsZVNpemUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjp0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGhy
ZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUaHJlYWRncm91cFNpemVNYXRjaGVz
VGlsZVNpemUoYm9vbCB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRocmVhZGdy
b3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZV8pLCB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUp
OworfQorCisvLyBwcm9wZXJ0eTogdGlsZUJ1ZmZlcnMKK19NVExfSU5MSU5FIE1UTDo6UGlwZWxp
bmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6dGlsZUJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHRpbGVCdWZmZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUb3RhbFRocmVhZHNQZXJU
aHJlYWRncm91cAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGlsZVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6bWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4VG90YWxU
aHJlYWRzUGVyVGhyZWFkZ3JvdXAoTlM6OlVJbnRlZ2VyIG1heFRvdGFsVGhyZWFkc1BlclRocmVh
ZGdyb3VwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cF8pLCBtYXhUb3RhbFRocmVh
ZHNQZXJUaHJlYWRncm91cCk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlBcmNoaXZlcworX01U
TF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmJp
bmFyeUFyY2hpdmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJpbmFyeUFyY2hpdmVzKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRC
aW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hpdmVzKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCaW5hcnlB
cmNoaXZlc18pLCBiaW5hcnlBcmNoaXZlcyk7Cit9CisKKy8vIHByb3BlcnR5OiBwcmVsb2FkZWRM
aWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpwcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlbG9h
ZGVkTGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzZXRQcmVsb2FkZWRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiBw
cmVsb2FkZWRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFByZWxvYWRlZExpYnJhcmllc18pLCBwcmVsb2FkZWRMaWJy
YXJpZXMpOworfQorCisvLyBwcm9wZXJ0eTogbGlua2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBN
VEw6OkxpbmtlZEZ1bmN0aW9ucyogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjps
aW5rZWRGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6TGlua2VkRnVuY3Rpb25zKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsaW5rZWRGdW5j
dGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldExpbmtlZEZ1bmN0aW9ucyhjb25zdCBNVEw6OkxpbmtlZEZ1bmN0aW9ucyog
bGlua2VkRnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRMaW5rZWRGdW5jdGlvbnNfKSwgbGlua2VkRnVuY3Rpb25zKTsK
K30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMKK19NVExfSU5M
SU5FIGJvb2wgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0QWRkaW5n
QmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0QWRkaW5nQmluYXJ5RnVu
Y3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFk
ZGluZ0JpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9uc18pLCBz
dXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IG1heENhbGxT
dGFja0RlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjptYXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1h
eENhbGxTdGFja0RlcHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4
Q2FsbFN0YWNrRGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldE1heENhbGxTdGFja0RlcHRoXyksIG1heENhbGxTdGFja0RlcHRo
KTsKK30KKworLy8gbWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZS5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2UuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYzZTI2OGIxNzk0ODI5ZTFhNTAxNmY2M2QxZGJkNDk5YWMwNWU5ZDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2Uu
aHBwCkBAIC0wLDAgKzEsMTc4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExSZXNvdXJjZS5ocHAKKy8vCisvLyBDb3B5cmln
aHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVz
LmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZh
dGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1
ZGUgIk1UTFJlc291cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpV
SW50ZWdlciwgUHVyZ2VhYmxlU3RhdGUpIHsKKyAgICBQdXJnZWFibGVTdGF0ZUtlZXBDdXJyZW50
ID0gMSwKKyAgICBQdXJnZWFibGVTdGF0ZU5vblZvbGF0aWxlID0gMiwKKyAgICBQdXJnZWFibGVT
dGF0ZVZvbGF0aWxlID0gMywKKyAgICBQdXJnZWFibGVTdGF0ZUVtcHR5ID0gNCwKK307CisKK19N
VExfRU5VTShOUzo6VUludGVnZXIsIENQVUNhY2hlTW9kZSkgeworICAgIENQVUNhY2hlTW9kZURl
ZmF1bHRDYWNoZSA9IDAsCisgICAgQ1BVQ2FjaGVNb2RlV3JpdGVDb21iaW5lZCA9IDEsCit9Owor
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBTdG9yYWdlTW9kZSkgeworICAgIFN0b3JhZ2VNb2Rl
U2hhcmVkID0gMCwKKyAgICBTdG9yYWdlTW9kZU1hbmFnZWQgPSAxLAorICAgIFN0b3JhZ2VNb2Rl
UHJpdmF0ZSA9IDIsCisgICAgU3RvcmFnZU1vZGVNZW1vcnlsZXNzID0gMywKK307CisKK19NVExf
RU5VTShOUzo6VUludGVnZXIsIEhhemFyZFRyYWNraW5nTW9kZSkgeworICAgIEhhemFyZFRyYWNr
aW5nTW9kZURlZmF1bHQgPSAwLAorICAgIEhhemFyZFRyYWNraW5nTW9kZVVudHJhY2tlZCA9IDEs
CisgICAgSGF6YXJkVHJhY2tpbmdNb2RlVHJhY2tlZCA9IDIsCit9OworCitfTVRMX09QVElPTlMo
TlM6OlVJbnRlZ2VyLCBSZXNvdXJjZU9wdGlvbnMpIHsKKyAgICBSZXNvdXJjZVN0b3JhZ2VNb2Rl
U2hhcmVkID0gMCwKKyAgICBSZXNvdXJjZUhhemFyZFRyYWNraW5nTW9kZURlZmF1bHQgPSAwLAor
ICAgIFJlc291cmNlQ1BVQ2FjaGVNb2RlRGVmYXVsdENhY2hlID0gMCwKKyAgICBSZXNvdXJjZU9w
dGlvbkNQVUNhY2hlTW9kZURlZmF1bHQgPSAwLAorICAgIFJlc291cmNlQ1BVQ2FjaGVNb2RlV3Jp
dGVDb21iaW5lZCA9IDEsCisgICAgUmVzb3VyY2VPcHRpb25DUFVDYWNoZU1vZGVXcml0ZUNvbWJp
bmVkID0gMSwKKyAgICBSZXNvdXJjZVN0b3JhZ2VNb2RlTWFuYWdlZCA9IDE2LAorICAgIFJlc291
cmNlU3RvcmFnZU1vZGVQcml2YXRlID0gMzIsCisgICAgUmVzb3VyY2VTdG9yYWdlTW9kZU1lbW9y
eWxlc3MgPSA0OCwKKyAgICBSZXNvdXJjZUhhemFyZFRyYWNraW5nTW9kZVVudHJhY2tlZCA9IDI1
NiwKKyAgICBSZXNvdXJjZUhhemFyZFRyYWNraW5nTW9kZVRyYWNrZWQgPSA1MTIsCit9OworCitj
bGFzcyBSZXNvdXJjZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVzb3VyY2U+Cit7CitwdWJs
aWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisK
KyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE1UTDo6
Q1BVQ2FjaGVNb2RlICAgICAgIGNwdUNhY2hlTW9kZSgpIGNvbnN0OworCisgICAgTVRMOjpTdG9y
YWdlTW9kZSAgICAgICAgc3RvcmFnZU1vZGUoKSBjb25zdDsKKworICAgIE1UTDo6SGF6YXJkVHJh
Y2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0OworCisgICAgTVRMOjpSZXNvdXJj
ZU9wdGlvbnMgICAgcmVzb3VyY2VPcHRpb25zKCkgY29uc3Q7CisKKyAgICBNVEw6OlB1cmdlYWJs
ZVN0YXRlICAgICBzZXRQdXJnZWFibGVTdGF0ZShNVEw6OlB1cmdlYWJsZVN0YXRlIHN0YXRlKTsK
KworICAgIGNsYXNzIEhlYXAqICAgICAgICAgICAgIGhlYXAoKSBjb25zdDsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgIGhlYXBPZmZzZXQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgIGFsbG9jYXRlZFNpemUoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgIG1ha2VBbGlhc2FibGUoKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
IGlzQWxpYXNhYmxlKCk7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJ
TkUgTlM6OlN0cmluZyogTVRMOjpSZXNvdXJjZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZTo6c2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJv
cGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6UmVzb3VyY2U6OmRl
dmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZp
Y2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTog
Y3B1Q2FjaGVNb2RlCitfTVRMX0lOTElORSBNVEw6OkNQVUNhY2hlTW9kZSBNVEw6OlJlc291cmNl
OjpjcHVDYWNoZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6Q1BVQ2FjaGVNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNwdUNhY2hlTW9kZSkp
OworfQorCisvLyBwcm9wZXJ0eTogc3RvcmFnZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6U3RvcmFn
ZU1vZGUgTVRMOjpSZXNvdXJjZTo6c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RvcmFnZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc3RvcmFnZU1vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IGhhemFyZFRyYWNraW5nTW9kZQor
X01UTF9JTkxJTkUgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgTVRMOjpSZXNvdXJjZTo6aGF6YXJk
VHJhY2tpbmdNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkhhemFyZFRyYWNraW5nTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChoYXphcmRUcmFj
a2luZ01vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IHJlc291cmNlT3B0aW9ucworX01UTF9JTkxJ
TkUgTVRMOjpSZXNvdXJjZU9wdGlvbnMgTVRMOjpSZXNvdXJjZTo6cmVzb3VyY2VPcHRpb25zKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlT3B0
aW9ucz4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvdXJjZU9wdGlvbnMpKTsKK30KKworLy8g
bWV0aG9kOiBzZXRQdXJnZWFibGVTdGF0ZToKK19NVExfSU5MSU5FIE1UTDo6UHVyZ2VhYmxlU3Rh
dGUgTVRMOjpSZXNvdXJjZTo6c2V0UHVyZ2VhYmxlU3RhdGUoTVRMOjpQdXJnZWFibGVTdGF0ZSBz
dGF0ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlB1cmdlYWJsZVN0
YXRlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFB1cmdlYWJsZVN0YXRlXyksIHN0YXRlKTsK
K30KKworLy8gcHJvcGVydHk6IGhlYXAKK19NVExfSU5MSU5FIE1UTDo6SGVhcCogTVRMOjpSZXNv
dXJjZTo6aGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpIZWFwKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChoZWFwKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBoZWFwT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZXNvdXJjZTo6aGVh
cE9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhlYXBPZmZzZXQpKTsKK30KKworLy8gcHJv
cGVydHk6IGFsbG9jYXRlZFNpemUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlc291
cmNlOjphbGxvY2F0ZWRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWxsb2NhdGVkU2l6ZSkp
OworfQorCisvLyBtZXRob2Q6IG1ha2VBbGlhc2FibGUKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZXNvdXJjZTo6bWFrZUFsaWFzYWJsZSgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1ha2VBbGlhc2FibGUpKTsKK30KKworLy8gbWV0aG9k
OiBpc0FsaWFzYWJsZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlc291cmNlOjppc0FsaWFzYWJs
ZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChpc0FsaWFzYWJsZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZUNv
bW1hbmRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjgzYWMxZjhiMTZiZDVlNWIxYmEzYjdiZTIy
ZWY3Nzk0ZjQ5YjkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCAr
MSw5NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMQ29tbWFuZEVuY29kZXIuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRM
X0VOVU0oTlM6OlVJbnRlZ2VyLCBTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUpIHsKKyAgICBTcGFy
c2VUZXh0dXJlTWFwcGluZ01vZGVNYXAgPSAwLAorICAgIFNwYXJzZVRleHR1cmVNYXBwaW5nTW9k
ZVVubWFwID0gMSwKK307CisKK3N0cnVjdCBNYXBJbmRpcmVjdEFyZ3VtZW50cworeworICAgIHVp
bnQzMl90IHJlZ2lvbk9yaWdpblg7CisgICAgdWludDMyX3QgcmVnaW9uT3JpZ2luWTsKKyAgICB1
aW50MzJfdCByZWdpb25PcmlnaW5aOworICAgIHVpbnQzMl90IHJlZ2lvblNpemVXaWR0aDsKKyAg
ICB1aW50MzJfdCByZWdpb25TaXplSGVpZ2h0OworICAgIHVpbnQzMl90IHJlZ2lvblNpemVEZXB0
aDsKKyAgICB1aW50MzJfdCBtaXBNYXBMZXZlbDsKKyAgICB1aW50MzJfdCBzbGljZUlkOworfSBf
TVRMX1BBQ0tFRDsKKworY2xhc3MgUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyIDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIsIENvbW1hbmRFbmNv
ZGVyPgoreworcHVibGljOgorICAgIHZvaWQgdXBkYXRlVGV4dHVyZU1hcHBpbmdzKGNvbnN0IGNs
YXNzIFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdNb2Rl
IG1vZGUsIGNvbnN0IE1UTDo6UmVnaW9uKiByZWdpb25zLCBjb25zdCBOUzo6VUludGVnZXIqIG1p
cExldmVscywgY29uc3QgTlM6OlVJbnRlZ2VyKiBzbGljZXMsIE5TOjpVSW50ZWdlciBudW1SZWdp
b25zKTsKKworICAgIHZvaWQgdXBkYXRlVGV4dHVyZU1hcHBpbmcoY29uc3QgY2xhc3MgVGV4dHVy
ZSogdGV4dHVyZSwgY29uc3QgTVRMOjpTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUgbW9kZSwgY29u
c3QgTVRMOjpSZWdpb24gcmVnaW9uLCBjb25zdCBOUzo6VUludGVnZXIgbWlwTGV2ZWwsIGNvbnN0
IE5TOjpVSW50ZWdlciBzbGljZSk7CisKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVNYXBwaW5nKGNv
bnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBp
bmdNb2RlIG1vZGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50
ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkIHVwZGF0ZUZlbmNlKGNvbnN0
IGNsYXNzIEZlbmNlKiBmZW5jZSk7CisKKyAgICB2b2lkIHdhaXRGb3JGZW5jZShjb25zdCBjbGFz
cyBGZW5jZSogZmVuY2UpOworfTsKKworfQorCisvLyBtZXRob2Q6IHVwZGF0ZVRleHR1cmVNYXBw
aW5nczptb2RlOnJlZ2lvbnM6bWlwTGV2ZWxzOnNsaWNlczpudW1SZWdpb25zOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcjo6dXBkYXRlVGV4dHVyZU1h
cHBpbmdzKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgTVRMOjpTcGFyc2VUZXh0
dXJlTWFwcGluZ01vZGUgbW9kZSwgY29uc3QgTVRMOjpSZWdpb24qIHJlZ2lvbnMsIGNvbnN0IE5T
OjpVSW50ZWdlciogbWlwTGV2ZWxzLCBjb25zdCBOUzo6VUludGVnZXIqIHNsaWNlcywgTlM6OlVJ
bnRlZ2VyIG51bVJlZ2lvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHVwZGF0ZVRleHR1cmVNYXBwaW5nc19tb2RlX3JlZ2lvbnNfbWlw
TGV2ZWxzX3NsaWNlc19udW1SZWdpb25zXyksIHRleHR1cmUsIG1vZGUsIHJlZ2lvbnMsIG1pcExl
dmVscywgc2xpY2VzLCBudW1SZWdpb25zKTsKK30KKworLy8gbWV0aG9kOiB1cGRhdGVUZXh0dXJl
TWFwcGluZzptb2RlOnJlZ2lvbjptaXBMZXZlbDpzbGljZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXI6OnVwZGF0ZVRleHR1cmVNYXBwaW5nKGNvbnN0
IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgTVRMOjpTcGFyc2VUZXh0dXJlTWFwcGluZ01v
ZGUgbW9kZSwgY29uc3QgTVRMOjpSZWdpb24gcmVnaW9uLCBjb25zdCBOUzo6VUludGVnZXIgbWlw
TGV2ZWwsIGNvbnN0IE5TOjpVSW50ZWdlciBzbGljZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlVGV4dHVyZU1hcHBpbmdfbW9k
ZV9yZWdpb25fbWlwTGV2ZWxfc2xpY2VfKSwgdGV4dHVyZSwgbW9kZSwgcmVnaW9uLCBtaXBMZXZl
bCwgc2xpY2UpOworfQorCisvLyBtZXRob2Q6IHVwZGF0ZVRleHR1cmVNYXBwaW5nOm1vZGU6aW5k
aXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyOjp1cGRhdGVUZXh0dXJlTWFwcGluZyhjb25zdCBN
VEw6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdNb2Rl
IG1vZGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGlu
ZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTCh1cGRhdGVUZXh0dXJlTWFwcGluZ19tb2RlX2luZGlyZWN0QnVm
ZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIHRleHR1cmUsIG1vZGUsIGluZGlyZWN0QnVmZmVy
LCBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlRmVuY2U6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyOjp1cGRhdGVG
ZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOworfQor
CisvLyBtZXRob2Q6IHdhaXRGb3JGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJj
ZVN0YXRlQ29tbWFuZEVuY29kZXI6OndhaXRGb3JGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5j
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwod2FpdEZvckZlbmNlXyksIGZlbmNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZjNzcwZjY0MDIxMzE3ZDAyNDljZWFlZWYxYjVlNmNiNDQ4YWNhYTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVz
b3VyY2VTdGF0ZVBhc3MuaHBwCkBAIC0wLDAgKzEsMTY1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExSZXNvdXJjZVN0YXRl
UGFzcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2Uu
aHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgUmVzb3VyY2VTdGF0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxS
ZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVi
bGljOgorICAgIHN0YXRpYyBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNs
YXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FtcGxlQnVmZmVyKGNv
bnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlcik7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFy
dE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRW5jb2RlclNhbXBsZUlu
ZGV4KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZFbmNv
ZGVyU2FtcGxlSW5kZXgpOworfTsKKworY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSZXNv
dXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlc291cmNlU3Rh
dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQo
KTsKKworICAgIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBSZXNvdXJjZVN0YXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUlu
dGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIFJlc291cmNlU3RhdGVQYXNzRGVz
Y3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3I+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRv
ciogICAgICAgICAgICAgICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0
ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAg
ICBzdGF0aWMgY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAg
ICAgICAgIHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcigpOworCisgICAgY2xhc3MgUmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBzYW1wbGVC
dWZmZXJBdHRhY2htZW50cygpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJl
c291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVz
b3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxl
QnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIE1UTDo6UmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2FtcGxlQnVmZmVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvdW50ZXJT
YW1wbGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlcikpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvcjo6c2V0U2FtcGxlQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRlclNhbXBs
ZUJ1ZmZlciogc2FtcGxlQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVCdWZmZXJfKSwgc2FtcGxlQnVmZmVyKTsK
K30KKworLy8gcHJvcGVydHk6IHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I6OnN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpz
ZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRW5jb2RlclNh
bXBsZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4XyksIHN0YXJ0T2ZFbmNvZGVy
U2FtcGxlSW5kZXgpOworfQorCisvLyBwcm9wZXJ0eTogZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OmVuZE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3I6OnNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVuY29k
ZXJTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXhfKSwgZW5kT2ZFbmNvZGVy
U2FtcGxlSW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUg
TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXkqIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
ckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVz
b3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PihfTVRM
X1BSSVZBVEVfQ0xTKE1UTFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBN
VEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZXNvdXJjZVN0
YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8v
IG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpSZXNv
dXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlc291
cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0
KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRf
KSwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVk
U3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6UmVz
b3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVu
dCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNj
cmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3Iq
IE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTFJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9y
KiBNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3I+KCk7Cit9
CisKKy8vIHN0YXRpYyBtZXRob2Q6IHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcgorX01UTF9J
TkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqIE1UTDo6UmVzb3VyY2VTdGF0
ZVBhc3NEZXNjcmlwdG9yOjpyZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IoKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9y
Kj4oX01UTF9QUklWQVRFX0NMUyhNVExSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IpLCBfTVRM
X1BSSVZBVEVfU0VMKHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBwcm9w
ZXJ0eTogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VT
dGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlc291
cmNlU3RhdGVQYXNzRGVzY3JpcHRvcjo6c2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzYW1wbGVCdWZmZXJBdHRhY2htZW50cykpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFNhbXBsZXIuaHBwIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFNhbXBsZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwZTc5
MTUyZTE1YTg3YTRlYTI5ZTBjZTY5ZTJiNDZjOTAwNDUyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMU2FtcGxlci5ocHAKQEAgLTAs
MCArMSwzMTAgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIE1ldGFsL01UTFNhbXBsZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAy
MSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5j
bHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKwor
I2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExEZXB0
aFN0ZW5jaWwuaHBwIgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBwIgorCituYW1lc3BhY2UgTVRM
Cit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBTYW1wbGVyTWluTWFnRmlsdGVyKSB7CisgICAg
U2FtcGxlck1pbk1hZ0ZpbHRlck5lYXJlc3QgPSAwLAorICAgIFNhbXBsZXJNaW5NYWdGaWx0ZXJM
aW5lYXIgPSAxLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU2FtcGxlck1pcEZpbHRl
cikgeworICAgIFNhbXBsZXJNaXBGaWx0ZXJOb3RNaXBtYXBwZWQgPSAwLAorICAgIFNhbXBsZXJN
aXBGaWx0ZXJOZWFyZXN0ID0gMSwKKyAgICBTYW1wbGVyTWlwRmlsdGVyTGluZWFyID0gMiwKK307
CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFNhbXBsZXJBZGRyZXNzTW9kZSkgeworICAgIFNh
bXBsZXJBZGRyZXNzTW9kZUNsYW1wVG9FZGdlID0gMCwKKyAgICBTYW1wbGVyQWRkcmVzc01vZGVN
aXJyb3JDbGFtcFRvRWRnZSA9IDEsCisgICAgU2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0ID0gMiwK
KyAgICBTYW1wbGVyQWRkcmVzc01vZGVNaXJyb3JSZXBlYXQgPSAzLAorICAgIFNhbXBsZXJBZGRy
ZXNzTW9kZUNsYW1wVG9aZXJvID0gNCwKKyAgICBTYW1wbGVyQWRkcmVzc01vZGVDbGFtcFRvQm9y
ZGVyQ29sb3IgPSA1LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU2FtcGxlckJvcmRl
ckNvbG9yKSB7CisgICAgU2FtcGxlckJvcmRlckNvbG9yVHJhbnNwYXJlbnRCbGFjayA9IDAsCisg
ICAgU2FtcGxlckJvcmRlckNvbG9yT3BhcXVlQmxhY2sgPSAxLAorICAgIFNhbXBsZXJCb3JkZXJD
b2xvck9wYXF1ZVdoaXRlID0gMiwKK307CisKK2NsYXNzIFNhbXBsZXJEZXNjcmlwdG9yIDogcHVi
bGljIE5TOjpDb3B5aW5nPFNhbXBsZXJEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRp
YyBjbGFzcyBTYW1wbGVyRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFNhbXBsZXJE
ZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpTYW1wbGVyTWluTWFnRmlsdGVy
ICAgICAgICBtaW5GaWx0ZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldE1pbkZpbHRlcihNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgbWluRmlsdGVyKTsK
KworICAgIE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciAgICAgICAgbWFnRmlsdGVyKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYWdGaWx0ZXIoTVRMOjpT
YW1wbGVyTWluTWFnRmlsdGVyIG1hZ0ZpbHRlcik7CisKKyAgICBNVEw6OlNhbXBsZXJNaXBGaWx0
ZXIgICAgICAgICAgIG1pcEZpbHRlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0TWlwRmlsdGVyKE1UTDo6U2FtcGxlck1pcEZpbHRlciBtaXBGaWx0ZXIp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBtYXhBbmlzb3Ryb3B5KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhBbmlzb3Ry
b3B5KE5TOjpVSW50ZWdlciBtYXhBbmlzb3Ryb3B5KTsKKworICAgIE1UTDo6U2FtcGxlckFkZHJl
c3NNb2RlICAgICAgICAgc0FkZHJlc3NNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRTQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUg
c0FkZHJlc3NNb2RlKTsKKworICAgIE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlICAgICAgICAgdEFk
ZHJlc3NNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRUQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgdEFkZHJlc3NNb2RlKTsKKwor
ICAgIE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlICAgICAgICAgckFkZHJlc3NNb2RlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSQWRkcmVzc01vZGUoTVRM
OjpTYW1wbGVyQWRkcmVzc01vZGUgckFkZHJlc3NNb2RlKTsKKworICAgIE1UTDo6U2FtcGxlckJv
cmRlckNvbG9yICAgICAgICAgYm9yZGVyQ29sb3IoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEJvcmRlckNvbG9yKE1UTDo6U2FtcGxlckJvcmRlckNvbG9y
IGJvcmRlckNvbG9yKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9y
bWFsaXplZENvb3JkaW5hdGVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXROb3JtYWxpemVkQ29vcmRpbmF0ZXMoYm9vbCBub3JtYWxpemVkQ29vcmRpbmF0
ZXMpOworCisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2RNaW5DbGFtcCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9kTWluQ2xh
bXAoZmxvYXQgbG9kTWluQ2xhbXApOworCisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsb2RNYXhDbGFtcCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0TG9kTWF4Q2xhbXAoZmxvYXQgbG9kTWF4Q2xhbXApOworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2RBdmVyYWdlKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2RBdmVyYWdlKGJvb2wgbG9kQXZlcmFnZSk7CisK
KyAgICBNVEw6OkNvbXBhcmVGdW5jdGlvbiAgICAgICAgICAgIGNvbXBhcmVGdW5jdGlvbigpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29tcGFyZUZ1bmN0
aW9uKE1UTDo6Q29tcGFyZUZ1bmN0aW9uIGNvbXBhcmVGdW5jdGlvbik7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1cHBvcnRBcmd1bWVudEJ1
ZmZlcnMoYm9vbCBzdXBwb3J0QXJndW1lbnRCdWZmZXJzKTsKKworICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKK307CisKK2Ns
YXNzIFNhbXBsZXJTdGF0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8U2FtcGxlclN0YXRlPgor
eworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNz
IERldmljZSogZGV2aWNlKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yKiBNVEw6OlNhbXBsZXJEZXNj
cmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U2Ft
cGxlckRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMU2FtcGxlckRlc2NyaXB0b3IpKTsK
K30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9y
KiBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6aW5pdDxNVEw6OlNhbXBsZXJEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogbWlu
RmlsdGVyCitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgTVRMOjpTYW1wbGVy
RGVzY3JpcHRvcjo6bWluRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bWluRmlsdGVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRv
cjo6c2V0TWluRmlsdGVyKE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciBtaW5GaWx0ZXIpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1p
bkZpbHRlcl8pLCBtaW5GaWx0ZXIpOworfQorCisvLyBwcm9wZXJ0eTogbWFnRmlsdGVyCitfTVRM
X0lOTElORSBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6
bWFnRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OlNhbXBsZXJNaW5NYWdGaWx0ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWFnRmlsdGVyKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TWFnRmls
dGVyKE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciBtYWdGaWx0ZXIpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1hZ0ZpbHRlcl8pLCBt
YWdGaWx0ZXIpOworfQorCisvLyBwcm9wZXJ0eTogbWlwRmlsdGVyCitfTVRMX0lOTElORSBNVEw6
OlNhbXBsZXJNaXBGaWx0ZXIgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bWlwRmlsdGVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNhbXBsZXJNaXBGaWx0
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWlwRmlsdGVyKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TWlwRmlsdGVyKE1UTDo6U2FtcGxlck1p
cEZpbHRlciBtaXBGaWx0ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldE1pcEZpbHRlcl8pLCBtaXBGaWx0ZXIpOworfQorCisvLyBw
cm9wZXJ0eTogbWF4QW5pc290cm9weQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6U2Ft
cGxlckRlc2NyaXB0b3I6Om1heEFuaXNvdHJvcHkoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhB
bmlzb3Ryb3B5KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRv
cjo6c2V0TWF4QW5pc290cm9weShOUzo6VUludGVnZXIgbWF4QW5pc290cm9weSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4QW5p
c290cm9weV8pLCBtYXhBbmlzb3Ryb3B5KTsKK30KKworLy8gcHJvcGVydHk6IHNBZGRyZXNzTW9k
ZQorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgTVRMOjpTYW1wbGVyRGVzY3Jp
cHRvcjo6c0FkZHJlc3NNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzQWRk
cmVzc01vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9y
OjpzZXRTQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgc0FkZHJlc3NNb2RlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRTQWRkcmVzc01vZGVfKSwgc0FkZHJlc3NNb2RlKTsKK30KKworLy8gcHJvcGVydHk6IHRBZGRy
ZXNzTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgTVRMOjpTYW1wbGVy
RGVzY3JpcHRvcjo6dEFkZHJlc3NNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh0QWRkcmVzc01vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNj
cmlwdG9yOjpzZXRUQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgdEFkZHJlc3NN
b2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRUQWRkcmVzc01vZGVfKSwgdEFkZHJlc3NNb2RlKTsKK30KKworLy8gcHJvcGVydHk6
IHJBZGRyZXNzTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgTVRMOjpT
YW1wbGVyRGVzY3JpcHRvcjo6ckFkZHJlc3NNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChyQWRkcmVzc01vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBs
ZXJEZXNjcmlwdG9yOjpzZXRSQWRkcmVzc01vZGUoTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgckFk
ZHJlc3NNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRSQWRkcmVzc01vZGVfKSwgckFkZHJlc3NNb2RlKTsKK30KKworLy8gcHJv
cGVydHk6IGJvcmRlckNvbG9yCitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJCb3JkZXJDb2xvciBN
VEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpib3JkZXJDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyQm9yZGVyQ29sb3I+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYm9yZGVyQ29sb3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNh
bXBsZXJEZXNjcmlwdG9yOjpzZXRCb3JkZXJDb2xvcihNVEw6OlNhbXBsZXJCb3JkZXJDb2xvciBi
b3JkZXJDb2xvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0Qm9yZGVyQ29sb3JfKSwgYm9yZGVyQ29sb3IpOworfQorCisvLyBwcm9w
ZXJ0eTogbm9ybWFsaXplZENvb3JkaW5hdGVzCitfTVRMX0lOTElORSBib29sIE1UTDo6U2FtcGxl
ckRlc2NyaXB0b3I6Om5vcm1hbGl6ZWRDb29yZGluYXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChub3JtYWxp
emVkQ29vcmRpbmF0ZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNj
cmlwdG9yOjpzZXROb3JtYWxpemVkQ29vcmRpbmF0ZXMoYm9vbCBub3JtYWxpemVkQ29vcmRpbmF0
ZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldE5vcm1hbGl6ZWRDb29yZGluYXRlc18pLCBub3JtYWxpemVkQ29vcmRpbmF0ZXMpOwor
fQorCisvLyBwcm9wZXJ0eTogbG9kTWluQ2xhbXAKK19NVExfSU5MSU5FIGZsb2F0IE1UTDo6U2Ft
cGxlckRlc2NyaXB0b3I6OmxvZE1pbkNsYW1wKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxmbG9hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChsb2RNaW5DbGFtcCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldExvZE1p
bkNsYW1wKGZsb2F0IGxvZE1pbkNsYW1wKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMb2RNaW5DbGFtcF8pLCBsb2RNaW5DbGFtcCk7
Cit9CisKKy8vIHByb3BlcnR5OiBsb2RNYXhDbGFtcAorX01UTF9JTkxJTkUgZmxvYXQgTVRMOjpT
YW1wbGVyRGVzY3JpcHRvcjo6bG9kTWF4Q2xhbXAoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPGZsb2F0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxvZE1heENsYW1w
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TG9k
TWF4Q2xhbXAoZmxvYXQgbG9kTWF4Q2xhbXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExvZE1heENsYW1wXyksIGxvZE1heENsYW1w
KTsKK30KKworLy8gcHJvcGVydHk6IGxvZEF2ZXJhZ2UKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpT
YW1wbGVyRGVzY3JpcHRvcjo6bG9kQXZlcmFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChsb2RBdmVyYWdlKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TG9kQXZl
cmFnZShib29sIGxvZEF2ZXJhZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExvZEF2ZXJhZ2VfKSwgbG9kQXZlcmFnZSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBjb21wYXJlRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6Q29tcGFyZUZ1
bmN0aW9uIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmNvbXBhcmVGdW5jdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21wYXJlRnVuY3Rpb24+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoY29tcGFyZUZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0Q29tcGFyZUZ1bmN0aW9uKE1UTDo6Q29t
cGFyZUZ1bmN0aW9uIGNvbXBhcmVGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tcGFyZUZ1bmN0aW9uXyksIGNvbXBh
cmVGdW5jdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0QXJndW1lbnRCdWZmZXJzCitf
TVRMX0lOTElORSBib29sIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnN1cHBvcnRBcmd1bWVudEJ1
ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRTdXBwb3J0QXJndW1l
bnRCdWZmZXJzKGJvb2wgc3VwcG9ydEFyZ3VtZW50QnVmZmVycykKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFyZ3VtZW50
QnVmZmVyc18pLCBzdXBwb3J0QXJndW1lbnRCdWZmZXJzKTsKK30KKworLy8gcHJvcGVydHk6IGxh
YmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpsYWJl
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5F
IE5TOjpTdHJpbmcqIE1UTDo6U2FtcGxlclN0YXRlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpE
ZXZpY2UqIE1UTDo6U2FtcGxlclN0YXRlOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChk
ZXZpY2UpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg3OTI0NGUyNGUwMjE5MzkyM2EzYzQxNzNkMTZkOTUwYzFlZTQxMmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMU3Rh
Z2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwCkBAIC0wLDAgKzEsMzgxIEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExTdGFn
ZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFw
cGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRl
ICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5j
bHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTFN0YWdlSW5w
dXRPdXRwdXREZXNjcmlwdG9yLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5T
OjpVSW50ZWdlciwgQXR0cmlidXRlRm9ybWF0KSB7CisgICAgQXR0cmlidXRlRm9ybWF0SW52YWxp
ZCA9IDAsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIyID0gMSwKKyAgICBBdHRyaWJ1dGVGb3Jt
YXRVQ2hhcjMgPSAyLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyNCA9IDMsCisgICAgQXR0cmli
dXRlRm9ybWF0Q2hhcjIgPSA0LAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXIzID0gNSwKKyAgICBB
dHRyaWJ1dGVGb3JtYXRDaGFyNCA9IDYsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIyTm9ybWFs
aXplZCA9IDcsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIzTm9ybWFsaXplZCA9IDgsCisgICAg
QXR0cmlidXRlRm9ybWF0VUNoYXI0Tm9ybWFsaXplZCA9IDksCisgICAgQXR0cmlidXRlRm9ybWF0
Q2hhcjJOb3JtYWxpemVkID0gMTAsCisgICAgQXR0cmlidXRlRm9ybWF0Q2hhcjNOb3JtYWxpemVk
ID0gMTEsCisgICAgQXR0cmlidXRlRm9ybWF0Q2hhcjROb3JtYWxpemVkID0gMTIsCisgICAgQXR0
cmlidXRlRm9ybWF0VVNob3J0MiA9IDEzLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydDMgPSAx
NCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQ0ID0gMTUsCisgICAgQXR0cmlidXRlRm9ybWF0
U2hvcnQyID0gMTYsCisgICAgQXR0cmlidXRlRm9ybWF0U2hvcnQzID0gMTcsCisgICAgQXR0cmli
dXRlRm9ybWF0U2hvcnQ0ID0gMTgsCisgICAgQXR0cmlidXRlRm9ybWF0VVNob3J0Mk5vcm1hbGl6
ZWQgPSAxOSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQzTm9ybWFsaXplZCA9IDIwLAorICAg
IEF0dHJpYnV0ZUZvcm1hdFVTaG9ydDROb3JtYWxpemVkID0gMjEsCisgICAgQXR0cmlidXRlRm9y
bWF0U2hvcnQyTm9ybWFsaXplZCA9IDIyLAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0M05vcm1h
bGl6ZWQgPSAyMywKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydDROb3JtYWxpemVkID0gMjQsCisg
ICAgQXR0cmlidXRlRm9ybWF0SGFsZjIgPSAyNSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRIYWxmMyA9
IDI2LAorICAgIEF0dHJpYnV0ZUZvcm1hdEhhbGY0ID0gMjcsCisgICAgQXR0cmlidXRlRm9ybWF0
RmxvYXQgPSAyOCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRGbG9hdDIgPSAyOSwKKyAgICBBdHRyaWJ1
dGVGb3JtYXRGbG9hdDMgPSAzMCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRGbG9hdDQgPSAzMSwKKyAg
ICBBdHRyaWJ1dGVGb3JtYXRJbnQgPSAzMiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRJbnQyID0gMzMs
CisgICAgQXR0cmlidXRlRm9ybWF0SW50MyA9IDM0LAorICAgIEF0dHJpYnV0ZUZvcm1hdEludDQg
PSAzNSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50ID0gMzYsCisgICAgQXR0cmlidXRlRm9ybWF0
VUludDIgPSAzNywKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50MyA9IDM4LAorICAgIEF0dHJpYnV0
ZUZvcm1hdFVJbnQ0ID0gMzksCisgICAgQXR0cmlidXRlRm9ybWF0SW50MTAxMDEwMk5vcm1hbGl6
ZWQgPSA0MCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50MTAxMDEwMk5vcm1hbGl6ZWQgPSA0MSwK
KyAgICBBdHRyaWJ1dGVGb3JtYXRVQ2hhcjROb3JtYWxpemVkX0JHUkEgPSA0MiwKKyAgICBBdHRy
aWJ1dGVGb3JtYXRVQ2hhciA9IDQ1LAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXIgPSA0NiwKKyAg
ICBBdHRyaWJ1dGVGb3JtYXRVQ2hhck5vcm1hbGl6ZWQgPSA0NywKKyAgICBBdHRyaWJ1dGVGb3Jt
YXRDaGFyTm9ybWFsaXplZCA9IDQ4LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydCA9IDQ5LAor
ICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0ID0gNTAsCisgICAgQXR0cmlidXRlRm9ybWF0VVNob3J0
Tm9ybWFsaXplZCA9IDUxLAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0Tm9ybWFsaXplZCA9IDUy
LAorICAgIEF0dHJpYnV0ZUZvcm1hdEhhbGYgPSA1MywKK307CisKK19NVExfRU5VTShOUzo6VUlu
dGVnZXIsIEluZGV4VHlwZSkgeworICAgIEluZGV4VHlwZVVJbnQxNiA9IDAsCisgICAgSW5kZXhU
eXBlVUludDMyID0gMSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFN0ZXBGdW5jdGlv
bikgeworICAgIFN0ZXBGdW5jdGlvbkNvbnN0YW50ID0gMCwKKyAgICBTdGVwRnVuY3Rpb25QZXJW
ZXJ0ZXggPSAxLAorICAgIFN0ZXBGdW5jdGlvblBlckluc3RhbmNlID0gMiwKKyAgICBTdGVwRnVu
Y3Rpb25QZXJQYXRjaCA9IDMsCisgICAgU3RlcEZ1bmN0aW9uUGVyUGF0Y2hDb250cm9sUG9pbnQg
PSA0LAorICAgIFN0ZXBGdW5jdGlvblRocmVhZFBvc2l0aW9uSW5HcmlkWCA9IDUsCisgICAgU3Rl
cEZ1bmN0aW9uVGhyZWFkUG9zaXRpb25JbkdyaWRZID0gNiwKKyAgICBTdGVwRnVuY3Rpb25UaHJl
YWRQb3NpdGlvbkluR3JpZFhJbmRleGVkID0gNywKKyAgICBTdGVwRnVuY3Rpb25UaHJlYWRQb3Np
dGlvbkluR3JpZFlJbmRleGVkID0gOCwKK307CisKK2NsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0
b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QnVmZmVyTGF5b3V0RGVzY3JpcHRvcj4KK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvciogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0cmlkZShOUzo6VUludGVn
ZXIgc3RyaWRlKTsKKworICAgIE1UTDo6U3RlcEZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICBz
dGVwRnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3RlcEZ1bmN0aW9uKE1UTDo6U3RlcEZ1bmN0aW9uIHN0ZXBGdW5jdGlvbik7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcFJhdGUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RlcFJhdGUo
TlM6OlVJbnRlZ2VyIHN0ZXBSYXRlKTsKK307CisKK2NsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFy
cmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9y
QXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkq
ICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiAgICAg
ICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBCdWZmZXJM
YXlvdXREZXNjcmlwdG9yKiBidWZmZXJEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpOworfTsKKwor
Y2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBdHRyaWJ1dGVE
ZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBdHRyaWJ1dGVEZXNjcmlw
dG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvciogICAgICAgIGlu
aXQoKTsKKworICAgIE1UTDo6QXR0cmlidXRlRm9ybWF0ICAgICAgICAgICAgICBmb3JtYXQoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Rm9ybWF0KE1U
TDo6QXR0cmlidXRlRm9ybWF0IGZvcm1hdCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldE9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgICBidWZmZXJJbmRleCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCdWZmZXJJbmRleChOUzo6VUludGVnZXIg
YnVmZmVySW5kZXgpOworfTsKKworY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvckFycmF5IDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAg
IGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVn
ZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0T2JqZWN0KGNvbnN0IGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3IqIGF0dHJpYnV0ZURlc2Ms
IE5TOjpVSW50ZWdlciBpbmRleCk7Cit9OworCitjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3Jp
cHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcj4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIGFs
bG9jKCk7CisKKyAgICBjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogICAgICAgIGlu
aXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogc3Rh
Z2VJbnB1dE91dHB1dERlc2NyaXB0b3IoKTsKKworICAgIGNsYXNzIEJ1ZmZlckxheW91dERlc2Ny
aXB0b3JBcnJheSogICAgICAgbGF5b3V0cygpIGNvbnN0OworCisgICAgY2xhc3MgQXR0cmlidXRl
RGVzY3JpcHRvckFycmF5KiAgICAgICAgICBhdHRyaWJ1dGVzKCkgY29uc3Q7CisKKyAgICBNVEw6
OkluZGV4VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4VHlwZSgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhUeXBl
KE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4QnVmZmVySW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluZGV4QnVmZmVySW5kZXgoTlM6
OlVJbnRlZ2VyIGluZGV4QnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBNVEw6OkJ1
ZmZlckxheW91dERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEJ1
ZmZlckxheW91dERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElO
RSBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3IqIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRv
cjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpCdWZmZXJMYXlv
dXREZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc3RyaWRlCitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzdHJpZGUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzdHJpZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZl
ckxheW91dERlc2NyaXB0b3I6OnNldFN0cmlkZShOUzo6VUludGVnZXIgc3RyaWRlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdHJp
ZGVfKSwgc3RyaWRlKTsKK30KKworLy8gcHJvcGVydHk6IHN0ZXBGdW5jdGlvbgorX01UTF9JTkxJ
TkUgTVRMOjpTdGVwRnVuY3Rpb24gTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzdGVwRnVu
Y3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3Rl
cEZ1bmN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZXBGdW5jdGlvbikpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c2V0U3RlcEZ1bmN0
aW9uKE1UTDo6U3RlcEZ1bmN0aW9uIHN0ZXBGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlcEZ1bmN0aW9uXyksIHN0
ZXBGdW5jdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBzdGVwUmF0ZQorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RlcFJhdGUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzdGVwUmF0ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QnVm
ZmVyTGF5b3V0RGVzY3JpcHRvcjo6c2V0U3RlcFJhdGUoTlM6OlVJbnRlZ2VyIHN0ZXBSYXRlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRTdGVwUmF0ZV8pLCBzdGVwUmF0ZSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogTVRMOjpCdWZmZXJM
YXlvdXREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMo
TVRMQnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAor
X01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqIE1UTDo6QnVmZmVy
TGF5b3V0RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9k
OiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlckxheW91
dERlc2NyaXB0b3IqIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6
OlVJbnRlZ2VyIGluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QnVmZmVyTGF5b3V0RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJ
bmRleGVkU3Vic2NyaXB0XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJ
bmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlckxheW91dERlc2Ny
aXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvciog
YnVmZmVyRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2Ny
aXB0XyksIGJ1ZmZlckRlc2MsIGluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MK
K19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpBdHRyaWJ1dGVEZXNj
cmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QXR0
cmlidXRlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExBdHRyaWJ1dGVEZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNj
cmlwdG9yKiBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0Ojppbml0PE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJv
cGVydHk6IGZvcm1hdAorX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVGb3JtYXQgTVRMOjpBdHRy
aWJ1dGVEZXNjcmlwdG9yOjpmb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6QXR0cmlidXRlRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZv
cm1hdCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6
c2V0Rm9ybWF0KE1UTDo6QXR0cmlidXRlRm9ybWF0IGZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Rm9ybWF0XyksIGZvcm1h
dCk7Cit9CisKKy8vIHByb3BlcnR5OiBvZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6Om9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9m
ZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6
c2V0T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9mZnNldF8pLCBvZmZzZXQpOworfQor
CisvLyBwcm9wZXJ0eTogYnVmZmVySW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OkF0dHJpYnV0ZURlc2NyaXB0b3I6OmJ1ZmZlckluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
YnVmZmVySW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkF0dHJpYnV0ZURlc2Ny
aXB0b3I6OnNldEJ1ZmZlckluZGV4KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVy
SW5kZXhfKSwgYnVmZmVySW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01U
TF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIE1UTDo6QXR0cmlidXRlRGVz
Y3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1U
TDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEF0dHJpYnV0
ZURlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJh
eTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBdHRyaWJ1dGVE
ZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2Ny
aXB0OgorX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yKiBNVEw6OkF0dHJpYnV0
ZURlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3IqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBpbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OkF0
dHJpYnV0ZURlc2NyaXB0b3IqIGF0dHJpYnV0ZURlc2MsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRyaWJ1dGVEZXNjLCBpbmRleCk7Cit9CisK
Ky8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlN0YWdlSW5wdXRPdXRw
dXREZXNjcmlwdG9yKiBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjphbGxvYygpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IpKTsK
K30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlN0YWdlSW5wdXRPdXRwdXRE
ZXNjcmlwdG9yKiBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9y
PigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcgor
X01UTF9JTkxJTkUgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogTVRMOjpTdGFnZUlu
cHV0T3V0cHV0RGVzY3JpcHRvcjo6c3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IoKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0
b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKSwgX01U
TF9QUklWQVRFX1NFTChzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcikpOworfQorCisvLyBwcm9w
ZXJ0eTogbGF5b3V0cworX01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJy
YXkqIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OmxheW91dHMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRv
ckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXlvdXRzKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBhdHRyaWJ1dGVzCitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJh
eSogTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6YXR0cmlidXRlcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9y
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0ZXMpKTsKK30KKworLy8gcHJv
cGVydHk6IGluZGV4VHlwZQorX01UTF9JTkxJTkUgTVRMOjpJbmRleFR5cGUgTVRMOjpTdGFnZUlu
cHV0T3V0cHV0RGVzY3JpcHRvcjo6aW5kZXhUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGV4VHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
bmRleFR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0YWdlSW5wdXRPdXRwdXRE
ZXNjcmlwdG9yOjpzZXRJbmRleFR5cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRl
eFR5cGVfKSwgaW5kZXhUeXBlKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4QnVmZmVySW5kZXgK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9y
OjppbmRleEJ1ZmZlckluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXhCdWZmZXJJbmRl
eCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0
b3I6OnNldEluZGV4QnVmZmVySW5kZXgoTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVySW5kZXgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dEluZGV4QnVmZmVySW5kZXhfKSwgaW5kZXhCdWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDog
cmVzZXQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6
cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChyZXNldCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFRleHR1cmUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFRleHR1cmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMmJhNDkwZTdhZjg3NWM2MjNk
ZjE4MDAxOGM0MDE0Y2U0MDAzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVGV4dHVyZS5ocHAKQEAgLTAsMCArMSw2NTggQEAKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFs
L01UTFRleHR1cmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisv
LworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVy
QnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExQaXhlbEZvcm1hdC5ocHAiCisj
aW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBwIgorI2lu
Y2x1ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlIDxJT1N1cmZhY2UvSU9TdXJmYWNlUmVmLmg+
CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFRleHR1cmVUeXBl
KSB7CisgICAgVGV4dHVyZVR5cGUxRCA9IDAsCisgICAgVGV4dHVyZVR5cGUxREFycmF5ID0gMSwK
KyAgICBUZXh0dXJlVHlwZTJEID0gMiwKKyAgICBUZXh0dXJlVHlwZTJEQXJyYXkgPSAzLAorICAg
IFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZSA9IDQsCisgICAgVGV4dHVyZVR5cGVDdWJlID0gNSwK
KyAgICBUZXh0dXJlVHlwZUN1YmVBcnJheSA9IDYsCisgICAgVGV4dHVyZVR5cGUzRCA9IDcsCisg
ICAgVGV4dHVyZVR5cGUyRE11bHRpc2FtcGxlQXJyYXkgPSA4LAorICAgIFRleHR1cmVUeXBlVGV4
dHVyZUJ1ZmZlciA9IDksCit9OworCitfTVRMX0VOVU0odWludDhfdCwgVGV4dHVyZVN3aXp6bGUp
IHsKKyAgICBUZXh0dXJlU3dpenpsZVplcm8gPSAwLAorICAgIFRleHR1cmVTd2l6emxlT25lID0g
MSwKKyAgICBUZXh0dXJlU3dpenpsZVJlZCA9IDIsCisgICAgVGV4dHVyZVN3aXp6bGVHcmVlbiA9
IDMsCisgICAgVGV4dHVyZVN3aXp6bGVCbHVlID0gNCwKKyAgICBUZXh0dXJlU3dpenpsZUFscGhh
ID0gNSwKK307CisKK3N0cnVjdCBUZXh0dXJlU3dpenpsZUNoYW5uZWxzCit7CisgICAgTVRMOjpU
ZXh0dXJlU3dpenpsZSByZWQ7CisgICAgTVRMOjpUZXh0dXJlU3dpenpsZSBncmVlbjsKKyAgICBN
VEw6OlRleHR1cmVTd2l6emxlIGJsdWU7CisgICAgTVRMOjpUZXh0dXJlU3dpenpsZSBhbHBoYTsK
K30gX01UTF9QQUNLRUQ7CisKK2NsYXNzIFNoYXJlZFRleHR1cmVIYW5kbGUgOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPFNoYXJlZFRleHR1cmVIYW5kbGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNsYXNzIFNoYXJlZFRleHR1cmVIYW5kbGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBTaGFyZWRU
ZXh0dXJlSGFuZGxlKiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgRGV2aWNlKiAgICAgICAg
ICAgICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAgICAg
ICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7Cit9OworCitzdHJ1Y3QgU2hhcmVkVGV4dHVyZUhh
bmRsZVByaXZhdGUKK3sKK30gX01UTF9QQUNLRUQ7CisKK19NVExfT1BUSU9OUyhOUzo6VUludGVn
ZXIsIFRleHR1cmVVc2FnZSkgeworICAgIFRleHR1cmVVc2FnZVVua25vd24gPSAwLAorICAgIFRl
eHR1cmVVc2FnZVNoYWRlclJlYWQgPSAxLAorICAgIFRleHR1cmVVc2FnZVNoYWRlcldyaXRlID0g
MiwKKyAgICBUZXh0dXJlVXNhZ2VSZW5kZXJUYXJnZXQgPSA0LAorICAgIFRleHR1cmVVc2FnZVBp
eGVsRm9ybWF0VmlldyA9IDE2LAorfTsKKworX01UTF9FTlVNKE5TOjpJbnRlZ2VyLCBUZXh0dXJl
Q29tcHJlc3Npb25UeXBlKSB7CisgICAgVGV4dHVyZUNvbXByZXNzaW9uVHlwZUxvc3NsZXNzID0g
MCwKKyAgICBUZXh0dXJlQ29tcHJlc3Npb25UeXBlTG9zc3kgPSAxLAorfTsKKworY2xhc3MgVGV4
dHVyZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VGV4dHVyZURlc2NyaXB0b3I+Cit7
CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBhbGxvYygpOwor
CisgICAgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0
aWMgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIHRleHR1cmUyRERlc2NyaXB0b3IoTVRMOjpQaXhl
bEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVp
Z2h0LCBib29sIG1pcG1hcHBlZCk7CisKKyAgICBzdGF0aWMgY2xhc3MgVGV4dHVyZURlc2NyaXB0
b3IqIHRleHR1cmVDdWJlRGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBO
Uzo6VUludGVnZXIgc2l6ZSwgYm9vbCBtaXBtYXBwZWQpOworCisgICAgc3RhdGljIGNsYXNzIFRl
eHR1cmVEZXNjcmlwdG9yKiB0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBOUzo6VUludGVnZXIgd2lkdGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIHJl
c291cmNlT3B0aW9ucywgTVRMOjpUZXh0dXJlVXNhZ2UgdXNhZ2UpOworCisgICAgTVRMOjpUZXh0
dXJlVHlwZSAgICAgICAgICAgICAgICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGV4dHVyZVR5cGUoTVRMOjpUZXh0dXJlVHlwZSB0
ZXh0dXJlVHlwZSk7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAgICAgIHBpeGVs
Rm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQ
aXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KTsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgd2lkdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFdpZHRoKE5TOjpVSW50ZWdlciB3aWR0aCk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGVpZ2h0KE5TOjpVSW50ZWdlciBoZWlnaHQp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBkZXB0aCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVwdGgoTlM6OlVJbnRlZ2Vy
IGRlcHRoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWlwbWFwTGV2
ZWxDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TWlwbWFwTGV2ZWxDb3VudChOUzo6VUludGVnZXIgbWlwbWFwTGV2ZWxDb3VudCk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVDb3VudChOUzo6VUludGVn
ZXIgc2FtcGxlQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBh
cnJheUxlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFycmF5TGVuZ3RoKTsKKworICAgIE1UTDo6UmVz
b3VyY2VPcHRpb25zICAgICAgICAgICAgcmVzb3VyY2VPcHRpb25zKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNvdXJjZU9wdGlvbnMoTVRMOjpSZXNv
dXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zKTsKKworICAgIE1UTDo6Q1BVQ2FjaGVNb2RlICAg
ICAgICAgICAgICAgY3B1Q2FjaGVNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRDcHVDYWNoZU1vZGUoTVRMOjpDUFVDYWNoZU1vZGUgY3B1Q2FjaGVN
b2RlKTsKKworICAgIE1UTDo6U3RvcmFnZU1vZGUgICAgICAgICAgICAgICAgc3RvcmFnZU1vZGUo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0b3JhZ2VN
b2RlKE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpOworCisgICAgTVRMOjpIYXphcmRUcmFj
a2luZ01vZGUgICAgICAgICBoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEhhemFyZFRyYWNraW5nTW9kZShNVEw6OkhhemFy
ZFRyYWNraW5nTW9kZSBoYXphcmRUcmFja2luZ01vZGUpOworCisgICAgTVRMOjpUZXh0dXJlVXNh
Z2UgICAgICAgICAgICAgICB1c2FnZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0VXNhZ2UoTVRMOjpUZXh0dXJlVXNhZ2UgdXNhZ2UpOworCisgICAgYm9v
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0dQVU9wdGltaXplZENvbnRlbnRzKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBbGxvd0dQVU9w
dGltaXplZENvbnRlbnRzKGJvb2wgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cyk7CisKKyAgICBN
VEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgICAgIHN3aXp6bGUoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN3aXp6bGUoTVRMOjpUZXh0dXJlU3dpenps
ZUNoYW5uZWxzIHN3aXp6bGUpOworfTsKKworY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBOUzo6UmVm
ZXJlbmNpbmc8VGV4dHVyZSwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgUmVzb3Vy
Y2UqICAgICAgICAgICAgIHJvb3RSZXNvdXJjZSgpIGNvbnN0OworCisgICAgY2xhc3MgVGV4dHVy
ZSogICAgICAgICAgICAgIHBhcmVudFRleHR1cmUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICBwYXJlbnRSZWxhdGl2ZUxldmVsKCkgY29uc3Q7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgcGFyZW50UmVsYXRpdmVTbGljZSgpIGNvbnN0OworCisg
ICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgIGJ1ZmZlcigpIGNvbnN0OworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGJ1ZmZlck9mZnNldCgpIGNvbnN0OworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGJ1ZmZlckJ5dGVzUGVyUm93KCkgY29uc3Q7CisKKyAg
ICBJT1N1cmZhY2VSZWYgICAgICAgICAgICAgICAgaW9zdXJmYWNlKCkgY29uc3Q7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgaW9zdXJmYWNlUGxhbmUoKSBjb25zdDsKKworICAg
IE1UTDo6VGV4dHVyZVR5cGUgICAgICAgICAgICB0ZXh0dXJlVHlwZSgpIGNvbnN0OworCisgICAg
TVRMOjpQaXhlbEZvcm1hdCAgICAgICAgICAgIHBpeGVsRm9ybWF0KCkgY29uc3Q7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgd2lkdGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICBoZWlnaHQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICBkZXB0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgIG1pcG1hcExldmVsQ291bnQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICBzYW1wbGVDb3VudCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgIGFycmF5TGVuZ3RoKCkgY29uc3Q7CisKKyAgICBNVEw6OlRleHR1cmVVc2FnZSAg
ICAgICAgICAgdXNhZ2UoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAg
ICBzaGFyZWFibGUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBm
cmFtZWJ1ZmZlck9ubHkoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICBmaXJzdE1pcG1hcEluVGFpbCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgIHRhaWxTaXplSW5CeXRlcygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICAgICAgIGlzU3BhcnNlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAg
ICAgICAgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cygpIGNvbnN0OworCisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgIGdldEJ5dGVzKGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpV
SW50ZWdlciBieXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVySW1hZ2UsIE1UTDo6UmVn
aW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVsLCBOUzo6VUludGVnZXIgc2xpY2UpOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VSZWdpb24oTVRMOjpSZWdpb24g
cmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZSwgY29uc3Qgdm9p
ZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgYnl0
ZXNQZXJJbWFnZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Qnl0ZXMo
Y29uc3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93LCBNVEw6OlJl
Z2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZlbCk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwbGFjZVJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdl
ciBsZXZlbCwgY29uc3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93
KTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICBuZXdUZXh0dXJlVmlldyhNVEw6
OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAg
ICAgICBuZXdUZXh0dXJlVmlldyhNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBNVEw6OlRl
eHR1cmVUeXBlIHRleHR1cmVUeXBlLCBOUzo6UmFuZ2UgbGV2ZWxSYW5nZSwgTlM6OlJhbmdlIHNs
aWNlUmFuZ2UpOworCisgICAgY2xhc3MgU2hhcmVkVGV4dHVyZUhhbmRsZSogIG5ld1NoYXJlZFRl
eHR1cmVIYW5kbGUoKTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICByZW1vdGVT
dG9yYWdlVGV4dHVyZSgpIGNvbnN0OworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgICAg
IG5ld1JlbW90ZVRleHR1cmVWaWV3Rm9yRGV2aWNlKGNvbnN0IGNsYXNzIERldmljZSogZGV2aWNl
KTsKKworICAgIE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBzd2l6emxlKCkgY29uc3Q7CisK
KyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgbmV3VGV4dHVyZVZpZXcoTVRMOjpQaXhl
bEZvcm1hdCBwaXhlbEZvcm1hdCwgTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSwgTlM6OlJh
bmdlIGxldmVsUmFuZ2UsIE5TOjpSYW5nZSBzbGljZVJhbmdlLCBNVEw6OlRleHR1cmVTd2l6emxl
Q2hhbm5lbHMgc3dpenpsZSk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGUqIE1UTDo6U2hhcmVkVGV4dHVyZUhh
bmRsZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlNoYXJl
ZFRleHR1cmVIYW5kbGU+KF9NVExfUFJJVkFURV9DTFMoTVRMU2hhcmVkVGV4dHVyZUhhbmRsZSkp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6U2hhcmVkVGV4dHVyZUhh
bmRsZSogTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6aW5pdDxNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGU+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OlNoYXJlZFRleHR1cmVI
YW5kbGU6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBw
cm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6U2hhcmVkVGV4dHVy
ZUhhbmRsZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHN0
YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBN
VEw6OlRleHR1cmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6VGV4dHVyZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVGV4dHVy
ZURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRl
eHR1cmVEZXNjcmlwdG9yKiBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlRleHR1cmVEZXNjcmlwdG9yPigpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiB0ZXh0dXJlMkREZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0OndpZHRo
OmhlaWdodDptaXBtYXBwZWQ6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBN
VEw6OlRleHR1cmVEZXNjcmlwdG9yOjp0ZXh0dXJlMkREZXNjcmlwdG9yKE1UTDo6UGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwg
Ym9vbCBtaXBtYXBwZWQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpU
ZXh0dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMVGV4dHVyZURlc2NyaXB0b3Ip
LCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXRfd2lk
dGhfaGVpZ2h0X21pcG1hcHBlZF8pLCBwaXhlbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgbWlwbWFw
cGVkKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogdGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0aFBp
eGVsRm9ybWF0OnNpemU6bWlwbWFwcGVkOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlRGVzY3Jp
cHRvciogTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6dGV4dHVyZUN1YmVEZXNjcmlwdG9yKE1UTDo6
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciBzaXplLCBib29sIG1pcG1hcHBl
ZCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVEZXNjcmlw
dG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExUZXh0dXJlRGVzY3JpcHRvciksIF9NVExfUFJJVkFU
RV9TRUwodGV4dHVyZUN1YmVEZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0X3NpemVfbWlwbWFwcGVk
XyksIHBpeGVsRm9ybWF0LCBzaXplLCBtaXBtYXBwZWQpOworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiB0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdDp3aWR0aDpyZXNvdXJjZU9w
dGlvbnM6dXNhZ2U6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBNVEw6OlRl
eHR1cmVEZXNjcmlwdG9yOjp0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBOUzo6VUludGVnZXIgd2lkdGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIHJl
c291cmNlT3B0aW9ucywgTVRMOjpUZXh0dXJlVXNhZ2UgdXNhZ2UpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9D
TFMoTVRMVGV4dHVyZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVCdWZmZXJE
ZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0X3dpZHRoX3Jlc291cmNlT3B0aW9uc191c2FnZV8pLCBw
aXhlbEZvcm1hdCwgd2lkdGgsIHJlc291cmNlT3B0aW9ucywgdXNhZ2UpOworfQorCisvLyBwcm9w
ZXJ0eTogdGV4dHVyZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVR5cGUgTVRMOjpUZXh0
dXJlRGVzY3JpcHRvcjo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4
dHVyZVR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9y
OjpzZXRUZXh0dXJlVHlwZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXh0dXJl
VHlwZV8pLCB0ZXh0dXJlVHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBwaXhlbEZvcm1hdAorX01U
TF9JTkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpwaXhlbEZv
cm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXhl
bEZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaXhlbEZvcm1hdCkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFBpeGVsRm9ybWF0KE1UTDo6
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFBpeGVsRm9ybWF0XyksIHBpeGVsRm9ybWF0KTsK
K30KKworLy8gcHJvcGVydHk6IHdpZHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpU
ZXh0dXJlRGVzY3JpcHRvcjo6d2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3aWR0aCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFdpZHRoKE5T
OjpVSW50ZWdlciB3aWR0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0V2lkdGhfKSwgd2lkdGgpOworfQorCisvLyBwcm9wZXJ0eTog
aGVpZ2h0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6
aGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaGVpZ2h0KSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0SGVpZ2h0KE5TOjpVSW50ZWdlciBoZWln
aHQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEhlaWdodF8pLCBoZWlnaHQpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGgKK19NVExf
SU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpkZXB0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGRlcHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0
dXJlRGVzY3JpcHRvcjo6c2V0RGVwdGgoTlM6OlVJbnRlZ2VyIGRlcHRoKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aF8pLCBk
ZXB0aCk7Cit9CisKKy8vIHByb3BlcnR5OiBtaXBtYXBMZXZlbENvdW50CitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6bWlwbWFwTGV2ZWxDb3VudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG1pcG1hcExldmVsQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRNaXBtYXBMZXZlbENvdW50KE5TOjpVSW50
ZWdlciBtaXBtYXBMZXZlbENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNaXBtYXBMZXZlbENvdW50XyksIG1pcG1hcExldmVs
Q291bnQpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzYW1wbGVDb3VudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNhbXBsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0
dXJlRGVzY3JpcHRvcjo6c2V0U2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRTYW1wbGVDb3VudF8pLCBzYW1wbGVDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBhcnJheUxl
bmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmFy
cmF5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRBcnJheUxlbmd0aChOUzo6
VUludGVnZXIgYXJyYXlMZW5ndGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFycmF5TGVuZ3RoXyksIGFycmF5TGVuZ3RoKTsKK30K
KworLy8gcHJvcGVydHk6IHJlc291cmNlT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJj
ZU9wdGlvbnMgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6cmVzb3VyY2VPcHRpb25zKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlT3B0aW9ucz4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvdXJjZU9wdGlvbnMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRSZXNvdXJjZU9wdGlvbnMoTVRMOjpS
ZXNvdXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZXNvdXJjZU9wdGlvbnNfKSwgcmVz
b3VyY2VPcHRpb25zKTsKK30KKworLy8gcHJvcGVydHk6IGNwdUNhY2hlTW9kZQorX01UTF9JTkxJ
TkUgTVRMOjpDUFVDYWNoZU1vZGUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6Y3B1Q2FjaGVNb2Rl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNQVUNhY2hl
TW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChjcHVDYWNoZU1vZGUpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRDcHVDYWNoZU1vZGUoTVRMOjpD
UFVDYWNoZU1vZGUgY3B1Q2FjaGVNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDcHVDYWNoZU1vZGVfKSwgY3B1Q2FjaGVNb2Rl
KTsKK30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VNb2RlCitfTVRMX0lOTElORSBNVEw6OlN0b3Jh
Z2VNb2RlIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JhZ2VNb2RlPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHN0b3JhZ2VNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpU
ZXh0dXJlRGVzY3JpcHRvcjo6c2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBzdG9yYWdl
TW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0U3RvcmFnZU1vZGVfKSwgc3RvcmFnZU1vZGUpOworfQorCisvLyBwcm9wZXJ0eTog
aGF6YXJkVHJhY2tpbmdNb2RlCitfTVRMX0lOTElORSBNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBN
VEw6OlRleHR1cmVEZXNjcmlwdG9yOjpoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGhhemFyZFRyYWNraW5nTW9kZSkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldEhhemFyZFRyYWNraW5nTW9kZShNVEw6
OkhhemFyZFRyYWNraW5nTW9kZSBoYXphcmRUcmFja2luZ01vZGUpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEhhemFyZFRyYWNraW5n
TW9kZV8pLCBoYXphcmRUcmFja2luZ01vZGUpOworfQorCisvLyBwcm9wZXJ0eTogdXNhZ2UKK19N
VExfSU5MSU5FIE1UTDo6VGV4dHVyZVVzYWdlIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnVzYWdl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVV
c2FnZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2FnZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFVzYWdlKE1UTDo6VGV4dHVyZVVzYWdlIHVz
YWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRVc2FnZV8pLCB1c2FnZSk7Cit9CisKKy8vIHByb3BlcnR5OiBhbGxvd0dQVU9wdGlt
aXplZENvbnRlbnRzCitfTVRMX0lOTElORSBib29sIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmFs
bG93R1BVT3B0aW1pemVkQ29udGVudHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWxsb3dHUFVPcHRpbWl6ZWRD
b250ZW50cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6
OnNldEFsbG93R1BVT3B0aW1pemVkQ29udGVudHMoYm9vbCBhbGxvd0dQVU9wdGltaXplZENvbnRl
bnRzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRBbGxvd0dQVU9wdGltaXplZENvbnRlbnRzXyksIGFsbG93R1BVT3B0aW1pemVkQ29u
dGVudHMpOworfQorCisvLyBwcm9wZXJ0eTogc3dpenpsZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0
dXJlU3dpenpsZUNoYW5uZWxzIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnN3aXp6bGUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVN3aXp6bGVD
aGFubmVscz4odGhpcywgX01UTF9QUklWQVRFX1NFTChzd2l6emxlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0U3dpenpsZShNVEw6OlRleHR1cmVT
d2l6emxlQ2hhbm5lbHMgc3dpenpsZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3dpenpsZV8pLCBzd2l6emxlKTsKK30KKworLy8g
cHJvcGVydHk6IHJvb3RSZXNvdXJjZQorX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZSogTVRMOjpU
ZXh0dXJlOjpyb290UmVzb3VyY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6UmVzb3VyY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJvb3RSZXNvdXJj
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogcGFyZW50VGV4dHVyZQorX01UTF9JTkxJTkUgTVRMOjpU
ZXh0dXJlKiBNVEw6OlRleHR1cmU6OnBhcmVudFRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocGFyZW50VGV4dHVyZSkpOworfQorCisvLyBwcm9wZXJ0eTogcGFyZW50UmVsYXRpdmVMZXZl
bAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6cGFyZW50UmVsYXRpdmVM
ZXZlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhcmVudFJlbGF0aXZlTGV2ZWwpKTsKK30KKwor
Ly8gcHJvcGVydHk6IHBhcmVudFJlbGF0aXZlU2xpY2UKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OlRleHR1cmU6OnBhcmVudFJlbGF0aXZlU2xpY2UoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChwYXJlbnRSZWxhdGl2ZVNsaWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXIKK19NVExf
SU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OlRleHR1cmU6OmJ1ZmZlcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGJ1ZmZlcikpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyT2Zmc2V0CitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjpidWZmZXJPZmZzZXQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChidWZmZXJPZmZzZXQpKTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckJ5dGVz
UGVyUm93CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjpidWZmZXJCeXRl
c1BlclJvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlckJ5dGVzUGVyUm93KSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpb3N1cmZhY2UKK19NVExfSU5MSU5FIElPU3VyZmFjZVJlZiBNVEw6OlRl
eHR1cmU6Omlvc3VyZmFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8SU9TdXJmYWNlUmVmPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlvc3VyZmFjZSkpOworfQor
CisvLyBwcm9wZXJ0eTogaW9zdXJmYWNlUGxhbmUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OlRleHR1cmU6Omlvc3VyZmFjZVBsYW5lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW9zdXJm
YWNlUGxhbmUpKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVUeXBlCitfTVRMX0lOTElORSBN
VEw6OlRleHR1cmVUeXBlIE1UTDo6VGV4dHVyZTo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodGV4dHVyZVR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHBpeGVsRm9ybWF0
CitfTVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6VGV4dHVyZTo6cGl4ZWxGb3JtYXQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3Jt
YXQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGl4ZWxGb3JtYXQpKTsKK30KKworLy8gcHJvcGVy
dHk6IHdpZHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjp3aWR0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdpZHRoKSk7Cit9CisKKy8vIHByb3BlcnR5OiBoZWlnaHQK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OmhlaWdodCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGhlaWdodCkpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OmRlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoZGVwdGgpKTsKK30KKworLy8gcHJvcGVydHk6IG1pcG1hcExldmVsQ291bnQKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6Om1pcG1hcExldmVsQ291bnQoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChtaXBtYXBMZXZlbENvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1w
bGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6c2FtcGxlQ291
bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3VudCkpOworfQorCisvLyBwcm9wZXJ0
eTogYXJyYXlMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OmFy
cmF5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KKworLy8g
cHJvcGVydHk6IHVzYWdlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVVc2FnZSBNVEw6OlRleHR1
cmU6OnVzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OlRleHR1cmVVc2FnZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2FnZSkpOworfQorCisvLyBw
cm9wZXJ0eTogc2hhcmVhYmxlCitfTVRMX0lOTElORSBib29sIE1UTDo6VGV4dHVyZTo6c2hhcmVh
YmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGlzU2hhcmVhYmxlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFt
ZWJ1ZmZlck9ubHkKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJlOjpmcmFtZWJ1ZmZlck9u
bHkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaXNGcmFtZWJ1ZmZlck9ubHkpKTsKK30KKworLy8gcHJvcGVydHk6
IGZpcnN0TWlwbWFwSW5UYWlsCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJl
OjpmaXJzdE1pcG1hcEluVGFpbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZpcnN0TWlwbWFwSW5U
YWlsKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0YWlsU2l6ZUluQnl0ZXMKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OnRhaWxTaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHRhaWxTaXplSW5CeXRlcykpOworfQorCisvLyBwcm9wZXJ0eTogaXNTcGFyc2UKK19N
VExfSU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJlOjppc1NwYXJzZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1Nw
YXJzZSkpOworfQorCisvLyBwcm9wZXJ0eTogYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cworX01U
TF9JTkxJTkUgYm9vbCBNVEw6OlRleHR1cmU6OmFsbG93R1BVT3B0aW1pemVkQ29udGVudHMoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cykpOworfQorCisvLyBtZXRob2Q6
IGdldEJ5dGVzOmJ5dGVzUGVyUm93OmJ5dGVzUGVySW1hZ2U6ZnJvbVJlZ2lvbjptaXBtYXBMZXZl
bDpzbGljZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlOjpnZXRCeXRlcyhjb25zdCB2
b2lkKiBwaXhlbEJ5dGVzLCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBi
eXRlc1BlckltYWdlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZlbCwgTlM6
OlVJbnRlZ2VyIHNsaWNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChnZXRCeXRlc19ieXRlc1BlclJvd19ieXRlc1BlckltYWdlX2Zyb21S
ZWdpb25fbWlwbWFwTGV2ZWxfc2xpY2VfKSwgcGl4ZWxCeXRlcywgYnl0ZXNQZXJSb3csIGJ5dGVz
UGVySW1hZ2UsIHJlZ2lvbiwgbGV2ZWwsIHNsaWNlKTsKK30KKworLy8gbWV0aG9kOiByZXBsYWNl
UmVnaW9uOm1pcG1hcExldmVsOnNsaWNlOndpdGhCeXRlczpieXRlc1BlclJvdzpieXRlc1Blcklt
YWdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmU6OnJlcGxhY2VSZWdpb24oTVRMOjpS
ZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZSwgY29u
c3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93LCBOUzo6VUludGVn
ZXIgYnl0ZXNQZXJJbWFnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwocmVwbGFjZVJlZ2lvbl9taXBtYXBMZXZlbF9zbGljZV93aXRoQnl0
ZXNfYnl0ZXNQZXJSb3dfYnl0ZXNQZXJJbWFnZV8pLCByZWdpb24sIGxldmVsLCBzbGljZSwgcGl4
ZWxCeXRlcywgYnl0ZXNQZXJSb3csIGJ5dGVzUGVySW1hZ2UpOworfQorCisvLyBtZXRob2Q6IGdl
dEJ5dGVzOmJ5dGVzUGVyUm93OmZyb21SZWdpb246bWlwbWFwTGV2ZWw6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6VGV4dHVyZTo6Z2V0Qnl0ZXMoY29uc3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJ
bnRlZ2VyIGJ5dGVzUGVyUm93LCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZl
bCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoZ2V0Qnl0ZXNfYnl0ZXNQZXJSb3dfZnJvbVJlZ2lvbl9taXBtYXBMZXZlbF8pLCBwaXhlbEJ5
dGVzLCBieXRlc1BlclJvdywgcmVnaW9uLCBsZXZlbCk7Cit9CisKKy8vIG1ldGhvZDogcmVwbGFj
ZVJlZ2lvbjptaXBtYXBMZXZlbDp3aXRoQnl0ZXM6Ynl0ZXNQZXJSb3c6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6VGV4dHVyZTo6cmVwbGFjZVJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpV
SW50ZWdlciBsZXZlbCwgY29uc3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVz
UGVyUm93KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChyZXBsYWNlUmVnaW9uX21pcG1hcExldmVsX3dpdGhCeXRlc19ieXRlc1BlclJvd18p
LCByZWdpb24sIGxldmVsLCBwaXhlbEJ5dGVzLCBieXRlc1BlclJvdyk7Cit9CisKKy8vIG1ldGhv
ZDogbmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6CitfTVRMX0lOTElORSBNVEw6OlRleHR1
cmUqIE1UTDo6VGV4dHVyZTo6bmV3VGV4dHVyZVZpZXcoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0XyksIHBp
eGVsRm9ybWF0KTsKK30KKworLy8gbWV0aG9kOiBuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1h
dDp0ZXh0dXJlVHlwZTpsZXZlbHM6c2xpY2VzOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBN
VEw6OlRleHR1cmU6Om5ld1RleHR1cmVWaWV3KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQs
IE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUsIE5TOjpSYW5nZSBsZXZlbFJhbmdlLCBOUzo6
UmFuZ2Ugc2xpY2VSYW5nZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1RleHR1cmVWaWV3V2l0aFBpeGVs
Rm9ybWF0X3RleHR1cmVUeXBlX2xldmVsc19zbGljZXNfKSwgcGl4ZWxGb3JtYXQsIHRleHR1cmVU
eXBlLCBsZXZlbFJhbmdlLCBzbGljZVJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRU
ZXh0dXJlSGFuZGxlCitfTVRMX0lOTElORSBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGUqIE1UTDo6
VGV4dHVyZTo6bmV3U2hhcmVkVGV4dHVyZUhhbmRsZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdTaGFyZWRUZXh0dXJlSGFuZGxlKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZW1vdGVT
dG9yYWdlVGV4dHVyZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OlRleHR1cmU6OnJl
bW90ZVN0b3JhZ2VUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlbW90ZVN0b3JhZ2VU
ZXh0dXJlKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVtb3RlVGV4dHVyZVZpZXdGb3JEZXZpY2U6
CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6VGV4dHVyZTo6bmV3UmVtb3RlVGV4dHVy
ZVZpZXdGb3JEZXZpY2UoY29uc3QgTVRMOjpEZXZpY2UqIGRldmljZSkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld1JlbW90ZVRleHR1cmVWaWV3Rm9yRGV2aWNlXyksIGRldmljZSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBzd2l6emxlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgTVRM
OjpUZXh0dXJlOjpzd2l6emxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c3dpenpsZSkpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0
OnRleHR1cmVUeXBlOmxldmVsczpzbGljZXM6c3dpenpsZToKK19NVExfSU5MSU5FIE1UTDo6VGV4
dHVyZSogTVRMOjpUZXh0dXJlOjpuZXdUZXh0dXJlVmlldyhNVEw6OlBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlLCBOUzo6UmFuZ2UgbGV2ZWxSYW5n
ZSwgTlM6OlJhbmdlIHNsaWNlUmFuZ2UsIE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBzd2l6
emxlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXRfdGV4dHVy
ZVR5cGVfbGV2ZWxzX3NsaWNlc19zd2l6emxlXyksIHBpeGVsRm9ybWF0LCB0ZXh0dXJlVHlwZSwg
bGV2ZWxSYW5nZSwgc2xpY2VSYW5nZSwgc3dpenpsZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVHlwZXMuaHBwIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjhjNGQ5
YTJjMzhhNTllNTQ5M2NlODg5ZDBkNWUyZDM3YWVhOGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcApAQCAtMCwwICsx
LDE2MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMVHlwZXMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBs
ZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAi
TVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1
ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAi
CisKK25hbWVzcGFjZSBNVEwKK3sKK3N0cnVjdCBPcmlnaW4KK3sKKyAgICBPcmlnaW4oKSA9IGRl
ZmF1bHQ7CisKKyAgICBPcmlnaW4oTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6
VUludGVnZXIgeik7CisKKyAgICBzdGF0aWMgT3JpZ2luIE1ha2UoTlM6OlVJbnRlZ2VyIHgsIE5T
OjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgeik7CisKKyAgICBOUzo6VUludGVnZXIgIHg7Cisg
ICAgTlM6OlVJbnRlZ2VyICB5OworICAgIE5TOjpVSW50ZWdlciAgejsKK30gX01UTF9QQUNLRUQ7
CisKK3N0cnVjdCBTaXplCit7CisgICAgU2l6ZSgpID0gZGVmYXVsdDsKKworICAgIFNpemUoTlM6
OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgp
OworCisgICAgc3RhdGljIFNpemUgIE1ha2UoTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVn
ZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpOworCisgICAgTlM6OlVJbnRlZ2VyIHdpZHRo
OworICAgIE5TOjpVSW50ZWdlciBoZWlnaHQ7CisgICAgTlM6OlVJbnRlZ2VyIGRlcHRoOworfSBf
TVRMX1BBQ0tFRDsKKworc3RydWN0IFJlZ2lvbgoreworICAgIFJlZ2lvbigpID0gZGVmYXVsdDsK
KworICAgIFJlZ2lvbihOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHdpZHRoKTsKKworICAg
IFJlZ2lvbihOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB3aWR0
aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCk7CisKKyAgICBSZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5T
OjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgeiwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUlu
dGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpOworCisgICAgc3RhdGljIFJlZ2lvbiBN
YWtlMUQoTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB3aWR0aCk7CisKKyAgICBzdGF0aWMg
UmVnaW9uIE1ha2UyRChOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdl
ciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCk7CisKKyAgICBzdGF0aWMgUmVnaW9uIE1ha2Uz
RChOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6LCBOUzo6VUlu
dGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIE5TOjpVSW50ZWdlciBkZXB0aCk7CisK
KyAgICBNVEw6Ok9yaWdpbiAgIG9yaWdpbjsKKyAgICBNVEw6OlNpemUgICAgIHNpemU7Cit9IF9N
VExfUEFDS0VEOworCitzdHJ1Y3QgU2FtcGxlUG9zaXRpb247CisKK3VzaW5nIENvb3JkaW5hdGUy
RCA9IFNhbXBsZVBvc2l0aW9uOworCitzdHJ1Y3QgU2FtcGxlUG9zaXRpb24KK3sKKyAgICBTYW1w
bGVQb3NpdGlvbigpID0gZGVmYXVsdDsKKworICAgIFNhbXBsZVBvc2l0aW9uKGZsb2F0IF94LCBm
bG9hdCBfeSk7CisKKyAgICBzdGF0aWMgU2FtcGxlUG9zaXRpb24gTWFrZShmbG9hdCB4LCBmbG9h
dCB5KTsKKworICAgIGZsb2F0ICAgICAgICAgICAgICAgICB4OworICAgIGZsb2F0ICAgICAgICAg
ICAgICAgICB5OworfSBfTVRMX1BBQ0tFRDsKKworfQorCitfTVRMX0lOTElORSBNVEw6Ok9yaWdp
bjo6T3JpZ2luKE5TOjpVSW50ZWdlciBfeCwgTlM6OlVJbnRlZ2VyIF95LCBOUzo6VUludGVnZXIg
X3opCisgICAgOiB4KF94KQorICAgICwgeShfeSkKKyAgICAsIHooX3opCit7Cit9CisKK19NVExf
SU5MSU5FIE1UTDo6T3JpZ2luIE1UTDo6T3JpZ2luOjpNYWtlKE5TOjpVSW50ZWdlciB4LCBOUzo6
VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHopCit7CisgICAgcmV0dXJuIE9yaWdpbih4LCB5LCB6
KTsKK30KKworX01UTF9JTkxJTkUgTVRMOjpTaXplOjpTaXplKE5TOjpVSW50ZWdlciBfd2lkdGgs
IE5TOjpVSW50ZWdlciBfaGVpZ2h0LCBOUzo6VUludGVnZXIgX2RlcHRoKQorICAgIDogd2lkdGgo
X3dpZHRoKQorICAgICwgaGVpZ2h0KF9oZWlnaHQpCisgICAgLCBkZXB0aChfZGVwdGgpCit7Cit9
CisKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlNpemU6Ok1ha2UoTlM6OlVJbnRlZ2VyIHdp
ZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpCit7CisgICAgcmV0
dXJuIFNpemUod2lkdGgsIGhlaWdodCwgZGVwdGgpOworfQorCitfTVRMX0lOTElORSBNVEw6OlJl
Z2lvbjo6UmVnaW9uKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgd2lkdGgpCisgICAgOiBv
cmlnaW4oeCwgMCwgMCkKKyAgICAsIHNpemUod2lkdGgsIDEsIDEpCit7Cit9CisKK19NVExfSU5M
SU5FIE1UTDo6UmVnaW9uOjpSZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBO
Uzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpCisgICAgOiBvcmlnaW4oeCwg
eSwgMCkKKyAgICAsIHNpemUod2lkdGgsIGhlaWdodCwgMSkKK3sKK30KKworX01UTF9JTkxJTkUg
TVRMOjpSZWdpb246OlJlZ2lvbihOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpV
SW50ZWdlciB6LCBOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIE5TOjpV
SW50ZWdlciBkZXB0aCkKKyAgICA6IG9yaWdpbih4LCB5LCB6KQorICAgICwgc2l6ZSh3aWR0aCwg
aGVpZ2h0LCBkZXB0aCkKK3sKK30KKworX01UTF9JTkxJTkUgTVRMOjpSZWdpb24gTVRMOjpSZWdp
b246Ok1ha2UxRChOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHdpZHRoKQoreworICAgIHJl
dHVybiBSZWdpb24oeCwgd2lkdGgpOworfQorCitfTVRMX0lOTElORSBNVEw6OlJlZ2lvbiBNVEw6
OlJlZ2lvbjo6TWFrZTJEKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRl
Z2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KQoreworICAgIHJldHVybiBSZWdpb24oeCwg
eSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6UmVnaW9uIE1UTDo6UmVn
aW9uOjpNYWtlM0QoTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIg
eiwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIg
ZGVwdGgpCit7CisgICAgcmV0dXJuIFJlZ2lvbih4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCk7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlUG9zaXRpb246OlNhbXBsZVBvc2l0aW9u
KGZsb2F0IF94LCBmbG9hdCBfeSkKKyAgICA6IHgoX3gpCisgICAgLCB5KF95KQoreworfQorCitf
TVRMX0lOTElORSBNVEw6OlNhbXBsZVBvc2l0aW9uIE1UTDo6U2FtcGxlUG9zaXRpb246Ok1ha2Uo
ZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICByZXR1cm4gU2FtcGxlUG9zaXRpb24oeCwgeSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmVy
dGV4RGVzY3JpcHRvci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMVmVydGV4RGVzY3JpcHRvci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE3ZjgyM2FhMGFmOTUzMGIyNWMz
MzFhOWY1NmQxMjU2Njc2Mzg1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcApAQCAtMCwwICsxLDM0
NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwor
Ly8gTWV0YWwvTVRMVmVydGV4RGVzY3JpcHRvci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0y
MDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNp
bmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgor
CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTFZl
cnRleERlc2NyaXB0b3IuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJ
bnRlZ2VyLCBWZXJ0ZXhGb3JtYXQpIHsKKyAgICBWZXJ0ZXhGb3JtYXRJbnZhbGlkID0gMCwKKyAg
ICBWZXJ0ZXhGb3JtYXRVQ2hhcjIgPSAxLAorICAgIFZlcnRleEZvcm1hdFVDaGFyMyA9IDIsCisg
ICAgVmVydGV4Rm9ybWF0VUNoYXI0ID0gMywKKyAgICBWZXJ0ZXhGb3JtYXRDaGFyMiA9IDQsCisg
ICAgVmVydGV4Rm9ybWF0Q2hhcjMgPSA1LAorICAgIFZlcnRleEZvcm1hdENoYXI0ID0gNiwKKyAg
ICBWZXJ0ZXhGb3JtYXRVQ2hhcjJOb3JtYWxpemVkID0gNywKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hh
cjNOb3JtYWxpemVkID0gOCwKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hhcjROb3JtYWxpemVkID0gOSwK
KyAgICBWZXJ0ZXhGb3JtYXRDaGFyMk5vcm1hbGl6ZWQgPSAxMCwKKyAgICBWZXJ0ZXhGb3JtYXRD
aGFyM05vcm1hbGl6ZWQgPSAxMSwKKyAgICBWZXJ0ZXhGb3JtYXRDaGFyNE5vcm1hbGl6ZWQgPSAx
MiwKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQyID0gMTMsCisgICAgVmVydGV4Rm9ybWF0VVNob3J0
MyA9IDE0LAorICAgIFZlcnRleEZvcm1hdFVTaG9ydDQgPSAxNSwKKyAgICBWZXJ0ZXhGb3JtYXRT
aG9ydDIgPSAxNiwKKyAgICBWZXJ0ZXhGb3JtYXRTaG9ydDMgPSAxNywKKyAgICBWZXJ0ZXhGb3Jt
YXRTaG9ydDQgPSAxOCwKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQyTm9ybWFsaXplZCA9IDE5LAor
ICAgIFZlcnRleEZvcm1hdFVTaG9ydDNOb3JtYWxpemVkID0gMjAsCisgICAgVmVydGV4Rm9ybWF0
VVNob3J0NE5vcm1hbGl6ZWQgPSAyMSwKKyAgICBWZXJ0ZXhGb3JtYXRTaG9ydDJOb3JtYWxpemVk
ID0gMjIsCisgICAgVmVydGV4Rm9ybWF0U2hvcnQzTm9ybWFsaXplZCA9IDIzLAorICAgIFZlcnRl
eEZvcm1hdFNob3J0NE5vcm1hbGl6ZWQgPSAyNCwKKyAgICBWZXJ0ZXhGb3JtYXRIYWxmMiA9IDI1
LAorICAgIFZlcnRleEZvcm1hdEhhbGYzID0gMjYsCisgICAgVmVydGV4Rm9ybWF0SGFsZjQgPSAy
NywKKyAgICBWZXJ0ZXhGb3JtYXRGbG9hdCA9IDI4LAorICAgIFZlcnRleEZvcm1hdEZsb2F0MiA9
IDI5LAorICAgIFZlcnRleEZvcm1hdEZsb2F0MyA9IDMwLAorICAgIFZlcnRleEZvcm1hdEZsb2F0
NCA9IDMxLAorICAgIFZlcnRleEZvcm1hdEludCA9IDMyLAorICAgIFZlcnRleEZvcm1hdEludDIg
PSAzMywKKyAgICBWZXJ0ZXhGb3JtYXRJbnQzID0gMzQsCisgICAgVmVydGV4Rm9ybWF0SW50NCA9
IDM1LAorICAgIFZlcnRleEZvcm1hdFVJbnQgPSAzNiwKKyAgICBWZXJ0ZXhGb3JtYXRVSW50MiA9
IDM3LAorICAgIFZlcnRleEZvcm1hdFVJbnQzID0gMzgsCisgICAgVmVydGV4Rm9ybWF0VUludDQg
PSAzOSwKKyAgICBWZXJ0ZXhGb3JtYXRJbnQxMDEwMTAyTm9ybWFsaXplZCA9IDQwLAorICAgIFZl
cnRleEZvcm1hdFVJbnQxMDEwMTAyTm9ybWFsaXplZCA9IDQxLAorICAgIFZlcnRleEZvcm1hdFVD
aGFyNE5vcm1hbGl6ZWRfQkdSQSA9IDQyLAorICAgIFZlcnRleEZvcm1hdFVDaGFyID0gNDUsCisg
ICAgVmVydGV4Rm9ybWF0Q2hhciA9IDQ2LAorICAgIFZlcnRleEZvcm1hdFVDaGFyTm9ybWFsaXpl
ZCA9IDQ3LAorICAgIFZlcnRleEZvcm1hdENoYXJOb3JtYWxpemVkID0gNDgsCisgICAgVmVydGV4
Rm9ybWF0VVNob3J0ID0gNDksCisgICAgVmVydGV4Rm9ybWF0U2hvcnQgPSA1MCwKKyAgICBWZXJ0
ZXhGb3JtYXRVU2hvcnROb3JtYWxpemVkID0gNTEsCisgICAgVmVydGV4Rm9ybWF0U2hvcnROb3Jt
YWxpemVkID0gNTIsCisgICAgVmVydGV4Rm9ybWF0SGFsZiA9IDUzLAorfTsKKworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgVmVydGV4U3RlcEZ1bmN0aW9uKSB7CisgICAgVmVydGV4U3RlcEZ1bmN0
aW9uQ29uc3RhbnQgPSAwLAorICAgIFZlcnRleFN0ZXBGdW5jdGlvblBlclZlcnRleCA9IDEsCisg
ICAgVmVydGV4U3RlcEZ1bmN0aW9uUGVySW5zdGFuY2UgPSAyLAorICAgIFZlcnRleFN0ZXBGdW5j
dGlvblBlclBhdGNoID0gMywKKyAgICBWZXJ0ZXhTdGVwRnVuY3Rpb25QZXJQYXRjaENvbnRyb2xQ
b2ludCA9IDQsCit9OworCitjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yIDogcHVi
bGljIE5TOjpDb3B5aW5nPFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGFsbG9jKCk7
CisKKyAgICBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlk
ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRTdHJpZGUoTlM6OlVJbnRlZ2VyIHN0cmlkZSk7CisKKyAgICBNVEw6OlZlcnRleFN0ZXBG
dW5jdGlvbiAgICAgICAgICAgICAgICAgICAgc3RlcEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZXBGdW5jdGlvbihN
VEw6OlZlcnRleFN0ZXBGdW5jdGlvbiBzdGVwRnVuY3Rpb24pOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBSYXRlKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZXBSYXRlKE5TOjpV
SW50ZWdlciBzdGVwUmF0ZSk7Cit9OworCitjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFZlcnRleEJ1ZmZlckxheW91dERlc2Ny
aXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4QnVmZmVyTGF5
b3V0RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4QnVmZmVyTGF5
b3V0RGVzY3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgVmVydGV4QnVm
ZmVyTGF5b3V0RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBpbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRPYmplY3QoY29uc3QgY2xhc3MgVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogYnVm
ZmVyRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2NsYXNzIFZlcnRleEF0dHJpYnV0
ZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
cj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
ciogYWxsb2MoKTsKKworICAgIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IqICAgICAg
ICBpbml0KCk7CisKKyAgICBNVEw6OlZlcnRleEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldEZvcm1hdChNVEw6OlZlcnRleEZvcm1hdCBmb3JtYXQpOworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPZmZzZXQoTlM6OlVJbnRlZ2Vy
IG9mZnNldCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnVmZmVySW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0QnVmZmVySW5kZXgoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKK307CisK
K2NsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0
YXRpYyBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAg
ICBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisK
KyAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3Qo
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNj
cmlwdG9yKiBhdHRyaWJ1dGVEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpOworfTsKKworY2xhc3Mg
VmVydGV4RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxWZXJ0ZXhEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBWZXJ0ZXhEZXNjcmlwdG9yKiAgICAgICAgICAg
YWxsb2MoKTsKKworICAgIGNsYXNzIFZlcnRleERlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAg
aW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIFZlcnRleERlc2NyaXB0b3IqICAgICAgICAgICB2
ZXJ0ZXhEZXNjcmlwdG9yKCk7CisKKyAgICBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yQXJyYXkqIGxheW91dHMoKSBjb25zdDsKKworICAgIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheSogICAgYXR0cmlidXRlcygpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOworfTsKKworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNj
cmlwdG9yKiBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IpKTsK
K30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEJ1ZmZlckxheW91
dERlc2NyaXB0b3IqIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNj
cmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc3RyaWRlCitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzdHJpZGUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzdHJpZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRl
eEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnNldFN0cmlkZShOUzo6VUludGVnZXIgc3RyaWRlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRTdHJpZGVfKSwgc3RyaWRlKTsKK30KKworLy8gcHJvcGVydHk6IHN0ZXBGdW5jdGlvbgorX01U
TF9JTkxJTkUgTVRMOjpWZXJ0ZXhTdGVwRnVuY3Rpb24gTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yOjpzdGVwRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6VmVydGV4U3RlcEZ1bmN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHN0ZXBGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QnVmZmVy
TGF5b3V0RGVzY3JpcHRvcjo6c2V0U3RlcEZ1bmN0aW9uKE1UTDo6VmVydGV4U3RlcEZ1bmN0aW9u
IHN0ZXBGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0U3RlcEZ1bmN0aW9uXyksIHN0ZXBGdW5jdGlvbik7Cit9CisKKy8v
IHByb3BlcnR5OiBzdGVwUmF0ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmVydGV4
QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RlcFJhdGUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dGVwUmF0ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0
RGVzY3JpcHRvcjo6c2V0U3RlcFJhdGUoTlM6OlVJbnRlZ2VyIHN0ZXBSYXRlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVwUmF0
ZV8pLCBzdGVwUmF0ZSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhCdWZm
ZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6YWxsb2M8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJ
VkFURV9DTFMoTVRMVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8v
IG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlw
dG9yQXJyYXkqIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5Ojppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlZlcnRleEJ1ZmZlckxheW91dERl
c2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3Jp
cHQ6CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIE1UTDo6
VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmVydGV4QnVmZmVy
TGF5b3V0RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVk
U3Vic2NyaXB0XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVk
U3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2Ny
aXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3Jp
cHRvciogYnVmZmVyRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVk
U3Vic2NyaXB0XyksIGJ1ZmZlckRlc2MsIGluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpW
ZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NM
UyhNVExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAor
X01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiBNVEw6OlZlcnRleEF0
dHJpYnV0ZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0
PE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGZv
cm1hdAorX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhGb3JtYXQgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yOjpmb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6VmVydGV4Rm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZvcm1hdCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6c2V0
Rm9ybWF0KE1UTDo6VmVydGV4Rm9ybWF0IGZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Rm9ybWF0XyksIGZvcm1hdCk7Cit9
CisKKy8vIHByb3BlcnR5OiBvZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6Om9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9m
ZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvcjo6c2V0T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9mZnNldF8pLCBvZmZzZXQp
OworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVySW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OmJ1ZmZlckluZGV4KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoYnVmZmVySW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OnNldEJ1ZmZlckluZGV4KE5TOjpVSW50ZWdlciBidWZm
ZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0QnVmZmVySW5kZXhfKSwgYnVmZmVySW5kZXgpOworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
QXJyYXkqIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
ckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJh
eSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmli
dXRlRGVzY3JpcHRvckFycmF5KiBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhBdHRyaWJ1
dGVEZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vi
c2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiBNVEw6
OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBpbmRl
eCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleEF0dHJpYnV0
ZURlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNj
cmlwdF8pLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNj
cmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJy
YXk6OnNldE9iamVjdChjb25zdCBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IqIGF0dHJp
YnV0ZURlc2MsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlw
dF8pLCBhdHRyaWJ1dGVEZXNjLCBpbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OlZlcnRleERlc2NyaXB0b3IqIE1UTDo6VmVydGV4RGVzY3JpcHRv
cjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlZlcnRleERl
c2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVmVydGV4RGVzY3JpcHRvcikpOworfQorCisv
LyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4RGVzY3JpcHRvciogTVRMOjpW
ZXJ0ZXhEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OlZlcnRleERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHZlcnRleERl
c2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4RGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhE
ZXNjcmlwdG9yOjp2ZXJ0ZXhEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlZlcnRleERlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRl
eERlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleERlc2NyaXB0b3IpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGxheW91dHMKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0
RGVzY3JpcHRvckFycmF5KiBNVEw6OlZlcnRleERlc2NyaXB0b3I6OmxheW91dHMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0
RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXlvdXRzKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBhdHRyaWJ1dGVzCitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0
ZURlc2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhEZXNjcmlwdG9yOjphdHRyaWJ1dGVzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleEF0dHJpYnV0
ZURlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0cmlidXRlcykpOwor
fQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4RGVzY3Jp
cHRvcjo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChyZXNldCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjM0ZDNhMWE2Y2UxMGI5MjVjZjYxMjU2ZmVkNTE2ZGMzMzBiZGQxMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExW
aXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAKQEAgLTAsMCArMSw5NiBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMVmlzaWJsZUZ1
bmN0aW9uVGFibGUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisv
LworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVy
QnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExGdW5jdGlvbkhhbmRsZS5ocHAi
CisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBW
aXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VmlzaWJs
ZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBW
aXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBWaXNp
YmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMg
Y2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiB2aXNpYmxlRnVuY3Rpb25UYWJs
ZURlc2NyaXB0b3IoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGdW5jdGlvbkNvdW50KE5TOjpVSW50ZWdlciBm
dW5jdGlvbkNvdW50KTsKK307CisKK2NsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlIDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxWaXNpYmxlRnVuY3Rpb25UYWJsZSwgUmVzb3VyY2U+Cit7CitwdWJs
aWM6CisgICAgdm9pZCBzZXRGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbkhhbmRsZSogZnVu
Y3Rpb24sIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldEZ1bmN0aW9ucyhjb25z
dCBjbGFzcyBGdW5jdGlvbkhhbmRsZSogZnVuY3Rpb25zW10sIE5TOjpSYW5nZSByYW5nZSk7Cit9
OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlZpc2li
bGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciogTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2Ny
aXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpWaXNp
YmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVmlzaWJsZUZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJ
TkUgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIE1UTDo6VmlzaWJsZUZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5p
dDxNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogdmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6
OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciogTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJs
ZURlc2NyaXB0b3I6OnZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcigpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0
b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciks
IF9NVExfUFJJVkFURV9TRUwodmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBmdW5jdGlvbkNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OmZ1bmN0aW9uQ291bnQoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChmdW5jdGlvbkNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OnNldEZ1bmN0aW9uQ291bnQoTlM6OlVJ
bnRlZ2VyIGZ1bmN0aW9uQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uQ291bnRfKSwgZnVuY3Rpb25Db3VudCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0RnVuY3Rpb246YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlv
bkhhbmRsZSogZnVuY3Rpb24sIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnVuY3Rpb25fYXRJbmRl
eF8pLCBmdW5jdGlvbiwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZ1bmN0aW9uczp3aXRo
UmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGU6OnNldEZ1
bmN0aW9ucyhjb25zdCBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlvbnNbXSwgTlM6OlJhbmdl
IHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRGdW5jdGlvbnNfd2l0aFJhbmdlXyksIGZ1bmN0aW9ucywgcmFuZ2UpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01ldGFsLmhw
cCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NZXRhbC5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTZhMzYwNjZiNTkyNTNkYmQ3ZGFjZWI3NDZjMGM5NDE0MzNmZmNkYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NZXRhbC5ocHAK
QEAgLTAsMCArMSw4MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTWV0YWwuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAy
MSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAi
CisjaW5jbHVkZSAiTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwIgor
I2luY2x1ZGUgIk1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcCIKKyNpbmNsdWRlICJN
VExBcmd1bWVudC5ocHAiCisjaW5jbHVkZSAiTVRMQXJndW1lbnRFbmNvZGVyLmhwcCIKKyNpbmNs
dWRlICJNVExCaW5hcnlBcmNoaXZlLmhwcCIKKyNpbmNsdWRlICJNVExCbGl0Q29tbWFuZEVuY29k
ZXIuaHBwIgorI2luY2x1ZGUgIk1UTEJsaXRQYXNzLmhwcCIKKyNpbmNsdWRlICJNVExCdWZmZXIu
aHBwIgorI2luY2x1ZGUgIk1UTENhcHR1cmVNYW5hZ2VyLmhwcCIKKyNpbmNsdWRlICJNVExDYXB0
dXJlU2NvcGUuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1hbmRCdWZmZXIuaHBwIgorI2luY2x1ZGUg
Ik1UTENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kUXVldWUuaHBwIgor
I2luY2x1ZGUgIk1UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMQ29t
cHV0ZVBhc3MuaHBwIgorI2luY2x1ZGUgIk1UTENvbXB1dGVQaXBlbGluZS5ocHAiCisjaW5jbHVk
ZSAiTVRMQ291bnRlcnMuaHBwIgorI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUg
Ik1UTERlcHRoU3RlbmNpbC5ocHAiCisjaW5jbHVkZSAiTVRMRGV2aWNlLmhwcCIKKyNpbmNsdWRl
ICJNVExEcmF3YWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMRHluYW1pY0xpYnJhcnkuaHBwIgorI2lu
Y2x1ZGUgIk1UTEV2ZW50LmhwcCIKKyNpbmNsdWRlICJNVExGZW5jZS5ocHAiCisjaW5jbHVkZSAi
TVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAiCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25EZXNj
cmlwdG9yLmhwcCIKKyNpbmNsdWRlICJNVExGdW5jdGlvbkhhbmRsZS5ocHAiCisjaW5jbHVkZSAi
TVRMRnVuY3Rpb25Mb2cuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcCIK
KyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTEhlYXAuaHBwIgor
I2luY2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMSW5k
aXJlY3RDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMSW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMTGlicmFyeS5ocHAiCisjaW5jbHVkZSAiTVRMTGlu
a2VkRnVuY3Rpb25zLmhwcCIKKyNpbmNsdWRlICJNVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNv
ZGVyLmhwcCIKKyNpbmNsdWRlICJNVExQaXBlbGluZS5ocHAiCisjaW5jbHVkZSAiTVRMUGl4ZWxG
b3JtYXQuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk1UTFJhc3Rl
cml6YXRpb25SYXRlLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAi
CisjaW5jbHVkZSAiTVRMUmVuZGVyUGFzcy5ocHAiCisjaW5jbHVkZSAiTVRMUmVuZGVyUGlwZWxp
bmUuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJj
ZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlU3RhdGVQYXNz
LmhwcCIKKyNpbmNsdWRlICJNVExTYW1wbGVyLmhwcCIKKyNpbmNsdWRlICJNVExTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVk
ZSAiTVRMVHlwZXMuaHBwIgorI2luY2x1ZGUgIk1UTFZlcnRleERlc2NyaXB0b3IuaHBwIgorI2lu
Y2x1ZGUgIk1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQURlZmluZXMuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FEZWZpbmVzLmhwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWY3
ZWZmZTNhMTgzZWIyMjZiN2UwYTkwNmU0MmIyOWFhZmQwMTI3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FEZWZpbmVzLmhwcApA
QCAtMCwwICsxLDQxIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBRdWFydHpDb3JlL0NBRGVmaW5lcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQg
MjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiLi4vRm91bmRhdGlvbi9OU0RlZmlu
ZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI2RlZmluZSBfQ0FfRVhQT1JUIF9OU19FWFBPUlQKKyNkZWZpbmUgX0NBX0VYVEVSTiBfTlNf
RVhURVJOCisjZGVmaW5lIF9DQV9JTkxJTkUgX05TX0lOTElORQorI2RlZmluZSBfQ0FfUEFDS0VE
IF9OU19QQUNLRUQKKworI2RlZmluZSBfQ0FfQ09OU1QodHlwZSwgbmFtZSkgX05TX0NPTlNUKHR5
cGUsIG5hbWUpCisjZGVmaW5lIF9DQV9FTlVNKHR5cGUsIG5hbWUpIF9OU19FTlVNKHR5cGUsIG5h
bWUpCisjZGVmaW5lIF9DQV9PUFRJT05TKHR5cGUsIG5hbWUpIF9OU19PUFRJT05TKHR5cGUsIG5h
bWUpCisKKyNkZWZpbmUgX0NBX1ZBTElEQVRFX1NJWkUobnMsIG5hbWUpIF9OU19WQUxJREFURV9T
SVpFKG5zLCBuYW1lKQorI2RlZmluZSBfQ0FfVkFMSURBVEVfRU5VTShucywgbmFtZSkgX05TX1ZB
TElEQVRFX0VOVU0obnMsIG5hbWUpCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L1F1YXJ0ekNvcmUvQ0FNZXRhbERyYXdhYmxlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9RdWFydHpDb3JlL0NBTWV0YWxEcmF3YWJsZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQwODc1
NzIxY2E5ODA0ZmZkYzM0YmE0NWVmNTk1NDIzMDk3NGExMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBTWV0YWxEcmF3YWJsZS5o
cHAKQEAgLTAsMCArMSw1NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gUXVhcnR6Q29yZS9DQU1ldGFsRHJhd2FibGUuaHBwCisvLworLy8g
Q29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIi4uL01ldGFsL01U
TERyYXdhYmxlLmhwcCIKKyNpbmNsdWRlICIuLi9NZXRhbC9NVExUZXh0dXJlLmhwcCIKKworI2lu
Y2x1ZGUgIkNBRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiQ0FQcml2YXRlLmhwcCIKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBDQQor
eworY2xhc3MgTWV0YWxEcmF3YWJsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8TWV0YWxEcmF3
YWJsZSwgTVRMOjpEcmF3YWJsZT4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBNZXRhbExheWVyKiBs
YXllcigpIGNvbnN0OworICAgIE1UTDo6VGV4dHVyZSogICAgIHRleHR1cmUoKSBjb25zdDsKK307
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
Q0FfSU5MSU5FIENBOjpNZXRhbExheWVyKiBDQTo6TWV0YWxEcmF3YWJsZTo6bGF5ZXIoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1ldGFsTGF5ZXIqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGxheWVyKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfQ0FfSU5MSU5FIE1UTDo6VGV4dHVyZSogQ0E6Ok1ldGFs
RHJhd2FibGU6OnRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZSkpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBUHJpdmF0ZS5o
cHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQVByaXZhdGUu
aHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg5YzYwMjQ3MDE1MWUxODczMWE0ZjNkM2NlYjFhM2JmN2IyYmFlMTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6
Q29yZS9DQVByaXZhdGUuaHBwCkBAIC0wLDAgKzEsMTA5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBRdWFydHpDb3JlL0NBUHJpdmF0ZS5o
cHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAi
Q0FEZWZpbmVzLmhwcCIKKworI2luY2x1ZGUgPG9iamMvcnVudGltZS5oPgorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2RlZmluZSBfQ0FfUFJJVkFU
RV9DTFMoc3ltYm9sKSAoUHJpdmF0ZTo6Q2xhc3M6OnNfayMjc3ltYm9sKQorI2RlZmluZSBfQ0Ff
UFJJVkFURV9TRUwoYWNjZXNzb3IpIChQcml2YXRlOjpTZWxlY3Rvcjo6c19rIyNhY2Nlc3NvcikK
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBk
ZWZpbmVkKENBX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04pCisKKyNkZWZpbmUgX0NBX1BSSVZBVEVf
VklTSUJJTElUWSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCisjZGVmaW5l
IF9DQV9QUklWQVRFX0lNUE9SVCBfX2F0dHJpYnV0ZV9fKCh3ZWFrX2ltcG9ydCkpCisKKyNpZiBf
X09CSkNfXworI2RlZmluZSBfQ0FfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpICgo
X19icmlkZ2Ugdm9pZCopb2JqY19sb29rVXBDbGFzcygjc3ltYm9sKSkKKyNlbHNlCisjZGVmaW5l
IF9DQV9QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgb2JqY19sb29rVXBDbGFzcygj
c3ltYm9sKQorI2VuZGlmIC8vIF9fT0JKQ19fCisKKyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX0NM
UyhzeW1ib2wpIHZvaWQqIHNfayMjc3ltYm9sIF9DQV9QUklWQVRFX1ZJU0lCSUxJVFkgPSBfQ0Ff
UFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpOworI2RlZmluZSBfQ0FfUFJJVkFURV9E
RUZfUFJPKHN5bWJvbCkKKyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX1NFTChhY2Nlc3Nvciwgc3lt
Ym9sKSBTRUwgc19rIyNhY2Nlc3NvciBfQ0FfUFJJVkFURV9WSVNJQklMSVRZID0gc2VsX3JlZ2lz
dGVyTmFtZShzeW1ib2wpOworI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfU1RSKHR5cGUsIHN5bWJv
bCkgICAgICAgICAgICAgICAgXAorICAgIF9DQV9FWFRFUk4gdHlwZSBjb25zdCBDQSMjc3ltYm9s
IF9DQV9QUklWQVRFX0lNUE9SVDsgXAorICAgIHR5cGUgY29uc3QgICAgICAgICAgICAgICAgICAg
ICAgIENBOjpzeW1ib2wgPSAobnVsbHB0ciAhPSAmQ0EjI3N5bWJvbCkgPyBDQSMjc3ltYm9sIDog
bnVsbHB0cjsKKworI2Vsc2UKKworI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfQ0xTKHN5bWJvbCkg
ZXh0ZXJuIHZvaWQqIHNfayMjc3ltYm9sOworI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfUFJPKHN5
bWJvbCkKKyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX1NFTChhY2Nlc3Nvciwgc3ltYm9sKSBleHRl
cm4gU0VMIHNfayMjYWNjZXNzb3I7CisjZGVmaW5lIF9DQV9QUklWQVRFX0RFRl9TVFIodHlwZSwg
c3ltYm9sKQorCisjZW5kaWYgLy8gQ0FfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIENBCit7
CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBDbGFzcworICAgIHsKKworICAg
IH0gLy8gQ2xhc3MKK30gLy8gUHJpdmF0ZQorfSAvLyBDQQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIENBCit7CituYW1lc3BhY2Ug
UHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBQcm90b2NvbAorICAgIHsKKworICAgICAgICBfQ0Ff
UFJJVkFURV9ERUZfUFJPKENBTWV0YWxEcmF3YWJsZSk7CisKKyAgICB9IC8vIFByb3RvY29sCit9
IC8vIFByaXZhdGUKK30gLy8gQ0EKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBDQQoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAg
ICBuYW1lc3BhY2UgU2VsZWN0b3IKKyAgICB7CisKKyAgICAgICAgX0NBX1BSSVZBVEVfREVGX1NF
TChsYXllciwKKyAgICAgICAgICAgICJsYXllciIpOworICAgICAgICBfQ0FfUFJJVkFURV9ERUZf
U0VMKHRleHR1cmUsCisgICAgICAgICAgICAidGV4dHVyZSIpOworCisgICAgfSAvLyBDbGFzcwor
fSAvLyBQcml2YXRlCit9IC8vIENBCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L1F1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTFlYjQ2N2IxNmJiODBm
ZGZkMTk2YWE4YjkzYmZlZGM1NDQ3MTk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAKQEAgLTAsMCArMSwy
NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwor
Ly8gUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJDQU1ldGFsRHJhd2FibGUuaHBwIgorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9SRUFETUUubWQgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5NTA3MTU1ZWI3N2ZjMjQ3ZjQ2M2I1
NDJhZjliZWYwZWVkNzM4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMjQ1IEBACisjIyBBYm91dAorCisqKm1l
dGFsLWNwcCoqIGlzIGEgbG93IG92ZXJoZWFkIGFuZCBoZWFkZXIgb25seSBDKysgaW50ZXJmYWNl
IGZvciBNZXRhbCB0aGF0IGhlbHBzIGRldmVsb3BlcnMgYWRkIE1ldGFsIGZ1bmN0aW9uYWxpdHkg
dG8gZ3JhcGhpY3MgYXBwbGljYXRpb25zIHRoYXQgYXJlIHdyaXR0ZW4gaW4gQysrIChzdWNoIGFz
IGdhbWUgZW5naW5lcykuICoqbWV0YWwtY3BwKiogcmVtb3ZlcyB0aGUgbmVlZCB0byBjcmVhdGUg
YSBzaGltIGFuZCBhbGxvd3MgZGV2ZWxvcGVycyB0byBjYWxsIE1ldGFsIGZ1bmN0aW9ucyBkaXJl
Y3RseSBmcm9tIGFueXdoZXJlIGluIHRoZWlyIGV4aXN0aW5nIEMrKyBjb2RlLgorCisKKyMjIEhp
Z2hsaWdodHMKKworLSBEcm9wIGluIEMrKyBhbHRlcm5hdGl2ZSBpbnRlcmZhY2UgdG8gdGhlIE1l
dGFsIE9iamVjdGl2ZS1DIGhlYWRlcnMuCistIERpcmVjdCBtYXBwaW5nIG9mIGFsbCBNZXRhbCBP
YmplY3RpdmUtQyBjbGFzc2VzLCBjb25zdGFudHMgYW5kIGVudW1zIHRvIEMrKyBpbiB0aGUgTVRM
IEMrKyBuYW1lc3BhY2UuCistIE5vIG1lYXN1cmFibGUgb3ZlcmhlYWQgY29tcGFyZWQgdG8gY2Fs
bGluZyBNZXRhbCBPYmplY3RpdmUtQyBoZWFkZXJzLCBkdWUgdG8gaW5saW5pbmcgb2YgQysrIGZ1
bmN0aW9uIGNhbGxzLgorLSBObyB1c2FnZSBvZiB3cmFwcGVyIGNvbnRhaW5lcnMgdGhhdCByZXF1
aXJlIGFkZGl0aW9uYWwgYWxsb2NhdGlvbnMuCistIFJlcXVpcmVzIEMrKzE3IGR1ZSB0byB0aGUg
dXNhZ2Ugb2YgYGNvbnN0ZXhwcmAgaW4gYE5TOjpPYmplY3RgLgorLSBJZGVudGljYWwgaGVhZGVy
IGZpbGVzIGFuZCBmdW5jdGlvbi9jb25zdGFudC9lbnVtIGF2YWlsYWJpbGl0eSBmb3IgaU9TLCBt
YWNPUyBhbmQgdHZPUy4KKy0gQmFja3dhcmRzIGNvbXBhdGliaWxpdHk6IEFsbCBgYm9vbCBNVEw6
OkRldmljZTo6c3VwcG9ydHMuLi4oKWAgZnVuY3Rpb25zIGNoZWNrIGlmIHRoZWlyIHJlcXVpcmVk
IHNlbGVjdG9ycyBleGlzdCBhbmQgYXV0b21hdGljYWxseSByZXR1cm4gYGZhbHNlYCBpZiBub3Qu
CistIFN0cmluZyAoYEVycm9yRG9tYWluYCkgY29uc3RhbnRzIGFyZSB3ZWFrIGxpbmtlZCBhbmQg
YXV0b21hdGljYWxseSBzZXQgdG8gYG51bGxwdHJgIGlmIG5vdCBhdmFpbGFibGUuCisKKyMjIE1l
bW9yeSBBbGxvY2F0aW9uIFBvbGljeQorCisqKm1ldGFsLWNwcCoqIGZvbGxvd3MgdGhlIG9iamVj
dCBhbGxvY2F0aW9uIHBvbGljaWVzIG9mIENvY29hIGFuZCBDb2NvYSBUb3VjaC4gVW5kZXJzdGFu
ZGluZyB0aG9zZSBydWxlcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB3aGVuIHVzaW5nIG1ldGFs
LWNwcCwgYXMgQysrIG9iamVjdHMgYXJlIG5vdCBlbGlnaWJsZSBmb3IgYXV0b21hdGljIHJlZmVy
ZW5jZSBjb3VudGluZyAoQVJDKS4KKworKiptZXRhbC1jcHAqKiBvYmplY3RzIGFyZSByZWZlcmVu
Y2UgY291bnRlZC4gVG8gaGVscCBjb252ZXkgYW5kIG1hbmFnZSBvYmplY3QgbGlmZWN5Y2xlcywg
dGhlIGZvbGxvd2luZyBjb252ZW50aW9ucyBhcmUgb2JzZXJ2ZWQ6CisKKzEuICpZb3Ugb3duIGFu
eSBvYmplY3QgcmV0dXJuZWQgYnkgbWV0aG9kcyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoKiBgYWxs
b2NgICosKiBgbmV3YCAqLCogYGNvcHlgICosIG9yKiBgbXV0YWJsZUNvcHlgLiBUaGUgbWV0aG9k
IHJldHVybnMgdGhlc2Ugb2JqZWN0cyB3aXRoIGByZXRhaW5Db3VudGAgZXF1YWxzIHRvIGAxYC4K
KzIuICpZb3UgY2FuIHRha2Ugb3duZXJzaGlwIG9mIGFuIG9iamVjdCBieSBjYWxsaW5nIGl0cyog
YGBgcmV0YWluKClgYGAgKm1ldGhvZCouIEEgcmVjZWl2ZWQgb2JqZWN0IGlzIG5vcm1hbGx5IGd1
YXJhbnRlZWQgdG8gcmVtYWluIHZhbGlkIHdpdGhpbiB0aGUgbWV0aG9kIGl0IHdhcyByZWNlaXZl
ZCBpbi4gWW91IHVzZSBgcmV0YWluYCBpbiB0d28gc2l0dWF0aW9uczogKDEpIEluIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBhbiBhY2Nlc3NvciBtZXRob2QgKGEgc2V0dGVyKSBvciB0byB0YWtlIG93
bmVyc2hpcCBvZiBhbiBvYmplY3Q7IGFuZCAoMikgVG8gcHJldmVudCBhbiBvYmplY3QgZnJvbSBi
ZWluZyBkZWFsbG9jYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHNvbWUgb3RoZXIgb3BlcmF0aW9u
LgorMy4gKldoZW4geW91IG5vIGxvbmdlciBuZWVkIGl0LCB5b3UgbXVzdCByZWxpbnF1aXNoIG93
bmVyc2hpcCBvZiBhbiBvYmplY3QgeW91IG93biouIFlvdSByZWxpbnF1aXNoIG93bmVyc2hpcCBi
eSBjYWxsaW5nIGl0cyBgcmVsZWFzZSgpYCBvciBgYXV0b3JlbGVhc2UoKWAgbWV0aG9kLgorNC4g
KllvdSBtdXN0IG5vdCByZWxpbnF1aXNoIG93bmVyc2hpcCBvZiBhbiBvYmplY3QgeW91IGRvIG5v
dCBvd24qLgorCitXaGVuIGFuIG9iamVjdCdzIGByZXRhaW5Db3VudGAgcmVhY2hlcyBgMGAsIHRo
ZSBvYmplY3QgaXMgaW1tZWRpYXRlbHkgZGVhbGxvY2F0ZWQuIEl0IGlzIGlsbGVnYWwgdG8gY2Fs
bCBtZXRob2RzIG9uIGEgZGVhbGxvY2F0ZWQgb2JqZWN0IGFuZCBpdCBtYXkgbGVhZCB0byBhbiBh
cHBsaWNhdGlvbiBjcmFzaC4KKworIyMjIEF1dG9yZWxlYXNlUG9vbHMgYW5kIE9iamVjdHMKKwor
U2V2ZXJhbCBtZXRob2RzIHRoYXQgY3JlYXRlIHRlbXBvcmFyeSBvYmplY3RzIGluICoqbWV0YWwt
Y3BwKiogYWRkIHRoZW0gdG8gYW4gYEF1dG9yZWxlYXNlUG9vbGAgdG8gaGVscCBtYW5hZ2UgdGhl
aXIgbGlmZXRpbWVzLiBJbiB0aGVzZSBzaXR1YXRpb25zLCBhZnRlciAqKm1ldGFsLWNwcCoqIGNy
ZWF0ZXMgdGhlIG9iamVjdCwgaXQgYWRkcyBpdCB0byBhbiBgQXV0b3JlbGVhc2VQb29sYCwgd2hp
Y2ggd2lsbCByZWxlYXNlIGl0cyBvYmplY3RzIHdoZW4geW91IHJlbGVhc2UgKG9yIGRyYWluKSBp
dC4KKworQnkgYWRkaW5nIHRlbXBvcmFyeSBvYmplY3RzIHRvIGFuIEF1dG9yZWxlYXNlUG9vbCwg
eW91IGRvIG5vdCBuZWVkIHRvIGV4cGxpY2l0bHkgY2FsbCBgcmVsZWFzZSgpYCB0byBkZWFsbG9j
YXRlIHRoZW0uIEluc3RlYWQsIHlvdSBjYW4gcmVseSBvbiB0aGUgYEF1dG9yZWxlYXNlUG9vbGAg
dG8gaW1wbGljaXRseSBtYW5hZ2UgdGhvc2UgbGlmZXRpbWVzLgorCitJZiB5b3UgY3JlYXRlIGFu
IG9iamVjdCB3aXRoIGEgbWV0aG9kIHRoYXQgZG9lcyBub3QgYmVnaW4gd2l0aCBgYWxsb2NgLCBg
bmV3YCwgYGNvcHlgLCBvciBgbXV0YWJsZUNvcHlgLCB0aGUgY3JlYXRpbmcgbWV0aG9kIGFkZHMg
dGhlIG9iamVjdCB0byBhbiBhdXRvcmVsZWFzZSBwb29sLgorCitUaGUgdHlwaWNhbCBzY29wZSBv
ZiBhbiBgQXV0b3JlbGVhc2VQb29sYCBpcyBvbmUgZnJhbWUgb2YgcmVuZGVyaW5nIGZvciB0aGUg
bWFpbiB0aHJlYWQgb2YgdGhlIHByb2dyYW0uIFdoZW4gdGhlIHRocmVhZCByZXR1cm5zIGNvbnRy
b2wgdG8gdGhlIFJ1bkxvb3AgKGFuIG9iamVjdCByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIGlu
cHV0IGFuZCBldmVudHMgZnJvbSB0aGUgd2luZG93aW5nIHN5c3RlbSksIHRoZSBwb29sIGlzICpk
cmFpbmVkKiwgcmVsZWFzaW5nIGl0cyBvYmplY3RzLgorCitZb3UgY2FuIGNyZWF0ZSBhbmQgbWFu
YWdlIGFkZGl0aW9uYWwgYEF1dG9yZWxlYXNlUG9vbGBzIGF0IHNtYWxsZXIgc2NvcGVzIHRvIHJl
ZHVjZSB5b3VyIHByb2dyYW0ncyB3b3JraW5nIHNldCwgYW5kIHlvdSBhcmUgcmVxdWlyZWQgdG8g
ZG8gc28gZm9yIGFueSBhZGRpdGlvbmFsIHRocmVhZHMgeW91ciBwcm9ncmFtIGNyZWF0ZXMuCisK
K0lmIGFuIG9iamVjdCdzIGxpZmVjeWNsZSBuZWVkcyB0byBiZSBleHRlbmRlZCBiZXlvbmQgdGhl
IGBBdXRvcmVsZWFzZVBvb2xgJ3Mgc2NvcGUsIHlvdSBjYW4gY2xhaW0gb3duZXJzaGlwIG9mIGl0
IChhdm9pZGluZyBpdHMgcmVsZWFzZSBiZXlvbmQgdGhlIHBvb2wncyBzY29wZSkgYnkgY2FsbGlu
ZyBpdHMgYHJldGFpbigpYCBtZXRob2QgYmVmb3JlIGl0cyBwb29sIGlzIGRyYWluZWQuIEluIHRo
ZXNlIGNhc2VzLCB5b3Ugd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgbWFraW5nIHRoZSBhcHByb3By
aWF0ZSBgcmVsZWFzZSgpYCBjYWxsIG9uIHRoZSBvYmplY3QgYWZ0ZXIgeW91IG5vIGxvbmdlciBu
ZWVkIGl0LiAKKworWW91IGNhbiBmaW5kIGEgbW9yZS1kZXRhaWxlZCBpbnRyb2R1Y3Rpb24gdG8g
dGhlIG1lbW9yeSBtYW5hZ2VtZW50IHJ1bGVzIGhlcmU6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxl
LmNvbS9saWJyYXJ5L2FyY2hpdmUvZG9jdW1lbnRhdGlvbi9Db2NvYS9Db25jZXB0dWFsL01lbW9y
eU1nbXQvQXJ0aWNsZXMvbW1SdWxlcy5odG1sLgorCitGb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRo
ZSBhcHBsaWNhdGlvbidzIFJ1bkxvb3AsIHBsZWFzZSBmaW5kIGl0cyBkb2N1bWVudGF0aW9uIGhl
cmU6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL2ZvdW5kYXRpb24v
bnNydW5sb29wCisKKyMjIyBVc2UgYW5kIGRlYnVnIEF1dG9yZWxlYXNlUG9vbHMKKworV2hlbiB5
b3UgY3JlYXRlIGFuIGF1dG9yZWxlYXNlZCBvYmplY3QgYW5kIHRoZXJlIGlzIG5vIGVuY2xvc2lu
ZyBgQXV0b3JlbGVhc2VQb29sYCwgdGhlIG9iamVjdCBpcyBsZWFrZWQuCisKK1RvIHByZXZlbnQg
dGhpcywgeW91IG5vcm1hbGx5IGNyZWF0ZSBhbiBgQXV0b3JlbGVhc2VQb29sYCBpbiB5b3VyIHBy
b2dyYW0ncyBgbWFpbmAgZnVuY3Rpb24sIGFuZCBpbiB0aGUgZW50cnkgZnVuY3Rpb24gZm9yIGV2
ZXJ5IHRocmVhZCB5b3UgY3JlYXRlLiBZb3UgbWF5IGFsc28gY3JlYXRlIGFkZGl0aW9uYWwgYEF1
dG9yZWxlYXNlUG9vbGBzIHRvIGF2b2lkIGdyb3dpbmcgeW91ciBwcm9ncmFtJ3MgaGlnaCBtZW1v
cnkgd2F0ZXJtYXJrIHdoZW4geW91IGNyZWF0ZSBzZXZlcmFsIGF1dG9yZWxlYXNlZCBvYmplY3Rz
LCBzdWNoIGFzIHdoZW4gcmVuZGVyaW5nLgorCitVc2UgdGhlIEVudmlyb25tZW50IFZhcmlhYmxl
IGBPQkpDX0RFQlVHX01JU1NJTkdfUE9PTFM9WUVTYCB0byBwcmludCBhIHJ1bnRpbWUgd2Fybmlu
ZyB3aGVuIGFuIGF1dG9yZWxlYXNlZCBvYmplY3QgaXMgbGVha2VkIGJlY2F1c2Ugbm8gZW5jbG9z
aW5nIGBBdXRvcmVsZWFzZVBvb2xgIGlzIGF2YWlsYWJsZSBmb3IgaXRzIHRocmVhZC4KKworWW91
IGNhbiBhbHNvIHJ1biBgbGVha3MgLS1hdXRvcmVsZWFzZVBvb2xzYCBvbiBhIG1lbWdyYXBoIGZp
bGUgb3IgYSBwcm9jZXNzIElEIChtYWNPUyBvbmx5KSB0byB2aWV3IGEgbGlzdGluZyBvZiB5b3Vy
IHByb2dyYW0ncyBgQXV0b3JlbGVhc2VQb29sYHMgYW5kIGFsbCBvYmplY3RzIHRoZXkgY29udGFp
bi4KKworIyMjIG51bGxwdHIKKworU2ltaWxhciB0byBPYmplY3RpdmUtQywgaXQgaXMgbGVnYWwg
dG8gY2FsbCBhbnkgbWV0aG9kLCBpbmNsdWRpbmcgYHJldGFpbigpYCBhbmQgYHJlbGVhc2UoKWAs
IG9uIGBudWxscHRyYCAib2JqZWN0cyIuIFdoaWxlIGNhbGxpbmcgbWV0aG9kcyBvbiBgbnVsbHB0
cmAgc3RpbGwgZG9lcyBpbmN1ciBpbiBmdW5jdGlvbiBjYWxsIG92ZXJoZWFkLCB0aGUgZWZmZWN0
aXZlIHJlc3VsdCBpcyBlcXVpdmFsZW50IG9mIGEgTk9QLgorCitDb252ZXJzZWx5LCBkbyBub3Qg
YXNzdW1lIHRoYXQgYmVjYXVzZSBjYWxsaW5nIGEgbWV0aG9kIG9uIGEgcG9pbnRlciBkaWQgbm90
IHJlc3VsdCBpbiBhIGNyYXNoLCB0aGF0IHRoZSBwb2ludGVkLXRvIG9iamVjdCBpcyB2YWxpZC4K
KworIyMgQWRkaW5nIG1ldGFsLWNwcCB0byBhIFByb2plY3QKKworU2ltcGx5IGluY2x1ZGUgYE1l
dGFsL01ldGFsLmhwcGAuIFRvIGVuc3VyZSB0aGF0IHRoZSBzZWxlY3RvciBhbmQgY2xhc3Mgc3lt
Ym9scyBhcmUgbGlua2VkLCBhZGQgdG8gb25lIG9mIHlvdXIgY3BwIGZpbGVzOgorCitgYGBjcHAK
KyNkZWZpbmUgTlNfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorI2RlZmluZSBNVExfUFJJVkFURV9J
TVBMRU1FTlRBVElPTgorCisjaW5jbHVkZSAiTWV0YWwvTWV0YWwuaHBwIgorYGBgCisKK0lmIHlv
dSB3YW50IHRvIHVzZSB0aGUgUXVhcnR6Q29yZSB3cmFwcGVyLCBhZGQ6CisKK2BgYGNwcAorI2Rl
ZmluZSBDQV9QUklWQVRFX0lNUExFTUVOVEFUSU9OCisKKyNpbmNsdWRlICJRdWFydHpDb3JlL1F1
YXJ0ekNvcmUuaHBwIgorYGBgCisKKyMjIEdlbmVyYXRpbmcgYSBTaW5nbGUgSGVhZGVyIEZpbGUK
KworUHVyZWx5IG9wdGlvbmFsOiBZb3UgY2FuIGdlbmVyYXRlIGEgc2luZ2xlIGhlYWRlciBmaWxl
IHRoYXQgY29udGFpbnMgYWxsICoqbWV0YWwtY3BwKiogaGVhZGVycyB2aWE6CisKK2BgYHNoZWxs
CisuL1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5IEZvdW5kYXRpb24vRm91bmRhdGlv
bi5ocHAgUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcCBNZXRhbC9NZXRhbC5ocHAKK2BgYAorCitC
eSBkZWZhdWx0IHRoZSBnZW5lcmF0ZWQgaGVhZGVyIGZpbGUgd2lsbCBiZSB3cml0dGVuIHRvIGAu
L1NpbmdsZUhlYWRlci9NZXRhbC5ocHBgCisKKyMjIEV4YW1wbGVzCisKKyMjIyMgQ3JlYXRpbmcg
dGhlIGRldmljZQorCisjIyMjIyMgT2JqZWN0aXZlLUMgKHdpdGggYXV0b21hdGljIHJlZmVyZW5j
ZSBjb3VudGluZykKKworYGBgb2JqYworaWQ8IE1UTERldmljZSA+IGRldmljZSA9IE1UTENyZWF0
ZVN5c3RlbURlZmF1bHREZXZpY2UoKTsKKworLy8gLi4uCitgYGAKKworIyMjIyMjIE9iamVjdGl2
ZS1DCisKK2BgYG9iamMKK2lkPCBNVExEZXZpY2UgPiBkZXZpY2UgPSBNVExDcmVhdGVTeXN0ZW1E
ZWZhdWx0RGV2aWNlKCk7CisKKy8vIC4uLgorCitbZGV2aWNlIHJlbGVhc2VdOworYGBgCisKKyMj
IyMjIyBDKysKKworYGBgY3BwCitNVEw6OkRldmljZSogcERldmljZSA9IE1UTDo6Q3JlYXRlU3lz
dGVtRGVmYXVsdERldmljZSgpOworCisvLyAuLi4KKworcERldmljZS0+cmVsZWFzZSgpOworYGBg
CisKKyMjIyMgTWV0YWwgZnVuY3Rpb24gY2FsbHMgbWFwIGRpcmVjdGx5IHRvIEMrKworCisjIyMj
IyMgT2JqZWN0aXZlLUMgKHdpdGggYXV0b21hdGljIHJlZmVyZW5jZSBjb3VudGluZykKKworYGBg
b2JqYworTVRMU2FtcGxlckRlc2NyaXB0b3IqIHNhbXBsZXJEZXNjcmlwdG9yID0gW1tNVExTYW1w
bGVyRGVzY3JpcHRvciBhbGxvY10gaW5pdF07CisKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRTQWRk
cmVzc01vZGU6IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRlc2NyaXB0
b3Igc2V0VEFkZHJlc3NNb2RlOiBNVExTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXRdOworW3NhbXBs
ZXJEZXNjcmlwdG9yIHNldFJBZGRyZXNzTW9kZTogTVRMU2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0
XTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRNYWdGaWx0ZXI6IE1UTFNhbXBsZXJNaW5NYWdGaWx0
ZXJMaW5lYXJdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldE1pbkZpbHRlcjogTVRMU2FtcGxlck1p
bk1hZ0ZpbHRlckxpbmVhcl07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0TWlwRmlsdGVyOiBNVExT
YW1wbGVyTWlwRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRTdXBwb3J0QXJn
dW1lbnRCdWZmZXJzOiBZRVNdOworCitpZDwgTVRMU2FtcGxlclN0YXRlID4gc2FtcGxlclN0YXRl
ID0gW2RldmljZSBuZXdTYW1wbGVyU3RhdGVXaXRoRGVzY3JpcHRvcjpzYW1wbGVyRGVzY3JpcHRv
cl07CitgYGAKKworIyMjIyMjIE9iamVjdGl2ZS1DCisKK2BgYG9iamMKK01UTFNhbXBsZXJEZXNj
cmlwdG9yKiBzYW1wbGVyRGVzY3JpcHRvciA9IFtbTVRMU2FtcGxlckRlc2NyaXB0b3IgYWxsb2Nd
IGluaXRdOworCitbc2FtcGxlckRlc2NyaXB0b3Igc2V0U0FkZHJlc3NNb2RlOiBNVExTYW1wbGVy
QWRkcmVzc01vZGVSZXBlYXRdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldFRBZGRyZXNzTW9kZTog
TVRMU2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0XTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRSQWRk
cmVzc01vZGU6IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRlc2NyaXB0
b3Igc2V0TWFnRmlsdGVyOiBNVExTYW1wbGVyTWluTWFnRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVy
RGVzY3JpcHRvciBzZXRNaW5GaWx0ZXI6IE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5lYXJdOwor
W3NhbXBsZXJEZXNjcmlwdG9yIHNldE1pcEZpbHRlcjogTVRMU2FtcGxlck1pcEZpbHRlckxpbmVh
cl07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0U3VwcG9ydEFyZ3VtZW50QnVmZmVyczogWUVTXTsK
KworaWQ8IE1UTFNhbXBsZXJTdGF0ZSA+IHNhbXBsZXJTdGF0ZSA9IFtkZXZpY2UgbmV3U2FtcGxl
clN0YXRlV2l0aERlc2NyaXB0b3I6c2FtcGxlckRlc2NyaXB0b3JdOworCitbc2FtcGxlckRlc2Ny
aXB0b3IgcmVsZWFzZV07CisKKy8vIC4uLgorCitbc2FtcGxlclN0YXRlIHJlbGVhc2VdOworYGBg
CisKKyMjIyMjIyBDKysKKworYGBgY3BwCitNVEw6OlNhbXBsZXJEZXNjcmlwdG9yKiBwU2FtcGxl
ckRlc2NyaXB0b3IgPSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjphbGxvYygpLT5pbml0KCk7CisK
K3BTYW1wbGVyRGVzY3JpcHRvci0+c2V0U0FkZHJlc3NNb2RlKCBNVEw6OlNhbXBsZXJBZGRyZXNz
TW9kZVJlcGVhdCApOworcFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRUQWRkcmVzc01vZGUoIE1UTDo6
U2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0ICk7CitwU2FtcGxlckRlc2NyaXB0b3ItPnNldFJBZGRy
ZXNzTW9kZSggTVRMOjpTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXQgKTsKK3BTYW1wbGVyRGVzY3Jp
cHRvci0+c2V0TWFnRmlsdGVyKCBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5lYXIgKTsKK3BT
YW1wbGVyRGVzY3JpcHRvci0+c2V0TWluRmlsdGVyKCBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXJM
aW5lYXIgKTsKK3BTYW1wbGVyRGVzY3JpcHRvci0+c2V0TWlwRmlsdGVyKCBNVEw6OlNhbXBsZXJN
aXBGaWx0ZXJMaW5lYXIgKTsKK3BTYW1wbGVyRGVzY3JpcHRvci0+c2V0U3VwcG9ydEFyZ3VtZW50
QnVmZmVycyggdHJ1ZSApOworCitNVEw6OlNhbXBsZXJTdGF0ZSogcFNhbXBsZXJTdGF0ZSA9IHBE
ZXZpY2UtPm5ld1NhbXBsZXJTdGF0ZSggcFNhbXBsZXJEZXNjcmlwdG9yICk7CisKK3BTYW1wbGVy
RGVzY3JpcHRvci0+cmVsZWFzZSgpOworCisvLyAuLi4KKworcFNhbXBsZXJTdGF0ZS0+cmVsZWFz
ZSgpOworYGBgCisKKyMjIyMgQSBzdWJzZXQgb2YgYmluZGluZ3MgZm9yIEZvdW5kYXRpb24gY2xh
c3NlcyBpcyBwcm92aWRlZCBmb3Igc2VhbWxlc3MgaW50ZWdyYXRpb24KKworIyMjIyMjIE9iamVj
dGl2ZS1DICh3aXRoIGF1dG9tYXRpYyByZWZlcmVuY2UgY291bnRpbmcpCisKK2BgYG9iamMKK05T
QXV0b3JlbGVhc2VQb29sKiAgcG9vbCAgID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5p
dF07CitOU1N0cmluZyogICAgICAgICAgIHN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0
cmluZzogIkhlbGxvIFdvcmxkIiBlbmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXTsKKwor
cHJpbnRmKCAic3RyaW5nID0gXCIlc1wiXG4iLCBbc3RyaW5nIGNTdHJpbmdVc2luZ0VuY29kaW5n
OiBOU0FTQ0lJU3RyaW5nRW5jb2RpbmddICk7CitgYGAKKworIyMjIyMjIE9iamVjdGl2ZS1DCisK
K2BgYG9iamMKK05TQXV0b3JlbGVhc2VQb29sKiBwb29sICAgPSBbW05TQXV0b3JlbGVhc2VQb29s
IGFsbG9jXSBpbml0XTsKK05TU3RyaW5nKiAgICAgICAgICBzdHJpbmcgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENTdHJpbmc6ICJIZWxsbyBXb3JsZCIgZW5jb2Rpbmc6IE5TQVNDSUlTdHJpbmdFbmNv
ZGluZ107CisJCQkJCQkJCQorcHJpbnRmKCAic3RyaW5nID0gXCIlc1wiXG4iLCBbc3RyaW5nIGNT
dHJpbmdVc2luZ0VuY29kaW5nOiBOU0FTQ0lJU3RyaW5nRW5jb2RpbmddICk7CisKK1twb29sIHJl
bGVhc2VdOworYGBgCisKKyMjIyMjIyBDKysKKworYGBgY3BwCitOUzo6QXV0b3JlbGVhc2VQb29s
KiBwUG9vbCAgID0gTlM6OkF1dG9yZWxlYXNlUG9vbDo6YWxsb2MoKS0+aW5pdCgpOworTlM6OlN0
cmluZyogICAgICAgICAgcFN0cmluZyA9IE5TOjpTdHJpbmc6OnN0cmluZyggIkhlbGxvIFdvcmxk
IiwgTlM6OkFTQ0lJU3RyaW5nRW5jb2RpbmcgKTsKKworcHJpbnRmKCAicFN0cmluZyA9IFwiJXNc
IlxuIiwgcFN0cmluZy0+Y1N0cmluZyggTlM6OkFTQ0lJU3RyaW5nRW5jb2RpbmcgKSApOworCitw
UG9vbC0+cmVsZWFzZSgpOworYGBgCisKKyMjIyMgIEludGVyb3BlcmFiaWxpdHkgd2l0aCBDb3Jl
Rm91bmRhdGlvbgorCitgYGBjcHAKK01UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVH
ZW9tZXRyeURlc2NyaXB0b3IqIHBHZW9EZXNjcmlwdG9yICA9IE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG9jKCktPmluaXQoKTsKK0NGVHlw
ZVJlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0
b3JzW10gICA9IHsgKCBDRlR5cGVSZWYgKSggcEdlb0Rlc2NyaXB0b3IgKSB9OworTlM6OkFycmF5
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEdlb0Rlc2NyaXB0
b3JzID0gKCBOUzo6QXJyYXkqICkoIENGQXJyYXlDcmVhdGUoIGtDRkFsbG9jYXRvckRlZmF1bHQs
IGRlc2NyaXB0b3JzLCBTSVpFT0ZfQVJSQVkoIGRlc2NyaXB0b3JzKSwgJmtDRlR5cGVBcnJheUNh
bGxCYWNrcyApICk7CisKKy8vIC4uLgorCitwR2VvRGVzY3JpcHRvcnMtPnJlbGVhc2UoKTsKK2Bg
YAorCisjIyMjIEFjY2Vzc2luZyBhIENBTWV0YWxEcmF3YWJsZQorCitgYGBvYmpjCisjaW1wb3J0
IDxRdWFydHpDb3JlL0NBTWV0YWxMYXllci5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpD
b3JlLmhwcD4KKworLy8gLi4uCisKK0NBTWV0YWxMYXllciogICAgICAgICBtZXRhbExheWVyICAg
ICAgICAgPSAvKiBnZXQgeW91ciBsYXllciBmcm9tIHlvdXIgdmlldyAqLzsKK2lkPCBDQU1ldGFs
RHJhd2FibGUgPiBtZXRhbERyYXdhYmxlICAgICAgPSBbbWV0YWxMYXllciBuZXh0RHJhd2FibGVd
OworQ0E6Ok1ldGFsRHJhd2FibGUqICAgIHBNZXRhbENwcERyYXdhYmxlICA9ICggX19icmlkZ2Ug
Q0E6Ok1ldGFsRHJhd2FibGUqICkgbWV0YWxEcmF3YWJsZTsKKworLy8gLi4uCitgYGAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9TaW5nbGVIZWFkZXIvTWFrZVNp
bmdsZUhlYWRlci5weSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9TaW5nbGVIZWFk
ZXIvTWFrZVNpbmdsZUhlYWRlci5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNThlNDllYzc3NmFjOTlmNzA5MDVm
NmE1MWQ3NjlkMDc1MzllNTRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5CkBAIC0wLDAgKzEs
MjcxIEBACisjIS91c3IvYmluL3B5dGhvbgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkK
KyMKKyMgQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisjCisjIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZGF0ZXRpbWUKK2lt
cG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2lt
cG9ydCBzeXMKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK2NsYXNzIEhlYWRlclByZWZpeCggb2JqZWN0ICk6CisJX190ZW1wbGF0ZSAJCQk9ICggJy8v
XG4nCisJCQkJCQkJJy8vIHtmaWxlfVxuJworCQkJCQkJCScvL1xuJworCQkJCQkJCScvLyB7bWV0
YV9kYXRhfVxuJworCQkJCQkJCScvL1xuJworCQkJCQkJCScvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy5cbicKKwkJCQkJCQknLy9cbicKKwkJCQkJCQknLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7XG4nCisJCQkJ
CQkJJy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS5cbicKKwkJCQkJCQknLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0XG4nCisJCQkJCQkJJy8vXG4nCisJCQkJCQkJJy8vICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbicKKwkJCQkJCQknLy9cbicKKwkJCQkJ
CQknLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZVxuJworCQkJCQkJCScvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLFxuJworCQkJCQkJCScvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC5cbicKKwkJCQkJCQknLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuJworCQkJCQkJCScvLyBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbicKKwkJCQkJCQknLy9cbicKKwkJCQkJCQkn
XG4nICkKKworCV9fdGVtcGxhdGVfY29tbWl0CT0JJ0F1dG9nZW5lcmF0ZWQgZnJvbSBjb21taXQg
e2NvbW1pdH0uJworCV9fdGVtcGxhdGVfZGF0ZQkJPQknQXV0b2dlbmVyYXRlZCBvbiAlQiAlZCwg
JVkuJworCisJZGVmIF9faW5pdF9fKCBzZWxmLCBmaWxlICk6CisJCXNlbGYuX19maWxlID0gZmls
ZQorCisJZGVmIF9fc3RyX18oIHNlbGYgKToKKwkJcmV0dXJuIHNlbGYuX190ZW1wbGF0ZS5mb3Jt
YXQoIGZpbGUgPSBzZWxmLl9fZmlsZSwgbWV0YV9kYXRhID0gc2VsZi5fX21ldGFfZGF0YV9zdHJp
bmcoKSApCisKKwlkZWYgX19nZXRfY29tbWl0X2hhc2goIHNlbGYgKToKKwkJZ2l0X2NvbW1pdF9o
YXNoID0gTm9uZQorCisJCXRyeToKKwkJCWdpdF9kaXIJCQk9IG9zLnBhdGguZGlybmFtZSggb3Mu
cGF0aC5yZWFscGF0aCggX19maWxlX18gKSApCisJCQlwcm9jIAkJCT0gc3VicHJvY2Vzcy5Qb3Bl
biggWyAnZ2l0JywgJ3Jldi1wYXJzZScsICdIRUFEJyBdLCBjd2QgPSBnaXRfZGlyLCBzdGRvdXQg
PSBzdWJwcm9jZXNzLlBJUEUsIHN0ZGVyciA9IHN1YnByb2Nlc3MuUElQRSApCisJCQlnaXRfY29t
bWl0X2hhc2ggPSBwcm9jLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCAndXRmLTgnLCAncmVwbGFjZScg
KS5zdHJpcCgpCisJCWV4Y2VwdDoKKwkJCWxvZ2dpbmcuZXJyb3IoICdGYWlsZWQgdG8gZGV0ZXJt
aW5lIGdpdCBjb21taXQgaGFzaCEnICkKKwkJCXBhc3MKKworCQlyZXR1cm4gZ2l0X2NvbW1pdF9o
YXNoCisKKwlkZWYgX19nZXRfY29tbWl0X3N0cmluZyggc2VsZiApOgorCQltZXRhX2RhdGEJCT0g
Tm9uZQorCQlnaXRfY29tbWl0X2hhc2gJPSBzZWxmLl9fZ2V0X2NvbW1pdF9oYXNoKCkKKworCQlp
ZiBnaXRfY29tbWl0X2hhc2g6CisJCQltZXRhX2RhdGEgPSBzZWxmLl9fdGVtcGxhdGVfY29tbWl0
LmZvcm1hdCggY29tbWl0ID0gZ2l0X2NvbW1pdF9oYXNoICkKKworCQlyZXR1cm4gbWV0YV9kYXRh
CisKKwlkZWYgX19nZXRfZGF0ZV9zdHJpbmcoIHNlbGYgKToKKwkJdG9kYXkgPSBkYXRldGltZS5k
YXRlLnRvZGF5KCkKKyAKKwkJcmV0dXJuIHRvZGF5LnN0cmZ0aW1lKCBzZWxmLl9fdGVtcGxhdGVf
ZGF0ZSApCisKKwlkZWYgX19tZXRhX2RhdGFfc3RyaW5nKCBzZWxmICk6CisJCW1ldGFfZGF0YSA9
IHNlbGYuX19nZXRfY29tbWl0X3N0cmluZygpCisKKwkJaWYgbm90IG1ldGFfZGF0YToKKwkJCW1l
dGFfZGF0YSA9IHNlbGYuX19nZXRfZGF0ZV9zdHJpbmcoKQorCisJCXJldHVybiBtZXRhX2RhdGEK
KworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNz
IFNpbmdsZUhlYWRlciggb2JqZWN0ICk6CisJX19wcmFnbWFfb25jZSA9ICcjcHJhZ21hIG9uY2Vc
blxuJworCisJZGVmIF9faW5pdF9fKCBzZWxmICk6CisJCXNlbGYuX19oZWFkZXJfcGF0aHMgPSBs
aXN0KCkKKworCWRlZiBfX3N0cl9fKCBzZWxmICk6CisJCXJldHVybiBzZWxmLnByb2Nlc3MoKQor
CisJZGVmIGFwcGVuZCggc2VsZiwgaGVhZGVyX3BhdGggKToKKwkJc2VsZi5fX2hlYWRlcl9wYXRo
cy5hcHBlbmQoIGhlYWRlcl9wYXRoICkKKworCWRlZiBwcm9jZXNzKCBzZWxmICk6CisJCW91dF9o
ZWFkZXIgCQkJCT0gc2VsZi5fX3ByYWdtYV9vbmNlCisKKwkJc2VsZi5fX2luY2x1ZGVkX2hlYWRl
cnMJPSBzZXQoKQorCQlzZWxmLl9fYmFzZV9wYXRoIAkJPSBsaXN0KCkKKworCQlmb3IgaGVhZGVy
X3BhdGggaW4gc2VsZi5fX2hlYWRlcl9wYXRoczoKKwkJCW91dF9oZWFkZXIgKz0gc2VsZi5fX3By
b2Nlc3NfaGVhZGVyKCBoZWFkZXJfcGF0aCApCisKKwkJcmV0dXJuIHNlbGYuX19zdHJpcF9lbXB0
eV9saW5lcyggb3V0X2hlYWRlciApCisKKwlkZWYgX19yZWFkX2hlYWRlciggc2VsZiwgcGF0aCAp
OgorCQlwYXRoID0gb3MucGF0aC5yZWFscGF0aCggcGF0aCApCisKKwkJdHJ5OgorCQkJZiA9IG9w
ZW4oIHBhdGgsICdyJyApCisJCWV4Y2VwdDoKKwkJCXJhaXNlIFJ1bnRpbWVFcnJvciggJ0ZhaWxl
ZCB0byBvcGVuIGZpbGUgXCInICsgcGF0aCArICdcIiBmb3IgcmVhZCEnICkKKworCQlyZXR1cm4g
Zi5yZWFkKCkKKworCWRlZiBfX3N0cmlwX3ByYWdtYV9vbmNlKCBzZWxmLCBoZWFkZXIgKToKKwkJ
cmV0dXJuIHJlLnN1YiggJ1xccyojcHJhZ21hIG9uY2VccypcXC9cXC8tKlxcbicsICcnLCBoZWFk
ZXIgKQorCisJZGVmIF9fc3RyaXBfY29tbWVudHMoIHNlbGYsIGhlYWRlciApOgorCQlyZXR1cm4g
cmUuc3ViKCAnXi8vLipcXG4nLCAnJywgaGVhZGVyLCBmbGFncyA9IHJlLk1VTFRJTElORSApCisK
KwlkZWYgX19zdHJpcF9lbXB0eV9saW5lcyggc2VsZiwgaGVhZGVyICk6CisJCXJldHVybiByZS5z
dWIoICdcXG5cXG4rJywgJ1xcblxcbicsIGhlYWRlciwgZmxhZ3MgPSByZS5NVUxUSUxJTkUgKQor
CisJZGVmIF9fc3Vic3RpdHV0ZV9pbmNsdWRlX2RpcmVjdGl2ZSggc2VsZiwgbWF0Y2ggKToKKwkJ
aGVhZGVyX3BhdGggPSBtYXRjaC5ncm91cCggJ0hFQURFUl9QQVRIJyApCisKKwkJbG9nZ2luZy5p
bmZvKCAnXHRTdWJzdGl0dXRpbmcgXCInICsgaGVhZGVyX3BhdGggKyAnXCIuLi4nICkKKworCQly
ZXR1cm4gc2VsZi5fX3Byb2Nlc3NfaGVhZGVyKCBvcy5wYXRoLmpvaW4oIHNlbGYuX19iYXNlX3Bh
dGhbLTFdLCBoZWFkZXJfcGF0aCApICkKKworCWRlZiBfX3Byb2Nlc3NfaW5jbHVkZV9kaXJlY3Rp
dmVzKCBzZWxmLCBoZWFkZXIgKToKKwkJcmV0dXJuIHJlLnN1YiggJ15cXHMqI2luY2x1ZGVcXHNc
XCIoP1A8SEVBREVSX1BBVEg+XFxTKilcXCInLCBzZWxmLl9fc3Vic3RpdHV0ZV9pbmNsdWRlX2Rp
cmVjdGl2ZSwgaGVhZGVyLCBmbGFncyA9IHJlLk1VTFRJTElORSApCisKKwlkZWYgX19wcm9jZXNz
X2ZvdW5kYXRpb25fZGlyZWN0aXZlcyggc2VsZiwgaGVhZGVyICk6CisJCWlmIGhlYWRlci5maW5k
KCIjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4iKSAhPSAtMToKKwkJCWxvZ2dp
bmcuaW5mbyggJ1x0U3Vic3RpdHV0aW5nIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPi4uLicg
KQorCQkJcmV0dXJuIGhlYWRlci5yZXBsYWNlKCIjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmhwcD4iLCBzZWxmLl9fcHJvY2Vzc19oZWFkZXIoIG9zLnBhdGguam9pbiggc2VsZi5fX2Jh
c2VfcGF0aFstMV0sICIuLi9Gb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwIiApICkgKQorCQlyZXR1
cm4gaGVhZGVyCisKKworCWRlZiBfX3Byb2Nlc3NfaGVhZGVyKCBzZWxmLCBoZWFkZXJfcGF0aCAp
OgorCQlvdXRfaGVhZGVyID0gJycJCQorCisJCWhlYWRlcl9wYXRoID0gb3MucGF0aC5yZWFscGF0
aCggaGVhZGVyX3BhdGggKQorCisJCWlmIG5vdCBoZWFkZXJfcGF0aCBpbiBzZWxmLl9faW5jbHVk
ZWRfaGVhZGVyczoKKwkJCWxvZ2dpbmcuaW5mbyggJ1Byb2Nlc3NpbmcgXCInICsgaGVhZGVyX3Bh
dGggKyAnXCIuLi4nICkKKworCQkJc2VsZi5fX2Jhc2VfcGF0aC5hcHBlbmQoIG9zLnBhdGguZGly
bmFtZSggaGVhZGVyX3BhdGggKSApCisJCQlzZWxmLl9faW5jbHVkZWRfaGVhZGVycy5hZGQoIGhl
YWRlcl9wYXRoICkKKwkJCQorCQkJb3V0X2hlYWRlciA9IHNlbGYuX19yZWFkX2hlYWRlciggaGVh
ZGVyX3BhdGggKQorCQkJb3V0X2hlYWRlciA9IHNlbGYuX19zdHJpcF9wcmFnbWFfb25jZSggb3V0
X2hlYWRlciApCisJCQlvdXRfaGVhZGVyID0gc2VsZi5fX3N0cmlwX2NvbW1lbnRzKCBvdXRfaGVh
ZGVyICkKKwkJCW91dF9oZWFkZXIgPSBzZWxmLl9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2ZXMo
IG91dF9oZWFkZXIgKQorCQkJb3V0X2hlYWRlciA9IHNlbGYuX19wcm9jZXNzX2ZvdW5kYXRpb25f
ZGlyZWN0aXZlcyggb3V0X2hlYWRlciApCisKKwkJCXNlbGYuX19iYXNlX3BhdGgucG9wKCkKKwkJ
ZWxzZToKKwkJCWxvZ2dpbmcuaW5mbyggJ1x0U2tpcHBpbmcgXCInICsgaGVhZGVyX3BhdGggKyAn
XCIuLi4nICkKKworCQlyZXR1cm4gb3V0X2hlYWRlcgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVmIGNyZWF0ZV9hcmd1bWVudF9wYXJzZXIoKToK
KwlwYXJzZXIgCQkJPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisJYmFzZV9wYXRoIAkJPSBv
cy5wYXRoLmRpcm5hbWUoIG9zLnBhdGgucmVhbHBhdGgoIF9fZmlsZV9fICkgKQorCW91dHB1dF9w
YXRoCQk9IG9zLnBhdGguam9pbiggYmFzZV9wYXRoLCAnTWV0YWwuaHBwJyApCisKKwlwYXJzZXIu
YWRkX2FyZ3VtZW50KCAnLW8nLCAnLS1vdXRwdXQnLCAgZGVzdCA9ICdvdXRwdXRfcGF0aCcsIG1l
dGF2YXIgPSAnUEFUSCcsIGRlZmF1bHQgPSBvdXRwdXRfcGF0aCwgaGVscCA9ICdPdXRwdXQgcGF0
aCBmb3IgdGhlIHNpbmdsZSBoZWFkZXIgZmlsZS4nICkKKwlwYXJzZXIuYWRkX2FyZ3VtZW50KCAn
LXYnLCAnLS12ZXJib3NlJywgYWN0aW9uID0gJ3N0b3JlX3RydWUnLCAgaGVscCA9ICdTaG93IHZl
cmJvc2Ugb3V0cHV0LicgKQorCXBhcnNlci5hZGRfYXJndW1lbnQoIGRlc3QgPSAnaGVhZGVyX3Bh
dGhzJywgbWV0YXZhciA9ICdIRUFERVJfRklMRScsIG5hcmdzPScrJywgaGVscCA9ICdJbnB1dCBo
ZWFkZXIgZmlsZS4nICkKKworCXJldHVybiBwYXJzZXIKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlZiBwYXJzZV9hcmd1bWVudHMoKToKKwlwYXJz
ZXIJPSBjcmVhdGVfYXJndW1lbnRfcGFyc2VyKCkKKwlhcmdzCT0gcGFyc2VyLnBhcnNlX2FyZ3Mo
KQorCisJaWYgYXJncy52ZXJib3NlOgorCQlsb2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKCBs
b2dnaW5nLklORk8gKQorCWVsc2U6CisJCWxvZ2dpbmcuZ2V0TG9nZ2VyKCkuc2V0TGV2ZWwoIGxv
Z2dpbmcuRVJST1IgKQorCisJcmV0dXJuIGFyZ3MKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlZiBtYWtlX2hlYWRlciggYXJncyApOgorCXByZWZp
eCA9IEhlYWRlclByZWZpeCggb3MucGF0aC5iYXNlbmFtZSggYXJncy5vdXRwdXRfcGF0aCApICkK
KwloZWFkZXIgPSBTaW5nbGVIZWFkZXIoKQorCQorCWZvciBoZWFkZXJfcGF0aCBpbiBhcmdzLmhl
YWRlcl9wYXRoczoKKwkJaGVhZGVyLmFwcGVuZCggaGVhZGVyX3BhdGggKQorCisJcmV0dXJuIHN0
ciggcHJlZml4ICkgKyBzdHIoIGhlYWRlciApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitkZWYgbWFrZV9kaXIoIHBhdGggKToKKwl0cnk6CisJCWlm
IG5vdCBvcy5wYXRoLmV4aXN0cyggcGF0aCApOgorCQkJb3MubWFrZWRpcnMoIHBhdGggKQorCWV4
Y2VwdCBvcy5lcnJvcjoKKwkJcGFzcworCWV4Y2VwdDoKKwkJcmFpc2UKKworIy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlZiB3cml0ZV9oZWFkZXIoIGFy
Z3MsIGNvbnRlbnQgKToKKwlwYXRoID0gb3MucGF0aC5yZWFscGF0aCggYXJncy5vdXRwdXRfcGF0
aCApCisKKwlsb2dnaW5nLmluZm8oICdXcml0aW5nIFwiJyArIHBhdGggKyAnXCIuLi4nICkKKwor
CW1ha2VfZGlyKCBvcy5wYXRoLmRpcm5hbWUoIHBhdGggKSApCisKKwl0cnk6CisJCWYgPSBvcGVu
KCBwYXRoLCAndycgKQorCWV4Y2VwdDoKKwkJcmFpc2UgUnVudGltZUVycm9yKCAnRmFpbGVkIHRv
IG9wZW4gZmlsZSBcIicgKyBwYXRoICsgJ1wiIGZvciB3cml0ZSEnICkKKworCWYud3JpdGUoIGNv
bnRlbnQgKQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKwlyZXN1bHQgPSAtMQorCQorCXRyeToKKwkJ
aWYgc3lzLmdldGRlZmF1bHRlbmNvZGluZygpLmxvd2VyKCkgPT0gJ2FzY2lpJzoKKwkJCXJlbG9h
ZCggc3lzICkKKwkJCXN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoICd1dGYtOCcgKQorCisJCWFyZ3Mg
CT0gcGFyc2VfYXJndW1lbnRzKCkKKwkJaGVhZGVyIAk9IG1ha2VfaGVhZGVyKCBhcmdzICkKKwor
CQl3cml0ZV9oZWFkZXIoIGFyZ3MsIGhlYWRlciApCisKKwkJcmVzdWx0ID0gMAorCisJZXhjZXB0
ICggS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQgKToKKwkgCXBhc3MKKwlleGNlcHQ6CisJ
IAlyYWlzZQorCisJc3lzLmV4aXQoIHJlc3VsdCApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGM1MGQyMTIyOTAzNDFjY2E3MThjNWI1YWM3YTIwMGRiNWQxZjhj
NGYuLmI5M2JmMzI5MjYwNjhjOWI5OGVjNDVjZGNhOGE4YzgzNzYzOWUwNDAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAyMi0wMi0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJHUFVdIEludGVncmF0ZSBNZXRhbC1jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY5NworCisgICAgICAgIFJldmlld2VkIGJ5
IERlYW4gSmFja3Nvbi4KKworICAgICAgICBNZXRhbC1jcHAgZmlsZXMgc2hvdWxkIG5vdCBiZSBz
dHlsZS1jaGVja2VkLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
LnB5OgorCiAyMDIyLTAyLTE3ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAg
ICAgICAgIEVuc3VyZSBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Om1vdmVEYXRhIHBlcmZvcm1zIG1v
dmUgb3BlcmF0aW9uIGJhc2VkIG9uIGRhdGEgdHlwZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlci5weQppbmRleCBkZDU1ZjgzOTI4NjBhYmZmZGY0NTk5MDZlMTIyZWZmNjZhMWMw
YzA1Li5hYjc4OWQ3MWM5YTExZWYwYjNiZDdhZDZiNjcyZDI3ZjI4ZTViYTMwIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC00MDIsNyArNDAyLDggQEAgX1NLSVBQ
RURfRklMRVNfV0lUSF9XQVJOSU5HID0gWwogICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dl
YktpdCcsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICd3cGUnLCAnd2Vi
a2l0LXdlYi1leHRlbnNpb24uaCcpLAogICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYktp
dCcsICdXZWJQcm9jZXNzJywgJ0luamVjdGVkQnVuZGxlJywgJ0FQSScsICd3cGUnLCAnRE9NJywg
J3dlYmtpdGRvbS5oJyksCiAgICAgb3MucGF0aC5qb2luKCdTb3VyY2UnLCAnV2ViR1BVJywgJ1dl
YkdQVScsICdXZWJHUFUuaCcpLAotICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkdQVScs
ICdXZWJHUFUnLCAnV2ViR1BVRXh0LmgnKV0KKyAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdX
ZWJHUFUnLCAnV2ViR1BVJywgJ1dlYkdQVUV4dC5oJyksCisgICAgb3MucGF0aC5qb2luKCdTb3Vy
Y2UnLCAnV2ViR1BVJywgJ1dlYkdQVScsICdtZXRhbC1jcHAnLCAnU2luZ2xlSGVhZGVyJywgJ01h
a2VTaW5nbGVIZWFkZXIucHknKV0KIAogIyBGaWxlcyB0byBza2lwIHRoYXQgYXJlIG1vcmUgY29t
bW9uIG9yIG9idmlvdXMuCiAjCg==
</data>
<flag name="commit-queue"
          id="479505"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452475</attachid>
            <date>2022-02-17 20:06:43 -0800</date>
            <delta_ts>2022-05-02 00:17:24 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-236697-20220217200642.patch</filename>
            <type>text/plain</type>
            <size>982767</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDljOWY1YTI2YjJmNjhhYWY2
ODM5MjkwY2U3YTcxYTRlYjJmNGI4MzkuLmFmMGE5OGExZjRmMmU2MmY4MTM0NTM0NTUyOGY3NDkx
YjgwZTM3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDIyLTAyLTE3ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW50
ZWdyYXRlIE1ldGFsLWNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2Njk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisg
ICAgICAgIE1ldGFsLWNwcCBpcyBhIGxvdy1vdmVyaGVhZCBDKysgaW50ZXJmYWNlIGZvciBNZXRh
bC4KKyAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL21ldGFsL2NwcC8KKworICAg
ICAgICBNZXRhbC1jcHAgaXNuJ3QgYSBsaWJyYXJ5IHBlci1zZSwgYnV0IGlzIGluc3RlYWQganVz
dCBhIGNvbGxlY3Rpb24gb2YgZmlsZXMgd2hpY2ggdXNlcnMKKyAgICAgICAgYXJlIHN1cHBvc2Vk
IHRvIGp1c3QgY29weSBpbnRvIHRoZWlyIHByb2plY3QuIFRoaXMgZG9lcyBqdXN0IHRoYXQsIGFu
ZCBob29rcyB1cCBhbGwgdGhlCisgICAgICAgIG5lY2Vzc2FyeSBmbGFncyBhbmQgcGF0aHMgYW5k
IGV2ZXJ5dGhpbmcuCisKKyAgICAgICAgVGhpcyB1c2VzIHRoZSAic2luZ2xlIGhlYWRlciBhbHRl
cm5hdGl2ZSIgZGVzY3JpYmVkIG9uIHRoYXQgd2VicGFnZSwgYW5kIGNyZWF0ZXMgdGhlCisgICAg
ICAgIHNpbmdsZSBmaWxlIGFzIGEgYnVpbGQgc3RlcC4KKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL1dlYkdQVS54Y2NvbmZpZzoKKyAgICAgICAgKiBXZWJHUFUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJHUFUvTWV0YWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJHUFUvY29uZmlnLmg6CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNBcnJheS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvRm91bmRhdGlvbi9OU0J1bmRsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGEuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcDogQWRk
ZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90aWZpY2F0aW9u
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTnVt
YmVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
T2JqQ1J1bnRpbWUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNPYmplY3QuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNQcml2YXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TUHJvY2Vzc0luZm8uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1N0cmluZy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1R5cGVzLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVVJMLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9MSUNFTlNFLnR4dDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1h
bmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50RW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAg
ICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmluYXJ5QXJjaGl2ZS5ocHA6IEFkZGVkLgor
ICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFzcy5o
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlTWFu
YWdlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2Fw
dHVyZVNjb3BlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExDb21tYW5kQnVmZmVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQ29tbWFuZFF1ZXVlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBw
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvdW50ZXJzLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5j
aWwuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERldmlj
ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHJhd2Fi
bGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFt
aWNMaWJyYXJ5LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExFdmVudC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RmVuY2UuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1
bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcDogQWRkZWQuCisg
ICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvblN0aXRjaGluZy5ocHA6
IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJpZGdl
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFwLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVjdENv
bW1hbmRCdWZmZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpYnJhcnkuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHA6
IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUGlwZWxpbmUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFBpeGVsRm9ybWF0LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExQcml2YXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBhc3MuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZS5o
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFzcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMU2FtcGxlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFRleHR1cmUuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNpYmxlRnVu
Y3Rpb25UYWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TWV0YWwuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUv
Q0FEZWZpbmVzLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9RdWFydHpD
b3JlL0NBTWV0YWxEcmF3YWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1j
cHAvUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0
YWwtY3BwL1F1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvUkVBRE1FLm1kOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3Bw
L1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEhlYWRl
clByZWZpeCk6CisgICAgICAgIChIZWFkZXJQcmVmaXguX19pbml0X18pOgorICAgICAgICAoSGVh
ZGVyUHJlZml4Ll9fc3RyX18pOgorICAgICAgICAoSGVhZGVyUHJlZml4Ll9fZ2V0X2NvbW1pdF9o
YXNoKToKKyAgICAgICAgKEhlYWRlclByZWZpeC5fX2dldF9jb21taXRfc3RyaW5nKToKKyAgICAg
ICAgKEhlYWRlclByZWZpeC5fX2dldF9kYXRlX3N0cmluZyk6CisgICAgICAgIChfX21ldGFfZGF0
YV9zdHJpbmcpOgorICAgICAgICAoU2luZ2xlSGVhZGVyKToKKyAgICAgICAgKFNpbmdsZUhlYWRl
ci5fX2luaXRfXyk6CisgICAgICAgIChTaW5nbGVIZWFkZXIuX19zdHJfXyk6CisgICAgICAgIChT
aW5nbGVIZWFkZXIuYXBwZW5kKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5wcm9jZXNzKToKKyAg
ICAgICAgKFNpbmdsZUhlYWRlci5fX3JlYWRfaGVhZGVyKToKKyAgICAgICAgKFNpbmdsZUhlYWRl
ci5fX3N0cmlwX3ByYWdtYV9vbmNlKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX2Nv
bW1lbnRzKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX2VtcHR5X2xpbmVzKToKKyAg
ICAgICAgKFNpbmdsZUhlYWRlci5fX3N1YnN0aXR1dGVfaW5jbHVkZV9kaXJlY3RpdmUpOgorICAg
ICAgICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2ZXMpOgorICAgICAg
ICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19mb3VuZGF0aW9uX2RpcmVjdGl2ZXMpOgorICAgICAg
ICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19oZWFkZXIpOgorICAgICAgICAoY3JlYXRlX2FyZ3Vt
ZW50X3BhcnNlcik6CisgICAgICAgIChwYXJzZV9hcmd1bWVudHMpOgorICAgICAgICAobWFrZV9o
ZWFkZXIpOgorICAgICAgICAobWFrZV9kaXIpOgorICAgICAgICAod3JpdGVfaGVhZGVyKToKKwog
MjAyMi0wMi0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWJHUFVdIEFkZCBhIHBsYXlncm91bmQgZXhhbXBsZSB0YXJnZXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnIGIvU291cmNl
L1dlYkdQVS9Db25maWd1cmF0aW9ucy9XZWJHUFUueGNjb25maWcKaW5kZXggZDQ1NTllZTk4YjI2
NDFiNTdlZDNiMDZlZjNjZTI2YjZiMjNkY2NiYy4uNjNlZDZkOGMyZDcyMzQ2MmQ4NTY3NWYwYWUz
MTdiM2JiZjc1Y2E5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9X
ZWJHUFUueGNjb25maWcKKysrIGIvU291cmNlL1dlYkdQVS9Db25maWd1cmF0aW9ucy9XZWJHUFUu
eGNjb25maWcKQEAgLTIzLDcgKzIzLDEwIEBACiAKICNpbmNsdWRlICJWZXJzaW9uLnhjY29uZmln
IgogCitXQVJOSU5HX0NGTEFHUyA9IC1XYWxsIC1XZXh0cmEgLVdjYXN0LXF1YWwgLVdjaGFyLXN1
YnNjcmlwdHMgLVdjb25kaXRpb25hbC11bmluaXRpYWxpemVkIC1XZXh0cmEtdG9rZW5zIC1XZm9y
bWF0PTIgLVdpbml0LXNlbGYgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5v
cmV0dXJuIC1XcG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3dyaXRlLXN0cmluZ3Mg
LVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMgLVd0YXV0b2xvZ2ljYWwtY29tcGFyZSAtV2ltcGxpY2l0
LWZhbGx0aHJvdWdoIC1XdmxhIC1XbGl0ZXJhbC1jb252ZXJzaW9uIC1XdGhyZWFkLXNhZmV0eSAt
V25vLXR5cGVkZWYtcmVkZWZpbml0aW9uIC1Xbm8taWdub3JlZC1xdWFsaWZpZXJzOworCiBIRUFE
RVJfU0VBUkNIX1BBVEhTID0gIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVk
ZSIgJChpbmhlcml0ZWQpOworU1lTVEVNX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViR1BVL21ldGFsLWNwcCAkKGluaGVyaXRlZCk7
CiAKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKIApAQCAtNjksMyArNzIsOSBAQCBNT0RV
TEVNQVBfRklMRSA9IFdlYkdQVS9XZWJHUFUubW9kdWxlbWFwOwogCiBTVVBQT1JUU19URVhUX0JB
U0VEX0FQSSA9IFlFUzsKIFRBUElfVkVSSUZZX01PREUgPSBQZWRhbnRpYzsKKworT1RIRVJfTERG
TEFHUyA9ICQoaW5oZXJpdGVkKSAtWGxpbmtlciAtbm9fd2Fybl9pbml0czsKKworSEVBREVSTUFQ
X0lOQ0xVREVTX1BST0pFQ1RfSEVBREVSUyA9IE5POworCitFWENMVURFRF9TT1VSQ0VfRklMRV9O
QU1FU1thcmNoPWFybXY3a10gPSAqOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzA0N2NjNjkxM2ZhYzRhNmUzNjE1ZjNlNTg0YTBiMzZj
NDgxM2E5MS4uNjZmZDQ4YWQ0ZTE1YTg2MzQ1NmM5M2I3MzA5ZjE1YTNjMzNlZGNiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zLDcg
KzMsNyBAQAogCWFyY2hpdmVWZXJzaW9uID0gMTsKIAljbGFzc2VzID0gewogCX07Ci0Jb2JqZWN0
VmVyc2lvbiA9IDU1OworCW9iamVjdFZlcnNpb24gPSA1MTsKIAlvYmplY3RzID0gewogCiAvKiBC
ZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwpAQCAtMTMsNiArMTMsNyBAQAogCQkxQzJDRURF
RTI3MUU4QTczMDBFREMxNkYgLyogTWV0YWwuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyQ0VERUQyNzFFOEE3MzAwRURDMTZGIC8q
IE1ldGFsLmZyYW1ld29yayAqLzsgfTsKIAkJMUM1MzE5QzAyN0JEQzZDQzAwQ0QxMjdFIC8qIG1h
aW4uc3dpZnQgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QzUzMTlCRjI3QkRDNkNDMDBDRDEyN0UgLyogbWFpbi5zd2lmdCAqLzsgfTsKIAkJMUM1MzE5QzUy
N0JEQzcyNzAwQ0QxMjdFIC8qIFdlYkdQVS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0VCRDdFMzI3MTZBRkJBMDBBNTI1NEQgLyog
V2ViR1BVLmZyYW1ld29yayAqLzsgfTsKKwkJMUM1MzFBMjUyN0JEREY1NTAwQ0QxMjdFIC8qIE1l
dGFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
NTMxQTI0MjdCRERGNTUwMENEMTI3RSAvKiBNZXRhbC5jcHAgKi87IH07CiAJCTFDNUFDQTk0Mjcz
QTQxQzIwMDk1RjhENSAvKiBJbnN0YW5jZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUFDQTkyMjczQTQxQzIwMDk1RjhENSAvKiBJbnN0YW5jZS5t
bSAqLzsgfTsKIAkJMUM1QUNBQjYyNzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBpcGVsaW5lLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBOTgy
NzNBNDI2RDAwOTVGOEQ1IC8qIFJlbmRlclBpcGVsaW5lLm1tICovOyB9OwogCQkxQzVBQ0FCQjI3
M0E0MjZEMDA5NUY4RDUgLyogQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUM1QUNBOUQyNzNBNDI2RDAwOTVGOEQ1IC8qIEJ1ZmZlci5tbSAq
LzsgfTsKQEAgLTk1LDYgKzk2LDkxIEBACiAJCTFDNTMxOUJEMjdCREM2Q0IwMENEMTI3RSAvKiBD
b21tYW5kTGluZVBsYXlncm91bmQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IENvbW1hbmRMaW5lUGxheWdyb3VuZDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJMUM1MzE5QkYyN0JEQzZDQzAwQ0QxMjdFIC8qIG1haW4uc3dpZnQg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLnN3aWZ0OyBwYXRoID0gbWFpbi5zd2lmdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM1MzE5Q0EyN0JERDcwMDAwQ0QxMjdFIC8qIENvbW1hbmRMaW5lUGxheWdyb3VuZC54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBDb21tYW5kTGluZVBsYXlncm91bmQueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUNEMjdCRERENkUwMENEMTI3RSAvKiBNVExU
eXBlcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMVHlwZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzUzMTlDRTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2VTdGF0
ZUNvbW1hbmRFbmNvZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExSZXNvdXJjZVN0YXRlQ29t
bWFuZEVuY29kZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlDRjI3
QkRERDZFMDBDRDEyN0UgLyogTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBwYXRoID0gTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNTMxOUQwMjdCRERENkUwMENEMTI3RSAvKiBNVExDb21wdXRlUGlwZWxp
bmUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTENvbXB1dGVQaXBlbGluZS5ocHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQxMjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5j
dGlvbkhhbmRsZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRnVuY3Rpb25IYW5kbGUuaHBwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEMjI3QkRERDZFMDBDRDEyN0UgLyog
TVRMRHJhd2FibGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTERyYXdhYmxlLmhwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTER5
bmFtaWNMaWJyYXJ5LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExEeW5hbWljTGlicmFyeS5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQ0MjdCRERENkUwMENEMTI3RSAv
KiBNVExDb21wdXRlUGFzcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ29tcHV0ZVBhc3MuaHBw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlENTI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRnVu
Y3Rpb25Db25zdGFudFZhbHVlcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NTMxOUQ2MjdCRERENkUwMENEMTI3RSAvKiBNVExQaXBlbGluZS5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTVRMUGlwZWxpbmUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlE
NzI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
aDsgcGF0aCA9IE1UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1MzE5RDgyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEJsaXRDb21tYW5kRW5j
b2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TENhcHR1cmVNYW5hZ2VyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDYXB0dXJlTWFuYWdlci5o
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOURBMjdCRERENkUwMENEMTI3
RSAvKiBNVExDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ29tbWFuZEVu
Y29kZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEQjI3QkRERDZF
MDBDRDEyN0UgLyogTWV0YWwuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1ldGFsLmhwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5REMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFN0
YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExTdGFnZUlu
cHV0T3V0cHV0RGVzY3JpcHRvci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NTMxOUREMjdCRERENkUwMENEMTI3RSAvKiBNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlERTI3QkRERDZFMDBDRDEyN0UgLyog
TVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRM
UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDNTMxOURGMjdCRERENkUwMENEMTI3RSAvKiBNVExSYXN0ZXJpemF0aW9uUmF0ZS5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFMDI3QkRERDZFMDBDRDEyN0UgLyogTVRMTGlua2Vk
RnVuY3Rpb25zLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExMaW5rZWRGdW5jdGlvbnMuaHBwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFMTI3QkRERDZFMDBDRDEyN0UgLyog
TVRMVGV4dHVyZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMVGV4dHVyZS5ocHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUUyMjdCRERENkUwMENEMTI3RSAvKiBNVExTYW1w
bGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExTYW1wbGVyLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTERlcHRoU3RlbmNp
bC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRGVwdGhTdGVuY2lsLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFyZ3VtZW50
RW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQXJndW1lbnRFbmNvZGVyLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzUzMTlFNjI3QkRERDZFMDBDRDEyN0UgLyogTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTcyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFByaXZhdGUu
aHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFByaXZhdGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzUzMTlFODI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2UuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE1UTFJlc291cmNlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzE5RTkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVy
ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RUEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TERldmljZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRGV2aWNlLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RUIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFyZ3VtZW50
LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExBcmd1bWVudC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFDNTMxOUVDMjdCRERENkUwMENEMTI3RSAvKiBNVExGdW5jdGlvbkxvZy5o
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRnVuY3Rpb25Mb2cuaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzUzMTlFRDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQnVmZmVyLmhwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmg7IHBhdGggPSBNVExCdWZmZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMTlFRTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVuZGVyUGFzcy5ocHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5oOyBwYXRoID0gTVRMUmVuZGVyUGFzcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNTMxOUVGMjdCRERENkUwMENEMTI3RSAvKiBNVExIZWFwLmhwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBh
dGggPSBNVExIZWFwLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjAy
N0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFZlcnRleERlc2NyaXB0b3IuaHBwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0
aCA9IE1UTFZlcnRleERlc2NyaXB0b3IuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzUzMTlGMTI3QkRERDZFMDBDRDEyN0UgLyogTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE1UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTExpYnJhcnkuaHBw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuaDsgcGF0aCA9IE1UTExpYnJhcnkuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzUzMTlGMzI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGl4ZWxGb3JtYXQuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE1UTFBpeGVsRm9ybWF0LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MzE5RjQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZlbmNlLmhwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lmg7IHBhdGggPSBNVExGZW5jZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NTMxOUY1MjdCRERENkUwMENEMTI3RSAvKiBNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUY2MjdCRERENkUwMENEMTI3RSAvKiBNVExSZW5kZXJQ
aXBlbGluZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmVuZGVyUGlwZWxpbmUuaHBwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGNzI3QkRERDZFMDBDRDEyN0UgLyogTVRM
Q29tbWFuZFF1ZXVlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDb21tYW5kUXVldWUuaHBwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGODI3QkRERDZFMDBDRDEyN0UgLyog
TVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExGdW5jdGlvbkRl
c2NyaXB0b3IuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGOTI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuaDsgcGF0aCA9IE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVy
LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RkEyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1UTEJsaXRQYXNzLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExCbGl0UGFzcy5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZCMjdCRERENkUwMENEMTI3RSAv
KiBNVExFdmVudC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRXZlbnQuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGQzI3QkRERDZFMDBDRDEyN0UgLyogTVRMQmluYXJ5
QXJjaGl2ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQmluYXJ5QXJjaGl2ZS5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZEMjdCRERENkUwMENEMTI3RSAvKiBNVExD
YXB0dXJlU2NvcGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTENhcHR1cmVTY29wZS5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZFMjdCRERENkUwMENEMTI3RSAvKiBN
VExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTENvbXB1dGVD
b21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZG
MjdCRERENkUwMENEMTI3RSAvKiBNVExIZWFkZXJCcmlkZ2UuaHBwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9
IE1UTEhlYWRlckJyaWRnZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMx
QTAwMjdCRERENkUwMENEMTI3RSAvKiBNVExDb3VudGVycy5ocHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0g
TVRMQ291bnRlcnMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwMTI3
QkRERDZFMDBDRDEyN0UgLyogTVRMRGVmaW5lcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRGVm
aW5lcy5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTAyMjdCRERENkUw
MENEMTI3RSAvKiBNVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRM
UmVzb3VyY2VTdGF0ZVBhc3MuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
MUEwMzI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ29tbWFuZEJ1ZmZlci5ocHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBw
YXRoID0gTVRMQ29tbWFuZEJ1ZmZlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNTMxQTA1MjdCRERENkUwMENEMTI3RSAvKiBOU1N0cmluZy5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTlNTdHJpbmcuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwNjI3
QkRERDZFMDBDRDEyN0UgLyogTlNEaWN0aW9uYXJ5LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0Rp
Y3Rpb25hcnkuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwNzI3QkRE
RDZFMDBDRDEyN0UgLyogTlNMb2NrLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0xvY2suaHBwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwODI3QkRERDZFMDBDRDEyN0UgLyog
TlNQcm9jZXNzSW5mby5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNQcm9jZXNzSW5mby5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTA5MjdCRERENkUwMENEMTI3RSAvKiBO
U0Vycm9yLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0Vycm9yLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMEEyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TT2JqQ1J1bnRpbWUu
aHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TT2JqQ1J1bnRpbWUuaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzUzMUEwQjI3QkRERDZFMDBDRDEyN0UgLyogTlNPYmplY3QuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE5TT2JqZWN0LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1MzFBMEMyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TTm90aWZpY2F0aW9uLmhwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lmg7IHBhdGggPSBOU05vdGlmaWNhdGlvbi5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNTMxQTBEMjdCRERENkUwMENEMTI3RSAvKiBOU1ByaXZhdGUuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE5TUHJpdmF0ZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMx
QTBFMjdCRERENkUwMENEMTI3RSAvKiBOU1VSTC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNVUkwu
aHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwRjI3QkRERDZFMDBDRDEy
N0UgLyogTlNBdXRvcmVsZWFzZVBvb2wuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TQXV0b3JlbGVh
c2VQb29sLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMTAyN0JEREQ2
RTAwQ0QxMjdFIC8qIE5TUmFuZ2UuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TUmFuZ2UuaHBwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExMTI3QkRERDZFMDBDRDEyN0UgLyog
TlNUeXBlcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNUeXBlcy5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTMxQTEyMjdCRERENkUwMENEMTI3RSAvKiBOU0RhdGEuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE5TRGF0YS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTFDNTMxQTEzMjdCRERENkUwMENEMTI3RSAvKiBOU051bWJlci5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTlNOdW1iZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExNDI3
QkRERDZFMDBDRDEyN0UgLyogRm91bmRhdGlvbi5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gRm91bmRh
dGlvbi5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTE1MjdCRERENkUw
MENEMTI3RSAvKiBOU0RhdGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TRGF0ZS5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTE2MjdCRERENkUwMENEMTI3RSAvKiBOU0Rl
ZmluZXMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TRGVmaW5lcy5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTMxQTE3MjdCRERENkUwMENEMTI3RSAvKiBOU0J1bmRsZS5ocHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5oOyBwYXRoID0gTlNCdW5kbGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMUExODI3QkRERDZFMDBDRDEyN0UgLyogTlNFbnVtZXJhdG9yLmhwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lmg7IHBhdGggPSBOU0VudW1lcmF0b3IuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzUzMUExOTI3QkRERDZFMDBDRDEyN0UgLyogTlNBcnJheS5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTlNBcnJheS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFBMjdC
RERENkUwMENEMTI3RSAvKiBSRUFETUUubWQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBuZXQuZGFyaW5nZmlyZWJhbGwubWFya2Rvd247IHBhdGggPSBS
RUFETUUubWQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFDMjdCRERENkUw
MENEMTI3RSAvKiBRdWFydHpDb3JlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBRdWFydHpDb3JlLmhw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMUQyN0JEREQ2RTAwQ0QxMjdF
IC8qIENBUHJpdmF0ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gQ0FQcml2YXRlLmhwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMUUyN0JEREQ2RTAwQ0QxMjdFIC8qIENBTWV0
YWxEcmF3YWJsZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gQ0FNZXRhbERyYXdhYmxlLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMUYyN0JEREQ2RTAwQ0QxMjdFIC8qIENB
RGVmaW5lcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gQ0FEZWZpbmVzLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMjAyN0JEREQ2RTAwQ0QxMjdFIC8qIExJQ0VOU0UudHh0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IExJQ0VOU0UudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEy
MjI3QkRERDZFMDBDRDEyN0UgLyogTWFrZVNpbmdsZUhlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0
aCA9IE1ha2VTaW5nbGVIZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NTMxQTI0MjdCRERGNTUwMENEMTI3RSAvKiBNZXRhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZXRhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTJBMjdCREUwNjcw
MENEMTI3RSAvKiBNZXRhbC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTWV0YWwuaHBwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQzVBQ0E5MjI3M0E0MUMyMDA5NUY4RDUgLyogSW5zdGFu
Y2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbnN0YW5jZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM1QUNBOTYyNzNBNDI2RDAwOTVGOEQ1IC8qIFN1cmZhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzVBQ0E5NzI3M0E0MjZEMDA5NUY4RDUgLyogU3dhcENoYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjI1LDYgKzMxMSwxNTMgQEAKIAkJCXBhdGggPSBDb21tYW5kTGlu
ZVBsYXlncm91bmQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkxQzUzMTlD
QjI3QkRERDZFMDBDRDEyN0UgLyogbWV0YWwtY3BwICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEwNDI3QkRERDZFMDBDRDEyN0UgLyogRm91bmRh
dGlvbiAqLywKKwkJCQkxQzUzMTlDQzI3QkRERDZFMDBDRDEyN0UgLyogTWV0YWwgKi8sCisJCQkJ
MUM1MzFBMUIyN0JEREQ2RTAwQ0QxMjdFIC8qIFF1YXJ0ekNvcmUgKi8sCisJCQkJMUM1MzFBMjEy
N0JEREQ2RTAwQ0QxMjdFIC8qIFNpbmdsZUhlYWRlciAqLywKKwkJCQkxQzUzMUEyMDI3QkRERDZF
MDBDRDEyN0UgLyogTElDRU5TRS50eHQgKi8sCisJCQkJMUM1MzFBMUEyN0JEREQ2RTAwQ0QxMjdF
IC8qIFJFQURNRS5tZCAqLywKKwkJCSk7CisJCQlwYXRoID0gIm1ldGFsLWNwcCI7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzUzMTlDQzI3QkRERDZFMDBDRDEyN0UgLyog
TWV0YWwgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFD
NTMxOURCMjdCRERENkUwMENEMTI3RSAvKiBNZXRhbC5ocHAgKi8sCisJCQkJMUM1MzE5RTkyN0JE
REQ2RTAwQ0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAgKi8sCisJCQkJMUM1
MzE5RjkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRF
bmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlERDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQWNjZWxl
cmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwICovLAorCQkJCTFDNTMxOUVCMjdCRERENkUwMENEMTI3
RSAvKiBNVExBcmd1bWVudC5ocHAgKi8sCisJCQkJMUM1MzE5RTQyN0JEREQ2RTAwQ0QxMjdFIC8q
IE1UTEFyZ3VtZW50RW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5RkMyN0JEREQ2RTAwQ0QxMjdF
IC8qIE1UTEJpbmFyeUFyY2hpdmUuaHBwICovLAorCQkJCTFDNTMxOUQ4MjdCRERENkUwMENEMTI3
RSAvKiBNVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwICovLAorCQkJCTFDNTMxOUZBMjdCRERENkUw
MENEMTI3RSAvKiBNVExCbGl0UGFzcy5ocHAgKi8sCisJCQkJMUM1MzE5RUQyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1UTEJ1ZmZlci5ocHAgKi8sCisJCQkJMUM1MzE5RDkyN0JEREQ2RTAwQ0QxMjdFIC8q
IE1UTENhcHR1cmVNYW5hZ2VyLmhwcCAqLywKKwkJCQkxQzUzMTlGRDI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMQ2FwdHVyZVNjb3BlLmhwcCAqLywKKwkJCQkxQzUzMUEwMzI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMQ29tbWFuZEJ1ZmZlci5ocHAgKi8sCisJCQkJMUM1MzE5REEyN0JEREQ2RTAwQ0QxMjdF
IC8qIE1UTENvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlGNzI3QkRERDZFMDBDRDEy
N0UgLyogTVRMQ29tbWFuZFF1ZXVlLmhwcCAqLywKKwkJCQkxQzUzMTlGRTI3QkRERDZFMDBDRDEy
N0UgLyogTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlENDI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMQ29tcHV0ZVBhc3MuaHBwICovLAorCQkJCTFDNTMxOUQwMjdCRERE
NkUwMENEMTI3RSAvKiBNVExDb21wdXRlUGlwZWxpbmUuaHBwICovLAorCQkJCTFDNTMxQTAwMjdC
RERENkUwMENEMTI3RSAvKiBNVExDb3VudGVycy5ocHAgKi8sCisJCQkJMUM1MzFBMDEyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTERlZmluZXMuaHBwICovLAorCQkJCTFDNTMxOUUzMjdCRERENkUwMENE
MTI3RSAvKiBNVExEZXB0aFN0ZW5jaWwuaHBwICovLAorCQkJCTFDNTMxOUVBMjdCRERENkUwMENE
MTI3RSAvKiBNVExEZXZpY2UuaHBwICovLAorCQkJCTFDNTMxOUQyMjdCRERENkUwMENEMTI3RSAv
KiBNVExEcmF3YWJsZS5ocHAgKi8sCisJCQkJMUM1MzE5RDMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TER5bmFtaWNMaWJyYXJ5LmhwcCAqLywKKwkJCQkxQzUzMTlGQjI3QkRERDZFMDBDRDEyN0UgLyog
TVRMRXZlbnQuaHBwICovLAorCQkJCTFDNTMxOUY0MjdCRERENkUwMENEMTI3RSAvKiBNVExGZW5j
ZS5ocHAgKi8sCisJCQkJMUM1MzE5RDUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uQ29u
c3RhbnRWYWx1ZXMuaHBwICovLAorCQkJCTFDNTMxOUY4MjdCRERENkUwMENEMTI3RSAvKiBNVExG
dW5jdGlvbkRlc2NyaXB0b3IuaHBwICovLAorCQkJCTFDNTMxOUQxMjdCRERENkUwMENEMTI3RSAv
KiBNVExGdW5jdGlvbkhhbmRsZS5ocHAgKi8sCisJCQkJMUM1MzE5RUMyN0JEREQ2RTAwQ0QxMjdF
IC8qIE1UTEZ1bmN0aW9uTG9nLmhwcCAqLywKKwkJCQkxQzUzMTlGMTI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwICovLAorCQkJCTFDNTMxOUZGMjdCRERENkUwMENE
MTI3RSAvKiBNVExIZWFkZXJCcmlkZ2UuaHBwICovLAorCQkJCTFDNTMxOUVGMjdCRERENkUwMENE
MTI3RSAvKiBNVExIZWFwLmhwcCAqLywKKwkJCQkxQzUzMTlGNTI3QkRERDZFMDBDRDEyN0UgLyog
TVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcCAqLywKKwkJCQkxQzUzMTlDRjI3QkRERDZFMDBD
RDEyN0UgLyogTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5RTUy
N0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwICovLAor
CQkJCTFDNTMxOUYyMjdCRERENkUwMENEMTI3RSAvKiBNVExMaWJyYXJ5LmhwcCAqLywKKwkJCQkx
QzUzMTlFMDI3QkRERDZFMDBDRDEyN0UgLyogTVRMTGlua2VkRnVuY3Rpb25zLmhwcCAqLywKKwkJ
CQkxQzUzMTlERTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5j
b2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5RDYyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFBpcGVsaW5l
LmhwcCAqLywKKwkJCQkxQzUzMTlGMzI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGl4ZWxGb3JtYXQu
aHBwICovLAorCQkJCTFDNTMxOUU3MjdCRERENkUwMENEMTI3RSAvKiBNVExQcml2YXRlLmhwcCAq
LywKKwkJCQkxQzUzMTlERjI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmFzdGVyaXphdGlvblJhdGUu
aHBwICovLAorCQkJCTFDNTMxOUQ3MjdCRERENkUwMENEMTI3RSAvKiBNVExSZW5kZXJDb21tYW5k
RW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5RUUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlbmRl
clBhc3MuaHBwICovLAorCQkJCTFDNTMxOUY2MjdCRERENkUwMENEMTI3RSAvKiBNVExSZW5kZXJQ
aXBlbGluZS5ocHAgKi8sCisJCQkJMUM1MzE5RTgyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlc291
cmNlLmhwcCAqLywKKwkJCQkxQzUzMTlDRTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMUEwMjI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwICovLAorCQkJCTFDNTMxOUUyMjdCRERENkUwMENE
MTI3RSAvKiBNVExTYW1wbGVyLmhwcCAqLywKKwkJCQkxQzUzMTlEQzI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwICovLAorCQkJCTFDNTMxOUUxMjdC
RERENkUwMENEMTI3RSAvKiBNVExUZXh0dXJlLmhwcCAqLywKKwkJCQkxQzUzMTlDRDI3QkRERDZF
MDBDRDEyN0UgLyogTVRMVHlwZXMuaHBwICovLAorCQkJCTFDNTMxOUYwMjdCRERENkUwMENEMTI3
RSAvKiBNVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCAqLywKKwkJCQkxQzUzMTlFNjI3QkRERDZFMDBD
RDEyN0UgLyogTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwICovLAorCQkJKTsKKwkJCXBhdGgg
PSBNZXRhbDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDNTMxQTA0MjdC
RERENkUwMENEMTI3RSAvKiBGb3VuZGF0aW9uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUExNDI3QkRERDZFMDBDRDEyN0UgLyogRm91bmRhdGlv
bi5ocHAgKi8sCisJCQkJMUM1MzFBMTkyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TQXJyYXkuaHBwICov
LAorCQkJCTFDNTMxQTBGMjdCRERENkUwMENEMTI3RSAvKiBOU0F1dG9yZWxlYXNlUG9vbC5ocHAg
Ki8sCisJCQkJMUM1MzFBMTcyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TQnVuZGxlLmhwcCAqLywKKwkJ
CQkxQzUzMUExMjI3QkRERDZFMDBDRDEyN0UgLyogTlNEYXRhLmhwcCAqLywKKwkJCQkxQzUzMUEx
NTI3QkRERDZFMDBDRDEyN0UgLyogTlNEYXRlLmhwcCAqLywKKwkJCQkxQzUzMUExNjI3QkRERDZF
MDBDRDEyN0UgLyogTlNEZWZpbmVzLmhwcCAqLywKKwkJCQkxQzUzMUEwNjI3QkRERDZFMDBDRDEy
N0UgLyogTlNEaWN0aW9uYXJ5LmhwcCAqLywKKwkJCQkxQzUzMUExODI3QkRERDZFMDBDRDEyN0Ug
LyogTlNFbnVtZXJhdG9yLmhwcCAqLywKKwkJCQkxQzUzMUEwOTI3QkRERDZFMDBDRDEyN0UgLyog
TlNFcnJvci5ocHAgKi8sCisJCQkJMUM1MzFBMDcyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TTG9jay5o
cHAgKi8sCisJCQkJMUM1MzFBMEMyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TTm90aWZpY2F0aW9uLmhw
cCAqLywKKwkJCQkxQzUzMUExMzI3QkRERDZFMDBDRDEyN0UgLyogTlNOdW1iZXIuaHBwICovLAor
CQkJCTFDNTMxQTBBMjdCRERENkUwMENEMTI3RSAvKiBOU09iakNSdW50aW1lLmhwcCAqLywKKwkJ
CQkxQzUzMUEwQjI3QkRERDZFMDBDRDEyN0UgLyogTlNPYmplY3QuaHBwICovLAorCQkJCTFDNTMx
QTBEMjdCRERENkUwMENEMTI3RSAvKiBOU1ByaXZhdGUuaHBwICovLAorCQkJCTFDNTMxQTA4MjdC
RERENkUwMENEMTI3RSAvKiBOU1Byb2Nlc3NJbmZvLmhwcCAqLywKKwkJCQkxQzUzMUExMDI3QkRE
RDZFMDBDRDEyN0UgLyogTlNSYW5nZS5ocHAgKi8sCisJCQkJMUM1MzFBMDUyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE5TU3RyaW5nLmhwcCAqLywKKwkJCQkxQzUzMUExMTI3QkRERDZFMDBDRDEyN0UgLyog
TlNUeXBlcy5ocHAgKi8sCisJCQkJMUM1MzFBMEUyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TVVJMLmhw
cCAqLywKKwkJCSk7CisJCQlwYXRoID0gRm91bmRhdGlvbjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCTFDNTMxQTFCMjdCRERENkUwMENEMTI3RSAvKiBRdWFydHpDb3JlICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUExRjI3
QkRERDZFMDBDRDEyN0UgLyogQ0FEZWZpbmVzLmhwcCAqLywKKwkJCQkxQzUzMUExRTI3QkRERDZF
MDBDRDEyN0UgLyogQ0FNZXRhbERyYXdhYmxlLmhwcCAqLywKKwkJCQkxQzUzMUExRDI3QkRERDZF
MDBDRDEyN0UgLyogQ0FQcml2YXRlLmhwcCAqLywKKwkJCQkxQzUzMUExQzI3QkRERDZFMDBDRDEy
N0UgLyogUXVhcnR6Q29yZS5ocHAgKi8sCisJCQkpOworCQkJcGF0aCA9IFF1YXJ0ekNvcmU7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzUzMUEyMTI3QkRERDZFMDBDRDEy
N0UgLyogU2luZ2xlSGVhZGVyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQkxQzUzMUEyMjI3QkRERDZFMDBDRDEyN0UgLyogTWFrZVNpbmdsZUhlYWRlci5w
eSAqLywKKwkJCSk7CisJCQlwYXRoID0gU2luZ2xlSGVhZGVyOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKwkJMUM1MzFBMjYyN0JEREZFMTAwQ0QxMjdFIC8qIERlcml2ZWRTb3Vy
Y2VzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUz
MUEyODI3QkRFMDMzMDBDRDEyN0UgLyogbWV0YWwtY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBE
ZXJpdmVkU291cmNlczsKKwkJCXBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJHUFU7CisJCQlzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOworCQl9OworCQkxQzUzMUEyODI3QkRFMDMzMDBD
RDEyN0UgLyogbWV0YWwtY3BwICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQkxQzUzMUEyOTI3QkRFMDQ5MDBDRDEyN0UgLyogTWV0YWwgKi8sCisJCQkpOwor
CQkJcGF0aCA9ICJtZXRhbC1jcHAiOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
KwkJMUM1MzFBMjkyN0JERTA0OTAwQ0QxMjdFIC8qIE1ldGFsICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEyQTI3QkRFMDY3MDBDRDEyN0UgLyog
TWV0YWwuaHBwICovLAorCQkJKTsKKwkJCXBhdGggPSBNZXRhbDsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CiAJCTFDRUJEN0Q5MjcxNkFGQkEwMEE1MjU0RCA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNTMsNiArNDg2LDggQEAKIAkJMUNFQkQ3
RTUyNzE2QUZCQTAwQTUyNTREIC8qIFdlYkdQVSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJMUM1MzFBMjYyN0JEREZFMTAwQ0QxMjdFIC8qIERlcml2ZWRT
b3VyY2VzICovLAorCQkJCTFDNTMxOUNCMjdCRERENkUwMENEMTI3RSAvKiBtZXRhbC1jcHAgKi8s
CiAJCQkJMUM1QUNBQjIyNzNBNDI2RDAwOTVGOEQ1IC8qIEFkYXB0ZXIuaCAqLywKIAkJCQkxQzVB
Q0FBOTI3M0E0MjZEMDA5NUY4RDUgLyogQWRhcHRlci5tbSAqLywKIAkJCQkxQzVBQ0FENTI3M0E0
RDcwMDA5NUY4RDUgLyogQmluZEdyb3VwLmggKi8sCkBAIC0yNzUsNiArNTEwLDcgQEAKIAkJCQkx
Q0VCRDgwQjI3MTZDMzc5MDBBNTI1NEQgLyogRXhwb3J0TWFjcm9zLmggKi8sCiAJCQkJMUM1QUNB
QTAyNzNBNDI2RDAwOTVGOEQ1IC8qIEluc3RhbmNlLmggKi8sCiAJCQkJMUM1QUNBOTIyNzNBNDFD
MjAwOTVGOEQ1IC8qIEluc3RhbmNlLm1tICovLAorCQkJCTFDNTMxQTI0MjdCRERGNTUwMENEMTI3
RSAvKiBNZXRhbC5jcHAgKi8sCiAJCQkJMUM1QUNBREEyNzNBNEU3MTAwOTVGOEQ1IC8qIFBpcGVs
aW5lTGF5b3V0LmggKi8sCiAJCQkJMUM1QUNBRTQyNzNBNTVERDAwOTVGOEQ1IC8qIFBpcGVsaW5l
TGF5b3V0Lm1tICovLAogCQkJCTFDNUFDQUFDMjczQTQyNkQwMDk1RjhENSAvKiBRdWVyeVNldC5o
ICovLApAQCAtNDIwLDYgKzY1Niw3IEBACiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMUNFQkQ3RUEyNzE2QUZCQTAwQTUyNTREIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJHUFUiICovOwogCQkJ
YnVpbGRQaGFzZXMgPSAoCisJCQkJMUM1MzFBMjMyN0JERERCNTAwQ0QxMjdFIC8qIFNoZWxsU2Ny
aXB0ICovLAogCQkJCTFDRUJEN0RFMjcxNkFGQkEwMEE1MjU0RCAvKiBIZWFkZXJzICovLAogCQkJ
CTFDRUJEN0RGMjcxNkFGQkEwMEE1MjU0RCAvKiBTb3VyY2VzICovLAogCQkJCTFDRUJEN0UwMjcx
NkFGQkEwMEE1MjU0RCAvKiBGcmFtZXdvcmtzICovLApAQCAtNDU5LDcgKzY5Niw2IEBACiAJCTFD
RUJEN0RBMjcxNkFGQkEwMEE1MjU0RCAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9
IFBCWFByb2plY3Q7CiAJCQlhdHRyaWJ1dGVzID0gewotCQkJCUJ1aWxkSW5kZXBlbmRlbnRUYXJn
ZXRzSW5QYXJhbGxlbCA9IE5POwogCQkJCURlZmF1bHRCdWlsZFN5c3RlbVR5cGVGb3JXb3Jrc3Bh
Y2UgPSBPcmlnaW5hbDsKIAkJCQlMYXN0U3dpZnRVcGRhdGVDaGVjayA9IDE0MDA7CiAJCQkJTGFz
dFVwZ3JhZGVDaGVjayA9IDEzMzA7CkBAIC01MTcsNiArNzUzLDEwNSBAQAogLyogRW5kIFBCWFJl
c291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzUzMUEyMzI3QkREREI1MDBDRDEyN0UgLyogU2hlbGxT
Y3JpcHQgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRG
aWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9P
VCkvV2ViR1BVL21ldGFsLWNwcC9TaW5nbGVIZWFkZXIvTWFrZVNpbmdsZUhlYWRlci5weSIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBw
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNBcnJheS5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0F1dG9y
ZWxlYXNlUG9vbC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU0J1bmRsZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9OU0RhdGEuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNEYXRlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9G
b3VuZGF0aW9uL05TRGVmaW5lcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcCIsCisJCQkJIiQoU1JDUk9P
VCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90aWZpY2F0aW9uLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTnVtYmVyLmhwcCIsCisJ
CQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqQ1J1bnRpbWUu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNPYmpl
Y3QuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQ
cml2YXRlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TUHJvY2Vzc0luZm8uaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNSYW5nZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAv
Rm91bmRhdGlvbi9OU1N0cmluZy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU1R5cGVzLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFs
LWNwcC9Gb3VuZGF0aW9uL05TVVJMLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRF
bmNvZGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50RW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1Qp
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmluYXJ5QXJjaGl2ZS5ocHAiLAorCQkJCSIkKFNS
Q1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCIs
CisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFzcy5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhwcCIs
CisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlTWFuYWdl
ci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVy
ZVNjb3BlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExD
b21tYW5kQnVmZmVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExDb21tYW5kRW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQ29tbWFuZFF1ZXVlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNS
T09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcCIsCisJCQkJIiQo
U1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBwIiwK
KwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvdW50ZXJzLmhwcCIs
CisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhwcCIs
CisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5jaWwu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERldmljZS5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHJhd2FibGUu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFtaWNM
aWJyYXJ5LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExF
dmVudC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRmVu
Y2UuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0
aW9uQ29uc3RhbnRWYWx1ZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUuaHBwIiwKKwkJCQkiJChTUkNST09U
KS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvblN0aXRjaGluZy5ocHAiLAor
CQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJpZGdlLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFwLmhwcCIs
CisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVjdENvbW1h
bmRCdWZmZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwIiwKKwkJCQkiJChT
UkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpYnJhcnkuaHBwIiwKKwkJCQkiJChT
UkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHAiLAor
CQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5kZXJD
b21tYW5kRW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMUGlwZWxpbmUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFBpeGVsRm9ybWF0LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExQcml2YXRlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChT
UkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBhc3MuaHBwIiwKKwkJCQki
JChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhwcCIs
CisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZS5ocHAi
LAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0
ZUNvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMU2FtcGxlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwIiwKKwkJCQki
JChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFRleHR1cmUuaHBwIiwKKwkJCQki
JChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcCIsCisJCQkJIiQo
U1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCIs
CisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNpYmxlRnVuY3Rp
b25UYWJsZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTWV0
YWwuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FE
ZWZpbmVzLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3Jl
L0NBTWV0YWxEcmF3YWJsZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAv
UXVhcnR6Q29yZS9DQVByaXZhdGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwt
Y3BwL1F1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAiLAorCQkJKTsKKwkJCW91dHB1dEZpbGVMaXN0
UGF0aHMgPSAoCisJCQkpOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJHUFUvbWV0YWwtY3BwL01ldGFsLmhwcCIsCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBh
dGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgJHtCVUlMVF9QUk9EVUNU
U19ESVJ9L0Rlcml2ZWRTb3VyY2VzL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWxcblxuY2QgV2ViR1BV
L21ldGFsLWNwcFxucHl0aG9uMyAuL1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5IC1v
ICR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01ldGFsLmhwcCBGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwIFF1YXJ0ekNvcmUvUXVhcnR6
Q29yZS5ocHAgTWV0YWwvTWV0YWwuaHBwXG4iOworCQl9OwogCQk2NTc3RkZDODI3NkFDQTA2MDAx
MUFFQzggLyogQ3JlYXRlIFN5bWxpbmsgdG8gQWx0IFJvb3QgUGF0aCAqLyA9IHsKIAkJCWlzYSA9
IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDg7CkBAIC01
NjksNiArOTA0LDcgQEAKIAkJCQkxQzVBQ0FDMDI3M0E0MjZEMDA5NUY4RDUgLyogQ29tcHV0ZVBp
cGVsaW5lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1QUNBQzEyNzNBNDI2RDAwOTVGOEQ1IC8q
IERldmljZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQTk0MjczQTQxQzIwMDk1RjhENSAv
KiBJbnN0YW5jZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFDNTMxQTI1MjdCRERGNTUwMENEMTI3
RSAvKiBNZXRhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0FFNTI3M0E1NUREMDA5NUY4
RDUgLyogUGlwZWxpbmVMYXlvdXQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0FCRDI3M0E0
MjZEMDA5NUY4RDUgLyogUXVlcnlTZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzVBQ0FDQjI3
M0E0MjZFMDA5NUY4RDUgLyogUXVldWUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL01ldGFsLmNwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL01ldGFs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNGZiNjRlMTNhMjlmMzJmOGZhM2Q1MWJiYWRkOWU5NWVmM2RjNDBi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvTWV0YWwuY3BwCkBAIC0w
LDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjZGVmaW5lIE5TX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKyNkZWZpbmUgQ0FfUFJJVkFURV9J
TVBMRU1FTlRBVElPTgorI2RlZmluZSBNVExfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorI2luY2x1
ZGUgPE1ldGFsL01ldGFsLmhwcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL2Nv
bmZpZy5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvY29uZmlnLmgKaW5kZXggOGMxMjdhOTQzNDBh
N2Q3YWMwMjk5YmJmNDI3YTEyNzZlNTE1NjczYi4uNzkwZTZjMjUyNzc1YTczYzgyZmNjZDdmMGI3
OWZiNWU5NTc5MzMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvY29uZmlnLmgK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvY29uZmlnLmgKQEAgLTI1LDggKzI1LDEyIEBACiAK
ICNpbmNsdWRlICJFeHBvcnRNYWNyb3MuaCIKIAorI2luY2x1ZGUgPE1ldGFsL01ldGFsLmhwcD4K
KwogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKICNpbmNsdWRlIDx3dGYvRGlzYWxsb3dD
VHlwZS5oPgogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9G
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwODI1MmU5YjE2NjRkOWJkODYx
MjE0NGU1YmIwYzRhZTY2ZTI4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcApAQCAtMCwwICsxLDQ1IEBA
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBs
ZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI2luY2x1ZGUgIk5TQXJyYXkuaHBwIgorI2luY2x1ZGUgIk5TQXV0b3JlbGVh
c2VQb29sLmhwcCIKKyNpbmNsdWRlICJOU0J1bmRsZS5ocHAiCisjaW5jbHVkZSAiTlNEYXRhLmhw
cCIKKyNpbmNsdWRlICJOU0RhdGUuaHBwIgorI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5j
bHVkZSAiTlNEaWN0aW9uYXJ5LmhwcCIKKyNpbmNsdWRlICJOU0VudW1lcmF0b3IuaHBwIgorI2lu
Y2x1ZGUgIk5TRXJyb3IuaHBwIgorI2luY2x1ZGUgIk5TTG9jay5ocHAiCisjaW5jbHVkZSAiTlNO
b3RpZmljYXRpb24uaHBwIgorI2luY2x1ZGUgIk5TTnVtYmVyLmhwcCIKKyNpbmNsdWRlICJOU09i
amVjdC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhwcCIKKyNpbmNsdWRlICJOU1Byb2Nlc3NJ
bmZvLmhwcCIKKyNpbmNsdWRlICJOU1JhbmdlLmhwcCIKKyNpbmNsdWRlICJOU1N0cmluZy5ocHAi
CisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisjaW5jbHVkZSAiTlNVUkwuaHBwIgorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXJyYXkuaHBwIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNBcnJheS5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODczMGRmOTk0OTY3YWYyM2YyOGQ1Yzc0NWZkYTRjYWQ5NzIwNDBiOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXJyYXku
aHBwCkBAIC0wLDAgKzEsMTE1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TQXJyYXkuaHBwCisvLworLy8gQ29weXJp
Z2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNp
bmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworY2xhc3MgQXJyYXkgOiBwdWJsaWMgQ29w
eWluZzxBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgQXJyYXkqIGFycmF5KCk7CisgICAg
c3RhdGljIEFycmF5KiBhcnJheShjb25zdCBPYmplY3QqIHBPYmplY3QpOworICAgIHN0YXRpYyBB
cnJheSogYXJyYXkoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMsIFVJbnRlZ2VyIGNvdW50
KTsKKworICAgIHN0YXRpYyBBcnJheSogYWxsb2MoKTsKKworICAgIEFycmF5KiAgICAgICAgaW5p
dCgpOworICAgIEFycmF5KiAgICAgICAgaW5pdChjb25zdCBPYmplY3QqIGNvbnN0KiBwT2JqZWN0
cywgVUludGVnZXIgY291bnQpOworICAgIEFycmF5KiAgICAgICAgaW5pdChjb25zdCBjbGFzcyBD
b2RlciogcENvZGVyKTsKKworICAgIHRlbXBsYXRlIDxjbGFzcyBfT2JqZWN0ID0gT2JqZWN0Pgor
ICAgIF9PYmplY3QqIG9iamVjdChVSW50ZWdlciBpbmRleCkgY29uc3Q7CisgICAgVUludGVnZXIg
Y291bnQoKSBjb25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5OjphcnJheSgp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPihfTlNfUFJJVkFURV9D
TFMoTlNBcnJheSksIF9OU19QUklWQVRFX1NFTChhcnJheSkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkq
IE5TOjpBcnJheTo6YXJyYXkoY29uc3QgT2JqZWN0KiBwT2JqZWN0KQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4oX05TX1BSSVZBVEVfQ0xTKE5TQXJyYXkpLCBfTlNf
UFJJVkFURV9TRUwoYXJyYXlXaXRoT2JqZWN0XyksIHBPYmplY3QpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJy
YXkqIE5TOjpBcnJheTo6YXJyYXkoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMsIFVJbnRl
Z2VyIGNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4oX05T
X1BSSVZBVEVfQ0xTKE5TQXJyYXkpLCBfTlNfUFJJVkFURV9TRUwoYXJyYXlXaXRoT2JqZWN0c19j
b3VudF8pLCBwT2JqZWN0cywgY291bnQpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpBcnJheTo6
YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxBcnJheT4oX05TX1BSSVZB
VEVfQ0xTKE5TQXJyYXkpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBOUzo6QXJyYXk6OmluaXQoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PEFycmF5PigpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJy
YXkqIE5TOjpBcnJheTo6aW5pdChjb25zdCBPYmplY3QqIGNvbnN0KiBwT2JqZWN0cywgVUludGVn
ZXIgY291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhPYmplY3RzX2NvdW50XyksIHBPYmplY3RzLCBjb3Vu
dCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5Ojppbml0KGNvbnN0IGNsYXNzIENvZGVy
KiBwQ29kZXIpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhDb2Rlcl8pLCBwQ29kZXIpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
VUludGVnZXIgTlM6OkFycmF5Ojpjb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChjb3VudCkpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxh
dGUgPGNsYXNzIF9PYmplY3Q+CitfTlNfSU5MSU5FIF9PYmplY3QqIE5TOjpBcnJheTo6b2JqZWN0
KFVJbnRlZ2VyIGluZGV4KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PF9PYmplY3QqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleF8pLCBpbmRleCk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNBdXRv
cmVsZWFzZVBvb2wuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNBdXRvcmVsZWFzZVBvb2wuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyMzgzYTU1ZmUwNjJiZTI1YWM4
NTA4ZmRkNmI0OTVlMzJiOGRmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHAKQEAgLTAsMCAr
MSw4MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gRm91bmRhdGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHAKKy8vCisvLyBDb3B5cmlnaHQg
MjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNs
dWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhwcCIKKyNpbmNsdWRlICJO
U1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK25hbWVzcGFjZSBOUworeworY2xhc3MgQXV0b3JlbGVhc2VQb29sIDogcHVibGljIE9i
amVjdAoreworcHVibGljOgorICAgIHN0YXRpYyBBdXRvcmVsZWFzZVBvb2wqIGFsbG9jKCk7Cisg
ICAgQXV0b3JlbGVhc2VQb29sKiAgICAgICAgaW5pdCgpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgZHJhaW4oKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGFkZE9iamVj
dChPYmplY3QqIHBPYmplY3QpOworCisgICAgc3RhdGljIHZvaWQgICAgICAgICAgICAgc2hvd1Bv
b2xzKCk7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6QXV0b3JlbGVhc2VQb29sKiBOUzo6QXV0b3JlbGVhc2VQ
b29sOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPEF1dG9yZWxlYXNl
UG9vbD4oX05TX1BSSVZBVEVfQ0xTKE5TQXV0b3JlbGVhc2VQb29sKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpB
dXRvcmVsZWFzZVBvb2wqIE5TOjpBdXRvcmVsZWFzZVBvb2w6OmluaXQoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0Ojppbml0PEF1dG9yZWxlYXNlUG9vbD4oKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6
QXV0b3JlbGVhc2VQb29sOjpkcmFpbigpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZHJhaW4pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6QXV0b3Jl
bGVhc2VQb29sOjphZGRPYmplY3QoT2JqZWN0KiBwT2JqZWN0KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGFkZE9iamVjdF8pLCBwT2JqZWN0
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19OU19JTkxJTkUgdm9pZCBOUzo6QXV0b3JlbGVhc2VQb29sOjpzaG93UG9vbHMoKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4oX05TX1BSSVZBVEVfQ0xTKE5TQXV0b3JlbGVhc2VQ
b29sKSwgX05TX1BSSVZBVEVfU0VMKHNob3dQb29scykpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQnVuZGxlLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQnVuZGxlLmhwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZThj
NTM5NWJiMDExNmJmMjExOTBjZTE3M2YwMTA2ODhlZGU5MjdmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNCdW5kbGUuaHBwCkBA
IC0wLDAgKzEsMzc0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TQnVuZGxlLmhwcAorLy8KKy8vIENvcHlyaWdodCAy
MDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk5TTm90aWZpY2F0aW9uLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVk
ZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK19OU19DT05TVChOb3RpZmljYXRpb25OYW1lLCBC
dW5kbGVEaWRMb2FkTm90aWZpY2F0aW9uKTsKK19OU19DT05TVChOb3RpZmljYXRpb25OYW1lLCBC
dW5kbGVSZXNvdXJjZVJlcXVlc3RMb3dEaXNrU3BhY2VOb3RpZmljYXRpb24pOworCitjbGFzcyBT
dHJpbmcqIExvY2FsaXplZFN0cmluZyhjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyop
OworY2xhc3MgU3RyaW5nKiBMb2NhbGl6ZWRTdHJpbmdGcm9tVGFibGUoY29uc3QgU3RyaW5nKiBw
S2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNvbnN0IFN0cmluZyopOworY2xhc3MgU3RyaW5nKiBM
b2NhbGl6ZWRTdHJpbmdGcm9tVGFibGVJbkJ1bmRsZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0
IFN0cmluZyogcFRibCwgY29uc3QgY2xhc3MgQnVuZGxlKiBwQmRsZSwgY29uc3QgU3RyaW5nKik7
CitjbGFzcyBTdHJpbmcqIExvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoY29uc3QgU3Ry
aW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNvbnN0IGNsYXNzIEJ1bmRsZSogcEJkbGUs
IGNvbnN0IFN0cmluZyogcFZhbCwgY29uc3QgU3RyaW5nKik7CisKK2NsYXNzIEJ1bmRsZSA6IHB1
YmxpYyBSZWZlcmVuY2luZzxCdW5kbGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIEJ1bmRsZSog
ICAgbWFpbkJ1bmRsZSgpOworCisgICAgc3RhdGljIEJ1bmRsZSogICAgYnVuZGxlKGNvbnN0IGNs
YXNzIFN0cmluZyogcFBhdGgpOworICAgIHN0YXRpYyBCdW5kbGUqICAgIGJ1bmRsZShjb25zdCBj
bGFzcyBVUkwqIHBVUkwpOworCisgICAgc3RhdGljIEJ1bmRsZSogICAgYWxsb2MoKTsKKworICAg
IEJ1bmRsZSogICAgICAgICAgIGluaXQoY29uc3QgY2xhc3MgU3RyaW5nKiBwUGF0aCk7CisgICAg
QnVuZGxlKiAgICAgICAgICAgaW5pdChjb25zdCBjbGFzcyBVUkwqIHBVUkwpOworCisgICAgY2xh
c3MgQXJyYXkqICAgICAgYWxsQnVuZGxlcygpIGNvbnN0OworICAgIGNsYXNzIEFycmF5KiAgICAg
IGFsbEZyYW1ld29ya3MoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgIGxvYWQoKTsK
KyAgICBib29sICAgICAgICAgICAgICB1bmxvYWQoKTsKKworICAgIGJvb2wgICAgICAgICAgICAg
IGlzTG9hZGVkKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICBwcmVmbGlnaHRBbmRS
ZXR1cm5FcnJvcihjbGFzcyBFcnJvcioqIHBFcnJvcikgY29uc3Q7CisgICAgYm9vbCAgICAgICAg
ICAgICAgbG9hZEFuZFJldHVybkVycm9yKGNsYXNzIEVycm9yKiogcEVycm9yKTsKKworICAgIGNs
YXNzIFVSTCogICAgICAgIGJ1bmRsZVVSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAgICAg
IHJlc291cmNlVVJMKCkgY29uc3Q7CisgICAgY2xhc3MgVVJMKiAgICAgICAgZXhlY3V0YWJsZVVS
TCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAgICAgIFVSTEZvckF1eGlsaWFyeUV4ZWN1dGFi
bGUoY29uc3QgY2xhc3MgU3RyaW5nKiBwRXhlY3V0YWJsZU5hbWUpIGNvbnN0OworCisgICAgY2xh
c3MgVVJMKiAgICAgICAgcHJpdmF0ZUZyYW1ld29ya3NVUkwoKSBjb25zdDsKKyAgICBjbGFzcyBV
UkwqICAgICAgICBzaGFyZWRGcmFtZXdvcmtzVVJMKCkgY29uc3Q7CisgICAgY2xhc3MgVVJMKiAg
ICAgICAgc2hhcmVkU3VwcG9ydFVSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAgICAgIGJ1
aWx0SW5QbHVnSW5zVVJMKCkgY29uc3Q7CisgICAgY2xhc3MgVVJMKiAgICAgICAgYXBwU3RvcmVS
ZWNlaXB0VVJMKCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJpbmcqICAgICBidW5kbGVQYXRoKCkg
Y29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgcmVzb3VyY2VQYXRoKCkgY29uc3Q7CisgICAg
Y2xhc3MgU3RyaW5nKiAgICAgZXhlY3V0YWJsZVBhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJp
bmcqICAgICBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZShjb25zdCBjbGFzcyBTdHJpbmcqIHBF
eGVjdXRhYmxlTmFtZSkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJpbmcqICAgICBwcml2YXRlRnJh
bWV3b3Jrc1BhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICBzaGFyZWRGcmFtZXdv
cmtzUGF0aCgpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIHNoYXJlZFN1cHBvcnRQYXRo
KCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgYnVpbHRJblBsdWdJbnNQYXRoKCkgY29u
c3Q7CisKKyAgICBjbGFzcyBTdHJpbmcqICAgICBidW5kbGVJZGVudGlmaWVyKCkgY29uc3Q7Cisg
ICAgY2xhc3MgRGljdGlvbmFyeSogaW5mb0RpY3Rpb25hcnkoKSBjb25zdDsKKyAgICBjbGFzcyBE
aWN0aW9uYXJ5KiBsb2NhbGl6ZWRJbmZvRGljdGlvbmFyeSgpIGNvbnN0OworICAgIGNsYXNzIE9i
amVjdCogICAgIG9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5KGNvbnN0IGNsYXNzIFN0cmluZyog
cEtleSk7CisKKyAgICBjbGFzcyBTdHJpbmcqICAgICBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2xh
c3MgU3RyaW5nKiBwS2V5LCBjb25zdCBjbGFzcyBTdHJpbmcqIHBWYWx1ZSA9IG51bGxwdHIsIGNv
bnN0IGNsYXNzIFN0cmluZyogcFRhYmxlTmFtZSA9IG51bGxwdHIpIGNvbnN0OworfTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19QUklW
QVRFX0RFRl9DT05TVChOUzo6Tm90aWZpY2F0aW9uTmFtZSwgQnVuZGxlRGlkTG9hZE5vdGlmaWNh
dGlvbik7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6Ok5vdGlmaWNhdGlvbk5hbWUsIEJ1bmRs
ZVJlc291cmNlUmVxdWVzdExvd0Rpc2tTcGFjZU5vdGlmaWNhdGlvbik7CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJp
bmcqIE5TOjpMb2NhbGl6ZWRTdHJpbmcoY29uc3QgU3RyaW5nKiBwS2V5LCBjb25zdCBTdHJpbmcq
KQoreworICAgIHJldHVybiBCdW5kbGU6Om1haW5CdW5kbGUoKS0+bG9jYWxpemVkU3RyaW5nKHBL
ZXksIG51bGxwdHIsIG51bGxwdHIpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6TG9jYWxpemVk
U3RyaW5nRnJvbVRhYmxlKGNvbnN0IFN0cmluZyogcEtleSwgY29uc3QgU3RyaW5nKiBwVGJsLCBj
b25zdCBTdHJpbmcqKQoreworICAgIHJldHVybiBCdW5kbGU6Om1haW5CdW5kbGUoKS0+bG9jYWxp
emVkU3RyaW5nKHBLZXksIG51bGxwdHIsIHBUYmwpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6
TG9jYWxpemVkU3RyaW5nRnJvbVRhYmxlSW5CdW5kbGUoY29uc3QgU3RyaW5nKiBwS2V5LCBjb25z
dCBTdHJpbmcqIHBUYmwsIGNvbnN0IEJ1bmRsZSogcEJkbCwgY29uc3QgU3RyaW5nKikKK3sKKyAg
ICByZXR1cm4gcEJkbC0+bG9jYWxpemVkU3RyaW5nKHBLZXksIG51bGxwdHIsIHBUYmwpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6U3RyaW5nKiBOUzo6TG9jYWxpemVkU3RyaW5nV2l0aERlZmF1bHRWYWx1ZShjb25z
dCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwgY29uc3QgQnVuZGxlKiBwQmRsLCBj
b25zdCBTdHJpbmcqIHBWYWwsIGNvbnN0IFN0cmluZyopCit7CisgICAgcmV0dXJuIHBCZGwtPmxv
Y2FsaXplZFN0cmluZyhwS2V5LCBwVmFsLCBwVGJsKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkJ1bmRsZSogTlM6
OkJ1bmRsZTo6bWFpbkJ1bmRsZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
QnVuZGxlKj4oX05TX1BSSVZBVEVfQ0xTKE5TQnVuZGxlKSwgX05TX1BSSVZBVEVfU0VMKG1haW5C
dW5kbGUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OkJ1bmRsZSogTlM6OkJ1bmRsZTo6YnVuZGxlKGNvbnN0IGNs
YXNzIFN0cmluZyogcFBhdGgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QnVu
ZGxlKj4oX05TX1BSSVZBVEVfQ0xTKE5TQnVuZGxlKSwgX05TX1BSSVZBVEVfU0VMKGJ1bmRsZVdp
dGhQYXRoXyksIHBQYXRoKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkJ1bmRsZSogTlM6OkJ1bmRsZTo6YnVuZGxl
KGNvbnN0IGNsYXNzIFVSTCogcFVSTCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxCdW5kbGUqPihfTlNfUFJJVkFURV9DTFMoTlNCdW5kbGUpLCBfTlNfUFJJVkFURV9TRUwoYnVu
ZGxlV2l0aFVSTF8pLCBwVVJMKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkJ1bmRsZSogTlM6OkJ1bmRsZTo6YWxs
b2MoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1bmRsZSo+KF9OU19QUklW
QVRFX0NMUyhOU0J1bmRsZSksIF9OU19QUklWQVRFX1NFTChhbGxvYykpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
QnVuZGxlKiBOUzo6QnVuZGxlOjppbml0KGNvbnN0IFN0cmluZyogcFBhdGgpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QnVuZGxlKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlu
aXRXaXRoUGF0aF8pLCBwUGF0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpCdW5kbGUqIE5TOjpCdW5kbGU6Omlu
aXQoY29uc3QgVVJMKiBwVVJMKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1
bmRsZSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aFVSTF8pLCBwVVJMKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OkFycmF5KiBOUzo6QnVuZGxlOjphbGxCdW5kbGVzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhbGxC
dW5kbGVzKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkJ1bmRsZTo6YWxsRnJhbWV3b3Jrcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoYWxsRnJhbWV3b3JrcykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpCdW5kbGU6
OmxvYWQoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChsb2FkKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OkJ1bmRsZTo6dW5sb2FkKCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwodW5sb2FkKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OkJ1bmRsZTo6aXNMb2FkZWQoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklW
QVRFX1NFTChpc0xvYWRlZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpCdW5kbGU6OnByZWZsaWdodEFu
ZFJldHVybkVycm9yKEVycm9yKiogcEVycm9yKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwcmVmbGlnaHRBbmRSZXR1
cm5FcnJvcl8pLCBwRXJyb3IpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpCdW5kbGU6OmxvYWRBbmRSZXR1
cm5FcnJvcihFcnJvcioqIHBFcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9hZEFuZFJldHVybkVycm9yXyksIHBFcnJv
cik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OmJ1bmRsZVVSTCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGJ1bmRsZVVSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpyZXNvdXJjZVVSTCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKHJlc291cmNlVVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6
OmV4ZWN1dGFibGVVUkwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChleGVjdXRhYmxlVVJMKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpVUkwqIE5TOjpCdW5kbGU6OlVSTEZvckF1eGlsaWFyeUV4ZWN1dGFibGUoY29uc3QgU3RyaW5n
KiBwRXhlY3V0YWJsZU5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKFVSTEZvckF1eGlsaWFyeUV4ZWN1dGFibGVf
KSwgcEV4ZWN1dGFibGVOYW1lKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6cHJpdmF0
ZUZyYW1ld29ya3NVUkwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwcml2YXRlRnJhbWV3b3Jrc1VSTCkpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpzaGFyZWRGcmFtZXdvcmtzVVJMKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoc2hhcmVkRnJhbWV3b3Jrc1VSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpz
aGFyZWRTdXBwb3J0VVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc2hhcmVkU3VwcG9ydFVSTCkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpidWlsdEluUGx1Z0luc1VSTCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGJ1
aWx0SW5QbHVnSW5zVVJMKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OmFwcFN0b3Jl
UmVjZWlwdFVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJM
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGFwcFN0b3JlUmVjZWlwdFVSTCkpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpidW5kbGVQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnVuZGxl
UGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpyZXNvdXJjZVBhdGgoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChyZXNvdXJjZVBhdGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1
bmRsZTo6ZXhlY3V0YWJsZVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChleGVjdXRhYmxlUGF0aCkpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJs
ZShjb25zdCBTdHJpbmcqIHBFeGVjdXRhYmxlTmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocGF0aEZvckF1
eGlsaWFyeUV4ZWN1dGFibGVfKSwgcEV4ZWN1dGFibGVOYW1lKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmlu
ZyogTlM6OkJ1bmRsZTo6cHJpdmF0ZUZyYW1ld29ya3NQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocHJp
dmF0ZUZyYW1ld29ya3NQYXRoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OnNo
YXJlZEZyYW1ld29ya3NQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc2hhcmVkRnJhbWV3b3Jrc1BhdGgp
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6c2hhcmVkU3VwcG9ydFBhdGgoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChzaGFyZWRTdXBwb3J0UGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBO
Uzo6QnVuZGxlOjpidWlsdEluUGx1Z0luc1BhdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChidWlsdEluUGx1
Z0luc1BhdGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6YnVuZGxlSWRlbnRp
ZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGJ1bmRsZUlkZW50aWZpZXIpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRp
Y3Rpb25hcnkqIE5TOjpCdW5kbGU6OmluZm9EaWN0aW9uYXJ5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGluZm9EaWN0aW9uYXJ5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6QnVuZGxlOjps
b2NhbGl6ZWRJbmZvRGljdGlvbmFyeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8RGljdGlvbmFyeSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb2NhbGl6ZWRJbmZv
RGljdGlvbmFyeSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6T2JqZWN0KiBOUzo6QnVuZGxlOjpvYmplY3RGb3JJ
bmZvRGljdGlvbmFyeUtleShjb25zdCBTdHJpbmcqIHBLZXkpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8T2JqZWN0Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9iamVjdEZvcklu
Zm9EaWN0aW9uYXJ5S2V5XyksIHBLZXkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxl
Ojpsb2NhbGl6ZWRTdHJpbmcoY29uc3QgU3RyaW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqIHBWYWx1
ZSAvKiA9IG51bGxwdHIgKi8sIGNvbnN0IFN0cmluZyogcFRhYmxlTmFtZSAvKiA9IG51bGxwdHIg
Ki8pIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKGxvY2FsaXplZFN0cmluZ0ZvcktleV92YWx1ZV90YWJsZV8pLCBw
S2V5LCBwVmFsdWUsIHBUYWJsZU5hbWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0YS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvRm91bmRhdGlvbi9OU0RhdGEuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNjk5ZTQ3NDRmODEzZDZl
ZmRjZDVmNmI3NDY3M2VmZWNhMDNlN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGEuaHBwCkBAIC0wLDAgKzEsNTQgQEAK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZv
dW5kYXRpb24vTlNEYXRhLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5j
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
cHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3Bh
Y2UgTlMKK3sKK2NsYXNzIERhdGEgOiBwdWJsaWMgQ29weWluZzxEYXRhPgoreworcHVibGljOgor
ICAgIHZvaWQqICAgIG11dGFibGVCeXRlcygpIGNvbnN0OworICAgIFVJbnRlZ2VyIGxlbmd0aCgp
IGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCogTlM6OkRhdGE6Om11dGFibGVCeXRlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZCo+KHRoaXMsIF9OU19QUklW
QVRFX1NFTChtdXRhYmxlQnl0ZXMpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpEYXRhOjps
ZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2Vy
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwobGVuZ3RoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU2YzgzYWY3
YzVjM2FmNzg3MzI0NWM5NmUwMzcwNTg2NWI5NjYyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0ZS5ocHAKQEAgLTAsMCAr
MSw0MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gRm91bmRhdGlvbi9OU0RhdGUuaHBwCisvLworLy8gU2VlIExJQ0VOU0UudHh0IGZvciB0
aGlzIHByb2plY3QgbGljZW5zaW5nIGluZm9ybWF0aW9uLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBw
IgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CisKK3VzaW5nIFRpbWVJbnRlcnZh
bCA9IGRvdWJsZTsKKworY2xhc3MgRGF0ZSA6IHB1YmxpYyBDb3B5aW5nPERhdGU+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIERhdGUqIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3coVGltZUlu
dGVydmFsIHNlY3MpOworfTsKKworfSAvLyBOUworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGF0ZSogTlM6OkRhdGU6OmRh
dGVXaXRoVGltZUludGVydmFsU2luY2VOb3coTlM6OlRpbWVJbnRlcnZhbCBzZWNzKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6RGF0ZSo+KF9OU19QUklWQVRFX0NM
UyhOU0RhdGUpLCBfTlNfUFJJVkFURV9TRUwoZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZU5vd18p
LCBzZWNzKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGM5Njk4OWNiNWRhNWZhMTBjOThhMzI5YzEzM2IwN2FlODJkYTFhYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGVmaW5lcy5o
cHAKQEAgLTAsMCArMSw0MSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0RlZmluZXMuaHBwCisvLworLy8gQ29weXJp
Z2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2RlZmluZSBfTlNfV0VBS19JTVBPUlQgX19h
dHRyaWJ1dGVfXygod2Vha19pbXBvcnQpKQorI2RlZmluZSBfTlNfRVhQT1JUIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKKyNkZWZpbmUgX05TX0VYVEVSTiBleHRlcm4gIkMi
IF9OU19FWFBPUlQKKyNkZWZpbmUgX05TX0lOTElORSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3
YXlzX2lubGluZSkpCisjZGVmaW5lIF9OU19QQUNLRUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSkK
KworI2RlZmluZSBfTlNfQ09OU1QodHlwZSwgbmFtZSkgX05TX0VYVEVSTiB0eXBlIGNvbnN0IG5h
bWU7CisjZGVmaW5lIF9OU19FTlVNKHR5cGUsIG5hbWUpIGVudW0gbmFtZSA6IHR5cGUKKyNkZWZp
bmUgX05TX09QVElPTlModHlwZSwgbmFtZSkgXAorICAgIHVzaW5nIG5hbWUgPSB0eXBlOyAgICAg
ICAgICBcCisgICAgZW51bSA6IG5hbWUKKworI2RlZmluZSBfTlNfQ0FTVF9UT19VSU5UKHZhbHVl
KSBzdGF0aWNfY2FzdDxOUzo6VUludGVnZXI+KHZhbHVlKQorI2RlZmluZSBfTlNfVkFMSURBVEVf
U0laRShucywgbmFtZSkgc3RhdGljX2Fzc2VydChzaXplb2YobnM6Om5hbWUpID09IHNpemVvZihu
cyMjbmFtZSksICJzaXplIG1pc21hdGNoICIgI25zICI6OiIgI25hbWUpCisjZGVmaW5lIF9OU19W
QUxJREFURV9FTlVNKG5zLCBuYW1lKSBzdGF0aWNfYXNzZXJ0KF9OU19DQVNUX1RPX1VJTlQobnM6
Om5hbWUpID09IF9OU19DQVNUX1RPX1VJTlQobnMjI25hbWUpLCAidmFsdWUgbWlzbWF0Y2ggIiAj
bnMgIjo6IiAjbmFtZSkKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU0RpY3Rpb25hcnkuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNEaWN0aW9uYXJ5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2JlMmJkODNkM2Q0MWU1NWVi
YjY5NTE2MWY5MGUxMDg1YjUzOTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEaWN0aW9uYXJ5LmhwcApAQCAtMCwwICsxLDEy
OCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwor
Ly8gRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAy
MSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRW51bWVyYXRvci5ocHAiCisjaW5jbHVkZSAi
TlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitjbGFzcyBE
aWN0aW9uYXJ5IDogcHVibGljIE5TOjpDb3B5aW5nPERpY3Rpb25hcnk+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIERpY3Rpb25hcnkqIGRpY3Rpb25hcnkoKTsKKyAgICBzdGF0aWMgRGljdGlvbmFy
eSogZGljdGlvbmFyeShjb25zdCBPYmplY3QqIHBPYmplY3QsIGNvbnN0IE9iamVjdCogcEtleSk7
CisgICAgc3RhdGljIERpY3Rpb25hcnkqIGRpY3Rpb25hcnkoY29uc3QgT2JqZWN0KiBjb25zdCog
cE9iamVjdHMsIGNvbnN0IE9iamVjdCogY29uc3QqIHBLZXlzLCBVSW50ZWdlciBjb3VudCk7CisK
KyAgICBzdGF0aWMgRGljdGlvbmFyeSogYWxsb2MoKTsKKworICAgIERpY3Rpb25hcnkqICAgICAg
ICBpbml0KCk7CisgICAgRGljdGlvbmFyeSogICAgICAgIGluaXQoY29uc3QgT2JqZWN0KiBjb25z
dCogcE9iamVjdHMsIGNvbnN0IE9iamVjdCogY29uc3QqIHBLZXlzLCBVSW50ZWdlciBjb3VudCk7
CisgICAgRGljdGlvbmFyeSogICAgICAgIGluaXQoY29uc3QgY2xhc3MgQ29kZXIqIHBDb2Rlcik7
CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleVR5cGUgPSBPYmplY3Q+CisgICAgRW51bWVyYXRv
cjxfS2V5VHlwZT4qIGtleUVudW1lcmF0b3IoKSBjb25zdDsKKworICAgIHRlbXBsYXRlIDxjbGFz
cyBfT2JqZWN0ID0gT2JqZWN0PgorICAgIF9PYmplY3QqIG9iamVjdChjb25zdCBPYmplY3QqIHBL
ZXkpIGNvbnN0OworICAgIFVJbnRlZ2VyIGNvdW50KCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6OmRpY3Rpb25hcnkoKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPihfTlNfUFJJVkFURV9DTFMoTlNEaWN0aW9u
YXJ5KSwgX05TX1BSSVZBVEVfU0VMKGRpY3Rpb25hcnkpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25h
cnkqIE5TOjpEaWN0aW9uYXJ5OjpkaWN0aW9uYXJ5KGNvbnN0IE9iamVjdCogcE9iamVjdCwgY29u
c3QgT2JqZWN0KiBwS2V5KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rp
b25hcnkqPihfTlNfUFJJVkFURV9DTFMoTlNEaWN0aW9uYXJ5KSwgX05TX1BSSVZBVEVfU0VMKGRp
Y3Rpb25hcnlXaXRoT2JqZWN0X2ZvcktleV8pLCBwT2JqZWN0LCBwS2V5KTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OkRpY3Rpb25hcnkqIE5TOjpEaWN0aW9uYXJ5OjpkaWN0aW9uYXJ5KGNvbnN0IE9iamVjdCogY29u
c3QqIHBPYmplY3RzLCBjb25zdCBPYmplY3QqIGNvbnN0KiBwS2V5cywgVUludGVnZXIgY291bnQp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KF9OU19QUklW
QVRFX0NMUyhOU0RpY3Rpb25hcnkpLCBfTlNfUFJJVkFURV9TRUwoZGljdGlvbmFyeVdpdGhPYmpl
Y3RzX2ZvcktleXNfY291bnRfKSwKKyAgICAgICAgcE9iamVjdHMsIHBLZXlzLCBjb3VudCk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxEaWN0aW9uYXJ5PihfTlNfUFJJVkFURV9DTFMoTlNEaWN0
aW9uYXJ5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8RGljdGlvbmFyeT4oKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OkRpY3Rpb25hcnkqIE5TOjpEaWN0aW9uYXJ5Ojppbml0KGNvbnN0IE9iamVjdCogY29uc3Qq
IHBPYmplY3RzLCBjb25zdCBPYmplY3QqIGNvbnN0KiBwS2V5cywgVUludGVnZXIgY291bnQpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChpbml0V2l0aE9iamVjdHNfZm9yS2V5c19jb3VudF8pLCBwT2JqZWN0cywgcEtl
eXMsIGNvdW50KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE5TOjpEaWN0aW9uYXJ5Ojppbml0
KGNvbnN0IGNsYXNzIENvZGVyKiBwQ29kZXIpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8RGljdGlvbmFyeSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aENvZGVyXyks
IHBDb2Rlcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0tleVR5cGU+CitfTlNfSU5MSU5FIE5TOjpFbnVtZXJh
dG9yPF9LZXlUeXBlPiogTlM6OkRpY3Rpb25hcnk6OmtleUVudW1lcmF0b3IoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEVudW1lcmF0b3I8X0tleVR5cGU+Kj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKGtleUVudW1lcmF0b3IpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfT2JqZWN0
PgorX05TX0lOTElORSBfT2JqZWN0KiBOUzo6RGljdGlvbmFyeTo6b2JqZWN0KGNvbnN0IE9iamVj
dCogcEtleSkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxfT2JqZWN0
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9iamVjdEZvcktleV8pLCBwS2V5KTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlVJbnRlZ2VyIE5TOjpEaWN0aW9uYXJ5Ojpjb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChjb3Vu
dCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
RW51bWVyYXRvci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU0VudW1lcmF0b3IuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NTk2YzA0ZGRhZmE4MDFmYWViNTFjNzg2
MmNlZDgzMGQwMTI2YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU0VudW1lcmF0b3IuaHBwCkBAIC0wLDAgKzEsNzggQEAKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5k
YXRpb24vTlNFbnVtZXJhdG9yLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUg
SW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAi
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1l
c3BhY2UgTlMKK3sKK3N0cnVjdCBGYXN0RW51bWVyYXRpb25TdGF0ZQoreworICAgIHVuc2lnbmVk
IGxvbmcgIHN0YXRlOworICAgIE9iamVjdCoqICAgICAgIGl0ZW1zUHRyOworICAgIHVuc2lnbmVk
IGxvbmcqIG11dGF0aW9uc1B0cjsKKyAgICB1bnNpZ25lZCBsb25nICBleHRyYVs1XTsKK30gX05T
X1BBQ0tFRDsKKworY2xhc3MgRmFzdEVudW1lcmF0aW9uIDogcHVibGljIFJlZmVyZW5jaW5nPEZh
c3RFbnVtZXJhdGlvbj4KK3sKK3B1YmxpYzoKKyAgICBOUzo6VUludGVnZXIgY291bnRCeUVudW1l
cmF0aW5nKEZhc3RFbnVtZXJhdGlvblN0YXRlKiBwU3RhdGUsIE9iamVjdCoqIHBCdWZmZXIsIE5T
OjpVSW50ZWdlciBsZW4pOworfTsKKwordGVtcGxhdGUgPGNsYXNzIF9PYmplY3RUeXBlPgorY2xh
c3MgRW51bWVyYXRvciA6IHB1YmxpYyBSZWZlcmVuY2luZzxFbnVtZXJhdG9yPF9PYmplY3RUeXBl
PiwgRmFzdEVudW1lcmF0aW9uPgoreworcHVibGljOgorICAgIF9PYmplY3RUeXBlKiBuZXh0T2Jq
ZWN0KCk7CisgICAgY2xhc3MgQXJyYXkqIGFsbE9iamVjdHMoKTsKK307Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpV
SW50ZWdlciBOUzo6RmFzdEVudW1lcmF0aW9uOjpjb3VudEJ5RW51bWVyYXRpbmcoRmFzdEVudW1l
cmF0aW9uU3RhdGUqIHBTdGF0ZSwgT2JqZWN0KiogcEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGxlbikK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKGNvdW50QnlFbnVtZXJhdGluZ1dpdGhTdGF0ZV9vYmplY3RzX2NvdW50XyksIHBT
dGF0ZSwgcEJ1ZmZlciwgbGVuKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfT2JqZWN0VHlwZT4KK19OU19JTkxJ
TkUgX09iamVjdFR5cGUqIE5TOjpFbnVtZXJhdG9yPF9PYmplY3RUeXBlPjo6bmV4dE9iamVjdCgp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8X09iamVjdFR5cGUqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwobmV4dE9iamVjdCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNsYXNzIF9PYmplY3RUeXBlPgor
X05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpFbnVtZXJhdG9yPF9PYmplY3RUeXBlPjo6YWxsT2Jq
ZWN0cygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoYWxsT2JqZWN0cykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFcnJvci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWViZjk4MThhYzdj
ODhhMWU1YmRlNjNlZmRkMTE2MGMyZDRhNDE0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBwCkBAIC0wLDAgKzEs
MTczIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
CisvLyBGb3VuZGF0aW9uL05TRXJyb3IuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNPYmpl
Y3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAi
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1l
c3BhY2UgTlMKK3sKK3VzaW5nIEVycm9yRG9tYWluID0gY2xhc3MgU3RyaW5nKjsKKworX05TX0NP
TlNUKEVycm9yRG9tYWluLCBDb2NvYUVycm9yRG9tYWluKTsKK19OU19DT05TVChFcnJvckRvbWFp
biwgUE9TSVhFcnJvckRvbWFpbik7CitfTlNfQ09OU1QoRXJyb3JEb21haW4sIE9TU3RhdHVzRXJy
b3JEb21haW4pOworX05TX0NPTlNUKEVycm9yRG9tYWluLCBNYWNoRXJyb3JEb21haW4pOworCit1
c2luZyBFcnJvclVzZXJJbmZvS2V5ID0gY2xhc3MgU3RyaW5nKjsKKworX05TX0NPTlNUKEVycm9y
VXNlckluZm9LZXksIFVuZGVybHlpbmdFcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5m
b0tleSwgTG9jYWxpemVkRGVzY3JpcHRpb25LZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9L
ZXksIExvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2Vy
SW5mb0tleSwgTG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uRXJyb3JLZXkpOworX05TX0NPTlNU
KEVycm9yVXNlckluZm9LZXksIExvY2FsaXplZFJlY292ZXJ5T3B0aW9uc0Vycm9yS2V5KTsKK19O
U19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBSZWNvdmVyeUF0dGVtcHRlckVycm9yS2V5KTsKK19O
U19DT05TVChFcnJvclVzZXJJbmZvS2V5LCBIZWxwQW5jaG9yRXJyb3JLZXkpOworX05TX0NPTlNU
KEVycm9yVXNlckluZm9LZXksIERlYnVnRGVzY3JpcHRpb25FcnJvcktleSk7CitfTlNfQ09OU1Qo
RXJyb3JVc2VySW5mb0tleSwgTG9jYWxpemVkRmFpbHVyZUVycm9yS2V5KTsKK19OU19DT05TVChF
cnJvclVzZXJJbmZvS2V5LCBTdHJpbmdFbmNvZGluZ0Vycm9yS2V5KTsKK19OU19DT05TVChFcnJv
clVzZXJJbmZvS2V5LCBVUkxFcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JVc2VySW5mb0tleSwg
RmlsZVBhdGhFcnJvcktleSk7CisKK2NsYXNzIEVycm9yIDogcHVibGljIENvcHlpbmc8RXJyb3I+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIEVycm9yKiAgICAgZXJyb3IoRXJyb3JEb21haW4gZG9t
YWluLCBJbnRlZ2VyIGNvZGUsIGNsYXNzIERpY3Rpb25hcnkqIHBEaWN0aW9uYXJ5KTsKKworICAg
IHN0YXRpYyBFcnJvciogICAgIGFsbG9jKCk7CisgICAgRXJyb3IqICAgICAgICAgICAgaW5pdCgp
OworICAgIEVycm9yKiAgICAgICAgICAgIGluaXQoRXJyb3JEb21haW4gZG9tYWluLCBJbnRlZ2Vy
IGNvZGUsIGNsYXNzIERpY3Rpb25hcnkqIHBEaWN0aW9uYXJ5KTsKKworICAgIEludGVnZXIgICAg
ICAgICAgIGNvZGUoKSBjb25zdDsKKyAgICBFcnJvckRvbWFpbiAgICAgICBkb21haW4oKSBjb25z
dDsKKyAgICBjbGFzcyBEaWN0aW9uYXJ5KiB1c2VySW5mbygpIGNvbnN0OworCisgICAgY2xhc3Mg
U3RyaW5nKiAgICAgbG9jYWxpemVkRGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBjbGFzcyBBcnJh
eSogICAgICBsb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnMoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJp
bmcqICAgICBsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24oKSBjb25zdDsKKyAgICBjbGFzcyBT
dHJpbmcqICAgICBsb2NhbGl6ZWRGYWlsdXJlUmVhc29uKCkgY29uc3Q7Cit9OworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX1BSSVZBVEVf
REVGX0NPTlNUKE5TOjpFcnJvckRvbWFpbiwgQ29jb2FFcnJvckRvbWFpbik7CitfTlNfUFJJVkFU
RV9ERUZfQ09OU1QoTlM6OkVycm9yRG9tYWluLCBQT1NJWEVycm9yRG9tYWluKTsKK19OU19QUklW
QVRFX0RFRl9DT05TVChOUzo6RXJyb3JEb21haW4sIE9TU3RhdHVzRXJyb3JEb21haW4pOworX05T
X1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvckRvbWFpbiwgTWFjaEVycm9yRG9tYWluKTsKKwor
X05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBVbmRlcmx5aW5nRXJy
b3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBMb2Nh
bGl6ZWREZXNjcmlwdGlvbktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNl
ckluZm9LZXksIExvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleSk7CitfTlNfUFJJVkFURV9E
RUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIExvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlv
bkVycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwg
TG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNU
KE5TOjpFcnJvclVzZXJJbmZvS2V5LCBSZWNvdmVyeUF0dGVtcHRlckVycm9yS2V5KTsKK19OU19Q
UklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgSGVscEFuY2hvckVycm9yS2V5
KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgRGVidWdEZXNj
cmlwdGlvbkVycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5m
b0tleSwgTG9jYWxpemVkRmFpbHVyZUVycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChO
Uzo6RXJyb3JVc2VySW5mb0tleSwgU3RyaW5nRW5jb2RpbmdFcnJvcktleSk7CitfTlNfUFJJVkFU
RV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIFVSTEVycm9yS2V5KTsKK19OU19QUklW
QVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgRmlsZVBhdGhFcnJvcktleSk7CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpFcnJvciogTlM6OkVycm9yOjplcnJvcihFcnJvckRvbWFpbiBkb21haW4sIEludGVn
ZXIgY29kZSwgY2xhc3MgRGljdGlvbmFyeSogcERpY3Rpb25hcnkpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8RXJyb3IqPihfTlNfUFJJVkFURV9DTFMoTlNFcnJvciksIF9OU19Q
UklWQVRFX1NFTChlcnJvcldpdGhEb21haW5fY29kZV91c2VySW5mb18pLCBkb21haW4sIGNvZGUs
IHBEaWN0aW9uYXJ5KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkVycm9yKiBOUzo6RXJyb3I6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjphbGxvYzxFcnJvcj4oX05TX1BSSVZBVEVfQ0xTKE5TRXJyb3Ip
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19OU19JTkxJTkUgTlM6OkVycm9yKiBOUzo6RXJyb3I6OmluaXQoKQoreworICAgIHJldHVybiBP
YmplY3Q6OmluaXQ8RXJyb3I+KCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpFcnJvciogTlM6OkVycm9yOjppbml0
KEVycm9yRG9tYWluIGRvbWFpbiwgSW50ZWdlciBjb2RlLCBjbGFzcyBEaWN0aW9uYXJ5KiBwRGlj
dGlvbmFyeSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxFcnJvcio+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChpbml0V2l0aERvbWFpbl9jb2RlX3VzZXJJbmZvXyksIGRvbWFpbiwg
Y29kZSwgcERpY3Rpb25hcnkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6SW50ZWdlciBOUzo6RXJyb3I6OmNvZGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEludGVnZXI+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChjb2RlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpFcnJvckRvbWFpbiBOUzo6RXJy
b3I6OmRvbWFpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RXJy
b3JEb21haW4+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkb21haW4pKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRp
Y3Rpb25hcnkqIE5TOjpFcnJvcjo6dXNlckluZm8oKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodXNlcklu
Zm8pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkVycm9yOjpsb2NhbGl6ZWREZXNjcmlwdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKGxvY2FsaXplZERlc2NyaXB0aW9uKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpB
cnJheSogTlM6OkVycm9yOjpsb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGxvY2FsaXplZFJlY292ZXJ5T3B0aW9ucykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6RXJy
b3I6OmxvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvY2FsaXpl
ZFJlY292ZXJ5U3VnZ2VzdGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6RXJyb3I6Omxv
Y2FsaXplZEZhaWx1cmVSZWFzb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb2NhbGl6ZWRGYWlsdXJlUmVh
c29uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNMb2NrLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
TG9jay5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjI3ZGUwODE5NGYzNDI0ODk4ZmMxZmIyMzc1ZjYyM2Q0ODc4
YjQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9G
b3VuZGF0aW9uL05TTG9jay5ocHAKQEAgLTAsMCArMSwxMDUgQEAKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNMb2NrLmhw
cAorLy8KKy8vIFNlZSBMSUNFTlNFLnR4dCBmb3IgdGhpcyBwcm9qZWN0IGxpY2Vuc2luZyBpbmZv
cm1hdGlvbi4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU09iamVj
dC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIK
KyNpbmNsdWRlICJOU0RhdGUuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xh
c3MsIGNsYXNzIF9CYXNlID0gY2xhc3MgT2JqZWN0PgorY2xhc3MgTG9ja2luZyA6IHB1YmxpYyBf
QmFzZQoreworcHVibGljOgorICAgIHZvaWQgbG9jaygpOworICAgIHZvaWQgdW5sb2NrKCk7Cit9
OworCitjbGFzcyBDb25kaXRpb24gOiBwdWJsaWMgTG9ja2luZzxDb25kaXRpb24+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIENvbmRpdGlvbiogYWxsb2MoKTsKKworICAgIENvbmRpdGlvbiogICAg
ICAgIGluaXQoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHdhaXQoKTsKKyAgICBib29sICAg
ICAgICAgICAgICB3YWl0VW50aWxEYXRlKERhdGUqIHBMaW1pdCk7CisgICAgdm9pZCAgICAgICAg
ICAgICAgc2lnbmFsKCk7CisgICAgdm9pZCAgICAgICAgICAgICAgYnJvYWRjYXN0KCk7Cit9Owor
Cit9IC8vIE5TCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCit0ZW1wbGF0ZTxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9CYXNlIC8qID0gTlM6Ok9iamVjdCAq
Lz4KK19OU19JTkxJTkUgdm9pZCBOUzo6TG9ja2luZzxfQ2xhc3MsIF9CYXNlPjo6bG9jaygpCit7
CisgICAgTlM6Ok9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGxvY2spKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK3RlbXBsYXRlPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgLyogPSBOUzo6T2JqZWN0
ICovPgorX05TX0lOTElORSB2b2lkIE5TOjpMb2NraW5nPF9DbGFzcywgX0Jhc2U+Ojp1bmxvY2so
KQoreworICAgIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRF
X1NFTCh1bmxvY2spKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkNvbmRpdGlvbiogTlM6OkNvbmRpdGlvbjo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxOUzo6Q29uZGl0aW9uPihfTlNf
UFJJVkFURV9DTFMoTlNDb25kaXRpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkNvbmRpdGlvbiogTlM6OkNv
bmRpdGlvbjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TlM6OkNvbmRp
dGlvbj4oKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6Q29uZGl0aW9uOjp3YWl0KCkKK3sKKyAgICBOUzo6
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwod2FpdCkpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBib29sIE5TOjpDb25kaXRpb246OndhaXRVbnRpbERhdGUoTlM6OkRhdGUqIHBMaW1p
dCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05T
X1BSSVZBVEVfU0VMKHdhaXRVbnRpbERhdGVfKSwgcExpbWl0KTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6
Q29uZGl0aW9uOjpzaWduYWwoKQoreworICAgIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChzaWduYWwpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6Q29uZGl0
aW9uOjpicm9hZGNhc3QoKQoreworICAgIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChicm9hZGNhc3QpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNO
b3RpZmljYXRpb24uaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNOb3RpZmljYXRpb24uaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhYmJjOWY1ODA2YjY2NTAxZDM3OTU0
YjhlZjUwZTYzMmY1YzJkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAKQEAgLTAsMCArMSw2NyBA
QAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8g
Rm91bmRhdGlvbi9OU05vdGlmaWNhdGlvbi5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU0Rp
Y3Rpb25hcnkuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1N0cmlu
Zy5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK3VzaW5nIE5vdGlmaWNh
dGlvbk5hbWUgPSBjbGFzcyBTdHJpbmcqOworCitjbGFzcyBOb3RpZmljYXRpb24gOiBwdWJsaWMg
TlM6OlJlZmVyZW5jaW5nPE5vdGlmaWNhdGlvbj4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5n
KiAgICAgbmFtZSgpIGNvbnN0OworICAgIE5TOjpPYmplY3QqICAgICBvYmplY3QoKSBjb25zdDsK
KyAgICBOUzo6RGljdGlvbmFyeSogdXNlckluZm8oKSBjb25zdDsKK307Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpT
dHJpbmcqIE5TOjpOb3RpZmljYXRpb246Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobmFtZSkp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6T2JqZWN0KiBOUzo6Tm90aWZpY2F0aW9uOjpvYmplY3QoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpPYmplY3QqPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwob2JqZWN0KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6Tm90aWZp
Y2F0aW9uOjp1c2VySW5mbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OkRpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodXNlckluZm8pKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU051bWJlci5o
cHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU051bWJlci5o
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGQwZjY2ZjM3NGZiYzM5NjFkNTU1NjQ2MTYwMWYwZWU3NDllYmY0MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0
aW9uL05TTnVtYmVyLmhwcApAQCAtMCwwICsxLDUwMSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU051bWJlci5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNP
YmpDUnVudGltZS5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TVHlw
ZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworbmFtZXNwYWNlIE5TCit7CitjbGFzcyBWYWx1ZSA6IHB1YmxpYyBDb3B5aW5nPFZhbHVlPgor
eworcHVibGljOgorICAgIHN0YXRpYyBWYWx1ZSogdmFsdWUoY29uc3Qgdm9pZCogcFZhbHVlLCBj
b25zdCBjaGFyKiBwVHlwZSk7CisgICAgc3RhdGljIFZhbHVlKiB2YWx1ZShjb25zdCB2b2lkKiBw
UG9pbnRlcik7CisKKyAgICBzdGF0aWMgVmFsdWUqIGFsbG9jKCk7CisKKyAgICBWYWx1ZSogICAg
ICAgIGluaXQoY29uc3Qgdm9pZCogcFZhbHVlLCBjb25zdCBjaGFyKiBwVHlwZSk7CisgICAgVmFs
dWUqICAgICAgICBpbml0KGNvbnN0IGNsYXNzIENvZGVyKiBwQ29kZXIpOworCisgICAgdm9pZCAg
ICAgICAgICBnZXRWYWx1ZSh2b2lkKiBwVmFsdWUsIFVJbnRlZ2VyIHNpemUpIGNvbnN0OworICAg
IGNvbnN0IGNoYXIqICAgb2JqQ1R5cGUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgaXNF
cXVhbFRvVmFsdWUoVmFsdWUqIHBWYWx1ZSkgY29uc3Q7CisgICAgdm9pZCogICAgICAgICBwb2lu
dGVyVmFsdWUoKSBjb25zdDsKK307CisKK2NsYXNzIE51bWJlciA6IHB1YmxpYyBDb3B5aW5nPE51
bWJlciwgVmFsdWU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcihj
aGFyIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKHVuc2lnbmVkIGNoYXIg
dmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIoc2hvcnQgdmFsdWUpOworICAg
IHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIodW5zaWduZWQgc2hvcnQgdmFsdWUpOworICAgIHN0
YXRpYyBOdW1iZXIqICAgICBudW1iZXIoaW50IHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAg
ICAgbnVtYmVyKHVuc2lnbmVkIGludCB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51
bWJlcihsb25nIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKHVuc2lnbmVk
IGxvbmcgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIobG9uZyBsb25nIHZh
bHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyB2
YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcihmbG9hdCB2YWx1ZSk7CisgICAg
c3RhdGljIE51bWJlciogICAgIG51bWJlcihkb3VibGUgdmFsdWUpOworICAgIHN0YXRpYyBOdW1i
ZXIqICAgICBudW1iZXIoYm9vbCB2YWx1ZSk7CisKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgYWxs
b2MoKTsKKworICAgIE51bWJlciogICAgICAgICAgICBpbml0KGNvbnN0IGNsYXNzIENvZGVyKiBw
Q29kZXIpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KGNoYXIgdmFsdWUpOworICAgIE51
bWJlciogICAgICAgICAgICBpbml0KHVuc2lnbmVkIGNoYXIgdmFsdWUpOworICAgIE51bWJlciog
ICAgICAgICAgICBpbml0KHNob3J0IHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5p
dCh1bnNpZ25lZCBzaG9ydCB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQoaW50
IHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdCh1bnNpZ25lZCBpbnQgdmFsdWUp
OworICAgIE51bWJlciogICAgICAgICAgICBpbml0KGxvbmcgdmFsdWUpOworICAgIE51bWJlciog
ICAgICAgICAgICBpbml0KHVuc2lnbmVkIGxvbmcgdmFsdWUpOworICAgIE51bWJlciogICAgICAg
ICAgICBpbml0KGxvbmcgbG9uZyB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQo
dW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdChm
bG9hdCB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQoZG91YmxlIHZhbHVlKTsK
KyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdChib29sIHZhbHVlKTsKKworICAgIGNoYXIgICAg
ICAgICAgICAgICBjaGFyVmFsdWUoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjaGFyICAgICAgdW5z
aWduZWRDaGFyVmFsdWUoKSBjb25zdDsKKyAgICBzaG9ydCAgICAgICAgICAgICAgc2hvcnRWYWx1
ZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIHNob3J0ICAgICB1bnNpZ25lZFNob3J0VmFsdWUoKSBj
b25zdDsKKyAgICBpbnQgICAgICAgICAgICAgICAgaW50VmFsdWUoKSBjb25zdDsKKyAgICB1bnNp
Z25lZCBpbnQgICAgICAgdW5zaWduZWRJbnRWYWx1ZSgpIGNvbnN0OworICAgIGxvbmcgICAgICAg
ICAgICAgICBsb25nVmFsdWUoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nICAgICAgdW5zaWdu
ZWRMb25nVmFsdWUoKSBjb25zdDsKKyAgICBsb25nIGxvbmcgICAgICAgICAgbG9uZ0xvbmdWYWx1
ZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bnNpZ25lZExvbmdMb25nVmFsdWUo
KSBjb25zdDsKKyAgICBmbG9hdCAgICAgICAgICAgICAgZmxvYXRWYWx1ZSgpIGNvbnN0OworICAg
IGRvdWJsZSAgICAgICAgICAgICBkb3VibGVWYWx1ZSgpIGNvbnN0OworICAgIGJvb2wgICAgICAg
ICAgICAgICBib29sVmFsdWUoKSBjb25zdDsKKyAgICBJbnRlZ2VyICAgICAgICAgICAgaW50ZWdl
clZhbHVlKCkgY29uc3Q7CisgICAgVUludGVnZXIgICAgICAgICAgIHVuc2lnbmVkSW50ZWdlclZh
bHVlKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgIHN0cmluZ1ZhbHVlKCkgY29uc3Q7
CisKKyAgICBDb21wYXJpc29uUmVzdWx0ICAgY29tcGFyZShjb25zdCBOdW1iZXIqIHBPdGhlck51
bWJlcikgY29uc3Q7CisgICAgYm9vbCAgICAgICAgICAgICAgIGlzRXF1YWxUb051bWJlcihjb25z
dCBOdW1iZXIqIHBOdW1iZXIpIGNvbnN0OworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgIGRlc2Ny
aXB0aW9uV2l0aExvY2FsZShjb25zdCBPYmplY3QqIHBMb2NhbGUpIGNvbnN0OworfTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlZhbHVlKiBOUzo6VmFsdWU6OnZhbHVlKGNvbnN0IHZvaWQqIHBWYWx1ZSwgY29uc3Qg
Y2hhciogcFR5cGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VmFsdWUqPihf
TlNfUFJJVkFURV9DTFMoTlNWYWx1ZSksIF9OU19QUklWQVRFX1NFTCh2YWx1ZVdpdGhCeXRlc19v
YmpDVHlwZV8pLCBwVmFsdWUsIHBUeXBlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlZhbHVlKiBOUzo6VmFsdWU6
OnZhbHVlKGNvbnN0IHZvaWQqIHBQb2ludGVyKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPFZhbHVlKj4oX05TX1BSSVZBVEVfQ0xTKE5TVmFsdWUpLCBfTlNfUFJJVkFURV9TRUwo
dmFsdWVXaXRoUG9pbnRlcl8pLCBwUG9pbnRlcik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpWYWx1ZSogTlM6OlZh
bHVlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPFZhbHVlPihfTlNf
UFJJVkFURV9DTFMoTlNWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VmFsdWUqIE5TOjpWYWx1ZTo6aW5p
dChjb25zdCB2b2lkKiBwVmFsdWUsIGNvbnN0IGNoYXIqIHBUeXBlKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPFZhbHVlKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRo
Qnl0ZXNfb2JqQ1R5cGVfKSwgcFZhbHVlLCBwVHlwZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpWYWx1ZSogTlM6
OlZhbHVlOjppbml0KGNvbnN0IGNsYXNzIENvZGVyKiBwQ29kZXIpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8VmFsdWUqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhD
b2Rlcl8pLCBwQ29kZXIpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpWYWx1ZTo6Z2V0VmFsdWUodm9pZCog
cFZhbHVlLCBVSW50ZWdlciBzaXplKSBjb25zdAoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGdldFZhbHVlX3NpemVfKSwgcFZhbHVlLCBzaXpl
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19OU19JTkxJTkUgY29uc3QgY2hhciogTlM6OlZhbHVlOjpvYmpDVHlwZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Y29uc3QgY2hhcio+KHRoaXMsIF9OU19QUklW
QVRFX1NFTChvYmpDVHlwZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpWYWx1ZTo6aXNFcXVhbFRvVmFs
dWUoVmFsdWUqIHBWYWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaXNFcXVhbFRvVmFsdWVfKSwgcFZhbHVlKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgdm9pZCogTlM6OlZhbHVlOjpwb2ludGVyVmFsdWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocG9p
bnRlclZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcihjaGFy
IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19Q
UklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoQ2hhcl8pLCB2
YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcih1bnNpZ25lZCBj
aGFyIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9O
U19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoVW5zaWdu
ZWRDaGFyXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVy
KHNob3J0IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+
KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoU2hv
cnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIodW5z
aWduZWQgc2hvcnQgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVt
YmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldp
dGhVbnNpZ25lZFNob3J0XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJl
cjo6bnVtYmVyKGludCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
dW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVy
V2l0aEludF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJl
cih1bnNpZ25lZCBpbnQgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJl
cldpdGhVbnNpZ25lZEludF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1i
ZXI6Om51bWJlcihsb25nIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1i
ZXJXaXRoTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51
bWJlcih1bnNpZ25lZCBsb25nIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChu
dW1iZXJXaXRoVW5zaWduZWRMb25nXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6
Ok51bWJlcjo6bnVtYmVyKGxvbmcgbG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFU
RV9TRUwobnVtYmVyV2l0aExvbmdMb25nXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciog
TlM6Ok51bWJlcjo6bnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIp
LCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmdfKSwgdmFsdWUpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIoZmxvYXQgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5T
TnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhGbG9hdF8pLCB2YWx1ZSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcihkb3VibGUgdmFsdWUpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVt
YmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhEb3VibGVfKSwgdmFsdWUpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIoYm9vbCB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIp
LCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aEJvb2xfKSwgdmFsdWUpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
TnVtYmVyKiBOUzo6TnVtYmVyOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE51bWJlcj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1i
ZXIqIE5TOjpOdW1iZXI6OmluaXQoY29uc3QgQ29kZXIqIHBDb2RlcikKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdp
dGhDb2Rlcl8pLCBwQ29kZXIpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0
KGNoYXIgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQ2hhcl8pLCB2YWx1ZSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQodW5zaWduZWQgY2hhciB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwo
aW5pdFdpdGhVbnNpZ25lZENoYXJfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6
TnVtYmVyOjppbml0KHNob3J0IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aFNob3J0XyksIHZhbHVl
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdCh1bnNpZ25lZCBzaG9ydCB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoaW5pdFdpdGhVbnNpZ25lZFNob3J0XyksIHZhbHVlKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChpbnQgdmFsdWUpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRo
SW50XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdCh1bnNp
Z25lZCBpbnQgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVy
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoVW5zaWduZWRJbnRfKSwgdmFsdWUpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KGxvbmcgdmFsdWUpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGluaXRXaXRoTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6
OmluaXQodW5zaWduZWQgbG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhVbnNpZ25lZExvbmdf
KSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KGxvbmcgbG9u
ZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhMb25nTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQodW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChpbml0V2l0aFVuc2lnbmVkTG9uZ0xvbmdfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVt
YmVyKiBOUzo6TnVtYmVyOjppbml0KGZsb2F0IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aEZsb2F0
XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChkb3VibGUg
dmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGluaXRXaXRoRG91YmxlXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51
bWJlciogTlM6Ok51bWJlcjo6aW5pdChib29sIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aEJvb2xf
KSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBjaGFyIE5TOjpOdW1iZXI6OmNoYXJWYWx1ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Y2hhcj4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGNoYXJWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSB1bnNpZ25lZCBjaGFyIE5TOjpOdW1iZXI6OnVuc2ln
bmVkQ2hhclZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1
bnNpZ25lZCBjaGFyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodW5zaWduZWRDaGFyVmFsdWUpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgc2hvcnQgTlM6Ok51bWJlcjo6c2hvcnRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8c2hvcnQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzaG9y
dFZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIHVuc2lnbmVkIHNob3J0IE5TOjpOdW1iZXI6OnVuc2lnbmVkU2hv
cnRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5zaWdu
ZWQgc2hvcnQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh1bnNpZ25lZFNob3J0VmFsdWUpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgaW50IE5TOjpOdW1iZXI6OmludFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxpbnQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbnRWYWx1ZSkpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSB1bnNpZ25lZCBpbnQgTlM6Ok51bWJlcjo6dW5zaWduZWRJbnRWYWx1ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5zaWduZWQgaW50Pih0aGlzLCBf
TlNfUFJJVkFURV9TRUwodW5zaWduZWRJbnRWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBsb25nIE5TOjpOdW1i
ZXI6OmxvbmdWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
bG9uZz4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvbmdWYWx1ZSkpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB1bnNpZ25l
ZCBsb25nIE5TOjpOdW1iZXI6OnVuc2lnbmVkTG9uZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1bnNpZ25lZCBsb25nPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwodW5zaWduZWRMb25nVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgbG9uZyBsb25nIE5TOjpOdW1iZXI6Omxv
bmdMb25nVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGxv
bmcgbG9uZz4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvbmdMb25nVmFsdWUpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
dW5zaWduZWQgbG9uZyBsb25nIE5TOjpOdW1iZXI6OnVuc2lnbmVkTG9uZ0xvbmdWYWx1ZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5zaWduZWQgbG9uZyBsb25n
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwodW5zaWduZWRMb25nTG9uZ1ZhbHVlKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IGZsb2F0IE5TOjpOdW1iZXI6OmZsb2F0VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPGZsb2F0Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZmxvYXRWYWx1ZSkp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBkb3VibGUgTlM6Ok51bWJlcjo6ZG91YmxlVmFsdWUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGRvdWJsZT4odGhpcywgX05TX1BSSVZBVEVfU0VM
KGRvdWJsZVZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6Ok51bWJlcjo6Ym9vbFZhbHVlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJ
VkFURV9TRUwoYm9vbFZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpJbnRlZ2VyIE5TOjpOdW1iZXI6Omlu
dGVnZXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8SW50
ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGludGVnZXJWYWx1ZSkpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
VUludGVnZXIgTlM6Ok51bWJlcjo6dW5zaWduZWRJbnRlZ2VyVmFsdWUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwodW5zaWduZWRJbnRlZ2VyVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6Ok51bWJl
cjo6c3RyaW5nVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzdHJpbmdWYWx1ZSkpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBO
Uzo6Q29tcGFyaXNvblJlc3VsdCBOUzo6TnVtYmVyOjpjb21wYXJlKGNvbnN0IE51bWJlciogcE90
aGVyTnVtYmVyKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPENvbXBh
cmlzb25SZXN1bHQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChjb21wYXJlXyksIHBPdGhlck51bWJl
cik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIGJvb2wgTlM6Ok51bWJlcjo6aXNFcXVhbFRvTnVtYmVyKGNvbnN0IE51bWJl
ciogcE51bWJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29s
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaXNFcXVhbFRvTnVtYmVyXyksIHBOdW1iZXIpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6U3RyaW5nKiBOUzo6TnVtYmVyOjpkZXNjcmlwdGlvbldpdGhMb2NhbGUoY29uc3Qg
T2JqZWN0KiBwTG9jYWxlKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkZXNjcmlwdGlvbldpdGhMb2NhbGVfKSwg
cExvY2FsZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNPYmpDUnVudGltZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9OU09iakNSdW50aW1lLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGU2NTA2NmU1OGNhNzA1NzQy
MGU2ZjU4OWU3OTVhMmVkZmM2YWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNPYmpDUnVudGltZS5ocHAKQEAgLTAsMCArMSw0
MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwor
Ly8gRm91bmRhdGlvbi9OU09iakNSdW50aW1lLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIw
MjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5T
VHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworbmFtZXNwYWNlIE5TCit7CisKK19OU19FTlVNKEludGVnZXIsIENvbXBhcmlzb25SZXN1
bHQpIHsKKyAgICBPcmRlcmVkQXNjZW5kaW5nID0gLTEsCisgICAgT3JkZXJlZFNhbWUgPSAwLAor
ICAgIE9yZGVyZWREZXNjZW5kaW5nID0gMSwKK307CisKK2NvbnN0IEludGVnZXIgTm90Rm91bmQg
PSBJbnRlZ2VyTWF4OworCit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNPYmplY3QuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNPYmplY3QuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ZTFjNjMyYzlkNWJhMWViNjQ0N2Fh
MmU5YWI1MzAxZmFiNmYyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU09iamVjdC5ocHAKQEAgLTAsMCArMSwyOTcgQEAKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5k
YXRpb24vTlNPYmplY3QuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNw
cmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhwcCIK
KyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworI2luY2x1ZGUgPG9iamMvbWVzc2FnZS5oPgorI2lu
Y2x1ZGUgPG9iamMvcnVudGltZS5oPgorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMK
K3sKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9CYXNlID0gY2xhc3MgT2JqZWN0Pgor
Y2xhc3MgUmVmZXJlbmNpbmcgOiBwdWJsaWMgX0Jhc2UKK3sKK3B1YmxpYzoKKyAgICBfQ2xhc3Mq
ICByZXRhaW4oKTsKKyAgICB2b2lkICAgICByZWxlYXNlKCk7CisKKyAgICBfQ2xhc3MqICBhdXRv
cmVsZWFzZSgpOworCisgICAgVUludGVnZXIgcmV0YWluQ291bnQoKSBjb25zdDsKK307CisKK3Rl
bXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9CYXNlID0gY2xhc3MgT2JqZWN0PgorY2xhc3Mg
Q29weWluZyA6IHB1YmxpYyBSZWZlcmVuY2luZzxfQ2xhc3MsIF9CYXNlPgoreworcHVibGljOgor
ICAgIF9DbGFzcyogY29weSgpIGNvbnN0OworfTsKKworY2xhc3MgT2JqZWN0IDogcHVibGljIFJl
ZmVyZW5jaW5nPE9iamVjdCwgb2JqY19vYmplY3Q+Cit7CitwdWJsaWM6CisgICAgVUludGVnZXIg
ICAgICBoYXNoKCkgY29uc3Q7CisgICAgYm9vbCAgICAgICAgICBpc0VxdWFsKGNvbnN0IE9iamVj
dCogcE9iamVjdCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJpbmcqIGRlc2NyaXB0aW9uKCkgY29u
c3Q7CisgICAgY2xhc3MgU3RyaW5nKiBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3Q7CisKK3Byb3Rl
Y3RlZDoKKyAgICBmcmllbmQgY2xhc3MgUmVmZXJlbmNpbmc8T2JqZWN0LCBvYmpjX29iamVjdD47
CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzPgorICAgIHN0YXRpYyBfQ2xhc3MqIGFsbG9j
KGNvbnN0IGNoYXIqIHBDbGFzc05hbWUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBfQ2xhc3M+Cisg
ICAgc3RhdGljIF9DbGFzcyogYWxsb2MoY29uc3Qgdm9pZCogcENsYXNzKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX0NsYXNzPgorICAgIF9DbGFzcyogaW5pdCgpOworCisgICAgdGVtcGxhdGUgPGNs
YXNzIF9Ec3Q+CisgICAgc3RhdGljIF9Ec3QgICAgICAgICAgICAgICAgICAgYnJpZGdpbmdDYXN0
KGNvbnN0IHZvaWQqIHBPYmopOworICAgIHN0YXRpYyBjbGFzcyBNZXRob2RTaWduYXR1cmUqIG1l
dGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yKGNvbnN0IHZvaWQqIHBPYmosIFNFTCBzZWxlY3Rvcik7
CisgICAgc3RhdGljIGJvb2wgICAgICAgICAgICAgICAgICAgcmVzcG9uZHNUb1NlbGVjdG9yKGNv
bnN0IHZvaWQqIHBPYmosIFNFTCBzZWxlY3Rvcik7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9U
eXBlPgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBkb2VzUmVxdWlyZU1zZ1NlbmRTdHJldCgp
OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZS4uLiBfQXJncz4KKyAgICBz
dGF0aWMgX1JldCBzZW5kTWVzc2FnZShjb25zdCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IsIF9B
cmdzLi4uIGFyZ3MpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZS4uLiBf
QXJncz4KKyAgICBzdGF0aWMgX1JldCBzZW5kTWVzc2FnZVNhZmUoY29uc3Qgdm9pZCogcE9iaiwg
U0VMIHNlbGVjdG9yLCBfQXJncy4uLiBhcmdzKTsKKworcHJpdmF0ZToKKyAgICBPYmplY3QoKSA9
IGRlbGV0ZTsKKyAgICBPYmplY3QoY29uc3QgT2JqZWN0JikgPSBkZWxldGU7CisgICAgfk9iamVj
dCgpID0gZGVsZXRlOworCisgICAgT2JqZWN0JiBvcGVyYXRvcj0oY29uc3QgT2JqZWN0JikgPSBk
ZWxldGU7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgLyogPSBPYmplY3Qg
Ki8+CitfTlNfSU5MSU5FIF9DbGFzcyogTlM6OlJlZmVyZW5jaW5nPF9DbGFzcywgX0Jhc2U+Ojpy
ZXRhaW4oKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPF9DbGFzcyo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChyZXRhaW4pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9C
YXNlIC8qID0gT2JqZWN0ICovPgorX05TX0lOTElORSB2b2lkIE5TOjpSZWZlcmVuY2luZzxfQ2xh
c3MsIF9CYXNlPjo6cmVsZWFzZSgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwocmVsZWFzZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcywgY2xh
c3MgX0Jhc2UgLyogPSBPYmplY3QgKi8+CitfTlNfSU5MSU5FIF9DbGFzcyogTlM6OlJlZmVyZW5j
aW5nPF9DbGFzcywgX0Jhc2U+OjphdXRvcmVsZWFzZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8X0NsYXNzKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGF1dG9yZWxlYXNlKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0
ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSAvKiA9IE9iamVjdCAqLz4KK19OU19J
TkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpSZWZlcmVuY2luZzxfQ2xhc3MsIF9CYXNlPjo6cmV0YWlu
Q291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2Vy
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwocmV0YWluQ291bnQpKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xh
c3MsIGNsYXNzIF9CYXNlIC8qID0gT2JqZWN0ICovPgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpD
b3B5aW5nPF9DbGFzcywgX0Jhc2U+Ojpjb3B5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxfQ2xhc3MqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY29weSkpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxh
dGUgPGNsYXNzIF9Ec3Q+CitfTlNfSU5MSU5FIF9Ec3QgTlM6Ok9iamVjdDo6YnJpZGdpbmdDYXN0
KGNvbnN0IHZvaWQqIHBPYmopCit7CisjaWYgX19PQkpDX18KKyAgICByZXR1cm4gKF9fYnJpZGdl
IF9Ec3QpcE9iajsKKyNlbHNlCisgICAgcmV0dXJuIChfRHN0KXBPYmo7CisjZW5kaWYgLy8gX19P
QkpDX18KK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBfVHlwZT4KK19OU19JTkxJTkUgY29uc3RleHByIGJvb2wg
TlM6Ok9iamVjdDo6ZG9lc1JlcXVpcmVNc2dTZW5kU3RyZXQoKQoreworI2lmIChkZWZpbmVkKF9f
aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pKQorICAgIGNvbnN0ZXhwciBzaXplX3Qga1N0
cnVjdExpbWl0ID0gKHNpemVvZihzdGQ6OnVpbnRwdHJfdCkgPDwgMSk7CisKKyAgICByZXR1cm4g
c2l6ZW9mKF9UeXBlKSA+IGtTdHJ1Y3RMaW1pdDsKKyNlbGlmIGRlZmluZWQoX19hcm02NF9fKQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbGlmIGRlZmluZWQoX19hcm1fXykKKyAgICBjb25zdGV4cHIg
c2l6ZV90IGtTdHJ1Y3RMaW1pdCA9IHNpemVvZihzdGQ6OnVpbnRwdHJfdCk7CisKKyAgICByZXR1
cm4gc3RkOjppc19jbGFzcyhfVHlwZSkgJiYgKHNpemVvZihfVHlwZSkgPiBrU3RydWN0TGltaXQp
OworI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlISIKKyNlbmRpZgorfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxh
dGUgPD4KK19OU19JTkxJTkUgY29uc3RleHByIGJvb2wgTlM6Ok9iamVjdDo6ZG9lc1JlcXVpcmVN
c2dTZW5kU3RyZXQ8dm9pZD4oKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBfUmV0LCB0eXBlbmFtZS4uLiBfQXJncz4KK19OU19JTkxJTkUgX1JldCBOUzo6T2JqZWN0Ojpz
ZW5kTWVzc2FnZShjb25zdCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IsIF9BcmdzLi4uIGFyZ3Mp
Cit7CisjaWYgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykpCisgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PF9SZXQ+KCkpCisgICAgeworICAg
ICAgICB1c2luZyBTZW5kTWVzc2FnZVByb2NGcHJldCA9IF9SZXQgKCopKGNvbnN0IHZvaWQqLCBT
RUwsIF9BcmdzLi4uKTsKKworICAgICAgICBjb25zdCBTZW5kTWVzc2FnZVByb2NGcHJldCBwUHJv
YyA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2VuZE1lc3NhZ2VQcm9jRnByZXQ+KCZvYmpjX21zZ1NlbmRf
ZnByZXQpOworCisgICAgICAgIHJldHVybiAoKnBQcm9jKShwT2JqLCBzZWxlY3RvciwgYXJncy4u
Lik7CisgICAgfQorICAgIGVsc2UKKyNlbmRpZiAvLyAoIGRlZmluZWQoIF9faTM4Nl9fICkgIHx8
IGRlZmluZWQoIF9feDg2XzY0X18gKSAgKQorI2lmICFkZWZpbmVkKF9fYXJtNjRfXykKKyAgICAg
ICAgaWYgY29uc3RleHByIChkb2VzUmVxdWlyZU1zZ1NlbmRTdHJldDxfUmV0PigpKQorICAgIHsK
KyAgICAgICAgdXNpbmcgU2VuZE1lc3NhZ2VQcm9jU3RyZXQgPSB2b2lkICgqKShfUmV0KiwgY29u
c3Qgdm9pZCosIFNFTCwgX0FyZ3MuLi4pOworCisgICAgICAgIGNvbnN0IFNlbmRNZXNzYWdlUHJv
Y1N0cmV0IHBQcm9jID0gcmVpbnRlcnByZXRfY2FzdDxTZW5kTWVzc2FnZVByb2NTdHJldD4oJm9i
amNfbXNnU2VuZF9zdHJldCk7CisgICAgICAgIF9SZXQgICAgICAgICAgICAgICAgICAgICAgIHJl
dDsKKworICAgICAgICAoKnBQcm9jKSgmcmV0LCBwT2JqLCBzZWxlY3RvciwgYXJncy4uLik7CisK
KyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmIC8vICFkZWZpbmVk
KCBfX2FybTY0X18gKQorICAgIHsKKyAgICAgICAgdXNpbmcgU2VuZE1lc3NhZ2VQcm9jID0gX1Jl
dCAoKikoY29uc3Qgdm9pZCosIFNFTCwgX0FyZ3MuLi4pOworCisgICAgICAgIGNvbnN0IFNlbmRN
ZXNzYWdlUHJvYyBwUHJvYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2VuZE1lc3NhZ2VQcm9jPigmb2Jq
Y19tc2dTZW5kKTsKKworICAgICAgICByZXR1cm4gKCpwUHJvYykocE9iaiwgc2VsZWN0b3IsIGFy
Z3MuLi4pOworICAgIH0KK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok1ldGhvZFNpZ25hdHVyZSogTlM6Ok9iamVjdDo6
bWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3IoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9y
KQoreworICAgIHJldHVybiBzZW5kTWVzc2FnZTxNZXRob2RTaWduYXR1cmUqPihwT2JqLCBfTlNf
UFJJVkFURV9TRUwobWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3JfKSwgc2VsZWN0b3IpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBib29sIE5TOjpPYmplY3Q6OnJlc3BvbmRzVG9TZWxlY3Rvcihjb25zdCB2b2lkKiBwT2Jq
LCBTRUwgc2VsZWN0b3IpCit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlPGJvb2w+KHBPYmosIF9O
U19QUklWQVRFX1NFTChyZXNwb25kc1RvU2VsZWN0b3JfKSwgc2VsZWN0b3IpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPHR5
cGVuYW1lIF9SZXQsIHR5cGVuYW1lLi4uIF9BcmdzPgorX05TX0lOTElORSBfUmV0IE5TOjpPYmpl
Y3Q6OnNlbmRNZXNzYWdlU2FmZShjb25zdCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IsIF9Bcmdz
Li4uIGFyZ3MpCit7CisgICAgaWYgKChyZXNwb25kc1RvU2VsZWN0b3IocE9iaiwgc2VsZWN0b3Ip
KSB8fCAobnVsbHB0ciAhPSBtZXRob2RTaWduYXR1cmVGb3JTZWxlY3RvcihwT2JqLCBzZWxlY3Rv
cikpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlPF9SZXQ+KHBPYmosIHNlbGVj
dG9yLCBhcmdzLi4uKTsKKyAgICB9CisKKyAgICBpZiBjb25zdGV4cHIgKCFzdGQ6OmlzX3ZvaWQ8
X1JldD46OnZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNs
YXNzIF9DbGFzcz4KK19OU19JTkxJTkUgX0NsYXNzKiBOUzo6T2JqZWN0OjphbGxvYyhjb25zdCBj
aGFyKiBwQ2xhc3NOYW1lKQoreworICAgIHJldHVybiBzZW5kTWVzc2FnZTxfQ2xhc3MqPihvYmpj
X2xvb2tVcENsYXNzKHBDbGFzc05hbWUpLCBfTlNfUFJJVkFURV9TRUwoYWxsb2MpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRl
IDxjbGFzcyBfQ2xhc3M+CitfTlNfSU5MSU5FIF9DbGFzcyogTlM6Ok9iamVjdDo6YWxsb2MoY29u
c3Qgdm9pZCogcENsYXNzKQoreworICAgIHJldHVybiBzZW5kTWVzc2FnZTxfQ2xhc3MqPihwQ2xh
c3MsIF9OU19QUklWQVRFX1NFTChhbGxvYykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVtcGxhdGUgPGNsYXNzIF9DbGFzcz4KK19OU19J
TkxJTkUgX0NsYXNzKiBOUzo6T2JqZWN0Ojppbml0KCkKK3sKKyAgICByZXR1cm4gc2VuZE1lc3Nh
Z2U8X0NsYXNzKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXQpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE5TOjpPYmplY3Q6Omhhc2goKSBjb25zdAoreworICAgIHJldHVybiBzZW5kTWVzc2Fn
ZTxVSW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGhhc2gpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBO
Uzo6T2JqZWN0Ojppc0VxdWFsKGNvbnN0IE9iamVjdCogcE9iamVjdCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzRXF1YWxfKSwg
cE9iamVjdCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpPYmplY3Q6OmRlc2NyaXB0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGRlc2NyaXB0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpPYmplY3Q6OmRl
YnVnRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJldHVybiBzZW5kTWVzc2FnZVNhZmU8U3Ry
aW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGRlYnVnRGVzY3JpcHRpb24pKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1ByaXZhdGUuaHBwIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQcml2YXRlLmhwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hOGE0ZmE1NjcyMjMyMzIyMDY1NGExZTBhNWIxMzExMWU4Y2E3ODcxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNQcml2YXRlLmhwcApAQCAtMCwwICsxLDQ4OCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU1ByaXZhdGUuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgPG9iamMv
cnVudGltZS5oPgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworI2RlZmluZSBfTlNfUFJJVkFURV9DTFMoc3ltYm9sKSAoUHJpdmF0ZTo6Q2xhc3M6OnNf
ayMjc3ltYm9sKQorI2RlZmluZSBfTlNfUFJJVkFURV9TRUwoYWNjZXNzb3IpIChQcml2YXRlOjpT
ZWxlY3Rvcjo6c19rIyNhY2Nlc3NvcikKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyNpZiBkZWZpbmVkKE5TX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04p
CisKKyNkZWZpbmUgX05TX1BSSVZBVEVfVklTSUJJTElUWSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJoaWRkZW4iKSkpCisjZGVmaW5lIF9OU19QUklWQVRFX0lNUE9SVCBfX2F0dHJpYnV0ZV9f
KCh3ZWFrX2ltcG9ydCkpCisKKyNpZiBfX09CSkNfXworI2RlZmluZSBfTlNfUFJJVkFURV9PQkpD
X0xPT0tVUF9DTEFTUyhzeW1ib2wpICgoX19icmlkZ2Ugdm9pZCopb2JqY19sb29rVXBDbGFzcygj
c3ltYm9sKSkKKyNlbHNlCisjZGVmaW5lIF9OU19QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5
bWJvbCkgb2JqY19sb29rVXBDbGFzcygjc3ltYm9sKQorI2VuZGlmIC8vIF9fT0JKQ19fCisKKyNk
ZWZpbmUgX05TX1BSSVZBVEVfREVGX0NMUyhzeW1ib2wpIHZvaWQqIHNfayMjc3ltYm9sIF9OU19Q
UklWQVRFX1ZJU0lCSUxJVFkgPSBfTlNfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wp
OworI2RlZmluZSBfTlNfUFJJVkFURV9ERUZfUFJPKHN5bWJvbCkKKyNkZWZpbmUgX05TX1BSSVZB
VEVfREVGX1NFTChhY2Nlc3Nvciwgc3ltYm9sKSBTRUwgc19rIyNhY2Nlc3NvciBfTlNfUFJJVkFU
RV9WSVNJQklMSVRZID0gc2VsX3JlZ2lzdGVyTmFtZShzeW1ib2wpOworI2RlZmluZSBfTlNfUFJJ
VkFURV9ERUZfQ09OU1QodHlwZSwgc3ltYm9sKSAgICAgICAgICAgICAgXAorICAgIF9OU19FWFRF
Uk4gdHlwZSBjb25zdCBOUyMjc3ltYm9sIF9OU19QUklWQVRFX0lNUE9SVDsgXAorICAgIHR5cGUg
Y29uc3QgICAgICAgICAgICAgICAgICAgICAgIE5TOjpzeW1ib2wgPSAobnVsbHB0ciAhPSAmTlMj
I3N5bWJvbCkgPyBOUyMjc3ltYm9sIDogbnVsbHB0cjsKKworI2Vsc2UKKworI2RlZmluZSBfTlNf
UFJJVkFURV9ERUZfQ0xTKHN5bWJvbCkgZXh0ZXJuIHZvaWQqIHNfayMjc3ltYm9sOworI2RlZmlu
ZSBfTlNfUFJJVkFURV9ERUZfUFJPKHN5bWJvbCkKKyNkZWZpbmUgX05TX1BSSVZBVEVfREVGX1NF
TChhY2Nlc3Nvciwgc3ltYm9sKSBleHRlcm4gU0VMIHNfayMjYWNjZXNzb3I7CisjZGVmaW5lIF9O
U19QUklWQVRFX0RFRl9DT05TVCh0eXBlLCBzeW1ib2wpCisKKyNlbmRpZiAvLyBOU19QUklWQVRF
X0lNUExFTUVOVEFUSU9OCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFt
ZXNwYWNlIENsYXNzCisgICAgeworCisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNBcnJh
eSk7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNBdXRvcmVsZWFzZVBvb2wpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TQnVuZGxlKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX0NMUyhOU0NvbmRpdGlvbik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNEYXRl
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU0RpY3Rpb25hcnkpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfQ0xTKE5TRXJyb3IpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xT
KE5TTnVtYmVyKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU09iamVjdCk7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNQcm9jZXNzSW5mbyk7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9DTFMoTlNTdHJpbmcpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TVVJM
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU1ZhbHVlKTsKKworICAgIH0gLy8gQ2xh
c3MKK30gLy8gUHJpdmF0ZQorfSAvLyBNVEwKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworbmFtZXNwYWNlIFByaXZhdGUK
K3sKKyAgICBuYW1lc3BhY2UgUHJvdG9jb2wKKyAgICB7CisKKyAgICB9IC8vIFByb3RvY29sCit9
IC8vIFByaXZhdGUKK30gLy8gTlMKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAg
ICBuYW1lc3BhY2UgU2VsZWN0b3IKKyAgICB7CisKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChhZGRPYmplY3RfLAorICAgICAgICAgICAgImFkZE9iamVjdDoiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChhY3RpdmVQcm9jZXNzb3JDb3VudCwKKyAgICAgICAgICAgICJhY3RpdmVQ
cm9jZXNzb3JDb3VudCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFsbEJ1bmRsZXMs
CisgICAgICAgICAgICAiYWxsQnVuZGxlcyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGFsbEZyYW1ld29ya3MsCisgICAgICAgICAgICAiYWxsRnJhbWV3b3JrcyIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGFsbE9iamVjdHMsCisgICAgICAgICAgICAiYWxsT2JqZWN0cyIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFsbG9jLAorICAgICAgICAgICAgImFsbG9j
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYXBwU3RvcmVSZWNlaXB0VVJMLAorICAg
ICAgICAgICAgImFwcFN0b3JlUmVjZWlwdFVSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGFyZ3VtZW50cywKKyAgICAgICAgICAgICJhcmd1bWVudHMiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChhcnJheSwKKyAgICAgICAgICAgICJhcnJheSIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGFycmF5V2l0aE9iamVjdF8sCisgICAgICAgICAgICAiYXJyYXlXaXRo
T2JqZWN0OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFycmF5V2l0aE9iamVjdHNf
Y291bnRfLAorICAgICAgICAgICAgImFycmF5V2l0aE9iamVjdHM6Y291bnQ6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoYXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCwK
KyAgICAgICAgICAgICJhdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkIik7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYXV0b3JlbGVhc2UsCisgICAgICAgICAgICAiYXV0b3Jl
bGVhc2UiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChiZWdpbkFjdGl2aXR5V2l0aE9w
dGlvbnNfcmVhc29uXywKKyAgICAgICAgICAgICJiZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6cmVh
c29uOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJvb2xWYWx1ZSwKKyAgICAgICAg
ICAgICJib29sVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChicm9hZGNhc3Qs
CisgICAgICAgICAgICAiYnJvYWRjYXN0Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
YnVpbHRJblBsdWdJbnNQYXRoLAorICAgICAgICAgICAgImJ1aWx0SW5QbHVnSW5zUGF0aCIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1aWx0SW5QbHVnSW5zVVJMLAorICAgICAgICAg
ICAgImJ1aWx0SW5QbHVnSW5zVVJMIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYnVu
ZGxlSWRlbnRpZmllciwKKyAgICAgICAgICAgICJidW5kbGVJZGVudGlmaWVyIik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoYnVuZGxlUGF0aCwKKyAgICAgICAgICAgICJidW5kbGVQYXRo
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYnVuZGxlVVJMLAorICAgICAgICAgICAg
ImJ1bmRsZVVSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRsZVdpdGhQYXRo
XywKKyAgICAgICAgICAgICJidW5kbGVXaXRoUGF0aDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChidW5kbGVXaXRoVVJMXywKKyAgICAgICAgICAgICJidW5kbGVXaXRoVVJMOiIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNoYXJhY3RlckF0SW5kZXhfLAorICAgICAgICAg
ICAgImNoYXJhY3RlckF0SW5kZXg6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoY2hh
clZhbHVlLAorICAgICAgICAgICAgImNoYXJWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGNvdW50QnlFbnVtZXJhdGluZ1dpdGhTdGF0ZV9vYmplY3RzX2NvdW50XywKKyAgICAg
ICAgICAgICJjb3VudEJ5RW51bWVyYXRpbmdXaXRoU3RhdGU6b2JqZWN0czpjb3VudDoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjU3RyaW5nVXNpbmdFbmNvZGluZ18sCisgICAgICAg
ICAgICAiY1N0cmluZ1VzaW5nRW5jb2Rpbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoY29kZSwKKyAgICAgICAgICAgICJjb2RlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoY29tcGFyZV8sCisgICAgICAgICAgICAiY29tcGFyZToiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChjb3B5LAorICAgICAgICAgICAgImNvcHkiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChjb3VudCwKKyAgICAgICAgICAgICJjb3VudCIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKGRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3dfLAorICAgICAgICAgICAg
ImRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3c6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoZGVzY3JpcHRpb25XaXRoTG9jYWxlXywKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbldp
dGhMb2NhbGU6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZGlzYWJsZUF1dG9tYXRp
Y1Rlcm1pbmF0aW9uXywKKyAgICAgICAgICAgICJkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb246
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9u
LAorICAgICAgICAgICAgImRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbiIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGRlYnVnRGVzY3JpcHRpb24sCisgICAgICAgICAgICAiZGVidWdEZXNj
cmlwdGlvbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRlc2NyaXB0aW9uLAorICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZGlj
dGlvbmFyeSwKKyAgICAgICAgICAgICJkaWN0aW9uYXJ5Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoZGljdGlvbmFyeVdpdGhPYmplY3RfZm9yS2V5XywKKyAgICAgICAgICAgICJkaWN0
aW9uYXJ5V2l0aE9iamVjdDpmb3JLZXk6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
ZGljdGlvbmFyeVdpdGhPYmplY3RzX2ZvcktleXNfY291bnRfLAorICAgICAgICAgICAgImRpY3Rp
b25hcnlXaXRoT2JqZWN0czpmb3JLZXlzOmNvdW50OiIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGRvbWFpbiwKKyAgICAgICAgICAgICJkb21haW4iKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChkb3VibGVWYWx1ZSwKKyAgICAgICAgICAgICJkb3VibGVWYWx1ZSIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRyYWluLAorICAgICAgICAgICAgImRyYWluIik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZW5hYmxlQXV0b21hdGljVGVybWluYXRpb25fLAor
ICAgICAgICAgICAgImVuYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uOiIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uLAorICAgICAgICAgICAgImVu
YWJsZVN1ZGRlblRlcm1pbmF0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZW5k
QWN0aXZpdHlfLAorICAgICAgICAgICAgImVuZEFjdGl2aXR5OiIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKGVudmlyb25tZW50LAorICAgICAgICAgICAgImVudmlyb25tZW50Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZXJyb3JXaXRoRG9tYWluX2NvZGVfdXNlckluZm9f
LAorICAgICAgICAgICAgImVycm9yV2l0aERvbWFpbjpjb2RlOnVzZXJJbmZvOiIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKGV4ZWN1dGFibGVQYXRoLAorICAgICAgICAgICAgImV4ZWN1
dGFibGVQYXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZXhlY3V0YWJsZVVSTCwK
KyAgICAgICAgICAgICJleGVjdXRhYmxlVVJMIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uLAorICAgICAgICAgICAgImZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGZpbGVVUkxXaXRoUGF0
aF8sCisgICAgICAgICAgICAiZmlsZVVSTFdpdGhQYXRoOiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKGZsb2F0VmFsdWUsCisgICAgICAgICAgICAiZmxvYXRWYWx1ZSIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKGZ1bGxVc2VyTmFtZSwKKyAgICAgICAgICAgICJmdWxsVXNl
ck5hbWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChnZXRWYWx1ZV9zaXplXywKKyAg
ICAgICAgICAgICJnZXRWYWx1ZTpzaXplOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGdsb2JhbGx5VW5pcXVlU3RyaW5nLAorICAgICAgICAgICAgImdsb2JhbGx5VW5pcXVlU3RyaW5n
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaGFzaCwKKyAgICAgICAgICAgICJoYXNo
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaG9zdE5hbWUsCisgICAgICAgICAgICAi
aG9zdE5hbWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbmZvRGljdGlvbmFyeSwK
KyAgICAgICAgICAgICJpbmZvRGljdGlvbmFyeSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGluaXQsCisgICAgICAgICAgICAiaW5pdCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGluaXRGaWxlVVJMV2l0aFBhdGhfLAorICAgICAgICAgICAgImluaXRGaWxlVVJMV2l0aFBh
dGg6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhCb29sXywKKyAgICAg
ICAgICAgICJpbml0V2l0aEJvb2w6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5p
dFdpdGhCeXRlc19vYmpDVHlwZV8sCisgICAgICAgICAgICAiaW5pdFdpdGhCeXRlczpvYmpDVHlw
ZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEJ5dGVzTm9Db3B5X2xl
bmd0aF9lbmNvZGluZ19mcmVlV2hlbkRvbmVfLAorICAgICAgICAgICAgImluaXRXaXRoQnl0ZXNO
b0NvcHk6bGVuZ3RoOmVuY29kaW5nOmZyZWVXaGVuRG9uZToiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChpbml0V2l0aENoYXJfLAorICAgICAgICAgICAgImluaXRXaXRoQ2hhcjoiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aENvZGVyXywKKyAgICAgICAgICAg
ICJpbml0V2l0aENvZGVyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRo
Q1N0cmluZ19lbmNvZGluZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhDU3RyaW5nOmVuY29kaW5n
OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoRG9tYWluX2NvZGVfdXNl
ckluZm9fLAorICAgICAgICAgICAgImluaXRXaXRoRG9tYWluOmNvZGU6dXNlckluZm86Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhEb3VibGVfLAorICAgICAgICAgICAg
ImluaXRXaXRoRG91YmxlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRo
RmxvYXRfLAorICAgICAgICAgICAgImluaXRXaXRoRmxvYXQ6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoaW5pdFdpdGhJbnRfLAorICAgICAgICAgICAgImluaXRXaXRoSW50OiIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoTG9uZ18sCisgICAgICAgICAgICAi
aW5pdFdpdGhMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoTG9u
Z0xvbmdfLAorICAgICAgICAgICAgImluaXRXaXRoTG9uZ0xvbmc6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoaW5pdFdpdGhPYmplY3RzX2NvdW50XywKKyAgICAgICAgICAgICJpbml0
V2l0aE9iamVjdHM6Y291bnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdp
dGhPYmplY3RzX2ZvcktleXNfY291bnRfLAorICAgICAgICAgICAgImluaXRXaXRoT2JqZWN0czpm
b3JLZXlzOmNvdW50OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoUGF0
aF8sCisgICAgICAgICAgICAiaW5pdFdpdGhQYXRoOiIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGluaXRXaXRoU2hvcnRfLAorICAgICAgICAgICAgImluaXRXaXRoU2hvcnQ6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhTdHJpbmdfLAorICAgICAgICAgICAg
ImluaXRXaXRoU3RyaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRo
VW5zaWduZWRDaGFyXywKKyAgICAgICAgICAgICJpbml0V2l0aFVuc2lnbmVkQ2hhcjoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aFVuc2lnbmVkSW50XywKKyAgICAgICAg
ICAgICJpbml0V2l0aFVuc2lnbmVkSW50OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGluaXRXaXRoVW5zaWduZWRMb25nXywKKyAgICAgICAgICAgICJpbml0V2l0aFVuc2lnbmVkTG9u
ZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aFVuc2lnbmVkTG9uZ0xv
bmdfLAorICAgICAgICAgICAgImluaXRXaXRoVW5zaWduZWRMb25nTG9uZzoiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aFVuc2lnbmVkU2hvcnRfLAorICAgICAgICAgICAg
ImluaXRXaXRoVW5zaWduZWRTaG9ydDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChp
bml0V2l0aFVSTF8sCisgICAgICAgICAgICAiaW5pdFdpdGhVUkw6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoaW50ZWdlclZhbHVlLAorICAgICAgICAgICAgImludGVnZXJWYWx1ZSIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGludFZhbHVlLAorICAgICAgICAgICAgImlu
dFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaXNFcXVhbF8sCisgICAgICAg
ICAgICAiaXNFcXVhbDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc0VxdWFsVG9O
dW1iZXJfLAorICAgICAgICAgICAgImlzRXF1YWxUb051bWJlcjoiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChpc0VxdWFsVG9TdHJpbmdfLAorICAgICAgICAgICAgImlzRXF1YWxUb1N0
cmluZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc0VxdWFsVG9WYWx1ZV8sCisg
ICAgICAgICAgICAiaXNFcXVhbFRvVmFsdWU6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwoaXNpT1NBcHBPbk1hYywKKyAgICAgICAgICAgICJpc2lPU0FwcE9uTWFjIik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoaXNMb2FkZWQsCisgICAgICAgICAgICAiaXNMb2FkZWQiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpc0xvd1Bvd2VyTW9kZUVuYWJsZWQsCisgICAg
ICAgICAgICAiaXNMb3dQb3dlck1vZGVFbmFibGVkIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoaXNNYWNDYXRhbHlzdEFwcCwKKyAgICAgICAgICAgICJpc01hY0NhdGFseXN0QXBwIik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaXNPcGVyYXRpbmdTeXN0ZW1BdExlYXN0VmVy
c2lvbl8sCisgICAgICAgICAgICAiaXNPcGVyYXRpbmdTeXN0ZW1BdExlYXN0VmVyc2lvbjoiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChrZXlFbnVtZXJhdG9yLAorICAgICAgICAgICAg
ImtleUVudW1lcmF0b3IiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsZW5ndGgsCisg
ICAgICAgICAgICAibGVuZ3RoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobGVuZ3Ro
T2ZCeXRlc1VzaW5nRW5jb2RpbmdfLAorICAgICAgICAgICAgImxlbmd0aE9mQnl0ZXNVc2luZ0Vu
Y29kaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvYWQsCisgICAgICAgICAg
ICAibG9hZCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvYWRBbmRSZXR1cm5FcnJv
cl8sCisgICAgICAgICAgICAibG9hZEFuZFJldHVybkVycm9yOiIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKGxvY2FsaXplZERlc2NyaXB0aW9uLAorICAgICAgICAgICAgImxvY2FsaXpl
ZERlc2NyaXB0aW9uIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobG9jYWxpemVkRmFp
bHVyZVJlYXNvbiwKKyAgICAgICAgICAgICJsb2NhbGl6ZWRGYWlsdXJlUmVhc29uIik7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9TRUwobG9jYWxpemVkSW5mb0RpY3Rpb25hcnksCisgICAgICAg
ICAgICAibG9jYWxpemVkSW5mb0RpY3Rpb25hcnkiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChsb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnMsCisgICAgICAgICAgICAibG9jYWxpemVkUmVj
b3ZlcnlPcHRpb25zIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobG9jYWxpemVkUmVj
b3ZlcnlTdWdnZXN0aW9uLAorICAgICAgICAgICAgImxvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlv
biIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZFN0cmluZ0ZvcktleV92
YWx1ZV90YWJsZV8sCisgICAgICAgICAgICAibG9jYWxpemVkU3RyaW5nRm9yS2V5OnZhbHVlOnRh
YmxlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2ssCisgICAgICAgICAgICAi
bG9jayIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvbmdWYWx1ZSwKKyAgICAgICAg
ICAgICJsb25nVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb25nTG9uZ1Zh
bHVlLAorICAgICAgICAgICAgImxvbmdMb25nVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChtYWluQnVuZGxlLAorICAgICAgICAgICAgIm1haW5CdW5kbGUiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChtYXhpbXVtTGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2RpbmdfLAor
ICAgICAgICAgICAgIm1heGltdW1MZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzoiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChtZXRob2RTaWduYXR1cmVGb3JTZWxlY3Rvcl8sCisgICAg
ICAgICAgICAibWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwobXV0YWJsZUJ5dGVzLAorICAgICAgICAgICAgIm11dGFibGVCeXRlcyIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG5hbWUsCisgICAgICAgICAgICAibmFtZSIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG5leHRPYmplY3QsCisgICAgICAgICAgICAibmV4
dE9iamVjdCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhCb29sXywK
KyAgICAgICAgICAgICJudW1iZXJXaXRoQm9vbDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChudW1iZXJXaXRoQ2hhcl8sCisgICAgICAgICAgICAibnVtYmVyV2l0aENoYXI6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aERvdWJsZV8sCisgICAgICAgICAg
ICAibnVtYmVyV2l0aERvdWJsZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1i
ZXJXaXRoRmxvYXRfLAorICAgICAgICAgICAgIm51bWJlcldpdGhGbG9hdDoiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoSW50XywKKyAgICAgICAgICAgICJudW1iZXJX
aXRoSW50OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhMb25nXywK
KyAgICAgICAgICAgICJudW1iZXJXaXRoTG9uZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChudW1iZXJXaXRoTG9uZ0xvbmdfLAorICAgICAgICAgICAgIm51bWJlcldpdGhMb25nTG9u
ZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoU2hvcnRfLAorICAg
ICAgICAgICAgIm51bWJlcldpdGhTaG9ydDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChudW1iZXJXaXRoVW5zaWduZWRDaGFyXywKKyAgICAgICAgICAgICJudW1iZXJXaXRoVW5zaWdu
ZWRDaGFyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhVbnNpZ25l
ZEludF8sCisgICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkSW50OiIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhVbnNpZ25lZExvbmdfLAorICAgICAgICAgICAg
Im51bWJlcldpdGhVbnNpZ25lZExvbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
bnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmdfLAorICAgICAgICAgICAgIm51bWJlcldpdGhVbnNp
Z25lZExvbmdMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhV
bnNpZ25lZFNob3J0XywKKyAgICAgICAgICAgICJudW1iZXJXaXRoVW5zaWduZWRTaG9ydDoiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChvYmpDVHlwZSwKKyAgICAgICAgICAgICJvYmpD
VHlwZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG9iamVjdCwKKyAgICAgICAgICAg
ICJvYmplY3QiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChvYmplY3RBdEluZGV4XywK
KyAgICAgICAgICAgICJvYmplY3RBdEluZGV4OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKG9iamVjdEZvckluZm9EaWN0aW9uYXJ5S2V5XywKKyAgICAgICAgICAgICJvYmplY3RGb3JJ
bmZvRGljdGlvbmFyeUtleToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChvYmplY3RG
b3JLZXlfLAorICAgICAgICAgICAgIm9iamVjdEZvcktleToiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChvcGVyYXRpbmdTeXN0ZW0sCisgICAgICAgICAgICAib3BlcmF0aW5nU3lzdGVt
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob3BlcmF0aW5nU3lzdGVtVmVyc2lvbiwK
KyAgICAgICAgICAgICJvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwob3BlcmF0aW5nU3lzdGVtVmVyc2lvblN0cmluZywKKyAgICAgICAgICAgICJv
cGVyYXRpbmdTeXN0ZW1WZXJzaW9uU3RyaW5nIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwocGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGVfLAorICAgICAgICAgICAgInBhdGhGb3JBdXhp
bGlhcnlFeGVjdXRhYmxlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBlcmZvcm1B
Y3Rpdml0eVdpdGhPcHRpb25zX3JlYXNvbl91c2luZ0Jsb2NrXywKKyAgICAgICAgICAgICJwZXJm
b3JtQWN0aXZpdHlXaXRoT3B0aW9uczpyZWFzb246dXNpbmdCbG9jazoiKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTChwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eVdpdGhSZWFzb25fdXNpbmdC
bG9ja18sCisgICAgICAgICAgICAicGVyZm9ybUV4cGlyaW5nQWN0aXZpdHlXaXRoUmVhc29uOnVz
aW5nQmxvY2s6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocGh5c2ljYWxNZW1vcnks
CisgICAgICAgICAgICAicGh5c2ljYWxNZW1vcnkiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChwb2ludGVyVmFsdWUsCisgICAgICAgICAgICAicG9pbnRlclZhbHVlIik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwocHJlZmxpZ2h0QW5kUmV0dXJuRXJyb3JfLAorICAgICAgICAg
ICAgInByZWZsaWdodEFuZFJldHVybkVycm9yOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKHByaXZhdGVGcmFtZXdvcmtzUGF0aCwKKyAgICAgICAgICAgICJwcml2YXRlRnJhbWV3b3Jr
c1BhdGgiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwcml2YXRlRnJhbWV3b3Jrc1VS
TCwKKyAgICAgICAgICAgICJwcml2YXRlRnJhbWV3b3Jrc1VSTCIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKHByb2Nlc3NJZGVudGlmaWVyLAorICAgICAgICAgICAgInByb2Nlc3NJZGVu
dGlmaWVyIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJvY2Vzc0luZm8sCisgICAg
ICAgICAgICAicHJvY2Vzc0luZm8iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwcm9j
ZXNzTmFtZSwKKyAgICAgICAgICAgICJwcm9jZXNzTmFtZSIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKHByb2Nlc3NvckNvdW50LAorICAgICAgICAgICAgInByb2Nlc3NvckNvdW50Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocmFuZ2VPZlN0cmluZ19vcHRpb25zXywKKyAg
ICAgICAgICAgICJyYW5nZU9mU3RyaW5nOm9wdGlvbnM6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwocmVsZWFzZSwKKyAgICAgICAgICAgICJyZWxlYXNlIik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwocmVzb3VyY2VQYXRoLAorICAgICAgICAgICAgInJlc291cmNlUGF0aCIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHJlc291cmNlVVJMLAorICAgICAgICAgICAg
InJlc291cmNlVVJMIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocmVzcG9uZHNUb1Nl
bGVjdG9yXywKKyAgICAgICAgICAgICJyZXNwb25kc1RvU2VsZWN0b3I6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwocmV0YWluLAorICAgICAgICAgICAgInJldGFpbiIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKHJldGFpbkNvdW50LAorICAgICAgICAgICAgInJldGFpbkNv
dW50Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2V0QXV0b21hdGljVGVybWluYXRp
b25TdXBwb3J0RW5hYmxlZF8sCisgICAgICAgICAgICAic2V0QXV0b21hdGljVGVybWluYXRpb25T
dXBwb3J0RW5hYmxlZDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzZXRQcm9jZXNz
TmFtZV8sCisgICAgICAgICAgICAic2V0UHJvY2Vzc05hbWU6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoc2hhcmVkRnJhbWV3b3Jrc1BhdGgsCisgICAgICAgICAgICAic2hhcmVkRnJh
bWV3b3Jrc1BhdGgiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzaGFyZWRGcmFtZXdv
cmtzVVJMLAorICAgICAgICAgICAgInNoYXJlZEZyYW1ld29ya3NVUkwiKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTChzaGFyZWRTdXBwb3J0UGF0aCwKKyAgICAgICAgICAgICJzaGFyZWRT
dXBwb3J0UGF0aCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHNoYXJlZFN1cHBvcnRV
UkwsCisgICAgICAgICAgICAic2hhcmVkU3VwcG9ydFVSTCIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKHNob3J0VmFsdWUsCisgICAgICAgICAgICAic2hvcnRWYWx1ZSIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKHNob3dQb29scywKKyAgICAgICAgICAgICJzaG93UG9vbHMi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzaWduYWwsCisgICAgICAgICAgICAic2ln
bmFsIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc3RyaW5nLAorICAgICAgICAgICAg
InN0cmluZyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHN0cmluZ1ZhbHVlLAorICAg
ICAgICAgICAgInN0cmluZ1ZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc3Ry
aW5nV2l0aFN0cmluZ18sCisgICAgICAgICAgICAic3RyaW5nV2l0aFN0cmluZzoiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChzdHJpbmdXaXRoQ1N0cmluZ19lbmNvZGluZ18sCisgICAg
ICAgICAgICAic3RyaW5nV2l0aENTdHJpbmc6ZW5jb2Rpbmc6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmdfLAorICAgICAgICAgICAgInN0cmlu
Z0J5QXBwZW5kaW5nU3RyaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHN5c3Rl
bVVwdGltZSwKKyAgICAgICAgICAgICJzeXN0ZW1VcHRpbWUiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTCh0aGVybWFsU3RhdGUsCisgICAgICAgICAgICAidGhlcm1hbFN0YXRlIik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodW5sb2FkLAorICAgICAgICAgICAgInVubG9hZCIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVubG9jaywKKyAgICAgICAgICAgICJ1bmxv
Y2siKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bnNpZ25lZENoYXJWYWx1ZSwKKyAg
ICAgICAgICAgICJ1bnNpZ25lZENoYXJWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKHVuc2lnbmVkSW50ZWdlclZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkSW50ZWdlclZh
bHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodW5zaWduZWRJbnRWYWx1ZSwKKyAg
ICAgICAgICAgICJ1bnNpZ25lZEludFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwodW5zaWduZWRMb25nVmFsdWUsCisgICAgICAgICAgICAidW5zaWduZWRMb25nVmFsdWUiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bnNpZ25lZExvbmdMb25nVmFsdWUsCisgICAg
ICAgICAgICAidW5zaWduZWRMb25nTG9uZ1ZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwodW5zaWduZWRTaG9ydFZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkU2hvcnRWYWx1
ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKFVSTEZvckF1eGlsaWFyeUV4ZWN1dGFi
bGVfLAorICAgICAgICAgICAgIlVSTEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwodXNlckluZm8sCisgICAgICAgICAgICAidXNlckluZm8iKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1c2VyTmFtZSwKKyAgICAgICAgICAgICJ1c2Vy
TmFtZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKFVURjhTdHJpbmcsCisgICAgICAg
ICAgICAiVVRGOFN0cmluZyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHZhbHVlV2l0
aEJ5dGVzX29iakNUeXBlXywKKyAgICAgICAgICAgICJ2YWx1ZVdpdGhCeXRlczpvYmpDVHlwZToi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh2YWx1ZVdpdGhQb2ludGVyXywKKyAgICAg
ICAgICAgICJ2YWx1ZVdpdGhQb2ludGVyOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHdhaXQsCisgICAgICAgICAgICAid2FpdCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHdhaXRVbnRpbERhdGVfLAorICAgICAgICAgICAgIndhaXRVbnRpbERhdGU6Iik7CisgICAgfSAv
LyBDbGFzcworfSAvLyBQcml2YXRlCit9IC8vIE1UTAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUHJvY2Vzc0luZm8uaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQcm9jZXNzSW5mby5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OThlMzE0N2ZlOGE3YzY4ZDJmYWNjM2E2ZWQ0NzdmNjc1MWVlNWRlNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUHJvY2Vzc0lu
Zm8uaHBwCkBAIC0wLDAgKzEsMzU0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TUHJvY2Vzc0luZm8uaHBwCisvLwor
Ly8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5l
cy5ocHAiCisjaW5jbHVkZSAiTlNOb3RpZmljYXRpb24uaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0
LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgor
CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworX05TX0NPTlNUKE5vdGlmaWNhdGlv
bk5hbWUsIFByb2Nlc3NJbmZvVGhlcm1hbFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKTsKK19O
U19DT05TVChOb3RpZmljYXRpb25OYW1lLCBQcm9jZXNzSW5mb1Bvd2VyU3RhdGVEaWRDaGFuZ2VO
b3RpZmljYXRpb24pOworCitfTlNfRU5VTShOUzo6SW50ZWdlciwgUHJvY2Vzc0luZm9UaGVybWFs
U3RhdGUpIHsKKyAgICBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZU5vbWluYWwgPSAwLAorICAgIFBy
b2Nlc3NJbmZvVGhlcm1hbFN0YXRlRmFpciA9IDEsCisgICAgUHJvY2Vzc0luZm9UaGVybWFsU3Rh
dGVTZXJpb3VzID0gMiwKKyAgICBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZUNyaXRpY2FsID0gMwor
fTsKKworX05TX09QVElPTlMoc3RkOjp1aW50NjRfdCwgQWN0aXZpdHlPcHRpb25zKSB7CisgICAg
QWN0aXZpdHlJZGxlRGlzcGxheVNsZWVwRGlzYWJsZWQgPSAoMVVMTCA8PCA0MCksCisgICAgQWN0
aXZpdHlJZGxlU3lzdGVtU2xlZXBEaXNhYmxlZCA9ICgxVUxMIDw8IDIwKSwKKyAgICBBY3Rpdml0
eVN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZWQgPSAoMVVMTCA8PCAxNCksCisgICAgQWN0aXZpdHlB
dXRvbWF0aWNUZXJtaW5hdGlvbkRpc2FibGVkID0gKDFVTEwgPDwgMTUpLAorICAgIEFjdGl2aXR5
VXNlckluaXRpYXRlZCA9ICgweDAwRkZGRkZGVUxMIHwgQWN0aXZpdHlJZGxlU3lzdGVtU2xlZXBE
aXNhYmxlZCksCisgICAgQWN0aXZpdHlVc2VySW5pdGlhdGVkQWxsb3dpbmdJZGxlU3lzdGVtU2xl
ZXAgPSAoQWN0aXZpdHlVc2VySW5pdGlhdGVkICYgfkFjdGl2aXR5SWRsZVN5c3RlbVNsZWVwRGlz
YWJsZWQpLAorICAgIEFjdGl2aXR5QmFja2dyb3VuZCA9IDB4MDAwMDAwRkZVTEwsCisgICAgQWN0
aXZpdHlMYXRlbmN5Q3JpdGljYWwgPSAweEZGMDAwMDAwMDBVTEwsCit9OworCitjbGFzcyBQcm9j
ZXNzSW5mbyA6IHB1YmxpYyBSZWZlcmVuY2luZzxQcm9jZXNzSW5mbz4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUHJvY2Vzc0luZm8qICAgICBwcm9jZXNzSW5mbygpOworCisgICAgY2xhc3MgQXJy
YXkqICAgICAgICAgICAgYXJndW1lbnRzKCkgY29uc3Q7CisgICAgY2xhc3MgRGljdGlvbmFyeSog
ICAgICAgZW52aXJvbm1lbnQoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBo
b3N0TmFtZSgpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgICAgICAgIHByb2Nlc3NOYW1l
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgc2V0UHJvY2Vzc05hbWUoY29u
c3QgU3RyaW5nKiBwU3RyaW5nKTsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICBwcm9jZXNz
SWRlbnRpZmllcigpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgICAgICAgIGdsb2JhbGx5
VW5pcXVlU3RyaW5nKCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICB1c2Vy
TmFtZSgpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgICAgICAgIGZ1bGxVc2VyTmFtZSgp
IGNvbnN0OworCisgICAgVUludGVnZXIgICAgICAgICAgICAgICAgb3BlcmF0aW5nU3lzdGVtKCkg
Y29uc3Q7CisgICAgT3BlcmF0aW5nU3lzdGVtVmVyc2lvbiAgb3BlcmF0aW5nU3lzdGVtVmVyc2lv
bigpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgICAgICAgIG9wZXJhdGluZ1N5c3RlbVZl
cnNpb25TdHJpbmcoKSBjb25zdDsKKyAgICBib29sICAgICAgICAgICAgICAgICAgICBpc09wZXJh
dGluZ1N5c3RlbUF0TGVhc3RWZXJzaW9uKE9wZXJhdGluZ1N5c3RlbVZlcnNpb24gdmVyc2lvbikg
Y29uc3Q7CisKKyAgICBVSW50ZWdlciAgICAgICAgICAgICAgICBwcm9jZXNzb3JDb3VudCgpIGNv
bnN0OworICAgIFVJbnRlZ2VyICAgICAgICAgICAgICAgIGFjdGl2ZVByb2Nlc3NvckNvdW50KCkg
Y29uc3Q7CisgICAgdW5zaWduZWQgbG9uZyBsb25nICAgICAgcGh5c2ljYWxNZW1vcnkoKSBjb25z
dDsKKyAgICBUaW1lSW50ZXJ2YWwgICAgICAgICAgICBzeXN0ZW1VcHRpbWUoKSBjb25zdDsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpOwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb24o
Y29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uKTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICBlbmFibGVBdXRvbWF0aWNUZXJtaW5hdGlvbihjb25zdCBjbGFzcyBTdHJpbmcqIHBSZWFzb24p
OworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9y
dEVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBzZXRBdXRvbWF0
aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisKKyAgICBjbGFzcyBP
YmplY3QqICAgICAgICAgICBiZWdpbkFjdGl2aXR5KEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zLCBj
b25zdCBjbGFzcyBTdHJpbmcqIHBSZWFzb24pOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
IGVuZEFjdGl2aXR5KGNsYXNzIE9iamVjdCogcEFjdGl2aXR5KTsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICBwZXJmb3JtQWN0aXZpdHkoQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIGNvbnN0
IGNsYXNzIFN0cmluZyogcFJlYXNvbiwgdm9pZCAoXmJsb2NrKSh2b2lkKSk7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgcGVyZm9ybUFjdGl2aXR5KEFjdGl2aXR5T3B0aW9ucyBvcHRpb25z
LCBjb25zdCBjbGFzcyBTdHJpbmcqIHBSZWFzb24sIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiYgZnVuYyk7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgcGVyZm9ybUV4cGlyaW5nQWN0
aXZpdHkoY29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uLCB2b2lkICheYmxvY2spKGJvb2wgZXhw
aXJlZCkpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1FeHBpcmluZ0FjdGl2
aXR5KGNvbnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbiwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lk
KGJvb2wgZXhwaXJlZCk+JiBmdW5jKTsKKworICAgIFByb2Nlc3NJbmZvVGhlcm1hbFN0YXRlIHRo
ZXJtYWxTdGF0ZSgpIGNvbnN0OworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGlzTG93UG93
ZXJNb2RlRW5hYmxlZCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgaXNp
T1NBcHBPbk1hYygpIGNvbnN0OworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGlzTWFjQ2F0
YWx5c3RBcHAoKSBjb25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6Ok5vdGlmaWNhdGlv
bk5hbWUsIFByb2Nlc3NJbmZvVGhlcm1hbFN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKTsKK19O
U19QUklWQVRFX0RFRl9DT05TVChOUzo6Tm90aWZpY2F0aW9uTmFtZSwgUHJvY2Vzc0luZm9Qb3dl
clN0YXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlByb2Nlc3NJbmZvKiBOUzo6
UHJvY2Vzc0luZm86OnByb2Nlc3NJbmZvKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxQcm9jZXNzSW5mbyo+KF9OU19QUklWQVRFX0NMUyhOU1Byb2Nlc3NJbmZvKSwgX05TX1BS
SVZBVEVfU0VMKHByb2Nlc3NJbmZvKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OlByb2Nlc3NJ
bmZvOjphcmd1bWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PEFycmF5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGFyZ3VtZW50cykpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
RGljdGlvbmFyeSogTlM6OlByb2Nlc3NJbmZvOjplbnZpcm9ubWVudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChlbnZpcm9ubWVudCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6UHJvY2Vzc0luZm86
Omhvc3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJp
bmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaG9zdE5hbWUpKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmlu
ZyogTlM6OlByb2Nlc3NJbmZvOjpwcm9jZXNzTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHByb2Nlc3NO
YW1lKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZvOjpzZXRQcm9jZXNzTmFtZShjb25z
dCBTdHJpbmcqIHBTdHJpbmcpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoc2V0UHJvY2Vzc05hbWVfKSwgcFN0cmluZyk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGlu
dCBOUzo6UHJvY2Vzc0luZm86OnByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxpbnQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwcm9jZXNz
SWRlbnRpZmllcikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6UHJvY2Vzc0luZm86Omdsb2Jh
bGx5VW5pcXVlU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZ2xvYmFsbHlVbmlxdWVTdHJpbmcpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZvOjp1c2VyTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPFN0cmluZyo+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTCh1c2VyTmFtZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6UHJvY2Vzc0lu
Zm86OmZ1bGxVc2VyTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2VTYWZlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChmdWxsVXNlck5hbWUpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpQcm9jZXNzSW5mbzo6b3BlcmF0aW5nU3lzdGVtKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKG9wZXJhdGluZ1N5c3RlbSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6T3BlcmF0aW5nU3lz
dGVtVmVyc2lvbiBOUzo6UHJvY2Vzc0luZm86Om9wZXJhdGluZ1N5c3RlbVZlcnNpb24oKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE9wZXJhdGluZ1N5c3RlbVZlcnNp
b24+KHRoaXMsIF9OU19QUklWQVRFX1NFTChvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpTdHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6b3BlcmF0aW5nU3lzdGVtVmVyc2lvblN0
cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKG9wZXJhdGluZ1N5c3RlbVZlcnNpb25TdHJpbmcpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgYm9vbCBOUzo6UHJvY2Vzc0luZm86OmlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNp
b24oT3BlcmF0aW5nU3lzdGVtVmVyc2lvbiB2ZXJzaW9uKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpc09wZXJhdGlu
Z1N5c3RlbUF0TGVhc3RWZXJzaW9uXyksIHZlcnNpb24pOworfQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIg
TlM6OlByb2Nlc3NJbmZvOjpwcm9jZXNzb3JDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwcm9jZXNz
b3JDb3VudCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OlByb2Nlc3NJbmZvOjphY3RpdmVQ
cm9jZXNzb3JDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhY3RpdmVQcm9jZXNzb3JDb3VudCkpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSB1bnNpZ25lZCBsb25nIGxvbmcgTlM6OlByb2Nlc3NJbmZvOjpwaHlzaWNhbE1lbW9y
eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5zaWduZWQgbG9u
ZyBsb25nPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocGh5c2ljYWxNZW1vcnkpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlRpbWVJbnRlcnZhbCBOUzo6UHJvY2Vzc0luZm86OnN5c3RlbVVwdGltZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VGltZUludGVydmFsPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwoc3lzdGVtVXB0aW1lKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZv
OjpkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2VT
YWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkaXNhYmxlU3VkZGVuVGVybWluYXRpb24p
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OmVuYWJsZVN1ZGRlblRlcm1pbmF0aW9u
KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwoZW5hYmxlU3VkZGVuVGVybWluYXRpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vz
c0luZm86OmRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbihjb25zdCBTdHJpbmcqIHBSZWFzb24p
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGRpc2FibGVBdXRvbWF0aWNUZXJtaW5hdGlvbl8pLCBwUmVhc29uKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9p
ZCBOUzo6UHJvY2Vzc0luZm86OmVuYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uKGNvbnN0IFN0cmlu
ZyogcFJlYXNvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTx2b2lkPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoZW5hYmxlQXV0b21hdGljVGVybWluYXRpb25fKSwgcFJlYXNvbik7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIGJvb2wgTlM6OlByb2Nlc3NJbmZvOjphdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRF
bmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9v
bD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJs
ZWQpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OnNldEF1dG9tYXRpY1Rlcm1pbmF0
aW9uU3VwcG9ydEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2VTYWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzZXRBdXRvbWF0aWNUZXJtaW5hdGlv
blN1cHBvcnRFbmFibGVkXyksIGVuYWJsZWQpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6T2JqZWN0KiBOUzo6UHJv
Y2Vzc0luZm86OmJlZ2luQWN0aXZpdHkoQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIGNvbnN0IFN0
cmluZyogcFJlYXNvbikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxPYmplY3Qq
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zX3JlYXNvbl8p
LCBvcHRpb25zLCBwUmVhc29uKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OmVuZEFj
dGl2aXR5KE9iamVjdCogcEFjdGl2aXR5KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGVuZEFjdGl2aXR5XyksIHBBY3Rpdml0eSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZvOjpwZXJmb3JtQWN0aXZpdHkoQWN0aXZpdHlPcHRpb25z
IG9wdGlvbnMsIGNvbnN0IFN0cmluZyogcFJlYXNvbiwgdm9pZCAoXmJsb2NrKSh2b2lkKSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwZXJm
b3JtQWN0aXZpdHlXaXRoT3B0aW9uc19yZWFzb25fdXNpbmdCbG9ja18pLCBvcHRpb25zLCBwUmVh
c29uLCBibG9jayk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZvOjpwZXJmb3JtQWN0aXZp
dHkoQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMsIGNvbnN0IFN0cmluZyogcFJlYXNvbiwgY29uc3Qg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBibG9ja0Z1bmN0aW9uID0gZnVuY3Rpb247CisKKyAgICBwZXJmb3JtQWN0
aXZpdHkob3B0aW9ucywgcFJlYXNvbiwgXigpIHsgYmxvY2tGdW5jdGlvbigpOyB9KTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgdm9pZCBOUzo6UHJvY2Vzc0luZm86OnBlcmZvcm1FeHBpcmluZ0FjdGl2aXR5KGNvbnN0IFN0
cmluZyogcFJlYXNvbiwgdm9pZCAoXmJsb2NrKShib29sIGV4cGlyZWQpKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2VTYWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwZXJmb3JtRXhw
aXJpbmdBY3Rpdml0eVdpdGhSZWFzb25fdXNpbmdCbG9ja18pLCBwUmVhc29uLCBibG9jayk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZvOjpwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShjb25z
dCBTdHJpbmcqIHBSZWFzb24sIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChib29sIGV4cGlyZWQp
PiYgZnVuY3Rpb24pCit7CisgICAgX19ibG9jayBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBleHBp
cmVkKT4gYmxvY2tGdW5jdGlvbiA9IGZ1bmN0aW9uOworCisgICAgcGVyZm9ybUV4cGlyaW5nQWN0
aXZpdHkocFJlYXNvbiwgXihib29sIGV4cGlyZWQpIHsgYmxvY2tGdW5jdGlvbihleHBpcmVkKTsg
fSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZSBOUzo6UHJvY2Vzc0luZm86
OnRoZXJtYWxTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
UHJvY2Vzc0luZm9UaGVybWFsU3RhdGU+KHRoaXMsIF9OU19QUklWQVRFX1NFTCh0aGVybWFsU3Rh
dGUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgYm9vbCBOUzo6UHJvY2Vzc0luZm86OmlzTG93UG93ZXJNb2RlRW5hYmxl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9v
bCBOUzo6UHJvY2Vzc0luZm86OmlzaU9TQXBwT25NYWMoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaXNpT1NB
cHBPbk1hYykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpQcm9jZXNzSW5mbzo6aXNNYWNDYXRhbHlzdEFw
cCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChpc01hY0NhdGFseXN0QXBwKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1JhbmdlLmhwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YjQ2N2Q2MGNlZTMzYWIyOGIwODFlMGQyZGQ1MzcyODc2NWIwYThhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHAK
QEAgLTAsMCArMSw4MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU1JhbmdlLmhwcAorLy8KKy8vIENvcHlyaWdodCAy
MDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitzdHJ1Y3QgUmFuZ2UKK3sKKyAgICBzdGF0aWMg
UmFuZ2UgTWFrZShVSW50ZWdlciBsb2MsIFVJbnRlZ2VyIGxlbik7CisKKyAgICBSYW5nZShVSW50
ZWdlciBsb2MsIFVJbnRlZ2VyIGxlbik7CisKKyAgICBib29sICAgICBFcXVhbChjb25zdCBSYW5n
ZSYgcmFuZ2UpIGNvbnN0OworICAgIGJvb2wgICAgIExvY2F0aW9uSW5SYW5nZShVSW50ZWdlciBs
b2MpIGNvbnN0OworICAgIFVJbnRlZ2VyIE1heCgpIGNvbnN0OworCisgICAgVUludGVnZXIgbG9j
YXRpb247CisgICAgVUludGVnZXIgbGVuZ3RoOworfSBfTlNfUEFDS0VEOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
UmFuZ2U6OlJhbmdlKFVJbnRlZ2VyIGxvYywgVUludGVnZXIgbGVuKQorICAgIDogbG9jYXRpb24o
bG9jKQorICAgICwgbGVuZ3RoKGxlbikKK3sKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlJhbmdlIE5TOjpSYW5nZTo6
TWFrZShVSW50ZWdlciBsb2MsIFVJbnRlZ2VyIGxlbikKK3sKKyAgICByZXR1cm4gUmFuZ2UobG9j
LCBsZW4pOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBib29sIE5TOjpSYW5nZTo6RXF1YWwoY29uc3QgUmFuZ2UmIHJhbmdl
KSBjb25zdAoreworICAgIHJldHVybiAobG9jYXRpb24gPT0gcmFuZ2UubG9jYXRpb24pICYmIChs
ZW5ndGggPT0gcmFuZ2UubGVuZ3RoKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6UmFuZ2U6OkxvY2F0aW9u
SW5SYW5nZShVSW50ZWdlciBsb2MpIGNvbnN0Cit7CisgICAgcmV0dXJuICghKGxvYyA8IGxvY2F0
aW9uKSkgJiYgKChsb2MgLSBsb2NhdGlvbikgPCBsZW5ndGgpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVn
ZXIgTlM6OlJhbmdlOjpNYXgoKSBjb25zdAoreworICAgIHJldHVybiBsb2NhdGlvbiArIGxlbmd0
aDsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1N0
cmluZy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1N0
cmluZy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODI5ZGVjYjkwMWY3MzVlMTRlODdmMGViZThmZDkxN2FhNGUw
MmY5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9G
b3VuZGF0aW9uL05TU3RyaW5nLmhwcApAQCAtMCwwICsxLDI0NSBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU1N0cmlu
Zy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVk
ZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNQ
cml2YXRlLmhwcCIKKyNpbmNsdWRlICJOU1JhbmdlLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhw
cCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25h
bWVzcGFjZSBOUworeworX05TX0VOVU0oTlM6OlVJbnRlZ2VyLCBTdHJpbmdFbmNvZGluZykgewor
ICAgIEFTQ0lJU3RyaW5nRW5jb2RpbmcgPSAxLAorICAgIE5FWFRTVEVQU3RyaW5nRW5jb2Rpbmcg
PSAyLAorICAgIEphcGFuZXNlRVVDU3RyaW5nRW5jb2RpbmcgPSAzLAorICAgIFVURjhTdHJpbmdF
bmNvZGluZyA9IDQsCisgICAgSVNPTGF0aW4xU3RyaW5nRW5jb2RpbmcgPSA1LAorICAgIFN5bWJv
bFN0cmluZ0VuY29kaW5nID0gNiwKKyAgICBOb25Mb3NzeUFTQ0lJU3RyaW5nRW5jb2RpbmcgPSA3
LAorICAgIFNoaWZ0SklTU3RyaW5nRW5jb2RpbmcgPSA4LAorICAgIElTT0xhdGluMlN0cmluZ0Vu
Y29kaW5nID0gOSwKKyAgICBVbmljb2RlU3RyaW5nRW5jb2RpbmcgPSAxMCwKKyAgICBXaW5kb3dz
Q1AxMjUxU3RyaW5nRW5jb2RpbmcgPSAxMSwKKyAgICBXaW5kb3dzQ1AxMjUyU3RyaW5nRW5jb2Rp
bmcgPSAxMiwKKyAgICBXaW5kb3dzQ1AxMjUzU3RyaW5nRW5jb2RpbmcgPSAxMywKKyAgICBXaW5k
b3dzQ1AxMjU0U3RyaW5nRW5jb2RpbmcgPSAxNCwKKyAgICBXaW5kb3dzQ1AxMjUwU3RyaW5nRW5j
b2RpbmcgPSAxNSwKKyAgICBJU08yMDIySlBTdHJpbmdFbmNvZGluZyA9IDIxLAorICAgIE1hY09T
Um9tYW5TdHJpbmdFbmNvZGluZyA9IDMwLAorCisgICAgVVRGMTZTdHJpbmdFbmNvZGluZyA9IFVu
aWNvZGVTdHJpbmdFbmNvZGluZywKKworICAgIFVURjE2QmlnRW5kaWFuU3RyaW5nRW5jb2Rpbmcg
PSAweDkwMDAwMTAwLAorICAgIFVURjE2TGl0dGxlRW5kaWFuU3RyaW5nRW5jb2RpbmcgPSAweDk0
MDAwMTAwLAorCisgICAgVVRGMzJTdHJpbmdFbmNvZGluZyA9IDB4OGMwMDAxMDAsCisgICAgVVRG
MzJCaWdFbmRpYW5TdHJpbmdFbmNvZGluZyA9IDB4OTgwMDAxMDAsCisgICAgVVRGMzJMaXR0bGVF
bmRpYW5TdHJpbmdFbmNvZGluZyA9IDB4OWMwMDAxMDAKK307CisKK19OU19PUFRJT05TKE5TOjpV
SW50ZWdlciwgU3RyaW5nQ29tcGFyZU9wdGlvbnMpIHsKKyAgICBDYXNlSW5zZW5zaXRpdmVTZWFy
Y2ggPSAxLAorICAgIExpdGVyYWxTZWFyY2ggPSAyLAorICAgIEJhY2t3YXJkc1NlYXJjaCA9IDQs
CisgICAgQW5jaG9yZWRTZWFyY2ggPSA4LAorICAgIE51bWVyaWNTZWFyY2ggPSA2NCwKKyAgICBE
aWFjcml0aWNJbnNlbnNpdGl2ZVNlYXJjaCA9IDEyOCwKKyAgICBXaWR0aEluc2Vuc2l0aXZlU2Vh
cmNoID0gMjU2LAorICAgIEZvcmNlZE9yZGVyaW5nU2VhcmNoID0gNTEyLAorICAgIFJlZ3VsYXJF
eHByZXNzaW9uU2VhcmNoID0gMTAyNAorfTsKKwordXNpbmcgdW5pY2hhciA9IHVuc2lnbmVkIHNo
b3J0OworCitjbGFzcyBTdHJpbmcgOiBwdWJsaWMgQ29weWluZzxTdHJpbmc+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIFN0cmluZyogc3RyaW5nKCk7CisgICAgc3RhdGljIFN0cmluZyogc3RyaW5n
KGNvbnN0IFN0cmluZyogcFN0cmluZyk7CisgICAgc3RhdGljIFN0cmluZyogc3RyaW5nKGNvbnN0
IGNoYXIqIHBTdHJpbmcsIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKTsKKworICAgIHN0YXRpYyBT
dHJpbmcqIGFsbG9jKCk7CisgICAgU3RyaW5nKiAgICAgICAgaW5pdCgpOworICAgIFN0cmluZyog
ICAgICAgIGluaXQoY29uc3QgU3RyaW5nKiBwU3RyaW5nKTsKKyAgICBTdHJpbmcqICAgICAgICBp
bml0KGNvbnN0IGNoYXIqIHBTdHJpbmcsIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKTsKKyAgICBT
dHJpbmcqICAgICAgICBpbml0KHZvaWQqIHBCeXRlcywgVUludGVnZXIgbGVuLCBTdHJpbmdFbmNv
ZGluZyBlbmNvZGluZywgYm9vbCBmcmVlQnVmZmVyKTsKKworICAgIHVuaWNoYXIgICAgICAgIGNo
YXJhY3RlcihVSW50ZWdlciBpbmRleCkgY29uc3Q7CisgICAgVUludGVnZXIgICAgICAgbGVuZ3Ro
KCkgY29uc3Q7CisKKyAgICBjb25zdCBjaGFyKiAgICBjU3RyaW5nKFN0cmluZ0VuY29kaW5nIGVu
Y29kaW5nKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiAgICB1dGY4U3RyaW5nKCkgY29uc3Q7Cisg
ICAgVUludGVnZXIgICAgICAgbWF4aW11bUxlbmd0aE9mQnl0ZXMoU3RyaW5nRW5jb2RpbmcgZW5j
b2RpbmcpIGNvbnN0OworICAgIFVJbnRlZ2VyICAgICAgIGxlbmd0aE9mQnl0ZXMoU3RyaW5nRW5j
b2RpbmcgZW5jb2RpbmcpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgaXNFcXVhbFRvU3Ry
aW5nKGNvbnN0IFN0cmluZyogcFN0cmluZykgY29uc3Q7CisgICAgUmFuZ2UgICAgICAgICAgcmFu
Z2VPZlN0cmluZyhjb25zdCBTdHJpbmcqIHBTdHJpbmcsIFN0cmluZ0NvbXBhcmVPcHRpb25zIG9w
dGlvbnMpIGNvbnN0OworCisgICAgY29uc3QgY2hhciogICAgZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCkgY29uc3Q7CisKKyAgICBTdHJpbmcqICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1N0cmlu
Zyhjb25zdCBTdHJpbmcqIHBTdHJpbmcpIGNvbnN0OworCit9OworCit0ZW1wbGF0ZTwgc3RkOjpz
aXplX3QgX1N0cmluZ0xlbiA+Citjb25zdGV4cHIgY29uc3QgU3RyaW5nKiBNYWtlQ29uc3RhbnRT
dHJpbmcoIGNvbnN0IGNoYXIgKCAmc3RyIClbX1N0cmluZ0xlbl0gKQoreworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PCBjb25zdCBTdHJpbmcqID4oIF9fQ0ZTdHJpbmdNYWtlQ29uc3RhbnRT
dHJpbmcoIHN0ciApICk7Cit9CisKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlN0cmluZzo6c3Ry
aW5nKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPihfTlNfUFJJ
VkFURV9DTFMoTlNTdHJpbmcpLCBfTlNfUFJJVkFURV9TRUwoc3RyaW5nKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpTdHJpbmcqIE5TOjpTdHJpbmc6OnN0cmluZyhjb25zdCBTdHJpbmcqIHBTdHJpbmcpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4oX05TX1BSSVZBVEVfQ0xTKE5T
U3RyaW5nKSwgX05TX1BSSVZBVEVfU0VMKHN0cmluZ1dpdGhTdHJpbmdfKSwgcFN0cmluZyk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OnN0cmluZyhjb25zdCBjaGFyKiBwU3RyaW5n
LCBTdHJpbmdFbmNvZGluZyBlbmNvZGluZykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxTdHJpbmcqPihfTlNfUFJJVkFURV9DTFMoTlNTdHJpbmcpLCBfTlNfUFJJVkFURV9TRUwo
c3RyaW5nV2l0aENTdHJpbmdfZW5jb2RpbmdfKSwgcFN0cmluZywgZW5jb2RpbmcpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjphbGxvYygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
YWxsb2M8U3RyaW5nPihfTlNfUFJJVkFURV9DTFMoTlNTdHJpbmcpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0
cmluZyogTlM6OlN0cmluZzo6aW5pdCgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6aW5pdDxTdHJp
bmc+KCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OmluaXQoY29uc3QgU3RyaW5n
KiBwU3RyaW5nKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aFN0cmluZ18pLCBwU3RyaW5nKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlN0cmluZyogTlM6OlN0cmluZzo6aW5pdChjb25zdCBjaGFyKiBwU3RyaW5nLCBTdHJpbmdF
bmNvZGluZyBlbmNvZGluZykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJp
bmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhDU3RyaW5nX2VuY29kaW5nXyksIHBT
dHJpbmcsIGVuY29kaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlN0cmluZzo6aW5pdCh2
b2lkKiBwQnl0ZXMsIFVJbnRlZ2VyIGxlbiwgU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcsIGJvb2wg
ZnJlZUJ1ZmZlcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhCeXRlc05vQ29weV9sZW5ndGhfZW5jb2Rpbmdf
ZnJlZVdoZW5Eb25lXyksIHBCeXRlcywgbGVuLCBlbmNvZGluZywgZnJlZUJ1ZmZlcik7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjp1bmljaGFyIE5TOjpTdHJpbmc6OmNoYXJhY3RlcihVSW50ZWdlciBpbmRleCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1bmljaGFyPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwoY2hhcmFjdGVyQXRJbmRleF8pLCBpbmRleCk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50
ZWdlciBOUzo6U3RyaW5nOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobGVuZ3RoKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIGNvbnN0IGNoYXIqIE5TOjpTdHJpbmc6OmNTdHJpbmcoU3RyaW5nRW5jb2RpbmcgZW5jb2Rp
bmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Y29uc3QgY2hhcio+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChjU3RyaW5nVXNpbmdFbmNvZGluZ18pLCBlbmNvZGluZyk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIGNvbnN0IGNoYXIqIE5TOjpTdHJpbmc6OnV0ZjhTdHJpbmcoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNvbnN0IGNoYXIqPih0aGlzLCBfTlNfUFJJ
VkFURV9TRUwoVVRGOFN0cmluZykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVnZXIgTlM6OlN0cmluZzo6
bWF4aW11bUxlbmd0aE9mQnl0ZXMoU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChtYXhpbXVtTGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2RpbmdfKSwgZW5jb2RpbmcpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6VUludGVnZXIgTlM6OlN0cmluZzo6bGVuZ3RoT2ZCeXRlcyhTdHJpbmdFbmNvZGlu
ZyBlbmNvZGluZykgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50
ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxlbmd0aE9mQnl0ZXNVc2luZ0VuY29kaW5nXyks
IGVuY29kaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6U3RyaW5nOjppc0VxdWFsVG9TdHJpbmcoY29u
c3QgTlM6OlN0cmluZyogcFN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaXNFcXVhbFRvU3RyaW5nXyksIHBT
dHJpbmcpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6UmFuZ2UgTlM6OlN0cmluZzo6cmFuZ2VPZlN0cmluZyhjb25z
dCBOUzo6U3RyaW5nKiBwU3RyaW5nLCBOUzo6U3RyaW5nQ29tcGFyZU9wdGlvbnMgb3B0aW9ucykg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxSYW5nZT4odGhpcywgX05T
X1BSSVZBVEVfU0VMKHJhbmdlT2ZTdHJpbmdfb3B0aW9uc18pLCBwU3RyaW5nLCBvcHRpb25zKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgY29uc3QgY2hhciogTlM6OlN0cmluZzo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxjb25zdCBjaGFyKj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
U3RyaW5nKiBOUzo6U3RyaW5nOjpzdHJpbmdCeUFwcGVuZGluZ1N0cmluZyhjb25zdCBTdHJpbmcq
IHBTdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0
cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChzdHJpbmdCeUFwcGVuZGluZ1N0cmluZ18pLCBw
U3RyaW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU1R5cGVzLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TVHlwZXMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmOGFkYTEyY2U4ZmJmYjNjYTk2YjhkNTg1NjIyNDYx
NzE5ZTg3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU1R5cGVzLmhwcApAQCAtMCwwICsxLDUxIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TVHlw
ZXMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1
ZGUgIk5TRGVmaW5lcy5ocHAiCisKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRh
dGlvbi5oPgorI2luY2x1ZGUgPGNzdGRpbnQ+CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK3VzaW5nIFRpbWVJbnRlcnZh
bCA9IGRvdWJsZTsKKwordXNpbmcgSW50ZWdlciA9IHN0ZDo6aW50cHRyX3Q7Cit1c2luZyBVSW50
ZWdlciA9IHN0ZDo6dWludHB0cl90OworCitjb25zdCBJbnRlZ2VyICBJbnRlZ2VyTWF4ID0gSU5U
UFRSX01BWDsKK2NvbnN0IEludGVnZXIgIEludGVnZXJNaW4gPSBJTlRQVFJfTUlOOworY29uc3Qg
VUludGVnZXIgVUludGVnZXJNYXggPSBVSU5UUFRSX01BWDsKKworc3RydWN0IE9wZXJhdGluZ1N5
c3RlbVZlcnNpb24KK3sKKyAgICBJbnRlZ2VyIG1ham9yVmVyc2lvbjsKKyAgICBJbnRlZ2VyIG1p
bm9yVmVyc2lvbjsKKyAgICBJbnRlZ2VyIHBhdGNoVmVyc2lvbjsKK30gX05TX1BBQ0tFRDsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1VSTC5ocHAg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1VSTC5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTEwZTdhMjA3NzA3MzRkZmRhMmNkZTc3NGRhYTRjNDMyMjRkZGJkMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
VVJMLmhwcApAQCAtMCwwICsxLDkwIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TVVJMLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgor
I2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1
ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitjbGFzcyBVUkwgOiBwdWJsaWMgQ29weWluZzxV
Ukw+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIFVSTCogZmlsZVVSTFdpdGhQYXRoKGNvbnN0IGNs
YXNzIFN0cmluZyogcFBhdGgpOworCisgICAgc3RhdGljIFVSTCogYWxsb2MoKTsKKyAgICBVUkwq
ICAgICAgICBpbml0KCk7CisgICAgVVJMKiAgICAgICAgaW5pdChjb25zdCBjbGFzcyBTdHJpbmcq
IHBTdHJpbmcpOworICAgIFVSTCogICAgICAgIGluaXRGaWxlVVJMV2l0aFBhdGgoY29uc3QgY2xh
c3MgU3RyaW5nKiBwUGF0aCk7CisKKyAgICBjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oKSBjb25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpVUkw6OmZpbGVVUkxXaXRo
UGF0aChjb25zdCBTdHJpbmcqIHBQYXRoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPFVSTCo+KF9OU19QUklWQVRFX0NMUyhOU1VSTCksIF9OU19QUklWQVRFX1NFTChmaWxlVVJM
V2l0aFBhdGhfKSwgcFBhdGgpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjphbGxvYygpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6YWxsb2M8VVJMPihfTlNfUFJJVkFURV9DTFMoTlNVUkwpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6OlVSTCogTlM6OlVSTDo6aW5pdCgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
aW5pdDxVUkw+KCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpVUkw6OmluaXQoY29uc3QgU3RyaW5n
KiBwU3RyaW5nKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChpbml0V2l0aFN0cmluZ18pLCBwU3RyaW5nKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OlVSTCogTlM6OlVSTDo6aW5pdEZpbGVVUkxXaXRoUGF0aChjb25zdCBTdHJpbmcqIHBQYXRoKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChpbml0RmlsZVVSTFdpdGhQYXRoXyksIHBQYXRoKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgY29uc3QgY2hhciog
TlM6OlVSTDo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxjb25zdCBjaGFyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9MSUNFTlNFLnR4dCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9MSUNF
TlNFLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZTc0M2M2N2U5ZmQzNjQ5Y2MwZTFjODZiOTExMWVlMWVhMjU5
Mzk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0xJ
Q0VOU0UudHh0CkBAIC0wLDAgKzEsMjAyIEBACisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFwYWNoZSBMaWNlbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9u
IDIuMCwgSmFudWFyeSAyMDA0CisgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvCisKKyAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBVU0UsIFJF
UFJPRFVDVElPTiwgQU5EIERJU1RSSUJVVElPTgorCisgICAxLiBEZWZpbml0aW9ucy4KKworICAg
ICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2Us
IHJlcHJvZHVjdGlvbiwKKyAgICAgIGFuZCBkaXN0cmlidXRpb24gYXMgZGVmaW5lZCBieSBTZWN0
aW9ucyAxIHRocm91Z2ggOSBvZiB0aGlzIGRvY3VtZW50LgorCisgICAgICAiTGljZW5zb3IiIHNo
YWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQorICAg
ICAgdGhlIGNvcHlyaWdodCBvd25lciB0aGF0IGlzIGdyYW50aW5nIHRoZSBMaWNlbnNlLgorCisg
ICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVu
dGl0eSBhbmQgYWxsCisgICAgICBvdGhlciBlbnRpdGllcyB0aGF0IGNvbnRyb2wsIGFyZSBjb250
cm9sbGVkIGJ5LCBvciBhcmUgdW5kZXIgY29tbW9uCisgICAgICBjb250cm9sIHdpdGggdGhhdCBl
bnRpdHkuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLAorICAgICAgImNvbnRy
b2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhl
CisgICAgICBkaXJlY3Rpb24gb3IgbWFuYWdlbWVudCBvZiBzdWNoIGVudGl0eSwgd2hldGhlciBi
eSBjb250cmFjdCBvcgorICAgICAgb3RoZXJ3aXNlLCBvciAoaWkpIG93bmVyc2hpcCBvZiBmaWZ0
eSBwZXJjZW50ICg1MCUpIG9yIG1vcmUgb2YgdGhlCisgICAgICBvdXRzdGFuZGluZyBzaGFyZXMs
IG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgorCisgICAgICAi
WW91IiAob3IgIllvdXIiKSBzaGFsbCBtZWFuIGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5
CisgICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgor
CisgICAgICAiU291cmNlIiBmb3JtIHNoYWxsIG1lYW4gdGhlIHByZWZlcnJlZCBmb3JtIGZvciBt
YWtpbmcgbW9kaWZpY2F0aW9ucywKKyAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8g
c29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KKyAgICAgIHNvdXJjZSwgYW5kIGNv
bmZpZ3VyYXRpb24gZmlsZXMuCisKKyAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkg
Zm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCisgICAgICB0cmFuc2Zvcm1hdGlvbiBvciB0
cmFuc2xhdGlvbiBvZiBhIFNvdXJjZSBmb3JtLCBpbmNsdWRpbmcgYnV0CisgICAgICBub3QgbGlt
aXRlZCB0byBjb21waWxlZCBvYmplY3QgY29kZSwgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24sCisg
ICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCisKKyAgICAgICJXb3Jr
IiBzaGFsbCBtZWFuIHRoZSB3b3JrIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gU291cmNlIG9y
CisgICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFz
IGluZGljYXRlZCBieSBhCisgICAgICBjb3B5cmlnaHQgbm90aWNlIHRoYXQgaXMgaW5jbHVkZWQg
aW4gb3IgYXR0YWNoZWQgdG8gdGhlIHdvcmsKKyAgICAgIChhbiBleGFtcGxlIGlzIHByb3ZpZGVk
IGluIHRoZSBBcHBlbmRpeCBiZWxvdykuCisKKyAgICAgICJEZXJpdmF0aXZlIFdvcmtzIiBzaGFs
bCBtZWFuIGFueSB3b3JrLCB3aGV0aGVyIGluIFNvdXJjZSBvciBPYmplY3QKKyAgICAgIGZvcm0s
IHRoYXQgaXMgYmFzZWQgb24gKG9yIGRlcml2ZWQgZnJvbSkgdGhlIFdvcmsgYW5kIGZvciB3aGlj
aCB0aGUKKyAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlv
bnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKKyAgICAgIHJlcHJlc2VudCwgYXMgYSB3aG9sZSwg
YW4gb3JpZ2luYWwgd29yayBvZiBhdXRob3JzaGlwLiBGb3IgdGhlIHB1cnBvc2VzCisgICAgICBv
ZiB0aGlzIExpY2Vuc2UsIERlcml2YXRpdmUgV29ya3Mgc2hhbGwgbm90IGluY2x1ZGUgd29ya3Mg
dGhhdCByZW1haW4KKyAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmlu
ZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKKyAgICAgIHRoZSBXb3JrIGFuZCBEZXJp
dmF0aXZlIFdvcmtzIHRoZXJlb2YuCisKKyAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4g
YW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCisgICAgICB0aGUgb3JpZ2luYWwgdmVy
c2lvbiBvZiB0aGUgV29yayBhbmQgYW55IG1vZGlmaWNhdGlvbnMgb3IgYWRkaXRpb25zCisgICAg
ICB0byB0aGF0IFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCB0aGF0IGlzIGludGVu
dGlvbmFsbHkKKyAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRo
ZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKKyAgICAgIG9yIGJ5IGFuIGluZGl2aWR1YWwg
b3IgTGVnYWwgRW50aXR5IGF1dGhvcml6ZWQgdG8gc3VibWl0IG9uIGJlaGFsZiBvZgorICAgICAg
dGhlIGNvcHlyaWdodCBvd25lci4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24s
ICJzdWJtaXR0ZWQiCisgICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWws
IG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CisgICAgICB0byB0aGUgTGljZW5zb3Igb3Ig
aXRzIHJlcHJlc2VudGF0aXZlcywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bworICAgICAg
Y29tbXVuaWNhdGlvbiBvbiBlbGVjdHJvbmljIG1haWxpbmcgbGlzdHMsIHNvdXJjZSBjb2RlIGNv
bnRyb2wgc3lzdGVtcywKKyAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJl
IG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCisgICAgICBMaWNlbnNvciBmb3IgdGhl
IHB1cnBvc2Ugb2YgZGlzY3Vzc2luZyBhbmQgaW1wcm92aW5nIHRoZSBXb3JrLCBidXQKKyAgICAg
IGV4Y2x1ZGluZyBjb21tdW5pY2F0aW9uIHRoYXQgaXMgY29uc3BpY3VvdXNseSBtYXJrZWQgb3Ig
b3RoZXJ3aXNlCisgICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBv
d25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKKworICAgICAgIkNvbnRyaWJ1dG9yIiBzaGFs
bCBtZWFuIExpY2Vuc29yIGFuZCBhbnkgaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKKyAgICAg
IG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExp
Y2Vuc29yIGFuZAorICAgICAgc3Vic2VxdWVudGx5IGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdv
cmsuCisKKyAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0
ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1
dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBu
b24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAg
IGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtz
IG9mLAorICAgICAgcHVibGljbHkgZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgc3VibGljZW5z
ZSwgYW5kIGRpc3RyaWJ1dGUgdGhlCisgICAgICBXb3JrIGFuZCBzdWNoIERlcml2YXRpdmUgV29y
a3MgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLgorCisgICAzLiBHcmFudCBvZiBQYXRlbnQgTGlj
ZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMg
TGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVh
bCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZy
ZWUsIGlycmV2b2NhYmxlCisgICAgICAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24p
IHBhdGVudCBsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwKKyAgICAgIHVzZSwgb2ZmZXIgdG8g
c2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLAorICAg
ICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1z
IGxpY2Vuc2FibGUKKyAgICAgIGJ5IHN1Y2ggQ29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJp
bHkgaW5mcmluZ2VkIGJ5IHRoZWlyCisgICAgICBDb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkg
Y29tYmluYXRpb24gb2YgdGhlaXIgQ29udHJpYnV0aW9uKHMpCisgICAgICB3aXRoIHRoZSBXb3Jr
IHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQorICAg
ICAgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVk
aW5nIGEKKyAgICAgIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFs
bGVnaW5nIHRoYXQgdGhlIFdvcmsKKyAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRl
ZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CisgICAgICBvciBjb250cmlidXRv
cnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzCisgICAgICBn
cmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJt
aW5hdGUKKyAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KKwor
ICAgNC4gUmVkaXN0cmlidXRpb24uIFlvdSBtYXkgcmVwcm9kdWNlIGFuZCBkaXN0cmlidXRlIGNv
cGllcyBvZiB0aGUKKyAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFu
eSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAorICAgICAgbW9kaWZpY2F0aW9ucywgYW5kIGluIFNv
dXJjZSBvciBPYmplY3QgZm9ybSwgcHJvdmlkZWQgdGhhdCBZb3UKKyAgICAgIG1lZXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zOgorCisgICAgICAoYSkgWW91IG11c3QgZ2l2ZSBhbnkgb3RoZXIg
cmVjaXBpZW50cyBvZiB0aGUgV29yayBvcgorICAgICAgICAgIERlcml2YXRpdmUgV29ya3MgYSBj
b3B5IG9mIHRoaXMgTGljZW5zZTsgYW5kCisKKyAgICAgIChiKSBZb3UgbXVzdCBjYXVzZSBhbnkg
bW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKKyAgICAgICAgICBzdGF0
aW5nIHRoYXQgWW91IGNoYW5nZWQgdGhlIGZpbGVzOyBhbmQKKworICAgICAgKGMpIFlvdSBtdXN0
IHJldGFpbiwgaW4gdGhlIFNvdXJjZSBmb3JtIG9mIGFueSBEZXJpdmF0aXZlIFdvcmtzCisgICAg
ICAgICAgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxsIGNvcHlyaWdodCwgcGF0ZW50LCB0cmFkZW1h
cmssIGFuZAorICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZv
cm0gb2YgdGhlIFdvcmssCisgICAgICAgICAgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBk
byBub3QgcGVydGFpbiB0byBhbnkgcGFydCBvZgorICAgICAgICAgIHRoZSBEZXJpdmF0aXZlIFdv
cmtzOyBhbmQKKworICAgICAgKGQpIElmIHRoZSBXb3JrIGluY2x1ZGVzIGEgIk5PVElDRSIgdGV4
dCBmaWxlIGFzIHBhcnQgb2YgaXRzCisgICAgICAgICAgZGlzdHJpYnV0aW9uLCB0aGVuIGFueSBE
ZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUgbXVzdAorICAgICAgICAgIGluY2x1
ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAor
ICAgICAgICAgIHdpdGhpbiBzdWNoIE5PVElDRSBmaWxlLCBleGNsdWRpbmcgdGhvc2Ugbm90aWNl
cyB0aGF0IGRvIG5vdAorICAgICAgICAgIHBlcnRhaW4gdG8gYW55IHBhcnQgb2YgdGhlIERlcml2
YXRpdmUgV29ya3MsIGluIGF0IGxlYXN0IG9uZQorICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcg
cGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCisgICAgICAgICAg
YXMgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgd2l0aGluIHRoZSBTb3VyY2UgZm9ybSBv
cgorICAgICAgICAgIGRvY3VtZW50YXRpb24sIGlmIHByb3ZpZGVkIGFsb25nIHdpdGggdGhlIERl
cml2YXRpdmUgV29ya3M7IG9yLAorICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVk
IGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKKyAgICAgICAgICB3aGVyZXZlciBzdWNo
IHRoaXJkLXBhcnR5IG5vdGljZXMgbm9ybWFsbHkgYXBwZWFyLiBUaGUgY29udGVudHMKKyAgICAg
ICAgICBvZiB0aGUgTk9USUNFIGZpbGUgYXJlIGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIG9u
bHkgYW5kCisgICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQg
WW91ciBvd24gYXR0cmlidXRpb24KKyAgICAgICAgICBub3RpY2VzIHdpdGhpbiBEZXJpdmF0aXZl
IFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsb25nc2lkZQorICAgICAgICAgIG9yIGFzIGFu
IGFkZGVuZHVtIHRvIHRoZSBOT1RJQ0UgdGV4dCBmcm9tIHRoZSBXb3JrLCBwcm92aWRlZAorICAg
ICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJl
IGNvbnN0cnVlZAorICAgICAgICAgIGFzIG1vZGlmeWluZyB0aGUgTGljZW5zZS4KKworICAgICAg
WW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNh
dGlvbnMgYW5kCisgICAgICBtYXkgcHJvdmlkZSBhZGRpdGlvbmFsIG9yIGRpZmZlcmVudCBsaWNl
bnNlIHRlcm1zIGFuZCBjb25kaXRpb25zCisgICAgICBmb3IgdXNlLCByZXByb2R1Y3Rpb24sIG9y
IGRpc3RyaWJ1dGlvbiBvZiBZb3VyIG1vZGlmaWNhdGlvbnMsIG9yCisgICAgICBmb3IgYW55IHN1
Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKKyAgICAg
IHJlcHJvZHVjdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGUgV29yayBvdGhlcndpc2UgY29t
cGxpZXMgd2l0aAorICAgICAgdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGluIHRoaXMgTGljZW5zZS4K
KworICAgNS4gU3VibWlzc2lvbiBvZiBDb250cmlidXRpb25zLiBVbmxlc3MgWW91IGV4cGxpY2l0
bHkgc3RhdGUgb3RoZXJ3aXNlLAorICAgICAgYW55IENvbnRyaWJ1dGlvbiBpbnRlbnRpb25hbGx5
IHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrCisgICAgICBieSBZb3UgdG8gdGhl
IExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAg
ICAgdGhpcyBMaWNlbnNlLCB3aXRob3V0IGFueSBhZGRpdGlvbmFsIHRlcm1zIG9yIGNvbmRpdGlv
bnMuCisgICAgICBOb3R3aXRoc3RhbmRpbmcgdGhlIGFib3ZlLCBub3RoaW5nIGhlcmVpbiBzaGFs
bCBzdXBlcnNlZGUgb3IgbW9kaWZ5CisgICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxp
Y2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAorICAgICAgd2l0aCBMaWNlbnNv
ciByZWdhcmRpbmcgc3VjaCBDb250cmlidXRpb25zLgorCisgICA2LiBUcmFkZW1hcmtzLiBUaGlz
IExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCisgICAg
ICBuYW1lcywgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcywgb3IgcHJvZHVjdCBuYW1lcyBvZiB0
aGUgTGljZW5zb3IsCisgICAgICBleGNlcHQgYXMgcmVxdWlyZWQgZm9yIHJlYXNvbmFibGUgYW5k
IGN1c3RvbWFyeSB1c2UgaW4gZGVzY3JpYmluZyB0aGUKKyAgICAgIG9yaWdpbiBvZiB0aGUgV29y
ayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgorCisgICA3
LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IKKyAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUg
V29yayAoYW5kIGVhY2gKKyAgICAgIENvbnRyaWJ1dG9yIHByb3ZpZGVzIGl0cyBDb250cmlidXRp
b25zKSBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisgICAgICBpbXBsaWVkLCBp
bmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9u
cworICAgICAgb2YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSwgb3Ig
RklUTkVTUyBGT1IgQQorICAgICAgUEFSVElDVUxBUiBQVVJQT1NFLiBZb3UgYXJlIHNvbGVseSBy
ZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlCisgICAgICBhcHByb3ByaWF0ZW5lc3Mgb2Yg
dXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKKyAgICAgIHJp
c2tzIGFzc29jaWF0ZWQgd2l0aCBZb3VyIGV4ZXJjaXNlIG9mIHBlcm1pc3Npb25zIHVuZGVyIHRo
aXMgTGljZW5zZS4KKworICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50
IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCisgICAgICB3aGV0aGVyIGluIHRvcnQgKGluY2x1
ZGluZyBuZWdsaWdlbmNlKSwgY29udHJhY3QsIG9yIG90aGVyd2lzZSwKKyAgICAgIHVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyAoc3VjaCBhcyBkZWxpYmVyYXRlIGFuZCBncm9zc2x5
CisgICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFu
eSBDb250cmlidXRvciBiZQorICAgICAgbGlhYmxlIHRvIFlvdSBmb3IgZGFtYWdlcywgaW5jbHVk
aW5nIGFueSBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLAorICAgICAgaW5jaWRlbnRhbCwgb3Ig
Y29uc2VxdWVudGlhbCBkYW1hZ2VzIG9mIGFueSBjaGFyYWN0ZXIgYXJpc2luZyBhcyBhCisgICAg
ICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0
byB1c2UgdGhlCisgICAgICBXb3JrIChpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGRhbWFn
ZXMgZm9yIGxvc3Mgb2YgZ29vZHdpbGwsCisgICAgICB3b3JrIHN0b3BwYWdlLCBjb21wdXRlciBm
YWlsdXJlIG9yIG1hbGZ1bmN0aW9uLCBvciBhbnkgYW5kIGFsbAorICAgICAgb3RoZXIgY29tbWVy
Y2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgorICAgICAg
aGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2VzLgorCisg
ICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJl
ZGlzdHJpYnV0aW5nCisgICAgICB0aGUgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2Ys
IFlvdSBtYXkgY2hvb3NlIHRvIG9mZmVyLAorICAgICAgYW5kIGNoYXJnZSBhIGZlZSBmb3IsIGFj
Y2VwdGFuY2Ugb2Ygc3VwcG9ydCwgd2FycmFudHksIGluZGVtbml0eSwKKyAgICAgIG9yIG90aGVy
IGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlz
CisgICAgICBMaWNlbnNlLiBIb3dldmVyLCBpbiBhY2NlcHRpbmcgc3VjaCBvYmxpZ2F0aW9ucywg
WW91IG1heSBhY3Qgb25seQorICAgICAgb24gWW91ciBvd24gYmVoYWxmIGFuZCBvbiBZb3VyIHNv
bGUgcmVzcG9uc2liaWxpdHksIG5vdCBvbiBiZWhhbGYKKyAgICAgIG9mIGFueSBvdGhlciBDb250
cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKKyAgICAgIGRlZmVu
ZCwgYW5kIGhvbGQgZWFjaCBDb250cmlidXRvciBoYXJtbGVzcyBmb3IgYW55IGxpYWJpbGl0eQor
ICAgICAgaW5jdXJyZWQgYnksIG9yIGNsYWltcyBhc3NlcnRlZCBhZ2FpbnN0LCBzdWNoIENvbnRy
aWJ1dG9yIGJ5IHJlYXNvbgorICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFu
dHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCisKKyAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElU
SU9OUworCisgICBBUFBFTkRJWDogSG93IHRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5
b3VyIHdvcmsuCisKKyAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdv
cmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCisgICAgICBib2lsZXJwbGF0ZSBub3RpY2UsIHdpdGgg
dGhlIGZpZWxkcyBlbmNsb3NlZCBieSBicmFja2V0cyAiW10iCisgICAgICByZXBsYWNlZCB3aXRo
IHlvdXIgb3duIGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uLiAoRG9uJ3QgaW5jbHVkZQorICAgICAg
dGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9w
cmlhdGUKKyAgICAgIGNvbW1lbnQgc3ludGF4IGZvciB0aGUgZmlsZSBmb3JtYXQuIFdlIGFsc28g
cmVjb21tZW5kIHRoYXQgYQorICAgICAgZmlsZSBvciBjbGFzcyBuYW1lIGFuZCBkZXNjcmlwdGlv
biBvZiBwdXJwb3NlIGJlIGluY2x1ZGVkIG9uIHRoZQorICAgICAgc2FtZSAicHJpbnRlZCBwYWdl
IiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCisgICAgICBpZGVudGlmaWNhdGlv
biB3aXRoaW4gdGhpcmQtcGFydHkgYXJjaGl2ZXMuCisKKyAgIENvcHlyaWdodCDCqSAyMDIxIEFw
cGxlIEluYy4KKworICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q0NTZjODcx
MjI3ZGI5YzQyMGIxN2FhNzE1N2Y4Zjg1MWVkZTZkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUu
aHBwCkBAIC0wLDAgKzEsOTMyIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNs
dWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHA+CisKKyNpbmNsdWRlICJNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwIgorI2luY2x1ZGUg
Ik1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJj
ZS5ocHAiCisjaW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwIgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVVc2FnZSkgeworICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlTm9uZSA9IDAs
CisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2VSZWZpdCA9IDEsCisgICAgQWNjZWxlcmF0
aW9uU3RydWN0dXJlVXNhZ2VQcmVmZXJGYXN0QnVpbGQgPSAyLAorICAgIEFjY2VsZXJhdGlvblN0
cnVjdHVyZVVzYWdlRXh0ZW5kZWRMaW1pdHMgPSA0LAorfTsKKworX01UTF9PUFRJT05TKHVpbnQz
Ml90LCBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlvbnMpIHsKKyAgICBBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlvbk5vbmUgPSAwLAorICAgIEFjY2VsZXJhdGlvblN0
cnVjdHVyZUluc3RhbmNlT3B0aW9uRGlzYWJsZVRyaWFuZ2xlQ3VsbGluZyA9IDEsCisgICAgQWNj
ZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25UcmlhbmdsZUZyb250RmFjaW5nV2luZGlu
Z0NvdW50ZXJDbG9ja3dpc2UgPSAyLAorICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNl
T3B0aW9uT3BhcXVlID0gNCwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlv
bk5vbk9wYXF1ZSA9IDgsCit9OworCitjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2Ny
aXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlw
dG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2Fn
ZSAgICAgICAgICAgICAgIHVzYWdlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFVzYWdlKE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlVXNhZ2UgdXNhZ2UpOworfTsKKworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0
cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEFjY2VsZXJhdGlvblN0cnVjdHVyZUdl
b21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQWNjZWxlcmF0
aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQWNj
ZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVPZmZzZXQoTlM6OlVJbnRlZ2VyIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVPZmZzZXQpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3BhcXVlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T3BhcXVlKGJvb2wgb3BhcXVlKTsK
KworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0QWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24oYm9vbCBh
bGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbik7CisKKyAgICBOUzo6
U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKK307CisKK19NVExf
RU5VTSh1aW50MzJfdCwgTW90aW9uQm9yZGVyTW9kZSkgeworICAgIE1vdGlvbkJvcmRlck1vZGVD
bGFtcCA9IDAsCisgICAgTW90aW9uQm9yZGVyTW9kZVZhbmlzaCA9IDEsCit9OworCitjbGFzcyBQ
cmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPFByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IsIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAg
IGNsYXNzIFByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqICAgICAgICBp
bml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2VvbWV0cnlEZXNjcmlwdG9ycygpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRHZW9tZXRyeURl
c2NyaXB0b3JzKGNvbnN0IE5TOjpBcnJheSogZ2VvbWV0cnlEZXNjcmlwdG9ycyk7CisKKyAgICBN
VEw6Ok1vdGlvbkJvcmRlck1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW90
aW9uU3RhcnRCb3JkZXJNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvblN0YXJ0Qm9yZGVyTW9kZShN
VEw6Ok1vdGlvbkJvcmRlck1vZGUgbW90aW9uU3RhcnRCb3JkZXJNb2RlKTsKKworICAgIE1UTDo6
TW90aW9uQm9yZGVyTW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25F
bmRCb3JkZXJNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvbkVuZEJvcmRlck1vZGUoTVRMOjpNb3Rp
b25Cb3JkZXJNb2RlIG1vdGlvbkVuZEJvcmRlck1vZGUpOworCisgICAgZmxvYXQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvblN0YXJ0VGltZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRNb3Rpb25TdGFydFRpbWUoZmxvYXQgbW90aW9uU3RhcnRUaW1lKTsKKwor
ICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb3Rpb25FbmRUaW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vdGlvbkVuZFRpbWUoZmxvYXQgbW90aW9u
RW5kVGltZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW90aW9uS2V5ZnJhbWVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNb3Rpb25L
ZXlmcmFtZUNvdW50KE5TOjpVSW50ZWdlciBtb3Rpb25LZXlmcmFtZUNvdW50KTsKKworICAgIHN0
YXRpYyBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqICBkZXNj
cmlwdG9yKCk7Cit9OworCitjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21l
dHJ5RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVU
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciwgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9t
ZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xh
c3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqICAgICAg
ICBpbml0KCk7CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
VmVydGV4QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogdmVydGV4QnVmZmVyKTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmVydGV4QnVmZmVyT2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWZXJ0ZXhCdWZmZXJP
ZmZzZXQoTlM6OlVJbnRlZ2VyIHZlcnRleEJ1ZmZlck9mZnNldCk7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRl
eFN0cmlkZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4U3RyaWRlKE5TOjpVSW50ZWdlciB2
ZXJ0ZXhTdHJpZGUpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0SW5kZXhCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRleEJ1ZmZlcik7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4QnVmZmVyT2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmRleEJ1ZmZlck9m
ZnNldChOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQpOworCisgICAgTVRMOjpJbmRleFR5
cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleFR5
cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldEluZGV4VHlwZShNVEw6OkluZGV4VHlwZSBpbmRleFR5
cGUpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmlhbmdsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUcmlh
bmdsZUNvdW50KE5TOjpVSW50ZWdlciB0cmlhbmdsZUNvdW50KTsKKworICAgIHN0YXRpYyBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiAgZGVzY3Jp
cHRvcigpOworfTsKKworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9t
ZXRyeURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QWNjZWxlcmF0aW9uU3RydWN0dXJl
Qm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IsIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
R2VvbWV0cnlEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlw
dG9yKiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGluZ0JveEJ1ZmZlcigpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVy
KiBib3VuZGluZ0JveEJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94QnVmZmVyT2Zm
c2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCb3VuZGluZ0JveEJ1ZmZlck9mZnNldChOUzo6
VUludGVnZXIgYm91bmRpbmdCb3hCdWZmZXJPZmZzZXQpOworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGlu
Z0JveFN0cmlkZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hTdHJpZGUoTlM6
OlVJbnRlZ2VyIGJvdW5kaW5nQm94U3RyaWRlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3hD
b3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hDb3VudChOUzo6VUludGVn
ZXIgYm91bmRpbmdCb3hDb3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogIGRlc2NyaXB0b3IoKTsKK307CisK
K2NsYXNzIE1vdGlvbktleWZyYW1lRGF0YSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8TW90aW9u
S2V5ZnJhbWVEYXRhPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBNb3Rpb25LZXlmcmFt
ZURhdGEqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBNb3Rpb25LZXlmcmFtZURhdGEqICAgICAgICBp
bml0KCk7CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAgICBidWZmZXIoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCdWZmZXIoY29u
c3QgY2xhc3MgQnVmZmVyKiBidWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpOworCisgICAgc3RhdGljIE1UTDo6
TW90aW9uS2V5ZnJhbWVEYXRhKiAgZGF0YSgpOworfTsKKworY2xhc3MgQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlp
bmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3Is
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdl
b21ldHJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisg
ICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ZXJ0ZXhCdWZmZXJzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRW
ZXJ0ZXhCdWZmZXJzKGNvbnN0IE5TOjpBcnJheSogdmVydGV4QnVmZmVycyk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZlcnRleFN0cmlkZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4U3Ry
aWRlKE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdHJpZGUpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEJ1
ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhCdWZmZXIoY29uc3QgY2xhc3Mg
QnVmZmVyKiBpbmRleEJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4QnVmZmVyT2Zmc2V0
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmRleEJ1ZmZlck9mZnNldChOUzo6VUludGVn
ZXIgaW5kZXhCdWZmZXJPZmZzZXQpOworCisgICAgTVRMOjpJbmRleFR5cGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleFR5cGUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEluZGV4VHlwZShNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmlhbmdsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRUcmlhbmdsZUNvdW50KE5TOjpVSW50ZWdlciB0cmlhbmdsZUNvdW50KTsKKworICAgIHN0
YXRpYyBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yKiAgZGVzY3JpcHRvcigpOworfTsKKworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJl
TW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8
QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3Is
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0Jv
eEdlb21ldHJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFjY2VsZXJhdGlvblN0
cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgp
OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib3VuZGluZ0JveEJ1ZmZlcnMoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEJvdW5kaW5nQm94QnVmZmVycyhjb25zdCBOUzo6QXJyYXkqIGJvdW5k
aW5nQm94QnVmZmVycyk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94U3RyaWRlKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCb3VuZGluZ0JveFN0cmlkZShOUzo6VUludGVn
ZXIgYm91bmRpbmdCb3hTdHJpZGUpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGluZ0JveENv
dW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCb3VuZGluZ0JveENvdW50KE5TOjpV
SW50ZWdlciBib3VuZGluZ0JveENvdW50KTsKKworICAgIHN0YXRpYyBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiAgZGVzY3JpcHRv
cigpOworfTsKKworc3RydWN0IEFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRv
cgoreworICAgIE1UTDo6UGFja2VkRmxvYXQ0eDMgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
Zm9ybWF0aW9uTWF0cml4OworICAgIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VP
cHRpb25zIG9wdGlvbnM7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWFzazsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0OworICAgIHVpbnQzMl90ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VsZXJhdGlvblN0cnVjdHVyZUluZGV4OworfSBf
TVRMX1BBQ0tFRDsKKworc3RydWN0IEFjY2VsZXJhdGlvblN0cnVjdHVyZVVzZXJJREluc3RhbmNl
RGVzY3JpcHRvcgoreworICAgIE1UTDo6UGFja2VkRmxvYXQ0eDMgICAgICAgICAgICAgICAgICAg
ICAgIHRyYW5zZm9ybWF0aW9uTWF0cml4OworICAgIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
SW5zdGFuY2VPcHRpb25zIG9wdGlvbnM7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFzazsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0OworICAgIHVpbnQzMl90
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VsZXJhdGlvblN0cnVjdHVyZUlu
ZGV4OworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJ
RDsKK30gX01UTF9QQUNLRUQ7CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIEFjY2VsZXJhdGlv
blN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGUpIHsKKyAgICBBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlRGVmYXVsdCA9IDAsCisgICAgQWNjZWxlcmF0aW9u
U3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlwZVVzZXJJRCA9IDEsCisgICAgQWNjZWxlcmF0
aW9uU3RydWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlwZU1vdGlvbiA9IDIsCit9OworCitzdHJ1
Y3QgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uSW5zdGFuY2VEZXNjcmlwdG9yCit7CisgICAg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9wdGlvbnMgb3B0aW9uczsKKyAgICB1
aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrOworICAgIHVpbnQz
Ml90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVPZmZzZXQ7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWNjZWxlcmF0aW9uU3RydWN0dXJlSW5kZXg7CisgICAgdWludDMyX3QgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXNlcklEOworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vdGlvblRyYW5zZm9ybXNTdGFydEluZGV4OworICAgIHVpbnQz
Ml90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvblRyYW5zZm9ybXNDb3Vu
dDsKKyAgICBNVEw6Ok1vdGlvbkJvcmRlck1vZGUgICAgICAgICAgICAgICAgICAgICBtb3Rpb25T
dGFydEJvcmRlck1vZGU7CisgICAgTVRMOjpNb3Rpb25Cb3JkZXJNb2RlICAgICAgICAgICAgICAg
ICAgICAgbW90aW9uRW5kQm9yZGVyTW9kZTsKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtb3Rpb25TdGFydFRpbWU7CisgICAgZmxvYXQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbW90aW9uRW5kVGltZTsKK30gX01UTF9QQUNLRUQ7CisK
K2NsYXNzIEluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBO
Uzo6Q29weWluZzxJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IsIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y2xhc3MgSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBhbGxvYygpOwor
CisgICAgY2xhc3MgSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiAgICAg
ICAgaW5pdCgpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5z
dGFuY2VEZXNjcmlwdG9yQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5zdGFuY2VEZXNjcmlw
dG9yQnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgaW5zdGFuY2VE
ZXNjcmlwdG9yQnVmZmVyT2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEluc3RhbmNlRGVzY3JpcHRvclN0cmlkZShOUzo6VUludGVnZXIgaW5zdGFuY2VE
ZXNjcmlwdG9yU3RyaWRlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnN0YW5j
ZUNvdW50KE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50KTsKKworICAgIE5TOjpBcnJheSogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlZEFjY2VsZXJh
dGlvblN0cnVjdHVyZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVzKGNvbnN0IE5TOjpBcnJheSogaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcyk7CisK
KyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGUgICAg
ICBpbnN0YW5jZURlc2NyaXB0b3JUeXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VEZXNjcmlwdG9y
VHlwZShNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGUgaW5z
dGFuY2VEZXNjcmlwdG9yVHlwZSk7CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25UcmFuc2Zvcm1CdWZmZXIoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBtb3Rpb25UcmFu
c2Zvcm1CdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0KCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBtb3Rpb25UcmFuc2Zv
cm1CdWZmZXJPZmZzZXQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW90aW9uVHJhbnNmb3JtQ291bnQoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRN
b3Rpb25UcmFuc2Zvcm1Db3VudChOUzo6VUludGVnZXIgbW90aW9uVHJhbnNmb3JtQ291bnQpOwor
CisgICAgc3RhdGljIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9y
KiAgZGVzY3JpcHRvcigpOworfTsKKworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlIDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIFJlc291cmNlPgorewor
cHVibGljOgorICAgIE5TOjpVSW50ZWdlciBzaXplKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0
YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJl
RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVE
ZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB1c2Fn
ZQorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZSBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnVzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHVzYWdlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRVc2FnZShNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRVc2FnZV8pLCB1c2FnZSk7Cit9CisKKy8vIHN0YXRp
YyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdl
b21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2Ny
aXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRM
QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhv
ZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURl
c2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjpp
bml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZU9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVPZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9m
ZnNldChOUzo6VUludGVnZXIgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldF8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
T2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IG9wYXF1ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6b3BhcXVlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG9wYXF1ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9w
YXF1ZV8pLCBvcGFxdWUpOworfQorCisvLyBwcm9wZXJ0eTogYWxsb3dEdXBsaWNhdGVJbnRlcnNl
Y3Rpb25GdW5jdGlvbkludm9jYXRpb24KK19NVExfSU5MSU5FIGJvb2wgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OmFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9u
RnVuY3Rpb25JbnZvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsbG93RHVwbGljYXRlSW50ZXJzZWN0
aW9uRnVuY3Rpb25JbnZvY2F0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OnNldEFsbG93RHVwbGljYXRlSW50
ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uKGJvb2wgYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rp
b25GdW5jdGlvbkludm9jYXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rp
b25JbnZvY2F0aW9uXyksIGFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0
aW9uKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6bGFiZWwoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0IE5TOjpT
dHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3IqIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6
YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlByaW1pdGl2ZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUHJpbWl0
aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3Jp
cHRvciogTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbml0
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlByaW1pdGl2ZUFjY2VsZXJh
dGlvblN0cnVjdHVyZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBnZW9tZXRyeURl
c2NyaXB0b3JzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0
aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6Z2VvbWV0cnlEZXNjcmlwdG9ycygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChnZW9tZXRyeURlc2NyaXB0b3JzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRHZW9tZXRyeURl
c2NyaXB0b3JzKGNvbnN0IE5TOjpBcnJheSogZ2VvbWV0cnlEZXNjcmlwdG9ycykKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0R2VvbWV0
cnlEZXNjcmlwdG9yc18pLCBnZW9tZXRyeURlc2NyaXB0b3JzKTsKK30KKworLy8gcHJvcGVydHk6
IG1vdGlvblN0YXJ0Qm9yZGVyTW9kZQorX01UTF9JTkxJTkUgTVRMOjpNb3Rpb25Cb3JkZXJNb2Rl
IE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uU3Rh
cnRCb3JkZXJNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6Ok1vdGlvbkJvcmRlck1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobW90aW9uU3RhcnRC
b3JkZXJNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQcmltaXRpdmVBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25TdGFydEJvcmRlck1vZGUoTVRMOjpN
b3Rpb25Cb3JkZXJNb2RlIG1vdGlvblN0YXJ0Qm9yZGVyTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TW90aW9uU3RhcnRCb3Jk
ZXJNb2RlXyksIG1vdGlvblN0YXJ0Qm9yZGVyTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rp
b25FbmRCb3JkZXJNb2RlCitfTVRMX0lOTElORSBNVEw6Ok1vdGlvbkJvcmRlck1vZGUgTVRMOjpQ
cmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25FbmRCb3JkZXJN
b2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Ok1vdGlv
bkJvcmRlck1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobW90aW9uRW5kQm9yZGVyTW9kZSkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0
dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9uRW5kQm9yZGVyTW9kZShNVEw6Ok1vdGlvbkJvcmRlck1v
ZGUgbW90aW9uRW5kQm9yZGVyTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TW90aW9uRW5kQm9yZGVyTW9kZV8pLCBtb3Rpb25F
bmRCb3JkZXJNb2RlKTsKK30KKworLy8gcHJvcGVydHk6IG1vdGlvblN0YXJ0VGltZQorX01UTF9J
TkxJTkUgZmxvYXQgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9y
Ojptb3Rpb25TdGFydFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGZsb2F0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvblN0YXJ0VGltZSkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6c2V0TW90aW9uU3RhcnRUaW1lKGZsb2F0IG1vdGlvblN0YXJ0VGltZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TW90
aW9uU3RhcnRUaW1lXyksIG1vdGlvblN0YXJ0VGltZSk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rp
b25FbmRUaW1lCitfTVRMX0lOTElORSBmbG9hdCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0
cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvbkVuZFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPGZsb2F0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvbkVu
ZFRpbWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1vdGlvbkVuZFRpbWUoZmxvYXQgbW90aW9uRW5kVGlt
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0TW90aW9uRW5kVGltZV8pLCBtb3Rpb25FbmRUaW1lKTsKK30KKworLy8gcHJvcGVydHk6
IG1vdGlvbktleWZyYW1lQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlByaW1p
dGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvbktleWZyYW1lQ291bnQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25LZXlmcmFtZUNvdW50KSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9y
OjpzZXRNb3Rpb25LZXlmcmFtZUNvdW50KE5TOjpVSW50ZWdlciBtb3Rpb25LZXlmcmFtZUNvdW50
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRNb3Rpb25LZXlmcmFtZUNvdW50XyksIG1vdGlvbktleWZyYW1lQ291bnQpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlByaW1pdGl2ZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvcjo6ZGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9y
Kj4oX01UTF9QUklWQVRFX0NMUyhNVExQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNj
cmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChkZXNjcmlwdG9yKSk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFu
Z2xlR2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xl
R2VvbWV0cnlEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I+
KF9NVExfUFJJVkFURV9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRy
eURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFu
Z2xlR2VvbWV0cnlEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4QnVmZmVy
CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlh
bmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6dmVydGV4QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwodmVydGV4QnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VmVydGV4QnVmZmVyKGNv
bnN0IE1UTDo6QnVmZmVyKiB2ZXJ0ZXhCdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEJ1ZmZlcl8pLCB2ZXJ0ZXhC
dWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4QnVmZmVyT2Zmc2V0CitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5
RGVzY3JpcHRvcjo6dmVydGV4QnVmZmVyT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVy
dGV4QnVmZmVyT2Zmc2V0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VmVydGV4QnVmZmVyT2Zm
c2V0KE5TOjpVSW50ZWdlciB2ZXJ0ZXhCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEJ1ZmZlck9mZnNl
dF8pLCB2ZXJ0ZXhCdWZmZXJPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4U3RyaWRl
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlh
bmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6dmVydGV4U3RyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwodmVydGV4U3RyaWRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VmVydGV4U3RyaWRlKE5T
OjpVSW50ZWdlciB2ZXJ0ZXhTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFN0cmlkZV8pLCB2ZXJ0ZXhTdHJpZGUp
OworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVy
KiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpp
bmRleEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4QnVmZmVyKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5
RGVzY3JpcHRvcjo6c2V0SW5kZXhCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGluZGV4QnVmZmVy
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRJbmRleEJ1ZmZlcl8pLCBpbmRleEJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRl
eEJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluZGV4QnVmZmVyT2Zmc2V0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXhCdWZmZXJPZmZzZXQpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlw
dG9yOjpzZXRJbmRleEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEluZGV4QnVmZmVyT2Zmc2V0XyksIGluZGV4QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJv
cGVydHk6IGluZGV4VHlwZQorX01UTF9JTkxJTkUgTVRMOjpJbmRleFR5cGUgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5kZXhUeXBlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGV4VHlwZT4odGhp
cywgX01UTF9QUklWQVRFX1NFTChpbmRleFR5cGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRJ
bmRleFR5cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleFR5cGVfKSwgaW5kZXhU
eXBlKTsKK30KKworLy8gcHJvcGVydHk6IHRyaWFuZ2xlQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlw
dG9yOjp0cmlhbmdsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHJpYW5nbGVDb3VudCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5n
bGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFRyaWFuZ2xlQ291bnQoTlM6OlVJbnRlZ2VyIHRyaWFu
Z2xlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFRyaWFuZ2xlQ291bnRfKSwgdHJpYW5nbGVDb3VudCk7Cit9CisKKy8vIHN0
YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmRlc2NyaXB0b3IoKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVH
ZW9tZXRyeURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVj
dHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChkZXNjcmlw
dG9yKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQWNj
ZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IpKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJv
dW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJv
dW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlE
ZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hCdWZmZXIKK19NVExf
SU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94
R2VvbWV0cnlEZXNjcmlwdG9yOjpib3VuZGluZ0JveEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGJvdW5kaW5nQm94QnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91bmRp
bmdCb3hCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJvdW5kaW5nQm94QnVmZmVyKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3Vu
ZGluZ0JveEJ1ZmZlcl8pLCBib3VuZGluZ0JveEJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5OiBi
b3VuZGluZ0JveEJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5n
Qm94QnVmZmVyT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hCdWZmZXJP
ZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveEJ1ZmZlck9mZnNl
dChOUzo6VUludGVnZXIgYm91bmRpbmdCb3hCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94QnVm
ZmVyT2Zmc2V0XyksIGJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6
IGJvdW5kaW5nQm94U3RyaWRlCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hT
dHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChib3VuZGluZ0JveFN0cmlkZSkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9t
ZXRyeURlc2NyaXB0b3I6OnNldEJvdW5kaW5nQm94U3RyaWRlKE5TOjpVSW50ZWdlciBib3VuZGlu
Z0JveFN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0Qm91bmRpbmdCb3hTdHJpZGVfKSwgYm91bmRpbmdCb3hTdHJpZGUpOwor
fQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRl
Z2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0
b3I6OmJvdW5kaW5nQm94Q291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChib3VuZGluZ0JveENv
dW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVC
b3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91bmRpbmdCb3hDb3VudChOUzo6VUlu
dGVnZXIgYm91bmRpbmdCb3hDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Qm91bmRpbmdCb3hDb3VudF8pLCBib3VuZGluZ0Jv
eENvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgorX01UTF9JTkxJTkUg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciog
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6
ZGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcio+KF9NVExfUFJJ
VkFURV9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2Ny
aXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGRlc2NyaXB0b3IpKTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhKiBNVEw6Ok1v
dGlvbktleWZyYW1lRGF0YTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxNVEw6Ok1vdGlvbktleWZyYW1lRGF0YT4oX01UTF9QUklWQVRFX0NMUyhNVExNb3Rpb25LZXlm
cmFtZURhdGEpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6Ok1vdGlv
bktleWZyYW1lRGF0YSogTVRMOjpNb3Rpb25LZXlmcmFtZURhdGE6OmluaXQoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhPigpOworfQorCisv
LyBwcm9wZXJ0eTogYnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpNb3Rpb25L
ZXlmcmFtZURhdGE6OmJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlcikpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjpzZXRCdWZmZXIoY29u
c3QgTVRMOjpCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyXyksIGJ1ZmZlcik7Cit9CisKKy8vIHBy
b3BlcnR5OiBvZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6Ok1vdGlvbktleWZy
YW1lRGF0YTo6b2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2Zmc2V0KSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpNb3Rpb25LZXlmcmFtZURhdGE6OnNldE9mZnNldChOUzo6VUlu
dGVnZXIgb2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRPZmZzZXRfKSwgb2Zmc2V0KTsKK30KKworLy8gc3RhdGljIG1ldGhv
ZDogZGF0YQorX01UTF9JTkxJTkUgTVRMOjpNb3Rpb25LZXlmcmFtZURhdGEqIE1UTDo6TW90aW9u
S2V5ZnJhbWVEYXRhOjpkYXRhKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6Ok1vdGlvbktleWZyYW1lRGF0YSo+KF9NVExfUFJJVkFURV9DTFMoTVRMTW90aW9uS2V5ZnJh
bWVEYXRhKSwgX01UTF9QUklWQVRFX1NFTChkYXRhKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFu
Z2xlR2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRy
aWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRy
eURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90
aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0
cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2Vv
bWV0cnlEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9y
PigpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4QnVmZmVycworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjp2ZXJ0ZXhCdWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleEJ1ZmZlcnMp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlv
blRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhCdWZmZXJzKGNvbnN0IE5TOjpB
cnJheSogdmVydGV4QnVmZmVycykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4QnVmZmVyc18pLCB2ZXJ0ZXhCdWZmZXJzKTsK
K30KKworLy8gcHJvcGVydHk6IHZlcnRleFN0cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2Vy
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0
b3I6OnZlcnRleFN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleFN0cmlkZSkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFZlcnRleFN0cmlkZShOUzo6VUludGVnZXIgdmVy
dGV4U3RyaWRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRWZXJ0ZXhTdHJpZGVfKSwgdmVydGV4U3RyaWRlKTsKK30KKworLy8gcHJv
cGVydHk6IGluZGV4QnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5kZXhCdWZm
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVy
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleEJ1ZmZlcikpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3I6OnNldEluZGV4QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlcikK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0SW5kZXhCdWZmZXJfKSwgaW5kZXhCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhC
dWZmZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjppbmRleEJ1ZmZlck9mZnNl
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4QnVmZmVyT2Zmc2V0KSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21l
dHJ5RGVzY3JpcHRvcjo6c2V0SW5kZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIGluZGV4QnVm
ZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRJbmRleEJ1ZmZlck9mZnNldF8pLCBpbmRleEJ1ZmZlck9mZnNldCk7Cit9
CisKKy8vIHByb3BlcnR5OiBpbmRleFR5cGUKK19NVExfSU5MSU5FIE1UTDo6SW5kZXhUeXBlIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6
OmluZGV4VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpJbmRleFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXhUeXBlKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdl
b21ldHJ5RGVzY3JpcHRvcjo6c2V0SW5kZXhUeXBlKE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0SW5kZXhUeXBlXyksIGluZGV4VHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0cmlhbmdsZUNv
dW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVN
b3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6dHJpYW5nbGVDb3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHRyaWFuZ2xlQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpz
ZXRUcmlhbmdsZUNvdW50KE5TOjpVSW50ZWdlciB0cmlhbmdsZUNvdW50KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUcmlhbmdsZUNv
dW50XyksIHRyaWFuZ2xlQ291bnQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBkZXNjcmlwdG9y
CitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2Vv
bWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xl
R2VvbWV0cnlEZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0
cnlEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVN
b3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3Jp
cHRvcikpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciog
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3Jp
cHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRv
ciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVz
Y3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcj4oKTsK
K30KKworLy8gcHJvcGVydHk6IGJvdW5kaW5nQm94QnVmZmVycworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlE
ZXNjcmlwdG9yOjpib3VuZGluZ0JveEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRp
bmdCb3hCdWZmZXJzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91bmRpbmdC
b3hCdWZmZXJzKGNvbnN0IE5TOjpBcnJheSogYm91bmRpbmdCb3hCdWZmZXJzKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3VuZGlu
Z0JveEJ1ZmZlcnNfKSwgYm91bmRpbmdCb3hCdWZmZXJzKTsKK30KKworLy8gcHJvcGVydHk6IGJv
dW5kaW5nQm94U3RyaWRlCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdC
b3hTdHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChib3VuZGluZ0JveFN0cmlkZSkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRp
bmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OnNldEJvdW5kaW5nQm94U3RyaWRlKE5TOjpVSW50ZWdl
ciBib3VuZGluZ0JveFN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Qm91bmRpbmdCb3hTdHJpZGVfKSwgYm91bmRpbmdCb3hT
dHJpZGUpOworfQorCisvLyBwcm9wZXJ0eTogYm91bmRpbmdCb3hDb3VudAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hH
ZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94Q291bnQoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChib3VuZGluZ0JveENvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91
bmRpbmdCb3hDb3VudChOUzo6VUludGVnZXIgYm91bmRpbmdCb3hDb3VudCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Qm91bmRpbmdC
b3hDb3VudF8pLCBib3VuZGluZ0JveENvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVz
Y3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3Vu
ZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rp
b25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6ZGVzY3JpcHRvcigpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25C
b3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMQWNjZWxl
cmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IpLCBfTVRM
X1BSSVZBVEVfU0VMKGRlc2NyaXB0b3IpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MK
K19NVExfSU5MSU5FIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9y
KiBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExJbnN0YW5jZUFjY2VsZXJh
dGlvblN0cnVjdHVyZURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lO
TElORSBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpJ
bnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVE
ZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVy
CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVj
dHVyZURlc2NyaXB0b3I6Omluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcikpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRJbnN0YW5j
ZURlc2NyaXB0b3JCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGluc3RhbmNlRGVzY3JpcHRvckJ1
ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyXyksIGluc3RhbmNlRGVzY3JpcHRvckJ1
ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5OiBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0
dXJlRGVzY3JpcHRvcjo6aW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0KSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6
OnNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgaW5zdGFuY2VE
ZXNjcmlwdG9yQnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXRf
KSwgaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IGlu
c3RhbmNlRGVzY3JpcHRvclN0cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SW5z
dGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbnN0YW5jZURlc2NyaXB0b3JT
dHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnN0YW5jZURlc2NyaXB0b3JTdHJpZGUpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJl
RGVzY3JpcHRvcjo6c2V0SW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlKE5TOjpVSW50ZWdlciBpbnN0
YW5jZURlc2NyaXB0b3JTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc3RhbmNlRGVzY3JpcHRvclN0cmlkZV8pLCBpbnN0
YW5jZURlc2NyaXB0b3JTdHJpZGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5zdGFuY2VDb3VudAor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVEZXNjcmlwdG9yOjppbnN0YW5jZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFu
Y2VDb3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRJbnN0YW5jZUNvdW50KE5TOjpVSW50ZWdlciBpbnN0
YW5jZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRJbnN0YW5jZUNvdW50XyksIGluc3RhbmNlQ291bnQpOworfQorCisvLyBw
cm9wZXJ0eTogaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcworX01UTF9JTkxJTkUgTlM6
OkFycmF5KiBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5z
dGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnN0YW5j
ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJ
bnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldEluc3RhbmNlZEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZXMoY29uc3QgTlM6OkFycmF5KiBpbnN0YW5jZWRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRJbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzXyksIGluc3RhbmNl
ZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMpOworfQorCisvLyBwcm9wZXJ0eTogaW5zdGFuY2VEZXNj
cmlwdG9yVHlwZQorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5j
ZURlc2NyaXB0b3JUeXBlIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlw
dG9yOjppbnN0YW5jZURlc2NyaXB0b3JUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRv
clR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yVHlwZSkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVE
ZXNjcmlwdG9yOjpzZXRJbnN0YW5jZURlc2NyaXB0b3JUeXBlKE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlwZSBpbnN0YW5jZURlc2NyaXB0b3JUeXBlKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJ
bnN0YW5jZURlc2NyaXB0b3JUeXBlXyksIGluc3RhbmNlRGVzY3JpcHRvclR5cGUpOworfQorCisv
LyBwcm9wZXJ0eTogbW90aW9uVHJhbnNmb3JtQnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZl
ciogTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvblRy
YW5zZm9ybUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvblRyYW5zZm9ybUJ1ZmZl
cikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXIoY29uc3QgTVRMOjpCdWZm
ZXIqIG1vdGlvblRyYW5zZm9ybUJ1ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyXyksIG1v
dGlvblRyYW5zZm9ybUJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25UcmFuc2Zvcm1C
dWZmZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6Okluc3RhbmNlQWNjZWxl
cmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0KSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2Ny
aXB0b3I6OnNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgbW90aW9u
VHJhbnNmb3JtQnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXRfKSwg
bW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IG1vdGlvblRy
YW5zZm9ybUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJbnN0YW5jZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvblRyYW5zZm9ybUNvdW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobW90aW9uVHJhbnNmb3JtQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0TW90
aW9uVHJhbnNmb3JtQ291bnQoTlM6OlVJbnRlZ2VyIG1vdGlvblRyYW5zZm9ybUNvdW50KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRN
b3Rpb25UcmFuc2Zvcm1Db3VudF8pLCBtb3Rpb25UcmFuc2Zvcm1Db3VudCk7Cit9CisKKy8vIHN0
YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6SW5zdGFuY2VBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0
dXJlRGVzY3JpcHRvcjo6ZGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTEluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciks
IF9NVExfUFJJVkFURV9TRUwoZGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0eTogc2l6ZQor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlOjpzaXpl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2l6ZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1h
bmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZmNGM5
YzhiZDFlZDQyOGE0M2Y3ZWYyZTE2YzY5MjhjMTU0OWNjMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSwxNDQgQEAKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEFjY2VsZXJhdGlv
blN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQXJndW1l
bnQuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExI
ZWFwLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sK
K2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyIDogcHVibGljIE5TOjpS
ZWZlcmVuY2luZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciwgQ29tbWFuZEVu
Y29kZXI+Cit7CitwdWJsaWM6CisgICAgdm9pZCBidWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZShj
b25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwg
Y29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwg
Y29uc3QgY2xhc3MgQnVmZmVyKiBzY3JhdGNoQnVmZmVyLCBOUzo6VUludGVnZXIgc2NyYXRjaEJ1
ZmZlck9mZnNldCk7CisKKyAgICB2b2lkIHJlZml0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0
IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJl
LCBjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
LCBjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGRlc3RpbmF0aW9uQWNjZWxlcmF0
aW9uU3RydWN0dXJlLCBjb25zdCBjbGFzcyBCdWZmZXIqIHNjcmF0Y2hCdWZmZXIsIE5TOjpVSW50
ZWdlciBzY3JhdGNoQnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgY29weUFjY2VsZXJhdGlvblN0
cnVjdHVyZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJh
dGlvblN0cnVjdHVyZSwgY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBkZXN0aW5h
dGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSk7CisKKyAgICB2b2lkIHdyaXRlQ29tcGFjdGVkQWNj
ZWxlcmF0aW9uU3RydWN0dXJlU2l6ZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUq
IGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpV
SW50ZWdlciBvZmZzZXQpOworCisgICAgdm9pZCB3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0
cnVjdHVyZVNpemUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRp
b25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zm
c2V0LCBNVEw6OkRhdGFUeXBlIHNpemVEYXRhVHlwZSk7CisKKyAgICB2b2lkIGNvcHlBbmRDb21w
YWN0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVy
ZSogc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25T
dHJ1Y3R1cmUqIGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0dXJlKTsKKworICAgIHZvaWQg
dXBkYXRlRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKKworICAgIHZvaWQgd2FpdEZv
ckZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBmZW5jZSk7CisKKyAgICB2b2lkIHVzZVJlc291cmNl
KGNvbnN0IGNsYXNzIFJlc291cmNlKiByZXNvdXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdl
KTsKKworICAgIHZvaWQgdXNlUmVzb3VyY2VzKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBO
Uzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSk7CisKKyAgICB2b2lk
IHVzZUhlYXAoY29uc3QgY2xhc3MgSGVhcCogaGVhcCk7CisKKyAgICB2b2lkIHVzZUhlYXBzKE1U
TDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAgIHZvaWQgc2FtcGxl
Q291bnRlcnNJbkJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVC
dWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKTsKK307CisKK30K
KworLy8gbWV0aG9kOiBidWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZTpkZXNjcmlwdG9yOnNjcmF0
Y2hCdWZmZXI6c2NyYXRjaEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6YnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1
cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVy
ZSwgY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
LCBjb25zdCBNVEw6OkJ1ZmZlciogc2NyYXRjaEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNjcmF0Y2hC
dWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlX2Rlc2NyaXB0b3Jfc2NyYXRj
aEJ1ZmZlcl9zY3JhdGNoQnVmZmVyT2Zmc2V0XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgZGVz
Y3JpcHRvciwgc2NyYXRjaEJ1ZmZlciwgc2NyYXRjaEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1l
dGhvZDogcmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6ZGVzY3JpcHRvcjpkZXN0aW5hdGlvbjpz
Y3JhdGNoQnVmZmVyOnNjcmF0Y2hCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OnJlZml0QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBzb3VyY2VBY2NlbGVyYXRp
b25TdHJ1Y3R1cmUsIGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciog
ZGVzY3JpcHRvciwgY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGRlc3RpbmF0aW9u
QWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkJ1ZmZlciogc2NyYXRjaEJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIHNjcmF0Y2hCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlZml0QWNjZWxlcmF0aW9uU3RydWN0
dXJlX2Rlc2NyaXB0b3JfZGVzdGluYXRpb25fc2NyYXRjaEJ1ZmZlcl9zY3JhdGNoQnVmZmVyT2Zm
c2V0XyksIHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwgZGVzY3JpcHRvciwgZGVzdGluYXRp
b25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIHNjcmF0Y2hCdWZmZXIsIHNjcmF0Y2hCdWZmZXJPZmZz
ZXQpOworfQorCisvLyBtZXRob2Q6IGNvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6dG9BY2NlbGVy
YXRpb25TdHJ1Y3R1cmU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlQ29tbWFuZEVuY29kZXI6OmNvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3Qg
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0
dXJlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlX3RvQWNjZWxlcmF0aW9uU3RydWN0dXJlXyks
IHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwgZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1
Y3R1cmUpOworfQorCisvLyBtZXRob2Q6IHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0
dXJlU2l6ZTp0b0J1ZmZlcjpvZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OndyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlU2l6ZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9u
U3RydWN0dXJlLCBjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemVfdG9CdWZmZXJfb2Zmc2V0
XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgYnVmZmVyLCBvZmZzZXQpOworfQorCisvLyBtZXRo
b2Q6IHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZTp0b0J1ZmZlcjpvZmZz
ZXQ6c2l6ZURhdGFUeXBlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZUNvbW1hbmRFbmNvZGVyOjp3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNp
emUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVy
ZSwgY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTVRMOjpE
YXRhVHlwZSBzaXplRGF0YVR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJl
U2l6ZV90b0J1ZmZlcl9vZmZzZXRfc2l6ZURhdGFUeXBlXyksIGFjY2VsZXJhdGlvblN0cnVjdHVy
ZSwgYnVmZmVyLCBvZmZzZXQsIHNpemVEYXRhVHlwZSk7Cit9CisKKy8vIG1ldGhvZDogY29weUFu
ZENvbXBhY3RBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6dG9BY2NlbGVyYXRpb25TdHJ1Y3R1cmU6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6
OmNvcHlBbmRDb21wYWN0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlKiBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlKiBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29w
eUFuZENvbXBhY3RBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfdG9BY2NlbGVyYXRpb25TdHJ1Y3R1cmVf
KSwgc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0
cnVjdHVyZSk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlRmVuY2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OnVwZGF0ZUZlbmNlKGNv
bnN0IE1UTDo6RmVuY2UqIGZlbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTCh1cGRhdGVGZW5jZV8pLCBmZW5jZSk7Cit9CisKKy8vIG1l
dGhvZDogd2FpdEZvckZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjp3YWl0Rm9yRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVu
Y2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHdhaXRGb3JGZW5jZV8pLCBmZW5jZSk7Cit9CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2U6
dXNhZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFu
ZEVuY29kZXI6OnVzZVJlc291cmNlKGNvbnN0IE1UTDo6UmVzb3VyY2UqIHJlc291cmNlLCBNVEw6
OlJlc291cmNlVXNhZ2UgdXNhZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZVJlc291cmNlX3VzYWdlXyksIHJlc291cmNlLCB1c2Fn
ZSk7Cit9CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2VzOmNvdW50OnVzYWdlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjp1c2VSZXNv
dXJjZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRM
OjpSZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZXNfY291bnRfdXNhZ2VfKSwgcmVzb3Vy
Y2VzLCBjb3VudCwgdXNhZ2UpOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXA6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OnVzZUhlYXAo
Y29uc3QgTVRMOjpIZWFwKiBoZWFwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwXyksIGhlYXApOworfQorCisvLyBtZXRob2Q6
IHVzZUhlYXBzOmNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZUNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwcyhNVEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50
ZWdlciBjb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodXNlSGVhcHNfY291bnRfKSwgaGVhcHMsIGNvdW50KTsKK30KKworLy8gbWV0
aG9kOiBzYW1wbGVDb3VudGVyc0luQnVmZmVyOmF0U2FtcGxlSW5kZXg6d2l0aEJhcnJpZXI6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6
OnNhbXBsZUNvdW50ZXJzSW5CdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBz
YW1wbGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1w
bGVDb3VudGVyc0luQnVmZmVyX2F0U2FtcGxlSW5kZXhfd2l0aEJhcnJpZXJfKSwgc2FtcGxlQnVm
ZmVyLCBzYW1wbGVJbmRleCwgYmFycmllcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0
cnVjdHVyZVR5cGVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTc2N2RjOTE1Y2MxYmI5MGM0MThhYjQwNzgw
MmI1MGQ5YzE1N2I5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcApAQCAtMCwwICsx
LDE2OSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwCisvLworLy8gQ29w
eXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisv
LyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBw
IgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIK
KyNpbmNsdWRlICJNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAiCisKKyNpbmNsdWRl
ICIuLi9Gb3VuZGF0aW9uL05TUmFuZ2UuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE1UTAoreworc3RydWN0IFBhY2tlZEZs
b2F0MworeworICAgIFBhY2tlZEZsb2F0MygpOworICAgIFBhY2tlZEZsb2F0MyhmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCB6KTsKKworICAgIGZsb2F0JiBvcGVyYXRvcltdKGludCBpZHgpOworICAg
IGZsb2F0ICBvcGVyYXRvcltdKGludCBpZHgpIGNvbnN0OworCisgICAgdW5pb24KKyAgICB7Cisg
ICAgICAgIHN0cnVjdAorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdCB4OworICAgICAgICAg
ICAgZmxvYXQgeTsKKyAgICAgICAgICAgIGZsb2F0IHo7CisgICAgICAgIH07CisKKyAgICAgICAg
ZmxvYXQgZWxlbWVudHNbM107CisgICAgfTsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBQYWNr
ZWRGbG9hdDR4MworeworICAgIFBhY2tlZEZsb2F0NHgzKCk7CisgICAgUGFja2VkRmxvYXQ0eDMo
Y29uc3QgUGFja2VkRmxvYXQzJiBjb2wwLCBjb25zdCBQYWNrZWRGbG9hdDMmIGNvbDEsIGNvbnN0
IFBhY2tlZEZsb2F0MyYgY29sMiwgY29uc3QgUGFja2VkRmxvYXQzJiBjb2wzKTsKKworICAgIFBh
Y2tlZEZsb2F0MyYgICAgICAgb3BlcmF0b3JbXShpbnQgaWR4KTsKKyAgICBjb25zdCBQYWNrZWRG
bG9hdDMmIG9wZXJhdG9yW10oaW50IGlkeCkgY29uc3Q7CisKKyAgICBQYWNrZWRGbG9hdDMgICAg
ICAgIGNvbHVtbnNbNF07Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgQXhpc0FsaWduZWRCb3Vu
ZGluZ0JveAoreworICAgIEF4aXNBbGlnbmVkQm91bmRpbmdCb3goKTsKKyAgICBBeGlzQWxpZ25l
ZEJvdW5kaW5nQm94KFBhY2tlZEZsb2F0MyBwKTsKKyAgICBBeGlzQWxpZ25lZEJvdW5kaW5nQm94
KFBhY2tlZEZsb2F0MyBtaW4sIFBhY2tlZEZsb2F0MyBtYXgpOworCisgICAgUGFja2VkRmxvYXQz
IG1pbjsKKyAgICBQYWNrZWRGbG9hdDMgbWF4OworfSBfTVRMX1BBQ0tFRDsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1U
TDo6UGFja2VkRmxvYXQzOjpQYWNrZWRGbG9hdDMoKQorICAgIDogeCgwLjBmKQorICAgICwgeSgw
LjBmKQorICAgICwgeigwLjBmKQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpQYWNrZWRGbG9hdDM6OlBhY2tl
ZEZsb2F0MyhmbG9hdCBfeCwgZmxvYXQgX3ksIGZsb2F0IF96KQorICAgIDogeChfeCkKKyAgICAs
IHkoX3kpCisgICAgLCB6KF96KQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgZmxvYXQmIE1UTDo6UGFja2VkRmxvYXQz
OjpvcGVyYXRvcltdKGludCBpZHgpCit7CisgICAgcmV0dXJuIGVsZW1lbnRzW2lkeF07Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lO
TElORSBmbG9hdCBNVEw6OlBhY2tlZEZsb2F0Mzo6b3BlcmF0b3JbXShpbnQgaWR4KSBjb25zdAor
eworICAgIHJldHVybiBlbGVtZW50c1tpZHhdOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpQYWNrZWRGbG9hdDR4
Mzo6UGFja2VkRmxvYXQ0eDMoKQoreworICAgIGNvbHVtbnNbMF0gPSBQYWNrZWRGbG9hdDMoMC4w
ZiwgMC4wZiwgMC4wZik7CisgICAgY29sdW1uc1sxXSA9IFBhY2tlZEZsb2F0MygwLjBmLCAwLjBm
LCAwLjBmKTsKKyAgICBjb2x1bW5zWzJdID0gUGFja2VkRmxvYXQzKDAuMGYsIDAuMGYsIDAuMGYp
OworICAgIGNvbHVtbnNbM10gPSBQYWNrZWRGbG9hdDMoMC4wZiwgMC4wZiwgMC4wZik7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lO
TElORSBNVEw6OlBhY2tlZEZsb2F0NHgzOjpQYWNrZWRGbG9hdDR4Myhjb25zdCBQYWNrZWRGbG9h
dDMmIGNvbDAsIGNvbnN0IFBhY2tlZEZsb2F0MyYgY29sMSwgY29uc3QgUGFja2VkRmxvYXQzJiBj
b2wyLCBjb25zdCBQYWNrZWRGbG9hdDMmIGNvbDMpCit7CisgICAgY29sdW1uc1swXSA9IGNvbDA7
CisgICAgY29sdW1uc1sxXSA9IGNvbDE7CisgICAgY29sdW1uc1syXSA9IGNvbDI7CisgICAgY29s
dW1uc1szXSA9IGNvbDM7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTVRMX0lOTElORSBNVEw6OlBhY2tlZEZsb2F0MyYgTVRMOjpQYWNrZWRG
bG9hdDR4Mzo6b3BlcmF0b3JbXShpbnQgaWR4KQoreworICAgIHJldHVybiBjb2x1bW5zW2lkeF07
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TVRMX0lOTElORSBjb25zdCBNVEw6OlBhY2tlZEZsb2F0MyYgTVRMOjpQYWNrZWRGbG9hdDR4Mzo6
b3BlcmF0b3JbXShpbnQgaWR4KSBjb25zdAoreworICAgIHJldHVybiBjb2x1bW5zW2lkeF07Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRM
X0lOTElORSBNVEw6OkF4aXNBbGlnbmVkQm91bmRpbmdCb3g6OkF4aXNBbGlnbmVkQm91bmRpbmdC
b3goKQorICAgIDogbWluKElORklOSVRZLCBJTkZJTklUWSwgSU5GSU5JVFkpCisgICAgLCBtYXgo
LUlORklOSVRZLCAtSU5GSU5JVFksIC1JTkZJTklUWSkKK3sKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6QXhpc0Fs
aWduZWRCb3VuZGluZ0JveDo6QXhpc0FsaWduZWRCb3VuZGluZ0JveChQYWNrZWRGbG9hdDMgcCkK
KyAgICA6IG1pbihwKQorICAgICwgbWF4KHApCit7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSBNVEw6OkF4aXNBbGlnbmVk
Qm91bmRpbmdCb3g6OkF4aXNBbGlnbmVkQm91bmRpbmdCb3goUGFja2VkRmxvYXQzIF9taW4sIFBh
Y2tlZEZsb2F0MyBfbWF4KQorICAgIDogbWluKF9taW4pCisgICAgLCBtYXgoX21heCkKK3sKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnQuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50LmhwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MDU3ZmUwODAyOGUyMDAwNzM0ZjIyMmQyNTgwNGJiODJjNmE3ZmNmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFy
Z3VtZW50LmhwcApAQCAtMCwwICsxLDY1NSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQXJndW1lbnQuaHBwCisvLworLy8g
Q29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRM
RGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJN
VExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisK
KyNpbmNsdWRlICJNVExBcmd1bWVudC5ocHAiCisjaW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisK
K25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIERhdGFUeXBlKSB7Cisg
ICAgRGF0YVR5cGVOb25lID0gMCwKKyAgICBEYXRhVHlwZVN0cnVjdCA9IDEsCisgICAgRGF0YVR5
cGVBcnJheSA9IDIsCisgICAgRGF0YVR5cGVGbG9hdCA9IDMsCisgICAgRGF0YVR5cGVGbG9hdDIg
PSA0LAorICAgIERhdGFUeXBlRmxvYXQzID0gNSwKKyAgICBEYXRhVHlwZUZsb2F0NCA9IDYsCisg
ICAgRGF0YVR5cGVGbG9hdDJ4MiA9IDcsCisgICAgRGF0YVR5cGVGbG9hdDJ4MyA9IDgsCisgICAg
RGF0YVR5cGVGbG9hdDJ4NCA9IDksCisgICAgRGF0YVR5cGVGbG9hdDN4MiA9IDEwLAorICAgIERh
dGFUeXBlRmxvYXQzeDMgPSAxMSwKKyAgICBEYXRhVHlwZUZsb2F0M3g0ID0gMTIsCisgICAgRGF0
YVR5cGVGbG9hdDR4MiA9IDEzLAorICAgIERhdGFUeXBlRmxvYXQ0eDMgPSAxNCwKKyAgICBEYXRh
VHlwZUZsb2F0NHg0ID0gMTUsCisgICAgRGF0YVR5cGVIYWxmID0gMTYsCisgICAgRGF0YVR5cGVI
YWxmMiA9IDE3LAorICAgIERhdGFUeXBlSGFsZjMgPSAxOCwKKyAgICBEYXRhVHlwZUhhbGY0ID0g
MTksCisgICAgRGF0YVR5cGVIYWxmMngyID0gMjAsCisgICAgRGF0YVR5cGVIYWxmMngzID0gMjEs
CisgICAgRGF0YVR5cGVIYWxmMng0ID0gMjIsCisgICAgRGF0YVR5cGVIYWxmM3gyID0gMjMsCisg
ICAgRGF0YVR5cGVIYWxmM3gzID0gMjQsCisgICAgRGF0YVR5cGVIYWxmM3g0ID0gMjUsCisgICAg
RGF0YVR5cGVIYWxmNHgyID0gMjYsCisgICAgRGF0YVR5cGVIYWxmNHgzID0gMjcsCisgICAgRGF0
YVR5cGVIYWxmNHg0ID0gMjgsCisgICAgRGF0YVR5cGVJbnQgPSAyOSwKKyAgICBEYXRhVHlwZUlu
dDIgPSAzMCwKKyAgICBEYXRhVHlwZUludDMgPSAzMSwKKyAgICBEYXRhVHlwZUludDQgPSAzMiwK
KyAgICBEYXRhVHlwZVVJbnQgPSAzMywKKyAgICBEYXRhVHlwZVVJbnQyID0gMzQsCisgICAgRGF0
YVR5cGVVSW50MyA9IDM1LAorICAgIERhdGFUeXBlVUludDQgPSAzNiwKKyAgICBEYXRhVHlwZVNo
b3J0ID0gMzcsCisgICAgRGF0YVR5cGVTaG9ydDIgPSAzOCwKKyAgICBEYXRhVHlwZVNob3J0MyA9
IDM5LAorICAgIERhdGFUeXBlU2hvcnQ0ID0gNDAsCisgICAgRGF0YVR5cGVVU2hvcnQgPSA0MSwK
KyAgICBEYXRhVHlwZVVTaG9ydDIgPSA0MiwKKyAgICBEYXRhVHlwZVVTaG9ydDMgPSA0MywKKyAg
ICBEYXRhVHlwZVVTaG9ydDQgPSA0NCwKKyAgICBEYXRhVHlwZUNoYXIgPSA0NSwKKyAgICBEYXRh
VHlwZUNoYXIyID0gNDYsCisgICAgRGF0YVR5cGVDaGFyMyA9IDQ3LAorICAgIERhdGFUeXBlQ2hh
cjQgPSA0OCwKKyAgICBEYXRhVHlwZVVDaGFyID0gNDksCisgICAgRGF0YVR5cGVVQ2hhcjIgPSA1
MCwKKyAgICBEYXRhVHlwZVVDaGFyMyA9IDUxLAorICAgIERhdGFUeXBlVUNoYXI0ID0gNTIsCisg
ICAgRGF0YVR5cGVCb29sID0gNTMsCisgICAgRGF0YVR5cGVCb29sMiA9IDU0LAorICAgIERhdGFU
eXBlQm9vbDMgPSA1NSwKKyAgICBEYXRhVHlwZUJvb2w0ID0gNTYsCisgICAgRGF0YVR5cGVUZXh0
dXJlID0gNTgsCisgICAgRGF0YVR5cGVTYW1wbGVyID0gNTksCisgICAgRGF0YVR5cGVQb2ludGVy
ID0gNjAsCisgICAgRGF0YVR5cGVSOFVub3JtID0gNjIsCisgICAgRGF0YVR5cGVSOFNub3JtID0g
NjMsCisgICAgRGF0YVR5cGVSMTZVbm9ybSA9IDY0LAorICAgIERhdGFUeXBlUjE2U25vcm0gPSA2
NSwKKyAgICBEYXRhVHlwZVJHOFVub3JtID0gNjYsCisgICAgRGF0YVR5cGVSRzhTbm9ybSA9IDY3
LAorICAgIERhdGFUeXBlUkcxNlVub3JtID0gNjgsCisgICAgRGF0YVR5cGVSRzE2U25vcm0gPSA2
OSwKKyAgICBEYXRhVHlwZVJHQkE4VW5vcm0gPSA3MCwKKyAgICBEYXRhVHlwZVJHQkE4VW5vcm1f
c1JHQiA9IDcxLAorICAgIERhdGFUeXBlUkdCQThTbm9ybSA9IDcyLAorICAgIERhdGFUeXBlUkdC
QTE2VW5vcm0gPSA3MywKKyAgICBEYXRhVHlwZVJHQkExNlNub3JtID0gNzQsCisgICAgRGF0YVR5
cGVSR0IxMEEyVW5vcm0gPSA3NSwKKyAgICBEYXRhVHlwZVJHMTFCMTBGbG9hdCA9IDc2LAorICAg
IERhdGFUeXBlUkdCOUU1RmxvYXQgPSA3NywKKyAgICBEYXRhVHlwZVJlbmRlclBpcGVsaW5lID0g
NzgsCisgICAgRGF0YVR5cGVDb21wdXRlUGlwZWxpbmUgPSA3OSwKKyAgICBEYXRhVHlwZUluZGly
ZWN0Q29tbWFuZEJ1ZmZlciA9IDgwLAorICAgIERhdGFUeXBlTG9uZyA9IDgxLAorICAgIERhdGFU
eXBlTG9uZzIgPSA4MiwKKyAgICBEYXRhVHlwZUxvbmczID0gODMsCisgICAgRGF0YVR5cGVMb25n
NCA9IDg0LAorICAgIERhdGFUeXBlVUxvbmcgPSA4NSwKKyAgICBEYXRhVHlwZVVMb25nMiA9IDg2
LAorICAgIERhdGFUeXBlVUxvbmczID0gODcsCisgICAgRGF0YVR5cGVVTG9uZzQgPSA4OCwKKyAg
ICBEYXRhVHlwZVZpc2libGVGdW5jdGlvblRhYmxlID0gMTE1LAorICAgIERhdGFUeXBlSW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZSA9IDExNiwKKyAgICBEYXRhVHlwZVByaW1pdGl2ZUFjY2VsZXJh
dGlvblN0cnVjdHVyZSA9IDExNywKKyAgICBEYXRhVHlwZUluc3RhbmNlQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlID0gMTE4LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQXJndW1lbnRUeXBl
KSB7CisgICAgQXJndW1lbnRUeXBlQnVmZmVyID0gMCwKKyAgICBBcmd1bWVudFR5cGVUaHJlYWRn
cm91cE1lbW9yeSA9IDEsCisgICAgQXJndW1lbnRUeXBlVGV4dHVyZSA9IDIsCisgICAgQXJndW1l
bnRUeXBlU2FtcGxlciA9IDMsCisgICAgQXJndW1lbnRUeXBlSW1hZ2VibG9ja0RhdGEgPSAxNiwK
KyAgICBBcmd1bWVudFR5cGVJbWFnZWJsb2NrID0gMTcsCisgICAgQXJndW1lbnRUeXBlVmlzaWJs
ZUZ1bmN0aW9uVGFibGUgPSAyNCwKKyAgICBBcmd1bWVudFR5cGVQcmltaXRpdmVBY2NlbGVyYXRp
b25TdHJ1Y3R1cmUgPSAyNSwKKyAgICBBcmd1bWVudFR5cGVJbnN0YW5jZUFjY2VsZXJhdGlvblN0
cnVjdHVyZSA9IDI2LAorICAgIEFyZ3VtZW50VHlwZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUg
PSAyNywKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIEFyZ3VtZW50QWNjZXNzKSB7Cisg
ICAgQXJndW1lbnRBY2Nlc3NSZWFkT25seSA9IDAsCisgICAgQXJndW1lbnRBY2Nlc3NSZWFkV3Jp
dGUgPSAxLAorICAgIEFyZ3VtZW50QWNjZXNzV3JpdGVPbmx5ID0gMiwKK307CisKK2NsYXNzIFR5
cGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFR5cGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNsYXNzIFR5cGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBUeXBlKiAgICAgICAgaW5pdCgpOwor
CisgICAgTVRMOjpEYXRhVHlwZSAgICAgIGRhdGFUeXBlKCkgY29uc3Q7Cit9OworCitjbGFzcyBT
dHJ1Y3RNZW1iZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFN0cnVjdE1lbWJlcj4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgU3RydWN0TWVtYmVyKiAgYWxsb2MoKTsKKworICAgIGNs
YXNzIFN0cnVjdE1lbWJlciogICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAg
ICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgIG9mZnNldCgpIGNvbnN0OworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAgICAgICAgIGRh
dGFUeXBlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJ1Y3RUeXBlKiAgICAgICAgICAgc3RydWN0
VHlwZSgpOworCisgICAgY2xhc3MgQXJyYXlUeXBlKiAgICAgICAgICAgIGFycmF5VHlwZSgpOwor
CisgICAgY2xhc3MgVGV4dHVyZVJlZmVyZW5jZVR5cGUqIHRleHR1cmVSZWZlcmVuY2VUeXBlKCk7
CisKKyAgICBjbGFzcyBQb2ludGVyVHlwZSogICAgICAgICAgcG9pbnRlclR5cGUoKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBhcmd1bWVudEluZGV4KCkgY29uc3Q7Cit9Owor
CitjbGFzcyBTdHJ1Y3RUeXBlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxTdHJ1Y3RUeXBlLCBU
eXBlPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTdHJ1Y3RUeXBlKiBhbGxvYygpOwor
CisgICAgY2xhc3MgU3RydWN0VHlwZSogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpBcnJheSog
ICAgICAgICAgICAgICBtZW1iZXJzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJ1Y3RNZW1iZXIq
ICAgICAgbWVtYmVyQnlOYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpOworfTsKKworY2xhc3Mg
QXJyYXlUeXBlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxBcnJheVR5cGUsIFR5cGU+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFycmF5VHlwZSogICAgIGFsbG9jKCk7CisKKyAgICBj
bGFzcyBBcnJheVR5cGUqICAgICAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpEYXRhVHlwZSAg
ICAgICAgICAgICAgIGVsZW1lbnRUeXBlKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAg
ICAgICAgICAgICAgYXJyYXlMZW5ndGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICBzdHJpZGUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICBhcmd1bWVudEluZGV4U3RyaWRlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJ1Y3RUeXBl
KiAgICAgICAgICAgZWxlbWVudFN0cnVjdFR5cGUoKTsKKworICAgIGNsYXNzIEFycmF5VHlwZSog
ICAgICAgICAgICBlbGVtZW50QXJyYXlUeXBlKCk7CisKKyAgICBjbGFzcyBUZXh0dXJlUmVmZXJl
bmNlVHlwZSogZWxlbWVudFRleHR1cmVSZWZlcmVuY2VUeXBlKCk7CisKKyAgICBjbGFzcyBQb2lu
dGVyVHlwZSogICAgICAgICAgZWxlbWVudFBvaW50ZXJUeXBlKCk7Cit9OworCitjbGFzcyBQb2lu
dGVyVHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UG9pbnRlclR5cGUsIFR5cGU+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFBvaW50ZXJUeXBlKiBhbGxvYygpOworCisgICAgY2xh
c3MgUG9pbnRlclR5cGUqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAg
ICAgICAgIGVsZW1lbnRUeXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OkFyZ3VtZW50QWNjZXNzICAg
ICAgIGFjY2VzcygpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICBhbGln
bm1lbnQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgZGF0YVNpemUo
KSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudElzQXJndW1l
bnRCdWZmZXIoKSBjb25zdDsKKworICAgIGNsYXNzIFN0cnVjdFR5cGUqICAgICAgICAgZWxlbWVu
dFN0cnVjdFR5cGUoKTsKKworICAgIGNsYXNzIEFycmF5VHlwZSogICAgICAgICAgZWxlbWVudEFy
cmF5VHlwZSgpOworfTsKKworY2xhc3MgVGV4dHVyZVJlZmVyZW5jZVR5cGUgOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPFRleHR1cmVSZWZlcmVuY2VUeXBlLCBUeXBlPgoreworcHVibGljOgorICAg
IHN0YXRpYyBjbGFzcyBUZXh0dXJlUmVmZXJlbmNlVHlwZSogYWxsb2MoKTsKKworICAgIGNsYXNz
IFRleHR1cmVSZWZlcmVuY2VUeXBlKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpEYXRhVHlw
ZSAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRGF0YVR5cGUoKSBjb25zdDsKKworICAgIE1U
TDo6VGV4dHVyZVR5cGUgICAgICAgICAgICAgICAgICAgdGV4dHVyZVR5cGUoKSBjb25zdDsKKwor
ICAgIE1UTDo6QXJndW1lbnRBY2Nlc3MgICAgICAgICAgICAgICAgYWNjZXNzKCkgY29uc3Q7CisK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRGVwdGhUZXh0dXJlKCkg
Y29uc3Q7Cit9OworCitjbGFzcyBBcmd1bWVudCA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QXJn
dW1lbnQ+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFyZ3VtZW50KiBhbGxvYygpOwor
CisgICAgY2xhc3MgQXJndW1lbnQqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6U3RyaW5nKiAg
ICAgICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIE1UTDo6QXJndW1lbnRUeXBlICAgICAgdHlw
ZSgpIGNvbnN0OworCisgICAgTVRMOjpBcmd1bWVudEFjY2VzcyAgICBhY2Nlc3MoKSBjb25zdDsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgaW5kZXgoKSBjb25zdDsKKworICAgIGJvb2wg
ICAgICAgICAgICAgICAgICAgYWN0aXZlKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAg
ICAgICAgIGJ1ZmZlckFsaWdubWVudCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICBidWZmZXJEYXRhU2l6ZSgpIGNvbnN0OworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAg
ICBidWZmZXJEYXRhVHlwZSgpIGNvbnN0OworCisgICAgY2xhc3MgU3RydWN0VHlwZSogICAgICBi
dWZmZXJTdHJ1Y3RUeXBlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBQb2ludGVyVHlwZSogICAgIGJ1
ZmZlclBvaW50ZXJUeXBlKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgIHRo
cmVhZGdyb3VwTWVtb3J5QWxpZ25tZW50KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAg
ICAgICAgIHRocmVhZGdyb3VwTWVtb3J5RGF0YVNpemUoKSBjb25zdDsKKworICAgIE1UTDo6VGV4
dHVyZVR5cGUgICAgICAgdGV4dHVyZVR5cGUoKSBjb25zdDsKKworICAgIE1UTDo6RGF0YVR5cGUg
ICAgICAgICAgdGV4dHVyZURhdGFUeXBlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAg
ICAgICAgIGlzRGVwdGhUZXh0dXJlKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgIGFycmF5TGVuZ3RoKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OlR5cGUqIE1UTDo6VHlwZTo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlR5cGU+KF9NVExfUFJJVkFURV9DTFMoTVRMVHlw
ZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VHlwZSogTVRMOjpU
eXBlOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlR5cGU+KCk7
Cit9CisKKy8vIHByb3BlcnR5OiBkYXRhVHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBN
VEw6OlR5cGU6OmRhdGFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRhdGFUeXBlKSk7Cit9
CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlN0cnVjdE1lbWJl
ciogTVRMOjpTdHJ1Y3RNZW1iZXI6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpTdHJ1Y3RNZW1iZXI+KF9NVExfUFJJVkFURV9DTFMoTVRMU3RydWN0TWVtYmVy
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RNZW1iZXIq
IE1UTDo6U3RydWN0TWVtYmVyOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5p
dDxNVEw6OlN0cnVjdE1lbWJlcj4oKTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5M
SU5FIE5TOjpTdHJpbmcqIE1UTDo6U3RydWN0TWVtYmVyOjpuYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBvZmZzZXQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlN0cnVjdE1lbWJlcjo6b2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
b2Zmc2V0KSk7Cit9CisKKy8vIHByb3BlcnR5OiBkYXRhVHlwZQorX01UTF9JTkxJTkUgTVRMOjpE
YXRhVHlwZSBNVEw6OlN0cnVjdE1lbWJlcjo6ZGF0YVR5cGUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoZGF0YVR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBzdHJ1Y3RUeXBlCitfTVRMX0lOTElORSBN
VEw6OlN0cnVjdFR5cGUqIE1UTDo6U3RydWN0TWVtYmVyOjpzdHJ1Y3RUeXBlKCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0cnVjdFR5cGUqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHN0cnVjdFR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBhcnJheVR5cGUKK19NVExf
SU5MSU5FIE1UTDo6QXJyYXlUeXBlKiBNVEw6OlN0cnVjdE1lbWJlcjo6YXJyYXlUeXBlKCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFycmF5VHlwZSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYXJyYXlUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogdGV4dHVyZVJlZmVy
ZW5jZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGUqIE1UTDo6U3Ry
dWN0TWVtYmVyOjp0ZXh0dXJlUmVmZXJlbmNlVHlwZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodGV4dHVyZVJlZmVyZW5jZVR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBwb2ludGVyVHlw
ZQorX01UTF9JTkxJTkUgTVRMOjpQb2ludGVyVHlwZSogTVRMOjpTdHJ1Y3RNZW1iZXI6OnBvaW50
ZXJUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBvaW50ZXJU
eXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChwb2ludGVyVHlwZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogYXJndW1lbnRJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6U3RydWN0
TWVtYmVyOjphcmd1bWVudEluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJndW1lbnRJbmRl
eCkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTdHJ1
Y3RUeXBlKiBNVEw6OlN0cnVjdFR5cGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6YWxsb2M8TVRMOjpTdHJ1Y3RUeXBlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0cnVjdFR5cGUp
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlN0cnVjdFR5cGUqIE1U
TDo6U3RydWN0VHlwZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpTdHJ1Y3RUeXBlPigpOworfQorCisvLyBwcm9wZXJ0eTogbWVtYmVycworX01UTF9JTkxJTkUg
TlM6OkFycmF5KiBNVEw6OlN0cnVjdFR5cGU6Om1lbWJlcnMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bWVtYmVycykpOworfQorCisvLyBtZXRob2Q6IG1lbWJlckJ5TmFtZToKK19NVExfSU5MSU5FIE1U
TDo6U3RydWN0TWVtYmVyKiBNVEw6OlN0cnVjdFR5cGU6Om1lbWJlckJ5TmFtZShjb25zdCBOUzo6
U3RyaW5nKiBuYW1lKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3Ry
dWN0TWVtYmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtZW1iZXJCeU5hbWVfKSwgbmFtZSk7
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkFycmF5VHlw
ZSogTVRMOjpBcnJheVR5cGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpBcnJheVR5cGU+KF9NVExfUFJJVkFURV9DTFMoTVRMQXJyYXlUeXBlKSk7Cit9CisK
Ky8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBcnJheVR5cGUqIE1UTDo6QXJyYXlU
eXBlOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkFycmF5VHlw
ZT4oKTsKK30KKworLy8gcHJvcGVydHk6IGVsZW1lbnRUeXBlCitfTVRMX0lOTElORSBNVEw6OkRh
dGFUeXBlIE1UTDo6QXJyYXlUeXBlOjplbGVtZW50VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NF
TChlbGVtZW50VHlwZSkpOworfQorCisvLyBwcm9wZXJ0eTogYXJyYXlMZW5ndGgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkFycmF5VHlwZTo6YXJyYXlMZW5ndGgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChhcnJheUxlbmd0aCkpOworfQorCisvLyBwcm9wZXJ0eTogc3RyaWRlCitfTVRM
X0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcnJheVR5cGU6OnN0cmlkZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHN0cmlkZSkpOworfQorCisvLyBwcm9wZXJ0eTogYXJndW1lbnRJbmRleFN0cmlk
ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJyYXlUeXBlOjphcmd1bWVudEluZGV4
U3RyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJndW1lbnRJbmRleFN0cmlkZSkpOworfQor
CisvLyBtZXRob2Q6IGVsZW1lbnRTdHJ1Y3RUeXBlCitfTVRMX0lOTElORSBNVEw6OlN0cnVjdFR5
cGUqIE1UTDo6QXJyYXlUeXBlOjplbGVtZW50U3RydWN0VHlwZSgpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChlbGVtZW50U3RydWN0VHlwZSkpOworfQorCisvLyBtZXRob2Q6IGVsZW1lbnRBcnJheVR5cGUK
K19NVExfSU5MSU5FIE1UTDo6QXJyYXlUeXBlKiBNVEw6OkFycmF5VHlwZTo6ZWxlbWVudEFycmF5
VHlwZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcnJheVR5cGUq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRBcnJheVR5cGUpKTsKK30KKworLy8gbWV0
aG9kOiBlbGVtZW50VGV4dHVyZVJlZmVyZW5jZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVy
ZVJlZmVyZW5jZVR5cGUqIE1UTDo6QXJyYXlUeXBlOjplbGVtZW50VGV4dHVyZVJlZmVyZW5jZVR5
cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVJlZmVy
ZW5jZVR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRUZXh0dXJlUmVmZXJlbmNl
VHlwZSkpOworfQorCisvLyBtZXRob2Q6IGVsZW1lbnRQb2ludGVyVHlwZQorX01UTF9JTkxJTkUg
TVRMOjpQb2ludGVyVHlwZSogTVRMOjpBcnJheVR5cGU6OmVsZW1lbnRQb2ludGVyVHlwZSgpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQb2ludGVyVHlwZSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZWxlbWVudFBvaW50ZXJUeXBlKSk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJUeXBlKiBNVEw6OlBvaW50ZXJU
eXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UG9pbnRl
clR5cGU+KF9NVExfUFJJVkFURV9DTFMoTVRMUG9pbnRlclR5cGUpKTsKK30KKworLy8gbWV0aG9k
OiBpbml0CitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJUeXBlKiBNVEw6OlBvaW50ZXJUeXBlOjpp
bml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlBvaW50ZXJUeXBlPigp
OworfQorCisvLyBwcm9wZXJ0eTogZWxlbWVudFR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5
cGUgTVRMOjpQb2ludGVyVHlwZTo6ZWxlbWVudFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZWxlbWVudFR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFjY2VzcworX01UTF9JTkxJTkUgTVRM
OjpBcmd1bWVudEFjY2VzcyBNVEw6OlBvaW50ZXJUeXBlOjphY2Nlc3MoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRBY2Nlc3M+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYWNjZXNzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhbGlnbm1lbnQKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlBvaW50ZXJUeXBlOjphbGlnbm1lbnQoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChhbGlnbm1lbnQpKTsKK30KKworLy8gcHJvcGVydHk6IGRhdGFTaXpl
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpQb2ludGVyVHlwZTo6ZGF0YVNpemUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChkYXRhU2l6ZSkpOworfQorCisvLyBwcm9wZXJ0eTogZWxlbWVu
dElzQXJndW1lbnRCdWZmZXIKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpQb2ludGVyVHlwZTo6ZWxl
bWVudElzQXJndW1lbnRCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZWxlbWVudElzQXJndW1lbnRCdWZm
ZXIpKTsKK30KKworLy8gbWV0aG9kOiBlbGVtZW50U3RydWN0VHlwZQorX01UTF9JTkxJTkUgTVRM
OjpTdHJ1Y3RUeXBlKiBNVEw6OlBvaW50ZXJUeXBlOjplbGVtZW50U3RydWN0VHlwZSgpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RUeXBlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChlbGVtZW50U3RydWN0VHlwZSkpOworfQorCisvLyBtZXRob2Q6IGVsZW1l
bnRBcnJheVR5cGUKK19NVExfSU5MSU5FIE1UTDo6QXJyYXlUeXBlKiBNVEw6OlBvaW50ZXJUeXBl
OjplbGVtZW50QXJyYXlUeXBlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkFycmF5VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZWxlbWVudEFycmF5VHlwZSkp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJl
UmVmZXJlbmNlVHlwZSogTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTFRleHR1cmVSZWZlcmVuY2VUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZSogTVRMOjpUZXh0dXJl
UmVmZXJlbmNlVHlwZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpUZXh0dXJlUmVmZXJlbmNlVHlwZT4oKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVEYXRh
VHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBl
Ojp0ZXh0dXJlRGF0YVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZURhdGFUeXBl
KSk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlVHlwZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0
dXJlVHlwZSBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlOjp0ZXh0dXJlVHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVHlwZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlVHlwZSkpOworfQorCisvLyBwcm9wZXJ0eTogYWNjZXNz
CitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50QWNjZXNzIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5
cGU6OmFjY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBcmd1bWVudEFjY2Vzcz4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nlc3MpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGlzRGVwdGhUZXh0dXJlCitfTVRMX0lOTElORSBib29sIE1UTDo6VGV4dHVy
ZVJlZmVyZW5jZVR5cGU6OmlzRGVwdGhUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzRGVwdGhUZXh0
dXJlKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkFy
Z3VtZW50KiBNVEw6OkFyZ3VtZW50OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6QXJndW1lbnQ+KF9NVExfUFJJVkFURV9DTFMoTVRMQXJndW1lbnQpKTsKK30K
KworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50KiBNVEw6OkFyZ3Vt
ZW50Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkFyZ3VtZW50
PigpOworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRM
OjpBcmd1bWVudDo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBw
cm9wZXJ0eTogdHlwZQorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudFR5cGUgTVRMOjpBcmd1bWVu
dDo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpB
cmd1bWVudFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHlwZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogYWNjZXNzCitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50QWNjZXNzIE1UTDo6QXJndW1l
bnQ6OmFjY2VzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBcmd1bWVudEFjY2Vzcz4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2Nlc3MpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVu
dDo6aW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleCkpOworfQorCisvLyBwcm9wZXJ0
eTogYWN0aXZlCitfTVRMX0lOTElORSBib29sIE1UTDo6QXJndW1lbnQ6OmFjdGl2ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChpc0FjdGl2ZSkpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyQWxpZ25tZW50Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudDo6YnVmZmVyQWxpZ25tZW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVyQWxpZ25tZW50KSk7Cit9CisKKy8vIHByb3BlcnR5
OiBidWZmZXJEYXRhU2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6
OmJ1ZmZlckRhdGFTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVyRGF0YVNpemUpKTsK
K30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckRhdGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFU
eXBlIE1UTDo6QXJndW1lbnQ6OmJ1ZmZlckRhdGFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGJ1ZmZlckRhdGFUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJTdHJ1Y3RUeXBlCitf
TVRMX0lOTElORSBNVEw6OlN0cnVjdFR5cGUqIE1UTDo6QXJndW1lbnQ6OmJ1ZmZlclN0cnVjdFR5
cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RydWN0
VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVyU3RydWN0VHlwZSkpOworfQorCisv
LyBwcm9wZXJ0eTogYnVmZmVyUG9pbnRlclR5cGUKK19NVExfSU5MSU5FIE1UTDo6UG9pbnRlclR5
cGUqIE1UTDo6QXJndW1lbnQ6OmJ1ZmZlclBvaW50ZXJUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBvaW50ZXJUeXBlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChidWZmZXJQb2ludGVyVHlwZSkpOworfQorCisvLyBwcm9wZXJ0eTogdGhyZWFkZ3Jv
dXBNZW1vcnlBbGlnbm1lbnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50
Ojp0aHJlYWRncm91cE1lbW9yeUFsaWdubWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRocmVh
ZGdyb3VwTWVtb3J5QWxpZ25tZW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiB0aHJlYWRncm91cE1l
bW9yeURhdGFTaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudDo6dGhy
ZWFkZ3JvdXBNZW1vcnlEYXRhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRocmVhZGdyb3Vw
TWVtb3J5RGF0YVNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVUeXBlCitfTVRMX0lO
TElORSBNVEw6OlRleHR1cmVUeXBlIE1UTDo6QXJndW1lbnQ6OnRleHR1cmVUeXBlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVUeXBlPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0
dXJlRGF0YVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpBcmd1bWVudDo6dGV4
dHVyZURhdGFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVEYXRhVHlwZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogaXNEZXB0aFRleHR1cmUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpB
cmd1bWVudDo6aXNEZXB0aFRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNEZXB0aFRleHR1cmUpKTsK
K30KKworLy8gcHJvcGVydHk6IGFycmF5TGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpBcmd1bWVudDo6YXJyYXlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcnJheUxl
bmd0aCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEFyZ3VtZW50RW5jb2Rlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQXJndW1lbnRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2VjYzdkOTU2NzUy
YzYzMzFhNjMwN2RhNTA4OTFhNzFkMmMxMDRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50RW5jb2Rlci5ocHAKQEAgLTAs
MCArMSwyNTAgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIE1ldGFsL01UTEFyZ3VtZW50RW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQg
MjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhw
cCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUu
aHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUg
Ik1UTEJ1ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMQ29tcHV0ZVBpcGVsaW5lLmhwcCIKKyNpbmNs
dWRlICJNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlclBpcGVsaW5lLmhwcCIK
KyNpbmNsdWRlICJNVExTYW1wbGVyLmhwcCIKKyNpbmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKyNp
bmNsdWRlICJNVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sK
K2NsYXNzIEFyZ3VtZW50RW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QXJndW1lbnRF
bmNvZGVyPgoreworcHVibGljOgorICAgIGNsYXNzIERldmljZSogICAgICAgICAgZGV2aWNlKCkg
Y29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgIGVuY29kZWRMZW5ndGgoKSBjb25zdDsKKwor
ICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgYWxpZ25tZW50KCkgY29uc3Q7CisKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgIHNldEFyZ3VtZW50QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciog
YXJndW1lbnRCdWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICBzZXRBcmd1bWVudEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGFyZ3VtZW50
QnVmZmVyLCBOUzo6VUludGVnZXIgc3RhcnRPZmZzZXQsIE5TOjpVSW50ZWdlciBhcnJheUVsZW1l
bnQpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRCdWZmZXIoY29uc3QgY2xhc3Mg
QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7
CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1
ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0
dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICBzZXRUZXh0dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSBy
YW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFNhbXBsZXJTdGF0ZShjb25z
dCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3Rh
dGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkKiAgICAgICAgICAg
ICAgICAgIGNvbnN0YW50RGF0YShOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICBzZXRSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBp
cGVsaW5lU3RhdGUqIHBpcGVsaW5lLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICBzZXRSZW5kZXJQaXBlbGluZVN0YXRlcyhNVEw6OlJlbmRlclBpcGVs
aW5lU3RhdGUqIHBpcGVsaW5lcywgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgQ29tcHV0ZVBp
cGVsaW5lU3RhdGUqIHBpcGVsaW5lLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZXMoTVRMOjpDb21wdXRlUGlw
ZWxpbmVTdGF0ZSogcGlwZWxpbmVzLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICBzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJl
Y3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZl
cnMoTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGJ1ZmZlcnMsIE5TOjpSYW5nZSByYW5nZSk7
CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEFjY2VsZXJhdGlvblN0cnVjdHVyZShj
b25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlciogbmV3QXJn
dW1lbnRFbmNvZGVyKE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgIHNldFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlv
blRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0IFZp
c2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJh
bmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcyhjb25zdCBJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2Ug
cmFuZ2UpOworfTsKKworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6
OkRldmljZSogTVRMOjpBcmd1bWVudEVuY29kZXI6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpT
dHJpbmcqIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0
TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKwor
Ly8gcHJvcGVydHk6IGVuY29kZWRMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OkFyZ3VtZW50RW5jb2Rlcjo6ZW5jb2RlZExlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVu
Y29kZWRMZW5ndGgpKTsKK30KKworLy8gcHJvcGVydHk6IGFsaWdubWVudAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnRFbmNvZGVyOjphbGlnbm1lbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChhbGlnbm1lbnQpKTsKK30KKworLy8gbWV0aG9kOiBzZXRBcmd1bWVudEJ1ZmZl
cjpvZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRBcmd1
bWVudEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYXJndW1lbnRCdWZmZXIsIE5TOjpVSW50ZWdl
ciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEFyZ3VtZW50QnVmZmVyX29mZnNldF8pLCBhcmd1bWVudEJ1ZmZlciwgb2Zm
c2V0KTsKK30KKworLy8gbWV0aG9kOiBzZXRBcmd1bWVudEJ1ZmZlcjpzdGFydE9mZnNldDphcnJh
eUVsZW1lbnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRBcmd1
bWVudEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYXJndW1lbnRCdWZmZXIsIE5TOjpVSW50ZWdl
ciBzdGFydE9mZnNldCwgTlM6OlVJbnRlZ2VyIGFycmF5RWxlbWVudCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QXJndW1lbnRCdWZm
ZXJfc3RhcnRPZmZzZXRfYXJyYXlFbGVtZW50XyksIGFyZ3VtZW50QnVmZmVyLCBzdGFydE9mZnNl
dCwgYXJyYXlFbGVtZW50KTsKK30KKworLy8gbWV0aG9kOiBzZXRCdWZmZXI6b2Zmc2V0OmF0SW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRCdWZmZXIoY29u
c3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2Vy
IGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4
KTsKK30KKworLy8gbWV0aG9kOiBzZXRCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0QnVmZmVycyhNVEw6OkJ1ZmZlciog
YnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFuZ2UgcmFuZ2Up
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfKSwgYnVmZmVycywgb2Zmc2V0cywgcmFuZ2Up
OworfQorCisvLyBtZXRob2Q6IHNldFRleHR1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpBcmd1bWVudEVuY29kZXI6OnNldFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0
dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVfYXRJbmRleF8pLCB0ZXh0dXJlLCBp
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGV4dHVyZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0
ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVzX3dpdGhSYW5nZV8pLCB0ZXh0
dXJlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZTphdEluZGV4Ogor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0U2FtcGxlclN0YXRlKGNv
bnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNh
bXBsZXJTdGF0ZV9hdEluZGV4XyksIHNhbXBsZXIsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBz
ZXRTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVu
dEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10s
IE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRlc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBjb25zdGFudERhdGFBdEluZGV4OgorX01UTF9JTkxJ
TkUgdm9pZCogTVRMOjpBcmd1bWVudEVuY29kZXI6OmNvbnN0YW50RGF0YShOUzo6VUludGVnZXIg
aW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZCo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoY29uc3RhbnREYXRhQXRJbmRleF8pLCBpbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OlJl
bmRlclBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlbmRl
clBpcGVsaW5lU3RhdGVfYXRJbmRleF8pLCBwaXBlbGluZSwgaW5kZXgpOworfQorCisvLyBtZXRo
b2Q6IHNldFJlbmRlclBpcGVsaW5lU3RhdGVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpBcmd1bWVudEVuY29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGVzKE1UTDo6UmVuZGVy
UGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVzLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlbmRlclBpcGVs
aW5lU3RhdGVzX3dpdGhSYW5nZV8pLCBwaXBlbGluZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9k
OiBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkFyZ3VtZW50RW5jb2Rlcjo6c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpDb21w
dXRlUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tcHV0
ZVBpcGVsaW5lU3RhdGVfYXRJbmRleF8pLCBwaXBlbGluZSwgaW5kZXgpOworfQorCisvLyBtZXRo
b2Q6IHNldENvbXB1dGVQaXBlbGluZVN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZXMoTVRMOjpDb21w
dXRlUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVzLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbXB1dGVQ
aXBlbGluZVN0YXRlc193aXRoUmFuZ2VfKSwgcGlwZWxpbmVzLCByYW5nZSk7Cit9CisKKy8vIG1l
dGhvZDogc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXIoY29uc3QgTVRM
OjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXJfYXRJbmRleF8pLCBpbmRpcmVjdENv
bW1hbmRCdWZmZXIsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRJbmRpcmVjdENvbW1hbmRC
dWZmZXJzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6
OnNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGJ1
ZmZlcnMsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyc193aXRoUmFu
Z2VfKSwgYnVmZmVycywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEFjY2VsZXJhdGlvblN0
cnVjdHVyZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6
c2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJl
KiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWNjZWxlcmF0
aW9uU3RydWN0dXJlX2F0SW5kZXhfKSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBpbmRleCk7Cit9
CisKKy8vIG1ldGhvZDogbmV3QXJndW1lbnRFbmNvZGVyRm9yQnVmZmVyQXRJbmRleDoKK19NVExf
SU5MSU5FIE1UTDo6QXJndW1lbnRFbmNvZGVyKiBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6bmV3QXJn
dW1lbnRFbmNvZGVyKE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50RW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmV3QXJndW1lbnRFbmNvZGVyRm9yQnVmZmVyQXRJbmRleF8pLCBpbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpBcmd1bWVudEVuY29kZXI6OnNldFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6
VmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIg
aW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFZpc2libGVGdW5jdGlvblRhYmxlX2F0SW5kZXhfKSwgdmlzaWJsZUZ1bmN0aW9u
VGFibGUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXM6
d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0Vmlz
aWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2li
bGVGdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZpc2libGVGdW5jdGlvblRh
Ymxlc193aXRoUmFuZ2VfKSwgdmlzaWJsZUZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEluZGV4OgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZShjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZV9hdEluZGV4XyksIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIGluZGV4KTsKK30KKworLy8g
bWV0aG9kOiBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoUmFuZ2U6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRh
Ymxlcyhjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZXNfd2l0aFJhbmdlXyksIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmlu
YXJ5QXJjaGl2ZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
QmluYXJ5QXJjaGl2ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE0MmQzNzRjMzViZTM5ZDY2NjJlODE0Yjc3
MTllMzQ2ODUyYzVmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcApAQCAtMCwwICsxLDEzOCBAQAorLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwv
TVRMQmluYXJ5QXJjaGl2ZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExI
ZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgQmluYXJ5QXJjaGl2ZUVycm9yKSB7CisgICAgQmluYXJ5QXJjaGl2ZUVy
cm9yTm9uZSA9IDAsCisgICAgQmluYXJ5QXJjaGl2ZUVycm9ySW52YWxpZEZpbGUgPSAxLAorICAg
IEJpbmFyeUFyY2hpdmVFcnJvclVuZXhwZWN0ZWRFbGVtZW50ID0gMiwKKyAgICBCaW5hcnlBcmNo
aXZlRXJyb3JDb21waWxhdGlvbkZhaWx1cmUgPSAzLAorfTsKKworY2xhc3MgQmluYXJ5QXJjaGl2
ZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3I+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgQmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IqICAgICAgICBpbml0
KCk7CisKKyAgICBOUzo6VVJMKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VXJsKGNv
bnN0IE5TOjpVUkwqIHVybCk7Cit9OworCitjbGFzcyBCaW5hcnlBcmNoaXZlIDogcHVibGljIE5T
OjpSZWZlcmVuY2luZzxCaW5hcnlBcmNoaXZlPgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcq
ICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpT
dHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAg
ICBib29sICAgICAgICAgIGFkZENvbXB1dGVQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBjbGFzcyBD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7
CisKKyAgICBib29sICAgICAgICAgIGFkZFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zKGNvbnN0IGNs
YXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJy
b3IpOworCisgICAgYm9vbCAgICAgICAgICBhZGRUaWxlUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnMo
Y29uc3QgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6
OkVycm9yKiogZXJyb3IpOworCisgICAgYm9vbCAgICAgICAgICBzZXJpYWxpemVUb1VSTChjb25z
dCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGJvb2wgICAgICAgICAg
YWRkRnVuY3Rpb24oY29uc3QgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBj
b25zdCBjbGFzcyBMaWJyYXJ5KiBsaWJyYXJ5LCBOUzo6RXJyb3IqKiBlcnJvcik7Cit9OworCit9
CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkJpbmFyeUFyY2hp
dmVEZXNjcmlwdG9yKiBNVEw6OkJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3I+
KF9NVExfUFJJVkFURV9DTFMoTVRMQmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yKiBN
VEw6OkJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OkJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9w
ZXJ0eTogdXJsCitfTVRMX0lOTElORSBOUzo6VVJMKiBNVEw6OkJpbmFyeUFyY2hpdmVEZXNjcmlw
dG9yOjp1cmwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
UkwqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVybCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QmluYXJ5QXJjaGl2ZURlc2NyaXB0b3I6OnNldFVybChjb25zdCBOUzo6VVJMKiB1cmwp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFVybF8pLCB1cmwpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5T
OjpTdHJpbmcqIE1UTDo6QmluYXJ5QXJjaGl2ZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCaW5hcnlBcmNoaXZlOjpzZXRM
YWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisv
LyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpCaW5hcnlB
cmNoaXZlOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8g
bWV0aG9kOiBhZGRDb21wdXRlUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcjplcnJvcjoK
K19NVExfSU5MSU5FIGJvb2wgTVRMOjpCaW5hcnlBcmNoaXZlOjphZGRDb21wdXRlUGlwZWxpbmVG
dW5jdGlvbnMoY29uc3QgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
LCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxi
b29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFkZENvbXB1dGVQaXBlbGluZUZ1bmN0aW9uc1dp
dGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gbWV0aG9k
OiBhZGRSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkJpbmFyeUFyY2hpdmU6OmFkZFJlbmRlclBpcGVsaW5lRnVuY3Rpb25z
KGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJy
b3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGFkZFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0
b3JfZXJyb3JfKSwgZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IGFkZFRpbGVS
ZW5kZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkJpbmFyeUFyY2hpdmU6OmFkZFRpbGVSZW5kZXJQaXBlbGluZUZ1bmN0aW9ucyhj
b25zdCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpF
cnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoYWRkVGlsZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERl
c2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IHNl
cmlhbGl6ZVRvVVJMOmVycm9yOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkJpbmFyeUFyY2hpdmU6
OnNlcmlhbGl6ZVRvVVJMKGNvbnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiogZXJyb3IpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXJpYWxpemVUb1VSTF9lcnJvcl8pLCB1cmwsIGVycm9yKTsKK30KKworLy8gbWV0aG9k
OiBhZGRGdW5jdGlvbldpdGhEZXNjcmlwdG9yOmxpYnJhcnk6ZXJyb3I6CitfTVRMX0lOTElORSBi
b29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6YWRkRnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbkRl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IE1UTDo6TGlicmFyeSogbGlicmFyeSwgTlM6OkVy
cm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChhZGRGdW5jdGlvbldpdGhEZXNjcmlwdG9yX2xpYnJhcnlfZXJy
b3JfKSwgZGVzY3JpcHRvciwgbGlicmFyeSwgZXJyb3IpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHAg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNv
ZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYTg2YjZhOTUwMWM2ODUzZjBjOGY1YTBiYjBhYjdlYjYwMzc3
YzAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSwyNDYgQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEJs
aXRDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExI
ZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEJsaXRDb21tYW5kRW5j
b2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1U
TFR5cGVzLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdl
ciwgQmxpdE9wdGlvbikgeworICAgIEJsaXRPcHRpb25Ob25lID0gMCwKKyAgICBCbGl0T3B0aW9u
RGVwdGhGcm9tRGVwdGhTdGVuY2lsID0gMSwKKyAgICBCbGl0T3B0aW9uU3RlbmNpbEZyb21EZXB0
aFN0ZW5jaWwgPSAyLAorICAgIEJsaXRPcHRpb25Sb3dMaW5lYXJQVlJUQyA9IDQsCit9OworCitj
bGFzcyBCbGl0Q29tbWFuZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEJsaXRDb21t
YW5kRW5jb2RlciwgQ29tbWFuZEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgdm9pZCBzeW5jaHJv
bml6ZVJlc291cmNlKGNvbnN0IGNsYXNzIFJlc291cmNlKiByZXNvdXJjZSk7CisKKyAgICB2b2lk
IHN5bmNocm9uaXplVGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUlu
dGVnZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZlbCk7CisKKyAgICB2b2lkIGNvcHlGcm9tVGV4
dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291
cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZlbCwgTVRMOjpPcmlnaW4gc291cmNlT3Jp
Z2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgY2xhc3MgVGV4dHVyZSogZGVzdGluYXRp
b25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGljZSwgTlM6OlVJbnRlZ2VyIGRl
c3RpbmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3RpbmF0aW9uT3JpZ2luKTsKKworICAgIHZv
aWQgY29weUZyb21CdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBzb3VyY2VCdWZmZXIsIE5TOjpV
SW50ZWdlciBzb3VyY2VPZmZzZXQsIE5TOjpVSW50ZWdlciBzb3VyY2VCeXRlc1BlclJvdywgTlM6
OlVJbnRlZ2VyIHNvdXJjZUJ5dGVzUGVySW1hZ2UsIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25z
dCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRMOjpPcmlnaW4gZGVz
dGluYXRpb25PcmlnaW4pOworCisgICAgdm9pZCBjb3B5RnJvbUJ1ZmZlcihjb25zdCBjbGFzcyBC
dWZmZXIqIHNvdXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgTlM6OlVJbnRl
Z2VyIHNvdXJjZUJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJJbWFnZSwg
TVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IGNsYXNzIFRleHR1cmUqIGRlc3RpbmF0aW9uVGV4
dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBkZXN0aW5hdGlvbk9yaWdpbiwgTVRMOjpCbGl0T3B0aW9u
IG9wdGlvbnMpOworCisgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVy
ZSogc291cmNlVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZVNsaWNlLCBOUzo6VUludGVnZXIg
c291cmNlTGV2ZWwsIE1UTDo6T3JpZ2luIHNvdXJjZU9yaWdpbiwgTVRMOjpTaXplIHNvdXJjZVNp
emUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogZGVzdGluYXRpb25CdWZmZXIsIE5TOjpVSW50ZWdlciBk
ZXN0aW5hdGlvbk9mZnNldCwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3csIE5T
OjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2UpOworCisgICAgdm9pZCBjb3B5RnJv
bVRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6OlVJbnRlZ2Vy
IHNvdXJjZVNsaWNlLCBOUzo6VUludGVnZXIgc291cmNlTGV2ZWwsIE1UTDo6T3JpZ2luIHNvdXJj
ZU9yaWdpbiwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogZGVzdGlu
YXRpb25CdWZmZXIsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbk9mZnNldCwgTlM6OlVJbnRlZ2Vy
IGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVy
SW1hZ2UsIE1UTDo6QmxpdE9wdGlvbiBvcHRpb25zKTsKKworICAgIHZvaWQgZ2VuZXJhdGVNaXBt
YXBzKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUpOworCisgICAgdm9pZCBmaWxsQnVmZmVy
KGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6UmFuZ2UgcmFuZ2UsIHVpbnQ4X3QgdmFs
dWUpOworCisgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogc291
cmNlVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZVNsaWNlLCBOUzo6VUludGVnZXIgc291cmNl
TGV2ZWwsIGNvbnN0IGNsYXNzIFRleHR1cmUqIGRlc3RpbmF0aW9uVGV4dHVyZSwgTlM6OlVJbnRl
Z2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkxldmVsLCBOUzo6
VUludGVnZXIgc2xpY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGxldmVsQ291bnQpOworCisgICAgdm9p
ZCBjb3B5RnJvbVRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogc291cmNlVGV4dHVyZSwgY29u
c3QgY2xhc3MgVGV4dHVyZSogZGVzdGluYXRpb25UZXh0dXJlKTsKKworICAgIHZvaWQgY29weUZy
b21CdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBzb3VyY2VCdWZmZXIsIE5TOjpVSW50ZWdlciBz
b3VyY2VPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogZGVzdGluYXRpb25CdWZmZXIsIE5TOjpV
SW50ZWdlciBkZXN0aW5hdGlvbk9mZnNldCwgTlM6OlVJbnRlZ2VyIHNpemUpOworCisgICAgdm9p
ZCB1cGRhdGVGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVuY2UpOworCisgICAgdm9pZCB3YWl0
Rm9yRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKKworICAgIHZvaWQgZ2V0VGV4dHVy
ZUFjY2Vzc0NvdW50ZXJzKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE1UTDo6UmVnaW9u
IHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBOUzo6VUludGVnZXIgc2xpY2UsIGJvb2wg
cmVzZXRDb3VudGVycywgY29uc3QgY2xhc3MgQnVmZmVyKiBjb3VudGVyc0J1ZmZlciwgTlM6OlVJ
bnRlZ2VyIGNvdW50ZXJzQnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgcmVzZXRUZXh0dXJlQWNj
ZXNzQ291bnRlcnMoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgTVRMOjpSZWdpb24gcmVn
aW9uLCBOUzo6VUludGVnZXIgbWlwTGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZSk7CisKKyAgICB2
b2lkIG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3MoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4
dHVyZSk7CisKKyAgICB2b2lkIG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3MoY29uc3QgY2xh
c3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBOUzo6VUludGVnZXIgbGV2
ZWwpOworCisgICAgdm9pZCBvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzKGNvbnN0IGNsYXNz
IFRleHR1cmUqIHRleHR1cmUpOworCisgICAgdm9pZCBvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNj
ZXNzKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6
OlVJbnRlZ2VyIGxldmVsKTsKKworICAgIHZvaWQgcmVzZXRDb21tYW5kc0luQnVmZmVyKGNvbnN0
IGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlciogYnVmZmVyLCBOUzo6UmFuZ2UgcmFuZ2UpOwor
CisgICAgdm9pZCBjb3B5SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IGNsYXNzIEluZGlyZWN0
Q29tbWFuZEJ1ZmZlciogc291cmNlLCBOUzo6UmFuZ2Ugc291cmNlUmFuZ2UsIGNvbnN0IGNsYXNz
IEluZGlyZWN0Q29tbWFuZEJ1ZmZlciogZGVzdGluYXRpb24sIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvbkluZGV4KTsKKworICAgIHZvaWQgb3B0aW1pemVJbmRpcmVjdENvbW1hbmRCdWZmZXIoY29u
c3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5T
OjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkIHNhbXBsZUNvdW50ZXJzSW5CdWZmZXIoY29uc3Qg
Y2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6VUludGVnZXIgc2Ft
cGxlSW5kZXgsIGJvb2wgYmFycmllcik7CisKKyAgICB2b2lkIHJlc29sdmVDb3VudGVycyhjb25z
dCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpSYW5nZSByYW5n
ZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBkZXN0aW5hdGlvbkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRl
c3RpbmF0aW9uT2Zmc2V0KTsKK307CisKK30KKworLy8gbWV0aG9kOiBzeW5jaHJvbml6ZVJlc291
cmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6c3luY2hyb25p
emVSZXNvdXJjZShjb25zdCBNVEw6OlJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3luY2hyb25pemVSZXNv
dXJjZV8pLCByZXNvdXJjZSk7Cit9CisKKy8vIG1ldGhvZDogc3luY2hyb25pemVUZXh0dXJlOnNs
aWNlOmxldmVsOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6c3lu
Y2hyb25pemVUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2Vy
IHNsaWNlLCBOUzo6VUludGVnZXIgbGV2ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN5bmNocm9uaXplVGV4dHVyZV9zbGljZV9sZXZl
bF8pLCB0ZXh0dXJlLCBzbGljZSwgbGV2ZWwpOworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tVGV4
dHVyZTpzb3VyY2VTbGljZTpzb3VyY2VMZXZlbDpzb3VyY2VPcmlnaW46c291cmNlU2l6ZTp0b1Rl
eHR1cmU6ZGVzdGluYXRpb25TbGljZTpkZXN0aW5hdGlvbkxldmVsOmRlc3RpbmF0aW9uT3JpZ2lu
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Y29weUZyb21UZXh0
dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNvdXJj
ZVNsaWNlLCBOUzo6VUludGVnZXIgc291cmNlTGV2ZWwsIE1UTDo6T3JpZ2luIHNvdXJjZU9yaWdp
biwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IE1UTDo6VGV4dHVyZSogZGVzdGluYXRpb25U
ZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25TbGljZSwgTlM6OlVJbnRlZ2VyIGRlc3Rp
bmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3RpbmF0aW9uT3JpZ2luKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5RnJvbVRleHR1
cmVfc291cmNlU2xpY2Vfc291cmNlTGV2ZWxfc291cmNlT3JpZ2luX3NvdXJjZVNpemVfdG9UZXh0
dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5hdGlvbk9yaWdpbl8p
LCBzb3VyY2VUZXh0dXJlLCBzb3VyY2VTbGljZSwgc291cmNlTGV2ZWwsIHNvdXJjZU9yaWdpbiwg
c291cmNlU2l6ZSwgZGVzdGluYXRpb25UZXh0dXJlLCBkZXN0aW5hdGlvblNsaWNlLCBkZXN0aW5h
dGlvbkxldmVsLCBkZXN0aW5hdGlvbk9yaWdpbik7Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21C
dWZmZXI6c291cmNlT2Zmc2V0OnNvdXJjZUJ5dGVzUGVyUm93OnNvdXJjZUJ5dGVzUGVySW1hZ2U6
c291cmNlU2l6ZTp0b1RleHR1cmU6ZGVzdGluYXRpb25TbGljZTpkZXN0aW5hdGlvbkxldmVsOmRl
c3RpbmF0aW9uT3JpZ2luOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rl
cjo6Y29weUZyb21CdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIHNvdXJjZUJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIHNvdXJjZU9mZnNldCwgTlM6OlVJbnRlZ2VyIHNvdXJjZUJ5dGVzUGVyUm93LCBOUzo6
VUludGVnZXIgc291cmNlQnl0ZXNQZXJJbWFnZSwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0
IE1UTDo6VGV4dHVyZSogZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRp
b25TbGljZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3Rp
bmF0aW9uT3JpZ2luKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChjb3B5RnJvbUJ1ZmZlcl9zb3VyY2VPZmZzZXRfc291cmNlQnl0ZXNQZXJS
b3dfc291cmNlQnl0ZXNQZXJJbWFnZV9zb3VyY2VTaXplX3RvVGV4dHVyZV9kZXN0aW5hdGlvblNs
aWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVzdGluYXRpb25PcmlnaW5fKSwgc291cmNlQnVmZmVyLCBz
b3VyY2VPZmZzZXQsIHNvdXJjZUJ5dGVzUGVyUm93LCBzb3VyY2VCeXRlc1BlckltYWdlLCBzb3Vy
Y2VTaXplLCBkZXN0aW5hdGlvblRleHR1cmUsIGRlc3RpbmF0aW9uU2xpY2UsIGRlc3RpbmF0aW9u
TGV2ZWwsIGRlc3RpbmF0aW9uT3JpZ2luKTsKK30KKworLy8gbWV0aG9kOiBjb3B5RnJvbUJ1ZmZl
cjpzb3VyY2VPZmZzZXQ6c291cmNlQnl0ZXNQZXJSb3c6c291cmNlQnl0ZXNQZXJJbWFnZTpzb3Vy
Y2VTaXplOnRvVGV4dHVyZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6ZGVzdGlu
YXRpb25PcmlnaW46b3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVu
Y29kZXI6OmNvcHlGcm9tQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBzb3VyY2VCdWZmZXIsIE5T
OjpVSW50ZWdlciBzb3VyY2VPZmZzZXQsIE5TOjpVSW50ZWdlciBzb3VyY2VCeXRlc1BlclJvdywg
TlM6OlVJbnRlZ2VyIHNvdXJjZUJ5dGVzUGVySW1hZ2UsIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBj
b25zdCBNVEw6OlRleHR1cmUqIGRlc3RpbmF0aW9uVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3Rp
bmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBk
ZXN0aW5hdGlvbk9yaWdpbiwgTVRMOjpCbGl0T3B0aW9uIG9wdGlvbnMpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tQnVmZmVy
X3NvdXJjZU9mZnNldF9zb3VyY2VCeXRlc1BlclJvd19zb3VyY2VCeXRlc1BlckltYWdlX3NvdXJj
ZVNpemVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5h
dGlvbk9yaWdpbl9vcHRpb25zXyksIHNvdXJjZUJ1ZmZlciwgc291cmNlT2Zmc2V0LCBzb3VyY2VC
eXRlc1BlclJvdywgc291cmNlQnl0ZXNQZXJJbWFnZSwgc291cmNlU2l6ZSwgZGVzdGluYXRpb25U
ZXh0dXJlLCBkZXN0aW5hdGlvblNsaWNlLCBkZXN0aW5hdGlvbkxldmVsLCBkZXN0aW5hdGlvbk9y
aWdpbiwgb3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21UZXh0dXJlOnNvdXJjZVNs
aWNlOnNvdXJjZUxldmVsOnNvdXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvQnVmZmVyOmRlc3RpbmF0
aW9uT2Zmc2V0OmRlc3RpbmF0aW9uQnl0ZXNQZXJSb3c6ZGVzdGluYXRpb25CeXRlc1BlckltYWdl
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Y29weUZyb21UZXh0
dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNvdXJj
ZVNsaWNlLCBOUzo6VUludGVnZXIgc291cmNlTGV2ZWwsIE1UTDo6T3JpZ2luIHNvdXJjZU9yaWdp
biwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IE1UTDo6QnVmZmVyKiBkZXN0aW5hdGlvbkJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIgZGVzdGlu
YXRpb25CeXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
Y29weUZyb21UZXh0dXJlX3NvdXJjZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJjZU9yaWdpbl9zb3Vy
Y2VTaXplX3RvQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0X2Rlc3RpbmF0aW9uQnl0ZXNQZXJSb3df
ZGVzdGluYXRpb25CeXRlc1BlckltYWdlXyksIHNvdXJjZVRleHR1cmUsIHNvdXJjZVNsaWNlLCBz
b3VyY2VMZXZlbCwgc291cmNlT3JpZ2luLCBzb3VyY2VTaXplLCBkZXN0aW5hdGlvbkJ1ZmZlciwg
ZGVzdGluYXRpb25PZmZzZXQsIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3csIGRlc3RpbmF0aW9uQnl0
ZXNQZXJJbWFnZSk7Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21UZXh0dXJlOnNvdXJjZVNsaWNl
OnNvdXJjZUxldmVsOnNvdXJjZU9yaWdpbjpzb3VyY2VTaXplOnRvQnVmZmVyOmRlc3RpbmF0aW9u
T2Zmc2V0OmRlc3RpbmF0aW9uQnl0ZXNQZXJSb3c6ZGVzdGluYXRpb25CeXRlc1BlckltYWdlOm9w
dGlvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5RnJv
bVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIg
c291cmNlU2xpY2UsIE5TOjpVSW50ZWdlciBzb3VyY2VMZXZlbCwgTVRMOjpPcmlnaW4gc291cmNl
T3JpZ2luLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3QgTVRMOjpCdWZmZXIqIGRlc3RpbmF0
aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZzZXQsIE5TOjpVSW50ZWdlciBk
ZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25CeXRlc1Blcklt
YWdlLCBNVEw6OkJsaXRPcHRpb24gb3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUZyb21UZXh0dXJlX3NvdXJjZVNsaWNl
X3NvdXJjZUxldmVsX3NvdXJjZU9yaWdpbl9zb3VyY2VTaXplX3RvQnVmZmVyX2Rlc3RpbmF0aW9u
T2Zmc2V0X2Rlc3RpbmF0aW9uQnl0ZXNQZXJSb3dfZGVzdGluYXRpb25CeXRlc1BlckltYWdlX29w
dGlvbnNfKSwgc291cmNlVGV4dHVyZSwgc291cmNlU2xpY2UsIHNvdXJjZUxldmVsLCBzb3VyY2VP
cmlnaW4sIHNvdXJjZVNpemUsIGRlc3RpbmF0aW9uQnVmZmVyLCBkZXN0aW5hdGlvbk9mZnNldCwg
ZGVzdGluYXRpb25CeXRlc1BlclJvdywgZGVzdGluYXRpb25CeXRlc1BlckltYWdlLCBvcHRpb25z
KTsKK30KKworLy8gbWV0aG9kOiBnZW5lcmF0ZU1pcG1hcHNGb3JUZXh0dXJlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Z2VuZXJhdGVNaXBtYXBzKGNvbnN0IE1U
TDo6VGV4dHVyZSogdGV4dHVyZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZ2VuZXJhdGVNaXBtYXBzRm9yVGV4dHVyZV8pLCB0ZXh0dXJl
KTsKK30KKworLy8gbWV0aG9kOiBmaWxsQnVmZmVyOnJhbmdlOnZhbHVlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6ZmlsbEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZl
ciogYnVmZmVyLCBOUzo6UmFuZ2UgcmFuZ2UsIHVpbnQ4X3QgdmFsdWUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZpbGxCdWZmZXJfcmFu
Z2VfdmFsdWVfKSwgYnVmZmVyLCByYW5nZSwgdmFsdWUpOworfQorCisvLyBtZXRob2Q6IGNvcHlG
cm9tVGV4dHVyZTpzb3VyY2VTbGljZTpzb3VyY2VMZXZlbDp0b1RleHR1cmU6ZGVzdGluYXRpb25T
bGljZTpkZXN0aW5hdGlvbkxldmVsOnNsaWNlQ291bnQ6bGV2ZWxDb3VudDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tVGV4dHVyZShjb25zdCBNVEw6
OlRleHR1cmUqIHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJ
bnRlZ2VyIHNvdXJjZUxldmVsLCBjb25zdCBNVEw6OlRleHR1cmUqIGRlc3RpbmF0aW9uVGV4dHVy
ZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlv
bkxldmVsLCBOUzo6VUludGVnZXIgc2xpY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGxldmVsQ291bnQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF90b1RleHR1cmVfZGVzdGlu
YXRpb25TbGljZV9kZXN0aW5hdGlvbkxldmVsX3NsaWNlQ291bnRfbGV2ZWxDb3VudF8pLCBzb3Vy
Y2VUZXh0dXJlLCBzb3VyY2VTbGljZSwgc291cmNlTGV2ZWwsIGRlc3RpbmF0aW9uVGV4dHVyZSwg
ZGVzdGluYXRpb25TbGljZSwgZGVzdGluYXRpb25MZXZlbCwgc2xpY2VDb3VudCwgbGV2ZWxDb3Vu
dCk7Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21UZXh0dXJlOnRvVGV4dHVyZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tVGV4dHVyZShjb25zdCBN
VEw6OlRleHR1cmUqIHNvdXJjZVRleHR1cmUsIGNvbnN0IE1UTDo6VGV4dHVyZSogZGVzdGluYXRp
b25UZXh0dXJlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChjb3B5RnJvbVRleHR1cmVfdG9UZXh0dXJlXyksIHNvdXJjZVRleHR1cmUsIGRl
c3RpbmF0aW9uVGV4dHVyZSk7Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21CdWZmZXI6c291cmNl
T2Zmc2V0OnRvQnVmZmVyOmRlc3RpbmF0aW9uT2Zmc2V0OnNpemU6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbUJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZl
ciogc291cmNlQnVmZmVyLCBOUzo6VUludGVnZXIgc291cmNlT2Zmc2V0LCBjb25zdCBNVEw6OkJ1
ZmZlciogZGVzdGluYXRpb25CdWZmZXIsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbk9mZnNldCwg
TlM6OlVJbnRlZ2VyIHNpemUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tQnVmZmVyX3NvdXJjZU9mZnNldF90b0J1ZmZlcl9k
ZXN0aW5hdGlvbk9mZnNldF9zaXplXyksIHNvdXJjZUJ1ZmZlciwgc291cmNlT2Zmc2V0LCBkZXN0
aW5hdGlvbkJ1ZmZlciwgZGVzdGluYXRpb25PZmZzZXQsIHNpemUpOworfQorCisvLyBtZXRob2Q6
IHVwZGF0ZUZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6
dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVwZGF0ZUZlbmNlXyksIGZlbmNl
KTsKK30KKworLy8gbWV0aG9kOiB3YWl0Rm9yRmVuY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QmxpdENvbW1hbmRFbmNvZGVyOjp3YWl0Rm9yRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2Up
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHdhaXRGb3JGZW5jZV8pLCBmZW5jZSk7Cit9CisKKy8vIG1ldGhvZDogZ2V0VGV4dHVyZUFjY2Vz
c0NvdW50ZXJzOnJlZ2lvbjptaXBMZXZlbDpzbGljZTpyZXNldENvdW50ZXJzOmNvdW50ZXJzQnVm
ZmVyOmNvdW50ZXJzQnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21t
YW5kRW5jb2Rlcjo6Z2V0VGV4dHVyZUFjY2Vzc0NvdW50ZXJzKGNvbnN0IE1UTDo6VGV4dHVyZSog
dGV4dHVyZSwgTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbWlwTGV2ZWwsIE5TOjpV
SW50ZWdlciBzbGljZSwgYm9vbCByZXNldENvdW50ZXJzLCBjb25zdCBNVEw6OkJ1ZmZlciogY291
bnRlcnNCdWZmZXIsIE5TOjpVSW50ZWdlciBjb3VudGVyc0J1ZmZlck9mZnNldCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZ2V0VGV4dHVy
ZUFjY2Vzc0NvdW50ZXJzX3JlZ2lvbl9taXBMZXZlbF9zbGljZV9yZXNldENvdW50ZXJzX2NvdW50
ZXJzQnVmZmVyX2NvdW50ZXJzQnVmZmVyT2Zmc2V0XyksIHRleHR1cmUsIHJlZ2lvbiwgbWlwTGV2
ZWwsIHNsaWNlLCByZXNldENvdW50ZXJzLCBjb3VudGVyc0J1ZmZlciwgY291bnRlcnNCdWZmZXJP
ZmZzZXQpOworfQorCisvLyBtZXRob2Q6IHJlc2V0VGV4dHVyZUFjY2Vzc0NvdW50ZXJzOnJlZ2lv
bjptaXBMZXZlbDpzbGljZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29k
ZXI6OnJlc2V0VGV4dHVyZUFjY2Vzc0NvdW50ZXJzKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVy
ZSwgTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbWlwTGV2ZWwsIE5TOjpVSW50ZWdl
ciBzbGljZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwocmVzZXRUZXh0dXJlQWNjZXNzQ291bnRlcnNfcmVnaW9uX21pcExldmVsX3NsaWNl
XyksIHRleHR1cmUsIHJlZ2lvbiwgbWlwTGV2ZWwsIHNsaWNlKTsKK30KKworLy8gbWV0aG9kOiBv
cHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRD
b21tYW5kRW5jb2Rlcjo6b3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vzcyhjb25zdCBNVEw6OlRl
eHR1cmUqIHRleHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3NfKSwgdGV4dHVyZSk7
Cit9CisKKy8vIG1ldGhvZDogb3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2VzczpzbGljZTpsZXZl
bDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6Om9wdGltaXplQ29u
dGVudHNGb3JHUFVBY2Nlc3MoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVn
ZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vz
c19zbGljZV9sZXZlbF8pLCB0ZXh0dXJlLCBzbGljZSwgbGV2ZWwpOworfQorCisvLyBtZXRob2Q6
IG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3M6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Qmxp
dENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzKGNvbnN0IE1UTDo6
VGV4dHVyZSogdGV4dHVyZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwob3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vzc18pLCB0ZXh0dXJl
KTsKK30KKworLy8gbWV0aG9kOiBvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzOnNsaWNlOmxl
dmVsOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6b3B0aW1pemVD
b250ZW50c0ZvckNQVUFjY2Vzcyhjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50
ZWdlciBzbGljZSwgTlM6OlVJbnRlZ2VyIGxldmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNj
ZXNzX3NsaWNlX2xldmVsXyksIHRleHR1cmUsIHNsaWNlLCBsZXZlbCk7Cit9CisKKy8vIG1ldGhv
ZDogcmVzZXRDb21tYW5kc0luQnVmZmVyOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpCbGl0Q29tbWFuZEVuY29kZXI6OnJlc2V0Q29tbWFuZHNJbkJ1ZmZlcihjb25zdCBNVEw6Oklu
ZGlyZWN0Q29tbWFuZEJ1ZmZlciogYnVmZmVyLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0Q29tbWFu
ZHNJbkJ1ZmZlcl93aXRoUmFuZ2VfKSwgYnVmZmVyLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDog
Y29weUluZGlyZWN0Q29tbWFuZEJ1ZmZlcjpzb3VyY2VSYW5nZTpkZXN0aW5hdGlvbjpkZXN0aW5h
dGlvbkluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Y29w
eUluZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciog
c291cmNlLCBOUzo6UmFuZ2Ugc291cmNlUmFuZ2UsIGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5k
QnVmZmVyKiBkZXN0aW5hdGlvbiwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uSW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlJ
bmRpcmVjdENvbW1hbmRCdWZmZXJfc291cmNlUmFuZ2VfZGVzdGluYXRpb25fZGVzdGluYXRpb25J
bmRleF8pLCBzb3VyY2UsIHNvdXJjZVJhbmdlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25JbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogb3B0aW1pemVJbmRpcmVjdENvbW1hbmRCdWZmZXI6d2l0aFJh
bmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6b3B0aW1pemVJ
bmRpcmVjdENvbW1hbmRCdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGlu
ZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChvcHRpbWl6ZUluZGlyZWN0Q29t
bWFuZEJ1ZmZlcl93aXRoUmFuZ2VfKSwgaW5kaXJlY3RDb21tYW5kQnVmZmVyLCByYW5nZSk7Cit9
CisKKy8vIG1ldGhvZDogc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcjphdFNhbXBsZUluZGV4OndpdGhC
YXJyaWVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6c2FtcGxl
Q291bnRlcnNJbkJ1ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUluZGV4LCBib29sIGJhcnJpZXIpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50
ZXJzSW5CdWZmZXJfYXRTYW1wbGVJbmRleF93aXRoQmFycmllcl8pLCBzYW1wbGVCdWZmZXIsIHNh
bXBsZUluZGV4LCBiYXJyaWVyKTsKK30KKworLy8gbWV0aG9kOiByZXNvbHZlQ291bnRlcnM6aW5S
YW5nZTpkZXN0aW5hdGlvbkJ1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnJlc29sdmVDb3VudGVycyhjb25zdCBNVEw6OkNv
dW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlLCBjb25zdCBN
VEw6OkJ1ZmZlciogZGVzdGluYXRpb25CdWZmZXIsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbk9m
ZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwocmVzb2x2ZUNvdW50ZXJzX2luUmFuZ2VfZGVzdGluYXRpb25CdWZmZXJfZGVzdGluYXRp
b25PZmZzZXRfKSwgc2FtcGxlQnVmZmVyLCByYW5nZSwgZGVzdGluYXRpb25CdWZmZXIsIGRlc3Rp
bmF0aW9uT2Zmc2V0KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExCbGl0UGFzcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQmxpdFBhc3MuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4ZWFlMzFkNzEyNGRiYTM0NDEw
M2U3YTczZDc5NTZkNGJhNTMxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdFBhc3MuaHBwCkBAIC0wLDAgKzEsMTY1IEBACisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRh
bC9NVExCbGl0UGFzcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQmxpdFBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxC
bGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgorICAg
IHN0YXRpYyBjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2Ft
cGxlQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlcik7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydE9mRW5j
b2RlclNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KTsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFbmRPZkVuY29kZXJT
YW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworfTsKKwor
Y2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5IDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEJsaXRQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIEJsaXRQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsK
KworICAgIGNsYXNzIEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAg
ICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldE9iamVjdChjb25zdCBjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisK
K2NsYXNzIEJsaXRQYXNzRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxCbGl0UGFzc0Rl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEJsaXRQYXNzRGVzY3JpcHRv
ciogICAgICAgICAgICAgICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3MgQmxpdFBhc3NEZXNj
cmlwdG9yKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMg
Y2xhc3MgQmxpdFBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGJsaXRQYXNzRGVz
Y3JpcHRvcigpOworCisgICAgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5KiBzYW1wbGVCdWZmZXJBdHRhY2htZW50cygpIGNvbnN0OworfTsKKworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpKTsK
K30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBw
cm9wZXJ0eTogc2FtcGxlQnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZm
ZXIqIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2FtcGxl
QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNv
dW50ZXJTYW1wbGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlcikp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c2V0U2FtcGxlQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1
ZmZlciogc2FtcGxlQnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVCdWZmZXJfKSwgc2FtcGxlQnVmZmVyKTsKK30K
KworLy8gcHJvcGVydHk6IHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6
OnN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFydE9m
RW5jb2RlclNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0UGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdGFydE9mRW5jb2RlclNhbXBs
ZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGFydE9m
RW5jb2RlclNhbXBsZUluZGV4XyksIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworfQorCisv
LyBwcm9wZXJ0eTogZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OmVuZE9m
RW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5kT2ZFbmNvZGVyU2Ft
cGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4KE5TOjpV
SW50ZWdlciBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5k
ZXhfKSwgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXkqIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
ckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Qmxp
dFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVf
Q0xTKE1UTEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSkpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmluaXQ8TVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+
KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJ
TkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OkJs
aXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpV
SW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudElu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2htZW50SW5k
ZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpCbGl0
UGFzc0Rlc2NyaXB0b3IqIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTEJsaXRQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yKiBNVEw6OkJsaXRQYXNzRGVzY3Jp
cHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpCbGl0UGFz
c0Rlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGJsaXRQYXNzRGVzY3JpcHRv
cgorX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc0Rlc2NyaXB0b3IqIE1UTDo6QmxpdFBhc3NEZXNj
cmlwdG9yOjpibGl0UGFzc0Rlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExCbGl0
UGFzc0Rlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGJsaXRQYXNzRGVzY3JpcHRvcikpOwor
fQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1U
TDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OkJs
aXRQYXNzRGVzY3JpcHRvcjo6c2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVCdWZm
ZXJBdHRhY2htZW50cykpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEJ1ZmZlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQnVmZmVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWJkZGVmZWE3NzBkNTQ3M2UzM2Yx
YWM0YWJiMjY0NjJiZmNmNDVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEJ1ZmZlci5ocHAKQEAgLTAsMCArMSwxMDEgQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01U
TEJ1ZmZlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlk
Z2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKworbmFtZXNw
YWNlIE1UTAoreworY2xhc3MgQnVmZmVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxCdWZmZXIs
IFJlc291cmNlPgoreworcHVibGljOgorICAgIE5TOjpVSW50ZWdlciAgIGxlbmd0aCgpIGNvbnN0
OworCisgICAgdm9pZCogICAgICAgICAgY29udGVudHMoKTsKKworICAgIHZvaWQgICAgICAgICAg
IGRpZE1vZGlmeVJhbmdlKE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiBu
ZXdUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6
VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3cpOworCisgICAgdm9pZCAg
ICAgICAgICAgYWRkRGVidWdNYXJrZXIoY29uc3QgTlM6OlN0cmluZyogbWFya2VyLCBOUzo6UmFu
Z2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgcmVtb3ZlQWxsRGVidWdNYXJrZXJzKCk7
CisKKyAgICBjbGFzcyBCdWZmZXIqICByZW1vdGVTdG9yYWdlQnVmZmVyKCkgY29uc3Q7CisKKyAg
ICBjbGFzcyBCdWZmZXIqICBuZXdSZW1vdGVCdWZmZXJWaWV3Rm9yRGV2aWNlKGNvbnN0IGNsYXNz
IERldmljZSogZGV2aWNlKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGxlbmd0aAorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QnVmZmVyOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChsZW5ndGgpKTsKK30KKworLy8gbWV0aG9kOiBjb250ZW50cworX01UTF9JTkxJTkUgdm9p
ZCogTVRMOjpCdWZmZXI6OmNvbnRlbnRzKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb250ZW50cykpOworfQorCisvLyBt
ZXRob2Q6IGRpZE1vZGlmeVJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlcjo6ZGlk
TW9kaWZ5UmFuZ2UoTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkaWRNb2RpZnlSYW5nZV8pLCByYW5nZSk7Cit9
CisKKy8vIG1ldGhvZDogbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOm9mZnNldDpieXRlc1BlclJv
dzoKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpCdWZmZXI6Om5ld1RleHR1cmUoY29u
c3QgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3VGV4dHVyZVdp
dGhEZXNjcmlwdG9yX29mZnNldF9ieXRlc1BlclJvd18pLCBkZXNjcmlwdG9yLCBvZmZzZXQsIGJ5
dGVzUGVyUm93KTsKK30KKworLy8gbWV0aG9kOiBhZGREZWJ1Z01hcmtlcjpyYW5nZToKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpCdWZmZXI6OmFkZERlYnVnTWFya2VyKGNvbnN0IE5TOjpTdHJpbmcq
IG1hcmtlciwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGREZWJ1Z01hcmtlcl9yYW5nZV8pLCBtYXJrZXIs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiByZW1vdmVBbGxEZWJ1Z01hcmtlcnMKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpCdWZmZXI6OnJlbW92ZUFsbERlYnVnTWFya2VycygpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlbW92ZUFsbERl
YnVnTWFya2VycykpOworfQorCisvLyBwcm9wZXJ0eTogcmVtb3RlU3RvcmFnZUJ1ZmZlcgorX01U
TF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QnVmZmVyOjpyZW1vdGVTdG9yYWdlQnVmZmVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwocmVtb3RlU3RvcmFnZUJ1ZmZlcikpOworfQorCisvLyBtZXRo
b2Q6IG5ld1JlbW90ZUJ1ZmZlclZpZXdGb3JEZXZpY2U6CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZl
ciogTVRMOjpCdWZmZXI6Om5ld1JlbW90ZUJ1ZmZlclZpZXdGb3JEZXZpY2UoY29uc3QgTVRMOjpE
ZXZpY2UqIGRldmljZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1
ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVtb3RlQnVmZmVyVmlld0ZvckRldmlj
ZV8pLCBkZXZpY2UpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTENhcHR1cmVNYW5hZ2VyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlTWFuYWdlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThlMTBmNWMy
MzRiMGYxZTQ2NjA2NDdkMWVhYjkwMDAwNDI5ZDg3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlTWFuYWdlci5ocHAKQEAg
LTAsMCArMSwyMjAgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIE1ldGFsL01UTENhcHR1cmVNYW5hZ2VyLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVk
ZSAiTVRMQ2FwdHVyZU1hbmFnZXIuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0o
TlM6OkludGVnZXIsIENhcHR1cmVFcnJvcikgeworICAgIENhcHR1cmVFcnJvck5vdFN1cHBvcnRl
ZCA9IDEsCisgICAgQ2FwdHVyZUVycm9yQWxyZWFkeUNhcHR1cmluZyA9IDIsCisgICAgQ2FwdHVy
ZUVycm9ySW52YWxpZERlc2NyaXB0b3IgPSAzLAorfTsKKworX01UTF9FTlVNKE5TOjpJbnRlZ2Vy
LCBDYXB0dXJlRGVzdGluYXRpb24pIHsKKyAgICBDYXB0dXJlRGVzdGluYXRpb25EZXZlbG9wZXJU
b29scyA9IDEsCisgICAgQ2FwdHVyZURlc3RpbmF0aW9uR1BVVHJhY2VEb2N1bWVudCA9IDIsCit9
OworCitjbGFzcyBDYXB0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxDYXB0dXJl
RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQ2FwdHVyZURlc2NyaXB0
b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBDYXB0dXJlRGVzY3JpcHRvciogICAgICAgIGluaXQo
KTsKKworICAgIGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZU9iamVjdCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q2FwdHVyZU9i
amVjdChpZCBjYXB0dXJlT2JqZWN0KTsKKworICAgIE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uICAg
ICAgICAgZGVzdGluYXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldERlc3RpbmF0aW9uKE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9u
KTsKKworICAgIE5TOjpVUkwqICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0VVJMKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPdXRwdXRVUkwoY29u
c3QgTlM6OlVSTCogb3V0cHV0VVJMKTsKK307CisKK2NsYXNzIENhcHR1cmVNYW5hZ2VyIDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxDYXB0dXJlTWFuYWdlcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgQ2FwdHVyZU1hbmFnZXIqIGFsbG9jKCk7CisKKyAgICBzdGF0aWMgY2xhc3MgQ2Fw
dHVyZU1hbmFnZXIqIHNoYXJlZENhcHR1cmVNYW5hZ2VyKCk7CisKKyAgICBNVEw6OkNhcHR1cmVN
YW5hZ2VyKiAgICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIENhcHR1cmVTY29wZSogICAgICAg
ICAgbmV3Q2FwdHVyZVNjb3BlKGNvbnN0IGNsYXNzIERldmljZSogZGV2aWNlKTsKKworICAgIGNs
YXNzIENhcHR1cmVTY29wZSogICAgICAgICAgbmV3Q2FwdHVyZVNjb3BlKGNvbnN0IGNsYXNzIENv
bW1hbmRRdWV1ZSogY29tbWFuZFF1ZXVlKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgc3VwcG9ydHNEZXN0aW5hdGlvbihNVEw6OkNhcHR1cmVEZXN0aW5hdGlvbiBkZXN0aW5h
dGlvbik7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q2FwdHVyZShj
b25zdCBjbGFzcyBDYXB0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJy
b3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhcHR1cmUoY29u
c3QgY2xhc3MgRGV2aWNlKiBkZXZpY2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGFydENhcHR1cmUoY29uc3QgY2xhc3MgQ29tbWFuZFF1ZXVlKiBjb21tYW5kUXVldWUp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhcHR1cmUoY29uc3Qg
Y2xhc3MgQ2FwdHVyZVNjb3BlKiBjYXB0dXJlU2NvcGUpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICBzdG9wQ2FwdHVyZSgpOworCisgICAgY2xhc3MgQ2FwdHVyZVNjb3BlKiAg
ICAgICAgICBkZWZhdWx0Q2FwdHVyZVNjb3BlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXREZWZhdWx0Q2FwdHVyZVNjb3BlKGNvbnN0IGNsYXNzIENhcHR1cmVT
Y29wZSogZGVmYXVsdENhcHR1cmVTY29wZSk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAg
ICAgICAgIGlzQ2FwdHVyaW5nKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVEZXNjcmlwdG9yKiBNVEw6OkNhcHR1cmVE
ZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6
Q2FwdHVyZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQ2FwdHVyZURlc2NyaXB0b3Ip
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVEZXNjcmlw
dG9yKiBNVEw6OkNhcHR1cmVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OkNhcHR1cmVEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTog
Y2FwdHVyZU9iamVjdAorX01UTF9JTkxJTkUgaWQgTVRMOjpDYXB0dXJlRGVzY3JpcHRvcjo6Y2Fw
dHVyZU9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8aWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY2FwdHVyZU9iamVjdCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OnNldENhcHR1cmVPYmplY3QoaWQgY2FwdHVy
ZU9iamVjdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0Q2FwdHVyZU9iamVjdF8pLCBjYXB0dXJlT2JqZWN0KTsKK30KKworLy8gcHJv
cGVydHk6IGRlc3RpbmF0aW9uCitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVEZXN0aW5hdGlvbiBN
VEw6OkNhcHR1cmVEZXNjcmlwdG9yOjpkZXN0aW5hdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDYXB0dXJlRGVzdGluYXRpb24+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZGVzdGluYXRpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNh
cHR1cmVEZXNjcmlwdG9yOjpzZXREZXN0aW5hdGlvbihNVEw6OkNhcHR1cmVEZXN0aW5hdGlvbiBk
ZXN0aW5hdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0RGVzdGluYXRpb25fKSwgZGVzdGluYXRpb24pOworfQorCisvLyBwcm9w
ZXJ0eTogb3V0cHV0VVJMCitfTVRMX0lOTElORSBOUzo6VVJMKiBNVEw6OkNhcHR1cmVEZXNjcmlw
dG9yOjpvdXRwdXRVUkwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVUkwqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG91dHB1dFVSTCkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OnNldE91dHB1dFVSTChjb25zdCBO
Uzo6VVJMKiBvdXRwdXRVUkwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldE91dHB1dFVSTF8pLCBvdXRwdXRVUkwpOworfQorCisvLyBz
dGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDYXB0dXJlTWFuYWdlciogTVRM
OjpDYXB0dXJlTWFuYWdlcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxNVEw6OkNhcHR1cmVNYW5hZ2VyPihfTVRMX1BSSVZBVEVfQ0xTKE1UTENhcHR1cmVNYW5hZ2Vy
KSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHNoYXJlZENhcHR1cmVNYW5hZ2VyCitfTVRMX0lO
TElORSBNVEw6OkNhcHR1cmVNYW5hZ2VyKiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpzaGFyZWRDYXB0
dXJlTWFuYWdlcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDYXB0
dXJlTWFuYWdlcio+KF9NVExfUFJJVkFURV9DTFMoTVRMQ2FwdHVyZU1hbmFnZXIpLCBfTVRMX1BS
SVZBVEVfU0VMKHNoYXJlZENhcHR1cmVNYW5hZ2VyKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAor
X01UTF9JTkxJTkUgTVRMOjpDYXB0dXJlTWFuYWdlciogTVRMOjpDYXB0dXJlTWFuYWdlcjo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpDYXB0dXJlTWFuYWdlcj4o
KTsKK30KKworLy8gbWV0aG9kOiBuZXdDYXB0dXJlU2NvcGVXaXRoRGV2aWNlOgorX01UTF9JTkxJ
TkUgTVRMOjpDYXB0dXJlU2NvcGUqIE1UTDo6Q2FwdHVyZU1hbmFnZXI6Om5ld0NhcHR1cmVTY29w
ZShjb25zdCBNVEw6OkRldmljZSogZGV2aWNlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6Q2FwdHVyZVNjb3BlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDYXB0
dXJlU2NvcGVXaXRoRGV2aWNlXyksIGRldmljZSk7Cit9CisKKy8vIG1ldGhvZDogbmV3Q2FwdHVy
ZVNjb3BlV2l0aENvbW1hbmRRdWV1ZToKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVyZVNjb3BlKiBN
VEw6OkNhcHR1cmVNYW5hZ2VyOjpuZXdDYXB0dXJlU2NvcGUoY29uc3QgTVRMOjpDb21tYW5kUXVl
dWUqIGNvbW1hbmRRdWV1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkNhcHR1cmVTY29wZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q2FwdHVyZVNjb3BlV2l0
aENvbW1hbmRRdWV1ZV8pLCBjb21tYW5kUXVldWUpOworfQorCisvLyBtZXRob2Q6IHN1cHBvcnRz
RGVzdGluYXRpb246CitfTVRMX0lOTElORSBib29sIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN1cHBv
cnRzRGVzdGluYXRpb24oTVRMOjpDYXB0dXJlRGVzdGluYXRpb24gZGVzdGluYXRpb24pCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc3VwcG9ydHNEZXN0aW5hdGlvbl8pLCBkZXN0aW5hdGlvbik7Cit9CisKKy8vIG1ldGhv
ZDogc3RhcnRDYXB0dXJlV2l0aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBib29sIE1U
TDo6Q2FwdHVyZU1hbmFnZXI6OnN0YXJ0Q2FwdHVyZShjb25zdCBNVEw6OkNhcHR1cmVEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0Q2FwdHVyZVdp
dGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gbWV0aG9k
OiBzdGFydENhcHR1cmVXaXRoRGV2aWNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVN
YW5hZ2VyOjpzdGFydENhcHR1cmUoY29uc3QgTVRMOjpEZXZpY2UqIGRldmljZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhcnRDYXB0
dXJlV2l0aERldmljZV8pLCBkZXZpY2UpOworfQorCisvLyBtZXRob2Q6IHN0YXJ0Q2FwdHVyZVdp
dGhDb21tYW5kUXVldWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN0
YXJ0Q2FwdHVyZShjb25zdCBNVEw6OkNvbW1hbmRRdWV1ZSogY29tbWFuZFF1ZXVlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFydENh
cHR1cmVXaXRoQ29tbWFuZFF1ZXVlXyksIGNvbW1hbmRRdWV1ZSk7Cit9CisKKy8vIG1ldGhvZDog
c3RhcnRDYXB0dXJlV2l0aFNjb3BlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVNYW5h
Z2VyOjpzdGFydENhcHR1cmUoY29uc3QgTVRMOjpDYXB0dXJlU2NvcGUqIGNhcHR1cmVTY29wZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c3RhcnRDYXB0dXJlV2l0aFNjb3BlXyksIGNhcHR1cmVTY29wZSk7Cit9CisKKy8vIG1ldGhvZDog
c3RvcENhcHR1cmUKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlTWFuYWdlcjo6c3RvcENh
cHR1cmUoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdG9wQ2FwdHVyZSkpOworfQorCisvLyBwcm9wZXJ0eTogZGVmYXVsdENhcHR1cmVT
Y29wZQorX01UTF9JTkxJTkUgTVRMOjpDYXB0dXJlU2NvcGUqIE1UTDo6Q2FwdHVyZU1hbmFnZXI6
OmRlZmF1bHRDYXB0dXJlU2NvcGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6Q2FwdHVyZVNjb3BlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZWZhdWx0
Q2FwdHVyZVNjb3BlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlTWFuYWdl
cjo6c2V0RGVmYXVsdENhcHR1cmVTY29wZShjb25zdCBNVEw6OkNhcHR1cmVTY29wZSogZGVmYXVs
dENhcHR1cmVTY29wZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0RGVmYXVsdENhcHR1cmVTY29wZV8pLCBkZWZhdWx0Q2FwdHVyZVNj
b3BlKTsKK30KKworLy8gcHJvcGVydHk6IGlzQ2FwdHVyaW5nCitfTVRMX0lOTElORSBib29sIE1U
TDo6Q2FwdHVyZU1hbmFnZXI6OmlzQ2FwdHVyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzQ2FwdHVyaW5n
KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ2FwdHVyZVNjb3BlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExDYXB0dXJlU2NvcGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzNjAyMzVhMTQ4NjFiOGVjYmNmZmNm
NDAyZDVhM2NhMTI0NTE5OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZVNjb3BlLmhwcApAQCAtMCwwICsxLDkyIEBACisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRh
bC9NVExDYXB0dXJlU2NvcGUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJ
bmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUu
aHBwIgorCisjaW5jbHVkZSAiLi4vRm91bmRhdGlvbi9OU09iamVjdC5ocHAiCisjaW5jbHVkZSAi
Li4vRm91bmRhdGlvbi9OU1N0cmluZy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBDYXB0dXJlU2Nv
cGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENhcHR1cmVTY29wZT4KK3sKK3B1YmxpYzoKKyAg
ICBjbGFzcyBEZXZpY2UqICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyog
ICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgc2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogcExhYmVsKTsKKworICAgIGNsYXNzIENvbW1hbmRRdWV1ZSogY29t
bWFuZFF1ZXVlKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgIGJlZ2luU2NvcGUo
KTsKKyAgICB2b2lkICAgICAgICAgICAgICAgIGVuZFNjb3BlKCk7Cit9OworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRM
OjpEZXZpY2UqIE1UTDo6Q2FwdHVyZVNjb3BlOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPERldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2
aWNlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNhcHR1cmVTY29wZTo6bGFiZWwoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZVNj
b3BlOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBwTGFiZWwpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIHBMYWJl
bCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTVRMX0lOTElORSBNVEw6OkNvbW1hbmRRdWV1ZSogTVRMOjpDYXB0dXJlU2NvcGU6OmNvbW1h
bmRRdWV1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Q29tbWFu
ZFF1ZXVlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb21tYW5kUXVldWUpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpDYXB0dXJlU2NvcGU6OmJlZ2luU2NvcGUoKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYmVnaW5TY29wZSkp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVTY29wZTo6ZW5kU2NvcGUoKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5k
U2NvcGUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
Q29tbWFuZEJ1ZmZlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ29tbWFuZEJ1ZmZlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBmYzk4ZTUxMWJmNmEzYWYzMGQzNDNk
NGJiM2Y2NWI1NTRhZjEyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kQnVmZmVyLmhwcApAQCAtMCwwICsxLDQ2NSBAQAor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0
YWwvTVRMQ29tbWFuZEJ1ZmZlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVk
ZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTENvbW1hbmRCdWZm
ZXIuaHBwIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExf
RU5VTShOUzo6VUludGVnZXIsIENvbW1hbmRCdWZmZXJTdGF0dXMpIHsKKyAgICBDb21tYW5kQnVm
ZmVyU3RhdHVzTm90RW5xdWV1ZWQgPSAwLAorICAgIENvbW1hbmRCdWZmZXJTdGF0dXNFbnF1ZXVl
ZCA9IDEsCisgICAgQ29tbWFuZEJ1ZmZlclN0YXR1c0NvbW1pdHRlZCA9IDIsCisgICAgQ29tbWFu
ZEJ1ZmZlclN0YXR1c1NjaGVkdWxlZCA9IDMsCisgICAgQ29tbWFuZEJ1ZmZlclN0YXR1c0NvbXBs
ZXRlZCA9IDQsCisgICAgQ29tbWFuZEJ1ZmZlclN0YXR1c0Vycm9yID0gNSwKK307CisKK19NVExf
RU5VTShOUzo6VUludGVnZXIsIENvbW1hbmRCdWZmZXJFcnJvcikgeworICAgIENvbW1hbmRCdWZm
ZXJFcnJvck5vbmUgPSAwLAorICAgIENvbW1hbmRCdWZmZXJFcnJvclRpbWVvdXQgPSAyLAorICAg
IENvbW1hbmRCdWZmZXJFcnJvclBhZ2VGYXVsdCA9IDMsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9y
QWNjZXNzUmV2b2tlZCA9IDQsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yQmxhY2tsaXN0ZWQgPSA0
LAorICAgIENvbW1hbmRCdWZmZXJFcnJvck5vdFBlcm1pdHRlZCA9IDcsCisgICAgQ29tbWFuZEJ1
ZmZlckVycm9yT3V0T2ZNZW1vcnkgPSA4LAorICAgIENvbW1hbmRCdWZmZXJFcnJvckludmFsaWRS
ZXNvdXJjZSA9IDksCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yTWVtb3J5bGVzcyA9IDEwLAorICAg
IENvbW1hbmRCdWZmZXJFcnJvckRldmljZVJlbW92ZWQgPSAxMSwKKyAgICBDb21tYW5kQnVmZmVy
RXJyb3JTdGFja092ZXJmbG93ID0gMTIsCit9OworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2Vy
LCBDb21tYW5kQnVmZmVyRXJyb3JPcHRpb24pIHsKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JPcHRp
b25Ob25lID0gMCwKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JPcHRpb25FbmNvZGVyRXhlY3V0aW9u
U3RhdHVzID0gMSwKK307CisKK19NVExfRU5VTShOUzo6SW50ZWdlciwgQ29tbWFuZEVuY29kZXJF
cnJvclN0YXRlKSB7CisgICAgQ29tbWFuZEVuY29kZXJFcnJvclN0YXRlVW5rbm93biA9IDAsCisg
ICAgQ29tbWFuZEVuY29kZXJFcnJvclN0YXRlQ29tcGxldGVkID0gMSwKKyAgICBDb21tYW5kRW5j
b2RlckVycm9yU3RhdGVBZmZlY3RlZCA9IDIsCisgICAgQ29tbWFuZEVuY29kZXJFcnJvclN0YXRl
UGVuZGluZyA9IDMsCisgICAgQ29tbWFuZEVuY29kZXJFcnJvclN0YXRlRmF1bHRlZCA9IDQsCit9
OworCitjbGFzcyBDb21tYW5kQnVmZmVyRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxD
b21tYW5kQnVmZmVyRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQ29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBDb21tYW5kQnVmZmVy
RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0YWluZWRSZWZlcmVuY2VzKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXRhaW5lZFJlZmVyZW5jZXMoYm9vbCBy
ZXRhaW5lZFJlZmVyZW5jZXMpOworCisgICAgTVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRpb24g
ICAgICAgICBlcnJvck9wdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEVycm9yT3B0aW9ucyhNVEw6OkNvbW1hbmRCdWZmZXJFcnJvck9w
dGlvbiBlcnJvck9wdGlvbnMpOworfTsKKworY2xhc3MgQ29tbWFuZEJ1ZmZlckVuY29kZXJJbmZv
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21tYW5kQnVmZmVyRW5jb2RlckluZm8+Cit7Citw
dWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsK
KworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgIGRlYnVnU2lnbnBvc3RzKCkgY29u
c3Q7CisKKyAgICBNVEw6OkNvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZSBlcnJvclN0YXRlKCkgY29u
c3Q7Cit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBEaXNwYXRjaFR5cGUpIHsKKyAgICBE
aXNwYXRjaFR5cGVTZXJpYWwgPSAwLAorICAgIERpc3BhdGNoVHlwZUNvbmN1cnJlbnQgPSAxLAor
fTsKKworY2xhc3MgQ29tbWFuZEJ1ZmZlcjsKKwordXNpbmcgQ29tbWFuZEJ1ZmZlckhhbmRsZXIg
PSB2b2lkICheKShDb21tYW5kQnVmZmVyKik7CisKK3VzaW5nIEhhbmRsZXJGdW5jdGlvbiA9IHN0
ZDo6ZnVuY3Rpb248dm9pZChDb21tYW5kQnVmZmVyKik+OworCitjbGFzcyBDb21tYW5kQnVmZmVy
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb21tYW5kQnVmZmVyPgoreworcHVibGljOgorICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRTY2hlZHVsZWRI
YW5kbGVyKGNvbnN0IEhhbmRsZXJGdW5jdGlvbiYgZnVuY3Rpb24pOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbXBsZXRlZEhhbmRsZXIoY29u
c3QgSGFuZGxlckZ1bmN0aW9uJiBmdW5jdGlvbik7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBDb21t
YW5kUXVldWUqICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZFF1ZXVlKCkgY29uc3Q7CisK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWluZWRS
ZWZlcmVuY2VzKCkgY29uc3Q7CisKKyAgICBNVEw6OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbiAg
ICAgICAgICAgICAgZXJyb3JPcHRpb25zKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmlu
ZyogbGFiZWwpOworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtlcm5lbFN0YXJ0VGltZSgpIGNvbnN0OworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbEVuZFRpbWUoKSBjb25zdDsKKworICAgIGNsYXNz
IExvZ0NvbnRhaW5lciogICAgICAgICAgICAgICAgICAgICAgICBsb2dzKCkgY29uc3Q7CisKKyAg
ICBDRlRpbWVJbnRlcnZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BVU3RhcnRUaW1l
KCkgY29uc3Q7CisKKyAgICBDRlRpbWVJbnRlcnZhbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1BVRW5kVGltZSgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVucXVldWUoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb21taXQoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhZGRTY2hlZHVsZWRIYW5kbGVyKGNvbnN0IE1UTDo6Q29t
bWFuZEJ1ZmZlckhhbmRsZXIgYmxvY2spOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByZXNlbnREcmF3YWJsZShjb25zdCBjbGFzcyBEcmF3YWJsZSog
ZHJhd2FibGUpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByZXNlbnREcmF3YWJsZUF0VGltZShjb25zdCBjbGFzcyBEcmF3YWJsZSogZHJhd2FibGUs
IENGVGltZUludGVydmFsIHByZXNlbnRhdGlvblRpbWUpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnREcmF3YWJsZUFmdGVyTWluaW11bUR1
cmF0aW9uKGNvbnN0IGNsYXNzIERyYXdhYmxlKiBkcmF3YWJsZSwgQ0ZUaW1lSW50ZXJ2YWwgZHVy
YXRpb24pOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdhaXRVbnRpbFNjaGVkdWxlZCgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZENvbXBsZXRlZEhhbmRsZXIoY29uc3QgTVRMOjpDb21tYW5kQnVm
ZmVySGFuZGxlciBibG9jayk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2FpdFVudGlsQ29tcGxldGVkKCk7CisKKyAgICBNVEw6OkNvbW1hbmRCdWZm
ZXJTdGF0dXMgICAgICAgICAgICAgICAgICAgc3RhdHVzKCkgY29uc3Q7CisKKyAgICBOUzo6RXJy
b3IqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoKSBjb25zdDsKKworICAg
IGNsYXNzIEJsaXRDb21tYW5kRW5jb2RlciogICAgICAgICAgICAgICAgICBibGl0Q29tbWFuZEVu
Y29kZXIoKTsKKworICAgIGNsYXNzIFJlbmRlckNvbW1hbmRFbmNvZGVyKiAgICAgICAgICAgICAg
ICByZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBjbGFzcyBSZW5kZXJQYXNzRGVzY3JpcHRvciog
cmVuZGVyUGFzc0Rlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQ29tcHV0ZUNvbW1hbmRFbmNvZGVy
KiAgICAgICAgICAgICAgIGNvbXB1dGVDb21tYW5kRW5jb2Rlcihjb25zdCBjbGFzcyBDb21wdXRl
UGFzc0Rlc2NyaXB0b3IqIGNvbXB1dGVQYXNzRGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBCbGl0
Q29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAgICAgYmxpdENvbW1hbmRFbmNvZGVyKGNvbnN0
IGNsYXNzIEJsaXRQYXNzRGVzY3JpcHRvciogYmxpdFBhc3NEZXNjcmlwdG9yKTsKKworICAgIGNs
YXNzIENvbXB1dGVDb21tYW5kRW5jb2RlciogICAgICAgICAgICAgICBjb21wdXRlQ29tbWFuZEVu
Y29kZXIoKTsKKworICAgIGNsYXNzIENvbXB1dGVDb21tYW5kRW5jb2RlciogICAgICAgICAgICAg
ICBjb21wdXRlQ29tbWFuZEVuY29kZXIoTVRMOjpEaXNwYXRjaFR5cGUgZGlzcGF0Y2hUeXBlKTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVX
YWl0KGNvbnN0IGNsYXNzIEV2ZW50KiBldmVudCwgdWludDY0X3QgdmFsdWUpOworCisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZVNpZ25hbEV2ZW50
KGNvbnN0IGNsYXNzIEV2ZW50KiBldmVudCwgdWludDY0X3QgdmFsdWUpOworCisgICAgY2xhc3Mg
UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlciogICAgICAgIHBhcmFsbGVsUmVuZGVyQ29tbWFu
ZEVuY29kZXIoY29uc3QgY2xhc3MgUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIHJlbmRlclBhc3NEZXNj
cmlwdG9yKTsKKworICAgIGNsYXNzIFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlciogICAgICAg
ICByZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIoKTsKKworICAgIGNsYXNzIFJlc291cmNlU3Rh
dGVDb21tYW5kRW5jb2RlciogICAgICAgICByZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIoY29u
c3QgY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKiByZXNvdXJjZVN0YXRlUGFzc0Rl
c2NyaXB0b3IpOworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29k
ZXIqIGFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyKCk7CisKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaERlYnVnR3JvdXAoY29uc3Qg
TlM6OlN0cmluZyogc3RyaW5nKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwb3BEZWJ1Z0dyb3VwKCk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBNVEw6
OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMo
TVRMQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OkNvbW1hbmRCdWZmZXJE
ZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNv
bW1hbmRCdWZmZXJEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogcmV0YWluZWRSZWZl
cmVuY2VzCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnJl
dGFpbmVkUmVmZXJlbmNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXRhaW5lZFJlZmVyZW5jZXMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRSZXRh
aW5lZFJlZmVyZW5jZXMoYm9vbCByZXRhaW5lZFJlZmVyZW5jZXMpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJldGFpbmVkUmVmZXJl
bmNlc18pLCByZXRhaW5lZFJlZmVyZW5jZXMpOworfQorCisvLyBwcm9wZXJ0eTogZXJyb3JPcHRp
b25zCitfTVRMX0lOTElORSBNVEw6OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbiBNVEw6OkNvbW1h
bmRCdWZmZXJEZXNjcmlwdG9yOjplcnJvck9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGVycm9yT3B0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNldEVycm9yT3B0aW9ucyhNVEw6OkNvbW1hbmRC
dWZmZXJFcnJvck9wdGlvbiBlcnJvck9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEVycm9yT3B0aW9uc18pLCBlcnJvck9w
dGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcq
IE1UTDo6Q29tbWFuZEJ1ZmZlckVuY29kZXJJbmZvOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IGRlYnVnU2lnbnBvc3RzCitfTVRMX0lOTElO
RSBOUzo6QXJyYXkqIE1UTDo6Q29tbWFuZEJ1ZmZlckVuY29kZXJJbmZvOjpkZWJ1Z1NpZ25wb3N0
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkZWJ1Z1NpZ25wb3N0cykpOworfQorCisvLyBwcm9wZXJ0
eTogZXJyb3JTdGF0ZQorX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kRW5jb2RlckVycm9yU3RhdGUg
TVRMOjpDb21tYW5kQnVmZmVyRW5jb2RlckluZm86OmVycm9yU3RhdGUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZEVuY29kZXJFcnJvclN0YXRl
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVycm9yU3RhdGUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmFkZFNjaGVkdWxlZEhhbmRsZXIoY29uc3QgSGFuZGxl
ckZ1bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBfX2Jsb2NrIEhhbmRsZXJGdW5jdGlvbiBibG9j
a0Z1bmN0aW9uID0gZnVuY3Rpb247CisKKyAgICBhZGRTY2hlZHVsZWRIYW5kbGVyKF4oTVRMOjpD
b21tYW5kQnVmZmVyKiBwQ29tbWFuZEJ1ZmZlcikgeyBibG9ja0Z1bmN0aW9uKHBDb21tYW5kQnVm
ZmVyKTsgfSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjphZGRD
b21wbGV0ZWRIYW5kbGVyKGNvbnN0IEhhbmRsZXJGdW5jdGlvbiYgZnVuY3Rpb24pCit7CisgICAg
X19ibG9jayBIYW5kbGVyRnVuY3Rpb24gYmxvY2tGdW5jdGlvbiA9IGZ1bmN0aW9uOworCisgICAg
YWRkQ29tcGxldGVkSGFuZGxlciheKE1UTDo6Q29tbWFuZEJ1ZmZlciogcENvbW1hbmRCdWZmZXIp
IHsgYmxvY2tGdW5jdGlvbihwQ29tbWFuZEJ1ZmZlcik7IH0pOworfQorCisvLyBwcm9wZXJ0eTog
ZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpDb21tYW5kQnVmZmVyOjpkZXZp
Y2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNl
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGNv
bW1hbmRRdWV1ZQorX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kUXVldWUqIE1UTDo6Q29tbWFuZEJ1
ZmZlcjo6Y29tbWFuZFF1ZXVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkNvbW1hbmRRdWV1ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZFF1
ZXVlKSk7Cit9CisKKy8vIHByb3BlcnR5OiByZXRhaW5lZFJlZmVyZW5jZXMKK19NVExfSU5MSU5F
IGJvb2wgTVRMOjpDb21tYW5kQnVmZmVyOjpyZXRhaW5lZFJlZmVyZW5jZXMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocmV0YWluZWRSZWZlcmVuY2VzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBlcnJvck9wdGlvbnMK
K19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uIE1UTDo6Q29tbWFuZEJ1
ZmZlcjo6ZXJyb3JPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChlcnJvck9wdGlvbnMpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBO
Uzo6U3RyaW5nKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6c2V0
TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKwor
Ly8gcHJvcGVydHk6IGtlcm5lbFN0YXJ0VGltZQorX01UTF9JTkxJTkUgQ0ZUaW1lSW50ZXJ2YWwg
TVRMOjpDb21tYW5kQnVmZmVyOjprZXJuZWxTdGFydFRpbWUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPENGVGltZUludGVydmFsPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGtlcm5lbFN0YXJ0VGltZSkpOworfQorCisvLyBwcm9wZXJ0eToga2VybmVsRW5kVGltZQor
X01UTF9JTkxJTkUgQ0ZUaW1lSW50ZXJ2YWwgTVRMOjpDb21tYW5kQnVmZmVyOjprZXJuZWxFbmRU
aW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxDRlRpbWVJbnRl
cnZhbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChrZXJuZWxFbmRUaW1lKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBsb2dzCitfTVRMX0lOTElORSBNVEw6OkxvZ0NvbnRhaW5lciogTVRMOjpDb21tYW5k
QnVmZmVyOjpsb2dzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkxvZ0NvbnRhaW5lcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobG9ncykpOworfQorCisv
LyBwcm9wZXJ0eTogR1BVU3RhcnRUaW1lCitfTVRMX0lOTElORSBDRlRpbWVJbnRlcnZhbCBNVEw6
OkNvbW1hbmRCdWZmZXI6OkdQVVN0YXJ0VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8Q0ZUaW1lSW50ZXJ2YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoR1BV
U3RhcnRUaW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBHUFVFbmRUaW1lCitfTVRMX0lOTElORSBD
RlRpbWVJbnRlcnZhbCBNVEw6OkNvbW1hbmRCdWZmZXI6OkdQVUVuZFRpbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPENGVGltZUludGVydmFsPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKEdQVUVuZFRpbWUpKTsKK30KKworLy8gbWV0aG9kOiBlbnF1ZXVlCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6ZW5xdWV1ZSgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVucXVldWUpKTsKK30K
KworLy8gbWV0aG9kOiBjb21taXQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVy
Ojpjb21taXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChjb21taXQpKTsKK30KKworLy8gbWV0aG9kOiBhZGRTY2hlZHVsZWRIYW5kbGVy
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmFkZFNjaGVkdWxlZEhhbmRs
ZXIoY29uc3QgTVRMOjpDb21tYW5kQnVmZmVySGFuZGxlciBibG9jaykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRkU2NoZWR1bGVkSGFu
ZGxlcl8pLCBibG9jayk7Cit9CisKKy8vIG1ldGhvZDogcHJlc2VudERyYXdhYmxlOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OnByZXNlbnREcmF3YWJsZShjb25zdCBNVEw6
OkRyYXdhYmxlKiBkcmF3YWJsZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudERyYXdhYmxlXyksIGRyYXdhYmxlKTsKK30KKwor
Ly8gbWV0aG9kOiBwcmVzZW50RHJhd2FibGU6YXRUaW1lOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbW1hbmRCdWZmZXI6OnByZXNlbnREcmF3YWJsZUF0VGltZShjb25zdCBNVEw6OkRyYXdhYmxl
KiBkcmF3YWJsZSwgQ0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGF0aW9uVGltZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudERyYXdh
YmxlX2F0VGltZV8pLCBkcmF3YWJsZSwgcHJlc2VudGF0aW9uVGltZSk7Cit9CisKKy8vIG1ldGhv
ZDogcHJlc2VudERyYXdhYmxlOmFmdGVyTWluaW11bUR1cmF0aW9uOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkNvbW1hbmRCdWZmZXI6OnByZXNlbnREcmF3YWJsZUFmdGVyTWluaW11bUR1cmF0aW9u
KGNvbnN0IE1UTDo6RHJhd2FibGUqIGRyYXdhYmxlLCBDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbikK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
cHJlc2VudERyYXdhYmxlX2FmdGVyTWluaW11bUR1cmF0aW9uXyksIGRyYXdhYmxlLCBkdXJhdGlv
bik7Cit9CisKKy8vIG1ldGhvZDogd2FpdFVudGlsU2NoZWR1bGVkCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tbWFuZEJ1ZmZlcjo6d2FpdFVudGlsU2NoZWR1bGVkKCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2FpdFVudGlsU2NoZWR1
bGVkKSk7Cit9CisKKy8vIG1ldGhvZDogYWRkQ29tcGxldGVkSGFuZGxlcjoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjphZGRDb21wbGV0ZWRIYW5kbGVyKGNvbnN0IE1UTDo6
Q29tbWFuZEJ1ZmZlckhhbmRsZXIgYmxvY2spCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFkZENvbXBsZXRlZEhhbmRsZXJfKSwgYmxvY2sp
OworfQorCisvLyBtZXRob2Q6IHdhaXRVbnRpbENvbXBsZXRlZAorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNvbW1hbmRCdWZmZXI6OndhaXRVbnRpbENvbXBsZXRlZCgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdhaXRVbnRpbENvbXBsZXRl
ZCkpOworfQorCisvLyBwcm9wZXJ0eTogc3RhdHVzCitfTVRMX0lOTElORSBNVEw6OkNvbW1hbmRC
dWZmZXJTdGF0dXMgTVRMOjpDb21tYW5kQnVmZmVyOjpzdGF0dXMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZEJ1ZmZlclN0YXR1cz4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdGF0dXMpKTsKK30KKworLy8gcHJvcGVydHk6IGVycm9yCitfTVRM
X0lOTElORSBOUzo6RXJyb3IqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6ZXJyb3IoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpFcnJvcio+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZXJyb3IpKTsKK30KKworLy8gbWV0aG9kOiBibGl0Q29tbWFuZEVuY29kZXIKK19N
VExfSU5MSU5FIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmJs
aXRDb21tYW5kRW5jb2RlcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpCbGl0Q29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJsaXRDb21tYW5k
RW5jb2RlcikpOworfQorCisvLyBtZXRob2Q6IHJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2Ny
aXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1h
bmRCdWZmZXI6OnJlbmRlckNvbW1hbmRFbmNvZGVyKGNvbnN0IE1UTDo6UmVuZGVyUGFzc0Rlc2Ny
aXB0b3IqIHJlbmRlclBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3JfKSwgcmVuZGVyUGFzc0Rlc2NyaXB0
b3IpOworfQorCisvLyBtZXRob2Q6IGNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9y
OgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1
ZmZlcjo6Y29tcHV0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlw
dG9yKiBjb21wdXRlUGFzc0Rlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXyksIGNvbXB1dGVQYXNzRGVzY3Jp
cHRvcik7Cit9CisKKy8vIG1ldGhvZDogYmxpdENvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6
CitfTVRMX0lOTElORSBNVEw6OkJsaXRDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVy
OjpibGl0Q29tbWFuZEVuY29kZXIoY29uc3QgTVRMOjpCbGl0UGFzc0Rlc2NyaXB0b3IqIGJsaXRQ
YXNzRGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJs
aXRDb21tYW5kRW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYmxpdENvbW1hbmRFbmNv
ZGVyV2l0aERlc2NyaXB0b3JfKSwgYmxpdFBhc3NEZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9k
OiBjb21wdXRlQ29tbWFuZEVuY29kZXIKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZUNvbW1hbmRF
bmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmNvbXB1dGVDb21tYW5kRW5jb2RlcigpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXIq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbXB1dGVDb21tYW5kRW5jb2RlcikpOworfQorCisv
LyBtZXRob2Q6IGNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEaXNwYXRjaFR5cGU6CitfTVRMX0lO
TElORSBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpjb21w
dXRlQ29tbWFuZEVuY29kZXIoTVRMOjpEaXNwYXRjaFR5cGUgZGlzcGF0Y2hUeXBlKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChjb21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGlzcGF0Y2hU
eXBlXyksIGRpc3BhdGNoVHlwZSk7Cit9CisKKy8vIG1ldGhvZDogZW5jb2RlV2FpdEZvckV2ZW50
OnZhbHVlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmVuY29kZVdhaXQo
Y29uc3QgTVRMOjpFdmVudCogZXZlbnQsIHVpbnQ2NF90IHZhbHVlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmNvZGVXYWl0Rm9yRXZl
bnRfdmFsdWVfKSwgZXZlbnQsIHZhbHVlKTsKK30KKworLy8gbWV0aG9kOiBlbmNvZGVTaWduYWxF
dmVudDp2YWx1ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjplbmNvZGVT
aWduYWxFdmVudChjb25zdCBNVEw6OkV2ZW50KiBldmVudCwgdWludDY0X3QgdmFsdWUpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuY29k
ZVNpZ25hbEV2ZW50X3ZhbHVlXyksIGV2ZW50LCB2YWx1ZSk7Cit9CisKKy8vIG1ldGhvZDogcGFy
YWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRM
OjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZmZXI6OnBhcmFs
bGVsUmVuZGVyQ29tbWFuZEVuY29kZXIoY29uc3QgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvciog
cmVuZGVyUGFzc0Rlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChwYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3JfKSwgcmVuZGVyUGFz
c0Rlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rl
cgorX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29t
bWFuZEJ1ZmZlcjo6cmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcio+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwocmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKSk7Cit9CisK
Ky8vIG1ldGhvZDogcmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3I6Citf
TVRMX0lOTElORSBNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5k
QnVmZmVyOjpyZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIoY29uc3QgTVRMOjpSZXNvdXJjZVN0
YXRlUGFzc0Rlc2NyaXB0b3IqIHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rl
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyV2l0
aERlc2NyaXB0b3JfKSwgcmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKTsKK30KKworLy8gbWV0
aG9kOiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlcgorX01UTF9JTkxJTkUgTVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVy
OjphY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlcigpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rl
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVu
Y29kZXIpKTsKK30KKworLy8gbWV0aG9kOiBwdXNoRGVidWdHcm91cDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21tYW5kQnVmZmVyOjpwdXNoRGVidWdHcm91cChjb25zdCBOUzo6U3RyaW5nKiBz
dHJpbmcpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHB1c2hEZWJ1Z0dyb3VwXyksIHN0cmluZyk7Cit9CisKKy8vIG1ldGhvZDogcG9wRGVi
dWdHcm91cAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OnBvcERlYnVnR3Jv
dXAoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChwb3BEZWJ1Z0dyb3VwKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
ZjFmMzkyYmI0ZjYwMTRhOTEzZTFjYTI1NTMwMWFmNGFlNjhjMWU3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRFbmNvZGVy
LmhwcApAQCAtMCwwICsxLDEwMSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ29tbWFuZEVuY29kZXIuaHBwCisvLworLy8g
Q29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRM
RGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJN
VExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisK
K25hbWVzcGFjZSBNVEwKK3sKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIFJlc291cmNlVXNh
Z2UpIHsKKyAgICBSZXNvdXJjZVVzYWdlUmVhZCA9IDEsCisgICAgUmVzb3VyY2VVc2FnZVdyaXRl
ID0gMiwKKyAgICBSZXNvdXJjZVVzYWdlU2FtcGxlID0gNCwKK307CisKK19NVExfT1BUSU9OUyhO
Uzo6VUludGVnZXIsIEJhcnJpZXJTY29wZSkgeworICAgIEJhcnJpZXJTY29wZUJ1ZmZlcnMgPSAx
LAorICAgIEJhcnJpZXJTY29wZVRleHR1cmVzID0gMiwKKyAgICBCYXJyaWVyU2NvcGVSZW5kZXJU
YXJnZXRzID0gNCwKK307CisKK2NsYXNzIENvbW1hbmRFbmNvZGVyIDogcHVibGljIE5TOjpSZWZl
cmVuY2luZzxDb21tYW5kRW5jb2Rlcj4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBEZXZpY2UqIGRl
dmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICBsYWJlbCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgdm9p
ZCAgICAgICAgICBlbmRFbmNvZGluZygpOworCisgICAgdm9pZCAgICAgICAgICBpbnNlcnREZWJ1
Z1NpZ25wb3N0KGNvbnN0IE5TOjpTdHJpbmcqIHN0cmluZyk7CisKKyAgICB2b2lkICAgICAgICAg
IHB1c2hEZWJ1Z0dyb3VwKGNvbnN0IE5TOjpTdHJpbmcqIHN0cmluZyk7CisKKyAgICB2b2lkICAg
ICAgICAgIHBvcERlYnVnR3JvdXAoKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGRldmljZQor
X01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6Q29tbWFuZEVuY29kZXI6OmRldmljZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19N
VExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tbWFuZEVuY29kZXI6OmxhYmVsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFu
ZEVuY29kZXI6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBs
YWJlbCk7Cit9CisKKy8vIG1ldGhvZDogZW5kRW5jb2RpbmcKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21tYW5kRW5jb2Rlcjo6ZW5kRW5jb2RpbmcoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmRFbmNvZGluZykpOworfQorCisvLyBt
ZXRob2Q6IGluc2VydERlYnVnU2lnbnBvc3Q6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFu
ZEVuY29kZXI6Omluc2VydERlYnVnU2lnbnBvc3QoY29uc3QgTlM6OlN0cmluZyogc3RyaW5nKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
bnNlcnREZWJ1Z1NpZ25wb3N0XyksIHN0cmluZyk7Cit9CisKKy8vIG1ldGhvZDogcHVzaERlYnVn
R3JvdXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEVuY29kZXI6OnB1c2hEZWJ1Z0dy
b3VwKGNvbnN0IE5TOjpTdHJpbmcqIHN0cmluZykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHVzaERlYnVnR3JvdXBfKSwgc3RyaW5nKTsK
K30KKworLy8gbWV0aG9kOiBwb3BEZWJ1Z0dyb3VwCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
bWFuZEVuY29kZXI6OnBvcERlYnVnR3JvdXAoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwb3BEZWJ1Z0dyb3VwKSk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tbWFuZFF1ZXVl
LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kUXVl
dWUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY1NGExNmUxNGE2M2NlY2MzZWM0YmM3NGViYmYwODVhNDY1ZDY1
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMQ29tbWFuZFF1ZXVlLmhwcApAQCAtMCwwICsxLDg5IEBACisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21tYW5kUXVl
dWUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIENvbW1hbmRRdWV1ZSA6IHB1
YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q29tbWFuZFF1ZXVlPgoreworcHVibGljOgorICAgIE5TOjpT
dHJpbmcqICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRGV2aWNlKiAg
ICAgICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBDb21tYW5kQnVmZmVyKiBjb21tYW5k
QnVmZmVyKCk7CisKKyAgICBjbGFzcyBDb21tYW5kQnVmZmVyKiBjb21tYW5kQnVmZmVyKGNvbnN0
IGNsYXNzIENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNz
IENvbW1hbmRCdWZmZXIqIGNvbW1hbmRCdWZmZXJXaXRoVW5yZXRhaW5lZFJlZmVyZW5jZXMoKTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgIGluc2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5KCk7
Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyog
TVRMOjpDb21tYW5kUXVldWU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZFF1ZXVlOjpzZXRMYWJlbChjb25zdCBO
Uzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTog
ZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpDb21tYW5kUXVldWU6OmRldmlj
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2Uq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBtZXRob2Q6IGNvbW1h
bmRCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEJ1ZmZlciogTVRMOjpDb21tYW5kUXVl
dWU6OmNvbW1hbmRCdWZmZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6Q29tbWFuZEJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZEJ1ZmZlcikp
OworfQorCisvLyBtZXRob2Q6IGNvbW1hbmRCdWZmZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5M
SU5FIE1UTDo6Q29tbWFuZEJ1ZmZlciogTVRMOjpDb21tYW5kUXVldWU6OmNvbW1hbmRCdWZmZXIo
Y29uc3QgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRCdWZmZXIqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGNvbW1hbmRCdWZmZXJXaXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsK
K30KKworLy8gbWV0aG9kOiBjb21tYW5kQnVmZmVyV2l0aFVucmV0YWluZWRSZWZlcmVuY2VzCitf
TVRMX0lOTElORSBNVEw6OkNvbW1hbmRCdWZmZXIqIE1UTDo6Q29tbWFuZFF1ZXVlOjpjb21tYW5k
QnVmZmVyV2l0aFVucmV0YWluZWRSZWZlcmVuY2VzKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNv
bW1hbmRCdWZmZXJXaXRoVW5yZXRhaW5lZFJlZmVyZW5jZXMpKTsKK30KKworLy8gbWV0aG9kOiBp
bnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFyeQorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRR
dWV1ZTo6aW5zZXJ0RGVidWdDYXB0dXJlQm91bmRhcnkoKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnNlcnREZWJ1Z0NhcHR1cmVCb3Vu
ZGFyeSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZmE5ZWY3OGIxZTBjMzE0ZGNjY2ZlZDA0Yzg2Mzg4MWRhOGZiYzM3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVDb21tYW5k
RW5jb2Rlci5ocHAKQEAgLTAsMCArMSwzMzcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTENvbXB1dGVDb21tYW5kRW5jb2Rl
ci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
Ky8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBk
aXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBw
IgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEJ1ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMQ29t
bWFuZEJ1ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1
ZGUgIk1UTEhlYXAuaHBwIgorI2luY2x1ZGUgIk1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUu
aHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExTYW1wbGVyLmhw
cCIKKyNpbmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisj
aW5jbHVkZSAiTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwIgorCituYW1lc3BhY2UgTVRMCit7
CitzdHJ1Y3QgRGlzcGF0Y2hUaHJlYWRncm91cHNJbmRpcmVjdEFyZ3VtZW50cworeworICAgIHVp
bnQzMl90IHRocmVhZGdyb3Vwc1BlckdyaWRbM107Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3Qg
U3RhZ2VJblJlZ2lvbkluZGlyZWN0QXJndW1lbnRzCit7CisgICAgdWludDMyX3Qgc3RhZ2VJbk9y
aWdpblszXTsKKyAgICB1aW50MzJfdCBzdGFnZUluU2l6ZVszXTsKK30gX01UTF9QQUNLRUQ7CisK
K2NsYXNzIENvbXB1dGVDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rlcj4KK3sKK3B1YmxpYzoKKyAgICBNVEw6
OkRpc3BhdGNoVHlwZSBkaXNwYXRjaFR5cGUoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAg
ICAgIHNldENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIENvbXB1dGVQaXBlbGluZVN0
YXRlKiBzdGF0ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRCeXRlcyhjb25zdCB2b2lk
KiBieXRlcywgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAg
IHZvaWQgICAgICAgICAgICAgIHNldEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgIHNldEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVn
ZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0QnVmZmVycyhNVEw6OkJ1ZmZl
ciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFuZ2UgcmFu
Z2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29u
c3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5jdGlvblRhYmxlLCBOUzo6
VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0VmlzaWJs
ZUZ1bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxl
RnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgIHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1
ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVzKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICBzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9u
U3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1
cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICBzZXRUZXh0dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSk7
CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3MgU2Ft
cGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgc2V0U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwg
TlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFNhbXBsZXJTdGF0
ZShjb25zdCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIGZsb2F0IGxvZE1pbkNsYW1wLCBm
bG9hdCBsb2RNYXhDbGFtcCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgIHNldFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNv
bnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6
OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFRocmVhZGdyb3VwTWVt
b3J5TGVuZ3RoKE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICBzZXRJbWFnZWJsb2NrV2lkdGgoTlM6OlVJbnRlZ2VyIHdpZHRo
LCBOUzo6VUludGVnZXIgaGVpZ2h0KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFN0YWdl
SW5SZWdpb24oTVRMOjpSZWdpb24gcmVnaW9uKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNl
dFN0YWdlSW5SZWdpb24oY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIGRp
c3BhdGNoVGhyZWFkZ3JvdXBzKE1UTDo6U2l6ZSB0aHJlYWRncm91cHNQZXJHcmlkLCBNVEw6OlNp
emUgdGhyZWFkc1BlclRocmVhZGdyb3VwKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIGRpc3Bh
dGNoVGhyZWFkZ3JvdXBzKGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpV
SW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRn
cm91cCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBkaXNwYXRjaFRocmVhZHMoTVRMOjpTaXpl
IHRocmVhZHNQZXJHcmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKTsKKworICAg
IHZvaWQgICAgICAgICAgICAgIHVwZGF0ZUZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBmZW5jZSk7
CisKKyAgICB2b2lkICAgICAgICAgICAgICB3YWl0Rm9yRmVuY2UoY29uc3QgY2xhc3MgRmVuY2Uq
IGZlbmNlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHVzZVJlc291cmNlKGNvbnN0IGNsYXNz
IFJlc291cmNlKiByZXNvdXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgIHVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwg
TlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9p
ZCAgICAgICAgICAgICAgdXNlSGVhcChjb25zdCBjbGFzcyBIZWFwKiBoZWFwKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgIHVzZUhlYXBzKE1UTDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2Vy
IGNvdW50KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIGV4ZWN1dGVDb21tYW5kc0luQnVmZmVy
KGNvbnN0IGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVy
LCBOUzo6UmFuZ2UgZXhlY3V0aW9uUmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgZXhl
Y3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyKiBp
bmRpcmVjdENvbW1hbmRidWZmZXIsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RSYW5nZUJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgIG1lbW9yeUJhcnJpZXIoTVRMOjpCYXJyaWVyU2NvcGUgc2NvcGUpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgbWVtb3J5QmFycmllcihNVEw6OlJlc291cmNlKiByZXNvdXJjZXNb
XSwgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNhbXBsZUNv
dW50ZXJzSW5CdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVm
ZmVyLCBOUzo6VUludGVnZXIgc2FtcGxlSW5kZXgsIGJvb2wgYmFycmllcik7Cit9OworCit9CisK
Ky8vIHByb3BlcnR5OiBkaXNwYXRjaFR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGlzcGF0Y2hUeXBl
IE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaFR5cGUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGlzcGF0Y2hUeXBlPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGRpc3BhdGNoVHlwZSkpOworfQorCisvLyBtZXRob2Q6IHNldENvbXB1dGVQ
aXBlbGluZVN0YXRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rl
cjo6c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0
ZSogc3RhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldENvbXB1dGVQaXBlbGluZVN0YXRlXyksIHN0YXRlKTsKK30KKworLy8gbWV0
aG9kOiBzZXRCeXRlczpsZW5ndGg6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21w
dXRlQ29tbWFuZEVuY29kZXI6OnNldEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVn
ZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ5dGVzX2xlbmd0aF9hdEluZGV4Xyks
IGJ5dGVzLCBsZW5ndGgsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRCdWZmZXI6b2Zmc2V0
OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpz
ZXRCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVyLCBv
ZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRCdWZmZXJPZmZzZXQ6YXRJbmRleDoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlck9m
ZnNldChOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlck9m
ZnNldF9hdEluZGV4XyksIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEJ1ZmZl
cnM6b2Zmc2V0czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1h
bmRFbmNvZGVyOjpzZXRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpV
SW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyc19vZmZzZXRzX3dp
dGhSYW5nZV8pLCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0
VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IE1U
TDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5jdGlvblRhYmxlLCBOUzo6VUludGVn
ZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFZpc2libGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwg
dmlzaWJsZUZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRW
aXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0
IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIHZpc2libGVGdW5jdGlvblRhYmxlc1tdLCBOUzo6
UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwg
dmlzaWJsZUZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0SW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25z
dCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZV9hdEJ1ZmZlckluZGV4XyksIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4
KTsKK30KKworLy8gbWV0aG9kOiBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoQnVm
ZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXyksIGludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0QWNjZWxlcmF0
aW9uU3RydWN0dXJlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyOjpzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1
ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZmZXJJbmRleF8pLCBhY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUZXh0
dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVy
OjpzZXRUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRUZXh0dXJlX2F0SW5kZXhfKSwgdGV4dHVyZSwgaW5kZXgpOworfQorCisvLyBtZXRo
b2Q6IHNldFRleHR1cmVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRl
Q29tbWFuZEVuY29kZXI6OnNldFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwgTlM6
OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRUZXh0dXJlc193aXRoUmFuZ2VfKSwgdGV4dHVyZXMsIHJhbmdlKTsK
K30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVyU3RhdGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVyU3Rh
dGVfYXRJbmRleF8pLCBzYW1wbGVyLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2FtcGxl
clN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRF
bmNvZGVyOjpzZXRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBO
Uzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZXJTdGF0ZXNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBy
YW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2FtcGxlclN0YXRlOmxvZE1pbkNsYW1wOmxvZE1h
eENsYW1wOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyOjpzZXRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIGZs
b2F0IGxvZE1pbkNsYW1wLCBmbG9hdCBsb2RNYXhDbGFtcCwgTlM6OlVJbnRlZ2VyIGluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRTYW1wbGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRleF8pLCBzYW1wbGVy
LCBsb2RNaW5DbGFtcCwgbG9kTWF4Q2xhbXAsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRT
YW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RNYXhDbGFtcHM6d2l0aFJhbmdlOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0U2FtcGxlclN0YXRlcyhN
VEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10s
IGNvbnN0IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZXJT
dGF0ZXNfbG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIGxv
ZE1pbkNsYW1wcywgbG9kTWF4Q2xhbXBzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGhy
ZWFkZ3JvdXBNZW1vcnlMZW5ndGg6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21w
dXRlQ29tbWFuZEVuY29kZXI6OnNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKE5TOjpVSW50ZWdl
ciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGhf
YXRJbmRleF8pLCBsZW5ndGgsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRJbWFnZWJsb2Nr
V2lkdGg6aGVpZ2h0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rl
cjo6c2V0SW1hZ2VibG9ja1dpZHRoKE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhl
aWdodCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0SW1hZ2VibG9ja1dpZHRoX2hlaWdodF8pLCB3aWR0aCwgaGVpZ2h0KTsKK30KKwor
Ly8gbWV0aG9kOiBzZXRTdGFnZUluUmVnaW9uOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1
dGVDb21tYW5kRW5jb2Rlcjo6c2V0U3RhZ2VJblJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24pCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFN0YWdlSW5SZWdpb25fKSwgcmVnaW9uKTsKK30KKworLy8gbWV0aG9kOiBzZXRTdGFnZUluUmVn
aW9uV2l0aEluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0U3RhZ2VJblJlZ2lvbihjb25zdCBN
VEw6OkJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9m
ZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0U3RhZ2VJblJlZ2lvbldpdGhJbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9m
ZnNldF8pLCBpbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworfQorCisvLyBt
ZXRob2Q6IGRpc3BhdGNoVGhyZWFkZ3JvdXBzOnRocmVhZHNQZXJUaHJlYWRncm91cDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNoVGhyZWFkZ3Jv
dXBzKE1UTDo6U2l6ZSB0aHJlYWRncm91cHNQZXJHcmlkLCBNVEw6OlNpemUgdGhyZWFkc1BlclRo
cmVhZGdyb3VwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChkaXNwYXRjaFRocmVhZGdyb3Vwc190aHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwg
dGhyZWFkZ3JvdXBzUGVyR3JpZCwgdGhyZWFkc1BlclRocmVhZGdyb3VwKTsKK30KKworLy8gbWV0
aG9kOiBkaXNwYXRjaFRocmVhZGdyb3Vwc1dpdGhJbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZl
ck9mZnNldDp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaFRocmVhZGdyb3Vwcyhjb25zdCBNVEw6OkJ1ZmZl
ciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCwgTVRM
OjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGlzcGF0Y2hUaHJlYWRncm91cHNXaXRoSW5k
aXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfdGhyZWFkc1BlclRocmVhZGdyb3VwXyks
IGluZGlyZWN0QnVmZmVyLCBpbmRpcmVjdEJ1ZmZlck9mZnNldCwgdGhyZWFkc1BlclRocmVhZGdy
b3VwKTsKK30KKworLy8gbWV0aG9kOiBkaXNwYXRjaFRocmVhZHM6dGhyZWFkc1BlclRocmVhZGdy
b3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6ZGlzcGF0
Y2hUaHJlYWRzKE1UTDo6U2l6ZSB0aHJlYWRzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJU
aHJlYWRncm91cCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZGlzcGF0Y2hUaHJlYWRzX3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCB0aHJl
YWRzUGVyR3JpZCwgdGhyZWFkc1BlclRocmVhZGdyb3VwKTsKK30KKworLy8gbWV0aG9kOiB1cGRh
dGVGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnVw
ZGF0ZUZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1cGRhdGVGZW5jZV8pLCBmZW5jZSk7
Cit9CisKKy8vIG1ldGhvZDogd2FpdEZvckZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNv
bXB1dGVDb21tYW5kRW5jb2Rlcjo6d2FpdEZvckZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh3YWl0Rm9yRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlOnVz
YWdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6dXNlUmVz
b3VyY2UoY29uc3QgTVRMOjpSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1
c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodXNlUmVzb3VyY2VfdXNhZ2VfKSwgcmVzb3VyY2UsIHVzYWdlKTsKK30KKworLy8gbWV0
aG9kOiB1c2VSZXNvdXJjZXM6Y291bnQ6dXNhZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyOjp1c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2Vz
W10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNv
dXJjZXNfY291bnRfdXNhZ2VfKSwgcmVzb3VyY2VzLCBjb3VudCwgdXNhZ2UpOworfQorCisvLyBt
ZXRob2Q6IHVzZUhlYXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyOjp1c2VIZWFwKGNvbnN0IE1UTDo6SGVhcCogaGVhcCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlSGVhcF8pLCBoZWFwKTsKK30K
KworLy8gbWV0aG9kOiB1c2VIZWFwczpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21w
dXRlQ29tbWFuZEVuY29kZXI6OnVzZUhlYXBzKE1UTDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRl
Z2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh1c2VIZWFwc19jb3VudF8pLCBoZWFwcywgY291bnQpOworfQorCisvLyBtZXRo
b2Q6IGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmV4ZWN1dGVDb21tYW5kc0luQnVmZmVyKGNvbnN0
IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5TOjpS
YW5nZSBleGVjdXRpb25SYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXJfd2l0aFJhbmdlXyks
IGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgZXhlY3V0aW9uUmFuZ2UpOworfQorCisvLyBtZXRob2Q6
IGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyOmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zm
c2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6ZXhlY3V0
ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGly
ZWN0Q29tbWFuZGJ1ZmZlciwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGlyZWN0UmFuZ2VCdWZmZXIs
IE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZm
ZXJfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgaW5kaXJlY3RDb21tYW5k
YnVmZmVyLCBpbmRpcmVjdFJhbmdlQnVmZmVyLCBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisK
Ky8vIG1ldGhvZDogbWVtb3J5QmFycmllcldpdGhTY29wZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXI6Om1lbW9yeUJhcnJpZXIoTVRMOjpCYXJyaWVyU2NvcGUg
c2NvcGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG1lbW9yeUJhcnJpZXJXaXRoU2NvcGVfKSwgc2NvcGUpOworfQorCisvLyBtZXRob2Q6
IG1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzOmNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6bWVtb3J5QmFycmllcihNVEw6OlJlc291cmNlKiByZXNv
dXJjZXNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtZW1vcnlCYXJyaWVyV2l0aFJlc291cmNlc19j
b3VudF8pLCByZXNvdXJjZXMsIGNvdW50KTsKK30KKworLy8gbWV0aG9kOiBzYW1wbGVDb3VudGVy
c0luQnVmZmVyOmF0U2FtcGxlSW5kZXg6d2l0aEJhcnJpZXI6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzYW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IE1U
TDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6VUludGVnZXIgc2FtcGxl
SW5kZXgsIGJvb2wgYmFycmllcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcl9hdFNhbXBsZUluZGV4
X3dpdGhCYXJyaWVyXyksIHNhbXBsZUJ1ZmZlciwgc2FtcGxlSW5kZXgsIGJhcnJpZXIpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1
dGVQYXNzLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21w
dXRlUGFzcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNkNGI1MjY3NmRkYjAxZDZmNTg5OGM1ZDczMTUxYWUz
Zjc0NjNlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExDb21wdXRlUGFzcy5ocHAKQEAgLTAsMCArMSwxODEgQEAKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTENvbXB1
dGVQYXNzLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRn
ZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQ29tbWFuZEJ1ZmZlci5ocHAiCisKK25h
bWVzcGFjZSBNVEwKK3sKK2NsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQ29tcHV0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNz
IENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICBpbml0
KCk7CisKKyAgICBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlQnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbXBsZUJ1ZmZlcihj
b25zdCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRPZkVuY29kZXJT
YW1wbGVJbmRleChOUzo6VUludGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCk7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5kT2ZFbmNvZGVy
U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK307CisK
K2NsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21wdXRlUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBj
bGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAg
ICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJ
bmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgQ29tcHV0ZVBhc3NTYW1w
bGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0
dGFjaG1lbnRJbmRleCk7Cit9OworCitjbGFzcyBDb21wdXRlUGFzc0Rlc2NyaXB0b3IgOiBwdWJs
aWMgTlM6OkNvcHlpbmc8Q29tcHV0ZVBhc3NEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0
YXRpYyBjbGFzcyBDb21wdXRlUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgYWxs
b2MoKTsKKworICAgIGNsYXNzIENvbXB1dGVQYXNzRGVzY3JpcHRvciogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIENvbXB1dGVQYXNzRGVzY3Jp
cHRvciogICAgICAgICAgICAgICAgICAgICBjb21wdXRlUGFzc0Rlc2NyaXB0b3IoKTsKKworICAg
IE1UTDo6RGlzcGF0Y2hUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlzcGF0Y2hUeXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREaXNwYXRjaFR5cGUoTVRMOjpEaXNwYXRjaFR5
cGUgZGlzcGF0Y2hUeXBlKTsKKworICAgIGNsYXNzIENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdDsK
K307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q29t
cHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpDb21wdXRlUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0
dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OkNv
bXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlcgorX01U
TF9JTkxJTkUgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFNh
bXBsZUJ1ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlcikK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0U2FtcGxlQnVmZmVyXyksIHNhbXBsZUJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5OiBzdGFy
dE9mRW5jb2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpDb21w
dXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzdGFydE9mRW5jb2RlclNh
bXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRl
eCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUlu
dGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJ
bmRleF8pLCBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IGVu
ZE9mRW5jb2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpDb21w
dXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjplbmRPZkVuY29kZXJTYW1w
bGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yOjpzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIg
ZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4XyksIGVu
ZE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
ckFycmF5KiBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkNvbXB1
dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRF
X0NMUyhNVExDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkp
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpDb21wdXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlw
dDoKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvciogTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
QXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vi
c2NyaXB0XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0
SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OkNv
bXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5T
OjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRf
KSwgYXR0YWNobWVudCwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yKiBNVEw6OkNvbXB1
dGVQYXNzRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21wdXRl
UGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OkNvbXB1dGVQYXNzRGVzY3JpcHRvciogTVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I6OmluaXQo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlw
dG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBjb21wdXRlUGFzc0Rlc2NyaXB0b3IKK19N
VExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQYXNzRGVz
Y3JpcHRvcjo6Y29tcHV0ZVBhc3NEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMo
TVRMQ29tcHV0ZVBhc3NEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChjb21wdXRlUGFzc0Rl
c2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IGRpc3BhdGNoVHlwZQorX01UTF9JTkxJTkUg
TVRMOjpEaXNwYXRjaFR5cGUgTVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I6OmRpc3BhdGNoVHlw
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEaXNwYXRj
aFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGlzcGF0Y2hUeXBlKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I6OnNldERpc3BhdGNoVHlwZShN
VEw6OkRpc3BhdGNoVHlwZSBkaXNwYXRjaFR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERpc3BhdGNoVHlwZV8pLCBkaXNwYXRj
aFR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMKK19NVExf
SU5MSU5FIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5KiBNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRvcjo6c2FtcGxlQnVmZmVyQXR0YWNobWVudHMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzYW1wbGVCdWZmZXJBdHRhY2htZW50cykpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQaXBlbGluZS5ocHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBpcGVsaW5lLmhw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kZTU2ZDdmZmQyZTNlZjc0N2I5NWJlNTQwOTI4YmU2ZmYwMjgwMjYzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TENvbXB1dGVQaXBlbGluZS5ocHAKQEAgLTAsMCArMSwzNTcgQEAKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTENvbXB1dGVQaXBl
bGluZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2Uu
aHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKworbmFtZXNwYWNlIE1U
TAoreworY2xhc3MgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8Q29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y2xhc3MgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogYWxsb2MoKTsKKworICAgIGNsYXNzIENv
bXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzKCkgY29uc3Q7Cit9OworCitj
bGFzcyBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPENvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsK
KworICAgIGNsYXNzIEZ1bmN0aW9uKiAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlRnVu
Y3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0Q29tcHV0ZUZ1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rp
b24pOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVh
ZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRocmVhZEdyb3VwU2l6
ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKGJvb2wgdGhyZWFkR3JvdXBTaXplSXNN
dWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heFRv
dGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKE5TOjpVSW50ZWdlciBtYXhUb3RhbFRocmVhZHNQZXJU
aHJlYWRncm91cCk7CisKKyAgICBjbGFzcyBTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogICAg
ICAgc3RhZ2VJbnB1dERlc2NyaXB0b3IoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0U3RhZ2VJbnB1dERlc2NyaXB0b3IoY29uc3QgY2xhc3Mg
U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIHN0YWdlSW5wdXREZXNjcmlwdG9yKTsKKworICAg
IGNsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiAgICBidWZmZXJzKCkgY29uc3Q7
CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydElu
ZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoYm9vbCBz
dXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0TGlicmFyaWVzKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluc2VydExpYnJhcmllcyhjb25z
dCBOUzo6QXJyYXkqIGluc2VydExpYnJhcmllcyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJlbG9hZGVkTGlicmFyaWVzKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByZWxvYWRlZExpYnJhcmll
cyhjb25zdCBOUzo6QXJyYXkqIHByZWxvYWRlZExpYnJhcmllcyk7CisKKyAgICBOUzo6QXJyYXkq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5QXJjaGl2ZXMoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QmluYXJ5QXJjaGl2
ZXMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcyk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTsKKworICAgIGNsYXNzIExpbmtlZEZ1
bmN0aW9ucyogICAgICAgICAgICAgICAgICBsaW5rZWRGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGlua2VkRnVuY3Rpb25z
KGNvbnN0IGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogbGlua2VkRnVuY3Rpb25zKTsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0QWRkaW5nQmluYXJ5
RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRkaW5n
QmluYXJ5RnVuY3Rpb25zKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIg
bWF4Q2FsbFN0YWNrRGVwdGgpOworfTsKKworY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbXB1dGVQaXBlbGluZVN0YXRlPgoreworcHVibGljOgor
ICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisKKyAg
ICBjbGFzcyBEZXZpY2UqICAgICAgICAgICAgICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgIG1heFRvdGFsVGhyZWFkc1BlclRocmVh
ZGdyb3VwKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICB0
aHJlYWRFeGVjdXRpb25XaWR0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdDsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgIGltYWdlYmxvY2tNZW1vcnlMZW5ndGgo
TVRMOjpTaXplIGltYWdlYmxvY2tEaW1lbnNpb25zKTsKKworICAgIGJvb2wgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3Q7CisK
KyAgICBjbGFzcyBGdW5jdGlvbkhhbmRsZSogICAgICAgICAgICBmdW5jdGlvbkhhbmRsZShjb25z
dCBjbGFzcyBGdW5jdGlvbiogZnVuY3Rpb24pOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5l
U3RhdGUqICAgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTlM6OkFycmF5KiBmdW5j
dGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGNsYXNzIFZpc2libGVGdW5jdGlvblRh
YmxlKiAgICAgIG5ld1Zpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZpc2libGVGdW5j
dGlvblRhYmxlRGVzY3JpcHRvciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlKiBuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNz
IEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKK307CisK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBp
cGVsaW5lUmVmbGVjdGlvbiogTVRMOjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uOjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6Q29tcHV0ZVBpcGVsaW5lUmVm
bGVjdGlvbj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVS
ZWZsZWN0aW9uKiBNVEw6OkNvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb246OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbj4o
KTsKK30KKworLy8gcHJvcGVydHk6IGFyZ3VtZW50cworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBN
VEw6OkNvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb246OmFyZ3VtZW50cygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChhcmd1bWVudHMpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5M
SU5FIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogTVRMOjpDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRM
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElO
RSBOUzo6U3RyaW5nKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OmxhYmVsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGNvbXB1dGVGdW5jdGlvbgor
X01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
Ojpjb21wdXRlRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbXB1dGVGdW5jdGlv
bikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
cjo6c2V0Q29tcHV0ZUZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlv
bikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0Q29tcHV0ZUZ1bmN0aW9uXyksIGNvbXB1dGVGdW5jdGlvbik7Cit9CisKKy8vIHByb3Bl
cnR5OiB0aHJlYWRHcm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aAorX01U
TF9JTkxJTkUgYm9vbCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnRocmVhZEdyb3Vw
U2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRocmVh
ZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUaHJlYWRHcm91
cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aChib29sIHRocmVhZEdyb3VwU2l6
ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaHJlYWRHcm91cFNpemVJc011
bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aF8pLCB0aHJlYWRHcm91cFNpemVJc011bHRpcGxl
T2ZUaHJlYWRFeGVjdXRpb25XaWR0aCk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUb3RhbFRocmVh
ZHNQZXJUaHJlYWRncm91cAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcjo6bWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4VG90YWxU
aHJlYWRzUGVyVGhyZWFkZ3JvdXAoTlM6OlVJbnRlZ2VyIG1heFRvdGFsVGhyZWFkc1BlclRocmVh
ZGdyb3VwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cF8pLCBtYXhUb3RhbFRocmVh
ZHNQZXJUaHJlYWRncm91cCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGFnZUlucHV0RGVzY3JpcHRv
cgorX01UTF9JTkxJTkUgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogTVRMOjpDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzdGFnZUlucHV0RGVzY3JpcHRvcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3Jp
cHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhZ2VJbnB1dERlc2NyaXB0b3IpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldFN0
YWdlSW5wdXREZXNjcmlwdG9yKGNvbnN0IE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3Iq
IHN0YWdlSW5wdXREZXNjcmlwdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGFnZUlucHV0RGVzY3JpcHRvcl8pLCBzdGFnZUlu
cHV0RGVzY3JpcHRvcik7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJzCitfTVRMX0lOTElORSBN
VEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBNVEw6OkNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3I6OmJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGJ1ZmZlcnMpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRJbmRpcmVjdENvbW1h
bmRCdWZmZXJzCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
cjo6c3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBv
cnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVy
cyhib29sIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdXBwb3J0SW5kaXJlY3RD
b21tYW5kQnVmZmVyc18pLCBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycyk7Cit9CisKKy8v
IHByb3BlcnR5OiBpbnNlcnRMaWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjppbnNlcnRMaWJyYXJpZXMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoaW5zZXJ0TGlicmFyaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRJbnNlcnRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5
KiBpbnNlcnRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEluc2VydExpYnJhcmllc18pLCBpbnNlcnRMaWJyYXJpZXMp
OworfQorCisvLyBwcm9wZXJ0eTogcHJlbG9hZGVkTGlicmFyaWVzCitfTVRMX0lOTElORSBOUzo6
QXJyYXkqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6cHJlbG9hZGVkTGlicmFyaWVz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByZWxvYWRlZExpYnJhcmllcykpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0UHJlbG9hZGVkTGli
cmFyaWVzKGNvbnN0IE5TOjpBcnJheSogcHJlbG9hZGVkTGlicmFyaWVzKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRQcmVsb2FkZWRM
aWJyYXJpZXNfKSwgcHJlbG9hZGVkTGlicmFyaWVzKTsKK30KKworLy8gcHJvcGVydHk6IGJpbmFy
eUFyY2hpdmVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvcjo6YmluYXJ5QXJjaGl2ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYmluYXJ5QXJjaGl2
ZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3I6OnNldEJpbmFyeUFyY2hpdmVzKGNvbnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dEJpbmFyeUFyY2hpdmVzXyksIGJpbmFyeUFyY2hpdmVzKTsKK30KKworLy8gbWV0aG9kOiByZXNl
dAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnJlc2V0
KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocmVzZXQpKTsKK30KKworLy8gcHJvcGVydHk6IGxpbmtlZEZ1bmN0aW9ucworX01UTF9JTkxJ
TkUgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6
bGlua2VkRnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkxpbmtlZEZ1bmN0aW9ucyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGlua2VkRnVu
Y3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yOjpzZXRMaW5rZWRGdW5jdGlvbnMoY29uc3QgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIGxp
bmtlZEZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0TGlua2VkRnVuY3Rpb25zXyksIGxpbmtlZEZ1bmN0aW9ucyk7Cit9
CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zCitfTVRMX0lOTElO
RSBib29sIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c3VwcG9ydEFkZGluZ0JpbmFy
eUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9u
cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
cjo6c2V0U3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdCaW5h
cnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnNfKSwgc3VwcG9ydEFk
ZGluZ0JpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhDYWxsU3RhY2tEZXB0
aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
cjo6bWF4Q2FsbFN0YWNrRGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhDYWxsU3RhY2tE
ZXB0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcjo6c2V0TWF4Q2FsbFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1heENhbGxTdGFja0RlcHRo
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRNYXhDYWxsU3RhY2tEZXB0aF8pLCBtYXhDYWxsU3RhY2tEZXB0aCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb21wdXRlUGlwZWxp
bmVTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkNvbXB1dGVQaXBl
bGluZVN0YXRlOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKwor
Ly8gcHJvcGVydHk6IG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZTo6bWF4VG90YWxUaHJlYWRzUGVy
VGhyZWFkZ3JvdXAoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhUb3RhbFRocmVhZHNQZXJUaHJl
YWRncm91cCkpOworfQorCisvLyBwcm9wZXJ0eTogdGhyZWFkRXhlY3V0aW9uV2lkdGgKK19NVExf
SU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjp0aHJlYWRFeGVj
dXRpb25XaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRocmVhZEV4ZWN1dGlvbldpZHRoKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBzdGF0aWNUaHJlYWRncm91cE1lbW9yeUxlbmd0aAorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OnN0YXRpY1RocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhdGljVGhyZWFkZ3Jv
dXBNZW1vcnlMZW5ndGgpKTsKK30KKworLy8gbWV0aG9kOiBpbWFnZWJsb2NrTWVtb3J5TGVuZ3Ro
Rm9yRGltZW5zaW9uczoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBl
bGluZVN0YXRlOjppbWFnZWJsb2NrTWVtb3J5TGVuZ3RoKE1UTDo6U2l6ZSBpbWFnZWJsb2NrRGlt
ZW5zaW9ucykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW1hZ2VibG9ja01lbW9yeUxlbmd0aEZvckRpbWVuc2lv
bnNfKSwgaW1hZ2VibG9ja0RpbWVuc2lvbnMpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydElu
ZGlyZWN0Q29tbWFuZEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDb21wdXRlUGlwZWxp
bmVTdGF0ZTo6c3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKSk7Cit9CisKKy8vIG1ldGhvZDogZnVuY3Rp
b25IYW5kbGVXaXRoRnVuY3Rpb246CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBN
VEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpmdW5jdGlvbkhhbmRsZShjb25zdCBNVEw6OkZ1bmN0
aW9uKiBmdW5jdGlvbikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1
bmN0aW9uSGFuZGxlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkhhbmRsZVdpdGhG
dW5jdGlvbl8pLCBmdW5jdGlvbik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5l
U3RhdGVXaXRoQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uczplcnJvcjoKK19NVExfSU5MSU5FIE1U
TDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Om5ld0Nv
bXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE5TOjpBcnJheSogZnVuY3Rpb25zLCBOUzo6RXJyb3Iq
KiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQ
aXBlbGluZVN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXyksIGZ1bmN0aW9ucywgZXJy
b3IpOworfQorCisvLyBtZXRob2Q6IG5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0
b3I6CitfTVRMX0lOTElORSBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiBNVEw6OkNvbXB1dGVQ
aXBlbGluZVN0YXRlOjpuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OlZpc2libGVG
dW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0
b3IpOworfQorCisvLyBtZXRob2Q6IG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVz
Y3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogTVRM
OjpDb21wdXRlUGlwZWxpbmVTdGF0ZTo6bmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25z
dCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZVdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvdW50ZXJzLmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb3VudGVycy5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmU2NWMxZDhlYTAxODE2ZGQ3ZGZiNjk0ODFkN2EyOGRiNjQxN2I1MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb3VudGVycy5ocHAK
QEAgLTAsMCArMSwyNTggQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTENvdW50ZXJzLmhwcAorLy8KKy8vIENvcHlyaWdodCAy
MDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRo
aXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBw
IgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5o
cHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAi
TVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CisKK19NVExfQ09OU1QoIE5TOjpF
cnJvckRvbWFpbiwgQ291bnRlckVycm9yRG9tYWluICk7CisKK3VzaW5nIENvbW1vbkNvdW50ZXIg
PSBOUzo6U3RyaW5nKjsKKworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRl
clRpbWVzdGFtcCApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclRl
c3NlbGxhdGlvbklucHV0UGF0Y2hlcyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29t
bW9uQ291bnRlclZlcnRleEludm9jYXRpb25zICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVy
LCBDb21tb25Db3VudGVyUG9zdFRlc3NlbGxhdGlvblZlcnRleEludm9jYXRpb25zICk7CitfTVRM
X0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyQ2xpcHBlckludm9jYXRpb25zICk7
CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyQ2xpcHBlclByaW1pdGl2
ZXNPdXQgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJGcmFnbWVu
dEludm9jYXRpb25zICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVy
RnJhZ21lbnRzUGFzc2VkICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3Vu
dGVyQ29tcHV0ZUtlcm5lbEludm9jYXRpb25zICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVy
LCBDb21tb25Db3VudGVyVG90YWxDeWNsZXMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIs
IENvbW1vbkNvdW50ZXJWZXJ0ZXhDeWNsZXMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIs
IENvbW1vbkNvdW50ZXJUZXNzZWxsYXRpb25DeWNsZXMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNv
dW50ZXIsIENvbW1vbkNvdW50ZXJQb3N0VGVzc2VsbGF0aW9uVmVydGV4Q3ljbGVzICk7CitfTVRM
X0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyRnJhZ21lbnRDeWNsZXMgKTsKK19N
VExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJSZW5kZXJUYXJnZXRXcml0ZUN5
Y2xlcyApOworCit1c2luZyBDb21tb25Db3VudGVyU2V0ID0gTlM6OlN0cmluZyo7CisKK19NVExf
Q09OU1QoIENvbW1vbkNvdW50ZXJTZXQsIENvbW1vbkNvdW50ZXJTZXRUaW1lc3RhbXAgKTsKK19N
VExfQ09OU1QoIENvbW1vbkNvdW50ZXJTZXQsIENvbW1vbkNvdW50ZXJTZXRTdGFnZVV0aWxpemF0
aW9uICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyU2V0LCBDb21tb25Db3VudGVyU2V0U3Rh
dGlzdGljICk7CisKK3N0cnVjdCBDb3VudGVyUmVzdWx0VGltZXN0YW1wCit7CisgICAgdWludDY0
X3QgdGltZXN0YW1wOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IENvdW50ZXJSZXN1bHRTdGFn
ZVV0aWxpemF0aW9uCit7CisgICAgdWludDY0X3QgdG90YWxDeWNsZXM7CisgICAgdWludDY0X3Qg
dmVydGV4Q3ljbGVzOworICAgIHVpbnQ2NF90IHRlc3NlbGxhdGlvbkN5Y2xlczsKKyAgICB1aW50
NjRfdCBwb3N0VGVzc2VsbGF0aW9uVmVydGV4Q3ljbGVzOworICAgIHVpbnQ2NF90IGZyYWdtZW50
Q3ljbGVzOworICAgIHVpbnQ2NF90IHJlbmRlclRhcmdldEN5Y2xlczsKK30gX01UTF9QQUNLRUQ7
CisKK3N0cnVjdCBDb3VudGVyUmVzdWx0U3RhdGlzdGljCit7CisgICAgdWludDY0X3QgdGVzc2Vs
bGF0aW9uSW5wdXRQYXRjaGVzOworICAgIHVpbnQ2NF90IHZlcnRleEludm9jYXRpb25zOworICAg
IHVpbnQ2NF90IHBvc3RUZXNzZWxsYXRpb25WZXJ0ZXhJbnZvY2F0aW9uczsKKyAgICB1aW50NjRf
dCBjbGlwcGVySW52b2NhdGlvbnM7CisgICAgdWludDY0X3QgY2xpcHBlclByaW1pdGl2ZXNPdXQ7
CisgICAgdWludDY0X3QgZnJhZ21lbnRJbnZvY2F0aW9uczsKKyAgICB1aW50NjRfdCBmcmFnbWVu
dHNQYXNzZWQ7CisgICAgdWludDY0X3QgY29tcHV0ZUtlcm5lbEludm9jYXRpb25zOworfSBfTVRM
X1BBQ0tFRDsKKworY2xhc3MgQ291bnRlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q291bnRl
cj4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiBuYW1lKCkgY29uc3Q7Cit9OworCitjbGFz
cyBDb3VudGVyU2V0IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb3VudGVyU2V0PgoreworcHVi
bGljOgorICAgIE5TOjpTdHJpbmcqIG5hbWUoKSBjb25zdDsKKworICAgIE5TOjpBcnJheSogIGNv
dW50ZXJzKCkgY29uc3Q7Cit9OworCitjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRv
ciA6IHB1YmxpYyBOUzo6Q29weWluZzxDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcj4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciogICAg
ICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvdW50ZXJTZXQqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY291bnRlclNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0Q291bnRlclNldChjb25zdCBjbGFzcyBDb3VudGVyU2V0KiBj
b3VudGVyU2V0KTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIE1U
TDo6U3RvcmFnZU1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZU1vZGUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFN0b3JhZ2VNb2RlKE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVDb3VudCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2Ft
cGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KTsKK307CisKK2NsYXNzIENvdW50ZXJT
YW1wbGVCdWZmZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvdW50ZXJTYW1wbGVCdWZmZXI+
Cit7CitwdWJsaWM6CisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBjb25zdDsKKworICAgIE5T
OjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgc2FtcGxlQ291
bnQoKSBjb25zdDsKKworICAgIE5TOjpEYXRhKiAgICAgcmVzb2x2ZUNvdW50ZXJSYW5nZShOUzo6
UmFuZ2UgcmFuZ2UpOworfTsKKworX01UTF9FTlVNKE5TOjpJbnRlZ2VyLCBDb3VudGVyU2FtcGxl
QnVmZmVyRXJyb3IpIHsKKyAgICBDb3VudGVyU2FtcGxlQnVmZmVyRXJyb3JPdXRPZk1lbW9yeSA9
IDAsCisgICAgQ291bnRlclNhbXBsZUJ1ZmZlckVycm9ySW52YWxpZCA9IDEsCit9OworCit9CisK
K19NVExfUFJJVkFURV9ERUZfU1RSKCBOUzo6RXJyb3JEb21haW4sIENvdW50ZXJFcnJvckRvbWFp
biApOworCitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25D
b3VudGVyVGltZXN0YW1wICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3Vu
dGVyLCBDb21tb25Db3VudGVyVGVzc2VsbGF0aW9uSW5wdXRQYXRjaGVzICk7CitfTVRMX1BSSVZB
VEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVmVydGV4SW52b2Nh
dGlvbnMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1v
bkNvdW50ZXJQb3N0VGVzc2VsbGF0aW9uVmVydGV4SW52b2NhdGlvbnMgKTsKK19NVExfUFJJVkFU
RV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJDbGlwcGVySW52b2Nh
dGlvbnMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1v
bkNvdW50ZXJDbGlwcGVyUHJpbWl0aXZlc091dCApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1U
TDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50SW52b2NhdGlvbnMgKTsKK19N
VExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJGcmFn
bWVudHNQYXNzZWQgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIs
IENvbW1vbkNvdW50ZXJDb21wdXRlS2VybmVsSW52b2NhdGlvbnMgKTsKK19NVExfUFJJVkFURV9E
RUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUb3RhbEN5Y2xlcyApOwor
X01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclZl
cnRleEN5Y2xlcyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwg
Q29tbW9uQ291bnRlclRlc3NlbGxhdGlvbkN5Y2xlcyApOworX01UTF9QUklWQVRFX0RFRl9TVFIo
IE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclBvc3RUZXNzZWxsYXRpb25WZXJ0ZXhD
eWNsZXMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1v
bkNvdW50ZXJGcmFnbWVudEN5Y2xlcyApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29t
bW9uQ291bnRlciwgQ29tbW9uQ291bnRlclJlbmRlclRhcmdldFdyaXRlQ3ljbGVzICk7CisKK19N
VExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXJTZXQsIENvbW1vbkNvdW50ZXJT
ZXRUaW1lc3RhbXAgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXJT
ZXQsIENvbW1vbkNvdW50ZXJTZXRTdGFnZVV0aWxpemF0aW9uICk7CitfTVRMX1BSSVZBVEVfREVG
X1NUUiggTVRMOjpDb21tb25Db3VudGVyU2V0LCBDb21tb25Db3VudGVyU2V0U3RhdGlzdGljICk7
CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNvdW50
ZXI6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpT
dHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6
IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q291bnRlclNldDo6bmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTogY291bnRlcnMKK19N
VExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpDb3VudGVyU2V0Ojpjb3VudGVycygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChjb3VudGVycykpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01U
TF9JTkxJTkUgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciogTVRMOjpDb3VudGVy
U2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVf
Q0xTKE1UTENvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvciogTVRM
OjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcj4oKTsKK30K
KworLy8gcHJvcGVydHk6IGNvdW50ZXJTZXQKK19NVExfSU5MSU5FIE1UTDo6Q291bnRlclNldCog
TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6Y291bnRlclNldCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2V0Kj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChjb3VudGVyU2V0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6c2V0Q291bnRlclNldChjb25zdCBNVEw6
OkNvdW50ZXJTZXQqIGNvdW50ZXJTZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvdW50ZXJTZXRfKSwgY291bnRlclNldCk7Cit9
CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb3Vu
dGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxh
YmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVz
Y3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxh
YmVsKTsKK30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VNb2RlCitfTVRMX0lOTElORSBNVEw6OlN0
b3JhZ2VNb2RlIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OnN0b3JhZ2VNb2Rl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JhZ2VN
b2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3JhZ2VNb2RlKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6c2V0U3RvcmFnZU1v
ZGUoTVRMOjpTdG9yYWdlTW9kZSBzdG9yYWdlTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RvcmFnZU1vZGVfKSwgc3RvcmFn
ZU1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjpzYW1wbGVDb3VudCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6c2V0U2FtcGxlQ291bnQoTlM6
OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVDb3VudF8pLCBzYW1wbGVDb3VudCk7Cit9
CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkNv
dW50ZXJTYW1wbGVCdWZmZXI6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkp
OworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6
Q291bnRlclNhbXBsZUJ1ZmZlcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2Vy
IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcjo6c2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzYW1wbGVDb3VudCkpOworfQorCisvLyBtZXRob2Q6IHJlc29sdmVDb3VudGVyUmFuZ2U6
CitfTVRMX0lOTElORSBOUzo6RGF0YSogTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyOjpyZXNvbHZl
Q291bnRlclJhbmdlKE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6RGF0YSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzb2x2ZUNvdW50ZXJS
YW5nZV8pLCByYW5nZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMRGVmaW5lcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMRGVmaW5lcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYyZTdhMmNjOTA0MzJhYjBkMmZk
NDhiOWZlMThjMGQ1MzViOTdjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhwcApAQCAtMCwwICsxLDQxIEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9N
VExEZWZpbmVzLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8K
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21h
IG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNpbmNsdWRlICIuLi9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIF9NVExfRVhQT1JUIF9O
U19FWFBPUlQKKyNkZWZpbmUgX01UTF9FWFRFUk4gX05TX0VYVEVSTgorI2RlZmluZSBfTVRMX0lO
TElORSBfTlNfSU5MSU5FCisjZGVmaW5lIF9NVExfUEFDS0VEIF9OU19QQUNLRUQKKworI2RlZmlu
ZSBfTVRMX0NPTlNUKHR5cGUsIG5hbWUpIF9OU19DT05TVCh0eXBlLCBuYW1lKQorI2RlZmluZSBf
TVRMX0VOVU0odHlwZSwgbmFtZSkgX05TX0VOVU0odHlwZSwgbmFtZSkKKyNkZWZpbmUgX01UTF9P
UFRJT05TKHR5cGUsIG5hbWUpIF9OU19PUFRJT05TKHR5cGUsIG5hbWUpCisKKyNkZWZpbmUgX01U
TF9WQUxJREFURV9TSVpFKG5zLCBuYW1lKSBfTlNfVkFMSURBVEVfU0laRShucywgbmFtZSkKKyNk
ZWZpbmUgX01UTF9WQUxJREFURV9FTlVNKG5zLCBuYW1lKSBfTlNfVkFMSURBVEVfRU5VTShucywg
bmFtZSkKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVwdGhT
dGVuY2lsLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0
aFN0ZW5jaWwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNzc0ZGNlYzAxZTg1OWExMDAxZGYzOTJkYjMzYmJi
ZTY4MjkxMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMRGVwdGhTdGVuY2lsLmhwcApAQCAtMCwwICsxLDI2OSBAQAorLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRGVw
dGhTdGVuY2lsLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8K
Ky8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8K
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJy
aWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRGVwdGhTdGVuY2lsLmhwcCIKKwor
bmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ29tcGFyZUZ1bmN0aW9u
KSB7CisgICAgQ29tcGFyZUZ1bmN0aW9uTmV2ZXIgPSAwLAorICAgIENvbXBhcmVGdW5jdGlvbkxl
c3MgPSAxLAorICAgIENvbXBhcmVGdW5jdGlvbkVxdWFsID0gMiwKKyAgICBDb21wYXJlRnVuY3Rp
b25MZXNzRXF1YWwgPSAzLAorICAgIENvbXBhcmVGdW5jdGlvbkdyZWF0ZXIgPSA0LAorICAgIENv
bXBhcmVGdW5jdGlvbk5vdEVxdWFsID0gNSwKKyAgICBDb21wYXJlRnVuY3Rpb25HcmVhdGVyRXF1
YWwgPSA2LAorICAgIENvbXBhcmVGdW5jdGlvbkFsd2F5cyA9IDcsCit9OworCitfTVRMX0VOVU0o
TlM6OlVJbnRlZ2VyLCBTdGVuY2lsT3BlcmF0aW9uKSB7CisgICAgU3RlbmNpbE9wZXJhdGlvbktl
ZXAgPSAwLAorICAgIFN0ZW5jaWxPcGVyYXRpb25aZXJvID0gMSwKKyAgICBTdGVuY2lsT3BlcmF0
aW9uUmVwbGFjZSA9IDIsCisgICAgU3RlbmNpbE9wZXJhdGlvbkluY3JlbWVudENsYW1wID0gMywK
KyAgICBTdGVuY2lsT3BlcmF0aW9uRGVjcmVtZW50Q2xhbXAgPSA0LAorICAgIFN0ZW5jaWxPcGVy
YXRpb25JbnZlcnQgPSA1LAorICAgIFN0ZW5jaWxPcGVyYXRpb25JbmNyZW1lbnRXcmFwID0gNiwK
KyAgICBTdGVuY2lsT3BlcmF0aW9uRGVjcmVtZW50V3JhcCA9IDcsCit9OworCitjbGFzcyBTdGVu
Y2lsRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxTdGVuY2lsRGVzY3JpcHRvcj4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgU3RlbmNpbERlc2NyaXB0b3IqIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBTdGVuY2lsRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6
Q29tcGFyZUZ1bmN0aW9uICAgICAgICAgICAgc3RlbmNpbENvbXBhcmVGdW5jdGlvbigpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbENvbXBhcmVG
dW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlvbiBzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uKTsKKwor
ICAgIE1UTDo6U3RlbmNpbE9wZXJhdGlvbiAgICAgICAgICAgc3RlbmNpbEZhaWx1cmVPcGVyYXRp
b24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZW5j
aWxGYWlsdXJlT3BlcmF0aW9uKE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBzdGVuY2lsRmFpbHVyZU9w
ZXJhdGlvbik7CisKKyAgICBNVEw6OlN0ZW5jaWxPcGVyYXRpb24gICAgICAgICAgIGRlcHRoRmFp
bHVyZU9wZXJhdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0RGVwdGhGYWlsdXJlT3BlcmF0aW9uKE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBkZXB0aEZh
aWx1cmVPcGVyYXRpb24pOworCisgICAgTVRMOjpTdGVuY2lsT3BlcmF0aW9uICAgICAgICAgICBk
ZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXREZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKE1UTDo6U3RlbmNpbE9w
ZXJhdGlvbiBkZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKTsKKworICAgIHVpbnQzMl90ICAgICAg
ICAgICAgICAgICAgICAgICAgcmVhZE1hc2soKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFJlYWRNYXNrKHVpbnQzMl90IHJlYWRNYXNrKTsKKworICAgIHVp
bnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVNYXNrKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRXcml0ZU1hc2sodWludDMyX3Qgd3JpdGVN
YXNrKTsKK307CisKK2NsYXNzIERlcHRoU3RlbmNpbERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNv
cHlpbmc8RGVwdGhTdGVuY2lsRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xh
c3MgRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIERlcHRoU3Rl
bmNpbERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkNvbXBhcmVGdW5jdGlv
biAgICAgICAgICAgICAgICAgZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVwdGhDb21wYXJlRnVuY3Rpb24o
TVRMOjpDb21wYXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlRnVuY3Rpb24pOworCisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoV3JpdGVFbmFibGVkKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoV3JpdGVF
bmFibGVkKGJvb2wgZGVwdGhXcml0ZUVuYWJsZWQpOworCisgICAgY2xhc3MgU3RlbmNpbERlc2Ny
aXB0b3IqICAgICAgICAgICAgIGZyb250RmFjZVN0ZW5jaWwoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnJvbnRGYWNlU3RlbmNpbChjb25zdCBj
bGFzcyBTdGVuY2lsRGVzY3JpcHRvciogZnJvbnRGYWNlU3RlbmNpbCk7CisKKyAgICBjbGFzcyBT
dGVuY2lsRGVzY3JpcHRvciogICAgICAgICAgICAgYmFja0ZhY2VTdGVuY2lsKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJhY2tGYWNlU3RlbmNp
bChjb25zdCBjbGFzcyBTdGVuY2lsRGVzY3JpcHRvciogYmFja0ZhY2VTdGVuY2lsKTsKKworICAg
IE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6
U3RyaW5nKiBsYWJlbCk7Cit9OworCitjbGFzcyBEZXB0aFN0ZW5jaWxTdGF0ZSA6IHB1YmxpYyBO
Uzo6UmVmZXJlbmNpbmc8RGVwdGhTdGVuY2lsU3RhdGU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0
cmluZyogICBsYWJlbCgpIGNvbnN0OworCisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBjb25z
dDsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
U3RlbmNpbERlc2NyaXB0b3IqIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTdGVuY2lsRGVzY3JpcHRvcj4oX01UTF9Q
UklWQVRFX0NMUyhNVExTdGVuY2lsRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6U3RlbmNpbERlc2NyaXB0b3IqIE1UTDo6U3RlbmNpbERlc2NyaXB0
b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U3RlbmNpbERl
c2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uCitf
TVRMX0lOTElORSBNVEw6OkNvbXBhcmVGdW5jdGlvbiBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpz
dGVuY2lsQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkNvbXBhcmVGdW5jdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVu
Y2lsQ29tcGFyZUZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGVuY2ls
RGVzY3JpcHRvcjo6c2V0U3RlbmNpbENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlv
biBzdGVuY2lsQ29tcGFyZUZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsQ29tcGFyZUZ1bmN0aW9uXyksIHN0
ZW5jaWxDb21wYXJlRnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogc3RlbmNpbEZhaWx1cmVP
cGVyYXRpb24KK19NVExfSU5MSU5FIE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBNVEw6OlN0ZW5jaWxE
ZXNjcmlwdG9yOjpzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdGVuY2lsT3BlcmF0aW9uPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6c2V0U3RlbmNpbEZhaWx1cmVPcGVyYXRpb24oTVRM
OjpTdGVuY2lsT3BlcmF0aW9uIHN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsRmFp
bHVyZU9wZXJhdGlvbl8pLCBzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbik7Cit9CisKKy8vIHByb3Bl
cnR5OiBkZXB0aEZhaWx1cmVPcGVyYXRpb24KK19NVExfSU5MSU5FIE1UTDo6U3RlbmNpbE9wZXJh
dGlvbiBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpkZXB0aEZhaWx1cmVPcGVyYXRpb24oKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RlbmNpbE9wZXJhdGlv
bj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXB0aEZhaWx1cmVPcGVyYXRpb24pKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0aEZhaWx1cmVP
cGVyYXRpb24oTVRMOjpTdGVuY2lsT3BlcmF0aW9uIGRlcHRoRmFpbHVyZU9wZXJhdGlvbikKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RGVwdGhGYWlsdXJlT3BlcmF0aW9uXyksIGRlcHRoRmFpbHVyZU9wZXJhdGlvbik7Cit9CisKKy8v
IHByb3BlcnR5OiBkZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uCitfTVRMX0lOTElORSBNVEw6OlN0
ZW5jaWxPcGVyYXRpb24gTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhTdGVuY2lsUGFzc09w
ZXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpT
dGVuY2lsT3BlcmF0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRoU3RlbmNpbFBhc3NP
cGVyYXRpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9y
OjpzZXREZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBkZXB0
aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uXyksIGRl
cHRoU3RlbmNpbFBhc3NPcGVyYXRpb24pOworfQorCisvLyBwcm9wZXJ0eTogcmVhZE1hc2sKK19N
VExfSU5MSU5FIHVpbnQzMl90IE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnJlYWRNYXNrKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50MzJfdD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChyZWFkTWFzaykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3Rl
bmNpbERlc2NyaXB0b3I6OnNldFJlYWRNYXNrKHVpbnQzMl90IHJlYWRNYXNrKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZWFkTWFz
a18pLCByZWFkTWFzayk7Cit9CisKKy8vIHByb3BlcnR5OiB3cml0ZU1hc2sKK19NVExfSU5MSU5F
IHVpbnQzMl90IE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OndyaXRlTWFzaygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDMyX3Q+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwod3JpdGVNYXNrKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGVuY2lsRGVz
Y3JpcHRvcjo6c2V0V3JpdGVNYXNrKHVpbnQzMl90IHdyaXRlTWFzaykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0V3JpdGVNYXNrXyks
IHdyaXRlTWFzayk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBN
VEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3IqIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6
YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkRlcHRoU3RlbmNp
bERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvcikp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RGVwdGhTdGVuY2lsRGVz
Y3JpcHRvciogTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBkZXB0aENvbXBhcmVGdW5jdGlvbgorX01UTF9JTkxJTkUgTVRMOjpDb21w
YXJlRnVuY3Rpb24gTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpkZXB0aENvbXBhcmVGdW5j
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21w
YXJlRnVuY3Rpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhDb21wYXJlRnVuY3Rpb24p
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNl
dERlcHRoQ29tcGFyZUZ1bmN0aW9uKE1UTDo6Q29tcGFyZUZ1bmN0aW9uIGRlcHRoQ29tcGFyZUZ1
bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXREZXB0aENvbXBhcmVGdW5jdGlvbl8pLCBkZXB0aENvbXBhcmVGdW5jdGlvbik7
Cit9CisKKy8vIHByb3BlcnR5OiBkZXB0aFdyaXRlRW5hYmxlZAorX01UTF9JTkxJTkUgYm9vbCBN
VEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoV3JpdGVFbmFibGVkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGlzRGVwdGhXcml0ZUVuYWJsZWQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRl
cHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRoV3JpdGVFbmFibGVkKGJvb2wgZGVwdGhXcml0
ZUVuYWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldERlcHRoV3JpdGVFbmFibGVkXyksIGRlcHRoV3JpdGVFbmFibGVkKTsKK30K
KworLy8gcHJvcGVydHk6IGZyb250RmFjZVN0ZW5jaWwKK19NVExfSU5MSU5FIE1UTDo6U3RlbmNp
bERlc2NyaXB0b3IqIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZnJvbnRGYWNlU3RlbmNp
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdGVuY2ls
RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnJvbnRGYWNlU3RlbmNpbCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RnJv
bnRGYWNlU3RlbmNpbChjb25zdCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yKiBmcm9udEZhY2VTdGVu
Y2lsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRGcm9udEZhY2VTdGVuY2lsXyksIGZyb250RmFjZVN0ZW5jaWwpOworfQorCisvLyBw
cm9wZXJ0eTogYmFja0ZhY2VTdGVuY2lsCitfTVRMX0lOTElORSBNVEw6OlN0ZW5jaWxEZXNjcmlw
dG9yKiBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmJhY2tGYWNlU3RlbmNpbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdGVuY2lsRGVzY3JpcHRv
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYmFja0ZhY2VTdGVuY2lsKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRCYWNrRmFjZVN0ZW5j
aWwoY29uc3QgTVRMOjpTdGVuY2lsRGVzY3JpcHRvciogYmFja0ZhY2VTdGVuY2lsKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCYWNr
RmFjZVN0ZW5jaWxfKSwgYmFja0ZhY2VTdGVuY2lsKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVs
CitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6Omxh
YmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5n
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyog
bGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRM
X0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkRlcHRoU3RlbmNpbFN0YXRlOjpsYWJlbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9J
TkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6RGVwdGhTdGVuY2lsU3RhdGU6OmRldmljZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERldmljZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMRGV2aWNlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2QwZDc3NjRmOTZk
MjQ2MTA0MzU2NjMwNWE4MGFjN2JlZWU5NjZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERldmljZS5ocHAKQEAgLTAsMCArMSwxMjU0
IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBNZXRhbC9NVExEZXZpY2UuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJ
bmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRM
SGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExBcmd1bWVudC5ocHAi
CisjaW5jbHVkZSAiTVRMRGV2aWNlLmhwcCIKKyNpbmNsdWRlICJNVExQaXhlbEZvcm1hdC5ocHAi
CisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBwIgor
I2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlIDxJT1N1cmZhY2UvSU9TdXJmYWNlUmVm
Lmg+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgRmVhdHVyZVNldCkgeworICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWls
eTFfdjEgPSAwLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTJfdjEgPSAxLAorICAgIEZl
YXR1cmVTZXRfaU9TX0dQVUZhbWlseTFfdjIgPSAyLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZh
bWlseTJfdjIgPSAzLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTNfdjEgPSA0LAorICAg
IEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTFfdjMgPSA1LAorICAgIEZlYXR1cmVTZXRfaU9TX0dQ
VUZhbWlseTJfdjMgPSA2LAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTNfdjIgPSA3LAor
ICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTFfdjQgPSA4LAorICAgIEZlYXR1cmVTZXRfaU9T
X0dQVUZhbWlseTJfdjQgPSA5LAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTNfdjMgPSAx
MCwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHk0X3YxID0gMTEsCisgICAgRmVhdHVyZVNl
dF9pT1NfR1BVRmFtaWx5MV92NSA9IDEyLAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZhbWlseTJf
djUgPSAxMywKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkzX3Y0ID0gMTQsCisgICAgRmVh
dHVyZVNldF9pT1NfR1BVRmFtaWx5NF92MiA9IDE1LAorICAgIEZlYXR1cmVTZXRfaU9TX0dQVUZh
bWlseTVfdjEgPSAxNiwKKyAgICBGZWF0dXJlU2V0X21hY09TX0dQVUZhbWlseTFfdjEgPSAxMDAw
MCwKKyAgICBGZWF0dXJlU2V0X09TWF9HUFVGYW1pbHkxX3YxID0gMTAwMDAsCisgICAgRmVhdHVy
ZVNldF9tYWNPU19HUFVGYW1pbHkxX3YyID0gMTAwMDEsCisgICAgRmVhdHVyZVNldF9PU1hfR1BV
RmFtaWx5MV92MiA9IDEwMDAxLAorICAgIEZlYXR1cmVTZXRfT1NYX1JlYWRXcml0ZVRleHR1cmVU
aWVyMiA9IDEwMDAyLAorICAgIEZlYXR1cmVTZXRfbWFjT1NfUmVhZFdyaXRlVGV4dHVyZVRpZXIy
ID0gMTAwMDIsCisgICAgRmVhdHVyZVNldF9tYWNPU19HUFVGYW1pbHkxX3YzID0gMTAwMDMsCisg
ICAgRmVhdHVyZVNldF9tYWNPU19HUFVGYW1pbHkxX3Y0ID0gMTAwMDQsCisgICAgRmVhdHVyZVNl
dF9tYWNPU19HUFVGYW1pbHkyX3YxID0gMTAwMDUsCisgICAgRmVhdHVyZVNldF93YXRjaE9TX0dQ
VUZhbWlseTFfdjEgPSAyMDAwMCwKKyAgICBGZWF0dXJlU2V0X1dhdGNoT1NfR1BVRmFtaWx5MV92
MSA9IDIwMDAwLAorICAgIEZlYXR1cmVTZXRfd2F0Y2hPU19HUFVGYW1pbHkyX3YxID0gMjAwMDEs
CisgICAgRmVhdHVyZVNldF9XYXRjaE9TX0dQVUZhbWlseTJfdjEgPSAyMDAwMSwKKyAgICBGZWF0
dXJlU2V0X3R2T1NfR1BVRmFtaWx5MV92MSA9IDMwMDAwLAorICAgIEZlYXR1cmVTZXRfVFZPU19H
UFVGYW1pbHkxX3YxID0gMzAwMDAsCisgICAgRmVhdHVyZVNldF90dk9TX0dQVUZhbWlseTFfdjIg
PSAzMDAwMSwKKyAgICBGZWF0dXJlU2V0X3R2T1NfR1BVRmFtaWx5MV92MyA9IDMwMDAyLAorICAg
IEZlYXR1cmVTZXRfdHZPU19HUFVGYW1pbHkyX3YxID0gMzAwMDMsCisgICAgRmVhdHVyZVNldF90
dk9TX0dQVUZhbWlseTFfdjQgPSAzMDAwNCwKKyAgICBGZWF0dXJlU2V0X3R2T1NfR1BVRmFtaWx5
Ml92MiA9IDMwMDA1LAorfTsKKworX01UTF9FTlVNKE5TOjpJbnRlZ2VyLCBHUFVGYW1pbHkpIHsK
KyAgICBHUFVGYW1pbHlBcHBsZTEgPSAxMDAxLAorICAgIEdQVUZhbWlseUFwcGxlMiA9IDEwMDIs
CisgICAgR1BVRmFtaWx5QXBwbGUzID0gMTAwMywKKyAgICBHUFVGYW1pbHlBcHBsZTQgPSAxMDA0
LAorICAgIEdQVUZhbWlseUFwcGxlNSA9IDEwMDUsCisgICAgR1BVRmFtaWx5QXBwbGU2ID0gMTAw
NiwKKyAgICBHUFVGYW1pbHlBcHBsZTcgPSAxMDA3LAorICAgIEdQVUZhbWlseUFwcGxlOCA9IDEw
MDgsCisgICAgR1BVRmFtaWx5TWFjMSA9IDIwMDEsCisgICAgR1BVRmFtaWx5TWFjMiA9IDIwMDIs
CisgICAgR1BVRmFtaWx5Q29tbW9uMSA9IDMwMDEsCisgICAgR1BVRmFtaWx5Q29tbW9uMiA9IDMw
MDIsCisgICAgR1BVRmFtaWx5Q29tbW9uMyA9IDMwMDMsCisgICAgR1BVRmFtaWx5TWFjQ2F0YWx5
c3QxID0gNDAwMSwKKyAgICBHUFVGYW1pbHlNYWNDYXRhbHlzdDIgPSA0MDAyLAorfTsKKworX01U
TF9FTlVNKE5TOjpVSW50ZWdlciwgRGV2aWNlTG9jYXRpb24pIHsKKyAgICBEZXZpY2VMb2NhdGlv
bkJ1aWx0SW4gPSAwLAorICAgIERldmljZUxvY2F0aW9uU2xvdCA9IDEsCisgICAgRGV2aWNlTG9j
YXRpb25FeHRlcm5hbCA9IDIsCisgICAgRGV2aWNlTG9jYXRpb25VbnNwZWNpZmllZCA9IE5TOjpV
SW50ZWdlck1heCwKK307CisKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIFBpcGVsaW5lT3B0
aW9uKSB7CisgICAgUGlwZWxpbmVPcHRpb25Ob25lID0gMCwKKyAgICBQaXBlbGluZU9wdGlvbkFy
Z3VtZW50SW5mbyA9IDEsCisgICAgUGlwZWxpbmVPcHRpb25CdWZmZXJUeXBlSW5mbyA9IDIsCisg
ICAgUGlwZWxpbmVPcHRpb25GYWlsT25CaW5hcnlBcmNoaXZlTWlzcyA9IDQsCit9OworCitfTVRM
X0VOVU0oTlM6OlVJbnRlZ2VyLCBSZWFkV3JpdGVUZXh0dXJlVGllcikgeworICAgIFJlYWRXcml0
ZVRleHR1cmVUaWVyTm9uZSA9IDAsCisgICAgUmVhZFdyaXRlVGV4dHVyZVRpZXIxID0gMSwKKyAg
ICBSZWFkV3JpdGVUZXh0dXJlVGllcjIgPSAyLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdl
ciwgQXJndW1lbnRCdWZmZXJzVGllcikgeworICAgIEFyZ3VtZW50QnVmZmVyc1RpZXIxID0gMCwK
KyAgICBBcmd1bWVudEJ1ZmZlcnNUaWVyMiA9IDEsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRl
Z2VyLCBTcGFyc2VUZXh0dXJlUmVnaW9uQWxpZ25tZW50TW9kZSkgeworICAgIFNwYXJzZVRleHR1
cmVSZWdpb25BbGlnbm1lbnRNb2RlT3V0d2FyZCA9IDAsCisgICAgU3BhcnNlVGV4dHVyZVJlZ2lv
bkFsaWdubWVudE1vZGVJbndhcmQgPSAxLAorfTsKKworc3RydWN0IEFjY2VsZXJhdGlvblN0cnVj
dHVyZVNpemVzCit7CisgICAgTlM6OlVJbnRlZ2VyIGFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemU7
CisgICAgTlM6OlVJbnRlZ2VyIGJ1aWxkU2NyYXRjaEJ1ZmZlclNpemU7CisgICAgTlM6OlVJbnRl
Z2VyIHJlZml0U2NyYXRjaEJ1ZmZlclNpemU7Cit9IF9NVExfUEFDS0VEOworCitfTVRMX0VOVU0o
TlM6OlVJbnRlZ2VyLCBDb3VudGVyU2FtcGxpbmdQb2ludCkgeworICAgIENvdW50ZXJTYW1wbGlu
Z1BvaW50QXRTdGFnZUJvdW5kYXJ5ID0gMCwKKyAgICBDb3VudGVyU2FtcGxpbmdQb2ludEF0RHJh
d0JvdW5kYXJ5ID0gMSwKKyAgICBDb3VudGVyU2FtcGxpbmdQb2ludEF0RGlzcGF0Y2hCb3VuZGFy
eSA9IDIsCisgICAgQ291bnRlclNhbXBsaW5nUG9pbnRBdFRpbGVEaXNwYXRjaEJvdW5kYXJ5ID0g
MywKKyAgICBDb3VudGVyU2FtcGxpbmdQb2ludEF0QmxpdEJvdW5kYXJ5ID0gNCwKK307CisKK3N0
cnVjdCBTaXplQW5kQWxpZ24KK3sKKyAgICBOUzo6VUludGVnZXIgc2l6ZTsKKyAgICBOUzo6VUlu
dGVnZXIgYWxpZ247Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBBcmd1bWVudERlc2NyaXB0b3Ig
OiBwdWJsaWMgTlM6OkNvcHlpbmc8QXJndW1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgorICAg
IHN0YXRpYyBjbGFzcyBBcmd1bWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBB
cmd1bWVudERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xhc3MgQXJn
dW1lbnREZXNjcmlwdG9yKiBhcmd1bWVudERlc2NyaXB0b3IoKTsKKworICAgIE1UTDo6RGF0YVR5
cGUgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0RGF0YVR5cGUoTVRMOjpEYXRhVHlwZSBkYXRhVHlwZSk7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBpbmRleCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluZGV4KE5TOjpVSW50ZWdl
ciBpbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBhcnJheUxl
bmd0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFy
cmF5TGVuZ3RoKE5TOjpVSW50ZWdlciBhcnJheUxlbmd0aCk7CisKKyAgICBNVEw6OkFyZ3VtZW50
QWNjZXNzICAgICAgICAgICAgICBhY2Nlc3MoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRBY2Nlc3MoTVRMOjpBcmd1bWVudEFjY2VzcyBhY2Nlc3MpOwor
CisgICAgTVRMOjpUZXh0dXJlVHlwZSAgICAgICAgICAgICAgICAgdGV4dHVyZVR5cGUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXh0dXJlVHlwZShN
VEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0YW50QmxvY2tBbGlnbm1lbnQoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudEJsb2NrQWxpZ25tZW50KE5TOjpV
SW50ZWdlciBjb25zdGFudEJsb2NrQWxpZ25tZW50KTsKK307CisKK3VzaW5nIERldmljZU5vdGlm
aWNhdGlvbk5hbWUgPSBOUzo6U3RyaW5nKjsKKworX01UTF9DT05TVChEZXZpY2VOb3RpZmljYXRp
b25OYW1lLCBEZXZpY2VXYXNBZGRlZE5vdGlmaWNhdGlvbik7CisKK19NVExfQ09OU1QoRGV2aWNl
Tm90aWZpY2F0aW9uTmFtZSwgRGV2aWNlUmVtb3ZhbFJlcXVlc3RlZE5vdGlmaWNhdGlvbik7CisK
K19NVExfQ09OU1QoRGV2aWNlTm90aWZpY2F0aW9uTmFtZSwgRGV2aWNlV2FzUmVtb3ZlZE5vdGlm
aWNhdGlvbik7CisKK3VzaW5nIERldmljZU5vdGlmaWNhdGlvbkhhbmRsZXJCbG9jayA9IHZvaWQg
KF4pKGNsYXNzIERldmljZSogcERldmljZSwgRGV2aWNlTm90aWZpY2F0aW9uTmFtZSBub3RpZnlO
YW1lKTsKKwordXNpbmcgRGV2aWNlTm90aWZpY2F0aW9uSGFuZGxlckZ1bmN0aW9uID0gc3RkOjpm
dW5jdGlvbjx2b2lkKGNsYXNzIERldmljZSogcERldmljZSwgRGV2aWNlTm90aWZpY2F0aW9uTmFt
ZSBub3RpZnlOYW1lKT47CisKK3VzaW5nIEF1dG9yZWxlYXNlZENvbXB1dGVQaXBlbGluZVJlZmxl
Y3Rpb24gPSBjbGFzcyBDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKjsKKwordXNpbmcgQXV0b3Jl
bGVhc2VkUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uID0gY2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZs
ZWN0aW9uKjsKKwordXNpbmcgTmV3TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyID0gdm9pZCAoXiko
Y2xhc3MgTGlicmFyeSosIE5TOjpFcnJvciopOworCit1c2luZyBOZXdMaWJyYXJ5Q29tcGxldGlv
bkhhbmRsZXJGdW5jdGlvbiA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjbGFzcyBMaWJyYXJ5KiwgTlM6
OkVycm9yKik+OworCit1c2luZyBOZXdSZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRs
ZXIgPSB2b2lkICheKShjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiwgTlM6OkVycm9yKik7CisK
K3VzaW5nIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uID0g
c3RkOjpmdW5jdGlvbjx2b2lkKGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqLCBOUzo6RXJyb3Iq
KT47CisKK3VzaW5nIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRp
b25IYW5kbGVyID0gdm9pZCAoXikoY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSosIGNsYXNzIFJl
bmRlclBpcGVsaW5lUmVmbGVjdGlvbiosIE5TOjpFcnJvciopOworCit1c2luZyBOZXdSZW5kZXJQ
aXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uID0gc3Rk
OjpmdW5jdGlvbjx2b2lkKGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqLCBjbGFzcyBSZW5kZXJQ
aXBlbGluZVJlZmxlY3Rpb24qLCBOUzo6RXJyb3IqKT47CisKK3VzaW5nIE5ld0NvbXB1dGVQaXBl
bGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXIgPSB2b2lkICheKShjbGFzcyBDb21wdXRlUGlwZWxp
bmVTdGF0ZSosIE5TOjpFcnJvciopOworCit1c2luZyBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZUNv
bXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgQ29tcHV0
ZVBpcGVsaW5lU3RhdGUqLCBOUzo6RXJyb3IqKT47CisKK3VzaW5nIE5ld0NvbXB1dGVQaXBlbGlu
ZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciA9IHZvaWQgKF4pKGNsYXNzIENv
bXB1dGVQaXBlbGluZVN0YXRlKiwgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiosIE5T
OjpFcnJvciopOworCit1c2luZyBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9u
Q29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjbGFzcyBDb21w
dXRlUGlwZWxpbmVTdGF0ZSosIGNsYXNzIENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qLCBOUzo6
RXJyb3IqKT47CisKK3VzaW5nIFRpbWVzdGFtcCA9IHN0ZDo6dWludDY0X3Q7CisKK01UTDo6RGV2
aWNlKiBDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCk7CisKK05TOjpBcnJheSogICBDb3B5QWxs
RGV2aWNlcygpOworCitOUzo6QXJyYXkqICAgQ29weUFsbERldmljZXNXaXRoT2JzZXJ2ZXIoTlM6
Ok9iamVjdCoqIHBPdXRPYnNlcnZlciwgRGV2aWNlTm90aWZpY2F0aW9uSGFuZGxlckJsb2NrIGhh
bmRsZXIpOworCitOUzo6QXJyYXkqICAgQ29weUFsbERldmljZXNXaXRoT2JzZXJ2ZXIoTlM6Ok9i
amVjdCoqIHBPdXRPYnNlcnZlciwgY29uc3QgRGV2aWNlTm90aWZpY2F0aW9uSGFuZGxlckZ1bmN0
aW9uJiBoYW5kbGVyKTsKKwordm9pZCAgICAgICAgIFJlbW92ZURldmljZU9ic2VydmVyKGNvbnN0
IE5TOjpPYmplY3QqIHBPYnNlcnZlcik7CisKK2NsYXNzIERldmljZSA6IHB1YmxpYyBOUzo6UmVm
ZXJlbmNpbmc8RGV2aWNlPgoreworcHVibGljOgorICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3TGlicmFyeShjb25zdCBOUzo6U3RyaW5nKiBwU291cmNlLCBjb25zdCBjbGFz
cyBDb21waWxlT3B0aW9ucyogcE9wdGlvbnMsIGNvbnN0IE5ld0xpYnJhcnlDb21wbGV0aW9uSGFu
ZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3QgY2xhc3MgU3RpdGNoZWRMaWJyYXJ5RGVz
Y3JpcHRvciogcERlc2NyaXB0b3IsIGNvbnN0IE1UTDo6TmV3TGlicmFyeUNvbXBsZXRpb25IYW5k
bGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBOZXdSZW5kZXJQaXBlbGluZVN0
YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNv
bnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIFBpcGVsaW5l
T3B0aW9uIG9wdGlvbnMsIGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlv
bkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25z
dCBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgUGlwZWxp
bmVPcHRpb24gb3B0aW9ucywgY29uc3QgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0
aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShj
b25zdCBjbGFzcyBGdW5jdGlvbiogcEZ1bmN0aW9uLCBjb25zdCBOZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUo
Y29uc3QgY2xhc3MgRnVuY3Rpb24qIHBGdW5jdGlvbiwgUGlwZWxpbmVPcHRpb24gb3B0aW9ucywg
Y29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5k
bGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIFBpcGVsaW5lT3B0aW9uIG9wdGlvbnMs
IGNvbnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFu
ZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBib29sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlzSGVhZGxlc3MoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworCisgICAgdWludDY0X3QgICAgICAgICAg
ICAgICAgICAgICAgICByZWdpc3RyeUlEKCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemUgICAgICAg
ICAgICAgICAgICAgICAgIG1heFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0OworCisgICAg
Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb3dQb3dlcigpIGNvbnN0OworCisgICAg
Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkbGVzcygpIGNvbnN0OworCisgICAg
Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmFibGUoKSBjb25zdDsKKworICAg
IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVW5pZmllZE1lbW9yeSgpIGNvbnN0
OworCisgICAgdWludDY0X3QgICAgICAgICAgICAgICAgICAgICAgICByZWNvbW1lbmRlZE1heFdv
cmtpbmdTZXRTaXplKCkgY29uc3Q7CisKKyAgICBNVEw6OkRldmljZUxvY2F0aW9uICAgICAgICAg
ICAgIGxvY2F0aW9uKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uTnVtYmVyKCkgY29uc3Q7CisKKyAgICB1aW50NjRfdCAgICAgICAgICAgICAg
ICAgICAgICAgIG1heFRyYW5zZmVyUmF0ZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXB0aDI0U3RlbmNpbDhQaXhlbEZvcm1hdFN1cHBvcnRlZCgpIGNv
bnN0OworCisgICAgTVRMOjpSZWFkV3JpdGVUZXh0dXJlVGllciAgICAgICByZWFkV3JpdGVUZXh0
dXJlU3VwcG9ydCgpIGNvbnN0OworCisgICAgTVRMOjpBcmd1bWVudEJ1ZmZlcnNUaWVyICAgICAg
ICBhcmd1bWVudEJ1ZmZlcnNTdXBwb3J0KCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJhc3Rlck9yZGVyR3JvdXBzU3VwcG9ydGVkKCkgY29uc3Q7CisKKyAg
ICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzMzJCaXRGbG9hdEZpbHRl
cmluZygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBw
b3J0czMyQml0TVNBQSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uKCkgY29uc3Q7
CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUHVsbE1vZGVs
SW50ZXJwb2xhdGlvbigpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBvcnRlZCgpIGNvbnN0OworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1NoYWRlckJhcnljZW50cmljQ29vcmRpbmF0
ZXMoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgY3VycmVu
dEFsbG9jYXRlZFNpemUoKSBjb25zdDsKKworICAgIGNsYXNzIENvbW1hbmRRdWV1ZSogICAgICAg
ICAgICAgbmV3Q29tbWFuZFF1ZXVlKCk7CisKKyAgICBjbGFzcyBDb21tYW5kUXVldWUqICAgICAg
ICAgICAgIG5ld0NvbW1hbmRRdWV1ZShOUzo6VUludGVnZXIgbWF4Q29tbWFuZEJ1ZmZlckNvdW50
KTsKKworICAgIE1UTDo6U2l6ZUFuZEFsaWduICAgICAgICAgICAgICAgaGVhcFRleHR1cmVTaXpl
QW5kQWxpZ24oY29uc3QgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIGRlc2MpOworCisgICAgTVRM
OjpTaXplQW5kQWxpZ24gICAgICAgICAgICAgICBoZWFwQnVmZmVyU2l6ZUFuZEFsaWduKE5TOjpV
SW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpOworCisgICAgY2xh
c3MgSGVhcCogICAgICAgICAgICAgICAgICAgICBuZXdIZWFwKGNvbnN0IGNsYXNzIEhlYXBEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAg
ICAgbmV3QnVmZmVyKE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9w
dGlvbnMpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICBuZXdCdWZmZXIo
Y29uc3Qgdm9pZCogcG9pbnRlciwgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9w
dGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAgIG5l
d0J1ZmZlcihjb25zdCB2b2lkKiBwb2ludGVyLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJl
c291cmNlT3B0aW9ucyBvcHRpb25zLCBjb25zdCB2b2lkICheZGVhbGxvY2F0b3IpKHZvaWQqLCBO
Uzo6VUludGVnZXIpKTsKKworICAgIGNsYXNzIERlcHRoU3RlbmNpbFN0YXRlKiAgICAgICAgbmV3
RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgY2xhc3MgRGVwdGhTdGVuY2lsRGVzY3JpcHRvciogZGVz
Y3JpcHRvcik7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgICAgIG5ld1RleHR1
cmUoY29uc3QgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xh
c3MgVGV4dHVyZSogICAgICAgICAgICAgICAgICBuZXdUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1
cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBJT1N1cmZhY2VSZWYgaW9zdXJmYWNlLCBO
Uzo6VUludGVnZXIgcGxhbmUpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgICAgICAg
ICBuZXdTaGFyZWRUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICAgICAgbmV3U2hhcmVkVGV4
dHVyZShjb25zdCBjbGFzcyBTaGFyZWRUZXh0dXJlSGFuZGxlKiBzaGFyZWRIYW5kbGUpOworCisg
ICAgY2xhc3MgU2FtcGxlclN0YXRlKiAgICAgICAgICAgICBuZXdTYW1wbGVyU3RhdGUoY29uc3Qg
Y2xhc3MgU2FtcGxlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgTGlicmFy
eSogICAgICAgICAgICAgICAgICBuZXdEZWZhdWx0TGlicmFyeSgpOworCisgICAgY2xhc3MgTGli
cmFyeSogICAgICAgICAgICAgICAgICBuZXdEZWZhdWx0TGlicmFyeShjb25zdCBOUzo6QnVuZGxl
KiBidW5kbGUsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGNsYXNzIExpYnJhcnkqICAgICAg
ICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBOUzo6U3RyaW5nKiBmaWxlcGF0aCwgTlM6OkVy
cm9yKiogZXJyb3IpOworCisgICAgY2xhc3MgTGlicmFyeSogICAgICAgICAgICAgICAgICBuZXdM
aWJyYXJ5KGNvbnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgY2xh
c3MgTGlicmFyeSogICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IGRpc3BhdGNoX2Rh
dGFfdCBkYXRhLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAg
ICAgICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogc291cmNlLCBjb25zdCBj
bGFzcyBDb21waWxlT3B0aW9ucyogb3B0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IE5TOjpTdHJp
bmcqIHNvdXJjZSwgY29uc3QgY2xhc3MgQ29tcGlsZU9wdGlvbnMqIG9wdGlvbnMsIGNvbnN0IE1U
TDo6TmV3TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAg
IGNsYXNzIExpYnJhcnkqICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBjbGFzcyBT
dGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7
CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3Qg
Y2xhc3MgU3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgTVRMOjpO
ZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgY2xh
c3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSogICAgICBuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0
IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiog
ZXJyb3IpOworCisgICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSogICAgICBuZXdSZW5kZXJQ
aXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3Jp
cHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6OkF1dG9yZWxlYXNl
ZFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgTlM6OkVycm9yKiogZXJyb3Ip
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZW5kZXJQaXBlbGlu
ZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwg
Y29uc3QgTVRMOjpOZXdSZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxl
dGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciog
ZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6Ok5ld1Jl
bmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyKTsKKworICAgIGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiAgICAgbmV3Q29t
cHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgRnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbiwg
TlM6OkVycm9yKiogZXJyb3IpOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUqICAg
ICBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogY29tcHV0ZUZ1
bmN0aW9uLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6QXV0b3JlbGVh
c2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgTlM6OkVycm9yKiogZXJy
b3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBjb25zdCBN
VEw6Ok5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhh
bmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBNVEw6
OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKTsKKwor
ICAgIGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiAgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUoY29uc3QgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTVRM
OjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6OkF1dG9yZWxlYXNlZENvbXB1dGVQ
aXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUo
Y29uc3QgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTVRMOjpQ
aXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6Ok5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
V2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAg
ICBjbGFzcyBGZW5jZSogICAgICAgICAgICAgICAgICAgIG5ld0ZlbmNlKCk7CisKKyAgICBib29s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRmVhdHVyZVNldChNVEw6OkZlYXR1
cmVTZXQgZmVhdHVyZVNldCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN1cHBvcnRzRmFtaWx5KE1UTDo6R1BVRmFtaWx5IGdwdUZhbWlseSk7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzVGV4dHVyZVNhbXBsZUNvdW50KE5TOjpV
SW50ZWdlciBzYW1wbGVDb3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgIG1pbmltdW1MaW5lYXJUZXh0dXJlQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXQoTVRMOjpQaXhl
bEZvcm1hdCBmb3JtYXQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICBt
aW5pbXVtVGV4dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3Jt
YXQgZm9ybWF0KTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqICAgICAgbmV3UmVu
ZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6QXV0
b3JlbGVhc2VkUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3Iq
KiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlbmRl
clBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciog
ZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6Ok5ld1Jl
bmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWF4VGhy
ZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgbWF4QXJndW1lbnRCdWZmZXJTYW1wbGVyQ291bnQoKSBjb25zdDsKKworICAg
IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRp
b25zU3VwcG9ydGVkKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdldERlZmF1bHRTYW1wbGVQb3NpdGlvbnMoTVRMOjpTYW1wbGVQb3NpdGlvbiogcG9zaXRp
b25zLCBOUzo6VUludGVnZXIgY291bnQpOworCisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyKiAg
ICAgICAgICBuZXdBcmd1bWVudEVuY29kZXIoY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMpOwor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1Jhc3Rlcml6YXRp
b25SYXRlTWFwKE5TOjpVSW50ZWdlciBsYXllckNvdW50KTsKKworICAgIGNsYXNzIFJhc3Rlcml6
YXRpb25SYXRlTWFwKiAgICAgbmV3UmFzdGVyaXphdGlvblJhdGVNYXAoY29uc3QgY2xhc3MgUmFz
dGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNzIElu
ZGlyZWN0Q29tbWFuZEJ1ZmZlciogICAgbmV3SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IGNs
YXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpVSW50
ZWdlciBtYXhDb3VudCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICBjbGFz
cyBFdmVudCogICAgICAgICAgICAgICAgICAgIG5ld0V2ZW50KCk7CisKKyAgICBjbGFzcyBTaGFy
ZWRFdmVudCogICAgICAgICAgICAgIG5ld1NoYXJlZEV2ZW50KCk7CisKKyAgICBjbGFzcyBTaGFy
ZWRFdmVudCogICAgICAgICAgICAgIG5ld1NoYXJlZEV2ZW50KGNvbnN0IGNsYXNzIFNoYXJlZEV2
ZW50SGFuZGxlKiBzaGFyZWRFdmVudEhhbmRsZSk7CisKKyAgICB1aW50NjRfdCAgICAgICAgICAg
ICAgICAgICAgICAgIHBlZXJHcm91cElEKCkgY29uc3Q7CisKKyAgICB1aW50MzJfdCAgICAgICAg
ICAgICAgICAgICAgICAgIHBlZXJJbmRleCgpIGNvbnN0OworCisgICAgdWludDMyX3QgICAgICAg
ICAgICAgICAgICAgICAgICBwZWVyQ291bnQoKSBjb25zdDsKKworICAgIE1UTDo6U2l6ZSAgICAg
ICAgICAgICAgICAgICAgICAgc3BhcnNlVGlsZVNpemUoTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJl
VHlwZSwgTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHNhbXBsZUNv
dW50KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgc3BhcnNlVGlsZVNp
emVJbkJ5dGVzKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnZlcnRTcGFyc2VQaXhlbFJlZ2lvbnMoY29uc3QgTVRMOjpSZWdpb24qIHBpeGVsUmVnaW9u
cywgTVRMOjpSZWdpb24qIHRpbGVSZWdpb25zLCBNVEw6OlNpemUgdGlsZVNpemUsIE1UTDo6U3Bh
cnNlVGV4dHVyZVJlZ2lvbkFsaWdubWVudE1vZGUgbW9kZSwgTlM6OlVJbnRlZ2VyIG51bVJlZ2lv
bnMpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0U3BhcnNl
VGlsZVJlZ2lvbnMoY29uc3QgTVRMOjpSZWdpb24qIHRpbGVSZWdpb25zLCBNVEw6OlJlZ2lvbiog
cGl4ZWxSZWdpb25zLCBNVEw6OlNpemUgdGlsZVNpemUsIE5TOjpVSW50ZWdlciBudW1SZWdpb25z
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWF4QnVmZmVyTGVuZ3Ro
KCkgY29uc3Q7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJT
ZXRzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiAgICAgIG5ld0Nv
dW50ZXJTYW1wbGVCdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0
b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2FtcGxlVGltZXN0YW1wcyhNVEw6OlRpbWVzdGFtcCogY3B1VGlt
ZXN0YW1wLCBNVEw6OlRpbWVzdGFtcCogZ3B1VGltZXN0YW1wKTsKKworICAgIGJvb2wgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNDb3VudGVyU2FtcGxpbmcoTVRMOjpDb3VudGVy
U2FtcGxpbmdQb2ludCBzYW1wbGluZ1BvaW50KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VwcG9ydHNWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQoTlM6OlVJbnRlZ2Vy
IGNvdW50KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNE
eW5hbWljTGlicmFyaWVzKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1cHBvcnRzUmVuZGVyRHluYW1pY0xpYnJhcmllcygpIGNvbnN0OworCisgICAgY2xh
c3MgRHluYW1pY0xpYnJhcnkqICAgICAgICAgICBuZXdEeW5hbWljTGlicmFyeShjb25zdCBjbGFz
cyBMaWJyYXJ5KiBsaWJyYXJ5LCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBEeW5h
bWljTGlicmFyeSogICAgICAgICAgIG5ld0R5bmFtaWNMaWJyYXJ5KGNvbnN0IE5TOjpVUkwqIHVy
bCwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgY2xhc3MgQmluYXJ5QXJjaGl2ZSogICAgICAg
ICAgICBuZXdCaW5hcnlBcmNoaXZlKGNvbnN0IGNsYXNzIEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1cHBvcnRzUmF5dHJhY2luZygpIGNvbnN0OworCisgICAgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplcyBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplcyhjb25z
dCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKwor
ICAgIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogICAgbmV3QWNjZWxlcmF0aW9uU3RydWN0
dXJlKE5TOjpVSW50ZWdlciBzaXplKTsKKworICAgIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVy
ZSogICAgbmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0
cnVjdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnMoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzRnJv
bVJlbmRlcigpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dXBwb3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzUHJpbWl0aXZlTW90aW9uQmx1cigpIGNvbnN0Owor
fTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBcmd1
bWVudERlc2NyaXB0b3IqIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QXJndW1lbnREZXNjcmlwdG9yPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTEFyZ3VtZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yKiBNVEw6OkFyZ3VtZW50RGVzY3Jp
cHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBcmd1bWVu
dERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFyZ3VtZW50RGVzY3JpcHRv
cgorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudERlc2NyaXB0b3IqIE1UTDo6QXJndW1lbnREZXNj
cmlwdG9yOjphcmd1bWVudERlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6QXJndW1lbnREZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExBcmd1
bWVudERlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50RGVzY3JpcHRvcikpOwor
fQorCisvLyBwcm9wZXJ0eTogZGF0YVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRM
OjpBcmd1bWVudERlc2NyaXB0b3I6OmRhdGFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRh
dGFUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6
OnNldERhdGFUeXBlKE1UTDo6RGF0YVR5cGUgZGF0YVR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERhdGFUeXBlXyksIGRhdGFU
eXBlKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OmluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5k
ZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0
SW5kZXgoTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleF8pLCBpbmRleCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBhcnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1l
bnREZXNjcmlwdG9yOjphcnJheUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFycmF5TGVu
Z3RoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OnNl
dEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdlciBhcnJheUxlbmd0aCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QXJyYXlMZW5ndGhfKSwg
YXJyYXlMZW5ndGgpOworfQorCisvLyBwcm9wZXJ0eTogYWNjZXNzCitfTVRMX0lOTElORSBNVEw6
OkFyZ3VtZW50QWNjZXNzIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjphY2Nlc3MoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRBY2Nlc3M+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoYWNjZXNzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBcmd1bWVudERlc2NyaXB0b3I6OnNldEFjY2VzcyhNVEw6OkFyZ3VtZW50QWNjZXNzIGFjY2Vz
cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0QWNjZXNzXyksIGFjY2Vzcyk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlVHlwZQor
X01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlVHlwZSBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6dGV4
dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
VGV4dHVyZVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZVR5cGUpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0VGV4dHVyZVR5cGUo
TVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGV4dHVyZVR5cGVfKSwgdGV4dHVyZVR5
cGUpOworfQorCisvLyBwcm9wZXJ0eTogY29uc3RhbnRCbG9ja0FsaWdubWVudAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjpjb25zdGFudEJsb2NrQWxp
Z25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29uc3RhbnRCbG9ja0FsaWdubWVudCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjpzZXRDb25zdGFu
dEJsb2NrQWxpZ25tZW50KE5TOjpVSW50ZWdlciBjb25zdGFudEJsb2NrQWxpZ25tZW50KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRD
b25zdGFudEJsb2NrQWxpZ25tZW50XyksIGNvbnN0YW50QmxvY2tBbGlnbm1lbnQpOworfQorCisj
aWYgZGVmaW5lZChNVExfUFJJVkFURV9JTVBMRU1FTlRBVElPTikKKworZXh0ZXJuICJDIiBNVEw6
OkRldmljZSogTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOworCitleHRlcm4gIkMiIE5T
OjpBcnJheSogICBNVExDb3B5QWxsRGV2aWNlcygpOworCitleHRlcm4gIkMiIE5TOjpBcnJheSog
ICBNVExDb3B5QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihOUzo6T2JqZWN0KiosIE1UTDo6RGV2aWNl
Tm90aWZpY2F0aW9uSGFuZGxlckJsb2NrKTsKKworZXh0ZXJuICJDIiB2b2lkICAgICAgICAgTVRM
UmVtb3ZlRGV2aWNlT2JzZXJ2ZXIoY29uc3QgTlM6Ok9iamVjdCopOworCisjaW5jbHVkZSA8VGFy
Z2V0Q29uZGl0aW9uYWxzLmg+CisKK01UTDo6RGV2aWNlKiBNVEw6OkNyZWF0ZVN5c3RlbURlZmF1
bHREZXZpY2UoKQoreworICAgIHJldHVybiA6Ok1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2Uo
KTsKK30KKworTlM6OkFycmF5KiBNVEw6OkNvcHlBbGxEZXZpY2VzKCkKK3sKKyNpZiBUQVJHRVRf
T1NfT1NYCisgICAgcmV0dXJuIDo6TVRMQ29weUFsbERldmljZXMoKTsKKyNlbHNlCisgICAgcmV0
dXJuIG51bGxwdHI7CisjZW5kaWYgLy8gVEFSR0VUX09TX09TWAorfQorCitOUzo6QXJyYXkqIE1U
TDo6Q29weUFsbERldmljZXNXaXRoT2JzZXJ2ZXIoTlM6Ok9iamVjdCoqIHBPdXRPYnNlcnZlciwg
RGV2aWNlTm90aWZpY2F0aW9uSGFuZGxlckJsb2NrIGhhbmRsZXIpCit7CisjaWYgVEFSR0VUX09T
X09TWAorICAgIHJldHVybiA6Ok1UTENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKHBPdXRPYnNl
cnZlciwgaGFuZGxlcik7CisjZWxzZQorICAgICh2b2lkKXBPdXRPYnNlcnZlcjsKKyAgICAodm9p
ZCloYW5kbGVyOworCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYgLy8gVEFSR0VUX09TX09T
WAorfQorCitOUzo6QXJyYXkqIE1UTDo6Q29weUFsbERldmljZXNXaXRoT2JzZXJ2ZXIoTlM6Ok9i
amVjdCoqIHBPdXRPYnNlcnZlciwgY29uc3QgRGV2aWNlTm90aWZpY2F0aW9uSGFuZGxlckZ1bmN0
aW9uJiBoYW5kbGVyKQoreworICAgIF9fYmxvY2sgRGV2aWNlTm90aWZpY2F0aW9uSGFuZGxlckZ1
bmN0aW9uIGZ1bmN0aW9uID0gaGFuZGxlcjsKKworICAgIHJldHVybiBDb3B5QWxsRGV2aWNlc1dp
dGhPYnNlcnZlcihwT3V0T2JzZXJ2ZXIsIF4oRGV2aWNlKiBwRGV2aWNlLCBEZXZpY2VOb3RpZmlj
YXRpb25OYW1lIHBOb3RpZmljYXRpb25OYW1lKSB7IGZ1bmN0aW9uKHBEZXZpY2UsIHBOb3RpZmlj
YXRpb25OYW1lKTsgfSk7Cit9CisKK3ZvaWQgTVRMOjpSZW1vdmVEZXZpY2VPYnNlcnZlcihjb25z
dCBOUzo6T2JqZWN0KiBwT2JzZXJ2ZXIpCit7CisjaWYgVEFSR0VUX09TX09TWAorICAgIDo6TVRM
UmVtb3ZlRGV2aWNlT2JzZXJ2ZXIocE9ic2VydmVyKTsKKyNlbmRpZiAvLyBUQVJHRVRfT1NfT1NY
Cit9CisKKyNlbmRpZiAvLyBNVExfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IE5TOjpTdHJpbmcqIHBTb3VyY2Us
IGNvbnN0IENvbXBpbGVPcHRpb25zKiBwT3B0aW9ucywgY29uc3QgTmV3TGlicmFyeUNvbXBsZXRp
b25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sgTmV3
TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9
IGNvbXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3TGlicmFyeShwU291cmNlLCBwT3B0aW9ucywg
XihMaWJyYXJ5KiBwTGlicmFyeSwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9u
SGFuZGxlcihwTGlicmFyeSwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpEZXZpY2U6Om5ld0xpYnJhcnkoY29uc3QgY2xhc3MgU3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRv
ciogcERlc2NyaXB0b3IsIGNvbnN0IE1UTDo6TmV3TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyRnVu
Y3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sgTmV3TGlicmFyeUNvbXBs
ZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25I
YW5kbGVyOworCisgICAgbmV3TGlicmFyeShwRGVzY3JpcHRvciwgXihMaWJyYXJ5KiBwTGlicmFy
eSwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwTGlicmFyeSwg
cEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld1JlbmRl
clBpcGVsaW5lU3RhdGUoY29uc3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRv
ciwgY29uc3QgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24m
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sgTmV3UmVuZGVyUGlwZWxpbmVTdGF0
ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBs
ZXRpb25IYW5kbGVyOworCisgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShwRGVzY3JpcHRvciwg
XihSZW5kZXJQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgTlM6OkVycm9yKiBwRXJyb3Ip
IHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwgcEVycm9yKTsgfSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUo
Y29uc3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgUGlwZWxpbmVPcHRp
b24gb3B0aW9ucywgY29uc3QgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29t
cGxldGlvbkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9j
ayBOZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1
bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKKworICAg
IG5ld1JlbmRlclBpcGVsaW5lU3RhdGUocERlc2NyaXB0b3IsIG9wdGlvbnMsIF4oUmVuZGVyUGlw
ZWxpbmVTdGF0ZSogcFBpcGVsaW5lU3RhdGUsIGNsYXNzIFJlbmRlclBpcGVsaW5lUmVmbGVjdGlv
biogcFJlZmxlY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhhbmRs
ZXIocFBpcGVsaW5lU3RhdGUsIHBSZWZsZWN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgUGlwZWxpbmVPcHRpb24gb3B0
aW9ucywgY29uc3QgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlv
bkhhbmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBOZXdS
ZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9u
IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKKworICAgIG5ld1Jl
bmRlclBpcGVsaW5lU3RhdGUocERlc2NyaXB0b3IsIG9wdGlvbnMsIF4oUmVuZGVyUGlwZWxpbmVT
dGF0ZSogcFBpcGVsaW5lU3RhdGUsIGNsYXNzIFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogcFJl
ZmxlY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIocFBp
cGVsaW5lU3RhdGUsIHBSZWZsZWN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgRnVu
Y3Rpb24qIHBGdW5jdGlvbiwgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21wbGV0aW9u
SGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld0Nv
bXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9ja0NvbXBsZXRp
b25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZShwRnVuY3Rpb24sIF4oQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBQaXBlbGluZVN0YXRlLCBO
Uzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBQaXBlbGluZVN0YXRl
LCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3Q29t
cHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgRnVuY3Rpb24qIHBGdW5jdGlvbiwgUGlwZWxpbmVPcHRp
b24gb3B0aW9ucywgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNv
bXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxv
Y2sgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVy
RnVuY3Rpb24gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOworCisg
ICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUocEZ1bmN0aW9uLCBvcHRpb25zLCBeKENvbXB1dGVQ
aXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiog
cFJlZmxlY3Rpb24sIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIo
cFBpcGVsaW5lU3RhdGUsIHBSZWZsZWN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIFBpcGVsaW5lT3B0aW9uIG9wdGlvbnMs
IGNvbnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFu
ZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uIGJs
b2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKKworICAgIG5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlKHBEZXNjcmlwdG9yLCBvcHRpb25zLCBeKENvbXB1dGVQaXBlbGluZVN0
YXRlKiBwUGlwZWxpbmVTdGF0ZSwgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogcFJlZmxlY3Rp
b24sIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIocFBpcGVsaW5l
U3RhdGUsIHBSZWZsZWN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUgYm9vbCBN
VEw6OkRldmljZTo6aXNIZWFkbGVzcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhlYWRsZXNzKCk7
Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkRl
dmljZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBwcm9wZXJ0
eTogcmVnaXN0cnlJRAorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpEZXZpY2U6OnJlZ2lzdHJ5
SUQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQ2NF90Pih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlZ2lzdHJ5SUQpKTsKK30KKworLy8gcHJvcGVydHk6IG1h
eFRocmVhZHNQZXJUaHJlYWRncm91cAorX01UTF9JTkxJTkUgTVRMOjpTaXplIE1UTDo6RGV2aWNl
OjptYXhUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhUaHJlYWRz
UGVyVGhyZWFkZ3JvdXApKTsKK30KKworLy8gcHJvcGVydHk6IGxvd1Bvd2VyCitfTVRMX0lOTElO
RSBib29sIE1UTDo6RGV2aWNlOjpsb3dQb3dlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0xvd1Bvd2VyKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBoZWFkbGVzcworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmlj
ZTo6aGVhZGxlc3MoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNIZWFkbGVzcykpOworfQorCisvLyBwcm9wZXJ0
eTogcmVtb3ZhYmxlCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpyZW1vdmFibGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaXNSZW1vdmFibGUpKTsKK30KKworLy8gcHJvcGVydHk6IGhhc1VuaWZpZWRN
ZW1vcnkKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6Omhhc1VuaWZpZWRNZW1vcnkoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaGFzVW5pZmllZE1lbW9yeSkpOworfQorCisvLyBwcm9wZXJ0eTogcmVjb21t
ZW5kZWRNYXhXb3JraW5nU2V0U2l6ZQorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpEZXZpY2U6
OnJlY29tbWVuZGVkTWF4V29ya2luZ1NldFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHVpbnQ2NF90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlY29tbWVu
ZGVkTWF4V29ya2luZ1NldFNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IGxvY2F0aW9uCitfTVRM
X0lOTElORSBNVEw6OkRldmljZUxvY2F0aW9uIE1UTDo6RGV2aWNlOjpsb2NhdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2VMb2NhdGlvbj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChsb2NhdGlvbikpOworfQorCisvLyBwcm9wZXJ0eTogbG9j
YXRpb25OdW1iZXIKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6bG9jYXRp
b25OdW1iZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsb2NhdGlvbk51bWJlcikpOworfQorCisv
LyBwcm9wZXJ0eTogbWF4VHJhbnNmZXJSYXRlCitfTVRMX0lOTElORSB1aW50NjRfdCBNVEw6OkRl
dmljZTo6bWF4VHJhbnNmZXJSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTx1aW50NjRfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhUcmFuc2ZlclJhdGUp
KTsKK30KKworLy8gcHJvcGVydHk6IGRlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVk
CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpkZXB0aDI0U3RlbmNpbDhQaXhlbEZvcm1h
dFN1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNEZXB0aDI0U3RlbmNpbDhQaXhlbEZvcm1h
dFN1cHBvcnRlZCkpOworfQorCisvLyBwcm9wZXJ0eTogcmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQK
K19NVExfSU5MSU5FIE1UTDo6UmVhZFdyaXRlVGV4dHVyZVRpZXIgTVRMOjpEZXZpY2U6OnJlYWRX
cml0ZVRleHR1cmVTdXBwb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJlYWRXcml0ZVRleHR1cmVUaWVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJl
YWRXcml0ZVRleHR1cmVTdXBwb3J0KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhcmd1bWVudEJ1ZmZl
cnNTdXBwb3J0CitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50QnVmZmVyc1RpZXIgTVRMOjpEZXZp
Y2U6OmFyZ3VtZW50QnVmZmVyc1N1cHBvcnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6QXJndW1lbnRCdWZmZXJzVGllcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChhcmd1bWVudEJ1ZmZlcnNTdXBwb3J0KSk7Cit9CisKKy8vIHByb3BlcnR5OiByYXN0ZXJP
cmRlckdyb3Vwc1N1cHBvcnRlZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6cmFzdGVy
T3JkZXJHcm91cHNTdXBwb3J0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZVJhc3Rlck9yZGVyR3Jv
dXBzU3VwcG9ydGVkKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0czMyQml0RmxvYXRGaWx0
ZXJpbmcKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzMzJCaXRGbG9hdEZp
bHRlcmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5nKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0czMyQml0TVNBQQorX01UTF9JTkxJTkUgYm9vbCBN
VEw6OkRldmljZTo6c3VwcG9ydHMzMkJpdE1TQUEoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRz
MzJCaXRNU0FBKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRAor
X01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNRdWVyeVRleHR1cmVMT0QoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzUXVlcnlUZXh0dXJlTE9EKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uCitfTVRMX0lOTElORSBib29sIE1UTDo6
RGV2aWNlOjpzdXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0c0JDVGV4dHVyZUNvbXByZXNzaW9uKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0
c1B1bGxNb2RlbEludGVycG9sYXRpb24KK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1
cHBvcnRzUHVsbE1vZGVsSW50ZXJwb2xhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNQ
dWxsTW9kZWxJbnRlcnBvbGF0aW9uKSk7Cit9CisKKy8vIHByb3BlcnR5OiBiYXJ5Y2VudHJpY0Nv
b3Jkc1N1cHBvcnRlZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6YmFyeWNlbnRyaWND
b29yZHNTdXBwb3J0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
U2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZUJhcnljZW50cmljQ29vcmRzU3Vw
cG9ydGVkKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c1NoYWRlckJhcnljZW50cmljQ29v
cmRpbmF0ZXMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzU2hhZGVyQmFy
eWNlbnRyaWNDb29yZGluYXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNTaGFkZXJCYXJ5
Y2VudHJpY0Nvb3JkaW5hdGVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjdXJyZW50QWxsb2NhdGVk
U2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2aWNlOjpjdXJyZW50QWxsb2Nh
dGVkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGN1cnJlbnRBbGxvY2F0ZWRTaXplKSk7Cit9
CisKKy8vIG1ldGhvZDogbmV3Q29tbWFuZFF1ZXVlCitfTVRMX0lOTElORSBNVEw6OkNvbW1hbmRR
dWV1ZSogTVRMOjpEZXZpY2U6Om5ld0NvbW1hbmRRdWV1ZSgpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0NvbW1hbmRRdWV1ZSkpOworfQorCisvLyBtZXRob2Q6IG5ld0NvbW1hbmRRdWV1ZVdpdGhN
YXhDb21tYW5kQnVmZmVyQ291bnQ6CitfTVRMX0lOTElORSBNVEw6OkNvbW1hbmRRdWV1ZSogTVRM
OjpEZXZpY2U6Om5ld0NvbW1hbmRRdWV1ZShOUzo6VUludGVnZXIgbWF4Q29tbWFuZEJ1ZmZlckNv
dW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZFF1ZXVl
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21tYW5kUXVldWVXaXRoTWF4Q29tbWFuZEJ1
ZmZlckNvdW50XyksIG1heENvbW1hbmRCdWZmZXJDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogaGVh
cFRleHR1cmVTaXplQW5kQWxpZ25XaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6U2l6
ZUFuZEFsaWduIE1UTDo6RGV2aWNlOjpoZWFwVGV4dHVyZVNpemVBbmRBbGlnbihjb25zdCBNVEw6
OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNjKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6U2l6ZUFuZEFsaWduPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhlYXBUZXh0dXJl
U2l6ZUFuZEFsaWduV2l0aERlc2NyaXB0b3JfKSwgZGVzYyk7Cit9CisKKy8vIG1ldGhvZDogaGVh
cEJ1ZmZlclNpemVBbmRBbGlnbldpdGhMZW5ndGg6b3B0aW9uczoKK19NVExfSU5MSU5FIE1UTDo6
U2l6ZUFuZEFsaWduIE1UTDo6RGV2aWNlOjpoZWFwQnVmZmVyU2l6ZUFuZEFsaWduKE5TOjpVSW50
ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplQW5kQWxpZ24+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoaGVhcEJ1ZmZlclNpemVBbmRBbGlnbldpdGhMZW5ndGhfb3B0aW9uc18pLCBsZW5ndGgs
IG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IG5ld0hlYXBXaXRoRGVzY3JpcHRvcjoKK19NVExf
SU5MSU5FIE1UTDo6SGVhcCogTVRMOjpEZXZpY2U6Om5ld0hlYXAoY29uc3QgTVRMOjpIZWFwRGVz
Y3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkhlYXAqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0hlYXBXaXRoRGVzY3JpcHRvcl8p
LCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdCdWZmZXJXaXRoTGVuZ3RoOm9wdGlv
bnM6CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpEZXZpY2U6Om5ld0J1ZmZlcihOUzo6
VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdCdWZmZXJXaXRoTGVuZ3RoX29wdGlvbnNfKSwgbGVuZ3RoLCBvcHRpb25zKTsKK30K
KworLy8gbWV0aG9kOiBuZXdCdWZmZXJXaXRoQnl0ZXM6bGVuZ3RoOm9wdGlvbnM6CitfTVRMX0lO
TElORSBNVEw6OkJ1ZmZlciogTVRMOjpEZXZpY2U6Om5ld0J1ZmZlcihjb25zdCB2b2lkKiBwb2lu
dGVyLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChuZXdCdWZmZXJXaXRoQnl0ZXNfbGVuZ3RoX29wdGlvbnNfKSwgcG9pbnRl
ciwgbGVuZ3RoLCBvcHRpb25zKTsKK30KKworLy8gbWV0aG9kOiBuZXdCdWZmZXJXaXRoQnl0ZXNO
b0NvcHk6bGVuZ3RoOm9wdGlvbnM6ZGVhbGxvY2F0b3I6CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZl
ciogTVRMOjpEZXZpY2U6Om5ld0J1ZmZlcihjb25zdCB2b2lkKiBwb2ludGVyLCBOUzo6VUludGVn
ZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zLCBjb25zdCB2b2lkICheZGVh
bGxvY2F0b3IpKHZvaWQqLCBOUzo6VUludGVnZXIpKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdCdWZmZXJX
aXRoQnl0ZXNOb0NvcHlfbGVuZ3RoX29wdGlvbnNfZGVhbGxvY2F0b3JfKSwgcG9pbnRlciwgbGVu
Z3RoLCBvcHRpb25zLCBkZWFsbG9jYXRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3RGVwdGhTdGVu
Y2lsU3RhdGVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6RGVwdGhTdGVuY2lsU3Rh
dGUqIE1UTDo6RGV2aWNlOjpuZXdEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBNVEw6OkRlcHRoU3Rl
bmNpbERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpEZXB0aFN0ZW5jaWxTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3
RGVwdGhTdGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8g
bWV0aG9kOiBuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlRleHR1
cmUqIE1UTDo6RGV2aWNlOjpuZXdUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0
dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3JfKSwg
ZGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOmlv
c3VyZmFjZTpwbGFuZToKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpEZXZpY2U6Om5l
d1RleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3Qg
SU9TdXJmYWNlUmVmIGlvc3VyZmFjZSwgTlM6OlVJbnRlZ2VyIHBsYW5lKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yX2lvc3VyZmFjZV9wbGFuZV8pLCBkZXNjcmlwdG9y
LCBpb3N1cmZhY2UsIHBsYW5lKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRUZXh0dXJlV2l0
aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6RGV2aWNlOjpuZXdT
aGFyZWRUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChuZXdTaGFyZWRUZXh0dXJlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRv
cik7Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkVGV4dHVyZVdpdGhIYW5kbGU6CitfTVRMX0lO
TElORSBNVEw6OlRleHR1cmUqIE1UTDo6RGV2aWNlOjpuZXdTaGFyZWRUZXh0dXJlKGNvbnN0IE1U
TDo6U2hhcmVkVGV4dHVyZUhhbmRsZSogc2hhcmVkSGFuZGxlKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3
U2hhcmVkVGV4dHVyZVdpdGhIYW5kbGVfKSwgc2hhcmVkSGFuZGxlKTsKK30KKworLy8gbWV0aG9k
OiBuZXdTYW1wbGVyU3RhdGVXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxl
clN0YXRlKiBNVEw6OkRldmljZTo6bmV3U2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlckRl
c2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpTYW1wbGVyU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1NhbXBsZXJTdGF0
ZVdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IG5ld0RlZmF1
bHRMaWJyYXJ5CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdEZWZh
dWx0TGlicmFyeSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJy
YXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdEZWZhdWx0TGlicmFyeSkpOworfQorCisv
LyBtZXRob2Q6IG5ld0RlZmF1bHRMaWJyYXJ5V2l0aEJ1bmRsZTplcnJvcjoKK19NVExfSU5MSU5F
IE1UTDo6TGlicmFyeSogTVRMOjpEZXZpY2U6Om5ld0RlZmF1bHRMaWJyYXJ5KGNvbnN0IE5TOjpC
dW5kbGUqIGJ1bmRsZSwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdEZWZh
dWx0TGlicmFyeVdpdGhCdW5kbGVfZXJyb3JfKSwgYnVuZGxlLCBlcnJvcik7Cit9CisKKy8vIG1l
dGhvZDogbmV3TGlicmFyeVdpdGhGaWxlOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5
KiBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBOUzo6U3RyaW5nKiBmaWxlcGF0aCwgTlM6
OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpM
aWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdMaWJyYXJ5V2l0aEZpbGVfZXJyb3Jf
KSwgZmlsZXBhdGgsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdMaWJyYXJ5V2l0aFVSTDpl
cnJvcjoKK19NVExfSU5MSU5FIE1UTDo6TGlicmFyeSogTVRMOjpEZXZpY2U6Om5ld0xpYnJhcnko
Y29uc3QgTlM6OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d0xpYnJhcnlXaXRoVVJMX2Vycm9yXyksIHVybCwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5l
d0xpYnJhcnlXaXRoRGF0YTplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6TGlicmFyeSogTVRMOjpE
ZXZpY2U6Om5ld0xpYnJhcnkoY29uc3QgZGlzcGF0Y2hfZGF0YV90IGRhdGEsIE5TOjpFcnJvcioq
IGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlicmFyeSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhEYXRhX2Vycm9yXyksIGRhdGEs
IGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdMaWJyYXJ5V2l0aFNvdXJjZTpvcHRpb25zOmVy
cm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3TGlicmFyeShj
b25zdCBOUzo6U3RyaW5nKiBzb3VyY2UsIGNvbnN0IE1UTDo6Q29tcGlsZU9wdGlvbnMqIG9wdGlv
bnMsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6TGlicmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhTb3Vy
Y2Vfb3B0aW9uc19lcnJvcl8pLCBzb3VyY2UsIG9wdGlvbnMsIGVycm9yKTsKK30KKworLy8gbWV0
aG9kOiBuZXdMaWJyYXJ5V2l0aFNvdXJjZTpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBOUzo6U3RyaW5nKiBz
b3VyY2UsIGNvbnN0IE1UTDo6Q29tcGlsZU9wdGlvbnMqIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3
TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdMaWJyYXJ5V2l0
aFNvdXJjZV9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXyksIHNvdXJjZSwgb3B0aW9ucywgY29t
cGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0xpYnJhcnlXaXRoU3RpdGNoZWRE
ZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6
bmV3TGlicmFyeShjb25zdCBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIGRlc2NyaXB0
b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6TGlicmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhTdGl0
Y2hlZERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBtZXRo
b2Q6IG5ld0xpYnJhcnlXaXRoU3RpdGNoZWREZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBNVEw6OlN0aXRj
aGVkTGlicmFyeURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IE1UTDo6TmV3TGlicmFyeUNv
bXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdMaWJyYXJ5V2l0aFN0aXRjaGVk
RGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8pLCBkZXNjcmlwdG9yLCBjb21wbGV0aW9uSGFu
ZGxlcik7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlw
dG9yOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBNVEw6OkRl
dmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwg
ZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVXaXRoRGVzY3JpcHRvcjpvcHRpb25zOnJlZmxlY3Rpb246ZXJyb3I6CitfTVRMX0lOTElORSBN
VEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0
YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6
OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkUmVuZGVyUGlw
ZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9v
cHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfKSwgZGVzY3JpcHRvciwgb3B0aW9ucywgcmVmbGVjdGlv
biwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVz
Y3JpcHRvcjpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6
Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IqIGRlc2NyaXB0b3IsIGNvbnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZUNvbXBsZXRp
b25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERl
c2NyaXB0b3JfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgY29tcGxldGlvbkhhbmRs
ZXIpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRv
cjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmlj
ZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciogZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6
Ok5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jfb3B0
aW9uc19jb21wbGV0aW9uSGFuZGxlcl8pLCBkZXNjcmlwdG9yLCBvcHRpb25zLCBjb21wbGV0aW9u
SGFuZGxlcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVu
Y3Rpb246ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBNVEw6
OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpGdW5jdGlvbiogY29t
cHV0ZUZ1bmN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9lcnJvcl8pLCBjb21wdXRl
RnVuY3Rpb24sIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZVdpdGhGdW5jdGlvbjpvcHRpb25zOnJlZmxlY3Rpb246ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6
OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUoY29uc3QgTVRMOjpGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBNVEw6OlBpcGVsaW5lT3B0
aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVj
dGlvbiogcmVmbGVjdGlvbiwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25fb3B0aW9uc19yZWZs
ZWN0aW9uX2Vycm9yXyksIGNvbXB1dGVGdW5jdGlvbiwgb3B0aW9ucywgcmVmbGVjdGlvbiwgZXJy
b3IpOworfQorCisvLyBtZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9u
OmNvbXBsZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3Q29t
cHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBj
b25zdCBNVEw6Ok5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uX2NvbXBsZXRp
b25IYW5kbGVyXyksIGNvbXB1dGVGdW5jdGlvbiwgY29tcGxldGlvbkhhbmRsZXIpOworfQorCisv
LyBtZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOm9wdGlvbnM6Y29t
cGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OkZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE1UTDo6
UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpOZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Nv
bXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uX29wdGlvbnNfY29tcGxldGlvbkhhbmRsZXJf
KSwgY29tcHV0ZUZ1bmN0aW9uLCBvcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8v
IG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjpvcHRpb25zOnJl
ZmxlY3Rpb246ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBN
VEw6OkRldmljZTo6bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlvbnMs
IGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVj
dGlvbiwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3
Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJy
b3JfKSwgZGVzY3JpcHRvciwgb3B0aW9ucywgcmVmbGVjdGlvbiwgZXJyb3IpOworfQorCisvLyBt
ZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0aW9uczpjb21w
bGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1dGVQ
aXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3Jp
cHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6Ok5ld0NvbXB1dGVQ
aXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBs
ZXRpb25IYW5kbGVyXyksIGRlc2NyaXB0b3IsIG9wdGlvbnMsIGNvbXBsZXRpb25IYW5kbGVyKTsK
K30KKworLy8gbWV0aG9kOiBuZXdGZW5jZQorX01UTF9JTkxJTkUgTVRMOjpGZW5jZSogTVRMOjpE
ZXZpY2U6Om5ld0ZlbmNlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkZlbmNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdGZW5jZSkpOworfQorCisvLyBtZXRo
b2Q6IHN1cHBvcnRzRmVhdHVyZVNldDoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1
cHBvcnRzRmVhdHVyZVNldChNVEw6OkZlYXR1cmVTZXQgZmVhdHVyZVNldCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0c0ZlYXR1cmVTZXRfKSwgZmVhdHVyZVNldCk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9y
dHNGYW1pbHk6CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c0ZhbWlseShN
VEw6OkdQVUZhbWlseSBncHVGYW1pbHkpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNGYW1pbHlfKSwgZ3B1
RmFtaWx5KTsKK30KKworLy8gbWV0aG9kOiBzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudDoKK19N
VExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzVGV4dHVyZVNhbXBsZUNvdW50KE5T
OjpVSW50ZWdlciBzYW1wbGVDb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1RleHR1cmVTYW1wbGVD
b3VudF8pLCBzYW1wbGVDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogbWluaW11bUxpbmVhclRleHR1
cmVBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdDoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OkRldmljZTo6bWluaW11bUxpbmVhclRleHR1cmVBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdChNVEw6
OlBpeGVsRm9ybWF0IGZvcm1hdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWluaW11bUxpbmVhclRleHR1cmVB
bGlnbm1lbnRGb3JQaXhlbEZvcm1hdF8pLCBmb3JtYXQpOworfQorCisvLyBtZXRob2Q6IG1pbmlt
dW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXQ6CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpEZXZpY2U6Om1pbmltdW1UZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9yUGl4
ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBmb3JtYXQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1pbmltdW1U
ZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXRfKSwgZm9ybWF0KTsKK30KKworLy8g
bWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yOm9wdGlvbnM6
cmVmbGVjdGlvbjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSog
TVRMOjpEZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpUaWxlUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlBpcGVsaW5lT3B0aW9uIG9wdGlv
bnMsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiByZWZs
ZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoVGlsZURlc2NyaXB0b3Jfb3B0aW9uc19yZWZsZWN0aW9u
X2Vycm9yXyksIGRlc2NyaXB0b3IsIG9wdGlvbnMsIHJlZmxlY3Rpb24sIGVycm9yKTsKK30KKwor
Ly8gbWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yOm9wdGlv
bnM6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciogZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6Ok5l
d1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yX29w
dGlvbnNfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgb3B0aW9ucywgY29tcGxldGlv
bkhhbmRsZXIpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6bWF4VGhyZWFkZ3JvdXBNZW1v
cnlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0
aCkpOworfQorCisvLyBwcm9wZXJ0eTogbWF4QXJndW1lbnRCdWZmZXJTYW1wbGVyQ291bnQKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6bWF4QXJndW1lbnRCdWZmZXJTYW1w
bGVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhBcmd1bWVudEJ1ZmZlclNhbXBsZXJD
b3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogcHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRpb25zU3Vw
cG9ydGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpwcm9ncmFtbWFibGVTYW1wbGVQ
b3NpdGlvbnNTdXBwb3J0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZVByb2dyYW1tYWJsZVNhbXBs
ZVBvc2l0aW9uc1N1cHBvcnRlZCkpOworfQorCisvLyBtZXRob2Q6IGdldERlZmF1bHRTYW1wbGVQ
b3NpdGlvbnM6Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpnZXREZWZhdWx0
U2FtcGxlUG9zaXRpb25zKE1UTDo6U2FtcGxlUG9zaXRpb24qIHBvc2l0aW9ucywgTlM6OlVJbnRl
Z2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChnZXREZWZhdWx0U2FtcGxlUG9zaXRpb25zX2NvdW50XyksIHBvc2l0aW9ucywg
Y291bnQpOworfQorCisvLyBtZXRob2Q6IG5ld0FyZ3VtZW50RW5jb2RlcldpdGhBcmd1bWVudHM6
CitfTVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RW5jb2RlciogTVRMOjpEZXZpY2U6Om5ld0FyZ3Vt
ZW50RW5jb2Rlcihjb25zdCBOUzo6QXJyYXkqIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50RW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobmV3QXJndW1lbnRFbmNvZGVyV2l0aEFyZ3VtZW50c18pLCBhcmd1bWVudHMpOworfQor
CisvLyBtZXRob2Q6IHN1cHBvcnRzUmFzdGVyaXphdGlvblJhdGVNYXBXaXRoTGF5ZXJDb3VudDoK
K19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUmFzdGVyaXphdGlvblJhdGVN
YXAoTlM6OlVJbnRlZ2VyIGxheWVyQ291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNSYXN0ZXJpemF0
aW9uUmF0ZU1hcFdpdGhMYXllckNvdW50XyksIGxheWVyQ291bnQpOworfQorCisvLyBtZXRob2Q6
IG5ld1Jhc3Rlcml6YXRpb25SYXRlTWFwV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6
OlJhc3Rlcml6YXRpb25SYXRlTWFwKiBNVEw6OkRldmljZTo6bmV3UmFzdGVyaXphdGlvblJhdGVN
YXAoY29uc3QgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIGRlc2NyaXB0b3Ip
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZU1hcCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmFzdGVyaXphdGlvblJhdGVNYXBXaXRo
RGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdJbmRpcmVjdENv
bW1hbmRCdWZmZXJXaXRoRGVzY3JpcHRvcjptYXhDb21tYW5kQ291bnQ6b3B0aW9uczoKK19NVExf
SU5MSU5FIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBNVEw6OkRldmljZTo6bmV3SW5kaXJl
Y3RDb21tYW5kQnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRv
ciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG1heENvdW50LCBNVEw6OlJlc291cmNlT3B0aW9u
cyBvcHRpb25zKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW5kaXJl
Y3RDb21tYW5kQnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdJbmRpcmVjdENvbW1h
bmRCdWZmZXJXaXRoRGVzY3JpcHRvcl9tYXhDb21tYW5kQ291bnRfb3B0aW9uc18pLCBkZXNjcmlw
dG9yLCBtYXhDb3VudCwgb3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogbmV3RXZlbnQKK19NVExf
SU5MSU5FIE1UTDo6RXZlbnQqIE1UTDo6RGV2aWNlOjpuZXdFdmVudCgpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpFdmVudCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmV3RXZlbnQpKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRFdmVudAorX01UTF9JTkxJTkUg
TVRMOjpTaGFyZWRFdmVudCogTVRMOjpEZXZpY2U6Om5ld1NoYXJlZEV2ZW50KCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNoYXJlZEV2ZW50Kj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdTaGFyZWRFdmVudCkpOworfQorCisvLyBtZXRob2Q6IG5ld1NoYXJlZEV2
ZW50V2l0aEhhbmRsZToKK19NVExfSU5MSU5FIE1UTDo6U2hhcmVkRXZlbnQqIE1UTDo6RGV2aWNl
OjpuZXdTaGFyZWRFdmVudChjb25zdCBNVEw6OlNoYXJlZEV2ZW50SGFuZGxlKiBzaGFyZWRFdmVu
dEhhbmRsZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNoYXJlZEV2
ZW50Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdTaGFyZWRFdmVudFdpdGhIYW5kbGVfKSwg
c2hhcmVkRXZlbnRIYW5kbGUpOworfQorCisvLyBwcm9wZXJ0eTogcGVlckdyb3VwSUQKK19NVExf
SU5MSU5FIHVpbnQ2NF90IE1UTDo6RGV2aWNlOjpwZWVyR3JvdXBJRCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDY0X3Q+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocGVlckdyb3VwSUQpKTsKK30KKworLy8gcHJvcGVydHk6IHBlZXJJbmRleAorX01UTF9JTkxJ
TkUgdWludDMyX3QgTVRMOjpEZXZpY2U6OnBlZXJJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDMyX3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGVl
ckluZGV4KSk7Cit9CisKKy8vIHByb3BlcnR5OiBwZWVyQ291bnQKK19NVExfSU5MSU5FIHVpbnQz
Ml90IE1UTDo6RGV2aWNlOjpwZWVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBlZXJDb3VudCkp
OworfQorCisvLyBtZXRob2Q6IHNwYXJzZVRpbGVTaXplV2l0aFRleHR1cmVUeXBlOnBpeGVsRm9y
bWF0OnNhbXBsZUNvdW50OgorX01UTF9JTkxJTkUgTVRMOjpTaXplIE1UTDo6RGV2aWNlOjpzcGFy
c2VUaWxlU2l6ZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlLCBNVEw6OlBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBOUzo6VUludGVnZXIgc2FtcGxlQ291bnQpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNwYXJz
ZVRpbGVTaXplV2l0aFRleHR1cmVUeXBlX3BpeGVsRm9ybWF0X3NhbXBsZUNvdW50XyksIHRleHR1
cmVUeXBlLCBwaXhlbEZvcm1hdCwgc2FtcGxlQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogc3Bh
cnNlVGlsZVNpemVJbkJ5dGVzCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpEZXZpY2U6
OnNwYXJzZVRpbGVTaXplSW5CeXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNwYXJzZVRpbGVT
aXplSW5CeXRlcykpOworfQorCisvLyBtZXRob2Q6IGNvbnZlcnRTcGFyc2VQaXhlbFJlZ2lvbnM6
dG9UaWxlUmVnaW9uczp3aXRoVGlsZVNpemU6YWxpZ25tZW50TW9kZTpudW1SZWdpb25zOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6Y29udmVydFNwYXJzZVBpeGVsUmVnaW9ucyhjb25z
dCBNVEw6OlJlZ2lvbiogcGl4ZWxSZWdpb25zLCBNVEw6OlJlZ2lvbiogdGlsZVJlZ2lvbnMsIE1U
TDo6U2l6ZSB0aWxlU2l6ZSwgTVRMOjpTcGFyc2VUZXh0dXJlUmVnaW9uQWxpZ25tZW50TW9kZSBt
b2RlLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29udmVydFNwYXJzZVBpeGVsUmVnaW9uc190
b1RpbGVSZWdpb25zX3dpdGhUaWxlU2l6ZV9hbGlnbm1lbnRNb2RlX251bVJlZ2lvbnNfKSwgcGl4
ZWxSZWdpb25zLCB0aWxlUmVnaW9ucywgdGlsZVNpemUsIG1vZGUsIG51bVJlZ2lvbnMpOworfQor
CisvLyBtZXRob2Q6IGNvbnZlcnRTcGFyc2VUaWxlUmVnaW9uczp0b1BpeGVsUmVnaW9uczp3aXRo
VGlsZVNpemU6bnVtUmVnaW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6OmNvbnZl
cnRTcGFyc2VUaWxlUmVnaW9ucyhjb25zdCBNVEw6OlJlZ2lvbiogdGlsZVJlZ2lvbnMsIE1UTDo6
UmVnaW9uKiBwaXhlbFJlZ2lvbnMsIE1UTDo6U2l6ZSB0aWxlU2l6ZSwgTlM6OlVJbnRlZ2VyIG51
bVJlZ2lvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGNvbnZlcnRTcGFyc2VUaWxlUmVnaW9uc190b1BpeGVsUmVnaW9uc193aXRoVGls
ZVNpemVfbnVtUmVnaW9uc18pLCB0aWxlUmVnaW9ucywgcGl4ZWxSZWdpb25zLCB0aWxlU2l6ZSwg
bnVtUmVnaW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhCdWZmZXJMZW5ndGgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6bWF4QnVmZmVyTGVuZ3RoKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobWF4QnVmZmVyTGVuZ3RoKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb3VudGVy
U2V0cworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkRldmljZTo6Y291bnRlclNldHMoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoY291bnRlclNldHMpKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb3Vu
dGVyU2FtcGxlQnVmZmVyV2l0aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkNv
dW50ZXJTYW1wbGVCdWZmZXIqIE1UTDo6RGV2aWNlOjpuZXdDb3VudGVyU2FtcGxlQnVmZmVyKGNv
bnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpF
cnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q291
bnRlclNhbXBsZUJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q291bnRlclNhbXBs
ZUJ1ZmZlcldpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKwor
Ly8gbWV0aG9kOiBzYW1wbGVUaW1lc3RhbXBzOmdwdVRpbWVzdGFtcDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpEZXZpY2U6OnNhbXBsZVRpbWVzdGFtcHMoTVRMOjpUaW1lc3RhbXAqIGNwdVRpbWVz
dGFtcCwgTVRMOjpUaW1lc3RhbXAqIGdwdVRpbWVzdGFtcCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlVGltZXN0YW1wc19ncHVU
aW1lc3RhbXBfKSwgY3B1VGltZXN0YW1wLCBncHVUaW1lc3RhbXApOworfQorCisvLyBtZXRob2Q6
IHN1cHBvcnRzQ291bnRlclNhbXBsaW5nOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6
c3VwcG9ydHNDb3VudGVyU2FtcGxpbmcoTVRMOjpDb3VudGVyU2FtcGxpbmdQb2ludCBzYW1wbGlu
Z1BvaW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzQ291bnRlclNhbXBsaW5nXyksIHNhbXBsaW5nUG9p
bnQpOworfQorCisvLyBtZXRob2Q6IHN1cHBvcnRzVmVydGV4QW1wbGlmaWNhdGlvbkNvdW50Ogor
X01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNWZXJ0ZXhBbXBsaWZpY2F0aW9u
Q291bnQoTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzVmVydGV4QW1wbGlm
aWNhdGlvbkNvdW50XyksIGNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzRHluYW1p
Y0xpYnJhcmllcworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNEeW5hbWlj
TGlicmFyaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8
Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c0R5bmFtaWNMaWJyYXJpZXMpKTsK
K30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzUmVuZGVyRHluYW1pY0xpYnJhcmllcworX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNSZW5kZXJEeW5hbWljTGlicmFyaWVzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMpKTsKK30KKwor
Ly8gbWV0aG9kOiBuZXdEeW5hbWljTGlicmFyeTplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6RHlu
YW1pY0xpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdEeW5hbWljTGlicmFyeShjb25zdCBNVEw6Okxp
YnJhcnkqIGxpYnJhcnksIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6RHluYW1pY0xpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0R5bmFtaWNMaWJyYXJ5X2Vycm9yXyksIGxpYnJhcnksIGVycm9yKTsKK30KKworLy8gbWV0
aG9kOiBuZXdEeW5hbWljTGlicmFyeVdpdGhVUkw6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkR5
bmFtaWNMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3RHluYW1pY0xpYnJhcnkoY29uc3QgTlM6OlVS
TCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkR5bmFtaWNMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdEeW5h
bWljTGlicmFyeVdpdGhVUkxfZXJyb3JfKSwgdXJsLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDog
bmV3QmluYXJ5QXJjaGl2ZVdpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpC
aW5hcnlBcmNoaXZlKiBNVEw6OkRldmljZTo6bmV3QmluYXJ5QXJjaGl2ZShjb25zdCBNVEw6OkJp
bmFyeUFyY2hpdmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJpbmFyeUFyY2hpdmUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5ld0JpbmFyeUFyY2hpdmVXaXRoRGVzY3JpcHRvcl9lcnJvcl8p
LCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c1JheXRyYWNp
bmcKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUmF5dHJhY2luZygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc3VwcG9ydHNSYXl0cmFjaW5nKSk7Cit9CisKKy8vIG1ldGhvZDogYWNj
ZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXNXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMgTVRMOjpEZXZpY2U6OmFjY2VsZXJhdGlvblN0cnVj
dHVyZVNpemVzKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVz
Y3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZVNpemVzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFjY2VsZXJhdGlvblN0
cnVjdHVyZVNpemVzV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhv
ZDogbmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aFNpemU6CitfTVRMX0lOTElORSBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZSogTVRMOjpEZXZpY2U6Om5ld0FjY2VsZXJhdGlvblN0cnVjdHVy
ZShOUzo6VUludGVnZXIgc2l6ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QWNj
ZWxlcmF0aW9uU3RydWN0dXJlV2l0aFNpemVfKSwgc2l6ZSk7Cit9CisKKy8vIG1ldGhvZDogbmV3
QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZSogTVRMOjpEZXZpY2U6Om5ld0FjY2VsZXJhdGlvblN0cnVjdHVy
ZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3Ip
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZVdp
dGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNG
dW5jdGlvblBvaW50ZXJzCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c0Z1
bmN0aW9uUG9pbnRlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
U2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVy
cykpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzRnJvbVJlbmRl
cgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNGdW5jdGlvblBvaW50ZXJz
RnJvbVJlbmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzRnJv
bVJlbmRlcikpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNSYXl0cmFjaW5nRnJvbVJlbmRl
cgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNSYXl0cmFjaW5nRnJvbVJl
bmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNSYXl0cmFjaW5nRnJvbVJlbmRlcikpOwor
fQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNQcmltaXRpdmVNb3Rpb25CbHVyCitfTVRMX0lOTElO
RSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c1ByaW1pdGl2ZU1vdGlvbkJsdXIoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHN1cHBvcnRzUHJpbWl0aXZlTW90aW9uQmx1cikpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERyYXdhYmxlLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEcmF3YWJsZS5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzM0MDk3NjA0MTM3ZmUzMGJlZTcwYjJkMTU1ZDMxN2M2MmJiOTY5YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEcmF3YWJs
ZS5ocHAKQEAgLTAsMCArMSw5OSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRHJhd2FibGUuaHBwCisvLworLy8gQ29weXJp
Z2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5l
cy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2
YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+CisKK25hbWVzcGFjZSBNVEwKK3sKK3VzaW5nIERyYXdhYmxlUHJlc2VudGVkSGFuZGxlciA9
IHZvaWQgKF4pKGNsYXNzIERyYXdhYmxlKik7CisKK3VzaW5nIERyYXdhYmxlUHJlc2VudGVkSGFu
ZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNsYXNzIERyYXdhYmxlKik+OworCitj
bGFzcyBEcmF3YWJsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RHJhd2FibGU+Cit7CitwdWJs
aWM6CisgICAgdm9pZCAgICAgICAgICAgYWRkUHJlc2VudGVkSGFuZGxlcihjb25zdCBNVEw6OkRy
YXdhYmxlUHJlc2VudGVkSGFuZGxlckZ1bmN0aW9uJiBmdW5jdGlvbik7CisKKyAgICB2b2lkICAg
ICAgICAgICBwcmVzZW50KCk7CisKKyAgICB2b2lkICAgICAgICAgICBwcmVzZW50QXRUaW1lKENG
VGltZUludGVydmFsIHByZXNlbnRhdGlvblRpbWUpOworCisgICAgdm9pZCAgICAgICAgICAgcHJl
c2VudEFmdGVyTWluaW11bUR1cmF0aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uKTsKKworICAg
IHZvaWQgICAgICAgICAgIGFkZFByZXNlbnRlZEhhbmRsZXIoY29uc3QgTVRMOjpEcmF3YWJsZVBy
ZXNlbnRlZEhhbmRsZXIgYmxvY2spOworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgcHJlc2VudGVkVGlt
ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgZHJhd2FibGVJRCgpIGNvbnN0OworfTsK
KworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6OmFkZFByZXNlbnRlZEhhbmRs
ZXIoY29uc3QgTVRMOjpEcmF3YWJsZVByZXNlbnRlZEhhbmRsZXJGdW5jdGlvbiYgZnVuY3Rpb24p
Cit7CisgICAgX19ibG9jayBEcmF3YWJsZVByZXNlbnRlZEhhbmRsZXJGdW5jdGlvbiBibG9ja0Z1
bmN0aW9uID0gZnVuY3Rpb247CisKKyAgICBhZGRQcmVzZW50ZWRIYW5kbGVyKF4oRHJhd2FibGUq
IHBEcmF3YWJsZSkgeyBibG9ja0Z1bmN0aW9uKHBEcmF3YWJsZSk7IH0pOworfQorCisvLyBtZXRo
b2Q6IHByZXNlbnQKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEcmF3YWJsZTo6cHJlc2VudCgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBy
ZXNlbnQpKTsKK30KKworLy8gbWV0aG9kOiBwcmVzZW50QXRUaW1lOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkRyYXdhYmxlOjpwcmVzZW50QXRUaW1lKENGVGltZUludGVydmFsIHByZXNlbnRhdGlv
blRpbWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHByZXNlbnRBdFRpbWVfKSwgcHJlc2VudGF0aW9uVGltZSk7Cit9CisKKy8vIG1ldGhv
ZDogcHJlc2VudEFmdGVyTWluaW11bUR1cmF0aW9uOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRy
YXdhYmxlOjpwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb24oQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRp
b24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHByZXNlbnRBZnRlck1pbmltdW1EdXJhdGlvbl8pLCBkdXJhdGlvbik7Cit9CisKKy8vIG1l
dGhvZDogYWRkUHJlc2VudGVkSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEcmF3YWJs
ZTo6YWRkUHJlc2VudGVkSGFuZGxlcihjb25zdCBNVEw6OkRyYXdhYmxlUHJlc2VudGVkSGFuZGxl
ciBibG9jaykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYWRkUHJlc2VudGVkSGFuZGxlcl8pLCBibG9jayk7Cit9CisKKy8vIHByb3BlcnR5
OiBwcmVzZW50ZWRUaW1lCitfTVRMX0lOTElORSBDRlRpbWVJbnRlcnZhbCBNVEw6OkRyYXdhYmxl
OjpwcmVzZW50ZWRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxDRlRpbWVJbnRlcnZhbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVzZW50ZWRUaW1lKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBkcmF3YWJsZUlECitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpEcmF3YWJsZTo6ZHJhd2FibGVJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdhYmxl
SUQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExEeW5hbWljTGlicmFyeS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMRHluYW1pY0xpYnJhcnkuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4OWI5OTkwZDVmNmJmMTc5
NDcyZWIxYTM0NDI2MzNkMDk0MWRiNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHluYW1pY0xpYnJhcnkuaHBwCkBAIC0wLDAgKzEs
ODIgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIE1ldGFsL01UTER5bmFtaWNMaWJyYXJ5LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIw
MjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2lu
Y2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisK
KyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1lc3BhY2UgTVRMCit7
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBEeW5hbWljTGlicmFyeUVycm9yKSB7CisgICAgRHlu
YW1pY0xpYnJhcnlFcnJvck5vbmUgPSAwLAorICAgIER5bmFtaWNMaWJyYXJ5RXJyb3JJbnZhbGlk
RmlsZSA9IDEsCisgICAgRHluYW1pY0xpYnJhcnlFcnJvckNvbXBpbGF0aW9uRmFpbHVyZSA9IDIs
CisgICAgRHluYW1pY0xpYnJhcnlFcnJvclVucmVzb2x2ZWRJbnN0YWxsTmFtZSA9IDMsCisgICAg
RHluYW1pY0xpYnJhcnlFcnJvckRlcGVuZGVuY3lMb2FkRmFpbHVyZSA9IDQsCisgICAgRHluYW1p
Y0xpYnJhcnlFcnJvclVuc3VwcG9ydGVkID0gNSwKK307CisKK2NsYXNzIER5bmFtaWNMaWJyYXJ5
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxEeW5hbWljTGlicmFyeT4KK3sKK3B1YmxpYzoKKyAg
ICBOUzo6U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICBzZXRMYWJl
bChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisKKyAgICBjbGFzcyBEZXZpY2UqIGRldmljZSgp
IGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICBpbnN0YWxsTmFtZSgpIGNvbnN0OworCisgICAg
Ym9vbCAgICAgICAgICBzZXJpYWxpemVUb1VSTChjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJv
cioqIGVycm9yKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBO
Uzo6U3RyaW5nKiBNVEw6OkR5bmFtaWNMaWJyYXJ5OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkR5bmFtaWNMaWJyYXJ5Ojpz
ZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQor
CisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpEeW5h
bWljTGlicmFyeTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpbnN0YWxsTmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpE
eW5hbWljTGlicmFyeTo6aW5zdGFsbE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbGxO
YW1lKSk7Cit9CisKKy8vIG1ldGhvZDogc2VyaWFsaXplVG9VUkw6ZXJyb3I6CitfTVRMX0lOTElO
RSBib29sIE1UTDo6RHluYW1pY0xpYnJhcnk6OnNlcmlhbGl6ZVRvVVJMKGNvbnN0IE5TOjpVUkwq
IHVybCwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXJpYWxpemVUb1VSTF9lcnJvcl8pLCB1
cmwsIGVycm9yKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExFdmVudC5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMRXZlbnQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhOWZhYzIzNTE4Zjg2YTUxZTQyMGE0OTg0Njc2
NGM1ZTBkZjU4ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMRXZlbnQuaHBwCkBAIC0wLDAgKzEsMTYzIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExFdmVudC5o
cHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
Ky8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
Ly8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8v
CisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgor
I2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEV2ZW50LmhwcCIKKworbmFtZXNwYWNlIE1UTAorewor
Y2xhc3MgRXZlbnQgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEV2ZW50PgoreworcHVibGljOgor
ICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgIGxh
YmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5n
KiBsYWJlbCk7Cit9OworCitjbGFzcyBTaGFyZWRFdmVudExpc3RlbmVyIDogcHVibGljIE5TOjpS
ZWZlcmVuY2luZzxTaGFyZWRFdmVudExpc3RlbmVyPgoreworcHVibGljOgorICAgIHN0YXRpYyBj
bGFzcyBTaGFyZWRFdmVudExpc3RlbmVyKiBhbGxvYygpOworCisgICAgTVRMOjpTaGFyZWRFdmVu
dExpc3RlbmVyKiAgICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5l
ciogICAgICAgICBpbml0KGNvbnN0IGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSk7CisK
KyAgICBkaXNwYXRjaF9xdWV1ZV90ICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hRdWV1ZSgpIGNv
bnN0OworfTsKKwordXNpbmcgU2hhcmVkRXZlbnROb3RpZmljYXRpb25CbG9jayA9IHZvaWQgKF4p
KFNoYXJlZEV2ZW50KiBwRXZlbnQsIHN0ZDo6dWludDY0X3QgdmFsdWUpOworCitjbGFzcyBTaGFy
ZWRFdmVudCA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8U2hhcmVkRXZlbnQsIEV2ZW50Pgorewor
cHVibGljOgorICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICBub3RpZnlMaXN0ZW5lcihjb25z
dCBjbGFzcyBTaGFyZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgdWludDY0X3QgdmFsdWUsIGNv
bnN0IE1UTDo6U2hhcmVkRXZlbnROb3RpZmljYXRpb25CbG9jayBibG9jayk7CisKKyAgICBjbGFz
cyBTaGFyZWRFdmVudEhhbmRsZSogbmV3U2hhcmVkRXZlbnRIYW5kbGUoKTsKKworICAgIHVpbnQ2
NF90ICAgICAgICAgICAgICAgICBzaWduYWxlZFZhbHVlKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgIHNldFNpZ25hbGVkVmFsdWUodWludDY0X3Qgc2lnbmFsZWRWYWx1ZSk7
Cit9OworCitjbGFzcyBTaGFyZWRFdmVudEhhbmRsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8
U2hhcmVkRXZlbnRIYW5kbGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFNoYXJlZEV2
ZW50SGFuZGxlKiBhbGxvYygpOworCisgICAgY2xhc3MgU2hhcmVkRXZlbnRIYW5kbGUqICAgICAg
ICBpbml0KCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkg
Y29uc3Q7Cit9OworCitzdHJ1Y3QgU2hhcmVkRXZlbnRIYW5kbGVQcml2YXRlCit7Cit9IF9NVExf
UEFDS0VEOworCit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2
aWNlKiBNVEw6OkV2ZW50OjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsK
K30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkV2
ZW50OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkV2ZW50OjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJ
TkUgTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyKiBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXI6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTaGFyZWRFdmVudExp
c3RlbmVyPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFNoYXJlZEV2ZW50TGlzdGVuZXIpKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIqIE1U
TDo6U2hhcmVkRXZlbnRMaXN0ZW5lcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmluaXQ8TVRMOjpTaGFyZWRFdmVudExpc3RlbmVyPigpOworfQorCisvLyBtZXRob2Q6IGluaXRX
aXRoRGlzcGF0Y2hRdWV1ZToKK19NVExfSU5MSU5FIE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lciog
TVRMOjpTaGFyZWRFdmVudExpc3RlbmVyOjppbml0KGNvbnN0IGRpc3BhdGNoX3F1ZXVlX3QgZGlz
cGF0Y2hRdWV1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNoYXJl
ZEV2ZW50TGlzdGVuZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluaXRXaXRoRGlzcGF0Y2hR
dWV1ZV8pLCBkaXNwYXRjaFF1ZXVlKTsKK30KKworLy8gcHJvcGVydHk6IGRpc3BhdGNoUXVldWUK
K19NVExfSU5MSU5FIGRpc3BhdGNoX3F1ZXVlX3QgTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyOjpk
aXNwYXRjaFF1ZXVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxk
aXNwYXRjaF9xdWV1ZV90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoUXVldWUpKTsK
K30KKworLy8gbWV0aG9kOiBub3RpZnlMaXN0ZW5lcjphdFZhbHVlOmJsb2NrOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlNoYXJlZEV2ZW50Ojpub3RpZnlMaXN0ZW5lcihjb25zdCBNVEw6OlNoYXJl
ZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCB1aW50NjRfdCB2YWx1ZSwgY29uc3QgTVRMOjpTaGFy
ZWRFdmVudE5vdGlmaWNhdGlvbkJsb2NrIGJsb2NrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChub3RpZnlMaXN0ZW5lcl9hdFZhbHVlX2Js
b2NrXyksIGxpc3RlbmVyLCB2YWx1ZSwgYmxvY2spOworfQorCisvLyBtZXRob2Q6IG5ld1NoYXJl
ZEV2ZW50SGFuZGxlCitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50SGFuZGxlKiBNVEw6OlNo
YXJlZEV2ZW50OjpuZXdTaGFyZWRFdmVudEhhbmRsZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpTaGFyZWRFdmVudEhhbmRsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3U2hhcmVkRXZlbnRIYW5kbGUpKTsKK30KKworLy8gcHJvcGVydHk6IHNpZ25hbGVkVmFs
dWUKK19NVExfSU5MSU5FIHVpbnQ2NF90IE1UTDo6U2hhcmVkRXZlbnQ6OnNpZ25hbGVkVmFsdWUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQ2NF90Pih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNpZ25hbGVkVmFsdWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlNoYXJlZEV2ZW50OjpzZXRTaWduYWxlZFZhbHVlKHVpbnQ2NF90IHNpZ25hbGVkVmFs
dWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFNpZ25hbGVkVmFsdWVfKSwgc2lnbmFsZWRWYWx1ZSk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50SGFuZGxlKiBNVEw6OlNo
YXJlZEV2ZW50SGFuZGxlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6U2hhcmVkRXZlbnRIYW5kbGU+KF9NVExfUFJJVkFURV9DTFMoTVRMU2hhcmVkRXZlbnRI
YW5kbGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2
ZW50SGFuZGxlKiBNVEw6OlNoYXJlZEV2ZW50SGFuZGxlOjppbml0KCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6aW5pdDxNVEw6OlNoYXJlZEV2ZW50SGFuZGxlPigpOworfQorCisvLyBwcm9w
ZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6U2hhcmVkRXZlbnRIYW5k
bGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZlbmNlLmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGZW5jZS5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmM2ZTkzMTRlNTM5MzVkMjQxNjYxOWVjYjAzMDAzNjA4ZjRjOGY1ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGZW5jZS5ocHAKQEAg
LTAsMCArMSw1NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWV0YWwvTVRMRmVuY2UuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAy
MSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5j
bHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKwor
I2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sK
K2NsYXNzIEZlbmNlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGZW5jZT4KK3sKK3B1YmxpYzoK
KyAgICBjbGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICBs
YWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmlu
ZyogbGFiZWwpOworfTsKKworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBN
VEw6OkRldmljZSogTVRMOjpGZW5jZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2
aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyog
TVRMOjpGZW5jZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpGZW5jZTo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFi
ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzLmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkNvbnN0YW50VmFsdWVz
LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NjA4NTU0ZWM0NjJiN2E1NGIyN2U3ZmRiMjMzMzNjNzYwMWEzMzFh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwCkBAIC0wLDAgKzEsODUgQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEZ1
bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBs
ZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAi
TVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1
ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExBcmd1bWVudC5o
cHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMgOiBw
dWJsaWMgTlM6OkNvcHlpbmc8RnVuY3Rpb25Db25zdGFudFZhbHVlcz4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25Db25zdGFudFZhbHVlcyogYWxsb2MoKTsKKworICAgIGNs
YXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqICAgICAgICBpbml0KCk7CisKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnRWYWx1ZShjb25zdCB2b2lk
KiB2YWx1ZSwgTVRMOjpEYXRhVHlwZSB0eXBlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50VmFsdWVzKGNv
bnN0IHZvaWQqIHZhbHVlcywgTVRMOjpEYXRhVHlwZSB0eXBlLCBOUzo6UmFuZ2UgcmFuZ2UpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50VmFs
dWUoY29uc3Qgdm9pZCogdmFsdWUsIE1UTDo6RGF0YVR5cGUgdHlwZSwgY29uc3QgTlM6OlN0cmlu
ZyogbmFtZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
ZXQoKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6RnVuY3Rpb25Db25zdGFudFZhbHVlcyogTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzOjph
bGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25Db25z
dGFudFZhbHVlcz4oX01UTF9QUklWQVRFX0NMUyhNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkNvbnN0YW50
VmFsdWVzKiBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6OmluaXQoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlcz4oKTsKK30KKwor
Ly8gbWV0aG9kOiBzZXRDb25zdGFudFZhbHVlOnR5cGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzOjpzZXRDb25zdGFudFZhbHVlKGNvbnN0IHZv
aWQqIHZhbHVlLCBNVEw6OkRhdGFUeXBlIHR5cGUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29u
c3RhbnRWYWx1ZV90eXBlX2F0SW5kZXhfKSwgdmFsdWUsIHR5cGUsIGluZGV4KTsKK30KKworLy8g
bWV0aG9kOiBzZXRDb25zdGFudFZhbHVlczp0eXBlOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzOjpzZXRDb25zdGFudFZhbHVlcyhjb25zdCB2
b2lkKiB2YWx1ZXMsIE1UTDo6RGF0YVR5cGUgdHlwZSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb25z
dGFudFZhbHVlc190eXBlX3dpdGhSYW5nZV8pLCB2YWx1ZXMsIHR5cGUsIHJhbmdlKTsKK30KKwor
Ly8gbWV0aG9kOiBzZXRDb25zdGFudFZhbHVlOnR5cGU6d2l0aE5hbWU6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlczo6c2V0Q29uc3RhbnRWYWx1ZShjb25zdCB2
b2lkKiB2YWx1ZSwgTVRMOjpEYXRhVHlwZSB0eXBlLCBjb25zdCBOUzo6U3RyaW5nKiBuYW1lKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRDb25zdGFudFZhbHVlX3R5cGVfd2l0aE5hbWVfKSwgdmFsdWUsIHR5cGUsIG5hbWUpOworfQor
CisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25Db25zdGFu
dFZhbHVlczo6cmVzZXQoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChyZXNldCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNmYwMGQ2NzgzNGJkYmIzOTg2OGU1NGY5M2ZmOTNhZTU2YWFlZTI3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1
bmN0aW9uRGVzY3JpcHRvci5ocHAKQEAgLTAsMCArMSwxNTYgQEAKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEZ1bmN0aW9uRGVz
Y3JpcHRvci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlk
Z2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAi
CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIEZ1bmN0aW9u
T3B0aW9ucykgeworICAgIEZ1bmN0aW9uT3B0aW9uTm9uZSA9IDAsCisgICAgRnVuY3Rpb25PcHRp
b25Db21waWxlVG9CaW5hcnkgPSAxLAorfTsKKworY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yIDog
cHVibGljIE5TOjpDb3B5aW5nPEZ1bmN0aW9uRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVu
Y3Rpb25EZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIEZ1bmN0
aW9uRGVzY3JpcHRvciogZnVuY3Rpb25EZXNjcmlwdG9yKCk7CisKKyAgICBOUzo6U3RyaW5nKiAg
ICAgICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0TmFtZShjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKKworICAgIE5T
OjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWxpemVkTmFtZSgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNwZWNpYWxpemVkTmFtZShj
b25zdCBOUzo6U3RyaW5nKiBzcGVjaWFsaXplZE5hbWUpOworCisgICAgY2xhc3MgRnVuY3Rpb25D
b25zdGFudFZhbHVlcyogICAgY29uc3RhbnRWYWx1ZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudFZhbHVlcyhjb25zdCBjbGFzcyBGdW5j
dGlvbkNvbnN0YW50VmFsdWVzKiBjb25zdGFudFZhbHVlcyk7CisKKyAgICBNVEw6OkZ1bmN0aW9u
T3B0aW9ucyAgICAgICAgICAgICBvcHRpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0T3B0aW9ucyhNVEw6OkZ1bmN0aW9uT3B0aW9ucyBvcHRpb25z
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeUFyY2hpdmVz
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QmluYXJ5
QXJjaGl2ZXMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcyk7Cit9OworCitjbGFzcyBJ
bnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SW50ZXJz
ZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yLCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcj4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiAgICAg
ICAgaW5pdCgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJ
TkUgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjphbGxv
YygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25EZXNjcmlw
dG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEZ1bmN0aW9uRGVzY3JpcHRvcikpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yKiBNVEw6OkZ1
bmN0aW9uRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8
TVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGZ1bmN0
aW9uRGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6
RnVuY3Rpb25EZXNjcmlwdG9yOjpmdW5jdGlvbkRlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yKj4oX01UTF9QUklWQVRF
X0NMUyhNVExGdW5jdGlvbkRlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uRGVz
Y3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmlu
ZyogTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5h
bWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6c2V0
TmFtZShjb25zdCBOUzo6U3RyaW5nKiBuYW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXROYW1lXyksIG5hbWUpOworfQorCisvLyBw
cm9wZXJ0eTogc3BlY2lhbGl6ZWROYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1
bmN0aW9uRGVzY3JpcHRvcjo6c3BlY2lhbGl6ZWROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
cGVjaWFsaXplZE5hbWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uRGVz
Y3JpcHRvcjo6c2V0U3BlY2lhbGl6ZWROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIHNwZWNpYWxpemVk
TmFtZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0U3BlY2lhbGl6ZWROYW1lXyksIHNwZWNpYWxpemVkTmFtZSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBjb25zdGFudFZhbHVlcworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkNvbnN0YW50
VmFsdWVzKiBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6Y29uc3RhbnRWYWx1ZXMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25Db25zdGFudFZh
bHVlcyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29uc3RhbnRWYWx1ZXMpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6c2V0Q29uc3RhbnRWYWx1ZXMo
Y29uc3QgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBjb25zdGFudFZhbHVlcykKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29u
c3RhbnRWYWx1ZXNfKSwgY29uc3RhbnRWYWx1ZXMpOworfQorCisvLyBwcm9wZXJ0eTogb3B0aW9u
cworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbk9wdGlvbnMgTVRMOjpGdW5jdGlvbkRlc2NyaXB0
b3I6Om9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6RnVuY3Rpb25PcHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9wdGlvbnMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6c2V0T3B0aW9ucyhN
VEw6OkZ1bmN0aW9uT3B0aW9ucyBvcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPcHRpb25zXyksIG9wdGlvbnMpOworfQor
CisvLyBwcm9wZXJ0eTogYmluYXJ5QXJjaGl2ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRM
OjpGdW5jdGlvbkRlc2NyaXB0b3I6OmJpbmFyeUFyY2hpdmVzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGJpbmFyeUFyY2hpdmVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkRl
c2NyaXB0b3I6OnNldEJpbmFyeUFyY2hpdmVzKGNvbnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2
ZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEJpbmFyeUFyY2hpdmVzXyksIGJpbmFyeUFyY2hpdmVzKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNj
cmlwdG9yKiBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvcjo6YWxsb2MoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uRGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0
b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkludGVyc2VjdGlv
bkZ1bmN0aW9uRGVzY3JpcHRvciogTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3I6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25EZXNjcmlwdG9yPigpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uSGFuZGxlLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkhhbmRsZS5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjRmMzg1MTQzN2M3MWU4MGRhOTg3ZWVjZTk4YmQxYTgwOGMzZTJkNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkhhbmRs
ZS5ocHAKQEAgLTAsMCArMSw2MSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUuaHBwCisvLworLy8g
Q29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRM
RGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJN
VExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisK
KyNpbmNsdWRlICJNVExMaWJyYXJ5LmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgRnVu
Y3Rpb25IYW5kbGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uSGFuZGxlPgorewor
cHVibGljOgorICAgIE1UTDo6RnVuY3Rpb25UeXBlIGZ1bmN0aW9uVHlwZSgpIGNvbnN0OworCisg
ICAgTlM6OlN0cmluZyogICAgICAgbmFtZSgpIGNvbnN0OworCisgICAgY2xhc3MgRGV2aWNlKiAg
ICAgZGV2aWNlKCkgY29uc3Q7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvblR5cGUK
K19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25UeXBlIE1UTDo6RnVuY3Rpb25IYW5kbGU6OmZ1bmN0
aW9uVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpG
dW5jdGlvblR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25UeXBlKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9u
SGFuZGxlOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkZ1bmN0aW9uSGFuZGxl
OjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Mb2cuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNhMzhkYzlkYWJkNjFlYWJiZWZlMGU0YmRjMzVlMjkzZTI3MDgxNTYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RnVuY3Rpb25Mb2cuaHBwCkBAIC0wLDAgKzEsMTE0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExGdW5jdGlvbkxvZy5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2lu
Y2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
LmhwcD4KKworI2luY2x1ZGUgIk1UTEZ1bmN0aW9uTG9nLmhwcCIKKworbmFtZXNwYWNlIE1UTAor
eworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgRnVuY3Rpb25Mb2dUeXBlKSB7CisgICAgRnVuY3Rp
b25Mb2dUeXBlVmFsaWRhdGlvbiA9IDAsCit9OworCitjbGFzcyBMb2dDb250YWluZXIgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPExvZ0NvbnRhaW5lciwgTlM6OkZhc3RFbnVtZXJhdGlvbj4KK3sK
K3B1YmxpYzoKK307CisKK2NsYXNzIEZ1bmN0aW9uTG9nRGVidWdMb2NhdGlvbiA6IHB1YmxpYyBO
Uzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uPgoreworcHVibGljOgorICAg
IE5TOjpTdHJpbmcqICBmdW5jdGlvbk5hbWUoKSBjb25zdDsKKworICAgIE5TOjpVUkwqICAgICBV
UkwoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciBsaW5lKCkgY29uc3Q7CisKKyAgICBOUzo6
VUludGVnZXIgY29sdW1uKCkgY29uc3Q7Cit9OworCitjbGFzcyBGdW5jdGlvbkxvZyA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25Mb2c+Cit7CitwdWJsaWM6CisgICAgTVRMOjpGdW5j
dGlvbkxvZ1R5cGUgICAgICAgICAgICB0eXBlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAg
ICAgICAgICAgICAgICAgICAgIGVuY29kZXJMYWJlbCgpIGNvbnN0OworCisgICAgY2xhc3MgRnVu
Y3Rpb24qICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIGNvbnN0OworCisgICAgY2xhc3MgRnVu
Y3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uKiBkZWJ1Z0xvY2F0aW9uKCkgY29uc3Q7Cit9OworCit9CisK
Ky8vIHByb3BlcnR5OiBmdW5jdGlvbk5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6
RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uOjpmdW5jdGlvbk5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGZ1bmN0aW9uTmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTogVVJMCitfTVRMX0lOTElORSBO
Uzo6VVJMKiBNVEw6OkZ1bmN0aW9uTG9nRGVidWdMb2NhdGlvbjo6VVJMKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VVJMKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChVUkwpKTsKK30KKworLy8gcHJvcGVydHk6IGxpbmUKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OkZ1bmN0aW9uTG9nRGVidWdMb2NhdGlvbjo6bGluZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGxpbmUpKTsKK30KKworLy8gcHJvcGVydHk6IGNvbHVtbgorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6RnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uOjpjb2x1bW4oKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChjb2x1bW4pKTsKK30KKworLy8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5M
SU5FIE1UTDo6RnVuY3Rpb25Mb2dUeXBlIE1UTDo6RnVuY3Rpb25Mb2c6OnR5cGUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25Mb2dUeXBlPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGVuY29kZXJM
YWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5jdGlvbkxvZzo6ZW5jb2Rlckxh
YmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5n
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmNvZGVyTGFiZWwpKTsKK30KKworLy8gcHJvcGVy
dHk6IGZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6OkZ1bmN0aW9uTG9n
OjpmdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpGdW5jdGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb24pKTsKK30KKworLy8g
cHJvcGVydHk6IGRlYnVnTG9jYXRpb24KK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25Mb2dEZWJ1
Z0xvY2F0aW9uKiBNVEw6OkZ1bmN0aW9uTG9nOjpkZWJ1Z0xvY2F0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uTG9nRGVidWdMb2NhdGlv
bio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVidWdMb2NhdGlvbikpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3RpdGNo
aW5nLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlv
blN0aXRjaGluZy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlkY2I0OTZjZWQ2YmQ3YTMyYjUxNmMyYjJmMzU2
NWM3OWI2MWRkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExGdW5jdGlvblN0aXRjaGluZy5ocHAKQEAgLTAsMCArMSwzMDUgQEAKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFs
L01UTEZ1bmN0aW9uU3RpdGNoaW5nLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUg
Ik1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNs
dWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25T
dGl0Y2hpbmcuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBGdW5jdGlvblN0aXRjaGlu
Z0F0dHJpYnV0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25TdGl0Y2hpbmdBdHRy
aWJ1dGU+Cit7Cit9OworCitjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lu
bGluZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVB
bHdheXNJbmxpbmUsIEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlPgoreworcHVibGljOgorICAg
IHN0YXRpYyBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZSogYWxs
b2MoKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5l
KiAgICAgICAgaW5pdCgpOworfTsKKworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdOb2RlIDogcHVi
bGljIE5TOjpDb3B5aW5nPEZ1bmN0aW9uU3RpdGNoaW5nTm9kZT4KK3sKK307CisKK2NsYXNzIEZ1
bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlv
blN0aXRjaGluZ0lucHV0Tm9kZSwgRnVuY3Rpb25TdGl0Y2hpbmdOb2RlPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlKiAgICAgICAgaW5pdCgpOworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEluZGV4
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRBcmd1bWVudEluZGV4KE5TOjpVSW50ZWdlciBhcmd1bWVudEluZGV4KTsKKworICAgIE1UTDo6
RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUqICAgICAgICAgaW5pdChOUzo6VUludGVnZXIgYXJn
dW1lbnQpOworfTsKKworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlLCBGdW5jdGlv
blN0aXRjaGluZ05vZGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEZ1bmN0aW9uU3Rp
dGNoaW5nRnVuY3Rpb25Ob2RlKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0Y2hp
bmdGdW5jdGlvbk5vZGUqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE5hbWUoY29uc3QgTlM6OlN0cmluZyog
bmFtZSk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ3VtZW50cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0QXJndW1lbnRzKGNvbnN0IE5TOjpBcnJheSogYXJndW1lbnRzKTsKKwor
ICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbERl
cGVuZGVuY2llcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0Q29udHJvbERlcGVuZGVuY2llcyhjb25zdCBOUzo6QXJyYXkqIGNvbnRy
b2xEZXBlbmRlbmNpZXMpOworCisgICAgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9k
ZSogICAgICAgICBpbml0KGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUsIGNvbnN0IE5TOjpBcnJheSog
YXJndW1lbnRzLCBjb25zdCBOUzo6QXJyYXkqIGNvbnRyb2xEZXBlbmRlbmNpZXMpOworfTsKKwor
Y2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdHcmFwaCA6IHB1YmxpYyBOUzo6Q29weWluZzxGdW5jdGlv
blN0aXRjaGluZ0dyYXBoPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvblN0
aXRjaGluZ0dyYXBoKiBhbGxvYygpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdHcmFw
aCogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbk5hbWUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RnVuY3Rpb25OYW1lKGNvbnN0IE5TOjpTdHJpbmcqIGZ1bmN0aW9uTmFt
ZSk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Tm9kZXMo
Y29uc3QgTlM6OkFycmF5KiBub2Rlcyk7CisKKyAgICBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0Z1
bmN0aW9uTm9kZSogb3V0cHV0Tm9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRPdXRwdXROb2RlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uU3RpdGNo
aW5nRnVuY3Rpb25Ob2RlKiBvdXRwdXROb2RlKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZXMoY29uc3QgTlM6OkFycmF5KiBhdHRy
aWJ1dGVzKTsKKworICAgIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaCogICAgICAgICBpbml0
KGNvbnN0IE5TOjpTdHJpbmcqIGZ1bmN0aW9uTmFtZSwgY29uc3QgTlM6OkFycmF5KiBub2Rlcywg
Y29uc3QgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIG91dHB1dE5vZGUsIGNv
bnN0IE5TOjpBcnJheSogYXR0cmlidXRlcyk7Cit9OworCitjbGFzcyBTdGl0Y2hlZExpYnJhcnlE
ZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiAgICAgICAg
aW5pdCgpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uR3JhcGhzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEZ1bmN0aW9uR3JhcGhzKGNvbnN0IE5TOjpBcnJheSogZnVuY3Rpb25HcmFw
aHMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbnMpOworfTsKKworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGlu
Z0F0dHJpYnV0ZUFsd2F5c0lubGluZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFs
d2F5c0lubGluZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OkZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFs
d2F5c0lubGluZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZTo6
aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlvblN0aXRj
aGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZT4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxs
b2MKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUqIE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6YWxsb2M8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZT4oX01UTF9QUklWQVRFX0NM
UyhNVExGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUqIE1UTDo6RnVuY3Rp
b25TdGl0Y2hpbmdJbnB1dE5vZGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiBhcmd1bWVudEluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpGdW5jdGlvblN0
aXRjaGluZ0lucHV0Tm9kZTo6YXJndW1lbnRJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFy
Z3VtZW50SW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNo
aW5nSW5wdXROb2RlOjpzZXRBcmd1bWVudEluZGV4KE5TOjpVSW50ZWdlciBhcmd1bWVudEluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRBcmd1bWVudEluZGV4XyksIGFyZ3VtZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IGlu
aXRXaXRoQXJndW1lbnRJbmRleDoKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJ
bnB1dE5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU6OmluaXQoTlM6OlVJbnRl
Z2VyIGFyZ3VtZW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluaXRXaXRo
QXJndW1lbnRJbmRleF8pLCBhcmd1bWVudCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU+KF9NVExfUFJJ
VkFURV9DTFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2Rl
KiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlPigp
OworfQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpG
dW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmFtZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5j
dGlvbk5vZGU6OnNldE5hbWUoY29uc3QgTlM6OlN0cmluZyogbmFtZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TmFtZV8pLCBuYW1l
KTsKK30KKworLy8gcHJvcGVydHk6IGFyZ3VtZW50cworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBN
VEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlOjphcmd1bWVudHMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYXJndW1lbnRzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlv
blN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6c2V0QXJndW1lbnRzKGNvbnN0IE5TOjpBcnJheSogYXJn
dW1lbnRzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRBcmd1bWVudHNfKSwgYXJndW1lbnRzKTsKK30KKworLy8gcHJvcGVydHk6IGNv
bnRyb2xEZXBlbmRlbmNpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpGdW5jdGlvblN0
aXRjaGluZ0Z1bmN0aW9uTm9kZTo6Y29udHJvbERlcGVuZGVuY2llcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChjb250cm9sRGVwZW5kZW5jaWVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpG
dW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6c2V0Q29udHJvbERlcGVuZGVuY2llcyhjb25z
dCBOUzo6QXJyYXkqIGNvbnRyb2xEZXBlbmRlbmNpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnRyb2xEZXBlbmRlbmNpZXNf
KSwgY29udHJvbERlcGVuZGVuY2llcyk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhOYW1lOmFy
Z3VtZW50czpjb250cm9sRGVwZW5kZW5jaWVzOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0
aXRjaGluZ0Z1bmN0aW9uTm9kZSogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6
aW5pdChjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBOUzo6QXJyYXkqIGFyZ3VtZW50cywg
Y29uc3QgTlM6OkFycmF5KiBjb250cm9sRGVwZW5kZW5jaWVzKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGluaXRXaXRoTmFtZV9hcmd1bWVudHNfY29udHJvbERlcGVuZGVu
Y2llc18pLCBuYW1lLCBhcmd1bWVudHMsIGNvbnRyb2xEZXBlbmRlbmNpZXMpOworfQorCisvLyBz
dGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dy
YXBoKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgpKTsKK30KKworLy8gbWV0aG9kOiBpbml0
CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqIE1UTDo6RnVuY3Rpb25T
dGl0Y2hpbmdHcmFwaDo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoPigpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25O
YW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg6
OmZ1bmN0aW9uTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25OYW1lKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpzZXRGdW5jdGlv
bk5hbWUoY29uc3QgTlM6OlN0cmluZyogZnVuY3Rpb25OYW1lKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGdW5jdGlvbk5hbWVfKSwg
ZnVuY3Rpb25OYW1lKTsKK30KKworLy8gcHJvcGVydHk6IG5vZGVzCitfTVRMX0lOTElORSBOUzo6
QXJyYXkqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6bm9kZXMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobm9kZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNo
aW5nR3JhcGg6OnNldE5vZGVzKGNvbnN0IE5TOjpBcnJheSogbm9kZXMpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE5vZGVzXyksIG5v
ZGVzKTsKK30KKworLy8gcHJvcGVydHk6IG91dHB1dE5vZGUKK19NVExfSU5MSU5FIE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6
b3V0cHV0Tm9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
b3V0cHV0Tm9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hp
bmdHcmFwaDo6c2V0T3V0cHV0Tm9kZShjb25zdCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rp
b25Ob2RlKiBvdXRwdXROb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRPdXRwdXROb2RlXyksIG91dHB1dE5vZGUpOworfQorCisv
LyBwcm9wZXJ0eTogYXR0cmlidXRlcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkZ1bmN0
aW9uU3RpdGNoaW5nR3JhcGg6OmF0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0cmli
dXRlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFw
aDo6c2V0QXR0cmlidXRlcyhjb25zdCBOUzo6QXJyYXkqIGF0dHJpYnV0ZXMpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEF0dHJpYnV0
ZXNfKSwgYXR0cmlidXRlcyk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhGdW5jdGlvbk5hbWU6
bm9kZXM6b3V0cHV0Tm9kZTphdHRyaWJ1dGVzOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0
aXRjaGluZ0dyYXBoKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg6OmluaXQoY29uc3QgTlM6
OlN0cmluZyogZnVuY3Rpb25OYW1lLCBjb25zdCBOUzo6QXJyYXkqIG5vZGVzLCBjb25zdCBNVEw6
OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBvdXRwdXROb2RlLCBjb25zdCBOUzo6QXJy
YXkqIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpG
dW5jdGlvblN0aXRjaGluZ0dyYXBoKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbml0V2l0aEZ1
bmN0aW9uTmFtZV9ub2Rlc19vdXRwdXROb2RlX2F0dHJpYnV0ZXNfKSwgZnVuY3Rpb25OYW1lLCBu
b2Rlcywgb3V0cHV0Tm9kZSwgYXR0cmlidXRlcyk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIE1UTDo6U3Rp
dGNoZWRMaWJyYXJ5RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMo
TVRMU3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogTVRMOjpTdGl0Y2hlZExp
YnJhcnlEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBmdW5j
dGlvbkdyYXBocworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlN0aXRjaGVkTGlicmFyeURl
c2NyaXB0b3I6OmZ1bmN0aW9uR3JhcGhzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uR3Jh
cGhzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlw
dG9yOjpzZXRGdW5jdGlvbkdyYXBocyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9uR3JhcGhzKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRGdW5jdGlvbkdyYXBoc18pLCBmdW5jdGlvbkdyYXBocyk7Cit9CisKKy8vIHByb3BlcnR5OiBm
dW5jdGlvbnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNj
cmlwdG9yOjpmdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25zKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yOjpzZXRGdW5j
dGlvbnMoY29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uc18pLCBmdW5jdGlv
bnMpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEhlYWRlckJyaWRnZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMSGVhZGVyQnJpZGdlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTAwODVkZGE1N2I0MWUzOTQwODMz
ODJjMGI5OTAyY2M1MTM0ZTM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEhlYWRlckJyaWRnZS5ocHAKQEAgLTAsMCArMSwyMDQ3IEBA
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBN
ZXRhbC9NVExIZWFkZXJCcmlkZ2UuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBs
ZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNwcmFnbWEgb25jZQorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCituYW1lc3BhY2Ug
TVRMOjpQcml2YXRlOjpDbGFzcworeworCitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcik7CitfTVRMX1BSSVZB
VEVfREVGX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKTsKK19NVExfUFJJ
VkFURV9ERUZfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3Vu
ZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcik7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5
RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBcmd1bWVudCk7CitfTVRMX1BS
SVZBVEVfREVGX0NMUyhNVExBcmd1bWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9D
TFMoTVRMQXJyYXlUeXBlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEF0dHJpYnV0ZSk7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExBdHRyaWJ1dGVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFU
RV9ERUZfQ0xTKE1UTEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhN
VExCbGl0UGFzc0Rlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQmxpdFBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhN
VExCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMQnVmZmVyTGF5b3V0RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVf
REVGX0NMUyhNVExCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMQ2FwdHVyZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ2Fw
dHVyZU1hbmFnZXIpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tbWFuZEJ1ZmZlckRlc2Ny
aXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tcGlsZU9wdGlvbnMpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMQ29tcHV0ZVBhc3NEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9E
RUZfQ0xTKE1UTENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpOwor
X01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTENvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ29tcHV0ZVBpcGVsaW5lUmVm
bGVjdGlvbik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDb3VudGVyU2FtcGxlQnVmZmVyRGVz
Y3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEZ1bmN0aW9uQ29uc3RhbnQpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcyk7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExGdW5jdGlvbkRlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMRnVu
Y3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdheXNJbmxpbmUpOworX01UTF9QUklWQVRFX0RFRl9D
TFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUpOworX01UTF9QUklWQVRFX0RFRl9D
TFMoTVRMRnVuY3Rpb25TdGl0Y2hpbmdHcmFwaCk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExG
dW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExIZWFw
RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExJbmRpcmVjdENvbW1hbmRCdWZm
ZXJEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEluc3RhbmNlQWNjZWxlcmF0
aW9uU3RydWN0dXJlRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExJbnRlcnNl
Y3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMSW50ZXJz
ZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
TGlua2VkRnVuY3Rpb25zKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTE1vdGlvbktleWZyYW1l
RGF0YSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3Ip
OworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkp
OworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUG9pbnRlclR5cGUpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcik7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc0Rl
c2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9E
RUZfQ0xTKE1UTFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQaXBlbGluZUZ1bmN0
aW9uc0Rlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGlwZWxpbmVS
ZWZsZWN0aW9uKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlc291cmNlU3RhdGVQYXNzRGVz
Y3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZXNvdXJjZVN0YXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJl
c291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSk7Citf
TVRMX1BSSVZBVEVfREVGX0NMUyhNVExTYW1wbGVyRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVf
REVGX0NMUyhNVExTaGFyZWRFdmVudEhhbmRsZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExT
aGFyZWRFdmVudExpc3RlbmVyKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFNoYXJlZFRleHR1
cmVIYW5kbGUpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMU3RhZ2VJbnB1dE91dHB1dERlc2Ny
aXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMU3RlbmNpbERlc2NyaXB0b3IpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMU3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcik7CitfTVRMX1BS
SVZBVEVfREVGX0NMUyhNVExTdHJ1Y3RNZW1iZXIpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
U3RydWN0VHlwZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExUZXh0dXJlRGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExUZXh0dXJlUmVmZXJlbmNlVHlwZSk7CitfTVRMX1BS
SVZBVEVfREVGX0NMUyhNVExUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExUaWxlUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFR5cGUpOwor
X01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmVydGV4QXR0cmlidXRlKTsKK19NVExfUFJJVkFURV9E
RUZfQ0xTKE1UTFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9D
TFMoTVRMVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9D
TFMoTVRMVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9E
RUZfQ0xTKE1UTFZlcnRleERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVmlz
aWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKTsKKworfQorCituYW1lc3BhY2UgTVRMOjpQcml2
YXRlOjpQcm90b2NvbAoreworCitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExBY2NlbGVyYXRpb25T
dHJ1Y3R1cmUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJl
Q29tbWFuZEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQXJndW1lbnRFbmNvZGVy
KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEJpbmFyeUFyY2hpdmUpOworX01UTF9QUklWQVRF
X0RFRl9QUk8oTVRMQmxpdENvbW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1U
TEJ1ZmZlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExDb21tYW5kQnVmZmVyKTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTENvbW1hbmRCdWZmZXJFbmNvZGVySW5mbyk7CitfTVRMX1BSSVZB
VEVfREVGX1BSTyhNVExDb21tYW5kRW5jb2Rlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExD
b21tYW5kUXVldWUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ29tcHV0ZUNvbW1hbmRFbmNv
ZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvbXB1dGVQaXBlbGluZVN0YXRlKTsKK19N
VExfUFJJVkFURV9ERUZfUFJPKE1UTENvdW50ZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRM
Q291bnRlclNhbXBsZUJ1ZmZlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExDb3VudGVyU2V0
KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTERlcHRoU3RlbmNpbFN0YXRlKTsKK19NVExfUFJJ
VkFURV9ERUZfUFJPKE1UTERldmljZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExEcmF3YWJs
ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExEeW5hbWljTGlicmFyeSk7CitfTVRMX1BSSVZB
VEVfREVGX1BSTyhNVExFdmVudCk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGZW5jZSk7Citf
TVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvbik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhN
VExGdW5jdGlvbkhhbmRsZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvbkxvZyk7
CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24pOworX01U
TF9QUklWQVRFX0RFRl9QUk8oTVRMRnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGUpOworX01UTF9Q
UklWQVRFX0RFRl9QUk8oTVRMRnVuY3Rpb25TdGl0Y2hpbmdOb2RlKTsKK19NVExfUFJJVkFURV9E
RUZfUFJPKE1UTEhlYXApOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMSW5kaXJlY3RDb21tYW5k
QnVmZmVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEluZGlyZWN0Q29tcHV0ZUNvbW1hbmQp
OworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMSW5kaXJlY3RSZW5kZXJDb21tYW5kKTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUpOworX01UTF9QUklW
QVRFX0RFRl9QUk8oTVRMTGlicmFyeSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExMb2dDb250
YWluZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5j
b2Rlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExSYXN0ZXJpemF0aW9uUmF0ZU1hcCk7Citf
TVRMX1BSSVZBVEVfREVGX1BSTyhNVExSZW5kZXJDb21tYW5kRW5jb2Rlcik7CitfTVRMX1BSSVZB
VEVfREVGX1BSTyhNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsKK19NVExfUFJJVkFURV9ERUZfUFJP
KE1UTFJlc291cmNlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTFJlc291cmNlU3RhdGVDb21t
YW5kRW5jb2Rlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExTYW1wbGVyU3RhdGUpOworX01U
TF9QUklWQVRFX0RFRl9QUk8oTVRMU2hhcmVkRXZlbnQpOworX01UTF9QUklWQVRFX0RFRl9QUk8o
TVRMVGV4dHVyZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExWaXNpYmxlRnVuY3Rpb25UYWJs
ZSk7CisKK30KKworbmFtZXNwYWNlIE1UTDo6UHJpdmF0ZTo6U2VsZWN0b3IKK3sKKworX01UTF9Q
UklWQVRFX0RFRl9TRUwoR1BVRW5kVGltZSwKKyAgICAiR1BVRW5kVGltZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoR1BVU3RhcnRUaW1lLAorICAgICJHUFVTdGFydFRpbWUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKFVSTCwKKyAgICAiVVJMIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciwKKyAgICAiYWNjZWxlcmF0aW9uU3RydWN0
dXJlQ29tbWFuZEVuY29kZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFjY2VsZXJhdGlvblN0
cnVjdHVyZVNpemVzV2l0aERlc2NyaXB0b3JfLAorICAgICJhY2NlbGVyYXRpb25TdHJ1Y3R1cmVT
aXplc1dpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWNjZXNzLAorICAg
ICJhY2Nlc3MiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFkZENvbXBsZXRlZEhhbmRsZXJfLAor
ICAgICJhZGRDb21wbGV0ZWRIYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWRkQ29t
cHV0ZVBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJhZGRDb21w
dXRlUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGFkZERlYnVnTWFya2VyX3JhbmdlXywKKyAgICAiYWRkRGVidWdNYXJrZXI6cmFu
Z2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRGdW5jdGlvbldpdGhEZXNjcmlwdG9yX2xp
YnJhcnlfZXJyb3JfLAorICAgICJhZGRGdW5jdGlvbldpdGhEZXNjcmlwdG9yOmxpYnJhcnk6ZXJy
b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRQcmVzZW50ZWRIYW5kbGVyXywKKyAgICAi
YWRkUHJlc2VudGVkSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFkZFJlbmRlclBp
cGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJhZGRSZW5kZXJQaXBl
bGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoYWRkU2NoZWR1bGVkSGFuZGxlcl8sCisgICAgImFkZFNjaGVkdWxlZEhhbmRsZXI6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChhZGRUaWxlUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVz
Y3JpcHRvcl9lcnJvcl8sCisgICAgImFkZFRpbGVSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhE
ZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWxpZ25tZW50LAorICAg
ICJhbGlnbm1lbnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFsbG9jYXRlZFNpemUsCisgICAg
ImFsbG9jYXRlZFNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFsbG93RHVwbGljYXRlSW50
ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uLAorICAgICJhbGxvd0R1cGxpY2F0ZUludGVyc2Vj
dGlvbkZ1bmN0aW9uSW52b2NhdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWxsb3dHUFVP
cHRpbWl6ZWRDb250ZW50cywKKyAgICAiYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cyIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoYWxwaGFCbGVuZE9wZXJhdGlvbiwKKyAgICAiYWxwaGFCbGVuZE9w
ZXJhdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXJlQmFyeWNlbnRyaWNDb29yZHNTdXBw
b3J0ZWQsCisgICAgImFyZUJhcnljZW50cmljQ29vcmRzU3VwcG9ydGVkIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChhcmVQcm9ncmFtbWFibGVTYW1wbGVQb3NpdGlvbnNTdXBwb3J0ZWQsCisgICAg
ImFyZVByb2dyYW1tYWJsZVNhbXBsZVBvc2l0aW9uc1N1cHBvcnRlZCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYXJlUmFzdGVyT3JkZXJHcm91cHNTdXBwb3J0ZWQsCisgICAgImFyZVJhc3Rlck9y
ZGVyR3JvdXBzU3VwcG9ydGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcmd1bWVudEJ1ZmZl
cnNTdXBwb3J0LAorICAgICJhcmd1bWVudEJ1ZmZlcnNTdXBwb3J0Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChhcmd1bWVudERlc2NyaXB0b3IsCisgICAgImFyZ3VtZW50RGVzY3JpcHRvciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoYXJndW1lbnRJbmRleCwKKyAgICAiYXJndW1lbnRJbmRleCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoYXJndW1lbnRJbmRleFN0cmlkZSwKKyAgICAiYXJndW1l
bnRJbmRleFN0cmlkZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXJndW1lbnRzLAorICAgICJh
cmd1bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFycmF5TGVuZ3RoLAorICAgICJhcnJh
eUxlbmd0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXJyYXlUeXBlLAorICAgICJhcnJheVR5
cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGF0dHJpYnV0ZUluZGV4LAorICAgICJhdHRyaWJ1
dGVJbmRleCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXR0cmlidXRlVHlwZSwKKyAgICAiYXR0
cmlidXRlVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXR0cmlidXRlcywKKyAgICAiYXR0
cmlidXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYmFja0ZhY2VTdGVuY2lsLAorICAgICJi
YWNrRmFjZVN0ZW5jaWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJpbmFyeUFyY2hpdmVzLAor
ICAgICJiaW5hcnlBcmNoaXZlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYmluYXJ5RnVuY3Rp
b25zLAorICAgICJiaW5hcnlGdW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJsaXRD
b21tYW5kRW5jb2RlciwKKyAgICAiYmxpdENvbW1hbmRFbmNvZGVyIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChibGl0Q29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8sCisgICAgImJsaXRDb21t
YW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYmxpdFBh
c3NEZXNjcmlwdG9yLAorICAgICJibGl0UGFzc0Rlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGJvcmRlckNvbG9yLAorICAgICJib3JkZXJDb2xvciIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoYm91bmRpbmdCb3hCdWZmZXIsCisgICAgImJvdW5kaW5nQm94QnVmZmVyIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChib3VuZGluZ0JveEJ1ZmZlck9mZnNldCwKKyAgICAiYm91bmRpbmdC
b3hCdWZmZXJPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJvdW5kaW5nQm94QnVmZmVy
cywKKyAgICAiYm91bmRpbmdCb3hCdWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChib3Vu
ZGluZ0JveENvdW50LAorICAgICJib3VuZGluZ0JveENvdW50Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChib3VuZGluZ0JveFN0cmlkZSwKKyAgICAiYm91bmRpbmdCb3hTdHJpZGUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGJ1ZmZlciwKKyAgICAiYnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChidWZmZXJBbGlnbm1lbnQsCisgICAgImJ1ZmZlckFsaWdubWVudCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoYnVmZmVyQnl0ZXNQZXJSb3csCisgICAgImJ1ZmZlckJ5dGVzUGVyUm93Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZmZXJEYXRhU2l6ZSwKKyAgICAiYnVmZmVyRGF0YVNp
emUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlckRhdGFUeXBlLAorICAgICJidWZmZXJE
YXRhVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVySW5kZXgsCisgICAgImJ1ZmZl
ckluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZmZXJPZmZzZXQsCisgICAgImJ1ZmZl
ck9mZnNldCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVyUG9pbnRlclR5cGUsCisgICAg
ImJ1ZmZlclBvaW50ZXJUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZmZXJTdHJ1Y3RU
eXBlLAorICAgICJidWZmZXJTdHJ1Y3RUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZm
ZXJzLAorICAgICJidWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWlsZEFjY2VsZXJh
dGlvblN0cnVjdHVyZV9kZXNjcmlwdG9yX3NjcmF0Y2hCdWZmZXJfc2NyYXRjaEJ1ZmZlck9mZnNl
dF8sCisgICAgImJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlOmRlc2NyaXB0b3I6c2NyYXRjaEJ1
ZmZlcjpzY3JhdGNoQnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY2FwdHVy
ZU9iamVjdCwKKyAgICAiY2FwdHVyZU9iamVjdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY2xl
YXJCYXJyaWVyLAorICAgICJjbGVhckJhcnJpZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNs
ZWFyQ29sb3IsCisgICAgImNsZWFyQ29sb3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNsZWFy
RGVwdGgsCisgICAgImNsZWFyRGVwdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNsZWFyU3Rl
bmNpbCwKKyAgICAiY2xlYXJTdGVuY2lsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb2xvckF0
dGFjaG1lbnRzLAorICAgICJjb2xvckF0dGFjaG1lbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChjb2x1bW4sCisgICAgImNvbHVtbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWFuZEJ1
ZmZlciwKKyAgICAiY29tbWFuZEJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWFu
ZEJ1ZmZlcldpdGhEZXNjcmlwdG9yXywKKyAgICAiY29tbWFuZEJ1ZmZlcldpdGhEZXNjcmlwdG9y
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWFuZEJ1ZmZlcldpdGhVbnJldGFpbmVkUmVm
ZXJlbmNlcywKKyAgICAiY29tbWFuZEJ1ZmZlcldpdGhVbnJldGFpbmVkUmVmZXJlbmNlcyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWFuZFF1ZXVlLAorICAgICJjb21tYW5kUXVldWUiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGNvbW1hbmRUeXBlcywKKyAgICAiY29tbWFuZFR5cGVzIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21taXQsCisgICAgImNvbW1pdCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoY29tcGFyZUZ1bmN0aW9uLAorICAgICJjb21wYXJlRnVuY3Rpb24iKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNvbXB1dGVDb21tYW5kRW5jb2RlciwKKyAgICAiY29tcHV0ZUNv
bW1hbmRFbmNvZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21wdXRlQ29tbWFuZEVuY29k
ZXJXaXRoRGVzY3JpcHRvcl8sCisgICAgImNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlw
dG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tcHV0ZUNvbW1hbmRFbmNvZGVyV2l0aERp
c3BhdGNoVHlwZV8sCisgICAgImNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEaXNwYXRjaFR5cGU6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb21wdXRlRnVuY3Rpb24sCisgICAgImNvbXB1dGVG
dW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tcHV0ZVBhc3NEZXNjcmlwdG9yLAor
ICAgICJjb21wdXRlUGFzc0Rlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbmN1
cnJlbnREaXNwYXRjaFRocmVhZGdyb3Vwc190aHJlYWRzUGVyVGhyZWFkZ3JvdXBfLAorICAgICJj
b25jdXJyZW50RGlzcGF0Y2hUaHJlYWRncm91cHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY29uY3VycmVudERpc3BhdGNoVGhyZWFkc190aHJlYWRzUGVy
VGhyZWFkZ3JvdXBfLAorICAgICJjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRzOnRocmVhZHNQZXJU
aHJlYWRncm91cDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbnN0YW50QmxvY2tBbGlnbm1l
bnQsCisgICAgImNvbnN0YW50QmxvY2tBbGlnbm1lbnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGNvbnN0YW50RGF0YUF0SW5kZXhfLAorICAgICJjb25zdGFudERhdGFBdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoY29uc3RhbnRWYWx1ZXMsCisgICAgImNvbnN0YW50VmFsdWVzIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb250ZW50cywKKyAgICAiY29udGVudHMiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGNvbnRyb2xEZXBlbmRlbmNpZXMsCisgICAgImNvbnRyb2xEZXBlbmRl
bmNpZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbnZlcnRTcGFyc2VQaXhlbFJlZ2lvbnNf
dG9UaWxlUmVnaW9uc193aXRoVGlsZVNpemVfYWxpZ25tZW50TW9kZV9udW1SZWdpb25zXywKKyAg
ICAiY29udmVydFNwYXJzZVBpeGVsUmVnaW9uczp0b1RpbGVSZWdpb25zOndpdGhUaWxlU2l6ZTph
bGlnbm1lbnRNb2RlOm51bVJlZ2lvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb252ZXJ0
U3BhcnNlVGlsZVJlZ2lvbnNfdG9QaXhlbFJlZ2lvbnNfd2l0aFRpbGVTaXplX251bVJlZ2lvbnNf
LAorICAgICJjb252ZXJ0U3BhcnNlVGlsZVJlZ2lvbnM6dG9QaXhlbFJlZ2lvbnM6d2l0aFRpbGVT
aXplOm51bVJlZ2lvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5QWNjZWxlcmF0aW9u
U3RydWN0dXJlX3RvQWNjZWxlcmF0aW9uU3RydWN0dXJlXywKKyAgICAiY29weUFjY2VsZXJhdGlv
blN0cnVjdHVyZTp0b0FjY2VsZXJhdGlvblN0cnVjdHVyZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGNvcHlBbmRDb21wYWN0QWNjZWxlcmF0aW9uU3RydWN0dXJlX3RvQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlXywKKyAgICAiY29weUFuZENvbXBhY3RBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6dG9BY2Nl
bGVyYXRpb25TdHJ1Y3R1cmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbUJ1ZmZl
cl9zb3VyY2VPZmZzZXRfc291cmNlQnl0ZXNQZXJSb3dfc291cmNlQnl0ZXNQZXJJbWFnZV9zb3Vy
Y2VTaXplX3RvVGV4dHVyZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVzdGlu
YXRpb25PcmlnaW5fLAorICAgICJjb3B5RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6c291cmNlQnl0
ZXNQZXJSb3c6c291cmNlQnl0ZXNQZXJJbWFnZTpzb3VyY2VTaXplOnRvVGV4dHVyZTpkZXN0aW5h
dGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6ZGVzdGluYXRpb25PcmlnaW46Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChjb3B5RnJvbUJ1ZmZlcl9zb3VyY2VPZmZzZXRfc291cmNlQnl0ZXNQZXJS
b3dfc291cmNlQnl0ZXNQZXJJbWFnZV9zb3VyY2VTaXplX3RvVGV4dHVyZV9kZXN0aW5hdGlvblNs
aWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVzdGluYXRpb25PcmlnaW5fb3B0aW9uc18sCisgICAgImNv
cHlGcm9tQnVmZmVyOnNvdXJjZU9mZnNldDpzb3VyY2VCeXRlc1BlclJvdzpzb3VyY2VCeXRlc1Bl
ckltYWdlOnNvdXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25M
ZXZlbDpkZXN0aW5hdGlvbk9yaWdpbjpvcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
Y29weUZyb21CdWZmZXJfc291cmNlT2Zmc2V0X3RvQnVmZmVyX2Rlc3RpbmF0aW9uT2Zmc2V0X3Np
emVfLAorICAgICJjb3B5RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6dG9CdWZmZXI6ZGVzdGluYXRp
b25PZmZzZXQ6c2l6ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvcHlGcm9tVGV4dHVyZV9z
b3VyY2VTbGljZV9zb3VyY2VMZXZlbF9zb3VyY2VPcmlnaW5fc291cmNlU2l6ZV90b0J1ZmZlcl9k
ZXN0aW5hdGlvbk9mZnNldF9kZXN0aW5hdGlvbkJ5dGVzUGVyUm93X2Rlc3RpbmF0aW9uQnl0ZXNQ
ZXJJbWFnZV8sCisgICAgImNvcHlGcm9tVGV4dHVyZTpzb3VyY2VTbGljZTpzb3VyY2VMZXZlbDpz
b3VyY2VPcmlnaW46c291cmNlU2l6ZTp0b0J1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDpkZXN0aW5h
dGlvbkJ5dGVzUGVyUm93OmRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF9zb3VyY2VP
cmlnaW5fc291cmNlU2l6ZV90b0J1ZmZlcl9kZXN0aW5hdGlvbk9mZnNldF9kZXN0aW5hdGlvbkJ5
dGVzUGVyUm93X2Rlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZV9vcHRpb25zXywKKyAgICAiY29weUZy
b21UZXh0dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnNvdXJjZU9yaWdpbjpzb3VyY2VTaXpl
OnRvQnVmZmVyOmRlc3RpbmF0aW9uT2Zmc2V0OmRlc3RpbmF0aW9uQnl0ZXNQZXJSb3c6ZGVzdGlu
YXRpb25CeXRlc1BlckltYWdlOm9wdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5
RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNlTGV2ZWxfc291cmNlT3JpZ2luX3NvdXJjZVNp
emVfdG9UZXh0dXJlX2Rlc3RpbmF0aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9kZXN0aW5hdGlv
bk9yaWdpbl8sCisgICAgImNvcHlGcm9tVGV4dHVyZTpzb3VyY2VTbGljZTpzb3VyY2VMZXZlbDpz
b3VyY2VPcmlnaW46c291cmNlU2l6ZTp0b1RleHR1cmU6ZGVzdGluYXRpb25TbGljZTpkZXN0aW5h
dGlvbkxldmVsOmRlc3RpbmF0aW9uT3JpZ2luOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29w
eUZyb21UZXh0dXJlX3NvdXJjZVNsaWNlX3NvdXJjZUxldmVsX3RvVGV4dHVyZV9kZXN0aW5hdGlv
blNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfc2xpY2VDb3VudF9sZXZlbENvdW50XywKKyAgICAiY29w
eUZyb21UZXh0dXJlOnNvdXJjZVNsaWNlOnNvdXJjZUxldmVsOnRvVGV4dHVyZTpkZXN0aW5hdGlv
blNsaWNlOmRlc3RpbmF0aW9uTGV2ZWw6c2xpY2VDb3VudDpsZXZlbENvdW50OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoY29weUZyb21UZXh0dXJlX3RvVGV4dHVyZV8sCisgICAgImNvcHlGcm9t
VGV4dHVyZTp0b1RleHR1cmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5SW5kaXJlY3RD
b21tYW5kQnVmZmVyX3NvdXJjZVJhbmdlX2Rlc3RpbmF0aW9uX2Rlc3RpbmF0aW9uSW5kZXhfLAor
ICAgICJjb3B5SW5kaXJlY3RDb21tYW5kQnVmZmVyOnNvdXJjZVJhbmdlOmRlc3RpbmF0aW9uOmRl
c3RpbmF0aW9uSW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5UGFyYW1ldGVyRGF0
YVRvQnVmZmVyX29mZnNldF8sCisgICAgImNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXI6b2Zmc2V0
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY291bnRlclNldCwKKyAgICAiY291bnRlclNldCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoY291bnRlclNldHMsCisgICAgImNvdW50ZXJTZXRzIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3VudGVycywKKyAgICAiY291bnRlcnMiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGNwdUNhY2hlTW9kZSwKKyAgICAiY3B1Q2FjaGVNb2RlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChjdXJyZW50QWxsb2NhdGVkU2l6ZSwKKyAgICAiY3VycmVudEFsbG9j
YXRlZFNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRhdGEsCisgICAgImRhdGEiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGRhdGFTaXplLAorICAgICJkYXRhU2l6ZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZGF0YVR5cGUsCisgICAgImRhdGFUeXBlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChkZWFsbG9jLAorICAgICJkZWFsbG9jIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZWJ1
Z0xvY2F0aW9uLAorICAgICJkZWJ1Z0xvY2F0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChk
ZWJ1Z1NpZ25wb3N0cywKKyAgICAiZGVidWdTaWducG9zdHMiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGRlZmF1bHRDYXB0dXJlU2NvcGUsCisgICAgImRlZmF1bHRDYXB0dXJlU2NvcGUiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCwKKyAgICAiZGVmYXVs
dFJhc3RlclNhbXBsZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0aCwKKyAgICAi
ZGVwdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlcHRoQXR0YWNobWVudCwKKyAgICAiZGVw
dGhBdHRhY2htZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0aEF0dGFjaG1lbnRQaXhl
bEZvcm1hdCwKKyAgICAiZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGRlcHRoQ29tcGFyZUZ1bmN0aW9uLAorICAgICJkZXB0aENvbXBhcmVGdW5jdGlv
biIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVwdGhGYWlsdXJlT3BlcmF0aW9uLAorICAgICJk
ZXB0aEZhaWx1cmVPcGVyYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlcHRoUGxhbmUs
CisgICAgImRlcHRoUGxhbmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlcHRoUmVzb2x2ZUZp
bHRlciwKKyAgICAiZGVwdGhSZXNvbHZlRmlsdGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChk
ZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uLAorICAgICJkZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9u
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXNjcmlwdG9yLAorICAgICJkZXNjcmlwdG9yIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXN0aW5hdGlvbiwKKyAgICAiZGVzdGluYXRpb24iKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvciwKKyAgICAi
ZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXN0
aW5hdGlvblJHQkJsZW5kRmFjdG9yLAorICAgICJkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXZpY2UsCisgICAgImRldmljZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZGlkTW9kaWZ5UmFuZ2VfLAorICAgICJkaWRNb2RpZnlSYW5nZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGRpc3BhdGNoUXVldWUsCisgICAgImRpc3BhdGNoUXVldWUiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRpc3BhdGNoVGhyZWFkZ3JvdXBzX3RocmVhZHNQZXJUaHJl
YWRncm91cF8sCisgICAgImRpc3BhdGNoVGhyZWFkZ3JvdXBzOnRocmVhZHNQZXJUaHJlYWRncm91
cDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRpc3BhdGNoVGhyZWFkZ3JvdXBzV2l0aEluZGly
ZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0X3RocmVhZHNQZXJUaHJlYWRncm91cF8sCisg
ICAgImRpc3BhdGNoVGhyZWFkZ3JvdXBzV2l0aEluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVy
T2Zmc2V0OnRocmVhZHNQZXJUaHJlYWRncm91cDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRp
c3BhdGNoVGhyZWFkc190aHJlYWRzUGVyVGhyZWFkZ3JvdXBfLAorICAgICJkaXNwYXRjaFRocmVh
ZHM6dGhyZWFkc1BlclRocmVhZGdyb3VwOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGlzcGF0
Y2hUaHJlYWRzUGVyVGlsZV8sCisgICAgImRpc3BhdGNoVGhyZWFkc1BlclRpbGU6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChkaXNwYXRjaFR5cGUsCisgICAgImRpc3BhdGNoVHlwZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoZHJhd0luZGV4ZWRQYXRjaGVzX3BhdGNoSW5kZXhCdWZmZXJfcGF0
Y2hJbmRleEJ1ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9jb250cm9sUG9pbnRJ
bmRleEJ1ZmZlck9mZnNldF9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8sCisg
ICAgImRyYXdJbmRleGVkUGF0Y2hlczpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJP
ZmZzZXQ6Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZz
ZXQ6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChkcmF3SW5kZXhlZFBhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5k
ZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9j
b250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV8s
CisgICAgImRyYXdJbmRleGVkUGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRl
eEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zmc2V0OmNvbnRyb2xQb2ludEluZGV4QnVmZmVyOmNv
bnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd0luZGV4ZWRQYXRjaGVzX3BhdGNoU3RhcnRfcGF0
Y2hDb3VudF9wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfY29udHJvbFBv
aW50SW5kZXhCdWZmZXJfY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3Vu
dF9iYXNlSW5zdGFuY2VfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyX3Rlc3NlbGxhdGlvbkZhY3Rv
ckJ1ZmZlck9mZnNldF90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlkZV8sCisg
ICAgImRyYXdJbmRleGVkUGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1
ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zmc2V0OmNvbnRyb2xQb2ludEluZGV4QnVmZmVyOmNvbnRy
b2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOnRlc3Nl
bGxhdGlvbkZhY3RvckJ1ZmZlcjp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXQ6dGVzc2Vs
bGF0aW9uRmFjdG9yQnVmZmVySW5zdGFuY2VTdHJpZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5cGVfaW5kZXhCdWZmZXJf
aW5kZXhCdWZmZXJPZmZzZXRfLAorICAgICJkcmF3SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhDb3Vu
dDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5cGVfaW5k
ZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF8sCisgICAgImRyYXdJbmRl
eGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZl
ck9mZnNldDppbnN0YW5jZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd0luZGV4
ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5kZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4QnVmZmVy
T2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZVZlcnRleF9iYXNlSW5zdGFuY2VfLAorICAgICJkcmF3
SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhC
dWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlVmVydGV4OmJhc2VJbnN0YW5jZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRleFR5cGVfaW5kZXhC
dWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZz
ZXRfLAorICAgICJkcmF3SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhUeXBlOmluZGV4QnVmZmVyOmlu
ZGV4QnVmZmVyT2Zmc2V0OmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd1BhdGNoZXNfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaElu
ZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XywKKyAg
ICAiZHJhd1BhdGNoZXM6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zmc2V0Omlu
ZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZHJhd1BhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0
Y2hJbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV8sCisgICAgImRy
YXdQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5k
ZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChkcmF3UGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJbmRleEJ1
ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlX3Rl
c3NlbGxhdGlvbkZhY3RvckJ1ZmZlcl90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXRfdGVz
c2VsbGF0aW9uRmFjdG9yQnVmZmVySW5zdGFuY2VTdHJpZGVfLAorICAgICJkcmF3UGF0Y2hlczpw
YXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zm
c2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcjp0
ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXQ6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVySW5z
dGFuY2VTdHJpZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkcmF3UHJpbWl0aXZlc19pbmRp
cmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8sCisgICAgImRyYXdQcmltaXRpdmVzOmlu
ZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVydGV4Q291bnRfLAorICAgICJkcmF3UHJp
bWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGRyYXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50X2luc3RhbmNlQ291bnRfLAor
ICAgICJkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDppbnN0YW5jZUNvdW50
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVy
dGV4Q291bnRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfLAorICAgICJkcmF3UHJpbWl0aXZl
czp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDppbnN0YW5jZUNvdW50OmJhc2VJbnN0YW5jZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdhYmxlSUQsCisgICAgImRyYXdhYmxlSUQiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGVsZW1lbnRBcnJheVR5cGUsCisgICAgImVsZW1lbnRBcnJheVR5
cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVsZW1lbnRJc0FyZ3VtZW50QnVmZmVyLAorICAg
ICJlbGVtZW50SXNBcmd1bWVudEJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZWxlbWVu
dFBvaW50ZXJUeXBlLAorICAgICJlbGVtZW50UG9pbnRlclR5cGUiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGVsZW1lbnRTdHJ1Y3RUeXBlLAorICAgICJlbGVtZW50U3RydWN0VHlwZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoZWxlbWVudFRleHR1cmVSZWZlcmVuY2VUeXBlLAorICAgICJlbGVt
ZW50VGV4dHVyZVJlZmVyZW5jZVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVsZW1lbnRU
eXBlLAorICAgICJlbGVtZW50VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZW5jb2RlU2ln
bmFsRXZlbnRfdmFsdWVfLAorICAgICJlbmNvZGVTaWduYWxFdmVudDp2YWx1ZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGVuY29kZVdhaXRGb3JFdmVudF92YWx1ZV8sCisgICAgImVuY29kZVdh
aXRGb3JFdmVudDp2YWx1ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVuY29kZWRMZW5ndGgs
CisgICAgImVuY29kZWRMZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVuY29kZXJMYWJl
bCwKKyAgICAiZW5jb2RlckxhYmVsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmRFbmNvZGlu
ZywKKyAgICAiZW5kRW5jb2RpbmciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4LAorICAgICJlbmRPZkVuY29kZXJTYW1wbGVJbmRleCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4LAorICAgICJlbmRPZkZyYWdtZW50
U2FtcGxlSW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVuZE9mVmVydGV4U2FtcGxlSW5k
ZXgsCisgICAgImVuZE9mVmVydGV4U2FtcGxlSW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGVucXVldWUsCisgICAgImVucXVldWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVycm9yLAor
ICAgICJlcnJvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZXJyb3JPcHRpb25zLAorICAgICJl
cnJvck9wdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVycm9yU3RhdGUsCisgICAgImVy
cm9yU3RhdGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGV4ZWN1dGVDb21tYW5kc0luQnVmZmVy
X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XywKKyAgICAiZXhlY3V0ZUNvbW1h
bmRzSW5CdWZmZXI6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcl93aXRoUmFuZ2VfLAorICAg
ICJleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChmYXN0TWF0aEVuYWJsZWQsCisgICAgImZhc3RNYXRoRW5hYmxlZCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZmlsbEJ1ZmZlcl9yYW5nZV92YWx1ZV8sCisgICAgImZpbGxCdWZmZXI6cmFu
Z2U6dmFsdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmaXJzdE1pcG1hcEluVGFpbCwKKyAg
ICAiZmlyc3RNaXBtYXBJblRhaWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZvcm1hdCwKKyAg
ICAiZm9ybWF0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmcmFnbWVudEFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnMsCisgICAgImZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZnJhZ21lbnRBcmd1bWVudHMsCisgICAgImZyYWdtZW50QXJn
dW1lbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmcmFnbWVudEJ1ZmZlcnMsCisgICAgImZy
YWdtZW50QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnJhZ21lbnRGdW5jdGlvbiwK
KyAgICAiZnJhZ21lbnRGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnJhZ21lbnRM
aW5rZWRGdW5jdGlvbnMsCisgICAgImZyYWdtZW50TGlua2VkRnVuY3Rpb25zIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcywKKyAgICAiZnJhZ21lbnRQ
cmVsb2FkZWRMaWJyYXJpZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZyb250RmFjZVN0ZW5j
aWwsCisgICAgImZyb250RmFjZVN0ZW5jaWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0
aW9uLAorICAgICJmdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25Db25z
dGFudHNEaWN0aW9uYXJ5LAorICAgICJmdW5jdGlvbkNvbnN0YW50c0RpY3Rpb25hcnkiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9uQ291bnQsCisgICAgImZ1bmN0aW9uQ291bnQiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9uRGVzY3JpcHRvciwKKyAgICAiZnVuY3Rpb25E
ZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbkdyYXBocywKKyAgICAi
ZnVuY3Rpb25HcmFwaHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9uSGFuZGxlV2l0
aEZ1bmN0aW9uXywKKyAgICAiZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb246Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChmdW5jdGlvbkhhbmRsZVdpdGhGdW5jdGlvbl9zdGFnZV8sCisgICAgImZ1
bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uOnN0YWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
ZnVuY3Rpb25OYW1lLAorICAgICJmdW5jdGlvbk5hbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGZ1bmN0aW9uTmFtZXMsCisgICAgImZ1bmN0aW9uTmFtZXMiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGZ1bmN0aW9uVHlwZSwKKyAgICAiZnVuY3Rpb25UeXBlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChmdW5jdGlvbnMsCisgICAgImZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
Z2VuZXJhdGVNaXBtYXBzRm9yVGV4dHVyZV8sCisgICAgImdlbmVyYXRlTWlwbWFwc0ZvclRleHR1
cmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZW9tZXRyeURlc2NyaXB0b3JzLAorICAgICJn
ZW9tZXRyeURlc2NyaXB0b3JzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXRCeXRlc19ieXRl
c1BlclJvd19ieXRlc1BlckltYWdlX2Zyb21SZWdpb25fbWlwbWFwTGV2ZWxfc2xpY2VfLAorICAg
ICJnZXRCeXRlczpieXRlc1BlclJvdzpieXRlc1BlckltYWdlOmZyb21SZWdpb246bWlwbWFwTGV2
ZWw6c2xpY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXRCeXRlc19ieXRlc1BlclJvd19m
cm9tUmVnaW9uX21pcG1hcExldmVsXywKKyAgICAiZ2V0Qnl0ZXM6Ynl0ZXNQZXJSb3c6ZnJvbVJl
Z2lvbjptaXBtYXBMZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdldERlZmF1bHRTYW1w
bGVQb3NpdGlvbnNfY291bnRfLAorICAgICJnZXREZWZhdWx0U2FtcGxlUG9zaXRpb25zOmNvdW50
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZ2V0U2FtcGxlUG9zaXRpb25zX2NvdW50XywKKyAg
ICAiZ2V0U2FtcGxlUG9zaXRpb25zOmNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZ2V0
VGV4dHVyZUFjY2Vzc0NvdW50ZXJzX3JlZ2lvbl9taXBMZXZlbF9zbGljZV9yZXNldENvdW50ZXJz
X2NvdW50ZXJzQnVmZmVyX2NvdW50ZXJzQnVmZmVyT2Zmc2V0XywKKyAgICAiZ2V0VGV4dHVyZUFj
Y2Vzc0NvdW50ZXJzOnJlZ2lvbjptaXBMZXZlbDpzbGljZTpyZXNldENvdW50ZXJzOmNvdW50ZXJz
QnVmZmVyOmNvdW50ZXJzQnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZ3Jv
dXBzLAorICAgICJncm91cHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhhc1VuaWZpZWRNZW1v
cnksCisgICAgImhhc1VuaWZpZWRNZW1vcnkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhhemFy
ZFRyYWNraW5nTW9kZSwKKyAgICAiaGF6YXJkVHJhY2tpbmdNb2RlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChoZWFwLAorICAgICJoZWFwIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChoZWFwQnVm
ZmVyU2l6ZUFuZEFsaWduV2l0aExlbmd0aF9vcHRpb25zXywKKyAgICAiaGVhcEJ1ZmZlclNpemVB
bmRBbGlnbldpdGhMZW5ndGg6b3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhlYXBP
ZmZzZXQsCisgICAgImhlYXBPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhlYXBUZXh0
dXJlU2l6ZUFuZEFsaWduV2l0aERlc2NyaXB0b3JfLAorICAgICJoZWFwVGV4dHVyZVNpemVBbmRB
bGlnbldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaGVpZ2h0LAorICAg
ICJoZWlnaHQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhvcml6b250YWwsCisgICAgImhvcml6
b250YWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhvcml6b250YWxTYW1wbGVTdG9yYWdlLAor
ICAgICJob3Jpem9udGFsU2FtcGxlU3RvcmFnZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW1h
Z2VibG9ja01lbW9yeUxlbmd0aEZvckRpbWVuc2lvbnNfLAorICAgICJpbWFnZWJsb2NrTWVtb3J5
TGVuZ3RoRm9yRGltZW5zaW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGltYWdlYmxvY2tT
YW1wbGVMZW5ndGgsCisgICAgImltYWdlYmxvY2tTYW1wbGVMZW5ndGgiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGluZGV4LAorICAgICJpbmRleCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5k
ZXhCdWZmZXIsCisgICAgImluZGV4QnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbmRl
eEJ1ZmZlckluZGV4LAorICAgICJpbmRleEJ1ZmZlckluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpbmRleEJ1ZmZlck9mZnNldCwKKyAgICAiaW5kZXhCdWZmZXJPZmZzZXQiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGluZGV4VHlwZSwKKyAgICAiaW5kZXhUeXBlIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChpbmRpcmVjdENvbXB1dGVDb21tYW5kQXRJbmRleF8sCisgICAgImluZGlyZWN0
Q29tcHV0ZUNvbW1hbmRBdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5kaXJlY3RS
ZW5kZXJDb21tYW5kQXRJbmRleF8sCisgICAgImluZGlyZWN0UmVuZGVyQ29tbWFuZEF0SW5kZXg6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbmhlcml0QnVmZmVycywKKyAgICAiaW5oZXJpdEJ1
ZmZlcnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaGVyaXRQaXBlbGluZVN0YXRlLAorICAg
ICJpbmhlcml0UGlwZWxpbmVTdGF0ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5pdCwKKyAg
ICAiaW5pdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhBcmd1bWVudEluZGV4XywK
KyAgICAiaW5pdFdpdGhBcmd1bWVudEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5p
dFdpdGhEaXNwYXRjaFF1ZXVlXywKKyAgICAiaW5pdFdpdGhEaXNwYXRjaFF1ZXVlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhGdW5jdGlvbk5hbWVfbm9kZXNfb3V0cHV0Tm9kZV9h
dHRyaWJ1dGVzXywKKyAgICAiaW5pdFdpdGhGdW5jdGlvbk5hbWU6bm9kZXM6b3V0cHV0Tm9kZTph
dHRyaWJ1dGVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhOYW1lX2FyZ3VtZW50
c19jb250cm9sRGVwZW5kZW5jaWVzXywKKyAgICAiaW5pdFdpdGhOYW1lOmFyZ3VtZW50czpjb250
cm9sRGVwZW5kZW5jaWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhTYW1wbGVD
b3VudF8sCisgICAgImluaXRXaXRoU2FtcGxlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChpbml0V2l0aFNhbXBsZUNvdW50X2hvcml6b250YWxfdmVydGljYWxfLAorICAgICJpbml0V2l0
aFNhbXBsZUNvdW50Omhvcml6b250YWw6dmVydGljYWw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChpbnB1dFByaW1pdGl2ZVRvcG9sb2d5LAorICAgICJpbnB1dFByaW1pdGl2ZVRvcG9sb2d5Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFyeSwKKyAgICAi
aW5zZXJ0RGVidWdDYXB0dXJlQm91bmRhcnkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluc2Vy
dERlYnVnU2lnbnBvc3RfLAorICAgICJpbnNlcnREZWJ1Z1NpZ25wb3N0OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoaW5zZXJ0TGlicmFyaWVzLAorICAgICJpbnNlcnRMaWJyYXJpZXMiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGluc3RhbGxOYW1lLAorICAgICJpbnN0YWxsTmFtZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoaW5zdGFuY2VDb3VudCwKKyAgICAiaW5zdGFuY2VDb3VudCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyLAorICAgICJpbnN0
YW5jZURlc2NyaXB0b3JCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluc3RhbmNlRGVz
Y3JpcHRvckJ1ZmZlck9mZnNldCwKKyAgICAiaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZURlc2NyaXB0b3JTdHJpZGUsCisgICAg
Imluc3RhbmNlRGVzY3JpcHRvclN0cmlkZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5zdGFu
Y2VEZXNjcmlwdG9yVHlwZSwKKyAgICAiaW5zdGFuY2VEZXNjcmlwdG9yVHlwZSIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcywKKyAgICAiaW5z
dGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IsCisgICAgImludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlT2Zmc2V0LAorICAgICJpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpb3N1cmZhY2UsCisgICAgImlvc3VyZmFjZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaW9zdXJmYWNlUGxhbmUsCisgICAgImlvc3VyZmFjZVBsYW5l
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0FjdGl2ZSwKKyAgICAiaXNBY3RpdmUiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGlzQWxpYXNhYmxlLAorICAgICJpc0FsaWFzYWJsZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoaXNBbHBoYVRvQ292ZXJhZ2VFbmFibGVkLAorICAgICJpc0FscGhh
VG9Db3ZlcmFnZUVuYWJsZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzQWxwaGFUb09uZUVu
YWJsZWQsCisgICAgImlzQWxwaGFUb09uZUVuYWJsZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGlzQmxlbmRpbmdFbmFibGVkLAorICAgICJpc0JsZW5kaW5nRW5hYmxlZCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoaXNDYXB0dXJpbmcsCisgICAgImlzQ2FwdHVyaW5nIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChpc0RlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkLAorICAgICJp
c0RlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpc0RlcHRoVGV4dHVyZSwKKyAgICAiaXNEZXB0aFRleHR1cmUiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGlzRGVwdGhXcml0ZUVuYWJsZWQsCisgICAgImlzRGVwdGhXcml0ZUVuYWJsZWQi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzRnJhbWVidWZmZXJPbmx5LAorICAgICJpc0ZyYW1l
YnVmZmVyT25seSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNIZWFkbGVzcywKKyAgICAiaXNI
ZWFkbGVzcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNMb3dQb3dlciwKKyAgICAiaXNMb3dQ
b3dlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNQYXRjaENvbnRyb2xQb2ludERhdGEsCisg
ICAgImlzUGF0Y2hDb250cm9sUG9pbnREYXRhIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc1Bh
dGNoRGF0YSwKKyAgICAiaXNQYXRjaERhdGEiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzUmFz
dGVyaXphdGlvbkVuYWJsZWQsCisgICAgImlzUmFzdGVyaXphdGlvbkVuYWJsZWQiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGlzUmVtb3ZhYmxlLAorICAgICJpc1JlbW92YWJsZSIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoaXNTaGFyZWFibGUsCisgICAgImlzU2hhcmVhYmxlIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChpc1NwYXJzZSwKKyAgICAiaXNTcGFyc2UiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGlzVGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkLAorICAgICJpc1Rlc3NlbGxh
dGlvbkZhY3RvclNjYWxlRW5hYmxlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoa2VybmVsRW5k
VGltZSwKKyAgICAia2VybmVsRW5kVGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoa2VybmVs
U3RhcnRUaW1lLAorICAgICJrZXJuZWxTdGFydFRpbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGxhYmVsLAorICAgICJsYWJlbCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGFuZ3VhZ2VWZXJz
aW9uLAorICAgICJsYW5ndWFnZVZlcnNpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxheWVy
QXRJbmRleF8sCisgICAgImxheWVyQXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxh
eWVyQ291bnQsCisgICAgImxheWVyQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxheWVy
cywKKyAgICAibGF5ZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsYXlvdXRzLAorICAgICJs
YXlvdXRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsZW5ndGgsCisgICAgImxlbmd0aCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobGV2ZWwsCisgICAgImxldmVsIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChsaWJyYXJpZXMsCisgICAgImxpYnJhcmllcyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobGlicmFyeVR5cGUsCisgICAgImxpYnJhcnlUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChsaW5lLAorICAgICJsaW5lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsaW5rZWRGdW5jdGlv
bnMsCisgICAgImxpbmtlZEZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobG9hZEFj
dGlvbiwKKyAgICAibG9hZEFjdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobG9jYXRpb24s
CisgICAgImxvY2F0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsb2NhdGlvbk51bWJlciwK
KyAgICAibG9jYXRpb25OdW1iZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxvZEF2ZXJhZ2Us
CisgICAgImxvZEF2ZXJhZ2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxvZE1heENsYW1wLAor
ICAgICJsb2RNYXhDbGFtcCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobG9kTWluQ2xhbXAsCisg
ICAgImxvZE1pbkNsYW1wIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsb2dzLAorICAgICJsb2dz
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYWdGaWx0ZXIsCisgICAgIm1hZ0ZpbHRlciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobWFrZUFsaWFzYWJsZSwKKyAgICAibWFrZUFsaWFzYWJsZSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobWFwUGh5c2ljYWxUb1NjcmVlbkNvb3JkaW5hdGVzX2Zv
ckxheWVyXywKKyAgICAibWFwUGh5c2ljYWxUb1NjcmVlbkNvb3JkaW5hdGVzOmZvckxheWVyOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobWFwU2NyZWVuVG9QaHlzaWNhbENvb3JkaW5hdGVzX2Zv
ckxheWVyXywKKyAgICAibWFwU2NyZWVuVG9QaHlzaWNhbENvb3JkaW5hdGVzOmZvckxheWVyOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4QW5pc290cm9weSwKKyAgICAibWF4QW5pc290cm9w
eSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4QXJndW1lbnRCdWZmZXJTYW1wbGVyQ291bnQs
CisgICAgIm1heEFyZ3VtZW50QnVmZmVyU2FtcGxlckNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChtYXhBdmFpbGFibGVTaXplV2l0aEFsaWdubWVudF8sCisgICAgIm1heEF2YWlsYWJsZVNp
emVXaXRoQWxpZ25tZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4QnVmZmVyTGVuZ3Ro
LAorICAgICJtYXhCdWZmZXJMZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heENhbGxT
dGFja0RlcHRoLAorICAgICJtYXhDYWxsU3RhY2tEZXB0aCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQsCisgICAgIm1heEZyYWdtZW50QnVmZmVyQmlu
ZENvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhGcmFnbWVudENhbGxTdGFja0RlcHRo
LAorICAgICJtYXhGcmFnbWVudENhbGxTdGFja0RlcHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChtYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQsCisgICAgIm1heEtlcm5lbEJ1ZmZlckJpbmRDb3Vu
dCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4U2FtcGxlQ291bnQsCisgICAgIm1heFNhbXBs
ZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhUZXNzZWxsYXRpb25GYWN0b3IsCisg
ICAgIm1heFRlc3NlbGxhdGlvbkZhY3RvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VGhy
ZWFkZ3JvdXBNZW1vcnlMZW5ndGgsCisgICAgIm1heFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhUaHJlYWRzUGVyVGhyZWFkZ3JvdXAsCisgICAgIm1h
eFRocmVhZHNQZXJUaHJlYWRncm91cCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VG90YWxU
aHJlYWRzUGVyVGhyZWFkZ3JvdXAsCisgICAgIm1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3Vw
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhUcmFuc2ZlclJhdGUsCisgICAgIm1heFRyYW5z
ZmVyUmF0ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VmVydGV4QW1wbGlmaWNhdGlvbkNv
dW50LAorICAgICJtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKG1heFZlcnRleEJ1ZmZlckJpbmRDb3VudCwKKyAgICAibWF4VmVydGV4QnVmZmVyQmlu
ZENvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCwK
KyAgICAibWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1l
bWJlckJ5TmFtZV8sCisgICAgIm1lbWJlckJ5TmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1lbWJlcnMsCisgICAgIm1lbWJlcnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1lbW9yeUJh
cnJpZXJXaXRoUmVzb3VyY2VzX2NvdW50XywKKyAgICAibWVtb3J5QmFycmllcldpdGhSZXNvdXJj
ZXM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtZW1vcnlCYXJyaWVyV2l0aFJlc291
cmNlc19jb3VudF9hZnRlclN0YWdlc19iZWZvcmVTdGFnZXNfLAorICAgICJtZW1vcnlCYXJyaWVy
V2l0aFJlc291cmNlczpjb3VudDphZnRlclN0YWdlczpiZWZvcmVTdGFnZXM6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChtZW1vcnlCYXJyaWVyV2l0aFNjb3BlXywKKyAgICAibWVtb3J5QmFycmll
cldpdGhTY29wZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1lbW9yeUJhcnJpZXJXaXRoU2Nv
cGVfYWZ0ZXJTdGFnZXNfYmVmb3JlU3RhZ2VzXywKKyAgICAibWVtb3J5QmFycmllcldpdGhTY29w
ZTphZnRlclN0YWdlczpiZWZvcmVTdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtaW5G
aWx0ZXIsCisgICAgIm1pbkZpbHRlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWluaW11bUxp
bmVhclRleHR1cmVBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdF8sCisgICAgIm1pbmltdW1MaW5lYXJU
ZXh0dXJlQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCht
aW5pbXVtVGV4dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVsRm9ybWF0XywKKyAgICAibWluaW11
bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKG1pcEZpbHRlciwKKyAgICAibWlwRmlsdGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChtaXBtYXBMZXZlbENvdW50LAorICAgICJtaXBtYXBMZXZlbENvdW50Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChtb3Rpb25FbmRCb3JkZXJNb2RlLAorICAgICJtb3Rpb25FbmRCb3JkZXJNb2Rl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25FbmRUaW1lLAorICAgICJtb3Rpb25FbmRU
aW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25LZXlmcmFtZUNvdW50LAorICAgICJt
b3Rpb25LZXlmcmFtZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25TdGFydEJv
cmRlck1vZGUsCisgICAgIm1vdGlvblN0YXJ0Qm9yZGVyTW9kZSIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobW90aW9uU3RhcnRUaW1lLAorICAgICJtb3Rpb25TdGFydFRpbWUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKG1vdGlvblRyYW5zZm9ybUJ1ZmZlciwKKyAgICAibW90aW9uVHJhbnNmb3Jt
QnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZz
ZXQsCisgICAgIm1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobW90aW9uVHJhbnNmb3JtQ291bnQsCisgICAgIm1vdGlvblRyYW5zZm9ybUNvdW50Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChtdXRhYmlsaXR5LAorICAgICJtdXRhYmlsaXR5Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChuYW1lLAorICAgICJuYW1lIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRoRGVzY3JpcHRvcl8sCisgICAgIm5ld0Fj
Y2VsZXJhdGlvblN0cnVjdHVyZVdpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aFNpemVfLAorICAgICJuZXdBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVXaXRoU2l6ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FyZ3VtZW50
RW5jb2RlckZvckJ1ZmZlckF0SW5kZXhfLAorICAgICJuZXdBcmd1bWVudEVuY29kZXJGb3JCdWZm
ZXJBdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3QXJndW1lbnRFbmNvZGVyV2l0
aEFyZ3VtZW50c18sCisgICAgIm5ld0FyZ3VtZW50RW5jb2RlcldpdGhBcmd1bWVudHM6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXhfLAor
ICAgICJuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXhfcmVmbGVjdGlvbl8sCisg
ICAgIm5ld0FyZ3VtZW50RW5jb2RlcldpdGhCdWZmZXJJbmRleDpyZWZsZWN0aW9uOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3QmluYXJ5QXJjaGl2ZVdpdGhEZXNjcmlwdG9yX2Vycm9yXywK
KyAgICAibmV3QmluYXJ5QXJjaGl2ZVdpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobmV3QnVmZmVyV2l0aEJ5dGVzX2xlbmd0aF9vcHRpb25zXywKKyAgICAibmV3
QnVmZmVyV2l0aEJ5dGVzOmxlbmd0aDpvcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3QnVmZmVyV2l0aEJ5dGVzTm9Db3B5X2xlbmd0aF9vcHRpb25zX2RlYWxsb2NhdG9yXywKKyAg
ICAibmV3QnVmZmVyV2l0aEJ5dGVzTm9Db3B5Omxlbmd0aDpvcHRpb25zOmRlYWxsb2NhdG9yOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3QnVmZmVyV2l0aExlbmd0aF9vcHRpb25zXywKKyAg
ICAibmV3QnVmZmVyV2l0aExlbmd0aDpvcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3QnVmZmVyV2l0aExlbmd0aF9vcHRpb25zX29mZnNldF8sCisgICAgIm5ld0J1ZmZlcldpdGhM
ZW5ndGg6b3B0aW9uczpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDYXB0dXJl
U2NvcGVXaXRoQ29tbWFuZFF1ZXVlXywKKyAgICAibmV3Q2FwdHVyZVNjb3BlV2l0aENvbW1hbmRR
dWV1ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhEZXZpY2Vf
LAorICAgICJuZXdDYXB0dXJlU2NvcGVXaXRoRGV2aWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3Q29tbWFuZFF1ZXVlLAorICAgICJuZXdDb21tYW5kUXVldWUiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld0NvbW1hbmRRdWV1ZVdpdGhNYXhDb21tYW5kQnVmZmVyQ291bnRfLAorICAg
ICJuZXdDb21tYW5kUXVldWVXaXRoTWF4Q29tbWFuZEJ1ZmZlckNvdW50OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoQWRkaXRpb25hbEJpbmFyeUZ1
bmN0aW9uc19lcnJvcl8sCisgICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9u
YWxCaW5hcnlGdW5jdGlvbnM6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfY29tcGxldGlvbkhhbmRsZXJf
LAorICAgICJuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6Y29t
cGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8sCisgICAgIm5l
d0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0aW9uczpyZWZsZWN0aW9uOmVy
cm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRo
RnVuY3Rpb25fY29tcGxldGlvbkhhbmRsZXJfLAorICAgICJuZXdDb21wdXRlUGlwZWxpbmVTdGF0
ZVdpdGhGdW5jdGlvbjpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uX2Vycm9yXywKKyAgICAibmV3Q29t
cHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb246ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9vcHRpb25zX2NvbXBsZXRp
b25IYW5kbGVyXywKKyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb246b3B0
aW9uczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uX29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8sCisg
ICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOm9wdGlvbnM6cmVmbGVjdGlv
bjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0NvdW50ZXJTYW1wbGVCdWZmZXJX
aXRoRGVzY3JpcHRvcl9lcnJvcl8sCisgICAgIm5ld0NvdW50ZXJTYW1wbGVCdWZmZXJXaXRoRGVz
Y3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0RlZmF1bHRMaWJyYXJ5
LAorICAgICJuZXdEZWZhdWx0TGlicmFyeSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RGVm
YXVsdExpYnJhcnlXaXRoQnVuZGxlX2Vycm9yXywKKyAgICAibmV3RGVmYXVsdExpYnJhcnlXaXRo
QnVuZGxlOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RGVwdGhTdGVuY2lsU3Rh
dGVXaXRoRGVzY3JpcHRvcl8sCisgICAgIm5ld0RlcHRoU3RlbmNpbFN0YXRlV2l0aERlc2NyaXB0
b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdEeW5hbWljTGlicmFyeV9lcnJvcl8sCisg
ICAgIm5ld0R5bmFtaWNMaWJyYXJ5OmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3
RHluYW1pY0xpYnJhcnlXaXRoVVJMX2Vycm9yXywKKyAgICAibmV3RHluYW1pY0xpYnJhcnlXaXRo
VVJMOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RXZlbnQsCisgICAgIm5ld0V2
ZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdGZW5jZSwKKyAgICAibmV3RmVuY2UiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0b3JfY29tcGxldGlv
bkhhbmRsZXJfLAorICAgICJuZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5k
bGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9l
cnJvcl8sCisgICAgIm5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChuZXdGdW5jdGlvbldpdGhOYW1lXywKKyAgICAibmV3RnVuY3Rpb25XaXRo
TmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0Z1bmN0aW9uV2l0aE5hbWVfY29uc3Rh
bnRWYWx1ZXNfY29tcGxldGlvbkhhbmRsZXJfLAorICAgICJuZXdGdW5jdGlvbldpdGhOYW1lOmNv
bnN0YW50VmFsdWVzOmNvbXBsZXRpb25IYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3RnVuY3Rpb25XaXRoTmFtZV9jb25zdGFudFZhbHVlc19lcnJvcl8sCisgICAgIm5ld0Z1bmN0
aW9uV2l0aE5hbWU6Y29uc3RhbnRWYWx1ZXM6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChuZXdIZWFwV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdIZWFwV2l0aERlc2NyaXB0b3I6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdJbmRpcmVjdENvbW1hbmRCdWZmZXJXaXRoRGVzY3Jp
cHRvcl9tYXhDb21tYW5kQ291bnRfb3B0aW9uc18sCisgICAgIm5ld0luZGlyZWN0Q29tbWFuZEJ1
ZmZlcldpdGhEZXNjcmlwdG9yOm1heENvbW1hbmRDb3VudDpvcHRpb25zOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yXywK
KyAgICAibmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlw
dG9yX3N0YWdlXywKKyAgICAibmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlw
dG9yOnN0YWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3SW50ZXJzZWN0aW9uRnVuY3Rp
b25XaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0ludGVyc2VjdGlv
bkZ1bmN0aW9uV2l0aERlc2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yX2Vycm9yXywK
KyAgICAibmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjplcnJvcjoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlXaXRoRGF0YV9lcnJvcl8sCisgICAgIm5ld0xp
YnJhcnlXaXRoRGF0YTplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlX
aXRoRmlsZV9lcnJvcl8sCisgICAgIm5ld0xpYnJhcnlXaXRoRmlsZTplcnJvcjoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlXaXRoU291cmNlX29wdGlvbnNfY29tcGxldGlvbkhh
bmRsZXJfLAorICAgICJuZXdMaWJyYXJ5V2l0aFNvdXJjZTpvcHRpb25zOmNvbXBsZXRpb25IYW5k
bGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhTb3VyY2Vfb3B0aW9u
c19lcnJvcl8sCisgICAgIm5ld0xpYnJhcnlXaXRoU291cmNlOm9wdGlvbnM6ZXJyb3I6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcl9jb21w
bGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld0xpYnJhcnlXaXRoU3RpdGNoZWREZXNjcmlwdG9yOmNv
bXBsZXRpb25IYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhT
dGl0Y2hlZERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVz
Y3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlXaXRoVVJM
X2Vycm9yXywKKyAgICAibmV3TGlicmFyeVdpdGhVUkw6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhEZXNjcmlwdG9yXywKKyAgICAibmV3
UmFzdGVyaXphdGlvblJhdGVNYXBXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG5ld1JlbW90ZUJ1ZmZlclZpZXdGb3JEZXZpY2VfLAorICAgICJuZXdSZW1vdGVCdWZmZXJW
aWV3Rm9yRGV2aWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVtb3RlVGV4dHVyZVZp
ZXdGb3JEZXZpY2VfLAorICAgICJuZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRldmljZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoQWRkaXRpb25hbEJp
bmFyeUZ1bmN0aW9uc19lcnJvcl8sCisgICAgIm5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoQWRk
aXRpb25hbEJpbmFyeUZ1bmN0aW9uczplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9uSGFuZGxlcl8sCisg
ICAgIm5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjpjb21wbGV0aW9uSGFuZGxl
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVz
Y3JpcHRvcl9lcnJvcl8sCisgICAgIm5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRv
cjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVX
aXRoRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3UmVuZGVy
UGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0
b3Jfb3B0aW9uc19yZWZsZWN0aW9uX2Vycm9yXywKKyAgICAibmV3UmVuZGVyUGlwZWxpbmVTdGF0
ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVjdGlvbjplcnJvcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoVGlsZURlc2NyaXB0b3Jfb3B0aW9u
c19jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoVGls
ZURlc2NyaXB0b3I6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoVGlsZURlc2NyaXB0b3Jfb3B0aW9uc19y
ZWZsZWN0aW9uX2Vycm9yXywKKyAgICAibmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVz
Y3JpcHRvcjpvcHRpb25zOnJlZmxlY3Rpb246ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChuZXdTYW1wbGVyU3RhdGVXaXRoRGVzY3JpcHRvcl8sCisgICAgIm5ld1NhbXBsZXJTdGF0ZVdp
dGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3U2hhcmVkRXZlbnQsCisg
ICAgIm5ld1NoYXJlZEV2ZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdTaGFyZWRFdmVu
dEhhbmRsZSwKKyAgICAibmV3U2hhcmVkRXZlbnRIYW5kbGUiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG5ld1NoYXJlZEV2ZW50V2l0aEhhbmRsZV8sCisgICAgIm5ld1NoYXJlZEV2ZW50V2l0aEhh
bmRsZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1NoYXJlZFRleHR1cmVIYW5kbGUsCisg
ICAgIm5ld1NoYXJlZFRleHR1cmVIYW5kbGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1No
YXJlZFRleHR1cmVXaXRoRGVzY3JpcHRvcl8sCisgICAgIm5ld1NoYXJlZFRleHR1cmVXaXRoRGVz
Y3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1NoYXJlZFRleHR1cmVXaXRoSGFu
ZGxlXywKKyAgICAibmV3U2hhcmVkVGV4dHVyZVdpdGhIYW5kbGU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdF8sCisgICAgIm5ld1RleHR1cmVW
aWV3V2l0aFBpeGVsRm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3VGV4dHVyZVZp
ZXdXaXRoUGl4ZWxGb3JtYXRfdGV4dHVyZVR5cGVfbGV2ZWxzX3NsaWNlc18sCisgICAgIm5ld1Rl
eHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0OnRleHR1cmVUeXBlOmxldmVsczpzbGljZXM6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdF90ZXh0dXJl
VHlwZV9sZXZlbHNfc2xpY2VzX3N3aXp6bGVfLAorICAgICJuZXdUZXh0dXJlVmlld1dpdGhQaXhl
bEZvcm1hdDp0ZXh0dXJlVHlwZTpsZXZlbHM6c2xpY2VzOnN3aXp6bGU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdUZXh0dXJlV2l0
aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdUZXh0dXJlV2l0aERlc2Ny
aXB0b3JfaW9zdXJmYWNlX3BsYW5lXywKKyAgICAibmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOmlv
c3VyZmFjZTpwbGFuZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVXaXRoRGVz
Y3JpcHRvcl9vZmZzZXRfLAorICAgICJuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6b2Zmc2V0OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yX29mZnNldF9i
eXRlc1BlclJvd18sCisgICAgIm5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjpvZmZzZXQ6Ynl0ZXNQ
ZXJSb3c6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZVdp
dGhEZXNjcmlwdG9yXywKKyAgICAibmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRv
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0aERl
c2NyaXB0b3Jfc3RhZ2VfLAorICAgICJuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlw
dG9yOnN0YWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobm9kZXMsCisgICAgIm5vZGVzIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChub3JtYWxpemVkQ29vcmRpbmF0ZXMsCisgICAgIm5vcm1h
bGl6ZWRDb29yZGluYXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobm90aWZ5TGlzdGVuZXJf
YXRWYWx1ZV9ibG9ja18sCisgICAgIm5vdGlmeUxpc3RlbmVyOmF0VmFsdWU6YmxvY2s6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfLAorICAgICJvYmpl
Y3RBdEluZGV4ZWRTdWJzY3JpcHQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChvZmZzZXQsCisg
ICAgIm9mZnNldCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3BhcXVlLAorICAgICJvcGFxdWUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3NfLAor
ICAgICJvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwob3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vzc19zbGljZV9sZXZlbF8sCisgICAgIm9wdGlt
aXplQ29udGVudHNGb3JDUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzXywKKyAgICAib3B0aW1pemVDb250ZW50
c0ZvckdQVUFjY2VzczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wdGltaXplQ29udGVudHNG
b3JHUFVBY2Nlc3Nfc2xpY2VfbGV2ZWxfLAorICAgICJvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNj
ZXNzOnNsaWNlOmxldmVsOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3B0aW1pemVJbmRpcmVj
dENvbW1hbmRCdWZmZXJfd2l0aFJhbmdlXywKKyAgICAib3B0aW1pemVJbmRpcmVjdENvbW1hbmRC
dWZmZXI6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3B0aW9ucywKKyAgICAi
b3B0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3V0cHV0Tm9kZSwKKyAgICAib3V0cHV0
Tm9kZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob3V0cHV0VVJMLAorICAgICJvdXRwdXRVUkwi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXJXaXRo
RGVzY3JpcHRvcl8sCisgICAgInBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3Jp
cHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBhcmFtZXRlckJ1ZmZlclNpemVBbmRBbGln
biwKKyAgICAicGFyYW1ldGVyQnVmZmVyU2l6ZUFuZEFsaWduIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChwYXJlbnRSZWxhdGl2ZUxldmVsLAorICAgICJwYXJlbnRSZWxhdGl2ZUxldmVsIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChwYXJlbnRSZWxhdGl2ZVNsaWNlLAorICAgICJwYXJlbnRSZWxh
dGl2ZVNsaWNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwYXJlbnRUZXh0dXJlLAorICAgICJw
YXJlbnRUZXh0dXJlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwYXRjaENvbnRyb2xQb2ludENv
dW50LAorICAgICJwYXRjaENvbnRyb2xQb2ludENvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChwYXRjaFR5cGUsCisgICAgInBhdGNoVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGVl
ckNvdW50LAorICAgICJwZWVyQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBlZXJHcm91
cElELAorICAgICJwZWVyR3JvdXBJRCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGVlckluZGV4
LAorICAgICJwZWVySW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBoeXNpY2FsR3JhbnVs
YXJpdHksCisgICAgInBoeXNpY2FsR3JhbnVsYXJpdHkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHBoeXNpY2FsU2l6ZUZvckxheWVyXywKKyAgICAicGh5c2ljYWxTaXplRm9yTGF5ZXI6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChwaXhlbEZvcm1hdCwKKyAgICAicGl4ZWxGb3JtYXQiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHBvaW50ZXJUeXBlLAorICAgICJwb2ludGVyVHlwZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocG9wRGVidWdHcm91cCwKKyAgICAicG9wRGVidWdHcm91cCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwocHJlbG9hZGVkTGlicmFyaWVzLAorICAgICJwcmVsb2FkZWRM
aWJyYXJpZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXByb2Nlc3Nvck1hY3JvcywKKyAg
ICAicHJlcHJvY2Vzc29yTWFjcm9zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwcmVzZW50LAor
ICAgICJwcmVzZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwcmVzZW50QWZ0ZXJNaW5pbXVt
RHVyYXRpb25fLAorICAgICJwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb246Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChwcmVzZW50QXRUaW1lXywKKyAgICAicHJlc2VudEF0VGltZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnREcmF3YWJsZV8sCisgICAgInByZXNlbnREcmF3YWJs
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnREcmF3YWJsZV9hZnRlck1pbmltdW1E
dXJhdGlvbl8sCisgICAgInByZXNlbnREcmF3YWJsZTphZnRlck1pbmltdW1EdXJhdGlvbjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnREcmF3YWJsZV9hdFRpbWVfLAorICAgICJwcmVz
ZW50RHJhd2FibGU6YXRUaW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudGVkVGlt
ZSwKKyAgICAicHJlc2VudGVkVGltZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VydmVJ
bnZhcmlhbmNlLAorICAgICJwcmVzZXJ2ZUludmFyaWFuY2UiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHByaXZhdGVGdW5jdGlvbnMsCisgICAgInByaXZhdGVGdW5jdGlvbnMiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHB1c2hEZWJ1Z0dyb3VwXywKKyAgICAicHVzaERlYnVnR3JvdXA6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChyQWRkcmVzc01vZGUsCisgICAgInJBZGRyZXNzTW9kZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwocmFzdGVyU2FtcGxlQ291bnQsCisgICAgInJhc3RlclNhbXBs
ZUNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyYXN0ZXJpemF0aW9uUmF0ZU1hcCwKKyAg
ICAicmFzdGVyaXphdGlvblJhdGVNYXAiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJhc3Rlcml6
YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplXywKKyAgICAicmFzdGVyaXphdGlv
blJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZV9sYXllcl8sCisg
ICAgInJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOmxheWVyOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwocmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0
aFNjcmVlblNpemVfbGF5ZXJDb3VudF9sYXllcnNfLAorICAgICJyYXN0ZXJpemF0aW9uUmF0ZU1h
cERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZTpsYXllckNvdW50OmxheWVyczoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHJlYWRNYXNrLAorICAgICJyZWFkTWFzayIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwocmVhZFdyaXRlVGV4dHVyZVN1cHBvcnQsCisgICAgInJlYWRXcml0ZVRleHR1cmVTdXBw
b3J0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZWNvbW1lbmRlZE1heFdvcmtpbmdTZXRTaXpl
LAorICAgICJyZWNvbW1lbmRlZE1heFdvcmtpbmdTZXRTaXplIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChyZWZpdEFjY2VsZXJhdGlvblN0cnVjdHVyZV9kZXNjcmlwdG9yX2Rlc3RpbmF0aW9uX3Nj
cmF0Y2hCdWZmZXJfc2NyYXRjaEJ1ZmZlck9mZnNldF8sCisgICAgInJlZml0QWNjZWxlcmF0aW9u
U3RydWN0dXJlOmRlc2NyaXB0b3I6ZGVzdGluYXRpb246c2NyYXRjaEJ1ZmZlcjpzY3JhdGNoQnVm
ZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVnaXN0cnlJRCwKKyAgICAicmVn
aXN0cnlJRCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVtb3RlU3RvcmFnZUJ1ZmZlciwKKyAg
ICAicmVtb3RlU3RvcmFnZUJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVtb3RlU3Rv
cmFnZVRleHR1cmUsCisgICAgInJlbW90ZVN0b3JhZ2VUZXh0dXJlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChyZW1vdmVBbGxEZWJ1Z01hcmtlcnMsCisgICAgInJlbW92ZUFsbERlYnVnTWFya2Vy
cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVuZGVyQ29tbWFuZEVuY29kZXIsCisgICAgInJl
bmRlckNvbW1hbmRFbmNvZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZW5kZXJDb21tYW5k
RW5jb2RlcldpdGhEZXNjcmlwdG9yXywKKyAgICAicmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVz
Y3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbmRlclBhc3NEZXNjcmlwdG9yLAor
ICAgICJyZW5kZXJQYXNzRGVzY3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVuZGVy
VGFyZ2V0QXJyYXlMZW5ndGgsCisgICAgInJlbmRlclRhcmdldEFycmF5TGVuZ3RoIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChyZW5kZXJUYXJnZXRIZWlnaHQsCisgICAgInJlbmRlclRhcmdldEhl
aWdodCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVuZGVyVGFyZ2V0V2lkdGgsCisgICAgInJl
bmRlclRhcmdldFdpZHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXBsYWNlUmVnaW9uX21p
cG1hcExldmVsX3NsaWNlX3dpdGhCeXRlc19ieXRlc1BlclJvd19ieXRlc1BlckltYWdlXywKKyAg
ICAicmVwbGFjZVJlZ2lvbjptaXBtYXBMZXZlbDpzbGljZTp3aXRoQnl0ZXM6Ynl0ZXNQZXJSb3c6
Ynl0ZXNQZXJJbWFnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlcGxhY2VSZWdpb25fbWlw
bWFwTGV2ZWxfd2l0aEJ5dGVzX2J5dGVzUGVyUm93XywKKyAgICAicmVwbGFjZVJlZ2lvbjptaXBt
YXBMZXZlbDp3aXRoQnl0ZXM6Ynl0ZXNQZXJSb3c6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChy
ZXF1aXJlZCwKKyAgICAicmVxdWlyZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc2V0LAor
ICAgICJyZXNldCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzZXRDb21tYW5kc0luQnVmZmVy
X3dpdGhSYW5nZV8sCisgICAgInJlc2V0Q29tbWFuZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChyZXNldFRleHR1cmVBY2Nlc3NDb3VudGVyc19yZWdpb25fbWlw
TGV2ZWxfc2xpY2VfLAorICAgICJyZXNldFRleHR1cmVBY2Nlc3NDb3VudGVyczpyZWdpb246bWlw
TGV2ZWw6c2xpY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNldFdpdGhSYW5nZV8sCisg
ICAgInJlc2V0V2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb2x2ZUNvdW50
ZXJSYW5nZV8sCisgICAgInJlc29sdmVDb3VudGVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChyZXNvbHZlQ291bnRlcnNfaW5SYW5nZV9kZXN0aW5hdGlvbkJ1ZmZlcl9kZXN0aW5hdGlv
bk9mZnNldF8sCisgICAgInJlc29sdmVDb3VudGVyczppblJhbmdlOmRlc3RpbmF0aW9uQnVmZmVy
OmRlc3RpbmF0aW9uT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb2x2ZURlcHRo
UGxhbmUsCisgICAgInJlc29sdmVEZXB0aFBsYW5lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChy
ZXNvbHZlTGV2ZWwsCisgICAgInJlc29sdmVMZXZlbCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
cmVzb2x2ZVNsaWNlLAorICAgICJyZXNvbHZlU2xpY2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHJlc29sdmVUZXh0dXJlLAorICAgICJyZXNvbHZlVGV4dHVyZSIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwocmVzb3VyY2VPcHRpb25zLAorICAgICJyZXNvdXJjZU9wdGlvbnMiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlciwKKyAgICAicmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVN0YXRl
Q29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8sCisgICAgInJlc291cmNlU3RhdGVDb21tYW5k
RW5jb2RlcldpdGhEZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb3VyY2VT
dGF0ZVBhc3NEZXNjcmlwdG9yLAorICAgICJyZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHJldGFpbmVkUmVmZXJlbmNlcywKKyAgICAicmV0YWluZWRS
ZWZlcmVuY2VzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZ2JCbGVuZE9wZXJhdGlvbiwKKyAg
ICAicmdiQmxlbmRPcGVyYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJvb3RSZXNvdXJj
ZSwKKyAgICAicm9vdFJlc291cmNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzQWRkcmVzc01v
ZGUsCisgICAgInNBZGRyZXNzTW9kZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2FtcGxlQnVm
ZmVyLAorICAgICJzYW1wbGVCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNhbXBsZUJ1
ZmZlckF0dGFjaG1lbnRzLAorICAgICJzYW1wbGVCdWZmZXJBdHRhY2htZW50cyIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2FtcGxlQ291bnQsCisgICAgInNhbXBsZUNvdW50Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzYW1wbGVDb3VudGVyc0luQnVmZmVyX2F0U2FtcGxlSW5kZXhfd2l0aEJh
cnJpZXJfLAorICAgICJzYW1wbGVDb3VudGVyc0luQnVmZmVyOmF0U2FtcGxlSW5kZXg6d2l0aEJh
cnJpZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzYW1wbGVUaW1lc3RhbXBzX2dwdVRpbWVz
dGFtcF8sCisgICAgInNhbXBsZVRpbWVzdGFtcHM6Z3B1VGltZXN0YW1wOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2NyZWVuU2l6ZSwKKyAgICAic2NyZWVuU2l6ZSIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2VyaWFsaXplVG9VUkxfZXJyb3JfLAorICAgICJzZXJpYWxpemVUb1VSTDplcnJv
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFjY2VsZXJhdGlvblN0cnVjdHVyZV9hdEJ1
ZmZlckluZGV4XywKKyAgICAic2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVmZmVySW5kZXg6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRJbmRl
eF8sCisgICAgInNldEFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEluZGV4OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0QWNjZXNzXywKKyAgICAic2V0QWNjZXNzOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0QWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb25f
LAorICAgICJzZXRBbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEFsbG93R1BVT3B0aW1pemVkQ29udGVudHNfLAor
ICAgICJzZXRBbGxvd0dQVU9wdGltaXplZENvbnRlbnRzOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0QWxwaGFCbGVuZE9wZXJhdGlvbl8sCisgICAgInNldEFscGhhQmxlbmRPcGVyYXRpb246
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBbHBoYVRvQ292ZXJhZ2VFbmFibGVkXywKKyAg
ICAic2V0QWxwaGFUb0NvdmVyYWdlRW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEFscGhhVG9PbmVFbmFibGVkXywKKyAgICAic2V0QWxwaGFUb09uZUVuYWJsZWQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRBcmd1bWVudEJ1ZmZlcl9vZmZzZXRfLAorICAgICJzZXRBcmd1
bWVudEJ1ZmZlcjpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBcmd1bWVudEJ1
ZmZlcl9zdGFydE9mZnNldF9hcnJheUVsZW1lbnRfLAorICAgICJzZXRBcmd1bWVudEJ1ZmZlcjpz
dGFydE9mZnNldDphcnJheUVsZW1lbnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBcmd1
bWVudEluZGV4XywKKyAgICAic2V0QXJndW1lbnRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldEFyZ3VtZW50c18sCisgICAgInNldEFyZ3VtZW50czoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEFycmF5TGVuZ3RoXywKKyAgICAic2V0QXJyYXlMZW5ndGg6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRBdHRyaWJ1dGVzXywKKyAgICAic2V0QXR0cmlidXRlczoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEJhY2tGYWNlU3RlbmNpbF8sCisgICAgInNldEJhY2tGYWNl
U3RlbmNpbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJhcnJpZXIsCisgICAgInNldEJh
cnJpZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJpbmFyeUFyY2hpdmVzXywKKyAgICAi
c2V0QmluYXJ5QXJjaGl2ZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCaW5hcnlGdW5j
dGlvbnNfLAorICAgICJzZXRCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRCbGVuZENvbG9yUmVkX2dyZWVuX2JsdWVfYWxwaGFfLAorICAgICJzZXRCbGVuZENvbG9y
UmVkOmdyZWVuOmJsdWU6YWxwaGE6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCbGVuZGlu
Z0VuYWJsZWRfLAorICAgICJzZXRCbGVuZGluZ0VuYWJsZWQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRCb3JkZXJDb2xvcl8sCisgICAgInNldEJvcmRlckNvbG9yOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0Qm91bmRpbmdCb3hCdWZmZXJfLAorICAgICJzZXRCb3VuZGluZ0JveEJ1
ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0
XywKKyAgICAic2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRCb3VuZGluZ0JveEJ1ZmZlcnNfLAorICAgICJzZXRCb3VuZGluZ0JveEJ1ZmZlcnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCb3VuZGluZ0JveENvdW50XywKKyAgICAic2V0
Qm91bmRpbmdCb3hDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJvdW5kaW5nQm94
U3RyaWRlXywKKyAgICAic2V0Qm91bmRpbmdCb3hTdHJpZGU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRCdWZmZXJfLAorICAgICJzZXRCdWZmZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRCdWZmZXI6b2Zmc2V0OmF0SW5k
ZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCdWZmZXJJbmRleF8sCisgICAgInNldEJ1
ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QnVmZmVyT2Zmc2V0X2F0SW5k
ZXhfLAorICAgICJzZXRCdWZmZXJPZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfLAorICAgICJzZXRCdWZmZXJzOm9mZnNl
dHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Qnl0ZXNfbGVuZ3RoX2F0
SW5kZXhfLAorICAgICJzZXRCeXRlczpsZW5ndGg6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldENhcHR1cmVPYmplY3RfLAorICAgICJzZXRDYXB0dXJlT2JqZWN0OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0Q2xlYXJDb2xvcl8sCisgICAgInNldENsZWFyQ29sb3I6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDbGVhckRlcHRoXywKKyAgICAic2V0Q2xlYXJEZXB0
aDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENsZWFyU3RlbmNpbF8sCisgICAgInNldENs
ZWFyU3RlbmNpbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbG9yU3RvcmVBY3Rpb25f
YXRJbmRleF8sCisgICAgInNldENvbG9yU3RvcmVBY3Rpb246YXRJbmRleDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zX2F0SW5kZXhfLAorICAgICJz
ZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9uczphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0Q29tbWFuZFR5cGVzXywKKyAgICAic2V0Q29tbWFuZFR5cGVzOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0Q29tcGFyZUZ1bmN0aW9uXywKKyAgICAic2V0Q29tcGFyZUZ1bmN0aW9u
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29tcHV0ZUZ1bmN0aW9uXywKKyAgICAic2V0
Q29tcHV0ZUZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29tcHV0ZVBpcGVs
aW5lU3RhdGVfLAorICAgICJzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldENvbXB1dGVQaXBlbGluZVN0YXRlX2F0SW5kZXhfLAorICAgICJzZXRDb21w
dXRlUGlwZWxpbmVTdGF0ZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29t
cHV0ZVBpcGVsaW5lU3RhdGVzX3dpdGhSYW5nZV8sCisgICAgInNldENvbXB1dGVQaXBlbGluZVN0
YXRlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb25zdGFudEJsb2Nr
QWxpZ25tZW50XywKKyAgICAic2V0Q29uc3RhbnRCbG9ja0FsaWdubWVudDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldENvbnN0YW50VmFsdWVfdHlwZV9hdEluZGV4XywKKyAgICAic2V0Q29u
c3RhbnRWYWx1ZTp0eXBlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb25z
dGFudFZhbHVlX3R5cGVfd2l0aE5hbWVfLAorICAgICJzZXRDb25zdGFudFZhbHVlOnR5cGU6d2l0
aE5hbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb25zdGFudFZhbHVlc18sCisgICAg
InNldENvbnN0YW50VmFsdWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29uc3RhbnRW
YWx1ZXNfdHlwZV93aXRoUmFuZ2VfLAorICAgICJzZXRDb25zdGFudFZhbHVlczp0eXBlOndpdGhS
YW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbnRyb2xEZXBlbmRlbmNpZXNfLAor
ICAgICJzZXRDb250cm9sRGVwZW5kZW5jaWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
Q291bnRlclNldF8sCisgICAgInNldENvdW50ZXJTZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRDcHVDYWNoZU1vZGVfLAorICAgICJzZXRDcHVDYWNoZU1vZGU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRDdWxsTW9kZV8sCisgICAgInNldEN1bGxNb2RlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0RGF0YVR5cGVfLAorICAgICJzZXREYXRhVHlwZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldERlZmF1bHRDYXB0dXJlU2NvcGVfLAorICAgICJzZXREZWZhdWx0Q2Fw
dHVyZVNjb3BlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVmYXVsdFJhc3RlclNhbXBs
ZUNvdW50XywKKyAgICAic2V0RGVmYXVsdFJhc3RlclNhbXBsZUNvdW50OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0RGVwdGhfLAorICAgICJzZXREZXB0aDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldERlcHRoQXR0YWNobWVudF8sCisgICAgInNldERlcHRoQXR0YWNobWVudDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0XywKKyAg
ICAic2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXREZXB0aEJpYXNfc2xvcGVTY2FsZV9jbGFtcF8sCisgICAgInNldERlcHRoQmlhczpzbG9w
ZVNjYWxlOmNsYW1wOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhDbGlwTW9kZV8s
CisgICAgInNldERlcHRoQ2xpcE1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0
aENvbXBhcmVGdW5jdGlvbl8sCisgICAgInNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhGYWlsdXJlT3BlcmF0aW9uXywKKyAgICAic2V0RGVw
dGhGYWlsdXJlT3BlcmF0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhQbGFu
ZV8sCisgICAgInNldERlcHRoUGxhbmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0
aFJlc29sdmVGaWx0ZXJfLAorICAgICJzZXREZXB0aFJlc29sdmVGaWx0ZXI6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXREZXB0aFN0ZW5jaWxQYXNzT3BlcmF0aW9uXywKKyAgICAic2V0RGVw
dGhTdGVuY2lsUGFzc09wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRo
U3RlbmNpbFN0YXRlXywKKyAgICAic2V0RGVwdGhTdGVuY2lsU3RhdGU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXREZXB0aFN0b3JlQWN0aW9uXywKKyAgICAic2V0RGVwdGhTdG9yZUFjdGlv
bjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoU3RvcmVBY3Rpb25PcHRpb25zXywK
KyAgICAic2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXREZXB0aFdyaXRlRW5hYmxlZF8sCisgICAgInNldERlcHRoV3JpdGVFbmFibGVkOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVzdGluYXRpb25fLAorICAgICJzZXREZXN0aW5hdGlv
bjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3Rv
cl8sCisgICAgInNldERlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3JfLAorICAgICJzZXREZXN0aW5h
dGlvblJHQkJsZW5kRmFjdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGlzcGF0Y2hU
eXBlXywKKyAgICAic2V0RGlzcGF0Y2hUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXhfLAorICAgICJzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRl
eDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleF8s
CisgICAgInNldEVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldEVuZE9mVmVydGV4U2FtcGxlSW5kZXhfLAorICAgICJzZXRFbmRPZlZlcnRleFNhbXBs
ZUluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RXJyb3JPcHRpb25zXywKKyAgICAi
c2V0RXJyb3JPcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RmFzdE1hdGhFbmFi
bGVkXywKKyAgICAic2V0RmFzdE1hdGhFbmFibGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0Rm9ybWF0XywKKyAgICAic2V0Rm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldEZy
YWdtZW50QWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRGcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfLAorICAgICJz
ZXRGcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRGcmFnbWVudEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8sCisgICAgInNldEZyYWdtZW50
QnVmZmVyOm9mZnNldDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21l
bnRCdWZmZXJPZmZzZXRfYXRJbmRleF8sCisgICAgInNldEZyYWdtZW50QnVmZmVyT2Zmc2V0OmF0
SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEJ1ZmZlcnNfb2Zmc2V0
c193aXRoUmFuZ2VfLAorICAgICJzZXRGcmFnbWVudEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudEJ5dGVzX2xlbmd0aF9hdEluZGV4
XywKKyAgICAic2V0RnJhZ21lbnRCeXRlczpsZW5ndGg6YXRJbmRleDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldEZyYWdtZW50RnVuY3Rpb25fLAorICAgICJzZXRGcmFnbWVudEZ1bmN0aW9u
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdt
ZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXywKKyAgICAic2V0
RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudExpbmtlZEZ1bmN0aW9uc18sCisgICAgInNl
dEZyYWdtZW50TGlua2VkRnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJh
Z21lbnRQcmVsb2FkZWRMaWJyYXJpZXNfLAorICAgICJzZXRGcmFnbWVudFByZWxvYWRlZExpYnJh
cmllczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlX2F0
SW5kZXhfLAorICAgICJzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZTphdEluZGV4OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4
Q2xhbXBfYXRJbmRleF8sCisgICAgInNldEZyYWdtZW50U2FtcGxlclN0YXRlOmxvZE1pbkNsYW1w
OmxvZE1heENsYW1wOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVu
dFNhbXBsZXJTdGF0ZXNfbG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfLAorICAg
ICJzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1heENsYW1wczp3aXRo
UmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXNf
d2l0aFJhbmdlXywKKyAgICAic2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50VGV4dHVyZV9hdEluZGV4XywKKyAgICAi
c2V0RnJhZ21lbnRUZXh0dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRG
cmFnbWVudFRleHR1cmVzX3dpdGhSYW5nZV8sCisgICAgInNldEZyYWdtZW50VGV4dHVyZXM6d2l0
aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rp
b25UYWJsZV9hdEJ1ZmZlckluZGV4XywKKyAgICAic2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25U
YWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRW
aXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXywKKyAgICAic2V0RnJhZ21lbnRW
aXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0RnJvbnRGYWNlU3RlbmNpbF8sCisgICAgInNldEZyb250RmFjZVN0ZW5jaWw6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcm9udEZhY2luZ1dpbmRpbmdfLAorICAgICJzZXRG
cm9udEZhY2luZ1dpbmRpbmc6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGdW5jdGlvbl9h
dEluZGV4XywKKyAgICAic2V0RnVuY3Rpb246YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldEZ1bmN0aW9uQ291bnRfLAorICAgICJzZXRGdW5jdGlvbkNvdW50OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0RnVuY3Rpb25HcmFwaHNfLAorICAgICJzZXRGdW5jdGlvbkdyYXBo
czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZ1bmN0aW9uTmFtZV8sCisgICAgInNldEZ1
bmN0aW9uTmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZ1bmN0aW9uc18sCisgICAg
InNldEZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZ1bmN0aW9uc193aXRo
UmFuZ2VfLAorICAgICJzZXRGdW5jdGlvbnM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0R2VvbWV0cnlEZXNjcmlwdG9yc18sCisgICAgInNldEdlb21ldHJ5RGVzY3JpcHRv
cnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRHcm91cHNfLAorICAgICJzZXRHcm91cHM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRIYXphcmRUcmFja2luZ01vZGVfLAorICAgICJz
ZXRIYXphcmRUcmFja2luZ01vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRIZWlnaHRf
LAorICAgICJzZXRIZWlnaHQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbWFnZWJsb2Nr
U2FtcGxlTGVuZ3RoXywKKyAgICAic2V0SW1hZ2VibG9ja1NhbXBsZUxlbmd0aDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldEltYWdlYmxvY2tXaWR0aF9oZWlnaHRfLAorICAgICJzZXRJbWFn
ZWJsb2NrV2lkdGg6aGVpZ2h0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kZXhfLAor
ICAgICJzZXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluZGV4QnVmZmVyXywK
KyAgICAic2V0SW5kZXhCdWZmZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmRleEJ1
ZmZlckluZGV4XywKKyAgICAic2V0SW5kZXhCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEluZGV4QnVmZmVyT2Zmc2V0XywKKyAgICAic2V0SW5kZXhCdWZmZXJPZmZzZXQ6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmRleFR5cGVfLAorICAgICJzZXRJbmRleFR5
cGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXJfYXRJ
bmRleF8sCisgICAgInNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcjphdEluZGV4OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyc193aXRoUmFuZ2VfLAorICAg
ICJzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXJzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEluaGVyaXRCdWZmZXJzXywKKyAgICAic2V0SW5oZXJpdEJ1ZmZlcnM6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmhlcml0UGlwZWxpbmVTdGF0ZV8sCisgICAgInNldElu
aGVyaXRQaXBlbGluZVN0YXRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5wdXRQcmlt
aXRpdmVUb3BvbG9neV8sCisgICAgInNldElucHV0UHJpbWl0aXZlVG9wb2xvZ3k6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRJbnNlcnRMaWJyYXJpZXNfLAorICAgICJzZXRJbnNlcnRMaWJy
YXJpZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnN0YWxsTmFtZV8sCisgICAgInNl
dEluc3RhbGxOYW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFuY2VDb3VudF8s
CisgICAgInNldEluc3RhbmNlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnN0
YW5jZURlc2NyaXB0b3JCdWZmZXJfLAorICAgICJzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXI6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZz
ZXRfLAorICAgICJzZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRJbnN0YW5jZURlc2NyaXB0b3JTdHJpZGVfLAorICAgICJzZXRJbnN0
YW5jZURlc2NyaXB0b3JTdHJpZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbnN0YW5j
ZURlc2NyaXB0b3JUeXBlXywKKyAgICAic2V0SW5zdGFuY2VEZXNjcmlwdG9yVHlwZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXNfLAor
ICAgICJzZXRJbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XywKKyAg
ICAic2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEluZGV4XywKKyAg
ICAic2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEluZGV4OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldF8sCisgICAgInNldElu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoUmFuZ2VfLAorICAg
ICJzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRLZXJuZWxCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRLZXJu
ZWxCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMYWJl
bF8sCisgICAgInNldExhYmVsOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TGFuZ3VhZ2VW
ZXJzaW9uXywKKyAgICAic2V0TGFuZ3VhZ2VWZXJzaW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0TGF5ZXJfYXRJbmRleF8sCisgICAgInNldExheWVyOmF0SW5kZXg6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRMZXZlbF8sCisgICAgInNldExldmVsOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0TGlicmFyaWVzXywKKyAgICAic2V0TGlicmFyaWVzOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0TGlicmFyeVR5cGVfLAorICAgICJzZXRMaWJyYXJ5VHlwZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldExpbmtlZEZ1bmN0aW9uc18sCisgICAgInNldExpbmtlZEZ1
bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldExvYWRBY3Rpb25fLAorICAgICJz
ZXRMb2FkQWN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TG9kQXZlcmFnZV8sCisg
ICAgInNldExvZEF2ZXJhZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMb2RNYXhDbGFt
cF8sCisgICAgInNldExvZE1heENsYW1wOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TG9k
TWluQ2xhbXBfLAorICAgICJzZXRMb2RNaW5DbGFtcDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldE1hZ0ZpbHRlcl8sCisgICAgInNldE1hZ0ZpbHRlcjoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldE1heEFuaXNvdHJvcHlfLAorICAgICJzZXRNYXhBbmlzb3Ryb3B5OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0TWF4Q2FsbFN0YWNrRGVwdGhfLAorICAgICJzZXRNYXhDYWxsU3Rh
Y2tEZXB0aDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heEZyYWdtZW50QnVmZmVyQmlu
ZENvdW50XywKKyAgICAic2V0TWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRoXywKKyAgICAic2V0TWF4
RnJhZ21lbnRDYWxsU3RhY2tEZXB0aDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heEtl
cm5lbEJ1ZmZlckJpbmRDb3VudF8sCisgICAgInNldE1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1heFRlc3NlbGxhdGlvbkZhY3Rvcl8sCisgICAg
InNldE1heFRlc3NlbGxhdGlvbkZhY3RvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1h
eFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAic2V0TWF4VG90YWxUaHJlYWRzUGVy
VGhyZWFkZ3JvdXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhWZXJ0ZXhBbXBsaWZp
Y2F0aW9uQ291bnRfLAorICAgICJzZXRNYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQ6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnRfLAorICAgICJz
ZXRNYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRN
YXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aF8sCisgICAgInNldE1heFZlcnRleENhbGxTdGFja0RlcHRo
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWluRmlsdGVyXywKKyAgICAic2V0TWluRmls
dGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWlwRmlsdGVyXywKKyAgICAic2V0TWlw
RmlsdGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWlwbWFwTGV2ZWxDb3VudF8sCisg
ICAgInNldE1pcG1hcExldmVsQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNb3Rp
b25FbmRCb3JkZXJNb2RlXywKKyAgICAic2V0TW90aW9uRW5kQm9yZGVyTW9kZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldE1vdGlvbkVuZFRpbWVfLAorICAgICJzZXRNb3Rpb25FbmRUaW1l
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9uS2V5ZnJhbWVDb3VudF8sCisgICAg
InNldE1vdGlvbktleWZyYW1lQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNb3Rp
b25TdGFydEJvcmRlck1vZGVfLAorICAgICJzZXRNb3Rpb25TdGFydEJvcmRlck1vZGU6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRNb3Rpb25TdGFydFRpbWVfLAorICAgICJzZXRNb3Rpb25T
dGFydFRpbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNb3Rpb25UcmFuc2Zvcm1CdWZm
ZXJfLAorICAgICJzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXI6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXRfLAorICAgICJzZXRNb3Rpb25UcmFu
c2Zvcm1CdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNb3Rpb25UcmFu
c2Zvcm1Db3VudF8sCisgICAgInNldE1vdGlvblRyYW5zZm9ybUNvdW50OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0TXV0YWJpbGl0eV8sCisgICAgInNldE11dGFiaWxpdHk6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXROYW1lXywKKyAgICAic2V0TmFtZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldE5vZGVzXywKKyAgICAic2V0Tm9kZXM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXROb3JtYWxpemVkQ29vcmRpbmF0ZXNfLAorICAgICJzZXROb3JtYWxpemVkQ29vcmRp
bmF0ZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2Ny
aXB0XywKKyAgICAic2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldE9mZnNldF8sCisgICAgInNldE9mZnNldDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldE9wYXF1ZV8sCisgICAgInNldE9wYXF1ZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJlX2F0
SW5kZXhfLAorICAgICJzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aFNp
Z25hdHVyZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3BhcXVlVHJpYW5n
bGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmVfd2l0aFJhbmdlXywKKyAgICAic2V0
T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmU6d2l0aFJhbmdl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3B0aW9uc18sCisgICAgInNldE9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRPdXRwdXROb2RlXywKKyAgICAic2V0T3V0cHV0
Tm9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE91dHB1dFVSTF8sCisgICAgInNldE91
dHB1dFVSTDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFBpeGVsRm9ybWF0XywKKyAgICAi
c2V0UGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRQcmVsb2FkZWRMaWJy
YXJpZXNfLAorICAgICJzZXRQcmVsb2FkZWRMaWJyYXJpZXM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRQcmVwcm9jZXNzb3JNYWNyb3NfLAorICAgICJzZXRQcmVwcm9jZXNzb3JNYWNyb3M6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRQcmVzZXJ2ZUludmFyaWFuY2VfLAorICAgICJz
ZXRQcmVzZXJ2ZUludmFyaWFuY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRQcml2YXRl
RnVuY3Rpb25zXywKKyAgICAic2V0UHJpdmF0ZUZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFB1cmdlYWJsZVN0YXRlXywKKyAgICAic2V0UHVyZ2VhYmxlU3RhdGU6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRSQWRkcmVzc01vZGVfLAorICAgICJzZXRSQWRkcmVzc01v
ZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSYXN0ZXJTYW1wbGVDb3VudF8sCisgICAg
InNldFJhc3RlclNhbXBsZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmFzdGVy
aXphdGlvbkVuYWJsZWRfLAorICAgICJzZXRSYXN0ZXJpemF0aW9uRW5hYmxlZDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFJhc3Rlcml6YXRpb25SYXRlTWFwXywKKyAgICAic2V0UmFzdGVy
aXphdGlvblJhdGVNYXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZWFkTWFza18sCisg
ICAgInNldFJlYWRNYXNrOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVuZGVyUGlwZWxp
bmVTdGF0ZV8sCisgICAgInNldFJlbmRlclBpcGVsaW5lU3RhdGU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRSZW5kZXJQaXBlbGluZVN0YXRlX2F0SW5kZXhfLAorICAgICJzZXRSZW5kZXJQ
aXBlbGluZVN0YXRlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZW5kZXJQ
aXBlbGluZVN0YXRlc193aXRoUmFuZ2VfLAorICAgICJzZXRSZW5kZXJQaXBlbGluZVN0YXRlczp3
aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZW5kZXJUYXJnZXRBcnJheUxl
bmd0aF8sCisgICAgInNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0UmVuZGVyVGFyZ2V0SGVpZ2h0XywKKyAgICAic2V0UmVuZGVyVGFyZ2V0SGVp
Z2h0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVuZGVyVGFyZ2V0V2lkdGhfLAorICAg
ICJzZXRSZW5kZXJUYXJnZXRXaWR0aDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlc29s
dmVEZXB0aFBsYW5lXywKKyAgICAic2V0UmVzb2x2ZURlcHRoUGxhbmU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRSZXNvbHZlTGV2ZWxfLAorICAgICJzZXRSZXNvbHZlTGV2ZWw6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZXNvbHZlU2xpY2VfLAorICAgICJzZXRSZXNvbHZlU2xp
Y2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZXNvbHZlVGV4dHVyZV8sCisgICAgInNl
dFJlc29sdmVUZXh0dXJlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVzb3VyY2VPcHRp
b25zXywKKyAgICAic2V0UmVzb3VyY2VPcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0UmV0YWluZWRSZWZlcmVuY2VzXywKKyAgICAic2V0UmV0YWluZWRSZWZlcmVuY2VzOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmdiQmxlbmRPcGVyYXRpb25fLAorICAgICJzZXRSZ2JC
bGVuZE9wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNBZGRyZXNzTW9kZV8s
CisgICAgInNldFNBZGRyZXNzTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNhbXBs
ZUJ1ZmZlcl8sCisgICAgInNldFNhbXBsZUJ1ZmZlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFNhbXBsZUNvdW50XywKKyAgICAic2V0U2FtcGxlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRTYW1wbGVQb3NpdGlvbnNfY291bnRfLAorICAgICJzZXRTYW1wbGVQb3NpdGlv
bnM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTYW1wbGVyU3RhdGVfYXRJbmRl
eF8sCisgICAgInNldFNhbXBsZXJTdGF0ZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0U2FtcGxlclN0YXRlX2xvZE1pbkNsYW1wX2xvZE1heENsYW1wX2F0SW5kZXhfLAorICAg
ICJzZXRTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFNhbXBsZXJTdGF0ZXNfbG9kTWluQ2xhbXBzX2xvZE1heENs
YW1wc193aXRoUmFuZ2VfLAorICAgICJzZXRTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RN
YXhDbGFtcHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlclN0
YXRlc193aXRoUmFuZ2VfLAorICAgICJzZXRTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFNjaXNzb3JSZWN0XywKKyAgICAic2V0U2Npc3NvclJlY3Q6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTY2lzc29yUmVjdHNfY291bnRfLAorICAgICJz
ZXRTY2lzc29yUmVjdHM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTY3JlZW5T
aXplXywKKyAgICAic2V0U2NyZWVuU2l6ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNp
Z25hbGVkVmFsdWVfLAorICAgICJzZXRTaWduYWxlZFZhbHVlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0U2l6ZV8sCisgICAgInNldFNpemU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRTbGljZV8sCisgICAgInNldFNsaWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U291
cmNlQWxwaGFCbGVuZEZhY3Rvcl8sCisgICAgInNldFNvdXJjZUFscGhhQmxlbmRGYWN0b3I6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTb3VyY2VSR0JCbGVuZEZhY3Rvcl8sCisgICAgInNl
dFNvdXJjZVJHQkJsZW5kRmFjdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3BlY2lh
bGl6ZWROYW1lXywKKyAgICAic2V0U3BlY2lhbGl6ZWROYW1lOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0U3RhZ2VJblJlZ2lvbl8sCisgICAgInNldFN0YWdlSW5SZWdpb246Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTdGFnZUluUmVnaW9uV2l0aEluZGlyZWN0QnVmZmVyX2luZGly
ZWN0QnVmZmVyT2Zmc2V0XywKKyAgICAic2V0U3RhZ2VJblJlZ2lvbldpdGhJbmRpcmVjdEJ1ZmZl
cjppbmRpcmVjdEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0YWdl
SW5wdXREZXNjcmlwdG9yXywKKyAgICAic2V0U3RhZ2VJbnB1dERlc2NyaXB0b3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTdGFydE9mRW5jb2RlclNhbXBsZUluZGV4XywKKyAgICAic2V0
U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0
YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4XywKKyAgICAic2V0U3RhcnRPZkZyYWdtZW50U2FtcGxl
SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGFydE9mVmVydGV4U2FtcGxlSW5k
ZXhfLAorICAgICJzZXRTdGFydE9mVmVydGV4U2FtcGxlSW5kZXg6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRTdGVuY2lsQXR0YWNobWVudF8sCisgICAgInNldFN0ZW5jaWxBdHRhY2htZW50
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZvcm1h
dF8sCisgICAgInNldFN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRTdGVuY2lsQ29tcGFyZUZ1bmN0aW9uXywKKyAgICAic2V0U3RlbmNpbENv
bXBhcmVGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxGYWlsdXJl
T3BlcmF0aW9uXywKKyAgICAic2V0U3RlbmNpbEZhaWx1cmVPcGVyYXRpb246Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRTdGVuY2lsRnJvbnRSZWZlcmVuY2VWYWx1ZV9iYWNrUmVmZXJlbmNl
VmFsdWVfLAorICAgICJzZXRTdGVuY2lsRnJvbnRSZWZlcmVuY2VWYWx1ZTpiYWNrUmVmZXJlbmNl
VmFsdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGVuY2lsUmVmZXJlbmNlVmFsdWVf
LAorICAgICJzZXRTdGVuY2lsUmVmZXJlbmNlVmFsdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRTdGVuY2lsUmVzb2x2ZUZpbHRlcl8sCisgICAgInNldFN0ZW5jaWxSZXNvbHZlRmlsdGVy
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RlbmNpbFN0b3JlQWN0aW9uXywKKyAgICAi
c2V0U3RlbmNpbFN0b3JlQWN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RlbmNp
bFN0b3JlQWN0aW9uT3B0aW9uc18sCisgICAgInNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGVwRnVuY3Rpb25fLAorICAgICJzZXRTdGVw
RnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGVwUmF0ZV8sCisgICAgInNl
dFN0ZXBSYXRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RvcmFnZU1vZGVfLAorICAg
ICJzZXRTdG9yYWdlTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0b3JlQWN0aW9u
XywKKyAgICAic2V0U3RvcmVBY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdG9y
ZUFjdGlvbk9wdGlvbnNfLAorICAgICJzZXRTdG9yZUFjdGlvbk9wdGlvbnM6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRTdHJpZGVfLAorICAgICJzZXRTdHJpZGU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zXywKKyAgICAic2V0U3Vw
cG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN1
cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9uc18sCisgICAgInNldFN1cHBvcnRBZGRp
bmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN1
cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnNfLAorICAgICJzZXRTdXBwb3J0QWRkaW5n
VmVydGV4QmluYXJ5RnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3VwcG9y
dEFyZ3VtZW50QnVmZmVyc18sCisgICAgInNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnM6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVyc18sCisg
ICAgInNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0U3dpenpsZV8sCisgICAgInNldFN3aXp6bGU6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRUQWRkcmVzc01vZGVfLAorICAgICJzZXRUQWRkcmVzc01vZGU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGVfLAorICAg
ICJzZXRUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRUZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJfb2Zmc2V0X2luc3RhbmNlU3RyaWRl
XywKKyAgICAic2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOm9mZnNldDppbnN0YW5jZVN0cmlk
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdF8s
CisgICAgInNldFRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlXywKKyAgICAic2V0VGVzc2VsbGF0aW9uRmFj
dG9yU2NhbGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUZXNzZWxsYXRpb25GYWN0b3JT
Y2FsZUVuYWJsZWRfLAorICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb25f
LAorICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb246Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRUZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXJfLAorICAgICJzZXRU
ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlXywKKyAgICAic2V0VGVzc2VsbGF0aW9uUGFydGl0
aW9uTW9kZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRleHR1cmVfLAorICAgICJzZXRU
ZXh0dXJlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGV4dHVyZV9hdEluZGV4XywKKyAg
ICAic2V0VGV4dHVyZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGV4dHVy
ZVR5cGVfLAorICAgICJzZXRUZXh0dXJlVHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFRleHR1cmVzX3dpdGhSYW5nZV8sCisgICAgInNldFRleHR1cmVzOndpdGhSYW5nZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4
ZWN1dGlvbldpZHRoXywKKyAgICAic2V0VGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFk
RXhlY3V0aW9uV2lkdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaHJlYWRncm91cE1l
bW9yeUxlbmd0aF8sCisgICAgInNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGhfYXRJbmRleF8sCisgICAg
InNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aF9vZmZzZXRfYXRJbmRleF8sCisgICAgInNl
dFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoOm9mZnNldDphdEluZGV4OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0VGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplXywKKyAgICAic2V0VGhy
ZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VGlsZUFjY2VsZXJhdGlvblN0cnVjdHVyZV9hdEJ1ZmZlckluZGV4XywKKyAgICAic2V0VGlsZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0VGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfLAorICAgICJzZXRUaWxlQWRkaXRp
b25hbEJpbmFyeUZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVCdWZm
ZXJfb2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRUaWxlQnVmZmVyOm9mZnNldDphdEluZGV4OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZUJ1ZmZlck9mZnNldF9hdEluZGV4XywKKyAg
ICAic2V0VGlsZUJ1ZmZlck9mZnNldDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0VGlsZUJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfLAorICAgICJzZXRUaWxlQnVmZmVyczpv
ZmZzZXRzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVCeXRlc19s
ZW5ndGhfYXRJbmRleF8sCisgICAgInNldFRpbGVCeXRlczpsZW5ndGg6YXRJbmRleDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVGdW5jdGlvbl8sCisgICAgInNldFRpbGVGdW5jdGlv
bjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVIZWlnaHRfLAorICAgICJzZXRUaWxl
SGVpZ2h0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlSW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXywKKyAgICAic2V0VGlsZUlu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVfYXRJbmRleF8sCisgICAgInNldFRpbGVTYW1w
bGVyU3RhdGU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVTYW1wbGVy
U3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRleF8sCisgICAgInNldFRpbGVTYW1w
bGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNf
d2l0aFJhbmdlXywKKyAgICAic2V0VGlsZVNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1h
eENsYW1wczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlU2FtcGxl
clN0YXRlc193aXRoUmFuZ2VfLAorICAgICJzZXRUaWxlU2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlVGV4dHVyZV9hdEluZGV4XywKKyAgICAi
c2V0VGlsZVRleHR1cmU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVU
ZXh0dXJlc193aXRoUmFuZ2VfLAorICAgICJzZXRUaWxlVGV4dHVyZXM6d2l0aFJhbmdlOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlX2F0QnVmZmVy
SW5kZXhfLAorICAgICJzZXRUaWxlVmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0
aEJ1ZmZlclJhbmdlXywKKyAgICAic2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlczp3aXRoQnVm
ZmVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlV2lkdGhfLAorICAgICJz
ZXRUaWxlV2lkdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUcmlhbmdsZUNvdW50XywK
KyAgICAic2V0VHJpYW5nbGVDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRyaWFu
Z2xlRmlsbE1vZGVfLAorICAgICJzZXRUcmlhbmdsZUZpbGxNb2RlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0VHlwZV8sCisgICAgInNldFR5cGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRVcmxfLAorICAgICJzZXRVcmw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRVc2Fn
ZV8sCisgICAgInNldFVzYWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4QWNj
ZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRWZXJ0ZXhBY2NlbGVy
YXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfLAorICAgICJzZXRWZXJ0ZXhBZGRpdGlv
bmFsQmluYXJ5RnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4QW1w
bGlmaWNhdGlvbkNvdW50X3ZpZXdNYXBwaW5nc18sCisgICAgInNldFZlcnRleEFtcGxpZmljYXRp
b25Db3VudDp2aWV3TWFwcGluZ3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhC
dWZmZXJfLAorICAgICJzZXRWZXJ0ZXhCdWZmZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRWZXJ0ZXhCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRWZXJ0ZXhCdWZmZXI6b2Zm
c2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhCdWZmZXJPZmZz
ZXRfLAorICAgICJzZXRWZXJ0ZXhCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRWZXJ0ZXhCdWZmZXJPZmZzZXRfYXRJbmRleF8sCisgICAgInNldFZlcnRleEJ1ZmZlck9m
ZnNldDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4QnVmZmVyc18s
CisgICAgInNldFZlcnRleEJ1ZmZlcnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0
ZXhCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXywKKyAgICAic2V0VmVydGV4QnVmZmVyczpvZmZz
ZXRzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ5dGVzX2xl
bmd0aF9hdEluZGV4XywKKyAgICAic2V0VmVydGV4Qnl0ZXM6bGVuZ3RoOmF0SW5kZXg6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhEZXNjcmlwdG9yXywKKyAgICAic2V0VmVydGV4
RGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEZ1bmN0aW9uXywK
KyAgICAic2V0VmVydGV4RnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0
ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRWZXJ0
ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoQnVmZmVy
UmFuZ2VfLAorICAgICJzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoQnVm
ZmVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhMaW5rZWRGdW5jdGlv
bnNfLAorICAgICJzZXRWZXJ0ZXhMaW5rZWRGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRWZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXNfLAorICAgICJzZXRWZXJ0ZXhQcmVsb2Fk
ZWRMaWJyYXJpZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhTYW1wbGVyU3Rh
dGVfYXRJbmRleF8sCisgICAgInNldFZlcnRleFNhbXBsZXJTdGF0ZTphdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlX2xvZE1pbkNsYW1wX2xvZE1h
eENsYW1wX2F0SW5kZXhfLAorICAgICJzZXRWZXJ0ZXhTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6
bG9kTWF4Q2xhbXA6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFNh
bXBsZXJTdGF0ZXNfbG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfLAorICAgICJz
ZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RNYXhDbGFtcHM6d2l0aFJhbmdl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlc193aXRoUmFu
Z2VfLAorICAgICJzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFZlcnRleFN0cmlkZV8sCisgICAgInNldFZlcnRleFN0cmlkZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFRleHR1cmVfYXRJbmRleF8sCisgICAgInNl
dFZlcnRleFRleHR1cmU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRl
eFRleHR1cmVzX3dpdGhSYW5nZV8sCisgICAgInNldFZlcnRleFRleHR1cmVzOndpdGhSYW5nZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxlX2F0
QnVmZmVySW5kZXhfLAorICAgICJzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZl
ckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9u
VGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldFZlcnRleFZpc2libGVGdW5jdGlvblRh
Ymxlczp3aXRoQnVmZmVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaWV3cG9y
dF8sCisgICAgInNldFZpZXdwb3J0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Vmlld3Bv
cnRzX2NvdW50XywKKyAgICAic2V0Vmlld3BvcnRzOmNvdW50OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcl8sCisgICAgInNldFZpc2liaWxpdHlSZXN1
bHRCdWZmZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWaXNpYmlsaXR5UmVzdWx0TW9k
ZV9vZmZzZXRfLAorICAgICJzZXRWaXNpYmlsaXR5UmVzdWx0TW9kZTpvZmZzZXQ6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XywK
KyAgICAic2V0VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFZpc2libGVGdW5jdGlvblRhYmxlX2F0SW5kZXhfLAorICAgICJzZXRW
aXNpYmxlRnVuY3Rpb25UYWJsZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldFZpc2libGVG
dW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aFJhbmdlXywKKyAgICAic2V0VmlzaWJsZUZ1bmN0
aW9uVGFibGVzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFdpZHRoXywK
KyAgICAic2V0V2lkdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRXcml0ZU1hc2tfLAor
ICAgICJzZXRXcml0ZU1hc2s6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzaGFyZWRDYXB0dXJl
TWFuYWdlciwKKyAgICAic2hhcmVkQ2FwdHVyZU1hbmFnZXIiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNpZ25hbGVkVmFsdWUsCisgICAgInNpZ25hbGVkVmFsdWUiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNpemUsCisgICAgInNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNsaWNlLAor
ICAgICJzbGljZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc291cmNlQWxwaGFCbGVuZEZhY3Rv
ciwKKyAgICAic291cmNlQWxwaGFCbGVuZEZhY3RvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c291cmNlUkdCQmxlbmRGYWN0b3IsCisgICAgInNvdXJjZVJHQkJsZW5kRmFjdG9yIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzcGFyc2VUaWxlU2l6ZUluQnl0ZXMsCisgICAgInNwYXJzZVRpbGVT
aXplSW5CeXRlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3BhcnNlVGlsZVNpemVXaXRoVGV4
dHVyZVR5cGVfcGl4ZWxGb3JtYXRfc2FtcGxlQ291bnRfLAorICAgICJzcGFyc2VUaWxlU2l6ZVdp
dGhUZXh0dXJlVHlwZTpwaXhlbEZvcm1hdDpzYW1wbGVDb3VudDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNwZWNpYWxpemVkTmFtZSwKKyAgICAic3BlY2lhbGl6ZWROYW1lIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzdGFnZUlucHV0QXR0cmlidXRlcywKKyAgICAic3RhZ2VJbnB1dEF0dHJp
YnV0ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YWdlSW5wdXREZXNjcmlwdG9yLAorICAg
ICJzdGFnZUlucHV0RGVzY3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhZ2VJbnB1
dE91dHB1dERlc2NyaXB0b3IsCisgICAgInN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzdGFydENhcHR1cmVXaXRoQ29tbWFuZFF1ZXVlXywKKyAgICAi
c3RhcnRDYXB0dXJlV2l0aENvbW1hbmRRdWV1ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0
YXJ0Q2FwdHVyZVdpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAic3RhcnRDYXB0dXJlV2l0aERl
c2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFydENhcHR1cmVXaXRo
RGV2aWNlXywKKyAgICAic3RhcnRDYXB0dXJlV2l0aERldmljZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHN0YXJ0Q2FwdHVyZVdpdGhTY29wZV8sCisgICAgInN0YXJ0Q2FwdHVyZVdpdGhTY29w
ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgsCisg
ICAgInN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0
YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4LAorICAgICJzdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRl
eCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4LAorICAg
ICJzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YXRp
Y1RocmVhZGdyb3VwTWVtb3J5TGVuZ3RoLAorICAgICJzdGF0aWNUaHJlYWRncm91cE1lbW9yeUxl
bmd0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhdHVzLAorICAgICJzdGF0dXMiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHN0ZW5jaWxBdHRhY2htZW50LAorICAgICJzdGVuY2lsQXR0YWNo
bWVudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZvcm1h
dCwKKyAgICAic3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZvcm1hdCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc3RlbmNpbENvbXBhcmVGdW5jdGlvbiwKKyAgICAic3RlbmNpbENvbXBhcmVGdW5jdGlv
biIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlbmNpbEZhaWx1cmVPcGVyYXRpb24sCisgICAg
InN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGVuY2ls
UmVzb2x2ZUZpbHRlciwKKyAgICAic3RlbmNpbFJlc29sdmVGaWx0ZXIiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHN0ZXBGdW5jdGlvbiwKKyAgICAic3RlcEZ1bmN0aW9uIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzdGVwUmF0ZSwKKyAgICAic3RlcFJhdGUiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHN0b3BDYXB0dXJlLAorICAgICJzdG9wQ2FwdHVyZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc3RvcmFnZU1vZGUsCisgICAgInN0b3JhZ2VNb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzdG9yZUFjdGlvbiwKKyAgICAic3RvcmVBY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHN0b3JlQWN0aW9uT3B0aW9ucywKKyAgICAic3RvcmVBY3Rpb25PcHRpb25zIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzdHJpZGUsCisgICAgInN0cmlkZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc3RydWN0VHlwZSwKKyAgICAic3RydWN0VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucywKKyAgICAic3VwcG9ydEFkZGluZ0JpbmFyeUZ1
bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydEFkZGluZ0ZyYWdtZW50Qmlu
YXJ5RnVuY3Rpb25zLAorICAgICJzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlv
bnMsCisgICAgInN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMsCisgICAgInN1cHBvcnRBcmd1bWVu
dEJ1ZmZlcnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRJbmRpcmVjdENvbW1hbmRC
dWZmZXJzLAorICAgICJzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5nLAorICAgICJzdXBwb3J0czMy
Qml0RmxvYXRGaWx0ZXJpbmciKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzMzJCaXRN
U0FBLAorICAgICJzdXBwb3J0czMyQml0TVNBQSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3Vw
cG9ydHNCQ1RleHR1cmVDb21wcmVzc2lvbiwKKyAgICAic3VwcG9ydHNCQ1RleHR1cmVDb21wcmVz
c2lvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNDb3VudGVyU2FtcGxpbmdfLAor
ICAgICJzdXBwb3J0c0NvdW50ZXJTYW1wbGluZzoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1
cHBvcnRzRGVzdGluYXRpb25fLAorICAgICJzdXBwb3J0c0Rlc3RpbmF0aW9uOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc3VwcG9ydHNEeW5hbWljTGlicmFyaWVzLAorICAgICJzdXBwb3J0c0R5
bmFtaWNMaWJyYXJpZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzRmFtaWx5XywK
KyAgICAic3VwcG9ydHNGYW1pbHk6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c0Zl
YXR1cmVTZXRfLAorICAgICJzdXBwb3J0c0ZlYXR1cmVTZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnMsCisgICAgInN1cHBvcnRzRnVuY3Rpb25Qb2lu
dGVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzRnJv
bVJlbmRlciwKKyAgICAic3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzRnJvbVJlbmRlciIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNQcmltaXRpdmVNb3Rpb25CbHVyLAorICAgICJzdXBw
b3J0c1ByaW1pdGl2ZU1vdGlvbkJsdXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRz
UHVsbE1vZGVsSW50ZXJwb2xhdGlvbiwKKyAgICAic3VwcG9ydHNQdWxsTW9kZWxJbnRlcnBvbGF0
aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCwKKyAg
ICAic3VwcG9ydHNRdWVyeVRleHR1cmVMT0QiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBv
cnRzUmFzdGVyaXphdGlvblJhdGVNYXBXaXRoTGF5ZXJDb3VudF8sCisgICAgInN1cHBvcnRzUmFz
dGVyaXphdGlvblJhdGVNYXBXaXRoTGF5ZXJDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHN1cHBvcnRzUmF5dHJhY2luZywKKyAgICAic3VwcG9ydHNSYXl0cmFjaW5nIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzdXBwb3J0c1JheXRyYWNpbmdGcm9tUmVuZGVyLAorICAgICJzdXBwb3J0
c1JheXRyYWNpbmdGcm9tUmVuZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c1Jl
bmRlckR5bmFtaWNMaWJyYXJpZXMsCisgICAgInN1cHBvcnRzUmVuZGVyRHluYW1pY0xpYnJhcmll
cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNTaGFkZXJCYXJ5Y2VudHJpY0Nvb3Jk
aW5hdGVzLAorICAgICJzdXBwb3J0c1NoYWRlckJhcnljZW50cmljQ29vcmRpbmF0ZXMiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzVGV4dHVyZVNhbXBsZUNvdW50XywKKyAgICAic3Vw
cG9ydHNUZXh0dXJlU2FtcGxlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0
c1ZlcnRleEFtcGxpZmljYXRpb25Db3VudF8sCisgICAgInN1cHBvcnRzVmVydGV4QW1wbGlmaWNh
dGlvbkNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3dpenpsZSwKKyAgICAic3dpenps
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3luY2hyb25pemVSZXNvdXJjZV8sCisgICAgInN5
bmNocm9uaXplUmVzb3VyY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzeW5jaHJvbml6ZVRl
eHR1cmVfc2xpY2VfbGV2ZWxfLAorICAgICJzeW5jaHJvbml6ZVRleHR1cmU6c2xpY2U6bGV2ZWw6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0QWRkcmVzc01vZGUsCisgICAgInRBZGRyZXNzTW9k
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGFpbFNpemVJbkJ5dGVzLAorICAgICJ0YWlsU2l6
ZUluQnl0ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlvbkNvbnRyb2xQb2lu
dEluZGV4VHlwZSwKKyAgICAidGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTCh0ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQsCisgICAgInRlc3Nl
bGxhdGlvbkZhY3RvckZvcm1hdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGVzc2VsbGF0aW9u
RmFjdG9yU3RlcEZ1bmN0aW9uLAorICAgICJ0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24i
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlciwK
KyAgICAidGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTCh0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlLAorICAgICJ0ZXNzZWxsYXRpb25QYXJ0aXRp
b25Nb2RlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXh0dXJlLAorICAgICJ0ZXh0dXJlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXh0dXJlMkREZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0
X3dpZHRoX2hlaWdodF9taXBtYXBwZWRfLAorICAgICJ0ZXh0dXJlMkREZXNjcmlwdG9yV2l0aFBp
eGVsRm9ybWF0OndpZHRoOmhlaWdodDptaXBtYXBwZWQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TCh0ZXh0dXJlQmFycmllciwKKyAgICAidGV4dHVyZUJhcnJpZXIiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHRleHR1cmVCdWZmZXJEZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0X3dpZHRoX3Jlc291
cmNlT3B0aW9uc191c2FnZV8sCisgICAgInRleHR1cmVCdWZmZXJEZXNjcmlwdG9yV2l0aFBpeGVs
Rm9ybWF0OndpZHRoOnJlc291cmNlT3B0aW9uczp1c2FnZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHRleHR1cmVDdWJlRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdF9zaXplX21pcG1hcHBlZF8s
CisgICAgInRleHR1cmVDdWJlRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdDpzaXplOm1pcG1hcHBl
ZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRleHR1cmVEYXRhVHlwZSwKKyAgICAidGV4dHVy
ZURhdGFUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXh0dXJlUmVmZXJlbmNlVHlwZSwK
KyAgICAidGV4dHVyZVJlZmVyZW5jZVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRleHR1
cmVUeXBlLAorICAgICJ0ZXh0dXJlVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGhyZWFk
RXhlY3V0aW9uV2lkdGgsCisgICAgInRocmVhZEV4ZWN1dGlvbldpZHRoIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTCh0aHJlYWRHcm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0
aCwKKyAgICAidGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGgi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRocmVhZGdyb3VwTWVtb3J5QWxpZ25tZW50LAorICAg
ICJ0aHJlYWRncm91cE1lbW9yeUFsaWdubWVudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGhy
ZWFkZ3JvdXBNZW1vcnlEYXRhU2l6ZSwKKyAgICAidGhyZWFkZ3JvdXBNZW1vcnlEYXRhU2l6ZSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwodGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgsCisgICAgInRo
cmVhZGdyb3VwTWVtb3J5TGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRncm91
cFNpemVNYXRjaGVzVGlsZVNpemUsCisgICAgInRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMs
CisgICAgInRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTCh0aWxlQXJndW1lbnRzLAorICAgICJ0aWxlQXJndW1lbnRzIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTCh0aWxlQnVmZmVycywKKyAgICAidGlsZUJ1ZmZlcnMiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHRpbGVGdW5jdGlvbiwKKyAgICAidGlsZUZ1bmN0aW9uIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTCh0aWxlSGVpZ2h0LAorICAgICJ0aWxlSGVpZ2h0Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTCh0aWxlV2lkdGgsCisgICAgInRpbGVXaWR0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
dHJpYW5nbGVDb3VudCwKKyAgICAidHJpYW5nbGVDb3VudCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwodHlwZSwKKyAgICAidHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXBkYXRlRmVuY2Vf
LAorICAgICJ1cGRhdGVGZW5jZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVwZGF0ZUZlbmNl
X2FmdGVyU3RhZ2VzXywKKyAgICAidXBkYXRlRmVuY2U6YWZ0ZXJTdGFnZXM6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTCh1cGRhdGVUZXh0dXJlTWFwcGluZ19tb2RlX2luZGlyZWN0QnVmZmVyX2lu
ZGlyZWN0QnVmZmVyT2Zmc2V0XywKKyAgICAidXBkYXRlVGV4dHVyZU1hcHBpbmc6bW9kZTppbmRp
cmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHVwZGF0ZVRleHR1cmVNYXBwaW5nX21vZGVfcmVnaW9uX21pcExldmVsX3NsaWNlXywKKyAgICAi
dXBkYXRlVGV4dHVyZU1hcHBpbmc6bW9kZTpyZWdpb246bWlwTGV2ZWw6c2xpY2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTCh1cGRhdGVUZXh0dXJlTWFwcGluZ3NfbW9kZV9yZWdpb25zX21pcExl
dmVsc19zbGljZXNfbnVtUmVnaW9uc18sCisgICAgInVwZGF0ZVRleHR1cmVNYXBwaW5nczptb2Rl
OnJlZ2lvbnM6bWlwTGV2ZWxzOnNsaWNlczpudW1SZWdpb25zOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodXJsLAorICAgICJ1cmwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzYWdlLAorICAg
ICJ1c2FnZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlSGVhcF8sCisgICAgInVzZUhlYXA6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1c2VIZWFwX3N0YWdlc18sCisgICAgInVzZUhlYXA6
c3RhZ2VzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlSGVhcHNfY291bnRfLAorICAgICJ1
c2VIZWFwczpjb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZUhlYXBzX2NvdW50X3N0
YWdlc18sCisgICAgInVzZUhlYXBzOmNvdW50OnN0YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHVzZVJlc291cmNlX3VzYWdlXywKKyAgICAidXNlUmVzb3VyY2U6dXNhZ2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTCh1c2VSZXNvdXJjZV91c2FnZV9zdGFnZXNfLAorICAgICJ1c2VSZXNv
dXJjZTp1c2FnZTpzdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1c2VSZXNvdXJjZXNf
Y291bnRfdXNhZ2VfLAorICAgICJ1c2VSZXNvdXJjZXM6Y291bnQ6dXNhZ2U6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTCh1c2VSZXNvdXJjZXNfY291bnRfdXNhZ2Vfc3RhZ2VzXywKKyAgICAidXNl
UmVzb3VyY2VzOmNvdW50OnVzYWdlOnN0YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVz
ZWRTaXplLAorICAgICJ1c2VkU2l6ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGV4QWRk
aXRpb25hbEJpbmFyeUZ1bmN0aW9ucywKKyAgICAidmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0
aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGV4QXJndW1lbnRzLAorICAgICJ2ZXJ0
ZXhBcmd1bWVudHMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleEF0dHJpYnV0ZXMsCisg
ICAgInZlcnRleEF0dHJpYnV0ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleEJ1ZmZl
ciwKKyAgICAidmVydGV4QnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhCdWZm
ZXJPZmZzZXQsCisgICAgInZlcnRleEJ1ZmZlck9mZnNldCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwodmVydGV4QnVmZmVycywKKyAgICAidmVydGV4QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodmVydGV4RGVzY3JpcHRvciwKKyAgICAidmVydGV4RGVzY3JpcHRvciIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodmVydGV4RnVuY3Rpb24sCisgICAgInZlcnRleEZ1bmN0aW9uIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMsCisgICAgInZlcnRleExp
bmtlZEZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGV4UHJlbG9hZGVkTGli
cmFyaWVzLAorICAgICJ2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHZlcnRleFN0cmlkZSwKKyAgICAidmVydGV4U3RyaWRlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTCh2ZXJ0aWNhbCwKKyAgICAidmVydGljYWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHZlcnRpY2FsU2FtcGxlU3RvcmFnZSwKKyAgICAidmVydGljYWxTYW1wbGVTdG9yYWdlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTCh2aXNpYmlsaXR5UmVzdWx0QnVmZmVyLAorICAgICJ2aXNpYmls
aXR5UmVzdWx0QnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2aXNpYmxlRnVuY3Rpb25U
YWJsZURlc2NyaXB0b3IsCisgICAgInZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwod2FpdEZvckZlbmNlXywKKyAgICAid2FpdEZvckZlbmNlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwod2FpdEZvckZlbmNlX2JlZm9yZVN0YWdlc18sCisgICAg
IndhaXRGb3JGZW5jZTpiZWZvcmVTdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3YWl0
VW50aWxDb21wbGV0ZWQsCisgICAgIndhaXRVbnRpbENvbXBsZXRlZCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwod2FpdFVudGlsU2NoZWR1bGVkLAorICAgICJ3YWl0VW50aWxTY2hlZHVsZWQiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHdpZHRoLAorICAgICJ3aWR0aCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwod3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplX3RvQnVmZmVy
X29mZnNldF8sCisgICAgIndyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZTp0
b0J1ZmZlcjpvZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh3cml0ZUNvbXBhY3RlZEFj
Y2VsZXJhdGlvblN0cnVjdHVyZVNpemVfdG9CdWZmZXJfb2Zmc2V0X3NpemVEYXRhVHlwZV8sCisg
ICAgIndyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZTp0b0J1ZmZlcjpvZmZz
ZXQ6c2l6ZURhdGFUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwod3JpdGVNYXNrLAorICAg
ICJ3cml0ZU1hc2siKTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEhlYXAuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEhlYXAuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViMmMzZTEyZmU0ODA3OWJlOTQwYWI4M2Uy
NjlkOGJiZjE1ZTU5YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMSGVhcC5ocHAKQEAgLTAsMCArMSwyODIgQEAKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEhlYXAu
aHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIK
KyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExIZWFwLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJj
ZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6SW50ZWdlciwgSGVhcFR5
cGUpIHsKKyAgICBIZWFwVHlwZUF1dG9tYXRpYyA9IDAsCisgICAgSGVhcFR5cGVQbGFjZW1lbnQg
PSAxLAorICAgIEhlYXBUeXBlU3BhcnNlID0gMiwKK307CisKK2NsYXNzIEhlYXBEZXNjcmlwdG9y
IDogcHVibGljIE5TOjpDb3B5aW5nPEhlYXBEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0
YXRpYyBjbGFzcyBIZWFwRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEhlYXBEZXNj
cmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAg
ICBzaXplKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaXpl
KE5TOjpVSW50ZWdlciBzaXplKTsKKworICAgIE1UTDo6U3RvcmFnZU1vZGUgICAgICAgICAgICAg
c3RvcmFnZU1vZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFN0b3JhZ2VNb2RlKE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpOworCisgICAgTVRMOjpD
UFVDYWNoZU1vZGUgICAgICAgICAgICBjcHVDYWNoZU1vZGUoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldENwdUNhY2hlTW9kZShNVEw6OkNQVUNhY2hlTW9kZSBj
cHVDYWNoZU1vZGUpOworCisgICAgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgICAgICBoYXphcmRU
cmFja2luZ01vZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEhhemFyZFRyYWNraW5nTW9kZShNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBoYXphcmRUcmFja2lu
Z01vZGUpOworCisgICAgTVRMOjpSZXNvdXJjZU9wdGlvbnMgICAgICAgICByZXNvdXJjZU9wdGlv
bnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc291cmNl
T3B0aW9ucyhNVEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMpOworCisgICAgTVRM
OjpIZWFwVHlwZSAgICAgICAgICAgICAgICB0eXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRUeXBlKE1UTDo6SGVhcFR5cGUgdHlwZSk7Cit9OworCitjbGFz
cyBIZWFwIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxIZWFwPgoreworcHVibGljOgorICAgIE5T
OjpTdHJpbmcqICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3Mg
RGV2aWNlKiAgICAgICAgICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBNVEw6OlN0b3JhZ2VNb2Rl
ICAgICAgICBzdG9yYWdlTW9kZSgpIGNvbnN0OworCisgICAgTVRMOjpDUFVDYWNoZU1vZGUgICAg
ICAgY3B1Q2FjaGVNb2RlKCkgY29uc3Q7CisKKyAgICBNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBo
YXphcmRUcmFja2luZ01vZGUoKSBjb25zdDsKKworICAgIE1UTDo6UmVzb3VyY2VPcHRpb25zICAg
IHJlc291cmNlT3B0aW9ucygpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
c2l6ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgdXNlZFNpemUoKSBj
b25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgIGN1cnJlbnRBbGxvY2F0ZWRTaXpl
KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICBtYXhBdmFpbGFibGVTaXpl
KE5TOjpVSW50ZWdlciBhbGlnbm1lbnQpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAg
bmV3QnVmZmVyKE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlv
bnMpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgbmV3VGV4dHVyZShjb25zdCBjbGFz
cyBUZXh0dXJlRGVzY3JpcHRvciogZGVzYyk7CisKKyAgICBNVEw6OlB1cmdlYWJsZVN0YXRlICAg
ICBzZXRQdXJnZWFibGVTdGF0ZShNVEw6OlB1cmdlYWJsZVN0YXRlIHN0YXRlKTsKKworICAgIE1U
TDo6SGVhcFR5cGUgICAgICAgICAgIHR5cGUoKSBjb25zdDsKKworICAgIGNsYXNzIEJ1ZmZlciog
ICAgICAgICAgIG5ld0J1ZmZlcihOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0
aW9ucyBvcHRpb25zLCBOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIGNsYXNzIFRleHR1cmUq
ICAgICAgICAgIG5ld1RleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IsIE5TOjpVSW50ZWdlciBvZmZzZXQpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpIZWFwRGVzY3JpcHRvciogTVRMOjpIZWFwRGVzY3Jp
cHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkhlYXBE
ZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEhlYXBEZXNjcmlwdG9yKSk7Cit9CisKKy8v
IG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpIZWFwRGVzY3JpcHRvciogTVRMOjpIZWFw
RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpI
ZWFwRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHNpemUKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkhlYXBEZXNjcmlwdG9yOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2l6ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6OnNl
dFNpemUoTlM6OlVJbnRlZ2VyIHNpemUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNpemVfKSwgc2l6ZSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBzdG9yYWdlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTdG9yYWdlTW9kZSBNVEw6OkhlYXBE
ZXNjcmlwdG9yOjpzdG9yYWdlTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpTdG9yYWdlTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdG9yYWdl
TW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6OnNldFN0
b3JhZ2VNb2RlKE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0b3JhZ2VNb2RlXyks
IHN0b3JhZ2VNb2RlKTsKK30KKworLy8gcHJvcGVydHk6IGNwdUNhY2hlTW9kZQorX01UTF9JTkxJ
TkUgTVRMOjpDUFVDYWNoZU1vZGUgTVRMOjpIZWFwRGVzY3JpcHRvcjo6Y3B1Q2FjaGVNb2RlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNQVUNhY2hlTW9k
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChjcHVDYWNoZU1vZGUpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkhlYXBEZXNjcmlwdG9yOjpzZXRDcHVDYWNoZU1vZGUoTVRMOjpDUFVDYWNo
ZU1vZGUgY3B1Q2FjaGVNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRDcHVDYWNoZU1vZGVfKSwgY3B1Q2FjaGVNb2RlKTsKK30K
KworLy8gcHJvcGVydHk6IGhhemFyZFRyYWNraW5nTW9kZQorX01UTF9JTkxJTkUgTVRMOjpIYXph
cmRUcmFja2luZ01vZGUgTVRMOjpIZWFwRGVzY3JpcHRvcjo6aGF6YXJkVHJhY2tpbmdNb2RlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkhhemFyZFRyYWNr
aW5nTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChoYXphcmRUcmFja2luZ01vZGUpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXBEZXNjcmlwdG9yOjpzZXRIYXphcmRUcmFja2lu
Z01vZGUoTVRMOjpIYXphcmRUcmFja2luZ01vZGUgaGF6YXJkVHJhY2tpbmdNb2RlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRIYXph
cmRUcmFja2luZ01vZGVfKSwgaGF6YXJkVHJhY2tpbmdNb2RlKTsKK30KKworLy8gcHJvcGVydHk6
IHJlc291cmNlT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZU9wdGlvbnMgTVRMOjpI
ZWFwRGVzY3JpcHRvcjo6cmVzb3VyY2VPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlT3B0aW9ucz4odGhpcywgX01UTF9QUklWQVRF
X1NFTChyZXNvdXJjZU9wdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXBE
ZXNjcmlwdG9yOjpzZXRSZXNvdXJjZU9wdGlvbnMoTVRMOjpSZXNvdXJjZU9wdGlvbnMgcmVzb3Vy
Y2VPcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRSZXNvdXJjZU9wdGlvbnNfKSwgcmVzb3VyY2VPcHRpb25zKTsKK30KKwor
Ly8gcHJvcGVydHk6IHR5cGUKK19NVExfSU5MSU5FIE1UTDo6SGVhcFR5cGUgTVRMOjpIZWFwRGVz
Y3JpcHRvcjo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpIZWFwVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0eXBlKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0VHlwZShNVEw6OkhlYXBUeXBlIHR5
cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFR5cGVfKSwgdHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJ
TkUgTlM6OlN0cmluZyogTVRMOjpIZWFwOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFi
ZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXA6OnNldExhYmVsKGNvbnN0IE5T
OjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBk
ZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkhlYXA6OmRldmljZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogc3RvcmFnZU1vZGUK
K19NVExfSU5MSU5FIE1UTDo6U3RvcmFnZU1vZGUgTVRMOjpIZWFwOjpzdG9yYWdlTW9kZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdG9yYWdlTW9kZT4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzdG9yYWdlTW9kZSkpOworfQorCisvLyBwcm9wZXJ0eTog
Y3B1Q2FjaGVNb2RlCitfTVRMX0lOTElORSBNVEw6OkNQVUNhY2hlTW9kZSBNVEw6OkhlYXA6OmNw
dUNhY2hlTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpDUFVDYWNoZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY3B1Q2FjaGVNb2RlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBoYXphcmRUcmFja2luZ01vZGUKK19NVExfSU5MSU5FIE1UTDo6SGF6
YXJkVHJhY2tpbmdNb2RlIE1UTDo6SGVhcDo6aGF6YXJkVHJhY2tpbmdNb2RlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkhhemFyZFRyYWNraW5nTW9kZT4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChoYXphcmRUcmFja2luZ01vZGUpKTsKK30KKworLy8gcHJv
cGVydHk6IHJlc291cmNlT3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZU9wdGlvbnMg
TVRMOjpIZWFwOjpyZXNvdXJjZU9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VPcHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHJlc291cmNlT3B0aW9ucykpOworfQorCisvLyBwcm9wZXJ0eTogc2l6ZQorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6SGVhcDo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNpemUp
KTsKK30KKworLy8gcHJvcGVydHk6IHVzZWRTaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpIZWFwOjp1c2VkU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZWRTaXplKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBjdXJyZW50QWxsb2NhdGVkU2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6SGVhcDo6Y3VycmVudEFsbG9jYXRlZFNpemUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChjdXJyZW50QWxsb2NhdGVkU2l6ZSkpOworfQorCisvLyBtZXRob2Q6IG1heEF2YWlsYWJs
ZVNpemVXaXRoQWxpZ25tZW50OgorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SGVhcDo6
bWF4QXZhaWxhYmxlU2l6ZShOUzo6VUludGVnZXIgYWxpZ25tZW50KQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCht
YXhBdmFpbGFibGVTaXplV2l0aEFsaWdubWVudF8pLCBhbGlnbm1lbnQpOworfQorCisvLyBtZXRo
b2Q6IG5ld0J1ZmZlcldpdGhMZW5ndGg6b3B0aW9uczoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVy
KiBNVEw6OkhlYXA6Om5ld0J1ZmZlcihOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNl
T3B0aW9ucyBvcHRpb25zKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdCdWZmZXJXaXRoTGVuZ3RoX29wdGlv
bnNfKSwgbGVuZ3RoLCBvcHRpb25zKTsKK30KKworLy8gbWV0aG9kOiBuZXdUZXh0dXJlV2l0aERl
c2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6SGVhcDo6bmV3VGV4dHVy
ZShjb25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNjKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3
VGV4dHVyZVdpdGhEZXNjcmlwdG9yXyksIGRlc2MpOworfQorCisvLyBtZXRob2Q6IHNldFB1cmdl
YWJsZVN0YXRlOgorX01UTF9JTkxJTkUgTVRMOjpQdXJnZWFibGVTdGF0ZSBNVEw6OkhlYXA6OnNl
dFB1cmdlYWJsZVN0YXRlKE1UTDo6UHVyZ2VhYmxlU3RhdGUgc3RhdGUpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQdXJnZWFibGVTdGF0ZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRQdXJnZWFibGVTdGF0ZV8pLCBzdGF0ZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0
eXBlCitfTVRMX0lOTElORSBNVEw6OkhlYXBUeXBlIE1UTDo6SGVhcDo6dHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpIZWFwVHlwZT4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh0eXBlKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3QnVmZmVyV2l0aExlbmd0
aDpvcHRpb25zOm9mZnNldDoKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkhlYXA6Om5l
d0J1ZmZlcihOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25z
LCBOUzo6VUludGVnZXIgb2Zmc2V0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdCdWZmZXJXaXRoTGVuZ3Ro
X29wdGlvbnNfb2Zmc2V0XyksIGxlbmd0aCwgb3B0aW9ucywgb2Zmc2V0KTsKK30KKworLy8gbWV0
aG9kOiBuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6b2Zmc2V0OgorX01UTF9JTkxJTkUgTVRMOjpU
ZXh0dXJlKiBNVEw6OkhlYXA6Om5ld1RleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlRGVzY3JpcHRv
ciogZGVzY3JpcHRvciwgTlM6OlVJbnRlZ2VyIG9mZnNldCkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Rl
eHR1cmVXaXRoRGVzY3JpcHRvcl9vZmZzZXRfKSwgZGVzY3JpcHRvciwgb2Zmc2V0KTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVj
dENvbW1hbmRCdWZmZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhM2EzNTk3N2IwMWUy
YjAwYjI2YTE4YTk1MjczNGQ1NTM3YWQ1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwCkBA
IC0wLDAgKzEsMTg5IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBNZXRhbC9NVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwCisvLworLy8g
Q29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8g
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRM
RGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJN
VExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisK
KyNpbmNsdWRlICJNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTFJl
c291cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdl
ciwgSW5kaXJlY3RDb21tYW5kVHlwZSkgeworICAgIEluZGlyZWN0Q29tbWFuZFR5cGVEcmF3ID0g
MSwKKyAgICBJbmRpcmVjdENvbW1hbmRUeXBlRHJhd0luZGV4ZWQgPSAyLAorICAgIEluZGlyZWN0
Q29tbWFuZFR5cGVEcmF3UGF0Y2hlcyA9IDQsCisgICAgSW5kaXJlY3RDb21tYW5kVHlwZURyYXdJ
bmRleGVkUGF0Y2hlcyA9IDgsCisgICAgSW5kaXJlY3RDb21tYW5kVHlwZUNvbmN1cnJlbnREaXNw
YXRjaCA9IDMyLAorICAgIEluZGlyZWN0Q29tbWFuZFR5cGVDb25jdXJyZW50RGlzcGF0Y2hUaHJl
YWRzID0gNjQsCit9OworCitzdHJ1Y3QgSW5kaXJlY3RDb21tYW5kQnVmZmVyRXhlY3V0aW9uUmFu
Z2UKK3sKKyAgICB1aW50MzJfdCBsb2NhdGlvbjsKKyAgICB1aW50MzJfdCBsZW5ndGg7Cit9IF9N
VExfUEFDS0VEOworCitjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yIDogcHVi
bGljIE5TOjpDb3B5aW5nPEluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGFs
bG9jKCk7CisKKyAgICBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiAgICAg
ICAgaW5pdCgpOworCisgICAgTVRMOjpJbmRpcmVjdENvbW1hbmRUeXBlICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmRUeXBlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRDb21tYW5kVHlwZXMoTVRMOjpJbmRpcmVjdENvbW1h
bmRUeXBlIGNvbW1hbmRUeXBlcyk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5oZXJpdFBpcGVsaW5lU3RhdGUoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5oZXJpdFBpcGVs
aW5lU3RhdGUoYm9vbCBpbmhlcml0UGlwZWxpbmVTdGF0ZSk7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdEJ1ZmZlcnMoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5o
ZXJpdEJ1ZmZlcnMoYm9vbCBpbmhlcml0QnVmZmVycyk7CisKKyAgICBOUzo6VUludGVnZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmVydGV4QnVmZmVyQmluZENvdW50KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldE1heFZlcnRleEJ1ZmZlckJpbmRDb3VudChOUzo6VUludGVnZXIgbWF4VmVydGV4QnVmZmVy
QmluZENvdW50KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhGcmFnbWVudEJ1ZmZl
ckJpbmRDb3VudChOUzo6VUludGVnZXIgbWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQpOworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEtlcm5l
bEJ1ZmZlckJpbmRDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRNYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQoTlM6OlVJbnRl
Z2VyIG1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudCk7Cit9OworCitjbGFzcyBJbmRpcmVjdENvbW1h
bmRCdWZmZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEluZGlyZWN0Q29tbWFuZEJ1ZmZlciwg
UmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
c2l6ZSgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQo
TlM6OlJhbmdlIHJhbmdlKTsKKworICAgIGNsYXNzIEluZGlyZWN0UmVuZGVyQ29tbWFuZCogIGlu
ZGlyZWN0UmVuZGVyQ29tbWFuZChOUzo6VUludGVnZXIgY29tbWFuZEluZGV4KTsKKworICAgIGNs
YXNzIEluZGlyZWN0Q29tcHV0ZUNvbW1hbmQqIGluZGlyZWN0Q29tcHV0ZUNvbW1hbmQoTlM6OlVJ
bnRlZ2VyIGNvbW1hbmRJbmRleCk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6
SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0OjphbGxvYzxNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I+KF9N
VExfUFJJVkFURV9DTFMoTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcikpOworfQor
CisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVy
RGVzY3JpcHRvciogTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZl
ckRlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBjb21tYW5kVHlwZXMKK19NVExfSU5M
SU5FIE1UTDo6SW5kaXJlY3RDb21tYW5kVHlwZSBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRl
c2NyaXB0b3I6OmNvbW1hbmRUeXBlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpJbmRpcmVjdENvbW1hbmRUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGNvbW1hbmRUeXBlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21t
YW5kQnVmZmVyRGVzY3JpcHRvcjo6c2V0Q29tbWFuZFR5cGVzKE1UTDo6SW5kaXJlY3RDb21tYW5k
VHlwZSBjb21tYW5kVHlwZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbW1hbmRUeXBlc18pLCBjb21tYW5kVHlwZXMpOworfQor
CisvLyBwcm9wZXJ0eTogaW5oZXJpdFBpcGVsaW5lU3RhdGUKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjppbmhlcml0UGlwZWxpbmVTdGF0ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChpbmhlcml0UGlwZWxpbmVTdGF0ZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6c2V0SW5oZXJpdFBpcGVs
aW5lU3RhdGUoYm9vbCBpbmhlcml0UGlwZWxpbmVTdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5oZXJpdFBpcGVsaW5lU3Rh
dGVfKSwgaW5oZXJpdFBpcGVsaW5lU3RhdGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5oZXJpdEJ1
ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlw
dG9yOjppbmhlcml0QnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmhlcml0QnVmZmVycykpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6
c2V0SW5oZXJpdEJ1ZmZlcnMoYm9vbCBpbmhlcml0QnVmZmVycykKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5oZXJpdEJ1ZmZlcnNf
KSwgaW5oZXJpdEJ1ZmZlcnMpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VmVydGV4QnVmZmVyQmlu
ZENvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZm
ZXJEZXNjcmlwdG9yOjptYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNldE1heFZlcnRleEJ1ZmZlckJp
bmRDb3VudChOUzo6VUludGVnZXIgbWF4VmVydGV4QnVmZmVyQmluZENvdW50KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhWZXJ0
ZXhCdWZmZXJCaW5kQ291bnRfKSwgbWF4VmVydGV4QnVmZmVyQmluZENvdW50KTsKK30KKworLy8g
cHJvcGVydHk6IG1heEZyYWdtZW50QnVmZmVyQmluZENvdW50CitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjptYXhGcmFnbWVudEJ1
ZmZlckJpbmRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heEZyYWdtZW50QnVmZmVyQmlu
ZENvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZm
ZXJEZXNjcmlwdG9yOjpzZXRNYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudChOUzo6VUludGVnZXIg
bWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heEZyYWdtZW50QnVmZmVyQmluZENvdW50
XyksIG1heEZyYWdtZW50QnVmZmVyQmluZENvdW50KTsKK30KKworLy8gcHJvcGVydHk6IG1heEtl
cm5lbEJ1ZmZlckJpbmRDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SW5kaXJl
Y3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6bWF4S2VybmVsQnVmZmVyQmluZENvdW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobWF4S2VybmVsQnVmZmVyQmluZENvdW50KSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRNYXhL
ZXJuZWxCdWZmZXJCaW5kQ291bnQoTlM6OlVJbnRlZ2VyIG1heEtlcm5lbEJ1ZmZlckJpbmRDb3Vu
dCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0TWF4S2VybmVsQnVmZmVyQmluZENvdW50XyksIG1heEtlcm5lbEJ1ZmZlckJpbmRDb3Vu
dCk7Cit9CisKKy8vIHByb3BlcnR5OiBzaXplCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpJbmRpcmVjdENvbW1hbmRCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzaXpl
KSk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXRXaXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyOjpyZXNldChOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0V2l0
aFJhbmdlXyksIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBpbmRpcmVjdFJlbmRlckNvbW1hbmRB
dEluZGV4OgorX01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQqIE1UTDo6SW5k
aXJlY3RDb21tYW5kQnVmZmVyOjppbmRpcmVjdFJlbmRlckNvbW1hbmQoTlM6OlVJbnRlZ2VyIGNv
bW1hbmRJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGly
ZWN0UmVuZGVyQ29tbWFuZCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kaXJlY3RSZW5kZXJD
b21tYW5kQXRJbmRleF8pLCBjb21tYW5kSW5kZXgpOworfQorCisvLyBtZXRob2Q6IGluZGlyZWN0
Q29tcHV0ZUNvbW1hbmRBdEluZGV4OgorX01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdENvbXB1dGVD
b21tYW5kKiBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlcjo6aW5kaXJlY3RDb21wdXRlQ29tbWFu
ZChOUzo6VUludGVnZXIgY29tbWFuZEluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZCo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoaW5kaXJlY3RDb21wdXRlQ29tbWFuZEF0SW5kZXhfKSwgY29tbWFuZEluZGV4KTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVj
dENvbW1hbmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExJbmRpcmVjdENvbW1hbmRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmQ1MmZkN2RjZTEy
MTZmYTQ3MGVmMjk4YmFkMDFmZDMwYTYxNzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBw
CkBAIC0wLDAgKzEsMTg3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExJbmRpcmVjdENvbW1hbmRFbmNvZGVyLmhwcAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBw
PgorCisjaW5jbHVkZSAiTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1U
TFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcCIKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAi
CisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIEluZGlyZWN0UmVuZGVyQ29tbWFuZCA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8SW5kaXJlY3RSZW5kZXJDb21tYW5kPgoreworcHVibGljOgorICAg
IHZvaWQgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBSZW5kZXJQaXBlbGluZVN0
YXRlKiBwaXBlbGluZVN0YXRlKTsKKworICAgIHZvaWQgc2V0VmVydGV4QnVmZmVyKGNvbnN0IGNs
YXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5k
ZXgpOworCisgICAgdm9pZCBzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZv
aWQgZHJhd1BhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBO
Uzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQsIGNvbnN0IGNs
YXNzIEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZm
ZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUlu
c3RhbmNlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKTsKKworICAgIHZvaWQgZHJhd0luZGV4ZWRQYXRj
aGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRlZ2Vy
IHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBjbGFzcyBCdWZmZXIq
IHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBj
b25zdCBjbGFzcyBCdWZmZXIqIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIg
Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50
LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKTsKKworICAg
IHZvaWQgZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5T
OjpVSW50ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50LCBOUzo6VUlu
dGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7CisKKyAgICB2
b2lkIGRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlw
ZSwgTlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29u
c3QgY2xhc3MgQnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zm
c2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OkludGVnZXIgYmFzZVZlcnRleCwg
TlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7CisKKyAgICB2b2lkIHJlc2V0KCk7Cit9OworCitj
bGFzcyBJbmRpcmVjdENvbXB1dGVDb21tYW5kIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxJbmRp
cmVjdENvbXB1dGVDb21tYW5kPgoreworcHVibGljOgorICAgIHZvaWQgc2V0Q29tcHV0ZVBpcGVs
aW5lU3RhdGUoY29uc3QgY2xhc3MgQ29tcHV0ZVBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lU3RhdGUp
OworCisgICAgdm9pZCBzZXRLZXJuZWxCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIs
IE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIGNv
bmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3VwcyhNVEw6OlNpemUgdGhyZWFkZ3JvdXBzUGVyR3Jp
ZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCk7CisKKyAgICB2b2lkIGNvbmN1cnJl
bnREaXNwYXRjaFRocmVhZHMoTVRMOjpTaXplIHRocmVhZHNQZXJHcmlkLCBNVEw6OlNpemUgdGhy
ZWFkc1BlclRocmVhZGdyb3VwKTsKKworICAgIHZvaWQgc2V0QmFycmllcigpOworCisgICAgdm9p
ZCBjbGVhckJhcnJpZXIoKTsKKworICAgIHZvaWQgc2V0SW1hZ2VibG9ja1dpZHRoKE5TOjpVSW50
ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCk7CisKKyAgICB2b2lkIHJlc2V0KCk7CisK
KyAgICB2b2lkIHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKE5TOjpVSW50ZWdlciBsZW5ndGgs
IE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldFN0YWdlSW5SZWdpb24oTVRMOjpS
ZWdpb24gcmVnaW9uKTsKK307CisKK30KKworLy8gbWV0aG9kOiBzZXRSZW5kZXJQaXBlbGluZVN0
YXRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6c2V0UmVu
ZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqIHBpcGVsaW5l
U3RhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFJlbmRlclBpcGVsaW5lU3RhdGVfKSwgcGlwZWxpbmVTdGF0ZSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0VmVydGV4QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IE1UTDo6
QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0VmVydGV4QnVmZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kOjpzZXRGcmFnbWVudEJ1ZmZl
cihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUlu
dGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEZyYWdtZW50QnVmZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwg
b2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd1BhdGNoZXM6cGF0Y2hTdGFydDpw
YXRjaENvdW50OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5j
ZUNvdW50OmJhc2VJbnN0YW5jZTp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXI6dGVzc2VsbGF0aW9u
RmFjdG9yQnVmZmVyT2Zmc2V0OnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3RhbmNlU3RyaWRl
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6ZHJhd1BhdGNo
ZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBOUzo6VUludGVnZXIg
cGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQsIGNvbnN0IE1UTDo6QnVmZmVyKiBw
YXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgTlM6
OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UsIGNvbnN0
IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBp
bnN0YW5jZVN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZHJhd1BhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5k
ZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5j
ZV90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0
X3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3RhbmNlU3RyaWRlXyksIG51bWJlck9mUGF0Y2hD
b250cm9sUG9pbnRzLCBwYXRjaFN0YXJ0LCBwYXRjaENvdW50LCBwYXRjaEluZGV4QnVmZmVyLCBw
YXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlSW5zdGFuY2UsIGJ1ZmZl
ciwgb2Zmc2V0LCBpbnN0YW5jZVN0cmlkZSk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4ZWRQ
YXRjaGVzOnBhdGNoU3RhcnQ6cGF0Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhC
dWZmZXJPZmZzZXQ6Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZm
ZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6dGVzc2VsbGF0aW9uRmFjdG9yQnVm
ZmVyOnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlck9mZnNldDp0ZXNzZWxsYXRpb25GYWN0b3JCdWZm
ZXJJbnN0YW5jZVN0cmlkZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJlbmRlckNv
bW1hbmQ6OmRyYXdJbmRleGVkUGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRy
b2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVnZXIgcGF0Y2hDb3Vu
dCwgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRj
aEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZlciogY29udHJvbFBvaW50SW5kZXhC
dWZmZXIsIE5TOjpVSW50ZWdlciBjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJ
bnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UsIGNvbnN0IE1U
TDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0
YW5jZVN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZHJhd0luZGV4ZWRQYXRjaGVzX3BhdGNoU3RhcnRfcGF0Y2hDb3VudF9wYXRj
aEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfY29udHJvbFBvaW50SW5kZXhCdWZm
ZXJfY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFu
Y2VfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyX3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlck9mZnNl
dF90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlkZV8pLCBudW1iZXJPZlBhdGNo
Q29udHJvbFBvaW50cywgcGF0Y2hTdGFydCwgcGF0Y2hDb3VudCwgcGF0Y2hJbmRleEJ1ZmZlciwg
cGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29udHJvbFBvaW50SW5kZXhCdWZmZXIsIGNvbnRyb2xQ
b2ludEluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlSW5zdGFuY2UsIGJ1ZmZl
ciwgb2Zmc2V0LCBpbnN0YW5jZVN0cmlkZSk7Cit9CisKKy8vIG1ldGhvZDogZHJhd1ByaW1pdGl2
ZXM6dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kOjpkcmF3UHJpbWl0aXZl
cyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0
YXJ0LCBOUzo6VUludGVnZXIgdmVydGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50
LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92
ZXJ0ZXhDb3VudF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV8pLCBwcmltaXRpdmVUeXBlLCB2
ZXJ0ZXhTdGFydCwgdmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGJhc2VJbnN0YW5jZSk7Cit9
CisKKy8vIG1ldGhvZDogZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4Q291bnQ6aW5kZXhUeXBl
OmluZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZVZlcnRleDpi
YXNlSW5zdGFuY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5k
OjpkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUs
IE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0
IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0
LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OkludGVnZXIgYmFzZVZlcnRleCwgTlM6
OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0luZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRf
aW5kZXhUeXBlX2luZGV4QnVmZmVyX2luZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFz
ZVZlcnRleF9iYXNlSW5zdGFuY2VfKSwgcHJpbWl0aXZlVHlwZSwgaW5kZXhDb3VudCwgaW5kZXhU
eXBlLCBpbmRleEJ1ZmZlciwgaW5kZXhCdWZmZXJPZmZzZXQsIGluc3RhbmNlQ291bnQsIGJhc2VW
ZXJ0ZXgsIGJhc2VJbnN0YW5jZSk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXQKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQ6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KKwor
Ly8gbWV0aG9kOiBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBN
VEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZVN0YXRlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlUGlwZWxp
bmVTdGF0ZV8pLCBwaXBlbGluZVN0YXRlKTsKK30KKworLy8gbWV0aG9kOiBzZXRLZXJuZWxCdWZm
ZXI6b2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRl
Q29tbWFuZDo6c2V0S2VybmVsQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpV
SW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0S2VybmVsQnVmZmVyX29mZnNl
dF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogY29u
Y3VycmVudERpc3BhdGNoVGhyZWFkZ3JvdXBzOnRocmVhZHNQZXJUaHJlYWRncm91cDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpjb25jdXJyZW50RGlzcGF0
Y2hUaHJlYWRncm91cHMoTVRMOjpTaXplIHRocmVhZGdyb3Vwc1BlckdyaWQsIE1UTDo6U2l6ZSB0
aHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbmN1cnJlbnREaXNwYXRjaFRocmVhZGdyb3Vwc190aHJl
YWRzUGVyVGhyZWFkZ3JvdXBfKSwgdGhyZWFkZ3JvdXBzUGVyR3JpZCwgdGhyZWFkc1BlclRocmVh
ZGdyb3VwKTsKK30KKworLy8gbWV0aG9kOiBjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRzOnRocmVh
ZHNQZXJUaHJlYWRncm91cDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdENvbXB1dGVD
b21tYW5kOjpjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRzKE1UTDo6U2l6ZSB0aHJlYWRzUGVyR3Jp
ZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29uY3VycmVudERpc3BhdGNoVGhy
ZWFkc190aHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgdGhyZWFkc1BlckdyaWQsIHRocmVhZHNQZXJU
aHJlYWRncm91cCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QmFycmllcgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnNldEJhcnJpZXIoKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCYXJyaWVyKSk7
Cit9CisKKy8vIG1ldGhvZDogY2xlYXJCYXJyaWVyCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5k
aXJlY3RDb21wdXRlQ29tbWFuZDo6Y2xlYXJCYXJyaWVyKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY2xlYXJCYXJyaWVyKSk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0SW1hZ2VibG9ja1dpZHRoOmhlaWdodDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRJbWFnZWJsb2NrV2lkdGgoTlM6OlVJbnRl
Z2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbWFnZWJsb2NrV2lkdGhfaGVpZ2h0
XyksIHdpZHRoLCBoZWlnaHQpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6cmVzZXQoKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldCkpOworfQorCisv
LyBtZXRob2Q6IHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoOmF0SW5kZXg6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6c2V0VGhyZWFkZ3JvdXBNZW1vcnlM
ZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaHJlYWRn
cm91cE1lbW9yeUxlbmd0aF9hdEluZGV4XyksIGxlbmd0aCwgaW5kZXgpOworfQorCisvLyBtZXRo
b2Q6IHNldFN0YWdlSW5SZWdpb246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21w
dXRlQ29tbWFuZDo6c2V0U3RhZ2VJblJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24pCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YWdl
SW5SZWdpb25fKSwgcmVnaW9uKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMjM4MzVkMWRiNzhhZDgyZGY0NzZkMjYwYzMyZGJkOWNiZTgx
MzYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwCkBAIC0wLDAgKzEsMTU3IEBACisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRh
bC9NVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIw
LTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgor
I2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAi
CisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRM
QnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExGdW5jdGlvbkhhbmRsZS5ocHAiCisjaW5jbHVkZSAi
TVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2Uu
aHBwIgorI2luY2x1ZGUgIk1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCIKKworbmFtZXNwYWNl
IE1UTAoreworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgSW50ZXJzZWN0aW9uRnVuY3Rpb25T
aWduYXR1cmUpIHsKKyAgICBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZU5vbmUgPSAwLAor
ICAgIEludGVyc2VjdGlvbkZ1bmN0aW9uU2lnbmF0dXJlSW5zdGFuY2luZyA9IDEsCisgICAgSW50
ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVUcmlhbmdsZURhdGEgPSAyLAorICAgIEludGVyc2Vj
dGlvbkZ1bmN0aW9uU2lnbmF0dXJlV29ybGRTcGFjZURhdGEgPSA0LAorICAgIEludGVyc2VjdGlv
bkZ1bmN0aW9uU2lnbmF0dXJlSW5zdGFuY2VNb3Rpb24gPSA4LAorICAgIEludGVyc2VjdGlvbkZ1
bmN0aW9uU2lnbmF0dXJlUHJpbWl0aXZlTW90aW9uID0gMTYsCisgICAgSW50ZXJzZWN0aW9uRnVu
Y3Rpb25TaWduYXR1cmVFeHRlbmRlZExpbWl0cyA9IDMyLAorfTsKKworY2xhc3MgSW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8SW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNz
IEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xh
c3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisK
KyAgICBzdGF0aWMgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIGlu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKCk7CisKKyAgICBOUzo6VUludGVnZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uQ291bnQoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEZ1bmN0aW9uQ291bnQoTlM6OlVJbnRlZ2VyIGZ1bmN0aW9uQ291bnQpOworfTsKKworY2xh
c3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8SW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgUmVzb3VyY2U+Cit7CitwdWJsaWM6CisgICAgdm9pZCBz
ZXRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQs
IE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldEJ1ZmZlcnMoY29uc3QgY2xhc3Mg
QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5n
ZSByYW5nZSk7CisKKyAgICB2b2lkIHNldEZ1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uSGFu
ZGxlKiBmdW5jdGlvbiwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgc2V0RnVuY3Rp
b25zKGNvbnN0IGNsYXNzIEZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlvbnNbXSwgTlM6OlJhbmdlIHJh
bmdlKTsKKworICAgIHZvaWQgc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbihN
VEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uU2lnbmF0dXJlIHNpZ25hdHVyZSwgTlM6OlVJbnRlZ2Vy
IGluZGV4KTsKKworICAgIHZvaWQgc2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlv
bihNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uU2lnbmF0dXJlIHNpZ25hdHVyZSwgTlM6OlJhbmdl
IHJhbmdlKTsKKworICAgIHZvaWQgc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3Mg
VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJ
bmRleCk7CisKKyAgICB2b2lkIHNldFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBjbGFzcyBW
aXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIGJ1ZmZlclJh
bmdlKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6YWxsb2M8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4oX01UTF9Q
UklWQVRFX0NMUyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcikpOworfQor
CisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZURlc2NyaXB0b3IqIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVEZXNjcmlwdG9yOjppbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcigpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBmdW5jdGlvbkNvdW50CitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRv
cjo6ZnVuY3Rpb25Db3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uQ291bnQpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNj
cmlwdG9yOjpzZXRGdW5jdGlvbkNvdW50KE5TOjpVSW50ZWdlciBmdW5jdGlvbkNvdW50KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRG
dW5jdGlvbkNvdW50XyksIGZ1bmN0aW9uQ291bnQpOworfQorCisvLyBtZXRob2Q6IHNldEJ1ZmZl
cjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlOjpzZXRCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRl
Z2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJfb2Zmc2V0X2F0SW5kZXhf
KSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRCdWZmZXJzOm9m
ZnNldHM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGU6OnNldEJ1ZmZlcnMoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3Qg
TlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJzX29mZnNl
dHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9k
OiBzZXRGdW5jdGlvbjphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGU6OnNldEZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb25IYW5kbGUqIGZ1
bmN0aW9uLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uX2F0SW5kZXhfKSwgZnVuY3Rp
b24sIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGdW5jdGlvbnM6d2l0aFJhbmdlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6OnNldEZ1bmN0aW9u
cyhjb25zdCBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlvbnNbXSwgTlM6OlJhbmdlIHJhbmdl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRGdW5jdGlvbnNfd2l0aFJhbmdlXyksIGZ1bmN0aW9ucywgcmFuZ2UpOworfQorCisvLyBt
ZXRob2Q6IHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJl
OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZTo6c2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbihNVEw6OkludGVyc2VjdGlv
bkZ1bmN0aW9uU2lnbmF0dXJlIHNpZ25hdHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPcGFx
dWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aFNpZ25hdHVyZV9hdEluZGV4XyksIHNp
Z25hdHVyZSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJz
ZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJlOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOjpzZXRPcGFxdWVUcmlhbmdsZUludGVyc2Vj
dGlvbkZ1bmN0aW9uKE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmUgc2lnbmF0dXJl
LCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb25X
aXRoU2lnbmF0dXJlX3dpdGhSYW5nZV8pLCBzaWduYXR1cmUsIHJhbmdlKTsKK30KKworLy8gbWV0
aG9kOiBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6OnNldFZpc2libGVGdW5jdGlvblRh
YmxlKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpV
SW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRl
eF8pLCBmdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Vmlz
aWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29u
c3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdl
IGJ1ZmZlclJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXyks
IGZ1bmN0aW9uVGFibGVzLCBidWZmZXJSYW5nZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlicmFyeS5ocHAgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlicmFyeS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE1MjY3
YTE2ZmMxOWQ0MTk2MWFlZmY5YzA5ZmFjN2QwMTA5NzJjNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaWJyYXJ5LmhwcApAQCAtMCww
ICsxLDYyMSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLworLy8gTWV0YWwvTVRMTGlicmFyeS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNs
dWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisj
aW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFyZ3Vt
ZW50LmhwcCIKKyNpbmNsdWRlICJNVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwIgorI2luY2x1ZGUg
Ik1UTExpYnJhcnkuaHBwIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisKK25hbWVzcGFjZSBNVEwK
K3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFBhdGNoVHlwZSkgeworICAgIFBhdGNoVHlwZU5v
bmUgPSAwLAorICAgIFBhdGNoVHlwZVRyaWFuZ2xlID0gMSwKKyAgICBQYXRjaFR5cGVRdWFkID0g
MiwKK307CisKK2NsYXNzIFZlcnRleEF0dHJpYnV0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8
VmVydGV4QXR0cmlidXRlPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBWZXJ0ZXhBdHRy
aWJ1dGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGUqICAgICAgICBpbml0
KCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVJbmRleCgpIGNvbnN0
OworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAgICAgICAgICAgYXR0cmlidXRlVHlwZSgpIGNv
bnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlKCkgY29uc3Q7
CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaERhdGEoKSBjb25zdDsK
KworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoQ29udHJvbFBvaW50RGF0
YSgpIGNvbnN0OworfTsKKworY2xhc3MgQXR0cmlidXRlIDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxBdHRyaWJ1dGU+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEF0dHJpYnV0ZSogYWxs
b2MoKTsKKworICAgIGNsYXNzIEF0dHJpYnV0ZSogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpT
dHJpbmcqICAgICAgICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgIGF0dHJpYnV0ZUluZGV4KCkgY29uc3Q7CisKKyAgICBNVEw6OkRhdGFUeXBlICAgICAg
ICAgICBhdHRyaWJ1dGVUeXBlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAg
ICBhY3RpdmUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIHBhdGNoRGF0
YSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgcGF0Y2hDb250cm9sUG9p
bnREYXRhKCkgY29uc3Q7Cit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBGdW5jdGlvblR5
cGUpIHsKKyAgICBGdW5jdGlvblR5cGVWZXJ0ZXggPSAxLAorICAgIEZ1bmN0aW9uVHlwZUZyYWdt
ZW50ID0gMiwKKyAgICBGdW5jdGlvblR5cGVLZXJuZWwgPSAzLAorICAgIEZ1bmN0aW9uVHlwZVZp
c2libGUgPSA1LAorICAgIEZ1bmN0aW9uVHlwZUludGVyc2VjdGlvbiA9IDYsCit9OworCitjbGFz
cyBGdW5jdGlvbkNvbnN0YW50IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbkNvbnN0
YW50PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvbkNvbnN0YW50KiBhbGxv
YygpOworCisgICAgY2xhc3MgRnVuY3Rpb25Db25zdGFudCogICAgICAgIGluaXQoKTsKKworICAg
IE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAgICBNVEw6
OkRhdGFUeXBlICAgICAgICAgICAgICAgICAgdHlwZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICAgICAgIGluZGV4KCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWlyZWQoKSBjb25zdDsKK307CisKK3VzaW5nIEF1dG9yZWxl
YXNlZEFyZ3VtZW50ID0gY2xhc3MgQXJndW1lbnQqOworCitjbGFzcyBGdW5jdGlvbiA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb24+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyog
ICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0
TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRGV2aWNlKiAgICAg
ICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE1UTDo6RnVuY3Rpb25UeXBlICAgICAgZnVuY3Rp
b25UeXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OlBhdGNoVHlwZSAgICAgICAgIHBhdGNoVHlwZSgp
IGNvbnN0OworCisgICAgTlM6OkludGVnZXIgICAgICAgICAgICBwYXRjaENvbnRyb2xQb2ludENv
dW50KCkgY29uc3Q7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgIHZlcnRleEF0dHJpYnV0
ZXMoKSBjb25zdDsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgc3RhZ2VJbnB1dEF0dHJp
YnV0ZXMoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgbmFtZSgpIGNvbnN0
OworCisgICAgTlM6OkRpY3Rpb25hcnkqICAgICAgICBmdW5jdGlvbkNvbnN0YW50c0RpY3Rpb25h
cnkoKSBjb25zdDsKKworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlciogbmV3QXJndW1lbnRFbmNv
ZGVyKE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICBjbGFzcyBBcmd1bWVudEVuY29k
ZXIqIG5ld0FyZ3VtZW50RW5jb2RlcihOUzo6VUludGVnZXIgYnVmZmVySW5kZXgsIGNvbnN0IE1U
TDo6QXV0b3JlbGVhc2VkQXJndW1lbnQqIHJlZmxlY3Rpb24pOworCisgICAgTVRMOjpGdW5jdGlv
bk9wdGlvbnMgICBvcHRpb25zKCkgY29uc3Q7Cit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2Vy
LCBMYW5ndWFnZVZlcnNpb24pIHsKKyAgICBMYW5ndWFnZVZlcnNpb24xXzAgPSA2NTUzNiwKKyAg
ICBMYW5ndWFnZVZlcnNpb24xXzEgPSA2NTUzNywKKyAgICBMYW5ndWFnZVZlcnNpb24xXzIgPSA2
NTUzOCwKKyAgICBMYW5ndWFnZVZlcnNpb24yXzAgPSAxMzEwNzIsCisgICAgTGFuZ3VhZ2VWZXJz
aW9uMl8xID0gMTMxMDczLAorICAgIExhbmd1YWdlVmVyc2lvbjJfMiA9IDEzMTA3NCwKKyAgICBM
YW5ndWFnZVZlcnNpb24yXzMgPSAxMzEwNzUsCisgICAgTGFuZ3VhZ2VWZXJzaW9uMl80ID0gMTMx
MDc2LAorfTsKKworX01UTF9FTlVNKE5TOjpJbnRlZ2VyLCBMaWJyYXJ5VHlwZSkgeworICAgIExp
YnJhcnlUeXBlRXhlY3V0YWJsZSA9IDAsCisgICAgTGlicmFyeVR5cGVEeW5hbWljID0gMSwKK307
CisKK2NsYXNzIENvbXBpbGVPcHRpb25zIDogcHVibGljIE5TOjpDb3B5aW5nPENvbXBpbGVPcHRp
b25zPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21waWxlT3B0aW9ucyogYWxsb2Mo
KTsKKworICAgIGNsYXNzIENvbXBpbGVPcHRpb25zKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6
OkRpY3Rpb25hcnkqICAgICAgICAgICAgICBwcmVwcm9jZXNzb3JNYWNyb3MoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByZXByb2Nlc3Nvck1hY3Jvcyhjb25z
dCBOUzo6RGljdGlvbmFyeSogcHJlcHJvY2Vzc29yTWFjcm9zKTsKKworICAgIGJvb2wgICAgICAg
ICAgICAgICAgICAgICAgICAgZmFzdE1hdGhFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRGYXN0TWF0aEVuYWJsZWQoYm9vbCBmYXN0TWF0aEVuYWJs
ZWQpOworCisgICAgTVRMOjpMYW5ndWFnZVZlcnNpb24gICAgICAgICBsYW5ndWFnZVZlcnNpb24o
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgIHNldExhbmd1YWdlVmVy
c2lvbihNVEw6Okxhbmd1YWdlVmVyc2lvbiBsYW5ndWFnZVZlcnNpb24pOworCisgICAgTVRMOjpM
aWJyYXJ5VHlwZSAgICAgICAgICAgICBsaWJyYXJ5VHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0TGlicmFyeVR5cGUoTVRMOjpMaWJyYXJ5VHlwZSBsaWJy
YXJ5VHlwZSk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgIGluc3RhbGxOYW1l
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnN0YWxsTmFt
ZShjb25zdCBOUzo6U3RyaW5nKiBpbnN0YWxsTmFtZSk7CisKKyAgICBOUzo6QXJyYXkqICAgICAg
ICAgICAgICAgICAgIGxpYnJhcmllcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogbGlicmFyaWVzKTsKKworICAg
IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVJbnZhcmlhbmNlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcmVzZXJ2ZUludmFyaWFuY2Uo
Ym9vbCBwcmVzZXJ2ZUludmFyaWFuY2UpOworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwg
TGlicmFyeUVycm9yKSB7CisgICAgTGlicmFyeUVycm9yVW5zdXBwb3J0ZWQgPSAxLAorICAgIExp
YnJhcnlFcnJvckNvbXBpbGVGYWlsdXJlID0gMywKKyAgICBMaWJyYXJ5RXJyb3JDb21waWxlV2Fy
bmluZyA9IDQsCisgICAgTGlicmFyeUVycm9yRnVuY3Rpb25Ob3RGb3VuZCA9IDUsCisgICAgTGli
cmFyeUVycm9yRmlsZU5vdEZvdW5kID0gNiwKK307CisKK2NsYXNzIExpYnJhcnkgOiBwdWJsaWMg
TlM6OlJlZmVyZW5jaW5nPExpYnJhcnk+Cit7CitwdWJsaWM6CisgICAgdm9pZCAgICAgICAgICAg
ICBuZXdGdW5jdGlvbihjb25zdCBOUzo6U3RyaW5nKiBwRnVuY3Rpb25OYW1lLCBjb25zdCBjbGFz
cyBGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBwQ29uc3RhbnRWYWx1ZXMsIGNvbnN0IHN0ZDo6ZnVu
Y3Rpb248dm9pZChGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcik+JiBjb21w
bGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgIG5ld0Z1bmN0aW9uKGNvbnN0
IGNsYXNzIEZ1bmN0aW9uRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIGNvbnN0IHN0ZDo6ZnVuY3Rp
b248dm9pZChGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcik+JiBjb21wbGV0
aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgIG5ld0ludGVyc2VjdGlvbkZ1bmN0
aW9uKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogcERlc2NyaXB0
b3IsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJy
b3IqIHBFcnJvcik+JiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBOUzo6U3RyaW5nKiAgICAg
IGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6
U3RyaW5nKiBsYWJlbCk7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgIGRldmljZSgpIGNvbnN0Owor
CisgICAgY2xhc3MgRnVuY3Rpb24qICBuZXdGdW5jdGlvbihjb25zdCBOUzo6U3RyaW5nKiBmdW5j
dGlvbk5hbWUpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICBuZXdGdW5jdGlvbihjb25zdCBOUzo6
U3RyaW5nKiBuYW1lLCBjb25zdCBjbGFzcyBGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBjb25zdGFu
dFZhbHVlcywgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgdm9pZCAgICAgICAgICAgICBuZXdG
dW5jdGlvbihjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBjbGFzcyBGdW5jdGlvbkNvbnN0
YW50VmFsdWVzKiBjb25zdGFudFZhbHVlcywgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShNVEw6
OkZ1bmN0aW9uKiwgTlM6OkVycm9yKikpOworCisgICAgdm9pZCAgICAgICAgICAgICBuZXdGdW5j
dGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTVRMOjpGdW5jdGlvbiosIE5TOjpFcnJvciopKTsKKworICAgIGNs
YXNzIEZ1bmN0aW9uKiAgbmV3RnVuY3Rpb24oY29uc3QgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAg
IG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9u
RGVzY3JpcHRvciogZGVzY3JpcHRvciwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShNVEw6OkZ1
bmN0aW9uKiwgTlM6OkVycm9yKikpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICBuZXdJbnRlcnNl
Y3Rpb25GdW5jdGlvbihjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIE5TOjpBcnJheSogICAgICAg
ZnVuY3Rpb25OYW1lcygpIGNvbnN0OworCisgICAgTVRMOjpMaWJyYXJ5VHlwZSB0eXBlKCkgY29u
c3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgIGluc3RhbGxOYW1lKCkgY29uc3Q7Cit9OworCit9
CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJp
YnV0ZSogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6YWxsb2M8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGU+KF9NVExfUFJJVkFURV9DTFMoTVRMVmVy
dGV4QXR0cmlidXRlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpW
ZXJ0ZXhBdHRyaWJ1dGUqIE1UTDo6VmVydGV4QXR0cmlidXRlOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlZlcnRleEF0dHJpYnV0ZT4oKTsKK30KKworLy8gcHJv
cGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6VmVydGV4QXR0cmlidXRl
OjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBh
dHRyaWJ1dGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmVydGV4QXR0cmli
dXRlOjphdHRyaWJ1dGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0ZUluZGV4
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhdHRyaWJ1dGVUeXBlCitfTVRMX0lOTElORSBNVEw6OkRh
dGFUeXBlIE1UTDo6VmVydGV4QXR0cmlidXRlOjphdHRyaWJ1dGVUeXBlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGF0dHJpYnV0ZVR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFjdGl2ZQorX01U
TF9JTkxJTkUgYm9vbCBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6YWN0aXZlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGlzQWN0aXZlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXRjaERhdGEKK19NVExfSU5MSU5FIGJv
b2wgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OnBhdGNoRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1BhdGNo
RGF0YSkpOworfQorCisvLyBwcm9wZXJ0eTogcGF0Y2hDb250cm9sUG9pbnREYXRhCitfTVRMX0lO
TElORSBib29sIE1UTDo6VmVydGV4QXR0cmlidXRlOjpwYXRjaENvbnRyb2xQb2ludERhdGEoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaXNQYXRjaENvbnRyb2xQb2ludERhdGEpKTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlKiBNVEw6OkF0dHJpYnV0ZTo6
YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkF0dHJpYnV0ZT4o
X01UTF9QUklWQVRFX0NMUyhNVExBdHRyaWJ1dGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZSogTVRMOjpBdHRyaWJ1dGU6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QXR0cmlidXRlPigpOworfQorCisvLyBwcm9w
ZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpBdHRyaWJ1dGU6Om5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJpYnV0
ZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBdHRyaWJ1dGU6OmF0dHJpYnV0
ZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0cmlidXRlSW5kZXgpKTsKK30KKworLy8g
cHJvcGVydHk6IGF0dHJpYnV0ZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpB
dHRyaWJ1dGU6OmF0dHJpYnV0ZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXR0cmlidXRl
VHlwZSkpOworfQorCisvLyBwcm9wZXJ0eTogYWN0aXZlCitfTVRMX0lOTElORSBib29sIE1UTDo6
QXR0cmlidXRlOjphY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNBY3RpdmUpKTsKK30KKworLy8gcHJv
cGVydHk6IHBhdGNoRGF0YQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkF0dHJpYnV0ZTo6cGF0Y2hE
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGlzUGF0Y2hEYXRhKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXRj
aENvbnRyb2xQb2ludERhdGEKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpBdHRyaWJ1dGU6OnBhdGNo
Q29udHJvbFBvaW50RGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1BhdGNoQ29udHJvbFBvaW50RGF0YSkp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlv
bkNvbnN0YW50KiBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpGdW5jdGlvbkNvbnN0YW50PihfTVRMX1BSSVZBVEVfQ0xT
KE1UTEZ1bmN0aW9uQ29uc3RhbnQpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElO
RSBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQqIE1UTDo6RnVuY3Rpb25Db25zdGFudDo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlvbkNvbnN0YW50PigpOwor
fQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5j
dGlvbkNvbnN0YW50OjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8v
IHByb3BlcnR5OiB0eXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6RnVuY3Rpb25D
b25zdGFudDo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0eXBlKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBpbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RnVuY3Rpb25Db25z
dGFudDo6aW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleCkpOworfQorCisvLyBwcm9w
ZXJ0eTogcmVxdWlyZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpGdW5jdGlvbkNvbnN0YW50Ojpy
ZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChyZXF1aXJlZCkpOworfQorCisvLyBwcm9wZXJ0eTogbGFi
ZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb246OmxhYmVsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rp
b246OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7
Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6
OkZ1bmN0aW9uOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGZ1bmN0aW9uVHlwZQorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblR5cGUg
TVRMOjpGdW5jdGlvbjo6ZnVuY3Rpb25UeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChm
dW5jdGlvblR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHBhdGNoVHlwZQorX01UTF9JTkxJTkUg
TVRMOjpQYXRjaFR5cGUgTVRMOjpGdW5jdGlvbjo6cGF0Y2hUeXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBhdGNoVHlwZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChwYXRjaFR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHBhdGNoQ29udHJvbFBvaW50
Q291bnQKK19NVExfSU5MSU5FIE5TOjpJbnRlZ2VyIE1UTDo6RnVuY3Rpb246OnBhdGNoQ29udHJv
bFBvaW50Q291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhdGNoQ29udHJvbFBvaW50Q291bnQp
KTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEF0dHJpYnV0ZXMKK19NVExfSU5MSU5FIE5TOjpB
cnJheSogTVRMOjpGdW5jdGlvbjo6dmVydGV4QXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh2ZXJ0ZXhBdHRyaWJ1dGVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdGFnZUlucHV0QXR0cmli
dXRlcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkZ1bmN0aW9uOjpzdGFnZUlucHV0QXR0
cmlidXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFnZUlucHV0QXR0cmlidXRlcykpOworfQor
CisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5jdGlv
bjo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0
cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTog
ZnVuY3Rpb25Db25zdGFudHNEaWN0aW9uYXJ5CitfTVRMX0lOTElORSBOUzo6RGljdGlvbmFyeSog
TVRMOjpGdW5jdGlvbjo6ZnVuY3Rpb25Db25zdGFudHNEaWN0aW9uYXJ5KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6RGljdGlvbmFyeSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZnVuY3Rpb25Db25zdGFudHNEaWN0aW9uYXJ5KSk7Cit9CisKKy8vIG1ldGhv
ZDogbmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgTVRMOjpB
cmd1bWVudEVuY29kZXIqIE1UTDo6RnVuY3Rpb246Om5ld0FyZ3VtZW50RW5jb2RlcihOUzo6VUlu
dGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBcmd1bWVudEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0FyZ3VtZW50RW5j
b2RlcldpdGhCdWZmZXJJbmRleF8pLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogbmV3
QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4OnJlZmxlY3Rpb246CitfTVRMX0lOTElORSBN
VEw6OkFyZ3VtZW50RW5jb2RlciogTVRMOjpGdW5jdGlvbjo6bmV3QXJndW1lbnRFbmNvZGVyKE5T
OjpVSW50ZWdlciBidWZmZXJJbmRleCwgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRBcmd1bWVudCog
cmVmbGVjdGlvbikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3Vt
ZW50RW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QXJndW1lbnRFbmNvZGVyV2l0
aEJ1ZmZlckluZGV4X3JlZmxlY3Rpb25fKSwgYnVmZmVySW5kZXgsIHJlZmxlY3Rpb24pOworfQor
CisvLyBwcm9wZXJ0eTogb3B0aW9ucworX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbk9wdGlvbnMg
TVRMOjpGdW5jdGlvbjo6b3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbk9wdGlvbnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3B0
aW9ucykpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpD
b21waWxlT3B0aW9ucyogTVRMOjpDb21waWxlT3B0aW9uczo6YWxsb2MoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkNvbXBpbGVPcHRpb25zPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTENvbXBpbGVPcHRpb25zKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpDb21waWxlT3B0aW9ucyogTVRMOjpDb21waWxlT3B0aW9uczo6aW5pdCgpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpDb21waWxlT3B0aW9ucz4oKTsKK30KKworLy8g
cHJvcGVydHk6IHByZXByb2Nlc3Nvck1hY3JvcworX01UTF9JTkxJTkUgTlM6OkRpY3Rpb25hcnkq
IE1UTDo6Q29tcGlsZU9wdGlvbnM6OnByZXByb2Nlc3Nvck1hY3JvcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkRpY3Rpb25hcnkqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHByZXByb2Nlc3Nvck1hY3JvcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tcGlsZU9wdGlvbnM6OnNldFByZXByb2Nlc3Nvck1hY3Jvcyhjb25zdCBOUzo6RGljdGlv
bmFyeSogcHJlcHJvY2Vzc29yTWFjcm9zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRQcmVwcm9jZXNzb3JNYWNyb3NfKSwgcHJlcHJv
Y2Vzc29yTWFjcm9zKTsKK30KKworLy8gcHJvcGVydHk6IGZhc3RNYXRoRW5hYmxlZAorX01UTF9J
TkxJTkUgYm9vbCBNVEw6OkNvbXBpbGVPcHRpb25zOjpmYXN0TWF0aEVuYWJsZWQoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoZmFzdE1hdGhFbmFibGVkKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21w
aWxlT3B0aW9uczo6c2V0RmFzdE1hdGhFbmFibGVkKGJvb2wgZmFzdE1hdGhFbmFibGVkKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRG
YXN0TWF0aEVuYWJsZWRfKSwgZmFzdE1hdGhFbmFibGVkKTsKK30KKworLy8gcHJvcGVydHk6IGxh
bmd1YWdlVmVyc2lvbgorX01UTF9JTkxJTkUgTVRMOjpMYW5ndWFnZVZlcnNpb24gTVRMOjpDb21w
aWxlT3B0aW9uczo6bGFuZ3VhZ2VWZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6Okxhbmd1YWdlVmVyc2lvbj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChsYW5ndWFnZVZlcnNpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXBpbGVP
cHRpb25zOjpzZXRMYW5ndWFnZVZlcnNpb24oTVRMOjpMYW5ndWFnZVZlcnNpb24gbGFuZ3VhZ2VW
ZXJzaW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRMYW5ndWFnZVZlcnNpb25fKSwgbGFuZ3VhZ2VWZXJzaW9uKTsKK30KKworLy8g
cHJvcGVydHk6IGxpYnJhcnlUeXBlCitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnlUeXBlIE1UTDo6
Q29tcGlsZU9wdGlvbnM6OmxpYnJhcnlUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnlUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxp
YnJhcnlUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0aW9uczo6
c2V0TGlicmFyeVR5cGUoTVRMOjpMaWJyYXJ5VHlwZSBsaWJyYXJ5VHlwZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGlicmFyeVR5
cGVfKSwgbGlicmFyeVR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogaW5zdGFsbE5hbWUKK19NVExf
SU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tcGlsZU9wdGlvbnM6Omluc3RhbGxOYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChpbnN0YWxsTmFtZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tcGlsZU9wdGlvbnM6OnNldEluc3RhbGxOYW1lKGNvbnN0IE5TOjpTdHJpbmcqIGluc3Rh
bGxOYW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRJbnN0YWxsTmFtZV8pLCBpbnN0YWxsTmFtZSk7Cit9CisKKy8vIHByb3BlcnR5
OiBsaWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpDb21waWxlT3B0aW9uczo6
bGlicmFyaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxpYnJhcmllcykpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6Q29tcGlsZU9wdGlvbnM6OnNldExpYnJhcmllcyhjb25zdCBOUzo6QXJy
YXkqIGxpYnJhcmllcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0TGlicmFyaWVzXyksIGxpYnJhcmllcyk7Cit9CisKKy8vIHByb3Bl
cnR5OiBwcmVzZXJ2ZUludmFyaWFuY2UKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpDb21waWxlT3B0
aW9uczo6cHJlc2VydmVJbnZhcmlhbmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByZXNlcnZlSW52YXJpYW5j
ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcGlsZU9wdGlvbnM6OnNldFByZXNl
cnZlSW52YXJpYW5jZShib29sIHByZXNlcnZlSW52YXJpYW5jZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UHJlc2VydmVJbnZhcmlh
bmNlXyksIHByZXNlcnZlSW52YXJpYW5jZSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpM
aWJyYXJ5OjpuZXdGdW5jdGlvbihjb25zdCBOUzo6U3RyaW5nKiBwRnVuY3Rpb25OYW1lLCBjb25z
dCBGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBwQ29uc3RhbnRWYWx1ZXMsIGNvbnN0IHN0ZDo6ZnVu
Y3Rpb248dm9pZChGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcik+JiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIHN0ZDo6ZnVuY3Rpb248dm9pZChGdW5jdGlv
biAqIHBGdW5jdGlvbiwgTlM6OkVycm9yICogcEVycm9yKT4gYmxvY2tDb21wbGV0aW9uSGFuZGxl
ciA9IGNvbXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3RnVuY3Rpb24ocEZ1bmN0aW9uTmFtZSwg
cENvbnN0YW50VmFsdWVzLCBeKEZ1bmN0aW9uKiBwRnVuY3Rpb24sIE5TOjpFcnJvciogcEVycm9y
KSB7IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIocEZ1bmN0aW9uLCBwRXJyb3IpOyB9KTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IEZ1bmN0aW9u
RGVzY3JpcHRvciogcERlc2NyaXB0b3IsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChGdW5jdGlv
biogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcik+JiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBfX2Jsb2NrIHN0ZDo6ZnVuY3Rpb248dm9pZChGdW5jdGlvbiAqIHBGdW5jdGlvbiwgTlM6
OkVycm9yICogcEVycm9yKT4gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5k
bGVyOworCisgICAgbmV3RnVuY3Rpb24ocERlc2NyaXB0b3IsIF4oRnVuY3Rpb24qIHBGdW5jdGlv
biwgTlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwRnVuY3Rpb24s
IHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6bmV3SW50
ZXJzZWN0aW9uRnVuY3Rpb24oY29uc3QgSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBw
RGVzY3JpcHRvciwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IE5TOjpFcnJvciogcEVycm9yKT4mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sg
c3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uICogcEZ1bmN0aW9uLCBOUzo6RXJyb3IgKiBwRXJy
b3IpPiBibG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBu
ZXdJbnRlcnNlY3Rpb25GdW5jdGlvbihwRGVzY3JpcHRvciwgXihGdW5jdGlvbiogcEZ1bmN0aW9u
LCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBGdW5jdGlvbiwg
cEVycm9yKTsgfSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0
cmluZyogTVRMOjpMaWJyYXJ5OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6OnNldExhYmVsKGNvbnN0IE5TOjpT
dHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZp
Y2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkxpYnJhcnk6OmRldmljZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisvLyBtZXRob2Q6IG5ld0Z1bmN0aW9uV2l0
aE5hbWU6CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0
aW9uKGNvbnN0IE5TOjpTdHJpbmcqIGZ1bmN0aW9uTmFtZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdG
dW5jdGlvbldpdGhOYW1lXyksIGZ1bmN0aW9uTmFtZSk7Cit9CisKKy8vIG1ldGhvZDogbmV3RnVu
Y3Rpb25XaXRoTmFtZTpjb25zdGFudFZhbHVlczplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6RnVu
Y3Rpb24qIE1UTDo6TGlicmFyeTo6bmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0cmluZyogbmFtZSwg
Y29uc3QgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBjb25zdGFudFZhbHVlcywgTlM6OkVy
cm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5j
dGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVuY3Rpb25XaXRoTmFtZV9jb25zdGFu
dFZhbHVlc19lcnJvcl8pLCBuYW1lLCBjb25zdGFudFZhbHVlcywgZXJyb3IpOworfQorCisvLyBt
ZXRob2Q6IG5ld0Z1bmN0aW9uV2l0aE5hbWU6Y29uc3RhbnRWYWx1ZXM6Y29tcGxldGlvbkhhbmRs
ZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6bmV3RnVuY3Rpb24oY29uc3QgTlM6
OlN0cmluZyogbmFtZSwgY29uc3QgTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiBjb25zdGFu
dFZhbHVlcywgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShNVEw6OkZ1bmN0aW9uKiwgTlM6OkVy
cm9yKikpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG5ld0Z1bmN0aW9uV2l0aE5hbWVfY29uc3RhbnRWYWx1ZXNfY29tcGxldGlvbkhhbmRs
ZXJfKSwgbmFtZSwgY29uc3RhbnRWYWx1ZXMsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8g
bWV0aG9kOiBuZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rp
b25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE1UTDo6
RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9jb21wbGV0
aW9uSGFuZGxlcl8pLCBkZXNjcmlwdG9yLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1l
dGhvZDogbmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6
RnVuY3Rpb24qIE1UTDo6TGlicmFyeTo6bmV3RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbkRl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRvciwgZXJyb3IpOwor
fQorCisvLyBtZXRob2Q6IG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aERlc2NyaXB0b3I6Y29t
cGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlicmFyeTo6bmV3SW50ZXJz
ZWN0aW9uRnVuY3Rpb24oY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpGdW5jdGlvbiosIE5T
OjpFcnJvciopKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yX2NvbXBsZXRp
b25IYW5kbGVyXyksIGRlc2NyaXB0b3IsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0
aG9kOiBuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9J
TkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpMaWJyYXJ5OjpuZXdJbnRlcnNlY3Rpb25GdW5jdGlv
bihjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwg
TlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpGdW5jdGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3SW50ZXJzZWN0aW9uRnVuY3Rp
b25XaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIHBy
b3BlcnR5OiBmdW5jdGlvbk5hbWVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6TGlicmFy
eTo6ZnVuY3Rpb25OYW1lcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbk5hbWVzKSk7Cit9
CisKKy8vIHByb3BlcnR5OiB0eXBlCitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnlUeXBlIE1UTDo6
TGlicmFyeTo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpMaWJyYXJ5VHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0eXBlKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpbnN0YWxsTmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpMaWJy
YXJ5OjppbnN0YWxsTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFsbE5hbWUpKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExMaW5r
ZWRGdW5jdGlvbnMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TExpbmtlZEZ1bmN0aW9ucy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYzMTlhNWE5NDFiZmQ4Mzg3YTYyNzc2
MTA4NmVjOTZjMjYwZWVjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExMaW5rZWRGdW5jdGlvbnMuaHBwCkBAIC0wLDAgKzEsMTE1IEBA
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBN
ZXRhbC9NVExMaW5rZWRGdW5jdGlvbnMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVk
ZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2lu
Y2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK2Ns
YXNzIExpbmtlZEZ1bmN0aW9ucyA6IHB1YmxpYyBOUzo6Q29weWluZzxMaW5rZWRGdW5jdGlvbnM+
Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogYWxsb2MoKTsK
KworICAgIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogICAgICAgIGluaXQoKTsKKworICAgIHN0YXRp
YyBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqIGxpbmtlZEZ1bmN0aW9ucygpOworCisgICAgTlM6OkFy
cmF5KiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogZnVuY3Rp
b25zKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgIGJpbmFyeUZ1bmN0aW9u
cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpbmFyeUZ1
bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUZ1bmN0aW9ucyk7CisKKyAgICBOUzo6QXJy
YXkqICAgICAgICAgICAgICAgICAgICBncm91cHMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRHcm91cHMoY29uc3QgTlM6OkFycmF5KiBncm91cHMpOworCisg
ICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZUZ1bmN0aW9ucygpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByaXZhdGVGdW5jdGlvbnMo
Y29uc3QgTlM6OkFycmF5KiBwcml2YXRlRnVuY3Rpb25zKTsKK307CisKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6Okxp
bmtlZEZ1bmN0aW9uczo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxN
VEw6OkxpbmtlZEZ1bmN0aW9ucz4oX01UTF9QUklWQVRFX0NMUyhNVExMaW5rZWRGdW5jdGlvbnMp
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1bmN0aW9u
cyogTVRMOjpMaW5rZWRGdW5jdGlvbnM6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6TGlua2VkRnVuY3Rpb25zPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBs
aW5rZWRGdW5jdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6Okxp
bmtlZEZ1bmN0aW9uczo6bGlua2VkRnVuY3Rpb25zKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkxpbmtlZEZ1bmN0aW9ucyo+KF9NVExfUFJJVkFURV9DTFMoTVRMTGlu
a2VkRnVuY3Rpb25zKSwgX01UTF9QUklWQVRFX1NFTChsaW5rZWRGdW5jdGlvbnMpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6Okxpbmtl
ZEZ1bmN0aW9uczo6ZnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9ucykpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpzZXRGdW5jdGlvbnMo
Y29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uc18pLCBmdW5jdGlvbnMpOwor
fQorCisvLyBwcm9wZXJ0eTogYmluYXJ5RnVuY3Rpb25zCitfTVRMX0lOTElORSBOUzo6QXJyYXkq
IE1UTDo6TGlua2VkRnVuY3Rpb25zOjpiaW5hcnlGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYmluYXJ5RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaW5rZWRG
dW5jdGlvbnM6OnNldEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUZ1bmN0
aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0QmluYXJ5RnVuY3Rpb25zXyksIGJpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHBy
b3BlcnR5OiBncm91cHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpMaW5rZWRGdW5jdGlv
bnM6Omdyb3VwcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChncm91cHMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6c2V0R3JvdXBzKGNvbnN0IE5TOjpBcnJheSog
Z3JvdXBzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRHcm91cHNfKSwgZ3JvdXBzKTsKK30KKworLy8gcHJvcGVydHk6IHByaXZhdGVG
dW5jdGlvbnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpMaW5rZWRGdW5jdGlvbnM6OnBy
aXZhdGVGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJpdmF0ZUZ1bmN0aW9ucykpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpzZXRQcml2YXRlRnVu
Y3Rpb25zKGNvbnN0IE5TOjpBcnJheSogcHJpdmF0ZUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UHJpdmF0ZUZ1bmN0
aW9uc18pLCBwcml2YXRlRnVuY3Rpb25zKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyLmhw
cCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQYXJhbGxlbFJlbmRl
ckNvbW1hbmRFbmNvZGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDM3YjRjOGM5N2QxNTJkY2I2MmEwMDEy
ZDRlZjY1NDhiZDVhNDdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCkBAIC0w
LDAgKzEsOTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIE1ldGFsL01UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCisvLwor
Ly8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
Ly8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
TVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRl
ICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+
CisKKyNpbmNsdWRlICJNVExDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMUmVuZGVy
UGFzcy5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIFBhcmFsbGVsUmVuZGVyQ29tbWFu
ZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVu
Y29kZXIsIENvbW1hbmRFbmNvZGVyPgoreworcHVibGljOgorICAgIGNsYXNzIFJlbmRlckNvbW1h
bmRFbmNvZGVyKiByZW5kZXJDb21tYW5kRW5jb2RlcigpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgIHNldENvbG9yU3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFj
dGlvbiwgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24g
c3RvcmVBY3Rpb24pOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZW5j
aWxTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0
b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMsIE5TOjpVSW50ZWdlciBjb2xvckF0
dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVw
dGhTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25P
cHRpb25zKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVuY2lsU3Rv
cmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9u
cyk7Cit9OworCit9CisKKy8vIG1ldGhvZDogcmVuZGVyQ29tbWFuZEVuY29kZXIKK19NVExfSU5M
SU5FIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXIqIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6cmVuZGVyQ29tbWFuZEVuY29kZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHJlbmRlckNvbW1hbmRFbmNvZGVyKSk7Cit9CisKKy8vIG1ldGhvZDogc2V0Q29sb3JTdG9y
ZUFjdGlvbjphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBhcmFsbGVsUmVuZGVyQ29t
bWFuZEVuY29kZXI6OnNldENvbG9yU3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFj
dGlvbiwgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb2xvclN0b3JlQWN0
aW9uX2F0SW5kZXhfKSwgc3RvcmVBY3Rpb24sIGNvbG9yQXR0YWNobWVudEluZGV4KTsKK30KKwor
Ly8gbWV0aG9kOiBzZXREZXB0aFN0b3JlQWN0aW9uOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBh
cmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldERlcHRoU3RvcmVBY3Rpb24oTVRMOjpTdG9y
ZUFjdGlvbiBzdG9yZUFjdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhTdG9yZUFjdGlvbl8pLCBzdG9yZUFjdGlvbik7
Cit9CisKKy8vIG1ldGhvZDogc2V0U3RlbmNpbFN0b3JlQWN0aW9uOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFN0ZW5jaWxTdG9yZUFjdGlv
bihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsU3RvcmVBY3Rpb25fKSwg
c3RvcmVBY3Rpb24pOworfQorCisvLyBtZXRob2Q6IHNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25z
OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5j
b2Rlcjo6c2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMg
c3RvcmVBY3Rpb25PcHRpb25zLCBOUzo6VUludGVnZXIgY29sb3JBdHRhY2htZW50SW5kZXgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dENvbG9yU3RvcmVBY3Rpb25PcHRpb25zX2F0SW5kZXhfKSwgc3RvcmVBY3Rpb25PcHRpb25zLCBj
b2xvckF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RGVwdGhTdG9yZUFjdGlv
bk9wdGlvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5j
b2Rlcjo6c2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMg
c3RvcmVBY3Rpb25PcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9uc18pLCBzdG9yZUFj
dGlvbk9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlv
bnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
c2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9y
ZUFjdGlvbk9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnNfKSwgc3RvcmVBY3Rp
b25PcHRpb25zKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExQaXBlbGluZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUGlwZWxpbmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhM2M5NDc3Mzk2YWQ3YzMxNmQ2YjZj
ZGJlZjJhMjA4YzRmOTg3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMUGlwZWxpbmUuaHBwCkBAIC0wLDAgKzEsMTA5IEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9N
VExQaXBlbGluZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJC
cmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTFBpcGVsaW5lLmhwcCIKKworbmFt
ZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgTXV0YWJpbGl0eSkgeworICAg
IE11dGFiaWxpdHlEZWZhdWx0ID0gMCwKKyAgICBNdXRhYmlsaXR5TXV0YWJsZSA9IDEsCisgICAg
TXV0YWJpbGl0eUltbXV0YWJsZSA9IDIsCit9OworCitjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2Ny
aXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yPgorewor
cHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqIGFsbG9j
KCk7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7
CisKKyAgICBNVEw6Ok11dGFiaWxpdHkgICAgICAgICAgICAgICAgICAgICAgICBtdXRhYmlsaXR5
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TXV0YWJpbGl0eShNVEw6Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSk7Cit9OworCitjbGFzcyBQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UGlwZWxp
bmVCdWZmZXJEZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFBp
cGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgUGlwZWxp
bmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgYnVm
ZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiBidWZm
ZXIsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciogTVRM
OjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6YWxsb2M8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9D
TFMoTVRMUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAor
X01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6UGlwZWxpbmVC
dWZmZXJEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IG11dGFi
aWxpdHkKK19NVExfSU5MSU5FIE1UTDo6TXV0YWJpbGl0eSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVz
Y3JpcHRvcjo6bXV0YWJpbGl0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpNdXRhYmlsaXR5Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG11dGFiaWxpdHkp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcjo6
c2V0TXV0YWJpbGl0eShNVEw6Ok11dGFiaWxpdHkgbXV0YWJpbGl0eSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TXV0YWJpbGl0eV8p
LCBtdXRhYmlsaXR5KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqIE1UTDo6UGlwZWxpbmVCdWZmZXJE
ZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExQ
aXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqIE1UTDo6UGlwZWxp
bmVCdWZmZXJEZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1l
dGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpQaXBlbGlu
ZUJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXk6Om9i
amVjdChOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBidWZmZXJJbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6
UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiBidWZmZXIsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBidWZmZXIsIGJ1ZmZlckluZGV4KTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQ
aXhlbEZvcm1hdC5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
UGl4ZWxGb3JtYXQuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzMjBjODI5ZWJhMDUyMjdjNWM5NDU5M2Y0N2Ji
Yjc2ZjExMjQxY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMUGl4ZWxGb3JtYXQuaHBwCkBAIC0wLDAgKzEsMTczIEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExQ
aXhlbEZvcm1hdC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJC
cmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpV
SW50ZWdlciwgUGl4ZWxGb3JtYXQpIHsKKyAgICBQaXhlbEZvcm1hdEludmFsaWQgPSAwLAorICAg
IFBpeGVsRm9ybWF0QThVbm9ybSA9IDEsCisgICAgUGl4ZWxGb3JtYXRSOFVub3JtID0gMTAsCisg
ICAgUGl4ZWxGb3JtYXRSOFVub3JtX3NSR0IgPSAxMSwKKyAgICBQaXhlbEZvcm1hdFI4U25vcm0g
PSAxMiwKKyAgICBQaXhlbEZvcm1hdFI4VWludCA9IDEzLAorICAgIFBpeGVsRm9ybWF0UjhTaW50
ID0gMTQsCisgICAgUGl4ZWxGb3JtYXRSMTZVbm9ybSA9IDIwLAorICAgIFBpeGVsRm9ybWF0UjE2
U25vcm0gPSAyMiwKKyAgICBQaXhlbEZvcm1hdFIxNlVpbnQgPSAyMywKKyAgICBQaXhlbEZvcm1h
dFIxNlNpbnQgPSAyNCwKKyAgICBQaXhlbEZvcm1hdFIxNkZsb2F0ID0gMjUsCisgICAgUGl4ZWxG
b3JtYXRSRzhVbm9ybSA9IDMwLAorICAgIFBpeGVsRm9ybWF0Ukc4VW5vcm1fc1JHQiA9IDMxLAor
ICAgIFBpeGVsRm9ybWF0Ukc4U25vcm0gPSAzMiwKKyAgICBQaXhlbEZvcm1hdFJHOFVpbnQgPSAz
MywKKyAgICBQaXhlbEZvcm1hdFJHOFNpbnQgPSAzNCwKKyAgICBQaXhlbEZvcm1hdEI1RzZSNVVu
b3JtID0gNDAsCisgICAgUGl4ZWxGb3JtYXRBMUJHUjVVbm9ybSA9IDQxLAorICAgIFBpeGVsRm9y
bWF0QUJHUjRVbm9ybSA9IDQyLAorICAgIFBpeGVsRm9ybWF0QkdSNUExVW5vcm0gPSA0MywKKyAg
ICBQaXhlbEZvcm1hdFIzMlVpbnQgPSA1MywKKyAgICBQaXhlbEZvcm1hdFIzMlNpbnQgPSA1NCwK
KyAgICBQaXhlbEZvcm1hdFIzMkZsb2F0ID0gNTUsCisgICAgUGl4ZWxGb3JtYXRSRzE2VW5vcm0g
PSA2MCwKKyAgICBQaXhlbEZvcm1hdFJHMTZTbm9ybSA9IDYyLAorICAgIFBpeGVsRm9ybWF0Ukcx
NlVpbnQgPSA2MywKKyAgICBQaXhlbEZvcm1hdFJHMTZTaW50ID0gNjQsCisgICAgUGl4ZWxGb3Jt
YXRSRzE2RmxvYXQgPSA2NSwKKyAgICBQaXhlbEZvcm1hdFJHQkE4VW5vcm0gPSA3MCwKKyAgICBQ
aXhlbEZvcm1hdFJHQkE4VW5vcm1fc1JHQiA9IDcxLAorICAgIFBpeGVsRm9ybWF0UkdCQThTbm9y
bSA9IDcyLAorICAgIFBpeGVsRm9ybWF0UkdCQThVaW50ID0gNzMsCisgICAgUGl4ZWxGb3JtYXRS
R0JBOFNpbnQgPSA3NCwKKyAgICBQaXhlbEZvcm1hdEJHUkE4VW5vcm0gPSA4MCwKKyAgICBQaXhl
bEZvcm1hdEJHUkE4VW5vcm1fc1JHQiA9IDgxLAorICAgIFBpeGVsRm9ybWF0UkdCMTBBMlVub3Jt
ID0gOTAsCisgICAgUGl4ZWxGb3JtYXRSR0IxMEEyVWludCA9IDkxLAorICAgIFBpeGVsRm9ybWF0
UkcxMUIxMEZsb2F0ID0gOTIsCisgICAgUGl4ZWxGb3JtYXRSR0I5RTVGbG9hdCA9IDkzLAorICAg
IFBpeGVsRm9ybWF0QkdSMTBBMlVub3JtID0gOTQsCisgICAgUGl4ZWxGb3JtYXRSRzMyVWludCA9
IDEwMywKKyAgICBQaXhlbEZvcm1hdFJHMzJTaW50ID0gMTA0LAorICAgIFBpeGVsRm9ybWF0Ukcz
MkZsb2F0ID0gMTA1LAorICAgIFBpeGVsRm9ybWF0UkdCQTE2VW5vcm0gPSAxMTAsCisgICAgUGl4
ZWxGb3JtYXRSR0JBMTZTbm9ybSA9IDExMiwKKyAgICBQaXhlbEZvcm1hdFJHQkExNlVpbnQgPSAx
MTMsCisgICAgUGl4ZWxGb3JtYXRSR0JBMTZTaW50ID0gMTE0LAorICAgIFBpeGVsRm9ybWF0UkdC
QTE2RmxvYXQgPSAxMTUsCisgICAgUGl4ZWxGb3JtYXRSR0JBMzJVaW50ID0gMTIzLAorICAgIFBp
eGVsRm9ybWF0UkdCQTMyU2ludCA9IDEyNCwKKyAgICBQaXhlbEZvcm1hdFJHQkEzMkZsb2F0ID0g
MTI1LAorICAgIFBpeGVsRm9ybWF0QkMxX1JHQkEgPSAxMzAsCisgICAgUGl4ZWxGb3JtYXRCQzFf
UkdCQV9zUkdCID0gMTMxLAorICAgIFBpeGVsRm9ybWF0QkMyX1JHQkEgPSAxMzIsCisgICAgUGl4
ZWxGb3JtYXRCQzJfUkdCQV9zUkdCID0gMTMzLAorICAgIFBpeGVsRm9ybWF0QkMzX1JHQkEgPSAx
MzQsCisgICAgUGl4ZWxGb3JtYXRCQzNfUkdCQV9zUkdCID0gMTM1LAorICAgIFBpeGVsRm9ybWF0
QkM0X1JVbm9ybSA9IDE0MCwKKyAgICBQaXhlbEZvcm1hdEJDNF9SU25vcm0gPSAxNDEsCisgICAg
UGl4ZWxGb3JtYXRCQzVfUkdVbm9ybSA9IDE0MiwKKyAgICBQaXhlbEZvcm1hdEJDNV9SR1Nub3Jt
ID0gMTQzLAorICAgIFBpeGVsRm9ybWF0QkM2SF9SR0JGbG9hdCA9IDE1MCwKKyAgICBQaXhlbEZv
cm1hdEJDNkhfUkdCVWZsb2F0ID0gMTUxLAorICAgIFBpeGVsRm9ybWF0QkM3X1JHQkFVbm9ybSA9
IDE1MiwKKyAgICBQaXhlbEZvcm1hdEJDN19SR0JBVW5vcm1fc1JHQiA9IDE1MywKKyAgICBQaXhl
bEZvcm1hdFBWUlRDX1JHQl8yQlBQID0gMTYwLAorICAgIFBpeGVsRm9ybWF0UFZSVENfUkdCXzJC
UFBfc1JHQiA9IDE2MSwKKyAgICBQaXhlbEZvcm1hdFBWUlRDX1JHQl80QlBQID0gMTYyLAorICAg
IFBpeGVsRm9ybWF0UFZSVENfUkdCXzRCUFBfc1JHQiA9IDE2MywKKyAgICBQaXhlbEZvcm1hdFBW
UlRDX1JHQkFfMkJQUCA9IDE2NCwKKyAgICBQaXhlbEZvcm1hdFBWUlRDX1JHQkFfMkJQUF9zUkdC
ID0gMTY1LAorICAgIFBpeGVsRm9ybWF0UFZSVENfUkdCQV80QlBQID0gMTY2LAorICAgIFBpeGVs
Rm9ybWF0UFZSVENfUkdCQV80QlBQX3NSR0IgPSAxNjcsCisgICAgUGl4ZWxGb3JtYXRFQUNfUjEx
VW5vcm0gPSAxNzAsCisgICAgUGl4ZWxGb3JtYXRFQUNfUjExU25vcm0gPSAxNzIsCisgICAgUGl4
ZWxGb3JtYXRFQUNfUkcxMVVub3JtID0gMTc0LAorICAgIFBpeGVsRm9ybWF0RUFDX1JHMTFTbm9y
bSA9IDE3NiwKKyAgICBQaXhlbEZvcm1hdEVBQ19SR0JBOCA9IDE3OCwKKyAgICBQaXhlbEZvcm1h
dEVBQ19SR0JBOF9zUkdCID0gMTc5LAorICAgIFBpeGVsRm9ybWF0RVRDMl9SR0I4ID0gMTgwLAor
ICAgIFBpeGVsRm9ybWF0RVRDMl9SR0I4X3NSR0IgPSAxODEsCisgICAgUGl4ZWxGb3JtYXRFVEMy
X1JHQjhBMSA9IDE4MiwKKyAgICBQaXhlbEZvcm1hdEVUQzJfUkdCOEExX3NSR0IgPSAxODMsCisg
ICAgUGl4ZWxGb3JtYXRBU1RDXzR4NF9zUkdCID0gMTg2LAorICAgIFBpeGVsRm9ybWF0QVNUQ181
eDRfc1JHQiA9IDE4NywKKyAgICBQaXhlbEZvcm1hdEFTVENfNXg1X3NSR0IgPSAxODgsCisgICAg
UGl4ZWxGb3JtYXRBU1RDXzZ4NV9zUkdCID0gMTg5LAorICAgIFBpeGVsRm9ybWF0QVNUQ182eDZf
c1JHQiA9IDE5MCwKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg1X3NSR0IgPSAxOTIsCisgICAgUGl4
ZWxGb3JtYXRBU1RDXzh4Nl9zUkdCID0gMTkzLAorICAgIFBpeGVsRm9ybWF0QVNUQ184eDhfc1JH
QiA9IDE5NCwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4NV9zUkdCID0gMTk1LAorICAgIFBpeGVs
Rm9ybWF0QVNUQ18xMHg2X3NSR0IgPSAxOTYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDhfc1JH
QiA9IDE5NywKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4MTBfc1JHQiA9IDE5OCwKKyAgICBQaXhl
bEZvcm1hdEFTVENfMTJ4MTBfc1JHQiA9IDE5OSwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTJ4MTJf
c1JHQiA9IDIwMCwKKyAgICBQaXhlbEZvcm1hdEFTVENfNHg0X0xEUiA9IDIwNCwKKyAgICBQaXhl
bEZvcm1hdEFTVENfNXg0X0xEUiA9IDIwNSwKKyAgICBQaXhlbEZvcm1hdEFTVENfNXg1X0xEUiA9
IDIwNiwKKyAgICBQaXhlbEZvcm1hdEFTVENfNng1X0xEUiA9IDIwNywKKyAgICBQaXhlbEZvcm1h
dEFTVENfNng2X0xEUiA9IDIwOCwKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg1X0xEUiA9IDIxMCwK
KyAgICBQaXhlbEZvcm1hdEFTVENfOHg2X0xEUiA9IDIxMSwKKyAgICBQaXhlbEZvcm1hdEFTVENf
OHg4X0xEUiA9IDIxMiwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4NV9MRFIgPSAyMTMsCisgICAg
UGl4ZWxGb3JtYXRBU1RDXzEweDZfTERSID0gMjE0LAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMHg4
X0xEUiA9IDIxNSwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4MTBfTERSID0gMjE2LAorICAgIFBp
eGVsRm9ybWF0QVNUQ18xMngxMF9MRFIgPSAyMTcsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEyeDEy
X0xEUiA9IDIxOCwKKyAgICBQaXhlbEZvcm1hdEFTVENfNHg0X0hEUiA9IDIyMiwKKyAgICBQaXhl
bEZvcm1hdEFTVENfNXg0X0hEUiA9IDIyMywKKyAgICBQaXhlbEZvcm1hdEFTVENfNXg1X0hEUiA9
IDIyNCwKKyAgICBQaXhlbEZvcm1hdEFTVENfNng1X0hEUiA9IDIyNSwKKyAgICBQaXhlbEZvcm1h
dEFTVENfNng2X0hEUiA9IDIyNiwKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg1X0hEUiA9IDIyOCwK
KyAgICBQaXhlbEZvcm1hdEFTVENfOHg2X0hEUiA9IDIyOSwKKyAgICBQaXhlbEZvcm1hdEFTVENf
OHg4X0hEUiA9IDIzMCwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4NV9IRFIgPSAyMzEsCisgICAg
UGl4ZWxGb3JtYXRBU1RDXzEweDZfSERSID0gMjMyLAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMHg4
X0hEUiA9IDIzMywKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4MTBfSERSID0gMjM0LAorICAgIFBp
eGVsRm9ybWF0QVNUQ18xMngxMF9IRFIgPSAyMzUsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEyeDEy
X0hEUiA9IDIzNiwKKyAgICBQaXhlbEZvcm1hdEdCR1I0MjIgPSAyNDAsCisgICAgUGl4ZWxGb3Jt
YXRCR1JHNDIyID0gMjQxLAorICAgIFBpeGVsRm9ybWF0RGVwdGgxNlVub3JtID0gMjUwLAorICAg
IFBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0ID0gMjUyLAorICAgIFBpeGVsRm9ybWF0U3RlbmNpbDgg
PSAyNTMsCisgICAgUGl4ZWxGb3JtYXREZXB0aDI0VW5vcm1fU3RlbmNpbDggPSAyNTUsCisgICAg
UGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDggPSAyNjAsCisgICAgUGl4ZWxGb3JtYXRY
MzJfU3RlbmNpbDggPSAyNjEsCisgICAgUGl4ZWxGb3JtYXRYMjRfU3RlbmNpbDggPSAyNjIsCisg
ICAgUGl4ZWxGb3JtYXRCR1JBMTBfWFIgPSA1NTIsCisgICAgUGl4ZWxGb3JtYXRCR1JBMTBfWFJf
c1JHQiA9IDU1MywKKyAgICBQaXhlbEZvcm1hdEJHUjEwX1hSID0gNTU0LAorICAgIFBpeGVsRm9y
bWF0QkdSMTBfWFJfc1JHQiA9IDU1NSwKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQcml2YXRlLmhwcCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQcml2YXRlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYWU0ZDc5
ZTQ4NzE2Y2EzNjdhZGE4NTFhMDVmNWY0NmIxNTBkYzE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFByaXZhdGUuaHBwCkBAIC0wLDAg
KzEsMTM1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vCisvLyBNZXRhbC9NVExQcml2YXRlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKworI2luY2x1ZGUgPG9i
amMvcnVudGltZS5oPgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI2RlZmluZSBfTVRMX1BSSVZBVEVfQ0xTKHN5bWJvbCkgKFByaXZhdGU6OkNsYXNz
OjpzX2sjI3N5bWJvbCkKKyNkZWZpbmUgX01UTF9QUklWQVRFX1NFTChhY2Nlc3NvcikgKFByaXZh
dGU6OlNlbGVjdG9yOjpzX2sjI2FjY2Vzc29yKQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lmIGRlZmluZWQoTVRMX1BSSVZBVEVfSU1QTEVNRU5U
QVRJT04pCisKKyNkZWZpbmUgX01UTF9QUklWQVRFX1ZJU0lCSUxJVFkgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSgiaGlkZGVuIikpKQorI2RlZmluZSBfTVRMX1BSSVZBVEVfSU1QT1JUIF9fYXR0
cmlidXRlX18oKHdlYWtfaW1wb3J0KSkKKworI2lmIF9fT0JKQ19fCisjZGVmaW5lIF9NVExfUFJJ
VkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1ib2wpICgoX19icmlkZ2Ugdm9pZCopb2JqY19sb29r
VXBDbGFzcygjc3ltYm9sKSkKKyNlbHNlCisjZGVmaW5lIF9NVExfUFJJVkFURV9PQkpDX0xPT0tV
UF9DTEFTUyhzeW1ib2wpIG9iamNfbG9va1VwQ2xhc3MoI3N5bWJvbCkKKyNlbmRpZiAvLyBfX09C
SkNfXworCisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfQ0xTKHN5bWJvbCkgdm9pZCogc19rIyNz
eW1ib2wgX01UTF9QUklWQVRFX1ZJU0lCSUxJVFkgPSBfTVRMX1BSSVZBVEVfT0JKQ19MT09LVVBf
Q0xBU1Moc3ltYm9sKTsKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9QUk8oc3ltYm9sKQorI2Rl
ZmluZSBfTVRMX1BSSVZBVEVfREVGX1NFTChhY2Nlc3Nvciwgc3ltYm9sKSBTRUwgc19rIyNhY2Nl
c3NvciBfTVRMX1BSSVZBVEVfVklTSUJJTElUWSA9IHNlbF9yZWdpc3Rlck5hbWUoc3ltYm9sKTsK
KworI2lmIGRlZmluZWQoX19NQUNfMTBfMTYpIHx8IGRlZmluZWQoX19NQUNfMTFfMCkgfHwgZGVm
aW5lZChfX01BQ18xMl8wKSB8fCBkZWZpbmVkKF9fSVBIT05FXzE0XzApIHx8IGRlZmluZWQoX19J
UEhPTkVfMTVfMCkgfHwgZGVmaW5lZChfX1RWT1NfMTRfMCkgfHwgZGVmaW5lZChfX1RWT1NfMTVf
MCkKKworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX1NUUih0eXBlLCBzeW1ib2wpICAgICAgICAg
ICAgICAgICAgXAorICAgIF9NVExfRVhURVJOIHR5cGUgY29uc3QgTVRMIyNzeW1ib2wgX01UTF9Q
UklWQVRFX0lNUE9SVDsgXAorICAgIHR5cGUgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAg
TVRMOjpzeW1ib2wgPSAobnVsbHB0ciAhPSAmTVRMIyNzeW1ib2wpID8gTVRMIyNzeW1ib2wgOiBu
dWxscHRyOworCisjZWxzZQorCisjaW5jbHVkZSA8ZGxmY24uaD4KKworbmFtZXNwYWNlIE1UTAor
eworbmFtZXNwYWNlIFByaXZhdGUKK3sKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfVHlwZT4K
KyAgICBpbmxpbmUgX1R5cGUgY29uc3QgTG9hZFN5bWJvbChjb25zdCBjaGFyKiBwU3ltYm9sKQor
ICAgIHsKKyAgICAgICAgY29uc3QgX1R5cGUqIHBBZGRyZXNzID0gc3RhdGljX2Nhc3Q8X1R5cGUq
PihkbHN5bShSVExEX0RFRkFVTFQsIHBTeW1ib2wpKTsKKworICAgICAgICByZXR1cm4gcEFkZHJl
c3MgPyAqcEFkZHJlc3MgOiBudWxscHRyOworICAgIH0KKworfSAvLyBQcml2YXRlCit9IC8vIE1U
TAorCisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfU1RSKHR5cGUsIHN5bWJvbCkgXAorICAgIF9N
VExfRVhURVJOIHR5cGUgY29uc3QgTVRMIyNzeW1ib2w7ICAgIFwKKyAgICB0eXBlIGNvbnN0ICAg
ICAgICAgICAgIE1UTDo6c3ltYm9sID0gUHJpdmF0ZTo6TG9hZFN5bWJvbDx0eXBlPigiTVRMIiAj
c3ltYm9sKTsKKworI2VuZGlmIC8vIGRlZmluZWQoX19NQUNfMTBfMTYpIHx8IGRlZmluZWQoX19N
QUNfMTFfMCkgfHwgZGVmaW5lZChfX01BQ18xMl8wKSB8fCBkZWZpbmVkKF9fSVBIT05FXzE0XzAp
IHx8IGRlZmluZWQoX19JUEhPTkVfMTVfMCkgfHwgZGVmaW5lZChfX1RWT1NfMTRfMCkgfHwgZGVm
aW5lZChfX1RWT1NfMTVfMCkKKworI2Vsc2UKKworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX0NM
UyhzeW1ib2wpIGV4dGVybiB2b2lkKiBzX2sjI3N5bWJvbDsKKyNkZWZpbmUgX01UTF9QUklWQVRF
X0RFRl9QUk8oc3ltYm9sKQorI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX1NFTChhY2Nlc3Nvciwg
c3ltYm9sKSBleHRlcm4gU0VMIHNfayMjYWNjZXNzb3I7CisjZGVmaW5lIF9NVExfUFJJVkFURV9E
RUZfU1RSKHR5cGUsIHN5bWJvbCkKKworI2VuZGlmIC8vIE1UTF9QUklWQVRFX0lNUExFTUVOVEFU
SU9OCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitu
YW1lc3BhY2UgTVRMCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBDbGFz
cworICAgIHsKKworICAgIH0gLy8gQ2xhc3MKK30gLy8gUHJpdmF0ZQorfSAvLyBNVEwKKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBN
VEwKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFtZXNwYWNlIFByb3RvY29sCisgICAg
eworCisgICAgfSAvLyBQcm90b2NvbAorfSAvLyBQcml2YXRlCit9IC8vIE1UTAorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE1UTAor
eworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAgICBuYW1lc3BhY2UgU2VsZWN0b3IKKyAgICB7CisK
KyAgICAgICAgX01UTF9QUklWQVRFX0RFRl9TRUwoYmVnaW5TY29wZSwKKyAgICAgICAgICAgICJi
ZWdpblNjb3BlIik7CisgICAgICAgIF9NVExfUFJJVkFURV9ERUZfU0VMKGVuZFNjb3BlLAorICAg
ICAgICAgICAgImVuZFNjb3BlIik7CisgICAgfSAvLyBDbGFzcworfSAvLyBQcml2YXRlCit9IC8v
IE1UTAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSYXN0ZXJp
emF0aW9uUmF0ZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
UmFzdGVyaXphdGlvblJhdGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4NjY5NTQ1Y2IyYzhlYTMzMDkxY2Zl
NWE5ZjhlYzE4NmJiYTEyYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwCkBAIC0wLDAgKzEsMzg2
IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBNZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0y
MDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNp
bmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgor
CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTERl
dmljZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7Citj
bGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBj
bGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3Mg
UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpO
dW1iZXIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2Vy
IGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRPYmplY3QoY29uc3QgTlM6Ok51bWJlciogdmFsdWUsIE5TOjpVSW50ZWdlciBpbmRleCk7
Cit9OworCitjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciA6IHB1YmxpYyBO
Uzo6Q29weWluZzxSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGFsbG9j
KCk7CisKKyAgICBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiAgICAgICAg
IGluaXQoKTsKKworICAgIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqICAg
ICAgICAgaW5pdChNVEw6OlNpemUgc2FtcGxlQ291bnQpOworCisgICAgTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogICAgICAgICBpbml0KE1UTDo6U2l6ZSBzYW1wbGVDb3Vu
dCwgY29uc3QgZmxvYXQqIGhvcml6b250YWwsIGNvbnN0IGZsb2F0KiB2ZXJ0aWNhbCk7CisKKyAg
ICBNVEw6OlNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZUNv
dW50KCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1heFNhbXBsZUNvdW50KCkgY29uc3Q7CisKKyAgICBmbG9hdCogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxTYW1wbGVTdG9yYWdlKCkg
Y29uc3Q7CisKKyAgICBmbG9hdCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZlcnRpY2FsU2FtcGxlU3RvcmFnZSgpIGNvbnN0OworCisgICAgY2xhc3MgUmFzdGVyaXph
dGlvblJhdGVTYW1wbGVBcnJheSogICAgICAgICAgICBob3Jpem9udGFsKCkgY29uc3Q7CisKKyAg
ICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiAgICAgICAgICAgIHZlcnRpY2Fs
KCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFNhbXBsZUNvdW50KE1UTDo6U2l6ZSBzYW1wbGVDb3VudCk7Cit9OworCitjbGFz
cyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJh
c3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgUmFzdGVy
aXphdGlvblJhdGVMYXllckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgUmFzdGVy
aXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqICAgb2JqZWN0KE5TOjpVSW50ZWdlciBsYXllcklu
ZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dE9iamVjdChjb25zdCBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogbGF5
ZXIsIE5TOjpVSW50ZWdlciBsYXllckluZGV4KTsKK307CisKK2NsYXNzIFJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSYXN0ZXJpemF0aW9uUmF0ZU1h
cERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRl
TWFwRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBSYXN0ZXJp
emF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcihN
VEw6OlNpemUgc2NyZWVuU2l6ZSk7CisKKyAgICBzdGF0aWMgY2xhc3MgUmFzdGVyaXphdGlvblJh
dGVNYXBEZXNjcmlwdG9yKiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IoTVRMOjpTaXpl
IHNjcmVlblNpemUsIGNvbnN0IGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9y
KiBsYXllcik7CisKKyAgICBzdGF0aWMgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlw
dG9yKiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IoTVRMOjpTaXplIHNjcmVlblNpemUs
IE5TOjpVSW50ZWdlciBsYXllckNvdW50LCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNj
cmlwdG9yKiBjb25zdCogbGF5ZXJzKTsKKworICAgIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5
ZXJEZXNjcmlwdG9yKiAgICAgIGxheWVyKE5TOjpVSW50ZWdlciBsYXllckluZGV4KTsKKworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExheWVyKGNv
bnN0IGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBsYXllciwgTlM6OlVJ
bnRlZ2VyIGxheWVySW5kZXgpOworCisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckFy
cmF5KiAgICAgICAgICAgbGF5ZXJzKCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5TaXplKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2NyZWVuU2l6ZShNVEw6
OlNpemUgc2NyZWVuU2l6ZSk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVy
Q291bnQoKSBjb25zdDsKK307CisKK2NsYXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwIDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxSYXN0ZXJpemF0aW9uUmF0ZU1hcD4KK3sKK3B1YmxpYzoKKyAgICBj
bGFzcyBEZXZpY2UqICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgICAg
IGxhYmVsKCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemUgICAgICAgICBzY3JlZW5TaXplKCkgY29u
c3Q7CisKKyAgICBNVEw6OlNpemUgICAgICAgICBwaHlzaWNhbEdyYW51bGFyaXR5KCkgY29uc3Q7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICBsYXllckNvdW50KCkgY29uc3Q7CisKKyAgICBNVEw6
OlNpemVBbmRBbGlnbiBwYXJhbWV0ZXJCdWZmZXJTaXplQW5kQWxpZ24oKSBjb25zdDsKKworICAg
IHZvaWQgICAgICAgICAgICAgIGNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXIoY29uc3QgY2xhc3Mg
QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQpOworCisgICAgTVRMOjpTaXplICAg
ICAgICAgcGh5c2ljYWxTaXplKE5TOjpVSW50ZWdlciBsYXllckluZGV4KTsKKworICAgIE1UTDo6
Q29vcmRpbmF0ZTJEIG1hcFNjcmVlblRvUGh5c2ljYWxDb29yZGluYXRlcyhNVEw6OkNvb3JkaW5h
dGUyRCBzY3JlZW5Db29yZGluYXRlcywgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpOworCisgICAg
TVRMOjpDb29yZGluYXRlMkQgbWFwUGh5c2ljYWxUb1NjcmVlbkNvb3JkaW5hdGVzKE1UTDo6Q29v
cmRpbmF0ZTJEIHBoeXNpY2FsQ29vcmRpbmF0ZXMsIE5TOjpVSW50ZWdlciBsYXllckluZGV4KTsK
K307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmFz
dGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFy
cmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmFzdGVy
aXphdGlvblJhdGVTYW1wbGVBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExSYXN0ZXJpemF0aW9u
UmF0ZVNhbXBsZUFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRM
OjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2Ft
cGxlQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmFz
dGVyaXphdGlvblJhdGVTYW1wbGVBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdElu
ZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBOUzo6TnVtYmVyKiBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlU2FtcGxlQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6Ok51bWJlcio+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBz
ZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlU2FtcGxlQXJyYXk6OnNldE9iamVjdChjb25zdCBOUzo6TnVtYmVyKiB2YWx1
ZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIHZh
bHVlLCBpbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBN
VEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTGF5ZXJEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9D
TFMoTVRMUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9k
OiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9y
KiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlw
dG9yPigpOworfQorCisvLyBtZXRob2Q6IGluaXRXaXRoU2FtcGxlQ291bnQ6CitfTVRMX0lOTElO
RSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTGF5ZXJEZXNjcmlwdG9yOjppbml0KE1UTDo6U2l6ZSBzYW1wbGVDb3VudCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJE
ZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbml0V2l0aFNhbXBsZUNvdW50Xyks
IHNhbXBsZUNvdW50KTsKK30KKworLy8gbWV0aG9kOiBpbml0V2l0aFNhbXBsZUNvdW50Omhvcml6
b250YWw6dmVydGljYWw6CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJE
ZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjppbml0KE1U
TDo6U2l6ZSBzYW1wbGVDb3VudCwgY29uc3QgZmxvYXQqIGhvcml6b250YWwsIGNvbnN0IGZsb2F0
KiB2ZXJ0aWNhbCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbml0
V2l0aFNhbXBsZUNvdW50X2hvcml6b250YWxfdmVydGljYWxfKSwgc2FtcGxlQ291bnQsIGhvcml6
b250YWwsIHZlcnRpY2FsKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNvdW50CitfTVRMX0lO
TElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6c2Ft
cGxlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3VudCkpOworfQorCisvLyBwcm9w
ZXJ0eTogbWF4U2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlJhc3Rlcml6
YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjptYXhTYW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG1heFNhbXBsZUNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBob3Jpem9udGFsU2FtcGxl
U3RvcmFnZQorX01UTF9JTkxJTkUgZmxvYXQqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRl
c2NyaXB0b3I6Omhvcml6b250YWxTYW1wbGVTdG9yYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxmbG9hdCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaG9yaXpv
bnRhbFNhbXBsZVN0b3JhZ2UpKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRpY2FsU2FtcGxlU3Rv
cmFnZQorX01UTF9JTkxJTkUgZmxvYXQqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2Ny
aXB0b3I6OnZlcnRpY2FsU2FtcGxlU3RvcmFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8ZmxvYXQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRpY2FsU2Ft
cGxlU3RvcmFnZSkpOworfQorCisvLyBwcm9wZXJ0eTogaG9yaXpvbnRhbAorX01UTF9JTkxJTkUg
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiBNVEw6OlJhc3Rlcml6YXRpb25SYXRl
TGF5ZXJEZXNjcmlwdG9yOjpob3Jpem9udGFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGhvcml6b250YWwpKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRpY2Fs
CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkqIE1UTDo6UmFz
dGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6OnZlcnRpY2FsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlU2FtcGxlQXJy
YXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRpY2FsKSk7Cit9CisKKy8vIG1ldGhvZDog
c2V0U2FtcGxlQ291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVM
YXllckRlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50KE1UTDo6U2l6ZSBzYW1wbGVDb3VudCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
U2FtcGxlQ291bnRfKSwgc2FtcGxlQ291bnQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxv
YworX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkqIE1UTDo6UmFz
dGVyaXphdGlvblJhdGVMYXllckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5PihfTVRMX1BSSVZBVEVf
Q0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KiBNVEw6OlJh
c3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXk+KCk7Cit9CisKKy8vIG1l
dGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJy
YXk6Om9iamVjdChOUzo6VUludGVnZXIgbGF5ZXJJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgbGF5ZXJJbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXk6OnNldE9iamVjdChj
b25zdCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBsYXllciwgTlM6OlVJ
bnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgbGF5ZXIs
IGxheWVySW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUg
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJh
dGVNYXBEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBNVEw6OlJh
c3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHN0YXRpYyBtZXRob2Q6IHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3Jl
ZW5TaXplOgorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3Iq
IE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpyYXN0ZXJpemF0aW9uUmF0ZU1h
cERlc2NyaXB0b3IoTVRMOjpTaXplIHNjcmVlblNpemUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IqPihfTVRMX1BS
SVZBVEVfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciksIF9NVExfUFJJVkFU
RV9TRUwocmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemVfKSwgc2Ny
ZWVuU2l6ZSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHJhc3Rlcml6YXRpb25SYXRlTWFwRGVz
Y3JpcHRvcldpdGhTY3JlZW5TaXplOmxheWVyOgorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZU1hcERlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9y
OjpyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IoTVRMOjpTaXplIHNjcmVlblNpemUsIGNv
bnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGxheWVyKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNj
cmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0
b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhT
Y3JlZW5TaXplX2xheWVyXyksIHNjcmVlblNpemUsIGxheWVyKTsKK30KKworLy8gc3RhdGljIG1l
dGhvZDogcmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemU6bGF5ZXJD
b3VudDpsYXllcnM6CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3Jp
cHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OnJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvcihNVEw6OlNpemUgc2NyZWVuU2l6ZSwgTlM6OlVJbnRlZ2VyIGxheWVy
Q291bnQsIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGNvbnN0KiBsYXll
cnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcERlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRl
TWFwRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwocmFzdGVyaXphdGlvblJhdGVNYXBEZXNj
cmlwdG9yV2l0aFNjcmVlblNpemVfbGF5ZXJDb3VudF9sYXllcnNfKSwgc2NyZWVuU2l6ZSwgbGF5
ZXJDb3VudCwgbGF5ZXJzKTsKK30KKworLy8gbWV0aG9kOiBsYXllckF0SW5kZXg6CitfTVRMX0lO
TElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6
YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6bGF5ZXIoTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxh
eWVyRGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGF5ZXJBdEluZGV4XyksIGxh
eWVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldExheWVyOmF0SW5kZXg6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpzZXRMYXllcihjb25z
dCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBsYXllciwgTlM6OlVJbnRl
Z2VyIGxheWVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldExheWVyX2F0SW5kZXhfKSwgbGF5ZXIsIGxheWVySW5kZXgpOwor
fQorCisvLyBwcm9wZXJ0eTogbGF5ZXJzCitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25S
YXRlTGF5ZXJBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OmxheWVy
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZUxheWVyQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxheWVycykpOwor
fQorCisvLyBwcm9wZXJ0eTogc2NyZWVuU2l6ZQorX01UTF9JTkxJTkUgTVRMOjpTaXplIE1UTDo6
UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpzY3JlZW5TaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemU+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2NyZWVuU2l6ZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmFzdGVyaXph
dGlvblJhdGVNYXBEZXNjcmlwdG9yOjpzZXRTY3JlZW5TaXplKE1UTDo6U2l6ZSBzY3JlZW5TaXpl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTY3JlZW5TaXplXyksIHNjcmVlblNpemUpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwK
K19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlw
dG9yOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6c2V0TGFiZWwoY29u
c3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVy
dHk6IGxheWVyQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTWFwRGVzY3JpcHRvcjo6bGF5ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxh
eWVyQ291bnQpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpE
ZXZpY2UqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OmRldmljZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGRldmljZSkpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5T
OjpTdHJpbmcqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OmxhYmVsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTogc2NyZWVuU2l6ZQorX01UTF9JTkxJ
TkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6OnNjcmVlblNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzY3JlZW5TaXplKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwaHlzaWNhbEdy
YW51bGFyaXR5CitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1h
cDo6cGh5c2ljYWxHcmFudWxhcml0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBoeXNpY2FsR3JhbnVs
YXJpdHkpKTsKK30KKworLy8gcHJvcGVydHk6IGxheWVyQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpsYXllckNvdW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobGF5ZXJDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogcGFyYW1ldGVyQnVm
ZmVyU2l6ZUFuZEFsaWduCitfTVRMX0lOTElORSBNVEw6OlNpemVBbmRBbGlnbiBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTWFwOjpwYXJhbWV0ZXJCdWZmZXJTaXplQW5kQWxpZ24oKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZUFuZEFsaWduPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHBhcmFtZXRlckJ1ZmZlclNpemVBbmRBbGlnbikpOworfQorCisvLyBt
ZXRob2Q6IGNvcHlQYXJhbWV0ZXJEYXRhVG9CdWZmZXI6b2Zmc2V0OgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpjb3B5UGFyYW1ldGVyRGF0YVRvQnVmZmVyKGNv
bnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlQYXJhbWV0
ZXJEYXRhVG9CdWZmZXJfb2Zmc2V0XyksIGJ1ZmZlciwgb2Zmc2V0KTsKK30KKworLy8gbWV0aG9k
OiBwaHlzaWNhbFNpemVGb3JMYXllcjoKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTWFwOjpwaHlzaWNhbFNpemUoTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHBoeXNpY2FsU2l6ZUZvckxheWVyXyksIGxheWVySW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IG1hcFNjcmVlblRvUGh5c2ljYWxDb29yZGluYXRlczpmb3JMYXllcjoKK19NVExfSU5M
SU5FIE1UTDo6Q29vcmRpbmF0ZTJEIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6Om1hcFNjcmVl
blRvUGh5c2ljYWxDb29yZGluYXRlcyhNVEw6OkNvb3JkaW5hdGUyRCBzY3JlZW5Db29yZGluYXRl
cywgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpDb29yZGluYXRlMkQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWFwU2NyZWVu
VG9QaHlzaWNhbENvb3JkaW5hdGVzX2ZvckxheWVyXyksIHNjcmVlbkNvb3JkaW5hdGVzLCBsYXll
ckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBtYXBQaHlzaWNhbFRvU2NyZWVuQ29vcmRpbmF0ZXM6
Zm9yTGF5ZXI6CitfTVRMX0lOTElORSBNVEw6OkNvb3JkaW5hdGUyRCBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTWFwOjptYXBQaHlzaWNhbFRvU2NyZWVuQ29vcmRpbmF0ZXMoTVRMOjpDb29yZGluYXRl
MkQgcGh5c2ljYWxDb29yZGluYXRlcywgTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb29yZGluYXRlMkQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobWFwUGh5c2ljYWxUb1NjcmVlbkNvb3JkaW5hdGVzX2ZvckxheWVyXyksIHBo
eXNpY2FsQ29vcmRpbmF0ZXMsIGxheWVySW5kZXgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJDb21tYW5kRW5j
b2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJkYTg1NjEzNWQ5N2FiZDJkODU2ZjA0NmU4YzczNjAyMzJj
NmRlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAKQEAgLTAsMCArMSw5NTggQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01U
TFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUg
Ik1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNs
dWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQnVmZmVyLmhw
cCIKKyNpbmNsdWRlICJNVExDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMSGVhcC5o
cHAiCisjaW5jbHVkZSAiTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlclBhc3Mu
aHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExTYW1wbGVyLmhw
cCIKKyNpbmNsdWRlICJNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAiCisjaW5jbHVk
ZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorI2luY2x1ZGUgIk1U
TFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgUHJpbWl0aXZlVHlwZSkgeworICAgIFByaW1pdGl2ZVR5cGVQb2ludCA9
IDAsCisgICAgUHJpbWl0aXZlVHlwZUxpbmUgPSAxLAorICAgIFByaW1pdGl2ZVR5cGVMaW5lU3Ry
aXAgPSAyLAorICAgIFByaW1pdGl2ZVR5cGVUcmlhbmdsZSA9IDMsCisgICAgUHJpbWl0aXZlVHlw
ZVRyaWFuZ2xlU3RyaXAgPSA0LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVmlzaWJp
bGl0eVJlc3VsdE1vZGUpIHsKKyAgICBWaXNpYmlsaXR5UmVzdWx0TW9kZURpc2FibGVkID0gMCwK
KyAgICBWaXNpYmlsaXR5UmVzdWx0TW9kZUJvb2xlYW4gPSAxLAorICAgIFZpc2liaWxpdHlSZXN1
bHRNb2RlQ291bnRpbmcgPSAyLAorfTsKKworc3RydWN0IFNjaXNzb3JSZWN0Cit7CisgICAgTlM6
OlVJbnRlZ2VyIHg7CisgICAgTlM6OlVJbnRlZ2VyIHk7CisgICAgTlM6OlVJbnRlZ2VyIHdpZHRo
OworICAgIE5TOjpVSW50ZWdlciBoZWlnaHQ7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgVmll
d3BvcnQKK3sKKyAgICBkb3VibGUgb3JpZ2luWDsKKyAgICBkb3VibGUgb3JpZ2luWTsKKyAgICBk
b3VibGUgd2lkdGg7CisgICAgZG91YmxlIGhlaWdodDsKKyAgICBkb3VibGUgem5lYXI7CisgICAg
ZG91YmxlIHpmYXI7Cit9IF9NVExfUEFDS0VEOworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBD
dWxsTW9kZSkgeworICAgIEN1bGxNb2RlTm9uZSA9IDAsCisgICAgQ3VsbE1vZGVGcm9udCA9IDEs
CisgICAgQ3VsbE1vZGVCYWNrID0gMiwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFdp
bmRpbmcpIHsKKyAgICBXaW5kaW5nQ2xvY2t3aXNlID0gMCwKKyAgICBXaW5kaW5nQ291bnRlckNs
b2Nrd2lzZSA9IDEsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBEZXB0aENsaXBNb2Rl
KSB7CisgICAgRGVwdGhDbGlwTW9kZUNsaXAgPSAwLAorICAgIERlcHRoQ2xpcE1vZGVDbGFtcCA9
IDEsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBUcmlhbmdsZUZpbGxNb2RlKSB7Cisg
ICAgVHJpYW5nbGVGaWxsTW9kZUZpbGwgPSAwLAorICAgIFRyaWFuZ2xlRmlsbE1vZGVMaW5lcyA9
IDEsCit9OworCitzdHJ1Y3QgRHJhd1ByaW1pdGl2ZXNJbmRpcmVjdEFyZ3VtZW50cworeworICAg
IHVpbnQzMl90IHZlcnRleENvdW50OworICAgIHVpbnQzMl90IGluc3RhbmNlQ291bnQ7CisgICAg
dWludDMyX3QgdmVydGV4U3RhcnQ7CisgICAgdWludDMyX3QgYmFzZUluc3RhbmNlOworfSBfTVRM
X1BBQ0tFRDsKKworc3RydWN0IERyYXdJbmRleGVkUHJpbWl0aXZlc0luZGlyZWN0QXJndW1lbnRz
Cit7CisgICAgdWludDMyX3QgaW5kZXhDb3VudDsKKyAgICB1aW50MzJfdCBpbnN0YW5jZUNvdW50
OworICAgIHVpbnQzMl90IGluZGV4U3RhcnQ7CisgICAgaW50MzJfdCAgYmFzZVZlcnRleDsKKyAg
ICB1aW50MzJfdCBiYXNlSW5zdGFuY2U7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgVmVydGV4
QW1wbGlmaWNhdGlvblZpZXdNYXBwaW5nCit7CisgICAgdWludDMyX3Qgdmlld3BvcnRBcnJheUlu
ZGV4T2Zmc2V0OworICAgIHVpbnQzMl90IHJlbmRlclRhcmdldEFycmF5SW5kZXhPZmZzZXQ7Cit9
IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgRHJhd1BhdGNoSW5kaXJlY3RBcmd1bWVudHMKK3sKKyAg
ICB1aW50MzJfdCBwYXRjaENvdW50OworICAgIHVpbnQzMl90IGluc3RhbmNlQ291bnQ7CisgICAg
dWludDMyX3QgcGF0Y2hTdGFydDsKKyAgICB1aW50MzJfdCBiYXNlSW5zdGFuY2U7Cit9IF9NVExf
UEFDS0VEOworCitzdHJ1Y3QgUXVhZFRlc3NlbGxhdGlvbkZhY3RvcnNIYWxmCit7CisgICAgdWlu
dDE2X3QgZWRnZVRlc3NlbGxhdGlvbkZhY3Rvcls0XTsKKyAgICB1aW50MTZfdCBpbnNpZGVUZXNz
ZWxsYXRpb25GYWN0b3JbMl07Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgVHJpYW5nbGVUZXNz
ZWxsYXRpb25GYWN0b3JzSGFsZgoreworICAgIHVpbnQxNl90IGVkZ2VUZXNzZWxsYXRpb25GYWN0
b3JbM107CisgICAgdWludDE2X3QgaW5zaWRlVGVzc2VsbGF0aW9uRmFjdG9yOworfSBfTVRMX1BB
Q0tFRDsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgUmVuZGVyU3RhZ2VzKSB7CisgICAg
UmVuZGVyU3RhZ2VWZXJ0ZXggPSAxLAorICAgIFJlbmRlclN0YWdlRnJhZ21lbnQgPSAyLAorICAg
IFJlbmRlclN0YWdlVGlsZSA9IDQsCit9OworCitjbGFzcyBSZW5kZXJDb21tYW5kRW5jb2RlciA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVyQ29tbWFuZEVuY29kZXIsIENvbW1hbmRFbmNv
ZGVyPgoreworcHVibGljOgorICAgIHZvaWQgICAgICAgICBzZXRSZW5kZXJQaXBlbGluZVN0YXRl
KGNvbnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lU3RhdGUpOworCisgICAg
dm9pZCAgICAgICAgIHNldFZlcnRleEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVn
ZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZl
cnRleEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhCdWZm
ZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAg
IHZvaWQgICAgICAgICBzZXRWZXJ0ZXhCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNv
bnN0IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lk
ICAgICAgICAgc2V0VmVydGV4VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleFRleHR1cmVz
KE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQg
ICAgICAgICBzZXRWZXJ0ZXhTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBz
YW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRl
eFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSBy
YW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4U2FtcGxlclN0YXRlKGNvbnN0IGNs
YXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1h
eENsYW1wLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRl
eFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNvbnN0IGZsb2F0
IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6OlJhbmdlIHJh
bmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZShj
b25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRl
Z2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhWaXNpYmxlRnVu
Y3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFi
bGVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4SW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVz
KGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVy
dGV4QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVy
ZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisg
ICAgdm9pZCAgICAgICAgIHNldFZpZXdwb3J0KE1UTDo6Vmlld3BvcnQgdmlld3BvcnQpOworCisg
ICAgdm9pZCAgICAgICAgIHNldFZpZXdwb3J0cyhjb25zdCBNVEw6OlZpZXdwb3J0KiB2aWV3cG9y
dHMsIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJvbnRGYWNp
bmdXaW5kaW5nKE1UTDo6V2luZGluZyBmcm9udEZhY2luZ1dpbmRpbmcpOworCisgICAgdm9pZCAg
ICAgICAgIHNldFZlcnRleEFtcGxpZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgY291bnQsIGNv
bnN0IE1UTDo6VmVydGV4QW1wbGlmaWNhdGlvblZpZXdNYXBwaW5nKiB2aWV3TWFwcGluZ3MpOwor
CisgICAgdm9pZCAgICAgICAgIHNldEN1bGxNb2RlKE1UTDo6Q3VsbE1vZGUgY3VsbE1vZGUpOwor
CisgICAgdm9pZCAgICAgICAgIHNldERlcHRoQ2xpcE1vZGUoTVRMOjpEZXB0aENsaXBNb2RlIGRl
cHRoQ2xpcE1vZGUpOworCisgICAgdm9pZCAgICAgICAgIHNldERlcHRoQmlhcyhmbG9hdCBkZXB0
aEJpYXMsIGZsb2F0IHNsb3BlU2NhbGUsIGZsb2F0IGNsYW1wKTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRTY2lzc29yUmVjdChNVEw6OlNjaXNzb3JSZWN0IHJlY3QpOworCisgICAgdm9pZCAgICAg
ICAgIHNldFNjaXNzb3JSZWN0cyhjb25zdCBNVEw6OlNjaXNzb3JSZWN0KiBzY2lzc29yUmVjdHMs
IE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VHJpYW5nbGVGaWxs
TW9kZShNVEw6OlRyaWFuZ2xlRmlsbE1vZGUgZmlsbE1vZGUpOworCisgICAgdm9pZCAgICAgICAg
IHNldEZyYWdtZW50Qnl0ZXMoY29uc3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgs
IE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRCdWZm
ZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpV
SW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRCdWZmZXJPZmZz
ZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQg
ICAgICAgICBzZXRGcmFnbWVudEJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3Qg
TlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAg
ICAgICBzZXRGcmFnbWVudFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6
OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFRleHR1cmVz
KE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQg
ICAgICAgICBzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyU3RhdGUq
IHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJh
Z21lbnRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50U2FtcGxlclN0YXRlKGNv
bnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0
IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNl
dEZyYWdtZW50U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29u
c3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNvbnN0IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6
UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50VmlzaWJsZUZ1bmN0
aW9uVGFibGUoY29uc3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUs
IE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21l
bnRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0
aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJh
Z21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZm
ZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlcyhjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAg
ICAgIHNldEZyYWdtZW50QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJh
dGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVy
SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEJsZW5kQ29sb3JSZWQoZmxvYXQgcmVkLCBm
bG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpOworCisgICAgdm9pZCAgICAgICAg
IHNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGNsYXNzIERlcHRoU3RlbmNpbFN0YXRlKiBkZXB0
aFN0ZW5jaWxTdGF0ZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0U3RlbmNpbFJlZmVyZW5jZVZh
bHVlKHVpbnQzMl90IHJlZmVyZW5jZVZhbHVlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRTdGVu
Y2lsRnJvbnRSZWZlcmVuY2VWYWx1ZSh1aW50MzJfdCBmcm9udFJlZmVyZW5jZVZhbHVlLCB1aW50
MzJfdCBiYWNrUmVmZXJlbmNlVmFsdWUpOworCisgICAgdm9pZCAgICAgICAgIHNldFZpc2liaWxp
dHlSZXN1bHRNb2RlKE1UTDo6VmlzaWJpbGl0eVJlc3VsdE1vZGUgbW9kZSwgTlM6OlVJbnRlZ2Vy
IG9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0Q29sb3JTdG9yZUFjdGlvbihNVEw6OlN0
b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUludGVnZXIgY29sb3JBdHRhY2htZW50SW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgIHNldERlcHRoU3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlv
biBzdG9yZUFjdGlvbik7CisKKyAgICB2b2lkICAgICAgICAgc2V0U3RlbmNpbFN0b3JlQWN0aW9u
KE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24pOworCisgICAgdm9pZCAgICAgICAgIHNldENv
bG9yU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9u
T3B0aW9ucywgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KTsKKworICAgIHZvaWQg
ICAgICAgICBzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9u
cyBzdG9yZUFjdGlvbk9wdGlvbnMpOworCisgICAgdm9pZCAgICAgICAgIHNldFN0ZW5jaWxTdG9y
ZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25z
KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUg
cHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUludGVnZXIgdmVy
dGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50KTsKKworICAgIHZvaWQgICAgICAg
ICBkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJ
bnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUludGVnZXIgdmVydGV4Q291bnQpOworCisgICAgdm9p
ZCAgICAgICAgIGRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0
aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlw
ZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVm
ZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCk7CisKKyAgICB2b2lkICAgICAg
ICAgZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBl
LCBOUzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25z
dCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZz
ZXQpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlw
ZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2
ZXJ0ZXhDb3VudCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNl
SW5zdGFuY2UpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6
OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1U
TDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRleEJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3Vu
dCwgTlM6OkludGVnZXIgYmFzZVZlcnRleCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7CisK
KyAgICB2b2lkICAgICAgICAgZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1p
dGl2ZVR5cGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdl
ciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgZHJhd0luZGV4ZWRQ
cmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBNVEw6OkluZGV4VHlw
ZSBpbmRleFR5cGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdl
ciBpbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgY2xhc3MgQnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAgICB0
ZXh0dXJlQmFycmllcigpOworCisgICAgdm9pZCAgICAgICAgIHVwZGF0ZUZlbmNlKGNvbnN0IGNs
YXNzIEZlbmNlKiBmZW5jZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKTsKKworICAgIHZvaWQg
ICAgICAgICB3YWl0Rm9yRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlLCBNVEw6OlJlbmRl
clN0YWdlcyBzdGFnZXMpOworCisgICAgdm9pZCAgICAgICAgIHNldFRlc3NlbGxhdGlvbkZhY3Rv
ckJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUZXNz
ZWxsYXRpb25GYWN0b3JTY2FsZShmbG9hdCBzY2FsZSk7CisKKyAgICB2b2lkICAgICAgICAgZHJh
d1BhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBOUzo6VUlu
dGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQsIGNvbnN0IGNsYXNzIEJ1
ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZz
ZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNl
KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQ
YXRjaENvbnRyb2xQb2ludHMsIGNvbnN0IGNsYXNzIEJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciog
aW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAg
ICB2b2lkICAgICAgICAgZHJhd0luZGV4ZWRQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBh
dGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRlZ2VyIHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBw
YXRjaENvdW50LCBjb25zdCBjbGFzcyBCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50
ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBjbGFzcyBCdWZmZXIqIGNvbnRyb2xQ
b2ludEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZz
ZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNl
KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRlZ2VyIG51
bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBjb25zdCBjbGFzcyBCdWZmZXIqIHBhdGNoSW5kZXhC
dWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBjbGFzcyBC
dWZmZXIqIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgY29udHJvbFBvaW50
SW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5T
OjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICBOUzo6VUludGVnZXIgdGls
ZVdpZHRoKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgdGlsZUhlaWdodCgpIGNvbnN0Owor
CisgICAgdm9pZCAgICAgICAgIHNldFRpbGVCeXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJ
bnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBz
ZXRUaWxlQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zm
c2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVCdWZm
ZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAg
IHZvaWQgICAgICAgICBzZXRUaWxlQnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVycywgY29uc3Qg
TlM6OlVJbnRlZ2VyKiBvZmZzZXRzLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAg
ICAgIHNldFRpbGVUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50
ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZVRleHR1cmVzKE1UTDo6VGV4
dHVyZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBz
ZXRUaWxlU2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6
OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlU2FtcGxlclN0YXRl
cyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAg
IHZvaWQgICAgICAgICBzZXRUaWxlU2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0
ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6VUlu
dGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVTYW1wbGVyU3RhdGVzKE1U
TDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25zdCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwg
Y29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lk
ICAgICAgICAgc2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZpc2libGVG
dW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOwor
CisgICAgdm9pZCAgICAgICAgIHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xh
c3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5n
ZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUo
Y29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBz
ZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJh
bmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJlKGNv
bnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBO
Uzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIGRpc3BhdGNoVGhy
ZWFkc1BlclRpbGUoTVRMOjpTaXplIHRocmVhZHNQZXJUaWxlKTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6VUlu
dGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHVz
ZVJlc291cmNlKGNvbnN0IGNsYXNzIFJlc291cmNlKiByZXNvdXJjZSwgTVRMOjpSZXNvdXJjZVVz
YWdlIHVzYWdlKTsKKworICAgIHZvaWQgICAgICAgICB1c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJj
ZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVz
YWdlKTsKKworICAgIHZvaWQgICAgICAgICB1c2VSZXNvdXJjZShjb25zdCBjbGFzcyBSZXNvdXJj
ZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSwgTVRMOjpSZW5kZXJTdGFnZXMg
c3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICB1c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJjZSog
cmVzb3VyY2VzLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSwg
TVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICB1c2VIZWFwKGNv
bnN0IGNsYXNzIEhlYXAqIGhlYXApOworCisgICAgdm9pZCAgICAgICAgIHVzZUhlYXBzKE1UTDo6
SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAgIHZvaWQgICAgICAgICB1
c2VIZWFwKGNvbnN0IGNsYXNzIEhlYXAqIGhlYXAsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcyk7
CisKKyAgICB2b2lkICAgICAgICAgdXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUlu
dGVnZXIgY291bnQsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcyk7CisKKyAgICB2b2lkICAgICAg
ICAgZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVm
ZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5TOjpSYW5nZSBleGVjdXRpb25SYW5nZSk7CisK
KyAgICB2b2lkICAgICAgICAgZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgY2xhc3MgSW5k
aXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRidWZmZXIsIGNvbnN0IGNsYXNzIEJ1
ZmZlciogaW5kaXJlY3RSYW5nZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zm
c2V0KTsKKworICAgIHZvaWQgICAgICAgICBtZW1vcnlCYXJyaWVyKE1UTDo6QmFycmllclNjb3Bl
IHNjb3BlLCBNVEw6OlJlbmRlclN0YWdlcyBhZnRlciwgTVRMOjpSZW5kZXJTdGFnZXMgYmVmb3Jl
KTsKKworICAgIHZvaWQgICAgICAgICBtZW1vcnlCYXJyaWVyKE1UTDo6UmVzb3VyY2UqIHJlc291
cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVuZGVyU3RhZ2VzIGFmdGVyLCBNVEw6
OlJlbmRlclN0YWdlcyBiZWZvcmUpOworCisgICAgdm9pZCAgICAgICAgIHNhbXBsZUNvdW50ZXJz
SW5CdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBO
Uzo6VUludGVnZXIgc2FtcGxlSW5kZXgsIGJvb2wgYmFycmllcik7Cit9OworCit9CisKKy8vIG1l
dGhvZDogc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OlJlbmRl
clBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lU3RhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlbmRlclBpcGVsaW5lU3RhdGVfKSwg
cGlwZWxpbmVTdGF0ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4Qnl0ZXM6bGVuZ3RoOmF0
SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZl
cnRleEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6VUlu
dGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFZlcnRleEJ5dGVzX2xlbmd0aF9hdEluZGV4XyksIGJ5dGVzLCBsZW5n
dGgsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhCdWZmZXI6b2Zmc2V0OmF0SW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRl
eEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBO
Uzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZm
ZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEJ1ZmZlck9mZnNl
dDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXRWZXJ0ZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRWZXJ0ZXhCdWZmZXJPZmZzZXRfYXRJbmRleF8pLCBvZmZzZXQsIGluZGV4KTsKK30K
KworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKE1U
TDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpS
YW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0VmVydGV4QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5nZV8pLCBidWZmZXJz
LCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4VGV4dHVyZTphdElu
ZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0
ZXhUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRWZXJ0ZXhUZXh0dXJlX2F0SW5kZXhfKSwgdGV4dHVyZSwgaW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldFZlcnRleFRleHR1cmVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0
ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFRleHR1cmVzX3dpdGhSYW5nZV8p
LCB0ZXh0dXJlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFNhbXBsZXJTdGF0
ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXRWZXJ0ZXhTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5T
OjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlX2F0SW5kZXhfKSwgc2FtcGxl
ciwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFNhbXBsZXJTdGF0ZXM6d2l0aFJh
bmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0
ZXhTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2Ug
cmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZXNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCByYW5n
ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4U2FtcGxlclN0YXRlOmxvZE1pbkNsYW1wOmxv
ZE1heENsYW1wOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNldFZlcnRleFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6OlNhbXBsZXJTdGF0ZSogc2Ft
cGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZsb2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIg
aW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdElu
ZGV4XyksIHNhbXBsZXIsIGxvZE1pbkNsYW1wLCBsb2RNYXhDbGFtcCwgaW5kZXgpOworfQorCisv
LyBtZXRob2Q6IHNldFZlcnRleFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1heENsYW1w
czp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
OnNldFZlcnRleFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNv
bnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6
OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhD
bGFtcHNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBsb2RNaW5DbGFtcHMsIGxvZE1heENsYW1wcywg
cmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxlOmF0
QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
OnNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9u
VGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4
VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8pLCBmdW5jdGlvblRhYmxlLCBidWZm
ZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVz
OndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5j
b2Rlcjo6c2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6VmlzaWJsZUZ1
bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4
VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBmdW5jdGlvblRhYmxlcywg
cmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5j
b2Rlcjo6c2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OkludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50
ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1
ZmZlckluZGV4XyksIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30K
KworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoQnVm
ZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNl
dFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJh
bmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2Vf
KSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBz
ZXRWZXJ0ZXhBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1
Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlX2F0QnVmZmVySW5kZXhfKSwgYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBidWZmZXJJbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Vmlld3BvcnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZpZXdwb3J0KE1UTDo6Vmlld3BvcnQgdmlld3BvcnQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFZpZXdwb3J0XyksIHZpZXdwb3J0KTsKK30KKworLy8gbWV0aG9kOiBzZXRWaWV3cG9ydHM6
Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZp
ZXdwb3J0cyhjb25zdCBNVEw6OlZpZXdwb3J0KiB2aWV3cG9ydHMsIE5TOjpVSW50ZWdlciBjb3Vu
dCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0Vmlld3BvcnRzX2NvdW50XyksIHZpZXdwb3J0cywgY291bnQpOworfQorCisvLyBtZXRo
b2Q6IHNldEZyb250RmFjaW5nV2luZGluZzoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0RnJvbnRGYWNpbmdXaW5kaW5nKE1UTDo6V2luZGluZyBmcm9udEZh
Y2luZ1dpbmRpbmcpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEZyb250RmFjaW5nV2luZGluZ18pLCBmcm9udEZhY2luZ1dpbmRpbmcp
OworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEFtcGxpZmljYXRpb25Db3VudDp2aWV3TWFwcGlu
Z3M6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRl
eEFtcGxpZmljYXRpb25Db3VudChOUzo6VUludGVnZXIgY291bnQsIGNvbnN0IE1UTDo6VmVydGV4
QW1wbGlmaWNhdGlvblZpZXdNYXBwaW5nKiB2aWV3TWFwcGluZ3MpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEFtcGxpZmlj
YXRpb25Db3VudF92aWV3TWFwcGluZ3NfKSwgY291bnQsIHZpZXdNYXBwaW5ncyk7Cit9CisKKy8v
IG1ldGhvZDogc2V0Q3VsbE1vZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFu
ZEVuY29kZXI6OnNldEN1bGxNb2RlKE1UTDo6Q3VsbE1vZGUgY3VsbE1vZGUpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEN1bGxNb2Rl
XyksIGN1bGxNb2RlKTsKK30KKworLy8gbWV0aG9kOiBzZXREZXB0aENsaXBNb2RlOgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aENsaXBNb2RlKE1U
TDo6RGVwdGhDbGlwTW9kZSBkZXB0aENsaXBNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aENsaXBNb2RlXyksIGRlcHRo
Q2xpcE1vZGUpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoQmlhczpzbG9wZVNjYWxlOmNsYW1w
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aEJp
YXMoZmxvYXQgZGVwdGhCaWFzLCBmbG9hdCBzbG9wZVNjYWxlLCBmbG9hdCBjbGFtcCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVw
dGhCaWFzX3Nsb3BlU2NhbGVfY2xhbXBfKSwgZGVwdGhCaWFzLCBzbG9wZVNjYWxlLCBjbGFtcCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0U2Npc3NvclJlY3Q6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFNjaXNzb3JSZWN0KE1UTDo6U2Npc3NvclJlY3QgcmVj
dCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0U2Npc3NvclJlY3RfKSwgcmVjdCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2Npc3NvclJl
Y3RzOmNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXRTY2lzc29yUmVjdHMoY29uc3QgTVRMOjpTY2lzc29yUmVjdCogc2Npc3NvclJlY3RzLCBOUzo6
VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFNjaXNzb3JSZWN0c19jb3VudF8pLCBzY2lzc29yUmVjdHMsIGNv
dW50KTsKK30KKworLy8gbWV0aG9kOiBzZXRUcmlhbmdsZUZpbGxNb2RlOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUcmlhbmdsZUZpbGxNb2RlKE1UTDo6
VHJpYW5nbGVGaWxsTW9kZSBmaWxsTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHJpYW5nbGVGaWxsTW9kZV8pLCBmaWxsTW9k
ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRCeXRlczpsZW5ndGg6YXRJbmRleDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRCeXRl
cyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRGcmFnbWVudEJ5dGVzX2xlbmd0aF9hdEluZGV4XyksIGJ5dGVzLCBsZW5ndGgsIGlu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRC
dWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6
OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZm
ZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50QnVmZmVyT2Zm
c2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
OnNldEZyYWdtZW50QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdl
ciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0RnJhZ21lbnRCdWZmZXJPZmZzZXRfYXRJbmRleF8pLCBvZmZzZXQsIGluZGV4
KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50
QnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0
c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5n
ZV8pLCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21l
bnRUZXh0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNldEZyYWdtZW50VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5T
OjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRUZXh0dXJlX2F0SW5kZXhfKSwgdGV4dHVyZSwg
aW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50VGV4dHVyZXM6d2l0aFJhbmdlOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFRl
eHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFn
bWVudFRleHR1cmVzX3dpdGhSYW5nZV8pLCB0ZXh0dXJlcywgcmFuZ2UpOworfQorCisvLyBtZXRo
b2Q6IHNldEZyYWdtZW50U2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50U2FtcGxlclN0YXRlKGNvbnN0IE1U
TDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50
U2FtcGxlclN0YXRlX2F0SW5kZXhfKSwgc2FtcGxlciwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6
IHNldEZyYWdtZW50U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50U2FtcGxlclN0YXRlcyhNVEw6OlNh
bXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFNhbXBs
ZXJTdGF0ZXNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDog
c2V0RnJhZ21lbnRTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRT
YW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIGZsb2F0IGxvZE1p
bkNsYW1wLCBmbG9hdCBsb2RNYXhDbGFtcCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVu
dFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdEluZGV4XyksIHNhbXBsZXIs
IGxvZE1pbkNsYW1wLCBsb2RNYXhDbGFtcCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZy
YWdtZW50U2FtcGxlclN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRT
YW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25zdCBmbG9hdCBs
b2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpSYW5nZSByYW5n
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNfd2l0
aFJhbmdlXyksIHNhbXBsZXJzLCBsb2RNaW5DbGFtcHMsIGxvZE1heENsYW1wcywgcmFuZ2UpOwor
fQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJ
bmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJh
Z21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxl
KiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50Vmlz
aWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8pLCBmdW5jdGlvblRhYmxlLCBidWZmZXJJ
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZXM6
d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OlZpc2libGVG
dW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdt
ZW50VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBmdW5jdGlvblRhYmxl
cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgTVRM
OjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBO
Uzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZV9hdEJ1ZmZlckluZGV4XyksIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIGJ1ZmZlcklu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6c2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6
OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10s
IE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc193
aXRoQnVmZmVyUmFuZ2VfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMsIHJhbmdlKTsKK30K
KworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlcklu
ZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFn
bWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZy
YWdtZW50QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfKSwgYWNjZWxlcmF0aW9u
U3RydWN0dXJlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QmxlbmRDb2xvclJl
ZDpncmVlbjpibHVlOmFscGhhOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRF
bmNvZGVyOjpzZXRCbGVuZENvbG9yUmVkKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJs
dWUsIGZsb2F0IGFscGhhKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRCbGVuZENvbG9yUmVkX2dyZWVuX2JsdWVfYWxwaGFfKSwgcmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoU3RlbmNpbFN0
YXRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0
aFN0ZW5jaWxTdGF0ZShjb25zdCBNVEw6OkRlcHRoU3RlbmNpbFN0YXRlKiBkZXB0aFN0ZW5jaWxT
dGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0RGVwdGhTdGVuY2lsU3RhdGVfKSwgZGVwdGhTdGVuY2lsU3RhdGUpOworfQorCisv
LyBtZXRob2Q6IHNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1ZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0U3RlbmNpbFJlZmVyZW5jZVZhbHVlKHVpbnQzMl90
IHJlZmVyZW5jZVZhbHVlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsUmVmZXJlbmNlVmFsdWVfKSwgcmVmZXJlbmNlVmFs
dWUpOworfQorCisvLyBtZXRob2Q6IHNldFN0ZW5jaWxGcm9udFJlZmVyZW5jZVZhbHVlOmJhY2tS
ZWZlcmVuY2VWYWx1ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6c2V0U3RlbmNpbEZyb250UmVmZXJlbmNlVmFsdWUodWludDMyX3QgZnJvbnRSZWZlcmVuY2VW
YWx1ZSwgdWludDMyX3QgYmFja1JlZmVyZW5jZVZhbHVlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsRnJvbnRSZWZlcmVu
Y2VWYWx1ZV9iYWNrUmVmZXJlbmNlVmFsdWVfKSwgZnJvbnRSZWZlcmVuY2VWYWx1ZSwgYmFja1Jl
ZmVyZW5jZVZhbHVlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWaXNpYmlsaXR5UmVzdWx0TW9kZTpv
ZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZp
c2liaWxpdHlSZXN1bHRNb2RlKE1UTDo6VmlzaWJpbGl0eVJlc3VsdE1vZGUgbW9kZSwgTlM6OlVJ
bnRlZ2VyIG9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0VmlzaWJpbGl0eVJlc3VsdE1vZGVfb2Zmc2V0XyksIG1vZGUsIG9m
ZnNldCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Q29sb3JTdG9yZUFjdGlvbjphdEluZGV4OgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRDb2xvclN0b3JlQWN0
aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24sIE5TOjpVSW50ZWdlciBjb2xvckF0dGFj
aG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0Q29sb3JTdG9yZUFjdGlvbl9hdEluZGV4XyksIHN0b3JlQWN0aW9uLCBj
b2xvckF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RGVwdGhTdG9yZUFjdGlv
bjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RGVwdGhT
dG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREZXB0aFN0b3JlQWN0
aW9uXyksIHN0b3JlQWN0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzZXRTdGVuY2lsU3RvcmVBY3Rp
b246CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFN0ZW5j
aWxTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsU3Rv
cmVBY3Rpb25fKSwgc3RvcmVBY3Rpb24pOworfQorCisvLyBtZXRob2Q6IHNldENvbG9yU3RvcmVB
Y3Rpb25PcHRpb25zOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFu
ZEVuY29kZXI6OnNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRp
b25zIHN0b3JlQWN0aW9uT3B0aW9ucywgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9uc19hdEluZGV4XyksIHN0b3JlQWN0aW9uT3B0aW9u
cywgY29sb3JBdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoU3RvcmVB
Y3Rpb25PcHRpb25zOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9y
ZUFjdGlvbk9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldERlcHRoU3RvcmVBY3Rpb25PcHRpb25zXyksIHN0b3JlQWN0aW9u
T3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RlbmNpbFN0b3JlQWN0aW9uT3B0aW9uczoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0U3RlbmNpbFN0
b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlv
bnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnNfKSwgc3RvcmVBY3Rpb25PcHRpb25zKTsK
K30KKworLy8gbWV0aG9kOiBkcmF3UHJpbWl0aXZlczp2ZXJ0ZXhTdGFydDp2ZXJ0ZXhDb3VudDpp
bnN0YW5jZUNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJ
bnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUludGVnZXIgdmVydGV4Q291bnQsIE5TOjpVSW50ZWdl
ciBpbnN0YW5jZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0ZXhDb3VudF9p
bnN0YW5jZUNvdW50XyksIHByaW1pdGl2ZVR5cGUsIHZlcnRleFN0YXJ0LCB2ZXJ0ZXhDb3VudCwg
aW5zdGFuY2VDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd1ByaW1pdGl2ZXM6dmVydGV4U3Rh
cnQ6dmVydGV4Q291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29k
ZXI6OmRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6
VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd1ByaW1p
dGl2ZXNfdmVydGV4U3RhcnRfdmVydGV4Q291bnRfKSwgcHJpbWl0aXZlVHlwZSwgdmVydGV4U3Rh
cnQsIHZlcnRleENvdW50KTsKK30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFByaW1pdGl2ZXM6
aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFu
Y2VDb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJh
d0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6
VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBNVEw6
OkJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwgTlM6
OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRleENvdW50
X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50Xyks
IHByaW1pdGl2ZVR5cGUsIGluZGV4Q291bnQsIGluZGV4VHlwZSwgaW5kZXhCdWZmZXIsIGluZGV4
QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50KTsKK30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhl
ZFByaW1pdGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJP
ZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdJ
bmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJ
bnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgTVRMOjpC
dWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdJ
bmRleGVkUHJpbWl0aXZlc19pbmRleENvdW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1
ZmZlck9mZnNldF8pLCBwcmltaXRpdmVUeXBlLCBpbmRleENvdW50LCBpbmRleFR5cGUsIGluZGV4
QnVmZmVyLCBpbmRleEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd1ByaW1pdGl2
ZXM6dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQcmltaXRpdmVz
KE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6VUludGVnZXIgdmVydGV4U3Rh
cnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQs
IE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0X3Zl
cnRleENvdW50X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlXyksIHByaW1pdGl2ZVR5cGUsIHZl
cnRleFN0YXJ0LCB2ZXJ0ZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgYmFzZUluc3RhbmNlKTsKK30K
KworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFByaW1pdGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6
aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VDb3VudDpiYXNlVmVydGV4OmJh
c2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBO
Uzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBN
VEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpJbnRlZ2VyIGJhc2VWZXJ0ZXgsIE5TOjpV
SW50ZWdlciBiYXNlSW5zdGFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRleENvdW50X2lu
ZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VW
ZXJ0ZXhfYmFzZUluc3RhbmNlXyksIHByaW1pdGl2ZVR5cGUsIGluZGV4Q291bnQsIGluZGV4VHlw
ZSwgaW5kZXhCdWZmZXIsIGluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlVmVy
dGV4LCBiYXNlSW5zdGFuY2UpOworfQorCisvLyBtZXRob2Q6IGRyYXdQcmltaXRpdmVzOmluZGly
ZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJp
bWl0aXZlVHlwZSwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVn
ZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQcmltaXRpdmVzX2luZGlyZWN0QnVmZmVyX2lu
ZGlyZWN0QnVmZmVyT2Zmc2V0XyksIHByaW1pdGl2ZVR5cGUsIGluZGlyZWN0QnVmZmVyLCBpbmRp
cmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4ZWRQcmltaXRpdmVz
OmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZlcjpp
bmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRp
dmVUeXBlLCBNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRl
eEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZl
ciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJh
d0luZGV4ZWRQcmltaXRpdmVzX2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNl
dF9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8pLCBwcmltaXRpdmVUeXBlLCBp
bmRleFR5cGUsIGluZGV4QnVmZmVyLCBpbmRleEJ1ZmZlck9mZnNldCwgaW5kaXJlY3RCdWZmZXIs
IGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0aG9kOiB0ZXh0dXJlQmFycmllcgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp0ZXh0dXJlQmFycmll
cigpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHRleHR1cmVCYXJyaWVyKSk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRlRmVuY2U6YWZ0ZXJT
dGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVwZGF0
ZUZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHVwZGF0ZUZlbmNlX2FmdGVyU3RhZ2VzXyksIGZlbmNlLCBzdGFnZXMpOworfQorCisvLyBtZXRo
b2Q6IHdhaXRGb3JGZW5jZTpiZWZvcmVTdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OndhaXRGb3JGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSwg
TVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3YWl0Rm9yRmVuY2VfYmVmb3JlU3RhZ2VzXyksIGZl
bmNlLCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6IHNldFRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZl
cjpvZmZzZXQ6aW5zdGFuY2VTdHJpZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnNldFRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZl
ciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VTdHJp
ZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcl9vZmZzZXRfaW5zdGFuY2VTdHJpZGVfKSwg
YnVmZmVyLCBvZmZzZXQsIGluc3RhbmNlU3RyaWRlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUZXNz
ZWxsYXRpb25GYWN0b3JTY2FsZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6c2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGUoZmxvYXQgc2NhbGUpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRlc3Nl
bGxhdGlvbkZhY3RvclNjYWxlXyksIHNjYWxlKTsKK30KKworLy8gbWV0aG9kOiBkcmF3UGF0Y2hl
czpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVy
T2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQ
YXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVnZXIg
cGF0Y2hDb3VudCwgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50
ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwg
TlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd1BhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENv
dW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50
X2Jhc2VJbnN0YW5jZV8pLCBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgcGF0Y2hTdGFydCwg
cGF0Y2hDb3VudCwgcGF0Y2hJbmRleEJ1ZmZlciwgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgaW5z
dGFuY2VDb3VudCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8gbWV0aG9kOiBkcmF3UGF0Y2hlczpw
YXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6aW5k
aXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OmRyYXdQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50
cywgY29uc3QgTVRMOjpCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRj
aEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5T
OjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd1BhdGNoZXNfcGF0Y2hJbmRleEJ1
ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVy
T2Zmc2V0XyksIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBwYXRjaEluZGV4QnVmZmVyLCBw
YXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBpbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZz
ZXQpOworfQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNo
Q291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zmc2V0OmNvbnRyb2xQb2lu
dEluZGV4QnVmZmVyOmNvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6
YmFzZUluc3RhbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9p
bnRzLCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQsIGNv
bnN0IE1UTDo6QnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRl
eEJ1ZmZlck9mZnNldCwgY29uc3QgTVRMOjpCdWZmZXIqIGNvbnRyb2xQb2ludEluZGV4QnVmZmVy
LCBOUzo6VUludGVnZXIgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50ZWdl
ciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFBh
dGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRleEJ1
ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1ZmZlcl9jb250cm9sUG9pbnRJbmRleEJ1ZmZl
ck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV8pLCBudW1iZXJPZlBhdGNoQ29udHJv
bFBvaW50cywgcGF0Y2hTdGFydCwgcGF0Y2hDb3VudCwgcGF0Y2hJbmRleEJ1ZmZlciwgcGF0Y2hJ
bmRleEJ1ZmZlck9mZnNldCwgY29udHJvbFBvaW50SW5kZXhCdWZmZXIsIGNvbnRyb2xQb2ludElu
ZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlSW5zdGFuY2UpOworfQorCisvLyBt
ZXRob2Q6IGRyYXdJbmRleGVkUGF0Y2hlczpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZm
ZXJPZmZzZXQ6Y29udHJvbFBvaW50SW5kZXhCdWZmZXI6Y29udHJvbFBvaW50SW5kZXhCdWZmZXJP
ZmZzZXQ6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdJbmRleGVkUGF0Y2hlcyhOUzo6VUlu
dGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIGNvbnN0IE1UTDo6QnVmZmVyKiBwYXRj
aEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29uc3Qg
TVRMOjpCdWZmZXIqIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgY29udHJv
bFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFBhdGNoZXNf
cGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQb2ludEluZGV4
QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVyX2luZGly
ZWN0QnVmZmVyT2Zmc2V0XyksIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBwYXRjaEluZGV4
QnVmZmVyLCBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwg
Y29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIGluZGlyZWN0QnVmZmVyLCBpbmRpcmVjdEJ1
ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiB0aWxlV2lkdGgKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp0aWxlV2lkdGgoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh0aWxlV2lkdGgpKTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVIZWlnaHQK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp0aWxl
SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUhlaWdodCkpOworfQorCisvLyBtZXRo
b2Q6IHNldFRpbGVCeXRlczpsZW5ndGg6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZUJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6
VUludGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVCeXRlc19sZW5ndGhf
YXRJbmRleF8pLCBieXRlcywgbGVuZ3RoLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGls
ZUJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6c2V0VGlsZUJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6
VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVCdWZmZXJfb2Zmc2V0
X2F0SW5kZXhfKSwgYnVmZmVyLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRU
aWxlQnVmZmVyT2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnNldFRpbGVCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6
OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRUaWxlQnVmZmVyT2Zmc2V0X2F0SW5kZXhfKSwgb2Zmc2V0LCBp
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZUJ1ZmZlcnM6b2Zmc2V0czp3aXRoUmFuZ2U6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVCdWZm
ZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzLCBjb25zdCBOUzo6VUludGVnZXIqIG9mZnNldHMsIE5T
OjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0VGlsZUJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfKSwgYnVmZmVy
cywgb2Zmc2V0cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVUZXh0dXJlOmF0SW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVU
ZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRUaWxlVGV4dHVyZV9hdEluZGV4XyksIHRleHR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBzZXRUaWxlVGV4dHVyZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlVGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1td
LCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVUZXh0dXJlc193aXRoUmFuZ2VfKSwgdGV4dHVyZXMs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlU2FtcGxlclN0YXRlOmF0SW5kZXg6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVTYW1wbGVy
U3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VGlsZVNhbXBsZXJTdGF0ZV9hdEluZGV4XyksIHNhbXBsZXIsIGluZGV4KTsKK30KKwor
Ly8gbWV0aG9kOiBzZXRUaWxlU2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVTYW1wbGVyU3RhdGVzKE1UTDo6
U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVTYW1wbGVy
U3RhdGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNl
dFRpbGVTYW1wbGVyU3RhdGU6bG9kTWluQ2xhbXA6bG9kTWF4Q2xhbXA6YXRJbmRleDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZVNhbXBsZXJTdGF0
ZShjb25zdCBNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgZmxvYXQgbG9kTWluQ2xhbXAsIGZs
b2F0IGxvZE1heENsYW1wLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVTYW1wbGVyU3RhdGVf
bG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRleF8pLCBzYW1wbGVyLCBsb2RNaW5DbGFtcCwg
bG9kTWF4Q2xhbXAsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlU2FtcGxlclN0YXRl
czpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZVNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1w
bGVyU3RhdGUqIHNhbXBsZXJzW10sIGNvbnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBm
bG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlU2FtcGxlclN0YXRl
c19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgbG9kTWlu
Q2xhbXBzLCBsb2RNYXhDbGFtcHMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlVmlz
aWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IE1U
TDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZm
ZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgZnVu
Y3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVWaXNpYmxl
RnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlVmlzaWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0IE1U
TDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5n
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgZnVuY3Rp
b25UYWJsZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlSW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6
OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5T
OjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVf
YXRCdWZmZXJJbmRleF8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzOndpdGhC
dWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
c2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJh
bmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXyks
IGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0
VGlsZUFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlQWNjZWxlcmF0aW9uU3RydWN0dXJl
KGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUFjY2VsZXJhdGlvblN0cnVjdHVyZV9h
dEJ1ZmZlckluZGV4XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgYnVmZmVySW5kZXgpOworfQor
CisvLyBtZXRob2Q6IGRpc3BhdGNoVGhyZWFkc1BlclRpbGU6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNoVGhyZWFkc1BlclRpbGUoTVRMOjpTaXpl
IHRocmVhZHNQZXJUaWxlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChkaXNwYXRjaFRocmVhZHNQZXJUaWxlXyksIHRocmVhZHNQZXJUaWxl
KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aDpvZmZzZXQ6YXRJ
bmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGhy
ZWFkZ3JvdXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIG9m
ZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aF9vZmZz
ZXRfYXRJbmRleF8pLCBsZW5ndGgsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHVz
ZVJlc291cmNlOnVzYWdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjp1c2VSZXNvdXJjZShjb25zdCBNVEw6OlJlc291cmNlKiByZXNvdXJjZSwgTVRMOjpSZXNv
dXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZV91c2FnZV8pLCByZXNvdXJjZSwgdXNhZ2UpOwor
fQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlczpjb3VudDp1c2FnZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3VyY2VzKE1UTDo6UmVzb3VyY2Uq
IHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2Fn
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwodXNlUmVzb3VyY2VzX2NvdW50X3VzYWdlXyksIHJlc291cmNlcywgY291bnQsIHVzYWdlKTsK
K30KKworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZTp1c2FnZTpzdGFnZXM6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlKGNvbnN0IE1UTDo6UmVz
b3VyY2UqIHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UsIE1UTDo6UmVuZGVyU3Rh
Z2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodXNlUmVzb3VyY2VfdXNhZ2Vfc3RhZ2VzXyksIHJlc291cmNlLCB1c2FnZSwg
c3RhZ2VzKTsKK30KKworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZXM6Y291bnQ6dXNhZ2U6c3RhZ2Vz
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1c2VSZXNvdXJj
ZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVz
b3VyY2VVc2FnZSB1c2FnZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZXNf
Y291bnRfdXNhZ2Vfc3RhZ2VzXyksIHJlc291cmNlcywgY291bnQsIHVzYWdlLCBzdGFnZXMpOwor
fQorCisvLyBtZXRob2Q6IHVzZUhlYXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnVzZUhlYXAoY29uc3QgTVRMOjpIZWFwKiBoZWFwKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwXyksIGhl
YXApOworfQorCisvLyBtZXRob2Q6IHVzZUhlYXBzOmNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwcyhNVEw6OkhlYXAqIGhlYXBzW10sIE5T
OjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwodXNlSGVhcHNfY291bnRfKSwgaGVhcHMsIGNvdW50KTsKK30KKwor
Ly8gbWV0aG9kOiB1c2VIZWFwOnN0YWdlczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6dXNlSGVhcChjb25zdCBNVEw6OkhlYXAqIGhlYXAsIE1UTDo6UmVuZGVy
U3RhZ2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodXNlSGVhcF9zdGFnZXNfKSwgaGVhcCwgc3RhZ2VzKTsKK30KKworLy8g
bWV0aG9kOiB1c2VIZWFwczpjb3VudDpzdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnVzZUhlYXBzKE1UTDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRl
Z2VyIGNvdW50LCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBzX2NvdW50X3N0YWdl
c18pLCBoZWFwcywgY291bnQsIHN0YWdlcyk7Cit9CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNvbW1h
bmRzSW5CdWZmZXI6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjpleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0Q29t
bWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6UmFuZ2UgZXhlY3V0aW9uUmFu
Z2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyX3dpdGhSYW5nZV8pLCBpbmRpcmVjdENvbW1hbmRC
dWZmZXIsIGV4ZWN1dGlvblJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBleGVjdXRlQ29tbWFuZHNJ
bkJ1ZmZlcjppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIo
Y29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZGJ1ZmZlciwg
Y29uc3QgTVRMOjpCdWZmZXIqIGluZGlyZWN0UmFuZ2VCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRp
cmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXJfaW5kaXJlY3RCdWZmZXJf
aW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgaW5kaXJlY3RDb21tYW5kYnVmZmVyLCBpbmRpcmVjdFJh
bmdlQnVmZmVyLCBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogbWVtb3J5
QmFycmllcldpdGhTY29wZTphZnRlclN0YWdlczpiZWZvcmVTdGFnZXM6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6Om1lbW9yeUJhcnJpZXIoTVRMOjpCYXJyaWVy
U2NvcGUgc2NvcGUsIE1UTDo6UmVuZGVyU3RhZ2VzIGFmdGVyLCBNVEw6OlJlbmRlclN0YWdlcyBi
ZWZvcmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG1lbW9yeUJhcnJpZXJXaXRoU2NvcGVfYWZ0ZXJTdGFnZXNfYmVmb3JlU3RhZ2VzXyks
IHNjb3BlLCBhZnRlciwgYmVmb3JlKTsKK30KKworLy8gbWV0aG9kOiBtZW1vcnlCYXJyaWVyV2l0
aFJlc291cmNlczpjb3VudDphZnRlclN0YWdlczpiZWZvcmVTdGFnZXM6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6Om1lbW9yeUJhcnJpZXIoTVRMOjpSZXNvdXJj
ZSogcmVzb3VyY2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZW5kZXJTdGFnZXMgYWZ0
ZXIsIE1UTDo6UmVuZGVyU3RhZ2VzIGJlZm9yZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXNf
Y291bnRfYWZ0ZXJTdGFnZXNfYmVmb3JlU3RhZ2VzXyksIHJlc291cmNlcywgY291bnQsIGFmdGVy
LCBiZWZvcmUpOworfQorCisvLyBtZXRob2Q6IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRTYW1w
bGVJbmRleDp3aXRoQmFycmllcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6c2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1wbGVC
dWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUluZGV4LCBib29sIGJhcnJp
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNhbXBsZUNvdW50ZXJzSW5CdWZmZXJfYXRTYW1wbGVJbmRleF93aXRoQmFycmllcl8pLCBz
YW1wbGVCdWZmZXIsIHNhbXBsZUluZGV4LCBiYXJyaWVyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQYXNzLmhwcCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQYXNzLmhwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NTc1MWVhYWU1NWUwZDg0YzkwM2YzMzcxZDI1YjEyOTkyNTM5N2RjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBh
c3MuaHBwCkBAIC0wLDAgKzEsNzg2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExSZW5kZXJQYXNzLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMUmVuZGVyUGFzcy5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5V
TShOUzo6VUludGVnZXIsIExvYWRBY3Rpb24pIHsKKyAgICBMb2FkQWN0aW9uRG9udENhcmUgPSAw
LAorICAgIExvYWRBY3Rpb25Mb2FkID0gMSwKKyAgICBMb2FkQWN0aW9uQ2xlYXIgPSAyLAorfTsK
KworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU3RvcmVBY3Rpb24pIHsKKyAgICBTdG9yZUFjdGlv
bkRvbnRDYXJlID0gMCwKKyAgICBTdG9yZUFjdGlvblN0b3JlID0gMSwKKyAgICBTdG9yZUFjdGlv
bk11bHRpc2FtcGxlUmVzb2x2ZSA9IDIsCisgICAgU3RvcmVBY3Rpb25TdG9yZUFuZE11bHRpc2Ft
cGxlUmVzb2x2ZSA9IDMsCisgICAgU3RvcmVBY3Rpb25Vbmtub3duID0gNCwKKyAgICBTdG9yZUFj
dGlvbkN1c3RvbVNhbXBsZURlcHRoU3RvcmUgPSA1LAorfTsKKworX01UTF9PUFRJT05TKE5TOjpV
SW50ZWdlciwgU3RvcmVBY3Rpb25PcHRpb25zKSB7CisgICAgU3RvcmVBY3Rpb25PcHRpb25Ob25l
ID0gMCwKKyAgICBTdG9yZUFjdGlvbk9wdGlvblZhbGlkTWFzayA9IDEsCisgICAgU3RvcmVBY3Rp
b25PcHRpb25DdXN0b21TYW1wbGVQb3NpdGlvbnMgPSAxLAorfTsKKworc3RydWN0IENsZWFyQ29s
b3IKK3sKKyAgICBzdGF0aWMgQ2xlYXJDb2xvciBNYWtlKGRvdWJsZSByZWQsIGRvdWJsZSBncmVl
biwgZG91YmxlIGJsdWUsIGRvdWJsZSBhbHBoYSk7CisKKyAgICBDbGVhckNvbG9yKCkgPSBkZWZh
dWx0OworCisgICAgQ2xlYXJDb2xvcihkb3VibGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBi
bHVlLCBkb3VibGUgYWxwaGEpOworCisgICAgZG91YmxlIHJlZDsKKyAgICBkb3VibGUgZ3JlZW47
CisgICAgZG91YmxlIGJsdWU7CisgICAgZG91YmxlIGFscGhhOworfSBfTVRMX1BBQ0tFRDsKKwor
Y2xhc3MgUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5n
PFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y2xhc3MgUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xh
c3MgUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAg
Y2xhc3MgVGV4dHVyZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSk7CisKKyAgICBOUzo6VUludGVn
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExldmVsKE5TOjpV
SW50ZWdlciBsZXZlbCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzbGljZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFNsaWNlKE5TOjpVSW50ZWdlciBzbGljZSk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFBsYW5lKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0RGVwdGhQbGFuZShOUzo6VUludGVnZXIgZGVwdGhQbGFuZSk7CisKKyAgICBjbGFzcyBUZXh0
dXJlKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlVGV4dHVyZSgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJl
c29sdmVUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHJlc29sdmVUZXh0dXJlKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVMZXZl
bCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFJlc29sdmVMZXZlbChOUzo6VUludGVnZXIgcmVzb2x2ZUxldmVsKTsKKworICAgIE5T
OjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVTbGljZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFJlc29sdmVTbGljZShOUzo6VUludGVnZXIgcmVzb2x2ZVNsaWNlKTsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVEZXB0aFBsYW5l
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0UmVzb2x2ZURlcHRoUGxhbmUoTlM6OlVJbnRlZ2VyIHJlc29sdmVEZXB0aFBsYW5lKTsK
KworICAgIE1UTDo6TG9hZEFjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRB
Y3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRMb2FkQWN0aW9uKE1UTDo6TG9hZEFjdGlvbiBsb2FkQWN0aW9uKTsKKworICAg
IE1UTDo6U3RvcmVBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlQWN0aW9u
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0U3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbik7CisKKyAgICBN
VEw6OlN0b3JlQWN0aW9uT3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICBzdG9yZUFjdGlvbk9w
dGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3Rv
cmVBY3Rpb25PcHRpb25zKTsKK307CisKK2NsYXNzIFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iq
IGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6Q2xlYXJDb2xvciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xlYXJDb2xvcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q2xlYXJDb2xvcihNVEw6OkNs
ZWFyQ29sb3IgY2xlYXJDb2xvcik7Cit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBNdWx0
aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlcikgeworICAgIE11bHRpc2FtcGxlRGVwdGhSZXNvbHZl
RmlsdGVyU2FtcGxlMCA9IDAsCisgICAgTXVsdGlzYW1wbGVEZXB0aFJlc29sdmVGaWx0ZXJNaW4g
PSAxLAorICAgIE11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyTWF4ID0gMiwKK307CisKK2Ns
YXNzIFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLCBNVEw6OlJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGRv
dWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJEZXB0
aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0Q2xlYXJEZXB0aChkb3VibGUgY2xlYXJEZXB0aCk7CisKKyAgICBNVEw6Ok11
bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyICAgICAgICAgICAgICAgIGRlcHRoUmVzb2x2ZUZp
bHRlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RGVwdGhSZXNvbHZlRmlsdGVyKE1UTDo6TXVsdGlzYW1wbGVEZXB0aFJl
c29sdmVGaWx0ZXIgZGVwdGhSZXNvbHZlRmlsdGVyKTsKK307CisKK19NVExfRU5VTShOUzo6VUlu
dGVnZXIsIE11bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXIpIHsKKyAgICBNdWx0aXNhbXBs
ZVN0ZW5jaWxSZXNvbHZlRmlsdGVyU2FtcGxlMCA9IDAsCisgICAgTXVsdGlzYW1wbGVTdGVuY2ls
UmVzb2x2ZUZpbHRlckRlcHRoUmVzb2x2ZWRTYW1wbGUgPSAxLAorfTsKKworY2xhc3MgUmVuZGVy
UGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5k
ZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yLCBNVEw6OlJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc1N0
ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBh
c3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICB1aW50
MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJTdGVu
Y2lsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldENsZWFyU3RlbmNpbCh1aW50MzJfdCBjbGVhclN0ZW5jaWwpOworCisg
ICAgTVRMOjpNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyICAgICAgICAgICAgICAgIHN0
ZW5jaWxSZXNvbHZlRmlsdGVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZW5jaWxSZXNvbHZlRmlsdGVyKE1UTDo6
TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZpbHRlciBzdGVuY2lsUmVzb2x2ZUZpbHRlcik7Cit9
OworCitjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5IDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIFJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6
OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVn
ZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNz
IFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogICAg
ICAgIGluaXQoKTsKKworICAgIGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbXBsZUJ1
ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpOworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRPZlZlcnRl
eFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgpOworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuZE9mVmVydGV4U2Ft
cGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mVmVydGV4U2FtcGxlSW5kZXgpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
cnRPZkZyYWdtZW50U2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydE9mRnJhZ21lbnRT
YW1wbGVJbmRleChOUzo6VUludGVnZXIgc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgpOworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5kT2ZGcmFnbWVu
dFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgpOworfTsK
KworY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkg
OiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNs
YXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAgICAg
ICAgaW5pdCgpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBSZW5kZXJQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2ht
ZW50SW5kZXgpOworfTsKKworY2xhc3MgUmVuZGVyUGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMgTlM6
OkNvcHlpbmc8UmVuZGVyUGFzc0Rlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBSZW5kZXJQYXNzRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yKiAgICAg
ICAgICAgICAgICAgICAgIHJlbmRlclBhc3NEZXNjcmlwdG9yKCk7CisKKyAgICBjbGFzcyBSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAgICAgICAgY29sb3JBdHRhY2ht
ZW50cygpIGNvbnN0OworCisgICAgY2xhc3MgUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IqICAgICAgICAgICAgIGRlcHRoQXR0YWNobWVudCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aEF0
dGFjaG1lbnQoY29uc3QgY2xhc3MgUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iq
IGRlcHRoQXR0YWNobWVudCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1l
bnREZXNjcmlwdG9yKiAgICAgICAgICAgc3RlbmNpbEF0dGFjaG1lbnQoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
U3RlbmNpbEF0dGFjaG1lbnQoY29uc3QgY2xhc3MgUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50
RGVzY3JpcHRvciogc3RlbmNpbEF0dGFjaG1lbnQpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlSZXN1bHRCdWZm
ZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0VmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZm
ZXIqIHZpc2liaWxpdHlSZXN1bHRCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRhcmdldEFycmF5TGVuZ3Ro
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFJlbmRlclRhcmdldEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdlciByZW5k
ZXJUYXJnZXRBcnJheUxlbmd0aCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRJbWFnZWJsb2NrU2FtcGxlTGVuZ3RoKE5TOjpVSW50ZWdlciBpbWFnZWJsb2NrU2Ft
cGxlTGVuZ3RoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aHJlYWRncm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRU
aHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIgdGhyZWFkZ3JvdXBNZW1vcnlMZW5n
dGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbGVXaWR0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaWxlV2lkdGgoTlM6OlVJbnRlZ2Vy
IHRpbGVXaWR0aCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGlsZUhlaWdodCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaWxlSGVpZ2h0KE5T
OjpVSW50ZWdlciB0aWxlSGVpZ2h0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0RGVmYXVsdFJhc3RlclNhbXBsZUNvdW50KE5TOjpVSW50ZWdlciBkZWZhdWx0
UmFzdGVyU2FtcGxlQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRhcmdldFdpZHRoKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFJlbmRlclRhcmdldFdpZHRoKE5TOjpVSW50ZWdlciByZW5kZXJUYXJnZXRXaWR0aCk7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVuZGVyVGFyZ2V0SGVpZ2h0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlbmRlclRhcmdldEhlaWdodChOUzo6
VUludGVnZXIgcmVuZGVyVGFyZ2V0SGVpZ2h0KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVQb3NpdGlvbnMoY29u
c3QgTVRMOjpTYW1wbGVQb3NpdGlvbiogcG9zaXRpb25zLCBOUzo6VUludGVnZXIgY291bnQpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdldFNhbXBsZVBvc2l0aW9ucyhNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5T
OjpVSW50ZWdlciBjb3VudCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcCogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyaXphdGlvblJhdGVNYXAoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0UmFzdGVyaXphdGlvblJhdGVNYXAoY29uc3QgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXAq
IHJhc3Rlcml6YXRpb25SYXRlTWFwKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBzYW1wbGVCdWZmZXJBdHRhY2htZW50cygpIGNv
bnN0OworfTsKKworfQorCitfTVRMX0lOTElORSBNVEw6OkNsZWFyQ29sb3IgTVRMOjpDbGVhckNv
bG9yOjpNYWtlKGRvdWJsZSByZWQsIGRvdWJsZSBncmVlbiwgZG91YmxlIGJsdWUsIGRvdWJsZSBh
bHBoYSkKK3sKKyAgICByZXR1cm4gQ2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7
Cit9CisKK19NVExfSU5MSU5FIE1UTDo6Q2xlYXJDb2xvcjo6Q2xlYXJDb2xvcihkb3VibGUgX3Jl
ZCwgZG91YmxlIF9ncmVlbiwgZG91YmxlIF9ibHVlLCBkb3VibGUgX2FscGhhKQorICAgIDogcmVk
KF9yZWQpCisgICAgLCBncmVlbihfZ3JlZW4pCisgICAgLCBibHVlKF9ibHVlKQorICAgICwgYWxw
aGEoX2FscGhhKQoreworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUg
TVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiB0ZXh0dXJlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6UmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjp0ZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHRleHR1cmUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcjo6c2V0VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFRleHR1cmVfKSwgdGV4dHVyZSk7Cit9CisKKy8vIHByb3BlcnR5OiBsZXZlbAorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjps
ZXZlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxldmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldExldmVsKE5TOjpVSW50
ZWdlciBsZXZlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0TGV2ZWxfKSwgbGV2ZWwpOworfQorCisvLyBwcm9wZXJ0eTogc2xpY2UK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2xpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzbGljZSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTbGljZShO
Uzo6VUludGVnZXIgc2xpY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFNsaWNlXyksIHNsaWNlKTsKK30KKworLy8gcHJvcGVydHk6
IGRlcHRoUGxhbmUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvcjo6ZGVwdGhQbGFuZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRo
UGxhbmUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvcjo6c2V0RGVwdGhQbGFuZShOUzo6VUludGVnZXIgZGVwdGhQbGFuZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVw
dGhQbGFuZV8pLCBkZXB0aFBsYW5lKTsKK30KKworLy8gcHJvcGVydHk6IHJlc29sdmVUZXh0dXJl
CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yOjpyZXNvbHZlVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNvbHZlVGV4
dHVyZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpzZXRSZXNvbHZlVGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHJlc29sdmVU
ZXh0dXJlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRSZXNvbHZlVGV4dHVyZV8pLCByZXNvbHZlVGV4dHVyZSk7Cit9CisKKy8vIHBy
b3BlcnR5OiByZXNvbHZlTGV2ZWwKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6cmVzb2x2ZUxldmVsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwocmVzb2x2ZUxldmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFJlc29sdmVMZXZlbChOUzo6VUludGVnZXIgcmVz
b2x2ZUxldmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRSZXNvbHZlTGV2ZWxfKSwgcmVzb2x2ZUxldmVsKTsKK30KKworLy8gcHJv
cGVydHk6IHJlc29sdmVTbGljZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpyZXNvbHZlU2xpY2UoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChyZXNvbHZlU2xpY2UpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UmVzb2x2ZVNsaWNlKE5TOjpVSW50ZWdlciByZXNv
bHZlU2xpY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFJlc29sdmVTbGljZV8pLCByZXNvbHZlU2xpY2UpOworfQorCisvLyBwcm9w
ZXJ0eTogcmVzb2x2ZURlcHRoUGxhbmUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6cmVzb2x2ZURlcHRoUGxhbmUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChyZXNvbHZlRGVwdGhQbGFuZSkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRSZXNvbHZlRGVwdGhQbGFu
ZShOUzo6VUludGVnZXIgcmVzb2x2ZURlcHRoUGxhbmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJlc29sdmVEZXB0aFBsYW5lXyks
IHJlc29sdmVEZXB0aFBsYW5lKTsKK30KKworLy8gcHJvcGVydHk6IGxvYWRBY3Rpb24KK19NVExf
SU5MSU5FIE1UTDo6TG9hZEFjdGlvbiBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
cjo6bG9hZEFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpMb2FkQWN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxvYWRBY3Rpb24pKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6
c2V0TG9hZEFjdGlvbihNVEw6OkxvYWRBY3Rpb24gbG9hZEFjdGlvbikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TG9hZEFjdGlvbl8p
LCBsb2FkQWN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHN0b3JlQWN0aW9uCitfTVRMX0lOTElO
RSBNVEw6OlN0b3JlQWN0aW9uIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpz
dG9yZUFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpTdG9yZUFjdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdG9yZUFjdGlvbikpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpz
ZXRTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdG9yZUFjdGlv
bl8pLCBzdG9yZUFjdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBzdG9yZUFjdGlvbk9wdGlvbnMK
K19NVExfSU5MSU5FIE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIE1UTDo6UmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yOjpzdG9yZUFjdGlvbk9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHN0b3JlQWN0aW9uT3B0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdG9yZUFjdGlvbk9wdGlv
bnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdG9yZUFj
dGlvbk9wdGlvbnNfKSwgc3RvcmVBY3Rpb25PcHRpb25zKTsKK30KKworLy8gc3RhdGljIG1ldGhv
ZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBjbGVhckNvbG9yCitfTVRMX0lOTElORSBNVEw6OkNsZWFyQ29sb3IgTVRM
OjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y2xlYXJDb2xvcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDbGVhckNvbG9yPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGNsZWFyQ29sb3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRDbGVhckNvbG9yKE1U
TDo6Q2xlYXJDb2xvciBjbGVhckNvbG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDbGVhckNvbG9yXyksIGNsZWFyQ29sb3IpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ciogTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGNsZWFyRGVwdGgKK19NVExfSU5MSU5F
IGRvdWJsZSBNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckRl
cHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxkb3VibGU+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoY2xlYXJEZXB0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OnNldENsZWFyRGVwdGgo
ZG91YmxlIGNsZWFyRGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldENsZWFyRGVwdGhfKSwgY2xlYXJEZXB0aCk7Cit9CisKKy8v
IHByb3BlcnR5OiBkZXB0aFJlc29sdmVGaWx0ZXIKK19NVExfSU5MSU5FIE1UTDo6TXVsdGlzYW1w
bGVEZXB0aFJlc29sdmVGaWx0ZXIgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvcjo6ZGVwdGhSZXNvbHZlRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6Ok11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGRlcHRoUmVzb2x2ZUZpbHRlcikpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OnNldERlcHRoUmVzb2x2
ZUZpbHRlcihNVEw6Ok11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyIGRlcHRoUmVzb2x2ZUZp
bHRlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0RGVwdGhSZXNvbHZlRmlsdGVyXyksIGRlcHRoUmVzb2x2ZUZpbHRlcik7Cit9CisK
Ky8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTdGVu
Y2lsQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50
RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMo
TVRMUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRo
b2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVz
Y3JpcHRvciogTVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBhc3NTdGVuY2ls
QXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBjbGVhclN0ZW5jaWwK
K19NVExfSU5MSU5FIHVpbnQzMl90IE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVz
Y3JpcHRvcjo6Y2xlYXJTdGVuY2lsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTx1aW50MzJfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjbGVhclN0ZW5jaWwpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERl
c2NyaXB0b3I6OnNldENsZWFyU3RlbmNpbCh1aW50MzJfdCBjbGVhclN0ZW5jaWwpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENsZWFy
U3RlbmNpbF8pLCBjbGVhclN0ZW5jaWwpOworfQorCisvLyBwcm9wZXJ0eTogc3RlbmNpbFJlc29s
dmVGaWx0ZXIKK19NVExfSU5MSU5FIE1UTDo6TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZpbHRl
ciBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I6OnN0ZW5jaWxSZXNv
bHZlRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
Ok11bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c3RlbmNpbFJlc29sdmVGaWx0ZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
clBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0ZW5jaWxSZXNvbHZlRmlsdGVy
KE1UTDo6TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZpbHRlciBzdGVuY2lsUmVzb2x2ZUZpbHRl
cikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0U3RlbmNpbFJlc29sdmVGaWx0ZXJfKSwgc3RlbmNpbFJlc29sdmVGaWx0ZXIpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxs
b2M8TVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PihfTVRMX1BS
SVZBVEVfQ0xTKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpKTsK
K30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBt
ZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRl
eGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2Jq
ZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2Vy
IGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2ht
ZW50LCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01U
TF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3Iq
IE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yKiBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVC
dWZmZXIKK19NVExfSU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpSZW5kZXJQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2FtcGxlQnVm
ZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVCdWZmZXIpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
cjo6c2V0U2FtcGxlQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxl
QnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRTYW1wbGVCdWZmZXJfKSwgc2FtcGxlQnVmZmVyKTsKK30KKworLy8gcHJvcGVy
dHk6IHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzdGFydE9mVmVy
dGV4U2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFydE9mVmVydGV4U2FtcGxl
SW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RhcnRPZlZlcnRleFNhbXBsZUluZGV4KE5TOjpV
SW50ZWdlciBzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJ
bmRleF8pLCBzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgpOworfQorCisvLyBwcm9wZXJ0eTogZW5k
T2ZWZXJ0ZXhTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVy
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjplbmRPZlZlcnRleFNhbXBsZUlu
ZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpzZXRFbmRPZlZlcnRleFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZlZl
cnRleFNhbXBsZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRFbmRPZlZlcnRleFNhbXBsZUluZGV4XyksIGVuZE9mVmVydGV4
U2FtcGxlSW5kZXgpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5k
ZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
OjpzZXRTdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleChOUzo6VUludGVnZXIgc3RhcnRPZkZyYWdt
ZW50U2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4XyksIHN0YXJ0T2ZG
cmFnbWVudFNhbXBsZUluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IGVuZE9mRnJhZ21lbnRTYW1w
bGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjplbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChlbmRPZkZyYWdtZW50U2FtcGxlSW5kZXgpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
cjo6c2V0RW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkZyYWdtZW50
U2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldEVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleF8pLCBlbmRPZkZyYWdtZW50
U2FtcGxlSW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUg
TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRM
OjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRl
clBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8
TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oKTsK
K30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBN
VEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5k
ZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpV
SW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50
SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJ
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50LCBhdHRhY2ht
ZW50SW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpSZW5kZXJQYXNzRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBhc3NEZXNjcmlw
dG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yKSk7Cit9CisKKy8v
IG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvciogTVRM
OjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmluaXQ8TVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhv
ZDogcmVuZGVyUGFzc0Rlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0Rlc2Ny
aXB0b3IqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnJlbmRlclBhc3NEZXNjcmlwdG9yKCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBhc3NEZXNjcmlw
dG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQYXNzRGVzY3JpcHRvciksIF9NVExfUFJJ
VkFURV9TRUwocmVuZGVyUGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IGNvbG9y
QXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChjb2xvckF0dGFjaG1lbnRzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXB0aEF0dGFjaG1lbnQK
K19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqIE1U
TDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmRlcHRoQXR0YWNobWVudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhBdHRhY2htZW50KSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0RGVwdGhB
dHRhY2htZW50KGNvbnN0IE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iq
IGRlcHRoQXR0YWNobWVudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhBdHRhY2htZW50XyksIGRlcHRoQXR0YWNobWVudCk7
Cit9CisKKy8vIHByb3BlcnR5OiBzdGVuY2lsQXR0YWNobWVudAorX01UTF9JTkxJTkUgTVRMOjpS
ZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NEZXNj
cmlwdG9yOjpzdGVuY2lsQXR0YWNobWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVuY2lsQXR0YWNobWVudCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFN0ZW5jaWxBdHRhY2htZW50
KGNvbnN0IE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciogc3RlbmNp
bEF0dGFjaG1lbnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFN0ZW5jaWxBdHRhY2htZW50XyksIHN0ZW5jaWxBdHRhY2htZW50KTsK
K30KKworLy8gcHJvcGVydHk6IHZpc2liaWxpdHlSZXN1bHRCdWZmZXIKK19NVExfSU5MSU5FIE1U
TDo6QnVmZmVyKiBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjp2aXNpYmlsaXR5UmVzdWx0QnVm
ZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZl
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcikpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFZpc2liaWxp
dHlSZXN1bHRCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIHZpc2liaWxpdHlSZXN1bHRCdWZmZXIp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFZpc2liaWxpdHlSZXN1bHRCdWZmZXJfKSwgdmlzaWJpbGl0eVJlc3VsdEJ1ZmZlcik7Cit9
CisKKy8vIHByb3BlcnR5OiByZW5kZXJUYXJnZXRBcnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnJlbmRlclRhcmdldEFycmF5TGVu
Z3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRSZW5kZXJU
YXJnZXRBcnJheUxlbmd0aChOUzo6VUludGVnZXIgcmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFJlbmRlclRhcmdldEFycmF5TGVuZ3RoXyksIHJlbmRlclRhcmdldEFycmF5TGVuZ3RoKTsKK30K
KworLy8gcHJvcGVydHk6IGltYWdlYmxvY2tTYW1wbGVMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjppbWFnZWJsb2NrU2FtcGxlTGVuZ3Ro
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldEltYWdlYmxvY2tT
YW1wbGVMZW5ndGgoTlM6OlVJbnRlZ2VyIGltYWdlYmxvY2tTYW1wbGVMZW5ndGgpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEltYWdl
YmxvY2tTYW1wbGVMZW5ndGhfKSwgaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCk7Cit9CisKKy8vIHBy
b3BlcnR5OiB0aHJlYWRncm91cE1lbW9yeUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2Vy
IE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwodGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRUaHJlYWRncm91cE1lbW9y
eUxlbmd0aChOUzo6VUludGVnZXIgdGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRocmVhZGdy
b3VwTWVtb3J5TGVuZ3RoXyksIHRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKTsKK30KKworLy8gcHJv
cGVydHk6IHRpbGVXaWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFz
c0Rlc2NyaXB0b3I6OnRpbGVXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRpbGVXaWR0aCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFRp
bGVXaWR0aChOUzo6VUludGVnZXIgdGlsZVdpZHRoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlV2lkdGhfKSwgdGlsZVdpZHRo
KTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVIZWlnaHQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjp0aWxlSGVpZ2h0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwodGlsZUhlaWdodCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFz
c0Rlc2NyaXB0b3I6OnNldFRpbGVIZWlnaHQoTlM6OlVJbnRlZ2VyIHRpbGVIZWlnaHQpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRp
bGVIZWlnaHRfKSwgdGlsZUhlaWdodCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZWZhdWx0UmFzdGVy
U2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNj
cmlwdG9yOjpkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChk
ZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlclBhc3NEZXNjcmlwdG9yOjpzZXREZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQoTlM6OlVJbnRl
Z2VyIGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVmYXVsdFJhc3RlclNhbXBsZUNvdW50
XyksIGRlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiByZW5kZXJU
YXJnZXRXaWR0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OnJlbmRlclRhcmdldFdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVuZGVyVGFy
Z2V0V2lkdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlw
dG9yOjpzZXRSZW5kZXJUYXJnZXRXaWR0aChOUzo6VUludGVnZXIgcmVuZGVyVGFyZ2V0V2lkdGgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFJlbmRlclRhcmdldFdpZHRoXyksIHJlbmRlclRhcmdldFdpZHRoKTsKK30KKworLy8gcHJv
cGVydHk6IHJlbmRlclRhcmdldEhlaWdodAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnJlbmRlclRhcmdldEhlaWdodCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHJlbmRlclRhcmdldEhlaWdodCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFJlbmRlclRhcmdldEhlaWdodChOUzo6VUludGVnZXIg
cmVuZGVyVGFyZ2V0SGVpZ2h0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRSZW5kZXJUYXJnZXRIZWlnaHRfKSwgcmVuZGVyVGFyZ2V0
SGVpZ2h0KTsKK30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVQb3NpdGlvbnM6Y291bnQ6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldFNhbXBsZVBvc2l0aW9u
cyhjb25zdCBNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5TOjpVSW50ZWdlciBjb3Vu
dCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0U2FtcGxlUG9zaXRpb25zX2NvdW50XyksIHBvc2l0aW9ucywgY291bnQpOworfQorCisv
LyBtZXRob2Q6IGdldFNhbXBsZVBvc2l0aW9uczpjb3VudDoKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpnZXRTYW1wbGVQb3NpdGlvbnMoTVRMOjpT
YW1wbGVQb3NpdGlvbiogcG9zaXRpb25zLCBOUzo6VUludGVnZXIgY291bnQpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGdldFNhbXBsZVBvc2l0aW9uc19jb3VudF8pLCBwb3NpdGlvbnMsIGNvdW50KTsKK30KKwor
Ly8gcHJvcGVydHk6IHJhc3Rlcml6YXRpb25SYXRlTWFwCitfTVRMX0lOTElORSBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTWFwKiBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpyYXN0ZXJpemF0aW9u
UmF0ZU1hcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpS
YXN0ZXJpemF0aW9uUmF0ZU1hcCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmFzdGVyaXphdGlv
blJhdGVNYXApKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlw
dG9yOjpzZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcChjb25zdCBNVEw6OlJhc3Rlcml6YXRpb25SYXRl
TWFwKiByYXN0ZXJpemF0aW9uUmF0ZU1hcCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmFzdGVyaXphdGlvblJhdGVNYXBfKSwgcmFz
dGVyaXphdGlvblJhdGVNYXApOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQnVmZmVyQXR0YWNo
bWVudHMKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlckF0
dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Kj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzYW1wbGVCdWZmZXJBdHRhY2htZW50cykpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5l
LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQaXBl
bGluZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQxZGI2ZjZiMzdlMDJmZTNiNmE2ZjA2ZGI5MzBhNmYyM2Nh
ZTFjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExSZW5kZXJQaXBlbGluZS5ocHAKQEAgLTAsMCArMSwxMjEyIEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExSZW5k
ZXJQaXBlbGluZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8v
CisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8v
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJC
cmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTFBpeGVsRm9ybWF0LmhwcCIKKyNp
bmNsdWRlICJNVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMUmVuZGVy
UGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKworbmFtZXNwYWNlIE1UTAor
eworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQmxlbmRGYWN0b3IpIHsKKyAgICBCbGVuZEZhY3Rv
clplcm8gPSAwLAorICAgIEJsZW5kRmFjdG9yT25lID0gMSwKKyAgICBCbGVuZEZhY3RvclNvdXJj
ZUNvbG9yID0gMiwKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzU291cmNlQ29sb3IgPSAzLAorICAg
IEJsZW5kRmFjdG9yU291cmNlQWxwaGEgPSA0LAorICAgIEJsZW5kRmFjdG9yT25lTWludXNTb3Vy
Y2VBbHBoYSA9IDUsCisgICAgQmxlbmRGYWN0b3JEZXN0aW5hdGlvbkNvbG9yID0gNiwKKyAgICBC
bGVuZEZhY3Rvck9uZU1pbnVzRGVzdGluYXRpb25Db2xvciA9IDcsCisgICAgQmxlbmRGYWN0b3JE
ZXN0aW5hdGlvbkFscGhhID0gOCwKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzRGVzdGluYXRpb25B
bHBoYSA9IDksCisgICAgQmxlbmRGYWN0b3JTb3VyY2VBbHBoYVNhdHVyYXRlZCA9IDEwLAorICAg
IEJsZW5kRmFjdG9yQmxlbmRDb2xvciA9IDExLAorICAgIEJsZW5kRmFjdG9yT25lTWludXNCbGVu
ZENvbG9yID0gMTIsCisgICAgQmxlbmRGYWN0b3JCbGVuZEFscGhhID0gMTMsCisgICAgQmxlbmRG
YWN0b3JPbmVNaW51c0JsZW5kQWxwaGEgPSAxNCwKKyAgICBCbGVuZEZhY3RvclNvdXJjZTFDb2xv
ciA9IDE1LAorICAgIEJsZW5kRmFjdG9yT25lTWludXNTb3VyY2UxQ29sb3IgPSAxNiwKKyAgICBC
bGVuZEZhY3RvclNvdXJjZTFBbHBoYSA9IDE3LAorICAgIEJsZW5kRmFjdG9yT25lTWludXNTb3Vy
Y2UxQWxwaGEgPSAxOCwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIEJsZW5kT3BlcmF0
aW9uKSB7CisgICAgQmxlbmRPcGVyYXRpb25BZGQgPSAwLAorICAgIEJsZW5kT3BlcmF0aW9uU3Vi
dHJhY3QgPSAxLAorICAgIEJsZW5kT3BlcmF0aW9uUmV2ZXJzZVN1YnRyYWN0ID0gMiwKKyAgICBC
bGVuZE9wZXJhdGlvbk1pbiA9IDMsCisgICAgQmxlbmRPcGVyYXRpb25NYXggPSA0LAorfTsKKwor
X01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgQ29sb3JXcml0ZU1hc2spIHsKKyAgICBDb2xvcldy
aXRlTWFza05vbmUgPSAwLAorICAgIENvbG9yV3JpdGVNYXNrQWxwaGEgPSAxLAorICAgIENvbG9y
V3JpdGVNYXNrQmx1ZSA9IDIsCisgICAgQ29sb3JXcml0ZU1hc2tHcmVlbiA9IDQsCisgICAgQ29s
b3JXcml0ZU1hc2tSZWQgPSA4LAorICAgIENvbG9yV3JpdGVNYXNrQWxsID0gMTUsCit9OworCitf
TVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQcmltaXRpdmVUb3BvbG9neUNsYXNzKSB7CisgICAgUHJp
bWl0aXZlVG9wb2xvZ3lDbGFzc1Vuc3BlY2lmaWVkID0gMCwKKyAgICBQcmltaXRpdmVUb3BvbG9n
eUNsYXNzUG9pbnQgPSAxLAorICAgIFByaW1pdGl2ZVRvcG9sb2d5Q2xhc3NMaW5lID0gMiwKKyAg
ICBQcmltaXRpdmVUb3BvbG9neUNsYXNzVHJpYW5nbGUgPSAzLAorfTsKKworX01UTF9FTlVNKE5T
OjpVSW50ZWdlciwgVGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSkgeworICAgIFRlc3NlbGxhdGlv
blBhcnRpdGlvbk1vZGVQb3cyID0gMCwKKyAgICBUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlSW50
ZWdlciA9IDEsCisgICAgVGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZUZyYWN0aW9uYWxPZGQgPSAy
LAorICAgIFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVGcmFjdGlvbmFsRXZlbiA9IDMsCit9Owor
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24p
IHsKKyAgICBUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb25Db25zdGFudCA9IDAsCisgICAg
VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uUGVyUGF0Y2ggPSAxLAorICAgIFRlc3NlbGxh
dGlvbkZhY3RvclN0ZXBGdW5jdGlvblBlckluc3RhbmNlID0gMiwKKyAgICBUZXNzZWxsYXRpb25G
YWN0b3JTdGVwRnVuY3Rpb25QZXJQYXRjaEFuZFBlckluc3RhbmNlID0gMywKK307CisKK19NVExf
RU5VTShOUzo6VUludGVnZXIsIFRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCkgeworICAgIFRlc3Nl
bGxhdGlvbkZhY3RvckZvcm1hdEhhbGYgPSAwLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdl
ciwgVGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlKSB7CisgICAgVGVzc2VsbGF0aW9u
Q29udHJvbFBvaW50SW5kZXhUeXBlTm9uZSA9IDAsCisgICAgVGVzc2VsbGF0aW9uQ29udHJvbFBv
aW50SW5kZXhUeXBlVUludDE2ID0gMSwKKyAgICBUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRl
eFR5cGVVSW50MzIgPSAyLAorfTsKKworY2xhc3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisg
ICAgTVRMOjpQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJsZW5kaW5nRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJsZW5kaW5nRW5h
YmxlZChib29sIGJsZW5kaW5nRW5hYmxlZCk7CisKKyAgICBNVEw6OkJsZW5kRmFjdG9yICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VSR0JCbGVuZEZhY3RvcigpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFNvdXJjZVJHQkJsZW5kRmFjdG9yKE1UTDo6QmxlbmRGYWN0b3Igc291cmNlUkdC
QmxlbmRGYWN0b3IpOworCisgICAgTVRMOjpCbGVuZEZhY3RvciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBkZXN0aW5hdGlvblJH
QkJsZW5kRmFjdG9yKTsKKworICAgIE1UTDo6QmxlbmRPcGVyYXRpb24gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJnYkJsZW5kT3BlcmF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmdiQmxl
bmRPcGVyYXRpb24oTVRMOjpCbGVuZE9wZXJhdGlvbiByZ2JCbGVuZE9wZXJhdGlvbik7CisKKyAg
ICBNVEw6OkJsZW5kRmFjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
b3VyY2VBbHBoYUJsZW5kRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U291cmNlQWxwaGFCbGVuZEZhY3Rv
cihNVEw6OkJsZW5kRmFjdG9yIHNvdXJjZUFscGhhQmxlbmRGYWN0b3IpOworCisgICAgTVRMOjpC
bGVuZEZhY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRp
b25BbHBoYUJsZW5kRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVzdGluYXRpb25BbHBoYUJsZW5kRmFj
dG9yKE1UTDo6QmxlbmRGYWN0b3IgZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKTsKKworICAg
IE1UTDo6QmxlbmRPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFs
cGhhQmxlbmRPcGVyYXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBbHBoYUJsZW5kT3BlcmF0aW9uKE1UTDo6
QmxlbmRPcGVyYXRpb24gYWxwaGFCbGVuZE9wZXJhdGlvbik7CisKKyAgICBNVEw6OkNvbG9yV3Jp
dGVNYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZU1hc2soKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRXcml0ZU1hc2soTVRMOjpDb2xvcldyaXRlTWFzayB3cml0ZU1hc2spOworfTsKKwor
Y2xhc3MgUmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxS
ZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJl
bmRlclBpcGVsaW5lUmVmbGVjdGlvbiogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVs
aW5lUmVmbGVjdGlvbiogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlcnRleEFyZ3VtZW50cygpIGNvbnN0OworCisgICAgTlM6OkFy
cmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRBcmd1bWVudHMoKSBjb25z
dDsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVBcmd1
bWVudHMoKSBjb25zdDsKK307CisKK2NsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IHB1
YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogICAgICAgICAgICAgIGFs
bG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqICAgICAgICAgICAg
ICAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJp
bmcqIGxhYmVsKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ZXJ0ZXhGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWZXJ0ZXhGdW5jdGlvbihj
b25zdCBjbGFzcyBGdW5jdGlvbiogdmVydGV4RnVuY3Rpb24pOworCisgICAgY2xhc3MgRnVuY3Rp
b24qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50RnVuY3Rpb24o
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0RnJhZ21lbnRGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbiogZnJhZ21l
bnRGdW5jdGlvbik7CisKKyAgICBjbGFzcyBWZXJ0ZXhEZXNjcmlwdG9yKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmVydGV4RGVzY3JpcHRvcigpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWZXJ0ZXhEZXNjcmlw
dG9yKGNvbnN0IGNsYXNzIFZlcnRleERlc2NyaXB0b3IqIHZlcnRleERlc2NyaXB0b3IpOworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh
bXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFNhbXBsZUNvdW50KE5TOjpVSW50ZWdlciBzYW1wbGVDb3Vu
dCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmFzdGVyU2FtcGxlQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmFzdGVyU2FtcGxlQ291bnQoTlM6
OlVJbnRlZ2VyIHJhc3RlclNhbXBsZUNvdW50KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYVRvQ292ZXJhZ2VFbmFibGVkKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoYm9vbCBhbHBoYVRvQ292ZXJhZ2VFbmFi
bGVkKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbHBoYVRvT25lRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBbHBoYVRvT25lRW5hYmxlZChi
b29sIGFscGhhVG9PbmVFbmFibGVkKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByYXN0ZXJpemF0aW9uRW5hYmxlZCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRSYXN0ZXJpemF0aW9uRW5hYmxlZChib29sIHJhc3Rlcml6YXRpb25FbmFibGVkKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhW
ZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4VmVydGV4QW1wbGlmaWNhdGlv
bkNvdW50KE5TOjpVSW50ZWdlciBtYXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQpOworCisgICAg
Y2xhc3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGNvbG9y
QXR0YWNobWVudHMoKSBjb25zdDsKKworICAgIE1UTDo6UGl4ZWxGb3JtYXQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IGRlcHRoQXR0
YWNobWVudFBpeGVsRm9ybWF0KTsKKworICAgIE1UTDo6UGl4ZWxGb3JtYXQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBzdGVu
Y2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KTsKKworICAgIE1UTDo6UHJpbWl0aXZlVG9wb2xvZ3lD
bGFzcyAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFByaW1pdGl2ZVRvcG9sb2d5KCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldElucHV0UHJpbWl0aXZlVG9wb2xvZ3koTVRMOjpQcmltaXRpdmVUb3BvbG9neUNsYXNz
IGlucHV0UHJpbWl0aXZlVG9wb2xvZ3kpOworCisgICAgTVRMOjpUZXNzZWxsYXRpb25QYXJ0aXRp
b25Nb2RlICAgICAgICAgICAgICAgICAgICAgIHRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZShNVEw6OlRlc3NlbGxhdGlvblBhcnRp
dGlvbk1vZGUgdGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSk7CisKKyAgICBOUzo6VUludGVnZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VGVzc2VsbGF0aW9uRmFj
dG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1heFRlc3NlbGxhdGlvbkZhY3RvcihOUzo6VUludGVnZXIgbWF4VGVz
c2VsbGF0aW9uRmFjdG9yKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkKGJvb2wgdGVzc2VsbGF0aW9uRmFj
dG9yU2NhbGVFbmFibGVkKTsKKworICAgIE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0ICAg
ICAgICAgICAgICAgICAgICAgICB0ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0IHRl
c3NlbGxhdGlvbkZhY3RvckZvcm1hdCk7CisKKyAgICBNVEw6OlRlc3NlbGxhdGlvbkNvbnRyb2xQ
b2ludEluZGV4VHlwZSAgICAgICAgICAgICAgdGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhU
eXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZShNVEw6OlRl
c3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSB0ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJ
bmRleFR5cGUpOworCisgICAgTVRMOjpUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24gICAg
ICAgICAgICAgICAgIHRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRU
ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24oTVRMOjpUZXNzZWxsYXRpb25GYWN0b3JTdGVw
RnVuY3Rpb24gdGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKTsKKworICAgIE1UTDo6V2lu
ZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXNzZWxsYXRpb25P
dXRwdXRXaW5kaW5nT3JkZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09y
ZGVyKE1UTDo6V2luZGluZyB0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIpOworCisgICAg
Y2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqICAgICAgICAgICAgICAgIHZlcnRl
eEJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGNsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFy
cmF5KiAgICAgICAgICAgICAgICBmcmFnbWVudEJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGJvb2wg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0SW5k
aXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVm
ZmVycyhib29sIHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKTsKKworICAgIE5TOjpBcnJh
eSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlBcmNoaXZl
cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hp
dmVzKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4UHJlbG9h
ZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogdmVydGV4UHJlbG9hZGVkTGlicmFyaWVzKTsK
KworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGcmFnbWVudFByZWxvYWRl
ZExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIGZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKTsK
KworICAgIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4TGlua2VkRnVuY3Rpb25z
KGNvbnN0IGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogdmVydGV4TGlua2VkRnVuY3Rpb25zKTsKKwor
ICAgIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
cmFnbWVudExpbmtlZEZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGcmFnbWVudExpbmtlZEZ1bmN0aW9u
cyhjb25zdCBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqIGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKTsK
KworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1cHBvcnRB
ZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5
RnVuY3Rpb25zKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFk
ZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRNYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4VmVydGV4
Q2FsbFN0YWNrRGVwdGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4RnJhZ21lbnRDYWxsU3Rh
Y2tEZXB0aCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzZXQoKTsKK307CisKK2NsYXNzIFJlbmRlclBpcGVsaW5lRnVuY3Rpb25z
RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBpcGVsaW5lRnVu
Y3Rpb25zRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVsaW5lRnVu
Y3Rpb25zRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpBcnJheSogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5j
dGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRWZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpB
cnJheSogdmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyk7CisKKyAgICBOUzo6QXJyYXkq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudEFkZGl0aW9uYWxC
aW5hcnlGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRGcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMo
Y29uc3QgTlM6OkFycmF5KiBmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpOworCisg
ICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZUFk
ZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0
aW9ucyhjb25zdCBOUzo6QXJyYXkqIHRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKTsKK307
CisKK2NsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJl
bmRlclBpcGVsaW5lU3RhdGU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICAgICAgICAg
ICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNzIERldmljZSogICAgICAgICAg
ICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICAgICAgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxl
U2l6ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgaW1h
Z2VibG9ja1NhbXBsZUxlbmd0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICAgICAgICAgICAgaW1hZ2VibG9ja01lbW9yeUxlbmd0aChNVEw6OlNpemUgaW1hZ2VibG9ja0Rp
bWVuc2lvbnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9y
dEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdDsKKworICAgIGNsYXNzIEZ1bmN0aW9uSGFu
ZGxlKiAgICAgICAgICAgIGZ1bmN0aW9uSGFuZGxlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBmdW5j
dGlvbiwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2UpOworCisgICAgY2xhc3MgVmlzaWJsZUZ1bmN0
aW9uVGFibGUqICAgICAgbmV3VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3MgVmlzaWJs
ZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlJlbmRlclN0YWdlcyBz
dGFnZSk7CisKKyAgICBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBuZXdJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVE
ZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZSk7CisKKyAgICBj
bGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiAgICAgICBuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNv
bnN0IGNsYXNzIFJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvciogYWRkaXRpb25hbEJp
bmFyeUZ1bmN0aW9ucywgTlM6OkVycm9yKiogZXJyb3IpOworfTsKKworY2xhc3MgUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5j
aW5nPFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5PgoreworcHVi
bGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgUmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6
OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFz
cyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5T
OjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworfTsKKworY2xhc3MgVGlsZVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxUaWxlUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0
YXRpYyBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6UGl4ZWxGb3JtYXQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbEZvcm1hdCgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KTsKK307CisKK2Ns
YXNzIFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6IHB1
YmxpYyBOUzo6UmVmZXJlbmNpbmc8VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBUaWxlUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFz
cyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAg
ICBpbml0KCk7CisKKyAgICBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFj
aG1lbnRJbmRleCk7Cit9OworCitjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDog
cHVibGljIE5TOjpDb3B5aW5nPFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqICAgICAg
ICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciogICAgICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisKKyAgICBjbGFzcyBGdW5jdGlvbiog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVGdW5jdGlvbigpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0VGlsZUZ1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiB0aWxlRnVuY3Rp
b24pOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByYXN0ZXJTYW1wbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmFzdGVyU2FtcGxl
Q291bnQoTlM6OlVJbnRlZ2VyIHJhc3RlclNhbXBsZUNvdW50KTsKKworICAgIGNsYXNzIFRpbGVS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogY29sb3JBdHRhY2ht
ZW50cygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZShib29sIHRocmVhZGdyb3Vw
U2l6ZU1hdGNoZXNUaWxlU2l6ZSk7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0
b3JBcnJheSogICAgICAgICAgICAgICAgICAgIHRpbGVCdWZmZXJzKCkgY29uc3Q7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
eFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhUb3RhbFRocmVh
ZHNQZXJUaHJlYWRncm91cChOUzo6VUludGVnZXIgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3Jv
dXApOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiaW5hcnlBcmNoaXZlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QmluYXJ5QXJjaGl2ZXMo
Y29uc3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZlcyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWxvYWRlZExpYnJhcmll
cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogcHJl
bG9hZGVkTGlicmFyaWVzKTsKKworICAgIGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGlua2VkRnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRM
aW5rZWRGdW5jdGlvbnMoY29uc3QgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiBsaW5rZWRGdW5jdGlv
bnMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRT
dXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0
aW9ucyk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1heENhbGxTdGFja0RlcHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhDYWxsU3Rh
Y2tEZXB0aChOUzo6VUludGVnZXIgbWF4Q2FsbFN0YWNrRGVwdGgpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpOwor
fTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8
TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8v
IHByb3BlcnR5OiBwaXhlbEZvcm1hdAorX01UTF9JTkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBNVEw6
OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cGl4ZWxGb3JtYXQoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3JtYXQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGl4ZWxGb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UGl4
ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UGl4ZWxGb3JtYXRfKSwg
cGl4ZWxGb3JtYXQpOworfQorCisvLyBwcm9wZXJ0eTogYmxlbmRpbmdFbmFibGVkCitfTVRMX0lO
TElORSBib29sIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpi
bGVuZGluZ0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNCbGVuZGluZ0VuYWJsZWQpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2V0QmxlbmRpbmdFbmFibGVkKGJvb2wgYmxlbmRpbmdFbmFibGVkKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCbGVuZGlu
Z0VuYWJsZWRfKSwgYmxlbmRpbmdFbmFibGVkKTsKK30KKworLy8gcHJvcGVydHk6IHNvdXJjZVJH
QkJsZW5kRmFjdG9yCitfTVRMX0lOTElORSBNVEw6OkJsZW5kRmFjdG9yIE1UTDo6UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzb3VyY2VSR0JCbGVuZEZhY3RvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGVuZEZhY3Rvcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzb3VyY2VSR0JCbGVuZEZhY3RvcikpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
OjpzZXRTb3VyY2VSR0JCbGVuZEZhY3RvcihNVEw6OkJsZW5kRmFjdG9yIHNvdXJjZVJHQkJsZW5k
RmFjdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRTb3VyY2VSR0JCbGVuZEZhY3Rvcl8pLCBzb3VyY2VSR0JCbGVuZEZhY3Rvcik7
Cit9CisKKy8vIHByb3BlcnR5OiBkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yCitfTVRMX0lOTElO
RSBNVEw6OkJsZW5kRmFjdG9yIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjpkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsZW5kRmFjdG9yPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0RGVzdGluYXRp
b25SR0JCbGVuZEZhY3RvcihNVEw6OkJsZW5kRmFjdG9yIGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0
b3IpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldERlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3JfKSwgZGVzdGluYXRpb25SR0JCbGVuZEZh
Y3Rvcik7Cit9CisKKy8vIHByb3BlcnR5OiByZ2JCbGVuZE9wZXJhdGlvbgorX01UTF9JTkxJTkUg
TVRMOjpCbGVuZE9wZXJhdGlvbiBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcjo6cmdiQmxlbmRPcGVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6QmxlbmRPcGVyYXRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
cmdiQmxlbmRPcGVyYXRpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UmdiQmxlbmRPcGVyYXRpb24oTVRM
OjpCbGVuZE9wZXJhdGlvbiByZ2JCbGVuZE9wZXJhdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmdiQmxlbmRPcGVyYXRpb25f
KSwgcmdiQmxlbmRPcGVyYXRpb24pOworfQorCisvLyBwcm9wZXJ0eTogc291cmNlQWxwaGFCbGVu
ZEZhY3RvcgorX01UTF9JTkxJTkUgTVRMOjpCbGVuZEZhY3RvciBNVEw6OlJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c291cmNlQWxwaGFCbGVuZEZhY3RvcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGVuZEZhY3Rvcj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzb3VyY2VBbHBoYUJsZW5kRmFjdG9yKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldFNvdXJjZUFscGhhQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBzb3VyY2VBbHBoYUJs
ZW5kRmFjdG9yKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yXyksIHNvdXJjZUFscGhhQmxlbmRG
YWN0b3IpOworfQorCisvLyBwcm9wZXJ0eTogZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yCitf
TVRMX0lOTElORSBNVEw6OkJsZW5kRmFjdG9yIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yOjpkZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxlbmRGYWN0b3I+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldERlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvcihNVEw6OkJsZW5kRmFjdG9yIGRlc3RpbmF0
aW9uQWxwaGFCbGVuZEZhY3RvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yXyksIGRl
c3RpbmF0aW9uQWxwaGFCbGVuZEZhY3Rvcik7Cit9CisKKy8vIHByb3BlcnR5OiBhbHBoYUJsZW5k
T3BlcmF0aW9uCitfTVRMX0lOTElORSBNVEw6OkJsZW5kT3BlcmF0aW9uIE1UTDo6UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbHBoYUJsZW5kT3BlcmF0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsZW5kT3BlcmF0aW9u
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFscGhhQmxlbmRPcGVyYXRpb24pKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cjo6c2V0QWxwaGFCbGVuZE9wZXJhdGlvbihNVEw6OkJsZW5kT3BlcmF0aW9uIGFscGhhQmxlbmRP
cGVyYXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEFscGhhQmxlbmRPcGVyYXRpb25fKSwgYWxwaGFCbGVuZE9wZXJhdGlvbik7
Cit9CisKKy8vIHByb3BlcnR5OiB3cml0ZU1hc2sKK19NVExfSU5MSU5FIE1UTDo6Q29sb3JXcml0
ZU1hc2sgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OndyaXRl
TWFzaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb2xv
cldyaXRlTWFzaz4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3cml0ZU1hc2spKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cjo6c2V0V3JpdGVNYXNrKE1UTDo6Q29sb3JXcml0ZU1hc2sgd3JpdGVNYXNrKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRXcml0ZU1h
c2tfKSwgd3JpdGVNYXNrKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5M
SU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uKiBNVEw6OlJlbmRlclBpcGVsaW5lUmVm
bGVjdGlvbjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJl
bmRlclBpcGVsaW5lUmVmbGVjdGlvbj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQaXBlbGlu
ZVJlZmxlY3Rpb24pKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJl
bmRlclBpcGVsaW5lUmVmbGVjdGlvbiogTVRMOjpSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb246Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVyUGlwZWxpbmVS
ZWZsZWN0aW9uPigpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4QXJndW1lbnRzCitfTVRMX0lO
TElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uOjp2ZXJ0ZXhBcmd1
bWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJh
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodmVydGV4QXJndW1lbnRzKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBmcmFnbWVudEFyZ3VtZW50cworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlJl
bmRlclBpcGVsaW5lUmVmbGVjdGlvbjo6ZnJhZ21lbnRBcmd1bWVudHMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoZnJhZ21lbnRBcmd1bWVudHMpKTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVBcmd1bWVu
dHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb246
OnRpbGVBcmd1bWVudHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUFyZ3VtZW50cykpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikpOworfQorCisv
LyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+KCk7Cit9CisKKy8v
IHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRMYWJl
bChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBw
cm9wZXJ0eTogdmVydGV4RnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb24qIE1UTDo6
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhGdW5jdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodmVydGV4RnVuY3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VmVydGV4RnVuY3Rpb24oY29uc3QgTVRMOjpGdW5j
dGlvbiogdmVydGV4RnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEZ1bmN0aW9uXyksIHZlcnRleEZ1bmN0aW9u
KTsKK30KKworLy8gcHJvcGVydHk6IGZyYWdtZW50RnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6
RnVuY3Rpb24qIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpmcmFnbWVudEZ1bmN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9u
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudEZ1bmN0aW9uKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEZyYWdtZW50RnVu
Y3Rpb24oY29uc3QgTVRMOjpGdW5jdGlvbiogZnJhZ21lbnRGdW5jdGlvbikKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRG
dW5jdGlvbl8pLCBmcmFnbWVudEZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleERl
c2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnZlcnRleERlc2NyaXB0b3IoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmVydGV4RGVzY3JpcHRvcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodmVydGV4RGVzY3JpcHRvcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhEZXNjcmlwdG9yKGNvbnN0IE1U
TDo6VmVydGV4RGVzY3JpcHRvciogdmVydGV4RGVzY3JpcHRvcikKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VmVydGV4RGVzY3JpcHRv
cl8pLCB2ZXJ0ZXhEZXNjcmlwdG9yKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNvdW50Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNh
bXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnQpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U2FtcGxlQ291
bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVDb3VudF8pLCBzYW1wbGVDb3Vu
dCk7Cit9CisKKy8vIHByb3BlcnR5OiByYXN0ZXJTYW1wbGVDb3VudAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpyYXN0ZXJTYW1wbGVDb3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJhc3RlclNhbXBsZUNvdW50KSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFJhc3RlclNhbXBs
ZUNvdW50KE5TOjpVSW50ZWdlciByYXN0ZXJTYW1wbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmFzdGVyU2FtcGxlQ291
bnRfKSwgcmFzdGVyU2FtcGxlQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogYWxwaGFUb0NvdmVy
YWdlRW5hYmxlZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6YWxwaGFUb0NvdmVyYWdlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0FscGhhVG9Db3ZlcmFn
ZUVuYWJsZWQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6c2V0QWxwaGFUb0NvdmVyYWdlRW5hYmxlZChib29sIGFscGhhVG9Db3ZlcmFnZUVu
YWJsZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldEFscGhhVG9Db3ZlcmFnZUVuYWJsZWRfKSwgYWxwaGFUb0NvdmVyYWdlRW5hYmxl
ZCk7Cit9CisKKy8vIHByb3BlcnR5OiBhbHBoYVRvT25lRW5hYmxlZAorX01UTF9JTkxJTkUgYm9v
bCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6YWxwaGFUb09uZUVuYWJsZWQoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoaXNBbHBoYVRvT25lRW5hYmxlZCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRBbHBoYVRvT25lRW5hYmxlZChib29sIGFs
cGhhVG9PbmVFbmFibGVkKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRBbHBoYVRvT25lRW5hYmxlZF8pLCBhbHBoYVRvT25lRW5hYmxl
ZCk7Cit9CisKKy8vIHByb3BlcnR5OiByYXN0ZXJpemF0aW9uRW5hYmxlZAorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmFzdGVyaXphdGlvbkVuYWJsZWQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaXNSYXN0ZXJpemF0aW9uRW5hYmxlZCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRSYXN0ZXJpemF0aW9uRW5h
YmxlZChib29sIHJhc3Rlcml6YXRpb25FbmFibGVkKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSYXN0ZXJpemF0aW9uRW5hYmxlZF8p
LCByYXN0ZXJpemF0aW9uRW5hYmxlZCk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhWZXJ0ZXhBbXBs
aWZpY2F0aW9uQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6bWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldE1heFZlcnRleEFtcGxpZmlj
YXRpb25Db3VudChOUzo6VUludGVnZXIgbWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRN
YXhWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfKSwgbWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50
KTsKK30KKworLy8gcHJvcGVydHk6IGNvbG9yQXR0YWNobWVudHMKK19NVExfSU5MSU5FIE1UTDo6
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb2xvckF0dGFjaG1lbnRz
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdAorX01UTF9J
TkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZGVw
dGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3JtYXQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhB
dHRhY2htZW50UGl4ZWxGb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoTVRMOjpQ
aXhlbEZvcm1hdCBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhBdHRhY2htZW50
UGl4ZWxGb3JtYXRfKSwgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQpOworfQorCisvLyBwcm9w
ZXJ0eTogc3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZvcm1hdAorX01UTF9JTkxJTkUgTVRMOjpQaXhl
bEZvcm1hdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c3RlbmNpbEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpQaXhlbEZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVuY2lsQXR0YWNobWVudFBp
eGVsRm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldFN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1h
dCBzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVuY2lsQXR0YWNobWVudFBpeGVs
Rm9ybWF0XyksIHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQpOworfQorCisvLyBwcm9wZXJ0
eTogaW5wdXRQcmltaXRpdmVUb3BvbG9neQorX01UTF9JTkxJTkUgTVRMOjpQcmltaXRpdmVUb3Bv
bG9neUNsYXNzIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjppbnB1dFByaW1pdGl2ZVRv
cG9sb2d5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBy
aW1pdGl2ZVRvcG9sb2d5Q2xhc3M+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5wdXRQcmltaXRp
dmVUb3BvbG9neSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjpzZXRJbnB1dFByaW1pdGl2ZVRvcG9sb2d5KE1UTDo6UHJpbWl0aXZlVG9wb2xv
Z3lDbGFzcyBpbnB1dFByaW1pdGl2ZVRvcG9sb2d5KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbnB1dFByaW1pdGl2ZVRvcG9sb2d5
XyksIGlucHV0UHJpbWl0aXZlVG9wb2xvZ3kpOworfQorCisvLyBwcm9wZXJ0eTogdGVzc2VsbGF0
aW9uUGFydGl0aW9uTW9kZQorX01UTF9JTkxJTkUgTVRMOjpUZXNzZWxsYXRpb25QYXJ0aXRpb25N
b2RlIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0ZXNzZWxsYXRpb25QYXJ0aXRpb25N
b2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRlc3Nl
bGxhdGlvblBhcnRpdGlvbk1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGVzc2VsbGF0aW9u
UGFydGl0aW9uTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlKE1UTDo6VGVzc2VsbGF0
aW9uUGFydGl0aW9uTW9kZSB0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXNzZWxsYXRp
b25QYXJ0aXRpb25Nb2RlXyksIHRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUpOworfQorCisvLyBw
cm9wZXJ0eTogbWF4VGVzc2VsbGF0aW9uRmFjdG9yCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6Om1heFRlc3NlbGxhdGlvbkZhY3RvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG1heFRlc3NlbGxhdGlvbkZhY3RvcikpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhUZXNzZWxsYXRp
b25GYWN0b3IoTlM6OlVJbnRlZ2VyIG1heFRlc3NlbGxhdGlvbkZhY3RvcikKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4VGVzc2Vs
bGF0aW9uRmFjdG9yXyksIG1heFRlc3NlbGxhdGlvbkZhY3Rvcik7Cit9CisKKy8vIHByb3BlcnR5
OiB0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChpc1Rlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxs
YXRpb25GYWN0b3JTY2FsZUVuYWJsZWQoYm9vbCB0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJs
ZWQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZF8pLCB0ZXNzZWxsYXRpb25GYWN0
b3JTY2FsZUVuYWJsZWQpOworfQorCisvLyBwcm9wZXJ0eTogdGVzc2VsbGF0aW9uRmFjdG9yRm9y
bWF0CitfTVRMX0lOTElORSBNVEw6OlRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCBNVEw6OlJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRlc3NlbGxhdGlvbkZhY3RvckZv
cm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0
VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0IHRl
c3NlbGxhdGlvbkZhY3RvckZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0XyksIHRl
c3NlbGxhdGlvbkZhY3RvckZvcm1hdCk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXNzZWxsYXRpb25D
b250cm9sUG9pbnRJbmRleFR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGVzc2VsbGF0aW9uQ29udHJv
bFBvaW50SW5kZXhUeXBlIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0ZXNzZWxsYXRp
b25Db250cm9sUG9pbnRJbmRleFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNz
ZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUoTVRMOjpUZXNzZWxsYXRpb25Db250cm9sUG9p
bnRJbmRleFR5cGUgdGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXNzZWxs
YXRpb25Db250cm9sUG9pbnRJbmRleFR5cGVfKSwgdGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5k
ZXhUeXBlKTsKK30KKworLy8gcHJvcGVydHk6IHRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlv
bgorX01UTF9JTkxJTkUgTVRMOjpUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24gTVRMOjpS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXNzZWxsYXRp
b25GYWN0b3JTdGVwRnVuY3Rpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGVzc2VsbGF0aW9u
RmFjdG9yU3RlcEZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnNldFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbihNVEw6
OlRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbiB0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVu
Y3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbl8pLCB0ZXNzZWxsYXRpb25G
YWN0b3JTdGVwRnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogdGVzc2VsbGF0aW9uT3V0cHV0
V2luZGluZ09yZGVyCitfTVRMX0lOTElORSBNVEw6OldpbmRpbmcgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OnRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpXaW5kaW5nPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcikpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRpb25P
dXRwdXRXaW5kaW5nT3JkZXIoTVRMOjpXaW5kaW5nIHRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdP
cmRlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0VGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyXyksIHRlc3NlbGxhdGlvbk91
dHB1dFdpbmRpbmdPcmRlcik7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhCdWZmZXJzCitfTVRM
X0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcjo6dmVydGV4QnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodmVydGV4QnVmZmVycykpOworfQorCisvLyBwcm9wZXJ0eTog
ZnJhZ21lbnRCdWZmZXJzCitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRv
ckFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZnJhZ21lbnRCdWZmZXJzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpcGVsaW5lQnVm
ZmVyRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudEJ1ZmZl
cnMpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzCitf
TVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0SW5k
aXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEluZGlyZWN0Q29t
bWFuZEJ1ZmZlcnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6c2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMoYm9vbCBzdXBwb3J0
SW5kaXJlY3RDb21tYW5kQnVmZmVycykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnNf
KSwgc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpOworfQorCisvLyBwcm9wZXJ0eTogYmlu
YXJ5QXJjaGl2ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OmJpbmFyeUFyY2hpdmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJpbmFyeUFyY2hp
dmVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I6OnNldEJpbmFyeUFyY2hpdmVzKGNvbnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dEJpbmFyeUFyY2hpdmVzXyksIGJpbmFyeUFyY2hpdmVzKTsKK30KKworLy8gcHJvcGVydHk6IHZl
cnRleFByZWxvYWRlZExpYnJhcmllcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6dmVydGV4UHJlbG9hZGVkTGlicmFyaWVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHZlcnRleFByZWxvYWRlZExpYnJhcmllcykpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhQcmVsb2FkZWRMaWJy
YXJpZXMoY29uc3QgTlM6OkFycmF5KiB2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRl
eFByZWxvYWRlZExpYnJhcmllc18pLCB2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMpOworfQorCisv
LyBwcm9wZXJ0eTogZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpB
cnJheSogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmZyYWdtZW50UHJlbG9hZGVkTGli
cmFyaWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJy
YXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNl
dEZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogZnJhZ21lbnRQcmVs
b2FkZWRMaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzXyksIGZyYWdtZW50
UHJlbG9hZGVkTGlicmFyaWVzKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleExpbmtlZEZ1bmN0
aW9ucworX01UTF9JTkxJTkUgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjp2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlua2VkRnVuY3Rpb25zKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VmVydGV4TGlua2VkRnVuY3Rpb25z
KGNvbnN0IE1UTDo6TGlua2VkRnVuY3Rpb25zKiB2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZl
cnRleExpbmtlZEZ1bmN0aW9uc18pLCB2ZXJ0ZXhMaW5rZWRGdW5jdGlvbnMpOworfQorCisvLyBw
cm9wZXJ0eTogZnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6TGlua2Vk
RnVuY3Rpb25zKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZnJhZ21lbnRMaW5rZWRG
dW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
TGlua2VkRnVuY3Rpb25zKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudExpbmtlZEZ1
bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpzZXRGcmFnbWVudExpbmtlZEZ1bmN0aW9ucyhjb25zdCBNVEw6OkxpbmtlZEZ1bmN0
aW9ucyogZnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50TGlua2VkRnVuY3Rpb25z
XyksIGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRB
ZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3Vw
cG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdWZXJ0ZXhC
aW5hcnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN1cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnNfKSwg
c3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBz
dXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1
bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVu
Y3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OnNldFN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucyhib29sIHN1cHBv
cnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEFkZGluZ0ZyYWdtZW50
QmluYXJ5RnVuY3Rpb25zXyksIHN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucyk7
Cit9CisKKy8vIHByb3BlcnR5OiBtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhWZXJ0ZXhDYWxs
U3RhY2tEZXB0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFZlcnRleENhbGxTdGFja0RlcHRo
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OnNldE1heFZlcnRleENhbGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhWZXJ0ZXhDYWxsU3Rh
Y2tEZXB0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0TWF4VmVydGV4Q2FsbFN0YWNrRGVwdGhfKSwgbWF4VmVydGV4Q2FsbFN0YWNr
RGVwdGgpOworfQorCisvLyBwcm9wZXJ0eTogbWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhG
cmFnbWVudENhbGxTdGFja0RlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4RnJhZ21lbnRD
YWxsU3RhY2tEZXB0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBt
YXhGcmFnbWVudENhbGxTdGFja0RlcHRoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhGcmFnbWVudENhbGxTdGFja0RlcHRoXyks
IG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpyZXNldCgpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0
KSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRl
clBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvciogTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9u
c0Rlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRM
UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5p
dAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3IqIE1U
TDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRv
cj4oKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMK
K19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2Ny
aXB0b3I6OnZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwodmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhBZGRp
dGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogdmVydGV4QWRkaXRpb25hbEJp
bmFyeUZ1bmN0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0VmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uc18pLCB2ZXJ0
ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IGZyYWdtZW50
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlJl
bmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6ZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5
RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1
bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5j
dGlvbnNEZXNjcmlwdG9yOjpzZXRGcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMoY29u
c3QgTlM6OkFycmF5KiBmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdt
ZW50QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uc18pLCBmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlG
dW5jdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rl
c2NyaXB0b3I6OnRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I6OnNldFRpbGVBZGRpdGlv
bmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogdGlsZUFkZGl0aW9uYWxCaW5hcnlG
dW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zXyksIHRpbGVBZGRpdGlv
bmFsQmluYXJ5RnVuY3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElO
RSBOUzo6U3RyaW5nKiBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OmxhYmVsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElO
RSBNVEw6OkRldmljZSogTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpkZXZpY2UoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IG1heFRvdGFsVGhyZWFk
c1BlclRocmVhZGdyb3VwCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBl
bGluZVN0YXRlOjptYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKSk7Cit9CisKKy8vIHByb3BlcnR5
OiB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpS
ZW5kZXJQaXBlbGluZVN0YXRlOjp0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpSZW5kZXJQaXBlbGluZVN0YXRlOjppbWFnZWJsb2NrU2FtcGxlTGVuZ3RoKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaW1hZ2VibG9ja1NhbXBsZUxlbmd0aCkpOworfQorCisvLyBtZXRob2Q6IGlt
YWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zOgorX01UTF9JTkxJTkUgTlM6OlVJbnRl
Z2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6aW1hZ2VibG9ja01lbW9yeUxlbmd0aChNVEw6
OlNpemUgaW1hZ2VibG9ja0RpbWVuc2lvbnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGltYWdlYmxvY2tNZW1v
cnlMZW5ndGhGb3JEaW1lbnNpb25zXyksIGltYWdlYmxvY2tEaW1lbnNpb25zKTsKK30KKworLy8g
cHJvcGVydHk6IHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzCitfTVRMX0lOTElORSBib29s
IE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6c3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKSk7Cit9CisK
Ky8vIG1ldGhvZDogZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb246c3RhZ2U6CitfTVRMX0lOTElO
RSBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OmZ1bmN0aW9u
SGFuZGxlKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGZ1bmN0aW9uLCBNVEw6OlJlbmRlclN0YWdlcyBz
dGFnZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uSGFu
ZGxlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkhhbmRsZVdpdGhGdW5jdGlvbl9z
dGFnZV8pLCBmdW5jdGlvbiwgc3RhZ2UpOworfQorCisvLyBtZXRob2Q6IG5ld1Zpc2libGVGdW5j
dGlvblRhYmxlV2l0aERlc2NyaXB0b3I6c3RhZ2U6CitfTVRMX0lOTElORSBNVEw6OlZpc2libGVG
dW5jdGlvblRhYmxlKiBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6Om5ld1Zpc2libGVGdW5jdGlv
blRhYmxlKGNvbnN0IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9yX3N0YWdlXyksIGRlc2NyaXB0
b3IsIHN0YWdlKTsKK30KKworLy8gbWV0aG9kOiBuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
V2l0aERlc2NyaXB0b3I6c3RhZ2U6CitfTVRMX0lOTElORSBNVEw6OkludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGUqIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6bmV3SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZShjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcl9z
dGFnZV8pLCBkZXNjcmlwdG9yLCBzdGFnZSk7Cit9CisKKy8vIG1ldGhvZDogbmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zOmVycm9yOgorX01UTF9JTkxJ
TkUgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6Om5l
d1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rl
c2NyaXB0b3IqIGFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhBZGRp
dGlvbmFsQmluYXJ5RnVuY3Rpb25zX2Vycm9yXyksIGFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMs
IGVycm9yKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExf
SU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkq
IE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmluaXQo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJ
bmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRT
dWJzY3JpcHRfKSwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6
YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50
ZWdlciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0
YWNobWVudCwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MK
K19NVExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjph
bGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VGlsZVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExUaWxl
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhv
ZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yKiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VGlsZVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVy
dHk6IHBpeGVsRm9ybWF0CitfTVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6VGlsZVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6cGl4ZWxGb3JtYXQoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3JtYXQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwocGl4ZWxGb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFBp
eGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFBpeGVsRm9ybWF0Xyks
IHBpeGVsRm9ybWF0KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBN
VEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlRpbGVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExU
aWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExf
SU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciog
TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6Om9i
amVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0Xyks
IGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1
YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OlRpbGVSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdl
ciBhdHRhY2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNo
bWVudCwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19N
VExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogTVRMOjpUaWxlUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NM
UyhNVExUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5p
dAorX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBNVEw6OlRp
bGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0Ojppbml0PE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4oKTsKK30KKworLy8g
cHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlRpbGVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6
c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30K
KworLy8gcHJvcGVydHk6IHRpbGVGdW5jdGlvbgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiog
TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0aWxlRnVuY3Rpb24oKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHRpbGVGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGlsZUZ1bmN0aW9uKGNvbnN0IE1U
TDo6RnVuY3Rpb24qIHRpbGVGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZUZ1bmN0aW9uXyksIHRpbGVGdW5jdGlv
bik7Cit9CisKKy8vIHByb3BlcnR5OiByYXN0ZXJTYW1wbGVDb3VudAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmFzdGVyU2FtcGxl
Q291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyYXN0ZXJTYW1wbGVDb3VudCkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0UmFz
dGVyU2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHJhc3RlclNhbXBsZUNvdW50KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSYXN0ZXJT
YW1wbGVDb3VudF8pLCByYXN0ZXJTYW1wbGVDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBjb2xv
ckF0dGFjaG1lbnRzCitfTVRMX0lOTElORSBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
Ojpjb2xvckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29sb3JBdHRhY2htZW50cykpOworfQorCisvLyBw
cm9wZXJ0eTogdGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplCitfTVRMX0lOTElORSBib29s
IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGhyZWFkZ3JvdXBTaXplTWF0Y2hl
c1RpbGVTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6c2V0VGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKGJvb2wgdGhyZWFkZ3JvdXBTaXpl
TWF0Y2hlc1RpbGVTaXplKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRUaHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemVfKSwgdGhy
ZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVCdWZm
ZXJzCitfTVRMX0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBNVEw6
OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRpbGVCdWZmZXJzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRv
ckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aWxlQnVmZmVycykpOworfQorCisvLyBw
cm9wZXJ0eTogbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6Om1heFRvdGFsVGhyZWFk
c1BlclRocmVhZGdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VG90YWxUaHJlYWRzUGVy
VGhyZWFkZ3JvdXApKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnNldE1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKE5TOjpVSW50
ZWdlciBtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4VG90YWxUaHJlYWRzUGVy
VGhyZWFkZ3JvdXBfKSwgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBw
cm9wZXJ0eTogYmluYXJ5QXJjaGl2ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpiaW5hcnlBcmNoaXZlcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChiaW5hcnlBcmNoaXZlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0QmluYXJ5QXJjaGl2ZXMoY29uc3QgTlM6OkFycmF5
KiBiaW5hcnlBcmNoaXZlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0QmluYXJ5QXJjaGl2ZXNfKSwgYmluYXJ5QXJjaGl2ZXMpOwor
fQorCisvLyBwcm9wZXJ0eTogcHJlbG9hZGVkTGlicmFyaWVzCitfTVRMX0lOTElORSBOUzo6QXJy
YXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cHJlbG9hZGVkTGlicmFyaWVz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByZWxvYWRlZExpYnJhcmllcykpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0UHJlbG9hZGVk
TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSogcHJlbG9hZGVkTGlicmFyaWVzKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRQcmVsb2Fk
ZWRMaWJyYXJpZXNfKSwgcHJlbG9hZGVkTGlicmFyaWVzKTsKK30KKworLy8gcHJvcGVydHk6IGxp
bmtlZEZ1bmN0aW9ucworX01UTF9JTkxJTkUgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIE1UTDo6VGls
ZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bGlua2VkRnVuY3Rpb25zKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpbmtlZEZ1bmN0aW9ucyo+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwobGlua2VkRnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRMaW5rZWRGdW5jdGlvbnMo
Y29uc3QgTVRMOjpMaW5rZWRGdW5jdGlvbnMqIGxpbmtlZEZ1bmN0aW9ucykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGlua2VkRnVu
Y3Rpb25zXyksIGxpbmtlZEZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0QWRk
aW5nQmluYXJ5RnVuY3Rpb25zCitfTVRMX0lOTElORSBib29sIE1UTDo6VGlsZVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcjo6c3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3VwcG9ydEFkZGluZ0Jp
bmFyeUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN1cHBv
cnRBZGRpbmdCaW5hcnlGdW5jdGlvbnNfKSwgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucyk7
Cit9CisKKy8vIHByb3BlcnR5OiBtYXhDYWxsU3RhY2tEZXB0aAorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bWF4Q2FsbFN0YWNrRGVw
dGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhDYWxsU3RhY2tEZXB0aCkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4Q2Fs
bFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1heENhbGxTdGFja0RlcHRoKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhDYWxsU3Rh
Y2tEZXB0aF8pLCBtYXhDYWxsU3RhY2tEZXB0aCk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXQKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpyZXNldCgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHJlc2V0KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUmVzb3VyY2UuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFJlc291cmNlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2UyNjhiMTc5NDgyOWUxYTUwMTZmNjNk
MWRiZDQ5OWFjMDVlOWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlLmhwcApAQCAtMCwwICsxLDE3OCBAQAorLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRM
UmVzb3VyY2UuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJp
ZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisKK25hbWVz
cGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFB1cmdlYWJsZVN0YXRlKSB7Cisg
ICAgUHVyZ2VhYmxlU3RhdGVLZWVwQ3VycmVudCA9IDEsCisgICAgUHVyZ2VhYmxlU3RhdGVOb25W
b2xhdGlsZSA9IDIsCisgICAgUHVyZ2VhYmxlU3RhdGVWb2xhdGlsZSA9IDMsCisgICAgUHVyZ2Vh
YmxlU3RhdGVFbXB0eSA9IDQsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBDUFVDYWNo
ZU1vZGUpIHsKKyAgICBDUFVDYWNoZU1vZGVEZWZhdWx0Q2FjaGUgPSAwLAorICAgIENQVUNhY2hl
TW9kZVdyaXRlQ29tYmluZWQgPSAxLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU3Rv
cmFnZU1vZGUpIHsKKyAgICBTdG9yYWdlTW9kZVNoYXJlZCA9IDAsCisgICAgU3RvcmFnZU1vZGVN
YW5hZ2VkID0gMSwKKyAgICBTdG9yYWdlTW9kZVByaXZhdGUgPSAyLAorICAgIFN0b3JhZ2VNb2Rl
TWVtb3J5bGVzcyA9IDMsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBIYXphcmRUcmFj
a2luZ01vZGUpIHsKKyAgICBIYXphcmRUcmFja2luZ01vZGVEZWZhdWx0ID0gMCwKKyAgICBIYXph
cmRUcmFja2luZ01vZGVVbnRyYWNrZWQgPSAxLAorICAgIEhhemFyZFRyYWNraW5nTW9kZVRyYWNr
ZWQgPSAyLAorfTsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgUmVzb3VyY2VPcHRpb25z
KSB7CisgICAgUmVzb3VyY2VTdG9yYWdlTW9kZVNoYXJlZCA9IDAsCisgICAgUmVzb3VyY2VIYXph
cmRUcmFja2luZ01vZGVEZWZhdWx0ID0gMCwKKyAgICBSZXNvdXJjZUNQVUNhY2hlTW9kZURlZmF1
bHRDYWNoZSA9IDAsCisgICAgUmVzb3VyY2VPcHRpb25DUFVDYWNoZU1vZGVEZWZhdWx0ID0gMCwK
KyAgICBSZXNvdXJjZUNQVUNhY2hlTW9kZVdyaXRlQ29tYmluZWQgPSAxLAorICAgIFJlc291cmNl
T3B0aW9uQ1BVQ2FjaGVNb2RlV3JpdGVDb21iaW5lZCA9IDEsCisgICAgUmVzb3VyY2VTdG9yYWdl
TW9kZU1hbmFnZWQgPSAxNiwKKyAgICBSZXNvdXJjZVN0b3JhZ2VNb2RlUHJpdmF0ZSA9IDMyLAor
ICAgIFJlc291cmNlU3RvcmFnZU1vZGVNZW1vcnlsZXNzID0gNDgsCisgICAgUmVzb3VyY2VIYXph
cmRUcmFja2luZ01vZGVVbnRyYWNrZWQgPSAyNTYsCisgICAgUmVzb3VyY2VIYXphcmRUcmFja2lu
Z01vZGVUcmFja2VkID0gNTEyLAorfTsKKworY2xhc3MgUmVzb3VyY2UgOiBwdWJsaWMgTlM6OlJl
ZmVyZW5jaW5nPFJlc291cmNlPgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgICAgICAg
ICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRGV2aWNlKiAgICAgICAgICAg
ZGV2aWNlKCkgY29uc3Q7CisKKyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAgICBjcHVDYWNoZU1v
ZGUoKSBjb25zdDsKKworICAgIE1UTDo6U3RvcmFnZU1vZGUgICAgICAgIHN0b3JhZ2VNb2RlKCkg
Y29uc3Q7CisKKyAgICBNVEw6OkhhemFyZFRyYWNraW5nTW9kZSBoYXphcmRUcmFja2luZ01vZGUo
KSBjb25zdDsKKworICAgIE1UTDo6UmVzb3VyY2VPcHRpb25zICAgIHJlc291cmNlT3B0aW9ucygp
IGNvbnN0OworCisgICAgTVRMOjpQdXJnZWFibGVTdGF0ZSAgICAgc2V0UHVyZ2VhYmxlU3RhdGUo
TVRMOjpQdXJnZWFibGVTdGF0ZSBzdGF0ZSk7CisKKyAgICBjbGFzcyBIZWFwKiAgICAgICAgICAg
ICBoZWFwKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICBoZWFwT2Zmc2V0
KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICBhbGxvY2F0ZWRTaXplKCkg
Y29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBtYWtlQWxpYXNhYmxlKCk7CisK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICBpc0FsaWFzYWJsZSgpOworfTsKKworfQorCisv
LyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6UmVzb3VyY2U6
OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVzb3VyY2U6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRM
YWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1U
TDo6RGV2aWNlKiBNVEw6OlJlc291cmNlOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChk
ZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGNwdUNhY2hlTW9kZQorX01UTF9JTkxJTkUgTVRM
OjpDUFVDYWNoZU1vZGUgTVRMOjpSZXNvdXJjZTo6Y3B1Q2FjaGVNb2RlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNQVUNhY2hlTW9kZT4odGhpcywgX01U
TF9QUklWQVRFX1NFTChjcHVDYWNoZU1vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VN
b2RlCitfTVRMX0lOTElORSBNVEw6OlN0b3JhZ2VNb2RlIE1UTDo6UmVzb3VyY2U6OnN0b3JhZ2VN
b2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3Jh
Z2VNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0b3JhZ2VNb2RlKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBoYXphcmRUcmFja2luZ01vZGUKK19NVExfSU5MSU5FIE1UTDo6SGF6YXJkVHJhY2tp
bmdNb2RlIE1UTDo6UmVzb3VyY2U6OmhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpIYXphcmRUcmFja2luZ01vZGU+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaGF6YXJkVHJhY2tpbmdNb2RlKSk7Cit9CisKKy8vIHByb3BlcnR5
OiByZXNvdXJjZU9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VPcHRpb25zIE1UTDo6
UmVzb3VyY2U6OnJlc291cmNlT3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZU9wdGlvbnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
cmVzb3VyY2VPcHRpb25zKSk7Cit9CisKKy8vIG1ldGhvZDogc2V0UHVyZ2VhYmxlU3RhdGU6Citf
TVRMX0lOTElORSBNVEw6OlB1cmdlYWJsZVN0YXRlIE1UTDo6UmVzb3VyY2U6OnNldFB1cmdlYWJs
ZVN0YXRlKE1UTDo6UHVyZ2VhYmxlU3RhdGUgc3RhdGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpQdXJnZWFibGVTdGF0ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRQdXJnZWFibGVTdGF0ZV8pLCBzdGF0ZSk7Cit9CisKKy8vIHByb3BlcnR5OiBoZWFwCitfTVRM
X0lOTElORSBNVEw6OkhlYXAqIE1UTDo6UmVzb3VyY2U6OmhlYXAoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGVhcCo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoaGVhcCkpOworfQorCisvLyBwcm9wZXJ0eTogaGVhcE9mZnNldAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6UmVzb3VyY2U6OmhlYXBPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChoZWFwT2Zmc2V0KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhbGxvY2F0ZWRTaXplCitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpSZXNvdXJjZTo6YWxsb2NhdGVkU2l6ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGFsbG9jYXRlZFNpemUpKTsKK30KKworLy8gbWV0aG9kOiBtYWtlQWxpYXNh
YmxlCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2U6Om1ha2VBbGlhc2FibGUoKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYWtl
QWxpYXNhYmxlKSk7Cit9CisKKy8vIG1ldGhvZDogaXNBbGlhc2FibGUKK19NVExfSU5MSU5FIGJv
b2wgTVRMOjpSZXNvdXJjZTo6aXNBbGlhc2FibGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNBbGlhc2FibGUpKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNv
dXJjZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjY4M2FjMWY4YjE2YmQ1ZTViMWJhM2I3YmUyMmVmNzc5NGY0OWI5MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZVN0YXRl
Q29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsOTQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFJlc291cmNlU3RhdGVD
b21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFk
ZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVyLmhw
cCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU3BhcnNlVGV4
dHVyZU1hcHBpbmdNb2RlKSB7CisgICAgU3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlTWFwID0gMCwK
KyAgICBTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGVVbm1hcCA9IDEsCit9OworCitzdHJ1Y3QgTWFw
SW5kaXJlY3RBcmd1bWVudHMKK3sKKyAgICB1aW50MzJfdCByZWdpb25PcmlnaW5YOworICAgIHVp
bnQzMl90IHJlZ2lvbk9yaWdpblk7CisgICAgdWludDMyX3QgcmVnaW9uT3JpZ2luWjsKKyAgICB1
aW50MzJfdCByZWdpb25TaXplV2lkdGg7CisgICAgdWludDMyX3QgcmVnaW9uU2l6ZUhlaWdodDsK
KyAgICB1aW50MzJfdCByZWdpb25TaXplRGVwdGg7CisgICAgdWludDMyX3QgbWlwTWFwTGV2ZWw7
CisgICAgdWludDMyX3Qgc2xpY2VJZDsKK30gX01UTF9QQUNLRUQ7CisKK2NsYXNzIFJlc291cmNl
U3RhdGVDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVzb3VyY2VTdGF0
ZUNvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rlcj4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIHVw
ZGF0ZVRleHR1cmVNYXBwaW5ncyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBN
VEw6OlNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZSBtb2RlLCBjb25zdCBNVEw6OlJlZ2lvbiogcmVn
aW9ucywgY29uc3QgTlM6OlVJbnRlZ2VyKiBtaXBMZXZlbHMsIGNvbnN0IE5TOjpVSW50ZWdlciog
c2xpY2VzLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucyk7CisKKyAgICB2b2lkIHVwZGF0ZVRleHR1
cmVNYXBwaW5nKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNl
VGV4dHVyZU1hcHBpbmdNb2RlIG1vZGUsIGNvbnN0IE1UTDo6UmVnaW9uIHJlZ2lvbiwgY29uc3Qg
TlM6OlVJbnRlZ2VyIG1pcExldmVsLCBjb25zdCBOUzo6VUludGVnZXIgc2xpY2UpOworCisgICAg
dm9pZCB1cGRhdGVUZXh0dXJlTWFwcGluZyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBNVEw6OlNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZSBtb2RlLCBjb25zdCBjbGFzcyBCdWZm
ZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOwor
CisgICAgdm9pZCB1cGRhdGVGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVuY2UpOworCisgICAg
dm9pZCB3YWl0Rm9yRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKK307CisKK30KKwor
Ly8gbWV0aG9kOiB1cGRhdGVUZXh0dXJlTWFwcGluZ3M6bW9kZTpyZWdpb25zOm1pcExldmVsczpz
bGljZXM6bnVtUmVnaW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZVN0YXRlQ29t
bWFuZEVuY29kZXI6OnVwZGF0ZVRleHR1cmVNYXBwaW5ncyhjb25zdCBNVEw6OlRleHR1cmUqIHRl
eHR1cmUsIGNvbnN0IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlIG1vZGUsIGNvbnN0IE1U
TDo6UmVnaW9uKiByZWdpb25zLCBjb25zdCBOUzo6VUludGVnZXIqIG1pcExldmVscywgY29uc3Qg
TlM6OlVJbnRlZ2VyKiBzbGljZXMsIE5TOjpVSW50ZWdlciBudW1SZWdpb25zKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1cGRhdGVUZXh0
dXJlTWFwcGluZ3NfbW9kZV9yZWdpb25zX21pcExldmVsc19zbGljZXNfbnVtUmVnaW9uc18pLCB0
ZXh0dXJlLCBtb2RlLCByZWdpb25zLCBtaXBMZXZlbHMsIHNsaWNlcywgbnVtUmVnaW9ucyk7Cit9
CisKKy8vIG1ldGhvZDogdXBkYXRlVGV4dHVyZU1hcHBpbmc6bW9kZTpyZWdpb246bWlwTGV2ZWw6
c2xpY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVy
Ojp1cGRhdGVUZXh0dXJlTWFwcGluZyhjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IE1UTDo6U3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlIG1vZGUsIGNvbnN0IE1UTDo6UmVnaW9uIHJl
Z2lvbiwgY29uc3QgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBjb25zdCBOUzo6VUludGVnZXIgc2xp
Y2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHVwZGF0ZVRleHR1cmVNYXBwaW5nX21vZGVfcmVnaW9uX21pcExldmVsX3NsaWNlXyksIHRl
eHR1cmUsIG1vZGUsIHJlZ2lvbiwgbWlwTGV2ZWwsIHNsaWNlKTsKK30KKworLy8gbWV0aG9kOiB1
cGRhdGVUZXh0dXJlTWFwcGluZzptb2RlOmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zm
c2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcjo6
dXBkYXRlVGV4dHVyZU1hcHBpbmcoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBN
VEw6OlNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZSBtb2RlLCBjb25zdCBNVEw6OkJ1ZmZlciogaW5k
aXJlY3RCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlVGV4
dHVyZU1hcHBpbmdfbW9kZV9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8pLCB0
ZXh0dXJlLCBtb2RlLCBpbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworfQor
CisvLyBtZXRob2Q6IHVwZGF0ZUZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNl
U3RhdGVDb21tYW5kRW5jb2Rlcjo6dXBkYXRlRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2Up
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHVwZGF0ZUZlbmNlXyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB3YWl0Rm9yRmVuY2U6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyOjp3YWl0Rm9y
RmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdhaXRGb3JGZW5jZV8pLCBmZW5jZSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVz
b3VyY2VTdGF0ZVBhc3MuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTFJlc291cmNlU3RhdGVQYXNzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzc3MGY2NDAyMTMxN2QwMjQ5
Y2VhZWVmMWI1ZTZjYjQ0OGFjYWE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVQYXNzLmhwcApAQCAtMCwwICsx
LDE2NSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwCisvLworLy8gQ29weXJpZ2h0IDIw
MjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAi
CisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhw
cCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBN
VEwKK3sKK2NsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQnVmZmVyKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFNhbXBsZUJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVy
KiBzYW1wbGVCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUlu
dGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCk7CisKKyAgICBOUzo6VUludGVnZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kT2ZFbmNv
ZGVyU2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5kT2ZFbmNvZGVyU2FtcGxl
SW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK307CisKK2NsYXNz
IFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZXNv
dXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFsbG9j
KCk7CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3Qo
TlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPYmpl
Y3QoY29uc3QgY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7Cit9Owor
CitjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8
UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFz
cyBSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgYWxsb2Mo
KTsKKworICAgIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIFJlc291cmNlU3RhdGVQ
YXNzRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVN0YXRlUGFzc0Rlc2Ny
aXB0b3IoKTsKKworICAgIGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdDsKK307
CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZXNvdXJj
ZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZXNvdXJjZVN0
YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhv
ZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0
dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0
PE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4o
KTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpDb3Vu
dGVyU2FtcGxlQnVmZmVyKiBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzYW1wbGVCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291
cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFNhbXBsZUJ1
ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlcikKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2Ft
cGxlQnVmZmVyXyksIHNhbXBsZUJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5OiBzdGFydE9mRW5j
b2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZXNvdXJjZVN0
YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzdGFydE9mRW5jb2RlclNh
bXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRl
eCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleChO
Uzo6VUludGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhcnRPZkVuY29kZXJT
YW1wbGVJbmRleF8pLCBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK30KKworLy8gcHJvcGVy
dHk6IGVuZE9mRW5jb2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjplbmRP
ZkVuY29kZXJTYW1wbGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZE9mRW5jb2RlclNh
bXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZVN0YXRlUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRFbmRPZkVuY29kZXJTYW1wbGVJ
bmRleChOUzo6VUludGVnZXIgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4XyksIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExSZXNvdXJjZVN0YXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNj
cmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VTdGF0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXk6OnNldE9iamVjdChjb25zdCBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5k
ZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudCwgYXR0YWNobWVu
dEluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKiBNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3Jp
cHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlc291
cmNlU3RhdGVQYXNzRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZXNvdXJjZVN0YXRl
UGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2Ny
aXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVzb3Vy
Y2VTdGF0ZVBhc3NEZXNjcmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiByZXNvdXJj
ZVN0YXRlUGFzc0Rlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NE
ZXNjcmlwdG9yKiBNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcjo6cmVzb3VyY2VTdGF0
ZVBhc3NEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OlJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVzb3Vy
Y2VTdGF0ZVBhc3NEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChyZXNvdXJjZVN0YXRlUGFz
c0Rlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRz
CitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheSogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3I6OnNhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyQXR0YWNobWVudHMp
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExTYW1wbGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExT
YW1wbGVyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGU3OTE1MmUxNWE4N2E0ZWEyOWUwY2U2OWUyYjQ2Yzkw
MDQ1MjNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFNhbXBsZXIuaHBwCkBAIC0wLDAgKzEsMzEwIEBACisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExTYW1wbGVyLmhw
cAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisj
aW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaHBwPgorCisjaW5jbHVkZSAiTVRMRGVwdGhTdGVuY2lsLmhwcCIKKyNpbmNsdWRlICJNVExT
YW1wbGVyLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwg
U2FtcGxlck1pbk1hZ0ZpbHRlcikgeworICAgIFNhbXBsZXJNaW5NYWdGaWx0ZXJOZWFyZXN0ID0g
MCwKKyAgICBTYW1wbGVyTWluTWFnRmlsdGVyTGluZWFyID0gMSwKK307CisKK19NVExfRU5VTShO
Uzo6VUludGVnZXIsIFNhbXBsZXJNaXBGaWx0ZXIpIHsKKyAgICBTYW1wbGVyTWlwRmlsdGVyTm90
TWlwbWFwcGVkID0gMCwKKyAgICBTYW1wbGVyTWlwRmlsdGVyTmVhcmVzdCA9IDEsCisgICAgU2Ft
cGxlck1pcEZpbHRlckxpbmVhciA9IDIsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBT
YW1wbGVyQWRkcmVzc01vZGUpIHsKKyAgICBTYW1wbGVyQWRkcmVzc01vZGVDbGFtcFRvRWRnZSA9
IDAsCisgICAgU2FtcGxlckFkZHJlc3NNb2RlTWlycm9yQ2xhbXBUb0VkZ2UgPSAxLAorICAgIFNh
bXBsZXJBZGRyZXNzTW9kZVJlcGVhdCA9IDIsCisgICAgU2FtcGxlckFkZHJlc3NNb2RlTWlycm9y
UmVwZWF0ID0gMywKKyAgICBTYW1wbGVyQWRkcmVzc01vZGVDbGFtcFRvWmVybyA9IDQsCisgICAg
U2FtcGxlckFkZHJlc3NNb2RlQ2xhbXBUb0JvcmRlckNvbG9yID0gNSwKK307CisKK19NVExfRU5V
TShOUzo6VUludGVnZXIsIFNhbXBsZXJCb3JkZXJDb2xvcikgeworICAgIFNhbXBsZXJCb3JkZXJD
b2xvclRyYW5zcGFyZW50QmxhY2sgPSAwLAorICAgIFNhbXBsZXJCb3JkZXJDb2xvck9wYXF1ZUJs
YWNrID0gMSwKKyAgICBTYW1wbGVyQm9yZGVyQ29sb3JPcGFxdWVXaGl0ZSA9IDIsCit9OworCitj
bGFzcyBTYW1wbGVyRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxTYW1wbGVyRGVzY3Jp
cHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgU2FtcGxlckRlc2NyaXB0b3IqIGFs
bG9jKCk7CisKKyAgICBjbGFzcyBTYW1wbGVyRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKwor
ICAgIE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciAgICAgICAgbWluRmlsdGVyKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNaW5GaWx0ZXIoTVRMOjpTYW1w
bGVyTWluTWFnRmlsdGVyIG1pbkZpbHRlcik7CisKKyAgICBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0
ZXIgICAgICAgIG1hZ0ZpbHRlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0TWFnRmlsdGVyKE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlciBtYWdGaWx0ZXIp
OworCisgICAgTVRMOjpTYW1wbGVyTWlwRmlsdGVyICAgICAgICAgICBtaXBGaWx0ZXIoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pcEZpbHRlcihNVEw6
OlNhbXBsZXJNaXBGaWx0ZXIgbWlwRmlsdGVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgbWF4QW5pc290cm9weSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0TWF4QW5pc290cm9weShOUzo6VUludGVnZXIgbWF4QW5pc290cm9w
eSk7CisKKyAgICBNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZSAgICAgICAgIHNBZGRyZXNzTW9kZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U0FkZHJlc3NN
b2RlKE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIHNBZGRyZXNzTW9kZSk7CisKKyAgICBNVEw6OlNh
bXBsZXJBZGRyZXNzTW9kZSAgICAgICAgIHRBZGRyZXNzTW9kZSgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VEFkZHJlc3NNb2RlKE1UTDo6U2FtcGxlckFk
ZHJlc3NNb2RlIHRBZGRyZXNzTW9kZSk7CisKKyAgICBNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZSAg
ICAgICAgIHJBZGRyZXNzTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0UkFkZHJlc3NNb2RlKE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIHJBZGRyZXNz
TW9kZSk7CisKKyAgICBNVEw6OlNhbXBsZXJCb3JkZXJDb2xvciAgICAgICAgIGJvcmRlckNvbG9y
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCb3JkZXJD
b2xvcihNVEw6OlNhbXBsZXJCb3JkZXJDb2xvciBib3JkZXJDb2xvcik7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRDb29yZGluYXRlcygpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Tm9ybWFsaXplZENvb3JkaW5h
dGVzKGJvb2wgbm9ybWFsaXplZENvb3JkaW5hdGVzKTsKKworICAgIGZsb2F0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbG9kTWluQ2xhbXAoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldExvZE1pbkNsYW1wKGZsb2F0IGxvZE1pbkNsYW1wKTsKKworICAg
IGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9kTWF4Q2xhbXAoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExvZE1heENsYW1wKGZsb2F0IGxv
ZE1heENsYW1wKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9kQXZl
cmFnZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9k
QXZlcmFnZShib29sIGxvZEF2ZXJhZ2UpOworCisgICAgTVRMOjpDb21wYXJlRnVuY3Rpb24gICAg
ICAgICAgICBjb21wYXJlRnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlvbiBjb21w
YXJlRnVuY3Rpb24pOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBw
b3J0QXJndW1lbnRCdWZmZXJzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzKGJvb2wgc3VwcG9ydEFyZ3VtZW50QnVm
ZmVycyk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBO
Uzo6U3RyaW5nKiBsYWJlbCk7Cit9OworCitjbGFzcyBTYW1wbGVyU3RhdGUgOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPFNhbXBsZXJTdGF0ZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAg
IGxhYmVsKCkgY29uc3Q7CisKKyAgICBjbGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0OworfTsK
KworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVy
RGVzY3JpcHRvciogTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlNhbXBsZXJEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVf
Q0xTKE1UTFNhbXBsZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9J
TkxJTkUgTVRMOjpTYW1wbGVyRGVzY3JpcHRvciogTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpTYW1wbGVyRGVzY3JpcHRv
cj4oKTsKK30KKworLy8gcHJvcGVydHk6IG1pbkZpbHRlcgorX01UTF9JTkxJTkUgTVRMOjpTYW1w
bGVyTWluTWFnRmlsdGVyIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6Om1pbkZpbHRlcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyTWluTWFnRmls
dGVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1pbkZpbHRlcikpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldE1pbkZpbHRlcihNVEw6OlNhbXBsZXJN
aW5NYWdGaWx0ZXIgbWluRmlsdGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNaW5GaWx0ZXJfKSwgbWluRmlsdGVyKTsKK30KKwor
Ly8gcHJvcGVydHk6IG1hZ0ZpbHRlcgorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyTWluTWFnRmls
dGVyIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6Om1hZ0ZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyTWluTWFnRmlsdGVyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG1hZ0ZpbHRlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
U2FtcGxlckRlc2NyaXB0b3I6OnNldE1hZ0ZpbHRlcihNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIg
bWFnRmlsdGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRNYWdGaWx0ZXJfKSwgbWFnRmlsdGVyKTsKK30KKworLy8gcHJvcGVydHk6
IG1pcEZpbHRlcgorX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVyTWlwRmlsdGVyIE1UTDo6U2FtcGxl
ckRlc2NyaXB0b3I6Om1pcEZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpTYW1wbGVyTWlwRmlsdGVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1p
cEZpbHRlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6
OnNldE1pcEZpbHRlcihNVEw6OlNhbXBsZXJNaXBGaWx0ZXIgbWlwRmlsdGVyKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNaXBGaWx0
ZXJfKSwgbWlwRmlsdGVyKTsKK30KKworLy8gcHJvcGVydHk6IG1heEFuaXNvdHJvcHkKK19NVExf
SU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjptYXhBbmlzb3Ryb3B5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4QW5pc290cm9weSkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldE1heEFuaXNvdHJvcHkoTlM6OlVJbnRl
Z2VyIG1heEFuaXNvdHJvcHkpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heEFuaXNvdHJvcHlfKSwgbWF4QW5pc290cm9weSk7Cit9
CisKKy8vIHByb3BlcnR5OiBzQWRkcmVzc01vZGUKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlckFk
ZHJlc3NNb2RlIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNBZGRyZXNzTW9kZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyQWRkcmVzc01vZGU+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc0FkZHJlc3NNb2RlKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0U0FkZHJlc3NNb2RlKE1UTDo6U2FtcGxl
ckFkZHJlc3NNb2RlIHNBZGRyZXNzTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U0FkZHJlc3NNb2RlXyksIHNBZGRyZXNzTW9k
ZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0QWRkcmVzc01vZGUKK19NVExfSU5MSU5FIE1UTDo6U2Ft
cGxlckFkZHJlc3NNb2RlIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnRBZGRyZXNzTW9kZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVyQWRkcmVz
c01vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodEFkZHJlc3NNb2RlKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0VEFkZHJlc3NNb2RlKE1UTDo6
U2FtcGxlckFkZHJlc3NNb2RlIHRBZGRyZXNzTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VEFkZHJlc3NNb2RlXyksIHRBZGRy
ZXNzTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiByQWRkcmVzc01vZGUKK19NVExfSU5MSU5FIE1U
TDo6U2FtcGxlckFkZHJlc3NNb2RlIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnJBZGRyZXNzTW9k
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTYW1wbGVy
QWRkcmVzc01vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwockFkZHJlc3NNb2RlKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0UkFkZHJlc3NNb2Rl
KE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlIHJBZGRyZXNzTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UkFkZHJlc3NNb2RlXyks
IHJBZGRyZXNzTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBib3JkZXJDb2xvcgorX01UTF9JTkxJ
TkUgTVRMOjpTYW1wbGVyQm9yZGVyQ29sb3IgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6Ym9yZGVy
Q29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2Ft
cGxlckJvcmRlckNvbG9yPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJvcmRlckNvbG9yKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0Qm9yZGVyQ29s
b3IoTVRMOjpTYW1wbGVyQm9yZGVyQ29sb3IgYm9yZGVyQ29sb3IpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvcmRlckNvbG9yXyks
IGJvcmRlckNvbG9yKTsKK30KKworLy8gcHJvcGVydHk6IG5vcm1hbGl6ZWRDb29yZGluYXRlcwor
X01UTF9JTkxJTkUgYm9vbCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpub3JtYWxpemVkQ29vcmRp
bmF0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobm9ybWFsaXplZENvb3JkaW5hdGVzKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0Tm9ybWFsaXplZENvb3JkaW5h
dGVzKGJvb2wgbm9ybWFsaXplZENvb3JkaW5hdGVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXROb3JtYWxpemVkQ29vcmRpbmF0ZXNf
KSwgbm9ybWFsaXplZENvb3JkaW5hdGVzKTsKK30KKworLy8gcHJvcGVydHk6IGxvZE1pbkNsYW1w
CitfTVRMX0lOTElORSBmbG9hdCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpsb2RNaW5DbGFtcCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobG9kTWluQ2xhbXApKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRMb2RNaW5DbGFtcChmbG9hdCBsb2RNaW5DbGFtcCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
TG9kTWluQ2xhbXBfKSwgbG9kTWluQ2xhbXApOworfQorCisvLyBwcm9wZXJ0eTogbG9kTWF4Q2xh
bXAKK19NVExfSU5MSU5FIGZsb2F0IE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmxvZE1heENsYW1w
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxmbG9hdD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChsb2RNYXhDbGFtcCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1U
TDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldExvZE1heENsYW1wKGZsb2F0IGxvZE1heENsYW1wKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRMb2RNYXhDbGFtcF8pLCBsb2RNYXhDbGFtcCk7Cit9CisKKy8vIHByb3BlcnR5OiBsb2RBdmVy
YWdlCitfTVRMX0lOTElORSBib29sIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmxvZEF2ZXJhZ2Uo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobG9kQXZlcmFnZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
U2FtcGxlckRlc2NyaXB0b3I6OnNldExvZEF2ZXJhZ2UoYm9vbCBsb2RBdmVyYWdlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMb2RB
dmVyYWdlXyksIGxvZEF2ZXJhZ2UpOworfQorCisvLyBwcm9wZXJ0eTogY29tcGFyZUZ1bmN0aW9u
CitfTVRMX0lOTElORSBNVEw6OkNvbXBhcmVGdW5jdGlvbiBNVEw6OlNhbXBsZXJEZXNjcmlwdG9y
Ojpjb21wYXJlRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6Q29tcGFyZUZ1bmN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbXBhcmVG
dW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6
OnNldENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlvbiBjb21wYXJlRnVuY3Rpb24p
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldENvbXBhcmVGdW5jdGlvbl8pLCBjb21wYXJlRnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0
eTogc3VwcG9ydEFyZ3VtZW50QnVmZmVycworX01UTF9JTkxJTkUgYm9vbCBNVEw6OlNhbXBsZXJE
ZXNjcmlwdG9yOjpzdXBwb3J0QXJndW1lbnRCdWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBw
b3J0QXJndW1lbnRCdWZmZXJzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVy
RGVzY3JpcHRvcjo6c2V0U3VwcG9ydEFyZ3VtZW50QnVmZmVycyhib29sIHN1cHBvcnRBcmd1bWVu
dEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnNfKSwgc3VwcG9ydEFyZ3VtZW50QnVm
ZmVycyk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyog
TVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVs
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6c2V0TGFi
ZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8g
cHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlNhbXBsZXJTdGF0
ZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpT
dHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OlNhbXBsZXJTdGF0ZTo6ZGV2
aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmlj
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2Ny
aXB0b3IuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFN0YWdl
SW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzkyNDRlMjRlMDIxOTM5MjNh
M2M0MTczZDE2ZDk1MGMxZWU0MTJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcApA
QCAtMCwwICsxLDM4MSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNs
dWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHA+CisKKyNpbmNsdWRlICJNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAiCisKK25h
bWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIEF0dHJpYnV0ZUZvcm1hdCkg
eworICAgIEF0dHJpYnV0ZUZvcm1hdEludmFsaWQgPSAwLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVD
aGFyMiA9IDEsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIzID0gMiwKKyAgICBBdHRyaWJ1dGVG
b3JtYXRVQ2hhcjQgPSAzLAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXIyID0gNCwKKyAgICBBdHRy
aWJ1dGVGb3JtYXRDaGFyMyA9IDUsCisgICAgQXR0cmlidXRlRm9ybWF0Q2hhcjQgPSA2LAorICAg
IEF0dHJpYnV0ZUZvcm1hdFVDaGFyMk5vcm1hbGl6ZWQgPSA3LAorICAgIEF0dHJpYnV0ZUZvcm1h
dFVDaGFyM05vcm1hbGl6ZWQgPSA4LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyNE5vcm1hbGl6
ZWQgPSA5LAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXIyTm9ybWFsaXplZCA9IDEwLAorICAgIEF0
dHJpYnV0ZUZvcm1hdENoYXIzTm9ybWFsaXplZCA9IDExLAorICAgIEF0dHJpYnV0ZUZvcm1hdENo
YXI0Tm9ybWFsaXplZCA9IDEyLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydDIgPSAxMywKKyAg
ICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQzID0gMTQsCisgICAgQXR0cmlidXRlRm9ybWF0VVNob3J0
NCA9IDE1LAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0MiA9IDE2LAorICAgIEF0dHJpYnV0ZUZv
cm1hdFNob3J0MyA9IDE3LAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0NCA9IDE4LAorICAgIEF0
dHJpYnV0ZUZvcm1hdFVTaG9ydDJOb3JtYWxpemVkID0gMTksCisgICAgQXR0cmlidXRlRm9ybWF0
VVNob3J0M05vcm1hbGl6ZWQgPSAyMCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQ0Tm9ybWFs
aXplZCA9IDIxLAorICAgIEF0dHJpYnV0ZUZvcm1hdFNob3J0Mk5vcm1hbGl6ZWQgPSAyMiwKKyAg
ICBBdHRyaWJ1dGVGb3JtYXRTaG9ydDNOb3JtYWxpemVkID0gMjMsCisgICAgQXR0cmlidXRlRm9y
bWF0U2hvcnQ0Tm9ybWFsaXplZCA9IDI0LAorICAgIEF0dHJpYnV0ZUZvcm1hdEhhbGYyID0gMjUs
CisgICAgQXR0cmlidXRlRm9ybWF0SGFsZjMgPSAyNiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRIYWxm
NCA9IDI3LAorICAgIEF0dHJpYnV0ZUZvcm1hdEZsb2F0ID0gMjgsCisgICAgQXR0cmlidXRlRm9y
bWF0RmxvYXQyID0gMjksCisgICAgQXR0cmlidXRlRm9ybWF0RmxvYXQzID0gMzAsCisgICAgQXR0
cmlidXRlRm9ybWF0RmxvYXQ0ID0gMzEsCisgICAgQXR0cmlidXRlRm9ybWF0SW50ID0gMzIsCisg
ICAgQXR0cmlidXRlRm9ybWF0SW50MiA9IDMzLAorICAgIEF0dHJpYnV0ZUZvcm1hdEludDMgPSAz
NCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRJbnQ0ID0gMzUsCisgICAgQXR0cmlidXRlRm9ybWF0VUlu
dCA9IDM2LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVJbnQyID0gMzcsCisgICAgQXR0cmlidXRlRm9y
bWF0VUludDMgPSAzOCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50NCA9IDM5LAorICAgIEF0dHJp
YnV0ZUZvcm1hdEludDEwMTAxMDJOb3JtYWxpemVkID0gNDAsCisgICAgQXR0cmlidXRlRm9ybWF0
VUludDEwMTAxMDJOb3JtYWxpemVkID0gNDEsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXI0Tm9y
bWFsaXplZF9CR1JBID0gNDIsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXIgPSA0NSwKKyAgICBB
dHRyaWJ1dGVGb3JtYXRDaGFyID0gNDYsCisgICAgQXR0cmlidXRlRm9ybWF0VUNoYXJOb3JtYWxp
emVkID0gNDcsCisgICAgQXR0cmlidXRlRm9ybWF0Q2hhck5vcm1hbGl6ZWQgPSA0OCwKKyAgICBB
dHRyaWJ1dGVGb3JtYXRVU2hvcnQgPSA0OSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydCA9IDUw
LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydE5vcm1hbGl6ZWQgPSA1MSwKKyAgICBBdHRyaWJ1
dGVGb3JtYXRTaG9ydE5vcm1hbGl6ZWQgPSA1MiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRIYWxmID0g
NTMsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBJbmRleFR5cGUpIHsKKyAgICBJbmRl
eFR5cGVVSW50MTYgPSAwLAorICAgIEluZGV4VHlwZVVJbnQzMiA9IDEsCit9OworCitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBTdGVwRnVuY3Rpb24pIHsKKyAgICBTdGVwRnVuY3Rpb25Db25zdGFu
dCA9IDAsCisgICAgU3RlcEZ1bmN0aW9uUGVyVmVydGV4ID0gMSwKKyAgICBTdGVwRnVuY3Rpb25Q
ZXJJbnN0YW5jZSA9IDIsCisgICAgU3RlcEZ1bmN0aW9uUGVyUGF0Y2ggPSAzLAorICAgIFN0ZXBG
dW5jdGlvblBlclBhdGNoQ29udHJvbFBvaW50ID0gNCwKKyAgICBTdGVwRnVuY3Rpb25UaHJlYWRQ
b3NpdGlvbkluR3JpZFggPSA1LAorICAgIFN0ZXBGdW5jdGlvblRocmVhZFBvc2l0aW9uSW5Hcmlk
WSA9IDYsCisgICAgU3RlcEZ1bmN0aW9uVGhyZWFkUG9zaXRpb25JbkdyaWRYSW5kZXhlZCA9IDcs
CisgICAgU3RlcEZ1bmN0aW9uVGhyZWFkUG9zaXRpb25JbkdyaWRZSW5kZXhlZCA9IDgsCit9Owor
CitjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEJ1ZmZl
ckxheW91dERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEJ1ZmZlckxh
eW91dERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlw
dG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmlkZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdHJpZGUoTlM6OlVJbnRlZ2VyIHN0cmlkZSk7CisKKyAgICBNVEw6OlN0ZXBG
dW5jdGlvbiAgICAgICAgICAgICAgICAgICAgc3RlcEZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZXBGdW5jdGlvbihNVEw6OlN0
ZXBGdW5jdGlvbiBzdGVwRnVuY3Rpb24pOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZXBSYXRlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFN0ZXBSYXRlKE5TOjpVSW50ZWdlciBzdGVwUmF0ZSk7Cit9Owor
CitjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5j
aW5nPEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3Mg
QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3Mg
QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBp
bmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRPYmplY3QoY29uc3QgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvciogYnVmZmVyRGVzYywg
TlM6OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2NsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3IgOiBw
dWJsaWMgTlM6OkNvcHlpbmc8QXR0cmlidXRlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEF0
dHJpYnV0ZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkF0dHJpYnV0ZUZv
cm1hdCAgICAgICAgICAgICAgZm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEZvcm1hdChNVEw6OkF0dHJpYnV0ZUZvcm1hdCBmb3JtYXQpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPZmZzZXQoTlM6OlVJbnRl
Z2VyIG9mZnNldCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgYnVm
ZmVySW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0QnVmZmVySW5kZXgoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKK307CisKK2NsYXNzIEF0
dHJpYnV0ZURlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QXR0cmlidXRl
RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBdHRyaWJ1dGVE
ZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9y
QXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9yKiAg
ICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBBdHRyaWJ1
dGVEZXNjcmlwdG9yKiBhdHRyaWJ1dGVEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpOworfTsKKwor
Y2xhc3MgU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8U3Rh
Z2VJbnB1dE91dHB1dERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFN0
YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgU3RhZ2VJbnB1
dE91dHB1dERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xhc3MgU3Rh
Z2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIHN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKCk7CisK
KyAgICBjbGFzcyBCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqICAgICAgIGxheW91dHMoKSBj
b25zdDsKKworICAgIGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogICAgICAgICAgYXR0
cmlidXRlcygpIGNvbnN0OworCisgICAgTVRMOjpJbmRleFR5cGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleFR5cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEluZGV4VHlwZShNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEJ1ZmZl
ckluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRJbmRleEJ1ZmZlckluZGV4KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlckluZGV4KTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTsK
K307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QnVm
ZmVyTGF5b3V0RGVzY3JpcHRvciogTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QnVmZmVyTGF5b3V0RGVzY3Jp
cHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExCdWZmZXJMYXlvdXREZXNjcmlwdG9yKSk7Cit9CisK
Ky8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9y
KiBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJv
cGVydHk6IHN0cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QnVmZmVyTGF5b3V0
RGVzY3JpcHRvcjo6c3RyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RyaWRlKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzZXRTdHJpZGUo
TlM6OlVJbnRlZ2VyIHN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RyaWRlXyksIHN0cmlkZSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBzdGVwRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6U3RlcEZ1bmN0aW9uIE1UTDo6QnVm
ZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RlcEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZXBGdW5jdGlvbj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzdGVwRnVuY3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlckxh
eW91dERlc2NyaXB0b3I6OnNldFN0ZXBGdW5jdGlvbihNVEw6OlN0ZXBGdW5jdGlvbiBzdGVwRnVu
Y3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFN0ZXBGdW5jdGlvbl8pLCBzdGVwRnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0
eTogc3RlcFJhdGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkJ1ZmZlckxheW91dERl
c2NyaXB0b3I6OnN0ZXBSYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlcFJhdGUpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnNldFN0ZXBS
YXRlKE5TOjpVSW50ZWdlciBzdGVwUmF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlcFJhdGVfKSwgc3RlcFJhdGUpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yQXJyYXkqIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjphbGxvYygp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QnVmZmVyTGF5b3V0RGVzY3Jp
cHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJh
eSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyTGF5b3V0
RGVzY3JpcHRvckFycmF5KiBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheTo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlw
dG9yQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0Ogor
X01UTF9JTkxJTkUgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBNVEw6OkJ1ZmZlckxheW91
dERlc2NyaXB0b3JBcnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3IqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBpbmRleCk7Cit9
CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBN
VEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGJ1ZmZlckRlc2MsIE5TOjpVSW50ZWdlciBpbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBidWZmZXJEZXNjLCBpbmRleCk7Cit9
CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZURl
c2NyaXB0b3IqIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVy
biBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I+KF9NVExfUFJJVkFU
RV9DTFMoTVRMQXR0cmlidXRlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpBdHRyaWJ1dGVEZXNjcmlw
dG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkF0dHJpYnV0
ZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBmb3JtYXQKK19NVExfSU5MSU5FIE1U
TDo6QXR0cmlidXRlRm9ybWF0IE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6Zm9ybWF0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkF0dHJpYnV0ZUZvcm1h
dD4odGhpcywgX01UTF9QUklWQVRFX1NFTChmb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OnNldEZvcm1hdChNVEw6OkF0dHJpYnV0ZUZvcm1h
dCBmb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEZvcm1hdF8pLCBmb3JtYXQpOworfQorCisvLyBwcm9wZXJ0eTogb2Zmc2V0
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yOjpvZmZz
ZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OnNldE9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRPZmZzZXRfKSwgb2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckluZGV4Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yOjpidWZmZXJJ
bmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlckluZGV4KSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yOjpzZXRCdWZmZXJJbmRleChOUzo6VUlu
dGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlckluZGV4XyksIGJ1ZmZlckluZGV4KTsKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QXR0cmlidXRlRGVzY3Jp
cHRvckFycmF5KiBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheT4o
X01UTF9QUklWQVRFX0NMUyhNVExBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSog
TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBt
ZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6QXR0cmli
dXRlRGVzY3JpcHRvciogTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpB
dHRyaWJ1dGVEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4
ZWRTdWJzY3JpcHRfKSwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4
ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvckFy
cmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yKiBhdHRyaWJ1dGVE
ZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwg
YXR0cmlidXRlRGVzYywgaW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01U
TF9JTkxJTkUgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogTVRMOjpTdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0
YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9J
TkxJTkUgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciogTVRMOjpTdGFnZUlucHV0T3V0
cHV0RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDog
c3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6U3RhZ2VJbnB1dE91
dHB1dERlc2NyaXB0b3IqIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OnN0YWdlSW5w
dXRPdXRwdXREZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExTdGFn
ZUlucHV0T3V0cHV0RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoc3RhZ2VJbnB1dE91dHB1
dERlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IGxheW91dHMKK19NVExfSU5MSU5FIE1U
TDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNj
cmlwdG9yOjpsYXlvdXRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobGF5b3V0cykpOworfQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlcworX01UTF9JTkxJTkUg
TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2Ny
aXB0b3I6OmF0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChhdHRyaWJ1dGVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleFR5cGUKK19NVExfSU5MSU5F
IE1UTDo6SW5kZXhUeXBlIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OmluZGV4VHlw
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRleFR5
cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXhUeXBlKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6c2V0SW5kZXhUeXBlKE1UTDo6
SW5kZXhUeXBlIGluZGV4VHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhUeXBlXyksIGluZGV4VHlwZSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpbmRleEJ1ZmZlckluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6aW5kZXhCdWZmZXJJbmRleCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGluZGV4QnVmZmVySW5kZXgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjpzZXRJbmRleEJ1ZmZlckluZGV4KE5TOjpV
SW50ZWdlciBpbmRleEJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbmRleEJ1ZmZlckluZGV4XyksIGluZGV4QnVm
ZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUZXh0dXJlLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUZXh0dXJlLmhwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lYTJiYTQ5MGU3YWY4NzVjNjIzZGYxODAwMThjNDAxNGNlNDAwMzkzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFRleHR1
cmUuaHBwCkBAIC0wLDAgKzEsNjU4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExUZXh0dXJlLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJp
dmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5j
bHVkZSAiTVRMUGl4ZWxGb3JtYXQuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNp
bmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisjaW5jbHVk
ZSA8SU9TdXJmYWNlL0lPU3VyZmFjZVJlZi5oPgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBUZXh0dXJlVHlwZSkgeworICAgIFRleHR1cmVUeXBlMUQgPSAwLAor
ICAgIFRleHR1cmVUeXBlMURBcnJheSA9IDEsCisgICAgVGV4dHVyZVR5cGUyRCA9IDIsCisgICAg
VGV4dHVyZVR5cGUyREFycmF5ID0gMywKKyAgICBUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGUgPSA0
LAorICAgIFRleHR1cmVUeXBlQ3ViZSA9IDUsCisgICAgVGV4dHVyZVR5cGVDdWJlQXJyYXkgPSA2
LAorICAgIFRleHR1cmVUeXBlM0QgPSA3LAorICAgIFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZUFy
cmF5ID0gOCwKKyAgICBUZXh0dXJlVHlwZVRleHR1cmVCdWZmZXIgPSA5LAorfTsKKworX01UTF9F
TlVNKHVpbnQ4X3QsIFRleHR1cmVTd2l6emxlKSB7CisgICAgVGV4dHVyZVN3aXp6bGVaZXJvID0g
MCwKKyAgICBUZXh0dXJlU3dpenpsZU9uZSA9IDEsCisgICAgVGV4dHVyZVN3aXp6bGVSZWQgPSAy
LAorICAgIFRleHR1cmVTd2l6emxlR3JlZW4gPSAzLAorICAgIFRleHR1cmVTd2l6emxlQmx1ZSA9
IDQsCisgICAgVGV4dHVyZVN3aXp6bGVBbHBoYSA9IDUsCit9OworCitzdHJ1Y3QgVGV4dHVyZVN3
aXp6bGVDaGFubmVscworeworICAgIE1UTDo6VGV4dHVyZVN3aXp6bGUgcmVkOworICAgIE1UTDo6
VGV4dHVyZVN3aXp6bGUgZ3JlZW47CisgICAgTVRMOjpUZXh0dXJlU3dpenpsZSBibHVlOworICAg
IE1UTDo6VGV4dHVyZVN3aXp6bGUgYWxwaGE7Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBTaGFy
ZWRUZXh0dXJlSGFuZGxlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxTaGFyZWRUZXh0dXJlSGFu
ZGxlPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTaGFyZWRUZXh0dXJlSGFuZGxlKiBh
bGxvYygpOworCisgICAgY2xhc3MgU2hhcmVkVGV4dHVyZUhhbmRsZSogICAgICAgIGluaXQoKTsK
KworICAgIGNsYXNzIERldmljZSogICAgICAgICAgICAgICAgICAgICBkZXZpY2UoKSBjb25zdDsK
KworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0Owor
fTsKKworc3RydWN0IFNoYXJlZFRleHR1cmVIYW5kbGVQcml2YXRlCit7Cit9IF9NVExfUEFDS0VE
OworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBUZXh0dXJlVXNhZ2UpIHsKKyAgICBUZXh0
dXJlVXNhZ2VVbmtub3duID0gMCwKKyAgICBUZXh0dXJlVXNhZ2VTaGFkZXJSZWFkID0gMSwKKyAg
ICBUZXh0dXJlVXNhZ2VTaGFkZXJXcml0ZSA9IDIsCisgICAgVGV4dHVyZVVzYWdlUmVuZGVyVGFy
Z2V0ID0gNCwKKyAgICBUZXh0dXJlVXNhZ2VQaXhlbEZvcm1hdFZpZXcgPSAxNiwKK307CisKK19N
VExfRU5VTShOUzo6SW50ZWdlciwgVGV4dHVyZUNvbXByZXNzaW9uVHlwZSkgeworICAgIFRleHR1
cmVDb21wcmVzc2lvblR5cGVMb3NzbGVzcyA9IDAsCisgICAgVGV4dHVyZUNvbXByZXNzaW9uVHlw
ZUxvc3N5ID0gMSwKK307CisKK2NsYXNzIFRleHR1cmVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpD
b3B5aW5nPFRleHR1cmVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBU
ZXh0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFRleHR1cmVEZXNjcmlwdG9y
KiAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiB0
ZXh0dXJlMkREZXNjcmlwdG9yKE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50
ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwgYm9vbCBtaXBtYXBwZWQpOworCisgICAg
c3RhdGljIGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiB0ZXh0dXJlQ3ViZURlc2NyaXB0b3IoTVRM
OjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHNpemUsIGJvb2wgbWlwbWFw
cGVkKTsKKworICAgIHN0YXRpYyBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciogdGV4dHVyZUJ1ZmZl
ckRlc2NyaXB0b3IoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHdp
ZHRoLCBNVEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMsIE1UTDo6VGV4dHVyZVVz
YWdlIHVzYWdlKTsKKworICAgIE1UTDo6VGV4dHVyZVR5cGUgICAgICAgICAgICAgICAgdGV4dHVy
ZVR5cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRl
eHR1cmVUeXBlKE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUpOworCisgICAgTVRMOjpQaXhl
bEZvcm1hdCAgICAgICAgICAgICAgICBwaXhlbEZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIHdpZHRo
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRXaWR0aChO
Uzo6VUludGVnZXIgd2lkdGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICBoZWlnaHQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEhlaWdodChOUzo6VUludGVnZXIgaGVpZ2h0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgZGVwdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldERlcHRoKE5TOjpVSW50ZWdlciBkZXB0aCk7CisKKyAgICBOUzo6VUludGVnZXIg
ICAgICAgICAgICAgICAgICAgIG1pcG1hcExldmVsQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1pcG1hcExldmVsQ291bnQoTlM6OlVJbnRlZ2Vy
IG1pcG1hcExldmVsQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0U2FtcGxlQ291bnQoTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KTsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgICAgICAgICAgYXJyYXlMZW5ndGgoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdlciBh
cnJheUxlbmd0aCk7CisKKyAgICBNVEw6OlJlc291cmNlT3B0aW9ucyAgICAgICAgICAgIHJlc291
cmNlT3B0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0UmVzb3VyY2VPcHRpb25zKE1UTDo6UmVzb3VyY2VPcHRpb25zIHJlc291cmNlT3B0aW9ucyk7
CisKKyAgICBNVEw6OkNQVUNhY2hlTW9kZSAgICAgICAgICAgICAgIGNwdUNhY2hlTW9kZSgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3B1Q2FjaGVNb2Rl
KE1UTDo6Q1BVQ2FjaGVNb2RlIGNwdUNhY2hlTW9kZSk7CisKKyAgICBNVEw6OlN0b3JhZ2VNb2Rl
ICAgICAgICAgICAgICAgIHN0b3JhZ2VNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRTdG9yYWdlTW9kZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VN
b2RlKTsKKworICAgIE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlICAgICAgICAgaGF6YXJkVHJhY2tp
bmdNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRI
YXphcmRUcmFja2luZ01vZGUoTVRMOjpIYXphcmRUcmFja2luZ01vZGUgaGF6YXJkVHJhY2tpbmdN
b2RlKTsKKworICAgIE1UTDo6VGV4dHVyZVVzYWdlICAgICAgICAgICAgICAgdXNhZ2UoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFVzYWdlKE1UTDo6VGV4
dHVyZVVzYWdlIHVzYWdlKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0QWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cyhib29sIGFsbG93R1BV
T3B0aW1pemVkQ29udGVudHMpOworCisgICAgTVRMOjpUZXh0dXJlU3dpenpsZUNoYW5uZWxzICAg
ICBzd2l6emxlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRTd2l6emxlKE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBzd2l6emxlKTsKK307CisKK2Ns
YXNzIFRleHR1cmUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFRleHR1cmUsIFJlc291cmNlPgor
eworcHVibGljOgorICAgIGNsYXNzIFJlc291cmNlKiAgICAgICAgICAgICByb290UmVzb3VyY2Uo
KSBjb25zdDsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICBwYXJlbnRUZXh0dXJl
KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgcGFyZW50UmVsYXRp
dmVMZXZlbCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIHBhcmVu
dFJlbGF0aXZlU2xpY2UoKSBjb25zdDsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAg
ICBidWZmZXIoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBidWZm
ZXJPZmZzZXQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBidWZm
ZXJCeXRlc1BlclJvdygpIGNvbnN0OworCisgICAgSU9TdXJmYWNlUmVmICAgICAgICAgICAgICAg
IGlvc3VyZmFjZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGlv
c3VyZmFjZVBsYW5lKCkgY29uc3Q7CisKKyAgICBNVEw6OlRleHR1cmVUeXBlICAgICAgICAgICAg
dGV4dHVyZVR5cGUoKSBjb25zdDsKKworICAgIE1UTDo6UGl4ZWxGb3JtYXQgICAgICAgICAgICBw
aXhlbEZvcm1hdCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIHdp
ZHRoKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgaGVpZ2h0KCkg
Y29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgZGVwdGgoKSBjb25zdDsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBtaXBtYXBMZXZlbENvdW50KCkgY29u
c3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQoKSBjb25z
dDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBhcnJheUxlbmd0aCgpIGNvbnN0
OworCisgICAgTVRMOjpUZXh0dXJlVXNhZ2UgICAgICAgICAgIHVzYWdlKCkgY29uc3Q7CisKKyAg
ICBib29sICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVhYmxlKCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXJPbmx5KCkgY29uc3Q7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgZmlyc3RNaXBtYXBJblRhaWwoKSBjb25zdDsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICB0YWlsU2l6ZUluQnl0ZXMoKSBjb25z
dDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBpc1NwYXJzZSgpIGNvbnN0Owor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93R1BVT3B0aW1pemVkQ29udGVu
dHMoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICBnZXRCeXRlcyhj
b25zdCB2b2lkKiBwaXhlbEJ5dGVzLCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3csIE5TOjpVSW50
ZWdlciBieXRlc1BlckltYWdlLCBNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZl
bCwgTlM6OlVJbnRlZ2VyIHNsaWNlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICByZXBsYWNlUmVnaW9uKE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVsLCBO
Uzo6VUludGVnZXIgc2xpY2UsIGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50ZWdlciBi
eXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVySW1hZ2UpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgIGdldEJ5dGVzKGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpV
SW50ZWdlciBieXRlc1BlclJvdywgTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2
ZWwpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VSZWdpb24oTVRM
OjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIGNvbnN0IHZvaWQqIHBpeGVsQnl0
ZXMsIE5TOjpVSW50ZWdlciBieXRlc1BlclJvdyk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAg
ICAgICAgICAgbmV3VGV4dHVyZVZpZXcoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCk7CisK
KyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgbmV3VGV4dHVyZVZpZXcoTVRMOjpQaXhl
bEZvcm1hdCBwaXhlbEZvcm1hdCwgTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSwgTlM6OlJh
bmdlIGxldmVsUmFuZ2UsIE5TOjpSYW5nZSBzbGljZVJhbmdlKTsKKworICAgIGNsYXNzIFNoYXJl
ZFRleHR1cmVIYW5kbGUqICBuZXdTaGFyZWRUZXh0dXJlSGFuZGxlKCk7CisKKyAgICBjbGFzcyBU
ZXh0dXJlKiAgICAgICAgICAgICAgcmVtb3RlU3RvcmFnZVRleHR1cmUoKSBjb25zdDsKKworICAg
IGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICBuZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRldmlj
ZShjb25zdCBjbGFzcyBEZXZpY2UqIGRldmljZSk7CisKKyAgICBNVEw6OlRleHR1cmVTd2l6emxl
Q2hhbm5lbHMgc3dpenpsZSgpIGNvbnN0OworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAg
ICAgIG5ld1RleHR1cmVWaWV3KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE1UTDo6VGV4
dHVyZVR5cGUgdGV4dHVyZVR5cGUsIE5TOjpSYW5nZSBsZXZlbFJhbmdlLCBOUzo6UmFuZ2Ugc2xp
Y2VSYW5nZSwgTVRMOjpUZXh0dXJlU3dpenpsZUNoYW5uZWxzIHN3aXp6bGUpOworfTsKKworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTaGFyZWRUZXh0dXJl
SGFuZGxlKiBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlPihfTVRMX1BSSVZBVEVf
Q0xTKE1UTFNoYXJlZFRleHR1cmVIYW5kbGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGUqIE1UTDo6U2hhcmVkVGV4dHVyZUhhbmRs
ZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpTaGFyZWRUZXh0
dXJlSGFuZGxlPigpOworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6
OkRldmljZSogTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlOjpkZXZpY2UoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBO
Uzo6U3RyaW5nKiBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGU6OmxhYmVsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChsYWJlbCkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJ
TkUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlRleHR1cmVEZXNjcmlwdG9y
PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRleHR1cmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhv
ZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogTVRMOjpUZXh0dXJl
RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpU
ZXh0dXJlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogdGV4dHVyZTJERGVz
Y3JpcHRvcldpdGhQaXhlbEZvcm1hdDp3aWR0aDpoZWlnaHQ6bWlwbWFwcGVkOgorX01UTF9JTkxJ
TkUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6dGV4dHVy
ZTJERGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBOUzo6VUludGVnZXIg
d2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTFRleHR1cmVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlMkRE
ZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0X3dpZHRoX2hlaWdodF9taXBtYXBwZWRfKSwgcGl4ZWxG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIG1pcG1hcHBlZCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IHRleHR1cmVDdWJlRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdDpzaXplOm1pcG1hcHBlZDoKK19N
VExfSU5MSU5FIE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6
OnRleHR1cmVDdWJlRGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBOUzo6
VUludGVnZXIgc2l6ZSwgYm9vbCBtaXBtYXBwZWQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpUZXh0dXJlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMVGV4
dHVyZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVDdWJlRGVzY3JpcHRvcldp
dGhQaXhlbEZvcm1hdF9zaXplX21pcG1hcHBlZF8pLCBwaXhlbEZvcm1hdCwgc2l6ZSwgbWlwbWFw
cGVkKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogdGV4dHVyZUJ1ZmZlckRlc2NyaXB0b3JXaXRo
UGl4ZWxGb3JtYXQ6d2lkdGg6cmVzb3VyY2VPcHRpb25zOnVzYWdlOgorX01UTF9JTkxJTkUgTVRM
OjpUZXh0dXJlRGVzY3JpcHRvciogTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6dGV4dHVyZUJ1ZmZl
ckRlc2NyaXB0b3IoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHdp
ZHRoLCBNVEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMsIE1UTDo6VGV4dHVyZVVz
YWdlIHVzYWdlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVy
ZURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRleHR1cmVEZXNjcmlwdG9yKSwgX01U
TF9QUklWQVRFX1NFTCh0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdF93aWR0
aF9yZXNvdXJjZU9wdGlvbnNfdXNhZ2VfKSwgcGl4ZWxGb3JtYXQsIHdpZHRoLCByZXNvdXJjZU9w
dGlvbnMsIHVzYWdlKTsKK30KKworLy8gcHJvcGVydHk6IHRleHR1cmVUeXBlCitfTVRMX0lOTElO
RSBNVEw6OlRleHR1cmVUeXBlIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnRleHR1cmVUeXBlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVUeXBl
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVUeXBlKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0VGV4dHVyZVR5cGUoTVRMOjpUZXh0dXJl
VHlwZSB0ZXh0dXJlVHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0VGV4dHVyZVR5cGVfKSwgdGV4dHVyZVR5cGUpOworfQorCisv
LyBwcm9wZXJ0eTogcGl4ZWxGb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6UGl4ZWxGb3JtYXQgTVRM
OjpUZXh0dXJlRGVzY3JpcHRvcjo6cGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGl4ZWxGb3JtYXQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocGl4ZWxGb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNj
cmlwdG9yOjpzZXRQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRQ
aXhlbEZvcm1hdF8pLCBwaXhlbEZvcm1hdCk7Cit9CisKKy8vIHByb3BlcnR5OiB3aWR0aAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OndpZHRoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwod2lkdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRl
eHR1cmVEZXNjcmlwdG9yOjpzZXRXaWR0aChOUzo6VUludGVnZXIgd2lkdGgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFdpZHRoXyks
IHdpZHRoKTsKK30KKworLy8gcHJvcGVydHk6IGhlaWdodAorX01UTF9JTkxJTkUgTlM6OlVJbnRl
Z2VyIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGhlaWdodCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6
OnNldEhlaWdodChOUzo6VUludGVnZXIgaGVpZ2h0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRIZWlnaHRfKSwgaGVpZ2h0KTsKK30K
KworLy8gcHJvcGVydHk6IGRlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0
dXJlRGVzY3JpcHRvcjo6ZGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXB0aCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldERlcHRoKE5TOjpV
SW50ZWdlciBkZXB0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0RGVwdGhfKSwgZGVwdGgpOworfQorCisvLyBwcm9wZXJ0eTogbWlw
bWFwTGV2ZWxDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZURlc2Ny
aXB0b3I6Om1pcG1hcExldmVsQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtaXBtYXBMZXZl
bENvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6
c2V0TWlwbWFwTGV2ZWxDb3VudChOUzo6VUludGVnZXIgbWlwbWFwTGV2ZWxDb3VudCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWlw
bWFwTGV2ZWxDb3VudF8pLCBtaXBtYXBMZXZlbENvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHNh
bXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlRGVzY3JpcHRv
cjo6c2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3VudCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50
KE5TOjpVSW50ZWdlciBzYW1wbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlQ291bnRfKSwgc2FtcGxlQ291bnQp
OworfQorCisvLyBwcm9wZXJ0eTogYXJyYXlMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjphcnJheUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGFycmF5TGVuZ3RoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVz
Y3JpcHRvcjo6c2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIGFycmF5TGVuZ3RoKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRBcnJh
eUxlbmd0aF8pLCBhcnJheUxlbmd0aCk7Cit9CisKKy8vIHByb3BlcnR5OiByZXNvdXJjZU9wdGlv
bnMKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VPcHRpb25zIE1UTDo6VGV4dHVyZURlc2NyaXB0
b3I6OnJlc291cmNlT3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpSZXNvdXJjZU9wdGlvbnM+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzb3Vy
Y2VPcHRpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRv
cjo6c2V0UmVzb3VyY2VPcHRpb25zKE1UTDo6UmVzb3VyY2VPcHRpb25zIHJlc291cmNlT3B0aW9u
cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0UmVzb3VyY2VPcHRpb25zXyksIHJlc291cmNlT3B0aW9ucyk7Cit9CisKKy8vIHByb3Bl
cnR5OiBjcHVDYWNoZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6Q1BVQ2FjaGVNb2RlIE1UTDo6VGV4
dHVyZURlc2NyaXB0b3I6OmNwdUNhY2hlTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpDUFVDYWNoZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
Y3B1Q2FjaGVNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3Jp
cHRvcjo6c2V0Q3B1Q2FjaGVNb2RlKE1UTDo6Q1BVQ2FjaGVNb2RlIGNwdUNhY2hlTW9kZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
Q3B1Q2FjaGVNb2RlXyksIGNwdUNhY2hlTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdG9yYWdl
TW9kZQorX01UTF9JTkxJTkUgTVRMOjpTdG9yYWdlTW9kZSBNVEw6OlRleHR1cmVEZXNjcmlwdG9y
OjpzdG9yYWdlTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpTdG9yYWdlTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdG9yYWdlTW9kZSkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFN0b3JhZ2VN
b2RlKE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0b3JhZ2VNb2RlXyksIHN0b3Jh
Z2VNb2RlKTsKK30KKworLy8gcHJvcGVydHk6IGhhemFyZFRyYWNraW5nTW9kZQorX01UTF9JTkxJ
TkUgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6aGF6YXJk
VHJhY2tpbmdNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkhhemFyZFRyYWNraW5nTW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChoYXphcmRUcmFj
a2luZ01vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9y
OjpzZXRIYXphcmRUcmFja2luZ01vZGUoTVRMOjpIYXphcmRUcmFja2luZ01vZGUgaGF6YXJkVHJh
Y2tpbmdNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRIYXphcmRUcmFja2luZ01vZGVfKSwgaGF6YXJkVHJhY2tpbmdNb2RlKTsK
K30KKworLy8gcHJvcGVydHk6IHVzYWdlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVVc2FnZSBN
VEw6OlRleHR1cmVEZXNjcmlwdG9yOjp1c2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVXNhZ2U+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
dXNhZ2UpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpz
ZXRVc2FnZShNVEw6OlRleHR1cmVVc2FnZSB1c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VXNhZ2VfKSwgdXNhZ2UpOworfQor
CisvLyBwcm9wZXJ0eTogYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cworX01UTF9JTkxJTkUgYm9v
bCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjphbGxvd0dQVU9wdGltaXplZENvbnRlbnRzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGFsbG93R1BVT3B0aW1pemVkQ29udGVudHMpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRBbGxvd0dQVU9wdGltaXplZENvbnRlbnRz
KGJvb2wgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QWxsb3dHUFVPcHRpbWl6ZWRDb250
ZW50c18pLCBhbGxvd0dQVU9wdGltaXplZENvbnRlbnRzKTsKK30KKworLy8gcHJvcGVydHk6IHN3
aXp6bGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBNVEw6OlRleHR1
cmVEZXNjcmlwdG9yOjpzd2l6emxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHM+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc3dpenpsZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0
b3I6OnNldFN3aXp6bGUoTVRMOjpUZXh0dXJlU3dpenpsZUNoYW5uZWxzIHN3aXp6bGUpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN3
aXp6bGVfKSwgc3dpenpsZSk7Cit9CisKKy8vIHByb3BlcnR5OiByb290UmVzb3VyY2UKK19NVExf
SU5MSU5FIE1UTDo6UmVzb3VyY2UqIE1UTDo6VGV4dHVyZTo6cm9vdFJlc291cmNlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChyb290UmVzb3VyY2UpKTsKK30KKworLy8gcHJvcGVydHk6IHBhcmVu
dFRleHR1cmUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpUZXh0dXJlOjpwYXJlbnRU
ZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRl
eHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhcmVudFRleHR1cmUpKTsKK30KKworLy8g
cHJvcGVydHk6IHBhcmVudFJlbGF0aXZlTGV2ZWwKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OlRleHR1cmU6OnBhcmVudFJlbGF0aXZlTGV2ZWwoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChw
YXJlbnRSZWxhdGl2ZUxldmVsKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXJlbnRSZWxhdGl2ZVNs
aWNlCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjpwYXJlbnRSZWxhdGl2
ZVNsaWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGFyZW50UmVsYXRpdmVTbGljZSkpOworfQor
CisvLyBwcm9wZXJ0eTogYnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpUZXh0
dXJlOjpidWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXIpKTsKK30KKworLy8gcHJv
cGVydHk6IGJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVy
ZTo6YnVmZmVyT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVyT2Zmc2V0KSk7Cit9
CisKKy8vIHByb3BlcnR5OiBidWZmZXJCeXRlc1BlclJvdworX01UTF9JTkxJTkUgTlM6OlVJbnRl
Z2VyIE1UTDo6VGV4dHVyZTo6YnVmZmVyQnl0ZXNQZXJSb3coKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChidWZmZXJCeXRlc1BlclJvdykpOworfQorCisvLyBwcm9wZXJ0eTogaW9zdXJmYWNlCitfTVRM
X0lOTElORSBJT1N1cmZhY2VSZWYgTVRMOjpUZXh0dXJlOjppb3N1cmZhY2UoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPElPU3VyZmFjZVJlZj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChpb3N1cmZhY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGlvc3VyZmFjZVBsYW5l
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjppb3N1cmZhY2VQbGFuZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlvc3VyZmFjZVBsYW5lKSk7Cit9CisKKy8vIHByb3BlcnR5
OiB0ZXh0dXJlVHlwZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlVHlwZSBNVEw6OlRleHR1cmU6
OnRleHR1cmVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OlRleHR1cmVUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVUeXBlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBwaXhlbEZvcm1hdAorX01UTF9JTkxJTkUgTVRMOjpQaXhlbEZvcm1h
dCBNVEw6OlRleHR1cmU6OnBpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBp
eGVsRm9ybWF0KSk7Cit9CisKKy8vIHByb3BlcnR5OiB3aWR0aAorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6VGV4dHVyZTo6d2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3aWR0aCkp
OworfQorCisvLyBwcm9wZXJ0eTogaGVpZ2h0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpUZXh0dXJlOjpoZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChoZWlnaHQpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGRlcHRoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJl
OjpkZXB0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRoKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBtaXBtYXBMZXZlbENvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJl
OjptaXBtYXBMZXZlbENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWlwbWFwTGV2ZWxDb3Vu
dCkpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OlRleHR1cmU6OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2Ft
cGxlQ291bnQpKTsKK30KKworLy8gcHJvcGVydHk6IGFycmF5TGVuZ3RoCitfTVRMX0lOTElORSBO
Uzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjphcnJheUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGFycmF5TGVuZ3RoKSk7Cit9CisKKy8vIHByb3BlcnR5OiB1c2FnZQorX01UTF9JTkxJTkUg
TVRMOjpUZXh0dXJlVXNhZ2UgTVRMOjpUZXh0dXJlOjp1c2FnZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVXNhZ2U+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodXNhZ2UpKTsKK30KKworLy8gcHJvcGVydHk6IHNoYXJlYWJsZQorX01UTF9JTkxJ
TkUgYm9vbCBNVEw6OlRleHR1cmU6OnNoYXJlYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc1NoYXJlYWJs
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogZnJhbWVidWZmZXJPbmx5CitfTVRMX0lOTElORSBib29s
IE1UTDo6VGV4dHVyZTo6ZnJhbWVidWZmZXJPbmx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzRnJhbWVidWZm
ZXJPbmx5KSk7Cit9CisKKy8vIHByb3BlcnR5OiBmaXJzdE1pcG1hcEluVGFpbAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6Zmlyc3RNaXBtYXBJblRhaWwoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChmaXJzdE1pcG1hcEluVGFpbCkpOworfQorCisvLyBwcm9wZXJ0eTogdGFp
bFNpemVJbkJ5dGVzCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpUZXh0dXJlOjp0YWls
U2l6ZUluQnl0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0YWlsU2l6ZUluQnl0ZXMpKTsKK30K
KworLy8gcHJvcGVydHk6IGlzU3BhcnNlCitfTVRMX0lOTElORSBib29sIE1UTDo6VGV4dHVyZTo6
aXNTcGFyc2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNTcGFyc2UpKTsKK30KKworLy8gcHJvcGVydHk6IGFs
bG93R1BVT3B0aW1pemVkQ29udGVudHMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpUZXh0dXJlOjph
bGxvd0dQVU9wdGltaXplZENvbnRlbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFsbG93R1BVT3B0aW1pemVk
Q29udGVudHMpKTsKK30KKworLy8gbWV0aG9kOiBnZXRCeXRlczpieXRlc1BlclJvdzpieXRlc1Bl
ckltYWdlOmZyb21SZWdpb246bWlwbWFwTGV2ZWw6c2xpY2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6VGV4dHVyZTo6Z2V0Qnl0ZXMoY29uc3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2Vy
IGJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgYnl0ZXNQZXJJbWFnZSwgTVRMOjpSZWdpb24gcmVn
aW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIE5TOjpVSW50ZWdlciBzbGljZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZ2V0Qnl0ZXNfYnl0
ZXNQZXJSb3dfYnl0ZXNQZXJJbWFnZV9mcm9tUmVnaW9uX21pcG1hcExldmVsX3NsaWNlXyksIHBp
eGVsQnl0ZXMsIGJ5dGVzUGVyUm93LCBieXRlc1BlckltYWdlLCByZWdpb24sIGxldmVsLCBzbGlj
ZSk7Cit9CisKKy8vIG1ldGhvZDogcmVwbGFjZVJlZ2lvbjptaXBtYXBMZXZlbDpzbGljZTp3aXRo
Qnl0ZXM6Ynl0ZXNQZXJSb3c6Ynl0ZXNQZXJJbWFnZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpU
ZXh0dXJlOjpyZXBsYWNlUmVnaW9uKE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxl
dmVsLCBOUzo6VUludGVnZXIgc2xpY2UsIGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50
ZWdlciBieXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVySW1hZ2UpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlcGxhY2VSZWdp
b25fbWlwbWFwTGV2ZWxfc2xpY2Vfd2l0aEJ5dGVzX2J5dGVzUGVyUm93X2J5dGVzUGVySW1hZ2Vf
KSwgcmVnaW9uLCBsZXZlbCwgc2xpY2UsIHBpeGVsQnl0ZXMsIGJ5dGVzUGVyUm93LCBieXRlc1Bl
ckltYWdlKTsKK30KKworLy8gbWV0aG9kOiBnZXRCeXRlczpieXRlc1BlclJvdzpmcm9tUmVnaW9u
Om1pcG1hcExldmVsOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmU6OmdldEJ5dGVzKGNv
bnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50ZWdlciBieXRlc1BlclJvdywgTVRMOjpSZWdp
b24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdldEJ5dGVzX2J5dGVzUGVyUm93X2Zyb21S
ZWdpb25fbWlwbWFwTGV2ZWxfKSwgcGl4ZWxCeXRlcywgYnl0ZXNQZXJSb3csIHJlZ2lvbiwgbGV2
ZWwpOworfQorCisvLyBtZXRob2Q6IHJlcGxhY2VSZWdpb246bWlwbWFwTGV2ZWw6d2l0aEJ5dGVz
OmJ5dGVzUGVyUm93OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmU6OnJlcGxhY2VSZWdp
b24oTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWwsIGNvbnN0IHZvaWQqIHBp
eGVsQnl0ZXMsIE5TOjpVSW50ZWdlciBieXRlc1BlclJvdykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVwbGFjZVJlZ2lvbl9taXBtYXBM
ZXZlbF93aXRoQnl0ZXNfYnl0ZXNQZXJSb3dfKSwgcmVnaW9uLCBsZXZlbCwgcGl4ZWxCeXRlcywg
Ynl0ZXNQZXJSb3cpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9y
bWF0OgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OlRleHR1cmU6Om5ld1RleHR1cmVW
aWV3KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0
dXJlVmlld1dpdGhQaXhlbEZvcm1hdF8pLCBwaXhlbEZvcm1hdCk7Cit9CisKKy8vIG1ldGhvZDog
bmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6dGV4dHVyZVR5cGU6bGV2ZWxzOnNsaWNlczoK
K19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpUZXh0dXJlOjpuZXdUZXh0dXJlVmlldyhN
VEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBl
LCBOUzo6UmFuZ2UgbGV2ZWxSYW5nZSwgTlM6OlJhbmdlIHNsaWNlUmFuZ2UpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdF90ZXh0dXJlVHlwZV9sZXZlbHNfc2xp
Y2VzXyksIHBpeGVsRm9ybWF0LCB0ZXh0dXJlVHlwZSwgbGV2ZWxSYW5nZSwgc2xpY2VSYW5nZSk7
Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkVGV4dHVyZUhhbmRsZQorX01UTF9JTkxJTkUgTVRM
OjpTaGFyZWRUZXh0dXJlSGFuZGxlKiBNVEw6OlRleHR1cmU6Om5ld1NoYXJlZFRleHR1cmVIYW5k
bGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2hhcmVkVGV4dHVy
ZUhhbmRsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3U2hhcmVkVGV4dHVyZUhhbmRsZSkp
OworfQorCisvLyBwcm9wZXJ0eTogcmVtb3RlU3RvcmFnZVRleHR1cmUKK19NVExfSU5MSU5FIE1U
TDo6VGV4dHVyZSogTVRMOjpUZXh0dXJlOjpyZW1vdGVTdG9yYWdlVGV4dHVyZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChyZW1vdGVTdG9yYWdlVGV4dHVyZSkpOworfQorCisvLyBtZXRob2Q6IG5l
d1JlbW90ZVRleHR1cmVWaWV3Rm9yRGV2aWNlOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBN
VEw6OlRleHR1cmU6Om5ld1JlbW90ZVRleHR1cmVWaWV3Rm9yRGV2aWNlKGNvbnN0IE1UTDo6RGV2
aWNlKiBkZXZpY2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0
dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRldmlj
ZV8pLCBkZXZpY2UpOworfQorCisvLyBwcm9wZXJ0eTogc3dpenpsZQorX01UTF9JTkxJTkUgTVRM
OjpUZXh0dXJlU3dpenpsZUNoYW5uZWxzIE1UTDo6VGV4dHVyZTo6c3dpenpsZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlU3dpenpsZUNoYW5u
ZWxzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN3aXp6bGUpKTsKK30KKworLy8gbWV0aG9kOiBu
ZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdDp0ZXh0dXJlVHlwZTpsZXZlbHM6c2xpY2VzOnN3
aXp6bGU6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6VGV4dHVyZTo6bmV3VGV4dHVy
ZVZpZXcoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTVRMOjpUZXh0dXJlVHlwZSB0ZXh0
dXJlVHlwZSwgTlM6OlJhbmdlIGxldmVsUmFuZ2UsIE5TOjpSYW5nZSBzbGljZVJhbmdlLCBNVEw6
OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgc3dpenpsZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1RleHR1
cmVWaWV3V2l0aFBpeGVsRm9ybWF0X3RleHR1cmVUeXBlX2xldmVsc19zbGljZXNfc3dpenpsZV8p
LCBwaXhlbEZvcm1hdCwgdGV4dHVyZVR5cGUsIGxldmVsUmFuZ2UsIHNsaWNlUmFuZ2UsIHN3aXp6
bGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTFR5cGVzLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExU
eXBlcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY4YzRkOWEyYzM4YTU5ZTU0OTNjZTg4OWQwZDVlMmQzN2Fl
YThmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExUeXBlcy5ocHAKQEAgLTAsMCArMSwxNjMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFR5cGVzLmhwcAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBw
PgorCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitzdHJ1Y3Qg
T3JpZ2luCit7CisgICAgT3JpZ2luKCkgPSBkZWZhdWx0OworCisgICAgT3JpZ2luKE5TOjpVSW50
ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHopOworCisgICAgc3RhdGljIE9y
aWdpbiBNYWtlKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHop
OworCisgICAgTlM6OlVJbnRlZ2VyICB4OworICAgIE5TOjpVSW50ZWdlciAgeTsKKyAgICBOUzo6
VUludGVnZXIgIHo7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgU2l6ZQoreworICAgIFNpemUo
KSA9IGRlZmF1bHQ7CisKKyAgICBTaXplKE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2Vy
IGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRlcHRoKTsKKworICAgIHN0YXRpYyBTaXplICBNYWtlKE5T
OjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRlcHRo
KTsKKworICAgIE5TOjpVSW50ZWdlciB3aWR0aDsKKyAgICBOUzo6VUludGVnZXIgaGVpZ2h0Owor
ICAgIE5TOjpVSW50ZWdlciBkZXB0aDsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBSZWdpb24K
K3sKKyAgICBSZWdpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBSZWdpb24oTlM6OlVJbnRlZ2VyIHgs
IE5TOjpVSW50ZWdlciB3aWR0aCk7CisKKyAgICBSZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5TOjpV
SW50ZWdlciB5LCBOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpOworCisg
ICAgUmVnaW9uKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHos
IE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRl
cHRoKTsKKworICAgIHN0YXRpYyBSZWdpb24gTWFrZTFEKE5TOjpVSW50ZWdlciB4LCBOUzo6VUlu
dGVnZXIgd2lkdGgpOworCisgICAgc3RhdGljIFJlZ2lvbiBNYWtlMkQoTlM6OlVJbnRlZ2VyIHgs
IE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQp
OworCisgICAgc3RhdGljIFJlZ2lvbiBNYWtlM0QoTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdl
ciB5LCBOUzo6VUludGVnZXIgeiwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVp
Z2h0LCBOUzo6VUludGVnZXIgZGVwdGgpOworCisgICAgTVRMOjpPcmlnaW4gICBvcmlnaW47Cisg
ICAgTVRMOjpTaXplICAgICBzaXplOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFNhbXBsZVBv
c2l0aW9uOworCit1c2luZyBDb29yZGluYXRlMkQgPSBTYW1wbGVQb3NpdGlvbjsKKworc3RydWN0
IFNhbXBsZVBvc2l0aW9uCit7CisgICAgU2FtcGxlUG9zaXRpb24oKSA9IGRlZmF1bHQ7CisKKyAg
ICBTYW1wbGVQb3NpdGlvbihmbG9hdCBfeCwgZmxvYXQgX3kpOworCisgICAgc3RhdGljIFNhbXBs
ZVBvc2l0aW9uIE1ha2UoZmxvYXQgeCwgZmxvYXQgeSk7CisKKyAgICBmbG9hdCAgICAgICAgICAg
ICAgICAgeDsKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgeTsKK30gX01UTF9QQUNLRUQ7CisK
K30KKworX01UTF9JTkxJTkUgTVRMOjpPcmlnaW46Ok9yaWdpbihOUzo6VUludGVnZXIgX3gsIE5T
OjpVSW50ZWdlciBfeSwgTlM6OlVJbnRlZ2VyIF96KQorICAgIDogeChfeCkKKyAgICAsIHkoX3kp
CisgICAgLCB6KF96KQoreworfQorCitfTVRMX0lOTElORSBNVEw6Ok9yaWdpbiBNVEw6Ok9yaWdp
bjo6TWFrZShOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6KQor
eworICAgIHJldHVybiBPcmlnaW4oeCwgeSwgeik7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6U2l6
ZTo6U2l6ZShOUzo6VUludGVnZXIgX3dpZHRoLCBOUzo6VUludGVnZXIgX2hlaWdodCwgTlM6OlVJ
bnRlZ2VyIF9kZXB0aCkKKyAgICA6IHdpZHRoKF93aWR0aCkKKyAgICAsIGhlaWdodChfaGVpZ2h0
KQorICAgICwgZGVwdGgoX2RlcHRoKQoreworfQorCitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRM
OjpTaXplOjpNYWtlKE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCwgTlM6
OlVJbnRlZ2VyIGRlcHRoKQoreworICAgIHJldHVybiBTaXplKHdpZHRoLCBoZWlnaHQsIGRlcHRo
KTsKK30KKworX01UTF9JTkxJTkUgTVRMOjpSZWdpb246OlJlZ2lvbihOUzo6VUludGVnZXIgeCwg
TlM6OlVJbnRlZ2VyIHdpZHRoKQorICAgIDogb3JpZ2luKHgsIDAsIDApCisgICAgLCBzaXplKHdp
ZHRoLCAxLCAxKQoreworfQorCitfTVRMX0lOTElORSBNVEw6OlJlZ2lvbjo6UmVnaW9uKE5TOjpV
SW50ZWdlciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVn
ZXIgaGVpZ2h0KQorICAgIDogb3JpZ2luKHgsIHksIDApCisgICAgLCBzaXplKHdpZHRoLCBoZWln
aHQsIDEpCit7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6UmVnaW9uOjpSZWdpb24oTlM6OlVJbnRl
Z2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgeiwgTlM6OlVJbnRlZ2VyIHdpZHRo
LCBOUzo6VUludGVnZXIgaGVpZ2h0LCBOUzo6VUludGVnZXIgZGVwdGgpCisgICAgOiBvcmlnaW4o
eCwgeSwgeikKKyAgICAsIHNpemUod2lkdGgsIGhlaWdodCwgZGVwdGgpCit7Cit9CisKK19NVExf
SU5MSU5FIE1UTDo6UmVnaW9uIE1UTDo6UmVnaW9uOjpNYWtlMUQoTlM6OlVJbnRlZ2VyIHgsIE5T
OjpVSW50ZWdlciB3aWR0aCkKK3sKKyAgICByZXR1cm4gUmVnaW9uKHgsIHdpZHRoKTsKK30KKwor
X01UTF9JTkxJTkUgTVRMOjpSZWdpb24gTVRMOjpSZWdpb246Ok1ha2UyRChOUzo6VUludGVnZXIg
eCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdo
dCkKK3sKKyAgICByZXR1cm4gUmVnaW9uKHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQorCitfTVRM
X0lOTElORSBNVEw6OlJlZ2lvbiBNVEw6OlJlZ2lvbjo6TWFrZTNEKE5TOjpVSW50ZWdlciB4LCBO
Uzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHosIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJ
bnRlZ2VyIGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRlcHRoKQoreworICAgIHJldHVybiBSZWdpb24o
eCwgeSwgeiwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworfQorCitfTVRMX0lOTElORSBNVEw6OlNh
bXBsZVBvc2l0aW9uOjpTYW1wbGVQb3NpdGlvbihmbG9hdCBfeCwgZmxvYXQgX3kpCisgICAgOiB4
KF94KQorICAgICwgeShfeSkKK3sKK30KKworX01UTF9JTkxJTkUgTVRMOjpTYW1wbGVQb3NpdGlv
biBNVEw6OlNhbXBsZVBvc2l0aW9uOjpNYWtlKGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgcmV0
dXJuIFNhbXBsZVBvc2l0aW9uKHgsIHkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZlcnRleERlc2NyaXB0b3IuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZlcnRleERlc2NyaXB0b3IuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmUxN2Y4MjNhYTBhZjk1MzBiMjVjMzMxYTlmNTZkMTI1NjY3NjM4NTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmVydGV4
RGVzY3JpcHRvci5ocHAKQEAgLTAsMCArMSwzNDQgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFZlcnRleERlc2NyaXB0b3Iu
aHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIK
KyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCIKKworbmFtZXNw
YWNlIE1UTAoreworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVmVydGV4Rm9ybWF0KSB7CisgICAg
VmVydGV4Rm9ybWF0SW52YWxpZCA9IDAsCisgICAgVmVydGV4Rm9ybWF0VUNoYXIyID0gMSwKKyAg
ICBWZXJ0ZXhGb3JtYXRVQ2hhcjMgPSAyLAorICAgIFZlcnRleEZvcm1hdFVDaGFyNCA9IDMsCisg
ICAgVmVydGV4Rm9ybWF0Q2hhcjIgPSA0LAorICAgIFZlcnRleEZvcm1hdENoYXIzID0gNSwKKyAg
ICBWZXJ0ZXhGb3JtYXRDaGFyNCA9IDYsCisgICAgVmVydGV4Rm9ybWF0VUNoYXIyTm9ybWFsaXpl
ZCA9IDcsCisgICAgVmVydGV4Rm9ybWF0VUNoYXIzTm9ybWFsaXplZCA9IDgsCisgICAgVmVydGV4
Rm9ybWF0VUNoYXI0Tm9ybWFsaXplZCA9IDksCisgICAgVmVydGV4Rm9ybWF0Q2hhcjJOb3JtYWxp
emVkID0gMTAsCisgICAgVmVydGV4Rm9ybWF0Q2hhcjNOb3JtYWxpemVkID0gMTEsCisgICAgVmVy
dGV4Rm9ybWF0Q2hhcjROb3JtYWxpemVkID0gMTIsCisgICAgVmVydGV4Rm9ybWF0VVNob3J0MiA9
IDEzLAorICAgIFZlcnRleEZvcm1hdFVTaG9ydDMgPSAxNCwKKyAgICBWZXJ0ZXhGb3JtYXRVU2hv
cnQ0ID0gMTUsCisgICAgVmVydGV4Rm9ybWF0U2hvcnQyID0gMTYsCisgICAgVmVydGV4Rm9ybWF0
U2hvcnQzID0gMTcsCisgICAgVmVydGV4Rm9ybWF0U2hvcnQ0ID0gMTgsCisgICAgVmVydGV4Rm9y
bWF0VVNob3J0Mk5vcm1hbGl6ZWQgPSAxOSwKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQzTm9ybWFs
aXplZCA9IDIwLAorICAgIFZlcnRleEZvcm1hdFVTaG9ydDROb3JtYWxpemVkID0gMjEsCisgICAg
VmVydGV4Rm9ybWF0U2hvcnQyTm9ybWFsaXplZCA9IDIyLAorICAgIFZlcnRleEZvcm1hdFNob3J0
M05vcm1hbGl6ZWQgPSAyMywKKyAgICBWZXJ0ZXhGb3JtYXRTaG9ydDROb3JtYWxpemVkID0gMjQs
CisgICAgVmVydGV4Rm9ybWF0SGFsZjIgPSAyNSwKKyAgICBWZXJ0ZXhGb3JtYXRIYWxmMyA9IDI2
LAorICAgIFZlcnRleEZvcm1hdEhhbGY0ID0gMjcsCisgICAgVmVydGV4Rm9ybWF0RmxvYXQgPSAy
OCwKKyAgICBWZXJ0ZXhGb3JtYXRGbG9hdDIgPSAyOSwKKyAgICBWZXJ0ZXhGb3JtYXRGbG9hdDMg
PSAzMCwKKyAgICBWZXJ0ZXhGb3JtYXRGbG9hdDQgPSAzMSwKKyAgICBWZXJ0ZXhGb3JtYXRJbnQg
PSAzMiwKKyAgICBWZXJ0ZXhGb3JtYXRJbnQyID0gMzMsCisgICAgVmVydGV4Rm9ybWF0SW50MyA9
IDM0LAorICAgIFZlcnRleEZvcm1hdEludDQgPSAzNSwKKyAgICBWZXJ0ZXhGb3JtYXRVSW50ID0g
MzYsCisgICAgVmVydGV4Rm9ybWF0VUludDIgPSAzNywKKyAgICBWZXJ0ZXhGb3JtYXRVSW50MyA9
IDM4LAorICAgIFZlcnRleEZvcm1hdFVJbnQ0ID0gMzksCisgICAgVmVydGV4Rm9ybWF0SW50MTAx
MDEwMk5vcm1hbGl6ZWQgPSA0MCwKKyAgICBWZXJ0ZXhGb3JtYXRVSW50MTAxMDEwMk5vcm1hbGl6
ZWQgPSA0MSwKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hhcjROb3JtYWxpemVkX0JHUkEgPSA0MiwKKyAg
ICBWZXJ0ZXhGb3JtYXRVQ2hhciA9IDQ1LAorICAgIFZlcnRleEZvcm1hdENoYXIgPSA0NiwKKyAg
ICBWZXJ0ZXhGb3JtYXRVQ2hhck5vcm1hbGl6ZWQgPSA0NywKKyAgICBWZXJ0ZXhGb3JtYXRDaGFy
Tm9ybWFsaXplZCA9IDQ4LAorICAgIFZlcnRleEZvcm1hdFVTaG9ydCA9IDQ5LAorICAgIFZlcnRl
eEZvcm1hdFNob3J0ID0gNTAsCisgICAgVmVydGV4Rm9ybWF0VVNob3J0Tm9ybWFsaXplZCA9IDUx
LAorICAgIFZlcnRleEZvcm1hdFNob3J0Tm9ybWFsaXplZCA9IDUyLAorICAgIFZlcnRleEZvcm1h
dEhhbGYgPSA1MywKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFZlcnRleFN0ZXBGdW5j
dGlvbikgeworICAgIFZlcnRleFN0ZXBGdW5jdGlvbkNvbnN0YW50ID0gMCwKKyAgICBWZXJ0ZXhT
dGVwRnVuY3Rpb25QZXJWZXJ0ZXggPSAxLAorICAgIFZlcnRleFN0ZXBGdW5jdGlvblBlckluc3Rh
bmNlID0gMiwKKyAgICBWZXJ0ZXhTdGVwRnVuY3Rpb25QZXJQYXRjaCA9IDMsCisgICAgVmVydGV4
U3RlcEZ1bmN0aW9uUGVyUGF0Y2hDb250cm9sUG9pbnQgPSA0LAorfTsKKworY2xhc3MgVmVydGV4
QnVmZmVyTGF5b3V0RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxWZXJ0ZXhCdWZmZXJM
YXlvdXREZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBWZXJ0ZXhCdWZm
ZXJMYXlvdXREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4QnVmZmVyTGF5
b3V0RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RyaWRlKE5TOjpVSW50ZWdlciBzdHJp
ZGUpOworCisgICAgTVRMOjpWZXJ0ZXhTdGVwRnVuY3Rpb24gICAgICAgICAgICAgICAgICAgIHN0
ZXBGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRTdGVwRnVuY3Rpb24oTVRMOjpWZXJ0ZXhTdGVwRnVuY3Rpb24gc3RlcEZ1
bmN0aW9uKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGVwUmF0ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRTdGVwUmF0ZShOUzo6VUludGVnZXIgc3RlcFJhdGUpOworfTsKKworY2xh
c3MgVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVu
Y2luZzxWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAg
c3RhdGljIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsK
KworICAgIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogICAgICAgIGlu
aXQoKTsKKworICAgIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqICAgICAgICAg
ICAgIG9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFZlcnRl
eEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGJ1ZmZlckRlc2MsIE5TOjpVSW50ZWdlciBpbmRleCk7
Cit9OworCitjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBWZXJ0
ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpWZXJ0ZXhG
b3JtYXQgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGb3JtYXQoTVRMOjpWZXJ0ZXhGb3Jt
YXQgZm9ybWF0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlckluZGV4KCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJ1ZmZlckluZGV4KE5TOjpV
SW50ZWdlciBidWZmZXJJbmRleCk7Cit9OworCitjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlw
dG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0
b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVz
Y3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3Jp
cHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVz
Y3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29u
c3QgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciogYXR0cmlidXRlRGVzYywgTlM6OlVJ
bnRlZ2VyIGluZGV4KTsKK307CisKK2NsYXNzIFZlcnRleERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6
OkNvcHlpbmc8VmVydGV4RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
VmVydGV4RGVzY3JpcHRvciogICAgICAgICAgIGFsbG9jKCk7CisKKyAgICBjbGFzcyBWZXJ0ZXhE
ZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBW
ZXJ0ZXhEZXNjcmlwdG9yKiAgICAgICAgICAgdmVydGV4RGVzY3JpcHRvcigpOworCisgICAgY2xh
c3MgVmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiBsYXlvdXRzKCkgY29uc3Q7CisK
KyAgICBjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqICAgIGF0dHJpYnV0ZXMo
KSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzZXQoKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhCdWZmZXJMYXlv
dXREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1U
TDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExWZXJ0
ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9J
TkxJTkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBNVEw6OlZlcnRleEJ1ZmZl
ckxheW91dERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0
PE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6
IHN0cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0
RGVzY3JpcHRvcjo6c3RyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RyaWRlKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzZXRT
dHJpZGUoTlM6OlVJbnRlZ2VyIHN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RyaWRlXyksIHN0cmlkZSk7Cit9CisKKy8v
IHByb3BlcnR5OiBzdGVwRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6VmVydGV4U3RlcEZ1bmN0
aW9uIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c3RlcEZ1bmN0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleFN0ZXBGdW5j
dGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGVwRnVuY3Rpb24pKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnNldFN0ZXBGdW5j
dGlvbihNVEw6OlZlcnRleFN0ZXBGdW5jdGlvbiBzdGVwRnVuY3Rpb24pCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0ZXBGdW5jdGlv
bl8pLCBzdGVwRnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogc3RlcFJhdGUKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnN0ZXBS
YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlcFJhdGUpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnNldFN0ZXBSYXRlKE5TOjpV
SW50ZWdlciBzdGVwUmF0ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0U3RlcFJhdGVfKSwgc3RlcFJhdGUpOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNj
cmlwdG9yQXJyYXkqIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjphbGxv
YygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VmVydGV4QnVmZmVyTGF5
b3V0RGVzY3JpcHRvckFycmF5PihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleEJ1ZmZlckxheW91
dERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiBNVEw6OlZlcnRleEJ1ZmZlckxh
eW91dERlc2NyaXB0b3JBcnJheTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6Omlu
aXQ8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+KCk7Cit9CisKKy8vIG1l
dGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhC
dWZmZXJMYXlvdXREZXNjcmlwdG9yKiBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JB
cnJheTo6b2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBpbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBN
VEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGJ1ZmZlckRlc2MsIE5TOjpVSW50ZWdl
ciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCBidWZmZXJEZXNjLCBpbmRl
eCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlZlcnRl
eEF0dHJpYnV0ZURlc2NyaXB0b3IqIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlZlcnRleEF0dHJpYnV0
ZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
cikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QXR0cmli
dXRlRGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjppbml0KCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0
b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBmb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4
Rm9ybWF0IE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6Zm9ybWF0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleEZvcm1hdD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChmb3JtYXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OnNldEZvcm1hdChNVEw6OlZlcnRleEZvcm1hdCBmb3Jt
YXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEZvcm1hdF8pLCBmb3JtYXQpOworfQorCisvLyBwcm9wZXJ0eTogb2Zmc2V0CitfTVRM
X0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjpvZmZz
ZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvZmZzZXQpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OnNldE9mZnNldChOUzo6VUludGVnZXIg
b2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRPZmZzZXRfKSwgb2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlcklu
ZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlw
dG9yOjpidWZmZXJJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlckluZGV4KSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjpzZXRC
dWZmZXJJbmRleChOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlckluZGV4XyksIGJ1
ZmZlckluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiBNVEw6OlZlcnRleEF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxN
VEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExW
ZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0
ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0Ojppbml0PE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5PigpOworfQorCisv
LyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6VmVy
dGV4QXR0cmlidXRlRGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJy
YXk6Om9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgaW5kZXgpOworfQorCisvLyBtZXRo
b2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpWZXJ0
ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiBhdHRyaWJ1dGVEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0cmlidXRlRGVzYywgaW5kZXgpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhEZXNj
cmlwdG9yKiBNVEw6OlZlcnRleERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8TVRMOjpWZXJ0ZXhEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TFZlcnRleERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBN
VEw6OlZlcnRleERlc2NyaXB0b3IqIE1UTDo6VmVydGV4RGVzY3JpcHRvcjo6aW5pdCgpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhEZXNjcmlwdG9yPigpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiB2ZXJ0ZXhEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlZl
cnRleERlc2NyaXB0b3IqIE1UTDo6VmVydGV4RGVzY3JpcHRvcjo6dmVydGV4RGVzY3JpcHRvcigp
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhEZXNjcmlwdG9y
Kj4oX01UTF9QUklWQVRFX0NMUyhNVExWZXJ0ZXhEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NF
TCh2ZXJ0ZXhEZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYXlvdXRzCitfTVRMX0lO
TElORSBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhE
ZXNjcmlwdG9yOjpsYXlvdXRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobGF5b3V0cykpOworfQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlcworX01U
TF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIE1UTDo6VmVydGV4
RGVzY3JpcHRvcjo6YXR0cmlidXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGF0dHJpYnV0ZXMpKTsKK30KKworLy8gbWV0aG9kOiByZXNldAorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlZlcnRleERlc2NyaXB0b3I6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNpYmxl
RnVuY3Rpb25UYWJsZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzNGQzYTFhNmNlMTBiOTI1
Y2Y2MTI1NmZlZDUxNmRjMzMwYmRkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwCkBAIC0w
LDAgKzEsOTYgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIE1ldGFsL01UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmlu
ZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJp
dmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5j
bHVkZSAiTVRMRnVuY3Rpb25IYW5kbGUuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIK
KworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9y
IDogcHVibGljIE5TOjpDb3B5aW5nPFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9y
KiBhbGxvYygpOworCisgICAgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiAg
ICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlRGVz
Y3JpcHRvciogdmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkNvdW50KCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
RnVuY3Rpb25Db3VudChOUzo6VUludGVnZXIgZnVuY3Rpb25Db3VudCk7Cit9OworCitjbGFzcyBW
aXNpYmxlRnVuY3Rpb25UYWJsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8VmlzaWJsZUZ1bmN0
aW9uVGFibGUsIFJlc291cmNlPgoreworcHVibGljOgorICAgIHZvaWQgc2V0RnVuY3Rpb24oY29u
c3QgY2xhc3MgRnVuY3Rpb25IYW5kbGUqIGZ1bmN0aW9uLCBOUzo6VUludGVnZXIgaW5kZXgpOwor
CisgICAgdm9pZCBzZXRGdW5jdGlvbnMoY29uc3QgY2xhc3MgRnVuY3Rpb25IYW5kbGUqIGZ1bmN0
aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IqIE1U
TDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcikpOworfQor
CisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVE
ZXNjcmlwdG9yKiBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURl
c2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHZpc2libGVGdW5jdGlvblRhYmxl
RGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0
b3IqIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yOjp2aXNpYmxlRnVuY3Rpb25U
YWJsZURlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExWaXNp
YmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHZpc2libGVGdW5j
dGlvblRhYmxlRGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25Db3VudAor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlw
dG9yOjpmdW5jdGlvbkNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25Db3VudCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlw
dG9yOjpzZXRGdW5jdGlvbkNvdW50KE5TOjpVSW50ZWdlciBmdW5jdGlvbkNvdW50KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGdW5j
dGlvbkNvdW50XyksIGZ1bmN0aW9uQ291bnQpOworfQorCisvLyBtZXRob2Q6IHNldEZ1bmN0aW9u
OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGU6OnNl
dEZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb25IYW5kbGUqIGZ1bmN0aW9uLCBOUzo6VUludGVn
ZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEZ1bmN0aW9uX2F0SW5kZXhfKSwgZnVuY3Rpb24sIGluZGV4KTsKK30KKwor
Ly8gbWV0aG9kOiBzZXRGdW5jdGlvbnM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlZpc2libGVGdW5jdGlvblRhYmxlOjpzZXRGdW5jdGlvbnMoY29uc3QgTVRMOjpGdW5jdGlvbkhh
bmRsZSogZnVuY3Rpb25zW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnVuY3Rpb25zX3dpdGhSYW5n
ZV8pLCBmdW5jdGlvbnMsIHJhbmdlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NZXRhbC5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTWV0YWwuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2YTM2MDY2YjU5MjUzZGJkN2RhY2Vi
NzQ2YzBjOTQxNDMzZmZjZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTWV0YWwuaHBwCkBAIC0wLDAgKzEsODAgQEAKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01ldGFsLmhw
cAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJN
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwIgorI2luY2x1ZGUgIk1UTEFjY2VsZXJhdGlvblN0
cnVjdHVyZUNvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVUeXBlcy5ocHAiCisjaW5jbHVkZSAiTVRMQXJndW1lbnQuaHBwIgorI2luY2x1ZGUgIk1U
TEFyZ3VtZW50RW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMQmluYXJ5QXJjaGl2ZS5ocHAiCisj
aW5jbHVkZSAiTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExCbGl0UGFz
cy5ocHAiCisjaW5jbHVkZSAiTVRMQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExDYXB0dXJlTWFu
YWdlci5ocHAiCisjaW5jbHVkZSAiTVRMQ2FwdHVyZVNjb3BlLmhwcCIKKyNpbmNsdWRlICJNVExD
b21tYW5kQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5j
bHVkZSAiTVRMQ29tbWFuZFF1ZXVlLmhwcCIKKyNpbmNsdWRlICJNVExDb21wdXRlQ29tbWFuZEVu
Y29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbXB1dGVQYXNzLmhwcCIKKyNpbmNsdWRlICJNVExD
b21wdXRlUGlwZWxpbmUuaHBwIgorI2luY2x1ZGUgIk1UTENvdW50ZXJzLmhwcCIKKyNpbmNsdWRl
ICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExEZXB0aFN0ZW5jaWwuaHBwIgorI2luY2x1
ZGUgIk1UTERldmljZS5ocHAiCisjaW5jbHVkZSAiTVRMRHJhd2FibGUuaHBwIgorI2luY2x1ZGUg
Ik1UTER5bmFtaWNMaWJyYXJ5LmhwcCIKKyNpbmNsdWRlICJNVExFdmVudC5ocHAiCisjaW5jbHVk
ZSAiTVRMRmVuY2UuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBw
IgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMRnVu
Y3Rpb25IYW5kbGUuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0aW9uTG9nLmhwcCIKKyNpbmNsdWRl
ICJNVExGdW5jdGlvblN0aXRjaGluZy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExIZWFwLmhwcCIKKyNpbmNsdWRlICJNVExJbmRpcmVjdENvbW1hbmRC
dWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwIgorI2lu
Y2x1ZGUgIk1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwIgorI2luY2x1ZGUgIk1UTExp
YnJhcnkuaHBwIgorI2luY2x1ZGUgIk1UTExpbmtlZEZ1bmN0aW9ucy5ocHAiCisjaW5jbHVkZSAi
TVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMUGlwZWxp
bmUuaHBwIgorI2luY2x1ZGUgIk1UTFBpeGVsRm9ybWF0LmhwcCIKKyNpbmNsdWRlICJNVExQcml2
YXRlLmhwcCIKKyNpbmNsdWRlICJNVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHAiCisjaW5jbHVkZSAi
TVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlclBhc3MuaHBw
IgorI2luY2x1ZGUgIk1UTFJlbmRlclBpcGVsaW5lLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJj
ZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyLmhwcCIKKyNp
bmNsdWRlICJNVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAiCisjaW5jbHVkZSAiTVRMU2FtcGxlci5o
cHAiCisjaW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwIgorI2luY2x1
ZGUgIk1UTFRleHR1cmUuaHBwIgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlICJN
VExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCIKKyNpbmNsdWRlICJNVExWaXNpYmxlRnVuY3Rpb25UYWJs
ZS5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FE
ZWZpbmVzLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NB
RGVmaW5lcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFmN2VmZmUzYTE4M2ViMjI2YjdlMGE5MDZlNDJiMjlh
YWZkMDEyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9RdWFydHpDb3JlL0NBRGVmaW5lcy5ocHAKQEAgLTAsMCArMSw0MSBAQAorLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gUXVhcnR6Q29yZS9DQURl
ZmluZXMuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lu
Y2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgX0NBX0VYUE9SVCBfTlNfRVhQ
T1JUCisjZGVmaW5lIF9DQV9FWFRFUk4gX05TX0VYVEVSTgorI2RlZmluZSBfQ0FfSU5MSU5FIF9O
U19JTkxJTkUKKyNkZWZpbmUgX0NBX1BBQ0tFRCBfTlNfUEFDS0VECisKKyNkZWZpbmUgX0NBX0NP
TlNUKHR5cGUsIG5hbWUpIF9OU19DT05TVCh0eXBlLCBuYW1lKQorI2RlZmluZSBfQ0FfRU5VTSh0
eXBlLCBuYW1lKSBfTlNfRU5VTSh0eXBlLCBuYW1lKQorI2RlZmluZSBfQ0FfT1BUSU9OUyh0eXBl
LCBuYW1lKSBfTlNfT1BUSU9OUyh0eXBlLCBuYW1lKQorCisjZGVmaW5lIF9DQV9WQUxJREFURV9T
SVpFKG5zLCBuYW1lKSBfTlNfVkFMSURBVEVfU0laRShucywgbmFtZSkKKyNkZWZpbmUgX0NBX1ZB
TElEQVRFX0VOVU0obnMsIG5hbWUpIF9OU19WQUxJREFURV9FTlVNKG5zLCBuYW1lKQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBTWV0YWxEcmF3YWJsZS5o
cHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQU1ldGFsRHJh
d2FibGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMDg3NTcyMWNhOTgwNGZmZGMzNGJhNDVlZjU5NTQyMzA5
NzRhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
UXVhcnR6Q29yZS9DQU1ldGFsRHJhd2FibGUuaHBwCkBAIC0wLDAgKzEsNTcgQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFF1YXJ0ekNvcmUv
Q0FNZXRhbERyYXdhYmxlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5j
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
cHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNpbmNsdWRlICIuLi9NZXRhbC9NVExEcmF3YWJsZS5ocHAiCisjaW5jbHVkZSAiLi4v
TWV0YWwvTVRMVGV4dHVyZS5ocHAiCisKKyNpbmNsdWRlICJDQURlZmluZXMuaHBwIgorI2luY2x1
ZGUgIkNBUHJpdmF0ZS5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCituYW1lc3BhY2UgQ0EKK3sKK2NsYXNzIE1ldGFsRHJhd2FibGUgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPE1ldGFsRHJhd2FibGUsIE1UTDo6RHJhd2FibGU+Cit7CitwdWJs
aWM6CisgICAgY2xhc3MgTWV0YWxMYXllciogbGF5ZXIoKSBjb25zdDsKKyAgICBNVEw6OlRleHR1
cmUqICAgICB0ZXh0dXJlKCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX0NBX0lOTElORSBDQTo6TWV0YWxMYXllciogQ0E6
Ok1ldGFsRHJhd2FibGU6OmxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNZXRhbExheWVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXllcikpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX0NBX0lO
TElORSBNVEw6OlRleHR1cmUqIENBOjpNZXRhbERyYXdhYmxlOjp0ZXh0dXJlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHRleHR1cmUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL1F1YXJ0ekNvcmUvQ0FQcml2YXRlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OWM2MDI0NzAxNTFl
MTg3MzFhNGYzZDNjZWIxYTNiZjdiMmJhZTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FQcml2YXRlLmhwcApAQCAtMCwwICsx
LDEwOSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAy
MSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIkNBRGVmaW5lcy5ocHAiCisKKyNpbmNsdWRlIDxv
YmpjL3J1bnRpbWUuaD4KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNkZWZpbmUgX0NBX1BSSVZBVEVfQ0xTKHN5bWJvbCkgKFByaXZhdGU6OkNsYXNz
OjpzX2sjI3N5bWJvbCkKKyNkZWZpbmUgX0NBX1BSSVZBVEVfU0VMKGFjY2Vzc29yKSAoUHJpdmF0
ZTo6U2VsZWN0b3I6OnNfayMjYWNjZXNzb3IpCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaWYgZGVmaW5lZChDQV9QUklWQVRFX0lNUExFTUVOVEFU
SU9OKQorCisjZGVmaW5lIF9DQV9QUklWQVRFX1ZJU0lCSUxJVFkgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSgiaGlkZGVuIikpKQorI2RlZmluZSBfQ0FfUFJJVkFURV9JTVBPUlQgX19hdHRyaWJ1
dGVfXygod2Vha19pbXBvcnQpKQorCisjaWYgX19PQkpDX18KKyNkZWZpbmUgX0NBX1BSSVZBVEVf
T0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKSAoKF9fYnJpZGdlIHZvaWQqKW9iamNfbG9va1VwQ2xh
c3MoI3N5bWJvbCkpCisjZWxzZQorI2RlZmluZSBfQ0FfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFT
UyhzeW1ib2wpIG9iamNfbG9va1VwQ2xhc3MoI3N5bWJvbCkKKyNlbmRpZiAvLyBfX09CSkNfXwor
CisjZGVmaW5lIF9DQV9QUklWQVRFX0RFRl9DTFMoc3ltYm9sKSB2b2lkKiBzX2sjI3N5bWJvbCBf
Q0FfUFJJVkFURV9WSVNJQklMSVRZID0gX0NBX1BSSVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Moc3lt
Ym9sKTsKKyNkZWZpbmUgX0NBX1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9DQV9Q
UklWQVRFX0RFRl9TRUwoYWNjZXNzb3IsIHN5bWJvbCkgU0VMIHNfayMjYWNjZXNzb3IgX0NBX1BS
SVZBVEVfVklTSUJJTElUWSA9IHNlbF9yZWdpc3Rlck5hbWUoc3ltYm9sKTsKKyNkZWZpbmUgX0NB
X1BSSVZBVEVfREVGX1NUUih0eXBlLCBzeW1ib2wpICAgICAgICAgICAgICAgIFwKKyAgICBfQ0Ff
RVhURVJOIHR5cGUgY29uc3QgQ0EjI3N5bWJvbCBfQ0FfUFJJVkFURV9JTVBPUlQ7IFwKKyAgICB0
eXBlIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICBDQTo6c3ltYm9sID0gKG51bGxwdHIgIT0g
JkNBIyNzeW1ib2wpID8gQ0EjI3N5bWJvbCA6IG51bGxwdHI7CisKKyNlbHNlCisKKyNkZWZpbmUg
X0NBX1BSSVZBVEVfREVGX0NMUyhzeW1ib2wpIGV4dGVybiB2b2lkKiBzX2sjI3N5bWJvbDsKKyNk
ZWZpbmUgX0NBX1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9DQV9QUklWQVRFX0RF
Rl9TRUwoYWNjZXNzb3IsIHN5bWJvbCkgZXh0ZXJuIFNFTCBzX2sjI2FjY2Vzc29yOworI2RlZmlu
ZSBfQ0FfUFJJVkFURV9ERUZfU1RSKHR5cGUsIHN5bWJvbCkKKworI2VuZGlmIC8vIENBX1BSSVZB
VEVfSU1QTEVNRU5UQVRJT04KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK25hbWVzcGFjZSBDQQoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAgICBu
YW1lc3BhY2UgQ2xhc3MKKyAgICB7CisKKyAgICB9IC8vIENsYXNzCit9IC8vIFByaXZhdGUKK30g
Ly8gQ0EKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K25hbWVzcGFjZSBDQQoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAgICBuYW1lc3BhY2UgUHJv
dG9jb2wKKyAgICB7CisKKyAgICAgICAgX0NBX1BSSVZBVEVfREVGX1BSTyhDQU1ldGFsRHJhd2Fi
bGUpOworCisgICAgfSAvLyBQcm90b2NvbAorfSAvLyBQcml2YXRlCit9IC8vIENBCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgQ0EK
K3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFtZXNwYWNlIFNlbGVjdG9yCisgICAgewor
CisgICAgICAgIF9DQV9QUklWQVRFX0RFRl9TRUwobGF5ZXIsCisgICAgICAgICAgICAibGF5ZXIi
KTsKKyAgICAgICAgX0NBX1BSSVZBVEVfREVGX1NFTCh0ZXh0dXJlLAorICAgICAgICAgICAgInRl
eHR1cmUiKTsKKworICAgIH0gLy8gQ2xhc3MKK30gLy8gUHJpdmF0ZQorfSAvLyBDQQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmUxZWI0NjdiMTZiYjgwZmRmZDE5NmFhOGI5M2JmZWRjNTQ0NzE5NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3Jl
L1F1YXJ0ekNvcmUuaHBwCkBAIC0wLDAgKzEsMjcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiQ0FN
ZXRhbERyYXdhYmxlLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUkVB
RE1FLm1kIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1JFQURNRS5tZApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45OTUwNzE1NWViNzdmYzI0N2Y0NjNiNTQyYWY5YmVmMGVlZDczODU2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1JFQURNRS5tZApAQCAtMCww
ICsxLDI0NSBAQAorIyMgQWJvdXQKKworKiptZXRhbC1jcHAqKiBpcyBhIGxvdyBvdmVyaGVhZCBh
bmQgaGVhZGVyIG9ubHkgQysrIGludGVyZmFjZSBmb3IgTWV0YWwgdGhhdCBoZWxwcyBkZXZlbG9w
ZXJzIGFkZCBNZXRhbCBmdW5jdGlvbmFsaXR5IHRvIGdyYXBoaWNzIGFwcGxpY2F0aW9ucyB0aGF0
IGFyZSB3cml0dGVuIGluIEMrKyAoc3VjaCBhcyBnYW1lIGVuZ2luZXMpLiAqKm1ldGFsLWNwcCoq
IHJlbW92ZXMgdGhlIG5lZWQgdG8gY3JlYXRlIGEgc2hpbSBhbmQgYWxsb3dzIGRldmVsb3BlcnMg
dG8gY2FsbCBNZXRhbCBmdW5jdGlvbnMgZGlyZWN0bHkgZnJvbSBhbnl3aGVyZSBpbiB0aGVpciBl
eGlzdGluZyBDKysgY29kZS4KKworCisjIyBIaWdobGlnaHRzCisKKy0gRHJvcCBpbiBDKysgYWx0
ZXJuYXRpdmUgaW50ZXJmYWNlIHRvIHRoZSBNZXRhbCBPYmplY3RpdmUtQyBoZWFkZXJzLgorLSBE
aXJlY3QgbWFwcGluZyBvZiBhbGwgTWV0YWwgT2JqZWN0aXZlLUMgY2xhc3NlcywgY29uc3RhbnRz
IGFuZCBlbnVtcyB0byBDKysgaW4gdGhlIE1UTCBDKysgbmFtZXNwYWNlLgorLSBObyBtZWFzdXJh
YmxlIG92ZXJoZWFkIGNvbXBhcmVkIHRvIGNhbGxpbmcgTWV0YWwgT2JqZWN0aXZlLUMgaGVhZGVy
cywgZHVlIHRvIGlubGluaW5nIG9mIEMrKyBmdW5jdGlvbiBjYWxscy4KKy0gTm8gdXNhZ2Ugb2Yg
d3JhcHBlciBjb250YWluZXJzIHRoYXQgcmVxdWlyZSBhZGRpdGlvbmFsIGFsbG9jYXRpb25zLgor
LSBSZXF1aXJlcyBDKysxNyBkdWUgdG8gdGhlIHVzYWdlIG9mIGBjb25zdGV4cHJgIGluIGBOUzo6
T2JqZWN0YC4KKy0gSWRlbnRpY2FsIGhlYWRlciBmaWxlcyBhbmQgZnVuY3Rpb24vY29uc3RhbnQv
ZW51bSBhdmFpbGFiaWxpdHkgZm9yIGlPUywgbWFjT1MgYW5kIHR2T1MuCistIEJhY2t3YXJkcyBj
b21wYXRpYmlsaXR5OiBBbGwgYGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzLi4uKClgIGZ1bmN0
aW9ucyBjaGVjayBpZiB0aGVpciByZXF1aXJlZCBzZWxlY3RvcnMgZXhpc3QgYW5kIGF1dG9tYXRp
Y2FsbHkgcmV0dXJuIGBmYWxzZWAgaWYgbm90LgorLSBTdHJpbmcgKGBFcnJvckRvbWFpbmApIGNv
bnN0YW50cyBhcmUgd2VhayBsaW5rZWQgYW5kIGF1dG9tYXRpY2FsbHkgc2V0IHRvIGBudWxscHRy
YCBpZiBub3QgYXZhaWxhYmxlLgorCisjIyBNZW1vcnkgQWxsb2NhdGlvbiBQb2xpY3kKKworKipt
ZXRhbC1jcHAqKiBmb2xsb3dzIHRoZSBvYmplY3QgYWxsb2NhdGlvbiBwb2xpY2llcyBvZiBDb2Nv
YSBhbmQgQ29jb2EgVG91Y2guIFVuZGVyc3RhbmRpbmcgdGhvc2UgcnVsZXMgaXMgZXNwZWNpYWxs
eSBpbXBvcnRhbnQgd2hlbiB1c2luZyBtZXRhbC1jcHAsIGFzIEMrKyBvYmplY3RzIGFyZSBub3Qg
ZWxpZ2libGUgZm9yIGF1dG9tYXRpYyByZWZlcmVuY2UgY291bnRpbmcgKEFSQykuCisKKyoqbWV0
YWwtY3BwKiogb2JqZWN0cyBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRvIGhlbHAgY29udmV5IGFu
ZCBtYW5hZ2Ugb2JqZWN0IGxpZmVjeWNsZXMsIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbnMgYXJl
IG9ic2VydmVkOgorCisxLiAqWW91IG93biBhbnkgb2JqZWN0IHJldHVybmVkIGJ5IG1ldGhvZHMg
d2hvc2UgbmFtZSBiZWdpbnMgd2l0aCogYGFsbG9jYCAqLCogYG5ld2AgKiwqIGBjb3B5YCAqLCBv
ciogYG11dGFibGVDb3B5YC4gVGhlIG1ldGhvZCByZXR1cm5zIHRoZXNlIG9iamVjdHMgd2l0aCBg
cmV0YWluQ291bnRgIGVxdWFscyB0byBgMWAuCisyLiAqWW91IGNhbiB0YWtlIG93bmVyc2hpcCBv
ZiBhbiBvYmplY3QgYnkgY2FsbGluZyBpdHMqIGBgYHJldGFpbigpYGBgICptZXRob2QqLiBBIHJl
Y2VpdmVkIG9iamVjdCBpcyBub3JtYWxseSBndWFyYW50ZWVkIHRvIHJlbWFpbiB2YWxpZCB3aXRo
aW4gdGhlIG1ldGhvZCBpdCB3YXMgcmVjZWl2ZWQgaW4uIFlvdSB1c2UgYHJldGFpbmAgaW4gdHdv
IHNpdHVhdGlvbnM6ICgxKSBJbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgYW4gYWNjZXNzb3IgbWV0
aG9kIChhIHNldHRlcikgb3IgdG8gdGFrZSBvd25lcnNoaXAgb2YgYW4gb2JqZWN0OyBhbmQgKDIp
IFRvIHByZXZlbnQgYW4gb2JqZWN0IGZyb20gYmVpbmcgZGVhbGxvY2F0ZWQgYXMgYSBzaWRlLWVm
ZmVjdCBvZiBzb21lIG90aGVyIG9wZXJhdGlvbi4KKzMuICpXaGVuIHlvdSBubyBsb25nZXIgbmVl
ZCBpdCwgeW91IG11c3QgcmVsaW5xdWlzaCBvd25lcnNoaXAgb2YgYW4gb2JqZWN0IHlvdSBvd24q
LiBZb3UgcmVsaW5xdWlzaCBvd25lcnNoaXAgYnkgY2FsbGluZyBpdHMgYHJlbGVhc2UoKWAgb3Ig
YGF1dG9yZWxlYXNlKClgIG1ldGhvZC4KKzQuICpZb3UgbXVzdCBub3QgcmVsaW5xdWlzaCBvd25l
cnNoaXAgb2YgYW4gb2JqZWN0IHlvdSBkbyBub3Qgb3duKi4KKworV2hlbiBhbiBvYmplY3QncyBg
cmV0YWluQ291bnRgIHJlYWNoZXMgYDBgLCB0aGUgb2JqZWN0IGlzIGltbWVkaWF0ZWx5IGRlYWxs
b2NhdGVkLiBJdCBpcyBpbGxlZ2FsIHRvIGNhbGwgbWV0aG9kcyBvbiBhIGRlYWxsb2NhdGVkIG9i
amVjdCBhbmQgaXQgbWF5IGxlYWQgdG8gYW4gYXBwbGljYXRpb24gY3Jhc2guCisKKyMjIyBBdXRv
cmVsZWFzZVBvb2xzIGFuZCBPYmplY3RzCisKK1NldmVyYWwgbWV0aG9kcyB0aGF0IGNyZWF0ZSB0
ZW1wb3Jhcnkgb2JqZWN0cyBpbiAqKm1ldGFsLWNwcCoqIGFkZCB0aGVtIHRvIGFuIGBBdXRvcmVs
ZWFzZVBvb2xgIHRvIGhlbHAgbWFuYWdlIHRoZWlyIGxpZmV0aW1lcy4gSW4gdGhlc2Ugc2l0dWF0
aW9ucywgYWZ0ZXIgKiptZXRhbC1jcHAqKiBjcmVhdGVzIHRoZSBvYmplY3QsIGl0IGFkZHMgaXQg
dG8gYW4gYEF1dG9yZWxlYXNlUG9vbGAsIHdoaWNoIHdpbGwgcmVsZWFzZSBpdHMgb2JqZWN0cyB3
aGVuIHlvdSByZWxlYXNlIChvciBkcmFpbikgaXQuCisKK0J5IGFkZGluZyB0ZW1wb3Jhcnkgb2Jq
ZWN0cyB0byBhbiBBdXRvcmVsZWFzZVBvb2wsIHlvdSBkbyBub3QgbmVlZCB0byBleHBsaWNpdGx5
IGNhbGwgYHJlbGVhc2UoKWAgdG8gZGVhbGxvY2F0ZSB0aGVtLiBJbnN0ZWFkLCB5b3UgY2FuIHJl
bHkgb24gdGhlIGBBdXRvcmVsZWFzZVBvb2xgIHRvIGltcGxpY2l0bHkgbWFuYWdlIHRob3NlIGxp
ZmV0aW1lcy4KKworSWYgeW91IGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIG1ldGhvZCB0aGF0IGRv
ZXMgbm90IGJlZ2luIHdpdGggYGFsbG9jYCwgYG5ld2AsIGBjb3B5YCwgb3IgYG11dGFibGVDb3B5
YCwgdGhlIGNyZWF0aW5nIG1ldGhvZCBhZGRzIHRoZSBvYmplY3QgdG8gYW4gYXV0b3JlbGVhc2Ug
cG9vbC4KKworVGhlIHR5cGljYWwgc2NvcGUgb2YgYW4gYEF1dG9yZWxlYXNlUG9vbGAgaXMgb25l
IGZyYW1lIG9mIHJlbmRlcmluZyBmb3IgdGhlIG1haW4gdGhyZWFkIG9mIHRoZSBwcm9ncmFtLiBX
aGVuIHRoZSB0aHJlYWQgcmV0dXJucyBjb250cm9sIHRvIHRoZSBSdW5Mb29wIChhbiBvYmplY3Qg
cmVzcG9uc2libGUgZm9yIHJlY2VpdmluZyBpbnB1dCBhbmQgZXZlbnRzIGZyb20gdGhlIHdpbmRv
d2luZyBzeXN0ZW0pLCB0aGUgcG9vbCBpcyAqZHJhaW5lZCosIHJlbGVhc2luZyBpdHMgb2JqZWN0
cy4KKworWW91IGNhbiBjcmVhdGUgYW5kIG1hbmFnZSBhZGRpdGlvbmFsIGBBdXRvcmVsZWFzZVBv
b2xgcyBhdCBzbWFsbGVyIHNjb3BlcyB0byByZWR1Y2UgeW91ciBwcm9ncmFtJ3Mgd29ya2luZyBz
ZXQsIGFuZCB5b3UgYXJlIHJlcXVpcmVkIHRvIGRvIHNvIGZvciBhbnkgYWRkaXRpb25hbCB0aHJl
YWRzIHlvdXIgcHJvZ3JhbSBjcmVhdGVzLgorCitJZiBhbiBvYmplY3QncyBsaWZlY3ljbGUgbmVl
ZHMgdG8gYmUgZXh0ZW5kZWQgYmV5b25kIHRoZSBgQXV0b3JlbGVhc2VQb29sYCdzIHNjb3BlLCB5
b3UgY2FuIGNsYWltIG93bmVyc2hpcCBvZiBpdCAoYXZvaWRpbmcgaXRzIHJlbGVhc2UgYmV5b25k
IHRoZSBwb29sJ3Mgc2NvcGUpIGJ5IGNhbGxpbmcgaXRzIGByZXRhaW4oKWAgbWV0aG9kIGJlZm9y
ZSBpdHMgcG9vbCBpcyBkcmFpbmVkLiBJbiB0aGVzZSBjYXNlcywgeW91IHdpbGwgYmUgcmVzcG9u
c2libGUgZm9yIG1ha2luZyB0aGUgYXBwcm9wcmlhdGUgYHJlbGVhc2UoKWAgY2FsbCBvbiB0aGUg
b2JqZWN0IGFmdGVyIHlvdSBubyBsb25nZXIgbmVlZCBpdC4gCisKK1lvdSBjYW4gZmluZCBhIG1v
cmUtZGV0YWlsZWQgaW50cm9kdWN0aW9uIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBydWxlcyBo
ZXJlOiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9hcmNoaXZlL2RvY3VtZW50
YXRpb24vQ29jb2EvQ29uY2VwdHVhbC9NZW1vcnlNZ210L0FydGljbGVzL21tUnVsZXMuaHRtbC4K
KworRm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgYXBwbGljYXRpb24ncyBSdW5Mb29wLCBwbGVh
c2UgZmluZCBpdHMgZG9jdW1lbnRhdGlvbiBoZXJlOiBodHRwczovL2RldmVsb3Blci5hcHBsZS5j
b20vZG9jdW1lbnRhdGlvbi9mb3VuZGF0aW9uL25zcnVubG9vcAorCisjIyMgVXNlIGFuZCBkZWJ1
ZyBBdXRvcmVsZWFzZVBvb2xzCisKK1doZW4geW91IGNyZWF0ZSBhbiBhdXRvcmVsZWFzZWQgb2Jq
ZWN0IGFuZCB0aGVyZSBpcyBubyBlbmNsb3NpbmcgYEF1dG9yZWxlYXNlUG9vbGAsIHRoZSBvYmpl
Y3QgaXMgbGVha2VkLgorCitUbyBwcmV2ZW50IHRoaXMsIHlvdSBub3JtYWxseSBjcmVhdGUgYW4g
YEF1dG9yZWxlYXNlUG9vbGAgaW4geW91ciBwcm9ncmFtJ3MgYG1haW5gIGZ1bmN0aW9uLCBhbmQg
aW4gdGhlIGVudHJ5IGZ1bmN0aW9uIGZvciBldmVyeSB0aHJlYWQgeW91IGNyZWF0ZS4gWW91IG1h
eSBhbHNvIGNyZWF0ZSBhZGRpdGlvbmFsIGBBdXRvcmVsZWFzZVBvb2xgcyB0byBhdm9pZCBncm93
aW5nIHlvdXIgcHJvZ3JhbSdzIGhpZ2ggbWVtb3J5IHdhdGVybWFyayB3aGVuIHlvdSBjcmVhdGUg
c2V2ZXJhbCBhdXRvcmVsZWFzZWQgb2JqZWN0cywgc3VjaCBhcyB3aGVuIHJlbmRlcmluZy4KKwor
VXNlIHRoZSBFbnZpcm9ubWVudCBWYXJpYWJsZSBgT0JKQ19ERUJVR19NSVNTSU5HX1BPT0xTPVlF
U2AgdG8gcHJpbnQgYSBydW50aW1lIHdhcm5pbmcgd2hlbiBhbiBhdXRvcmVsZWFzZWQgb2JqZWN0
IGlzIGxlYWtlZCBiZWNhdXNlIG5vIGVuY2xvc2luZyBgQXV0b3JlbGVhc2VQb29sYCBpcyBhdmFp
bGFibGUgZm9yIGl0cyB0aHJlYWQuCisKK1lvdSBjYW4gYWxzbyBydW4gYGxlYWtzIC0tYXV0b3Jl
bGVhc2VQb29sc2Agb24gYSBtZW1ncmFwaCBmaWxlIG9yIGEgcHJvY2VzcyBJRCAobWFjT1Mgb25s
eSkgdG8gdmlldyBhIGxpc3Rpbmcgb2YgeW91ciBwcm9ncmFtJ3MgYEF1dG9yZWxlYXNlUG9vbGBz
IGFuZCBhbGwgb2JqZWN0cyB0aGV5IGNvbnRhaW4uCisKKyMjIyBudWxscHRyCisKK1NpbWlsYXIg
dG8gT2JqZWN0aXZlLUMsIGl0IGlzIGxlZ2FsIHRvIGNhbGwgYW55IG1ldGhvZCwgaW5jbHVkaW5n
IGByZXRhaW4oKWAgYW5kIGByZWxlYXNlKClgLCBvbiBgbnVsbHB0cmAgIm9iamVjdHMiLiBXaGls
ZSBjYWxsaW5nIG1ldGhvZHMgb24gYG51bGxwdHJgIHN0aWxsIGRvZXMgaW5jdXIgaW4gZnVuY3Rp
b24gY2FsbCBvdmVyaGVhZCwgdGhlIGVmZmVjdGl2ZSByZXN1bHQgaXMgZXF1aXZhbGVudCBvZiBh
IE5PUC4KKworQ29udmVyc2VseSwgZG8gbm90IGFzc3VtZSB0aGF0IGJlY2F1c2UgY2FsbGluZyBh
IG1ldGhvZCBvbiBhIHBvaW50ZXIgZGlkIG5vdCByZXN1bHQgaW4gYSBjcmFzaCwgdGhhdCB0aGUg
cG9pbnRlZC10byBvYmplY3QgaXMgdmFsaWQuCisKKyMjIEFkZGluZyBtZXRhbC1jcHAgdG8gYSBQ
cm9qZWN0CisKK1NpbXBseSBpbmNsdWRlIGBNZXRhbC9NZXRhbC5ocHBgLiBUbyBlbnN1cmUgdGhh
dCB0aGUgc2VsZWN0b3IgYW5kIGNsYXNzIHN5bWJvbHMgYXJlIGxpbmtlZCwgYWRkIHRvIG9uZSBv
ZiB5b3VyIGNwcCBmaWxlczoKKworYGBgY3BwCisjZGVmaW5lIE5TX1BSSVZBVEVfSU1QTEVNRU5U
QVRJT04KKyNkZWZpbmUgTVRMX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKworI2luY2x1ZGUgIk1l
dGFsL01ldGFsLmhwcCIKK2BgYAorCitJZiB5b3Ugd2FudCB0byB1c2UgdGhlIFF1YXJ0ekNvcmUg
d3JhcHBlciwgYWRkOgorCitgYGBjcHAKKyNkZWZpbmUgQ0FfUFJJVkFURV9JTVBMRU1FTlRBVElP
TgorCisjaW5jbHVkZSAiUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcCIKK2BgYAorCisjIyBHZW5l
cmF0aW5nIGEgU2luZ2xlIEhlYWRlciBGaWxlCisKK1B1cmVseSBvcHRpb25hbDogWW91IGNhbiBn
ZW5lcmF0ZSBhIHNpbmdsZSBoZWFkZXIgZmlsZSB0aGF0IGNvbnRhaW5zIGFsbCAqKm1ldGFsLWNw
cCoqIGhlYWRlcnMgdmlhOgorCitgYGBzaGVsbAorLi9TaW5nbGVIZWFkZXIvTWFrZVNpbmdsZUhl
YWRlci5weSBGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwIFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5o
cHAgTWV0YWwvTWV0YWwuaHBwCitgYGAKKworQnkgZGVmYXVsdCB0aGUgZ2VuZXJhdGVkIGhlYWRl
ciBmaWxlIHdpbGwgYmUgd3JpdHRlbiB0byBgLi9TaW5nbGVIZWFkZXIvTWV0YWwuaHBwYAorCisj
IyBFeGFtcGxlcworCisjIyMjIENyZWF0aW5nIHRoZSBkZXZpY2UKKworIyMjIyMjIE9iamVjdGl2
ZS1DICh3aXRoIGF1dG9tYXRpYyByZWZlcmVuY2UgY291bnRpbmcpCisKK2BgYG9iamMKK2lkPCBN
VExEZXZpY2UgPiBkZXZpY2UgPSBNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCk7CisKKy8v
IC4uLgorYGBgCisKKyMjIyMjIyBPYmplY3RpdmUtQworCitgYGBvYmpjCitpZDwgTVRMRGV2aWNl
ID4gZGV2aWNlID0gTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOworCisvLyAuLi4KKwor
W2RldmljZSByZWxlYXNlXTsKK2BgYAorCisjIyMjIyMgQysrCisKK2BgYGNwcAorTVRMOjpEZXZp
Y2UqIHBEZXZpY2UgPSBNVEw6OkNyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKTsKKworLy8gLi4u
CisKK3BEZXZpY2UtPnJlbGVhc2UoKTsKK2BgYAorCisjIyMjIE1ldGFsIGZ1bmN0aW9uIGNhbGxz
IG1hcCBkaXJlY3RseSB0byBDKysKKworIyMjIyMjIE9iamVjdGl2ZS1DICh3aXRoIGF1dG9tYXRp
YyByZWZlcmVuY2UgY291bnRpbmcpCisKK2BgYG9iamMKK01UTFNhbXBsZXJEZXNjcmlwdG9yKiBz
YW1wbGVyRGVzY3JpcHRvciA9IFtbTVRMU2FtcGxlckRlc2NyaXB0b3IgYWxsb2NdIGluaXRdOwor
Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0U0FkZHJlc3NNb2RlOiBNVExTYW1wbGVyQWRkcmVzc01v
ZGVSZXBlYXRdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldFRBZGRyZXNzTW9kZTogTVRMU2FtcGxl
ckFkZHJlc3NNb2RlUmVwZWF0XTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRSQWRkcmVzc01vZGU6
IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0TWFn
RmlsdGVyOiBNVExTYW1wbGVyTWluTWFnRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVzY3JpcHRv
ciBzZXRNaW5GaWx0ZXI6IE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5lYXJdOworW3NhbXBsZXJE
ZXNjcmlwdG9yIHNldE1pcEZpbHRlcjogTVRMU2FtcGxlck1pcEZpbHRlckxpbmVhcl07Citbc2Ft
cGxlckRlc2NyaXB0b3Igc2V0U3VwcG9ydEFyZ3VtZW50QnVmZmVyczogWUVTXTsKKworaWQ8IE1U
TFNhbXBsZXJTdGF0ZSA+IHNhbXBsZXJTdGF0ZSA9IFtkZXZpY2UgbmV3U2FtcGxlclN0YXRlV2l0
aERlc2NyaXB0b3I6c2FtcGxlckRlc2NyaXB0b3JdOworYGBgCisKKyMjIyMjIyBPYmplY3RpdmUt
QworCitgYGBvYmpjCitNVExTYW1wbGVyRGVzY3JpcHRvciogc2FtcGxlckRlc2NyaXB0b3IgPSBb
W01UTFNhbXBsZXJEZXNjcmlwdG9yIGFsbG9jXSBpbml0XTsKKworW3NhbXBsZXJEZXNjcmlwdG9y
IHNldFNBZGRyZXNzTW9kZTogTVRMU2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0XTsKK1tzYW1wbGVy
RGVzY3JpcHRvciBzZXRUQWRkcmVzc01vZGU6IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdF07
Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0UkFkZHJlc3NNb2RlOiBNVExTYW1wbGVyQWRkcmVzc01v
ZGVSZXBlYXRdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldE1hZ0ZpbHRlcjogTVRMU2FtcGxlck1p
bk1hZ0ZpbHRlckxpbmVhcl07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0TWluRmlsdGVyOiBNVExT
YW1wbGVyTWluTWFnRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRNaXBGaWx0
ZXI6IE1UTFNhbXBsZXJNaXBGaWx0ZXJMaW5lYXJdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldFN1
cHBvcnRBcmd1bWVudEJ1ZmZlcnM6IFlFU107CisKK2lkPCBNVExTYW1wbGVyU3RhdGUgPiBzYW1w
bGVyU3RhdGUgPSBbZGV2aWNlIG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlwdG9yOnNhbXBsZXJE
ZXNjcmlwdG9yXTsKKworW3NhbXBsZXJEZXNjcmlwdG9yIHJlbGVhc2VdOworCisvLyAuLi4KKwor
W3NhbXBsZXJTdGF0ZSByZWxlYXNlXTsKK2BgYAorCisjIyMjIyMgQysrCisKK2BgYGNwcAorTVRM
OjpTYW1wbGVyRGVzY3JpcHRvciogcFNhbXBsZXJEZXNjcmlwdG9yID0gTVRMOjpTYW1wbGVyRGVz
Y3JpcHRvcjo6YWxsb2MoKS0+aW5pdCgpOworCitwU2FtcGxlckRlc2NyaXB0b3ItPnNldFNBZGRy
ZXNzTW9kZSggTVRMOjpTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXQgKTsKK3BTYW1wbGVyRGVzY3Jp
cHRvci0+c2V0VEFkZHJlc3NNb2RlKCBNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdCApOwor
cFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRSQWRkcmVzc01vZGUoIE1UTDo6U2FtcGxlckFkZHJlc3NN
b2RlUmVwZWF0ICk7CitwU2FtcGxlckRlc2NyaXB0b3ItPnNldE1hZ0ZpbHRlciggTVRMOjpTYW1w
bGVyTWluTWFnRmlsdGVyTGluZWFyICk7CitwU2FtcGxlckRlc2NyaXB0b3ItPnNldE1pbkZpbHRl
ciggTVRMOjpTYW1wbGVyTWluTWFnRmlsdGVyTGluZWFyICk7CitwU2FtcGxlckRlc2NyaXB0b3It
PnNldE1pcEZpbHRlciggTVRMOjpTYW1wbGVyTWlwRmlsdGVyTGluZWFyICk7CitwU2FtcGxlckRl
c2NyaXB0b3ItPnNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMoIHRydWUgKTsKKworTVRMOjpTYW1w
bGVyU3RhdGUqIHBTYW1wbGVyU3RhdGUgPSBwRGV2aWNlLT5uZXdTYW1wbGVyU3RhdGUoIHBTYW1w
bGVyRGVzY3JpcHRvciApOworCitwU2FtcGxlckRlc2NyaXB0b3ItPnJlbGVhc2UoKTsKKworLy8g
Li4uCisKK3BTYW1wbGVyU3RhdGUtPnJlbGVhc2UoKTsKK2BgYAorCisjIyMjIEEgc3Vic2V0IG9m
IGJpbmRpbmdzIGZvciBGb3VuZGF0aW9uIGNsYXNzZXMgaXMgcHJvdmlkZWQgZm9yIHNlYW1sZXNz
IGludGVncmF0aW9uCisKKyMjIyMjIyBPYmplY3RpdmUtQyAod2l0aCBhdXRvbWF0aWMgcmVmZXJl
bmNlIGNvdW50aW5nKQorCitgYGBvYmpjCitOU0F1dG9yZWxlYXNlUG9vbCogIHBvb2wgICA9IFtb
TlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworTlNTdHJpbmcqICAgICAgICAgICBzdHJp
bmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6ICJIZWxsbyBXb3JsZCIgZW5jb2Rpbmc6
IE5TQVNDSUlTdHJpbmdFbmNvZGluZ107CisKK3ByaW50ZiggInN0cmluZyA9IFwiJXNcIlxuIiwg
W3N0cmluZyBjU3RyaW5nVXNpbmdFbmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXSApOwor
YGBgCisKKyMjIyMjIyBPYmplY3RpdmUtQworCitgYGBvYmpjCitOU0F1dG9yZWxlYXNlUG9vbCog
cG9vbCAgID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CitOU1N0cmluZyogICAg
ICAgICAgc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOiAiSGVsbG8gV29ybGQi
IGVuY29kaW5nOiBOU0FTQ0lJU3RyaW5nRW5jb2RpbmddOworCQkJCQkJCQkKK3ByaW50ZiggInN0
cmluZyA9IFwiJXNcIlxuIiwgW3N0cmluZyBjU3RyaW5nVXNpbmdFbmNvZGluZzogTlNBU0NJSVN0
cmluZ0VuY29kaW5nXSApOworCitbcG9vbCByZWxlYXNlXTsKK2BgYAorCisjIyMjIyMgQysrCisK
K2BgYGNwcAorTlM6OkF1dG9yZWxlYXNlUG9vbCogcFBvb2wgICA9IE5TOjpBdXRvcmVsZWFzZVBv
b2w6OmFsbG9jKCktPmluaXQoKTsKK05TOjpTdHJpbmcqICAgICAgICAgIHBTdHJpbmcgPSBOUzo6
U3RyaW5nOjpzdHJpbmcoICJIZWxsbyBXb3JsZCIsIE5TOjpBU0NJSVN0cmluZ0VuY29kaW5nICk7
CisKK3ByaW50ZiggInBTdHJpbmcgPSBcIiVzXCJcbiIsIHBTdHJpbmctPmNTdHJpbmcoIE5TOjpB
U0NJSVN0cmluZ0VuY29kaW5nICkgKTsKKworcFBvb2wtPnJlbGVhc2UoKTsKK2BgYAorCisjIyMj
ICBJbnRlcm9wZXJhYmlsaXR5IHdpdGggQ29yZUZvdW5kYXRpb24KKworYGBgY3BwCitNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiBwR2VvRGVzY3Jp
cHRvciAgPSBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlw
dG9yOjphbGxvYygpLT5pbml0KCk7CitDRlR5cGVSZWYgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yc1tdICAgPSB7ICggQ0ZUeXBlUmVmICkoIHBH
ZW9EZXNjcmlwdG9yICkgfTsKK05TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBHZW9EZXNjcmlwdG9ycyA9ICggTlM6OkFycmF5KiApKCBDRkFycmF5
Q3JlYXRlKCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkZXNjcmlwdG9ycywgU0laRU9GX0FSUkFZKCBk
ZXNjcmlwdG9ycyksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MgKSApOworCisvLyAuLi4KKworcEdl
b0Rlc2NyaXB0b3JzLT5yZWxlYXNlKCk7CitgYGAKKworIyMjIyBBY2Nlc3NpbmcgYSBDQU1ldGFs
RHJhd2FibGUKKworYGBgb2JqYworI2ltcG9ydCA8UXVhcnR6Q29yZS9DQU1ldGFsTGF5ZXIuaD4K
KyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHA+CisKKy8vIC4uLgorCitDQU1ldGFs
TGF5ZXIqICAgICAgICAgbWV0YWxMYXllciAgICAgICAgID0gLyogZ2V0IHlvdXIgbGF5ZXIgZnJv
bSB5b3VyIHZpZXcgKi87CitpZDwgQ0FNZXRhbERyYXdhYmxlID4gbWV0YWxEcmF3YWJsZSAgICAg
ID0gW21ldGFsTGF5ZXIgbmV4dERyYXdhYmxlXTsKK0NBOjpNZXRhbERyYXdhYmxlKiAgICBwTWV0
YWxDcHBEcmF3YWJsZSAgPSAoIF9fYnJpZGdlIENBOjpNZXRhbERyYXdhYmxlKiApIG1ldGFsRHJh
d2FibGU7CisKKy8vIC4uLgorYGBgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFkZXIucHkKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTU4ZTQ5ZWM3NzZhYzk5ZjcwOTA1ZjZhNTFkNzY5ZDA3NTM5ZTU0YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9TaW5nbGVIZWFkZXIvTWFr
ZVNpbmdsZUhlYWRlci5weQpAQCAtMCwwICsxLDI3MSBAQAorIyEvdXNyL2Jpbi9weXRob24KKwor
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIFNpbmds
ZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5CisjCisjIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorIworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIwor
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2ltcG9ydCBh
cmdwYXJzZQoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBv
cnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKKyMtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBIZWFkZXJQcmVmaXgoIG9iamVj
dCApOgorCV9fdGVtcGxhdGUgCQkJPSAoICcvL1xuJworCQkJCQkJCScvLyB7ZmlsZX1cbicKKwkJ
CQkJCQknLy9cbicKKwkJCQkJCQknLy8ge21ldGFfZGF0YX1cbicKKwkJCQkJCQknLy9cbicKKwkJ
CQkJCQknLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuXG4nCisJCQkJCQkJJy8vXG4n
CisJCQkJCQkJJy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpO1xuJworCQkJCQkJCScvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4nCisJCQkJCQkJJy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuJworCQkJCQkJCScvL1xu
JworCQkJCQkJCScvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wXG4nCisJCQkJCQkJJy8vXG4nCisJCQkJCQkJJy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbicKKwkJCQkJCQkn
Ly8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUyxcbicKKwkJCQkJCQknLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4nCisJCQkJCQkJJy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmRcbicKKwkJCQkJCQknLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
XG4nCisJCQkJCQkJJy8vXG4nCisJCQkJCQkJJ1xuJyApCisKKwlfX3RlbXBsYXRlX2NvbW1pdAk9
CSdBdXRvZ2VuZXJhdGVkIGZyb20gY29tbWl0IHtjb21taXR9LicKKwlfX3RlbXBsYXRlX2RhdGUJ
CT0JJ0F1dG9nZW5lcmF0ZWQgb24gJUIgJWQsICVZLicKKworCWRlZiBfX2luaXRfXyggc2VsZiwg
ZmlsZSApOgorCQlzZWxmLl9fZmlsZSA9IGZpbGUKKworCWRlZiBfX3N0cl9fKCBzZWxmICk6CisJ
CXJldHVybiBzZWxmLl9fdGVtcGxhdGUuZm9ybWF0KCBmaWxlID0gc2VsZi5fX2ZpbGUsIG1ldGFf
ZGF0YSA9IHNlbGYuX19tZXRhX2RhdGFfc3RyaW5nKCkgKQorCisJZGVmIF9fZ2V0X2NvbW1pdF9o
YXNoKCBzZWxmICk6CisJCWdpdF9jb21taXRfaGFzaCA9IE5vbmUKKworCQl0cnk6CisJCQlnaXRf
ZGlyCQkJPSBvcy5wYXRoLmRpcm5hbWUoIG9zLnBhdGgucmVhbHBhdGgoIF9fZmlsZV9fICkgKQor
CQkJcHJvYyAJCQk9IHN1YnByb2Nlc3MuUG9wZW4oIFsgJ2dpdCcsICdyZXYtcGFyc2UnLCAnSEVB
RCcgXSwgY3dkID0gZ2l0X2Rpciwgc3Rkb3V0ID0gc3VicHJvY2Vzcy5QSVBFLCBzdGRlcnIgPSBz
dWJwcm9jZXNzLlBJUEUgKQorCQkJZ2l0X2NvbW1pdF9oYXNoID0gcHJvYy5zdGRvdXQucmVhZCgp
LmRlY29kZSggJ3V0Zi04JywgJ3JlcGxhY2UnICkuc3RyaXAoKQorCQlleGNlcHQ6CisJCQlsb2dn
aW5nLmVycm9yKCAnRmFpbGVkIHRvIGRldGVybWluZSBnaXQgY29tbWl0IGhhc2ghJyApCisJCQlw
YXNzCisKKwkJcmV0dXJuIGdpdF9jb21taXRfaGFzaAorCisJZGVmIF9fZ2V0X2NvbW1pdF9zdHJp
bmcoIHNlbGYgKToKKwkJbWV0YV9kYXRhCQk9IE5vbmUKKwkJZ2l0X2NvbW1pdF9oYXNoCT0gc2Vs
Zi5fX2dldF9jb21taXRfaGFzaCgpCisKKwkJaWYgZ2l0X2NvbW1pdF9oYXNoOgorCQkJbWV0YV9k
YXRhID0gc2VsZi5fX3RlbXBsYXRlX2NvbW1pdC5mb3JtYXQoIGNvbW1pdCA9IGdpdF9jb21taXRf
aGFzaCApCisKKwkJcmV0dXJuIG1ldGFfZGF0YQorCisJZGVmIF9fZ2V0X2RhdGVfc3RyaW5nKCBz
ZWxmICk6CisJCXRvZGF5ID0gZGF0ZXRpbWUuZGF0ZS50b2RheSgpCisgCisJCXJldHVybiB0b2Rh
eS5zdHJmdGltZSggc2VsZi5fX3RlbXBsYXRlX2RhdGUgKQorCisJZGVmIF9fbWV0YV9kYXRhX3N0
cmluZyggc2VsZiApOgorCQltZXRhX2RhdGEgPSBzZWxmLl9fZ2V0X2NvbW1pdF9zdHJpbmcoKQor
CisJCWlmIG5vdCBtZXRhX2RhdGE6CisJCQltZXRhX2RhdGEgPSBzZWxmLl9fZ2V0X2RhdGVfc3Ry
aW5nKCkKKworCQlyZXR1cm4gbWV0YV9kYXRhCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBTaW5nbGVIZWFkZXIoIG9iamVjdCApOgorCV9f
cHJhZ21hX29uY2UgPSAnI3ByYWdtYSBvbmNlXG5cbicKKworCWRlZiBfX2luaXRfXyggc2VsZiAp
OgorCQlzZWxmLl9faGVhZGVyX3BhdGhzID0gbGlzdCgpCisKKwlkZWYgX19zdHJfXyggc2VsZiAp
OgorCQlyZXR1cm4gc2VsZi5wcm9jZXNzKCkKKworCWRlZiBhcHBlbmQoIHNlbGYsIGhlYWRlcl9w
YXRoICk6CisJCXNlbGYuX19oZWFkZXJfcGF0aHMuYXBwZW5kKCBoZWFkZXJfcGF0aCApCisKKwlk
ZWYgcHJvY2Vzcyggc2VsZiApOgorCQlvdXRfaGVhZGVyIAkJCQk9IHNlbGYuX19wcmFnbWFfb25j
ZQorCisJCXNlbGYuX19pbmNsdWRlZF9oZWFkZXJzCT0gc2V0KCkKKwkJc2VsZi5fX2Jhc2VfcGF0
aCAJCT0gbGlzdCgpCisKKwkJZm9yIGhlYWRlcl9wYXRoIGluIHNlbGYuX19oZWFkZXJfcGF0aHM6
CisJCQlvdXRfaGVhZGVyICs9IHNlbGYuX19wcm9jZXNzX2hlYWRlciggaGVhZGVyX3BhdGggKQor
CisJCXJldHVybiBzZWxmLl9fc3RyaXBfZW1wdHlfbGluZXMoIG91dF9oZWFkZXIgKQorCisJZGVm
IF9fcmVhZF9oZWFkZXIoIHNlbGYsIHBhdGggKToKKwkJcGF0aCA9IG9zLnBhdGgucmVhbHBhdGgo
IHBhdGggKQorCisJCXRyeToKKwkJCWYgPSBvcGVuKCBwYXRoLCAncicgKQorCQlleGNlcHQ6CisJ
CQlyYWlzZSBSdW50aW1lRXJyb3IoICdGYWlsZWQgdG8gb3BlbiBmaWxlIFwiJyArIHBhdGggKyAn
XCIgZm9yIHJlYWQhJyApCisKKwkJcmV0dXJuIGYucmVhZCgpCisKKwlkZWYgX19zdHJpcF9wcmFn
bWFfb25jZSggc2VsZiwgaGVhZGVyICk6CisJCXJldHVybiByZS5zdWIoICdcXHMqI3ByYWdtYSBv
bmNlXHMqXFwvXFwvLSpcXG4nLCAnJywgaGVhZGVyICkKKworCWRlZiBfX3N0cmlwX2NvbW1lbnRz
KCBzZWxmLCBoZWFkZXIgKToKKwkJcmV0dXJuIHJlLnN1YiggJ14vLy4qXFxuJywgJycsIGhlYWRl
ciwgZmxhZ3MgPSByZS5NVUxUSUxJTkUgKQorCisJZGVmIF9fc3RyaXBfZW1wdHlfbGluZXMoIHNl
bGYsIGhlYWRlciApOgorCQlyZXR1cm4gcmUuc3ViKCAnXFxuXFxuKycsICdcXG5cXG4nLCBoZWFk
ZXIsIGZsYWdzID0gcmUuTVVMVElMSU5FICkKKworCWRlZiBfX3N1YnN0aXR1dGVfaW5jbHVkZV9k
aXJlY3RpdmUoIHNlbGYsIG1hdGNoICk6CisJCWhlYWRlcl9wYXRoID0gbWF0Y2guZ3JvdXAoICdI
RUFERVJfUEFUSCcgKQorCisJCWxvZ2dpbmcuaW5mbyggJ1x0U3Vic3RpdHV0aW5nIFwiJyArIGhl
YWRlcl9wYXRoICsgJ1wiLi4uJyApCisKKwkJcmV0dXJuIHNlbGYuX19wcm9jZXNzX2hlYWRlcigg
b3MucGF0aC5qb2luKCBzZWxmLl9fYmFzZV9wYXRoWy0xXSwgaGVhZGVyX3BhdGggKSApCisKKwlk
ZWYgX19wcm9jZXNzX2luY2x1ZGVfZGlyZWN0aXZlcyggc2VsZiwgaGVhZGVyICk6CisJCXJldHVy
biByZS5zdWIoICdeXFxzKiNpbmNsdWRlXFxzXFwiKD9QPEhFQURFUl9QQVRIPlxcUyopXFwiJywg
c2VsZi5fX3N1YnN0aXR1dGVfaW5jbHVkZV9kaXJlY3RpdmUsIGhlYWRlciwgZmxhZ3MgPSByZS5N
VUxUSUxJTkUgKQorCisJZGVmIF9fcHJvY2Vzc19mb3VuZGF0aW9uX2RpcmVjdGl2ZXMoIHNlbGYs
IGhlYWRlciApOgorCQlpZiBoZWFkZXIuZmluZCgiI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5ocHA+IikgIT0gLTE6CisJCQlsb2dnaW5nLmluZm8oICdcdFN1YnN0aXR1dGluZyA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4uLi4nICkKKwkJCXJldHVybiBoZWFkZXIucmVwbGFjZSgi
I2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+Iiwgc2VsZi5fX3Byb2Nlc3NfaGVh
ZGVyKCBvcy5wYXRoLmpvaW4oIHNlbGYuX19iYXNlX3BhdGhbLTFdLCAiLi4vRm91bmRhdGlvbi9G
b3VuZGF0aW9uLmhwcCIgKSApICkKKwkJcmV0dXJuIGhlYWRlcgorCisKKwlkZWYgX19wcm9jZXNz
X2hlYWRlciggc2VsZiwgaGVhZGVyX3BhdGggKToKKwkJb3V0X2hlYWRlciA9ICcnCQkKKworCQlo
ZWFkZXJfcGF0aCA9IG9zLnBhdGgucmVhbHBhdGgoIGhlYWRlcl9wYXRoICkKKworCQlpZiBub3Qg
aGVhZGVyX3BhdGggaW4gc2VsZi5fX2luY2x1ZGVkX2hlYWRlcnM6CisJCQlsb2dnaW5nLmluZm8o
ICdQcm9jZXNzaW5nIFwiJyArIGhlYWRlcl9wYXRoICsgJ1wiLi4uJyApCisKKwkJCXNlbGYuX19i
YXNlX3BhdGguYXBwZW5kKCBvcy5wYXRoLmRpcm5hbWUoIGhlYWRlcl9wYXRoICkgKQorCQkJc2Vs
Zi5fX2luY2x1ZGVkX2hlYWRlcnMuYWRkKCBoZWFkZXJfcGF0aCApCisJCQkKKwkJCW91dF9oZWFk
ZXIgPSBzZWxmLl9fcmVhZF9oZWFkZXIoIGhlYWRlcl9wYXRoICkKKwkJCW91dF9oZWFkZXIgPSBz
ZWxmLl9fc3RyaXBfcHJhZ21hX29uY2UoIG91dF9oZWFkZXIgKQorCQkJb3V0X2hlYWRlciA9IHNl
bGYuX19zdHJpcF9jb21tZW50cyggb3V0X2hlYWRlciApCisJCQlvdXRfaGVhZGVyID0gc2VsZi5f
X3Byb2Nlc3NfaW5jbHVkZV9kaXJlY3RpdmVzKCBvdXRfaGVhZGVyICkKKwkJCW91dF9oZWFkZXIg
PSBzZWxmLl9fcHJvY2Vzc19mb3VuZGF0aW9uX2RpcmVjdGl2ZXMoIG91dF9oZWFkZXIgKQorCisJ
CQlzZWxmLl9fYmFzZV9wYXRoLnBvcCgpCisJCWVsc2U6CisJCQlsb2dnaW5nLmluZm8oICdcdFNr
aXBwaW5nIFwiJyArIGhlYWRlcl9wYXRoICsgJ1wiLi4uJyApCisKKwkJcmV0dXJuIG91dF9oZWFk
ZXIKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Rl
ZiBjcmVhdGVfYXJndW1lbnRfcGFyc2VyKCk6CisJcGFyc2VyIAkJCT0gYXJncGFyc2UuQXJndW1l
bnRQYXJzZXIoKQorCWJhc2VfcGF0aCAJCT0gb3MucGF0aC5kaXJuYW1lKCBvcy5wYXRoLnJlYWxw
YXRoKCBfX2ZpbGVfXyApICkKKwlvdXRwdXRfcGF0aAkJPSBvcy5wYXRoLmpvaW4oIGJhc2VfcGF0
aCwgJ01ldGFsLmhwcCcgKQorCisJcGFyc2VyLmFkZF9hcmd1bWVudCggJy1vJywgJy0tb3V0cHV0
JywgIGRlc3QgPSAnb3V0cHV0X3BhdGgnLCBtZXRhdmFyID0gJ1BBVEgnLCBkZWZhdWx0ID0gb3V0
cHV0X3BhdGgsIGhlbHAgPSAnT3V0cHV0IHBhdGggZm9yIHRoZSBzaW5nbGUgaGVhZGVyIGZpbGUu
JyApCisJcGFyc2VyLmFkZF9hcmd1bWVudCggJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbiA9ICdz
dG9yZV90cnVlJywgIGhlbHAgPSAnU2hvdyB2ZXJib3NlIG91dHB1dC4nICkKKwlwYXJzZXIuYWRk
X2FyZ3VtZW50KCBkZXN0ID0gJ2hlYWRlcl9wYXRocycsIG1ldGF2YXIgPSAnSEVBREVSX0ZJTEUn
LCBuYXJncz0nKycsIGhlbHAgPSAnSW5wdXQgaGVhZGVyIGZpbGUuJyApCisKKwlyZXR1cm4gcGFy
c2VyCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitk
ZWYgcGFyc2VfYXJndW1lbnRzKCk6CisJcGFyc2VyCT0gY3JlYXRlX2FyZ3VtZW50X3BhcnNlcigp
CisJYXJncwk9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworCWlmIGFyZ3MudmVyYm9zZToKKwkJbG9n
Z2luZy5nZXRMb2dnZXIoKS5zZXRMZXZlbCggbG9nZ2luZy5JTkZPICkKKwllbHNlOgorCQlsb2dn
aW5nLmdldExvZ2dlcigpLnNldExldmVsKCBsb2dnaW5nLkVSUk9SICkKKworCXJldHVybiBhcmdz
CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitkZWYg
bWFrZV9oZWFkZXIoIGFyZ3MgKToKKwlwcmVmaXggPSBIZWFkZXJQcmVmaXgoIG9zLnBhdGguYmFz
ZW5hbWUoIGFyZ3Mub3V0cHV0X3BhdGggKSApCisJaGVhZGVyID0gU2luZ2xlSGVhZGVyKCkKKwkK
Kwlmb3IgaGVhZGVyX3BhdGggaW4gYXJncy5oZWFkZXJfcGF0aHM6CisJCWhlYWRlci5hcHBlbmQo
IGhlYWRlcl9wYXRoICkKKworCXJldHVybiBzdHIoIHByZWZpeCApICsgc3RyKCBoZWFkZXIgKQor
CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVmIG1h
a2VfZGlyKCBwYXRoICk6CisJdHJ5OgorCQlpZiBub3Qgb3MucGF0aC5leGlzdHMoIHBhdGggKToK
KwkJCW9zLm1ha2VkaXJzKCBwYXRoICkKKwlleGNlcHQgb3MuZXJyb3I6CisJCXBhc3MKKwlleGNl
cHQ6CisJCXJhaXNlCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitkZWYgd3JpdGVfaGVhZGVyKCBhcmdzLCBjb250ZW50ICk6CisJcGF0aCA9IG9zLnBh
dGgucmVhbHBhdGgoIGFyZ3Mub3V0cHV0X3BhdGggKQorCisJbG9nZ2luZy5pbmZvKCAnV3JpdGlu
ZyBcIicgKyBwYXRoICsgJ1wiLi4uJyApCisKKwltYWtlX2Rpciggb3MucGF0aC5kaXJuYW1lKCBw
YXRoICkgKQorCisJdHJ5OgorCQlmID0gb3BlbiggcGF0aCwgJ3cnICkKKwlleGNlcHQ6CisJCXJh
aXNlIFJ1bnRpbWVFcnJvciggJ0ZhaWxlZCB0byBvcGVuIGZpbGUgXCInICsgcGF0aCArICdcIiBm
b3Igd3JpdGUhJyApCisKKwlmLndyaXRlKCBjb250ZW50ICkKKworIy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CisJcmVzdWx0ID0gLTEKKwkKKwl0cnk6CisJCWlmIHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKS5s
b3dlcigpID09ICdhc2NpaSc6CisJCQlyZWxvYWQoIHN5cyApCisJCQlzeXMuc2V0ZGVmYXVsdGVu
Y29kaW5nKCAndXRmLTgnICkKKworCQlhcmdzIAk9IHBhcnNlX2FyZ3VtZW50cygpCisJCWhlYWRl
ciAJPSBtYWtlX2hlYWRlciggYXJncyApCisKKwkJd3JpdGVfaGVhZGVyKCBhcmdzLCBoZWFkZXIg
KQorCisJCXJlc3VsdCA9IDAKKworCWV4Y2VwdCAoIEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1F
eGl0ICk6CisJIAlwYXNzCisJZXhjZXB0OgorCSAJcmFpc2UKKworCXN5cy5leGl0KCByZXN1bHQg
KQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ODBkN2VhZGE3
OGVjMjgxZTk5NWEzOGZkODAyYjc3ZDk0M2QxMWQxLi5jZmZiNzViMWNjNTUxMjhhODQ2NjhiMzk4
YzgwMDE5YzkyNDNlZGM0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDItMTcgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbnRlZ3JhdGUgTWV0
YWwtY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzY2OTcKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgTWV0
YWwtY3BwIGZpbGVzIHNob3VsZCBub3QgYmUgc3R5bGUtY2hlY2tlZC4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weToKKwogMjAyMi0wMi0xNyAgQWRpdHlhIEtl
ZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgJy13ZWJraXQtdXNlci1zZWxl
Y3Q6IGFsbCcgaXMgbm90IHJlc3BlY3RlZCBpbiBlZGl0YWJsZSB2aWV3cwpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IGRkNTVmODM5Mjg2MGFiZmZkZjQ1OTkwNmUx
MjJlZmY2NmExYzBjMDUuLmFiNzg5ZDcxYzlhMTFlZjBiM2JkN2FkNmI2NzJkMjdmMjhlNWJhMzAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTQwMiw3ICs0MDIs
OCBAQCBfU0tJUFBFRF9GSUxFU19XSVRIX1dBUk5JTkcgPSBbCiAgICAgb3MucGF0aC5qb2luKCdT
b3VyY2UnLCAnV2ViS2l0JywgJ1dlYlByb2Nlc3MnLCAnSW5qZWN0ZWRCdW5kbGUnLCAnQVBJJywg
J3dwZScsICd3ZWJraXQtd2ViLWV4dGVuc2lvbi5oJyksCiAgICAgb3MucGF0aC5qb2luKCdTb3Vy
Y2UnLCAnV2ViS2l0JywgJ1dlYlByb2Nlc3MnLCAnSW5qZWN0ZWRCdW5kbGUnLCAnQVBJJywgJ3dw
ZScsICdET00nLCAnd2Via2l0ZG9tLmgnKSwKICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdX
ZWJHUFUnLCAnV2ViR1BVJywgJ1dlYkdQVS5oJyksCi0gICAgb3MucGF0aC5qb2luKCdTb3VyY2Un
LCAnV2ViR1BVJywgJ1dlYkdQVScsICdXZWJHUFVFeHQuaCcpXQorICAgIG9zLnBhdGguam9pbign
U291cmNlJywgJ1dlYkdQVScsICdXZWJHUFUnLCAnV2ViR1BVRXh0LmgnKSwKKyAgICBvcy5wYXRo
LmpvaW4oJ1NvdXJjZScsICdXZWJHUFUnLCAnV2ViR1BVJywgJ21ldGFsLWNwcCcsICdTaW5nbGVI
ZWFkZXInLCAnTWFrZVNpbmdsZUhlYWRlci5weScpXQogCiAjIEZpbGVzIHRvIHNraXAgdGhhdCBh
cmUgbW9yZSBjb21tb24gb3Igb2J2aW91cy4KICMK
</data>
<flag name="commit-queue"
          id="479519"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458665</attachid>
            <date>2022-05-02 00:18:33 -0700</date>
            <delta_ts>2022-05-02 00:18:33 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-236697-20220502001832.patch</filename>
            <type>text/plain</type>
            <size>982706</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDlmMzM1NTZkMDM4MmQ2N2I2
ZGFjYTYxOGE3YmE1NWJhMWRiMzgxNDAuLmRlNzllNzU2YWZhOTJhMWVhMmI2MjZhODdkMTExZjY1
ZmM4ZTA2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDIyLTA1LTAyICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW50
ZWdyYXRlIE1ldGFsLWNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2Njk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisg
ICAgICAgIE1ldGFsLWNwcCBpcyBhIGxvdy1vdmVyaGVhZCBDKysgaW50ZXJmYWNlIGZvciBNZXRh
bC4KKyAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL21ldGFsL2NwcC8KKworICAg
ICAgICBNZXRhbC1jcHAgaXNuJ3QgYSBsaWJyYXJ5IHBlci1zZSwgYnV0IGlzIGluc3RlYWQganVz
dCBhIGNvbGxlY3Rpb24gb2YgZmlsZXMgd2hpY2ggdXNlcnMKKyAgICAgICAgYXJlIHN1cHBvc2Vk
IHRvIGp1c3QgY29weSBpbnRvIHRoZWlyIHByb2plY3QuIFRoaXMgZG9lcyBqdXN0IHRoYXQsIGFu
ZCBob29rcyB1cCBhbGwgdGhlCisgICAgICAgIG5lY2Vzc2FyeSBmbGFncyBhbmQgcGF0aHMgYW5k
IGV2ZXJ5dGhpbmcuCisKKyAgICAgICAgVGhpcyB1c2VzIHRoZSAic2luZ2xlIGhlYWRlciBhbHRl
cm5hdGl2ZSIgZGVzY3JpYmVkIG9uIHRoYXQgd2VicGFnZSwgYW5kIGNyZWF0ZXMgdGhlCisgICAg
ICAgIHNpbmdsZSBmaWxlIGFzIGEgYnVpbGQgc3RlcC4KKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL1dlYkdQVS54Y2NvbmZpZzoKKyAgICAgICAgKiBXZWJHUFUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJHUFUvTWV0YWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJHUFUvY29uZmlnLmg6CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNBcnJheS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvRm91bmRh
dGlvbi9OU0F1dG9yZWxlYXNlUG9vbC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvRm91bmRhdGlvbi9OU0J1bmRsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGEuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RpY3Rpb25hcnkuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNMb2NrLmhwcDogQWRk
ZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90aWZpY2F0aW9u
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTnVt
YmVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
T2JqQ1J1bnRpbWUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNPYmplY3QuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL0Zv
dW5kYXRpb24vTlNQcml2YXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TUHJvY2Vzc0luZm8uaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1N0cmluZy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1R5cGVzLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TVVJMLmhwcDogQWRkZWQuCisgICAgICAgICog
V2ViR1BVL21ldGFsLWNwcC9MSUNFTlNFLnR4dDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1h
bmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnQuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50RW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAg
ICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmluYXJ5QXJjaGl2ZS5ocHA6IEFkZGVkLgor
ICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQmxpdENvbW1hbmRFbmNvZGVyLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0UGFzcy5o
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQnVmZmVyLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDYXB0dXJlTWFu
YWdlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2Fw
dHVyZVNjb3BlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExDb21tYW5kQnVmZmVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQ29tbWFuZFF1ZXVlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQYXNzLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBw
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvdW50ZXJzLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZWZpbmVzLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXB0aFN0ZW5j
aWwuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERldmlj
ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHJhd2Fi
bGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFt
aWNMaWJyYXJ5LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExFdmVudC5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RmVuY2UuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1
bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUuaHBwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcDogQWRkZWQuCisg
ICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvblN0aXRjaGluZy5ocHA6
IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSGVhZGVyQnJpZGdl
LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFwLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVjdENv
bW1hbmRCdWZmZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpYnJhcnkuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpbmtlZEZ1bmN0aW9ucy5ocHA6
IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUGlwZWxpbmUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTFBpeGVsRm9ybWF0LmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExQcml2YXRlLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExSYXN0ZXJpemF0aW9uUmF0ZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBhc3MuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlbmRlclBpcGVsaW5lLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZS5o
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VT
dGF0ZUNvbW1hbmRFbmNvZGVyLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFzcy5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMU2FtcGxlci5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFRleHR1cmUuaHBwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFR5cGVzLmhwcDogQWRkZWQu
CisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhw
cDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWaXNpYmxlRnVu
Y3Rpb25UYWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TWV0YWwuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUv
Q0FEZWZpbmVzLmhwcDogQWRkZWQuCisgICAgICAgICogV2ViR1BVL21ldGFsLWNwcC9RdWFydHpD
b3JlL0NBTWV0YWxEcmF3YWJsZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS9tZXRhbC1j
cHAvUXVhcnR6Q29yZS9DQVByaXZhdGUuaHBwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0
YWwtY3BwL1F1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHA6IEFkZGVkLgorICAgICAgICAqIFdlYkdQ
VS9tZXRhbC1jcHAvUkVBRE1FLm1kOiBBZGRlZC4KKyAgICAgICAgKiBXZWJHUFUvbWV0YWwtY3Bw
L1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5OiBBZGRlZC4KKyAgICAgICAgKEhlYWRl
clByZWZpeCk6CisgICAgICAgIChIZWFkZXJQcmVmaXguX19pbml0X18pOgorICAgICAgICAoSGVh
ZGVyUHJlZml4Ll9fc3RyX18pOgorICAgICAgICAoSGVhZGVyUHJlZml4Ll9fZ2V0X2NvbW1pdF9o
YXNoKToKKyAgICAgICAgKEhlYWRlclByZWZpeC5fX2dldF9jb21taXRfc3RyaW5nKToKKyAgICAg
ICAgKEhlYWRlclByZWZpeC5fX2dldF9kYXRlX3N0cmluZyk6CisgICAgICAgIChfX21ldGFfZGF0
YV9zdHJpbmcpOgorICAgICAgICAoU2luZ2xlSGVhZGVyKToKKyAgICAgICAgKFNpbmdsZUhlYWRl
ci5fX2luaXRfXyk6CisgICAgICAgIChTaW5nbGVIZWFkZXIuX19zdHJfXyk6CisgICAgICAgIChT
aW5nbGVIZWFkZXIuYXBwZW5kKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5wcm9jZXNzKToKKyAg
ICAgICAgKFNpbmdsZUhlYWRlci5fX3JlYWRfaGVhZGVyKToKKyAgICAgICAgKFNpbmdsZUhlYWRl
ci5fX3N0cmlwX3ByYWdtYV9vbmNlKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX2Nv
bW1lbnRzKToKKyAgICAgICAgKFNpbmdsZUhlYWRlci5fX3N0cmlwX2VtcHR5X2xpbmVzKToKKyAg
ICAgICAgKFNpbmdsZUhlYWRlci5fX3N1YnN0aXR1dGVfaW5jbHVkZV9kaXJlY3RpdmUpOgorICAg
ICAgICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2ZXMpOgorICAgICAg
ICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19mb3VuZGF0aW9uX2RpcmVjdGl2ZXMpOgorICAgICAg
ICAoU2luZ2xlSGVhZGVyLl9fcHJvY2Vzc19oZWFkZXIpOgorICAgICAgICAoY3JlYXRlX2FyZ3Vt
ZW50X3BhcnNlcik6CisgICAgICAgIChwYXJzZV9hcmd1bWVudHMpOgorICAgICAgICAobWFrZV9o
ZWFkZXIpOgorICAgICAgICAobWFrZV9kaXIpOgorICAgICAgICAod3JpdGVfaGVhZGVyKToKKwog
MjAyMi0wNC0yNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWJHUFUgZG9lc24ndCBjcmVhdGUgYSBzeW1saW5rIHRvIHRoZSBzeXN0ZW0gY29udGVudCBw
YXRoIGluIGluc3RhbGxoZHJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0NvbmZpZ3VyYXRp
b25zL1dlYkdQVS54Y2NvbmZpZyBiL1NvdXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BV
LnhjY29uZmlnCmluZGV4IDRlNjc0MWZjNzQ1YmY0ZWM2MzY5YTM3MjZkYjczYTUxMWE5ZThmNTEu
LjljMjQ5MWQ3MWFjYzA2Y2Y0ZTg2MjZhMTk5OGNiNDc5NWZmOGIxN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnCisrKyBiL1NvdXJjZS9X
ZWJHUFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnCkBAIC0yMyw3ICsyMywxMCBAQAog
CiAjaW5jbHVkZSAiVmVyc2lvbi54Y2NvbmZpZyIKIAorV0FSTklOR19DRkxBR1MgPSAtV2FsbCAt
V2V4dHJhIC1XY2FzdC1xdWFsIC1XY2hhci1zdWJzY3JpcHRzIC1XY29uZGl0aW9uYWwtdW5pbml0
aWFsaXplZCAtV2V4dHJhLXRva2VucyAtV2Zvcm1hdD0yIC1XaW5pdC1zZWxmIC1XbWlzc2luZy1m
b3JtYXQtYXR0cmlidXRlIC1XbWlzc2luZy1ub3JldHVybiAtV3BvaW50ZXItYXJpdGggLVdyZWR1
bmRhbnQtZGVjbHMgLVd3cml0ZS1zdHJpbmdzIC1XZXhpdC10aW1lLWRlc3RydWN0b3JzIC1XdGF1
dG9sb2dpY2FsLWNvbXBhcmUgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaCAtV3ZsYSAtV2xpdGVyYWwt
Y29udmVyc2lvbiAtV3RocmVhZC1zYWZldHkgLVduby10eXBlZGVmLXJlZGVmaW5pdGlvbiAtV25v
LWlnbm9yZWQtcXVhbGlmaWVyczsKKwogSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoaW5oZXJpdGVkKTsKK1NZU1RFTV9IRUFE
RVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkdQVS9tZXRhbC1jcHAgJChpbmhlcml0ZWQpOwogCiBXS19QUklWQVRFX0ZSQU1FV09SS1NfRElS
ID0gJChXS19QUklWQVRFX0ZSQU1FV09SS1NfRElSXyQoVVNFX0lOVEVSTkFMX1NESykpOwogV0tf
UFJJVkFURV9GUkFNRVdPUktTX0RJUl9bc2RrPW1hY29zKl0gPSAkKFBST0pFQ1RfRElSKS8uLi8u
Li9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL01hYy8kKFRBUkdF
VF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKTsKQEAgLTkwLDQgKzkzLDYgQEAgTU9EVUxFTUFQX0ZJ
TEUgPSBXZWJHUFUvV2ViR1BVLm1vZHVsZW1hcDsKIFNVUFBPUlRTX1RFWFRfQkFTRURfQVBJID0g
WUVTOwogVEFQSV9WRVJJRllfTU9ERSA9IFBlZGFudGljOwogCi1PVEhFUl9MREZMQUdTID0gJChp
bmhlcml0ZWQpICQoU09VUkNFX1ZFUlNJT05fTERGTEFHUyk7CitIRUFERVJNQVBfSU5DTFVERVNf
UFJPSkVDVF9IRUFERVJTID0gTk87CisKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgJChT
T1VSQ0VfVkVSU0lPTl9MREZMQUdTKSAtWGxpbmtlciAtbm9fd2Fybl9pbml0czsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJlYTZlNWY5
YzQ4MDUxYzQ5NjMzY2U5ZTM2ODIzODE0MWExNTg2MDYuLjQ4MWUyYjNkMWQ4ZDE4YTFhNmJhOGE2
MjJlMWVlYzM0NjIwYmVhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTYsNiArMTYsNyBAQAogCQkxQzMzNzU1RjI3RkEyM0I4MDAy
RjE2NDQgLyogSXNWYWxpZFRvVXNlV2l0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUMzMzc1NUQyN0ZBMjNCODAwMkYxNjQ0IC8qIElzVmFsaWRUb1Vz
ZVdpdGguaCAqLzsgfTsKIAkJMUM1MzE5QzAyN0JEQzZDQzAwQ0QxMjdFIC8qIG1haW4uc3dpZnQg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzUzMTlCRjI3
QkRDNkNDMDBDRDEyN0UgLyogbWFpbi5zd2lmdCAqLzsgfTsKIAkJMUM1MzE5QzUyN0JEQzcyNzAw
Q0QxMjdFIC8qIFdlYkdQVS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0VCRDdFMzI3MTZBRkJBMDBBNTI1NEQgLyogV2ViR1BVLmZy
YW1ld29yayAqLzsgfTsKKwkJMUM1MzFBMjUyN0JEREY1NTAwQ0QxMjdFIC8qIE1ldGFsLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTMxQTI0MjdC
RERGNTUwMENEMTI3RSAvKiBNZXRhbC5jcHAgKi87IH07CiAJCTFDNTgyRkY5MjdFMDQxMzEwMDlC
NDBGMCAvKiBDb21tYW5kc01peGluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUM1ODJGRjcyN0UwNDEzMTAwOUI0MEYwIC8qIENvbW1hbmRzTWl4aW4u
bW0gKi87IH07CiAJCTFDNTgyRkZBMjdFMDQxMzEwMDlCNDBGMCAvKiBDb21tYW5kc01peGluLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzU4MkZGODI3
RTA0MTMxMDA5QjQwRjAgLyogQ29tbWFuZHNNaXhpbi5oICovOyB9OwogCQkxQzU4MzAxODI3RTE2
ODIzMDA5QjQwRjAgLyogQVBJQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNTgzMDE3MjdFMTY4MjMwMDlCNDBGMCAvKiBBUElDb252
ZXJzaW9ucy5oICovOyB9OwpAQCAtMTQwLDYgKzE0MSw5MSBAQAogCQkxQzUzMTlCRDI3QkRDNkNC
MDBDRDEyN0UgLyogQ29tbWFuZExpbmVQbGF5Z3JvdW5kICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBp
bmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBDb21tYW5kTGluZVBsYXlncm91bmQ7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDNTMxOUJGMjdCREM2Q0MwMENEMTI3RSAv
KiBtYWluLnN3aWZ0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5zd2lmdDsgcGF0aCA9IG1haW4uc3dpZnQ7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDNTMxOUNBMjdCREQ3MDAwMENEMTI3RSAvKiBDb21tYW5kTGluZVBs
YXlncm91bmQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29tbWFuZExpbmVQbGF5Z3JvdW5kLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlDRDI3QkRERDZFMDBD
RDEyN0UgLyogTVRMVHlwZXMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFR5cGVzLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5Q0UyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMUmVz
b3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1MzE5Q0YyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIu
aHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEluZGlyZWN0Q29tbWFuZEVuY29kZXIuaHBwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEMDI3QkRERDZFMDBDRDEyN0UgLyogTVRM
Q29tcHV0ZVBpcGVsaW5lLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDb21wdXRlUGlwZWxpbmUu
aHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEMTI3QkRERDZFMDBDRDEy
N0UgLyogTVRMRnVuY3Rpb25IYW5kbGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEZ1bmN0aW9u
SGFuZGxlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDIyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTERyYXdhYmxlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExEcmF3YWJs
ZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQzMjdCRERENkUwMENE
MTI3RSAvKiBNVExEeW5hbWljTGlicmFyeS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRHluYW1p
Y0xpYnJhcnkuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlENDI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMQ29tcHV0ZVBhc3MuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTENv
bXB1dGVQYXNzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RDUyN0JE
REQ2RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzUzMTlENjI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGlwZWxpbmUuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE1UTFBpcGVsaW5lLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzE5RDcyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlbmRlckNvbW1hbmRFbmNvZGVy
LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQ4MjdCRERENkUwMENEMTI3RSAvKiBNVExC
bGl0Q29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEJsaXRDb21tYW5kRW5j
b2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUQ5MjdCRERENkUw
MENEMTI3RSAvKiBNVExDYXB0dXJlTWFuYWdlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ2Fw
dHVyZU1hbmFnZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlEQTI3
QkRERDZFMDBDRDEyN0UgLyogTVRMQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9
IE1UTENvbW1hbmRFbmNvZGVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1
MzE5REIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1ldGFsLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNZXRh
bC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOURDMjdCRERENkUwMENE
MTI3RSAvKiBNVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRo
ID0gTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzUzMTlERDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlVHlwZXMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEFjY2VsZXJhdGlvblN0cnVjdHVy
ZVR5cGVzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5REUyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
aDsgcGF0aCA9IE1UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlERjI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmFzdGVy
aXphdGlvblJhdGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFJhc3Rlcml6YXRpb25SYXRlLmhw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTAyN0JEREQ2RTAwQ0QxMjdF
IC8qIE1UTExpbmtlZEZ1bmN0aW9ucy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMTGlua2VkRnVu
Y3Rpb25zLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTEyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTFRleHR1cmUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFRleHR1cmUu
aHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFMjI3QkRERDZFMDBDRDEy
N0UgLyogTVRMU2FtcGxlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMU2FtcGxlci5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUUzMjdCRERENkUwMENEMTI3RSAvKiBN
VExEZXB0aFN0ZW5jaWwuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTERlcHRoU3RlbmNpbC5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUU0MjdCRERENkUwMENEMTI3RSAv
KiBNVExBcmd1bWVudEVuY29kZXIuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEFyZ3VtZW50RW5j
b2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUU1MjdCRERENkUw
MENEMTI3RSAvKiBNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBh
dGggPSBNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM1MzE5RTYyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFZpc2libGVGdW5jdGlv
blRhYmxlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUU3MjdCRERENkUwMENEMTI3RSAv
KiBNVExQcml2YXRlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExQcml2YXRlLmhwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RTgyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJl
c291cmNlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExSZXNvdXJjZS5ocHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUU5MjdCRERENkUwMENEMTI3RSAvKiBNVExBY2NlbGVy
YXRpb25TdHJ1Y3R1cmUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEFjY2VsZXJhdGlvblN0cnVj
dHVyZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUVBMjdCRERENkUw
MENEMTI3RSAvKiBNVExEZXZpY2UuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTERldmljZS5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUVCMjdCRERENkUwMENEMTI3RSAv
KiBNVExBcmd1bWVudC5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQXJndW1lbnQuaHBwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlFQzI3QkRERDZFMDBDRDEyN0UgLyogTVRM
RnVuY3Rpb25Mb2cuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEZ1bmN0aW9uTG9nLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RUQyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TEJ1ZmZlci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQnVmZmVyLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RUUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFJlbmRlclBh
c3MuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFJlbmRlclBhc3MuaHBwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzUzMTlFRjI3QkRERDZFMDBDRDEyN0UgLyogTVRMSGVhcC5ocHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5oOyBwYXRoID0gTVRMSGVhcC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDNTMxOUYwMjdCRERENkUwMENEMTI3RSAvKiBNVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmg7IHBhdGggPSBNVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uU3Rp
dGNoaW5nLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExGdW5jdGlvblN0aXRjaGluZy5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUYyMjdCRERENkUwMENEMTI3RSAvKiBN
VExMaWJyYXJ5LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExMaWJyYXJ5LmhwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTFBpeGVs
Rm9ybWF0LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExQaXhlbEZvcm1hdC5ocHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUY0MjdCRERENkUwMENEMTI3RSAvKiBNVExGZW5j
ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMRmVuY2UuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzUzMTlGNTI3QkRERDZFMDBDRDEyN0UgLyogTVRMSW5kaXJlY3RDb21tYW5k
QnVmZmVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGNjI3QkRERDZFMDBDRDEyN0Ug
LyogTVRMUmVuZGVyUGlwZWxpbmUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTFJlbmRlclBpcGVs
aW5lLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjcyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTENvbW1hbmRRdWV1ZS5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRMQ29tbWFu
ZFF1ZXVlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RjgyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0g
TVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzE5RjkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1h
bmRFbmNvZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVD
b21tYW5kRW5jb2Rlci5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxOUZB
MjdCRERENkUwMENEMTI3RSAvKiBNVExCbGl0UGFzcy5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTVRM
QmxpdFBhc3MuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGQjI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMRXZlbnQuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEV2ZW50Lmhw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzE5RkMyN0JEREQ2RTAwQ0QxMjdF
IC8qIE1UTEJpbmFyeUFyY2hpdmUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1UTEJpbmFyeUFyY2hp
dmUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGRDI3QkRERDZFMDBD
RDEyN0UgLyogTVRMQ2FwdHVyZVNjb3BlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBNVExDYXB0dXJl
U2NvcGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMTlGRTI3QkRERDZF
MDBDRDEyN0UgLyogTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBNVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzUzMTlGRjI3QkRERDZFMDBDRDEyN0UgLyogTVRMSGVhZGVyQnJpZGdlLmhwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmg7IHBhdGggPSBNVExIZWFkZXJCcmlkZ2UuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzUzMUEwMDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ291bnRlcnMuaHBwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuaDsgcGF0aCA9IE1UTENvdW50ZXJzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1MzFBMDEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTERlZmluZXMuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE1UTERlZmluZXMuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
MUEwMjI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
aDsgcGF0aCA9IE1UTFJlc291cmNlU3RhdGVQYXNzLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUM1MzFBMDMyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTENvbW1hbmRCdWZmZXIuaHBw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuaDsgcGF0aCA9IE1UTENvbW1hbmRCdWZmZXIuaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzUzMUEwNTI3QkRERDZFMDBDRDEyN0UgLyogTlNTdHJpbmcuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE5TU3RyaW5nLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1MzFBMDYyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRGljdGlvbmFyeS5ocHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5o
OyBwYXRoID0gTlNEaWN0aW9uYXJ5LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUM1MzFBMDcyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TTG9jay5ocHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0g
TlNMb2NrLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMDgyN0JEREQ2
RTAwQ0QxMjdFIC8qIE5TUHJvY2Vzc0luZm8uaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TUHJvY2Vz
c0luZm8uaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUEwOTI3QkRERDZF
MDBDRDEyN0UgLyogTlNFcnJvci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNFcnJvci5ocHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTBBMjdCRERENkUwMENEMTI3RSAvKiBO
U09iakNSdW50aW1lLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU09iakNSdW50aW1lLmhwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMEIyN0JEREQ2RTAwQ0QxMjdFIC8qIE5T
T2JqZWN0LmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU09iamVjdC5ocHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDNTMxQTBDMjdCRERENkUwMENEMTI3RSAvKiBOU05vdGlmaWNhdGlv
bi5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNOb3RpZmljYXRpb24uaHBwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQzUzMUEwRDI3QkRERDZFMDBDRDEyN0UgLyogTlNQcml2YXRlLmhw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmg7IHBhdGggPSBOU1ByaXZhdGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzUzMUEwRTI3QkRERDZFMDBDRDEyN0UgLyogTlNVUkwuaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IE5TVVJMLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMEYy
N0JEREQ2RTAwQ0QxMjdFIC8qIE5TQXV0b3JlbGVhc2VQb29sLmhwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGgg
PSBOU0F1dG9yZWxlYXNlUG9vbC5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFD
NTMxQTEwMjdCRERENkUwMENEMTI3RSAvKiBOU1JhbmdlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBO
U1JhbmdlLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMTEyN0JEREQ2
RTAwQ0QxMjdFIC8qIE5TVHlwZXMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TVHlwZXMuaHBwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExMjI3QkRERDZFMDBDRDEyN0UgLyog
TlNEYXRhLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0RhdGEuaHBwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzUzMUExMzI3QkRERDZFMDBDRDEyN0UgLyogTlNOdW1iZXIuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE5TTnVtYmVyLmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUM1MzFBMTQyN0JEREQ2RTAwQ0QxMjdFIC8qIEZvdW5kYXRpb24uaHBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsg
cGF0aCA9IEZvdW5kYXRpb24uaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
MUExNTI3QkRERDZFMDBDRDEyN0UgLyogTlNEYXRlLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0Rh
dGUuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExNjI3QkRERDZFMDBD
RDEyN0UgLyogTlNEZWZpbmVzLmhwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmg7IHBhdGggPSBOU0RlZmluZXMuaHBwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUzMUExNzI3QkRERDZFMDBDRDEyN0UgLyog
TlNCdW5kbGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE5TQnVuZGxlLmhwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMTgyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TRW51bWVyYXRv
ci5ocHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0gTlNFbnVtZXJhdG9yLmhwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUM1MzFBMTkyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TQXJyYXkuaHBwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuaDsgcGF0aCA9IE5TQXJyYXkuaHBwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzUzMUExQTI3QkRERDZFMDBDRDEyN0UgLyogUkVBRE1FLm1kICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gbmV0LmRhcmluZ2ZpcmViYWxsLm1hcmtk
b3duOyBwYXRoID0gUkVBRE1FLm1kOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
MUExQzI3QkRERDZFMDBDRDEyN0UgLyogUXVhcnR6Q29yZS5ocHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5oOyBwYXRoID0g
UXVhcnR6Q29yZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFEMjdC
RERENkUwMENEMTI3RSAvKiBDQVByaXZhdGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IENBUHJpdmF0
ZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFFMjdCRERENkUwMENE
MTI3RSAvKiBDQU1ldGFsRHJhd2FibGUuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IENBTWV0YWxEcmF3
YWJsZS5ocHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTFGMjdCRERENkUw
MENEMTI3RSAvKiBDQURlZmluZXMuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IENBRGVmaW5lcy5ocHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDNTMxQTIwMjdCRERENkUwMENEMTI3RSAv
KiBMSUNFTlNFLnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBMSUNFTlNFLnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUM1MzFBMjIyN0JEREQ2RTAwQ0QxMjdFIC8qIE1ha2VTaW5nbGVIZWFkZXIucHkgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5weXRob247IHBhdGggPSBNYWtlU2luZ2xlSGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzUzMUEyNDI3QkRERjU1MDBDRDEyN0UgLyogTWV0YWwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWV0YWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzUz
MUEyQTI3QkRFMDY3MDBDRDEyN0UgLyogTWV0YWwuaHBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuaDsgcGF0aCA9IE1ldGFs
LmhwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM1ODJGRjcyN0UwNDEzMTAwOUI0
MEYwIC8qIENvbW1hbmRzTWl4aW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb21tYW5kc01p
eGluLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzU4MkZGODI3RTA0MTMxMDA5
QjQwRjAgLyogQ29tbWFuZHNNaXhpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5kc01peGluLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNTgzMDE3MjdFMTY4MjMwMDlCNDBGMCAv
KiBBUElDb252ZXJzaW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElDb252ZXJzaW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk3LDYgKzM4MywxNTMgQEAKIAkJCXBhdGggPSBD
b21tYW5kTGluZVBsYXlncm91bmQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owor
CQkxQzUzMTlDQjI3QkRERDZFMDBDRDEyN0UgLyogbWV0YWwtY3BwICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEwNDI3QkRERDZFMDBDRDEyN0Ug
LyogRm91bmRhdGlvbiAqLywKKwkJCQkxQzUzMTlDQzI3QkRERDZFMDBDRDEyN0UgLyogTWV0YWwg
Ki8sCisJCQkJMUM1MzFBMUIyN0JEREQ2RTAwQ0QxMjdFIC8qIFF1YXJ0ekNvcmUgKi8sCisJCQkJ
MUM1MzFBMjEyN0JEREQ2RTAwQ0QxMjdFIC8qIFNpbmdsZUhlYWRlciAqLywKKwkJCQkxQzUzMUEy
MDI3QkRERDZFMDBDRDEyN0UgLyogTElDRU5TRS50eHQgKi8sCisJCQkJMUM1MzFBMUEyN0JEREQ2
RTAwQ0QxMjdFIC8qIFJFQURNRS5tZCAqLywKKwkJCSk7CisJCQlwYXRoID0gIm1ldGFsLWNwcCI7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzUzMTlDQzI3QkRERDZFMDBD
RDEyN0UgLyogTWV0YWwgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTFDNTMxOURCMjdCRERENkUwMENEMTI3RSAvKiBNZXRhbC5ocHAgKi8sCisJCQkJMUM1
MzE5RTkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAgKi8s
CisJCQkJMUM1MzE5RjkyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEFjY2VsZXJhdGlvblN0cnVjdHVy
ZUNvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlERDI3QkRERDZFMDBDRDEyN0UgLyog
TVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHlwZXMuaHBwICovLAorCQkJCTFDNTMxOUVCMjdCRERE
NkUwMENEMTI3RSAvKiBNVExBcmd1bWVudC5ocHAgKi8sCisJCQkJMUM1MzE5RTQyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTEFyZ3VtZW50RW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5RkMyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTEJpbmFyeUFyY2hpdmUuaHBwICovLAorCQkJCTFDNTMxOUQ4MjdCRERE
NkUwMENEMTI3RSAvKiBNVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwICovLAorCQkJCTFDNTMxOUZB
MjdCRERENkUwMENEMTI3RSAvKiBNVExCbGl0UGFzcy5ocHAgKi8sCisJCQkJMUM1MzE5RUQyN0JE
REQ2RTAwQ0QxMjdFIC8qIE1UTEJ1ZmZlci5ocHAgKi8sCisJCQkJMUM1MzE5RDkyN0JEREQ2RTAw
Q0QxMjdFIC8qIE1UTENhcHR1cmVNYW5hZ2VyLmhwcCAqLywKKwkJCQkxQzUzMTlGRDI3QkRERDZF
MDBDRDEyN0UgLyogTVRMQ2FwdHVyZVNjb3BlLmhwcCAqLywKKwkJCQkxQzUzMUEwMzI3QkRERDZF
MDBDRDEyN0UgLyogTVRMQ29tbWFuZEJ1ZmZlci5ocHAgKi8sCisJCQkJMUM1MzE5REEyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTENvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMTlGNzI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMQ29tbWFuZFF1ZXVlLmhwcCAqLywKKwkJCQkxQzUzMTlGRTI3QkRE
RDZFMDBDRDEyN0UgLyogTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUz
MTlENDI3QkRERDZFMDBDRDEyN0UgLyogTVRMQ29tcHV0ZVBhc3MuaHBwICovLAorCQkJCTFDNTMx
OUQwMjdCRERENkUwMENEMTI3RSAvKiBNVExDb21wdXRlUGlwZWxpbmUuaHBwICovLAorCQkJCTFD
NTMxQTAwMjdCRERENkUwMENEMTI3RSAvKiBNVExDb3VudGVycy5ocHAgKi8sCisJCQkJMUM1MzFB
MDEyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTERlZmluZXMuaHBwICovLAorCQkJCTFDNTMxOUUzMjdC
RERENkUwMENEMTI3RSAvKiBNVExEZXB0aFN0ZW5jaWwuaHBwICovLAorCQkJCTFDNTMxOUVBMjdC
RERENkUwMENEMTI3RSAvKiBNVExEZXZpY2UuaHBwICovLAorCQkJCTFDNTMxOUQyMjdCRERENkUw
MENEMTI3RSAvKiBNVExEcmF3YWJsZS5ocHAgKi8sCisJCQkJMUM1MzE5RDMyN0JEREQ2RTAwQ0Qx
MjdFIC8qIE1UTER5bmFtaWNMaWJyYXJ5LmhwcCAqLywKKwkJCQkxQzUzMTlGQjI3QkRERDZFMDBD
RDEyN0UgLyogTVRMRXZlbnQuaHBwICovLAorCQkJCTFDNTMxOUY0MjdCRERENkUwMENEMTI3RSAv
KiBNVExGZW5jZS5ocHAgKi8sCisJCQkJMUM1MzE5RDUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEZ1
bmN0aW9uQ29uc3RhbnRWYWx1ZXMuaHBwICovLAorCQkJCTFDNTMxOUY4MjdCRERENkUwMENEMTI3
RSAvKiBNVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwICovLAorCQkJCTFDNTMxOUQxMjdCRERENkUw
MENEMTI3RSAvKiBNVExGdW5jdGlvbkhhbmRsZS5ocHAgKi8sCisJCQkJMUM1MzE5RUMyN0JEREQ2
RTAwQ0QxMjdFIC8qIE1UTEZ1bmN0aW9uTG9nLmhwcCAqLywKKwkJCQkxQzUzMTlGMTI3QkRERDZF
MDBDRDEyN0UgLyogTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwICovLAorCQkJCTFDNTMxOUZGMjdC
RERENkUwMENEMTI3RSAvKiBNVExIZWFkZXJCcmlkZ2UuaHBwICovLAorCQkJCTFDNTMxOUVGMjdC
RERENkUwMENEMTI3RSAvKiBNVExIZWFwLmhwcCAqLywKKwkJCQkxQzUzMTlGNTI3QkRERDZFMDBD
RDEyN0UgLyogTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcCAqLywKKwkJCQkxQzUzMTlDRjI3
QkRERDZFMDBDRDEyN0UgLyogTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAgKi8sCisJCQkJ
MUM1MzE5RTUyN0JEREQ2RTAwQ0QxMjdFIC8qIE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUu
aHBwICovLAorCQkJCTFDNTMxOUYyMjdCRERENkUwMENEMTI3RSAvKiBNVExMaWJyYXJ5LmhwcCAq
LywKKwkJCQkxQzUzMTlFMDI3QkRERDZFMDBDRDEyN0UgLyogTVRMTGlua2VkRnVuY3Rpb25zLmhw
cCAqLywKKwkJCQkxQzUzMTlERTI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGFyYWxsZWxSZW5kZXJD
b21tYW5kRW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5RDYyN0JEREQ2RTAwQ0QxMjdFIC8qIE1U
TFBpcGVsaW5lLmhwcCAqLywKKwkJCQkxQzUzMTlGMzI3QkRERDZFMDBDRDEyN0UgLyogTVRMUGl4
ZWxGb3JtYXQuaHBwICovLAorCQkJCTFDNTMxOUU3MjdCRERENkUwMENEMTI3RSAvKiBNVExQcml2
YXRlLmhwcCAqLywKKwkJCQkxQzUzMTlERjI3QkRERDZFMDBDRDEyN0UgLyogTVRMUmFzdGVyaXph
dGlvblJhdGUuaHBwICovLAorCQkJCTFDNTMxOUQ3MjdCRERENkUwMENEMTI3RSAvKiBNVExSZW5k
ZXJDb21tYW5kRW5jb2Rlci5ocHAgKi8sCisJCQkJMUM1MzE5RUUyN0JEREQ2RTAwQ0QxMjdFIC8q
IE1UTFJlbmRlclBhc3MuaHBwICovLAorCQkJCTFDNTMxOUY2MjdCRERENkUwMENEMTI3RSAvKiBN
VExSZW5kZXJQaXBlbGluZS5ocHAgKi8sCisJCQkJMUM1MzE5RTgyN0JEREQ2RTAwQ0QxMjdFIC8q
IE1UTFJlc291cmNlLmhwcCAqLywKKwkJCQkxQzUzMTlDRTI3QkRERDZFMDBDRDEyN0UgLyogTVRM
UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyLmhwcCAqLywKKwkJCQkxQzUzMUEwMjI3QkRERDZF
MDBDRDEyN0UgLyogTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwICovLAorCQkJCTFDNTMxOUUyMjdC
RERENkUwMENEMTI3RSAvKiBNVExTYW1wbGVyLmhwcCAqLywKKwkJCQkxQzUzMTlEQzI3QkRERDZF
MDBDRDEyN0UgLyogTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwICovLAorCQkJCTFD
NTMxOUUxMjdCRERENkUwMENEMTI3RSAvKiBNVExUZXh0dXJlLmhwcCAqLywKKwkJCQkxQzUzMTlD
RDI3QkRERDZFMDBDRDEyN0UgLyogTVRMVHlwZXMuaHBwICovLAorCQkJCTFDNTMxOUYwMjdCRERE
NkUwMENEMTI3RSAvKiBNVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCAqLywKKwkJCQkxQzUzMTlFNjI3
QkRERDZFMDBDRDEyN0UgLyogTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwICovLAorCQkJKTsK
KwkJCXBhdGggPSBNZXRhbDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFD
NTMxQTA0MjdCRERENkUwMENEMTI3RSAvKiBGb3VuZGF0aW9uICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUExNDI3QkRERDZFMDBDRDEyN0UgLyog
Rm91bmRhdGlvbi5ocHAgKi8sCisJCQkJMUM1MzFBMTkyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TQXJy
YXkuaHBwICovLAorCQkJCTFDNTMxQTBGMjdCRERENkUwMENEMTI3RSAvKiBOU0F1dG9yZWxlYXNl
UG9vbC5ocHAgKi8sCisJCQkJMUM1MzFBMTcyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TQnVuZGxlLmhw
cCAqLywKKwkJCQkxQzUzMUExMjI3QkRERDZFMDBDRDEyN0UgLyogTlNEYXRhLmhwcCAqLywKKwkJ
CQkxQzUzMUExNTI3QkRERDZFMDBDRDEyN0UgLyogTlNEYXRlLmhwcCAqLywKKwkJCQkxQzUzMUEx
NjI3QkRERDZFMDBDRDEyN0UgLyogTlNEZWZpbmVzLmhwcCAqLywKKwkJCQkxQzUzMUEwNjI3QkRE
RDZFMDBDRDEyN0UgLyogTlNEaWN0aW9uYXJ5LmhwcCAqLywKKwkJCQkxQzUzMUExODI3QkRERDZF
MDBDRDEyN0UgLyogTlNFbnVtZXJhdG9yLmhwcCAqLywKKwkJCQkxQzUzMUEwOTI3QkRERDZFMDBD
RDEyN0UgLyogTlNFcnJvci5ocHAgKi8sCisJCQkJMUM1MzFBMDcyN0JEREQ2RTAwQ0QxMjdFIC8q
IE5TTG9jay5ocHAgKi8sCisJCQkJMUM1MzFBMEMyN0JEREQ2RTAwQ0QxMjdFIC8qIE5TTm90aWZp
Y2F0aW9uLmhwcCAqLywKKwkJCQkxQzUzMUExMzI3QkRERDZFMDBDRDEyN0UgLyogTlNOdW1iZXIu
aHBwICovLAorCQkJCTFDNTMxQTBBMjdCRERENkUwMENEMTI3RSAvKiBOU09iakNSdW50aW1lLmhw
cCAqLywKKwkJCQkxQzUzMUEwQjI3QkRERDZFMDBDRDEyN0UgLyogTlNPYmplY3QuaHBwICovLAor
CQkJCTFDNTMxQTBEMjdCRERENkUwMENEMTI3RSAvKiBOU1ByaXZhdGUuaHBwICovLAorCQkJCTFD
NTMxQTA4MjdCRERENkUwMENEMTI3RSAvKiBOU1Byb2Nlc3NJbmZvLmhwcCAqLywKKwkJCQkxQzUz
MUExMDI3QkRERDZFMDBDRDEyN0UgLyogTlNSYW5nZS5ocHAgKi8sCisJCQkJMUM1MzFBMDUyN0JE
REQ2RTAwQ0QxMjdFIC8qIE5TU3RyaW5nLmhwcCAqLywKKwkJCQkxQzUzMUExMTI3QkRERDZFMDBD
RDEyN0UgLyogTlNUeXBlcy5ocHAgKi8sCisJCQkJMUM1MzFBMEUyN0JEREQ2RTAwQ0QxMjdFIC8q
IE5TVVJMLmhwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gRm91bmRhdGlvbjsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDNTMxQTFCMjdCRERENkUwMENEMTI3RSAvKiBRdWFy
dHpDb3JlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkx
QzUzMUExRjI3QkRERDZFMDBDRDEyN0UgLyogQ0FEZWZpbmVzLmhwcCAqLywKKwkJCQkxQzUzMUEx
RTI3QkRERDZFMDBDRDEyN0UgLyogQ0FNZXRhbERyYXdhYmxlLmhwcCAqLywKKwkJCQkxQzUzMUEx
RDI3QkRERDZFMDBDRDEyN0UgLyogQ0FQcml2YXRlLmhwcCAqLywKKwkJCQkxQzUzMUExQzI3QkRE
RDZFMDBDRDEyN0UgLyogUXVhcnR6Q29yZS5ocHAgKi8sCisJCQkpOworCQkJcGF0aCA9IFF1YXJ0
ekNvcmU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzUzMUEyMTI3QkRE
RDZFMDBDRDEyN0UgLyogU2luZ2xlSGVhZGVyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEyMjI3QkRERDZFMDBDRDEyN0UgLyogTWFrZVNpbmds
ZUhlYWRlci5weSAqLywKKwkJCSk7CisJCQlwYXRoID0gU2luZ2xlSGVhZGVyOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUM1MzFBMjYyN0JEREZFMTAwQ0QxMjdFIC8qIERl
cml2ZWRTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkxQzUzMUEyODI3QkRFMDMzMDBDRDEyN0UgLyogbWV0YWwtY3BwICovLAorCQkJKTsKKwkJ
CW5hbWUgPSBEZXJpdmVkU291cmNlczsKKwkJCXBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJHUFU7
CisJCQlzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOworCQl9OworCQkxQzUzMUEyODI3
QkRFMDMzMDBDRDEyN0UgLyogbWV0YWwtY3BwICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEyOTI3QkRFMDQ5MDBDRDEyN0UgLyogTWV0YWwgKi8s
CisJCQkpOworCQkJcGF0aCA9ICJtZXRhbC1jcHAiOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKKwkJMUM1MzFBMjkyN0JERTA0OTAwQ0QxMjdFIC8qIE1ldGFsICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzUzMUEyQTI3QkRFMDY3MDBD
RDEyN0UgLyogTWV0YWwuaHBwICovLAorCQkJKTsKKwkJCXBhdGggPSBNZXRhbDsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTFDRUJEN0Q5MjcxNkFGQkEwMEE1MjU0RCA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zMjUsNiArNTU4LDggQEAK
IAkJMUNFQkQ3RTUyNzE2QUZCQTAwQTUyNTREIC8qIFdlYkdQVSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUM1MzFBMjYyN0JEREZFMTAwQ0QxMjdFIC8q
IERlcml2ZWRTb3VyY2VzICovLAorCQkJCTFDNTMxOUNCMjdCRERENkUwMENEMTI3RSAvKiBtZXRh
bC1jcHAgKi8sCiAJCQkJMUM1QUNBQjIyNzNBNDI2RDAwOTVGOEQ1IC8qIEFkYXB0ZXIuaCAqLywK
IAkJCQkxQzVBQ0FBOTI3M0E0MjZEMDA5NUY4RDUgLyogQWRhcHRlci5tbSAqLywKIAkJCQkxQzU4
MzAxNzI3RTE2ODIzMDA5QjQwRjAgLyogQVBJQ29udmVyc2lvbnMuaCAqLywKQEAgLTM1Myw2ICs1
ODgsNyBAQAogCQkJCTFDNUFDQUEwMjczQTQyNkQwMDk1RjhENSAvKiBJbnN0YW5jZS5oICovLAog
CQkJCTFDNUFDQTkyMjczQTQxQzIwMDk1RjhENSAvKiBJbnN0YW5jZS5tbSAqLywKIAkJCQkxQzMz
NzU1RDI3RkEyM0I4MDAyRjE2NDQgLyogSXNWYWxpZFRvVXNlV2l0aC5oICovLAorCQkJCTFDNTMx
QTI0MjdCRERGNTUwMENEMTI3RSAvKiBNZXRhbC5jcHAgKi8sCiAJCQkJMUM1QUNBREEyNzNBNEU3
MTAwOTVGOEQ1IC8qIFBpcGVsaW5lTGF5b3V0LmggKi8sCiAJCQkJMUM1QUNBRTQyNzNBNTVERDAw
OTVGOEQ1IC8qIFBpcGVsaW5lTGF5b3V0Lm1tICovLAogCQkJCTFDNUFDQUFDMjczQTQyNkQwMDk1
RjhENSAvKiBRdWVyeVNldC5oICovLApAQCAtNTY5LDYgKzgwNSw3IEBACiAJCQlpc2EgPSBQQlhO
YXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMUNFQkQ3RUEyNzE2QUZC
QTAwQTUyNTREIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJXZWJHUFUiICovOwogCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMUM1MzFBMjMyN0JERERCNTAw
Q0QxMjdFIC8qIE1ha2UgU2luZ2xlIE1ldGFsLWNwcCBIZWFkZXIgKi8sCiAJCQkJMUNFQkQ3REUy
NzE2QUZCQTAwQTUyNTREIC8qIEhlYWRlcnMgKi8sCiAJCQkJMUNFQkQ3REYyNzE2QUZCQTAwQTUy
NTREIC8qIFNvdXJjZXMgKi8sCiAJCQkJMUNFQkQ3RTAyNzE2QUZCQTAwQTUyNTREIC8qIEZyYW1l
d29ya3MgKi8sCkBAIC02NjcsNiArOTA0LDEwNiBAQAogLyogRW5kIFBCWFJlc291cmNlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCQkxQzUzMUEyMzI3QkREREI1MDBDRDEyN0UgLyogTWFrZSBTaW5nbGUgTWV0YWwt
Y3BwIEhlYWRlciAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlp
bnB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChT
UkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vRm91bmRhdGlv
bi5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Fy
cmF5LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
QXV0b3JlbGVhc2VQb29sLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9G
b3VuZGF0aW9uL05TQnVuZGxlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9Gb3VuZGF0aW9uL05TRGF0YS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU0RhdGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9Gb3VuZGF0aW9uL05TRGljdGlvbmFyeS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0VudW1lcmF0b3IuaHBwIiwKKwkJCQkiJChTUkNS
T09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNFcnJvci5ocHAiLAorCQkJCSIkKFNS
Q1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0xvY2suaHBwIiwKKwkJCQkiJChT
UkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOb3RpZmljYXRpb24uaHBwIiwK
KwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOdW1iZXIuaHBw
IiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNPYmpDUnVu
dGltZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9O
U09iamVjdC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU1ByaXZhdGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNQcm9jZXNzSW5mby5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvRm91bmRhdGlvbi9OU1JhbmdlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFs
LWNwcC9Gb3VuZGF0aW9uL05TU3RyaW5nLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9Gb3VuZGF0aW9uL05TVHlwZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZS5ocHAiLAorCQkJCSIkKFNS
Q1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlQ29t
bWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQXJndW1lbnRFbmNvZGVyLmhwcCIsCisJCQkJIiQoU1JD
Uk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCaW5hcnlBcmNoaXZlLmhwcCIsCisJCQkJ
IiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0Q29tbWFuZEVuY29kZXIu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRQYXNz
LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCdWZmZXIu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVN
YW5hZ2VyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExD
YXB0dXJlU2NvcGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTENvbW1hbmRCdWZmZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTENvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExDb21tYW5kUXVldWUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHAiLAorCQkJCSIk
KFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwIiwKKwkJ
CQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQaXBlbGluZS5o
cHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ291bnRlcnMu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlZmluZXMu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlcHRoU3Rl
bmNpbC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGV2
aWNlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEcmF3
YWJsZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHlu
YW1pY0xpYnJhcnkuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEV2ZW50LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExGZW5jZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
RnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkhhbmRsZS5ocHAiLAorCQkJCSIkKFNS
Q1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Mb2cuaHBwIiwKKwkJCQki
JChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uU3RpdGNoaW5nLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExIZWFkZXJCcmlk
Z2UuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEhlYXAu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEluZGlyZWN0
Q29tbWFuZEJ1ZmZlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlicmFyeS5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlua2VkRnVuY3Rpb25zLmhw
cCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQYXJhbGxlbFJl
bmRlckNvbW1hbmRFbmNvZGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExQaXBlbGluZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMUGl4ZWxGb3JtYXQuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFByaXZhdGUuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkv
V2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAiLAorCQkJ
CSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGFzcy5ocHAiLAor
CQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGlwZWxpbmUu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291cmNl
LmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJj
ZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFJlc291cmNlU3RhdGVQYXNzLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExTYW1wbGVyLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAiLAor
CQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVGV4dHVyZS5ocHAiLAor
CQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVHlwZXMuaHBwIiwKKwkJ
CQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZlcnRleERlc2NyaXB0b3Iu
aHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZpc2libGVG
dW5jdGlvblRhYmxlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NZXRhbC5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29y
ZS9DQURlZmluZXMuaHBwIiwKKwkJCQkiJChTUkNST09UKS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0
ekNvcmUvQ0FNZXRhbERyYXdhYmxlLmhwcCIsCisJCQkJIiQoU1JDUk9PVCkvV2ViR1BVL21ldGFs
LWNwcC9RdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHAiLAorCQkJCSIkKFNSQ1JPT1QpL1dlYkdQVS9t
ZXRhbC1jcHAvUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcCIsCisJCQkpOworCQkJbmFtZSA9ICJN
YWtlIFNpbmdsZSBNZXRhbC1jcHAgSGVhZGVyIjsKKwkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAo
CisJCQkpOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJHUFUvbWV0YWwtY3BwL01ldGFsLmhwcCIsCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmlu
L3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rl
cml2ZWRTb3VyY2VzL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWxcblxuY2QgV2ViR1BVL21ldGFsLWNw
cFxucHl0aG9uMyAuL1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5IC1vICR7QlVJTFRf
UFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01ldGFs
LmhwcCBGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwIFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAg
TWV0YWwvTWV0YWwuaHBwXG4iOworCQl9OwogCQk2NTE3NTcxNjI3QzlBQzMwMDBEOUZFNDAgLyog
Q29weSBGcmFtZXdvcmtzIHRvIFNlY29uZGFyeSBQYXRoICovID0gewogCQkJaXNhID0gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gODsKQEAgLTczOSw2ICsx
MDc2LDcgQEAKIAkJCQkxQzVBQ0FDMTI3M0E0MjZEMDA5NUY4RDUgLyogRGV2aWNlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUMwRjQxRUUyODA5NDA2NTAwMDU4ODZEIC8qIEhhcmR3YXJlQ2FwYWJp
bGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM1QUNBOTQyNzNBNDFDMjAwOTVGOEQ1IC8q
IEluc3RhbmNlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUM1MzFBMjUyN0JEREY1NTAwQ0QxMjdF
IC8qIE1ldGFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUU1MjczQTU1REQwMDk1RjhE
NSAvKiBQaXBlbGluZUxheW91dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUJEMjczQTQy
NkQwMDk1RjhENSAvKiBRdWVyeVNldC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNUFDQUNCMjcz
QTQyNkUwMDk1RjhENSAvKiBRdWV1ZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvTWV0YWwuY3BwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvTWV0YWwu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ0ZmI2NGUxM2EyOWYzMmY4ZmEzZDUxYmJhZGQ5ZTk1ZWYzZGM0MGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9NZXRhbC5jcHAKQEAgLTAs
MCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNkZWZpbmUgTlNfUFJJVkFURV9JTVBMRU1FTlRBVElPTgorI2RlZmluZSBDQV9QUklWQVRFX0lN
UExFTUVOVEFUSU9OCisjZGVmaW5lIE1UTF9QUklWQVRFX0lNUExFTUVOVEFUSU9OCisjaW5jbHVk
ZSA8TWV0YWwvTWV0YWwuaHBwPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvY29u
ZmlnLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaAppbmRleCBlNjVkZjg4YjhhNTUz
NjdlMGI2OGFkZjhjNmQ3NDY3ZTZjMzQ0N2VjLi5iNzE5MzEzOGM4NzhmNGMyYjU4NjQ2OWQyMzZl
OWQ5NWM4MmI0MTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaApAQCAtMzAsOCArMzAsMTIgQEAKIAog
I2luY2x1ZGUgPE1ldGFsL01ldGFsLmg+CiAKKyNpbmNsdWRlIDxNZXRhbC9NZXRhbC5ocHA+CisK
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiAjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5
cGUuaD4KIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDgyNTJlOWIxNjY0ZDliZDg2MTIx
NDRlNWJiMGM0YWU2NmUyODU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHAKQEAgLTAsMCArMSw0NSBAQAor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUg
SW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNpbmNsdWRlICJOU0FycmF5LmhwcCIKKyNpbmNsdWRlICJOU0F1dG9yZWxlYXNl
UG9vbC5ocHAiCisjaW5jbHVkZSAiTlNCdW5kbGUuaHBwIgorI2luY2x1ZGUgIk5TRGF0YS5ocHAi
CisjaW5jbHVkZSAiTlNEYXRlLmhwcCIKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk5TRGljdGlvbmFyeS5ocHAiCisjaW5jbHVkZSAiTlNFbnVtZXJhdG9yLmhwcCIKKyNpbmNs
dWRlICJOU0Vycm9yLmhwcCIKKyNpbmNsdWRlICJOU0xvY2suaHBwIgorI2luY2x1ZGUgIk5TTm90
aWZpY2F0aW9uLmhwcCIKKyNpbmNsdWRlICJOU051bWJlci5ocHAiCisjaW5jbHVkZSAiTlNPYmpl
Y3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNQcm9jZXNzSW5m
by5ocHAiCisjaW5jbHVkZSAiTlNSYW5nZS5ocHAiCisjaW5jbHVkZSAiTlNTdHJpbmcuaHBwIgor
I2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorI2luY2x1ZGUgIk5TVVJMLmhwcCIKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0FycmF5LmhwcCBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXJyYXkuaHBwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg3MzBkZjk5NDk2N2FmMjNmMjhkNWM3NDVmZGE0Y2FkOTcyMDQwYjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0FycmF5Lmhw
cApAQCAtMCwwICsxLDExNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU0FycmF5LmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5j
bHVkZSAiTlNUeXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIEFycmF5IDogcHVibGljIENvcHlp
bmc8QXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIEFycmF5KiBhcnJheSgpOworICAgIHN0
YXRpYyBBcnJheSogYXJyYXkoY29uc3QgT2JqZWN0KiBwT2JqZWN0KTsKKyAgICBzdGF0aWMgQXJy
YXkqIGFycmF5KGNvbnN0IE9iamVjdCogY29uc3QqIHBPYmplY3RzLCBVSW50ZWdlciBjb3VudCk7
CisKKyAgICBzdGF0aWMgQXJyYXkqIGFsbG9jKCk7CisKKyAgICBBcnJheSogICAgICAgIGluaXQo
KTsKKyAgICBBcnJheSogICAgICAgIGluaXQoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMs
IFVJbnRlZ2VyIGNvdW50KTsKKyAgICBBcnJheSogICAgICAgIGluaXQoY29uc3QgY2xhc3MgQ29k
ZXIqIHBDb2Rlcik7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdCA9IE9iamVjdD4KKyAg
ICBfT2JqZWN0KiBvYmplY3QoVUludGVnZXIgaW5kZXgpIGNvbnN0OworICAgIFVJbnRlZ2VyIGNv
dW50KCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpBcnJheTo6YXJyYXkoKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4oX05TX1BSSVZBVEVfQ0xT
KE5TQXJyYXkpLCBfTlNfUFJJVkFURV9TRUwoYXJyYXkpKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBO
Uzo6QXJyYXk6OmFycmF5KGNvbnN0IE9iamVjdCogcE9iamVjdCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KF9OU19QUklWQVRFX0NMUyhOU0FycmF5KSwgX05TX1BS
SVZBVEVfU0VMKGFycmF5V2l0aE9iamVjdF8pLCBwT2JqZWN0KTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5
KiBOUzo6QXJyYXk6OmFycmF5KGNvbnN0IE9iamVjdCogY29uc3QqIHBPYmplY3RzLCBVSW50ZWdl
ciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KF9OU19Q
UklWQVRFX0NMUyhOU0FycmF5KSwgX05TX1BSSVZBVEVfU0VMKGFycmF5V2l0aE9iamVjdHNfY291
bnRfKSwgcE9iamVjdHMsIGNvdW50KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5KiBOUzo6QXJyYXk6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8QXJyYXk+KF9OU19QUklWQVRF
X0NMUyhOU0FycmF5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpBcnJheSogTlM6OkFycmF5Ojppbml0KCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxBcnJheT4oKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkFycmF5
KiBOUzo6QXJyYXk6OmluaXQoY29uc3QgT2JqZWN0KiBjb25zdCogcE9iamVjdHMsIFVJbnRlZ2Vy
IGNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGluaXRXaXRoT2JqZWN0c19jb3VudF8pLCBwT2JqZWN0cywgY291bnQp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpBcnJheTo6aW5pdChjb25zdCBjbGFzcyBDb2Rlciog
cENvZGVyKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQ29kZXJfKSwgcENvZGVyKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE5TOjpBcnJheTo6Y291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY291bnQpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRl
IDxjbGFzcyBfT2JqZWN0PgorX05TX0lOTElORSBfT2JqZWN0KiBOUzo6QXJyYXk6Om9iamVjdChV
SW50ZWdlciBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxf
T2JqZWN0Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhfKSwgaW5kZXgpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQXV0b3Jl
bGVhc2VQb29sLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TQXV0b3JlbGVhc2VQb29sLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjM4M2E1NWZlMDYyYmUyNWFjODUw
OGZkZDZiNDk1ZTMyYjhkZjhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNBdXRvcmVsZWFzZVBvb2wuaHBwCkBAIC0wLDAgKzEs
ODMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIEZvdW5kYXRpb24vTlNBdXRvcmVsZWFzZVBvb2wuaHBwCisvLworLy8gQ29weXJpZ2h0IDIw
MjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVk
ZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNU
eXBlcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCituYW1lc3BhY2UgTlMKK3sKK2NsYXNzIEF1dG9yZWxlYXNlUG9vbCA6IHB1YmxpYyBPYmpl
Y3QKK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgQXV0b3JlbGVhc2VQb29sKiBhbGxvYygpOworICAg
IEF1dG9yZWxlYXNlUG9vbCogICAgICAgIGluaXQoKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgIGRyYWluKCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBhZGRPYmplY3Qo
T2JqZWN0KiBwT2JqZWN0KTsKKworICAgIHN0YXRpYyB2b2lkICAgICAgICAgICAgIHNob3dQb29s
cygpOworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OkF1dG9yZWxlYXNlUG9vbCogTlM6OkF1dG9yZWxlYXNlUG9v
bDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxBdXRvcmVsZWFzZVBv
b2w+KF9OU19QUklWQVRFX0NMUyhOU0F1dG9yZWxlYXNlUG9vbCkpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXV0
b3JlbGVhc2VQb29sKiBOUzo6QXV0b3JlbGVhc2VQb29sOjppbml0KCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6aW5pdDxBdXRvcmVsZWFzZVBvb2w+KCk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkF1
dG9yZWxlYXNlUG9vbDo6ZHJhaW4oKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGRyYWluKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkF1dG9yZWxl
YXNlUG9vbDo6YWRkT2JqZWN0KE9iamVjdCogcE9iamVjdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhZGRPYmplY3RfKSwgcE9iamVjdCk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIHZvaWQgTlM6OkF1dG9yZWxlYXNlUG9vbDo6c2hvd1Bvb2xzKCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KF9OU19QUklWQVRFX0NMUyhOU0F1dG9yZWxlYXNlUG9v
bCksIF9OU19QUklWQVRFX1NFTChzaG93UG9vbHMpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0J1bmRsZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0J1bmRsZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU4YzUz
OTViYjAxMTZiZjIxMTkwY2UxNzNmMDEwNjg4ZWRlOTI3ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TQnVuZGxlLmhwcApAQCAt
MCwwICsxLDM3NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gRm91bmRhdGlvbi9OU0J1bmRsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAy
MC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRl
ICJOU05vdGlmaWNhdGlvbi5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUg
Ik5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworbmFtZXNwYWNlIE5TCit7CitfTlNfQ09OU1QoTm90aWZpY2F0aW9uTmFtZSwgQnVu
ZGxlRGlkTG9hZE5vdGlmaWNhdGlvbik7CitfTlNfQ09OU1QoTm90aWZpY2F0aW9uTmFtZSwgQnVu
ZGxlUmVzb3VyY2VSZXF1ZXN0TG93RGlza1NwYWNlTm90aWZpY2F0aW9uKTsKKworY2xhc3MgU3Ry
aW5nKiBMb2NhbGl6ZWRTdHJpbmcoY29uc3QgU3RyaW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqKTsK
K2NsYXNzIFN0cmluZyogTG9jYWxpemVkU3RyaW5nRnJvbVRhYmxlKGNvbnN0IFN0cmluZyogcEtl
eSwgY29uc3QgU3RyaW5nKiBwVGJsLCBjb25zdCBTdHJpbmcqKTsKK2NsYXNzIFN0cmluZyogTG9j
YWxpemVkU3RyaW5nRnJvbVRhYmxlSW5CdW5kbGUoY29uc3QgU3RyaW5nKiBwS2V5LCBjb25zdCBT
dHJpbmcqIHBUYmwsIGNvbnN0IGNsYXNzIEJ1bmRsZSogcEJkbGUsIGNvbnN0IFN0cmluZyopOwor
Y2xhc3MgU3RyaW5nKiBMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGNvbnN0IFN0cmlu
ZyogcEtleSwgY29uc3QgU3RyaW5nKiBwVGJsLCBjb25zdCBjbGFzcyBCdW5kbGUqIHBCZGxlLCBj
b25zdCBTdHJpbmcqIHBWYWwsIGNvbnN0IFN0cmluZyopOworCitjbGFzcyBCdW5kbGUgOiBwdWJs
aWMgUmVmZXJlbmNpbmc8QnVuZGxlPgoreworcHVibGljOgorICAgIHN0YXRpYyBCdW5kbGUqICAg
IG1haW5CdW5kbGUoKTsKKworICAgIHN0YXRpYyBCdW5kbGUqICAgIGJ1bmRsZShjb25zdCBjbGFz
cyBTdHJpbmcqIHBQYXRoKTsKKyAgICBzdGF0aWMgQnVuZGxlKiAgICBidW5kbGUoY29uc3QgY2xh
c3MgVVJMKiBwVVJMKTsKKworICAgIHN0YXRpYyBCdW5kbGUqICAgIGFsbG9jKCk7CisKKyAgICBC
dW5kbGUqICAgICAgICAgICBpbml0KGNvbnN0IGNsYXNzIFN0cmluZyogcFBhdGgpOworICAgIEJ1
bmRsZSogICAgICAgICAgIGluaXQoY29uc3QgY2xhc3MgVVJMKiBwVVJMKTsKKworICAgIGNsYXNz
IEFycmF5KiAgICAgIGFsbEJ1bmRsZXMoKSBjb25zdDsKKyAgICBjbGFzcyBBcnJheSogICAgICBh
bGxGcmFtZXdvcmtzKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICBsb2FkKCk7Cisg
ICAgYm9vbCAgICAgICAgICAgICAgdW5sb2FkKCk7CisKKyAgICBib29sICAgICAgICAgICAgICBp
c0xvYWRlZCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgcHJlZmxpZ2h0QW5kUmV0
dXJuRXJyb3IoY2xhc3MgRXJyb3IqKiBwRXJyb3IpIGNvbnN0OworICAgIGJvb2wgICAgICAgICAg
ICAgIGxvYWRBbmRSZXR1cm5FcnJvcihjbGFzcyBFcnJvcioqIHBFcnJvcik7CisKKyAgICBjbGFz
cyBVUkwqICAgICAgICBidW5kbGVVUkwoKSBjb25zdDsKKyAgICBjbGFzcyBVUkwqICAgICAgICBy
ZXNvdXJjZVVSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAgICAgIGV4ZWN1dGFibGVVUkwo
KSBjb25zdDsKKyAgICBjbGFzcyBVUkwqICAgICAgICBVUkxGb3JBdXhpbGlhcnlFeGVjdXRhYmxl
KGNvbnN0IGNsYXNzIFN0cmluZyogcEV4ZWN1dGFibGVOYW1lKSBjb25zdDsKKworICAgIGNsYXNz
IFVSTCogICAgICAgIHByaXZhdGVGcmFtZXdvcmtzVVJMKCkgY29uc3Q7CisgICAgY2xhc3MgVVJM
KiAgICAgICAgc2hhcmVkRnJhbWV3b3Jrc1VSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAg
ICAgIHNoYXJlZFN1cHBvcnRVUkwoKSBjb25zdDsKKyAgICBjbGFzcyBVUkwqICAgICAgICBidWls
dEluUGx1Z0luc1VSTCgpIGNvbnN0OworICAgIGNsYXNzIFVSTCogICAgICAgIGFwcFN0b3JlUmVj
ZWlwdFVSTCgpIGNvbnN0OworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgYnVuZGxlUGF0aCgpIGNv
bnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIHJlc291cmNlUGF0aCgpIGNvbnN0OworICAgIGNs
YXNzIFN0cmluZyogICAgIGV4ZWN1dGFibGVQYXRoKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5n
KiAgICAgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGUoY29uc3QgY2xhc3MgU3RyaW5nKiBwRXhl
Y3V0YWJsZU5hbWUpIGNvbnN0OworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgcHJpdmF0ZUZyYW1l
d29ya3NQYXRoKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgc2hhcmVkRnJhbWV3b3Jr
c1BhdGgoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICBzaGFyZWRTdXBwb3J0UGF0aCgp
IGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgIGJ1aWx0SW5QbHVnSW5zUGF0aCgpIGNvbnN0
OworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgYnVuZGxlSWRlbnRpZmllcigpIGNvbnN0OworICAg
IGNsYXNzIERpY3Rpb25hcnkqIGluZm9EaWN0aW9uYXJ5KCkgY29uc3Q7CisgICAgY2xhc3MgRGlj
dGlvbmFyeSogbG9jYWxpemVkSW5mb0RpY3Rpb25hcnkoKSBjb25zdDsKKyAgICBjbGFzcyBPYmpl
Y3QqICAgICBvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleShjb25zdCBjbGFzcyBTdHJpbmcqIHBL
ZXkpOworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNsYXNz
IFN0cmluZyogcEtleSwgY29uc3QgY2xhc3MgU3RyaW5nKiBwVmFsdWUgPSBudWxscHRyLCBjb25z
dCBjbGFzcyBTdHJpbmcqIHBUYWJsZU5hbWUgPSBudWxscHRyKSBjb25zdDsKK307Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfUFJJVkFU
RV9ERUZfQ09OU1QoTlM6Ok5vdGlmaWNhdGlvbk5hbWUsIEJ1bmRsZURpZExvYWROb3RpZmljYXRp
b24pOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpOb3RpZmljYXRpb25OYW1lLCBCdW5kbGVS
ZXNvdXJjZVJlcXVlc3RMb3dEaXNrU3BhY2VOb3RpZmljYXRpb24pOworCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5n
KiBOUzo6TG9jYWxpemVkU3RyaW5nKGNvbnN0IFN0cmluZyogcEtleSwgY29uc3QgU3RyaW5nKikK
K3sKKyAgICByZXR1cm4gQnVuZGxlOjptYWluQnVuZGxlKCktPmxvY2FsaXplZFN0cmluZyhwS2V5
LCBudWxscHRyLCBudWxscHRyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkxvY2FsaXplZFN0
cmluZ0Zyb21UYWJsZShjb25zdCBTdHJpbmcqIHBLZXksIGNvbnN0IFN0cmluZyogcFRibCwgY29u
c3QgU3RyaW5nKikKK3sKKyAgICByZXR1cm4gQnVuZGxlOjptYWluQnVuZGxlKCktPmxvY2FsaXpl
ZFN0cmluZyhwS2V5LCBudWxscHRyLCBwVGJsKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6Okxv
Y2FsaXplZFN0cmluZ0Zyb21UYWJsZUluQnVuZGxlKGNvbnN0IFN0cmluZyogcEtleSwgY29uc3Qg
U3RyaW5nKiBwVGJsLCBjb25zdCBCdW5kbGUqIHBCZGwsIGNvbnN0IFN0cmluZyopCit7CisgICAg
cmV0dXJuIHBCZGwtPmxvY2FsaXplZFN0cmluZyhwS2V5LCBudWxscHRyLCBwVGJsKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlN0cmluZyogTlM6OkxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoY29uc3Qg
U3RyaW5nKiBwS2V5LCBjb25zdCBTdHJpbmcqIHBUYmwsIGNvbnN0IEJ1bmRsZSogcEJkbCwgY29u
c3QgU3RyaW5nKiBwVmFsLCBjb25zdCBTdHJpbmcqKQoreworICAgIHJldHVybiBwQmRsLT5sb2Nh
bGl6ZWRTdHJpbmcocEtleSwgcFZhbCwgcFRibCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpCdW5kbGUqIE5TOjpC
dW5kbGU6Om1haW5CdW5kbGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1
bmRsZSo+KF9OU19QUklWQVRFX0NMUyhOU0J1bmRsZSksIF9OU19QUklWQVRFX1NFTChtYWluQnVu
ZGxlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIE5TOjpCdW5kbGUqIE5TOjpCdW5kbGU6OmJ1bmRsZShjb25zdCBjbGFz
cyBTdHJpbmcqIHBQYXRoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1bmRs
ZSo+KF9OU19QUklWQVRFX0NMUyhOU0J1bmRsZSksIF9OU19QUklWQVRFX1NFTChidW5kbGVXaXRo
UGF0aF8pLCBwUGF0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpCdW5kbGUqIE5TOjpCdW5kbGU6OmJ1bmRsZShj
b25zdCBjbGFzcyBVUkwqIHBVUkwpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
QnVuZGxlKj4oX05TX1BSSVZBVEVfQ0xTKE5TQnVuZGxlKSwgX05TX1BSSVZBVEVfU0VMKGJ1bmRs
ZVdpdGhVUkxfKSwgcFVSTCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpCdW5kbGUqIE5TOjpCdW5kbGU6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5kbGUqPihfTlNfUFJJVkFU
RV9DTFMoTlNCdW5kbGUpLCBfTlNfUFJJVkFURV9TRUwoYWxsb2MpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkJ1
bmRsZSogTlM6OkJ1bmRsZTo6aW5pdChjb25zdCBTdHJpbmcqIHBQYXRoKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPEJ1bmRsZSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0
V2l0aFBhdGhfKSwgcFBhdGgpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QnVuZGxlKiBOUzo6QnVuZGxlOjppbml0
KGNvbnN0IFVSTCogcFVSTCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxCdW5k
bGUqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhVUkxfKSwgcFVSTCk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpBcnJheSogTlM6OkJ1bmRsZTo6YWxsQnVuZGxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8QXJyYXkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYWxsQnVu
ZGxlcykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpCdW5kbGU6OmFsbEZyYW1ld29ya3MoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGFsbEZyYW1ld29ya3MpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6QnVuZGxlOjps
b2FkKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwobG9hZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpCdW5kbGU6OnVubG9hZCgpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKHVubG9hZCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpCdW5kbGU6OmlzTG9hZGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwoaXNMb2FkZWQpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6QnVuZGxlOjpwcmVmbGlnaHRBbmRS
ZXR1cm5FcnJvcihFcnJvcioqIHBFcnJvcikgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocHJlZmxpZ2h0QW5kUmV0dXJu
RXJyb3JfKSwgcEVycm9yKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6QnVuZGxlOjpsb2FkQW5kUmV0dXJu
RXJyb3IoRXJyb3IqKiBwRXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxvYWRBbmRSZXR1cm5FcnJvcl8pLCBwRXJyb3Ip
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpidW5kbGVVUkwoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChi
dW5kbGVVUkwpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6cmVzb3VyY2VVUkwoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChyZXNvdXJjZVVSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjpl
eGVjdXRhYmxlVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxV
UkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZXhlY3V0YWJsZVVSTCkpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
VVJMKiBOUzo6QnVuZGxlOjpVUkxGb3JBdXhpbGlhcnlFeGVjdXRhYmxlKGNvbnN0IFN0cmluZyog
cEV4ZWN1dGFibGVOYW1lKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChVUkxGb3JBdXhpbGlhcnlFeGVjdXRhYmxlXyks
IHBFeGVjdXRhYmxlTmFtZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVUkwqIE5TOjpCdW5kbGU6OnByaXZhdGVG
cmFtZXdvcmtzVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxV
UkwqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocHJpdmF0ZUZyYW1ld29ya3NVUkwpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6c2hhcmVkRnJhbWV3b3Jrc1VSTCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KHNoYXJlZEZyYW1ld29ya3NVUkwpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OkJ1bmRsZTo6c2hh
cmVkU3VwcG9ydFVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
VVJMKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHNoYXJlZFN1cHBvcnRVUkwpKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlVSTCogTlM6OkJ1bmRsZTo6YnVpbHRJblBsdWdJbnNVUkwoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChidWls
dEluUGx1Z0luc1VSTCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6QnVuZGxlOjphcHBTdG9yZVJl
Y2VpcHRVUkwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVSTCo+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChhcHBTdG9yZVJlY2VpcHRVUkwpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OlN0cmluZyogTlM6OkJ1bmRsZTo6YnVuZGxlUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGJ1bmRsZVBh
dGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6cmVzb3VyY2VQYXRoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwocmVzb3VyY2VQYXRoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5k
bGU6OmV4ZWN1dGFibGVQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZXhlY3V0YWJsZVBhdGgpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6cGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGUo
Y29uc3QgU3RyaW5nKiBwRXhlY3V0YWJsZU5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHBhdGhGb3JBdXhp
bGlhcnlFeGVjdXRhYmxlXyksIHBFeGVjdXRhYmxlTmFtZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcq
IE5TOjpCdW5kbGU6OnByaXZhdGVGcmFtZXdvcmtzUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHByaXZh
dGVGcmFtZXdvcmtzUGF0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6QnVuZGxlOjpzaGFy
ZWRGcmFtZXdvcmtzUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHNoYXJlZEZyYW1ld29ya3NQYXRoKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OnNoYXJlZFN1cHBvcnRQYXRoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNf
UFJJVkFURV9TRUwoc2hhcmVkU3VwcG9ydFBhdGgpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6
OkJ1bmRsZTo6YnVpbHRJblBsdWdJbnNQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYnVpbHRJblBsdWdJ
bnNQYXRoKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpCdW5kbGU6OmJ1bmRsZUlkZW50aWZp
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChidW5kbGVJZGVudGlmaWVyKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0
aW9uYXJ5KiBOUzo6QnVuZGxlOjppbmZvRGljdGlvbmFyeSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8RGljdGlvbmFyeSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChp
bmZvRGljdGlvbmFyeSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkJ1bmRsZTo6bG9j
YWxpemVkSW5mb0RpY3Rpb25hcnkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPERpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkSW5mb0Rp
Y3Rpb25hcnkpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok9iamVjdCogTlM6OkJ1bmRsZTo6b2JqZWN0Rm9ySW5m
b0RpY3Rpb25hcnlLZXkoY29uc3QgU3RyaW5nKiBwS2V5KQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE9iamVjdCo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChvYmplY3RGb3JJbmZv
RGljdGlvbmFyeUtleV8pLCBwS2V5KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkJ1bmRsZTo6
bG9jYWxpemVkU3RyaW5nKGNvbnN0IFN0cmluZyogcEtleSwgY29uc3QgU3RyaW5nKiBwVmFsdWUg
LyogPSBudWxscHRyICovLCBjb25zdCBTdHJpbmcqIHBUYWJsZU5hbWUgLyogPSBudWxscHRyICov
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChsb2NhbGl6ZWRTdHJpbmdGb3JLZXlfdmFsdWVfdGFibGVfKSwgcEtl
eSwgcFZhbHVlLCBwVGFibGVOYW1lKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvRm91bmRhdGlvbi9OU0RhdGEuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL0ZvdW5kYXRpb24vTlNEYXRhLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzY5OWU0NzQ0ZjgxM2Q2ZWZk
Y2Q1ZjZiNzQ2NzNlZmVjYTAzZTdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNEYXRhLmhwcApAQCAtMCwwICsxLDU0IEBACisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3Vu
ZGF0aW9uL05TRGF0YS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNl
IE5TCit7CitjbGFzcyBEYXRhIDogcHVibGljIENvcHlpbmc8RGF0YT4KK3sKK3B1YmxpYzoKKyAg
ICB2b2lkKiAgICBtdXRhYmxlQnl0ZXMoKSBjb25zdDsKKyAgICBVSW50ZWdlciBsZW5ndGgoKSBj
b25zdDsKK307Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIHZvaWQqIE5TOjpEYXRhOjptdXRhYmxlQnl0ZXMoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQqPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwobXV0YWJsZUJ5dGVzKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50ZWdlciBOUzo6RGF0YTo6bGVu
Z3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGxlbmd0aCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGF0ZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlNmM4M2FmN2M1
YzNhZjc4NzMyNDVjOTZlMDM3MDU4NjViOTY2MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RhdGUuaHBwCkBAIC0wLDAgKzEs
NDAgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIEZvdW5kYXRpb24vTlNEYXRlLmhwcAorLy8KKy8vIFNlZSBMSUNFTlNFLnR4dCBmb3IgdGhp
cyBwcm9qZWN0IGxpY2Vuc2luZyBpbmZvcm1hdGlvbi4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVz
LmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhwcCIK
KyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworCit1c2luZyBUaW1lSW50ZXJ2YWwg
PSBkb3VibGU7CisKK2NsYXNzIERhdGUgOiBwdWJsaWMgQ29weWluZzxEYXRlPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBEYXRlKiBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93KFRpbWVJbnRl
cnZhbCBzZWNzKTsKK307CisKK30gLy8gTlMKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRhdGUqIE5TOjpEYXRlOjpkYXRl
V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93KE5TOjpUaW1lSW50ZXJ2YWwgc2VjcykKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkRhdGUqPihfTlNfUFJJVkFURV9DTFMo
TlNEYXRlKSwgX05TX1BSSVZBVEVfU0VMKGRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3dfKSwg
c2Vjcyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHAgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RlZmluZXMuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRj
OTY5ODljYjVkYTVmYTEwYzk4YTMyOWMxMzNiMDdhZTgyZGExYWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0RlZmluZXMuaHBw
CkBAIC0wLDAgKzEsNDEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNEZWZpbmVzLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgX05TX1dFQUtfSU1QT1JUIF9fYXR0
cmlidXRlX18oKHdlYWtfaW1wb3J0KSkKKyNkZWZpbmUgX05TX0VYUE9SVCBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCisjZGVmaW5lIF9OU19FWFRFUk4gZXh0ZXJuICJDIiBf
TlNfRVhQT1JUCisjZGVmaW5lIF9OU19JTkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5
c19pbmxpbmUpKQorI2RlZmluZSBfTlNfUEFDS0VEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpCisK
KyNkZWZpbmUgX05TX0NPTlNUKHR5cGUsIG5hbWUpIF9OU19FWFRFUk4gdHlwZSBjb25zdCBuYW1l
OworI2RlZmluZSBfTlNfRU5VTSh0eXBlLCBuYW1lKSBlbnVtIG5hbWUgOiB0eXBlCisjZGVmaW5l
IF9OU19PUFRJT05TKHR5cGUsIG5hbWUpIFwKKyAgICB1c2luZyBuYW1lID0gdHlwZTsgICAgICAg
ICAgXAorICAgIGVudW0gOiBuYW1lCisKKyNkZWZpbmUgX05TX0NBU1RfVE9fVUlOVCh2YWx1ZSkg
c3RhdGljX2Nhc3Q8TlM6OlVJbnRlZ2VyPih2YWx1ZSkKKyNkZWZpbmUgX05TX1ZBTElEQVRFX1NJ
WkUobnMsIG5hbWUpIHN0YXRpY19hc3NlcnQoc2l6ZW9mKG5zOjpuYW1lKSA9PSBzaXplb2YobnMj
I25hbWUpLCAic2l6ZSBtaXNtYXRjaCAiICNucyAiOjoiICNuYW1lKQorI2RlZmluZSBfTlNfVkFM
SURBVEVfRU5VTShucywgbmFtZSkgc3RhdGljX2Fzc2VydChfTlNfQ0FTVF9UT19VSU5UKG5zOjpu
YW1lKSA9PSBfTlNfQ0FTVF9UT19VSU5UKG5zIyNuYW1lKSwgInZhbHVlIG1pc21hdGNoICIgI25z
ICI6OiIgI25hbWUpCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRp
b24vTlNEaWN0aW9uYXJ5LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3Vu
ZGF0aW9uL05TRGljdGlvbmFyeS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2NiZTJiZDgzZDNkNDFlNTVlYmI2
OTUxNjFmOTBlMTA4NWI1Mzk0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TRGljdGlvbmFyeS5ocHAKQEAgLTAsMCArMSwxMjgg
QEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8v
IEZvdW5kYXRpb24vTlNEaWN0aW9uYXJ5LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0VudW1lcmF0b3IuaHBwIgorI2luY2x1ZGUgIk5T
T2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworY2xhc3MgRGlj
dGlvbmFyeSA6IHB1YmxpYyBOUzo6Q29weWluZzxEaWN0aW9uYXJ5PgoreworcHVibGljOgorICAg
IHN0YXRpYyBEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5KCk7CisgICAgc3RhdGljIERpY3Rpb25hcnkq
IGRpY3Rpb25hcnkoY29uc3QgT2JqZWN0KiBwT2JqZWN0LCBjb25zdCBPYmplY3QqIHBLZXkpOwor
ICAgIHN0YXRpYyBEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5KGNvbnN0IE9iamVjdCogY29uc3QqIHBP
YmplY3RzLCBjb25zdCBPYmplY3QqIGNvbnN0KiBwS2V5cywgVUludGVnZXIgY291bnQpOworCisg
ICAgc3RhdGljIERpY3Rpb25hcnkqIGFsbG9jKCk7CisKKyAgICBEaWN0aW9uYXJ5KiAgICAgICAg
aW5pdCgpOworICAgIERpY3Rpb25hcnkqICAgICAgICBpbml0KGNvbnN0IE9iamVjdCogY29uc3Qq
IHBPYmplY3RzLCBjb25zdCBPYmplY3QqIGNvbnN0KiBwS2V5cywgVUludGVnZXIgY291bnQpOwor
ICAgIERpY3Rpb25hcnkqICAgICAgICBpbml0KGNvbnN0IGNsYXNzIENvZGVyKiBwQ29kZXIpOwor
CisgICAgdGVtcGxhdGUgPGNsYXNzIF9LZXlUeXBlID0gT2JqZWN0PgorICAgIEVudW1lcmF0b3I8
X0tleVR5cGU+KiBrZXlFbnVtZXJhdG9yKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
X09iamVjdCA9IE9iamVjdD4KKyAgICBfT2JqZWN0KiBvYmplY3QoY29uc3QgT2JqZWN0KiBwS2V5
KSBjb25zdDsKKyAgICBVSW50ZWdlciBjb3VudCgpIGNvbnN0OworfTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRp
Y3Rpb25hcnkqIE5TOjpEaWN0aW9uYXJ5OjpkaWN0aW9uYXJ5KCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4oX05TX1BSSVZBVEVfQ0xTKE5TRGljdGlvbmFy
eSksIF9OU19QUklWQVRFX1NFTChkaWN0aW9uYXJ5KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5
KiBOUzo6RGljdGlvbmFyeTo6ZGljdGlvbmFyeShjb25zdCBPYmplY3QqIHBPYmplY3QsIGNvbnN0
IE9iamVjdCogcEtleSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxEaWN0aW9u
YXJ5Kj4oX05TX1BSSVZBVEVfQ0xTKE5TRGljdGlvbmFyeSksIF9OU19QUklWQVRFX1NFTChkaWN0
aW9uYXJ5V2l0aE9iamVjdF9mb3JLZXlfKSwgcE9iamVjdCwgcEtleSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpE
aWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6ZGljdGlvbmFyeShjb25zdCBPYmplY3QqIGNvbnN0
KiBwT2JqZWN0cywgY29uc3QgT2JqZWN0KiBjb25zdCogcEtleXMsIFVJbnRlZ2VyIGNvdW50KQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPihfTlNfUFJJVkFU
RV9DTFMoTlNEaWN0aW9uYXJ5KSwgX05TX1BSSVZBVEVfU0VMKGRpY3Rpb25hcnlXaXRoT2JqZWN0
c19mb3JLZXlzX2NvdW50XyksCisgICAgICAgIHBPYmplY3RzLCBwS2V5cywgY291bnQpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8RGljdGlvbmFyeT4oX05TX1BSSVZBVEVfQ0xTKE5TRGljdGlv
bmFyeSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6OkRpY3Rpb25hcnk6OmluaXQoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PERpY3Rpb25hcnk+KCk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6aW5pdChjb25zdCBPYmplY3QqIGNvbnN0KiBw
T2JqZWN0cywgY29uc3QgT2JqZWN0KiBjb25zdCogcEtleXMsIFVJbnRlZ2VyIGNvdW50KQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJ
VkFURV9TRUwoaW5pdFdpdGhPYmplY3RzX2ZvcktleXNfY291bnRfKSwgcE9iamVjdHMsIHBLZXlz
LCBjb3VudCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBOUzo6RGljdGlvbmFyeTo6aW5pdChj
b25zdCBjbGFzcyBDb2RlciogcENvZGVyKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPERpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhDb2Rlcl8pLCBw
Q29kZXIpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKwordGVtcGxhdGUgPGNsYXNzIF9LZXlUeXBlPgorX05TX0lOTElORSBOUzo6RW51bWVyYXRv
cjxfS2V5VHlwZT4qIE5TOjpEaWN0aW9uYXJ5OjprZXlFbnVtZXJhdG9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxFbnVtZXJhdG9yPF9LZXlUeXBlPio+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChrZXlFbnVtZXJhdG9yKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdD4K
K19OU19JTkxJTkUgX09iamVjdCogTlM6OkRpY3Rpb25hcnk6Om9iamVjdChjb25zdCBPYmplY3Qq
IHBLZXkpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8X09iamVjdCo+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChvYmplY3RGb3JLZXlfKSwgcEtleSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpVSW50ZWdlciBOUzo6RGljdGlvbmFyeTo6Y291bnQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY291bnQp
KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vu
dW1lcmF0b3IuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNFbnVtZXJhdG9yLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTU5NmMwNGRkYWZhODAxZmFlYjUxYzc4NjJj
ZWQ4MzBkMDEyNmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL0ZvdW5kYXRpb24vTlNFbnVtZXJhdG9yLmhwcApAQCAtMCwwICsxLDc4IEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0
aW9uL05TRW51bWVyYXRvci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIElu
Yy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
I3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNw
YWNlIE5TCit7CitzdHJ1Y3QgRmFzdEVudW1lcmF0aW9uU3RhdGUKK3sKKyAgICB1bnNpZ25lZCBs
b25nICBzdGF0ZTsKKyAgICBPYmplY3QqKiAgICAgICBpdGVtc1B0cjsKKyAgICB1bnNpZ25lZCBs
b25nKiBtdXRhdGlvbnNQdHI7CisgICAgdW5zaWduZWQgbG9uZyAgZXh0cmFbNV07Cit9IF9OU19Q
QUNLRUQ7CisKK2NsYXNzIEZhc3RFbnVtZXJhdGlvbiA6IHB1YmxpYyBSZWZlcmVuY2luZzxGYXN0
RW51bWVyYXRpb24+Cit7CitwdWJsaWM6CisgICAgTlM6OlVJbnRlZ2VyIGNvdW50QnlFbnVtZXJh
dGluZyhGYXN0RW51bWVyYXRpb25TdGF0ZSogcFN0YXRlLCBPYmplY3QqKiBwQnVmZmVyLCBOUzo6
VUludGVnZXIgbGVuKTsKK307CisKK3RlbXBsYXRlIDxjbGFzcyBfT2JqZWN0VHlwZT4KK2NsYXNz
IEVudW1lcmF0b3IgOiBwdWJsaWMgUmVmZXJlbmNpbmc8RW51bWVyYXRvcjxfT2JqZWN0VHlwZT4s
IEZhc3RFbnVtZXJhdGlvbj4KK3sKK3B1YmxpYzoKKyAgICBfT2JqZWN0VHlwZSogbmV4dE9iamVj
dCgpOworICAgIGNsYXNzIEFycmF5KiBhbGxPYmplY3RzKCk7Cit9OworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUlu
dGVnZXIgTlM6OkZhc3RFbnVtZXJhdGlvbjo6Y291bnRCeUVudW1lcmF0aW5nKEZhc3RFbnVtZXJh
dGlvblN0YXRlKiBwU3RhdGUsIE9iamVjdCoqIHBCdWZmZXIsIE5TOjpVSW50ZWdlciBsZW4pCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19QUklW
QVRFX1NFTChjb3VudEJ5RW51bWVyYXRpbmdXaXRoU3RhdGVfb2JqZWN0c19jb3VudF8pLCBwU3Rh
dGUsIHBCdWZmZXIsIGxlbik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX09iamVjdFR5cGU+CitfTlNfSU5MSU5F
IF9PYmplY3RUeXBlKiBOUzo6RW51bWVyYXRvcjxfT2JqZWN0VHlwZT46Om5leHRPYmplY3QoKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPF9PYmplY3RUeXBlKj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKG5leHRPYmplY3QpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfT2JqZWN0VHlwZT4KK19O
U19JTkxJTkUgTlM6OkFycmF5KiBOUzo6RW51bWVyYXRvcjxfT2JqZWN0VHlwZT46OmFsbE9iamVj
dHMoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEFycmF5Kj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGFsbE9iamVjdHMpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vycm9yLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9Gb3VuZGF0aW9uL05TRXJyb3IuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlYmY5ODE4YWM3Yzg4
YTFlNWJkZTYzZWZkZDExNjBjMmQ0YTQxNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0Vycm9yLmhwcApAQCAtMCwwICsxLDE3
MyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLwor
Ly8gRm91bmRhdGlvbi9OU0Vycm9yLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0
LmhwcCIKKyNpbmNsdWRlICJOU1ByaXZhdGUuaHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNw
YWNlIE5TCit7Cit1c2luZyBFcnJvckRvbWFpbiA9IGNsYXNzIFN0cmluZyo7CisKK19OU19DT05T
VChFcnJvckRvbWFpbiwgQ29jb2FFcnJvckRvbWFpbik7CitfTlNfQ09OU1QoRXJyb3JEb21haW4s
IFBPU0lYRXJyb3JEb21haW4pOworX05TX0NPTlNUKEVycm9yRG9tYWluLCBPU1N0YXR1c0Vycm9y
RG9tYWluKTsKK19OU19DT05TVChFcnJvckRvbWFpbiwgTWFjaEVycm9yRG9tYWluKTsKKwordXNp
bmcgRXJyb3JVc2VySW5mb0tleSA9IGNsYXNzIFN0cmluZyo7CisKK19OU19DT05TVChFcnJvclVz
ZXJJbmZvS2V5LCBVbmRlcmx5aW5nRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9L
ZXksIExvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKK19OU19DT05TVChFcnJvclVzZXJJbmZvS2V5
LCBMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlcklu
Zm9LZXksIExvY2FsaXplZFJlY292ZXJ5U3VnZ2VzdGlvbkVycm9yS2V5KTsKK19OU19DT05TVChF
cnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnNFcnJvcktleSk7CitfTlNf
Q09OU1QoRXJyb3JVc2VySW5mb0tleSwgUmVjb3ZlcnlBdHRlbXB0ZXJFcnJvcktleSk7CitfTlNf
Q09OU1QoRXJyb3JVc2VySW5mb0tleSwgSGVscEFuY2hvckVycm9yS2V5KTsKK19OU19DT05TVChF
cnJvclVzZXJJbmZvS2V5LCBEZWJ1Z0Rlc2NyaXB0aW9uRXJyb3JLZXkpOworX05TX0NPTlNUKEVy
cm9yVXNlckluZm9LZXksIExvY2FsaXplZEZhaWx1cmVFcnJvcktleSk7CitfTlNfQ09OU1QoRXJy
b3JVc2VySW5mb0tleSwgU3RyaW5nRW5jb2RpbmdFcnJvcktleSk7CitfTlNfQ09OU1QoRXJyb3JV
c2VySW5mb0tleSwgVVJMRXJyb3JLZXkpOworX05TX0NPTlNUKEVycm9yVXNlckluZm9LZXksIEZp
bGVQYXRoRXJyb3JLZXkpOworCitjbGFzcyBFcnJvciA6IHB1YmxpYyBDb3B5aW5nPEVycm9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBFcnJvciogICAgIGVycm9yKEVycm9yRG9tYWluIGRvbWFp
biwgSW50ZWdlciBjb2RlLCBjbGFzcyBEaWN0aW9uYXJ5KiBwRGljdGlvbmFyeSk7CisKKyAgICBz
dGF0aWMgRXJyb3IqICAgICBhbGxvYygpOworICAgIEVycm9yKiAgICAgICAgICAgIGluaXQoKTsK
KyAgICBFcnJvciogICAgICAgICAgICBpbml0KEVycm9yRG9tYWluIGRvbWFpbiwgSW50ZWdlciBj
b2RlLCBjbGFzcyBEaWN0aW9uYXJ5KiBwRGljdGlvbmFyeSk7CisKKyAgICBJbnRlZ2VyICAgICAg
ICAgICBjb2RlKCkgY29uc3Q7CisgICAgRXJyb3JEb21haW4gICAgICAgZG9tYWluKCkgY29uc3Q7
CisgICAgY2xhc3MgRGljdGlvbmFyeSogdXNlckluZm8oKSBjb25zdDsKKworICAgIGNsYXNzIFN0
cmluZyogICAgIGxvY2FsaXplZERlc2NyaXB0aW9uKCkgY29uc3Q7CisgICAgY2xhc3MgQXJyYXkq
ICAgICAgbG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zKCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5n
KiAgICAgbG9jYWxpemVkUmVjb3ZlcnlTdWdnZXN0aW9uKCkgY29uc3Q7CisgICAgY2xhc3MgU3Ry
aW5nKiAgICAgbG9jYWxpemVkRmFpbHVyZVJlYXNvbigpIGNvbnN0OworfTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19QUklWQVRFX0RF
Rl9DT05TVChOUzo6RXJyb3JEb21haW4sIENvY29hRXJyb3JEb21haW4pOworX05TX1BSSVZBVEVf
REVGX0NPTlNUKE5TOjpFcnJvckRvbWFpbiwgUE9TSVhFcnJvckRvbWFpbik7CitfTlNfUFJJVkFU
RV9ERUZfQ09OU1QoTlM6OkVycm9yRG9tYWluLCBPU1N0YXR1c0Vycm9yRG9tYWluKTsKK19OU19Q
UklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JEb21haW4sIE1hY2hFcnJvckRvbWFpbik7CisKK19O
U19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgVW5kZXJseWluZ0Vycm9y
S2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChOUzo6RXJyb3JVc2VySW5mb0tleSwgTG9jYWxp
emVkRGVzY3JpcHRpb25LZXkpOworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpFcnJvclVzZXJJ
bmZvS2V5LCBMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXkpOworX05TX1BSSVZBVEVfREVG
X0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25F
cnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIExv
Y2FsaXplZFJlY292ZXJ5T3B0aW9uc0Vycm9yS2V5KTsKK19OU19QUklWQVRFX0RFRl9DT05TVChO
Uzo6RXJyb3JVc2VySW5mb0tleSwgUmVjb3ZlcnlBdHRlbXB0ZXJFcnJvcktleSk7CitfTlNfUFJJ
VkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIEhlbHBBbmNob3JFcnJvcktleSk7
CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIERlYnVnRGVzY3Jp
cHRpb25FcnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9L
ZXksIExvY2FsaXplZEZhaWx1cmVFcnJvcktleSk7CitfTlNfUFJJVkFURV9ERUZfQ09OU1QoTlM6
OkVycm9yVXNlckluZm9LZXksIFN0cmluZ0VuY29kaW5nRXJyb3JLZXkpOworX05TX1BSSVZBVEVf
REVGX0NPTlNUKE5TOjpFcnJvclVzZXJJbmZvS2V5LCBVUkxFcnJvcktleSk7CitfTlNfUFJJVkFU
RV9ERUZfQ09OU1QoTlM6OkVycm9yVXNlckluZm9LZXksIEZpbGVQYXRoRXJyb3JLZXkpOworCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6RXJyb3IqIE5TOjpFcnJvcjo6ZXJyb3IoRXJyb3JEb21haW4gZG9tYWluLCBJbnRlZ2Vy
IGNvZGUsIGNsYXNzIERpY3Rpb25hcnkqIHBEaWN0aW9uYXJ5KQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPEVycm9yKj4oX05TX1BSSVZBVEVfQ0xTKE5TRXJyb3IpLCBfTlNfUFJJ
VkFURV9TRUwoZXJyb3JXaXRoRG9tYWluX2NvZGVfdXNlckluZm9fKSwgZG9tYWluLCBjb2RlLCBw
RGljdGlvbmFyeSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpFcnJvciogTlM6OkVycm9yOjphbGxvYygpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6YWxsb2M8RXJyb3I+KF9OU19QUklWQVRFX0NMUyhOU0Vycm9yKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpFcnJvciogTlM6OkVycm9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0Ojppbml0PEVycm9yPigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RXJyb3IqIE5TOjpFcnJvcjo6aW5pdChF
cnJvckRvbWFpbiBkb21haW4sIEludGVnZXIgY29kZSwgY2xhc3MgRGljdGlvbmFyeSogcERpY3Rp
b25hcnkpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8RXJyb3IqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoaW5pdFdpdGhEb21haW5fY29kZV91c2VySW5mb18pLCBkb21haW4sIGNv
ZGUsIHBEaWN0aW9uYXJ5KTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkludGVnZXIgTlM6OkVycm9yOjpjb2RlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxJbnRlZ2VyPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoY29kZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RXJyb3JEb21haW4gTlM6OkVycm9y
Ojpkb21haW4oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEVycm9y
RG9tYWluPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZG9tYWluKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpEaWN0
aW9uYXJ5KiBOUzo6RXJyb3I6OnVzZXJJbmZvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxEaWN0aW9uYXJ5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVzZXJJbmZv
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpFcnJvcjo6bG9jYWxpemVkRGVzY3JpcHRpb24o
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMs
IF9OU19QUklWQVRFX1NFTChsb2NhbGl6ZWREZXNjcmlwdGlvbikpOworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJy
YXkqIE5TOjpFcnJvcjo6bG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxBcnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChs
b2NhbGl6ZWRSZWNvdmVyeU9wdGlvbnMpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkVycm9y
Ojpsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb2NhbGl6ZWRS
ZWNvdmVyeVN1Z2dlc3Rpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OkVycm9yOjpsb2Nh
bGl6ZWRGYWlsdXJlUmVhc29uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwobG9jYWxpemVkRmFpbHVyZVJlYXNv
bikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
TG9jay5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU0xv
Y2suaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYyN2RlMDgxOTRmMzQyNDg5OGZjMWZiMjM3NWY2MjNkNDg3OGI0
NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9OU0xvY2suaHBwCkBAIC0wLDAgKzEsMTA1IEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0aW9uL05TTG9jay5ocHAK
Ky8vCisvLyBTZWUgTElDRU5TRS50eHQgZm9yIHRoaXMgcHJvamVjdCBsaWNlbnNpbmcgaW5mb3Jt
YXRpb24uCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3Qu
aHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAiCisj
aW5jbHVkZSAiTlNEYXRlLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBOUworeworCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNz
LCBjbGFzcyBfQmFzZSA9IGNsYXNzIE9iamVjdD4KK2NsYXNzIExvY2tpbmcgOiBwdWJsaWMgX0Jh
c2UKK3sKK3B1YmxpYzoKKyAgICB2b2lkIGxvY2soKTsKKyAgICB2b2lkIHVubG9jaygpOworfTsK
KworY2xhc3MgQ29uZGl0aW9uIDogcHVibGljIExvY2tpbmc8Q29uZGl0aW9uPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBDb25kaXRpb24qIGFsbG9jKCk7CisKKyAgICBDb25kaXRpb24qICAgICAg
ICBpbml0KCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICB3YWl0KCk7CisgICAgYm9vbCAgICAg
ICAgICAgICAgd2FpdFVudGlsRGF0ZShEYXRlKiBwTGltaXQpOworICAgIHZvaWQgICAgICAgICAg
ICAgIHNpZ25hbCgpOworICAgIHZvaWQgICAgICAgICAgICAgIGJyb2FkY2FzdCgpOworfTsKKwor
fSAvLyBOUworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KwordGVtcGxhdGU8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSAvKiA9IE5TOjpPYmplY3QgKi8+
CitfTlNfSU5MSU5FIHZvaWQgTlM6OkxvY2tpbmc8X0NsYXNzLCBfQmFzZT46OmxvY2soKQorewor
ICAgIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChs
b2NrKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCit0ZW1wbGF0ZTxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9CYXNlIC8qID0gTlM6Ok9iamVjdCAq
Lz4KK19OU19JTkxJTkUgdm9pZCBOUzo6TG9ja2luZzxfQ2xhc3MsIF9CYXNlPjo6dW5sb2NrKCkK
K3sKKyAgICBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwodW5sb2NrKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpDb25kaXRpb24qIE5TOjpDb25kaXRpb246OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TlM6OkNvbmRpdGlvbj4oX05TX1BS
SVZBVEVfQ0xTKE5TQ29uZGl0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpDb25kaXRpb24qIE5TOjpDb25k
aXRpb246OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE5TOjpDb25kaXRp
b24+KCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkNvbmRpdGlvbjo6d2FpdCgpCit7CisgICAgTlM6Ok9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX05TX1BSSVZBVEVfU0VMKHdhaXQpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgYm9vbCBOUzo6Q29uZGl0aW9uOjp3YWl0VW50aWxEYXRlKE5TOjpEYXRlKiBwTGltaXQp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTCh3YWl0VW50aWxEYXRlXyksIHBMaW1pdCk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkNv
bmRpdGlvbjo6c2lnbmFsKCkKK3sKKyAgICBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwoc2lnbmFsKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OkNvbmRpdGlv
bjo6YnJvYWRjYXN0KCkKK3sKKyAgICBOUzo6T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoYnJvYWRjYXN0KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TTm90
aWZpY2F0aW9uLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TTm90aWZpY2F0aW9uLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWJiYzlmNTgwNmI2NjUwMWQzNzk1NGI4
ZWY1MGU2MzJmNWMyZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOb3RpZmljYXRpb24uaHBwCkBAIC0wLDAgKzEsNjcgQEAK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZv
dW5kYXRpb24vTlNOb3RpZmljYXRpb24uaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNEaWN0
aW9uYXJ5LmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNTdHJpbmcu
aHBwIgorI2luY2x1ZGUgIk5TVHlwZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7Cit1c2luZyBOb3RpZmljYXRp
b25OYW1lID0gY2xhc3MgU3RyaW5nKjsKKworY2xhc3MgTm90aWZpY2F0aW9uIDogcHVibGljIE5T
OjpSZWZlcmVuY2luZzxOb3RpZmljYXRpb24+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyog
ICAgIG5hbWUoKSBjb25zdDsKKyAgICBOUzo6T2JqZWN0KiAgICAgb2JqZWN0KCkgY29uc3Q7Cisg
ICAgTlM6OkRpY3Rpb25hcnkqIHVzZXJJbmZvKCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3Ry
aW5nKiBOUzo6Tm90aWZpY2F0aW9uOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKG5hbWUpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgTlM6Ok9iamVjdCogTlM6Ok5vdGlmaWNhdGlvbjo6b2JqZWN0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6T2JqZWN0Kj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKG9iamVjdCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6RGljdGlvbmFyeSogTlM6Ok5vdGlmaWNh
dGlvbjo6dXNlckluZm8oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpEaWN0aW9uYXJ5Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVzZXJJbmZvKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOdW1iZXIuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNOdW1iZXIuaHBw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhkMGY2NmYzNzRmYmMzOTYxZDU1NTY0NjE2MDFmMGVlNzQ5ZWJmNDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlv
bi9OU051bWJlci5ocHAKQEAgLTAsMCArMSw1MDEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNOdW1iZXIuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIk5TT2Jq
Q1J1bnRpbWUuaHBwIgorI2luY2x1ZGUgIk5TT2JqZWN0LmhwcCIKKyNpbmNsdWRlICJOU1R5cGVz
LmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K25hbWVzcGFjZSBOUworeworY2xhc3MgVmFsdWUgOiBwdWJsaWMgQ29weWluZzxWYWx1ZT4KK3sK
K3B1YmxpYzoKKyAgICBzdGF0aWMgVmFsdWUqIHZhbHVlKGNvbnN0IHZvaWQqIHBWYWx1ZSwgY29u
c3QgY2hhciogcFR5cGUpOworICAgIHN0YXRpYyBWYWx1ZSogdmFsdWUoY29uc3Qgdm9pZCogcFBv
aW50ZXIpOworCisgICAgc3RhdGljIFZhbHVlKiBhbGxvYygpOworCisgICAgVmFsdWUqICAgICAg
ICBpbml0KGNvbnN0IHZvaWQqIHBWYWx1ZSwgY29uc3QgY2hhciogcFR5cGUpOworICAgIFZhbHVl
KiAgICAgICAgaW5pdChjb25zdCBjbGFzcyBDb2RlciogcENvZGVyKTsKKworICAgIHZvaWQgICAg
ICAgICAgZ2V0VmFsdWUodm9pZCogcFZhbHVlLCBVSW50ZWdlciBzaXplKSBjb25zdDsKKyAgICBj
b25zdCBjaGFyKiAgIG9iakNUeXBlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgIGlzRXF1
YWxUb1ZhbHVlKFZhbHVlKiBwVmFsdWUpIGNvbnN0OworICAgIHZvaWQqICAgICAgICAgcG9pbnRl
clZhbHVlKCkgY29uc3Q7Cit9OworCitjbGFzcyBOdW1iZXIgOiBwdWJsaWMgQ29weWluZzxOdW1i
ZXIsIFZhbHVlPgoreworcHVibGljOgorICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIoY2hh
ciB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcih1bnNpZ25lZCBjaGFyIHZh
bHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKHNob3J0IHZhbHVlKTsKKyAgICBz
dGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKHVuc2lnbmVkIHNob3J0IHZhbHVlKTsKKyAgICBzdGF0
aWMgTnVtYmVyKiAgICAgbnVtYmVyKGludCB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAg
IG51bWJlcih1bnNpZ25lZCBpbnQgdmFsdWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1i
ZXIobG9uZyB2YWx1ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcih1bnNpZ25lZCBs
b25nIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVyKiAgICAgbnVtYmVyKGxvbmcgbG9uZyB2YWx1
ZSk7CisgICAgc3RhdGljIE51bWJlciogICAgIG51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcgdmFs
dWUpOworICAgIHN0YXRpYyBOdW1iZXIqICAgICBudW1iZXIoZmxvYXQgdmFsdWUpOworICAgIHN0
YXRpYyBOdW1iZXIqICAgICBudW1iZXIoZG91YmxlIHZhbHVlKTsKKyAgICBzdGF0aWMgTnVtYmVy
KiAgICAgbnVtYmVyKGJvb2wgdmFsdWUpOworCisgICAgc3RhdGljIE51bWJlciogICAgIGFsbG9j
KCk7CisKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdChjb25zdCBjbGFzcyBDb2RlciogcENv
ZGVyKTsKKyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdChjaGFyIHZhbHVlKTsKKyAgICBOdW1i
ZXIqICAgICAgICAgICAgaW5pdCh1bnNpZ25lZCBjaGFyIHZhbHVlKTsKKyAgICBOdW1iZXIqICAg
ICAgICAgICAgaW5pdChzaG9ydCB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQo
dW5zaWduZWQgc2hvcnQgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KGludCB2
YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQodW5zaWduZWQgaW50IHZhbHVlKTsK
KyAgICBOdW1iZXIqICAgICAgICAgICAgaW5pdChsb25nIHZhbHVlKTsKKyAgICBOdW1iZXIqICAg
ICAgICAgICAgaW5pdCh1bnNpZ25lZCBsb25nIHZhbHVlKTsKKyAgICBOdW1iZXIqICAgICAgICAg
ICAgaW5pdChsb25nIGxvbmcgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KHVu
c2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSk7CisgICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQoZmxv
YXQgdmFsdWUpOworICAgIE51bWJlciogICAgICAgICAgICBpbml0KGRvdWJsZSB2YWx1ZSk7Cisg
ICAgTnVtYmVyKiAgICAgICAgICAgIGluaXQoYm9vbCB2YWx1ZSk7CisKKyAgICBjaGFyICAgICAg
ICAgICAgICAgY2hhclZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgY2hhciAgICAgIHVuc2ln
bmVkQ2hhclZhbHVlKCkgY29uc3Q7CisgICAgc2hvcnQgICAgICAgICAgICAgIHNob3J0VmFsdWUo
KSBjb25zdDsKKyAgICB1bnNpZ25lZCBzaG9ydCAgICAgdW5zaWduZWRTaG9ydFZhbHVlKCkgY29u
c3Q7CisgICAgaW50ICAgICAgICAgICAgICAgIGludFZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWdu
ZWQgaW50ICAgICAgIHVuc2lnbmVkSW50VmFsdWUoKSBjb25zdDsKKyAgICBsb25nICAgICAgICAg
ICAgICAgbG9uZ1ZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9uZyAgICAgIHVuc2lnbmVk
TG9uZ1ZhbHVlKCkgY29uc3Q7CisgICAgbG9uZyBsb25nICAgICAgICAgIGxvbmdMb25nVmFsdWUo
KSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdW5zaWduZWRMb25nTG9uZ1ZhbHVlKCkg
Y29uc3Q7CisgICAgZmxvYXQgICAgICAgICAgICAgIGZsb2F0VmFsdWUoKSBjb25zdDsKKyAgICBk
b3VibGUgICAgICAgICAgICAgZG91YmxlVmFsdWUoKSBjb25zdDsKKyAgICBib29sICAgICAgICAg
ICAgICAgYm9vbFZhbHVlKCkgY29uc3Q7CisgICAgSW50ZWdlciAgICAgICAgICAgIGludGVnZXJW
YWx1ZSgpIGNvbnN0OworICAgIFVJbnRlZ2VyICAgICAgICAgICB1bnNpZ25lZEludGVnZXJWYWx1
ZSgpIGNvbnN0OworICAgIGNsYXNzIFN0cmluZyogICAgICBzdHJpbmdWYWx1ZSgpIGNvbnN0Owor
CisgICAgQ29tcGFyaXNvblJlc3VsdCAgIGNvbXBhcmUoY29uc3QgTnVtYmVyKiBwT3RoZXJOdW1i
ZXIpIGNvbnN0OworICAgIGJvb2wgICAgICAgICAgICAgICBpc0VxdWFsVG9OdW1iZXIoY29uc3Qg
TnVtYmVyKiBwTnVtYmVyKSBjb25zdDsKKworICAgIGNsYXNzIFN0cmluZyogICAgICBkZXNjcmlw
dGlvbldpdGhMb2NhbGUoY29uc3QgT2JqZWN0KiBwTG9jYWxlKSBjb25zdDsKK307Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IE5TOjpWYWx1ZSogTlM6OlZhbHVlOjp2YWx1ZShjb25zdCB2b2lkKiBwVmFsdWUsIGNvbnN0IGNo
YXIqIHBUeXBlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFZhbHVlKj4oX05T
X1BSSVZBVEVfQ0xTKE5TVmFsdWUpLCBfTlNfUFJJVkFURV9TRUwodmFsdWVXaXRoQnl0ZXNfb2Jq
Q1R5cGVfKSwgcFZhbHVlLCBwVHlwZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpWYWx1ZSogTlM6OlZhbHVlOjp2
YWx1ZShjb25zdCB2b2lkKiBwUG9pbnRlcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxWYWx1ZSo+KF9OU19QUklWQVRFX0NMUyhOU1ZhbHVlKSwgX05TX1BSSVZBVEVfU0VMKHZh
bHVlV2l0aFBvaW50ZXJfKSwgcFBvaW50ZXIpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VmFsdWUqIE5TOjpWYWx1
ZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxWYWx1ZT4oX05TX1BS
SVZBVEVfQ0xTKE5TVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlZhbHVlKiBOUzo6VmFsdWU6OmluaXQo
Y29uc3Qgdm9pZCogcFZhbHVlLCBjb25zdCBjaGFyKiBwVHlwZSkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxWYWx1ZSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aEJ5
dGVzX29iakNUeXBlXyksIHBWYWx1ZSwgcFR5cGUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VmFsdWUqIE5TOjpW
YWx1ZTo6aW5pdChjb25zdCBjbGFzcyBDb2RlciogcENvZGVyKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFZhbHVlKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQ29k
ZXJfKSwgcENvZGVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgdm9pZCBOUzo6VmFsdWU6OmdldFZhbHVlKHZvaWQqIHBW
YWx1ZSwgVUludGVnZXIgc2l6ZSkgY29uc3QKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9OU19QUklWQVRFX1NFTChnZXRWYWx1ZV9zaXplXyksIHBWYWx1ZSwgc2l6ZSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIGNvbnN0IGNoYXIqIE5TOjpWYWx1ZTo6b2JqQ1R5cGUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNvbnN0IGNoYXIqPih0aGlzLCBfTlNfUFJJVkFU
RV9TRUwob2JqQ1R5cGUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6VmFsdWU6OmlzRXF1YWxUb1ZhbHVl
KFZhbHVlKiBwVmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzRXF1YWxUb1ZhbHVlXyksIHBWYWx1ZSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIHZvaWQqIE5TOjpWYWx1ZTo6cG9pbnRlclZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHBvaW50
ZXJWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIoY2hhciB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNfUFJJ
VkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aENoYXJfKSwgdmFs
dWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIodW5zaWduZWQgY2hh
ciB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihfTlNf
UFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFVuc2lnbmVk
Q2hhcl8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6Om51bWJlcihz
aG9ydCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPihf
TlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVyV2l0aFNob3J0
XyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKHVuc2ln
bmVkIHNob3J0IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJl
cio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRo
VW5zaWduZWRTaG9ydF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6
Om51bWJlcihpbnQgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVt
YmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BSSVZBVEVfU0VMKG51bWJlcldp
dGhJbnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIo
dW5zaWduZWQgaW50IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51
bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJX
aXRoVW5zaWduZWRJbnRfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVy
OjpudW1iZXIobG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
dW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVtYmVy
V2l0aExvbmdfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1i
ZXIodW5zaWduZWQgbG9uZyB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOdW1iZXIqPihfTlNfUFJJVkFURV9DTFMoTlNOdW1iZXIpLCBfTlNfUFJJVkFURV9TRUwobnVt
YmVyV2l0aFVuc2lnbmVkTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpO
dW1iZXI6Om51bWJlcihsb25nIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwgX05TX1BSSVZBVEVf
U0VMKG51bWJlcldpdGhMb25nTG9uZ18pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5T
OjpOdW1iZXI6Om51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwg
X05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhVbnNpZ25lZExvbmdMb25nXyksIHZhbHVlKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKGZsb2F0IHZhbHVlKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051
bWJlciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoRmxvYXRfKSwgdmFsdWUpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpudW1iZXIoZG91YmxlIHZhbHVlKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KF9OU19QUklWQVRFX0NMUyhOU051bWJl
ciksIF9OU19QUklWQVRFX1NFTChudW1iZXJXaXRoRG91YmxlXyksIHZhbHVlKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6Ok51bWJlciogTlM6Ok51bWJlcjo6bnVtYmVyKGJvb2wgdmFsdWUpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4oX05TX1BSSVZBVEVfQ0xTKE5TTnVtYmVyKSwg
X05TX1BSSVZBVEVfU0VMKG51bWJlcldpdGhCb29sXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51
bWJlciogTlM6Ok51bWJlcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxOdW1iZXI+KF9OU19QUklWQVRFX0NMUyhOU051bWJlcikpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVy
KiBOUzo6TnVtYmVyOjppbml0KGNvbnN0IENvZGVyKiBwQ29kZXIpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRo
Q29kZXJfKSwgcENvZGVyKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChj
aGFyIHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aENoYXJfKSwgdmFsdWUpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KHVuc2lnbmVkIGNoYXIgdmFsdWUpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlu
aXRXaXRoVW5zaWduZWRDaGFyXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51
bWJlcjo6aW5pdChzaG9ydCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhTaG9ydF8pLCB2YWx1ZSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQodW5zaWduZWQgc2hvcnQgdmFs
dWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGluaXRXaXRoVW5zaWduZWRTaG9ydF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoaW50IHZhbHVlKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aElu
dF8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQodW5zaWdu
ZWQgaW50IHZhbHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0V2l0aFVuc2lnbmVkSW50XyksIHZhbHVlKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChsb25nIHZhbHVlKQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChp
bml0V2l0aExvbmdfKSwgdmFsdWUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6TnVtYmVyKiBOUzo6TnVtYmVyOjpp
bml0KHVuc2lnbmVkIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TnVtYmVyKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoVW5zaWduZWRMb25nXyks
IHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJlciogTlM6Ok51bWJlcjo6aW5pdChsb25nIGxvbmcg
dmFsdWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TnVtYmVyKj4odGhpcywg
X05TX1BSSVZBVEVfU0VMKGluaXRXaXRoTG9uZ0xvbmdfKSwgdmFsdWUpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
TnVtYmVyKiBOUzo6TnVtYmVyOjppbml0KHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoaW5pdFdpdGhVbnNpZ25lZExvbmdMb25nXyksIHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok51bWJl
ciogTlM6Ok51bWJlcjo6aW5pdChmbG9hdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhGbG9hdF8p
LCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1iZXIqIE5TOjpOdW1iZXI6OmluaXQoZG91YmxlIHZh
bHVlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE51bWJlcio+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChpbml0V2l0aERvdWJsZV8pLCB2YWx1ZSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpOdW1i
ZXIqIE5TOjpOdW1iZXI6OmluaXQoYm9vbCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOdW1iZXIqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhCb29sXyks
IHZhbHVlKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgY2hhciBOUzo6TnVtYmVyOjpjaGFyVmFsdWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNoYXI+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChjaGFyVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK19OU19JTkxJTkUgdW5zaWduZWQgY2hhciBOUzo6TnVtYmVyOjp1bnNpZ25l
ZENoYXJWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5z
aWduZWQgY2hhcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKHVuc2lnbmVkQ2hhclZhbHVlKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIHNob3J0IE5TOjpOdW1iZXI6OnNob3J0VmFsdWUoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPHNob3J0Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc2hvcnRW
YWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSB1bnNpZ25lZCBzaG9ydCBOUzo6TnVtYmVyOjp1bnNpZ25lZFNob3J0
VmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVk
IHNob3J0Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwodW5zaWduZWRTaG9ydFZhbHVlKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIGludCBOUzo6TnVtYmVyOjppbnRWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8aW50Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaW50VmFsdWUpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgdW5zaWduZWQgaW50IE5TOjpOdW1iZXI6OnVuc2lnbmVkSW50VmFsdWUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVkIGludD4odGhpcywgX05T
X1BSSVZBVEVfU0VMKHVuc2lnbmVkSW50VmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgbG9uZyBOUzo6TnVtYmVy
Ojpsb25nVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGxv
bmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb25nVmFsdWUpKTsKK30KKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgdW5zaWduZWQg
bG9uZyBOUzo6TnVtYmVyOjp1bnNpZ25lZExvbmdWYWx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5zaWduZWQgbG9uZz4odGhpcywgX05TX1BSSVZBVEVfU0VM
KHVuc2lnbmVkTG9uZ1ZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGxvbmcgbG9uZyBOUzo6TnVtYmVyOjpsb25n
TG9uZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxsb25n
IGxvbmc+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsb25nTG9uZ1ZhbHVlKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHVu
c2lnbmVkIGxvbmcgbG9uZyBOUzo6TnVtYmVyOjp1bnNpZ25lZExvbmdMb25nVmFsdWUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVkIGxvbmcgbG9uZz4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZSkpOworfQorCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBm
bG9hdCBOUzo6TnVtYmVyOjpmbG9hdFZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxmbG9hdD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGZsb2F0VmFsdWUpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19O
U19JTkxJTkUgZG91YmxlIE5TOjpOdW1iZXI6OmRvdWJsZVZhbHVlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxkb3VibGU+KHRoaXMsIF9OU19QUklWQVRFX1NFTChk
b3VibGVWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX05TX0lOTElORSBib29sIE5TOjpOdW1iZXI6OmJvb2xWYWx1ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZB
VEVfU0VMKGJvb2xWYWx1ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6SW50ZWdlciBOUzo6TnVtYmVyOjppbnRl
Z2VyVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPEludGVn
ZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbnRlZ2VyVmFsdWUpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE5TOjpOdW1iZXI6OnVuc2lnbmVkSW50ZWdlclZhbHVlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VM
KHVuc2lnbmVkSW50ZWdlclZhbHVlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpOdW1iZXI6
OnN0cmluZ1ZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxT
dHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc3RyaW5nVmFsdWUpKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6
OkNvbXBhcmlzb25SZXN1bHQgTlM6Ok51bWJlcjo6Y29tcGFyZShjb25zdCBOdW1iZXIqIHBPdGhl
ck51bWJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxDb21wYXJp
c29uUmVzdWx0Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwoY29tcGFyZV8pLCBwT3RoZXJOdW1iZXIp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBib29sIE5TOjpOdW1iZXI6OmlzRXF1YWxUb051bWJlcihjb25zdCBOdW1iZXIq
IHBOdW1iZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGlzRXF1YWxUb051bWJlcl8pLCBwTnVtYmVyKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlN0cmluZyogTlM6Ok51bWJlcjo6ZGVzY3JpcHRpb25XaXRoTG9jYWxlKGNvbnN0IE9i
amVjdCogcExvY2FsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxT
dHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGVzY3JpcHRpb25XaXRoTG9jYWxlXyksIHBM
b2NhbGUpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9u
L05TT2JqQ1J1bnRpbWUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5k
YXRpb24vTlNPYmpDUnVudGltZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhlNjUwNjZlNThjYTcwNTc0MjBl
NmY1ODllNzk1YTJlZGZjNmFlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TT2JqQ1J1bnRpbWUuaHBwCkBAIC0wLDAgKzEsNDMg
QEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8v
IEZvdW5kYXRpb24vTlNPYmpDUnVudGltZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJOU1R5
cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK25hbWVzcGFjZSBOUworeworCitfTlNfRU5VTShJbnRlZ2VyLCBDb21wYXJpc29uUmVzdWx0
KSB7CisgICAgT3JkZXJlZEFzY2VuZGluZyA9IC0xLAorICAgIE9yZGVyZWRTYW1lID0gMCwKKyAg
ICBPcmRlcmVkRGVzY2VuZGluZyA9IDEsCit9OworCitjb25zdCBJbnRlZ2VyIE5vdEZvdW5kID0g
SW50ZWdlck1heDsKKworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3Vu
ZGF0aW9uL05TT2JqZWN0LmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3Vu
ZGF0aW9uL05TT2JqZWN0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGUxYzYzMmM5ZDViYTFlYjY0NDdhYTJl
OWFiNTMwMWZhYjZmMjUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNPYmplY3QuaHBwCkBAIC0wLDAgKzEsMjk3IEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBGb3VuZGF0
aW9uL05TT2JqZWN0LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgor
Ly8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
Ly8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJh
Z21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNpbmNsdWRlICJOU0RlZmluZXMuaHBwIgorI2luY2x1ZGUgIk5TUHJpdmF0ZS5ocHAiCisj
aW5jbHVkZSAiTlNUeXBlcy5ocHAiCisKKyNpbmNsdWRlIDxvYmpjL21lc3NhZ2UuaD4KKyNpbmNs
dWRlIDxvYmpjL3J1bnRpbWUuaD4KKworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7
Cit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSA9IGNsYXNzIE9iamVjdD4KK2Ns
YXNzIFJlZmVyZW5jaW5nIDogcHVibGljIF9CYXNlCit7CitwdWJsaWM6CisgICAgX0NsYXNzKiAg
cmV0YWluKCk7CisgICAgdm9pZCAgICAgcmVsZWFzZSgpOworCisgICAgX0NsYXNzKiAgYXV0b3Jl
bGVhc2UoKTsKKworICAgIFVJbnRlZ2VyIHJldGFpbkNvdW50KCkgY29uc3Q7Cit9OworCit0ZW1w
bGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFzZSA9IGNsYXNzIE9iamVjdD4KK2NsYXNzIENv
cHlpbmcgOiBwdWJsaWMgUmVmZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT4KK3sKK3B1YmxpYzoKKyAg
ICBfQ2xhc3MqIGNvcHkoKSBjb25zdDsKK307CisKK2NsYXNzIE9iamVjdCA6IHB1YmxpYyBSZWZl
cmVuY2luZzxPYmplY3QsIG9iamNfb2JqZWN0PgoreworcHVibGljOgorICAgIFVJbnRlZ2VyICAg
ICAgaGFzaCgpIGNvbnN0OworICAgIGJvb2wgICAgICAgICAgaXNFcXVhbChjb25zdCBPYmplY3Qq
IHBPYmplY3QpIGNvbnN0OworCisgICAgY2xhc3MgU3RyaW5nKiBkZXNjcmlwdGlvbigpIGNvbnN0
OworICAgIGNsYXNzIFN0cmluZyogZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OworCitwcm90ZWN0
ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFJlZmVyZW5jaW5nPE9iamVjdCwgb2JqY19vYmplY3Q+Owor
CisgICAgdGVtcGxhdGUgPGNsYXNzIF9DbGFzcz4KKyAgICBzdGF0aWMgX0NsYXNzKiBhbGxvYyhj
b25zdCBjaGFyKiBwQ2xhc3NOYW1lKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzPgorICAg
IHN0YXRpYyBfQ2xhc3MqIGFsbG9jKGNvbnN0IHZvaWQqIHBDbGFzcyk7CisgICAgdGVtcGxhdGUg
PGNsYXNzIF9DbGFzcz4KKyAgICBfQ2xhc3MqIGluaXQoKTsKKworICAgIHRlbXBsYXRlIDxjbGFz
cyBfRHN0PgorICAgIHN0YXRpYyBfRHN0ICAgICAgICAgICAgICAgICAgIGJyaWRnaW5nQ2FzdChj
b25zdCB2b2lkKiBwT2JqKTsKKyAgICBzdGF0aWMgY2xhc3MgTWV0aG9kU2lnbmF0dXJlKiBtZXRo
b2RTaWduYXR1cmVGb3JTZWxlY3Rvcihjb25zdCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IpOwor
ICAgIHN0YXRpYyBib29sICAgICAgICAgICAgICAgICAgIHJlc3BvbmRzVG9TZWxlY3Rvcihjb25z
dCB2b2lkKiBwT2JqLCBTRUwgc2VsZWN0b3IpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfVHlw
ZT4KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZG9lc1JlcXVpcmVNc2dTZW5kU3RyZXQoKTsK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUuLi4gX0FyZ3M+CisgICAgc3Rh
dGljIF9SZXQgc2VuZE1lc3NhZ2UoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yLCBfQXJn
cy4uLiBhcmdzKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUuLi4gX0Fy
Z3M+CisgICAgc3RhdGljIF9SZXQgc2VuZE1lc3NhZ2VTYWZlKGNvbnN0IHZvaWQqIHBPYmosIFNF
TCBzZWxlY3RvciwgX0FyZ3MuLi4gYXJncyk7CisKK3ByaXZhdGU6CisgICAgT2JqZWN0KCkgPSBk
ZWxldGU7CisgICAgT2JqZWN0KGNvbnN0IE9iamVjdCYpID0gZGVsZXRlOworICAgIH5PYmplY3Qo
KSA9IGRlbGV0ZTsKKworICAgIE9iamVjdCYgb3BlcmF0b3I9KGNvbnN0IE9iamVjdCYpID0gZGVs
ZXRlOworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNzIF9CYXNlIC8qID0gT2JqZWN0ICov
PgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpSZWZlcmVuY2luZzxfQ2xhc3MsIF9CYXNlPjo6cmV0
YWluKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxfQ2xhc3MqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwocmV0YWluKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNzLCBjbGFzcyBfQmFz
ZSAvKiA9IE9iamVjdCAqLz4KK19OU19JTkxJTkUgdm9pZCBOUzo6UmVmZXJlbmNpbmc8X0NsYXNz
LCBfQmFzZT46OnJlbGVhc2UoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX05TX1BSSVZBVEVfU0VMKHJlbGVhc2UpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3MsIGNsYXNz
IF9CYXNlIC8qID0gT2JqZWN0ICovPgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpSZWZlcmVuY2lu
ZzxfQ2xhc3MsIF9CYXNlPjo6YXV0b3JlbGVhc2UoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPF9DbGFzcyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhdXRvcmVsZWFzZSkpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGVt
cGxhdGUgPGNsYXNzIF9DbGFzcywgY2xhc3MgX0Jhc2UgLyogPSBPYmplY3QgKi8+CitfTlNfSU5M
SU5FIE5TOjpVSW50ZWdlciBOUzo6UmVmZXJlbmNpbmc8X0NsYXNzLCBfQmFzZT46OnJldGFpbkNv
dW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVSW50ZWdlcj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKHJldGFpbkNvdW50KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8Y2xhc3MgX0NsYXNz
LCBjbGFzcyBfQmFzZSAvKiA9IE9iamVjdCAqLz4KK19OU19JTkxJTkUgX0NsYXNzKiBOUzo6Q29w
eWluZzxfQ2xhc3MsIF9CYXNlPjo6Y29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8X0NsYXNzKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGNvcHkpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRl
IDxjbGFzcyBfRHN0PgorX05TX0lOTElORSBfRHN0IE5TOjpPYmplY3Q6OmJyaWRnaW5nQ2FzdChj
b25zdCB2b2lkKiBwT2JqKQoreworI2lmIF9fT0JKQ19fCisgICAgcmV0dXJuIChfX2JyaWRnZSBf
RHN0KXBPYmo7CisjZWxzZQorICAgIHJldHVybiAoX0RzdClwT2JqOworI2VuZGlmIC8vIF9fT0JK
Q19fCit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1R5cGU+CitfTlNfSU5MSU5FIGNvbnN0ZXhwciBib29sIE5T
OjpPYmplY3Q6OmRvZXNSZXF1aXJlTXNnU2VuZFN0cmV0KCkKK3sKKyNpZiAoZGVmaW5lZChfX2kz
ODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSkKKyAgICBjb25zdGV4cHIgc2l6ZV90IGtTdHJ1
Y3RMaW1pdCA9IChzaXplb2Yoc3RkOjp1aW50cHRyX3QpIDw8IDEpOworCisgICAgcmV0dXJuIHNp
emVvZihfVHlwZSkgPiBrU3RydWN0TGltaXQ7CisjZWxpZiBkZWZpbmVkKF9fYXJtNjRfXykKKyAg
ICByZXR1cm4gZmFsc2U7CisjZWxpZiBkZWZpbmVkKF9fYXJtX18pCisgICAgY29uc3RleHByIHNp
emVfdCBrU3RydWN0TGltaXQgPSBzaXplb2Yoc3RkOjp1aW50cHRyX3QpOworCisgICAgcmV0dXJu
IHN0ZDo6aXNfY2xhc3MoX1R5cGUpICYmIChzaXplb2YoX1R5cGUpID4ga1N0cnVjdExpbWl0KTsK
KyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSEiCisjZW5kaWYKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRl
IDw+CitfTlNfSU5MSU5FIGNvbnN0ZXhwciBib29sIE5TOjpPYmplY3Q6OmRvZXNSZXF1aXJlTXNn
U2VuZFN0cmV0PHZvaWQ+KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
X1JldCwgdHlwZW5hbWUuLi4gX0FyZ3M+CitfTlNfSU5MSU5FIF9SZXQgTlM6Ok9iamVjdDo6c2Vu
ZE1lc3NhZ2UoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yLCBfQXJncy4uLiBhcmdzKQor
eworI2lmIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pKQorICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19mbG9hdGluZ19wb2ludDxfUmV0PigpKQorICAgIHsKKyAgICAg
ICAgdXNpbmcgU2VuZE1lc3NhZ2VQcm9jRnByZXQgPSBfUmV0ICgqKShjb25zdCB2b2lkKiwgU0VM
LCBfQXJncy4uLik7CisKKyAgICAgICAgY29uc3QgU2VuZE1lc3NhZ2VQcm9jRnByZXQgcFByb2Mg
PSByZWludGVycHJldF9jYXN0PFNlbmRNZXNzYWdlUHJvY0ZwcmV0Pigmb2JqY19tc2dTZW5kX2Zw
cmV0KTsKKworICAgICAgICByZXR1cm4gKCpwUHJvYykocE9iaiwgc2VsZWN0b3IsIGFyZ3MuLi4p
OworICAgIH0KKyAgICBlbHNlCisjZW5kaWYgLy8gKCBkZWZpbmVkKCBfX2kzODZfXyApICB8fCBk
ZWZpbmVkKCBfX3g4Nl82NF9fICkgICkKKyNpZiAhZGVmaW5lZChfX2FybTY0X18pCisgICAgICAg
IGlmIGNvbnN0ZXhwciAoZG9lc1JlcXVpcmVNc2dTZW5kU3RyZXQ8X1JldD4oKSkKKyAgICB7Cisg
ICAgICAgIHVzaW5nIFNlbmRNZXNzYWdlUHJvY1N0cmV0ID0gdm9pZCAoKikoX1JldCosIGNvbnN0
IHZvaWQqLCBTRUwsIF9BcmdzLi4uKTsKKworICAgICAgICBjb25zdCBTZW5kTWVzc2FnZVByb2NT
dHJldCBwUHJvYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2VuZE1lc3NhZ2VQcm9jU3RyZXQ+KCZvYmpj
X21zZ1NlbmRfc3RyZXQpOworICAgICAgICBfUmV0ICAgICAgICAgICAgICAgICAgICAgICByZXQ7
CisKKyAgICAgICAgKCpwUHJvYykoJnJldCwgcE9iaiwgc2VsZWN0b3IsIGFyZ3MuLi4pOworCisg
ICAgICAgIHJldHVybiByZXQ7CisgICAgfQorICAgIGVsc2UKKyNlbmRpZiAvLyAhZGVmaW5lZCgg
X19hcm02NF9fICkKKyAgICB7CisgICAgICAgIHVzaW5nIFNlbmRNZXNzYWdlUHJvYyA9IF9SZXQg
KCopKGNvbnN0IHZvaWQqLCBTRUwsIF9BcmdzLi4uKTsKKworICAgICAgICBjb25zdCBTZW5kTWVz
c2FnZVByb2MgcFByb2MgPSByZWludGVycHJldF9jYXN0PFNlbmRNZXNzYWdlUHJvYz4oJm9iamNf
bXNnU2VuZCk7CisKKyAgICAgICAgcmV0dXJuICgqcFByb2MpKHBPYmosIHNlbGVjdG9yLCBhcmdz
Li4uKTsKKyAgICB9Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpNZXRob2RTaWduYXR1cmUqIE5TOjpPYmplY3Q6Om1l
dGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yKGNvbnN0IHZvaWQqIHBPYmosIFNFTCBzZWxlY3RvcikK
K3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8TWV0aG9kU2lnbmF0dXJlKj4ocE9iaiwgX05TX1BS
SVZBVEVfU0VMKG1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yXyksIHNlbGVjdG9yKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgYm9vbCBOUzo6T2JqZWN0OjpyZXNwb25kc1RvU2VsZWN0b3IoY29uc3Qgdm9pZCogcE9iaiwg
U0VMIHNlbGVjdG9yKQoreworICAgIHJldHVybiBzZW5kTWVzc2FnZTxib29sPihwT2JqLCBfTlNf
UFJJVkFURV9TRUwocmVzcG9uZHNUb1NlbGVjdG9yXyksIHNlbGVjdG9yKTsKK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBfUmV0LCB0eXBlbmFtZS4uLiBfQXJncz4KK19OU19JTkxJTkUgX1JldCBOUzo6T2JqZWN0
OjpzZW5kTWVzc2FnZVNhZmUoY29uc3Qgdm9pZCogcE9iaiwgU0VMIHNlbGVjdG9yLCBfQXJncy4u
LiBhcmdzKQoreworICAgIGlmICgocmVzcG9uZHNUb1NlbGVjdG9yKHBPYmosIHNlbGVjdG9yKSkg
fHwgKG51bGxwdHIgIT0gbWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3IocE9iaiwgc2VsZWN0b3Ip
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZTxfUmV0PihwT2JqLCBzZWxlY3Rv
ciwgYXJncy4uLik7CisgICAgfQorCisgICAgaWYgY29uc3RleHByICghc3RkOjppc192b2lkPF9S
ZXQ+Ojp2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFz
cyBfQ2xhc3M+CitfTlNfSU5MSU5FIF9DbGFzcyogTlM6Ok9iamVjdDo6YWxsb2MoY29uc3QgY2hh
ciogcENsYXNzTmFtZSkKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8X0NsYXNzKj4ob2JqY19s
b29rVXBDbGFzcyhwQ2xhc3NOYW1lKSwgX05TX1BSSVZBVEVfU0VMKGFsbG9jKSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0ZW1wbGF0ZSA8
Y2xhc3MgX0NsYXNzPgorX05TX0lOTElORSBfQ2xhc3MqIE5TOjpPYmplY3Q6OmFsbG9jKGNvbnN0
IHZvaWQqIHBDbGFzcykKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8X0NsYXNzKj4ocENsYXNz
LCBfTlNfUFJJVkFURV9TRUwoYWxsb2MpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlIDxjbGFzcyBfQ2xhc3M+CitfTlNfSU5M
SU5FIF9DbGFzcyogTlM6Ok9iamVjdDo6aW5pdCgpCit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdl
PF9DbGFzcyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpbml0KSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpVSW50
ZWdlciBOUzo6T2JqZWN0OjpoYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2U8
VUludGVnZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChoYXNoKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6
Ok9iamVjdDo6aXNFcXVhbChjb25zdCBPYmplY3QqIHBPYmplY3QpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9OU19QUklWQVRFX1NFTChpc0VxdWFsXyksIHBP
YmplY3QpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6T2JqZWN0OjpkZXNjcmlwdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRF
X1NFTChkZXNjcmlwdGlvbikpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6T2JqZWN0OjpkZWJ1
Z0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2VTYWZlPFN0cmlu
Zyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChkZWJ1Z0Rlc2NyaXB0aW9uKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNQcml2YXRlLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUHJpdmF0ZS5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYThhNGZhNTY3MjIzMjMyMjA2NTRhMWUwYTViMTMxMTFlOGNhNzg3MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05T
UHJpdmF0ZS5ocHAKQEAgLTAsMCArMSw0ODggQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNQcml2YXRlLmhwcAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlIDxvYmpjL3J1
bnRpbWUuaD4KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyNkZWZpbmUgX05TX1BSSVZBVEVfQ0xTKHN5bWJvbCkgKFByaXZhdGU6OkNsYXNzOjpzX2sj
I3N5bWJvbCkKKyNkZWZpbmUgX05TX1BSSVZBVEVfU0VMKGFjY2Vzc29yKSAoUHJpdmF0ZTo6U2Vs
ZWN0b3I6OnNfayMjYWNjZXNzb3IpCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCisjaWYgZGVmaW5lZChOU19QUklWQVRFX0lNUExFTUVOVEFUSU9OKQor
CisjZGVmaW5lIF9OU19QUklWQVRFX1ZJU0lCSUxJVFkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiaGlkZGVuIikpKQorI2RlZmluZSBfTlNfUFJJVkFURV9JTVBPUlQgX19hdHRyaWJ1dGVfXygo
d2Vha19pbXBvcnQpKQorCisjaWYgX19PQkpDX18KKyNkZWZpbmUgX05TX1BSSVZBVEVfT0JKQ19M
T09LVVBfQ0xBU1Moc3ltYm9sKSAoKF9fYnJpZGdlIHZvaWQqKW9iamNfbG9va1VwQ2xhc3MoI3N5
bWJvbCkpCisjZWxzZQorI2RlZmluZSBfTlNfUFJJVkFURV9PQkpDX0xPT0tVUF9DTEFTUyhzeW1i
b2wpIG9iamNfbG9va1VwQ2xhc3MoI3N5bWJvbCkKKyNlbmRpZiAvLyBfX09CSkNfXworCisjZGVm
aW5lIF9OU19QUklWQVRFX0RFRl9DTFMoc3ltYm9sKSB2b2lkKiBzX2sjI3N5bWJvbCBfTlNfUFJJ
VkFURV9WSVNJQklMSVRZID0gX05TX1BSSVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKTsK
KyNkZWZpbmUgX05TX1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9OU19QUklWQVRF
X0RFRl9TRUwoYWNjZXNzb3IsIHN5bWJvbCkgU0VMIHNfayMjYWNjZXNzb3IgX05TX1BSSVZBVEVf
VklTSUJJTElUWSA9IHNlbF9yZWdpc3Rlck5hbWUoc3ltYm9sKTsKKyNkZWZpbmUgX05TX1BSSVZB
VEVfREVGX0NPTlNUKHR5cGUsIHN5bWJvbCkgICAgICAgICAgICAgIFwKKyAgICBfTlNfRVhURVJO
IHR5cGUgY29uc3QgTlMjI3N5bWJvbCBfTlNfUFJJVkFURV9JTVBPUlQ7IFwKKyAgICB0eXBlIGNv
bnN0ICAgICAgICAgICAgICAgICAgICAgICBOUzo6c3ltYm9sID0gKG51bGxwdHIgIT0gJk5TIyNz
eW1ib2wpID8gTlMjI3N5bWJvbCA6IG51bGxwdHI7CisKKyNlbHNlCisKKyNkZWZpbmUgX05TX1BS
SVZBVEVfREVGX0NMUyhzeW1ib2wpIGV4dGVybiB2b2lkKiBzX2sjI3N5bWJvbDsKKyNkZWZpbmUg
X05TX1BSSVZBVEVfREVGX1BSTyhzeW1ib2wpCisjZGVmaW5lIF9OU19QUklWQVRFX0RFRl9TRUwo
YWNjZXNzb3IsIHN5bWJvbCkgZXh0ZXJuIFNFTCBzX2sjI2FjY2Vzc29yOworI2RlZmluZSBfTlNf
UFJJVkFURV9ERUZfQ09OU1QodHlwZSwgc3ltYm9sKQorCisjZW5kaWYgLy8gTlNfUFJJVkFURV9J
TVBMRU1FTlRBVElPTgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworbmFtZXNwYWNlIE5TCit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVz
cGFjZSBDbGFzcworICAgIHsKKworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TQXJyYXkp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TQXV0b3JlbGVhc2VQb29sKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU0J1bmRsZSk7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9DTFMoTlNDb25kaXRpb24pOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TRGF0ZSk7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNEaWN0aW9uYXJ5KTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX0NMUyhOU0Vycm9yKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhO
U051bWJlcik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNPYmplY3QpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfQ0xTKE5TUHJvY2Vzc0luZm8pOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfQ0xTKE5TU3RyaW5nKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX0NMUyhOU1VSTCk7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9DTFMoTlNWYWx1ZSk7CisKKyAgICB9IC8vIENsYXNz
Cit9IC8vIFByaXZhdGUKK30gLy8gTVRMCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7
CisgICAgbmFtZXNwYWNlIFByb3RvY29sCisgICAgeworCisgICAgfSAvLyBQcm90b2NvbAorfSAv
LyBQcml2YXRlCit9IC8vIE5TCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAg
bmFtZXNwYWNlIFNlbGVjdG9yCisgICAgeworCisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
YWRkT2JqZWN0XywKKyAgICAgICAgICAgICJhZGRPYmplY3Q6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoYWN0aXZlUHJvY2Vzc29yQ291bnQsCisgICAgICAgICAgICAiYWN0aXZlUHJv
Y2Vzc29yQ291bnQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhbGxCdW5kbGVzLAor
ICAgICAgICAgICAgImFsbEJ1bmRsZXMiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChh
bGxGcmFtZXdvcmtzLAorICAgICAgICAgICAgImFsbEZyYW1ld29ya3MiKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTChhbGxPYmplY3RzLAorICAgICAgICAgICAgImFsbE9iamVjdHMiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhbGxvYywKKyAgICAgICAgICAgICJhbGxvYyIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGFwcFN0b3JlUmVjZWlwdFVSTCwKKyAgICAg
ICAgICAgICJhcHBTdG9yZVJlY2VpcHRVUkwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChhcmd1bWVudHMsCisgICAgICAgICAgICAiYXJndW1lbnRzIik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoYXJyYXksCisgICAgICAgICAgICAiYXJyYXkiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChhcnJheVdpdGhPYmplY3RfLAorICAgICAgICAgICAgImFycmF5V2l0aE9i
amVjdDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChhcnJheVdpdGhPYmplY3RzX2Nv
dW50XywKKyAgICAgICAgICAgICJhcnJheVdpdGhPYmplY3RzOmNvdW50OiIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGF1dG9tYXRpY1Rlcm1pbmF0aW9uU3VwcG9ydEVuYWJsZWQsCisg
ICAgICAgICAgICAiYXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5hYmxlZCIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKGF1dG9yZWxlYXNlLAorICAgICAgICAgICAgImF1dG9yZWxl
YXNlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYmVnaW5BY3Rpdml0eVdpdGhPcHRp
b25zX3JlYXNvbl8sCisgICAgICAgICAgICAiYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOnJlYXNv
bjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChib29sVmFsdWUsCisgICAgICAgICAg
ICAiYm9vbFZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoYnJvYWRjYXN0LAor
ICAgICAgICAgICAgImJyb2FkY2FzdCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1
aWx0SW5QbHVnSW5zUGF0aCwKKyAgICAgICAgICAgICJidWlsdEluUGx1Z0luc1BhdGgiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidWlsdEluUGx1Z0luc1VSTCwKKyAgICAgICAgICAg
ICJidWlsdEluUGx1Z0luc1VSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRs
ZUlkZW50aWZpZXIsCisgICAgICAgICAgICAiYnVuZGxlSWRlbnRpZmllciIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRsZVBhdGgsCisgICAgICAgICAgICAiYnVuZGxlUGF0aCIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGJ1bmRsZVVSTCwKKyAgICAgICAgICAgICJi
dW5kbGVVUkwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChidW5kbGVXaXRoUGF0aF8s
CisgICAgICAgICAgICAiYnVuZGxlV2l0aFBhdGg6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwoYnVuZGxlV2l0aFVSTF8sCisgICAgICAgICAgICAiYnVuZGxlV2l0aFVSTDoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChjaGFyYWN0ZXJBdEluZGV4XywKKyAgICAgICAgICAg
ICJjaGFyYWN0ZXJBdEluZGV4OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGNoYXJW
YWx1ZSwKKyAgICAgICAgICAgICJjaGFyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChjb3VudEJ5RW51bWVyYXRpbmdXaXRoU3RhdGVfb2JqZWN0c19jb3VudF8sCisgICAgICAg
ICAgICAiY291bnRCeUVudW1lcmF0aW5nV2l0aFN0YXRlOm9iamVjdHM6Y291bnQ6Iik7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9TRUwoY1N0cmluZ1VzaW5nRW5jb2RpbmdfLAorICAgICAgICAg
ICAgImNTdHJpbmdVc2luZ0VuY29kaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGNvZGUsCisgICAgICAgICAgICAiY29kZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGNvbXBhcmVfLAorICAgICAgICAgICAgImNvbXBhcmU6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoY29weSwKKyAgICAgICAgICAgICJjb3B5Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoY291bnQsCisgICAgICAgICAgICAiY291bnQiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93XywKKyAgICAgICAgICAgICJk
YXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGRlc2NyaXB0aW9uV2l0aExvY2FsZV8sCisgICAgICAgICAgICAiZGVzY3JpcHRpb25XaXRo
TG9jYWxlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRpc2FibGVBdXRvbWF0aWNU
ZXJtaW5hdGlvbl8sCisgICAgICAgICAgICAiZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uOiIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbiwK
KyAgICAgICAgICAgICJkaXNhYmxlU3VkZGVuVGVybWluYXRpb24iKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChkZWJ1Z0Rlc2NyaXB0aW9uLAorICAgICAgICAgICAgImRlYnVnRGVzY3Jp
cHRpb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRpY3Rp
b25hcnksCisgICAgICAgICAgICAiZGljdGlvbmFyeSIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKGRpY3Rpb25hcnlXaXRoT2JqZWN0X2ZvcktleV8sCisgICAgICAgICAgICAiZGljdGlv
bmFyeVdpdGhPYmplY3Q6Zm9yS2V5OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGRp
Y3Rpb25hcnlXaXRoT2JqZWN0c19mb3JLZXlzX2NvdW50XywKKyAgICAgICAgICAgICJkaWN0aW9u
YXJ5V2l0aE9iamVjdHM6Zm9yS2V5czpjb3VudDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChkb21haW4sCisgICAgICAgICAgICAiZG9tYWluIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoZG91YmxlVmFsdWUsCisgICAgICAgICAgICAiZG91YmxlVmFsdWUiKTsKKyAgICAg
ICAgX05TX1BSSVZBVEVfREVGX1NFTChkcmFpbiwKKyAgICAgICAgICAgICJkcmFpbiIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGVuYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uXywKKyAg
ICAgICAgICAgICJlbmFibGVBdXRvbWF0aWNUZXJtaW5hdGlvbjoiKTsKKyAgICAgICAgX05TX1BS
SVZBVEVfREVGX1NFTChlbmFibGVTdWRkZW5UZXJtaW5hdGlvbiwKKyAgICAgICAgICAgICJlbmFi
bGVTdWRkZW5UZXJtaW5hdGlvbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGVuZEFj
dGl2aXR5XywKKyAgICAgICAgICAgICJlbmRBY3Rpdml0eToiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChlbnZpcm9ubWVudCwKKyAgICAgICAgICAgICJlbnZpcm9ubWVudCIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGVycm9yV2l0aERvbWFpbl9jb2RlX3VzZXJJbmZvXywK
KyAgICAgICAgICAgICJlcnJvcldpdGhEb21haW46Y29kZTp1c2VySW5mbzoiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChleGVjdXRhYmxlUGF0aCwKKyAgICAgICAgICAgICJleGVjdXRh
YmxlUGF0aCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGV4ZWN1dGFibGVVUkwsCisg
ICAgICAgICAgICAiZXhlY3V0YWJsZVVSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwKKyAgICAgICAgICAgICJmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24iKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChmaWxlVVJMV2l0aFBhdGhf
LAorICAgICAgICAgICAgImZpbGVVUkxXaXRoUGF0aDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChmbG9hdFZhbHVlLAorICAgICAgICAgICAgImZsb2F0VmFsdWUiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChmdWxsVXNlck5hbWUsCisgICAgICAgICAgICAiZnVsbFVzZXJO
YW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoZ2V0VmFsdWVfc2l6ZV8sCisgICAg
ICAgICAgICAiZ2V0VmFsdWU6c2l6ZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChn
bG9iYWxseVVuaXF1ZVN0cmluZywKKyAgICAgICAgICAgICJnbG9iYWxseVVuaXF1ZVN0cmluZyIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGhhc2gsCisgICAgICAgICAgICAiaGFzaCIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGhvc3ROYW1lLAorICAgICAgICAgICAgImhv
c3ROYW1lIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5mb0RpY3Rpb25hcnksCisg
ICAgICAgICAgICAiaW5mb0RpY3Rpb25hcnkiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChpbml0LAorICAgICAgICAgICAgImluaXQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChpbml0RmlsZVVSTFdpdGhQYXRoXywKKyAgICAgICAgICAgICJpbml0RmlsZVVSTFdpdGhQYXRo
OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoQm9vbF8sCisgICAgICAg
ICAgICAiaW5pdFdpdGhCb29sOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRX
aXRoQnl0ZXNfb2JqQ1R5cGVfLAorICAgICAgICAgICAgImluaXRXaXRoQnl0ZXM6b2JqQ1R5cGU6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhCeXRlc05vQ29weV9sZW5n
dGhfZW5jb2RpbmdfZnJlZVdoZW5Eb25lXywKKyAgICAgICAgICAgICJpbml0V2l0aEJ5dGVzTm9D
b3B5Omxlbmd0aDplbmNvZGluZzpmcmVlV2hlbkRvbmU6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwoaW5pdFdpdGhDaGFyXywKKyAgICAgICAgICAgICJpbml0V2l0aENoYXI6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhDb2Rlcl8sCisgICAgICAgICAgICAi
aW5pdFdpdGhDb2RlcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aENT
dHJpbmdfZW5jb2RpbmdfLAorICAgICAgICAgICAgImluaXRXaXRoQ1N0cmluZzplbmNvZGluZzoi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aERvbWFpbl9jb2RlX3VzZXJJ
bmZvXywKKyAgICAgICAgICAgICJpbml0V2l0aERvbWFpbjpjb2RlOnVzZXJJbmZvOiIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoRG91YmxlXywKKyAgICAgICAgICAgICJp
bml0V2l0aERvdWJsZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aEZs
b2F0XywKKyAgICAgICAgICAgICJpbml0V2l0aEZsb2F0OiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKGluaXRXaXRoSW50XywKKyAgICAgICAgICAgICJpbml0V2l0aEludDoiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aExvbmdfLAorICAgICAgICAgICAgImlu
aXRXaXRoTG9uZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aExvbmdM
b25nXywKKyAgICAgICAgICAgICJpbml0V2l0aExvbmdMb25nOiIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKGluaXRXaXRoT2JqZWN0c19jb3VudF8sCisgICAgICAgICAgICAiaW5pdFdp
dGhPYmplY3RzOmNvdW50OiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRo
T2JqZWN0c19mb3JLZXlzX2NvdW50XywKKyAgICAgICAgICAgICJpbml0V2l0aE9iamVjdHM6Zm9y
S2V5czpjb3VudDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aFBhdGhf
LAorICAgICAgICAgICAgImluaXRXaXRoUGF0aDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVG
X1NFTChpbml0V2l0aFNob3J0XywKKyAgICAgICAgICAgICJpbml0V2l0aFNob3J0OiIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoU3RyaW5nXywKKyAgICAgICAgICAgICJp
bml0V2l0aFN0cmluZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbml0V2l0aFVu
c2lnbmVkQ2hhcl8sCisgICAgICAgICAgICAiaW5pdFdpdGhVbnNpZ25lZENoYXI6Iik7CisgICAg
ICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZEludF8sCisgICAgICAgICAg
ICAiaW5pdFdpdGhVbnNpZ25lZEludDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChp
bml0V2l0aFVuc2lnbmVkTG9uZ18sCisgICAgICAgICAgICAiaW5pdFdpdGhVbnNpZ25lZExvbmc6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZExvbmdMb25n
XywKKyAgICAgICAgICAgICJpbml0V2l0aFVuc2lnbmVkTG9uZ0xvbmc6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwoaW5pdFdpdGhVbnNpZ25lZFNob3J0XywKKyAgICAgICAgICAgICJp
bml0V2l0aFVuc2lnbmVkU2hvcnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaW5p
dFdpdGhVUkxfLAorICAgICAgICAgICAgImluaXRXaXRoVVJMOiIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKGludGVnZXJWYWx1ZSwKKyAgICAgICAgICAgICJpbnRlZ2VyVmFsdWUiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChpbnRWYWx1ZSwKKyAgICAgICAgICAgICJpbnRW
YWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlzRXF1YWxfLAorICAgICAgICAg
ICAgImlzRXF1YWw6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaXNFcXVhbFRvTnVt
YmVyXywKKyAgICAgICAgICAgICJpc0VxdWFsVG9OdW1iZXI6Iik7CisgICAgICAgIF9OU19QUklW
QVRFX0RFRl9TRUwoaXNFcXVhbFRvU3RyaW5nXywKKyAgICAgICAgICAgICJpc0VxdWFsVG9TdHJp
bmc6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaXNFcXVhbFRvVmFsdWVfLAorICAg
ICAgICAgICAgImlzRXF1YWxUb1ZhbHVlOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KGlzaU9TQXBwT25NYWMsCisgICAgICAgICAgICAiaXNpT1NBcHBPbk1hYyIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKGlzTG9hZGVkLAorICAgICAgICAgICAgImlzTG9hZGVkIik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoaXNMb3dQb3dlck1vZGVFbmFibGVkLAorICAgICAg
ICAgICAgImlzTG93UG93ZXJNb2RlRW5hYmxlZCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKGlzTWFjQ2F0YWx5c3RBcHAsCisgICAgICAgICAgICAiaXNNYWNDYXRhbHlzdEFwcCIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNp
b25fLAorICAgICAgICAgICAgImlzT3BlcmF0aW5nU3lzdGVtQXRMZWFzdFZlcnNpb246Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoa2V5RW51bWVyYXRvciwKKyAgICAgICAgICAgICJr
ZXlFbnVtZXJhdG9yIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobGVuZ3RoLAorICAg
ICAgICAgICAgImxlbmd0aCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxlbmd0aE9m
Qnl0ZXNVc2luZ0VuY29kaW5nXywKKyAgICAgICAgICAgICJsZW5ndGhPZkJ5dGVzVXNpbmdFbmNv
ZGluZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2FkLAorICAgICAgICAgICAg
ImxvYWQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2FkQW5kUmV0dXJuRXJyb3Jf
LAorICAgICAgICAgICAgImxvYWRBbmRSZXR1cm5FcnJvcjoiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChsb2NhbGl6ZWREZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICJsb2NhbGl6ZWRE
ZXNjcmlwdGlvbiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZEZhaWx1
cmVSZWFzb24sCisgICAgICAgICAgICAibG9jYWxpemVkRmFpbHVyZVJlYXNvbiIpOworICAgICAg
ICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZEluZm9EaWN0aW9uYXJ5LAorICAgICAgICAg
ICAgImxvY2FsaXplZEluZm9EaWN0aW9uYXJ5Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwobG9jYWxpemVkUmVjb3ZlcnlPcHRpb25zLAorICAgICAgICAgICAgImxvY2FsaXplZFJlY292
ZXJ5T3B0aW9ucyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKGxvY2FsaXplZFJlY292
ZXJ5U3VnZ2VzdGlvbiwKKyAgICAgICAgICAgICJsb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb24i
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2NhbGl6ZWRTdHJpbmdGb3JLZXlfdmFs
dWVfdGFibGVfLAorICAgICAgICAgICAgImxvY2FsaXplZFN0cmluZ0ZvcktleTp2YWx1ZTp0YWJs
ZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb2NrLAorICAgICAgICAgICAgImxv
Y2siKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChsb25nVmFsdWUsCisgICAgICAgICAg
ICAibG9uZ1ZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobG9uZ0xvbmdWYWx1
ZSwKKyAgICAgICAgICAgICJsb25nTG9uZ1ZhbHVlIik7CisgICAgICAgIF9OU19QUklWQVRFX0RF
Rl9TRUwobWFpbkJ1bmRsZSwKKyAgICAgICAgICAgICJtYWluQnVuZGxlIik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwobWF4aW11bUxlbmd0aE9mQnl0ZXNVc2luZ0VuY29kaW5nXywKKyAg
ICAgICAgICAgICJtYXhpbXVtTGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwobWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3JfLAorICAgICAg
ICAgICAgIm1ldGhvZFNpZ25hdHVyZUZvclNlbGVjdG9yOiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKG11dGFibGVCeXRlcywKKyAgICAgICAgICAgICJtdXRhYmxlQnl0ZXMiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChuYW1lLAorICAgICAgICAgICAgIm5hbWUiKTsKKyAg
ICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChuZXh0T2JqZWN0LAorICAgICAgICAgICAgIm5leHRP
YmplY3QiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoQm9vbF8sCisg
ICAgICAgICAgICAibnVtYmVyV2l0aEJvb2w6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwobnVtYmVyV2l0aENoYXJfLAorICAgICAgICAgICAgIm51bWJlcldpdGhDaGFyOiIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51bWJlcldpdGhEb3VibGVfLAorICAgICAgICAgICAg
Im51bWJlcldpdGhEb3VibGU6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVy
V2l0aEZsb2F0XywKKyAgICAgICAgICAgICJudW1iZXJXaXRoRmxvYXQ6Iik7CisgICAgICAgIF9O
U19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aEludF8sCisgICAgICAgICAgICAibnVtYmVyV2l0
aEludDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoTG9uZ18sCisg
ICAgICAgICAgICAibnVtYmVyV2l0aExvbmc6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwobnVtYmVyV2l0aExvbmdMb25nXywKKyAgICAgICAgICAgICJudW1iZXJXaXRoTG9uZ0xvbmc6
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwobnVtYmVyV2l0aFNob3J0XywKKyAgICAg
ICAgICAgICJudW1iZXJXaXRoU2hvcnQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwo
bnVtYmVyV2l0aFVuc2lnbmVkQ2hhcl8sCisgICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVk
Q2hhcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoVW5zaWduZWRJ
bnRfLAorICAgICAgICAgICAgIm51bWJlcldpdGhVbnNpZ25lZEludDoiKTsKKyAgICAgICAgX05T
X1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoVW5zaWduZWRMb25nXywKKyAgICAgICAgICAgICJu
dW1iZXJXaXRoVW5zaWduZWRMb25nOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG51
bWJlcldpdGhVbnNpZ25lZExvbmdMb25nXywKKyAgICAgICAgICAgICJudW1iZXJXaXRoVW5zaWdu
ZWRMb25nTG9uZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChudW1iZXJXaXRoVW5z
aWduZWRTaG9ydF8sCisgICAgICAgICAgICAibnVtYmVyV2l0aFVuc2lnbmVkU2hvcnQ6Iik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob2JqQ1R5cGUsCisgICAgICAgICAgICAib2JqQ1R5
cGUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChvYmplY3QsCisgICAgICAgICAgICAi
b2JqZWN0Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob2JqZWN0QXRJbmRleF8sCisg
ICAgICAgICAgICAib2JqZWN0QXRJbmRleDoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChvYmplY3RGb3JJbmZvRGljdGlvbmFyeUtleV8sCisgICAgICAgICAgICAib2JqZWN0Rm9ySW5m
b0RpY3Rpb25hcnlLZXk6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwob2JqZWN0Rm9y
S2V5XywKKyAgICAgICAgICAgICJvYmplY3RGb3JLZXk6Iik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwob3BlcmF0aW5nU3lzdGVtLAorICAgICAgICAgICAgIm9wZXJhdGluZ1N5c3RlbSIp
OworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKG9wZXJhdGluZ1N5c3RlbVZlcnNpb24sCisg
ICAgICAgICAgICAib3BlcmF0aW5nU3lzdGVtVmVyc2lvbiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKG9wZXJhdGluZ1N5c3RlbVZlcnNpb25TdHJpbmcsCisgICAgICAgICAgICAib3Bl
cmF0aW5nU3lzdGVtVmVyc2lvblN0cmluZyIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlXywKKyAgICAgICAgICAgICJwYXRoRm9yQXV4aWxp
YXJ5RXhlY3V0YWJsZToiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChwZXJmb3JtQWN0
aXZpdHlXaXRoT3B0aW9uc19yZWFzb25fdXNpbmdCbG9ja18sCisgICAgICAgICAgICAicGVyZm9y
bUFjdGl2aXR5V2l0aE9wdGlvbnM6cmVhc29uOnVzaW5nQmxvY2s6Iik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwocGVyZm9ybUV4cGlyaW5nQWN0aXZpdHlXaXRoUmVhc29uX3VzaW5nQmxv
Y2tfLAorICAgICAgICAgICAgInBlcmZvcm1FeHBpcmluZ0FjdGl2aXR5V2l0aFJlYXNvbjp1c2lu
Z0Jsb2NrOiIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHBoeXNpY2FsTWVtb3J5LAor
ICAgICAgICAgICAgInBoeXNpY2FsTWVtb3J5Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9T
RUwocG9pbnRlclZhbHVlLAorICAgICAgICAgICAgInBvaW50ZXJWYWx1ZSIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKHByZWZsaWdodEFuZFJldHVybkVycm9yXywKKyAgICAgICAgICAg
ICJwcmVmbGlnaHRBbmRSZXR1cm5FcnJvcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TChwcml2YXRlRnJhbWV3b3Jrc1BhdGgsCisgICAgICAgICAgICAicHJpdmF0ZUZyYW1ld29ya3NQ
YXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJpdmF0ZUZyYW1ld29ya3NVUkws
CisgICAgICAgICAgICAicHJpdmF0ZUZyYW1ld29ya3NVUkwiKTsKKyAgICAgICAgX05TX1BSSVZB
VEVfREVGX1NFTChwcm9jZXNzSWRlbnRpZmllciwKKyAgICAgICAgICAgICJwcm9jZXNzSWRlbnRp
ZmllciIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHByb2Nlc3NJbmZvLAorICAgICAg
ICAgICAgInByb2Nlc3NJbmZvIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwocHJvY2Vz
c05hbWUsCisgICAgICAgICAgICAicHJvY2Vzc05hbWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChwcm9jZXNzb3JDb3VudCwKKyAgICAgICAgICAgICJwcm9jZXNzb3JDb3VudCIpOwor
ICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHJhbmdlT2ZTdHJpbmdfb3B0aW9uc18sCisgICAg
ICAgICAgICAicmFuZ2VPZlN0cmluZzpvcHRpb25zOiIpOworICAgICAgICBfTlNfUFJJVkFURV9E
RUZfU0VMKHJlbGVhc2UsCisgICAgICAgICAgICAicmVsZWFzZSIpOworICAgICAgICBfTlNfUFJJ
VkFURV9ERUZfU0VMKHJlc291cmNlUGF0aCwKKyAgICAgICAgICAgICJyZXNvdXJjZVBhdGgiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChyZXNvdXJjZVVSTCwKKyAgICAgICAgICAgICJy
ZXNvdXJjZVVSTCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHJlc3BvbmRzVG9TZWxl
Y3Rvcl8sCisgICAgICAgICAgICAicmVzcG9uZHNUb1NlbGVjdG9yOiIpOworICAgICAgICBfTlNf
UFJJVkFURV9ERUZfU0VMKHJldGFpbiwKKyAgICAgICAgICAgICJyZXRhaW4iKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChyZXRhaW5Db3VudCwKKyAgICAgICAgICAgICJyZXRhaW5Db3Vu
dCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHNldEF1dG9tYXRpY1Rlcm1pbmF0aW9u
U3VwcG9ydEVuYWJsZWRfLAorICAgICAgICAgICAgInNldEF1dG9tYXRpY1Rlcm1pbmF0aW9uU3Vw
cG9ydEVuYWJsZWQ6Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2V0UHJvY2Vzc05h
bWVfLAorICAgICAgICAgICAgInNldFByb2Nlc3NOYW1lOiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKHNoYXJlZEZyYW1ld29ya3NQYXRoLAorICAgICAgICAgICAgInNoYXJlZEZyYW1l
d29ya3NQYXRoIik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2hhcmVkRnJhbWV3b3Jr
c1VSTCwKKyAgICAgICAgICAgICJzaGFyZWRGcmFtZXdvcmtzVVJMIik7CisgICAgICAgIF9OU19Q
UklWQVRFX0RFRl9TRUwoc2hhcmVkU3VwcG9ydFBhdGgsCisgICAgICAgICAgICAic2hhcmVkU3Vw
cG9ydFBhdGgiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzaGFyZWRTdXBwb3J0VVJM
LAorICAgICAgICAgICAgInNoYXJlZFN1cHBvcnRVUkwiKTsKKyAgICAgICAgX05TX1BSSVZBVEVf
REVGX1NFTChzaG9ydFZhbHVlLAorICAgICAgICAgICAgInNob3J0VmFsdWUiKTsKKyAgICAgICAg
X05TX1BSSVZBVEVfREVGX1NFTChzaG93UG9vbHMsCisgICAgICAgICAgICAic2hvd1Bvb2xzIik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwoc2lnbmFsLAorICAgICAgICAgICAgInNpZ25h
bCIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHN0cmluZywKKyAgICAgICAgICAgICJz
dHJpbmciKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzdHJpbmdWYWx1ZSwKKyAgICAg
ICAgICAgICJzdHJpbmdWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHN0cmlu
Z1dpdGhTdHJpbmdfLAorICAgICAgICAgICAgInN0cmluZ1dpdGhTdHJpbmc6Iik7CisgICAgICAg
IF9OU19QUklWQVRFX0RFRl9TRUwoc3RyaW5nV2l0aENTdHJpbmdfZW5jb2RpbmdfLAorICAgICAg
ICAgICAgInN0cmluZ1dpdGhDU3RyaW5nOmVuY29kaW5nOiIpOworICAgICAgICBfTlNfUFJJVkFU
RV9ERUZfU0VMKHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nXywKKyAgICAgICAgICAgICJzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChzeXN0ZW1V
cHRpbWUsCisgICAgICAgICAgICAic3lzdGVtVXB0aW1lIik7CisgICAgICAgIF9OU19QUklWQVRF
X0RFRl9TRUwodGhlcm1hbFN0YXRlLAorICAgICAgICAgICAgInRoZXJtYWxTdGF0ZSIpOworICAg
ICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVubG9hZCwKKyAgICAgICAgICAgICJ1bmxvYWQiKTsK
KyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh1bmxvY2ssCisgICAgICAgICAgICAidW5sb2Nr
Iik7CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodW5zaWduZWRDaGFyVmFsdWUsCisgICAg
ICAgICAgICAidW5zaWduZWRDaGFyVmFsdWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NF
TCh1bnNpZ25lZEludGVnZXJWYWx1ZSwKKyAgICAgICAgICAgICJ1bnNpZ25lZEludGVnZXJWYWx1
ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VMKHVuc2lnbmVkSW50VmFsdWUsCisgICAg
ICAgICAgICAidW5zaWduZWRJbnRWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZfU0VM
KHVuc2lnbmVkTG9uZ1ZhbHVlLAorICAgICAgICAgICAgInVuc2lnbmVkTG9uZ1ZhbHVlIik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodW5zaWduZWRMb25nTG9uZ1ZhbHVlLAorICAgICAg
ICAgICAgInVuc2lnbmVkTG9uZ0xvbmdWYWx1ZSIpOworICAgICAgICBfTlNfUFJJVkFURV9ERUZf
U0VMKHVuc2lnbmVkU2hvcnRWYWx1ZSwKKyAgICAgICAgICAgICJ1bnNpZ25lZFNob3J0VmFsdWUi
KTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChVUkxGb3JBdXhpbGlhcnlFeGVjdXRhYmxl
XywKKyAgICAgICAgICAgICJVUkxGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOiIpOworICAgICAgICBf
TlNfUFJJVkFURV9ERUZfU0VMKHVzZXJJbmZvLAorICAgICAgICAgICAgInVzZXJJbmZvIik7Cisg
ICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodXNlck5hbWUsCisgICAgICAgICAgICAidXNlck5h
bWUiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTChVVEY4U3RyaW5nLAorICAgICAgICAg
ICAgIlVURjhTdHJpbmciKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh2YWx1ZVdpdGhC
eXRlc19vYmpDVHlwZV8sCisgICAgICAgICAgICAidmFsdWVXaXRoQnl0ZXM6b2JqQ1R5cGU6Iik7
CisgICAgICAgIF9OU19QUklWQVRFX0RFRl9TRUwodmFsdWVXaXRoUG9pbnRlcl8sCisgICAgICAg
ICAgICAidmFsdWVXaXRoUG9pbnRlcjoiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh3
YWl0LAorICAgICAgICAgICAgIndhaXQiKTsKKyAgICAgICAgX05TX1BSSVZBVEVfREVGX1NFTCh3
YWl0VW50aWxEYXRlXywKKyAgICAgICAgICAgICJ3YWl0VW50aWxEYXRlOiIpOworICAgIH0gLy8g
Q2xhc3MKK30gLy8gUHJpdmF0ZQorfSAvLyBNVEwKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvRm91bmRhdGlvbi9OU1Byb2Nlc3NJbmZvLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUHJvY2Vzc0luZm8uaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4
ZTMxNDdmZThhN2M2OGQyZmFjYzNhNmVkNDc3ZjY3NTFlZTVkZTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1Byb2Nlc3NJbmZv
LmhwcApAQCAtMCwwICsxLDM1NCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU1Byb2Nlc3NJbmZvLmhwcAorLy8KKy8v
IENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJOU0RlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk5TTm90aWZpY2F0aW9uLmhwcCIKKyNpbmNsdWRlICJOU09iamVjdC5o
cHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhwcCIKKyNpbmNsdWRlICJOU1R5cGVzLmhwcCIKKwor
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTlMKK3sKK19OU19DT05TVChOb3RpZmljYXRpb25O
YW1lLCBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbik7CitfTlNf
Q09OU1QoTm90aWZpY2F0aW9uTmFtZSwgUHJvY2Vzc0luZm9Qb3dlclN0YXRlRGlkQ2hhbmdlTm90
aWZpY2F0aW9uKTsKKworX05TX0VOVU0oTlM6OkludGVnZXIsIFByb2Nlc3NJbmZvVGhlcm1hbFN0
YXRlKSB7CisgICAgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVOb21pbmFsID0gMCwKKyAgICBQcm9j
ZXNzSW5mb1RoZXJtYWxTdGF0ZUZhaXIgPSAxLAorICAgIFByb2Nlc3NJbmZvVGhlcm1hbFN0YXRl
U2VyaW91cyA9IDIsCisgICAgUHJvY2Vzc0luZm9UaGVybWFsU3RhdGVDcml0aWNhbCA9IDMKK307
CisKK19OU19PUFRJT05TKHN0ZDo6dWludDY0X3QsIEFjdGl2aXR5T3B0aW9ucykgeworICAgIEFj
dGl2aXR5SWRsZURpc3BsYXlTbGVlcERpc2FibGVkID0gKDFVTEwgPDwgNDApLAorICAgIEFjdGl2
aXR5SWRsZVN5c3RlbVNsZWVwRGlzYWJsZWQgPSAoMVVMTCA8PCAyMCksCisgICAgQWN0aXZpdHlT
dWRkZW5UZXJtaW5hdGlvbkRpc2FibGVkID0gKDFVTEwgPDwgMTQpLAorICAgIEFjdGl2aXR5QXV0
b21hdGljVGVybWluYXRpb25EaXNhYmxlZCA9ICgxVUxMIDw8IDE1KSwKKyAgICBBY3Rpdml0eVVz
ZXJJbml0aWF0ZWQgPSAoMHgwMEZGRkZGRlVMTCB8IEFjdGl2aXR5SWRsZVN5c3RlbVNsZWVwRGlz
YWJsZWQpLAorICAgIEFjdGl2aXR5VXNlckluaXRpYXRlZEFsbG93aW5nSWRsZVN5c3RlbVNsZWVw
ID0gKEFjdGl2aXR5VXNlckluaXRpYXRlZCAmIH5BY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2Fi
bGVkKSwKKyAgICBBY3Rpdml0eUJhY2tncm91bmQgPSAweDAwMDAwMEZGVUxMLAorICAgIEFjdGl2
aXR5TGF0ZW5jeUNyaXRpY2FsID0gMHhGRjAwMDAwMDAwVUxMLAorfTsKKworY2xhc3MgUHJvY2Vz
c0luZm8gOiBwdWJsaWMgUmVmZXJlbmNpbmc8UHJvY2Vzc0luZm8+Cit7CitwdWJsaWM6CisgICAg
c3RhdGljIFByb2Nlc3NJbmZvKiAgICAgcHJvY2Vzc0luZm8oKTsKKworICAgIGNsYXNzIEFycmF5
KiAgICAgICAgICAgIGFyZ3VtZW50cygpIGNvbnN0OworICAgIGNsYXNzIERpY3Rpb25hcnkqICAg
ICAgIGVudmlyb25tZW50KCkgY29uc3Q7CisgICAgY2xhc3MgU3RyaW5nKiAgICAgICAgICAgaG9z
dE5hbWUoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBwcm9jZXNzTmFtZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIHNldFByb2Nlc3NOYW1lKGNvbnN0
IFN0cmluZyogcFN0cmluZyk7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0lk
ZW50aWZpZXIoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBnbG9iYWxseVVu
aXF1ZVN0cmluZygpIGNvbnN0OworCisgICAgY2xhc3MgU3RyaW5nKiAgICAgICAgICAgdXNlck5h
bWUoKSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBmdWxsVXNlck5hbWUoKSBj
b25zdDsKKworICAgIFVJbnRlZ2VyICAgICAgICAgICAgICAgIG9wZXJhdGluZ1N5c3RlbSgpIGNv
bnN0OworICAgIE9wZXJhdGluZ1N5c3RlbVZlcnNpb24gIG9wZXJhdGluZ1N5c3RlbVZlcnNpb24o
KSBjb25zdDsKKyAgICBjbGFzcyBTdHJpbmcqICAgICAgICAgICBvcGVyYXRpbmdTeXN0ZW1WZXJz
aW9uU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgaXNPcGVyYXRp
bmdTeXN0ZW1BdExlYXN0VmVyc2lvbihPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIHZlcnNpb24pIGNv
bnN0OworCisgICAgVUludGVnZXIgICAgICAgICAgICAgICAgcHJvY2Vzc29yQ291bnQoKSBjb25z
dDsKKyAgICBVSW50ZWdlciAgICAgICAgICAgICAgICBhY3RpdmVQcm9jZXNzb3JDb3VudCgpIGNv
bnN0OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAgICAgIHBoeXNpY2FsTWVtb3J5KCkgY29uc3Q7
CisgICAgVGltZUludGVydmFsICAgICAgICAgICAgc3lzdGVtVXB0aW1lKCkgY29uc3Q7CisKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICBkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKTsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICBlbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpOworCisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uKGNv
bnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbik7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ZW5hYmxlQXV0b21hdGljVGVybWluYXRpb24oY29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uKTsK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRF
bmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgc2V0QXV0b21hdGlj
VGVybWluYXRpb25TdXBwb3J0RW5hYmxlZChib29sIGVuYWJsZWQpOworCisgICAgY2xhc3MgT2Jq
ZWN0KiAgICAgICAgICAgYmVnaW5BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywgY29u
c3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uKTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBl
bmRBY3Rpdml0eShjbGFzcyBPYmplY3QqIHBBY3Rpdml0eSk7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgcGVyZm9ybUFjdGl2aXR5KEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zLCBjb25zdCBj
bGFzcyBTdHJpbmcqIHBSZWFzb24sIHZvaWQgKF5ibG9jaykodm9pZCkpOworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgIHBlcmZvcm1BY3Rpdml0eShBY3Rpdml0eU9wdGlvbnMgb3B0aW9ucywg
Y29uc3QgY2xhc3MgU3RyaW5nKiBwUmVhc29uLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4m
IGZ1bmMpOworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1FeHBpcmluZ0FjdGl2
aXR5KGNvbnN0IGNsYXNzIFN0cmluZyogcFJlYXNvbiwgdm9pZCAoXmJsb2NrKShib29sIGV4cGly
ZWQpKTsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICBwZXJmb3JtRXhwaXJpbmdBY3Rpdml0
eShjb25zdCBjbGFzcyBTdHJpbmcqIHBSZWFzb24sIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChi
b29sIGV4cGlyZWQpPiYgZnVuYyk7CisKKyAgICBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZSB0aGVy
bWFsU3RhdGUoKSBjb25zdDsKKyAgICBib29sICAgICAgICAgICAgICAgICAgICBpc0xvd1Bvd2Vy
TW9kZUVuYWJsZWQoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGlzaU9T
QXBwT25NYWMoKSBjb25zdDsKKyAgICBib29sICAgICAgICAgICAgICAgICAgICBpc01hY0NhdGFs
eXN0QXBwKCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworX05TX1BSSVZBVEVfREVGX0NPTlNUKE5TOjpOb3RpZmljYXRpb25O
YW1lLCBQcm9jZXNzSW5mb1RoZXJtYWxTdGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbik7CitfTlNf
UFJJVkFURV9ERUZfQ09OU1QoTlM6Ok5vdGlmaWNhdGlvbk5hbWUsIFByb2Nlc3NJbmZvUG93ZXJT
dGF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbik7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpQcm9jZXNzSW5mbyogTlM6OlBy
b2Nlc3NJbmZvOjpwcm9jZXNzSW5mbygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8UHJvY2Vzc0luZm8qPihfTlNfUFJJVkFURV9DTFMoTlNQcm9jZXNzSW5mbyksIF9OU19QUklW
QVRFX1NFTChwcm9jZXNzSW5mbykpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6QXJyYXkqIE5TOjpQcm9jZXNzSW5m
bzo6YXJndW1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxB
cnJheSo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChhcmd1bWVudHMpKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OkRp
Y3Rpb25hcnkqIE5TOjpQcm9jZXNzSW5mbzo6ZW52aXJvbm1lbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPERpY3Rpb25hcnkqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoZW52aXJvbm1lbnQpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZvOjpo
b3N0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5n
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGhvc3ROYW1lKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcq
IE5TOjpQcm9jZXNzSW5mbzo6cHJvY2Vzc05hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRoaXMsIF9OU19QUklWQVRFX1NFTChwcm9jZXNzTmFt
ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6c2V0UHJvY2Vzc05hbWUoY29uc3Qg
U3RyaW5nKiBwU3RyaW5nKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X05TX1BSSVZBVEVfU0VMKHNldFByb2Nlc3NOYW1lXyksIHBTdHJpbmcpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBpbnQg
TlM6OlByb2Nlc3NJbmZvOjpwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8aW50Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc0lk
ZW50aWZpZXIpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZvOjpnbG9iYWxs
eVVuaXF1ZVN0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
U3RyaW5nKj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGdsb2JhbGx5VW5pcXVlU3RyaW5nKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpQcm9jZXNzSW5mbzo6dXNlck5hbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJ
VkFURV9TRUwodXNlck5hbWUpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0cmluZyogTlM6OlByb2Nlc3NJbmZv
OjpmdWxsVXNlck5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
U2FmZTxTdHJpbmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZnVsbFVzZXJOYW1lKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIE5TOjpVSW50ZWdlciBOUzo6UHJvY2Vzc0luZm86Om9wZXJhdGluZ1N5c3RlbSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVnZXI+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChvcGVyYXRpbmdTeXN0ZW0pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok9wZXJhdGluZ1N5c3Rl
bVZlcnNpb24gTlM6OlByb2Nlc3NJbmZvOjpvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxPcGVyYXRpbmdTeXN0ZW1WZXJzaW9u
Pih0aGlzLCBfTlNfUFJJVkFURV9TRUwob3BlcmF0aW5nU3lzdGVtVmVyc2lvbikpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6U3RyaW5nKiBOUzo6UHJvY2Vzc0luZm86Om9wZXJhdGluZ1N5c3RlbVZlcnNpb25TdHJp
bmcoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KHRo
aXMsIF9OU19QUklWQVRFX1NFTChvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uU3RyaW5nKSk7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5M
SU5FIGJvb2wgTlM6OlByb2Nlc3NJbmZvOjppc09wZXJhdGluZ1N5c3RlbUF0TGVhc3RWZXJzaW9u
KE9wZXJhdGluZ1N5c3RlbVZlcnNpb24gdmVyc2lvbikgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoaXNPcGVyYXRpbmdT
eXN0ZW1BdExlYXN0VmVyc2lvbl8pLCB2ZXJzaW9uKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5T
OjpQcm9jZXNzSW5mbzo6cHJvY2Vzc29yQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocHJvY2Vzc29y
Q291bnQpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpQcm9jZXNzSW5mbzo6YWN0aXZlUHJv
Y2Vzc29yQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJ
bnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoYWN0aXZlUHJvY2Vzc29yQ291bnQpKTsKK30K
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19J
TkxJTkUgdW5zaWduZWQgbG9uZyBsb25nIE5TOjpQcm9jZXNzSW5mbzo6cGh5c2ljYWxNZW1vcnko
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVuc2lnbmVkIGxvbmcg
bG9uZz4odGhpcywgX05TX1BSSVZBVEVfU0VMKHBoeXNpY2FsTWVtb3J5KSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpUaW1lSW50ZXJ2YWwgTlM6OlByb2Nlc3NJbmZvOjpzeXN0ZW1VcHRpbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFRpbWVJbnRlcnZhbD4odGhpcywgX05TX1BS
SVZBVEVfU0VMKHN5c3RlbVVwdGltZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6
ZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlU2Fm
ZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKSk7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitf
TlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZvOjplbmFibGVTdWRkZW5UZXJtaW5hdGlvbigp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05TX1BSSVZBVEVf
U0VMKGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJ
bmZvOjpkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb24oY29uc3QgU3RyaW5nKiBwUmVhc29uKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPHZvaWQ+KHRoaXMsIF9OU19QUklWQVRFX1NF
TChkaXNhYmxlQXV0b21hdGljVGVybWluYXRpb25fKSwgcFJlYXNvbik7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQg
TlM6OlByb2Nlc3NJbmZvOjplbmFibGVBdXRvbWF0aWNUZXJtaW5hdGlvbihjb25zdCBTdHJpbmcq
IHBSZWFzb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8dm9pZD4odGhpcywgX05T
X1BSSVZBVEVfU0VMKGVuYWJsZUF1dG9tYXRpY1Rlcm1pbmF0aW9uXyksIHBSZWFzb24pOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBib29sIE5TOjpQcm9jZXNzSW5mbzo6YXV0b21hdGljVGVybWluYXRpb25TdXBwb3J0RW5h
YmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChhdXRvbWF0aWNUZXJtaW5hdGlvblN1cHBvcnRFbmFibGVk
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZvOjpzZXRBdXRvbWF0aWNUZXJtaW5hdGlv
blN1cHBvcnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
U2FmZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc2V0QXV0b21hdGljVGVybWluYXRpb25T
dXBwb3J0RW5hYmxlZF8pLCBlbmFibGVkKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6Ok9iamVjdCogTlM6OlByb2Nl
c3NJbmZvOjpiZWdpbkFjdGl2aXR5KEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zLCBjb25zdCBTdHJp
bmcqIHBSZWFzb24pCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8T2JqZWN0Kj4o
dGhpcywgX05TX1BSSVZBVEVfU0VMKGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uc19yZWFzb25fKSwg
b3B0aW9ucywgcFJlYXNvbik7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIHZvaWQgTlM6OlByb2Nlc3NJbmZvOjplbmRBY3Rp
dml0eShPYmplY3QqIHBBY3Rpdml0eSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9OU19QUklWQVRFX1NFTChlbmRBY3Rpdml0eV8pLCBwQWN0aXZpdHkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6cGVyZm9ybUFjdGl2aXR5KEFjdGl2aXR5T3B0aW9ucyBv
cHRpb25zLCBjb25zdCBTdHJpbmcqIHBSZWFzb24sIHZvaWQgKF5ibG9jaykodm9pZCkpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocGVyZm9y
bUFjdGl2aXR5V2l0aE9wdGlvbnNfcmVhc29uX3VzaW5nQmxvY2tfKSwgb3B0aW9ucywgcFJlYXNv
biwgYmxvY2spOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6cGVyZm9ybUFjdGl2aXR5
KEFjdGl2aXR5T3B0aW9ucyBvcHRpb25zLCBjb25zdCBTdHJpbmcqIHBSZWFzb24sIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgX19ibG9jayBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gYmxvY2tGdW5jdGlvbiA9IGZ1bmN0aW9uOworCisgICAgcGVyZm9ybUFjdGl2
aXR5KG9wdGlvbnMsIHBSZWFzb24sIF4oKSB7IGJsb2NrRnVuY3Rpb24oKTsgfSk7Cit9CisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IHZvaWQgTlM6OlByb2Nlc3NJbmZvOjpwZXJmb3JtRXhwaXJpbmdBY3Rpdml0eShjb25zdCBTdHJp
bmcqIHBSZWFzb24sIHZvaWQgKF5ibG9jaykoYm9vbCBleHBpcmVkKSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlU2FmZTx2b2lkPih0aGlzLCBfTlNfUFJJVkFURV9TRUwocGVyZm9ybUV4cGly
aW5nQWN0aXZpdHlXaXRoUmVhc29uX3VzaW5nQmxvY2tfKSwgcFJlYXNvbiwgYmxvY2spOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSB2b2lkIE5TOjpQcm9jZXNzSW5mbzo6cGVyZm9ybUV4cGlyaW5nQWN0aXZpdHkoY29uc3Qg
U3RyaW5nKiBwUmVhc29uLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCBleHBpcmVkKT4m
IGZ1bmN0aW9uKQoreworICAgIF9fYmxvY2sgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wgZXhwaXJl
ZCk+IGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIHBlcmZvcm1FeHBpcmluZ0FjdGl2
aXR5KHBSZWFzb24sIF4oYm9vbCBleHBpcmVkKSB7IGJsb2NrRnVuY3Rpb24oZXhwaXJlZCk7IH0p
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X05TX0lOTElORSBOUzo6UHJvY2Vzc0luZm9UaGVybWFsU3RhdGUgTlM6OlByb2Nlc3NJbmZvOjp0
aGVybWFsU3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFBy
b2Nlc3NJbmZvVGhlcm1hbFN0YXRlPih0aGlzLCBfTlNfUFJJVkFURV9TRUwodGhlcm1hbFN0YXRl
KSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitfTlNfSU5MSU5FIGJvb2wgTlM6OlByb2Nlc3NJbmZvOjppc0xvd1Bvd2VyTW9kZUVuYWJsZWQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaXNMb3dQb3dlck1vZGVFbmFibGVkKSk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wg
TlM6OlByb2Nlc3NJbmZvOjppc2lPU0FwcE9uTWFjKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzaU9TQXBw
T25NYWMpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK19OU19JTkxJTkUgYm9vbCBOUzo6UHJvY2Vzc0luZm86OmlzTWFjQ2F0YWx5c3RBcHAo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaXNNYWNDYXRhbHlzdEFwcCkpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUmFuZ2UuaHBwIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNSYW5nZS5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI0
NjdkNjBjZWUzM2FiMjhiMDgxZTBkMmRkNTM3Mjg3NjViMGE4YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9Gb3VuZGF0aW9uL05TUmFuZ2UuaHBwCkBA
IC0wLDAgKzEsODMgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNSYW5nZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAy
MC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNpbmNsdWRl
ICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK25hbWVzcGFjZSBOUworeworc3RydWN0IFJhbmdlCit7CisgICAgc3RhdGljIFJh
bmdlIE1ha2UoVUludGVnZXIgbG9jLCBVSW50ZWdlciBsZW4pOworCisgICAgUmFuZ2UoVUludGVn
ZXIgbG9jLCBVSW50ZWdlciBsZW4pOworCisgICAgYm9vbCAgICAgRXF1YWwoY29uc3QgUmFuZ2Um
IHJhbmdlKSBjb25zdDsKKyAgICBib29sICAgICBMb2NhdGlvbkluUmFuZ2UoVUludGVnZXIgbG9j
KSBjb25zdDsKKyAgICBVSW50ZWdlciBNYXgoKSBjb25zdDsKKworICAgIFVJbnRlZ2VyIGxvY2F0
aW9uOworICAgIFVJbnRlZ2VyIGxlbmd0aDsKK30gX05TX1BBQ0tFRDsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlJh
bmdlOjpSYW5nZShVSW50ZWdlciBsb2MsIFVJbnRlZ2VyIGxlbikKKyAgICA6IGxvY2F0aW9uKGxv
YykKKyAgICAsIGxlbmd0aChsZW4pCit7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpSYW5nZSBOUzo6UmFuZ2U6Ok1h
a2UoVUludGVnZXIgbG9jLCBVSW50ZWdlciBsZW4pCit7CisgICAgcmV0dXJuIFJhbmdlKGxvYywg
bGVuKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgYm9vbCBOUzo6UmFuZ2U6OkVxdWFsKGNvbnN0IFJhbmdlJiByYW5nZSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKGxvY2F0aW9uID09IHJhbmdlLmxvY2F0aW9uKSAmJiAobGVu
Z3RoID09IHJhbmdlLmxlbmd0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlJhbmdlOjpMb2NhdGlvbklu
UmFuZ2UoVUludGVnZXIgbG9jKSBjb25zdAoreworICAgIHJldHVybiAoIShsb2MgPCBsb2NhdGlv
bikpICYmICgobG9jIC0gbG9jYXRpb24pIDwgbGVuZ3RoKTsKK30KKworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2Vy
IE5TOjpSYW5nZTo6TWF4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbG9jYXRpb24gKyBsZW5ndGg7
Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNTdHJp
bmcuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNTdHJp
bmcuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgyOWRlY2I5MDFmNzM1ZTE0ZTg3ZjBlYmU4ZmQ5MTdhYTRlMDJm
OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91
bmRhdGlvbi9OU1N0cmluZy5ocHAKQEAgLTAsMCArMSwyNDUgQEAKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIEZvdW5kYXRpb24vTlNTdHJpbmcu
aHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUg
Ik5TRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIk5TUHJp
dmF0ZS5ocHAiCisjaW5jbHVkZSAiTlNSYW5nZS5ocHAiCisjaW5jbHVkZSAiTlNUeXBlcy5ocHAi
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1l
c3BhY2UgTlMKK3sKK19OU19FTlVNKE5TOjpVSW50ZWdlciwgU3RyaW5nRW5jb2RpbmcpIHsKKyAg
ICBBU0NJSVN0cmluZ0VuY29kaW5nID0gMSwKKyAgICBORVhUU1RFUFN0cmluZ0VuY29kaW5nID0g
MiwKKyAgICBKYXBhbmVzZUVVQ1N0cmluZ0VuY29kaW5nID0gMywKKyAgICBVVEY4U3RyaW5nRW5j
b2RpbmcgPSA0LAorICAgIElTT0xhdGluMVN0cmluZ0VuY29kaW5nID0gNSwKKyAgICBTeW1ib2xT
dHJpbmdFbmNvZGluZyA9IDYsCisgICAgTm9uTG9zc3lBU0NJSVN0cmluZ0VuY29kaW5nID0gNywK
KyAgICBTaGlmdEpJU1N0cmluZ0VuY29kaW5nID0gOCwKKyAgICBJU09MYXRpbjJTdHJpbmdFbmNv
ZGluZyA9IDksCisgICAgVW5pY29kZVN0cmluZ0VuY29kaW5nID0gMTAsCisgICAgV2luZG93c0NQ
MTI1MVN0cmluZ0VuY29kaW5nID0gMTEsCisgICAgV2luZG93c0NQMTI1MlN0cmluZ0VuY29kaW5n
ID0gMTIsCisgICAgV2luZG93c0NQMTI1M1N0cmluZ0VuY29kaW5nID0gMTMsCisgICAgV2luZG93
c0NQMTI1NFN0cmluZ0VuY29kaW5nID0gMTQsCisgICAgV2luZG93c0NQMTI1MFN0cmluZ0VuY29k
aW5nID0gMTUsCisgICAgSVNPMjAyMkpQU3RyaW5nRW5jb2RpbmcgPSAyMSwKKyAgICBNYWNPU1Jv
bWFuU3RyaW5nRW5jb2RpbmcgPSAzMCwKKworICAgIFVURjE2U3RyaW5nRW5jb2RpbmcgPSBVbmlj
b2RlU3RyaW5nRW5jb2RpbmcsCisKKyAgICBVVEYxNkJpZ0VuZGlhblN0cmluZ0VuY29kaW5nID0g
MHg5MDAwMDEwMCwKKyAgICBVVEYxNkxpdHRsZUVuZGlhblN0cmluZ0VuY29kaW5nID0gMHg5NDAw
MDEwMCwKKworICAgIFVURjMyU3RyaW5nRW5jb2RpbmcgPSAweDhjMDAwMTAwLAorICAgIFVURjMy
QmlnRW5kaWFuU3RyaW5nRW5jb2RpbmcgPSAweDk4MDAwMTAwLAorICAgIFVURjMyTGl0dGxlRW5k
aWFuU3RyaW5nRW5jb2RpbmcgPSAweDljMDAwMTAwCit9OworCitfTlNfT1BUSU9OUyhOUzo6VUlu
dGVnZXIsIFN0cmluZ0NvbXBhcmVPcHRpb25zKSB7CisgICAgQ2FzZUluc2Vuc2l0aXZlU2VhcmNo
ID0gMSwKKyAgICBMaXRlcmFsU2VhcmNoID0gMiwKKyAgICBCYWNrd2FyZHNTZWFyY2ggPSA0LAor
ICAgIEFuY2hvcmVkU2VhcmNoID0gOCwKKyAgICBOdW1lcmljU2VhcmNoID0gNjQsCisgICAgRGlh
Y3JpdGljSW5zZW5zaXRpdmVTZWFyY2ggPSAxMjgsCisgICAgV2lkdGhJbnNlbnNpdGl2ZVNlYXJj
aCA9IDI1NiwKKyAgICBGb3JjZWRPcmRlcmluZ1NlYXJjaCA9IDUxMiwKKyAgICBSZWd1bGFyRXhw
cmVzc2lvblNlYXJjaCA9IDEwMjQKK307CisKK3VzaW5nIHVuaWNoYXIgPSB1bnNpZ25lZCBzaG9y
dDsKKworY2xhc3MgU3RyaW5nIDogcHVibGljIENvcHlpbmc8U3RyaW5nPgoreworcHVibGljOgor
ICAgIHN0YXRpYyBTdHJpbmcqIHN0cmluZygpOworICAgIHN0YXRpYyBTdHJpbmcqIHN0cmluZyhj
b25zdCBTdHJpbmcqIHBTdHJpbmcpOworICAgIHN0YXRpYyBTdHJpbmcqIHN0cmluZyhjb25zdCBj
aGFyKiBwU3RyaW5nLCBTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7CisKKyAgICBzdGF0aWMgU3Ry
aW5nKiBhbGxvYygpOworICAgIFN0cmluZyogICAgICAgIGluaXQoKTsKKyAgICBTdHJpbmcqICAg
ICAgICBpbml0KGNvbnN0IFN0cmluZyogcFN0cmluZyk7CisgICAgU3RyaW5nKiAgICAgICAgaW5p
dChjb25zdCBjaGFyKiBwU3RyaW5nLCBTdHJpbmdFbmNvZGluZyBlbmNvZGluZyk7CisgICAgU3Ry
aW5nKiAgICAgICAgaW5pdCh2b2lkKiBwQnl0ZXMsIFVJbnRlZ2VyIGxlbiwgU3RyaW5nRW5jb2Rp
bmcgZW5jb2RpbmcsIGJvb2wgZnJlZUJ1ZmZlcik7CisKKyAgICB1bmljaGFyICAgICAgICBjaGFy
YWN0ZXIoVUludGVnZXIgaW5kZXgpIGNvbnN0OworICAgIFVJbnRlZ2VyICAgICAgIGxlbmd0aCgp
IGNvbnN0OworCisgICAgY29uc3QgY2hhciogICAgY1N0cmluZyhTdHJpbmdFbmNvZGluZyBlbmNv
ZGluZykgY29uc3Q7CisgICAgY29uc3QgY2hhciogICAgdXRmOFN0cmluZygpIGNvbnN0OworICAg
IFVJbnRlZ2VyICAgICAgIG1heGltdW1MZW5ndGhPZkJ5dGVzKFN0cmluZ0VuY29kaW5nIGVuY29k
aW5nKSBjb25zdDsKKyAgICBVSW50ZWdlciAgICAgICBsZW5ndGhPZkJ5dGVzKFN0cmluZ0VuY29k
aW5nIGVuY29kaW5nKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgIGlzRXF1YWxUb1N0cmlu
Zyhjb25zdCBTdHJpbmcqIHBTdHJpbmcpIGNvbnN0OworICAgIFJhbmdlICAgICAgICAgIHJhbmdl
T2ZTdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nLCBTdHJpbmdDb21wYXJlT3B0aW9ucyBvcHRp
b25zKSBjb25zdDsKKworICAgIGNvbnN0IGNoYXIqICAgIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigpIGNvbnN0OworCisgICAgU3RyaW5nKiAgICAgICAgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmco
Y29uc3QgU3RyaW5nKiBwU3RyaW5nKSBjb25zdDsKKworfTsKKwordGVtcGxhdGU8IHN0ZDo6c2l6
ZV90IF9TdHJpbmdMZW4gPgorY29uc3RleHByIGNvbnN0IFN0cmluZyogTWFrZUNvbnN0YW50U3Ry
aW5nKCBjb25zdCBjaGFyICggJnN0ciApW19TdHJpbmdMZW5dICkKK3sKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDwgY29uc3QgU3RyaW5nKiA+KCBfX0NGU3RyaW5nTWFrZUNvbnN0YW50U3Ry
aW5nKCBzdHIgKSApOworfQorCit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OnN0cmlu
ZygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4oX05TX1BSSVZB
VEVfQ0xTKE5TU3RyaW5nKSwgX05TX1BSSVZBVEVfU0VMKHN0cmluZykpOworfQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6
U3RyaW5nKiBOUzo6U3RyaW5nOjpzdHJpbmcoY29uc3QgU3RyaW5nKiBwU3RyaW5nKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFN0cmluZyo+KF9OU19QUklWQVRFX0NMUyhOU1N0
cmluZyksIF9OU19QUklWQVRFX1NFTChzdHJpbmdXaXRoU3RyaW5nXyksIHBTdHJpbmcpOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lO
TElORSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjpzdHJpbmcoY29uc3QgY2hhciogcFN0cmluZywg
U3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8U3RyaW5nKj4oX05TX1BSSVZBVEVfQ0xTKE5TU3RyaW5nKSwgX05TX1BSSVZBVEVfU0VMKHN0
cmluZ1dpdGhDU3RyaW5nX2VuY29kaW5nXyksIHBTdHJpbmcsIGVuY29kaW5nKTsKK30KKworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUg
TlM6OlN0cmluZyogTlM6OlN0cmluZzo6YWxsb2MoKQoreworICAgIHJldHVybiBPYmplY3Q6OmFs
bG9jPFN0cmluZz4oX05TX1BSSVZBVEVfQ0xTKE5TU3RyaW5nKSk7Cit9CisKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJp
bmcqIE5TOjpTdHJpbmc6OmluaXQoKQoreworICAgIHJldHVybiBPYmplY3Q6OmluaXQ8U3RyaW5n
PigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX05TX0lOTElORSBOUzo6U3RyaW5nKiBOUzo6U3RyaW5nOjppbml0KGNvbnN0IFN0cmluZyog
cFN0cmluZykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxTdHJpbmcqPih0aGlz
LCBfTlNfUFJJVkFURV9TRUwoaW5pdFdpdGhTdHJpbmdfKSwgcFN0cmluZyk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5T
OjpTdHJpbmcqIE5TOjpTdHJpbmc6OmluaXQoY29uc3QgY2hhciogcFN0cmluZywgU3RyaW5nRW5j
b2RpbmcgZW5jb2RpbmcpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5n
Kj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQ1N0cmluZ19lbmNvZGluZ18pLCBwU3Ry
aW5nLCBlbmNvZGluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpTdHJpbmcqIE5TOjpTdHJpbmc6OmluaXQodm9p
ZCogcEJ5dGVzLCBVSW50ZWdlciBsZW4sIFN0cmluZ0VuY29kaW5nIGVuY29kaW5nLCBib29sIGZy
ZWVCdWZmZXIpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8U3RyaW5nKj4odGhp
cywgX05TX1BSSVZBVEVfU0VMKGluaXRXaXRoQnl0ZXNOb0NvcHlfbGVuZ3RoX2VuY29kaW5nX2Zy
ZWVXaGVuRG9uZV8pLCBwQnl0ZXMsIGxlbiwgZW5jb2RpbmcsIGZyZWVCdWZmZXIpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBOUzo6dW5pY2hhciBOUzo6U3RyaW5nOjpjaGFyYWN0ZXIoVUludGVnZXIgaW5kZXgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dW5pY2hhcj4odGhpcywgX05TX1BS
SVZBVEVfU0VMKGNoYXJhY3RlckF0SW5kZXhfKSwgaW5kZXgpOworfQorCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VUludGVn
ZXIgTlM6OlN0cmluZzo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxVSW50ZWdlcj4odGhpcywgX05TX1BSSVZBVEVfU0VMKGxlbmd0aCkpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05TX0lOTElO
RSBjb25zdCBjaGFyKiBOUzo6U3RyaW5nOjpjU3RyaW5nKFN0cmluZ0VuY29kaW5nIGVuY29kaW5n
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGNvbnN0IGNoYXIqPih0
aGlzLCBfTlNfUFJJVkFURV9TRUwoY1N0cmluZ1VzaW5nRW5jb2RpbmdfKSwgZW5jb2RpbmcpOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX05T
X0lOTElORSBjb25zdCBjaGFyKiBOUzo6U3RyaW5nOjp1dGY4U3RyaW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxjb25zdCBjaGFyKj4odGhpcywgX05TX1BSSVZB
VEVfU0VMKFVURjhTdHJpbmcpKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVJbnRlZ2VyIE5TOjpTdHJpbmc6Om1h
eGltdW1MZW5ndGhPZkJ5dGVzKFN0cmluZ0VuY29kaW5nIGVuY29kaW5nKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPFVJbnRlZ2VyPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwobWF4aW11bUxlbmd0aE9mQnl0ZXNVc2luZ0VuY29kaW5nXyksIGVuY29kaW5nKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE5TOjpTdHJpbmc6Omxlbmd0aE9mQnl0ZXMoU3RyaW5nRW5jb2Rpbmcg
ZW5jb2RpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8VUludGVn
ZXI+KHRoaXMsIF9OU19QUklWQVRFX1NFTChsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZ18pLCBl
bmNvZGluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitfTlNfSU5MSU5FIGJvb2wgTlM6OlN0cmluZzo6aXNFcXVhbFRvU3RyaW5nKGNvbnN0
IE5TOjpTdHJpbmcqIHBTdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8Ym9vbD4odGhpcywgX05TX1BSSVZBVEVfU0VMKGlzRXF1YWxUb1N0cmluZ18pLCBwU3Ry
aW5nKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK19OU19JTkxJTkUgTlM6OlJhbmdlIE5TOjpTdHJpbmc6OnJhbmdlT2ZTdHJpbmcoY29uc3Qg
TlM6OlN0cmluZyogcFN0cmluZywgTlM6OlN0cmluZ0NvbXBhcmVPcHRpb25zIG9wdGlvbnMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8UmFuZ2U+KHRoaXMsIF9OU19Q
UklWQVRFX1NFTChyYW5nZU9mU3RyaW5nX29wdGlvbnNfKSwgcFN0cmluZywgb3B0aW9ucyk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5F
IGNvbnN0IGNoYXIqIE5TOjpTdHJpbmc6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Y29uc3QgY2hhcio+KHRoaXMsIF9O
U19QUklWQVRFX1NFTChmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlN0
cmluZyogTlM6OlN0cmluZzo6c3RyaW5nQnlBcHBlbmRpbmdTdHJpbmcoY29uc3QgU3RyaW5nKiBw
U3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJp
bmcqPih0aGlzLCBfTlNfUFJJVkFURV9TRUwoc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmdfKSwgcFN0
cmluZyk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24v
TlNUeXBlcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9O
U1R5cGVzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjhhZGExMmNlOGZiZmIzY2E5NmI4ZDU4NTYyMjQ2MTcx
OWU4N2U0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L0ZvdW5kYXRpb24vTlNUeXBlcy5ocHAKQEAgLTAsMCArMSw1MSBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU1R5cGVz
LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRl
ICJOU0RlZmluZXMuaHBwIgorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KKyNpbmNsdWRlIDxjc3RkaW50PgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE5TCit7Cit1c2luZyBUaW1lSW50ZXJ2YWwg
PSBkb3VibGU7CisKK3VzaW5nIEludGVnZXIgPSBzdGQ6OmludHB0cl90OwordXNpbmcgVUludGVn
ZXIgPSBzdGQ6OnVpbnRwdHJfdDsKKworY29uc3QgSW50ZWdlciAgSW50ZWdlck1heCA9IElOVFBU
Ul9NQVg7Citjb25zdCBJbnRlZ2VyICBJbnRlZ2VyTWluID0gSU5UUFRSX01JTjsKK2NvbnN0IFVJ
bnRlZ2VyIFVJbnRlZ2VyTWF4ID0gVUlOVFBUUl9NQVg7CisKK3N0cnVjdCBPcGVyYXRpbmdTeXN0
ZW1WZXJzaW9uCit7CisgICAgSW50ZWdlciBtYWpvclZlcnNpb247CisgICAgSW50ZWdlciBtaW5v
clZlcnNpb247CisgICAgSW50ZWdlciBwYXRjaFZlcnNpb247Cit9IF9OU19QQUNLRUQ7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL0ZvdW5kYXRpb24vTlNVUkwuaHBwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjExMGU3YTIwNzcwNzM0ZGZkYTJjZGU3NzRkYWE0YzQzMjI0ZGRiZDAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvRm91bmRhdGlvbi9OU1VS
TC5ocHAKQEAgLTAsMCArMSw5MCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gRm91bmRhdGlvbi9OU1VSTC5ocHAKKy8vCisvLyBDb3B5cmln
aHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTlNEZWZpbmVzLmhwcCIKKyNp
bmNsdWRlICJOU09iamVjdC5ocHAiCisjaW5jbHVkZSAiTlNQcml2YXRlLmhwcCIKKyNpbmNsdWRl
ICJOU1R5cGVzLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK25hbWVzcGFjZSBOUworeworY2xhc3MgVVJMIDogcHVibGljIENvcHlpbmc8VVJM
PgoreworcHVibGljOgorICAgIHN0YXRpYyBVUkwqIGZpbGVVUkxXaXRoUGF0aChjb25zdCBjbGFz
cyBTdHJpbmcqIHBQYXRoKTsKKworICAgIHN0YXRpYyBVUkwqIGFsbG9jKCk7CisgICAgVVJMKiAg
ICAgICAgaW5pdCgpOworICAgIFVSTCogICAgICAgIGluaXQoY29uc3QgY2xhc3MgU3RyaW5nKiBw
U3RyaW5nKTsKKyAgICBVUkwqICAgICAgICBpbml0RmlsZVVSTFdpdGhQYXRoKGNvbnN0IGNsYXNz
IFN0cmluZyogcFBhdGgpOworCisgICAgY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCkgY29uc3Q7Cit9OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjpmaWxlVVJMV2l0aFBh
dGgoY29uc3QgU3RyaW5nKiBwUGF0aCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxVUkwqPihfTlNfUFJJVkFURV9DTFMoTlNVUkwpLCBfTlNfUFJJVkFURV9TRUwoZmlsZVVSTFdp
dGhQYXRoXyksIHBQYXRoKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK19OU19JTkxJTkUgTlM6OlVSTCogTlM6OlVSTDo6YWxsb2MoKQorewor
ICAgIHJldHVybiBPYmplY3Q6OmFsbG9jPFVSTD4oX05TX1BSSVZBVEVfQ0xTKE5TVVJMKSk7Cit9
CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNf
SU5MSU5FIE5TOjpVUkwqIE5TOjpVUkw6OmluaXQoKQoreworICAgIHJldHVybiBPYmplY3Q6Omlu
aXQ8VVJMPigpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworX05TX0lOTElORSBOUzo6VVJMKiBOUzo6VVJMOjppbml0KGNvbnN0IFN0cmluZyog
cFN0cmluZykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBf
TlNfUFJJVkFURV9TRUwoaW5pdFdpdGhTdHJpbmdfKSwgcFN0cmluZyk7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIE5TOjpV
UkwqIE5TOjpVUkw6OmluaXRGaWxlVVJMV2l0aFBhdGgoY29uc3QgU3RyaW5nKiBwUGF0aCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxVUkwqPih0aGlzLCBfTlNfUFJJVkFURV9T
RUwoaW5pdEZpbGVVUkxXaXRoUGF0aF8pLCBwUGF0aCk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTlNfSU5MSU5FIGNvbnN0IGNoYXIqIE5T
OjpVUkw6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8Y29uc3QgY2hhcio+KHRoaXMsIF9OU19QUklWQVRFX1NFTChmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24pKTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTElDRU5TRS50eHQgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTElDRU5T
RS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWU3NDNjNjdlOWZkMzY0OWNjMGUxYzg2YjkxMTFlZTFlYTI1OTM5
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9MSUNF
TlNFLnR4dApAQCAtMCwwICsxLDIwMiBAQAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBcGFjaGUgTGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAy
LjAsIEphbnVhcnkgMjAwNAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzLworCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBS
T0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KKworICAgMS4gRGVmaW5pdGlvbnMuCisKKyAgICAg
ICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCBy
ZXByb2R1Y3Rpb24sCisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlv
bnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KKworICAgICAgIkxpY2Vuc29yIiBzaGFs
bCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAg
IHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KKworICAg
ICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRp
dHkgYW5kIGFsbAorICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJv
bGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50
aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKKyAgICAgICJjb250cm9s
IiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQor
ICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkg
Y29udHJhY3Qgb3IKKyAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkg
cGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQorICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBv
ciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworICAgICAgIllv
dSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQor
ICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KKwor
ICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFr
aW5nIG1vZGlmaWNhdGlvbnMsCisgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNv
ZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCisgICAgICBzb3VyY2UsIGFuZCBjb25m
aWd1cmF0aW9uIGZpbGVzLgorCisgICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZv
cm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAorICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJh
bnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAorICAgICAgbm90IGxpbWl0
ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAorICAg
ICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgorCisgICAgICAiV29yayIg
c2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgor
ICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBp
bmRpY2F0ZWQgYnkgYQorICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGlu
IG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCisgICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBp
biB0aGUgQXBwZW5kaXggYmVsb3cpLgorCisgICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwg
bWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0CisgICAgICBmb3JtLCB0
aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2gg
dGhlCisgICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25z
LCBvciBvdGhlciBtb2RpZmljYXRpb25zCisgICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFu
IG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcworICAgICAgb2Yg
dGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRo
YXQgcmVtYWluCisgICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQg
YnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZh
dGl2ZSBXb3JrcyB0aGVyZW9mLgorCisgICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFu
eSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZworICAgICAgdGhlIG9yaWdpbmFsIHZlcnNp
b24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucworICAgICAg
dG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRp
b25hbGx5CisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUg
V29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCisgICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9y
IExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKKyAgICAgIHRo
ZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAi
c3VibWl0dGVkIgorICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBv
ciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAorICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0
cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KKyAgICAgIGNv
bW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250
cm9sIHN5c3RlbXMsCisgICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBt
YW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQorICAgICAgTGljZW5zb3IgZm9yIHRoZSBw
dXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0CisgICAgICBl
eGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90
aGVyd2lzZQorICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3du
ZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCisKKyAgICAgICJDb250cmlidXRvciIgc2hhbGwg
bWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBv
biBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNl
bnNvciBhbmQKKyAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3Jr
LgorCisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVy
bXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRv
ciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9u
LWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICBj
b3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBv
ZiwKKyAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2Us
IGFuZCBkaXN0cmlidXRlIHRoZQorICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtz
IGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KKworICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vu
c2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExp
Y2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWws
CisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVl
LCBpcnJldm9jYWJsZQorICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBw
YXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCisgICAgICB1c2UsIG9mZmVyIHRvIHNl
bGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKKyAgICAg
IHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBs
aWNlbnNhYmxlCisgICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5
IGluZnJpbmdlZCBieSB0aGVpcgorICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNv
bWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQorICAgICAgd2l0aCB0aGUgV29yayB0
byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKKyAgICAg
IGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGlu
ZyBhCisgICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxl
Z2luZyB0aGF0IHRoZSBXb3JrCisgICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQg
d2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAorICAgICAgb3IgY29udHJpYnV0b3J5
IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworICAgICAgZ3Jh
bnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWlu
YXRlCisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKKyAg
IDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3Bp
ZXMgb2YgdGhlCisgICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkg
bWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3Vy
Y2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CisgICAgICBtZWV0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczoKKworICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJl
Y2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKKyAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29w
eSBvZiB0aGlzIExpY2Vuc2U7IGFuZAorCisgICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1v
ZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgICAgICAgc3RhdGlu
ZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCisKKyAgICAgIChjKSBZb3UgbXVzdCBy
ZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcworICAgICAg
ICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJr
LCBhbmQKKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3Jt
IG9mIHRoZSBXb3JrLAorICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8g
bm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKKyAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3Jr
czsgYW5kCisKKyAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQg
ZmlsZSBhcyBwYXJ0IG9mIGl0cworICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVy
aXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKKyAgICAgICAgICBpbmNsdWRl
IGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKKyAg
ICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMg
dGhhdCBkbyBub3QKKyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0
aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKKyAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBs
YWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAorICAgICAgICAgIGFz
IHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IK
KyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJp
dmF0aXZlIFdvcmtzOyBvciwKKyAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBi
eSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCisgICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0
aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCisgICAgICAg
ICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5
IGFuZAorICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlv
dXIgb3duIGF0dHJpYnV0aW9uCisgICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBX
b3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKKyAgICAgICAgICBvciBhcyBhbiBh
ZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKKyAgICAg
ICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBj
b25zdHJ1ZWQKKyAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgIFlv
dSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRp
b25zIGFuZAorICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5z
ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBk
aXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgorICAgICAgZm9yIGFueSBzdWNo
IERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCisgICAgICBy
ZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBs
aWVzIHdpdGgKKyAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisK
KyAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5
IHN0YXRlIG90aGVyd2lzZSwKKyAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBz
dWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaworICAgICAgYnkgWW91IHRvIHRoZSBM
aWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAg
IHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25z
LgorICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwg
c3VwZXJzZWRlIG9yIG1vZGlmeQorICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNl
bnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKKyAgICAgIHdpdGggTGljZW5zb3Ig
cmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KKworICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBM
aWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQorICAgICAg
bmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhl
IExpY2Vuc29yLAorICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBj
dXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCisgICAgICBvcmlnaW4gb2YgdGhlIFdvcmsg
YW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KKworICAgNy4g
RGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yCisgICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdv
cmsgKGFuZCBlYWNoCisgICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9u
cykgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorICAgICAgaW1wbGllZCwgaW5j
bHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMK
KyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJ
VE5FU1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVz
cG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQorICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVz
aW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CisgICAgICByaXNr
cyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlz
IExpY2Vuc2UuCisKKyAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBh
bmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAorICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRp
bmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCisgICAgICB1bmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQor
ICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkg
Q29udHJpYnV0b3IgYmUKKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGlu
ZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKKyAgICAgIGluY2lkZW50YWwsIG9yIGNv
bnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQorICAgICAg
cmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8g
dXNlIHRoZQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2Vz
IGZvciBsb3NzIG9mIGdvb2R3aWxsLAorICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFp
bHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKKyAgICAgIG90aGVyIGNvbW1lcmNp
YWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhh
cyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KKworICAg
OS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRp
c3RyaWJ1dGluZworICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZ
b3UgbWF5IGNob29zZSB0byBvZmZlciwKKyAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2Nl
cHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCisgICAgICBvciBvdGhlciBs
aWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcwor
ICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlv
dSBtYXkgYWN0IG9ubHkKKyAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xl
IHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCisgICAgICBvZiBhbnkgb3RoZXIgQ29udHJp
YnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCisgICAgICBkZWZlbmQs
IGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKKyAg
ICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmli
dXRvciBieSByZWFzb24KKyAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5
IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgorCisgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElP
TlMKKworICAgQVBQRU5ESVg6IEhvdyB0byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91
ciB3b3JrLgorCisgICAgICBUbyBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3Jr
LCBhdHRhY2ggdGhlIGZvbGxvd2luZworICAgICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRoIHRo
ZSBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tldHMgIltdIgorICAgICAgcmVwbGFjZWQgd2l0aCB5
b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKKyAgICAgIHRo
ZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJp
YXRlCisgICAgICBjb21tZW50IHN5bnRheCBmb3IgdGhlIGZpbGUgZm9ybWF0LiBXZSBhbHNvIHJl
Y29tbWVuZCB0aGF0IGEKKyAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24g
b2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKKyAgICAgIHNhbWUgInByaW50ZWQgcGFnZSIg
YXMgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIGVhc2llcgorICAgICAgaWRlbnRpZmljYXRpb24g
d2l0aGluIHRoaXJkLXBhcnR5IGFyY2hpdmVzLgorCisgICBDb3B5cmlnaHQgwqkgMjAyMSBBcHBs
ZSBJbmMuCisKKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKworICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNj
ZWxlcmF0aW9uU3RydWN0dXJlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNDU2Yzg3MTIy
N2RiOWM0MjBiMTdhYTcxNTdmOGY4NTFlZGU2ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhw
cApAQCAtMCwwICsxLDkzMiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBw
PgorCisjaW5jbHVkZSAiTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcCIKKyNpbmNsdWRlICJN
VExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2Uu
aHBwIgorI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcCIKKworbmFt
ZXNwYWNlIE1UTAoreworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlVXNhZ2UpIHsKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZU5vbmUgPSAwLAor
ICAgIEFjY2VsZXJhdGlvblN0cnVjdHVyZVVzYWdlUmVmaXQgPSAxLAorICAgIEFjY2VsZXJhdGlv
blN0cnVjdHVyZVVzYWdlUHJlZmVyRmFzdEJ1aWxkID0gMiwKKyAgICBBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVVc2FnZUV4dGVuZGVkTGltaXRzID0gNCwKK307CisKK19NVExfT1BUSU9OUyh1aW50MzJf
dCwgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25zKSB7CisgICAgQWNjZWxlcmF0
aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25Ob25lID0gMCwKKyAgICBBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVJbnN0YW5jZU9wdGlvbkRpc2FibGVUcmlhbmdsZUN1bGxpbmcgPSAxLAorICAgIEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlT3B0aW9uVHJpYW5nbGVGcm9udEZhY2luZ1dpbmRpbmdD
b3VudGVyQ2xvY2t3aXNlID0gMiwKKyAgICBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZU9w
dGlvbk9wYXF1ZSA9IDQsCisgICAgQWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25O
b25PcGFxdWUgPSA4LAorfTsKKworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRv
ciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlw
dG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRv
ciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2Ug
ICAgICAgICAgICAgICB1c2FnZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRVc2FnZShNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZVVzYWdlIHVzYWdlKTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5
RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9t
ZXRyeURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIEFjY2VsZXJhdGlv
blN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlT2Zmc2V0KE5TOjpVSW50ZWdlciBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
T2Zmc2V0KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wYXF1ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9wYXF1ZShib29sIG9wYXF1ZSk7CisK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbigpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uKGJvb2wgYWxs
b3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb24pOworCisgICAgTlM6OlN0
cmluZyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7Cit9OworCitfTVRMX0VO
VU0odWludDMyX3QsIE1vdGlvbkJvcmRlck1vZGUpIHsKKyAgICBNb3Rpb25Cb3JkZXJNb2RlQ2xh
bXAgPSAwLAorICAgIE1vdGlvbkJvcmRlck1vZGVWYW5pc2ggPSAxLAorfTsKKworY2xhc3MgUHJp
bWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWlu
ZzxQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yLCBNVEw6OkFjY2VsZXJh
dGlvblN0cnVjdHVyZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFBy
aW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBj
bGFzcyBQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiAgICAgICAgaW5p
dCgpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdlb21ldHJ5RGVzY3JpcHRvcnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0R2VvbWV0cnlEZXNj
cmlwdG9ycyhjb25zdCBOUzo6QXJyYXkqIGdlb21ldHJ5RGVzY3JpcHRvcnMpOworCisgICAgTVRM
OjpNb3Rpb25Cb3JkZXJNb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlv
blN0YXJ0Qm9yZGVyTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNb3Rpb25TdGFydEJvcmRlck1vZGUoTVRM
OjpNb3Rpb25Cb3JkZXJNb2RlIG1vdGlvblN0YXJ0Qm9yZGVyTW9kZSk7CisKKyAgICBNVEw6Ok1v
dGlvbkJvcmRlck1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW90aW9uRW5k
Qm9yZGVyTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRNb3Rpb25FbmRCb3JkZXJNb2RlKE1UTDo6TW90aW9u
Qm9yZGVyTW9kZSBtb3Rpb25FbmRCb3JkZXJNb2RlKTsKKworICAgIGZsb2F0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25TdGFydFRpbWUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0TW90aW9uU3RhcnRUaW1lKGZsb2F0IG1vdGlvblN0YXJ0VGltZSk7CisKKyAg
ICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bW90aW9uRW5kVGltZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNb3Rpb25FbmRUaW1lKGZsb2F0IG1vdGlvbkVu
ZFRpbWUpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vdGlvbktleWZyYW1lQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW90aW9uS2V5
ZnJhbWVDb3VudChOUzo6VUludGVnZXIgbW90aW9uS2V5ZnJhbWVDb3VudCk7CisKKyAgICBzdGF0
aWMgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiAgZGVzY3Jp
cHRvcigpOworfTsKKworY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRy
eURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJp
YW5nbGVHZW9tZXRyeURlc2NyaXB0b3IsIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0
cnlEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNz
IEFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiAgICAgICAg
aW5pdCgpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZl
cnRleEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIHZlcnRleEJ1ZmZlcik7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZlcnRleEJ1ZmZlck9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4QnVmZmVyT2Zm
c2V0KE5TOjpVSW50ZWdlciB2ZXJ0ZXhCdWZmZXJPZmZzZXQpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhT
dHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleFN0cmlkZShOUzo6VUludGVnZXIgdmVy
dGV4U3RyaWRlKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEluZGV4QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleEJ1ZmZlck9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhCdWZmZXJPZmZz
ZXQoTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0KTsKKworICAgIE1UTDo6SW5kZXhUeXBl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhUeXBl
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRJbmRleFR5cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBl
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHJpYW5nbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VHJpYW5n
bGVDb3VudChOUzo6VUludGVnZXIgdHJpYW5nbGVDb3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogIGRlc2NyaXB0
b3IoKTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEFjY2VsZXJhdGlvblN0cnVjdHVyZUJv
dW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yLCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdl
b21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQWNjZWxlcmF0
aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAg
ICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRv
ciogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3hCdWZmZXIoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEJvdW5kaW5nQm94QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciog
Ym91bmRpbmdCb3hCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGluZ0JveEJ1ZmZlck9mZnNl
dCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXQoTlM6OlVJ
bnRlZ2VyIGJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdC
b3hTdHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJvdW5kaW5nQm94U3RyaWRlKE5TOjpV
SW50ZWdlciBib3VuZGluZ0JveFN0cmlkZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94Q291
bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJvdW5kaW5nQm94Q291bnQoTlM6OlVJbnRlZ2Vy
IGJvdW5kaW5nQm94Q291bnQpOworCisgICAgc3RhdGljIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqICBkZXNjcmlwdG9yKCk7Cit9OworCitj
bGFzcyBNb3Rpb25LZXlmcmFtZURhdGEgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPE1vdGlvbktl
eWZyYW1lRGF0YT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgTW90aW9uS2V5ZnJhbWVE
YXRhKiBhbGxvYygpOworCisgICAgY2xhc3MgTW90aW9uS2V5ZnJhbWVEYXRhKiAgICAgICAgaW5p
dCgpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICAgYnVmZmVyKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QnVmZmVyKGNvbnN0
IGNsYXNzIEJ1ZmZlciogYnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgICAgIG9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldE9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIHN0YXRpYyBNVEw6Ok1v
dGlvbktleWZyYW1lRGF0YSogIGRhdGEoKTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVj
dHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5n
PEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yLCBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9t
ZXRyeURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAg
IE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmVydGV4QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVy
dGV4QnVmZmVycyhjb25zdCBOUzo6QXJyYXkqIHZlcnRleEJ1ZmZlcnMpOworCisgICAgTlM6OlVJ
bnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ZXJ0ZXhTdHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleFN0cmlk
ZShOUzo6VUludGVnZXIgdmVydGV4U3RyaWRlKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhCdWZm
ZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluZGV4QnVmZmVyKGNvbnN0IGNsYXNzIEJ1
ZmZlciogaW5kZXhCdWZmZXIpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEJ1ZmZlck9mZnNldCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2Vy
IGluZGV4QnVmZmVyT2Zmc2V0KTsKKworICAgIE1UTDo6SW5kZXhUeXBlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhUeXBlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRJbmRleFR5cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKTsK
KworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHJpYW5nbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0VHJpYW5nbGVDb3VudChOUzo6VUludGVnZXIgdHJpYW5nbGVDb3VudCk7CisKKyAgICBzdGF0
aWMgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3Jp
cHRvciogIGRlc2NyaXB0b3IoKTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZU1v
dGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEFj
Y2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yLCBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hH
ZW9tZXRyeURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsK
KworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3hCdWZmZXJzKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRCb3VuZGluZ0JveEJ1ZmZlcnMoY29uc3QgTlM6OkFycmF5KiBib3VuZGlu
Z0JveEJ1ZmZlcnMpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGluZ0JveFN0cmlkZSgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hTdHJpZGUoTlM6OlVJbnRlZ2Vy
IGJvdW5kaW5nQm94U3RyaWRlKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3hDb3Vu
dCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm91bmRpbmdCb3hDb3VudChOUzo6VUlu
dGVnZXIgYm91bmRpbmdCb3hDb3VudCk7CisKKyAgICBzdGF0aWMgTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogIGRlc2NyaXB0b3Io
KTsKK307CisKK3N0cnVjdCBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3IK
K3sKKyAgICBNVEw6OlBhY2tlZEZsb2F0NHgzICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zv
cm1hdGlvbk1hdHJpeDsKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUluc3RhbmNlT3B0
aW9ucyBvcHRpb25zOworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hc2s7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldDsKKyAgICB1aW50MzJfdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbmRleDsKK30gX01U
TF9QQUNLRUQ7CisKK3N0cnVjdCBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2VySURJbnN0YW5jZURl
c2NyaXB0b3IKK3sKKyAgICBNVEw6OlBhY2tlZEZsb2F0NHgzICAgICAgICAgICAgICAgICAgICAg
ICB0cmFuc2Zvcm1hdGlvbk1hdHJpeDsKKyAgICBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUlu
c3RhbmNlT3B0aW9ucyBvcHRpb25zOworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hc2s7CisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldDsKKyAgICB1aW50MzJfdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbmRl
eDsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySUQ7
Cit9IF9NVExfUEFDS0VEOworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlKSB7CisgICAgQWNjZWxlcmF0aW9uU3RydWN0
dXJlSW5zdGFuY2VEZXNjcmlwdG9yVHlwZURlZmF1bHQgPSAwLAorICAgIEFjY2VsZXJhdGlvblN0
cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGVVc2VySUQgPSAxLAorICAgIEFjY2VsZXJhdGlv
blN0cnVjdHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGVNb3Rpb24gPSAyLAorfTsKKworc3RydWN0
IEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkluc3RhbmNlRGVzY3JpcHRvcgoreworICAgIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VPcHRpb25zIG9wdGlvbnM7CisgICAgdWlu
dDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzazsKKyAgICB1aW50MzJf
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlT2Zmc2V0OworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFjY2VsZXJhdGlvblN0cnVjdHVyZUluZGV4OworICAgIHVpbnQzMl90ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVzZXJJRDsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtb3Rpb25UcmFuc2Zvcm1zU3RhcnRJbmRleDsKKyAgICB1aW50MzJf
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Rpb25UcmFuc2Zvcm1zQ291bnQ7
CisgICAgTVRMOjpNb3Rpb25Cb3JkZXJNb2RlICAgICAgICAgICAgICAgICAgICAgbW90aW9uU3Rh
cnRCb3JkZXJNb2RlOworICAgIE1UTDo6TW90aW9uQm9yZGVyTW9kZSAgICAgICAgICAgICAgICAg
ICAgIG1vdGlvbkVuZEJvcmRlck1vZGU7CisgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW90aW9uU3RhcnRUaW1lOworICAgIGZsb2F0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbkVuZFRpbWU7Cit9IF9NVExfUEFDS0VEOworCitj
bGFzcyBJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6
OkNvcHlpbmc8SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yLCBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIEluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIEluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogICAgICAg
IGluaXQoKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluc3Rh
bmNlRGVzY3JpcHRvckJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGluc3RhbmNlRGVzY3JpcHRv
ckJ1ZmZlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVz
Y3JpcHRvckJ1ZmZlck9mZnNldCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZURlc2NyaXB0b3JTdHJpZGUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRJbnN0YW5jZURlc2NyaXB0b3JTdHJpZGUoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVz
Y3JpcHRvclN0cmlkZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VD
b3VudChOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZWRBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJl
cyhjb25zdCBOUzo6QXJyYXkqIGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMpOworCisg
ICAgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlICAgICAg
aW5zdGFuY2VEZXNjcmlwdG9yVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluc3RhbmNlRGVzY3JpcHRvclR5
cGUoTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JUeXBlIGluc3Rh
bmNlRGVzY3JpcHRvclR5cGUpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbW90aW9uVHJhbnNmb3JtQnVmZmVyKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogbW90aW9uVHJhbnNm
b3JtQnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dE1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgbW90aW9uVHJhbnNmb3Jt
QnVmZmVyT2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vdGlvblRyYW5zZm9ybUNvdW50KCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW90
aW9uVHJhbnNmb3JtQ291bnQoTlM6OlVJbnRlZ2VyIG1vdGlvblRyYW5zZm9ybUNvdW50KTsKKwor
ICAgIHN0YXRpYyBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciog
IGRlc2NyaXB0b3IoKTsKK307CisKK2NsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlLCBSZXNvdXJjZT4KK3sKK3B1
YmxpYzoKKyAgICBOUzo6VUludGVnZXIgc2l6ZSgpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVE
ZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogdXNhZ2UK
K19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVXNhZ2UgTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjp1c2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVVc2FnZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh1c2FnZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0VXNhZ2UoTVRMOjpBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVVc2FnZSB1c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VXNhZ2VfKSwgdXNhZ2UpOworfQorCisvLyBzdGF0aWMg
bWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9t
ZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlw
dG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFj
Y2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNj
cmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OmludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGVPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnRlcnNlY3Rpb25GdW5jdGlvblRh
YmxlT2Zmc2V0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZz
ZXQoTlM6OlVJbnRlZ2VyIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXRfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9m
ZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBvcGFxdWUKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6Om9wYXF1ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChvcGFxdWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPcGFx
dWVfKSwgb3BhcXVlKTsKK30KKworLy8gcHJvcGVydHk6IGFsbG93RHVwbGljYXRlSW50ZXJzZWN0
aW9uRnVuY3Rpb25JbnZvY2F0aW9uCitfTVRMX0lOTElORSBib29sIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjphbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1
bmN0aW9uSW52b2NhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlv
bkZ1bmN0aW9uSW52b2NhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRBbGxvd0R1cGxpY2F0ZUludGVy
c2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbihib29sIGFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9u
RnVuY3Rpb25JbnZvY2F0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRBbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9u
SW52b2NhdGlvbl8pLCBhbGxvd0R1cGxpY2F0ZUludGVyc2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlv
bik7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNj
cmlwdG9yKiBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpQcmltaXRpdmVBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFByaW1pdGl2
ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0
CitfTVRMX0lOTElORSBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0
b3IqIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpQcmltaXRpdmVBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogZ2VvbWV0cnlEZXNj
cmlwdG9ycworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3I6Omdlb21ldHJ5RGVzY3JpcHRvcnMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoZ2VvbWV0cnlEZXNjcmlwdG9ycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0R2VvbWV0cnlEZXNj
cmlwdG9ycyhjb25zdCBOUzo6QXJyYXkqIGdlb21ldHJ5RGVzY3JpcHRvcnMpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEdlb21ldHJ5
RGVzY3JpcHRvcnNfKSwgZ2VvbWV0cnlEZXNjcmlwdG9ycyk7Cit9CisKKy8vIHByb3BlcnR5OiBt
b3Rpb25TdGFydEJvcmRlck1vZGUKK19NVExfSU5MSU5FIE1UTDo6TW90aW9uQm9yZGVyTW9kZSBN
VEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvblN0YXJ0
Qm9yZGVyTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpNb3Rpb25Cb3JkZXJNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvblN0YXJ0Qm9y
ZGVyTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0
aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9uU3RhcnRCb3JkZXJNb2RlKE1UTDo6TW90
aW9uQm9yZGVyTW9kZSBtb3Rpb25TdGFydEJvcmRlck1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvblN0YXJ0Qm9yZGVy
TW9kZV8pLCBtb3Rpb25TdGFydEJvcmRlck1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9u
RW5kQm9yZGVyTW9kZQorX01UTF9JTkxJTkUgTVRMOjpNb3Rpb25Cb3JkZXJNb2RlIE1UTDo6UHJp
bWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6bW90aW9uRW5kQm9yZGVyTW9k
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpNb3Rpb25C
b3JkZXJNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvbkVuZEJvcmRlck1vZGUpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3I6OnNldE1vdGlvbkVuZEJvcmRlck1vZGUoTVRMOjpNb3Rpb25Cb3JkZXJNb2Rl
IG1vdGlvbkVuZEJvcmRlck1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvbkVuZEJvcmRlck1vZGVfKSwgbW90aW9uRW5k
Qm9yZGVyTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25TdGFydFRpbWUKK19NVExfSU5M
SU5FIGZsb2F0IE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6
bW90aW9uU3RhcnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxmbG9hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25TdGFydFRpbWUpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2Ny
aXB0b3I6OnNldE1vdGlvblN0YXJ0VGltZShmbG9hdCBtb3Rpb25TdGFydFRpbWUpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlv
blN0YXJ0VGltZV8pLCBtb3Rpb25TdGFydFRpbWUpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9u
RW5kVGltZQorX01UTF9JTkxJTkUgZmxvYXQgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25FbmRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxmbG9hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25FbmRU
aW1lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQcmltaXRpdmVBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRNb3Rpb25FbmRUaW1lKGZsb2F0IG1vdGlvbkVuZFRpbWUp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE1vdGlvbkVuZFRpbWVfKSwgbW90aW9uRW5kVGltZSk7Cit9CisKKy8vIHByb3BlcnR5OiBt
b3Rpb25LZXlmcmFtZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpQcmltaXRp
dmVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25LZXlmcmFtZUNvdW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobW90aW9uS2V5ZnJhbWVDb3VudCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6
c2V0TW90aW9uS2V5ZnJhbWVDb3VudChOUzo6VUludGVnZXIgbW90aW9uS2V5ZnJhbWVDb3VudCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TW90aW9uS2V5ZnJhbWVDb3VudF8pLCBtb3Rpb25LZXlmcmFtZUNvdW50KTsKK30KKworLy8g
c3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpQcmltaXRpdmVBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBNVEw6OlByaW1pdGl2ZUFjY2VsZXJhdGlvblN0
cnVjdHVyZURlc2NyaXB0b3I6OmRlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcio+
KF9NVExfUFJJVkFURV9DTFMoTVRMUHJpbWl0aXZlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3Jp
cHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3JpcHRvcikpOworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmds
ZUdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdl
b21ldHJ5RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlE
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmds
ZUdlb21ldHJ5RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEJ1ZmZlcgor
X01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5n
bGVHZW9tZXRyeURlc2NyaXB0b3I6OnZlcnRleEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHZlcnRleEJ1ZmZlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFZlcnRleEJ1ZmZlcihjb25z
dCBNVEw6OkJ1ZmZlciogdmVydGV4QnVmZmVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJfKSwgdmVydGV4QnVm
ZmVyKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEJ1ZmZlck9mZnNldAorX01UTF9JTkxJTkUg
TlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3I6OnZlcnRleEJ1ZmZlck9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRl
eEJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFZlcnRleEJ1ZmZlck9mZnNl
dChOUzo6VUludGVnZXIgdmVydGV4QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJPZmZzZXRf
KSwgdmVydGV4QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleFN0cmlkZQor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5n
bGVHZW9tZXRyeURlc2NyaXB0b3I6OnZlcnRleFN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHZlcnRleFN0cmlkZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnNldFZlcnRleFN0cmlkZShOUzo6
VUludGVnZXIgdmVydGV4U3RyaWRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhTdHJpZGVfKSwgdmVydGV4U3RyaWRlKTsK
K30KKworLy8gcHJvcGVydHk6IGluZGV4QnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciog
TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5k
ZXhCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleEJ1ZmZlcikpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3I6OnNldEluZGV4QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRleEJ1ZmZlcikK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0SW5kZXhCdWZmZXJfKSwgaW5kZXhCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhC
dWZmZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0
cnVjdHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjppbmRleEJ1ZmZlck9mZnNldCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4QnVmZmVyT2Zmc2V0KSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
cjo6c2V0SW5kZXhCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRJbmRleEJ1ZmZlck9mZnNldF8pLCBpbmRleEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBpbmRleFR5cGUKK19NVExfSU5MSU5FIE1UTDo6SW5kZXhUeXBlIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluZGV4VHlwZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRleFR5cGU+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoaW5kZXhUeXBlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0SW5k
ZXhUeXBlKE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhUeXBlXyksIGluZGV4VHlw
ZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0cmlhbmdsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
cjo6dHJpYW5nbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRyaWFuZ2xlQ291bnQpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xl
R2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRUcmlhbmdsZUNvdW50KE5TOjpVSW50ZWdlciB0cmlhbmds
ZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRUcmlhbmdsZUNvdW50XyksIHRyaWFuZ2xlQ291bnQpOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKiBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZVRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpkZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZVRyaWFuZ2xlR2Vv
bWV0cnlEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoZGVzY3JpcHRv
cikpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKSk7Cit9CisKKy8v
IG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3Vu
ZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3Vu
ZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdlb21ldHJ5RGVz
Y3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGJvdW5kaW5nQm94QnVmZmVyCitfTVRMX0lO
TElORSBNVEw6OkJ1ZmZlciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVCb3VuZGluZ0JveEdl
b21ldHJ5RGVzY3JpcHRvcjo6Ym91bmRpbmdCb3hCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChib3VuZGluZ0JveEJ1ZmZlcikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OnNldEJvdW5kaW5n
Qm94QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBib3VuZGluZ0JveEJ1ZmZlcikKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Qm91bmRp
bmdCb3hCdWZmZXJfKSwgYm91bmRpbmdCb3hCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogYm91
bmRpbmdCb3hCdWZmZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yOjpib3VuZGluZ0Jv
eEJ1ZmZlck9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJvdW5kaW5nQm94QnVmZmVyT2Zm
c2V0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVC
b3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0Qm91bmRpbmdCb3hCdWZmZXJPZmZzZXQo
TlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3VuZGluZ0JveEJ1ZmZl
ck9mZnNldF8pLCBib3VuZGluZ0JveEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBi
b3VuZGluZ0JveFN0cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94U3Ry
aWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hTdHJpZGUpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0
cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveFN0cmlkZShOUzo6VUludGVnZXIgYm91bmRpbmdC
b3hTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldEJvdW5kaW5nQm94U3RyaWRlXyksIGJvdW5kaW5nQm94U3RyaWRlKTsKK30K
KworLy8gcHJvcGVydHk6IGJvdW5kaW5nQm94Q291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9y
Ojpib3VuZGluZ0JveENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hDb3Vu
dCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91
bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OnNldEJvdW5kaW5nQm94Q291bnQoTlM6OlVJbnRl
Z2VyIGJvdW5kaW5nQm94Q291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94Q291bnRfKSwgYm91bmRpbmdCb3hD
b3VudCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGRlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmRl
c2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlw
dG9yKSwgX01UTF9QUklWQVRFX1NFTChkZXNjcmlwdG9yKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6Ok1vdGlvbktleWZyYW1lRGF0YSogTVRMOjpNb3Rp
b25LZXlmcmFtZURhdGE6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpNb3Rpb25LZXlmcmFtZURhdGE+KF9NVExfUFJJVkFURV9DTFMoTVRMTW90aW9uS2V5ZnJh
bWVEYXRhKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpNb3Rpb25L
ZXlmcmFtZURhdGEqIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6Ok1vdGlvbktleWZyYW1lRGF0YT4oKTsKK30KKworLy8g
cHJvcGVydHk6IGJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6TW90aW9uS2V5
ZnJhbWVEYXRhOjpidWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXIpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6Ok1vdGlvbktleWZyYW1lRGF0YTo6c2V0QnVmZmVyKGNvbnN0
IE1UTDo6QnVmZmVyKiBidWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcl8pLCBidWZmZXIpOworfQorCisvLyBwcm9w
ZXJ0eTogb2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpNb3Rpb25LZXlmcmFt
ZURhdGE6Om9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9mZnNldCkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhOjpzZXRPZmZzZXQoTlM6OlVJbnRl
Z2VyIG9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0T2Zmc2V0XyksIG9mZnNldCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGRhdGEKK19NVExfSU5MSU5FIE1UTDo6TW90aW9uS2V5ZnJhbWVEYXRhKiBNVEw6Ok1vdGlvbktl
eWZyYW1lRGF0YTo6ZGF0YSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpNb3Rpb25LZXlmcmFtZURhdGEqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTE1vdGlvbktleWZyYW1l
RGF0YSksIF9NVExfUFJJVkFURV9TRUwoZGF0YSkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Ucmlhbmds
ZUdlb21ldHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Ucmlh
bmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlE
ZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlv
blRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5
RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21l
dHJ5RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcj4o
KTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEJ1ZmZlcnMKK19NVExfSU5MSU5FIE5TOjpBcnJh
eSogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3Jp
cHRvcjo6dmVydGV4QnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhCdWZmZXJzKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25U
cmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0VmVydGV4QnVmZmVycyhjb25zdCBOUzo6QXJy
YXkqIHZlcnRleEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEJ1ZmZlcnNfKSwgdmVydGV4QnVmZmVycyk7Cit9
CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhTdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9y
Ojp2ZXJ0ZXhTdHJpZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0ZXhTdHJpZGUpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFu
Z2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRWZXJ0ZXhTdHJpZGUoTlM6OlVJbnRlZ2VyIHZlcnRl
eFN0cmlkZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0VmVydGV4U3RyaWRlXyksIHZlcnRleFN0cmlkZSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBpbmRleEJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OmluZGV4QnVmZmVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXhCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNj
cmlwdG9yOjpzZXRJbmRleEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dEluZGV4QnVmZmVyXyksIGluZGV4QnVmZmVyKTsKK30KKworLy8gcHJvcGVydHk6IGluZGV4QnVm
ZmVyT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6aW5kZXhCdWZmZXJPZmZzZXQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChpbmRleEJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRy
eURlc2NyaXB0b3I6OnNldEluZGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZl
ck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0SW5kZXhCdWZmZXJPZmZzZXRfKSwgaW5kZXhCdWZmZXJPZmZzZXQpOworfQor
CisvLyBwcm9wZXJ0eTogaW5kZXhUeXBlCitfTVRMX0lOTElORSBNVEw6OkluZGV4VHlwZSBNVEw6
OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvblRyaWFuZ2xlR2VvbWV0cnlEZXNjcmlwdG9yOjpp
bmRleFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
SW5kZXhUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4VHlwZSkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9t
ZXRyeURlc2NyaXB0b3I6OnNldEluZGV4VHlwZShNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dEluZGV4VHlwZV8pLCBpbmRleFR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogdHJpYW5nbGVDb3Vu
dAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90
aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3I6OnRyaWFuZ2xlQ291bnQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh0cmlhbmdsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvcjo6c2V0
VHJpYW5nbGVDb3VudChOUzo6VUludGVnZXIgdHJpYW5nbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VHJpYW5nbGVDb3Vu
dF8pLCB0cmlhbmdsZUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogZGVzY3JpcHRvcgor
X01UTF9JTkxJTkUgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21l
dHJ5RGVzY3JpcHRvciogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdl
b21ldHJ5RGVzY3JpcHRvcjo6ZGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25UcmlhbmdsZUdlb21ldHJ5
RGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90
aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKGRlc2NyaXB0
b3IpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0
b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVzY3JpcHRvcj4oX01UTF9Q
UklWQVRFX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21l
dHJ5RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3Iq
IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2Ny
aXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I+KCk7Cit9
CisKKy8vIHByb3BlcnR5OiBib3VuZGluZ0JveEJ1ZmZlcnMKK19NVExfSU5MSU5FIE5TOjpBcnJh
eSogTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNb3Rpb25Cb3VuZGluZ0JveEdlb21ldHJ5RGVz
Y3JpcHRvcjo6Ym91bmRpbmdCb3hCdWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJvdW5kaW5n
Qm94QnVmZmVycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OnNldEJvdW5kaW5nQm94
QnVmZmVycyhjb25zdCBOUzo6QXJyYXkqIGJvdW5kaW5nQm94QnVmZmVycykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Qm91bmRpbmdC
b3hCdWZmZXJzXyksIGJvdW5kaW5nQm94QnVmZmVycyk7Cit9CisKKy8vIHByb3BlcnR5OiBib3Vu
ZGluZ0JveFN0cmlkZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QWNjZWxlcmF0aW9u
U3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmJvdW5kaW5nQm94
U3RyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYm91bmRpbmdCb3hTdHJpZGUpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5n
Qm94R2VvbWV0cnlEZXNjcmlwdG9yOjpzZXRCb3VuZGluZ0JveFN0cmlkZShOUzo6VUludGVnZXIg
Ym91bmRpbmdCb3hTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94U3RyaWRlXyksIGJvdW5kaW5nQm94U3Ry
aWRlKTsKK30KKworLy8gcHJvcGVydHk6IGJvdW5kaW5nQm94Q291bnQKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2Vv
bWV0cnlEZXNjcmlwdG9yOjpib3VuZGluZ0JveENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
Ym91bmRpbmdCb3hDb3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxlcmF0
aW9uU3RydWN0dXJlTW90aW9uQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OnNldEJvdW5k
aW5nQm94Q291bnQoTlM6OlVJbnRlZ2VyIGJvdW5kaW5nQm94Q291bnQpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJvdW5kaW5nQm94
Q291bnRfKSwgYm91bmRpbmdCb3hDb3VudCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGRlc2Ny
aXB0b3IKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRp
bmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9u
Qm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3I6OmRlc2NyaXB0b3IoKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91
bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFjY2VsZXJh
dGlvblN0cnVjdHVyZU1vdGlvbkJvdW5kaW5nQm94R2VvbWV0cnlEZXNjcmlwdG9yKSwgX01UTF9Q
UklWQVRFX1NFTChkZXNjcmlwdG9yKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciog
TVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sK
KyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0
cnVjdHVyZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMSW5zdGFuY2VBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJ
TkUgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIE1UTDo6SW5z
dGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcgor
X01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVEZXNjcmlwdG9yOjppbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChpbnN0YW5jZURlc2NyaXB0b3JCdWZmZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0SW5zdGFuY2VE
ZXNjcmlwdG9yQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBpbnN0YW5jZURlc2NyaXB0b3JCdWZm
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlcl8pLCBpbnN0YW5jZURlc2NyaXB0b3JCdWZm
ZXIpOworfQorCisvLyBwcm9wZXJ0eTogaW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3I6Omluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpz
ZXRJbnN0YW5jZURlc2NyaXB0b3JCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIGluc3RhbmNlRGVz
Y3JpcHRvckJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0Xyks
IGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBpbnN0
YW5jZURlc2NyaXB0b3JTdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6Okluc3Rh
bmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcjo6aW5zdGFuY2VEZXNjcmlwdG9yU3Ry
aWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURl
c2NyaXB0b3I6OnNldEluc3RhbmNlRGVzY3JpcHRvclN0cmlkZShOUzo6VUludGVnZXIgaW5zdGFu
Y2VEZXNjcmlwdG9yU3RyaWRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRJbnN0YW5jZURlc2NyaXB0b3JTdHJpZGVfKSwgaW5zdGFu
Y2VEZXNjcmlwdG9yU3RyaWRlKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbmNlQ291bnQKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJl
RGVzY3JpcHRvcjo6aW5zdGFuY2VDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbmNl
Q291bnQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9u
U3RydWN0dXJlRGVzY3JpcHRvcjo6c2V0SW5zdGFuY2VDb3VudChOUzo6VUludGVnZXIgaW5zdGFu
Y2VDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0SW5zdGFuY2VDb3VudF8pLCBpbnN0YW5jZUNvdW50KTsKK30KKworLy8gcHJv
cGVydHk6IGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMKK19NVExfSU5MSU5FIE5TOjpB
cnJheSogTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Omluc3Rh
bmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zdGFuY2Vk
QWNjZWxlcmF0aW9uU3RydWN0dXJlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5z
dGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjpzZXRJbnN0YW5jZWRBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVzKGNvbnN0IE5TOjpBcnJheSogaW5zdGFuY2VkQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0SW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlc18pLCBpbnN0YW5jZWRB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVzKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbmNlRGVzY3Jp
cHRvclR5cGUKK19NVExfSU5MSU5FIE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlSW5zdGFuY2VE
ZXNjcmlwdG9yVHlwZSBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRv
cjo6aW5zdGFuY2VEZXNjcmlwdG9yVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVJbnN0YW5jZURlc2NyaXB0b3JU
eXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbmNlRGVzY3JpcHRvclR5cGUpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVz
Y3JpcHRvcjo6c2V0SW5zdGFuY2VEZXNjcmlwdG9yVHlwZShNVEw6OkFjY2VsZXJhdGlvblN0cnVj
dHVyZUluc3RhbmNlRGVzY3JpcHRvclR5cGUgaW5zdGFuY2VEZXNjcmlwdG9yVHlwZSkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5z
dGFuY2VEZXNjcmlwdG9yVHlwZV8pLCBpbnN0YW5jZURlc2NyaXB0b3JUeXBlKTsKK30KKworLy8g
cHJvcGVydHk6IG1vdGlvblRyYW5zZm9ybUJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIq
IE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25UcmFu
c2Zvcm1CdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6QnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtb3Rpb25UcmFuc2Zvcm1CdWZmZXIp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6Okluc3RhbmNlQWNjZWxlcmF0aW9uU3RydWN0
dXJlRGVzY3JpcHRvcjo6c2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVy
KiBtb3Rpb25UcmFuc2Zvcm1CdWZmZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1vdGlvblRyYW5zZm9ybUJ1ZmZlcl8pLCBtb3Rp
b25UcmFuc2Zvcm1CdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogbW90aW9uVHJhbnNmb3JtQnVm
ZmVyT2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpJbnN0YW5jZUFjY2VsZXJh
dGlvblN0cnVjdHVyZURlc2NyaXB0b3I6Om1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG1vdGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlw
dG9yOjpzZXRNb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG1vdGlvblRy
YW5zZm9ybUJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0XyksIG1v
dGlvblRyYW5zZm9ybUJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBtb3Rpb25UcmFu
c2Zvcm1Db3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SW5zdGFuY2VBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yOjptb3Rpb25UcmFuc2Zvcm1Db3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKG1vdGlvblRyYW5zZm9ybUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3I6OnNldE1vdGlv
blRyYW5zZm9ybUNvdW50KE5TOjpVSW50ZWdlciBtb3Rpb25UcmFuc2Zvcm1Db3VudCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TW90
aW9uVHJhbnNmb3JtQ291bnRfKSwgbW90aW9uVHJhbnNmb3JtQ291bnQpOworfQorCisvLyBzdGF0
aWMgbWV0aG9kOiBkZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6Okluc3RhbmNlQWNjZWxlcmF0
aW9uU3RydWN0dXJlRGVzY3JpcHRvciogTVRMOjpJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVy
ZURlc2NyaXB0b3I6OmRlc2NyaXB0b3IoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6SW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKj4oX01UTF9Q
UklWQVRFX0NMUyhNVExJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IpLCBf
TVRMX1BSSVZBVEVfU0VMKGRlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IHNpemUKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZTo6c2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNpemUpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5k
RW5jb2Rlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNj
ZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmZjRjOWM4
YmQxZWQ0MjhhNDNmN2VmMmUxNmM2OTI4YzE1NDljYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJl
Q29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsMTQ0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFw
cGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRl
ICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5j
bHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEFyZ3VtZW50
LmhwcCIKKyNpbmNsdWRlICJNVExDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMSGVh
cC5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3BhY2UgTVRMCit7Citj
bGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVm
ZXJlbmNpbmc8QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIsIENvbW1hbmRFbmNv
ZGVyPgoreworcHVibGljOgorICAgIHZvaWQgYnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29u
c3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNv
bnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNv
bnN0IGNsYXNzIEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNjcmF0Y2hCdWZm
ZXJPZmZzZXQpOworCisgICAgdm9pZCByZWZpdEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBj
bGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwg
Y29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwg
Y29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBkZXN0aW5hdGlvbkFjY2VsZXJhdGlv
blN0cnVjdHVyZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBzY3JhdGNoQnVmZmVyLCBOUzo6VUludGVn
ZXIgc2NyYXRjaEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkIGNvcHlBY2NlbGVyYXRpb25TdHJ1
Y3R1cmUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBzb3VyY2VBY2NlbGVyYXRp
b25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogZGVzdGluYXRp
b25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUpOworCisgICAgdm9pZCB3cml0ZUNvbXBhY3RlZEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZVNpemUoY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBh
Y2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUlu
dGVnZXIgb2Zmc2V0KTsKKworICAgIHZvaWQgd3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVTaXplKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9u
U3RydWN0dXJlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNl
dCwgTVRMOjpEYXRhVHlwZSBzaXplRGF0YVR5cGUpOworCisgICAgdm9pZCBjb3B5QW5kQ29tcGFj
dEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUq
IHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgY2xhc3MgQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlKiBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVyZSk7CisKKyAgICB2b2lkIHVw
ZGF0ZUZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBmZW5jZSk7CisKKyAgICB2b2lkIHdhaXRGb3JG
ZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVuY2UpOworCisgICAgdm9pZCB1c2VSZXNvdXJjZShj
b25zdCBjbGFzcyBSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSk7
CisKKyAgICB2b2lkIHVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiByZXNvdXJjZXNbXSwgTlM6
OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UpOworCisgICAgdm9pZCB1
c2VIZWFwKGNvbnN0IGNsYXNzIEhlYXAqIGhlYXApOworCisgICAgdm9pZCB1c2VIZWFwcyhNVEw6
OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICB2b2lkIHNhbXBsZUNv
dW50ZXJzSW5CdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVm
ZmVyLCBOUzo6VUludGVnZXIgc2FtcGxlSW5kZXgsIGJvb2wgYmFycmllcik7Cit9OworCit9CisK
Ky8vIG1ldGhvZDogYnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6ZGVzY3JpcHRvcjpzY3JhdGNo
QnVmZmVyOnNjcmF0Y2hCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXI6OmJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJl
KGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwg
Y29uc3QgTVRMOjpCdWZmZXIqIHNjcmF0Y2hCdWZmZXIsIE5TOjpVSW50ZWdlciBzY3JhdGNoQnVm
ZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChidWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZV9kZXNjcmlwdG9yX3NjcmF0Y2hC
dWZmZXJfc2NyYXRjaEJ1ZmZlck9mZnNldF8pLCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGRlc2Ny
aXB0b3IsIHNjcmF0Y2hCdWZmZXIsIHNjcmF0Y2hCdWZmZXJPZmZzZXQpOworfQorCisvLyBtZXRo
b2Q6IHJlZml0QWNjZWxlcmF0aW9uU3RydWN0dXJlOmRlc2NyaXB0b3I6ZGVzdGluYXRpb246c2Ny
YXRjaEJ1ZmZlcjpzY3JhdGNoQnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjpyZWZpdEFjY2VsZXJhdGlvblN0cnVj
dHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogc291cmNlQWNjZWxlcmF0aW9u
U3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IsIGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBkZXN0aW5hdGlvbkFj
Y2VsZXJhdGlvblN0cnVjdHVyZSwgY29uc3QgTVRMOjpCdWZmZXIqIHNjcmF0Y2hCdWZmZXIsIE5T
OjpVSW50ZWdlciBzY3JhdGNoQnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZWZpdEFjY2VsZXJhdGlvblN0cnVjdHVy
ZV9kZXNjcmlwdG9yX2Rlc3RpbmF0aW9uX3NjcmF0Y2hCdWZmZXJfc2NyYXRjaEJ1ZmZlck9mZnNl
dF8pLCBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGRlc2NyaXB0b3IsIGRlc3RpbmF0aW9u
QWNjZWxlcmF0aW9uU3RydWN0dXJlLCBzY3JhdGNoQnVmZmVyLCBzY3JhdGNoQnVmZmVyT2Zmc2V0
KTsKK30KKworLy8gbWV0aG9kOiBjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlOnRvQWNjZWxlcmF0
aW9uU3RydWN0dXJlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVy
ZUNvbW1hbmRFbmNvZGVyOjpjb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlKiBzb3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGNvbnN0IE1U
TDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBkZXN0aW5hdGlvbkFjY2VsZXJhdGlvblN0cnVjdHVy
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoY29weUFjY2VsZXJhdGlvblN0cnVjdHVyZV90b0FjY2VsZXJhdGlvblN0cnVjdHVyZV8pLCBz
b3VyY2VBY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGRlc3RpbmF0aW9uQWNjZWxlcmF0aW9uU3RydWN0
dXJlKTsKK30KKworLy8gbWV0aG9kOiB3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVy
ZVNpemU6dG9CdWZmZXI6b2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjp3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVj
dHVyZVNpemUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0
cnVjdHVyZSwgY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
d3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplX3RvQnVmZmVyX29mZnNldF8p
LCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGJ1ZmZlciwgb2Zmc2V0KTsKK30KKworLy8gbWV0aG9k
OiB3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemU6dG9CdWZmZXI6b2Zmc2V0
OnNpemVEYXRhVHlwZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVDb21tYW5kRW5jb2Rlcjo6d3JpdGVDb21wYWN0ZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXpl
KGNvbnN0IE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE1UTDo6RGF0
YVR5cGUgc2l6ZURhdGFUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTCh3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNp
emVfdG9CdWZmZXJfb2Zmc2V0X3NpemVEYXRhVHlwZV8pLCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUs
IGJ1ZmZlciwgb2Zmc2V0LCBzaXplRGF0YVR5cGUpOworfQorCisvLyBtZXRob2Q6IGNvcHlBbmRD
b21wYWN0QWNjZWxlcmF0aW9uU3RydWN0dXJlOnRvQWNjZWxlcmF0aW9uU3RydWN0dXJlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjpj
b3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlv
blN0cnVjdHVyZSogc291cmNlQWNjZWxlcmF0aW9uU3RydWN0dXJlLCBjb25zdCBNVEw6OkFjY2Vs
ZXJhdGlvblN0cnVjdHVyZSogZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1Y3R1cmUpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlB
bmRDb21wYWN0QWNjZWxlcmF0aW9uU3RydWN0dXJlX3RvQWNjZWxlcmF0aW9uU3RydWN0dXJlXyks
IHNvdXJjZUFjY2VsZXJhdGlvblN0cnVjdHVyZSwgZGVzdGluYXRpb25BY2NlbGVyYXRpb25TdHJ1
Y3R1cmUpOworfQorCisvLyBtZXRob2Q6IHVwZGF0ZUZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjp1cGRhdGVGZW5jZShjb25z
dCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRo
b2Q6IHdhaXRGb3JGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVDb21tYW5kRW5jb2Rlcjo6d2FpdEZvckZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh3YWl0Rm9yRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlOnVz
YWdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRF
bmNvZGVyOjp1c2VSZXNvdXJjZShjb25zdCBNVEw6OlJlc291cmNlKiByZXNvdXJjZSwgTVRMOjpS
ZXNvdXJjZVVzYWdlIHVzYWdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTCh1c2VSZXNvdXJjZV91c2FnZV8pLCByZXNvdXJjZSwgdXNhZ2Up
OworfQorCisvLyBtZXRob2Q6IHVzZVJlc291cmNlczpjb3VudDp1c2FnZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3Vy
Y2VzKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6
UmVzb3VyY2VVc2FnZSB1c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVzb3VyY2VzX2NvdW50X3VzYWdlXyksIHJlc291cmNl
cywgY291bnQsIHVzYWdlKTsKK30KKworLy8gbWV0aG9kOiB1c2VIZWFwOgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwKGNv
bnN0IE1UTDo6SGVhcCogaGVhcCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwodXNlSGVhcF8pLCBoZWFwKTsKK30KKworLy8gbWV0aG9kOiB1
c2VIZWFwczpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6VUludGVn
ZXIgY291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHVzZUhlYXBzX2NvdW50XyksIGhlYXBzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhv
ZDogc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcjphdFNhbXBsZUluZGV4OndpdGhCYXJyaWVyOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVyOjpz
YW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogc2Ft
cGxlQnVmZmVyLCBOUzo6VUludGVnZXIgc2FtcGxlSW5kZXgsIGJvb2wgYmFycmllcikKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxl
Q291bnRlcnNJbkJ1ZmZlcl9hdFNhbXBsZUluZGV4X3dpdGhCYXJyaWVyXyksIHNhbXBsZUJ1ZmZl
ciwgc2FtcGxlSW5kZXgsIGJhcnJpZXIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVUeXBlcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU3NjdkYzkxNWNjMWJiOTBjNDE4YWI0MDc4MDJi
NTBkOWMxNTdiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUeXBlcy5ocHAKQEAgLTAsMCArMSwx
NjkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIE1ldGFsL01UTEFjY2VsZXJhdGlvblN0cnVjdHVyZVR5cGVzLmhwcAorLy8KKy8vIENvcHly
aWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8g
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
Ky8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIK
KyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisj
aW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwIgorCisjaW5jbHVkZSAi
Li4vRm91bmRhdGlvbi9OU1JhbmdlLmhwcCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBNVEwKK3sKK3N0cnVjdCBQYWNrZWRGbG9h
dDMKK3sKKyAgICBQYWNrZWRGbG9hdDMoKTsKKyAgICBQYWNrZWRGbG9hdDMoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeik7CisKKyAgICBmbG9hdCYgb3BlcmF0b3JbXShpbnQgaWR4KTsKKyAgICBm
bG9hdCAgb3BlcmF0b3JbXShpbnQgaWR4KSBjb25zdDsKKworICAgIHVuaW9uCisgICAgeworICAg
ICAgICBzdHJ1Y3QKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgeDsKKyAgICAgICAgICAg
IGZsb2F0IHk7CisgICAgICAgICAgICBmbG9hdCB6OworICAgICAgICB9OworCisgICAgICAgIGZs
b2F0IGVsZW1lbnRzWzNdOworICAgIH07Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgUGFja2Vk
RmxvYXQ0eDMKK3sKKyAgICBQYWNrZWRGbG9hdDR4MygpOworICAgIFBhY2tlZEZsb2F0NHgzKGNv
bnN0IFBhY2tlZEZsb2F0MyYgY29sMCwgY29uc3QgUGFja2VkRmxvYXQzJiBjb2wxLCBjb25zdCBQ
YWNrZWRGbG9hdDMmIGNvbDIsIGNvbnN0IFBhY2tlZEZsb2F0MyYgY29sMyk7CisKKyAgICBQYWNr
ZWRGbG9hdDMmICAgICAgIG9wZXJhdG9yW10oaW50IGlkeCk7CisgICAgY29uc3QgUGFja2VkRmxv
YXQzJiBvcGVyYXRvcltdKGludCBpZHgpIGNvbnN0OworCisgICAgUGFja2VkRmxvYXQzICAgICAg
ICBjb2x1bW5zWzRdOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IEF4aXNBbGlnbmVkQm91bmRp
bmdCb3gKK3sKKyAgICBBeGlzQWxpZ25lZEJvdW5kaW5nQm94KCk7CisgICAgQXhpc0FsaWduZWRC
b3VuZGluZ0JveChQYWNrZWRGbG9hdDMgcCk7CisgICAgQXhpc0FsaWduZWRCb3VuZGluZ0JveChQ
YWNrZWRGbG9hdDMgbWluLCBQYWNrZWRGbG9hdDMgbWF4KTsKKworICAgIFBhY2tlZEZsb2F0MyBt
aW47CisgICAgUGFja2VkRmxvYXQzIG1heDsKK30gX01UTF9QQUNLRUQ7Cit9CisKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSBNVEw6
OlBhY2tlZEZsb2F0Mzo6UGFja2VkRmxvYXQzKCkKKyAgICA6IHgoMC4wZikKKyAgICAsIHkoMC4w
ZikKKyAgICAsIHooMC4wZikKK3sKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6UGFja2VkRmxvYXQzOjpQYWNrZWRG
bG9hdDMoZmxvYXQgX3gsIGZsb2F0IF95LCBmbG9hdCBfeikKKyAgICA6IHgoX3gpCisgICAgLCB5
KF95KQorICAgICwgeihfeikKK3sKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIGZsb2F0JiBNVEw6OlBhY2tlZEZsb2F0Mzo6
b3BlcmF0b3JbXShpbnQgaWR4KQoreworICAgIHJldHVybiBlbGVtZW50c1tpZHhdOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJ
TkUgZmxvYXQgTVRMOjpQYWNrZWRGbG9hdDM6Om9wZXJhdG9yW10oaW50IGlkeCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZWxlbWVudHNbaWR4XTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6UGFja2VkRmxvYXQ0eDM6
OlBhY2tlZEZsb2F0NHgzKCkKK3sKKyAgICBjb2x1bW5zWzBdID0gUGFja2VkRmxvYXQzKDAuMGYs
IDAuMGYsIDAuMGYpOworICAgIGNvbHVtbnNbMV0gPSBQYWNrZWRGbG9hdDMoMC4wZiwgMC4wZiwg
MC4wZik7CisgICAgY29sdW1uc1syXSA9IFBhY2tlZEZsb2F0MygwLjBmLCAwLjBmLCAwLjBmKTsK
KyAgICBjb2x1bW5zWzNdID0gUGFja2VkRmxvYXQzKDAuMGYsIDAuMGYsIDAuMGYpOworfQorCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJ
TkUgTVRMOjpQYWNrZWRGbG9hdDR4Mzo6UGFja2VkRmxvYXQ0eDMoY29uc3QgUGFja2VkRmxvYXQz
JiBjb2wwLCBjb25zdCBQYWNrZWRGbG9hdDMmIGNvbDEsIGNvbnN0IFBhY2tlZEZsb2F0MyYgY29s
MiwgY29uc3QgUGFja2VkRmxvYXQzJiBjb2wzKQoreworICAgIGNvbHVtbnNbMF0gPSBjb2wwOwor
ICAgIGNvbHVtbnNbMV0gPSBjb2wxOworICAgIGNvbHVtbnNbMl0gPSBjb2wyOworICAgIGNvbHVt
bnNbM10gPSBjb2wzOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpQYWNrZWRGbG9hdDMmIE1UTDo6UGFja2VkRmxv
YXQ0eDM6Om9wZXJhdG9yW10oaW50IGlkeCkKK3sKKyAgICByZXR1cm4gY29sdW1uc1tpZHhdOwor
fQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01U
TF9JTkxJTkUgY29uc3QgTVRMOjpQYWNrZWRGbG9hdDMmIE1UTDo6UGFja2VkRmxvYXQ0eDM6Om9w
ZXJhdG9yW10oaW50IGlkeCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29sdW1uc1tpZHhdOworfQor
CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9J
TkxJTkUgTVRMOjpBeGlzQWxpZ25lZEJvdW5kaW5nQm94OjpBeGlzQWxpZ25lZEJvdW5kaW5nQm94
KCkKKyAgICA6IG1pbihJTkZJTklUWSwgSU5GSU5JVFksIElORklOSVRZKQorICAgICwgbWF4KC1J
TkZJTklUWSwgLUlORklOSVRZLCAtSU5GSU5JVFkpCit7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSBNVEw6OkF4aXNBbGln
bmVkQm91bmRpbmdCb3g6OkF4aXNBbGlnbmVkQm91bmRpbmdCb3goUGFja2VkRmxvYXQzIHApCisg
ICAgOiBtaW4ocCkKKyAgICAsIG1heChwKQoreworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgTVRMOjpBeGlzQWxpZ25lZEJv
dW5kaW5nQm94OjpBeGlzQWxpZ25lZEJvdW5kaW5nQm94KFBhY2tlZEZsb2F0MyBfbWluLCBQYWNr
ZWRGbG9hdDMgX21heCkKKyAgICA6IG1pbihfbWluKQorICAgICwgbWF4KF9tYXgpCit7Cit9CisK
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEFyZ3VtZW50LmhwcCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudC5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODA1N2ZlMDgwMjhlMjAwMDczNGYyMjJkMjU4MDRiYjgyYzZhN2ZjZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1
bWVudC5ocHAKQEAgLTAsMCArMSw2NTUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEFyZ3VtZW50LmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMQXJndW1lbnQuaHBwIgorI2luY2x1ZGUgIk1UTFRleHR1cmUuaHBwIgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBEYXRhVHlwZSkgeworICAg
IERhdGFUeXBlTm9uZSA9IDAsCisgICAgRGF0YVR5cGVTdHJ1Y3QgPSAxLAorICAgIERhdGFUeXBl
QXJyYXkgPSAyLAorICAgIERhdGFUeXBlRmxvYXQgPSAzLAorICAgIERhdGFUeXBlRmxvYXQyID0g
NCwKKyAgICBEYXRhVHlwZUZsb2F0MyA9IDUsCisgICAgRGF0YVR5cGVGbG9hdDQgPSA2LAorICAg
IERhdGFUeXBlRmxvYXQyeDIgPSA3LAorICAgIERhdGFUeXBlRmxvYXQyeDMgPSA4LAorICAgIERh
dGFUeXBlRmxvYXQyeDQgPSA5LAorICAgIERhdGFUeXBlRmxvYXQzeDIgPSAxMCwKKyAgICBEYXRh
VHlwZUZsb2F0M3gzID0gMTEsCisgICAgRGF0YVR5cGVGbG9hdDN4NCA9IDEyLAorICAgIERhdGFU
eXBlRmxvYXQ0eDIgPSAxMywKKyAgICBEYXRhVHlwZUZsb2F0NHgzID0gMTQsCisgICAgRGF0YVR5
cGVGbG9hdDR4NCA9IDE1LAorICAgIERhdGFUeXBlSGFsZiA9IDE2LAorICAgIERhdGFUeXBlSGFs
ZjIgPSAxNywKKyAgICBEYXRhVHlwZUhhbGYzID0gMTgsCisgICAgRGF0YVR5cGVIYWxmNCA9IDE5
LAorICAgIERhdGFUeXBlSGFsZjJ4MiA9IDIwLAorICAgIERhdGFUeXBlSGFsZjJ4MyA9IDIxLAor
ICAgIERhdGFUeXBlSGFsZjJ4NCA9IDIyLAorICAgIERhdGFUeXBlSGFsZjN4MiA9IDIzLAorICAg
IERhdGFUeXBlSGFsZjN4MyA9IDI0LAorICAgIERhdGFUeXBlSGFsZjN4NCA9IDI1LAorICAgIERh
dGFUeXBlSGFsZjR4MiA9IDI2LAorICAgIERhdGFUeXBlSGFsZjR4MyA9IDI3LAorICAgIERhdGFU
eXBlSGFsZjR4NCA9IDI4LAorICAgIERhdGFUeXBlSW50ID0gMjksCisgICAgRGF0YVR5cGVJbnQy
ID0gMzAsCisgICAgRGF0YVR5cGVJbnQzID0gMzEsCisgICAgRGF0YVR5cGVJbnQ0ID0gMzIsCisg
ICAgRGF0YVR5cGVVSW50ID0gMzMsCisgICAgRGF0YVR5cGVVSW50MiA9IDM0LAorICAgIERhdGFU
eXBlVUludDMgPSAzNSwKKyAgICBEYXRhVHlwZVVJbnQ0ID0gMzYsCisgICAgRGF0YVR5cGVTaG9y
dCA9IDM3LAorICAgIERhdGFUeXBlU2hvcnQyID0gMzgsCisgICAgRGF0YVR5cGVTaG9ydDMgPSAz
OSwKKyAgICBEYXRhVHlwZVNob3J0NCA9IDQwLAorICAgIERhdGFUeXBlVVNob3J0ID0gNDEsCisg
ICAgRGF0YVR5cGVVU2hvcnQyID0gNDIsCisgICAgRGF0YVR5cGVVU2hvcnQzID0gNDMsCisgICAg
RGF0YVR5cGVVU2hvcnQ0ID0gNDQsCisgICAgRGF0YVR5cGVDaGFyID0gNDUsCisgICAgRGF0YVR5
cGVDaGFyMiA9IDQ2LAorICAgIERhdGFUeXBlQ2hhcjMgPSA0NywKKyAgICBEYXRhVHlwZUNoYXI0
ID0gNDgsCisgICAgRGF0YVR5cGVVQ2hhciA9IDQ5LAorICAgIERhdGFUeXBlVUNoYXIyID0gNTAs
CisgICAgRGF0YVR5cGVVQ2hhcjMgPSA1MSwKKyAgICBEYXRhVHlwZVVDaGFyNCA9IDUyLAorICAg
IERhdGFUeXBlQm9vbCA9IDUzLAorICAgIERhdGFUeXBlQm9vbDIgPSA1NCwKKyAgICBEYXRhVHlw
ZUJvb2wzID0gNTUsCisgICAgRGF0YVR5cGVCb29sNCA9IDU2LAorICAgIERhdGFUeXBlVGV4dHVy
ZSA9IDU4LAorICAgIERhdGFUeXBlU2FtcGxlciA9IDU5LAorICAgIERhdGFUeXBlUG9pbnRlciA9
IDYwLAorICAgIERhdGFUeXBlUjhVbm9ybSA9IDYyLAorICAgIERhdGFUeXBlUjhTbm9ybSA9IDYz
LAorICAgIERhdGFUeXBlUjE2VW5vcm0gPSA2NCwKKyAgICBEYXRhVHlwZVIxNlNub3JtID0gNjUs
CisgICAgRGF0YVR5cGVSRzhVbm9ybSA9IDY2LAorICAgIERhdGFUeXBlUkc4U25vcm0gPSA2NywK
KyAgICBEYXRhVHlwZVJHMTZVbm9ybSA9IDY4LAorICAgIERhdGFUeXBlUkcxNlNub3JtID0gNjks
CisgICAgRGF0YVR5cGVSR0JBOFVub3JtID0gNzAsCisgICAgRGF0YVR5cGVSR0JBOFVub3JtX3NS
R0IgPSA3MSwKKyAgICBEYXRhVHlwZVJHQkE4U25vcm0gPSA3MiwKKyAgICBEYXRhVHlwZVJHQkEx
NlVub3JtID0gNzMsCisgICAgRGF0YVR5cGVSR0JBMTZTbm9ybSA9IDc0LAorICAgIERhdGFUeXBl
UkdCMTBBMlVub3JtID0gNzUsCisgICAgRGF0YVR5cGVSRzExQjEwRmxvYXQgPSA3NiwKKyAgICBE
YXRhVHlwZVJHQjlFNUZsb2F0ID0gNzcsCisgICAgRGF0YVR5cGVSZW5kZXJQaXBlbGluZSA9IDc4
LAorICAgIERhdGFUeXBlQ29tcHV0ZVBpcGVsaW5lID0gNzksCisgICAgRGF0YVR5cGVJbmRpcmVj
dENvbW1hbmRCdWZmZXIgPSA4MCwKKyAgICBEYXRhVHlwZUxvbmcgPSA4MSwKKyAgICBEYXRhVHlw
ZUxvbmcyID0gODIsCisgICAgRGF0YVR5cGVMb25nMyA9IDgzLAorICAgIERhdGFUeXBlTG9uZzQg
PSA4NCwKKyAgICBEYXRhVHlwZVVMb25nID0gODUsCisgICAgRGF0YVR5cGVVTG9uZzIgPSA4NiwK
KyAgICBEYXRhVHlwZVVMb25nMyA9IDg3LAorICAgIERhdGFUeXBlVUxvbmc0ID0gODgsCisgICAg
RGF0YVR5cGVWaXNpYmxlRnVuY3Rpb25UYWJsZSA9IDExNSwKKyAgICBEYXRhVHlwZUludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGUgPSAxMTYsCisgICAgRGF0YVR5cGVQcmltaXRpdmVBY2NlbGVyYXRp
b25TdHJ1Y3R1cmUgPSAxMTcsCisgICAgRGF0YVR5cGVJbnN0YW5jZUFjY2VsZXJhdGlvblN0cnVj
dHVyZSA9IDExOCwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIEFyZ3VtZW50VHlwZSkg
eworICAgIEFyZ3VtZW50VHlwZUJ1ZmZlciA9IDAsCisgICAgQXJndW1lbnRUeXBlVGhyZWFkZ3Jv
dXBNZW1vcnkgPSAxLAorICAgIEFyZ3VtZW50VHlwZVRleHR1cmUgPSAyLAorICAgIEFyZ3VtZW50
VHlwZVNhbXBsZXIgPSAzLAorICAgIEFyZ3VtZW50VHlwZUltYWdlYmxvY2tEYXRhID0gMTYsCisg
ICAgQXJndW1lbnRUeXBlSW1hZ2VibG9jayA9IDE3LAorICAgIEFyZ3VtZW50VHlwZVZpc2libGVG
dW5jdGlvblRhYmxlID0gMjQsCisgICAgQXJndW1lbnRUeXBlUHJpbWl0aXZlQWNjZWxlcmF0aW9u
U3RydWN0dXJlID0gMjUsCisgICAgQXJndW1lbnRUeXBlSW5zdGFuY2VBY2NlbGVyYXRpb25TdHJ1
Y3R1cmUgPSAyNiwKKyAgICBBcmd1bWVudFR5cGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlID0g
MjcsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBBcmd1bWVudEFjY2VzcykgeworICAg
IEFyZ3VtZW50QWNjZXNzUmVhZE9ubHkgPSAwLAorICAgIEFyZ3VtZW50QWNjZXNzUmVhZFdyaXRl
ID0gMSwKKyAgICBBcmd1bWVudEFjY2Vzc1dyaXRlT25seSA9IDIsCit9OworCitjbGFzcyBUeXBl
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxUeXBlPgoreworcHVibGljOgorICAgIHN0YXRpYyBj
bGFzcyBUeXBlKiBhbGxvYygpOworCisgICAgY2xhc3MgVHlwZSogICAgICAgIGluaXQoKTsKKwor
ICAgIE1UTDo6RGF0YVR5cGUgICAgICBkYXRhVHlwZSgpIGNvbnN0OworfTsKKworY2xhc3MgU3Ry
dWN0TWVtYmVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxTdHJ1Y3RNZW1iZXI+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIGNsYXNzIFN0cnVjdE1lbWJlciogIGFsbG9jKCk7CisKKyAgICBjbGFz
cyBTdHJ1Y3RNZW1iZXIqICAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAg
ICAgICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICBvZmZzZXQoKSBjb25zdDsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgICBkYXRh
VHlwZSgpIGNvbnN0OworCisgICAgY2xhc3MgU3RydWN0VHlwZSogICAgICAgICAgIHN0cnVjdFR5
cGUoKTsKKworICAgIGNsYXNzIEFycmF5VHlwZSogICAgICAgICAgICBhcnJheVR5cGUoKTsKKwor
ICAgIGNsYXNzIFRleHR1cmVSZWZlcmVuY2VUeXBlKiB0ZXh0dXJlUmVmZXJlbmNlVHlwZSgpOwor
CisgICAgY2xhc3MgUG9pbnRlclR5cGUqICAgICAgICAgIHBvaW50ZXJUeXBlKCk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgYXJndW1lbnRJbmRleCgpIGNvbnN0OworfTsKKwor
Y2xhc3MgU3RydWN0VHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8U3RydWN0VHlwZSwgVHlw
ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgU3RydWN0VHlwZSogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIFN0cnVjdFR5cGUqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAg
ICAgICAgICAgICAgbWVtYmVycygpIGNvbnN0OworCisgICAgY2xhc3MgU3RydWN0TWVtYmVyKiAg
ICAgIG1lbWJlckJ5TmFtZShjb25zdCBOUzo6U3RyaW5nKiBuYW1lKTsKK307CisKK2NsYXNzIEFy
cmF5VHlwZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QXJyYXlUeXBlLCBUeXBlPgoreworcHVi
bGljOgorICAgIHN0YXRpYyBjbGFzcyBBcnJheVR5cGUqICAgICBhbGxvYygpOworCisgICAgY2xh
c3MgQXJyYXlUeXBlKiAgICAgICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6RGF0YVR5cGUgICAg
ICAgICAgICAgICBlbGVtZW50VHlwZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgIGFycmF5TGVuZ3RoKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICAgICAgc3RyaWRlKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAg
ICAgYXJndW1lbnRJbmRleFN0cmlkZSgpIGNvbnN0OworCisgICAgY2xhc3MgU3RydWN0VHlwZSog
ICAgICAgICAgIGVsZW1lbnRTdHJ1Y3RUeXBlKCk7CisKKyAgICBjbGFzcyBBcnJheVR5cGUqICAg
ICAgICAgICAgZWxlbWVudEFycmF5VHlwZSgpOworCisgICAgY2xhc3MgVGV4dHVyZVJlZmVyZW5j
ZVR5cGUqIGVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlwZSgpOworCisgICAgY2xhc3MgUG9pbnRl
clR5cGUqICAgICAgICAgIGVsZW1lbnRQb2ludGVyVHlwZSgpOworfTsKKworY2xhc3MgUG9pbnRl
clR5cGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFBvaW50ZXJUeXBlLCBUeXBlPgoreworcHVi
bGljOgorICAgIHN0YXRpYyBjbGFzcyBQb2ludGVyVHlwZSogYWxsb2MoKTsKKworICAgIGNsYXNz
IFBvaW50ZXJUeXBlKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAg
ICAgICBlbGVtZW50VHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpBcmd1bWVudEFjY2VzcyAgICAg
ICBhY2Nlc3MoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgYWxpZ25t
ZW50KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgIGRhdGFTaXplKCkg
Y29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRJc0FyZ3VtZW50
QnVmZmVyKCkgY29uc3Q7CisKKyAgICBjbGFzcyBTdHJ1Y3RUeXBlKiAgICAgICAgIGVsZW1lbnRT
dHJ1Y3RUeXBlKCk7CisKKyAgICBjbGFzcyBBcnJheVR5cGUqICAgICAgICAgIGVsZW1lbnRBcnJh
eVR5cGUoKTsKK307CisKK2NsYXNzIFRleHR1cmVSZWZlcmVuY2VUeXBlIDogcHVibGljIE5TOjpS
ZWZlcmVuY2luZzxUZXh0dXJlUmVmZXJlbmNlVHlwZSwgVHlwZT4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgVGV4dHVyZVJlZmVyZW5jZVR5cGUqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBU
ZXh0dXJlUmVmZXJlbmNlVHlwZSogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6RGF0YVR5cGUg
ICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZURhdGFUeXBlKCkgY29uc3Q7CisKKyAgICBNVEw6
OlRleHR1cmVUeXBlICAgICAgICAgICAgICAgICAgIHRleHR1cmVUeXBlKCkgY29uc3Q7CisKKyAg
ICBNVEw6OkFyZ3VtZW50QWNjZXNzICAgICAgICAgICAgICAgIGFjY2VzcygpIGNvbnN0OworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0RlcHRoVGV4dHVyZSgpIGNv
bnN0OworfTsKKworY2xhc3MgQXJndW1lbnQgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFyZ3Vt
ZW50PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBcmd1bWVudCogYWxsb2MoKTsKKwor
ICAgIGNsYXNzIEFyZ3VtZW50KiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAg
ICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAgICBNVEw6OkFyZ3VtZW50VHlwZSAgICAgIHR5cGUo
KSBjb25zdDsKKworICAgIE1UTDo6QXJndW1lbnRBY2Nlc3MgICAgYWNjZXNzKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgIGluZGV4KCkgY29uc3Q7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgIGFjdGl2ZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICBidWZmZXJBbGlnbm1lbnQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgYnVmZmVyRGF0YVNpemUoKSBjb25zdDsKKworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAg
YnVmZmVyRGF0YVR5cGUoKSBjb25zdDsKKworICAgIGNsYXNzIFN0cnVjdFR5cGUqICAgICAgYnVm
ZmVyU3RydWN0VHlwZSgpIGNvbnN0OworCisgICAgY2xhc3MgUG9pbnRlclR5cGUqICAgICBidWZm
ZXJQb2ludGVyVHlwZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICB0aHJl
YWRncm91cE1lbW9yeUFsaWdubWVudCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICB0aHJlYWRncm91cE1lbW9yeURhdGFTaXplKCkgY29uc3Q7CisKKyAgICBNVEw6OlRleHR1
cmVUeXBlICAgICAgIHRleHR1cmVUeXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OkRhdGFUeXBlICAg
ICAgICAgIHRleHR1cmVEYXRhVHlwZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICBpc0RlcHRoVGV4dHVyZSgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAg
ICBhcnJheUxlbmd0aCgpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxv
YworX01UTF9JTkxJTkUgTVRMOjpUeXBlKiBNVEw6OlR5cGU6OmFsbG9jKCkKK3sKKyAgICByZXR1
cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpUeXBlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFR5cGUp
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlR5cGUqIE1UTDo6VHlw
ZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpUeXBlPigpOwor
fQorCisvLyBwcm9wZXJ0eTogZGF0YVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRM
OjpUeXBlOjpkYXRhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChkYXRhVHlwZSkpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RNZW1iZXIq
IE1UTDo6U3RydWN0TWVtYmVyOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFs
bG9jPE1UTDo6U3RydWN0TWVtYmVyPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFN0cnVjdE1lbWJlcikp
OworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0TWVtYmVyKiBN
VEw6OlN0cnVjdE1lbWJlcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8
TVRMOjpTdHJ1Y3RNZW1iZXI+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBuYW1lCitfTVRMX0lOTElO
RSBOUzo6U3RyaW5nKiBNVEw6OlN0cnVjdE1lbWJlcjo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTogb2Zmc2V0CitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpTdHJ1Y3RNZW1iZXI6Om9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9m
ZnNldCkpOworfQorCisvLyBwcm9wZXJ0eTogZGF0YVR5cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0
YVR5cGUgTVRMOjpTdHJ1Y3RNZW1iZXI6OmRhdGFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGRhdGFUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogc3RydWN0VHlwZQorX01UTF9JTkxJTkUgTVRM
OjpTdHJ1Y3RUeXBlKiBNVEw6OlN0cnVjdE1lbWJlcjo6c3RydWN0VHlwZSgpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdHJ1Y3RUeXBlKj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdHJ1Y3RUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogYXJyYXlUeXBlCitfTVRMX0lO
TElORSBNVEw6OkFycmF5VHlwZSogTVRMOjpTdHJ1Y3RNZW1iZXI6OmFycmF5VHlwZSgpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcnJheVR5cGUqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGFycmF5VHlwZSkpOworfQorCisvLyBtZXRob2Q6IHRleHR1cmVSZWZlcmVu
Y2VUeXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBlKiBNVEw6OlN0cnVj
dE1lbWJlcjo6dGV4dHVyZVJlZmVyZW5jZVR5cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHRleHR1cmVSZWZlcmVuY2VUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDogcG9pbnRlclR5cGUK
K19NVExfSU5MSU5FIE1UTDo6UG9pbnRlclR5cGUqIE1UTDo6U3RydWN0TWVtYmVyOjpwb2ludGVy
VHlwZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQb2ludGVyVHlw
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocG9pbnRlclR5cGUpKTsKK30KKworLy8gcHJvcGVy
dHk6IGFyZ3VtZW50SW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlN0cnVjdE1l
bWJlcjo6YXJndW1lbnRJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50SW5kZXgp
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6U3RydWN0
VHlwZSogTVRMOjpTdHJ1Y3RUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6U3RydWN0VHlwZT4oX01UTF9QUklWQVRFX0NMUyhNVExTdHJ1Y3RUeXBlKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RUeXBlKiBNVEw6
OlN0cnVjdFR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
U3RydWN0VHlwZT4oKTsKK30KKworLy8gcHJvcGVydHk6IG1lbWJlcnMKK19NVExfSU5MSU5FIE5T
OjpBcnJheSogTVRMOjpTdHJ1Y3RUeXBlOjptZW1iZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1l
bWJlcnMpKTsKK30KKworLy8gbWV0aG9kOiBtZW1iZXJCeU5hbWU6CitfTVRMX0lOTElORSBNVEw6
OlN0cnVjdE1lbWJlciogTVRMOjpTdHJ1Y3RUeXBlOjptZW1iZXJCeU5hbWUoY29uc3QgTlM6OlN0
cmluZyogbmFtZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0cnVj
dE1lbWJlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtYmVyQnlOYW1lXyksIG5hbWUpOwor
fQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBcnJheVR5cGUq
IE1UTDo6QXJyYXlUeXBlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6QXJyYXlUeXBlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFycmF5VHlwZSkpOworfQorCisv
LyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QXJyYXlUeXBlKiBNVEw6OkFycmF5VHlw
ZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBcnJheVR5cGU+
KCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbGVtZW50VHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRh
VHlwZSBNVEw6OkFycmF5VHlwZTo6ZWxlbWVudFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZWxlbWVudFR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFycmF5TGVuZ3RoCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpBcnJheVR5cGU6OmFycmF5TGVuZ3RoKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYXJyYXlMZW5ndGgpKTsKK30KKworLy8gcHJvcGVydHk6IHN0cmlkZQorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJyYXlUeXBlOjpzdHJpZGUoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdHJpZGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFyZ3VtZW50SW5kZXhTdHJpZGUK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFycmF5VHlwZTo6YXJndW1lbnRJbmRleFN0
cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFyZ3VtZW50SW5kZXhTdHJpZGUpKTsKK30KKwor
Ly8gbWV0aG9kOiBlbGVtZW50U3RydWN0VHlwZQorX01UTF9JTkxJTkUgTVRMOjpTdHJ1Y3RUeXBl
KiBNVEw6OkFycmF5VHlwZTo6ZWxlbWVudFN0cnVjdFR5cGUoKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RydWN0VHlwZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZWxlbWVudFN0cnVjdFR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBlbGVtZW50QXJyYXlUeXBlCitf
TVRMX0lOTElORSBNVEw6OkFycmF5VHlwZSogTVRMOjpBcnJheVR5cGU6OmVsZW1lbnRBcnJheVR5
cGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJyYXlUeXBlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50QXJyYXlUeXBlKSk7Cit9CisKKy8vIG1ldGhv
ZDogZWxlbWVudFRleHR1cmVSZWZlcmVuY2VUeXBlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVS
ZWZlcmVuY2VUeXBlKiBNVEw6OkFycmF5VHlwZTo6ZWxlbWVudFRleHR1cmVSZWZlcmVuY2VUeXBl
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVSZWZlcmVu
Y2VUeXBlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbGVtZW50VGV4dHVyZVJlZmVyZW5jZVR5
cGUpKTsKK30KKworLy8gbWV0aG9kOiBlbGVtZW50UG9pbnRlclR5cGUKK19NVExfSU5MSU5FIE1U
TDo6UG9pbnRlclR5cGUqIE1UTDo6QXJyYXlUeXBlOjplbGVtZW50UG9pbnRlclR5cGUoKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UG9pbnRlclR5cGUqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRQb2ludGVyVHlwZSkpOworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpQb2ludGVyVHlwZSogTVRMOjpQb2ludGVyVHlw
ZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlBvaW50ZXJU
eXBlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFBvaW50ZXJUeXBlKSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpQb2ludGVyVHlwZSogTVRMOjpQb2ludGVyVHlwZTo6aW5p
dCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpQb2ludGVyVHlwZT4oKTsK
K30KKworLy8gcHJvcGVydHk6IGVsZW1lbnRUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBl
IE1UTDo6UG9pbnRlclR5cGU6OmVsZW1lbnRUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVs
ZW1lbnRUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY2Nlc3MKK19NVExfSU5MSU5FIE1UTDo6
QXJndW1lbnRBY2Nlc3MgTVRMOjpQb2ludGVyVHlwZTo6YWNjZXNzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGFjY2VzcykpOworfQorCisvLyBwcm9wZXJ0eTogYWxpZ25tZW50CitfTVRM
X0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpQb2ludGVyVHlwZTo6YWxpZ25tZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoYWxpZ25tZW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBkYXRhU2l6ZQor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UG9pbnRlclR5cGU6OmRhdGFTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoZGF0YVNpemUpKTsKK30KKworLy8gcHJvcGVydHk6IGVsZW1lbnRJ
c0FyZ3VtZW50QnVmZmVyCitfTVRMX0lOTElORSBib29sIE1UTDo6UG9pbnRlclR5cGU6OmVsZW1l
bnRJc0FyZ3VtZW50QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRJc0FyZ3VtZW50QnVmZmVy
KSk7Cit9CisKKy8vIG1ldGhvZDogZWxlbWVudFN0cnVjdFR5cGUKK19NVExfSU5MSU5FIE1UTDo6
U3RydWN0VHlwZSogTVRMOjpQb2ludGVyVHlwZTo6ZWxlbWVudFN0cnVjdFR5cGUoKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RydWN0VHlwZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZWxlbWVudFN0cnVjdFR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBlbGVtZW50
QXJyYXlUeXBlCitfTVRMX0lOTElORSBNVEw6OkFycmF5VHlwZSogTVRMOjpQb2ludGVyVHlwZTo6
ZWxlbWVudEFycmF5VHlwZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBcnJheVR5cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVsZW1lbnRBcnJheVR5cGUpKTsK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVJl
ZmVyZW5jZVR5cGUqIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGU6OmFsbG9jKCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZT4oX01UTF9Q
UklWQVRFX0NMUyhNVExUZXh0dXJlUmVmZXJlbmNlVHlwZSkpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVJlZmVyZW5jZVR5cGUqIE1UTDo6VGV4dHVyZVJl
ZmVyZW5jZVR5cGU6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
VGV4dHVyZVJlZmVyZW5jZVR5cGU+KCk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlRGF0YVR5
cGUKK19NVExfSU5MSU5FIE1UTDo6RGF0YVR5cGUgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6
dGV4dHVyZURhdGFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVEYXRhVHlwZSkp
OworfQorCisvLyBwcm9wZXJ0eTogdGV4dHVyZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVy
ZVR5cGUgTVRMOjpUZXh0dXJlUmVmZXJlbmNlVHlwZTo6dGV4dHVyZVR5cGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVR5cGU+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodGV4dHVyZVR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFjY2Vzcwor
X01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEFjY2VzcyBNVEw6OlRleHR1cmVSZWZlcmVuY2VUeXBl
OjphY2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QXJndW1lbnRBY2Nlc3M+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWNjZXNzKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpc0RlcHRoVGV4dHVyZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlRleHR1cmVS
ZWZlcmVuY2VUeXBlOjppc0RlcHRoVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0RlcHRoVGV4dHVy
ZSkpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBcmd1
bWVudCogTVRMOjpBcmd1bWVudDo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojph
bGxvYzxNVEw6OkFyZ3VtZW50PihfTVRMX1BSSVZBVEVfQ0xTKE1UTEFyZ3VtZW50KSk7Cit9CisK
Ky8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudCogTVRMOjpBcmd1bWVu
dDo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBcmd1bWVudD4o
KTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6
QXJndW1lbnQ6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJv
cGVydHk6IHR5cGUKK19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnRUeXBlIE1UTDo6QXJndW1lbnQ6
OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXJn
dW1lbnRUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHR5cGUpKTsKK30KKworLy8gcHJvcGVy
dHk6IGFjY2VzcworX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEFjY2VzcyBNVEw6OkFyZ3VtZW50
OjphY2Nlc3MoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QXJndW1lbnRBY2Nlc3M+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWNjZXNzKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBpbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6
OmluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXgpKTsKK30KKworLy8gcHJvcGVydHk6
IGFjdGl2ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkFyZ3VtZW50OjphY3RpdmUoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoaXNBY3RpdmUpKTsKK30KKworLy8gcHJvcGVydHk6IGJ1ZmZlckFsaWdubWVudAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6OmJ1ZmZlckFsaWdubWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlckFsaWdubWVudCkpOworfQorCisvLyBwcm9wZXJ0eTog
YnVmZmVyRGF0YVNpemUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50Ojpi
dWZmZXJEYXRhU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlckRhdGFTaXplKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBidWZmZXJEYXRhVHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRhVHlw
ZSBNVEw6OkFyZ3VtZW50OjpidWZmZXJEYXRhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChi
dWZmZXJEYXRhVHlwZSkpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVyU3RydWN0VHlwZQorX01U
TF9JTkxJTkUgTVRMOjpTdHJ1Y3RUeXBlKiBNVEw6OkFyZ3VtZW50OjpidWZmZXJTdHJ1Y3RUeXBl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0cnVjdFR5
cGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlclN0cnVjdFR5cGUpKTsKK30KKworLy8g
cHJvcGVydHk6IGJ1ZmZlclBvaW50ZXJUeXBlCitfTVRMX0lOTElORSBNVEw6OlBvaW50ZXJUeXBl
KiBNVEw6OkFyZ3VtZW50OjpidWZmZXJQb2ludGVyVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQb2ludGVyVHlwZSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoYnVmZmVyUG9pbnRlclR5cGUpKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZGdyb3Vw
TWVtb3J5QWxpZ25tZW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpBcmd1bWVudDo6
dGhyZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRn
cm91cE1lbW9yeUFsaWdubWVudCkpOworfQorCisvLyBwcm9wZXJ0eTogdGhyZWFkZ3JvdXBNZW1v
cnlEYXRhU2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXJndW1lbnQ6OnRocmVh
ZGdyb3VwTWVtb3J5RGF0YVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRncm91cE1l
bW9yeURhdGFTaXplKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlVHlwZQorX01UTF9JTkxJ
TkUgTVRMOjpUZXh0dXJlVHlwZSBNVEw6OkFyZ3VtZW50Ojp0ZXh0dXJlVHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVHlwZT4odGhpcywg
X01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlVHlwZSkpOworfQorCisvLyBwcm9wZXJ0eTogdGV4dHVy
ZURhdGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6QXJndW1lbnQ6OnRleHR1
cmVEYXRhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlRGF0YVR5cGUpKTsKK30K
KworLy8gcHJvcGVydHk6IGlzRGVwdGhUZXh0dXJlCitfTVRMX0lOTElORSBib29sIE1UTDo6QXJn
dW1lbnQ6OmlzRGVwdGhUZXh0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzRGVwdGhUZXh0dXJlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBhcnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6QXJndW1lbnQ6OmFycmF5TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYXJyYXlMZW5n
dGgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExBcmd1bWVudEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEFyZ3VtZW50RW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNlY2M3ZDk1Njc1MmM2
MzMxYTYzMDdkYTUwODkxYTcxZDJjMTA0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExBcmd1bWVudEVuY29kZXIuaHBwCkBAIC0wLDAg
KzEsMjUwIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vCisvLyBNZXRhbC9NVExBcmd1bWVudEVuY29kZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIw
MjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5
IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAi
CisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhw
cCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJN
VExCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbXB1dGVQaXBlbGluZS5ocHAiCisjaW5jbHVk
ZSAiTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQaXBlbGluZS5ocHAiCisj
aW5jbHVkZSAiTVRMU2FtcGxlci5ocHAiCisjaW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5j
bHVkZSAiTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUuaHBwIgorCituYW1lc3BhY2UgTVRMCit7Citj
bGFzcyBBcmd1bWVudEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEFyZ3VtZW50RW5j
b2Rlcj4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgIGRldmljZSgpIGNv
bnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICBlbmNvZGVkTGVuZ3RoKCkgY29uc3Q7CisKKyAg
ICBOUzo6VUludGVnZXIgICAgICAgICAgIGFsaWdubWVudCgpIGNvbnN0OworCisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICBzZXRBcmd1bWVudEJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGFy
Z3VtZW50QnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgc2V0QXJndW1lbnRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBhcmd1bWVudEJ1
ZmZlciwgTlM6OlVJbnRlZ2VyIHN0YXJ0T2Zmc2V0LCBOUzo6VUludGVnZXIgYXJyYXlFbGVtZW50
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgc2V0QnVmZmVyKGNvbnN0IGNsYXNzIEJ1
ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZm
ZXJzW10sIGNvbnN0IE5TOjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVy
ZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgc2V0VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFu
Z2UpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGUoY29uc3Qg
Y2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRl
KiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCogICAgICAgICAgICAg
ICAgICBjb25zdGFudERhdGEoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBSZW5kZXJQaXBl
bGluZVN0YXRlKiBwaXBlbGluZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXMoTVRMOjpSZW5kZXJQaXBlbGlu
ZVN0YXRlKiBwaXBlbGluZXMsIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgIHNldENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIENvbXB1dGVQaXBl
bGluZVN0YXRlKiBwaXBlbGluZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzKE1UTDo6Q29tcHV0ZVBpcGVs
aW5lU3RhdGUqIHBpcGVsaW5lcywgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IGNsYXNzIEluZGlyZWN0
Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXJz
KE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBidWZmZXJzLCBOUzo6UmFuZ2UgcmFuZ2UpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICBzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29u
c3QgY2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5T
OjpVSW50ZWdlciBpbmRleCk7CisKKyAgICBjbGFzcyBBcmd1bWVudEVuY29kZXIqIG5ld0FyZ3Vt
ZW50RW5jb2RlcihOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25U
YWJsZSogdmlzaWJsZUZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgIHNldFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBWaXNp
YmxlRnVuY3Rpb25UYWJsZSogdmlzaWJsZUZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5n
ZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldEludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGUoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgSW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJh
bmdlKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpE
ZXZpY2UqIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3Ry
aW5nKiBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxh
YmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldExh
YmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8v
IHByb3BlcnR5OiBlbmNvZGVkTGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpB
cmd1bWVudEVuY29kZXI6OmVuY29kZWRMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmNv
ZGVkTGVuZ3RoKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhbGlnbm1lbnQKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6YWxpZ25tZW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoYWxpZ25tZW50KSk7Cit9CisKKy8vIG1ldGhvZDogc2V0QXJndW1lbnRCdWZmZXI6
b2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0QXJndW1l
bnRCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGFyZ3VtZW50QnVmZmVyLCBOUzo6VUludGVnZXIg
b2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRBcmd1bWVudEJ1ZmZlcl9vZmZzZXRfKSwgYXJndW1lbnRCdWZmZXIsIG9mZnNl
dCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QXJndW1lbnRCdWZmZXI6c3RhcnRPZmZzZXQ6YXJyYXlF
bGVtZW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0QXJndW1l
bnRCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGFyZ3VtZW50QnVmZmVyLCBOUzo6VUludGVnZXIg
c3RhcnRPZmZzZXQsIE5TOjpVSW50ZWdlciBhcnJheUVsZW1lbnQpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFyZ3VtZW50QnVmZmVy
X3N0YXJ0T2Zmc2V0X2FycmF5RWxlbWVudF8pLCBhcmd1bWVudEJ1ZmZlciwgc3RhcnRPZmZzZXQs
IGFycmF5RWxlbWVudCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyOm9mZnNldDphdEluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0QnVmZmVyKGNvbnN0
IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBp
bmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0QnVmZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldEJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1
ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMsIG9mZnNldHMsIHJhbmdlKTsK
K30KKworLy8gbWV0aG9kOiBzZXRUZXh0dXJlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QXJndW1lbnRFbmNvZGVyOjpzZXRUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVy
ZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXh0dXJlX2F0SW5kZXhfKSwgdGV4dHVyZSwgaW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRleHR1cmVzOndpdGhSYW5nZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4
dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXh0dXJlc193aXRoUmFuZ2VfKSwgdGV4dHVy
ZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRTYW1wbGVyU3RhdGU6YXRJbmRleDoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZShjb25z
dCBNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1w
bGVyU3RhdGVfYXRJbmRleF8pLCBzYW1wbGVyLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRF
bmNvZGVyOjpzZXRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBO
Uzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZXJTdGF0ZXNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBy
YW5nZSk7Cit9CisKKy8vIG1ldGhvZDogY29uc3RhbnREYXRhQXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQqIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpjb25zdGFudERhdGEoTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGNvbnN0YW50RGF0YUF0SW5kZXhfKSwgaW5kZXgpOworfQorCisvLyBtZXRo
b2Q6IHNldFJlbmRlclBpcGVsaW5lU3RhdGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpBcmd1bWVudEVuY29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5k
ZXJQaXBlbGluZVN0YXRlKiBwaXBlbGluZSwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZW5kZXJQ
aXBlbGluZVN0YXRlX2F0SW5kZXhfKSwgcGlwZWxpbmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBzZXRSZW5kZXJQaXBlbGluZVN0YXRlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QXJndW1lbnRFbmNvZGVyOjpzZXRSZW5kZXJQaXBlbGluZVN0YXRlcyhNVEw6OlJlbmRlclBp
cGVsaW5lU3RhdGUqIHBpcGVsaW5lcywgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZW5kZXJQaXBlbGlu
ZVN0YXRlc193aXRoUmFuZ2VfKSwgcGlwZWxpbmVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDog
c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpB
cmd1bWVudEVuY29kZXI6OnNldENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0
ZVBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbXB1dGVQ
aXBlbGluZVN0YXRlX2F0SW5kZXhfKSwgcGlwZWxpbmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGVzKE1UTDo6Q29tcHV0
ZVBpcGVsaW5lU3RhdGUqIHBpcGVsaW5lcywgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb21wdXRlUGlw
ZWxpbmVTdGF0ZXNfd2l0aFJhbmdlXyksIHBpcGVsaW5lcywgcmFuZ2UpOworfQorCisvLyBtZXRo
b2Q6IHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcjphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IE1UTDo6
SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRCdWZmZXIsIE5TOjpVSW50ZWdl
ciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyX2F0SW5kZXhfKSwgaW5kaXJlY3RDb21t
YW5kQnVmZmVyLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0SW5kaXJlY3RDb21tYW5kQnVm
ZmVyczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnRFbmNvZGVyOjpz
ZXRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBidWZm
ZXJzLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnNfd2l0aFJhbmdl
XyksIGJ1ZmZlcnMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRBY2NlbGVyYXRpb25TdHJ1
Y3R1cmU6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNl
dEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSog
YWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFjY2VsZXJhdGlv
blN0cnVjdHVyZV9hdEluZGV4XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgaW5kZXgpOworfQor
CisvLyBtZXRob2Q6IG5ld0FyZ3VtZW50RW5jb2RlckZvckJ1ZmZlckF0SW5kZXg6CitfTVRMX0lO
TElORSBNVEw6OkFyZ3VtZW50RW5jb2RlciogTVRMOjpBcmd1bWVudEVuY29kZXI6Om5ld0FyZ3Vt
ZW50RW5jb2RlcihOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpBcmd1bWVudEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d0FyZ3VtZW50RW5jb2RlckZvckJ1ZmZlckF0SW5kZXhfKSwgaW5kZXgpOworfQorCisvLyBtZXRo
b2Q6IHNldFZpc2libGVGdW5jdGlvblRhYmxlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6QXJndW1lbnRFbmNvZGVyOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OlZp
c2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEluZGV4XyksIHZpc2libGVGdW5jdGlvblRh
YmxlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndp
dGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldFZpc2li
bGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxl
RnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJs
ZXNfd2l0aFJhbmdlXyksIHZpc2libGVGdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBt
ZXRob2Q6IHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRJbmRleDoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpBcmd1bWVudEVuY29kZXI6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUo
Y29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVf
YXRJbmRleF8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBpbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkFyZ3VtZW50RW5jb2Rlcjo6c2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZXMoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVzX3dpdGhSYW5nZV8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJpbmFy
eUFyY2hpdmUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJp
bmFyeUFyY2hpdmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNDJkMzc0YzM1YmUzOWQ2NjYyZTgxNGI3NzE5
ZTM0Njg1MmM1ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQmluYXJ5QXJjaGl2ZS5ocHAKQEAgLTAsMCArMSwxMzggQEAKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01U
TEJpbmFyeUFyY2hpdmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVh
ZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShO
Uzo6VUludGVnZXIsIEJpbmFyeUFyY2hpdmVFcnJvcikgeworICAgIEJpbmFyeUFyY2hpdmVFcnJv
ck5vbmUgPSAwLAorICAgIEJpbmFyeUFyY2hpdmVFcnJvckludmFsaWRGaWxlID0gMSwKKyAgICBC
aW5hcnlBcmNoaXZlRXJyb3JVbmV4cGVjdGVkRWxlbWVudCA9IDIsCisgICAgQmluYXJ5QXJjaGl2
ZUVycm9yQ29tcGlsYXRpb25GYWlsdXJlID0gMywKK307CisKK2NsYXNzIEJpbmFyeUFyY2hpdmVE
ZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciogYWxs
b2MoKTsKKworICAgIGNsYXNzIEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgp
OworCisgICAgTlM6OlVSTCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFVybChjb25z
dCBOUzo6VVJMKiB1cmwpOworfTsKKworY2xhc3MgQmluYXJ5QXJjaGl2ZSA6IHB1YmxpYyBOUzo6
UmVmZXJlbmNpbmc8QmluYXJ5QXJjaGl2ZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAg
IGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCk7CisKKyAgICBjbGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0OworCisgICAg
Ym9vbCAgICAgICAgICBhZGRDb21wdXRlUGlwZWxpbmVGdW5jdGlvbnMoY29uc3QgY2xhc3MgQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpOwor
CisgICAgYm9vbCAgICAgICAgICBhZGRSZW5kZXJQaXBlbGluZUZ1bmN0aW9ucyhjb25zdCBjbGFz
cyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIGJvb2wgICAgICAgICAgYWRkVGlsZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zKGNv
bnN0IGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpF
cnJvcioqIGVycm9yKTsKKworICAgIGJvb2wgICAgICAgICAgc2VyaWFsaXplVG9VUkwoY29uc3Qg
TlM6OlVSTCogdXJsLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBib29sICAgICAgICAgIGFk
ZEZ1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uRGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29u
c3QgY2xhc3MgTGlicmFyeSogbGlicmFyeSwgTlM6OkVycm9yKiogZXJyb3IpOworfTsKKworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpCaW5hcnlBcmNoaXZl
RGVzY3JpcHRvciogTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yPihf
TVRMX1BSSVZBVEVfQ0xTKE1UTEJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciogTVRM
OjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVy
dHk6IHVybAorX01UTF9JTkxJTkUgTlM6OlVSTCogTVRMOjpCaW5hcnlBcmNoaXZlRGVzY3JpcHRv
cjo6dXJsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VVJM
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1cmwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkJpbmFyeUFyY2hpdmVEZXNjcmlwdG9yOjpzZXRVcmwoY29uc3QgTlM6OlVSTCogdXJsKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRVcmxfKSwgdXJsKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6
U3RyaW5nKiBNVEw6OkJpbmFyeUFyY2hpdmU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChs
YWJlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmluYXJ5QXJjaGl2ZTo6c2V0TGFi
ZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8g
cHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6QmluYXJ5QXJj
aGl2ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIG1l
dGhvZDogYWRkQ29tcHV0ZVBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6ZXJyb3I6Citf
TVRMX0lOTElORSBib29sIE1UTDo6QmluYXJ5QXJjaGl2ZTo6YWRkQ29tcHV0ZVBpcGVsaW5lRnVu
Y3Rpb25zKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwg
TlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9v
bD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGRDb21wdXRlUGlwZWxpbmVGdW5jdGlvbnNXaXRo
RGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDog
YWRkUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcjplcnJvcjoKK19NVExfSU5M
SU5FIGJvb2wgTVRMOjpCaW5hcnlBcmNoaXZlOjphZGRSZW5kZXJQaXBlbGluZUZ1bmN0aW9ucyhj
b25zdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9y
KiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChhZGRSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9y
X2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBhZGRUaWxlUmVu
ZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcjplcnJvcjoKK19NVExfSU5MSU5FIGJv
b2wgTVRMOjpCaW5hcnlBcmNoaXZlOjphZGRUaWxlUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnMoY29u
c3QgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJy
b3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGFkZFRpbGVSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNj
cmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBzZXJp
YWxpemVUb1VSTDplcnJvcjoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpCaW5hcnlBcmNoaXZlOjpz
ZXJpYWxpemVUb1VSTChjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioqIGVycm9yKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2VyaWFsaXplVG9VUkxfZXJyb3JfKSwgdXJsLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDog
YWRkRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpsaWJyYXJ5OmVycm9yOgorX01UTF9JTkxJTkUgYm9v
bCBNVEw6OkJpbmFyeUFyY2hpdmU6OmFkZEZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb25EZXNj
cmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6OkxpYnJhcnkqIGxpYnJhcnksIE5TOjpFcnJv
cioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoYWRkRnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9saWJyYXJ5X2Vycm9y
XyksIGRlc2NyaXB0b3IsIGxpYnJhcnksIGVycm9yKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRDb21tYW5kRW5jb2Rl
ci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGE4NmI2YTk1MDFjNjg1M2YwYzhmNWEwYmIwYWI3ZWI2MDM3N2Mw
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExCbGl0Q29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsMjQ2IEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExCbGl0
Q29tbWFuZEVuY29kZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMu
CisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVh
ZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExCbGl0Q29tbWFuZEVuY29k
ZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExU
eXBlcy5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIs
IEJsaXRPcHRpb24pIHsKKyAgICBCbGl0T3B0aW9uTm9uZSA9IDAsCisgICAgQmxpdE9wdGlvbkRl
cHRoRnJvbURlcHRoU3RlbmNpbCA9IDEsCisgICAgQmxpdE9wdGlvblN0ZW5jaWxGcm9tRGVwdGhT
dGVuY2lsID0gMiwKKyAgICBCbGl0T3B0aW9uUm93TGluZWFyUFZSVEMgPSA0LAorfTsKKworY2xh
c3MgQmxpdENvbW1hbmRFbmNvZGVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxCbGl0Q29tbWFu
ZEVuY29kZXIsIENvbW1hbmRFbmNvZGVyPgoreworcHVibGljOgorICAgIHZvaWQgc3luY2hyb25p
emVSZXNvdXJjZShjb25zdCBjbGFzcyBSZXNvdXJjZSogcmVzb3VyY2UpOworCisgICAgdm9pZCBz
eW5jaHJvbml6ZVRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRl
Z2VyIHNsaWNlLCBOUzo6VUludGVnZXIgbGV2ZWwpOworCisgICAgdm9pZCBjb3B5RnJvbVRleHR1
cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNvdXJj
ZVNsaWNlLCBOUzo6VUludGVnZXIgc291cmNlTGV2ZWwsIE1UTDo6T3JpZ2luIHNvdXJjZU9yaWdp
biwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IGNsYXNzIFRleHR1cmUqIGRlc3RpbmF0aW9u
VGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0
aW5hdGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBkZXN0aW5hdGlvbk9yaWdpbik7CisKKyAgICB2b2lk
IGNvcHlGcm9tQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUlu
dGVnZXIgc291cmNlT2Zmc2V0LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJSb3csIE5TOjpV
SW50ZWdlciBzb3VyY2VCeXRlc1BlckltYWdlLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29uc3Qg
Y2xhc3MgVGV4dHVyZSogZGVzdGluYXRpb25UZXh0dXJlLCBOUzo6VUludGVnZXIgZGVzdGluYXRp
b25TbGljZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uTGV2ZWwsIE1UTDo6T3JpZ2luIGRlc3Rp
bmF0aW9uT3JpZ2luKTsKKworICAgIHZvaWQgY29weUZyb21CdWZmZXIoY29uc3QgY2xhc3MgQnVm
ZmVyKiBzb3VyY2VCdWZmZXIsIE5TOjpVSW50ZWdlciBzb3VyY2VPZmZzZXQsIE5TOjpVSW50ZWdl
ciBzb3VyY2VCeXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIHNvdXJjZUJ5dGVzUGVySW1hZ2UsIE1U
TDo6U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1
cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRp
b25MZXZlbCwgTVRMOjpPcmlnaW4gZGVzdGluYXRpb25PcmlnaW4sIE1UTDo6QmxpdE9wdGlvbiBv
cHRpb25zKTsKKworICAgIHZvaWQgY29weUZyb21UZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUq
IHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNv
dXJjZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXpl
LCBjb25zdCBjbGFzcyBCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVz
dGluYXRpb25PZmZzZXQsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBOUzo6
VUludGVnZXIgZGVzdGluYXRpb25CeXRlc1BlckltYWdlKTsKKworICAgIHZvaWQgY29weUZyb21U
ZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBz
b3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VP
cmlnaW4sIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBjbGFzcyBCdWZmZXIqIGRlc3RpbmF0
aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZzZXQsIE5TOjpVSW50ZWdlciBk
ZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25CeXRlc1Blcklt
YWdlLCBNVEw6OkJsaXRPcHRpb24gb3B0aW9ucyk7CisKKyAgICB2b2lkIGdlbmVyYXRlTWlwbWFw
cyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlKTsKKworICAgIHZvaWQgZmlsbEJ1ZmZlcihj
b25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlLCB1aW50OF90IHZhbHVl
KTsKKworICAgIHZvaWQgY29weUZyb21UZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNvdXJj
ZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VTbGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxl
dmVsLCBjb25zdCBjbGFzcyBUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdl
ciBkZXN0aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTlM6OlVJ
bnRlZ2VyIHNsaWNlQ291bnQsIE5TOjpVSW50ZWdlciBsZXZlbENvdW50KTsKKworICAgIHZvaWQg
Y29weUZyb21UZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHNvdXJjZVRleHR1cmUsIGNvbnN0
IGNsYXNzIFRleHR1cmUqIGRlc3RpbmF0aW9uVGV4dHVyZSk7CisKKyAgICB2b2lkIGNvcHlGcm9t
QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6VUludGVnZXIgc291
cmNlT2Zmc2V0LCBjb25zdCBjbGFzcyBCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUlu
dGVnZXIgZGVzdGluYXRpb25PZmZzZXQsIE5TOjpVSW50ZWdlciBzaXplKTsKKworICAgIHZvaWQg
dXBkYXRlRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKKworICAgIHZvaWQgd2FpdEZv
ckZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBmZW5jZSk7CisKKyAgICB2b2lkIGdldFRleHR1cmVB
Y2Nlc3NDb3VudGVycyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBNVEw6OlJlZ2lvbiBy
ZWdpb24sIE5TOjpVSW50ZWdlciBtaXBMZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBib29sIHJl
c2V0Q291bnRlcnMsIGNvbnN0IGNsYXNzIEJ1ZmZlciogY291bnRlcnNCdWZmZXIsIE5TOjpVSW50
ZWdlciBjb3VudGVyc0J1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkIHJlc2V0VGV4dHVyZUFjY2Vz
c0NvdW50ZXJzKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE1UTDo6UmVnaW9uIHJlZ2lv
biwgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBOUzo6VUludGVnZXIgc2xpY2UpOworCisgICAgdm9p
ZCBvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1
cmUpOworCisgICAgdm9pZCBvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzKGNvbnN0IGNsYXNz
IFRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBzbGljZSwgTlM6OlVJbnRlZ2VyIGxldmVs
KTsKKworICAgIHZvaWQgb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vzcyhjb25zdCBjbGFzcyBU
ZXh0dXJlKiB0ZXh0dXJlKTsKKworICAgIHZvaWQgb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vz
cyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgc2xpY2UsIE5TOjpV
SW50ZWdlciBsZXZlbCk7CisKKyAgICB2b2lkIHJlc2V0Q29tbWFuZHNJbkJ1ZmZlcihjb25zdCBj
bGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlKTsKKwor
ICAgIHZvaWQgY29weUluZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBjbGFzcyBJbmRpcmVjdENv
bW1hbmRCdWZmZXIqIHNvdXJjZSwgTlM6OlJhbmdlIHNvdXJjZVJhbmdlLCBjb25zdCBjbGFzcyBJ
bmRpcmVjdENvbW1hbmRCdWZmZXIqIGRlc3RpbmF0aW9uLCBOUzo6VUludGVnZXIgZGVzdGluYXRp
b25JbmRleCk7CisKKyAgICB2b2lkIG9wdGltaXplSW5kaXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0
IGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6
UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCBzYW1wbGVDb3VudGVyc0luQnVmZmVyKGNvbnN0IGNs
YXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBs
ZUluZGV4LCBib29sIGJhcnJpZXIpOworCisgICAgdm9pZCByZXNvbHZlQ291bnRlcnMoY29uc3Qg
Y2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyLCBOUzo6UmFuZ2UgcmFuZ2Us
IGNvbnN0IGNsYXNzIEJ1ZmZlciogZGVzdGluYXRpb25CdWZmZXIsIE5TOjpVSW50ZWdlciBkZXN0
aW5hdGlvbk9mZnNldCk7Cit9OworCit9CisKKy8vIG1ldGhvZDogc3luY2hyb25pemVSZXNvdXJj
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnN5bmNocm9uaXpl
UmVzb3VyY2UoY29uc3QgTVRMOjpSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN5bmNocm9uaXplUmVzb3Vy
Y2VfKSwgcmVzb3VyY2UpOworfQorCisvLyBtZXRob2Q6IHN5bmNocm9uaXplVGV4dHVyZTpzbGlj
ZTpsZXZlbDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnN5bmNo
cm9uaXplVGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBz
bGljZSwgTlM6OlVJbnRlZ2VyIGxldmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzeW5jaHJvbml6ZVRleHR1cmVfc2xpY2VfbGV2ZWxf
KSwgdGV4dHVyZSwgc2xpY2UsIGxldmVsKTsKK30KKworLy8gbWV0aG9kOiBjb3B5RnJvbVRleHR1
cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291cmNlT3JpZ2luOnNvdXJjZVNpemU6dG9UZXh0
dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0aW5hdGlvbk9yaWdpbjoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tVGV4dHVy
ZShjb25zdCBNVEw6OlRleHR1cmUqIHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VT
bGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4s
IE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBNVEw6OlRleHR1cmUqIGRlc3RpbmF0aW9uVGV4
dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBkZXN0aW5hdGlvbk9yaWdpbikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29weUZyb21UZXh0dXJl
X3NvdXJjZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJjZU9yaWdpbl9zb3VyY2VTaXplX3RvVGV4dHVy
ZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVzdGluYXRpb25PcmlnaW5fKSwg
c291cmNlVGV4dHVyZSwgc291cmNlU2xpY2UsIHNvdXJjZUxldmVsLCBzb3VyY2VPcmlnaW4sIHNv
dXJjZVNpemUsIGRlc3RpbmF0aW9uVGV4dHVyZSwgZGVzdGluYXRpb25TbGljZSwgZGVzdGluYXRp
b25MZXZlbCwgZGVzdGluYXRpb25PcmlnaW4pOworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tQnVm
ZmVyOnNvdXJjZU9mZnNldDpzb3VyY2VCeXRlc1BlclJvdzpzb3VyY2VCeXRlc1BlckltYWdlOnNv
dXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRpb25MZXZlbDpkZXN0
aW5hdGlvbk9yaWdpbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6
OmNvcHlGcm9tQnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBzb3VyY2VCdWZmZXIsIE5TOjpVSW50
ZWdlciBzb3VyY2VPZmZzZXQsIE5TOjpVSW50ZWdlciBzb3VyY2VCeXRlc1BlclJvdywgTlM6OlVJ
bnRlZ2VyIHNvdXJjZUJ5dGVzUGVySW1hZ2UsIE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBN
VEw6OlRleHR1cmUqIGRlc3RpbmF0aW9uVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9u
U2xpY2UsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkxldmVsLCBNVEw6Ok9yaWdpbiBkZXN0aW5h
dGlvbk9yaWdpbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoY29weUZyb21CdWZmZXJfc291cmNlT2Zmc2V0X3NvdXJjZUJ5dGVzUGVyUm93
X3NvdXJjZUJ5dGVzUGVySW1hZ2Vfc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGlj
ZV9kZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luXyksIHNvdXJjZUJ1ZmZlciwgc291
cmNlT2Zmc2V0LCBzb3VyY2VCeXRlc1BlclJvdywgc291cmNlQnl0ZXNQZXJJbWFnZSwgc291cmNl
U2l6ZSwgZGVzdGluYXRpb25UZXh0dXJlLCBkZXN0aW5hdGlvblNsaWNlLCBkZXN0aW5hdGlvbkxl
dmVsLCBkZXN0aW5hdGlvbk9yaWdpbik7Cit9CisKKy8vIG1ldGhvZDogY29weUZyb21CdWZmZXI6
c291cmNlT2Zmc2V0OnNvdXJjZUJ5dGVzUGVyUm93OnNvdXJjZUJ5dGVzUGVySW1hZ2U6c291cmNl
U2l6ZTp0b1RleHR1cmU6ZGVzdGluYXRpb25TbGljZTpkZXN0aW5hdGlvbkxldmVsOmRlc3RpbmF0
aW9uT3JpZ2luOm9wdGlvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNv
ZGVyOjpjb3B5RnJvbUJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogc291cmNlQnVmZmVyLCBOUzo6
VUludGVnZXIgc291cmNlT2Zmc2V0LCBOUzo6VUludGVnZXIgc291cmNlQnl0ZXNQZXJSb3csIE5T
OjpVSW50ZWdlciBzb3VyY2VCeXRlc1BlckltYWdlLCBNVEw6OlNpemUgc291cmNlU2l6ZSwgY29u
c3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUsIE5TOjpVSW50ZWdlciBkZXN0aW5h
dGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25MZXZlbCwgTVRMOjpPcmlnaW4gZGVz
dGluYXRpb25PcmlnaW4sIE1UTDo6QmxpdE9wdGlvbiBvcHRpb25zKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5RnJvbUJ1ZmZlcl9z
b3VyY2VPZmZzZXRfc291cmNlQnl0ZXNQZXJSb3dfc291cmNlQnl0ZXNQZXJJbWFnZV9zb3VyY2VT
aXplX3RvVGV4dHVyZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVzdGluYXRp
b25PcmlnaW5fb3B0aW9uc18pLCBzb3VyY2VCdWZmZXIsIHNvdXJjZU9mZnNldCwgc291cmNlQnl0
ZXNQZXJSb3csIHNvdXJjZUJ5dGVzUGVySW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RpbmF0aW9uVGV4
dHVyZSwgZGVzdGluYXRpb25TbGljZSwgZGVzdGluYXRpb25MZXZlbCwgZGVzdGluYXRpb25Pcmln
aW4sIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tVGV4dHVyZTpzb3VyY2VTbGlj
ZTpzb3VyY2VMZXZlbDpzb3VyY2VPcmlnaW46c291cmNlU2l6ZTp0b0J1ZmZlcjpkZXN0aW5hdGlv
bk9mZnNldDpkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OmRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZToK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlGcm9tVGV4dHVy
ZShjb25zdCBNVEw6OlRleHR1cmUqIHNvdXJjZVRleHR1cmUsIE5TOjpVSW50ZWdlciBzb3VyY2VT
bGljZSwgTlM6OlVJbnRlZ2VyIHNvdXJjZUxldmVsLCBNVEw6Ok9yaWdpbiBzb3VyY2VPcmlnaW4s
IE1UTDo6U2l6ZSBzb3VyY2VTaXplLCBjb25zdCBNVEw6OkJ1ZmZlciogZGVzdGluYXRpb25CdWZm
ZXIsIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbk9mZnNldCwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0
aW9uQnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNv
cHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF9zb3VyY2VPcmlnaW5fc291cmNl
U2l6ZV90b0J1ZmZlcl9kZXN0aW5hdGlvbk9mZnNldF9kZXN0aW5hdGlvbkJ5dGVzUGVyUm93X2Rl
c3RpbmF0aW9uQnl0ZXNQZXJJbWFnZV8pLCBzb3VyY2VUZXh0dXJlLCBzb3VyY2VTbGljZSwgc291
cmNlTGV2ZWwsIHNvdXJjZU9yaWdpbiwgc291cmNlU2l6ZSwgZGVzdGluYXRpb25CdWZmZXIsIGRl
c3RpbmF0aW9uT2Zmc2V0LCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93LCBkZXN0aW5hdGlvbkJ5dGVz
UGVySW1hZ2UpOworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tVGV4dHVyZTpzb3VyY2VTbGljZTpz
b3VyY2VMZXZlbDpzb3VyY2VPcmlnaW46c291cmNlU2l6ZTp0b0J1ZmZlcjpkZXN0aW5hdGlvbk9m
ZnNldDpkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OmRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZTpvcHRp
b25zOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Y29weUZyb21U
ZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZSogc291cmNlVGV4dHVyZSwgTlM6OlVJbnRlZ2VyIHNv
dXJjZVNsaWNlLCBOUzo6VUludGVnZXIgc291cmNlTGV2ZWwsIE1UTDo6T3JpZ2luIHNvdXJjZU9y
aWdpbiwgTVRMOjpTaXplIHNvdXJjZVNpemUsIGNvbnN0IE1UTDo6QnVmZmVyKiBkZXN0aW5hdGlv
bkJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uT2Zmc2V0LCBOUzo6VUludGVnZXIgZGVz
dGluYXRpb25CeXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFn
ZSwgTVRMOjpCbGl0T3B0aW9uIG9wdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvcHlGcm9tVGV4dHVyZV9zb3VyY2VTbGljZV9z
b3VyY2VMZXZlbF9zb3VyY2VPcmlnaW5fc291cmNlU2l6ZV90b0J1ZmZlcl9kZXN0aW5hdGlvbk9m
ZnNldF9kZXN0aW5hdGlvbkJ5dGVzUGVyUm93X2Rlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZV9vcHRp
b25zXyksIHNvdXJjZVRleHR1cmUsIHNvdXJjZVNsaWNlLCBzb3VyY2VMZXZlbCwgc291cmNlT3Jp
Z2luLCBzb3VyY2VTaXplLCBkZXN0aW5hdGlvbkJ1ZmZlciwgZGVzdGluYXRpb25PZmZzZXQsIGRl
c3RpbmF0aW9uQnl0ZXNQZXJSb3csIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZSwgb3B0aW9ucyk7
Cit9CisKKy8vIG1ldGhvZDogZ2VuZXJhdGVNaXBtYXBzRm9yVGV4dHVyZToKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmdlbmVyYXRlTWlwbWFwcyhjb25zdCBNVEw6
OlRleHR1cmUqIHRleHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGdlbmVyYXRlTWlwbWFwc0ZvclRleHR1cmVfKSwgdGV4dHVyZSk7
Cit9CisKKy8vIG1ldGhvZDogZmlsbEJ1ZmZlcjpyYW5nZTp2YWx1ZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmZpbGxCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIq
IGJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlLCB1aW50OF90IHZhbHVlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChmaWxsQnVmZmVyX3Jhbmdl
X3ZhbHVlXyksIGJ1ZmZlciwgcmFuZ2UsIHZhbHVlKTsKK30KKworLy8gbWV0aG9kOiBjb3B5RnJv
bVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xp
Y2U6ZGVzdGluYXRpb25MZXZlbDpzbGljZUNvdW50OmxldmVsQ291bnQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRMOjpU
ZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBOUzo6VUludGVnZXIgc291cmNlU2xpY2UsIE5TOjpVSW50
ZWdlciBzb3VyY2VMZXZlbCwgY29uc3QgTVRMOjpUZXh0dXJlKiBkZXN0aW5hdGlvblRleHR1cmUs
IE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25M
ZXZlbCwgTlM6OlVJbnRlZ2VyIHNsaWNlQ291bnQsIE5TOjpVSW50ZWdlciBsZXZlbENvdW50KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNlTGV2ZWxfdG9UZXh0dXJlX2Rlc3RpbmF0
aW9uU2xpY2VfZGVzdGluYXRpb25MZXZlbF9zbGljZUNvdW50X2xldmVsQ291bnRfKSwgc291cmNl
VGV4dHVyZSwgc291cmNlU2xpY2UsIHNvdXJjZUxldmVsLCBkZXN0aW5hdGlvblRleHR1cmUsIGRl
c3RpbmF0aW9uU2xpY2UsIGRlc3RpbmF0aW9uTGV2ZWwsIHNsaWNlQ291bnQsIGxldmVsQ291bnQp
OworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tVGV4dHVyZTp0b1RleHR1cmU6CitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpjb3B5RnJvbVRleHR1cmUoY29uc3QgTVRM
OjpUZXh0dXJlKiBzb3VyY2VUZXh0dXJlLCBjb25zdCBNVEw6OlRleHR1cmUqIGRlc3RpbmF0aW9u
VGV4dHVyZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoY29weUZyb21UZXh0dXJlX3RvVGV4dHVyZV8pLCBzb3VyY2VUZXh0dXJlLCBkZXN0
aW5hdGlvblRleHR1cmUpOworfQorCisvLyBtZXRob2Q6IGNvcHlGcm9tQnVmZmVyOnNvdXJjZU9m
ZnNldDp0b0J1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDpzaXplOgorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkJsaXRDb21tYW5kRW5jb2Rlcjo6Y29weUZyb21CdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIq
IHNvdXJjZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNvdXJjZU9mZnNldCwgY29uc3QgTVRMOjpCdWZm
ZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZzZXQsIE5T
OjpVSW50ZWdlciBzaXplKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChjb3B5RnJvbUJ1ZmZlcl9zb3VyY2VPZmZzZXRfdG9CdWZmZXJfZGVz
dGluYXRpb25PZmZzZXRfc2l6ZV8pLCBzb3VyY2VCdWZmZXIsIHNvdXJjZU9mZnNldCwgZGVzdGlu
YXRpb25CdWZmZXIsIGRlc3RpbmF0aW9uT2Zmc2V0LCBzaXplKTsKK30KKworLy8gbWV0aG9kOiB1
cGRhdGVGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnVw
ZGF0ZUZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1cGRhdGVGZW5jZV8pLCBmZW5jZSk7
Cit9CisKKy8vIG1ldGhvZDogd2FpdEZvckZlbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJs
aXRDb21tYW5kRW5jb2Rlcjo6d2FpdEZvckZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3
YWl0Rm9yRmVuY2VfKSwgZmVuY2UpOworfQorCisvLyBtZXRob2Q6IGdldFRleHR1cmVBY2Nlc3ND
b3VudGVyczpyZWdpb246bWlwTGV2ZWw6c2xpY2U6cmVzZXRDb3VudGVyczpjb3VudGVyc0J1ZmZl
cjpjb3VudGVyc0J1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFu
ZEVuY29kZXI6OmdldFRleHR1cmVBY2Nlc3NDb3VudGVycyhjb25zdCBNVEw6OlRleHR1cmUqIHRl
eHR1cmUsIE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBOUzo6VUlu
dGVnZXIgc2xpY2UsIGJvb2wgcmVzZXRDb3VudGVycywgY29uc3QgTVRMOjpCdWZmZXIqIGNvdW50
ZXJzQnVmZmVyLCBOUzo6VUludGVnZXIgY291bnRlcnNCdWZmZXJPZmZzZXQpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdldFRleHR1cmVB
Y2Nlc3NDb3VudGVyc19yZWdpb25fbWlwTGV2ZWxfc2xpY2VfcmVzZXRDb3VudGVyc19jb3VudGVy
c0J1ZmZlcl9jb3VudGVyc0J1ZmZlck9mZnNldF8pLCB0ZXh0dXJlLCByZWdpb24sIG1pcExldmVs
LCBzbGljZSwgcmVzZXRDb3VudGVycywgY291bnRlcnNCdWZmZXIsIGNvdW50ZXJzQnVmZmVyT2Zm
c2V0KTsKK30KKworLy8gbWV0aG9kOiByZXNldFRleHR1cmVBY2Nlc3NDb3VudGVyczpyZWdpb246
bWlwTGV2ZWw6c2xpY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVy
OjpyZXNldFRleHR1cmVBY2Nlc3NDb3VudGVycyhjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUs
IE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIG1pcExldmVsLCBOUzo6VUludGVnZXIg
c2xpY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHJlc2V0VGV4dHVyZUFjY2Vzc0NvdW50ZXJzX3JlZ2lvbl9taXBMZXZlbF9zbGljZV8p
LCB0ZXh0dXJlLCByZWdpb24sIG1pcExldmVsLCBzbGljZSk7Cit9CisKKy8vIG1ldGhvZDogb3B0
aW1pemVDb250ZW50c0ZvckdQVUFjY2VzczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29t
bWFuZEVuY29kZXI6Om9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3MoY29uc3QgTVRMOjpUZXh0
dXJlKiB0ZXh0dXJlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9yR1BVQWNjZXNzXyksIHRleHR1cmUpOwor
fQorCisvLyBtZXRob2Q6IG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3M6c2xpY2U6bGV2ZWw6
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpvcHRpbWl6ZUNvbnRl
bnRzRm9yR1BVQWNjZXNzKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgTlM6OlVJbnRlZ2Vy
IHNsaWNlLCBOUzo6VUludGVnZXIgbGV2ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9wdGltaXplQ29udGVudHNGb3JHUFVBY2Nlc3Nf
c2xpY2VfbGV2ZWxfKSwgdGV4dHVyZSwgc2xpY2UsIGxldmVsKTsKK30KKworLy8gbWV0aG9kOiBv
cHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRD
b21tYW5kRW5jb2Rlcjo6b3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vzcyhjb25zdCBNVEw6OlRl
eHR1cmUqIHRleHR1cmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3NfKSwgdGV4dHVyZSk7
Cit9CisKKy8vIG1ldGhvZDogb3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2VzczpzbGljZTpsZXZl
bDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6Om9wdGltaXplQ29u
dGVudHNGb3JDUFVBY2Nlc3MoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVn
ZXIgc2xpY2UsIE5TOjpVSW50ZWdlciBsZXZlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2Vz
c19zbGljZV9sZXZlbF8pLCB0ZXh0dXJlLCBzbGljZSwgbGV2ZWwpOworfQorCisvLyBtZXRob2Q6
IHJlc2V0Q29tbWFuZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QmxpdENvbW1hbmRFbmNvZGVyOjpyZXNldENvbW1hbmRzSW5CdWZmZXIoY29uc3QgTVRMOjpJbmRp
cmVjdENvbW1hbmRCdWZmZXIqIGJ1ZmZlciwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldENvbW1hbmRz
SW5CdWZmZXJfd2l0aFJhbmdlXyksIGJ1ZmZlciwgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IGNv
cHlJbmRpcmVjdENvbW1hbmRCdWZmZXI6c291cmNlUmFuZ2U6ZGVzdGluYXRpb246ZGVzdGluYXRp
b25JbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OmNvcHlJ
bmRpcmVjdENvbW1hbmRCdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXIqIHNv
dXJjZSwgTlM6OlJhbmdlIHNvdXJjZVJhbmdlLCBjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1
ZmZlciogZGVzdGluYXRpb24sIE5TOjpVSW50ZWdlciBkZXN0aW5hdGlvbkluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5SW5k
aXJlY3RDb21tYW5kQnVmZmVyX3NvdXJjZVJhbmdlX2Rlc3RpbmF0aW9uX2Rlc3RpbmF0aW9uSW5k
ZXhfKSwgc291cmNlLCBzb3VyY2VSYW5nZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uSW5kZXgp
OworfQorCisvLyBtZXRob2Q6IG9wdGltaXplSW5kaXJlY3RDb21tYW5kQnVmZmVyOndpdGhSYW5n
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6Om9wdGltaXplSW5k
aXJlY3RDb21tYW5kQnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRp
cmVjdENvbW1hbmRCdWZmZXIsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob3B0aW1pemVJbmRpcmVjdENvbW1h
bmRCdWZmZXJfd2l0aFJhbmdlXyksIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgcmFuZ2UpOworfQor
CisvLyBtZXRob2Q6IHNhbXBsZUNvdW50ZXJzSW5CdWZmZXI6YXRTYW1wbGVJbmRleDp3aXRoQmFy
cmllcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXI6OnNhbXBsZUNv
dW50ZXJzSW5CdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZm
ZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVyKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3VudGVy
c0luQnVmZmVyX2F0U2FtcGxlSW5kZXhfd2l0aEJhcnJpZXJfKSwgc2FtcGxlQnVmZmVyLCBzYW1w
bGVJbmRleCwgYmFycmllcik7Cit9CisKKy8vIG1ldGhvZDogcmVzb2x2ZUNvdW50ZXJzOmluUmFu
Z2U6ZGVzdGluYXRpb25CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6QmxpdENvbW1hbmRFbmNvZGVyOjpyZXNvbHZlQ291bnRlcnMoY29uc3QgTVRMOjpDb3Vu
dGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpSYW5nZSByYW5nZSwgY29uc3QgTVRM
OjpCdWZmZXIqIGRlc3RpbmF0aW9uQnVmZmVyLCBOUzo6VUludGVnZXIgZGVzdGluYXRpb25PZmZz
ZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHJlc29sdmVDb3VudGVyc19pblJhbmdlX2Rlc3RpbmF0aW9uQnVmZmVyX2Rlc3RpbmF0aW9u
T2Zmc2V0XyksIHNhbXBsZUJ1ZmZlciwgcmFuZ2UsIGRlc3RpbmF0aW9uQnVmZmVyLCBkZXN0aW5h
dGlvbk9mZnNldCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMQmxpdFBhc3MuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEJsaXRQYXNzLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGVhZTMxZDcxMjRkYmEzNDQxMDNl
N2E3M2Q3OTU2ZDRiYTUzMTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvbWV0YWwtY3BwL01ldGFsL01UTEJsaXRQYXNzLmhwcApAQCAtMCwwICsxLDE2NSBAQAorLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwv
TVRMQmxpdFBhc3MuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisv
LworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVy
QnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIEJsaXRQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8Qmxp
dFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogYWxs
b2MoKTsKKworICAgIGNsYXNzIEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0
b3IqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbXBs
ZUJ1ZmZlcihjb25zdCBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRPZkVuY29k
ZXJTYW1wbGVJbmRleChOUzo6VUludGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCk7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5kT2ZFbmNvZGVyU2Ft
cGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK307CisKK2Ns
YXNzIEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
ckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBCbGl0UGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisK
KyAgICBjbGFzcyBCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAg
ICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRPYmplY3QoY29uc3QgY2xhc3MgQmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCk7Cit9OworCitj
bGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8QmxpdFBhc3NEZXNj
cmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3Iq
ICAgICAgICAgICAgICAgICAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIEJsaXRQYXNzRGVzY3Jp
cHRvciogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNs
YXNzIEJsaXRQYXNzRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICBibGl0UGFzc0Rlc2Ny
aXB0b3IoKTsKKworICAgIGNsYXNzIEJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3JBcnJheSogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25zdDsKK307CisKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QmxpdFBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklW
QVRFX0NMUyhNVExCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKSk7Cit9
CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJv
cGVydHk6IHNhbXBsZUJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVy
KiBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNhbXBsZUJ1
ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb3Vu
dGVyU2FtcGxlQnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVCdWZmZXIpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldFNhbXBsZUJ1ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZm
ZXIqIHNhbXBsZUJ1ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlQnVmZmVyXyksIHNhbXBsZUJ1ZmZlcik7Cit9CisK
Ky8vIHByb3BlcnR5OiBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpz
dGFydE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhcnRPZkVu
Y29kZXJTYW1wbGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QmxpdFBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJ
bmRleChOUzo6VUludGVnZXIgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhcnRPZkVu
Y29kZXJTYW1wbGVJbmRleF8pLCBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK30KKworLy8g
cHJvcGVydHk6IGVuZE9mRW5jb2RlclNhbXBsZUluZGV4CitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjplbmRPZkVu
Y29kZXJTYW1wbGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZE9mRW5jb2RlclNhbXBs
ZUluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleChOUzo6VUlu
dGVnZXIgZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEVuZE9mRW5jb2RlclNhbXBsZUluZGV4
XyksIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxs
b2MKK19NVExfSU5MSU5FIE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvckFycmF5KiBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJsaXRQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NM
UyhNVExCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpKTsKK30K
KworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Pigp
OworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5F
IE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpCbGl0
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUlu
dGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcio+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnRJbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpCbGl0UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
QXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudCwgYXR0YWNobWVudEluZGV4
KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QmxpdFBh
c3NEZXNjcmlwdG9yKiBNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcj4oX01UTF9QUklW
QVRFX0NMUyhNVExCbGl0UGFzc0Rlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OkJsaXRQYXNzRGVzY3JpcHRvciogTVRMOjpCbGl0UGFzc0Rlc2NyaXB0
b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QmxpdFBhc3NE
ZXNjcmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBibGl0UGFzc0Rlc2NyaXB0b3IK
K19NVExfSU5MSU5FIE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yKiBNVEw6OkJsaXRQYXNzRGVzY3Jp
cHRvcjo6YmxpdFBhc3NEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkJsaXRQYXNzRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMQmxpdFBh
c3NEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChibGl0UGFzc0Rlc2NyaXB0b3IpKTsKK30K
KworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzCitfTVRMX0lOTElORSBNVEw6
OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpCbGl0
UGFzc0Rlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsaXRQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQnVmZmVy
QXR0YWNobWVudHMpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExCdWZmZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTEJ1ZmZlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFiZGRlZmVhNzcwZDU0NzNlMzNmMWFj
NGFiYjI2NDYyYmZjZjQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExCdWZmZXIuaHBwCkBAIC0wLDAgKzEsMTAxIEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExC
dWZmZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdl
LmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisKK25hbWVzcGFj
ZSBNVEwKK3sKK2NsYXNzIEJ1ZmZlciA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8QnVmZmVyLCBS
ZXNvdXJjZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6VUludGVnZXIgICBsZW5ndGgoKSBjb25zdDsK
KworICAgIHZvaWQqICAgICAgICAgIGNvbnRlbnRzKCk7CisKKyAgICB2b2lkICAgICAgICAgICBk
aWRNb2RpZnlSYW5nZShOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgY2xhc3MgVGV4dHVyZSogbmV3
VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OlVJ
bnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93KTsKKworICAgIHZvaWQgICAg
ICAgICAgIGFkZERlYnVnTWFya2VyKGNvbnN0IE5TOjpTdHJpbmcqIG1hcmtlciwgTlM6OlJhbmdl
IHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgIHJlbW92ZUFsbERlYnVnTWFya2VycygpOwor
CisgICAgY2xhc3MgQnVmZmVyKiAgcmVtb3RlU3RvcmFnZUJ1ZmZlcigpIGNvbnN0OworCisgICAg
Y2xhc3MgQnVmZmVyKiAgbmV3UmVtb3RlQnVmZmVyVmlld0ZvckRldmljZShjb25zdCBjbGFzcyBE
ZXZpY2UqIGRldmljZSk7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBsZW5ndGgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkJ1ZmZlcjo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobGVuZ3RoKSk7Cit9CisKKy8vIG1ldGhvZDogY29udGVudHMKK19NVExfSU5MSU5FIHZvaWQq
IE1UTDo6QnVmZmVyOjpjb250ZW50cygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29udGVudHMpKTsKK30KKworLy8gbWV0
aG9kOiBkaWRNb2RpZnlSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCdWZmZXI6OmRpZE1v
ZGlmeVJhbmdlKE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGlkTW9kaWZ5UmFuZ2VfKSwgcmFuZ2UpOworfQor
CisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjpvZmZzZXQ6Ynl0ZXNQZXJSb3c6
CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6QnVmZmVyOjpuZXdUZXh0dXJlKGNvbnN0
IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpVSW50ZWdlciBvZmZzZXQs
IE5TOjpVSW50ZWdlciBieXRlc1BlclJvdykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1RleHR1cmVXaXRo
RGVzY3JpcHRvcl9vZmZzZXRfYnl0ZXNQZXJSb3dfKSwgZGVzY3JpcHRvciwgb2Zmc2V0LCBieXRl
c1BlclJvdyk7Cit9CisKKy8vIG1ldGhvZDogYWRkRGVidWdNYXJrZXI6cmFuZ2U6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6QnVmZmVyOjphZGREZWJ1Z01hcmtlcihjb25zdCBOUzo6U3RyaW5nKiBt
YXJrZXIsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYWRkRGVidWdNYXJrZXJfcmFuZ2VfKSwgbWFya2VyLCBy
YW5nZSk7Cit9CisKKy8vIG1ldGhvZDogcmVtb3ZlQWxsRGVidWdNYXJrZXJzCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QnVmZmVyOjpyZW1vdmVBbGxEZWJ1Z01hcmtlcnMoKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZW1vdmVBbGxEZWJ1
Z01hcmtlcnMpKTsKK30KKworLy8gcHJvcGVydHk6IHJlbW90ZVN0b3JhZ2VCdWZmZXIKK19NVExf
SU5MSU5FIE1UTDo6QnVmZmVyKiBNVEw6OkJ1ZmZlcjo6cmVtb3RlU3RvcmFnZUJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHJlbW90ZVN0b3JhZ2VCdWZmZXIpKTsKK30KKworLy8gbWV0aG9k
OiBuZXdSZW1vdGVCdWZmZXJWaWV3Rm9yRGV2aWNlOgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIq
IE1UTDo6QnVmZmVyOjpuZXdSZW1vdGVCdWZmZXJWaWV3Rm9yRGV2aWNlKGNvbnN0IE1UTDo6RGV2
aWNlKiBkZXZpY2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZm
ZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbW90ZUJ1ZmZlclZpZXdGb3JEZXZpY2Vf
KSwgZGV2aWNlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExDYXB0dXJlTWFuYWdlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRh
bC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1hbmFnZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZTEwZjVjMjM0
YjBmMWU0NjYwNjQ3ZDFlYWI5MDAwMDQyOWQ4NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ2FwdHVyZU1hbmFnZXIuaHBwCkBAIC0w
LDAgKzEsMjIwIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vCisvLyBNZXRhbC9NVExDYXB0dXJlTWFuYWdlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQg
MjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQs
IGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhw
cCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUu
aHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUg
Ik1UTENhcHR1cmVNYW5hZ2VyLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVNKE5T
OjpJbnRlZ2VyLCBDYXB0dXJlRXJyb3IpIHsKKyAgICBDYXB0dXJlRXJyb3JOb3RTdXBwb3J0ZWQg
PSAxLAorICAgIENhcHR1cmVFcnJvckFscmVhZHlDYXB0dXJpbmcgPSAyLAorICAgIENhcHR1cmVF
cnJvckludmFsaWREZXNjcmlwdG9yID0gMywKK307CisKK19NVExfRU5VTShOUzo6SW50ZWdlciwg
Q2FwdHVyZURlc3RpbmF0aW9uKSB7CisgICAgQ2FwdHVyZURlc3RpbmF0aW9uRGV2ZWxvcGVyVG9v
bHMgPSAxLAorICAgIENhcHR1cmVEZXN0aW5hdGlvbkdQVVRyYWNlRG9jdW1lbnQgPSAyLAorfTsK
KworY2xhc3MgQ2FwdHVyZURlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8Q2FwdHVyZURl
c2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENhcHR1cmVEZXNjcmlwdG9y
KiBhbGxvYygpOworCisgICAgY2xhc3MgQ2FwdHVyZURlc2NyaXB0b3IqICAgICAgICBpbml0KCk7
CisKKyAgICBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVPYmplY3QoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENhcHR1cmVPYmpl
Y3QoaWQgY2FwdHVyZU9iamVjdCk7CisKKyAgICBNVEw6OkNhcHR1cmVEZXN0aW5hdGlvbiAgICAg
ICAgIGRlc3RpbmF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXREZXN0aW5hdGlvbihNVEw6OkNhcHR1cmVEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbik7
CisKKyAgICBOUzo6VVJMKiAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFVSTCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T3V0cHV0VVJMKGNvbnN0
IE5TOjpVUkwqIG91dHB1dFVSTCk7Cit9OworCitjbGFzcyBDYXB0dXJlTWFuYWdlciA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8Q2FwdHVyZU1hbmFnZXI+Cit7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNsYXNzIENhcHR1cmVNYW5hZ2VyKiBhbGxvYygpOworCisgICAgc3RhdGljIGNsYXNzIENhcHR1
cmVNYW5hZ2VyKiBzaGFyZWRDYXB0dXJlTWFuYWdlcigpOworCisgICAgTVRMOjpDYXB0dXJlTWFu
YWdlciogICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBDYXB0dXJlU2NvcGUqICAgICAgICAg
IG5ld0NhcHR1cmVTY29wZShjb25zdCBjbGFzcyBEZXZpY2UqIGRldmljZSk7CisKKyAgICBjbGFz
cyBDYXB0dXJlU2NvcGUqICAgICAgICAgIG5ld0NhcHR1cmVTY29wZShjb25zdCBjbGFzcyBDb21t
YW5kUXVldWUqIGNvbW1hbmRRdWV1ZSk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1cHBvcnRzRGVzdGluYXRpb24oTVRMOjpDYXB0dXJlRGVzdGluYXRpb24gZGVzdGluYXRp
b24pOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhcHR1cmUoY29u
c3QgY2xhc3MgQ2FwdHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXB0dXJlKGNvbnN0
IGNsYXNzIERldmljZSogZGV2aWNlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhcnRDYXB0dXJlKGNvbnN0IGNsYXNzIENvbW1hbmRRdWV1ZSogY29tbWFuZFF1ZXVlKTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDYXB0dXJlKGNvbnN0IGNs
YXNzIENhcHR1cmVTY29wZSogY2FwdHVyZVNjb3BlKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RvcENhcHR1cmUoKTsKKworICAgIGNsYXNzIENhcHR1cmVTY29wZSogICAg
ICAgICAgZGVmYXVsdENhcHR1cmVTY29wZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RGVmYXVsdENhcHR1cmVTY29wZShjb25zdCBjbGFzcyBDYXB0dXJlU2Nv
cGUqIGRlZmF1bHRDYXB0dXJlU2NvcGUpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
ICAgICBpc0NhcHR1cmluZygpIGNvbnN0OworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBh
bGxvYworX01UTF9JTkxJTkUgTVRMOjpDYXB0dXJlRGVzY3JpcHRvciogTVRMOjpDYXB0dXJlRGVz
Y3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkNh
cHR1cmVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTENhcHR1cmVEZXNjcmlwdG9yKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpDYXB0dXJlRGVzY3JpcHRv
ciogTVRMOjpDYXB0dXJlRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmluaXQ8TVRMOjpDYXB0dXJlRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IGNh
cHR1cmVPYmplY3QKK19NVExfSU5MSU5FIGlkIE1UTDo6Q2FwdHVyZURlc2NyaXB0b3I6OmNhcHR1
cmVPYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGlkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNhcHR1cmVPYmplY3QpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkNhcHR1cmVEZXNjcmlwdG9yOjpzZXRDYXB0dXJlT2JqZWN0KGlkIGNhcHR1cmVP
YmplY3QpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldENhcHR1cmVPYmplY3RfKSwgY2FwdHVyZU9iamVjdCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBkZXN0aW5hdGlvbgorX01UTF9JTkxJTkUgTVRMOjpDYXB0dXJlRGVzdGluYXRpb24gTVRM
OjpDYXB0dXJlRGVzY3JpcHRvcjo6ZGVzdGluYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRlc3RpbmF0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0
dXJlRGVzY3JpcHRvcjo6c2V0RGVzdGluYXRpb24oTVRMOjpDYXB0dXJlRGVzdGluYXRpb24gZGVz
dGluYXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldERlc3RpbmF0aW9uXyksIGRlc3RpbmF0aW9uKTsKK30KKworLy8gcHJvcGVy
dHk6IG91dHB1dFVSTAorX01UTF9JTkxJTkUgTlM6OlVSTCogTVRMOjpDYXB0dXJlRGVzY3JpcHRv
cjo6b3V0cHV0VVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VVJMKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChvdXRwdXRVUkwpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVEZXNjcmlwdG9yOjpzZXRPdXRwdXRVUkwoY29uc3QgTlM6
OlVSTCogb3V0cHV0VVJMKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRPdXRwdXRVUkxfKSwgb3V0cHV0VVJMKTsKK30KKworLy8gc3Rh
dGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVyZU1hbmFnZXIqIE1UTDo6
Q2FwdHVyZU1hbmFnZXI6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpDYXB0dXJlTWFuYWdlcj4oX01UTF9QUklWQVRFX0NMUyhNVExDYXB0dXJlTWFuYWdlcikp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBzaGFyZWRDYXB0dXJlTWFuYWdlcgorX01UTF9JTkxJ
TkUgTVRMOjpDYXB0dXJlTWFuYWdlciogTVRMOjpDYXB0dXJlTWFuYWdlcjo6c2hhcmVkQ2FwdHVy
ZU1hbmFnZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q2FwdHVy
ZU1hbmFnZXIqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTENhcHR1cmVNYW5hZ2VyKSwgX01UTF9QUklW
QVRFX1NFTChzaGFyZWRDYXB0dXJlTWFuYWdlcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6Q2FwdHVyZU1hbmFnZXIqIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OmluaXQo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q2FwdHVyZU1hbmFnZXI+KCk7
Cit9CisKKy8vIG1ldGhvZDogbmV3Q2FwdHVyZVNjb3BlV2l0aERldmljZToKK19NVExfSU5MSU5F
IE1UTDo6Q2FwdHVyZVNjb3BlKiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpuZXdDYXB0dXJlU2NvcGUo
Y29uc3QgTVRMOjpEZXZpY2UqIGRldmljZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkNhcHR1cmVTY29wZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q2FwdHVy
ZVNjb3BlV2l0aERldmljZV8pLCBkZXZpY2UpOworfQorCisvLyBtZXRob2Q6IG5ld0NhcHR1cmVT
Y29wZVdpdGhDb21tYW5kUXVldWU6CitfTVRMX0lOTElORSBNVEw6OkNhcHR1cmVTY29wZSogTVRM
OjpDYXB0dXJlTWFuYWdlcjo6bmV3Q2FwdHVyZVNjb3BlKGNvbnN0IE1UTDo6Q29tbWFuZFF1ZXVl
KiBjb21tYW5kUXVldWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpD
YXB0dXJlU2NvcGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NhcHR1cmVTY29wZVdpdGhD
b21tYW5kUXVldWVfKSwgY29tbWFuZFF1ZXVlKTsKK30KKworLy8gbWV0aG9kOiBzdXBwb3J0c0Rl
c3RpbmF0aW9uOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpzdXBwb3J0
c0Rlc3RpbmF0aW9uKE1UTDo6Q2FwdHVyZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHN1cHBvcnRzRGVzdGluYXRpb25fKSwgZGVzdGluYXRpb24pOworfQorCisvLyBtZXRob2Q6
IHN0YXJ0Q2FwdHVyZVdpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgYm9vbCBNVEw6
OkNhcHR1cmVNYW5hZ2VyOjpzdGFydENhcHR1cmUoY29uc3QgTVRMOjpDYXB0dXJlRGVzY3JpcHRv
ciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdGFydENhcHR1cmVXaXRo
RGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDog
c3RhcnRDYXB0dXJlV2l0aERldmljZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlTWFu
YWdlcjo6c3RhcnRDYXB0dXJlKGNvbnN0IE1UTDo6RGV2aWNlKiBkZXZpY2UpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0Q2FwdHVy
ZVdpdGhEZXZpY2VfKSwgZGV2aWNlKTsKK30KKworLy8gbWV0aG9kOiBzdGFydENhcHR1cmVXaXRo
Q29tbWFuZFF1ZXVlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpzdGFy
dENhcHR1cmUoY29uc3QgTVRMOjpDb21tYW5kUXVldWUqIGNvbW1hbmRRdWV1ZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhcnRDYXB0
dXJlV2l0aENvbW1hbmRRdWV1ZV8pLCBjb21tYW5kUXVldWUpOworfQorCisvLyBtZXRob2Q6IHN0
YXJ0Q2FwdHVyZVdpdGhTY29wZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlTWFuYWdl
cjo6c3RhcnRDYXB0dXJlKGNvbnN0IE1UTDo6Q2FwdHVyZVNjb3BlKiBjYXB0dXJlU2NvcGUpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0
YXJ0Q2FwdHVyZVdpdGhTY29wZV8pLCBjYXB0dXJlU2NvcGUpOworfQorCisvLyBtZXRob2Q6IHN0
b3BDYXB0dXJlCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6OnN0b3BDYXB0
dXJlKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc3RvcENhcHR1cmUpKTsKK30KKworLy8gcHJvcGVydHk6IGRlZmF1bHRDYXB0dXJlU2Nv
cGUKK19NVExfSU5MSU5FIE1UTDo6Q2FwdHVyZVNjb3BlKiBNVEw6OkNhcHR1cmVNYW5hZ2VyOjpk
ZWZhdWx0Q2FwdHVyZVNjb3BlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkNhcHR1cmVTY29wZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVmYXVsdENh
cHR1cmVTY29wZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q2FwdHVyZU1hbmFnZXI6
OnNldERlZmF1bHRDYXB0dXJlU2NvcGUoY29uc3QgTVRMOjpDYXB0dXJlU2NvcGUqIGRlZmF1bHRD
YXB0dXJlU2NvcGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldERlZmF1bHRDYXB0dXJlU2NvcGVfKSwgZGVmYXVsdENhcHR1cmVTY29w
ZSk7Cit9CisKKy8vIHByb3BlcnR5OiBpc0NhcHR1cmluZworX01UTF9JTkxJTkUgYm9vbCBNVEw6
OkNhcHR1cmVNYW5hZ2VyOjppc0NhcHR1cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0NhcHR1cmluZykp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TENhcHR1cmVTY29wZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMQ2FwdHVyZVNjb3BlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzYwMjM1YTE0ODYxYjhlY2JjZmZjZjQw
MmQ1YTNjYTEyNDUxOTk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTENhcHR1cmVTY29wZS5ocHAKQEAgLTAsMCArMSw5MiBAQAorLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwv
TVRMQ2FwdHVyZVNjb3BlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5j
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
cHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhw
cCIKKworI2luY2x1ZGUgIi4uL0ZvdW5kYXRpb24vTlNPYmplY3QuaHBwIgorI2luY2x1ZGUgIi4u
L0ZvdW5kYXRpb24vTlNTdHJpbmcuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgQ2FwdHVyZVNjb3Bl
IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDYXB0dXJlU2NvcGU+Cit7CitwdWJsaWM6CisgICAg
Y2xhc3MgRGV2aWNlKiAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgIHNldExhYmVsKGNv
bnN0IE5TOjpTdHJpbmcqIHBMYWJlbCk7CisKKyAgICBjbGFzcyBDb21tYW5kUXVldWUqIGNvbW1h
bmRRdWV1ZSgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICBiZWdpblNjb3BlKCk7
CisgICAgdm9pZCAgICAgICAgICAgICAgICBlbmRTY29wZSgpOworfTsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19NVExfSU5MSU5FIE1UTDo6
RGV2aWNlKiBNVEw6OkNhcHR1cmVTY29wZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmlj
ZSkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDYXB0dXJlU2NvcGU6OmxhYmVsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNhcHR1cmVTY29w
ZTo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogcExhYmVsKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBwTGFiZWwp
OworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
X01UTF9JTkxJTkUgTVRMOjpDb21tYW5kUXVldWUqIE1UTDo6Q2FwdHVyZVNjb3BlOjpjb21tYW5k
UXVldWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPENvbW1hbmRR
dWV1ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29tbWFuZFF1ZXVlKSk7Cit9CisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6Q2FwdHVyZVNjb3BlOjpiZWdpblNjb3BlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJlZ2luU2NvcGUpKTsK
K30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpDYXB0dXJlU2NvcGU6OmVuZFNjb3BlKCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZFNj
b3BlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENv
bW1hbmRCdWZmZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TENvbW1hbmRCdWZmZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZmM5OGU1MTFiZjZhM2FmMzBkMzQzZDRi
YjNmNjViNTU0YWYxMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMQ29tbWFuZEJ1ZmZlci5ocHAKQEAgLTAsMCArMSw0NjUgQEAKKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFs
L01UTENvbW1hbmRCdWZmZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJ
bmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRM
SGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExDb21tYW5kQnVmZmVy
LmhwcCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBDb21tYW5kQnVmZmVyU3RhdHVzKSB7CisgICAgQ29tbWFuZEJ1ZmZl
clN0YXR1c05vdEVucXVldWVkID0gMCwKKyAgICBDb21tYW5kQnVmZmVyU3RhdHVzRW5xdWV1ZWQg
PSAxLAorICAgIENvbW1hbmRCdWZmZXJTdGF0dXNDb21taXR0ZWQgPSAyLAorICAgIENvbW1hbmRC
dWZmZXJTdGF0dXNTY2hlZHVsZWQgPSAzLAorICAgIENvbW1hbmRCdWZmZXJTdGF0dXNDb21wbGV0
ZWQgPSA0LAorICAgIENvbW1hbmRCdWZmZXJTdGF0dXNFcnJvciA9IDUsCit9OworCitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBDb21tYW5kQnVmZmVyRXJyb3IpIHsKKyAgICBDb21tYW5kQnVmZmVy
RXJyb3JOb25lID0gMCwKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JUaW1lb3V0ID0gMiwKKyAgICBD
b21tYW5kQnVmZmVyRXJyb3JQYWdlRmF1bHQgPSAzLAorICAgIENvbW1hbmRCdWZmZXJFcnJvckFj
Y2Vzc1Jldm9rZWQgPSA0LAorICAgIENvbW1hbmRCdWZmZXJFcnJvckJsYWNrbGlzdGVkID0gNCwK
KyAgICBDb21tYW5kQnVmZmVyRXJyb3JOb3RQZXJtaXR0ZWQgPSA3LAorICAgIENvbW1hbmRCdWZm
ZXJFcnJvck91dE9mTWVtb3J5ID0gOCwKKyAgICBDb21tYW5kQnVmZmVyRXJyb3JJbnZhbGlkUmVz
b3VyY2UgPSA5LAorICAgIENvbW1hbmRCdWZmZXJFcnJvck1lbW9yeWxlc3MgPSAxMCwKKyAgICBD
b21tYW5kQnVmZmVyRXJyb3JEZXZpY2VSZW1vdmVkID0gMTEsCisgICAgQ29tbWFuZEJ1ZmZlckVy
cm9yU3RhY2tPdmVyZmxvdyA9IDEyLAorfTsKKworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwg
Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uKSB7CisgICAgQ29tbWFuZEJ1ZmZlckVycm9yT3B0aW9u
Tm9uZSA9IDAsCisgICAgQ29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uRW5jb2RlckV4ZWN1dGlvblN0
YXR1cyA9IDEsCit9OworCitfTVRMX0VOVU0oTlM6OkludGVnZXIsIENvbW1hbmRFbmNvZGVyRXJy
b3JTdGF0ZSkgeworICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZVVua25vd24gPSAwLAorICAg
IENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZUNvbXBsZXRlZCA9IDEsCisgICAgQ29tbWFuZEVuY29k
ZXJFcnJvclN0YXRlQWZmZWN0ZWQgPSAyLAorICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZVBl
bmRpbmcgPSAzLAorICAgIENvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZUZhdWx0ZWQgPSA0LAorfTsK
KworY2xhc3MgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8Q29t
bWFuZEJ1ZmZlckRlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvbW1h
bmRCdWZmZXJEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tbWFuZEJ1ZmZlckRl
c2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldGFpbmVkUmVmZXJlbmNlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmV0YWluZWRSZWZlcmVuY2VzKGJvb2wgcmV0
YWluZWRSZWZlcmVuY2VzKTsKKworICAgIE1UTDo6Q29tbWFuZEJ1ZmZlckVycm9yT3B0aW9uICAg
ICAgICAgZXJyb3JPcHRpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRFcnJvck9wdGlvbnMoTVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRp
b24gZXJyb3JPcHRpb25zKTsKK307CisKK2NsYXNzIENvbW1hbmRCdWZmZXJFbmNvZGVySW5mbyA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q29tbWFuZEJ1ZmZlckVuY29kZXJJbmZvPgoreworcHVi
bGljOgorICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisK
KyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICBkZWJ1Z1NpZ25wb3N0cygpIGNvbnN0
OworCisgICAgTVRMOjpDb21tYW5kRW5jb2RlckVycm9yU3RhdGUgZXJyb3JTdGF0ZSgpIGNvbnN0
OworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgRGlzcGF0Y2hUeXBlKSB7CisgICAgRGlz
cGF0Y2hUeXBlU2VyaWFsID0gMCwKKyAgICBEaXNwYXRjaFR5cGVDb25jdXJyZW50ID0gMSwKK307
CisKK2NsYXNzIENvbW1hbmRCdWZmZXI7CisKK3VzaW5nIENvbW1hbmRCdWZmZXJIYW5kbGVyID0g
dm9pZCAoXikoQ29tbWFuZEJ1ZmZlciopOworCit1c2luZyBIYW5kbGVyRnVuY3Rpb24gPSBzdGQ6
OmZ1bmN0aW9uPHZvaWQoQ29tbWFuZEJ1ZmZlciopPjsKKworY2xhc3MgQ29tbWFuZEJ1ZmZlciA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q29tbWFuZEJ1ZmZlcj4KK3sKK3B1YmxpYzoKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkU2NoZWR1bGVkSGFu
ZGxlcihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDb21wbGV0ZWRIYW5kbGVyKGNvbnN0
IEhhbmRsZXJGdW5jdGlvbiYgZnVuY3Rpb24pOworCisgICAgY2xhc3MgRGV2aWNlKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgY2xhc3MgQ29tbWFu
ZFF1ZXVlKiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRRdWV1ZSgpIGNvbnN0OworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbmVkUmVm
ZXJlbmNlcygpIGNvbnN0OworCisgICAgTVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRpb24gICAg
ICAgICAgICAgIGVycm9yT3B0aW9ucygpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcq
IGxhYmVsKTsKKworICAgIENGVGltZUludGVydmFsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrZXJuZWxTdGFydFRpbWUoKSBjb25zdDsKKworICAgIENGVGltZUludGVydmFsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrZXJuZWxFbmRUaW1lKCkgY29uc3Q7CisKKyAgICBjbGFzcyBM
b2dDb250YWluZXIqICAgICAgICAgICAgICAgICAgICAgICAgbG9ncygpIGNvbnN0OworCisgICAg
Q0ZUaW1lSW50ZXJ2YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQVVN0YXJ0VGltZSgp
IGNvbnN0OworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdQVUVuZFRpbWUoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnF1ZXVlKCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWl0KCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkU2NoZWR1bGVkSGFuZGxlcihjb25zdCBNVEw6OkNvbW1h
bmRCdWZmZXJIYW5kbGVyIGJsb2NrKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmVzZW50RHJhd2FibGUoY29uc3QgY2xhc3MgRHJhd2FibGUqIGRy
YXdhYmxlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmVzZW50RHJhd2FibGVBdFRpbWUoY29uc3QgY2xhc3MgRHJhd2FibGUqIGRyYXdhYmxlLCBD
RlRpbWVJbnRlcnZhbCBwcmVzZW50YXRpb25UaW1lKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50RHJhd2FibGVBZnRlck1pbmltdW1EdXJh
dGlvbihjb25zdCBjbGFzcyBEcmF3YWJsZSogZHJhd2FibGUsIENGVGltZUludGVydmFsIGR1cmF0
aW9uKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
YWl0VW50aWxTY2hlZHVsZWQoKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRDb21wbGV0ZWRIYW5kbGVyKGNvbnN0IE1UTDo6Q29tbWFuZEJ1ZmZl
ckhhbmRsZXIgYmxvY2spOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdhaXRVbnRpbENvbXBsZXRlZCgpOworCisgICAgTVRMOjpDb21tYW5kQnVmZmVy
U3RhdHVzICAgICAgICAgICAgICAgICAgIHN0YXR1cygpIGNvbnN0OworCisgICAgTlM6OkVycm9y
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCkgY29uc3Q7CisKKyAgICBj
bGFzcyBCbGl0Q29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAgICAgYmxpdENvbW1hbmRFbmNv
ZGVyKCk7CisKKyAgICBjbGFzcyBSZW5kZXJDb21tYW5kRW5jb2RlciogICAgICAgICAgICAgICAg
cmVuZGVyQ29tbWFuZEVuY29kZXIoY29uc3QgY2xhc3MgUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIHJl
bmRlclBhc3NEZXNjcmlwdG9yKTsKKworICAgIGNsYXNzIENvbXB1dGVDb21tYW5kRW5jb2Rlciog
ICAgICAgICAgICAgICBjb21wdXRlQ29tbWFuZEVuY29kZXIoY29uc3QgY2xhc3MgQ29tcHV0ZVBh
c3NEZXNjcmlwdG9yKiBjb21wdXRlUGFzc0Rlc2NyaXB0b3IpOworCisgICAgY2xhc3MgQmxpdENv
bW1hbmRFbmNvZGVyKiAgICAgICAgICAgICAgICAgIGJsaXRDb21tYW5kRW5jb2Rlcihjb25zdCBj
bGFzcyBCbGl0UGFzc0Rlc2NyaXB0b3IqIGJsaXRQYXNzRGVzY3JpcHRvcik7CisKKyAgICBjbGFz
cyBDb21wdXRlQ29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAgY29tcHV0ZUNvbW1hbmRFbmNv
ZGVyKCk7CisKKyAgICBjbGFzcyBDb21wdXRlQ29tbWFuZEVuY29kZXIqICAgICAgICAgICAgICAg
Y29tcHV0ZUNvbW1hbmRFbmNvZGVyKE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlV2Fp
dChjb25zdCBjbGFzcyBFdmVudCogZXZlbnQsIHVpbnQ2NF90IHZhbHVlKTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVTaWduYWxFdmVudChj
b25zdCBjbGFzcyBFdmVudCogZXZlbnQsIHVpbnQ2NF90IHZhbHVlKTsKKworICAgIGNsYXNzIFBh
cmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIqICAgICAgICBwYXJhbGxlbFJlbmRlckNvbW1hbmRF
bmNvZGVyKGNvbnN0IGNsYXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yKiByZW5kZXJQYXNzRGVzY3Jp
cHRvcik7CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIqICAgICAgICAg
cmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKCk7CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRl
Q29tbWFuZEVuY29kZXIqICAgICAgICAgcmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0
IGNsYXNzIFJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogcmVzb3VyY2VTdGF0ZVBhc3NEZXNj
cmlwdG9yKTsKKworICAgIGNsYXNzIEFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNvZGVy
KiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVDb21tYW5kRW5jb2RlcigpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hEZWJ1Z0dyb3VwKGNvbnN0IE5T
OjpTdHJpbmcqIHN0cmluZyk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcG9wRGVidWdHcm91cCgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogTVRMOjpD
b21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9J
TkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogTVRMOjpDb21tYW5kQnVmZmVyRGVz
Y3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpDb21t
YW5kQnVmZmVyRGVzY3JpcHRvcj4oKTsKK30KKworLy8gcHJvcGVydHk6IHJldGFpbmVkUmVmZXJl
bmNlcworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpyZXRh
aW5lZFJlZmVyZW5jZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmV0YWluZWRSZWZlcmVuY2VzKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6c2V0UmV0YWlu
ZWRSZWZlcmVuY2VzKGJvb2wgcmV0YWluZWRSZWZlcmVuY2VzKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZXRhaW5lZFJlZmVyZW5j
ZXNfKSwgcmV0YWluZWRSZWZlcmVuY2VzKTsKK30KKworLy8gcHJvcGVydHk6IGVycm9yT3B0aW9u
cworX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRpb24gTVRMOjpDb21tYW5k
QnVmZmVyRGVzY3JpcHRvcjo6ZXJyb3JPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChlcnJvck9wdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRFcnJvck9wdGlvbnMoTVRMOjpDb21tYW5kQnVm
ZmVyRXJyb3JPcHRpb24gZXJyb3JPcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRFcnJvck9wdGlvbnNfKSwgZXJyb3JPcHRp
b25zKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBN
VEw6OkNvbW1hbmRCdWZmZXJFbmNvZGVySW5mbzo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxhYmVsKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZWJ1Z1NpZ25wb3N0cworX01UTF9JTkxJTkUg
TlM6OkFycmF5KiBNVEw6OkNvbW1hbmRCdWZmZXJFbmNvZGVySW5mbzo6ZGVidWdTaWducG9zdHMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoZGVidWdTaWducG9zdHMpKTsKK30KKworLy8gcHJvcGVydHk6
IGVycm9yU3RhdGUKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZEVuY29kZXJFcnJvclN0YXRlIE1U
TDo6Q29tbWFuZEJ1ZmZlckVuY29kZXJJbmZvOjplcnJvclN0YXRlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRFbmNvZGVyRXJyb3JTdGF0ZT4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChlcnJvclN0YXRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21tYW5kQnVmZmVyOjphZGRTY2hlZHVsZWRIYW5kbGVyKGNvbnN0IEhhbmRsZXJG
dW5jdGlvbiYgZnVuY3Rpb24pCit7CisgICAgX19ibG9jayBIYW5kbGVyRnVuY3Rpb24gYmxvY2tG
dW5jdGlvbiA9IGZ1bmN0aW9uOworCisgICAgYWRkU2NoZWR1bGVkSGFuZGxlciheKE1UTDo6Q29t
bWFuZEJ1ZmZlciogcENvbW1hbmRCdWZmZXIpIHsgYmxvY2tGdW5jdGlvbihwQ29tbWFuZEJ1ZmZl
cik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YWRkQ29t
cGxldGVkSGFuZGxlcihjb25zdCBIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKQoreworICAgIF9f
YmxvY2sgSGFuZGxlckZ1bmN0aW9uIGJsb2NrRnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIGFk
ZENvbXBsZXRlZEhhbmRsZXIoXihNVEw6OkNvbW1hbmRCdWZmZXIqIHBDb21tYW5kQnVmZmVyKSB7
IGJsb2NrRnVuY3Rpb24ocENvbW1hbmRCdWZmZXIpOyB9KTsKK30KKworLy8gcHJvcGVydHk6IGRl
dmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6ZGV2aWNl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb21t
YW5kUXVldWUKK19NVExfSU5MSU5FIE1UTDo6Q29tbWFuZFF1ZXVlKiBNVEw6OkNvbW1hbmRCdWZm
ZXI6OmNvbW1hbmRRdWV1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpDb21tYW5kUXVldWUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbW1hbmRRdWV1
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogcmV0YWluZWRSZWZlcmVuY2VzCitfTVRMX0lOTElORSBi
b29sIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cmV0YWluZWRSZWZlcmVuY2VzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHJldGFpbmVkUmVmZXJlbmNlcykpOworfQorCisvLyBwcm9wZXJ0eTogZXJyb3JPcHRpb25zCitf
TVRMX0lOTElORSBNVEw6OkNvbW1hbmRCdWZmZXJFcnJvck9wdGlvbiBNVEw6OkNvbW1hbmRCdWZm
ZXI6OmVycm9yT3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpDb21tYW5kQnVmZmVyRXJyb3JPcHRpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
ZXJyb3JPcHRpb25zKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6
OlN0cmluZyogTVRMOjpDb21tYW5kQnVmZmVyOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OnNldExh
YmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8v
IHByb3BlcnR5OiBrZXJuZWxTdGFydFRpbWUKK19NVExfSU5MSU5FIENGVGltZUludGVydmFsIE1U
TDo6Q29tbWFuZEJ1ZmZlcjo6a2VybmVsU3RhcnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxDRlRpbWVJbnRlcnZhbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChrZXJuZWxTdGFydFRpbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGtlcm5lbEVuZFRpbWUKK19N
VExfSU5MSU5FIENGVGltZUludGVydmFsIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6a2VybmVsRW5kVGlt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Q0ZUaW1lSW50ZXJ2
YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoa2VybmVsRW5kVGltZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogbG9ncworX01UTF9JTkxJTkUgTVRMOjpMb2dDb250YWluZXIqIE1UTDo6Q29tbWFuZEJ1
ZmZlcjo6bG9ncygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpMb2dDb250YWluZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxvZ3MpKTsKK30KKworLy8g
cHJvcGVydHk6IEdQVVN0YXJ0VGltZQorX01UTF9JTkxJTkUgQ0ZUaW1lSW50ZXJ2YWwgTVRMOjpD
b21tYW5kQnVmZmVyOjpHUFVTdGFydFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPENGVGltZUludGVydmFsPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKEdQVVN0
YXJ0VGltZSkpOworfQorCisvLyBwcm9wZXJ0eTogR1BVRW5kVGltZQorX01UTF9JTkxJTkUgQ0ZU
aW1lSW50ZXJ2YWwgTVRMOjpDb21tYW5kQnVmZmVyOjpHUFVFbmRUaW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxDRlRpbWVJbnRlcnZhbD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChHUFVFbmRUaW1lKSk7Cit9CisKKy8vIG1ldGhvZDogZW5xdWV1ZQorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRCdWZmZXI6OmVucXVldWUoKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbnF1ZXVlKSk7Cit9CisK
Ky8vIG1ldGhvZDogY29tbWl0CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
Y29tbWl0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoY29tbWl0KSk7Cit9CisKKy8vIG1ldGhvZDogYWRkU2NoZWR1bGVkSGFuZGxlcjoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjphZGRTY2hlZHVsZWRIYW5kbGVy
KGNvbnN0IE1UTDo6Q29tbWFuZEJ1ZmZlckhhbmRsZXIgYmxvY2spCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFkZFNjaGVkdWxlZEhhbmRs
ZXJfKSwgYmxvY2spOworfQorCisvLyBtZXRob2Q6IHByZXNlbnREcmF3YWJsZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGUoY29uc3QgTVRMOjpE
cmF3YWJsZSogZHJhd2FibGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHByZXNlbnREcmF3YWJsZV8pLCBkcmF3YWJsZSk7Cit9CisKKy8v
IG1ldGhvZDogcHJlc2VudERyYXdhYmxlOmF0VGltZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21tYW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGVBdFRpbWUoY29uc3QgTVRMOjpEcmF3YWJsZSog
ZHJhd2FibGUsIENGVGltZUludGVydmFsIHByZXNlbnRhdGlvblRpbWUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByZXNlbnREcmF3YWJs
ZV9hdFRpbWVfKSwgZHJhd2FibGUsIHByZXNlbnRhdGlvblRpbWUpOworfQorCisvLyBtZXRob2Q6
IHByZXNlbnREcmF3YWJsZTphZnRlck1pbmltdW1EdXJhdGlvbjoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21tYW5kQnVmZmVyOjpwcmVzZW50RHJhd2FibGVBZnRlck1pbmltdW1EdXJhdGlvbihj
b25zdCBNVEw6OkRyYXdhYmxlKiBkcmF3YWJsZSwgQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24pCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBy
ZXNlbnREcmF3YWJsZV9hZnRlck1pbmltdW1EdXJhdGlvbl8pLCBkcmF3YWJsZSwgZHVyYXRpb24p
OworfQorCisvLyBtZXRob2Q6IHdhaXRVbnRpbFNjaGVkdWxlZAorX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkNvbW1hbmRCdWZmZXI6OndhaXRVbnRpbFNjaGVkdWxlZCgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHdhaXRVbnRpbFNjaGVkdWxl
ZCkpOworfQorCisvLyBtZXRob2Q6IGFkZENvbXBsZXRlZEhhbmRsZXI6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6YWRkQ29tcGxldGVkSGFuZGxlcihjb25zdCBNVEw6OkNv
bW1hbmRCdWZmZXJIYW5kbGVyIGJsb2NrKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhZGRDb21wbGV0ZWRIYW5kbGVyXyksIGJsb2NrKTsK
K30KKworLy8gbWV0aG9kOiB3YWl0VW50aWxDb21wbGV0ZWQKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21tYW5kQnVmZmVyOjp3YWl0VW50aWxDb21wbGV0ZWQoKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3YWl0VW50aWxDb21wbGV0ZWQp
KTsKK30KKworLy8gcHJvcGVydHk6IHN0YXR1cworX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kQnVm
ZmVyU3RhdHVzIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6c3RhdHVzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRCdWZmZXJTdGF0dXM+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc3RhdHVzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBlcnJvcgorX01UTF9J
TkxJTkUgTlM6OkVycm9yKiBNVEw6OkNvbW1hbmRCdWZmZXI6OmVycm9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6RXJyb3IqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGVycm9yKSk7Cit9CisKKy8vIG1ldGhvZDogYmxpdENvbW1hbmRFbmNvZGVyCitfTVRM
X0lOTElORSBNVEw6OkJsaXRDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpibGl0
Q29tbWFuZEVuY29kZXIoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QmxpdENvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChibGl0Q29tbWFuZEVu
Y29kZXIpKTsKK30KKworLy8gbWV0aG9kOiByZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlw
dG9yOgorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5k
QnVmZmVyOjpyZW5kZXJDb21tYW5kRW5jb2Rlcihjb25zdCBNVEw6OlJlbmRlclBhc3NEZXNjcmlw
dG9yKiByZW5kZXJQYXNzRGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChy
ZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXyksIHJlbmRlclBhc3NEZXNjcmlwdG9y
KTsKK30KKworLy8gbWV0aG9kOiBjb21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoK
K19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1hbmRCdWZm
ZXI6OmNvbXB1dGVDb21tYW5kRW5jb2Rlcihjb25zdCBNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRv
ciogY29tcHV0ZVBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcl8pLCBjb21wdXRlUGFzc0Rlc2NyaXB0
b3IpOworfQorCisvLyBtZXRob2Q6IGJsaXRDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOgor
X01UTF9JTkxJTkUgTVRMOjpCbGl0Q29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
YmxpdENvbW1hbmRFbmNvZGVyKGNvbnN0IE1UTDo6QmxpdFBhc3NEZXNjcmlwdG9yKiBibGl0UGFz
c0Rlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGl0
Q29tbWFuZEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJsaXRDb21tYW5kRW5jb2Rl
cldpdGhEZXNjcmlwdG9yXyksIGJsaXRQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDog
Y29tcHV0ZUNvbW1hbmRFbmNvZGVyCitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVDb21tYW5kRW5j
b2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpjb21wdXRlQ29tbWFuZEVuY29kZXIoKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChjb21wdXRlQ29tbWFuZEVuY29kZXIpKTsKK30KKworLy8g
bWV0aG9kOiBjb21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGlzcGF0Y2hUeXBlOgorX01UTF9JTkxJ
TkUgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6Y29tcHV0
ZUNvbW1hbmRFbmNvZGVyKE1UTDo6RGlzcGF0Y2hUeXBlIGRpc3BhdGNoVHlwZSkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcio+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoY29tcHV0ZUNvbW1hbmRFbmNvZGVyV2l0aERpc3BhdGNoVHlw
ZV8pLCBkaXNwYXRjaFR5cGUpOworfQorCisvLyBtZXRob2Q6IGVuY29kZVdhaXRGb3JFdmVudDp2
YWx1ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjplbmNvZGVXYWl0KGNv
bnN0IE1UTDo6RXZlbnQqIGV2ZW50LCB1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlV2FpdEZvckV2ZW50
X3ZhbHVlXyksIGV2ZW50LCB2YWx1ZSk7Cit9CisKKy8vIG1ldGhvZDogZW5jb2RlU2lnbmFsRXZl
bnQ6dmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6ZW5jb2RlU2ln
bmFsRXZlbnQoY29uc3QgTVRMOjpFdmVudCogZXZlbnQsIHVpbnQ2NF90IHZhbHVlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmNvZGVT
aWduYWxFdmVudF92YWx1ZV8pLCBldmVudCwgdmFsdWUpOworfQorCisvLyBtZXRob2Q6IHBhcmFs
bGVsUmVuZGVyQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoKK19NVExfSU5MSU5FIE1UTDo6
UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlciogTVRMOjpDb21tYW5kQnVmZmVyOjpwYXJhbGxl
bFJlbmRlckNvbW1hbmRFbmNvZGVyKGNvbnN0IE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3IqIHJl
bmRlclBhc3NEZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6UGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
cGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yXyksIHJlbmRlclBhc3NE
ZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiByZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIK
K19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKiBNVEw6OkNvbW1h
bmRCdWZmZXI6OnJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcigpCit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcikpOworfQorCisv
LyBtZXRob2Q6IHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcldpdGhEZXNjcmlwdG9yOgorX01U
TF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1
ZmZlcjo6cmVzb3VyY2VTdGF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IE1UTDo6UmVzb3VyY2VTdGF0
ZVBhc3NEZXNjcmlwdG9yKiByZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc291cmNlU3RhdGVDb21tYW5kRW5jb2RlcldpdGhE
ZXNjcmlwdG9yXyksIHJlc291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhv
ZDogYWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIKK19NVExfSU5MSU5FIE1UTDo6
QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIqIE1UTDo6Q29tbWFuZEJ1ZmZlcjo6
YWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIoKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGFjY2VsZXJhdGlvblN0cnVjdHVyZUNvbW1hbmRFbmNv
ZGVyKSk7Cit9CisKKy8vIG1ldGhvZDogcHVzaERlYnVnR3JvdXA6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tbWFuZEJ1ZmZlcjo6cHVzaERlYnVnR3JvdXAoY29uc3QgTlM6OlN0cmluZyogc3Ry
aW5nKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChwdXNoRGVidWdHcm91cF8pLCBzdHJpbmcpOworfQorCisvLyBtZXRob2Q6IHBvcERlYnVn
R3JvdXAKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kQnVmZmVyOjpwb3BEZWJ1Z0dyb3Vw
KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocG9wRGVidWdHcm91cCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Yx
ZjM5MmJiNGY2MDE0YTkxM2UxY2EyNTUzMDFhZjRhZTY4YzFlNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21tYW5kRW5jb2Rlci5o
cHAKQEAgLTAsMCArMSwxMDEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTENvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCitu
YW1lc3BhY2UgTVRMCit7CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBSZXNvdXJjZVVzYWdl
KSB7CisgICAgUmVzb3VyY2VVc2FnZVJlYWQgPSAxLAorICAgIFJlc291cmNlVXNhZ2VXcml0ZSA9
IDIsCisgICAgUmVzb3VyY2VVc2FnZVNhbXBsZSA9IDQsCit9OworCitfTVRMX09QVElPTlMoTlM6
OlVJbnRlZ2VyLCBCYXJyaWVyU2NvcGUpIHsKKyAgICBCYXJyaWVyU2NvcGVCdWZmZXJzID0gMSwK
KyAgICBCYXJyaWVyU2NvcGVUZXh0dXJlcyA9IDIsCisgICAgQmFycmllclNjb3BlUmVuZGVyVGFy
Z2V0cyA9IDQsCit9OworCitjbGFzcyBDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBOUzo6UmVmZXJl
bmNpbmc8Q29tbWFuZEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgY2xhc3MgRGV2aWNlKiBkZXZp
Y2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIHZvaWQg
ICAgICAgICAgZW5kRW5jb2RpbmcoKTsKKworICAgIHZvaWQgICAgICAgICAgaW5zZXJ0RGVidWdT
aWducG9zdChjb25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpOworCisgICAgdm9pZCAgICAgICAgICBw
dXNoRGVidWdHcm91cChjb25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpOworCisgICAgdm9pZCAgICAg
ICAgICBwb3BEZWJ1Z0dyb3VwKCk7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19N
VExfSU5MSU5FIE1UTDo6RGV2aWNlKiBNVEw6OkNvbW1hbmRFbmNvZGVyOjpkZXZpY2UoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRM
X0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNvbW1hbmRFbmNvZGVyOjpsYWJlbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRF
bmNvZGVyOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFi
ZWwpOworfQorCisvLyBtZXRob2Q6IGVuZEVuY29kaW5nCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tbWFuZEVuY29kZXI6OmVuZEVuY29kaW5nKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5kRW5jb2RpbmcpKTsKK30KKworLy8gbWV0
aG9kOiBpbnNlcnREZWJ1Z1NpZ25wb3N0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRF
bmNvZGVyOjppbnNlcnREZWJ1Z1NpZ25wb3N0KGNvbnN0IE5TOjpTdHJpbmcqIHN0cmluZykKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5z
ZXJ0RGVidWdTaWducG9zdF8pLCBzdHJpbmcpOworfQorCisvLyBtZXRob2Q6IHB1c2hEZWJ1Z0dy
b3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRFbmNvZGVyOjpwdXNoRGVidWdHcm91
cChjb25zdCBOUzo6U3RyaW5nKiBzdHJpbmcpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHB1c2hEZWJ1Z0dyb3VwXyksIHN0cmluZyk7Cit9
CisKKy8vIG1ldGhvZDogcG9wRGVidWdHcm91cAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1h
bmRFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocG9wRGVidWdHcm91cCkpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbW1hbmRRdWV1ZS5o
cHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tbWFuZFF1ZXVl
LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNTRhMTZlMTRhNjNjZWNjM2VjNGJjNzRlYmJmMDg1YTQ2NWQ2NWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTENvbW1hbmRRdWV1ZS5ocHAKQEAgLTAsMCArMSw4OSBAQAorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMQ29tbWFuZFF1ZXVl
LmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
Ly8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAi
CisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaHBwPgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBDb21tYW5kUXVldWUgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPENvbW1hbmRRdWV1ZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3Ry
aW5nKiAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgIHNl
dExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERldmljZSogICAg
ICAgIGRldmljZSgpIGNvbnN0OworCisgICAgY2xhc3MgQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1
ZmZlcigpOworCisgICAgY2xhc3MgQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcihjb25zdCBj
bGFzcyBDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBD
b21tYW5kQnVmZmVyKiBjb21tYW5kQnVmZmVyV2l0aFVucmV0YWluZWRSZWZlcmVuY2VzKCk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICBpbnNlcnREZWJ1Z0NhcHR1cmVCb3VuZGFyeSgpOwor
fTsKKworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6Q29tbWFuZFF1ZXVlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbW1hbmRRdWV1ZTo6c2V0TGFiZWwoY29uc3QgTlM6
OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJvcGVydHk6IGRl
dmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6Q29tbWFuZFF1ZXVlOjpkZXZpY2Uo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gbWV0aG9kOiBjb21tYW5k
QnVmZmVyCitfTVRMX0lOTElORSBNVEw6OkNvbW1hbmRCdWZmZXIqIE1UTDo6Q29tbWFuZFF1ZXVl
Ojpjb21tYW5kQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkNvbW1hbmRCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbW1hbmRCdWZmZXIpKTsK
K30KKworLy8gbWV0aG9kOiBjb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElO
RSBNVEw6OkNvbW1hbmRCdWZmZXIqIE1UTDo6Q29tbWFuZFF1ZXVlOjpjb21tYW5kQnVmZmVyKGNv
bnN0IE1UTDo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21tYW5kQnVmZmVyKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChjb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9
CisKKy8vIG1ldGhvZDogY29tbWFuZEJ1ZmZlcldpdGhVbnJldGFpbmVkUmVmZXJlbmNlcworX01U
TF9JTkxJTkUgTVRMOjpDb21tYW5kQnVmZmVyKiBNVEw6OkNvbW1hbmRRdWV1ZTo6Y29tbWFuZEJ1
ZmZlcldpdGhVbnJldGFpbmVkUmVmZXJlbmNlcygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpDb21tYW5kQnVmZmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb21t
YW5kQnVmZmVyV2l0aFVucmV0YWluZWRSZWZlcmVuY2VzKSk7Cit9CisKKy8vIG1ldGhvZDogaW5z
ZXJ0RGVidWdDYXB0dXJlQm91bmRhcnkKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21tYW5kUXVl
dWU6Omluc2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5zZXJ0RGVidWdDYXB0dXJlQm91bmRh
cnkpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTENvbXB1dGVDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZh
OWVmNzhiMWUwYzMxNGRjY2NmZWQwNGM4NjM4ODFkYThmYmMzNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlQ29tbWFuZEVu
Y29kZXIuaHBwCkBAIC0wLDAgKzEsMzM3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21wdXRlQ29tbWFuZEVuY29kZXIu
aHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
Ky8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisv
LworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIK
KyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1h
bmRCdWZmZXIuaHBwIgorI2luY2x1ZGUgIk1UTENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRl
ICJNVExIZWFwLmhwcCIKKyNpbmNsdWRlICJNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhw
cCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisjaW5jbHVkZSAiTVRMU2FtcGxlci5ocHAi
CisjaW5jbHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorI2lu
Y2x1ZGUgIk1UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcCIKKworbmFtZXNwYWNlIE1UTAorewor
c3RydWN0IERpc3BhdGNoVGhyZWFkZ3JvdXBzSW5kaXJlY3RBcmd1bWVudHMKK3sKKyAgICB1aW50
MzJfdCB0aHJlYWRncm91cHNQZXJHcmlkWzNdOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFN0
YWdlSW5SZWdpb25JbmRpcmVjdEFyZ3VtZW50cworeworICAgIHVpbnQzMl90IHN0YWdlSW5Pcmln
aW5bM107CisgICAgdWludDMyX3Qgc3RhZ2VJblNpemVbM107Cit9IF9NVExfUEFDS0VEOworCitj
bGFzcyBDb21wdXRlQ29tbWFuZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbXB1
dGVDb21tYW5kRW5jb2RlciwgQ29tbWFuZEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgTVRMOjpE
aXNwYXRjaFR5cGUgZGlzcGF0Y2hUeXBlKCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0
ZSogc3RhdGUpOworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0Qnl0ZXMoY29uc3Qgdm9pZCog
Ynl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICBzZXRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5T
OjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICBzZXRCdWZmZXJPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2Vy
IGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldEJ1ZmZlcnMoTVRMOjpCdWZmZXIq
IGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNbXSwgTlM6OlJhbmdlIHJhbmdl
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0
IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgTlM6OlVJ
bnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgIHNldFZpc2libGVG
dW5jdGlvblRhYmxlcyhjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZSogdmlzaWJsZUZ1
bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICBzZXRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdlciBidWZm
ZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlcyhjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAg
ICAgICAgc2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IGNsYXNzIEFjY2VsZXJhdGlvblN0
cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgc2V0VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJl
KiB0ZXh0dXJlLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
c2V0VGV4dHVyZXMoTVRMOjpUZXh0dXJlKiB0ZXh0dXJlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgc2V0U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBs
ZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgIHNldFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5T
OjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTYW1wbGVyU3RhdGUo
Y29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9hdCBsb2RNaW5DbGFtcCwgZmxv
YXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICBzZXRTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25z
dCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpS
YW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRUaHJlYWRncm91cE1lbW9y
eUxlbmd0aChOUzo6VUludGVnZXIgbGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAg
dm9pZCAgICAgICAgICAgICAgc2V0SW1hZ2VibG9ja1dpZHRoKE5TOjpVSW50ZWdlciB3aWR0aCwg
TlM6OlVJbnRlZ2VyIGhlaWdodCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRTdGFnZUlu
UmVnaW9uKE1UTDo6UmVnaW9uIHJlZ2lvbik7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzZXRT
dGFnZUluUmVnaW9uKGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5TOjpVSW50
ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBkaXNw
YXRjaFRocmVhZGdyb3VwcyhNVEw6OlNpemUgdGhyZWFkZ3JvdXBzUGVyR3JpZCwgTVRMOjpTaXpl
IHRocmVhZHNQZXJUaHJlYWRncm91cCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBkaXNwYXRj
aFRocmVhZGdyb3Vwcyhjb25zdCBjbGFzcyBCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUlu
dGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3Jv
dXApOworCisgICAgdm9pZCAgICAgICAgICAgICAgZGlzcGF0Y2hUaHJlYWRzKE1UTDo6U2l6ZSB0
aHJlYWRzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJlYWRncm91cCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICB1cGRhdGVGZW5jZShjb25zdCBjbGFzcyBGZW5jZSogZmVuY2UpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgd2FpdEZvckZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBm
ZW5jZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICB1c2VSZXNvdXJjZShjb25zdCBjbGFzcyBS
ZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSk7CisKKyAgICB2b2lk
ICAgICAgICAgICAgICB1c2VSZXNvdXJjZXMoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10sIE5T
OjpVSW50ZWdlciBjb3VudCwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlKTsKKworICAgIHZvaWQg
ICAgICAgICAgICAgIHVzZUhlYXAoY29uc3QgY2xhc3MgSGVhcCogaGVhcCk7CisKKyAgICB2b2lk
ICAgICAgICAgICAgICB1c2VIZWFwcyhNVEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdlciBj
b3VudCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihj
b25zdCBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwg
TlM6OlJhbmdlIGV4ZWN1dGlvblJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgIGV4ZWN1
dGVDb21tYW5kc0luQnVmZmVyKGNvbnN0IGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5k
aXJlY3RDb21tYW5kYnVmZmVyLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGlyZWN0UmFuZ2VCdWZm
ZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICBtZW1vcnlCYXJyaWVyKE1UTDo6QmFycmllclNjb3BlIHNjb3BlKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgIG1lbW9yeUJhcnJpZXIoTVRMOjpSZXNvdXJjZSogcmVzb3VyY2VzW10s
IE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICBzYW1wbGVDb3Vu
dGVyc0luQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZl
ciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUluZGV4LCBib29sIGJhcnJpZXIpOworfTsKKworfQorCisv
LyBwcm9wZXJ0eTogZGlzcGF0Y2hUeXBlCitfTVRMX0lOTElORSBNVEw6OkRpc3BhdGNoVHlwZSBN
VEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6ZGlzcGF0Y2hUeXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRpc3BhdGNoVHlwZT4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChkaXNwYXRjaFR5cGUpKTsKK30KKworLy8gbWV0aG9kOiBzZXRDb21wdXRlUGlw
ZWxpbmVTdGF0ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6
OnNldENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUq
IHN0YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZV8pLCBzdGF0ZSk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0Qnl0ZXM6bGVuZ3RoOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyOjpzZXRCeXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJbnRlZ2Vy
IGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCeXRlc19sZW5ndGhfYXRJbmRleF8pLCBi
eXRlcywgbGVuZ3RoLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyOm9mZnNldDph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0
QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5T
OjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyX29mZnNldF9hdEluZGV4XyksIGJ1ZmZlciwgb2Zm
c2V0LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyT2Zmc2V0OmF0SW5kZXg6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRCdWZmZXJPZmZz
ZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJPZmZz
ZXRfYXRJbmRleF8pLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRCdWZmZXJz
Om9mZnNldHM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5k
RW5jb2Rlcjo6c2V0QnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUlu
dGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEJ1ZmZlcnNfb2Zmc2V0c193aXRo
UmFuZ2VfKSwgYnVmZmVycywgb2Zmc2V0cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZp
c2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6
OlZpc2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2Vy
IGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIHZp
c2libGVGdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Vmlz
aWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBN
VEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiB2aXNpYmxlRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJh
bmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXyksIHZp
c2libGVGdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3Qg
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
LCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVf
YXRCdWZmZXJJbmRleF8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZl
clJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBpbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEFjY2VsZXJhdGlv
blN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVD
b21tYW5kRW5jb2Rlcjo6c2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlKGNvbnN0IE1UTDo6QWNjZWxl
cmF0aW9uU3RydWN0dXJlKiBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIE5TOjpVSW50ZWdlciBidWZm
ZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfKSwgYWNjZWxl
cmF0aW9uU3RydWN0dXJlLCBidWZmZXJJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGV4dHVy
ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6
c2V0VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VGV4dHVyZV9hdEluZGV4XyksIHRleHR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBzZXRUZXh0dXJlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNv
bW1hbmRFbmNvZGVyOjpzZXRUZXh0dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpS
YW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0VGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1cmVzLCByYW5nZSk7Cit9
CisKKy8vIG1ldGhvZDogc2V0U2FtcGxlclN0YXRlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpT
YW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlclN0YXRl
X2F0SW5kZXhfKSwgc2FtcGxlciwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJT
dGF0ZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5j
b2Rlcjo6c2V0U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6
OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFu
Z2UpOworfQorCisvLyBtZXRob2Q6IHNldFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RNYXhD
bGFtcDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rl
cjo6c2V0U2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9h
dCBsb2RNaW5DbGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
U2FtcGxlclN0YXRlX2xvZE1pbkNsYW1wX2xvZE1heENsYW1wX2F0SW5kZXhfKSwgc2FtcGxlciwg
bG9kTWluQ2xhbXAsIGxvZE1heENsYW1wLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2Ft
cGxlclN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFNhbXBsZXJTdGF0ZXMoTVRM
OjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNvbnN0IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBj
b25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTYW1wbGVyU3Rh
dGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNfd2l0aFJhbmdlXyksIHNhbXBsZXJzLCBsb2RN
aW5DbGFtcHMsIGxvZE1heENsYW1wcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFRocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyOjpzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIg
bGVuZ3RoLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoX2F0
SW5kZXhfKSwgbGVuZ3RoLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0SW1hZ2VibG9ja1dp
ZHRoOmhlaWdodDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6
OnNldEltYWdlYmxvY2tXaWR0aChOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWln
aHQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEltYWdlYmxvY2tXaWR0aF9oZWlnaHRfKSwgd2lkdGgsIGhlaWdodCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0U3RhZ2VJblJlZ2lvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRl
Q29tbWFuZEVuY29kZXI6OnNldFN0YWdlSW5SZWdpb24oTVRMOjpSZWdpb24gcmVnaW9uKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRT
dGFnZUluUmVnaW9uXyksIHJlZ2lvbik7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RhZ2VJblJlZ2lv
bldpdGhJbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldFN0YWdlSW5SZWdpb24oY29uc3QgTVRM
OjpCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZz
ZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFN0YWdlSW5SZWdpb25XaXRoSW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZz
ZXRfKSwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKworLy8gbWV0
aG9kOiBkaXNwYXRjaFRocmVhZGdyb3Vwczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaFRocmVhZGdyb3Vw
cyhNVEw6OlNpemUgdGhyZWFkZ3JvdXBzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVhZHNQZXJUaHJl
YWRncm91cCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZGlzcGF0Y2hUaHJlYWRncm91cHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXyksIHRo
cmVhZGdyb3Vwc1BlckdyaWQsIHRocmVhZHNQZXJUaHJlYWRncm91cCk7Cit9CisKKy8vIG1ldGhv
ZDogZGlzcGF0Y2hUaHJlYWRncm91cHNXaXRoSW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJP
ZmZzZXQ6dGhyZWFkc1BlclRocmVhZGdyb3VwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1
dGVDb21tYW5kRW5jb2Rlcjo6ZGlzcGF0Y2hUaHJlYWRncm91cHMoY29uc3QgTVRMOjpCdWZmZXIq
IGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQsIE1UTDo6
U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVGhyZWFkZ3JvdXBzV2l0aEluZGly
ZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0X3RocmVhZHNQZXJUaHJlYWRncm91cF8pLCBp
bmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQsIHRocmVhZHNQZXJUaHJlYWRncm91
cCk7Cit9CisKKy8vIG1ldGhvZDogZGlzcGF0Y2hUaHJlYWRzOnRocmVhZHNQZXJUaHJlYWRncm91
cDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRpc3BhdGNo
VGhyZWFkcyhNVEw6OlNpemUgdGhyZWFkc1BlckdyaWQsIE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhy
ZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRpc3BhdGNoVGhyZWFkc190aHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgdGhyZWFk
c1BlckdyaWQsIHRocmVhZHNQZXJUaHJlYWRncm91cCk7Cit9CisKKy8vIG1ldGhvZDogdXBkYXRl
RmVuY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp1cGRh
dGVGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlRmVuY2VfKSwgZmVuY2UpOwor
fQorCisvLyBtZXRob2Q6IHdhaXRGb3JGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21w
dXRlQ29tbWFuZEVuY29kZXI6OndhaXRGb3JGZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
d2FpdEZvckZlbmNlXyksIGZlbmNlKTsKK30KKworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZTp1c2Fn
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OnVzZVJlc291
cmNlKGNvbnN0IE1UTDo6UmVzb3VyY2UqIHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNh
Z2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHVzZVJlc291cmNlX3VzYWdlXyksIHJlc291cmNlLCB1c2FnZSk7Cit9CisKKy8vIG1ldGhv
ZDogdXNlUmVzb3VyY2VzOmNvdW50OnVzYWdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1
dGVDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3VyY2VzKE1UTDo6UmVzb3VyY2UqIHJlc291cmNlc1td
LCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2FnZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVzb3Vy
Y2VzX2NvdW50X3VzYWdlXyksIHJlc291cmNlcywgY291bnQsIHVzYWdlKTsKK30KKworLy8gbWV0
aG9kOiB1c2VIZWFwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVDb21tYW5kRW5jb2Rl
cjo6dXNlSGVhcChjb25zdCBNVEw6OkhlYXAqIGhlYXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBfKSwgaGVhcCk7Cit9CisK
Ky8vIG1ldGhvZDogdXNlSGVhcHM6Y291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwcyhNVEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdl
ciBjb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodXNlSGVhcHNfY291bnRfKSwgaGVhcHMsIGNvdW50KTsKK30KKworLy8gbWV0aG9k
OiBleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcihjb25zdCBN
VEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6UmFu
Z2UgZXhlY3V0aW9uUmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyX3dpdGhSYW5nZV8pLCBp
bmRpcmVjdENvbW1hbmRCdWZmZXIsIGV4ZWN1dGlvblJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBl
eGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcjppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNl
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlQ29tbWFuZEVuY29kZXI6OmV4ZWN1dGVD
b21tYW5kc0luQnVmZmVyKGNvbnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVj
dENvbW1hbmRidWZmZXIsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdFJhbmdlQnVmZmVyLCBO
Uzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGV4ZWN1dGVDb21tYW5kc0luQnVmZmVy
X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0XyksIGluZGlyZWN0Q29tbWFuZGJ1
ZmZlciwgaW5kaXJlY3RSYW5nZUJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworfQorCisv
LyBtZXRob2Q6IG1lbW9yeUJhcnJpZXJXaXRoU2NvcGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjptZW1vcnlCYXJyaWVyKE1UTDo6QmFycmllclNjb3BlIHNj
b3BlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtZW1vcnlCYXJyaWVyV2l0aFNjb3BlXyksIHNjb3BlKTsKK30KKworLy8gbWV0aG9kOiBt
ZW1vcnlCYXJyaWVyV2l0aFJlc291cmNlczpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpD
b21wdXRlQ29tbWFuZEVuY29kZXI6Om1lbW9yeUJhcnJpZXIoTVRMOjpSZXNvdXJjZSogcmVzb3Vy
Y2VzW10sIE5TOjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWVtb3J5QmFycmllcldpdGhSZXNvdXJjZXNfY291
bnRfKSwgcmVzb3VyY2VzLCBjb3VudCk7Cit9CisKKy8vIG1ldGhvZDogc2FtcGxlQ291bnRlcnNJ
bkJ1ZmZlcjphdFNhbXBsZUluZGV4OndpdGhCYXJyaWVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2FtcGxlQ291bnRlcnNJbkJ1ZmZlcihjb25zdCBNVEw6
OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHNhbXBsZUlu
ZGV4LCBib29sIGJhcnJpZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50ZXJzSW5CdWZmZXJfYXRTYW1wbGVJbmRleF93
aXRoQmFycmllcl8pLCBzYW1wbGVCdWZmZXIsIHNhbXBsZUluZGV4LCBiYXJyaWVyKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRl
UGFzcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ29tcHV0
ZVBhc3MuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzZDRiNTI2NzZkZGIwMWQ2ZjU4OThjNWQ3MzE1MWFlM2Y3
NDYzZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMQ29tcHV0ZVBhc3MuaHBwCkBAIC0wLDAgKzEsMTgxIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21wdXRl
UGFzcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisv
LyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2Uu
aHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTENvbW1hbmRCdWZmZXIuaHBwIgorCituYW1l
c3BhY2UgTVRMCit7CitjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNj
cmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvbXB1dGVQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBD
b21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgp
OworCisgICAgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNhbXBsZUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVCdWZmZXIoY29u
c3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKTsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0T2ZFbmNvZGVyU2Ft
cGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworCisgICAg
TlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuZE9mRW5jb2RlclNh
bXBsZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9OworCitj
bGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQ29tcHV0ZVBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xh
c3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAgICAg
ICAgaW5pdCgpOworCisgICAgY2xhc3MgQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50
RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5k
ZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIENvbXB1dGVQYXNzU2FtcGxl
QnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRh
Y2htZW50SW5kZXgpOworfTsKKworY2xhc3MgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yIDogcHVibGlj
IE5TOjpDb3B5aW5nPENvbXB1dGVQYXNzRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGFsbG9j
KCk7CisKKyAgICBjbGFzcyBDb21wdXRlUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBDb21wdXRlUGFzc0Rlc2NyaXB0
b3IqICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZVBhc3NEZXNjcmlwdG9yKCk7CisKKyAgICBN
VEw6OkRpc3BhdGNoVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
c3BhdGNoVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGlzcGF0Y2hUeXBlKE1UTDo6RGlzcGF0Y2hUeXBl
IGRpc3BhdGNoVHlwZSk7CisKKyAgICBjbGFzcyBDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkqIHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3Q7Cit9
OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvbXB1
dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0OjphbGxvYzxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpDb21w
dXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXIKK19NVExf
SU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlciogTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcio+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTYW1w
bGVCdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFNhbXBsZUJ1ZmZlcl8pLCBzYW1wbGVCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRP
ZkVuY29kZXJTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZkVuY29kZXJTYW1w
bGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I6OnNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRl
Z2VyIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5k
ZXhfKSwgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmRP
ZkVuY29kZXJTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6Q29tcHV0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZFbmNvZGVyU2FtcGxl
SW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmRPZkVuY29kZXJTYW1wbGVJbmRleCkpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIGVu
ZE9mRW5jb2RlclNhbXBsZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRFbmRPZkVuY29kZXJTYW1wbGVJbmRleF8pLCBlbmRP
ZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JB
cnJheSogTVRMOjpDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21wdXRl
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9D
TFMoTVRMQ29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6aW5pdDxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6
CitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFy
cmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVu
dERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNj
cmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdElu
ZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpDb21w
dXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6
VUludGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0Xyks
IGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFs
bG9jCitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRvciogTVRMOjpDb21wdXRl
UGFzc0Rlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcHV0ZVBh
c3NEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpD
b21wdXRlUGFzc0Rlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRv
cj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogY29tcHV0ZVBhc3NEZXNjcmlwdG9yCitfTVRM
X0lOTElORSBNVEw6OkNvbXB1dGVQYXNzRGVzY3JpcHRvciogTVRMOjpDb21wdXRlUGFzc0Rlc2Ny
aXB0b3I6OmNvbXB1dGVQYXNzRGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TENvbXB1dGVQYXNzRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwoY29tcHV0ZVBhc3NEZXNj
cmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkaXNwYXRjaFR5cGUKK19NVExfSU5MSU5FIE1U
TDo6RGlzcGF0Y2hUeXBlIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjpkaXNwYXRjaFR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGlzcGF0Y2hU
eXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRpc3BhdGNoVHlwZSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yOjpzZXREaXNwYXRjaFR5cGUoTVRM
OjpEaXNwYXRjaFR5cGUgZGlzcGF0Y2hUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREaXNwYXRjaFR5cGVfKSwgZGlzcGF0Y2hU
eXBlKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzCitfTVRMX0lO
TElORSBNVEw6OkNvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eSogTVRMOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I6OnNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbXB1dGVQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2FtcGxlQnVmZmVyQXR0YWNobWVudHMpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb21wdXRlUGlwZWxpbmUuaHBwIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTENvbXB1dGVQaXBlbGluZS5ocHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGU1NmQ3ZmZkMmUzZWY3NDdiOTViZTU0MDkyOGJlNmZmMDI4MDI2MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExD
b21wdXRlUGlwZWxpbmUuaHBwCkBAIC0wLDAgKzEsMzU3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb21wdXRlUGlwZWxp
bmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGlj
ZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNl
Iik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8g
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhw
cCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisKK25hbWVzcGFjZSBNVEwK
K3sKK2NsYXNzIENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24gOiBwdWJsaWMgTlM6OlJlZmVyZW5j
aW5nPENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIGFsbG9jKCk7CisKKyAgICBjbGFzcyBDb21w
dXRlUGlwZWxpbmVSZWZsZWN0aW9uKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OkFycmF5KiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cygpIGNvbnN0OworfTsKKworY2xh
c3MgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisK
KyAgICBjbGFzcyBGdW5jdGlvbiogICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUZ1bmN0
aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldENvbXB1dGVGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9u
KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRH
cm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaHJlYWRHcm91cFNpemVJ
c011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aChib29sIHRocmVhZEdyb3VwU2l6ZUlzTXVs
dGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXhUb3Rh
bFRocmVhZHNQZXJUaHJlYWRncm91cChOUzo6VUludGVnZXIgbWF4VG90YWxUaHJlYWRzUGVyVGhy
ZWFkZ3JvdXApOworCisgICAgY2xhc3MgU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqICAgICAg
IHN0YWdlSW5wdXREZXNjcmlwdG9yKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFN0YWdlSW5wdXREZXNjcmlwdG9yKGNvbnN0IGNsYXNzIFN0
YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKiBzdGFnZUlucHV0RGVzY3JpcHRvcik7CisKKyAgICBj
bGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogICAgYnVmZmVycygpIGNvbnN0Owor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRJbmRp
cmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKGJvb2wgc3Vw
cG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluc2VydExpYnJhcmllcygpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnNlcnRMaWJyYXJpZXMoY29uc3Qg
TlM6OkFycmF5KiBpbnNlcnRMaWJyYXJpZXMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByZWxvYWRlZExpYnJhcmllcygpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcmVsb2FkZWRMaWJyYXJpZXMo
Y29uc3QgTlM6OkFycmF5KiBwcmVsb2FkZWRMaWJyYXJpZXMpOworCisgICAgTlM6OkFycmF5KiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeUFyY2hpdmVzKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpbmFyeUFyY2hpdmVz
KGNvbnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMpOworCisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7CisKKyAgICBjbGFzcyBMaW5rZWRGdW5j
dGlvbnMqICAgICAgICAgICAgICAgICAgbGlua2VkRnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExpbmtlZEZ1bmN0aW9ucyhj
b25zdCBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqIGxpbmtlZEZ1bmN0aW9ucyk7CisKKyAgICBib29s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1
bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFkZGluZ0Jp
bmFyeUZ1bmN0aW9ucyk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF4Q2FsbFN0YWNrRGVwdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0TWF4Q2FsbFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1h
eENhbGxTdGFja0RlcHRoKTsKK307CisKK2NsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlIDogcHVi
bGljIE5TOjpSZWZlcmVuY2luZzxDb21wdXRlUGlwZWxpbmVTdGF0ZT4KK3sKK3B1YmxpYzoKKyAg
ICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworCisgICAg
Y2xhc3MgRGV2aWNlKiAgICAgICAgICAgICAgICAgICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRn
cm91cCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgdGhy
ZWFkRXhlY3V0aW9uV2lkdGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY1RocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKCkgY29uc3Q7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICBpbWFnZWJsb2NrTWVtb3J5TGVuZ3RoKE1U
TDo6U2l6ZSBpbWFnZWJsb2NrRGltZW5zaW9ucyk7CisKKyAgICBib29sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycygpIGNvbnN0OworCisg
ICAgY2xhc3MgRnVuY3Rpb25IYW5kbGUqICAgICAgICAgICAgZnVuY3Rpb25IYW5kbGUoY29uc3Qg
Y2xhc3MgRnVuY3Rpb24qIGZ1bmN0aW9uKTsKKworICAgIGNsYXNzIENvbXB1dGVQaXBlbGluZVN0
YXRlKiAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE5TOjpBcnJheSogZnVuY3Rp
b25zLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJs
ZSogICAgICBuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVuY3Rp
b25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpOworCisgICAgY2xhc3MgSW50ZXJzZWN0aW9u
RnVuY3Rpb25UYWJsZSogbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVzY3JpcHRvcik7Cit9OworCit9
CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkNvbXB1dGVQaXBl
bGluZVJlZmxlY3Rpb24qIE1UTDo6Q29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkNvbXB1dGVQaXBlbGluZVJlZmxl
Y3Rpb24+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbikpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6Q29tcHV0ZVBpcGVsaW5lUmVm
bGVjdGlvbiogTVRMOjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24+KCk7
Cit9CisKKy8vIHByb3BlcnR5OiBhcmd1bWVudHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRM
OjpDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uOjphcmd1bWVudHMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYXJndW1lbnRzKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUg
TlM6OlN0cmluZyogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBjb21wdXRlRnVuY3Rpb24KK19N
VExfSU5MSU5FIE1UTDo6RnVuY3Rpb24qIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6
Y29tcHV0ZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb21wdXRlRnVuY3Rpb24p
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6
OnNldENvbXB1dGVGdW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24p
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldENvbXB1dGVGdW5jdGlvbl8pLCBjb21wdXRlRnVuY3Rpb24pOworfQorCisvLyBwcm9wZXJ0
eTogdGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGgKK19NVExf
SU5MSU5FIGJvb2wgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjp0aHJlYWRHcm91cFNp
emVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRH
cm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGhyZWFkR3JvdXBT
aXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGgoYm9vbCB0aHJlYWRHcm91cFNpemVJ
c011bHRpcGxlT2ZUaHJlYWRFeGVjdXRpb25XaWR0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGhyZWFkR3JvdXBTaXplSXNNdWx0
aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGhfKSwgdGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9m
VGhyZWFkRXhlY3V0aW9uV2lkdGgpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VG90YWxUaHJlYWRz
UGVyVGhyZWFkZ3JvdXAKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3I6Om1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXApKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldE1heFRvdGFsVGhy
ZWFkc1BlclRocmVhZGdyb3VwKE5TOjpVSW50ZWdlciBtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRn
cm91cCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0TWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXBfKSwgbWF4VG90YWxUaHJlYWRz
UGVyVGhyZWFkZ3JvdXApOworfQorCisvLyBwcm9wZXJ0eTogc3RhZ2VJbnB1dERlc2NyaXB0b3IK
K19NVExfSU5MSU5FIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c3RhZ2VJbnB1dERlc2NyaXB0b3IoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0
b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YWdlSW5wdXREZXNjcmlwdG9yKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRTdGFn
ZUlucHV0RGVzY3JpcHRvcihjb25zdCBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yKiBz
dGFnZUlucHV0RGVzY3JpcHRvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RhZ2VJbnB1dERlc2NyaXB0b3JfKSwgc3RhZ2VJbnB1
dERlc2NyaXB0b3IpOworfQorCisvLyBwcm9wZXJ0eTogYnVmZmVycworX01UTF9JTkxJTkUgTVRM
OjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yOjpidWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChidWZmZXJzKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0SW5kaXJlY3RDb21tYW5k
QnVmZmVycworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6
OnN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0
SW5kaXJlY3RDb21tYW5kQnVmZmVycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMo
Ym9vbCBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycykKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3VwcG9ydEluZGlyZWN0Q29t
bWFuZEJ1ZmZlcnNfKSwgc3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpOworfQorCisvLyBw
cm9wZXJ0eTogaW5zZXJ0TGlicmFyaWVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6Q29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6aW5zZXJ0TGlicmFyaWVzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGluc2VydExpYnJhcmllcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0SW5zZXJ0TGlicmFyaWVzKGNvbnN0IE5TOjpBcnJheSog
aW5zZXJ0TGlicmFyaWVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRJbnNlcnRMaWJyYXJpZXNfKSwgaW5zZXJ0TGlicmFyaWVzKTsK
K30KKworLy8gcHJvcGVydHk6IHByZWxvYWRlZExpYnJhcmllcworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnByZWxvYWRlZExpYnJhcmllcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChwcmVsb2FkZWRMaWJyYXJpZXMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnNldFByZWxvYWRlZExpYnJh
cmllcyhjb25zdCBOUzo6QXJyYXkqIHByZWxvYWRlZExpYnJhcmllcykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UHJlbG9hZGVkTGli
cmFyaWVzXyksIHByZWxvYWRlZExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiBiaW5hcnlB
cmNoaXZlcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3I6OmJpbmFyeUFyY2hpdmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJpbmFyeUFyY2hpdmVz
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
OjpzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hpdmVzKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRC
aW5hcnlBcmNoaXZlc18pLCBiaW5hcnlBcmNoaXZlcyk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXQK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjpyZXNldCgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHJlc2V0KSk7Cit9CisKKy8vIHByb3BlcnR5OiBsaW5rZWRGdW5jdGlvbnMKK19NVExfSU5MSU5F
IE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6Omxp
bmtlZEZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpMaW5rZWRGdW5jdGlvbnMqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxpbmtlZEZ1bmN0
aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcjo6c2V0TGlua2VkRnVuY3Rpb25zKGNvbnN0IE1UTDo6TGlua2VkRnVuY3Rpb25zKiBsaW5r
ZWRGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldExpbmtlZEZ1bmN0aW9uc18pLCBsaW5rZWRGdW5jdGlvbnMpOworfQor
CisvLyBwcm9wZXJ0eTogc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnN1cHBvcnRBZGRpbmdCaW5hcnlG
dW5jdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxi
b29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6
OnNldFN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRkaW5nQmluYXJ5
RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRTdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zXyksIHN1cHBvcnRBZGRp
bmdCaW5hcnlGdW5jdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogbWF4Q2FsbFN0YWNrRGVwdGgK
K19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I6
Om1heENhbGxTdGFja0RlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4Q2FsbFN0YWNrRGVw
dGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3I6OnNldE1heENhbGxTdGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhDYWxsU3RhY2tEZXB0aCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0TWF4Q2FsbFN0YWNrRGVwdGhfKSwgbWF4Q2FsbFN0YWNrRGVwdGgpOworfQorCisvLyBwcm9w
ZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q29tcHV0ZVBpcGVsaW5l
U3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9w
ZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpDb21wdXRlUGlwZWxp
bmVTdGF0ZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Om1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VG90YWxUaHJlYWRzUGVyVGhyZWFk
Z3JvdXApKTsKK30KKworLy8gcHJvcGVydHk6IHRocmVhZEV4ZWN1dGlvbldpZHRoCitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZTo6dGhyZWFkRXhlY3V0
aW9uV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRFeGVjdXRpb25XaWR0aCkpOwor
fQorCisvLyBwcm9wZXJ0eTogc3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpzdGF0aWNUaHJlYWRn
cm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXRpY1RocmVhZGdyb3Vw
TWVtb3J5TGVuZ3RoKSk7Cit9CisKKy8vIG1ldGhvZDogaW1hZ2VibG9ja01lbW9yeUxlbmd0aEZv
ckRpbWVuc2lvbnM6CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpDb21wdXRlUGlwZWxp
bmVTdGF0ZTo6aW1hZ2VibG9ja01lbW9yeUxlbmd0aChNVEw6OlNpemUgaW1hZ2VibG9ja0RpbWVu
c2lvbnMpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGltYWdlYmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25z
XyksIGltYWdlYmxvY2tEaW1lbnNpb25zKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRJbmRp
cmVjdENvbW1hbmRCdWZmZXJzCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcHV0ZVBpcGVsaW5l
U3RhdGU6OnN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
dXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycykpOworfQorCisvLyBtZXRob2Q6IGZ1bmN0aW9u
SGFuZGxlV2l0aEZ1bmN0aW9uOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbkhhbmRsZSogTVRM
OjpDb21wdXRlUGlwZWxpbmVTdGF0ZTo6ZnVuY3Rpb25IYW5kbGUoY29uc3QgTVRMOjpGdW5jdGlv
biogZnVuY3Rpb24pCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5j
dGlvbkhhbmRsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25IYW5kbGVXaXRoRnVu
Y3Rpb25fKSwgZnVuY3Rpb24pOworfQorCisvLyBtZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0
YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnM6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6
OkNvbXB1dGVQaXBlbGluZVN0YXRlKiBNVEw6OkNvbXB1dGVQaXBlbGluZVN0YXRlOjpuZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZShjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9ucywgTlM6OkVycm9yKiog
ZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDb21wdXRlUGlw
ZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVXaXRoQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uc19lcnJvcl8pLCBmdW5jdGlvbnMsIGVycm9y
KTsKK30KKworLy8gbWV0aG9kOiBuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZVdpdGhEZXNjcmlwdG9y
OgorX01UTF9JTkxJTkUgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSogTVRMOjpDb21wdXRlUGlw
ZWxpbmVTdGF0ZTo6bmV3VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVu
Y3Rpb25UYWJsZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9y
KTsKK30KKworLy8gbWV0aG9kOiBuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlV2l0aERlc2Ny
aXB0b3I6CitfTVRMX0lOTElORSBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIE1UTDo6
Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Om5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3Qg
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExDb3VudGVycy5ocHAgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ291bnRlcnMuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
NjVjMWQ4ZWEwMTgxNmRkN2RmYjY5NDgxZDdhMjhkYjY0MTdiNTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMQ291bnRlcnMuaHBwCkBA
IC0wLDAgKzEsMjU4IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKy8vCisvLyBNZXRhbC9NVExDb3VudGVycy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAy
MC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIK
KyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBw
IgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1U
TFJlc291cmNlLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworCitfTVRMX0NPTlNUKCBOUzo6RXJy
b3JEb21haW4sIENvdW50ZXJFcnJvckRvbWFpbiApOworCit1c2luZyBDb21tb25Db3VudGVyID0g
TlM6OlN0cmluZyo7CisKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJU
aW1lc3RhbXAgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJUZXNz
ZWxsYXRpb25JbnB1dFBhdGNoZXMgKTsKK19NVExfQ09OU1QoIENvbW1vbkNvdW50ZXIsIENvbW1v
bkNvdW50ZXJWZXJ0ZXhJbnZvY2F0aW9ucyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwg
Q29tbW9uQ291bnRlclBvc3RUZXNzZWxsYXRpb25WZXJ0ZXhJbnZvY2F0aW9ucyApOworX01UTF9D
T05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckNsaXBwZXJJbnZvY2F0aW9ucyApOwor
X01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckNsaXBwZXJQcmltaXRpdmVz
T3V0ICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyRnJhZ21lbnRJ
bnZvY2F0aW9ucyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckZy
YWdtZW50c1Bhc3NlZCApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRl
ckNvbXB1dGVLZXJuZWxJbnZvY2F0aW9ucyApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlciwg
Q29tbW9uQ291bnRlclRvdGFsQ3ljbGVzICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBD
b21tb25Db3VudGVyVmVydGV4Q3ljbGVzICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3VudGVyLCBD
b21tb25Db3VudGVyVGVzc2VsbGF0aW9uQ3ljbGVzICk7CitfTVRMX0NPTlNUKCBDb21tb25Db3Vu
dGVyLCBDb21tb25Db3VudGVyUG9zdFRlc3NlbGxhdGlvblZlcnRleEN5Y2xlcyApOworX01UTF9D
T05TVCggQ29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlckZyYWdtZW50Q3ljbGVzICk7CitfTVRM
X0NPTlNUKCBDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyUmVuZGVyVGFyZ2V0V3JpdGVDeWNs
ZXMgKTsKKwordXNpbmcgQ29tbW9uQ291bnRlclNldCA9IE5TOjpTdHJpbmcqOworCitfTVRMX0NP
TlNUKCBDb21tb25Db3VudGVyU2V0LCBDb21tb25Db3VudGVyU2V0VGltZXN0YW1wICk7CitfTVRM
X0NPTlNUKCBDb21tb25Db3VudGVyU2V0LCBDb21tb25Db3VudGVyU2V0U3RhZ2VVdGlsaXphdGlv
biApOworX01UTF9DT05TVCggQ29tbW9uQ291bnRlclNldCwgQ29tbW9uQ291bnRlclNldFN0YXRp
c3RpYyApOworCitzdHJ1Y3QgQ291bnRlclJlc3VsdFRpbWVzdGFtcAoreworICAgIHVpbnQ2NF90
IHRpbWVzdGFtcDsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBDb3VudGVyUmVzdWx0U3RhZ2VV
dGlsaXphdGlvbgoreworICAgIHVpbnQ2NF90IHRvdGFsQ3ljbGVzOworICAgIHVpbnQ2NF90IHZl
cnRleEN5Y2xlczsKKyAgICB1aW50NjRfdCB0ZXNzZWxsYXRpb25DeWNsZXM7CisgICAgdWludDY0
X3QgcG9zdFRlc3NlbGxhdGlvblZlcnRleEN5Y2xlczsKKyAgICB1aW50NjRfdCBmcmFnbWVudEN5
Y2xlczsKKyAgICB1aW50NjRfdCByZW5kZXJUYXJnZXRDeWNsZXM7Cit9IF9NVExfUEFDS0VEOwor
CitzdHJ1Y3QgQ291bnRlclJlc3VsdFN0YXRpc3RpYworeworICAgIHVpbnQ2NF90IHRlc3NlbGxh
dGlvbklucHV0UGF0Y2hlczsKKyAgICB1aW50NjRfdCB2ZXJ0ZXhJbnZvY2F0aW9uczsKKyAgICB1
aW50NjRfdCBwb3N0VGVzc2VsbGF0aW9uVmVydGV4SW52b2NhdGlvbnM7CisgICAgdWludDY0X3Qg
Y2xpcHBlckludm9jYXRpb25zOworICAgIHVpbnQ2NF90IGNsaXBwZXJQcmltaXRpdmVzT3V0Owor
ICAgIHVpbnQ2NF90IGZyYWdtZW50SW52b2NhdGlvbnM7CisgICAgdWludDY0X3QgZnJhZ21lbnRz
UGFzc2VkOworICAgIHVpbnQ2NF90IGNvbXB1dGVLZXJuZWxJbnZvY2F0aW9uczsKK30gX01UTF9Q
QUNLRUQ7CisKK2NsYXNzIENvdW50ZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPENvdW50ZXI+
Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogbmFtZSgpIGNvbnN0OworfTsKKworY2xhc3Mg
Q291bnRlclNldCA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8Q291bnRlclNldD4KK3sKK3B1Ymxp
YzoKKyAgICBOUzo6U3RyaW5nKiBuYW1lKCkgY29uc3Q7CisKKyAgICBOUzo6QXJyYXkqICBjb3Vu
dGVycygpIGNvbnN0OworfTsKKworY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3Ig
OiBwdWJsaWMgTlM6OkNvcHlpbmc8Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3IqICAgICAg
ICBpbml0KCk7CisKKyAgICBjbGFzcyBDb3VudGVyU2V0KiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvdW50ZXJTZXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldENvdW50ZXJTZXQoY29uc3QgY2xhc3MgQ291bnRlclNldCogY291
bnRlclNldCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisKKyAgICBNVEw6
OlN0b3JhZ2VNb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VNb2RlKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRT
dG9yYWdlTW9kZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKTsKKworICAgIE5TOjpVSW50
ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNhbXBs
ZUNvdW50KE5TOjpVSW50ZWdlciBzYW1wbGVDb3VudCk7Cit9OworCitjbGFzcyBDb3VudGVyU2Ft
cGxlQnVmZmVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxDb3VudGVyU2FtcGxlQnVmZmVyPgor
eworcHVibGljOgorICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6
U3RyaW5nKiAgIGxhYmVsKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgIHNhbXBsZUNvdW50
KCkgY29uc3Q7CisKKyAgICBOUzo6RGF0YSogICAgIHJlc29sdmVDb3VudGVyUmFuZ2UoTlM6OlJh
bmdlIHJhbmdlKTsKK307CisKK19NVExfRU5VTShOUzo6SW50ZWdlciwgQ291bnRlclNhbXBsZUJ1
ZmZlckVycm9yKSB7CisgICAgQ291bnRlclNhbXBsZUJ1ZmZlckVycm9yT3V0T2ZNZW1vcnkgPSAw
LAorICAgIENvdW50ZXJTYW1wbGVCdWZmZXJFcnJvckludmFsaWQgPSAxLAorfTsKKworfQorCitf
TVRMX1BSSVZBVEVfREVGX1NUUiggTlM6OkVycm9yRG9tYWluLCBDb3VudGVyRXJyb3JEb21haW4g
KTsKKworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291
bnRlclRpbWVzdGFtcCApOworX01UTF9QUklWQVRFX0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRl
ciwgQ29tbW9uQ291bnRlclRlc3NlbGxhdGlvbklucHV0UGF0Y2hlcyApOworX01UTF9QUklWQVRF
X0RFRl9TVFIoIE1UTDo6Q29tbW9uQ291bnRlciwgQ29tbW9uQ291bnRlclZlcnRleEludm9jYXRp
b25zICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25D
b3VudGVyUG9zdFRlc3NlbGxhdGlvblZlcnRleEludm9jYXRpb25zICk7CitfTVRMX1BSSVZBVEVf
REVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyQ2xpcHBlckludm9jYXRp
b25zICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25D
b3VudGVyQ2xpcHBlclByaW1pdGl2ZXNPdXQgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6
OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJGcmFnbWVudEludm9jYXRpb25zICk7CitfTVRM
X1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyRnJhZ21l
bnRzUGFzc2VkICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBD
b21tb25Db3VudGVyQ29tcHV0ZUtlcm5lbEludm9jYXRpb25zICk7CitfTVRMX1BSSVZBVEVfREVG
X1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25Db3VudGVyVG90YWxDeWNsZXMgKTsKK19N
VExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJWZXJ0
ZXhDeWNsZXMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1vbkNvdW50ZXIsIENv
bW1vbkNvdW50ZXJUZXNzZWxsYXRpb25DeWNsZXMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBN
VEw6OkNvbW1vbkNvdW50ZXIsIENvbW1vbkNvdW50ZXJQb3N0VGVzc2VsbGF0aW9uVmVydGV4Q3lj
bGVzICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyLCBDb21tb25D
b3VudGVyRnJhZ21lbnRDeWNsZXMgKTsKK19NVExfUFJJVkFURV9ERUZfU1RSKCBNVEw6OkNvbW1v
bkNvdW50ZXIsIENvbW1vbkNvdW50ZXJSZW5kZXJUYXJnZXRXcml0ZUN5Y2xlcyApOworCitfTVRM
X1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyU2V0LCBDb21tb25Db3VudGVyU2V0
VGltZXN0YW1wICk7CitfTVRMX1BSSVZBVEVfREVGX1NUUiggTVRMOjpDb21tb25Db3VudGVyU2V0
LCBDb21tb25Db3VudGVyU2V0U3RhZ2VVdGlsaXphdGlvbiApOworX01UTF9QUklWQVRFX0RFRl9T
VFIoIE1UTDo6Q29tbW9uQ291bnRlclNldCwgQ29tbW9uQ291bnRlclNldFN0YXRpc3RpYyApOwor
CisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpDb3VudGVy
OjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBu
YW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNvdW50ZXJTZXQ6Om5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGNvdW50ZXJzCitfTVRM
X0lOTElORSBOUzo6QXJyYXkqIE1UTDo6Q291bnRlclNldDo6Y291bnRlcnMoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoY291bnRlcnMpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExf
SU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6Q291bnRlclNh
bXBsZUJ1ZmZlckRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NM
UyhNVExDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6
Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I+KCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBjb3VudGVyU2V0CitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTZXQqIE1U
TDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OmNvdW50ZXJTZXQoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNldCo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoY291bnRlclNldCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OnNldENvdW50ZXJTZXQoY29uc3QgTVRMOjpD
b3VudGVyU2V0KiBjb3VudGVyU2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb3VudGVyU2V0XyksIGNvdW50ZXJTZXQpOworfQor
CisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6Q291bnRl
clNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJl
bCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2Ny
aXB0b3I6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJl
bCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdG9yYWdlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpTdG9y
YWdlTW9kZSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yOjpzdG9yYWdlTW9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdG9yYWdlTW9k
ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdG9yYWdlTW9kZSkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OnNldFN0b3JhZ2VNb2Rl
KE1UTDo6U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0b3JhZ2VNb2RlXyksIHN0b3JhZ2VN
b2RlKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyRGVzY3JpcHRvcjo6c2FtcGxlQ291bnQoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzYW1wbGVDb3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlckRlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50KE5TOjpV
SW50ZWdlciBzYW1wbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlQ291bnRfKSwgc2FtcGxlQ291bnQpOworfQor
CisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpDb3Vu
dGVyU2FtcGxlQnVmZmVyOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXZpY2UpKTsK
K30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkNv
dW50ZXJTYW1wbGVCdWZmZXI6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOwor
fQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OkNvdW50ZXJTYW1wbGVCdWZmZXI6OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2FtcGxlQ291bnQpKTsKK30KKworLy8gbWV0aG9kOiByZXNvbHZlQ291bnRlclJhbmdlOgor
X01UTF9JTkxJTkUgTlM6OkRhdGEqIE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcjo6cmVzb2x2ZUNv
dW50ZXJSYW5nZShOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OkRhdGEqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc29sdmVDb3VudGVyUmFu
Z2VfKSwgcmFuZ2UpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTERlZmluZXMuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTERlZmluZXMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MmU3YTJjYzkwNDMyYWIwZDJmZDQ4
YjlmZTE4YzBkNTM1Yjk3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVmaW5lcy5ocHAKQEAgLTAsMCArMSw0MSBAQAorLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRM
RGVmaW5lcy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
aW5jbHVkZSAiLi4vRm91bmRhdGlvbi9OU0RlZmluZXMuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2RlZmluZSBfTVRMX0VYUE9SVCBfTlNf
RVhQT1JUCisjZGVmaW5lIF9NVExfRVhURVJOIF9OU19FWFRFUk4KKyNkZWZpbmUgX01UTF9JTkxJ
TkUgX05TX0lOTElORQorI2RlZmluZSBfTVRMX1BBQ0tFRCBfTlNfUEFDS0VECisKKyNkZWZpbmUg
X01UTF9DT05TVCh0eXBlLCBuYW1lKSBfTlNfQ09OU1QodHlwZSwgbmFtZSkKKyNkZWZpbmUgX01U
TF9FTlVNKHR5cGUsIG5hbWUpIF9OU19FTlVNKHR5cGUsIG5hbWUpCisjZGVmaW5lIF9NVExfT1BU
SU9OUyh0eXBlLCBuYW1lKSBfTlNfT1BUSU9OUyh0eXBlLCBuYW1lKQorCisjZGVmaW5lIF9NVExf
VkFMSURBVEVfU0laRShucywgbmFtZSkgX05TX1ZBTElEQVRFX1NJWkUobnMsIG5hbWUpCisjZGVm
aW5lIF9NVExfVkFMSURBVEVfRU5VTShucywgbmFtZSkgX05TX1ZBTElEQVRFX0VOVU0obnMsIG5h
bWUpCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTERlcHRoU3Rl
bmNpbC5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRGVwdGhT
dGVuY2lsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDc3NGRjZWMwMWU4NTlhMTAwMWRmMzkyZGIzM2JiYmU2
ODI5MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3Bw
L01ldGFsL01UTERlcHRoU3RlbmNpbC5ocHAKQEAgLTAsMCArMSwyNjkgQEAKKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTERlcHRo
U3RlbmNpbC5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisv
LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlk
Z2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTERlcHRoU3RlbmNpbC5ocHAiCisKK25h
bWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIENvbXBhcmVGdW5jdGlvbikg
eworICAgIENvbXBhcmVGdW5jdGlvbk5ldmVyID0gMCwKKyAgICBDb21wYXJlRnVuY3Rpb25MZXNz
ID0gMSwKKyAgICBDb21wYXJlRnVuY3Rpb25FcXVhbCA9IDIsCisgICAgQ29tcGFyZUZ1bmN0aW9u
TGVzc0VxdWFsID0gMywKKyAgICBDb21wYXJlRnVuY3Rpb25HcmVhdGVyID0gNCwKKyAgICBDb21w
YXJlRnVuY3Rpb25Ob3RFcXVhbCA9IDUsCisgICAgQ29tcGFyZUZ1bmN0aW9uR3JlYXRlckVxdWFs
ID0gNiwKKyAgICBDb21wYXJlRnVuY3Rpb25BbHdheXMgPSA3LAorfTsKKworX01UTF9FTlVNKE5T
OjpVSW50ZWdlciwgU3RlbmNpbE9wZXJhdGlvbikgeworICAgIFN0ZW5jaWxPcGVyYXRpb25LZWVw
ID0gMCwKKyAgICBTdGVuY2lsT3BlcmF0aW9uWmVybyA9IDEsCisgICAgU3RlbmNpbE9wZXJhdGlv
blJlcGxhY2UgPSAyLAorICAgIFN0ZW5jaWxPcGVyYXRpb25JbmNyZW1lbnRDbGFtcCA9IDMsCisg
ICAgU3RlbmNpbE9wZXJhdGlvbkRlY3JlbWVudENsYW1wID0gNCwKKyAgICBTdGVuY2lsT3BlcmF0
aW9uSW52ZXJ0ID0gNSwKKyAgICBTdGVuY2lsT3BlcmF0aW9uSW5jcmVtZW50V3JhcCA9IDYsCisg
ICAgU3RlbmNpbE9wZXJhdGlvbkRlY3JlbWVudFdyYXAgPSA3LAorfTsKKworY2xhc3MgU3RlbmNp
bERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8U3RlbmNpbERlc2NyaXB0b3I+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFN0ZW5jaWxEZXNjcmlwdG9yKiBhbGxvYygpOworCisg
ICAgY2xhc3MgU3RlbmNpbERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkNv
bXBhcmVGdW5jdGlvbiAgICAgICAgICAgIHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24oKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0ZW5jaWxDb21wYXJlRnVu
Y3Rpb24oTVRMOjpDb21wYXJlRnVuY3Rpb24gc3RlbmNpbENvbXBhcmVGdW5jdGlvbik7CisKKyAg
ICBNVEw6OlN0ZW5jaWxPcGVyYXRpb24gICAgICAgICAgIHN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9u
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVuY2ls
RmFpbHVyZU9wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24gc3RlbmNpbEZhaWx1cmVPcGVy
YXRpb24pOworCisgICAgTVRMOjpTdGVuY2lsT3BlcmF0aW9uICAgICAgICAgICBkZXB0aEZhaWx1
cmVPcGVyYXRpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldERlcHRoRmFpbHVyZU9wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24gZGVwdGhGYWls
dXJlT3BlcmF0aW9uKTsKKworICAgIE1UTDo6U3RlbmNpbE9wZXJhdGlvbiAgICAgICAgICAgZGVw
dGhTdGVuY2lsUGFzc09wZXJhdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVy
YXRpb24gZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbik7CisKKyAgICB1aW50MzJfdCAgICAgICAg
ICAgICAgICAgICAgICAgIHJlYWRNYXNrKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRSZWFkTWFzayh1aW50MzJfdCByZWFkTWFzayk7CisKKyAgICB1aW50
MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlTWFzaygpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0V3JpdGVNYXNrKHVpbnQzMl90IHdyaXRlTWFz
ayk7Cit9OworCitjbGFzcyBEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5
aW5nPERlcHRoU3RlbmNpbERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNz
IERlcHRoU3RlbmNpbERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpDb21wYXJlRnVuY3Rpb24g
ICAgICAgICAgICAgICAgIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKE1U
TDo6Q29tcGFyZUZ1bmN0aW9uIGRlcHRoQ29tcGFyZUZ1bmN0aW9uKTsKKworICAgIGJvb2wgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFdyaXRlRW5hYmxlZCgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXB0aFdyaXRlRW5h
YmxlZChib29sIGRlcHRoV3JpdGVFbmFibGVkKTsKKworICAgIGNsYXNzIFN0ZW5jaWxEZXNjcmlw
dG9yKiAgICAgICAgICAgICBmcm9udEZhY2VTdGVuY2lsKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZyb250RmFjZVN0ZW5jaWwoY29uc3QgY2xh
c3MgU3RlbmNpbERlc2NyaXB0b3IqIGZyb250RmFjZVN0ZW5jaWwpOworCisgICAgY2xhc3MgU3Rl
bmNpbERlc2NyaXB0b3IqICAgICAgICAgICAgIGJhY2tGYWNlU3RlbmNpbCgpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCYWNrRmFjZVN0ZW5jaWwo
Y29uc3QgY2xhc3MgU3RlbmNpbERlc2NyaXB0b3IqIGJhY2tGYWNlU3RlbmNpbCk7CisKKyAgICBO
Uzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0
cmluZyogbGFiZWwpOworfTsKKworY2xhc3MgRGVwdGhTdGVuY2lsU3RhdGUgOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPERlcHRoU3RlbmNpbFN0YXRlPgoreworcHVibGljOgorICAgIE5TOjpTdHJp
bmcqICAgbGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNzIERldmljZSogZGV2aWNlKCkgY29uc3Q7
Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlN0
ZW5jaWxEZXNjcmlwdG9yKiBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAg
cmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U3RlbmNpbERlc2NyaXB0b3I+KF9NVExfUFJJ
VkFURV9DTFMoTVRMU3RlbmNpbERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yKiBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9y
Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlN0ZW5jaWxEZXNj
cmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc3RlbmNpbENvbXBhcmVGdW5jdGlvbgorX01U
TF9JTkxJTkUgTVRMOjpDb21wYXJlRnVuY3Rpb24gTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6c3Rl
bmNpbENvbXBhcmVGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpDb21wYXJlRnVuY3Rpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlbmNp
bENvbXBhcmVGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RlbmNpbERl
c2NyaXB0b3I6OnNldFN0ZW5jaWxDb21wYXJlRnVuY3Rpb24oTVRMOjpDb21wYXJlRnVuY3Rpb24g
c3RlbmNpbENvbXBhcmVGdW5jdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbENvbXBhcmVGdW5jdGlvbl8pLCBzdGVu
Y2lsQ29tcGFyZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHN0ZW5jaWxGYWlsdXJlT3Bl
cmF0aW9uCitfTVRMX0lOTElORSBNVEw6OlN0ZW5jaWxPcGVyYXRpb24gTVRMOjpTdGVuY2lsRGVz
Y3JpcHRvcjo6c3RlbmNpbEZhaWx1cmVPcGVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RlbmNpbE9wZXJhdGlvbj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OnNldFN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uKE1UTDo6
U3RlbmNpbE9wZXJhdGlvbiBzdGVuY2lsRmFpbHVyZU9wZXJhdGlvbikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbEZhaWx1
cmVPcGVyYXRpb25fKSwgc3RlbmNpbEZhaWx1cmVPcGVyYXRpb24pOworfQorCisvLyBwcm9wZXJ0
eTogZGVwdGhGYWlsdXJlT3BlcmF0aW9uCitfTVRMX0lOTElORSBNVEw6OlN0ZW5jaWxPcGVyYXRp
b24gTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhGYWlsdXJlT3BlcmF0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0ZW5jaWxPcGVyYXRpb24+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGhGYWlsdXJlT3BlcmF0aW9uKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhGYWlsdXJlT3Bl
cmF0aW9uKE1UTDo6U3RlbmNpbE9wZXJhdGlvbiBkZXB0aEZhaWx1cmVPcGVyYXRpb24pCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERl
cHRoRmFpbHVyZU9wZXJhdGlvbl8pLCBkZXB0aEZhaWx1cmVPcGVyYXRpb24pOworfQorCisvLyBw
cm9wZXJ0eTogZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbgorX01UTF9JTkxJTkUgTVRMOjpTdGVu
Y2lsT3BlcmF0aW9uIE1UTDo6U3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoU3RlbmNpbFBhc3NPcGVy
YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3Rl
bmNpbE9wZXJhdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXB0aFN0ZW5jaWxQYXNzT3Bl
cmF0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpTdGVuY2lsRGVzY3JpcHRvcjo6
c2V0RGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbihNVEw6OlN0ZW5jaWxPcGVyYXRpb24gZGVwdGhT
dGVuY2lsUGFzc09wZXJhdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbl8pLCBkZXB0
aFN0ZW5jaWxQYXNzT3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHJlYWRNYXNrCitfTVRM
X0lOTElORSB1aW50MzJfdCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjpyZWFkTWFzaygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8dWludDMyX3Q+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwocmVhZE1hc2spKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0ZW5j
aWxEZXNjcmlwdG9yOjpzZXRSZWFkTWFzayh1aW50MzJfdCByZWFkTWFzaykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmVhZE1hc2tf
KSwgcmVhZE1hc2spOworfQorCisvLyBwcm9wZXJ0eTogd3JpdGVNYXNrCitfTVRMX0lOTElORSB1
aW50MzJfdCBNVEw6OlN0ZW5jaWxEZXNjcmlwdG9yOjp3cml0ZU1hc2soKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHdyaXRlTWFzaykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RlbmNpbERlc2Ny
aXB0b3I6OnNldFdyaXRlTWFzayh1aW50MzJfdCB3cml0ZU1hc2spCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFdyaXRlTWFza18pLCB3
cml0ZU1hc2spOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKiBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3IpKTsK
K30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkRlcHRoU3RlbmNpbERlc2Ny
aXB0b3IqIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPigpOworfQorCisv
LyBwcm9wZXJ0eTogZGVwdGhDb21wYXJlRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6Q29tcGFy
ZUZ1bmN0aW9uIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhDb21wYXJlRnVuY3Rp
b24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29tcGFy
ZUZ1bmN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRoQ29tcGFyZUZ1bmN0aW9uKSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXRE
ZXB0aENvbXBhcmVGdW5jdGlvbihNVEw6OkNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmVGdW5j
dGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0RGVwdGhDb21wYXJlRnVuY3Rpb25fKSwgZGVwdGhDb21wYXJlRnVuY3Rpb24pOwor
fQorCisvLyBwcm9wZXJ0eTogZGVwdGhXcml0ZUVuYWJsZWQKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpkZXB0aFdyaXRlRW5hYmxlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChpc0RlcHRoV3JpdGVFbmFibGVkKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0aFdyaXRlRW5hYmxlZChib29sIGRlcHRoV3JpdGVF
bmFibGVkKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXREZXB0aFdyaXRlRW5hYmxlZF8pLCBkZXB0aFdyaXRlRW5hYmxlZCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBmcm9udEZhY2VTdGVuY2lsCitfTVRMX0lOTElORSBNVEw6OlN0ZW5jaWxE
ZXNjcmlwdG9yKiBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmZyb250RmFjZVN0ZW5jaWwo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RlbmNpbERl
c2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZyb250RmFjZVN0ZW5jaWwpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldEZyb250
RmFjZVN0ZW5jaWwoY29uc3QgTVRMOjpTdGVuY2lsRGVzY3JpcHRvciogZnJvbnRGYWNlU3RlbmNp
bCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0RnJvbnRGYWNlU3RlbmNpbF8pLCBmcm9udEZhY2VTdGVuY2lsKTsKK30KKworLy8gcHJv
cGVydHk6IGJhY2tGYWNlU3RlbmNpbAorX01UTF9JTkxJTkUgTVRMOjpTdGVuY2lsRGVzY3JpcHRv
ciogTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpiYWNrRmFjZVN0ZW5jaWwoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RlbmNpbERlc2NyaXB0b3Iq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJhY2tGYWNlU3RlbmNpbCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0QmFja0ZhY2VTdGVuY2ls
KGNvbnN0IE1UTDo6U3RlbmNpbERlc2NyaXB0b3IqIGJhY2tGYWNlU3RlbmNpbCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmFja0Zh
Y2VTdGVuY2lsXyksIGJhY2tGYWNlU3RlbmNpbCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAor
X01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpsYWJl
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OkRlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxh
YmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9J
TkxJTkUgTlM6OlN0cmluZyogTVRMOjpEZXB0aFN0ZW5jaWxTdGF0ZTo6bGFiZWwoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5M
SU5FIE1UTDo6RGV2aWNlKiBNVEw6OkRlcHRoU3RlbmNpbFN0YXRlOjpkZXZpY2UoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXZpY2UuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTERldmljZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmNkMGQ3NzY0Zjk2ZDI0
NjEwNDM1NjYzMDVhODBhYzdiZWVlOTY2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEZXZpY2UuaHBwCkBAIC0wLDAgKzEsMTI1NCBA
QAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8g
TWV0YWwvTVRMRGV2aWNlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5j
LgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhl
YWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQXJndW1lbnQuaHBwIgor
I2luY2x1ZGUgIk1UTERldmljZS5ocHAiCisjaW5jbHVkZSAiTVRMUGl4ZWxGb3JtYXQuaHBwIgor
I2luY2x1ZGUgIk1UTFJlc291cmNlLmhwcCIKKyNpbmNsdWRlICJNVExUZXh0dXJlLmhwcCIKKyNp
bmNsdWRlICJNVExUeXBlcy5ocHAiCisjaW5jbHVkZSA8SU9TdXJmYWNlL0lPU3VyZmFjZVJlZi5o
PgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShO
Uzo6VUludGVnZXIsIEZlYXR1cmVTZXQpIHsKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkx
X3YxID0gMCwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkyX3YxID0gMSwKKyAgICBGZWF0
dXJlU2V0X2lPU19HUFVGYW1pbHkxX3YyID0gMiwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1p
bHkyX3YyID0gMywKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkzX3YxID0gNCwKKyAgICBG
ZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkxX3YzID0gNSwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVG
YW1pbHkyX3YzID0gNiwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkzX3YyID0gNywKKyAg
ICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkxX3Y0ID0gOCwKKyAgICBGZWF0dXJlU2V0X2lPU19H
UFVGYW1pbHkyX3Y0ID0gOSwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkzX3YzID0gMTAs
CisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5NF92MSA9IDExLAorICAgIEZlYXR1cmVTZXRf
aU9TX0dQVUZhbWlseTFfdjUgPSAxMiwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1pbHkyX3Y1
ID0gMTMsCisgICAgRmVhdHVyZVNldF9pT1NfR1BVRmFtaWx5M192NCA9IDE0LAorICAgIEZlYXR1
cmVTZXRfaU9TX0dQVUZhbWlseTRfdjIgPSAxNSwKKyAgICBGZWF0dXJlU2V0X2lPU19HUFVGYW1p
bHk1X3YxID0gMTYsCisgICAgRmVhdHVyZVNldF9tYWNPU19HUFVGYW1pbHkxX3YxID0gMTAwMDAs
CisgICAgRmVhdHVyZVNldF9PU1hfR1BVRmFtaWx5MV92MSA9IDEwMDAwLAorICAgIEZlYXR1cmVT
ZXRfbWFjT1NfR1BVRmFtaWx5MV92MiA9IDEwMDAxLAorICAgIEZlYXR1cmVTZXRfT1NYX0dQVUZh
bWlseTFfdjIgPSAxMDAwMSwKKyAgICBGZWF0dXJlU2V0X09TWF9SZWFkV3JpdGVUZXh0dXJlVGll
cjIgPSAxMDAwMiwKKyAgICBGZWF0dXJlU2V0X21hY09TX1JlYWRXcml0ZVRleHR1cmVUaWVyMiA9
IDEwMDAyLAorICAgIEZlYXR1cmVTZXRfbWFjT1NfR1BVRmFtaWx5MV92MyA9IDEwMDAzLAorICAg
IEZlYXR1cmVTZXRfbWFjT1NfR1BVRmFtaWx5MV92NCA9IDEwMDA0LAorICAgIEZlYXR1cmVTZXRf
bWFjT1NfR1BVRmFtaWx5Ml92MSA9IDEwMDA1LAorICAgIEZlYXR1cmVTZXRfd2F0Y2hPU19HUFVG
YW1pbHkxX3YxID0gMjAwMDAsCisgICAgRmVhdHVyZVNldF9XYXRjaE9TX0dQVUZhbWlseTFfdjEg
PSAyMDAwMCwKKyAgICBGZWF0dXJlU2V0X3dhdGNoT1NfR1BVRmFtaWx5Ml92MSA9IDIwMDAxLAor
ICAgIEZlYXR1cmVTZXRfV2F0Y2hPU19HUFVGYW1pbHkyX3YxID0gMjAwMDEsCisgICAgRmVhdHVy
ZVNldF90dk9TX0dQVUZhbWlseTFfdjEgPSAzMDAwMCwKKyAgICBGZWF0dXJlU2V0X1RWT1NfR1BV
RmFtaWx5MV92MSA9IDMwMDAwLAorICAgIEZlYXR1cmVTZXRfdHZPU19HUFVGYW1pbHkxX3YyID0g
MzAwMDEsCisgICAgRmVhdHVyZVNldF90dk9TX0dQVUZhbWlseTFfdjMgPSAzMDAwMiwKKyAgICBG
ZWF0dXJlU2V0X3R2T1NfR1BVRmFtaWx5Ml92MSA9IDMwMDAzLAorICAgIEZlYXR1cmVTZXRfdHZP
U19HUFVGYW1pbHkxX3Y0ID0gMzAwMDQsCisgICAgRmVhdHVyZVNldF90dk9TX0dQVUZhbWlseTJf
djIgPSAzMDAwNSwKK307CisKK19NVExfRU5VTShOUzo6SW50ZWdlciwgR1BVRmFtaWx5KSB7Cisg
ICAgR1BVRmFtaWx5QXBwbGUxID0gMTAwMSwKKyAgICBHUFVGYW1pbHlBcHBsZTIgPSAxMDAyLAor
ICAgIEdQVUZhbWlseUFwcGxlMyA9IDEwMDMsCisgICAgR1BVRmFtaWx5QXBwbGU0ID0gMTAwNCwK
KyAgICBHUFVGYW1pbHlBcHBsZTUgPSAxMDA1LAorICAgIEdQVUZhbWlseUFwcGxlNiA9IDEwMDYs
CisgICAgR1BVRmFtaWx5QXBwbGU3ID0gMTAwNywKKyAgICBHUFVGYW1pbHlBcHBsZTggPSAxMDA4
LAorICAgIEdQVUZhbWlseU1hYzEgPSAyMDAxLAorICAgIEdQVUZhbWlseU1hYzIgPSAyMDAyLAor
ICAgIEdQVUZhbWlseUNvbW1vbjEgPSAzMDAxLAorICAgIEdQVUZhbWlseUNvbW1vbjIgPSAzMDAy
LAorICAgIEdQVUZhbWlseUNvbW1vbjMgPSAzMDAzLAorICAgIEdQVUZhbWlseU1hY0NhdGFseXN0
MSA9IDQwMDEsCisgICAgR1BVRmFtaWx5TWFjQ2F0YWx5c3QyID0gNDAwMiwKK307CisKK19NVExf
RU5VTShOUzo6VUludGVnZXIsIERldmljZUxvY2F0aW9uKSB7CisgICAgRGV2aWNlTG9jYXRpb25C
dWlsdEluID0gMCwKKyAgICBEZXZpY2VMb2NhdGlvblNsb3QgPSAxLAorICAgIERldmljZUxvY2F0
aW9uRXh0ZXJuYWwgPSAyLAorICAgIERldmljZUxvY2F0aW9uVW5zcGVjaWZpZWQgPSBOUzo6VUlu
dGVnZXJNYXgsCit9OworCitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBQaXBlbGluZU9wdGlv
bikgeworICAgIFBpcGVsaW5lT3B0aW9uTm9uZSA9IDAsCisgICAgUGlwZWxpbmVPcHRpb25Bcmd1
bWVudEluZm8gPSAxLAorICAgIFBpcGVsaW5lT3B0aW9uQnVmZmVyVHlwZUluZm8gPSAyLAorICAg
IFBpcGVsaW5lT3B0aW9uRmFpbE9uQmluYXJ5QXJjaGl2ZU1pc3MgPSA0LAorfTsKKworX01UTF9F
TlVNKE5TOjpVSW50ZWdlciwgUmVhZFdyaXRlVGV4dHVyZVRpZXIpIHsKKyAgICBSZWFkV3JpdGVU
ZXh0dXJlVGllck5vbmUgPSAwLAorICAgIFJlYWRXcml0ZVRleHR1cmVUaWVyMSA9IDEsCisgICAg
UmVhZFdyaXRlVGV4dHVyZVRpZXIyID0gMiwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIs
IEFyZ3VtZW50QnVmZmVyc1RpZXIpIHsKKyAgICBBcmd1bWVudEJ1ZmZlcnNUaWVyMSA9IDAsCisg
ICAgQXJndW1lbnRCdWZmZXJzVGllcjIgPSAxLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdl
ciwgU3BhcnNlVGV4dHVyZVJlZ2lvbkFsaWdubWVudE1vZGUpIHsKKyAgICBTcGFyc2VUZXh0dXJl
UmVnaW9uQWxpZ25tZW50TW9kZU91dHdhcmQgPSAwLAorICAgIFNwYXJzZVRleHR1cmVSZWdpb25B
bGlnbm1lbnRNb2RlSW53YXJkID0gMSwKK307CisKK3N0cnVjdCBBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVTaXplcworeworICAgIE5TOjpVSW50ZWdlciBhY2NlbGVyYXRpb25TdHJ1Y3R1cmVTaXplOwor
ICAgIE5TOjpVSW50ZWdlciBidWlsZFNjcmF0Y2hCdWZmZXJTaXplOworICAgIE5TOjpVSW50ZWdl
ciByZWZpdFNjcmF0Y2hCdWZmZXJTaXplOworfSBfTVRMX1BBQ0tFRDsKKworX01UTF9FTlVNKE5T
OjpVSW50ZWdlciwgQ291bnRlclNhbXBsaW5nUG9pbnQpIHsKKyAgICBDb3VudGVyU2FtcGxpbmdQ
b2ludEF0U3RhZ2VCb3VuZGFyeSA9IDAsCisgICAgQ291bnRlclNhbXBsaW5nUG9pbnRBdERyYXdC
b3VuZGFyeSA9IDEsCisgICAgQ291bnRlclNhbXBsaW5nUG9pbnRBdERpc3BhdGNoQm91bmRhcnkg
PSAyLAorICAgIENvdW50ZXJTYW1wbGluZ1BvaW50QXRUaWxlRGlzcGF0Y2hCb3VuZGFyeSA9IDMs
CisgICAgQ291bnRlclNhbXBsaW5nUG9pbnRBdEJsaXRCb3VuZGFyeSA9IDQsCit9OworCitzdHJ1
Y3QgU2l6ZUFuZEFsaWduCit7CisgICAgTlM6OlVJbnRlZ2VyIHNpemU7CisgICAgTlM6OlVJbnRl
Z2VyIGFsaWduOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgQXJndW1lbnREZXNjcmlwdG9yIDog
cHVibGljIE5TOjpDb3B5aW5nPEFyZ3VtZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgQXJndW1lbnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQXJn
dW1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIEFyZ3Vt
ZW50RGVzY3JpcHRvciogYXJndW1lbnREZXNjcmlwdG9yKCk7CisKKyAgICBNVEw6OkRhdGFUeXBl
ICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldERhdGFUeXBlKE1UTDo6RGF0YVR5cGUgZGF0YVR5cGUpOwor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgaW5kZXgoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmRleChOUzo6VUludGVnZXIg
aW5kZXgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgYXJyYXlMZW5n
dGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBcnJh
eUxlbmd0aChOUzo6VUludGVnZXIgYXJyYXlMZW5ndGgpOworCisgICAgTVRMOjpBcmd1bWVudEFj
Y2VzcyAgICAgICAgICAgICAgYWNjZXNzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0QWNjZXNzKE1UTDo6QXJndW1lbnRBY2Nlc3MgYWNjZXNzKTsKKwor
ICAgIE1UTDo6VGV4dHVyZVR5cGUgICAgICAgICAgICAgICAgIHRleHR1cmVUeXBlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGV4dHVyZVR5cGUoTVRM
OjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICBjb25zdGFudEJsb2NrQWxpZ25tZW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnRCbG9ja0FsaWdubWVudChOUzo6VUlu
dGVnZXIgY29uc3RhbnRCbG9ja0FsaWdubWVudCk7Cit9OworCit1c2luZyBEZXZpY2VOb3RpZmlj
YXRpb25OYW1lID0gTlM6OlN0cmluZyo7CisKK19NVExfQ09OU1QoRGV2aWNlTm90aWZpY2F0aW9u
TmFtZSwgRGV2aWNlV2FzQWRkZWROb3RpZmljYXRpb24pOworCitfTVRMX0NPTlNUKERldmljZU5v
dGlmaWNhdGlvbk5hbWUsIERldmljZVJlbW92YWxSZXF1ZXN0ZWROb3RpZmljYXRpb24pOworCitf
TVRMX0NPTlNUKERldmljZU5vdGlmaWNhdGlvbk5hbWUsIERldmljZVdhc1JlbW92ZWROb3RpZmlj
YXRpb24pOworCit1c2luZyBEZXZpY2VOb3RpZmljYXRpb25IYW5kbGVyQmxvY2sgPSB2b2lkIChe
KShjbGFzcyBEZXZpY2UqIHBEZXZpY2UsIERldmljZU5vdGlmaWNhdGlvbk5hbWUgbm90aWZ5TmFt
ZSk7CisKK3VzaW5nIERldmljZU5vdGlmaWNhdGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0ZDo6ZnVu
Y3Rpb248dm9pZChjbGFzcyBEZXZpY2UqIHBEZXZpY2UsIERldmljZU5vdGlmaWNhdGlvbk5hbWUg
bm90aWZ5TmFtZSk+OworCit1c2luZyBBdXRvcmVsZWFzZWRDb21wdXRlUGlwZWxpbmVSZWZsZWN0
aW9uID0gY2xhc3MgQ29tcHV0ZVBpcGVsaW5lUmVmbGVjdGlvbio7CisKK3VzaW5nIEF1dG9yZWxl
YXNlZFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiA9IGNsYXNzIFJlbmRlclBpcGVsaW5lUmVmbGVj
dGlvbio7CisKK3VzaW5nIE5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlciA9IHZvaWQgKF4pKGNs
YXNzIExpYnJhcnkqLCBOUzo6RXJyb3IqKTsKKwordXNpbmcgTmV3TGlicmFyeUNvbXBsZXRpb25I
YW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgTGlicmFyeSosIE5TOjpF
cnJvciopPjsKKwordXNpbmcgTmV3UmVuZGVyUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVy
ID0gdm9pZCAoXikoY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSosIE5TOjpFcnJvciopOworCit1
c2luZyBOZXdSZW5kZXJQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0
ZDo6ZnVuY3Rpb248dm9pZChjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiwgTlM6OkVycm9yKik+
OworCit1c2luZyBOZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9u
SGFuZGxlciA9IHZvaWQgKF4pKGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqLCBjbGFzcyBSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb24qLCBOUzo6RXJyb3IqKTsKKwordXNpbmcgTmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiA9IHN0ZDo6
ZnVuY3Rpb248dm9pZChjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiwgY2xhc3MgUmVuZGVyUGlw
ZWxpbmVSZWZsZWN0aW9uKiwgTlM6OkVycm9yKik+OworCit1c2luZyBOZXdDb21wdXRlUGlwZWxp
bmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyID0gdm9pZCAoXikoY2xhc3MgQ29tcHV0ZVBpcGVsaW5l
U3RhdGUqLCBOUzo6RXJyb3IqKTsKKwordXNpbmcgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVDb21w
bGV0aW9uSGFuZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNsYXNzIENvbXB1dGVQ
aXBlbGluZVN0YXRlKiwgTlM6OkVycm9yKik+OworCit1c2luZyBOZXdDb21wdXRlUGlwZWxpbmVT
dGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSB2b2lkICheKShjbGFzcyBDb21w
dXRlUGlwZWxpbmVTdGF0ZSosIGNsYXNzIENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qLCBOUzo6
RXJyb3IqKTsKKwordXNpbmcgTmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNv
bXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY2xhc3MgQ29tcHV0
ZVBpcGVsaW5lU3RhdGUqLCBjbGFzcyBDb21wdXRlUGlwZWxpbmVSZWZsZWN0aW9uKiwgTlM6OkVy
cm9yKik+OworCit1c2luZyBUaW1lc3RhbXAgPSBzdGQ6OnVpbnQ2NF90OworCitNVEw6OkRldmlj
ZSogQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOworCitOUzo6QXJyYXkqICAgQ29weUFsbERl
dmljZXMoKTsKKworTlM6OkFycmF5KiAgIENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKE5TOjpP
YmplY3QqKiBwT3V0T2JzZXJ2ZXIsIERldmljZU5vdGlmaWNhdGlvbkhhbmRsZXJCbG9jayBoYW5k
bGVyKTsKKworTlM6OkFycmF5KiAgIENvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKE5TOjpPYmpl
Y3QqKiBwT3V0T2JzZXJ2ZXIsIGNvbnN0IERldmljZU5vdGlmaWNhdGlvbkhhbmRsZXJGdW5jdGlv
biYgaGFuZGxlcik7CisKK3ZvaWQgICAgICAgICBSZW1vdmVEZXZpY2VPYnNlcnZlcihjb25zdCBO
Uzo6T2JqZWN0KiBwT2JzZXJ2ZXIpOworCitjbGFzcyBEZXZpY2UgOiBwdWJsaWMgTlM6OlJlZmVy
ZW5jaW5nPERldmljZT4KK3sKK3B1YmxpYzoKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogcFNvdXJjZSwgY29uc3QgY2xhc3Mg
Q29tcGlsZU9wdGlvbnMqIHBPcHRpb25zLCBjb25zdCBOZXdMaWJyYXJ5Q29tcGxldGlvbkhhbmRs
ZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IGNsYXNzIFN0aXRjaGVkTGlicmFyeURlc2Ny
aXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxl
ckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yKiBwRGVzY3JpcHRvciwgY29uc3QgTmV3UmVuZGVyUGlwZWxpbmVTdGF0
ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25z
dCBjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBQaXBlbGluZU9w
dGlvbiBvcHRpb25zLCBjb25zdCBOZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25D
b21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3Qg
Y2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIFBpcGVsaW5l
T3B0aW9uIG9wdGlvbnMsIGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlv
bkNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29u
c3QgY2xhc3MgRnVuY3Rpb24qIHBGdW5jdGlvbiwgY29uc3QgTmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNv
bnN0IGNsYXNzIEZ1bmN0aW9uKiBwRnVuY3Rpb24sIFBpcGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNv
bnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxl
ckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIENvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBj
b25zdCBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRs
ZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpc0hlYWRsZXNzKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAg
ICAgICAgICAgICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIHVpbnQ2NF90ICAgICAgICAgICAg
ICAgICAgICAgICAgcmVnaXN0cnlJRCgpIGNvbnN0OworCisgICAgTVRMOjpTaXplICAgICAgICAg
ICAgICAgICAgICAgICBtYXhUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93UG93ZXIoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGxlc3MoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZhYmxlKCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1VuaWZpZWRNZW1vcnkoKSBjb25zdDsK
KworICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgcmVjb21tZW5kZWRNYXhXb3Jr
aW5nU2V0U2l6ZSgpIGNvbnN0OworCisgICAgTVRMOjpEZXZpY2VMb2NhdGlvbiAgICAgICAgICAg
ICBsb2NhdGlvbigpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICBsb2NhdGlvbk51bWJlcigpIGNvbnN0OworCisgICAgdWludDY0X3QgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhUcmFuc2ZlclJhdGUoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVwdGgyNFN0ZW5jaWw4UGl4ZWxGb3JtYXRTdXBwb3J0ZWQoKSBjb25z
dDsKKworICAgIE1UTDo6UmVhZFdyaXRlVGV4dHVyZVRpZXIgICAgICAgcmVhZFdyaXRlVGV4dHVy
ZVN1cHBvcnQoKSBjb25zdDsKKworICAgIE1UTDo6QXJndW1lbnRCdWZmZXJzVGllciAgICAgICAg
YXJndW1lbnRCdWZmZXJzU3VwcG9ydCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByYXN0ZXJPcmRlckdyb3Vwc1N1cHBvcnRlZCgpIGNvbnN0OworCisgICAg
Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0czMyQml0RmxvYXRGaWx0ZXJp
bmcoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9y
dHMzMkJpdE1TQUEoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3VwcG9ydHNRdWVyeVRleHR1cmVMT0QoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3VwcG9ydHNCQ1RleHR1cmVDb21wcmVzc2lvbigpIGNvbnN0Owor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1B1bGxNb2RlbElu
dGVycG9sYXRpb24oKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmFyeWNlbnRyaWNDb29yZHNTdXBwb3J0ZWQoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNTaGFkZXJCYXJ5Y2VudHJpY0Nvb3JkaW5hdGVz
KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRB
bGxvY2F0ZWRTaXplKCkgY29uc3Q7CisKKyAgICBjbGFzcyBDb21tYW5kUXVldWUqICAgICAgICAg
ICAgIG5ld0NvbW1hbmRRdWV1ZSgpOworCisgICAgY2xhc3MgQ29tbWFuZFF1ZXVlKiAgICAgICAg
ICAgICBuZXdDb21tYW5kUXVldWUoTlM6OlVJbnRlZ2VyIG1heENvbW1hbmRCdWZmZXJDb3VudCk7
CisKKyAgICBNVEw6OlNpemVBbmRBbGlnbiAgICAgICAgICAgICAgIGhlYXBUZXh0dXJlU2l6ZUFu
ZEFsaWduKGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjKTsKKworICAgIE1UTDo6
U2l6ZUFuZEFsaWduICAgICAgICAgICAgICAgaGVhcEJ1ZmZlclNpemVBbmRBbGlnbihOUzo6VUlu
dGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zKTsKKworICAgIGNsYXNz
IEhlYXAqICAgICAgICAgICAgICAgICAgICAgbmV3SGVhcChjb25zdCBjbGFzcyBIZWFwRGVzY3Jp
cHRvciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAgICAg
IG5ld0J1ZmZlcihOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRp
b25zKTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgICAgICAgICAgbmV3QnVmZmVyKGNv
bnN0IHZvaWQqIHBvaW50ZXIsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE1UTDo6UmVzb3VyY2VPcHRp
b25zIG9wdGlvbnMpOworCisgICAgY2xhc3MgQnVmZmVyKiAgICAgICAgICAgICAgICAgICBuZXdC
dWZmZXIoY29uc3Qgdm9pZCogcG9pbnRlciwgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNv
dXJjZU9wdGlvbnMgb3B0aW9ucywgY29uc3Qgdm9pZCAoXmRlYWxsb2NhdG9yKSh2b2lkKiwgTlM6
OlVJbnRlZ2VyKSk7CisKKyAgICBjbGFzcyBEZXB0aFN0ZW5jaWxTdGF0ZSogICAgICAgIG5ld0Rl
cHRoU3RlbmNpbFN0YXRlKGNvbnN0IGNsYXNzIERlcHRoU3RlbmNpbERlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgICAgICAgICBuZXdUZXh0dXJl
KGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNz
IFRleHR1cmUqICAgICAgICAgICAgICAgICAgbmV3VGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJl
RGVzY3JpcHRvciogZGVzY3JpcHRvciwgY29uc3QgSU9TdXJmYWNlUmVmIGlvc3VyZmFjZSwgTlM6
OlVJbnRlZ2VyIHBsYW5lKTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAgICAgICAg
bmV3U2hhcmVkVGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRv
cik7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgICAgIG5ld1NoYXJlZFRleHR1
cmUoY29uc3QgY2xhc3MgU2hhcmVkVGV4dHVyZUhhbmRsZSogc2hhcmVkSGFuZGxlKTsKKworICAg
IGNsYXNzIFNhbXBsZXJTdGF0ZSogICAgICAgICAgICAgbmV3U2FtcGxlclN0YXRlKGNvbnN0IGNs
YXNzIFNhbXBsZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGNsYXNzIExpYnJhcnkq
ICAgICAgICAgICAgICAgICAgbmV3RGVmYXVsdExpYnJhcnkoKTsKKworICAgIGNsYXNzIExpYnJh
cnkqICAgICAgICAgICAgICAgICAgbmV3RGVmYXVsdExpYnJhcnkoY29uc3QgTlM6OkJ1bmRsZSog
YnVuZGxlLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBjbGFzcyBMaWJyYXJ5KiAgICAgICAg
ICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogZmlsZXBhdGgsIE5TOjpFcnJv
cioqIGVycm9yKTsKKworICAgIGNsYXNzIExpYnJhcnkqICAgICAgICAgICAgICAgICAgbmV3TGli
cmFyeShjb25zdCBOUzo6VVJMKiB1cmwsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGNsYXNz
IExpYnJhcnkqICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBkaXNwYXRjaF9kYXRh
X3QgZGF0YSwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgY2xhc3MgTGlicmFyeSogICAgICAg
ICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IE5TOjpTdHJpbmcqIHNvdXJjZSwgY29uc3QgY2xh
c3MgQ29tcGlsZU9wdGlvbnMqIG9wdGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlicmFyeShjb25zdCBOUzo6U3RyaW5n
KiBzb3VyY2UsIGNvbnN0IGNsYXNzIENvbXBpbGVPcHRpb25zKiBvcHRpb25zLCBjb25zdCBNVEw6
Ok5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBj
bGFzcyBMaWJyYXJ5KiAgICAgICAgICAgICAgICAgIG5ld0xpYnJhcnkoY29uc3QgY2xhc3MgU3Rp
dGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpOwor
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaWJyYXJ5KGNvbnN0IGNs
YXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IE1UTDo6TmV3
TGlicmFyeUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGNsYXNz
IFJlbmRlclBpcGVsaW5lU3RhdGUqICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBj
bGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVy
cm9yKTsKKworICAgIGNsYXNzIFJlbmRlclBpcGVsaW5lU3RhdGUqICAgICAgbmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0
b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRS
ZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKTsK
KworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVuZGVyUGlwZWxpbmVT
dGF0ZShjb25zdCBjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNv
bnN0IE1UTDo6TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVu
ZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpOZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogICAgIG5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0aW9uKiBjb21wdXRlRnVuY3Rpb24sIE5T
OjpFcnJvcioqIGVycm9yKTsKKworICAgIGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiAgICAg
bmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgRnVuY3Rpb24qIGNvbXB1dGVGdW5j
dGlvbiwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6OkF1dG9yZWxlYXNl
ZENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9y
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29tcHV0ZVBpcGVs
aW5lU3RhdGUoY29uc3QgY2xhc3MgRnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbiwgY29uc3QgTVRM
OjpOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5k
bGVyKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29tcHV0ZVBp
cGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgRnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbiwgTVRMOjpQ
aXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6Ok5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
V2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAg
ICBjbGFzcyBDb21wdXRlUGlwZWxpbmVTdGF0ZSogICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
KGNvbnN0IGNsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6
UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpBdXRvcmVsZWFzZWRDb21wdXRlUGlw
ZWxpbmVSZWZsZWN0aW9uKiByZWZsZWN0aW9uLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNv
bnN0IGNsYXNzIENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE1UTDo6UGlw
ZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdp
dGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAg
Y2xhc3MgRmVuY2UqICAgICAgICAgICAgICAgICAgICBuZXdGZW5jZSgpOworCisgICAgYm9vbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0ZlYXR1cmVTZXQoTVRMOjpGZWF0dXJl
U2V0IGZlYXR1cmVTZXQpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dXBwb3J0c0ZhbWlseShNVEw6OkdQVUZhbWlseSBncHVGYW1pbHkpOworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudChOUzo6VUlu
dGVnZXIgc2FtcGxlQ291bnQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICBtaW5pbXVtTGluZWFyVGV4dHVyZUFsaWdubWVudEZvclBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxG
b3JtYXQgZm9ybWF0KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgbWlu
aW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0
IGZvcm1hdCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiAgICAgIG5ld1JlbmRl
clBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciog
ZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6OkF1dG9y
ZWxlYXNlZFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgTlM6OkVycm9yKiog
ZXJyb3IpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZW5kZXJQ
aXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpOZXdSZW5k
ZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIG1heFRocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgIG1heEFyZ3VtZW50QnVmZmVyU2FtcGxlckNvdW50KCkgY29uc3Q7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1tYWJsZVNhbXBsZVBvc2l0aW9u
c1N1cHBvcnRlZCgpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZXREZWZhdWx0U2FtcGxlUG9zaXRpb25zKE1UTDo6U2FtcGxlUG9zaXRpb24qIHBvc2l0aW9u
cywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlciogICAg
ICAgICAgbmV3QXJndW1lbnRFbmNvZGVyKGNvbnN0IE5TOjpBcnJheSogYXJndW1lbnRzKTsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNSYXN0ZXJpemF0aW9u
UmF0ZU1hcChOUzo6VUludGVnZXIgbGF5ZXJDb3VudCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0
aW9uUmF0ZU1hcCogICAgIG5ld1Jhc3Rlcml6YXRpb25SYXRlTWFwKGNvbnN0IGNsYXNzIFJhc3Rl
cml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogZGVzY3JpcHRvcik7CisKKyAgICBjbGFzcyBJbmRp
cmVjdENvbW1hbmRCdWZmZXIqICAgIG5ld0luZGlyZWN0Q29tbWFuZEJ1ZmZlcihjb25zdCBjbGFz
cyBJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6VUludGVn
ZXIgbWF4Q291bnQsIE1UTDo6UmVzb3VyY2VPcHRpb25zIG9wdGlvbnMpOworCisgICAgY2xhc3Mg
RXZlbnQqICAgICAgICAgICAgICAgICAgICBuZXdFdmVudCgpOworCisgICAgY2xhc3MgU2hhcmVk
RXZlbnQqICAgICAgICAgICAgICBuZXdTaGFyZWRFdmVudCgpOworCisgICAgY2xhc3MgU2hhcmVk
RXZlbnQqICAgICAgICAgICAgICBuZXdTaGFyZWRFdmVudChjb25zdCBjbGFzcyBTaGFyZWRFdmVu
dEhhbmRsZSogc2hhcmVkRXZlbnRIYW5kbGUpOworCisgICAgdWludDY0X3QgICAgICAgICAgICAg
ICAgICAgICAgICBwZWVyR3JvdXBJRCgpIGNvbnN0OworCisgICAgdWludDMyX3QgICAgICAgICAg
ICAgICAgICAgICAgICBwZWVySW5kZXgoKSBjb25zdDsKKworICAgIHVpbnQzMl90ICAgICAgICAg
ICAgICAgICAgICAgICAgcGVlckNvdW50KCkgY29uc3Q7CisKKyAgICBNVEw6OlNpemUgICAgICAg
ICAgICAgICAgICAgICAgIHNwYXJzZVRpbGVTaXplKE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5
cGUsIE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciBzYW1wbGVDb3Vu
dCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIHNwYXJzZVRpbGVTaXpl
SW5CeXRlcygpIGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zKGNvbnN0IE1UTDo6UmVnaW9uKiBwaXhlbFJlZ2lvbnMs
IE1UTDo6UmVnaW9uKiB0aWxlUmVnaW9ucywgTVRMOjpTaXplIHRpbGVTaXplLCBNVEw6OlNwYXJz
ZVRleHR1cmVSZWdpb25BbGlnbm1lbnRNb2RlIG1vZGUsIE5TOjpVSW50ZWdlciBudW1SZWdpb25z
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFNwYXJzZVRp
bGVSZWdpb25zKGNvbnN0IE1UTDo6UmVnaW9uKiB0aWxlUmVnaW9ucywgTVRMOjpSZWdpb24qIHBp
eGVsUmVnaW9ucywgTVRMOjpTaXplIHRpbGVTaXplLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucyk7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgIG1heEJ1ZmZlckxlbmd0aCgp
IGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyU2V0
cygpIGNvbnN0OworCisgICAgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogICAgICBuZXdDb3Vu
dGVyU2FtcGxlQnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNhbXBsZVRpbWVzdGFtcHMoTVRMOjpUaW1lc3RhbXAqIGNwdVRpbWVz
dGFtcCwgTVRMOjpUaW1lc3RhbXAqIGdwdVRpbWVzdGFtcCk7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzQ291bnRlclNhbXBsaW5nKE1UTDo6Q291bnRlclNh
bXBsaW5nUG9pbnQgc2FtcGxpbmdQb2ludCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1cHBvcnRzVmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KE5TOjpVSW50ZWdlciBj
b3VudCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRHlu
YW1pY0xpYnJhcmllcygpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdXBwb3J0c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMoKSBjb25zdDsKKworICAgIGNsYXNz
IER5bmFtaWNMaWJyYXJ5KiAgICAgICAgICAgbmV3RHluYW1pY0xpYnJhcnkoY29uc3QgY2xhc3Mg
TGlicmFyeSogbGlicmFyeSwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgY2xhc3MgRHluYW1p
Y0xpYnJhcnkqICAgICAgICAgICBuZXdEeW5hbWljTGlicmFyeShjb25zdCBOUzo6VVJMKiB1cmws
IE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIGNsYXNzIEJpbmFyeUFyY2hpdmUqICAgICAgICAg
ICAgbmV3QmluYXJ5QXJjaGl2ZShjb25zdCBjbGFzcyBCaW5hcnlBcmNoaXZlRGVzY3JpcHRvciog
ZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgYm9vbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdXBwb3J0c1JheXRyYWNpbmcoKSBjb25zdDsKKworICAgIE1UTDo6QWNj
ZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMgYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZXMoY29uc3Qg
Y2xhc3MgQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcik7CisKKyAg
ICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqICAgIG5ld0FjY2VsZXJhdGlvblN0cnVjdHVy
ZShOUzo6VUludGVnZXIgc2l6ZSk7CisKKyAgICBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUq
ICAgIG5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzKCkgY29uc3Q7CisKKyAgICBib29s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVyc0Zyb21S
ZW5kZXIoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw
cG9ydHNSYXl0cmFjaW5nRnJvbVJlbmRlcigpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0c1ByaW1pdGl2ZU1vdGlvbkJsdXIoKSBjb25zdDsKK307
CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QXJndW1l
bnREZXNjcmlwdG9yKiBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcj4oX01UTF9QUklW
QVRFX0NMUyhNVExBcmd1bWVudERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvciogTVRMOjpBcmd1bWVudERlc2NyaXB0
b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QXJndW1lbnRE
ZXNjcmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhcmd1bWVudERlc2NyaXB0b3IK
K19NVExfSU5MSU5FIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yKiBNVEw6OkFyZ3VtZW50RGVzY3Jp
cHRvcjo6YXJndW1lbnREZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMQXJndW1l
bnREZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChhcmd1bWVudERlc2NyaXB0b3IpKTsKK30K
KworLy8gcHJvcGVydHk6IGRhdGFUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6
QXJndW1lbnREZXNjcmlwdG9yOjpkYXRhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChkYXRh
VHlwZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjpz
ZXREYXRhVHlwZShNVEw6OkRhdGFUeXBlIGRhdGFUeXBlKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXREYXRhVHlwZV8pLCBkYXRhVHlw
ZSk7Cit9CisKKy8vIHByb3BlcnR5OiBpbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6QXJndW1lbnREZXNjcmlwdG9yOjppbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OnNldElu
ZGV4KE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhfKSwgaW5kZXgpOworfQorCisvLyBwcm9w
ZXJ0eTogYXJyYXlMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50
RGVzY3JpcHRvcjo6YXJyYXlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcnJheUxlbmd0
aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6QXJndW1lbnREZXNjcmlwdG9yOjpzZXRB
cnJheUxlbmd0aChOUzo6VUludGVnZXIgYXJyYXlMZW5ndGgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFycmF5TGVuZ3RoXyksIGFy
cmF5TGVuZ3RoKTsKK30KKworLy8gcHJvcGVydHk6IGFjY2VzcworX01UTF9JTkxJTkUgTVRMOjpB
cmd1bWVudEFjY2VzcyBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6YWNjZXNzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QWNjZXNzPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGFjY2VzcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
QXJndW1lbnREZXNjcmlwdG9yOjpzZXRBY2Nlc3MoTVRMOjpBcmd1bWVudEFjY2VzcyBhY2Nlc3Mp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEFjY2Vzc18pLCBhY2Nlc3MpOworfQorCisvLyBwcm9wZXJ0eTogdGV4dHVyZVR5cGUKK19N
VExfSU5MSU5FIE1UTDo6VGV4dHVyZVR5cGUgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OnRleHR1
cmVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRl
eHR1cmVUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRleHR1cmVUeXBlKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpBcmd1bWVudERlc2NyaXB0b3I6OnNldFRleHR1cmVUeXBlKE1U
TDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVUeXBlXyksIHRleHR1cmVUeXBl
KTsKK30KKworLy8gcHJvcGVydHk6IGNvbnN0YW50QmxvY2tBbGlnbm1lbnQKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6Y29uc3RhbnRCbG9ja0FsaWdu
bWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbnN0YW50QmxvY2tBbGlnbm1lbnQpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkFyZ3VtZW50RGVzY3JpcHRvcjo6c2V0Q29uc3RhbnRC
bG9ja0FsaWdubWVudChOUzo6VUludGVnZXIgY29uc3RhbnRCbG9ja0FsaWdubWVudCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29u
c3RhbnRCbG9ja0FsaWdubWVudF8pLCBjb25zdGFudEJsb2NrQWxpZ25tZW50KTsKK30KKworI2lm
IGRlZmluZWQoTVRMX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04pCisKK2V4dGVybiAiQyIgTVRMOjpE
ZXZpY2UqIE1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKTsKKworZXh0ZXJuICJDIiBOUzo6
QXJyYXkqICAgTVRMQ29weUFsbERldmljZXMoKTsKKworZXh0ZXJuICJDIiBOUzo6QXJyYXkqICAg
TVRMQ29weUFsbERldmljZXNXaXRoT2JzZXJ2ZXIoTlM6Ok9iamVjdCoqLCBNVEw6OkRldmljZU5v
dGlmaWNhdGlvbkhhbmRsZXJCbG9jayk7CisKK2V4dGVybiAiQyIgdm9pZCAgICAgICAgIE1UTFJl
bW92ZURldmljZU9ic2VydmVyKGNvbnN0IE5TOjpPYmplY3QqKTsKKworI2luY2x1ZGUgPFRhcmdl
dENvbmRpdGlvbmFscy5oPgorCitNVEw6OkRldmljZSogTVRMOjpDcmVhdGVTeXN0ZW1EZWZhdWx0
RGV2aWNlKCkKK3sKKyAgICByZXR1cm4gOjpNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCk7
Cit9CisKK05TOjpBcnJheSogTVRMOjpDb3B5QWxsRGV2aWNlcygpCit7CisjaWYgVEFSR0VUX09T
X09TWAorICAgIHJldHVybiA6Ok1UTENvcHlBbGxEZXZpY2VzKCk7CisjZWxzZQorICAgIHJldHVy
biBudWxscHRyOworI2VuZGlmIC8vIFRBUkdFVF9PU19PU1gKK30KKworTlM6OkFycmF5KiBNVEw6
OkNvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKE5TOjpPYmplY3QqKiBwT3V0T2JzZXJ2ZXIsIERl
dmljZU5vdGlmaWNhdGlvbkhhbmRsZXJCbG9jayBoYW5kbGVyKQoreworI2lmIFRBUkdFVF9PU19P
U1gKKyAgICByZXR1cm4gOjpNVExDb3B5QWxsRGV2aWNlc1dpdGhPYnNlcnZlcihwT3V0T2JzZXJ2
ZXIsIGhhbmRsZXIpOworI2Vsc2UKKyAgICAodm9pZClwT3V0T2JzZXJ2ZXI7CisgICAgKHZvaWQp
aGFuZGxlcjsKKworICAgIHJldHVybiBudWxscHRyOworI2VuZGlmIC8vIFRBUkdFVF9PU19PU1gK
K30KKworTlM6OkFycmF5KiBNVEw6OkNvcHlBbGxEZXZpY2VzV2l0aE9ic2VydmVyKE5TOjpPYmpl
Y3QqKiBwT3V0T2JzZXJ2ZXIsIGNvbnN0IERldmljZU5vdGlmaWNhdGlvbkhhbmRsZXJGdW5jdGlv
biYgaGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIERldmljZU5vdGlmaWNhdGlvbkhhbmRsZXJGdW5j
dGlvbiBmdW5jdGlvbiA9IGhhbmRsZXI7CisKKyAgICByZXR1cm4gQ29weUFsbERldmljZXNXaXRo
T2JzZXJ2ZXIocE91dE9ic2VydmVyLCBeKERldmljZSogcERldmljZSwgRGV2aWNlTm90aWZpY2F0
aW9uTmFtZSBwTm90aWZpY2F0aW9uTmFtZSkgeyBmdW5jdGlvbihwRGV2aWNlLCBwTm90aWZpY2F0
aW9uTmFtZSk7IH0pOworfQorCit2b2lkIE1UTDo6UmVtb3ZlRGV2aWNlT2JzZXJ2ZXIoY29uc3Qg
TlM6Ok9iamVjdCogcE9ic2VydmVyKQoreworI2lmIFRBUkdFVF9PU19PU1gKKyAgICA6Ok1UTFJl
bW92ZURldmljZU9ic2VydmVyKHBPYnNlcnZlcik7CisjZW5kaWYgLy8gVEFSR0VUX09TX09TWAor
fQorCisjZW5kaWYgLy8gTVRMX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkRldmljZTo6bmV3TGlicmFyeShjb25zdCBOUzo6U3RyaW5nKiBwU291cmNlLCBj
b25zdCBDb21waWxlT3B0aW9ucyogcE9wdGlvbnMsIGNvbnN0IE5ld0xpYnJhcnlDb21wbGV0aW9u
SGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld0xp
YnJhcnlDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBj
b21wbGV0aW9uSGFuZGxlcjsKKworICAgIG5ld0xpYnJhcnkocFNvdXJjZSwgcE9wdGlvbnMsIF4o
TGlicmFyeSogcExpYnJhcnksIE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhh
bmRsZXIocExpYnJhcnksIHBFcnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6
RGV2aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IGNsYXNzIFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3Iq
IHBEZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld0xpYnJhcnlDb21wbGV0aW9uSGFuZGxlckZ1bmN0
aW9uJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld0xpYnJhcnlDb21wbGV0
aW9uSGFuZGxlckZ1bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFu
ZGxlcjsKKworICAgIG5ld0xpYnJhcnkocERlc2NyaXB0b3IsIF4oTGlicmFyeSogcExpYnJhcnks
IE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIocExpYnJhcnksIHBF
cnJvcik7IH0pOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQ
aXBlbGluZVN0YXRlKGNvbnN0IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3Is
IGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVDb21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIE5ld1JlbmRlclBpcGVsaW5lU3RhdGVD
b21wbGV0aW9uSGFuZGxlckZ1bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0
aW9uSGFuZGxlcjsKKworICAgIG5ld1JlbmRlclBpcGVsaW5lU3RhdGUocERlc2NyaXB0b3IsIF4o
UmVuZGVyUGlwZWxpbmVTdGF0ZSogcFBpcGVsaW5lU3RhdGUsIE5TOjpFcnJvciogcEVycm9yKSB7
IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIocFBpcGVsaW5lU3RhdGUsIHBFcnJvcik7IH0pOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNv
bnN0IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIFBpcGVsaW5lT3B0aW9u
IG9wdGlvbnMsIGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBs
ZXRpb25IYW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sg
TmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5j
dGlvbiBibG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBu
ZXdSZW5kZXJQaXBlbGluZVN0YXRlKHBEZXNjcmlwdG9yLCBvcHRpb25zLCBeKFJlbmRlclBpcGVs
aW5lU3RhdGUqIHBQaXBlbGluZVN0YXRlLCBjbGFzcyBSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24q
IHBSZWZsZWN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVy
KHBQaXBlbGluZVN0YXRlLCBwUmVmbGVjdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgVGlsZVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciogcERlc2NyaXB0b3IsIFBpcGVsaW5lT3B0aW9uIG9wdGlv
bnMsIGNvbnN0IE5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoUmVmbGVjdGlvbkNvbXBsZXRpb25I
YW5kbGVyRnVuY3Rpb24mIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIF9fYmxvY2sgTmV3UmVu
ZGVyUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBi
bG9ja0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdSZW5k
ZXJQaXBlbGluZVN0YXRlKHBEZXNjcmlwdG9yLCBvcHRpb25zLCBeKFJlbmRlclBpcGVsaW5lU3Rh
dGUqIHBQaXBlbGluZVN0YXRlLCBjbGFzcyBSZW5kZXJQaXBlbGluZVJlZmxlY3Rpb24qIHBSZWZs
ZWN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBQaXBl
bGluZVN0YXRlLCBwUmVmbGVjdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IGNsYXNzIEZ1bmN0
aW9uKiBwRnVuY3Rpb24sIGNvbnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlQ29tcGxldGlvbkhh
bmRsZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBOZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyRnVuY3Rpb24gYmxvY2tDb21wbGV0aW9u
SGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUocEZ1bmN0aW9uLCBeKENvbXB1dGVQaXBlbGluZVN0YXRlKiBwUGlwZWxpbmVTdGF0ZSwgTlM6
OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwUGlwZWxpbmVTdGF0ZSwg
cEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlKGNvbnN0IEZ1bmN0aW9uKiBwRnVuY3Rpb24sIFBpcGVsaW5lT3B0aW9u
IG9wdGlvbnMsIGNvbnN0IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21w
bGV0aW9uSGFuZGxlckZ1bmN0aW9uJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2Nr
IE5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlckZ1
bmN0aW9uIGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsKKworICAg
IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKHBGdW5jdGlvbiwgb3B0aW9ucywgXihDb21wdXRlUGlw
ZWxpbmVTdGF0ZSogcFBpcGVsaW5lU3RhdGUsIENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIHBS
ZWZsZWN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBQ
aXBlbGluZVN0YXRlLCBwUmVmbGVjdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IENvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBj
b25zdCBOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRs
ZXJGdW5jdGlvbiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBOZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXJGdW5jdGlvbiBibG9j
a0NvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXI7CisKKyAgICBuZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZShwRGVzY3JpcHRvciwgb3B0aW9ucywgXihDb21wdXRlUGlwZWxpbmVTdGF0
ZSogcFBpcGVsaW5lU3RhdGUsIENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIHBSZWZsZWN0aW9u
LCBOUzo6RXJyb3IqIHBFcnJvcikgeyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBQaXBlbGluZVN0
YXRlLCBwUmVmbGVjdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpEZXZpY2U6OmlzSGVhZGxlc3MoKSBjb25zdAoreworICAgIHJldHVybiBoZWFkbGVzcygpOwor
fQorCisvLyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpEZXZp
Y2U6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpT
dHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6
IHJlZ2lzdHJ5SUQKK19NVExfSU5MSU5FIHVpbnQ2NF90IE1UTDo6RGV2aWNlOjpyZWdpc3RyeUlE
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50NjRfdD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChyZWdpc3RyeUlEKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhU
aHJlYWRzUGVyVGhyZWFkZ3JvdXAKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OkRldmljZTo6
bWF4VGhyZWFkc1BlclRocmVhZGdyb3VwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlNpemU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VGhyZWFkc1Bl
clRocmVhZGdyb3VwKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsb3dQb3dlcgorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkRldmljZTo6bG93UG93ZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNMb3dQb3dlcikpOwor
fQorCisvLyBwcm9wZXJ0eTogaGVhZGxlc3MKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6
OmhlYWRsZXNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzSGVhZGxlc3MpKTsKK30KKworLy8gcHJvcGVydHk6
IHJlbW92YWJsZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6cmVtb3ZhYmxlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGlzUmVtb3ZhYmxlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBoYXNVbmlmaWVkTWVt
b3J5CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpoYXNVbmlmaWVkTWVtb3J5KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGhhc1VuaWZpZWRNZW1vcnkpKTsKK30KKworLy8gcHJvcGVydHk6IHJlY29tbWVu
ZGVkTWF4V29ya2luZ1NldFNpemUKK19NVExfSU5MSU5FIHVpbnQ2NF90IE1UTDo6RGV2aWNlOjpy
ZWNvbW1lbmRlZE1heFdvcmtpbmdTZXRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTx1aW50NjRfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZWNvbW1lbmRl
ZE1heFdvcmtpbmdTZXRTaXplKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsb2NhdGlvbgorX01UTF9J
TkxJTkUgTVRMOjpEZXZpY2VMb2NhdGlvbiBNVEw6OkRldmljZTo6bG9jYXRpb24oKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlTG9jYXRpb24+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwobG9jYXRpb24pKTsKK30KKworLy8gcHJvcGVydHk6IGxvY2F0
aW9uTnVtYmVyCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpEZXZpY2U6OmxvY2F0aW9u
TnVtYmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobG9jYXRpb25OdW1iZXIpKTsKK30KKworLy8g
cHJvcGVydHk6IG1heFRyYW5zZmVyUmF0ZQorX01UTF9JTkxJTkUgdWludDY0X3QgTVRMOjpEZXZp
Y2U6Om1heFRyYW5zZmVyUmF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dWludDY0X3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VHJhbnNmZXJSYXRlKSk7
Cit9CisKKy8vIHByb3BlcnR5OiBkZXB0aDI0U3RlbmNpbDhQaXhlbEZvcm1hdFN1cHBvcnRlZAor
X01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6ZGVwdGgyNFN0ZW5jaWw4UGl4ZWxGb3JtYXRT
dXBwb3J0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxi
b29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzRGVwdGgyNFN0ZW5jaWw4UGl4ZWxGb3JtYXRT
dXBwb3J0ZWQpKTsKK30KKworLy8gcHJvcGVydHk6IHJlYWRXcml0ZVRleHR1cmVTdXBwb3J0Citf
TVRMX0lOTElORSBNVEw6OlJlYWRXcml0ZVRleHR1cmVUaWVyIE1UTDo6RGV2aWNlOjpyZWFkV3Jp
dGVUZXh0dXJlU3VwcG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpSZWFkV3JpdGVUZXh0dXJlVGllcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZWFk
V3JpdGVUZXh0dXJlU3VwcG9ydCkpOworfQorCisvLyBwcm9wZXJ0eTogYXJndW1lbnRCdWZmZXJz
U3VwcG9ydAorX01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEJ1ZmZlcnNUaWVyIE1UTDo6RGV2aWNl
Ojphcmd1bWVudEJ1ZmZlcnNTdXBwb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkFyZ3VtZW50QnVmZmVyc1RpZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYXJndW1lbnRCdWZmZXJzU3VwcG9ydCkpOworfQorCisvLyBwcm9wZXJ0eTogcmFzdGVyT3Jk
ZXJHcm91cHNTdXBwb3J0ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnJhc3Rlck9y
ZGVyR3JvdXBzU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcmVSYXN0ZXJPcmRlckdyb3Vw
c1N1cHBvcnRlZCkpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHMzMkJpdEZsb2F0RmlsdGVy
aW5nCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0czMyQml0RmxvYXRGaWx0
ZXJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzMzJCaXRGbG9hdEZpbHRlcmluZykpOwor
fQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHMzMkJpdE1TQUEKK19NVExfSU5MSU5FIGJvb2wgTVRM
OjpEZXZpY2U6OnN1cHBvcnRzMzJCaXRNU0FBKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0czMy
Qml0TVNBQSkpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNRdWVyeVRleHR1cmVMT0QKK19N
VExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUXVlcnlUZXh0dXJlTE9EKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzdXBwb3J0c1F1ZXJ5VGV4dHVyZUxPRCkpOworfQorCisvLyBwcm9wZXJ0
eTogc3VwcG9ydHNCQ1RleHR1cmVDb21wcmVzc2lvbgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRl
dmljZTo6c3VwcG9ydHNCQ1RleHR1cmVDb21wcmVzc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3Vw
cG9ydHNCQ1RleHR1cmVDb21wcmVzc2lvbikpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNQ
dWxsTW9kZWxJbnRlcnBvbGF0aW9uCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBw
b3J0c1B1bGxNb2RlbEludGVycG9sYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzUHVs
bE1vZGVsSW50ZXJwb2xhdGlvbikpOworfQorCisvLyBwcm9wZXJ0eTogYmFyeWNlbnRyaWNDb29y
ZHNTdXBwb3J0ZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OmJhcnljZW50cmljQ29v
cmRzU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNh
ZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcmVCYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBv
cnRlZCkpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNTaGFkZXJCYXJ5Y2VudHJpY0Nvb3Jk
aW5hdGVzCitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c1NoYWRlckJhcnlj
ZW50cmljQ29vcmRpbmF0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzU2hhZGVyQmFyeWNl
bnRyaWNDb29yZGluYXRlcykpOworfQorCisvLyBwcm9wZXJ0eTogY3VycmVudEFsbG9jYXRlZFNp
emUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkRldmljZTo6Y3VycmVudEFsbG9jYXRl
ZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjdXJyZW50QWxsb2NhdGVkU2l6ZSkpOworfQor
CisvLyBtZXRob2Q6IG5ld0NvbW1hbmRRdWV1ZQorX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kUXVl
dWUqIE1UTDo6RGV2aWNlOjpuZXdDb21tYW5kUXVldWUoKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q29tbWFuZFF1ZXVlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdDb21tYW5kUXVldWUpKTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21tYW5kUXVldWVXaXRoTWF4
Q29tbWFuZEJ1ZmZlckNvdW50OgorX01UTF9JTkxJTkUgTVRMOjpDb21tYW5kUXVldWUqIE1UTDo6
RGV2aWNlOjpuZXdDb21tYW5kUXVldWUoTlM6OlVJbnRlZ2VyIG1heENvbW1hbmRCdWZmZXJDb3Vu
dCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvbW1hbmRRdWV1ZSo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3Q29tbWFuZFF1ZXVlV2l0aE1heENvbW1hbmRCdWZm
ZXJDb3VudF8pLCBtYXhDb21tYW5kQnVmZmVyQ291bnQpOworfQorCisvLyBtZXRob2Q6IGhlYXBU
ZXh0dXJlU2l6ZUFuZEFsaWduV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlNpemVB
bmRBbGlnbiBNVEw6OkRldmljZTo6aGVhcFRleHR1cmVTaXplQW5kQWxpZ24oY29uc3QgTVRMOjpU
ZXh0dXJlRGVzY3JpcHRvciogZGVzYykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OlNpemVBbmRBbGlnbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChoZWFwVGV4dHVyZVNp
emVBbmRBbGlnbldpdGhEZXNjcmlwdG9yXyksIGRlc2MpOworfQorCisvLyBtZXRob2Q6IGhlYXBC
dWZmZXJTaXplQW5kQWxpZ25XaXRoTGVuZ3RoOm9wdGlvbnM6CitfTVRMX0lOTElORSBNVEw6OlNp
emVBbmRBbGlnbiBNVEw6OkRldmljZTo6aGVhcEJ1ZmZlclNpemVBbmRBbGlnbihOUzo6VUludGVn
ZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25zKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZUFuZEFsaWduPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGhlYXBCdWZmZXJTaXplQW5kQWxpZ25XaXRoTGVuZ3RoX29wdGlvbnNfKSwgbGVuZ3RoLCBv
cHRpb25zKTsKK30KKworLy8gbWV0aG9kOiBuZXdIZWFwV2l0aERlc2NyaXB0b3I6CitfTVRMX0lO
TElORSBNVEw6OkhlYXAqIE1UTDo6RGV2aWNlOjpuZXdIZWFwKGNvbnN0IE1UTDo6SGVhcERlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpIZWFwKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdIZWFwV2l0aERlc2NyaXB0b3JfKSwg
ZGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3QnVmZmVyV2l0aExlbmd0aDpvcHRpb25z
OgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6RGV2aWNlOjpuZXdCdWZmZXIoTlM6OlVJ
bnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3QnVmZmVyV2l0aExlbmd0aF9vcHRpb25zXyksIGxlbmd0aCwgb3B0aW9ucyk7Cit9CisK
Ky8vIG1ldGhvZDogbmV3QnVmZmVyV2l0aEJ5dGVzOmxlbmd0aDpvcHRpb25zOgorX01UTF9JTkxJ
TkUgTVRMOjpCdWZmZXIqIE1UTDo6RGV2aWNlOjpuZXdCdWZmZXIoY29uc3Qgdm9pZCogcG9pbnRl
ciwgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucykKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3QnVmZmVyV2l0aEJ5dGVzX2xlbmd0aF9vcHRpb25zXyksIHBvaW50ZXIs
IGxlbmd0aCwgb3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogbmV3QnVmZmVyV2l0aEJ5dGVzTm9D
b3B5Omxlbmd0aDpvcHRpb25zOmRlYWxsb2NhdG9yOgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIq
IE1UTDo6RGV2aWNlOjpuZXdCdWZmZXIoY29uc3Qgdm9pZCogcG9pbnRlciwgTlM6OlVJbnRlZ2Vy
IGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucywgY29uc3Qgdm9pZCAoXmRlYWxs
b2NhdG9yKSh2b2lkKiwgTlM6OlVJbnRlZ2VyKSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QnVmZmVyV2l0
aEJ5dGVzTm9Db3B5X2xlbmd0aF9vcHRpb25zX2RlYWxsb2NhdG9yXyksIHBvaW50ZXIsIGxlbmd0
aCwgb3B0aW9ucywgZGVhbGxvY2F0b3IpOworfQorCisvLyBtZXRob2Q6IG5ld0RlcHRoU3RlbmNp
bFN0YXRlV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OkRlcHRoU3RlbmNpbFN0YXRl
KiBNVEw6OkRldmljZTo6bmV3RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgTVRMOjpEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6RGVwdGhTdGVuY2lsU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Rl
cHRoU3RlbmNpbFN0YXRlV2l0aERlc2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIG1l
dGhvZDogbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJl
KiBNVEw6OkRldmljZTo6bmV3VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVy
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yXyksIGRl
c2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6IG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjppb3N1
cmZhY2U6cGxhbmU6CitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6RGV2aWNlOjpuZXdU
ZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIGNvbnN0IElP
U3VyZmFjZVJlZiBpb3N1cmZhY2UsIE5TOjpVSW50ZWdlciBwbGFuZSkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcl9pb3N1cmZhY2VfcGxhbmVfKSwgZGVzY3JpcHRvciwg
aW9zdXJmYWNlLCBwbGFuZSk7Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkVGV4dHVyZVdpdGhE
ZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OkRldmljZTo6bmV3U2hh
cmVkVGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3U2hhcmVkVGV4dHVyZVdpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3Ip
OworfQorCisvLyBtZXRob2Q6IG5ld1NoYXJlZFRleHR1cmVXaXRoSGFuZGxlOgorX01UTF9JTkxJ
TkUgTVRMOjpUZXh0dXJlKiBNVEw6OkRldmljZTo6bmV3U2hhcmVkVGV4dHVyZShjb25zdCBNVEw6
OlNoYXJlZFRleHR1cmVIYW5kbGUqIHNoYXJlZEhhbmRsZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1No
YXJlZFRleHR1cmVXaXRoSGFuZGxlXyksIHNoYXJlZEhhbmRsZSk7Cit9CisKKy8vIG1ldGhvZDog
bmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJT
dGF0ZSogTVRMOjpEZXZpY2U6Om5ld1NhbXBsZXJTdGF0ZShjb25zdCBNVEw6OlNhbXBsZXJEZXNj
cmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6U2FtcGxlclN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdTYW1wbGVyU3RhdGVX
aXRoRGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdEZWZhdWx0
TGlicmFyeQorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3RGVmYXVs
dExpYnJhcnkoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGlicmFy
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RGVmYXVsdExpYnJhcnkpKTsKK30KKworLy8g
bWV0aG9kOiBuZXdEZWZhdWx0TGlicmFyeVdpdGhCdW5kbGU6ZXJyb3I6CitfTVRMX0lOTElORSBN
VEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdEZWZhdWx0TGlicmFyeShjb25zdCBOUzo6QnVu
ZGxlKiBidW5kbGUsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6TGlicmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RGVmYXVs
dExpYnJhcnlXaXRoQnVuZGxlX2Vycm9yXyksIGJ1bmRsZSwgZXJyb3IpOworfQorCisvLyBtZXRo
b2Q6IG5ld0xpYnJhcnlXaXRoRmlsZTplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6TGlicmFyeSog
TVRMOjpEZXZpY2U6Om5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogZmlsZXBhdGgsIE5TOjpF
cnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6TGli
cmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhGaWxlX2Vycm9yXyks
IGZpbGVwYXRoLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3TGlicmFyeVdpdGhVUkw6ZXJy
b3I6CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkqIE1UTDo6RGV2aWNlOjpuZXdMaWJyYXJ5KGNv
bnN0IE5TOjpVUkwqIHVybCwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdM
aWJyYXJ5V2l0aFVSTF9lcnJvcl8pLCB1cmwsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdM
aWJyYXJ5V2l0aERhdGE6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkxpYnJhcnkqIE1UTDo6RGV2
aWNlOjpuZXdMaWJyYXJ5KGNvbnN0IGRpc3BhdGNoX2RhdGFfdCBkYXRhLCBOUzo6RXJyb3IqKiBl
cnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpYnJhcnkqPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0xpYnJhcnlXaXRoRGF0YV9lcnJvcl8pLCBkYXRhLCBl
cnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3TGlicmFyeVdpdGhTb3VyY2U6b3B0aW9uczplcnJv
cjoKK19NVExfSU5MSU5FIE1UTDo6TGlicmFyeSogTVRMOjpEZXZpY2U6Om5ld0xpYnJhcnkoY29u
c3QgTlM6OlN0cmluZyogc291cmNlLCBjb25zdCBNVEw6OkNvbXBpbGVPcHRpb25zKiBvcHRpb25z
LCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0xpYnJhcnlXaXRoU291cmNl
X29wdGlvbnNfZXJyb3JfKSwgc291cmNlLCBvcHRpb25zLCBlcnJvcik7Cit9CisKKy8vIG1ldGhv
ZDogbmV3TGlicmFyeVdpdGhTb3VyY2U6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0xpYnJhcnkoY29uc3QgTlM6OlN0cmluZyogc291
cmNlLCBjb25zdCBNVEw6OkNvbXBpbGVPcHRpb25zKiBvcHRpb25zLCBjb25zdCBNVEw6Ok5ld0xp
YnJhcnlDb21wbGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhT
b3VyY2Vfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8pLCBzb3VyY2UsIG9wdGlvbnMsIGNvbXBs
ZXRpb25IYW5kbGVyKTsKK30KKworLy8gbWV0aG9kOiBuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVz
Y3JpcHRvcjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6TGlicmFyeSogTVRMOjpEZXZpY2U6Om5l
d0xpYnJhcnkoY29uc3QgTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
LCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkxpYnJhcnkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0xpYnJhcnlXaXRoU3RpdGNo
ZWREZXNjcmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gbWV0aG9k
OiBuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcjpjb21wbGV0aW9uSGFuZGxlcjoKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0xpYnJhcnkoY29uc3QgTVRMOjpTdGl0Y2hl
ZExpYnJhcnlEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld0xpYnJhcnlDb21w
bGV0aW9uSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3TGlicmFyeVdpdGhTdGl0Y2hlZERl
c2NyaXB0b3JfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgY29tcGxldGlvbkhhbmRs
ZXIpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRv
cjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogTVRMOjpEZXZp
Y2U6Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRl
c2NyaXB0b3IsIGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRl
V2l0aERlc2NyaXB0b3I6b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOgorX01UTF9JTkxJTkUgTVRM
OjpSZW5kZXJQaXBlbGluZVN0YXRlKiBNVEw6OkRldmljZTo6bmV3UmVuZGVyUGlwZWxpbmVTdGF0
ZShjb25zdCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTVRMOjpQ
aXBlbGluZU9wdGlvbiBvcHRpb25zLCBjb25zdCBNVEw6OkF1dG9yZWxlYXNlZFJlbmRlclBpcGVs
aW5lUmVmbGVjdGlvbiogcmVmbGVjdGlvbiwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jfb3B0
aW9uc19yZWZsZWN0aW9uX2Vycm9yXyksIGRlc2NyaXB0b3IsIG9wdGlvbnMsIHJlZmxlY3Rpb24s
IGVycm9yKTsKK30KKworLy8gbWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2Ny
aXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpu
ZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yLCBjb25zdCBNVEw6Ok5ld1JlbmRlclBpcGVsaW5lU3RhdGVDb21wbGV0aW9u
SGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNj
cmlwdG9yX2NvbXBsZXRpb25IYW5kbGVyXyksIGRlc2NyaXB0b3IsIGNvbXBsZXRpb25IYW5kbGVy
KTsKK30KKworLy8gbWV0aG9kOiBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6
b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6
Om5ld1JlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IqIGRlc2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpO
ZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yX29wdGlv
bnNfY29tcGxldGlvbkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgb3B0aW9ucywgY29tcGxldGlvbkhh
bmRsZXIpOworfQorCisvLyBtZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0
aW9uOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSogTVRMOjpE
ZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGNvbXB1
dGVGdW5jdGlvbiwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25fZXJyb3JfKSwgY29tcHV0ZUZ1
bmN0aW9uLCBlcnJvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoRnVuY3Rpb246b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpD
b21wdXRlUGlwZWxpbmVTdGF0ZSogTVRMOjpEZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
KGNvbnN0IE1UTDo6RnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbiwgTVRMOjpQaXBlbGluZU9wdGlv
biBvcHRpb25zLCBjb25zdCBNVEw6OkF1dG9yZWxlYXNlZENvbXB1dGVQaXBlbGluZVJlZmxlY3Rp
b24qIHJlZmxlY3Rpb24sIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uX29wdGlvbnNfcmVmbGVj
dGlvbl9lcnJvcl8pLCBjb21wdXRlRnVuY3Rpb24sIG9wdGlvbnMsIHJlZmxlY3Rpb24sIGVycm9y
KTsKK30KKworLy8gbWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpj
b21wbGV0aW9uSGFuZGxlcjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6Om5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGNvbXB1dGVGdW5jdGlvbiwgY29u
c3QgTVRMOjpOZXdDb21wdXRlUGlwZWxpbmVTdGF0ZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9jb21wbGV0aW9u
SGFuZGxlcl8pLCBjb21wdXRlRnVuY3Rpb24sIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLy8g
bWV0aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpvcHRpb25zOmNvbXBs
ZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3Q29tcHV0ZVBp
cGVsaW5lU3RhdGUoY29uc3QgTVRMOjpGdW5jdGlvbiogY29tcHV0ZUZ1bmN0aW9uLCBNVEw6OlBp
cGVsaW5lT3B0aW9uIG9wdGlvbnMsIGNvbnN0IE1UTDo6TmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoUmVmbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdDb21w
dXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXyks
IGNvbXB1dGVGdW5jdGlvbiwgb3B0aW9ucywgY29tcGxldGlvbkhhbmRsZXIpOworfQorCisvLyBt
ZXRob2Q6IG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6b3B0aW9uczpyZWZs
ZWN0aW9uOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpDb21wdXRlUGlwZWxpbmVTdGF0ZSogTVRM
OjpEZXZpY2U6Om5ld0NvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6Q29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25zLCBj
b25zdCBNVEw6OkF1dG9yZWxlYXNlZENvbXB1dGVQaXBlbGluZVJlZmxlY3Rpb24qIHJlZmxlY3Rp
b24sIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6Q29tcHV0ZVBpcGVsaW5lU3RhdGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Nv
bXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jfb3B0aW9uc19yZWZsZWN0aW9uX2Vycm9y
XyksIGRlc2NyaXB0b3IsIG9wdGlvbnMsIHJlZmxlY3Rpb24sIGVycm9yKTsKK30KKworLy8gbWV0
aG9kOiBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6Y29tcGxl
dGlvbkhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpuZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZShjb25zdCBNVEw6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRlc2NyaXB0
b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpOZXdDb21wdXRlUGlw
ZWxpbmVTdGF0ZVdpdGhSZWZsZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3Jfb3B0aW9uc19jb21wbGV0
aW9uSGFuZGxlcl8pLCBkZXNjcmlwdG9yLCBvcHRpb25zLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9
CisKKy8vIG1ldGhvZDogbmV3RmVuY2UKK19NVExfSU5MSU5FIE1UTDo6RmVuY2UqIE1UTDo6RGV2
aWNlOjpuZXdGZW5jZSgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpG
ZW5jZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RmVuY2UpKTsKK30KKworLy8gbWV0aG9k
OiBzdXBwb3J0c0ZlYXR1cmVTZXQ6CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBw
b3J0c0ZlYXR1cmVTZXQoTVRMOjpGZWF0dXJlU2V0IGZlYXR1cmVTZXQpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3Vw
cG9ydHNGZWF0dXJlU2V0XyksIGZlYXR1cmVTZXQpOworfQorCisvLyBtZXRob2Q6IHN1cHBvcnRz
RmFtaWx5OgorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNGYW1pbHkoTVRM
OjpHUFVGYW1pbHkgZ3B1RmFtaWx5KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
U2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzRmFtaWx5XyksIGdwdUZh
bWlseSk7Cit9CisKKy8vIG1ldGhvZDogc3VwcG9ydHNUZXh0dXJlU2FtcGxlQ291bnQ6CitfTVRM
X0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudChOUzo6
VUludGVnZXIgc2FtcGxlQ291bnQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VT
YWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNUZXh0dXJlU2FtcGxlQ291
bnRfKSwgc2FtcGxlQ291bnQpOworfQorCisvLyBtZXRob2Q6IG1pbmltdW1MaW5lYXJUZXh0dXJl
QWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXQ6CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpE
ZXZpY2U6Om1pbmltdW1MaW5lYXJUZXh0dXJlQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXQoTVRMOjpQ
aXhlbEZvcm1hdCBmb3JtYXQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1pbmltdW1MaW5lYXJUZXh0dXJlQWxp
Z25tZW50Rm9yUGl4ZWxGb3JtYXRfKSwgZm9ybWF0KTsKK30KKworLy8gbWV0aG9kOiBtaW5pbXVt
VGV4dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVsRm9ybWF0OgorX01UTF9JTkxJTkUgTlM6OlVJ
bnRlZ2VyIE1UTDo6RGV2aWNlOjptaW5pbXVtVGV4dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVs
Rm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgZm9ybWF0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtaW5pbXVtVGV4
dHVyZUJ1ZmZlckFsaWdubWVudEZvclBpeGVsRm9ybWF0XyksIGZvcm1hdCk7Cit9CisKKy8vIG1l
dGhvZDogbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVzY3JpcHRvcjpvcHRpb25zOnJl
ZmxlY3Rpb246ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUqIE1U
TDo6RGV2aWNlOjpuZXdSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6VGlsZVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTVRMOjpQaXBlbGluZU9wdGlvbiBvcHRpb25z
LCBjb25zdCBNVEw6OkF1dG9yZWxlYXNlZFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogcmVmbGVj
dGlvbiwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yX29wdGlvbnNfcmVmbGVjdGlvbl9l
cnJvcl8pLCBkZXNjcmlwdG9yLCBvcHRpb25zLCByZWZsZWN0aW9uLCBlcnJvcik7Cit9CisKKy8v
IG1ldGhvZDogbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVzY3JpcHRvcjpvcHRpb25z
OmNvbXBsZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6bmV3UmVu
ZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IsIE1UTDo6UGlwZWxpbmVPcHRpb24gb3B0aW9ucywgY29uc3QgTVRMOjpOZXdS
ZW5kZXJQaXBlbGluZVN0YXRlV2l0aFJlZmxlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhUaWxlRGVzY3JpcHRvcl9vcHRp
b25zX2NvbXBsZXRpb25IYW5kbGVyXyksIGRlc2NyaXB0b3IsIG9wdGlvbnMsIGNvbXBsZXRpb25I
YW5kbGVyKTsKK30KKworLy8gcHJvcGVydHk6IG1heFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoCitf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpEZXZpY2U6Om1heFRocmVhZGdyb3VwTWVtb3J5
TGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgp
KTsKK30KKworLy8gcHJvcGVydHk6IG1heEFyZ3VtZW50QnVmZmVyU2FtcGxlckNvdW50CitfTVRM
X0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpEZXZpY2U6Om1heEFyZ3VtZW50QnVmZmVyU2FtcGxl
ckNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUlu
dGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4QXJndW1lbnRCdWZmZXJTYW1wbGVyQ291
bnQpKTsKK30KKworLy8gcHJvcGVydHk6IHByb2dyYW1tYWJsZVNhbXBsZVBvc2l0aW9uc1N1cHBv
cnRlZAorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6cHJvZ3JhbW1hYmxlU2FtcGxlUG9z
aXRpb25zU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcmVQcm9ncmFtbWFibGVTYW1wbGVQ
b3NpdGlvbnNTdXBwb3J0ZWQpKTsKK30KKworLy8gbWV0aG9kOiBnZXREZWZhdWx0U2FtcGxlUG9z
aXRpb25zOmNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRldmljZTo6Z2V0RGVmYXVsdFNh
bXBsZVBvc2l0aW9ucyhNVEw6OlNhbXBsZVBvc2l0aW9uKiBwb3NpdGlvbnMsIE5TOjpVSW50ZWdl
ciBjb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9uc19jb3VudF8pLCBwb3NpdGlvbnMsIGNv
dW50KTsKK30KKworLy8gbWV0aG9kOiBuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzOgor
X01UTF9JTkxJTkUgTVRMOjpBcmd1bWVudEVuY29kZXIqIE1UTDo6RGV2aWNlOjpuZXdBcmd1bWVu
dEVuY29kZXIoY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpBcmd1bWVudEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5ld0FyZ3VtZW50RW5jb2RlcldpdGhBcmd1bWVudHNfKSwgYXJndW1lbnRzKTsKK30KKwor
Ly8gbWV0aG9kOiBzdXBwb3J0c1Jhc3Rlcml6YXRpb25SYXRlTWFwV2l0aExheWVyQ291bnQ6Citf
TVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c1Jhc3Rlcml6YXRpb25SYXRlTWFw
KE5TOjpVSW50ZWdlciBsYXllckNvdW50KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzUmFzdGVyaXphdGlv
blJhdGVNYXBXaXRoTGF5ZXJDb3VudF8pLCBsYXllckNvdW50KTsKK30KKworLy8gbWV0aG9kOiBu
ZXdSYXN0ZXJpemF0aW9uUmF0ZU1hcFdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpS
YXN0ZXJpemF0aW9uUmF0ZU1hcCogTVRMOjpEZXZpY2U6Om5ld1Jhc3Rlcml6YXRpb25SYXRlTWFw
KGNvbnN0IE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJhdGVN
YXAqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Jhc3Rlcml6YXRpb25SYXRlTWFwV2l0aERl
c2NyaXB0b3JfKSwgZGVzY3JpcHRvcik7Cit9CisKKy8vIG1ldGhvZDogbmV3SW5kaXJlY3RDb21t
YW5kQnVmZmVyV2l0aERlc2NyaXB0b3I6bWF4Q29tbWFuZENvdW50Om9wdGlvbnM6CitfTVRMX0lO
TElORSBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlciogTVRMOjpEZXZpY2U6Om5ld0luZGlyZWN0
Q29tbWFuZEJ1ZmZlcihjb25zdCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IsIE5TOjpVSW50ZWdlciBtYXhDb3VudCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMg
b3B0aW9ucykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkluZGlyZWN0
Q29tbWFuZEJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3SW5kaXJlY3RDb21tYW5k
QnVmZmVyV2l0aERlc2NyaXB0b3JfbWF4Q29tbWFuZENvdW50X29wdGlvbnNfKSwgZGVzY3JpcHRv
ciwgbWF4Q291bnQsIG9wdGlvbnMpOworfQorCisvLyBtZXRob2Q6IG5ld0V2ZW50CitfTVRMX0lO
TElORSBNVEw6OkV2ZW50KiBNVEw6OkRldmljZTo6bmV3RXZlbnQoKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RXZlbnQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5l
d0V2ZW50KSk7Cit9CisKKy8vIG1ldGhvZDogbmV3U2hhcmVkRXZlbnQKK19NVExfSU5MSU5FIE1U
TDo6U2hhcmVkRXZlbnQqIE1UTDo6RGV2aWNlOjpuZXdTaGFyZWRFdmVudCgpCit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaGFyZWRFdmVudCo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobmV3U2hhcmVkRXZlbnQpKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRFdmVu
dFdpdGhIYW5kbGU6CitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50KiBNVEw6OkRldmljZTo6
bmV3U2hhcmVkRXZlbnQoY29uc3QgTVRMOjpTaGFyZWRFdmVudEhhbmRsZSogc2hhcmVkRXZlbnRI
YW5kbGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaGFyZWRFdmVu
dCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3U2hhcmVkRXZlbnRXaXRoSGFuZGxlXyksIHNo
YXJlZEV2ZW50SGFuZGxlKTsKK30KKworLy8gcHJvcGVydHk6IHBlZXJHcm91cElECitfTVRMX0lO
TElORSB1aW50NjRfdCBNVEw6OkRldmljZTo6cGVlckdyb3VwSUQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQ2NF90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHBlZXJHcm91cElEKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwZWVySW5kZXgKK19NVExfSU5MSU5F
IHVpbnQzMl90IE1UTDo6RGV2aWNlOjpwZWVySW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPHVpbnQzMl90Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBlZXJJ
bmRleCkpOworfQorCisvLyBwcm9wZXJ0eTogcGVlckNvdW50CitfTVRMX0lOTElORSB1aW50MzJf
dCBNVEw6OkRldmljZTo6cGVlckNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx1aW50MzJfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwZWVyQ291bnQpKTsK
K30KKworLy8gbWV0aG9kOiBzcGFyc2VUaWxlU2l6ZVdpdGhUZXh0dXJlVHlwZTpwaXhlbEZvcm1h
dDpzYW1wbGVDb3VudDoKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OkRldmljZTo6c3BhcnNl
VGlsZVNpemUoTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSwgTVRMOjpQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHNhbXBsZUNvdW50KQoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzcGFyc2VU
aWxlU2l6ZVdpdGhUZXh0dXJlVHlwZV9waXhlbEZvcm1hdF9zYW1wbGVDb3VudF8pLCB0ZXh0dXJl
VHlwZSwgcGl4ZWxGb3JtYXQsIHNhbXBsZUNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IHNwYXJz
ZVRpbGVTaXplSW5CeXRlcworX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RGV2aWNlOjpz
cGFyc2VUaWxlU2l6ZUluQnl0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzcGFyc2VUaWxlU2l6
ZUluQnl0ZXMpKTsKK30KKworLy8gbWV0aG9kOiBjb252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zOnRv
VGlsZVJlZ2lvbnM6d2l0aFRpbGVTaXplOmFsaWdubWVudE1vZGU6bnVtUmVnaW9uczoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpEZXZpY2U6OmNvbnZlcnRTcGFyc2VQaXhlbFJlZ2lvbnMoY29uc3Qg
TVRMOjpSZWdpb24qIHBpeGVsUmVnaW9ucywgTVRMOjpSZWdpb24qIHRpbGVSZWdpb25zLCBNVEw6
OlNpemUgdGlsZVNpemUsIE1UTDo6U3BhcnNlVGV4dHVyZVJlZ2lvbkFsaWdubWVudE1vZGUgbW9k
ZSwgTlM6OlVJbnRlZ2VyIG51bVJlZ2lvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbnZlcnRTcGFyc2VQaXhlbFJlZ2lvbnNfdG9U
aWxlUmVnaW9uc193aXRoVGlsZVNpemVfYWxpZ25tZW50TW9kZV9udW1SZWdpb25zXyksIHBpeGVs
UmVnaW9ucywgdGlsZVJlZ2lvbnMsIHRpbGVTaXplLCBtb2RlLCBudW1SZWdpb25zKTsKK30KKwor
Ly8gbWV0aG9kOiBjb252ZXJ0U3BhcnNlVGlsZVJlZ2lvbnM6dG9QaXhlbFJlZ2lvbnM6d2l0aFRp
bGVTaXplOm51bVJlZ2lvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RGV2aWNlOjpjb252ZXJ0
U3BhcnNlVGlsZVJlZ2lvbnMoY29uc3QgTVRMOjpSZWdpb24qIHRpbGVSZWdpb25zLCBNVEw6OlJl
Z2lvbiogcGl4ZWxSZWdpb25zLCBNVEw6OlNpemUgdGlsZVNpemUsIE5TOjpVSW50ZWdlciBudW1S
ZWdpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChjb252ZXJ0U3BhcnNlVGlsZVJlZ2lvbnNfdG9QaXhlbFJlZ2lvbnNfd2l0aFRpbGVT
aXplX251bVJlZ2lvbnNfKSwgdGlsZVJlZ2lvbnMsIHBpeGVsUmVnaW9ucywgdGlsZVNpemUsIG51
bVJlZ2lvbnMpOworfQorCisvLyBwcm9wZXJ0eTogbWF4QnVmZmVyTGVuZ3RoCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpEZXZpY2U6Om1heEJ1ZmZlckxlbmd0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG1heEJ1ZmZlckxlbmd0aCkpOworfQorCisvLyBwcm9wZXJ0eTogY291bnRlclNl
dHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpEZXZpY2U6OmNvdW50ZXJTZXRzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGNvdW50ZXJTZXRzKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3Q291bnRl
clNhbXBsZUJ1ZmZlcldpdGhEZXNjcmlwdG9yOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpDb3Vu
dGVyU2FtcGxlQnVmZmVyKiBNVEw6OkRldmljZTo6bmV3Q291bnRlclNhbXBsZUJ1ZmZlcihjb25z
dCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJy
b3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkNvdW50
ZXJTYW1wbGVCdWZmZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0NvdW50ZXJTYW1wbGVC
dWZmZXJXaXRoRGVzY3JpcHRvcl9lcnJvcl8pLCBkZXNjcmlwdG9yLCBlcnJvcik7Cit9CisKKy8v
IG1ldGhvZDogc2FtcGxlVGltZXN0YW1wczpncHVUaW1lc3RhbXA6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6RGV2aWNlOjpzYW1wbGVUaW1lc3RhbXBzKE1UTDo6VGltZXN0YW1wKiBjcHVUaW1lc3Rh
bXAsIE1UTDo6VGltZXN0YW1wKiBncHVUaW1lc3RhbXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZVRpbWVzdGFtcHNfZ3B1VGlt
ZXN0YW1wXyksIGNwdVRpbWVzdGFtcCwgZ3B1VGltZXN0YW1wKTsKK30KKworLy8gbWV0aG9kOiBz
dXBwb3J0c0NvdW50ZXJTYW1wbGluZzoKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1
cHBvcnRzQ291bnRlclNhbXBsaW5nKE1UTDo6Q291bnRlclNhbXBsaW5nUG9pbnQgc2FtcGxpbmdQ
b2ludCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdXBwb3J0c0NvdW50ZXJTYW1wbGluZ18pLCBzYW1wbGluZ1BvaW50
KTsKK30KKworLy8gbWV0aG9kOiBzdXBwb3J0c1ZlcnRleEFtcGxpZmljYXRpb25Db3VudDoKK19N
VExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzVmVydGV4QW1wbGlmaWNhdGlvbkNv
dW50KE5TOjpVSW50ZWdlciBjb3VudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c1ZlcnRleEFtcGxpZmlj
YXRpb25Db3VudF8pLCBjb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c0R5bmFtaWNM
aWJyYXJpZXMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzRHluYW1pY0xp
YnJhcmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJv
b2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9ydHNEeW5hbWljTGlicmFyaWVzKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMKK19NVExfSU5M
SU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUmVuZGVyRHluYW1pY0xpYnJhcmllcygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc3VwcG9ydHNSZW5kZXJEeW5hbWljTGlicmFyaWVzKSk7Cit9CisKKy8v
IG1ldGhvZDogbmV3RHluYW1pY0xpYnJhcnk6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkR5bmFt
aWNMaWJyYXJ5KiBNVEw6OkRldmljZTo6bmV3RHluYW1pY0xpYnJhcnkoY29uc3QgTVRMOjpMaWJy
YXJ5KiBsaWJyYXJ5LCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkR5bmFtaWNMaWJyYXJ5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdEeW5hbWljTGlicmFyeV9lcnJvcl8pLCBsaWJyYXJ5LCBlcnJvcik7Cit9CisKKy8vIG1ldGhv
ZDogbmV3RHluYW1pY0xpYnJhcnlXaXRoVVJMOmVycm9yOgorX01UTF9JTkxJTkUgTVRMOjpEeW5h
bWljTGlicmFyeSogTVRMOjpEZXZpY2U6Om5ld0R5bmFtaWNMaWJyYXJ5KGNvbnN0IE5TOjpVUkwq
IHVybCwgTlM6OkVycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpEeW5hbWljTGlicmFyeSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RHluYW1p
Y0xpYnJhcnlXaXRoVVJMX2Vycm9yXyksIHVybCwgZXJyb3IpOworfQorCisvLyBtZXRob2Q6IG5l
d0JpbmFyeUFyY2hpdmVXaXRoRGVzY3JpcHRvcjplcnJvcjoKK19NVExfSU5MSU5FIE1UTDo6Qmlu
YXJ5QXJjaGl2ZSogTVRMOjpEZXZpY2U6Om5ld0JpbmFyeUFyY2hpdmUoY29uc3QgTVRMOjpCaW5h
cnlBcmNoaXZlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpCit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCaW5hcnlBcmNoaXZlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChuZXdCaW5hcnlBcmNoaXZlV2l0aERlc2NyaXB0b3JfZXJyb3JfKSwg
ZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydHNSYXl0cmFjaW5n
CitfTVRMX0lOTElORSBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0c1JheXRyYWNpbmcoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHN1cHBvcnRzUmF5dHJhY2luZykpOworfQorCisvLyBtZXRob2Q6IGFjY2Vs
ZXJhdGlvblN0cnVjdHVyZVNpemVzV2l0aERlc2NyaXB0b3I6CitfTVRMX0lOTElORSBNVEw6OkFj
Y2VsZXJhdGlvblN0cnVjdHVyZVNpemVzIE1UTDo6RGV2aWNlOjphY2NlbGVyYXRpb25TdHJ1Y3R1
cmVTaXplcyhjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVTaXplcz4odGhpcywgX01UTF9QUklWQVRFX1NFTChhY2NlbGVyYXRpb25TdHJ1
Y3R1cmVTaXplc1dpdGhEZXNjcmlwdG9yXyksIGRlc2NyaXB0b3IpOworfQorCisvLyBtZXRob2Q6
IG5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZVdpdGhTaXplOgorX01UTF9JTkxJTkUgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUqIE1UTDo6RGV2aWNlOjpuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmUo
TlM6OlVJbnRlZ2VyIHNpemUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0FjY2Vs
ZXJhdGlvblN0cnVjdHVyZVdpdGhTaXplXyksIHNpemUpOworfQorCisvLyBtZXRob2Q6IG5ld0Fj
Y2VsZXJhdGlvblN0cnVjdHVyZVdpdGhEZXNjcmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmUqIE1UTDo6RGV2aWNlOjpuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmUo
Y29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QWNjZWxlcmF0aW9uU3RydWN0
dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBY2NlbGVyYXRpb25TdHJ1Y3R1cmVXaXRo
RGVzY3JpcHRvcl8pLCBkZXNjcmlwdG9yKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzRnVu
Y3Rpb25Qb2ludGVycworX01UTF9JTkxJTkUgYm9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNGdW5j
dGlvblBvaW50ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNh
ZmU8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdXBwb3J0c0Z1bmN0aW9uUG9pbnRlcnMp
KTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVyc0Zyb21SZW5kZXIK
K19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzRnVuY3Rpb25Qb2ludGVyc0Zy
b21SZW5kZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxi
b29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVyc0Zyb21S
ZW5kZXIpKTsKK30KKworLy8gcHJvcGVydHk6IHN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5kZXIK
K19NVExfSU5MSU5FIGJvb2wgTVRMOjpEZXZpY2U6OnN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5k
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRzUmF5dHJhY2luZ0Zyb21SZW5kZXIpKTsKK30K
KworLy8gcHJvcGVydHk6IHN1cHBvcnRzUHJpbWl0aXZlTW90aW9uQmx1cgorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkRldmljZTo6c3VwcG9ydHNQcmltaXRpdmVNb3Rpb25CbHVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzdXBwb3J0c1ByaW1pdGl2ZU1vdGlvbkJsdXIpKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExEcmF3YWJsZS5ocHAgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHJhd2FibGUuaHBwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjczNDA5NzYwNDEzN2ZlMzBiZWU3MGIyZDE1NWQzMTdjNjJiYjk2OWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRHJhd2FibGUu
aHBwCkBAIC0wLDAgKzEsOTkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTERyYXdhYmxlLmhwcAorLy8KKy8vIENvcHlyaWdo
dCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRp
b25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMu
aHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVk
ZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxmdW5jdGlvbmFs
PgorCituYW1lc3BhY2UgTVRMCit7Cit1c2luZyBEcmF3YWJsZVByZXNlbnRlZEhhbmRsZXIgPSB2
b2lkICheKShjbGFzcyBEcmF3YWJsZSopOworCit1c2luZyBEcmF3YWJsZVByZXNlbnRlZEhhbmRs
ZXJGdW5jdGlvbiA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjbGFzcyBEcmF3YWJsZSopPjsKKworY2xh
c3MgRHJhd2FibGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPERyYXdhYmxlPgoreworcHVibGlj
OgorICAgIHZvaWQgICAgICAgICAgIGFkZFByZXNlbnRlZEhhbmRsZXIoY29uc3QgTVRMOjpEcmF3
YWJsZVByZXNlbnRlZEhhbmRsZXJGdW5jdGlvbiYgZnVuY3Rpb24pOworCisgICAgdm9pZCAgICAg
ICAgICAgcHJlc2VudCgpOworCisgICAgdm9pZCAgICAgICAgICAgcHJlc2VudEF0VGltZShDRlRp
bWVJbnRlcnZhbCBwcmVzZW50YXRpb25UaW1lKTsKKworICAgIHZvaWQgICAgICAgICAgIHByZXNl
bnRBZnRlck1pbmltdW1EdXJhdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbik7CisKKyAgICB2
b2lkICAgICAgICAgICBhZGRQcmVzZW50ZWRIYW5kbGVyKGNvbnN0IE1UTDo6RHJhd2FibGVQcmVz
ZW50ZWRIYW5kbGVyIGJsb2NrKTsKKworICAgIENGVGltZUludGVydmFsIHByZXNlbnRlZFRpbWUo
KSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgIGRyYXdhYmxlSUQoKSBjb25zdDsKK307CisK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkRyYXdhYmxlOjphZGRQcmVzZW50ZWRIYW5kbGVy
KGNvbnN0IE1UTDo6RHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyRnVuY3Rpb24mIGZ1bmN0aW9uKQor
eworICAgIF9fYmxvY2sgRHJhd2FibGVQcmVzZW50ZWRIYW5kbGVyRnVuY3Rpb24gYmxvY2tGdW5j
dGlvbiA9IGZ1bmN0aW9uOworCisgICAgYWRkUHJlc2VudGVkSGFuZGxlciheKERyYXdhYmxlKiBw
RHJhd2FibGUpIHsgYmxvY2tGdW5jdGlvbihwRHJhd2FibGUpOyB9KTsKK30KKworLy8gbWV0aG9k
OiBwcmVzZW50CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6OnByZXNlbnQoKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVz
ZW50KSk7Cit9CisKKy8vIG1ldGhvZDogcHJlc2VudEF0VGltZToKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpEcmF3YWJsZTo6cHJlc2VudEF0VGltZShDRlRpbWVJbnRlcnZhbCBwcmVzZW50YXRpb25U
aW1lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChwcmVzZW50QXRUaW1lXyksIHByZXNlbnRhdGlvblRpbWUpOworfQorCisvLyBtZXRob2Q6
IHByZXNlbnRBZnRlck1pbmltdW1EdXJhdGlvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEcmF3
YWJsZTo6cHJlc2VudEFmdGVyTWluaW11bUR1cmF0aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9u
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChwcmVzZW50QWZ0ZXJNaW5pbXVtRHVyYXRpb25fKSwgZHVyYXRpb24pOworfQorCisvLyBtZXRo
b2Q6IGFkZFByZXNlbnRlZEhhbmRsZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6RHJhd2FibGU6
OmFkZFByZXNlbnRlZEhhbmRsZXIoY29uc3QgTVRMOjpEcmF3YWJsZVByZXNlbnRlZEhhbmRsZXIg
YmxvY2spCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGFkZFByZXNlbnRlZEhhbmRsZXJfKSwgYmxvY2spOworfQorCisvLyBwcm9wZXJ0eTog
cHJlc2VudGVkVGltZQorX01UTF9JTkxJTkUgQ0ZUaW1lSW50ZXJ2YWwgTVRMOjpEcmF3YWJsZTo6
cHJlc2VudGVkVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
Q0ZUaW1lSW50ZXJ2YWw+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocHJlc2VudGVkVGltZSkpOwor
fQorCisvLyBwcm9wZXJ0eTogZHJhd2FibGVJRAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6RHJhd2FibGU6OmRyYXdhYmxlSUQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3YWJsZUlE
KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMRHluYW1pY0xpYnJhcnkuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTER5bmFtaWNMaWJyYXJ5LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODliOTk5MGQ1ZjZiZjE3OTQ3
MmViMWEzNDQyNjMzZDA5NDFkYjc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTER5bmFtaWNMaWJyYXJ5LmhwcApAQCAtMCwwICsxLDgy
IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisv
LyBNZXRhbC9NVExEeW5hbWljTGlicmFyeS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIx
IEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
Ly8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNs
dWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisj
aW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworbmFtZXNwYWNlIE1UTAorewor
X01UTF9FTlVNKE5TOjpVSW50ZWdlciwgRHluYW1pY0xpYnJhcnlFcnJvcikgeworICAgIER5bmFt
aWNMaWJyYXJ5RXJyb3JOb25lID0gMCwKKyAgICBEeW5hbWljTGlicmFyeUVycm9ySW52YWxpZEZp
bGUgPSAxLAorICAgIER5bmFtaWNMaWJyYXJ5RXJyb3JDb21waWxhdGlvbkZhaWx1cmUgPSAyLAor
ICAgIER5bmFtaWNMaWJyYXJ5RXJyb3JVbnJlc29sdmVkSW5zdGFsbE5hbWUgPSAzLAorICAgIER5
bmFtaWNMaWJyYXJ5RXJyb3JEZXBlbmRlbmN5TG9hZEZhaWx1cmUgPSA0LAorICAgIER5bmFtaWNM
aWJyYXJ5RXJyb3JVbnN1cHBvcnRlZCA9IDUsCit9OworCitjbGFzcyBEeW5hbWljTGlicmFyeSA6
IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RHluYW1pY0xpYnJhcnk+Cit7CitwdWJsaWM6CisgICAg
TlM6OlN0cmluZyogICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgc2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBj
b25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgaW5zdGFsbE5hbWUoKSBjb25zdDsKKworICAgIGJv
b2wgICAgICAgICAgc2VyaWFsaXplVG9VUkwoY29uc3QgTlM6OlVSTCogdXJsLCBOUzo6RXJyb3Iq
KiBlcnJvcik7Cit9OworCit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6
OlN0cmluZyogTVRMOjpEeW5hbWljTGlicmFyeTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpEeW5hbWljTGlicmFyeTo6c2V0
TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKwor
Ly8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpEZXZpY2UqIE1UTDo6RHluYW1p
Y0xpYnJhcnk6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQorCisv
LyBwcm9wZXJ0eTogaW5zdGFsbE5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RHlu
YW1pY0xpYnJhcnk6Omluc3RhbGxOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbnN0YWxsTmFt
ZSkpOworfQorCisvLyBtZXRob2Q6IHNlcmlhbGl6ZVRvVVJMOmVycm9yOgorX01UTF9JTkxJTkUg
Ym9vbCBNVEw6OkR5bmFtaWNMaWJyYXJ5OjpzZXJpYWxpemVUb1VSTChjb25zdCBOUzo6VVJMKiB1
cmwsIE5TOjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2VyaWFsaXplVG9VUkxfZXJyb3JfKSwgdXJs
LCBlcnJvcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMRXZlbnQuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEV2ZW50LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTlmYWMyMzUxOGY4NmE1MWU0MjBhNDk4NDY3NjRj
NWUwZGY1OGVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTEV2ZW50LmhwcApAQCAtMCwwICsxLDE2MyBAQAorLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRXZlbnQuaHBw
CisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisv
LyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8v
CisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLwor
Ly8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNp
bmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5ocHA+CisKKyNpbmNsdWRlICJNVExFdmVudC5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2Ns
YXNzIEV2ZW50IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxFdmVudD4KK3sKK3B1YmxpYzoKKyAg
ICBjbGFzcyBEZXZpY2UqIGRldmljZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICBsYWJl
bCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyog
bGFiZWwpOworfTsKKworY2xhc3MgU2hhcmVkRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBOUzo6UmVm
ZXJlbmNpbmc8U2hhcmVkRXZlbnRMaXN0ZW5lcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xh
c3MgU2hhcmVkRXZlbnRMaXN0ZW5lciogYWxsb2MoKTsKKworICAgIE1UTDo6U2hhcmVkRXZlbnRM
aXN0ZW5lciogICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIq
ICAgICAgICAgaW5pdChjb25zdCBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUpOworCisg
ICAgZGlzcGF0Y2hfcXVldWVfdCAgICAgICAgICAgICAgICAgIGRpc3BhdGNoUXVldWUoKSBjb25z
dDsKK307CisKK3VzaW5nIFNoYXJlZEV2ZW50Tm90aWZpY2F0aW9uQmxvY2sgPSB2b2lkICheKShT
aGFyZWRFdmVudCogcEV2ZW50LCBzdGQ6OnVpbnQ2NF90IHZhbHVlKTsKKworY2xhc3MgU2hhcmVk
RXZlbnQgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFNoYXJlZEV2ZW50LCBFdmVudD4KK3sKK3B1
YmxpYzoKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgbm90aWZ5TGlzdGVuZXIoY29uc3Qg
Y2xhc3MgU2hhcmVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIHVpbnQ2NF90IHZhbHVlLCBjb25z
dCBNVEw6OlNoYXJlZEV2ZW50Tm90aWZpY2F0aW9uQmxvY2sgYmxvY2spOworCisgICAgY2xhc3Mg
U2hhcmVkRXZlbnRIYW5kbGUqIG5ld1NoYXJlZEV2ZW50SGFuZGxlKCk7CisKKyAgICB1aW50NjRf
dCAgICAgICAgICAgICAgICAgc2lnbmFsZWRWYWx1ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICBzZXRTaWduYWxlZFZhbHVlKHVpbnQ2NF90IHNpZ25hbGVkVmFsdWUpOwor
fTsKKworY2xhc3MgU2hhcmVkRXZlbnRIYW5kbGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFNo
YXJlZEV2ZW50SGFuZGxlPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTaGFyZWRFdmVu
dEhhbmRsZSogYWxsb2MoKTsKKworICAgIGNsYXNzIFNoYXJlZEV2ZW50SGFuZGxlKiAgICAgICAg
aW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNv
bnN0OworfTsKKworc3RydWN0IFNoYXJlZEV2ZW50SGFuZGxlUHJpdmF0ZQoreworfSBfTVRMX1BB
Q0tFRDsKKworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmlj
ZSogTVRMOjpFdmVudDo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9
CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpFdmVu
dDo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpT
dHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpFdmVudDo6c2V0TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExh
YmVsXyksIGxhYmVsKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lciogTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyOjphbGxv
YygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6U2hhcmVkRXZlbnRMaXN0
ZW5lcj4oX01UTF9QUklWQVRFX0NMUyhNVExTaGFyZWRFdmVudExpc3RlbmVyKSk7Cit9CisKKy8v
IG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTaGFyZWRFdmVudExpc3RlbmVyKiBNVEw6
OlNoYXJlZEV2ZW50TGlzdGVuZXI6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lcj4oKTsKK30KKworLy8gbWV0aG9kOiBpbml0V2l0
aERpc3BhdGNoUXVldWU6CitfTVRMX0lOTElORSBNVEw6OlNoYXJlZEV2ZW50TGlzdGVuZXIqIE1U
TDo6U2hhcmVkRXZlbnRMaXN0ZW5lcjo6aW5pdChjb25zdCBkaXNwYXRjaF9xdWV1ZV90IGRpc3Bh
dGNoUXVldWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaGFyZWRF
dmVudExpc3RlbmVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbml0V2l0aERpc3BhdGNoUXVl
dWVfKSwgZGlzcGF0Y2hRdWV1ZSk7Cit9CisKKy8vIHByb3BlcnR5OiBkaXNwYXRjaFF1ZXVlCitf
TVRMX0lOTElORSBkaXNwYXRjaF9xdWV1ZV90IE1UTDo6U2hhcmVkRXZlbnRMaXN0ZW5lcjo6ZGlz
cGF0Y2hRdWV1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZGlz
cGF0Y2hfcXVldWVfdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkaXNwYXRjaFF1ZXVlKSk7Cit9
CisKKy8vIG1ldGhvZDogbm90aWZ5TGlzdGVuZXI6YXRWYWx1ZTpibG9jazoKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpTaGFyZWRFdmVudDo6bm90aWZ5TGlzdGVuZXIoY29uc3QgTVRMOjpTaGFyZWRF
dmVudExpc3RlbmVyKiBsaXN0ZW5lciwgdWludDY0X3QgdmFsdWUsIGNvbnN0IE1UTDo6U2hhcmVk
RXZlbnROb3RpZmljYXRpb25CbG9jayBibG9jaykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobm90aWZ5TGlzdGVuZXJfYXRWYWx1ZV9ibG9j
a18pLCBsaXN0ZW5lciwgdmFsdWUsIGJsb2NrKTsKK30KKworLy8gbWV0aG9kOiBuZXdTaGFyZWRF
dmVudEhhbmRsZQorX01UTF9JTkxJTkUgTVRMOjpTaGFyZWRFdmVudEhhbmRsZSogTVRMOjpTaGFy
ZWRFdmVudDo6bmV3U2hhcmVkRXZlbnRIYW5kbGUoKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6U2hhcmVkRXZlbnRIYW5kbGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG5ld1NoYXJlZEV2ZW50SGFuZGxlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzaWduYWxlZFZhbHVl
CitfTVRMX0lOTElORSB1aW50NjRfdCBNVEw6OlNoYXJlZEV2ZW50OjpzaWduYWxlZFZhbHVlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTx1aW50NjRfdD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzaWduYWxlZFZhbHVlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpTaGFyZWRFdmVudDo6c2V0U2lnbmFsZWRWYWx1ZSh1aW50NjRfdCBzaWduYWxlZFZhbHVl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTaWduYWxlZFZhbHVlXyksIHNpZ25hbGVkVmFsdWUpOworfQorCisvLyBzdGF0aWMgbWV0
aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpTaGFyZWRFdmVudEhhbmRsZSogTVRMOjpTaGFy
ZWRFdmVudEhhbmRsZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxN
VEw6OlNoYXJlZEV2ZW50SGFuZGxlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFNoYXJlZEV2ZW50SGFu
ZGxlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpTaGFyZWRFdmVu
dEhhbmRsZSogTVRMOjpTaGFyZWRFdmVudEhhbmRsZTo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmluaXQ8TVRMOjpTaGFyZWRFdmVudEhhbmRsZT4oKTsKK30KKworLy8gcHJvcGVy
dHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlNoYXJlZEV2ZW50SGFuZGxl
OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0
cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGZW5jZS5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRmVuY2UuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJj
NmU5MzE0ZTUzOTM1ZDI0MTY2MTllY2IwMzAwMzYwOGY0YzhmNWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRmVuY2UuaHBwCkBAIC0w
LDAgKzEsNTcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8KKy8vIE1ldGFsL01UTEZlbmNlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1
ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1lc3BhY2UgTVRMCit7Citj
bGFzcyBGZW5jZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RmVuY2U+Cit7CitwdWJsaWM6Cisg
ICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpTdHJpbmcqICAgbGFi
ZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcq
IGxhYmVsKTsKK307CisKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRM
OjpEZXZpY2UqIE1UTDo6RmVuY2U6OmRldmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2UqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmlj
ZSkpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6RmVuY2U6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCitfTVRM
X0lOTElORSB2b2lkIE1UTDo6RmVuY2U6OnNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVs
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcy5o
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTYwODU1NGVjNDYyYjdhNTRiMjdlN2ZkYjIzMzMzYzc2MDFhMzMxYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExGdW5jdGlvbkNvbnN0YW50VmFsdWVzLmhwcApAQCAtMCwwICsxLDg1IEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExGdW5j
dGlvbkNvbnN0YW50VmFsdWVzLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUg
SW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1U
TEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRl
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMQXJndW1lbnQuaHBw
IgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBGdW5jdGlvbkNvbnN0YW50VmFsdWVzIDogcHVi
bGljIE5TOjpDb3B5aW5nPEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM+Cit7CitwdWJsaWM6CisgICAg
c3RhdGljIGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIGFsbG9jKCk7CisKKyAgICBjbGFz
cyBGdW5jdGlvbkNvbnN0YW50VmFsdWVzKiAgICAgICAgaW5pdCgpOworCisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50VmFsdWUoY29uc3Qgdm9pZCog
dmFsdWUsIE1UTDo6RGF0YVR5cGUgdHlwZSwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudFZhbHVlcyhjb25z
dCB2b2lkKiB2YWx1ZXMsIE1UTDo6RGF0YVR5cGUgdHlwZSwgTlM6OlJhbmdlIHJhbmdlKTsKKwor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudFZhbHVl
KGNvbnN0IHZvaWQqIHZhbHVlLCBNVEw6OkRhdGFUeXBlIHR5cGUsIGNvbnN0IE5TOjpTdHJpbmcq
IG5hbWUpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0
KCk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6
OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMqIE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlczo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9uQ29uc3Rh
bnRWYWx1ZXM+KF9NVExfUFJJVkFURV9DTFMoTVRMRnVuY3Rpb25Db25zdGFudFZhbHVlcykpOwor
fQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25Db25zdGFudFZh
bHVlcyogTVRMOjpGdW5jdGlvbkNvbnN0YW50VmFsdWVzOjppbml0KCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6aW5pdDxNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM+KCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0Q29uc3RhbnRWYWx1ZTp0eXBlOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlczo6c2V0Q29uc3RhbnRWYWx1ZShjb25zdCB2b2lk
KiB2YWx1ZSwgTVRMOjpEYXRhVHlwZSB0eXBlLCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0
YW50VmFsdWVfdHlwZV9hdEluZGV4XyksIHZhbHVlLCB0eXBlLCBpbmRleCk7Cit9CisKKy8vIG1l
dGhvZDogc2V0Q29uc3RhbnRWYWx1ZXM6dHlwZTp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlczo6c2V0Q29uc3RhbnRWYWx1ZXMoY29uc3Qgdm9p
ZCogdmFsdWVzLCBNVEw6OkRhdGFUeXBlIHR5cGUsIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29uc3Rh
bnRWYWx1ZXNfdHlwZV93aXRoUmFuZ2VfKSwgdmFsdWVzLCB0eXBlLCByYW5nZSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0Q29uc3RhbnRWYWx1ZTp0eXBlOndpdGhOYW1lOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXM6OnNldENvbnN0YW50VmFsdWUoY29uc3Qgdm9p
ZCogdmFsdWUsIE1UTDo6RGF0YVR5cGUgdHlwZSwgY29uc3QgTlM6OlN0cmluZyogbmFtZSkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
Q29uc3RhbnRWYWx1ZV90eXBlX3dpdGhOYW1lXyksIHZhbHVlLCB0eXBlLCBuYW1lKTsKK30KKwor
Ly8gbWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uQ29uc3RhbnRW
YWx1ZXM6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uRGVzY3JpcHRvci5ocHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTZmMDBkNjc4MzRiZGJiMzk4NjhlNTRmOTNmZjkzYWU1NmFhZWUyNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5j
dGlvbkRlc2NyaXB0b3IuaHBwCkBAIC0wLDAgKzEsMTU2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExGdW5jdGlvbkRlc2Ny
aXB0b3IuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8g
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
Ly8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdl
LmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwIgor
CituYW1lc3BhY2UgTVRMCit7CitfTVRMX09QVElPTlMoTlM6OlVJbnRlZ2VyLCBGdW5jdGlvbk9w
dGlvbnMpIHsKKyAgICBGdW5jdGlvbk9wdGlvbk5vbmUgPSAwLAorICAgIEZ1bmN0aW9uT3B0aW9u
Q29tcGlsZVRvQmluYXJ5ID0gMSwKK307CisKK2NsYXNzIEZ1bmN0aW9uRGVzY3JpcHRvciA6IHB1
YmxpYyBOUzo6Q29weWluZzxGdW5jdGlvbkRlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNsYXNzIEZ1bmN0aW9uRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIEZ1bmN0
aW9uRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlv
bkRlc2NyaXB0b3IqIGZ1bmN0aW9uRGVzY3JpcHRvcigpOworCisgICAgTlM6OlN0cmluZyogICAg
ICAgICAgICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE5hbWUoY29uc3QgTlM6OlN0cmluZyogbmFtZSk7CisKKyAgICBOUzo6
U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsaXplZE5hbWUoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTcGVjaWFsaXplZE5hbWUoY29u
c3QgTlM6OlN0cmluZyogc3BlY2lhbGl6ZWROYW1lKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uQ29u
c3RhbnRWYWx1ZXMqICAgIGNvbnN0YW50VmFsdWVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnRWYWx1ZXMoY29uc3QgY2xhc3MgRnVuY3Rp
b25Db25zdGFudFZhbHVlcyogY29uc3RhbnRWYWx1ZXMpOworCisgICAgTVRMOjpGdW5jdGlvbk9w
dGlvbnMgICAgICAgICAgICAgb3B0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldE9wdGlvbnMoTVRMOjpGdW5jdGlvbk9wdGlvbnMgb3B0aW9ucyk7
CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlBcmNoaXZlcygp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpbmFyeUFy
Y2hpdmVzKGNvbnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMpOworfTsKKworY2xhc3MgSW50
ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEludGVyc2Vj
dGlvbkZ1bmN0aW9uRGVzY3JpcHRvciwgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I+Cit7CitwdWJs
aWM6CisgICAgc3RhdGljIGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogYWxs
b2MoKTsKKworICAgIGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogICAgICAg
IGluaXQoKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yKiBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcjo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9uRGVzY3JpcHRv
cj4oX01UTF9QUklWQVRFX0NMUyhNVExGdW5jdGlvbkRlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0
aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvciogTVRMOjpGdW5j
dGlvbkRlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1U
TDo6RnVuY3Rpb25EZXNjcmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBmdW5jdGlv
bkRlc2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yKiBNVEw6OkZ1
bmN0aW9uRGVzY3JpcHRvcjo6ZnVuY3Rpb25EZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9D
TFMoTVRMRnVuY3Rpb25EZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkRlc2Ny
aXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcq
IE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9yOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuYW1l
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OnNldE5h
bWUoY29uc3QgTlM6OlN0cmluZyogbmFtZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TmFtZV8pLCBuYW1lKTsKK30KKworLy8gcHJv
cGVydHk6IHNwZWNpYWxpemVkTmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5j
dGlvbkRlc2NyaXB0b3I6OnNwZWNpYWxpemVkTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3Bl
Y2lhbGl6ZWROYW1lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkRlc2Ny
aXB0b3I6OnNldFNwZWNpYWxpemVkTmFtZShjb25zdCBOUzo6U3RyaW5nKiBzcGVjaWFsaXplZE5h
bWUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFNwZWNpYWxpemVkTmFtZV8pLCBzcGVjaWFsaXplZE5hbWUpOworfQorCisvLyBwcm9w
ZXJ0eTogY29uc3RhbnRWYWx1ZXMKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25Db25zdGFudFZh
bHVlcyogTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OmNvbnN0YW50VmFsdWVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uQ29uc3RhbnRWYWx1
ZXMqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbnN0YW50VmFsdWVzKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OnNldENvbnN0YW50VmFsdWVzKGNv
bnN0IE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlcyogY29uc3RhbnRWYWx1ZXMpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENvbnN0
YW50VmFsdWVzXyksIGNvbnN0YW50VmFsdWVzKTsKK30KKworLy8gcHJvcGVydHk6IG9wdGlvbnMK
K19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25PcHRpb25zIE1UTDo6RnVuY3Rpb25EZXNjcmlwdG9y
OjpvcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkZ1bmN0aW9uT3B0aW9ucz4odGhpcywgX01UTF9QUklWQVRFX1NFTChvcHRpb25zKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvbkRlc2NyaXB0b3I6OnNldE9wdGlvbnMoTVRM
OjpGdW5jdGlvbk9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3B0aW9uc18pLCBvcHRpb25zKTsKK30KKwor
Ly8gcHJvcGVydHk6IGJpbmFyeUFyY2hpdmVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6
RnVuY3Rpb25EZXNjcmlwdG9yOjpiaW5hcnlBcmNoaXZlcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChi
aW5hcnlBcmNoaXZlcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25EZXNj
cmlwdG9yOjpzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hpdmVz
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRCaW5hcnlBcmNoaXZlc18pLCBiaW5hcnlBcmNoaXZlcyk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3Jp
cHRvciogTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAg
ICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2Ny
aXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9y
KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpJbnRlcnNlY3Rpb25G
dW5jdGlvbkRlc2NyaXB0b3IqIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yOjpp
bml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uRGVzY3JpcHRvcj4oKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvbkhhbmRsZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0
ZjM4NTE0MzdjNzFlODBkYTk4N2VlY2U5OGJkMWE4MDhjM2UyZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25IYW5kbGUu
aHBwCkBAIC0wLDAgKzEsNjEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTEZ1bmN0aW9uSGFuZGxlLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMTGlicmFyeS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIEZ1bmN0
aW9uSGFuZGxlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvbkhhbmRsZT4KK3sKK3B1
YmxpYzoKKyAgICBNVEw6OkZ1bmN0aW9uVHlwZSBmdW5jdGlvblR5cGUoKSBjb25zdDsKKworICAg
IE5TOjpTdHJpbmcqICAgICAgIG5hbWUoKSBjb25zdDsKKworICAgIGNsYXNzIERldmljZSogICAg
IGRldmljZSgpIGNvbnN0OworfTsKKworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25UeXBlCitf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uVHlwZSBNVEw6OkZ1bmN0aW9uSGFuZGxlOjpmdW5jdGlv
blR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVu
Y3Rpb25UeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uVHlwZSkpOworfQorCisv
LyBwcm9wZXJ0eTogbmFtZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5jdGlvbkhh
bmRsZTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6
OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBwcm9wZXJ0
eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpGdW5jdGlvbkhhbmRsZTo6
ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRl
dmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25Mb2cuaHBwIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1bmN0aW9uTG9nLmhwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYTM4ZGM5ZGFiZDYxZWFiYmVmZTBlNGJkYzM1ZTI5M2UyNzA4MTU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTEZ1
bmN0aW9uTG9nLmhwcApAQCAtMCwwICsxLDExNCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMRnVuY3Rpb25Mb2cuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNs
dWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
cHA+CisKKyNpbmNsdWRlICJNVExGdW5jdGlvbkxvZy5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sK
K19NVExfRU5VTShOUzo6VUludGVnZXIsIEZ1bmN0aW9uTG9nVHlwZSkgeworICAgIEZ1bmN0aW9u
TG9nVHlwZVZhbGlkYXRpb24gPSAwLAorfTsKKworY2xhc3MgTG9nQ29udGFpbmVyIDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxMb2dDb250YWluZXIsIE5TOjpGYXN0RW51bWVyYXRpb24+Cit7Citw
dWJsaWM6Cit9OworCitjbGFzcyBGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24gOiBwdWJsaWMgTlM6
OlJlZmVyZW5jaW5nPEZ1bmN0aW9uTG9nRGVidWdMb2NhdGlvbj4KK3sKK3B1YmxpYzoKKyAgICBO
Uzo6U3RyaW5nKiAgZnVuY3Rpb25OYW1lKCkgY29uc3Q7CisKKyAgICBOUzo6VVJMKiAgICAgVVJM
KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgbGluZSgpIGNvbnN0OworCisgICAgTlM6OlVJ
bnRlZ2VyIGNvbHVtbigpIGNvbnN0OworfTsKKworY2xhc3MgRnVuY3Rpb25Mb2cgOiBwdWJsaWMg
TlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uTG9nPgoreworcHVibGljOgorICAgIE1UTDo6RnVuY3Rp
b25Mb2dUeXBlICAgICAgICAgICAgdHlwZSgpIGNvbnN0OworCisgICAgTlM6OlN0cmluZyogICAg
ICAgICAgICAgICAgICAgICBlbmNvZGVyTGFiZWwoKSBjb25zdDsKKworICAgIGNsYXNzIEZ1bmN0
aW9uKiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSBjb25zdDsKKworICAgIGNsYXNzIEZ1bmN0
aW9uTG9nRGVidWdMb2NhdGlvbiogZGVidWdMb2NhdGlvbigpIGNvbnN0OworfTsKKworfQorCisv
LyBwcm9wZXJ0eTogZnVuY3Rpb25OYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1
bmN0aW9uTG9nRGVidWdMb2NhdGlvbjo6ZnVuY3Rpb25OYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChmdW5jdGlvbk5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IFVSTAorX01UTF9JTkxJTkUgTlM6
OlVSTCogTVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb246OlVSTCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVSTCo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoVVJMKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsaW5lCitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb246OmxpbmUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChsaW5lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb2x1bW4KK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OkZ1bmN0aW9uTG9nRGVidWdMb2NhdGlvbjo6Y29sdW1uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoY29sdW1uKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0eXBlCitfTVRMX0lOTElO
RSBNVEw6OkZ1bmN0aW9uTG9nVHlwZSBNVEw6OkZ1bmN0aW9uTG9nOjp0eXBlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uTG9nVHlwZT4odGhp
cywgX01UTF9QUklWQVRFX1NFTCh0eXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmNvZGVyTGFi
ZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb25Mb2c6OmVuY29kZXJMYWJl
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZW5jb2RlckxhYmVsKSk7Cit9CisKKy8vIHByb3BlcnR5
OiBmdW5jdGlvbgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpGdW5jdGlvbkxvZzo6
ZnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBkZWJ1Z0xvY2F0aW9uCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uTG9nRGVidWdM
b2NhdGlvbiogTVRMOjpGdW5jdGlvbkxvZzo6ZGVidWdMb2NhdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbkxvZ0RlYnVnTG9jYXRpb24q
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlYnVnTG9jYXRpb24pKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExGdW5jdGlvblN0aXRjaGlu
Zy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMRnVuY3Rpb25T
dGl0Y2hpbmcuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZGNiNDk2Y2VkNmJkN2EzMmI1MTZjMmIyZjM1NjVj
NzliNjFkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1j
cHAvTWV0YWwvTVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwCkBAIC0wLDAgKzEsMzA1IEBACisvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9N
VExGdW5jdGlvblN0aXRjaGluZy5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVk
ZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEZ1bmN0aW9uU3Rp
dGNoaW5nLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdB
dHRyaWJ1dGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmli
dXRlPgoreworfTsKKworY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdheXNJbmxp
bmUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3
YXlzSW5saW5lLCBGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZT4KK3sKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdheXNJbmxpbmUqIGFsbG9j
KCk7CisKKyAgICBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZSog
ICAgICAgIGluaXQoKTsKK307CisKK2NsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nTm9kZSA6IHB1Ymxp
YyBOUzo6Q29weWluZzxGdW5jdGlvblN0aXRjaGluZ05vZGU+Cit7Cit9OworCitjbGFzcyBGdW5j
dGlvblN0aXRjaGluZ0lucHV0Tm9kZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25T
dGl0Y2hpbmdJbnB1dE5vZGUsIEZ1bmN0aW9uU3RpdGNoaW5nTm9kZT4KK3sKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUqIGFsbG9jKCk7CisKKyAg
ICBjbGFzcyBGdW5jdGlvblN0aXRjaGluZ0lucHV0Tm9kZSogICAgICAgIGluaXQoKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRJbmRleCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
QXJndW1lbnRJbmRleChOUzo6VUludGVnZXIgYXJndW1lbnRJbmRleCk7CisKKyAgICBNVEw6OkZ1
bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlKiAgICAgICAgIGluaXQoTlM6OlVJbnRlZ2VyIGFyZ3Vt
ZW50KTsKK307CisKK2NsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlIDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSwgRnVuY3Rpb25T
dGl0Y2hpbmdOb2RlPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBGdW5jdGlvblN0aXRj
aGluZ0Z1bmN0aW9uTm9kZSogYWxsb2MoKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5n
RnVuY3Rpb25Ob2RlKiAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5h
bWUpOworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudHMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEFyZ3VtZW50cyhjb25zdCBOUzo6QXJyYXkqIGFyZ3VtZW50cyk7CisKKyAg
ICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xEZXBl
bmRlbmNpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldENvbnRyb2xEZXBlbmRlbmNpZXMoY29uc3QgTlM6OkFycmF5KiBjb250cm9s
RGVwZW5kZW5jaWVzKTsKKworICAgIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUq
ICAgICAgICAgaW5pdChjb25zdCBOUzo6U3RyaW5nKiBuYW1lLCBjb25zdCBOUzo6QXJyYXkqIGFy
Z3VtZW50cywgY29uc3QgTlM6OkFycmF5KiBjb250cm9sRGVwZW5kZW5jaWVzKTsKK307CisKK2Ns
YXNzIEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGggOiBwdWJsaWMgTlM6OkNvcHlpbmc8RnVuY3Rpb25T
dGl0Y2hpbmdHcmFwaD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25TdGl0
Y2hpbmdHcmFwaCogYWxsb2MoKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgq
ICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEZ1bmN0aW9uTmFtZShjb25zdCBOUzo6U3RyaW5nKiBmdW5jdGlvbk5hbWUp
OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE5vZGVzKGNv
bnN0IE5TOjpBcnJheSogbm9kZXMpOworCisgICAgY2xhc3MgRnVuY3Rpb25TdGl0Y2hpbmdGdW5j
dGlvbk5vZGUqIG91dHB1dE5vZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0T3V0cHV0Tm9kZShjb25zdCBjbGFzcyBGdW5jdGlvblN0aXRjaGlu
Z0Z1bmN0aW9uTm9kZSogb3V0cHV0Tm9kZSk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlcygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGVzKGNvbnN0IE5TOjpBcnJheSogYXR0cmli
dXRlcyk7CisKKyAgICBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgqICAgICAgICAgaW5pdChj
b25zdCBOUzo6U3RyaW5nKiBmdW5jdGlvbk5hbWUsIGNvbnN0IE5TOjpBcnJheSogbm9kZXMsIGNv
bnN0IGNsYXNzIEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBvdXRwdXROb2RlLCBjb25z
dCBOUzo6QXJyYXkqIGF0dHJpYnV0ZXMpOworfTsKKworY2xhc3MgU3RpdGNoZWRMaWJyYXJ5RGVz
Y3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgU3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvciogICAgICAgIGlu
aXQoKTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbkdyYXBocygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRGdW5jdGlvbkdyYXBocyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9uR3JhcGhz
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0RnVuY3Rpb25zKGNvbnN0IE5TOjpBcnJheSogZnVuY3Rpb25zKTsKK307CisKK30KKworLy8g
c3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdB
dHRyaWJ1dGVBbHdheXNJbmxpbmUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdh
eXNJbmxpbmU6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpG
dW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZT4oX01UTF9QUklWQVRFX0NMUyhN
VExGdW5jdGlvblN0aXRjaGluZ0F0dHJpYnV0ZUFsd2F5c0lubGluZSkpOworfQorCisvLyBtZXRo
b2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdh
eXNJbmxpbmUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdBdHRyaWJ1dGVBbHdheXNJbmxpbmU6Omlu
aXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RnVuY3Rpb25TdGl0Y2hp
bmdBdHRyaWJ1dGVBbHdheXNJbmxpbmU+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9j
CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlKiBNVEw6OkZ1bmN0
aW9uU3RpdGNoaW5nSW5wdXROb2RlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGU+KF9NVExfUFJJVkFURV9DTFMo
TVRMRnVuY3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlKiBNVEw6OkZ1bmN0aW9u
U3RpdGNoaW5nSW5wdXROb2RlOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5p
dDxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlPigpOworfQorCisvLyBwcm9wZXJ0eTog
YXJndW1lbnRJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdJbnB1dE5vZGU6OmFyZ3VtZW50SW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhcmd1
bWVudEluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvblN0aXRjaGlu
Z0lucHV0Tm9kZTo6c2V0QXJndW1lbnRJbmRleChOUzo6VUludGVnZXIgYXJndW1lbnRJbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0QXJndW1lbnRJbmRleF8pLCBhcmd1bWVudEluZGV4KTsKK30KKworLy8gbWV0aG9kOiBpbml0
V2l0aEFyZ3VtZW50SW5kZXg6CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5w
dXROb2RlKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nSW5wdXROb2RlOjppbml0KE5TOjpVSW50ZWdl
ciBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0
aW9uU3RpdGNoaW5nSW5wdXROb2RlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbml0V2l0aEFy
Z3VtZW50SW5kZXhfKSwgYXJndW1lbnQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSogTVRMOjpGdW5j
dGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0OjphbGxvYzxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlPihfTVRMX1BSSVZB
VEVfQ0xTKE1UTEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKSk7Cit9CisKKy8vIG1ldGhv
ZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSog
TVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZT4oKTsK
K30KKworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5h
bWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rp
b25Ob2RlOjpzZXROYW1lKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE5hbWVfKSwgbmFtZSk7
Cit9CisKKy8vIHByb3BlcnR5OiBhcmd1bWVudHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRM
OjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZTo6YXJndW1lbnRzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGFyZ3VtZW50cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25T
dGl0Y2hpbmdGdW5jdGlvbk5vZGU6OnNldEFyZ3VtZW50cyhjb25zdCBOUzo6QXJyYXkqIGFyZ3Vt
ZW50cykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0QXJndW1lbnRzXyksIGFyZ3VtZW50cyk7Cit9CisKKy8vIHByb3BlcnR5OiBjb250
cm9sRGVwZW5kZW5jaWVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdGdW5jdGlvbk5vZGU6OmNvbnRyb2xEZXBlbmRlbmNpZXMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoY29udHJvbERlcGVuZGVuY2llcykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU6OnNldENvbnRyb2xEZXBlbmRlbmNpZXMoY29uc3Qg
TlM6OkFycmF5KiBjb250cm9sRGVwZW5kZW5jaWVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDb250cm9sRGVwZW5kZW5jaWVzXyks
IGNvbnRyb2xEZXBlbmRlbmNpZXMpOworfQorCisvLyBtZXRob2Q6IGluaXRXaXRoTmFtZTphcmd1
bWVudHM6Y29udHJvbERlcGVuZGVuY2llczoKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdGdW5jdGlvbk5vZGUqIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGU6Omlu
aXQoY29uc3QgTlM6OlN0cmluZyogbmFtZSwgY29uc3QgTlM6OkFycmF5KiBhcmd1bWVudHMsIGNv
bnN0IE5TOjpBcnJheSogY29udHJvbERlcGVuZGVuY2llcykKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChpbml0V2l0aE5hbWVfYXJndW1lbnRzX2NvbnRyb2xEZXBlbmRlbmNp
ZXNfKSwgbmFtZSwgYXJndW1lbnRzLCBjb250cm9sRGVwZW5kZW5jaWVzKTsKK30KKworLy8gc3Rh
dGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFw
aCogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaD4oX01UTF9QUklWQVRF
X0NMUyhNVExGdW5jdGlvblN0aXRjaGluZ0dyYXBoKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAor
X01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoKiBNVEw6OkZ1bmN0aW9uU3Rp
dGNoaW5nR3JhcGg6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaD4oKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uTmFt
ZQorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjpm
dW5jdGlvbk5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uTmFtZSkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6RnVuY3Rpb25TdGl0Y2hpbmdHcmFwaDo6c2V0RnVuY3Rpb25O
YW1lKGNvbnN0IE5TOjpTdHJpbmcqIGZ1bmN0aW9uTmFtZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnVuY3Rpb25OYW1lXyksIGZ1
bmN0aW9uTmFtZSk7Cit9CisKKy8vIHByb3BlcnR5OiBub2RlcworX01UTF9JTkxJTkUgTlM6OkFy
cmF5KiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg6Om5vZGVzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKG5vZGVzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpGdW5jdGlvblN0aXRjaGlu
Z0dyYXBoOjpzZXROb2Rlcyhjb25zdCBOUzo6QXJyYXkqIG5vZGVzKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXROb2Rlc18pLCBub2Rl
cyk7Cit9CisKKy8vIHByb3BlcnR5OiBvdXRwdXROb2RlCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0
aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKiBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg6Om91
dHB1dE5vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
RnVuY3Rpb25TdGl0Y2hpbmdGdW5jdGlvbk5vZGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG91
dHB1dE5vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5n
R3JhcGg6OnNldE91dHB1dE5vZGUoY29uc3QgTVRMOjpGdW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9u
Tm9kZSogb3V0cHV0Tm9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0T3V0cHV0Tm9kZV8pLCBvdXRwdXROb2RlKTsKK30KKworLy8g
cHJvcGVydHk6IGF0dHJpYnV0ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpGdW5jdGlv
blN0aXRjaGluZ0dyYXBoOjphdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0
ZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9uU3RpdGNoaW5nR3JhcGg6
OnNldEF0dHJpYnV0ZXMoY29uc3QgTlM6OkFycmF5KiBhdHRyaWJ1dGVzKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRBdHRyaWJ1dGVz
XyksIGF0dHJpYnV0ZXMpOworfQorCisvLyBtZXRob2Q6IGluaXRXaXRoRnVuY3Rpb25OYW1lOm5v
ZGVzOm91dHB1dE5vZGU6YXR0cmlidXRlczoKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25TdGl0
Y2hpbmdHcmFwaCogTVRMOjpGdW5jdGlvblN0aXRjaGluZ0dyYXBoOjppbml0KGNvbnN0IE5TOjpT
dHJpbmcqIGZ1bmN0aW9uTmFtZSwgY29uc3QgTlM6OkFycmF5KiBub2RlcywgY29uc3QgTVRMOjpG
dW5jdGlvblN0aXRjaGluZ0Z1bmN0aW9uTm9kZSogb3V0cHV0Tm9kZSwgY29uc3QgTlM6OkFycmF5
KiBhdHRyaWJ1dGVzKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVu
Y3Rpb25TdGl0Y2hpbmdHcmFwaCo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5pdFdpdGhGdW5j
dGlvbk5hbWVfbm9kZXNfb3V0cHV0Tm9kZV9hdHRyaWJ1dGVzXyksIGZ1bmN0aW9uTmFtZSwgbm9k
ZXMsIG91dHB1dE5vZGUsIGF0dHJpYnV0ZXMpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxv
YworX01UTF9JTkxJTkUgTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yKiBNVEw6OlN0aXRj
aGVkTGlicmFyeURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
YWxsb2M8TVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OlN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IqIE1UTDo6U3RpdGNoZWRMaWJy
YXJ5RGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpTdGl0Y2hlZExpYnJhcnlEZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rp
b25HcmFwaHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpTdGl0Y2hlZExpYnJhcnlEZXNj
cmlwdG9yOjpmdW5jdGlvbkdyYXBocygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkdyYXBo
cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRv
cjo6c2V0RnVuY3Rpb25HcmFwaHMoY29uc3QgTlM6OkFycmF5KiBmdW5jdGlvbkdyYXBocykKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
RnVuY3Rpb25HcmFwaHNfKSwgZnVuY3Rpb25HcmFwaHMpOworfQorCisvLyBwcm9wZXJ0eTogZnVu
Y3Rpb25zCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3Jp
cHRvcjo6ZnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9ucykpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6U3RpdGNoZWRMaWJyYXJ5RGVzY3JpcHRvcjo6c2V0RnVuY3Rp
b25zKGNvbnN0IE5TOjpBcnJheSogZnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGdW5jdGlvbnNfKSwgZnVuY3Rpb25z
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExIZWFkZXJCcmlkZ2UuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFs
L01UTEhlYWRlckJyaWRnZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODEwMDg1ZGRhNTdiNDFlMzk0MDgzMzgy
YzBiOTkwMmNjNTEzNGUzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L21ldGFsLWNwcC9NZXRhbC9NVExIZWFkZXJCcmlkZ2UuaHBwCkBAIC0wLDAgKzEsMjA0NyBAQAor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0
YWwvTVRMSGVhZGVyQnJpZGdlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUg
SW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisjcHJhZ21hIG9uY2UKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworbmFtZXNwYWNlIE1U
TDo6UHJpdmF0ZTo6Q2xhc3MKK3sKKworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQWNjZWxlcmF0
aW9uU3RydWN0dXJlQm91bmRpbmdCb3hHZW9tZXRyeURlc2NyaXB0b3IpOworX01UTF9QUklWQVRF
X0RFRl9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlRGVzY3JpcHRvcik7CitfTVRMX1BSSVZB
VEVfREVGX0NMUyhNVExBY2NlbGVyYXRpb25TdHJ1Y3R1cmVHZW9tZXRyeURlc2NyaXB0b3IpOwor
X01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlTW90aW9uQm91bmRp
bmdCb3hHZW9tZXRyeURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQWNjZWxl
cmF0aW9uU3RydWN0dXJlTW90aW9uVHJpYW5nbGVHZW9tZXRyeURlc2NyaXB0b3IpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMQWNjZWxlcmF0aW9uU3RydWN0dXJlVHJpYW5nbGVHZW9tZXRyeURl
c2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQXJndW1lbnQpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMQXJndW1lbnREZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTEFycmF5VHlwZSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExBdHRyaWJ1dGUpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMQXR0cmlidXRlRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVf
REVGX0NMUyhNVExBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9D
TFMoTVRMQmluYXJ5QXJjaGl2ZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
QmxpdFBhc3NEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEJsaXRQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRM
QmxpdFBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJ
VkFURV9ERUZfQ0xTKE1UTEJ1ZmZlckxheW91dERlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMQnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTENhcHR1cmVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTENhcHR1
cmVNYW5hZ2VyKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTENvbW1hbmRCdWZmZXJEZXNjcmlw
dG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTENvbXBpbGVPcHRpb25zKTsKK19NVExfUFJJ
VkFURV9ERUZfQ0xTKE1UTENvbXB1dGVQYXNzRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExDb21wdXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTENvbXB1dGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTENvbXB1dGVQaXBlbGluZVJlZmxl
Y3Rpb24pOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMQ291bnRlclNhbXBsZUJ1ZmZlckRlc2Ny
aXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExGdW5jdGlvbkNvbnN0YW50KTsKK19NVExfUFJJVkFU
RV9ERUZfQ0xTKE1UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMpOworX01UTF9QUklWQVRFX0RFRl9D
TFMoTVRMRnVuY3Rpb25EZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEZ1bmN0
aW9uU3RpdGNoaW5nQXR0cmlidXRlQWx3YXlzSW5saW5lKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTEZ1bmN0aW9uU3RpdGNoaW5nRnVuY3Rpb25Ob2RlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTEZ1bmN0aW9uU3RpdGNoaW5nR3JhcGgpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMRnVu
Y3Rpb25TdGl0Y2hpbmdJbnB1dE5vZGUpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMSGVhcERl
c2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVy
RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExJbnN0YW5jZUFjY2VsZXJhdGlv
blN0cnVjdHVyZURlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMSW50ZXJzZWN0
aW9uRnVuY3Rpb25EZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTEludGVyc2Vj
dGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTExp
bmtlZEZ1bmN0aW9ucyk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExNb3Rpb25LZXlmcmFtZURh
dGEpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KTsK
K19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFBvaW50ZXJUeXBlKTsKK19NVExfUFJJVkFURV9ERUZf
Q0xTKE1UTFByaW1pdGl2ZUFjY2VsZXJhdGlvblN0cnVjdHVyZURlc2NyaXB0b3IpOworX01UTF9Q
UklWQVRFX0RFRl9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KTsKK19NVExfUFJJ
VkFURV9ERUZfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcik7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRM
X1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvckFycmF5KTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NEZXNj
cmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBhc3NTYW1wbGVCdWZmZXJB
dHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKTsKK19NVExfUFJJ
VkFURV9ERUZfQ0xTKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcik7
CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVuZGVyUGlwZWxpbmVGdW5jdGlv
bnNEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFJlbmRlclBpcGVsaW5lUmVm
bGVjdGlvbik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZXNvdXJjZVN0YXRlUGFzc0Rlc2Ny
aXB0b3IpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVC
dWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExSZXNv
dXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01U
TF9QUklWQVRFX0RFRl9DTFMoTVRMU2FtcGxlckRlc2NyaXB0b3IpOworX01UTF9QUklWQVRFX0RF
Rl9DTFMoTVRMU2hhcmVkRXZlbnRIYW5kbGUpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMU2hh
cmVkRXZlbnRMaXN0ZW5lcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExTaGFyZWRUZXh0dXJl
SGFuZGxlKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlw
dG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFN0ZW5jaWxEZXNjcmlwdG9yKTsKK19NVExf
UFJJVkFURV9ERUZfQ0xTKE1UTFN0aXRjaGVkTGlicmFyeURlc2NyaXB0b3IpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMU3RydWN0TWVtYmVyKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFN0
cnVjdFR5cGUpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVGV4dHVyZURlc2NyaXB0b3IpOwor
X01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVGV4dHVyZVJlZmVyZW5jZVR5cGUpOworX01UTF9QUklW
QVRFX0RFRl9DTFMoTVRMVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkpOworX01UTF9QUklWQVRFX0RFRl9DTFMoTVRMVGlsZVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7CitfTVRMX1BSSVZBVEVfREVGX0NMUyhNVExUeXBlKTsKK19N
VExfUFJJVkFURV9ERUZfQ0xTKE1UTFZlcnRleEF0dHJpYnV0ZSk7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVGX0NM
UyhNVExWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xT
KE1UTFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSk7CitfTVRMX1BSSVZBVEVfREVG
X0NMUyhNVExWZXJ0ZXhEZXNjcmlwdG9yKTsKK19NVExfUFJJVkFURV9ERUZfQ0xTKE1UTFZpc2li
bGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcik7CisKK30KKworbmFtZXNwYWNlIE1UTDo6UHJpdmF0
ZTo6UHJvdG9jb2wKK3sKKworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQWNjZWxlcmF0aW9uU3Ry
dWN0dXJlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEFjY2VsZXJhdGlvblN0cnVjdHVyZUNv
bW1hbmRFbmNvZGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEFyZ3VtZW50RW5jb2Rlcik7
CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExCaW5hcnlBcmNoaXZlKTsKK19NVExfUFJJVkFURV9E
RUZfUFJPKE1UTEJsaXRDb21tYW5kRW5jb2Rlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExC
dWZmZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ29tbWFuZEJ1ZmZlcik7CitfTVRMX1BS
SVZBVEVfREVGX1BSTyhNVExDb21tYW5kQnVmZmVyRW5jb2RlckluZm8pOworX01UTF9QUklWQVRF
X0RFRl9QUk8oTVRMQ29tbWFuZEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ29t
bWFuZFF1ZXVlKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENvbXB1dGVDb21tYW5kRW5jb2Rl
cik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExDb21wdXRlUGlwZWxpbmVTdGF0ZSk7CitfTVRM
X1BSSVZBVEVfREVGX1BSTyhNVExDb3VudGVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTENv
dW50ZXJTYW1wbGVCdWZmZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMQ291bnRlclNldCk7
CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExEZXB0aFN0ZW5jaWxTdGF0ZSk7CitfTVRMX1BSSVZB
VEVfREVGX1BSTyhNVExEZXZpY2UpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRHJhd2FibGUp
OworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRHluYW1pY0xpYnJhcnkpOworX01UTF9QUklWQVRF
X0RFRl9QUk8oTVRMRXZlbnQpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRmVuY2UpOworX01U
TF9QUklWQVRFX0RFRl9QUk8oTVRMRnVuY3Rpb24pOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRM
RnVuY3Rpb25IYW5kbGUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRnVuY3Rpb25Mb2cpOwor
X01UTF9QUklWQVRFX0RFRl9QUk8oTVRMRnVuY3Rpb25Mb2dEZWJ1Z0xvY2F0aW9uKTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTEZ1bmN0aW9uU3RpdGNoaW5nQXR0cmlidXRlKTsKK19NVExfUFJJ
VkFURV9ERUZfUFJPKE1UTEZ1bmN0aW9uU3RpdGNoaW5nTm9kZSk7CitfTVRMX1BSSVZBVEVfREVG
X1BSTyhNVExIZWFwKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEluZGlyZWN0Q29tbWFuZEJ1
ZmZlcik7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExJbmRpcmVjdENvbXB1dGVDb21tYW5kKTsK
K19NVExfUFJJVkFURV9ERUZfUFJPKE1UTEluZGlyZWN0UmVuZGVyQ29tbWFuZCk7CitfTVRMX1BS
SVZBVEVfREVGX1BSTyhNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKTsKK19NVExfUFJJVkFU
RV9ERUZfUFJPKE1UTExpYnJhcnkpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMTG9nQ29udGFp
bmVyKTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1UTFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29k
ZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMUmFzdGVyaXphdGlvblJhdGVNYXApOworX01U
TF9QUklWQVRFX0RFRl9QUk8oTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIpOworX01UTF9QUklWQVRF
X0RFRl9QUk8oTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhN
VExSZXNvdXJjZSk7CitfTVRMX1BSSVZBVEVfREVGX1BSTyhNVExSZXNvdXJjZVN0YXRlQ29tbWFu
ZEVuY29kZXIpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMU2FtcGxlclN0YXRlKTsKK19NVExf
UFJJVkFURV9ERUZfUFJPKE1UTFNoYXJlZEV2ZW50KTsKK19NVExfUFJJVkFURV9ERUZfUFJPKE1U
TFRleHR1cmUpOworX01UTF9QUklWQVRFX0RFRl9QUk8oTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUp
OworCit9CisKK25hbWVzcGFjZSBNVEw6OlByaXZhdGU6OlNlbGVjdG9yCit7CisKK19NVExfUFJJ
VkFURV9ERUZfU0VMKEdQVUVuZFRpbWUsCisgICAgIkdQVUVuZFRpbWUiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKEdQVVN0YXJ0VGltZSwKKyAgICAiR1BVU3RhcnRUaW1lIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChVUkwsCisgICAgIlVSTCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWNjZWxl
cmF0aW9uU3RydWN0dXJlQ29tbWFuZEVuY29kZXIsCisgICAgImFjY2VsZXJhdGlvblN0cnVjdHVy
ZUNvbW1hbmRFbmNvZGVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhY2NlbGVyYXRpb25TdHJ1
Y3R1cmVTaXplc1dpdGhEZXNjcmlwdG9yXywKKyAgICAiYWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6
ZXNXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFjY2VzcywKKyAgICAi
YWNjZXNzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRDb21wbGV0ZWRIYW5kbGVyXywKKyAg
ICAiYWRkQ29tcGxldGVkSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFkZENvbXB1
dGVQaXBlbGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAiYWRkQ29tcHV0
ZVBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChhZGREZWJ1Z01hcmtlcl9yYW5nZV8sCisgICAgImFkZERlYnVnTWFya2VyOnJhbmdl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWRkRnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9saWJy
YXJ5X2Vycm9yXywKKyAgICAiYWRkRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpsaWJyYXJ5OmVycm9y
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYWRkUHJlc2VudGVkSGFuZGxlcl8sCisgICAgImFk
ZFByZXNlbnRlZEhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhZGRSZW5kZXJQaXBl
bGluZUZ1bmN0aW9uc1dpdGhEZXNjcmlwdG9yX2Vycm9yXywKKyAgICAiYWRkUmVuZGVyUGlwZWxp
bmVGdW5jdGlvbnNXaXRoRGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGFkZFNjaGVkdWxlZEhhbmRsZXJfLAorICAgICJhZGRTY2hlZHVsZWRIYW5kbGVyOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoYWRkVGlsZVJlbmRlclBpcGVsaW5lRnVuY3Rpb25zV2l0aERlc2Ny
aXB0b3JfZXJyb3JfLAorICAgICJhZGRUaWxlUmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNXaXRoRGVz
Y3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFsaWdubWVudCwKKyAgICAi
YWxpZ25tZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhbGxvY2F0ZWRTaXplLAorICAgICJh
bGxvY2F0ZWRTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhbGxvd0R1cGxpY2F0ZUludGVy
c2VjdGlvbkZ1bmN0aW9uSW52b2NhdGlvbiwKKyAgICAiYWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rp
b25GdW5jdGlvbkludm9jYXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFsbG93R1BVT3B0
aW1pemVkQ29udGVudHMsCisgICAgImFsbG93R1BVT3B0aW1pemVkQ29udGVudHMiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGFscGhhQmxlbmRPcGVyYXRpb24sCisgICAgImFscGhhQmxlbmRPcGVy
YXRpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFyZUJhcnljZW50cmljQ29vcmRzU3VwcG9y
dGVkLAorICAgICJhcmVCYXJ5Y2VudHJpY0Nvb3Jkc1N1cHBvcnRlZCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoYXJlUHJvZ3JhbW1hYmxlU2FtcGxlUG9zaXRpb25zU3VwcG9ydGVkLAorICAgICJh
cmVQcm9ncmFtbWFibGVTYW1wbGVQb3NpdGlvbnNTdXBwb3J0ZWQiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKGFyZVJhc3Rlck9yZGVyR3JvdXBzU3VwcG9ydGVkLAorICAgICJhcmVSYXN0ZXJPcmRl
ckdyb3Vwc1N1cHBvcnRlZCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYXJndW1lbnRCdWZmZXJz
U3VwcG9ydCwKKyAgICAiYXJndW1lbnRCdWZmZXJzU3VwcG9ydCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoYXJndW1lbnREZXNjcmlwdG9yLAorICAgICJhcmd1bWVudERlc2NyaXB0b3IiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGFyZ3VtZW50SW5kZXgsCisgICAgImFyZ3VtZW50SW5kZXgiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGFyZ3VtZW50SW5kZXhTdHJpZGUsCisgICAgImFyZ3VtZW50
SW5kZXhTdHJpZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFyZ3VtZW50cywKKyAgICAiYXJn
dW1lbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhcnJheUxlbmd0aCwKKyAgICAiYXJyYXlM
ZW5ndGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGFycmF5VHlwZSwKKyAgICAiYXJyYXlUeXBl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChhdHRyaWJ1dGVJbmRleCwKKyAgICAiYXR0cmlidXRl
SW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGF0dHJpYnV0ZVR5cGUsCisgICAgImF0dHJp
YnV0ZVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGF0dHJpYnV0ZXMsCisgICAgImF0dHJp
YnV0ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJhY2tGYWNlU3RlbmNpbCwKKyAgICAiYmFj
a0ZhY2VTdGVuY2lsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChiaW5hcnlBcmNoaXZlcywKKyAg
ICAiYmluYXJ5QXJjaGl2ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJpbmFyeUZ1bmN0aW9u
cywKKyAgICAiYmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChibGl0Q29t
bWFuZEVuY29kZXIsCisgICAgImJsaXRDb21tYW5kRW5jb2RlciIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoYmxpdENvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3JfLAorICAgICJibGl0Q29tbWFu
ZEVuY29kZXJXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJsaXRQYXNz
RGVzY3JpcHRvciwKKyAgICAiYmxpdFBhc3NEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChib3JkZXJDb2xvciwKKyAgICAiYm9yZGVyQ29sb3IiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKGJvdW5kaW5nQm94QnVmZmVyLAorICAgICJib3VuZGluZ0JveEJ1ZmZlciIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoYm91bmRpbmdCb3hCdWZmZXJPZmZzZXQsCisgICAgImJvdW5kaW5nQm94
QnVmZmVyT2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChib3VuZGluZ0JveEJ1ZmZlcnMs
CisgICAgImJvdW5kaW5nQm94QnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYm91bmRp
bmdCb3hDb3VudCwKKyAgICAiYm91bmRpbmdCb3hDb3VudCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoYm91bmRpbmdCb3hTdHJpZGUsCisgICAgImJvdW5kaW5nQm94U3RyaWRlIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChidWZmZXIsCisgICAgImJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoYnVmZmVyQWxpZ25tZW50LAorICAgICJidWZmZXJBbGlnbm1lbnQiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGJ1ZmZlckJ5dGVzUGVyUm93LAorICAgICJidWZmZXJCeXRlc1BlclJvdyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVyRGF0YVNpemUsCisgICAgImJ1ZmZlckRhdGFTaXpl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChidWZmZXJEYXRhVHlwZSwKKyAgICAiYnVmZmVyRGF0
YVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlckluZGV4LAorICAgICJidWZmZXJJ
bmRleCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVyT2Zmc2V0LAorICAgICJidWZmZXJP
ZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGJ1ZmZlclBvaW50ZXJUeXBlLAorICAgICJi
dWZmZXJQb2ludGVyVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVyU3RydWN0VHlw
ZSwKKyAgICAiYnVmZmVyU3RydWN0VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVmZmVy
cywKKyAgICAiYnVmZmVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoYnVpbGRBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVfZGVzY3JpcHRvcl9zY3JhdGNoQnVmZmVyX3NjcmF0Y2hCdWZmZXJPZmZzZXRf
LAorICAgICJidWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZTpkZXNjcmlwdG9yOnNjcmF0Y2hCdWZm
ZXI6c2NyYXRjaEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNhcHR1cmVP
YmplY3QsCisgICAgImNhcHR1cmVPYmplY3QiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNsZWFy
QmFycmllciwKKyAgICAiY2xlYXJCYXJyaWVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjbGVh
ckNvbG9yLAorICAgICJjbGVhckNvbG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjbGVhckRl
cHRoLAorICAgICJjbGVhckRlcHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjbGVhclN0ZW5j
aWwsCisgICAgImNsZWFyU3RlbmNpbCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29sb3JBdHRh
Y2htZW50cywKKyAgICAiY29sb3JBdHRhY2htZW50cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
Y29sdW1uLAorICAgICJjb2x1bW4iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbW1hbmRCdWZm
ZXIsCisgICAgImNvbW1hbmRCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbW1hbmRC
dWZmZXJXaXRoRGVzY3JpcHRvcl8sCisgICAgImNvbW1hbmRCdWZmZXJXaXRoRGVzY3JpcHRvcjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbW1hbmRCdWZmZXJXaXRoVW5yZXRhaW5lZFJlZmVy
ZW5jZXMsCisgICAgImNvbW1hbmRCdWZmZXJXaXRoVW5yZXRhaW5lZFJlZmVyZW5jZXMiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNvbW1hbmRRdWV1ZSwKKyAgICAiY29tbWFuZFF1ZXVlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChjb21tYW5kVHlwZXMsCisgICAgImNvbW1hbmRUeXBlcyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY29tbWl0LAorICAgICJjb21taXQiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGNvbXBhcmVGdW5jdGlvbiwKKyAgICAiY29tcGFyZUZ1bmN0aW9uIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChjb21wdXRlQ29tbWFuZEVuY29kZXIsCisgICAgImNvbXB1dGVDb21t
YW5kRW5jb2RlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tcHV0ZUNvbW1hbmRFbmNvZGVy
V2l0aERlc2NyaXB0b3JfLAorICAgICJjb21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGVzY3JpcHRv
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbXB1dGVDb21tYW5kRW5jb2RlcldpdGhEaXNw
YXRjaFR5cGVfLAorICAgICJjb21wdXRlQ29tbWFuZEVuY29kZXJXaXRoRGlzcGF0Y2hUeXBlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoY29tcHV0ZUZ1bmN0aW9uLAorICAgICJjb21wdXRlRnVu
Y3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvbXB1dGVQYXNzRGVzY3JpcHRvciwKKyAg
ICAiY29tcHV0ZVBhc3NEZXNjcmlwdG9yIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb25jdXJy
ZW50RGlzcGF0Y2hUaHJlYWRncm91cHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAiY29u
Y3VycmVudERpc3BhdGNoVGhyZWFkZ3JvdXBzOnRocmVhZHNQZXJUaHJlYWRncm91cDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGNvbmN1cnJlbnREaXNwYXRjaFRocmVhZHNfdGhyZWFkc1BlclRo
cmVhZGdyb3VwXywKKyAgICAiY29uY3VycmVudERpc3BhdGNoVGhyZWFkczp0aHJlYWRzUGVyVGhy
ZWFkZ3JvdXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb25zdGFudEJsb2NrQWxpZ25tZW50
LAorICAgICJjb25zdGFudEJsb2NrQWxpZ25tZW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChj
b25zdGFudERhdGFBdEluZGV4XywKKyAgICAiY29uc3RhbnREYXRhQXRJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGNvbnN0YW50VmFsdWVzLAorICAgICJjb25zdGFudFZhbHVlcyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY29udGVudHMsCisgICAgImNvbnRlbnRzIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChjb250cm9sRGVwZW5kZW5jaWVzLAorICAgICJjb250cm9sRGVwZW5kZW5j
aWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb252ZXJ0U3BhcnNlUGl4ZWxSZWdpb25zX3Rv
VGlsZVJlZ2lvbnNfd2l0aFRpbGVTaXplX2FsaWdubWVudE1vZGVfbnVtUmVnaW9uc18sCisgICAg
ImNvbnZlcnRTcGFyc2VQaXhlbFJlZ2lvbnM6dG9UaWxlUmVnaW9uczp3aXRoVGlsZVNpemU6YWxp
Z25tZW50TW9kZTpudW1SZWdpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29udmVydFNw
YXJzZVRpbGVSZWdpb25zX3RvUGl4ZWxSZWdpb25zX3dpdGhUaWxlU2l6ZV9udW1SZWdpb25zXywK
KyAgICAiY29udmVydFNwYXJzZVRpbGVSZWdpb25zOnRvUGl4ZWxSZWdpb25zOndpdGhUaWxlU2l6
ZTpudW1SZWdpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUFjY2VsZXJhdGlvblN0
cnVjdHVyZV90b0FjY2VsZXJhdGlvblN0cnVjdHVyZV8sCisgICAgImNvcHlBY2NlbGVyYXRpb25T
dHJ1Y3R1cmU6dG9BY2NlbGVyYXRpb25TdHJ1Y3R1cmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChjb3B5QW5kQ29tcGFjdEFjY2VsZXJhdGlvblN0cnVjdHVyZV90b0FjY2VsZXJhdGlvblN0cnVj
dHVyZV8sCisgICAgImNvcHlBbmRDb21wYWN0QWNjZWxlcmF0aW9uU3RydWN0dXJlOnRvQWNjZWxl
cmF0aW9uU3RydWN0dXJlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUZyb21CdWZmZXJf
c291cmNlT2Zmc2V0X3NvdXJjZUJ5dGVzUGVyUm93X3NvdXJjZUJ5dGVzUGVySW1hZ2Vfc291cmNl
U2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGljZV9kZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0
aW9uT3JpZ2luXywKKyAgICAiY29weUZyb21CdWZmZXI6c291cmNlT2Zmc2V0OnNvdXJjZUJ5dGVz
UGVyUm93OnNvdXJjZUJ5dGVzUGVySW1hZ2U6c291cmNlU2l6ZTp0b1RleHR1cmU6ZGVzdGluYXRp
b25TbGljZTpkZXN0aW5hdGlvbkxldmVsOmRlc3RpbmF0aW9uT3JpZ2luOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoY29weUZyb21CdWZmZXJfc291cmNlT2Zmc2V0X3NvdXJjZUJ5dGVzUGVyUm93
X3NvdXJjZUJ5dGVzUGVySW1hZ2Vfc291cmNlU2l6ZV90b1RleHR1cmVfZGVzdGluYXRpb25TbGlj
ZV9kZXN0aW5hdGlvbkxldmVsX2Rlc3RpbmF0aW9uT3JpZ2luX29wdGlvbnNfLAorICAgICJjb3B5
RnJvbUJ1ZmZlcjpzb3VyY2VPZmZzZXQ6c291cmNlQnl0ZXNQZXJSb3c6c291cmNlQnl0ZXNQZXJJ
bWFnZTpzb3VyY2VTaXplOnRvVGV4dHVyZTpkZXN0aW5hdGlvblNsaWNlOmRlc3RpbmF0aW9uTGV2
ZWw6ZGVzdGluYXRpb25PcmlnaW46b3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNv
cHlGcm9tQnVmZmVyX3NvdXJjZU9mZnNldF90b0J1ZmZlcl9kZXN0aW5hdGlvbk9mZnNldF9zaXpl
XywKKyAgICAiY29weUZyb21CdWZmZXI6c291cmNlT2Zmc2V0OnRvQnVmZmVyOmRlc3RpbmF0aW9u
T2Zmc2V0OnNpemU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChjb3B5RnJvbVRleHR1cmVfc291
cmNlU2xpY2Vfc291cmNlTGV2ZWxfc291cmNlT3JpZ2luX3NvdXJjZVNpemVfdG9CdWZmZXJfZGVz
dGluYXRpb25PZmZzZXRfZGVzdGluYXRpb25CeXRlc1BlclJvd19kZXN0aW5hdGlvbkJ5dGVzUGVy
SW1hZ2VfLAorICAgICJjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291
cmNlT3JpZ2luOnNvdXJjZVNpemU6dG9CdWZmZXI6ZGVzdGluYXRpb25PZmZzZXQ6ZGVzdGluYXRp
b25CeXRlc1BlclJvdzpkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChjb3B5RnJvbVRleHR1cmVfc291cmNlU2xpY2Vfc291cmNlTGV2ZWxfc291cmNlT3Jp
Z2luX3NvdXJjZVNpemVfdG9CdWZmZXJfZGVzdGluYXRpb25PZmZzZXRfZGVzdGluYXRpb25CeXRl
c1BlclJvd19kZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2Vfb3B0aW9uc18sCisgICAgImNvcHlGcm9t
VGV4dHVyZTpzb3VyY2VTbGljZTpzb3VyY2VMZXZlbDpzb3VyY2VPcmlnaW46c291cmNlU2l6ZTp0
b0J1ZmZlcjpkZXN0aW5hdGlvbk9mZnNldDpkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OmRlc3RpbmF0
aW9uQnl0ZXNQZXJJbWFnZTpvcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUZy
b21UZXh0dXJlX3NvdXJjZVNsaWNlX3NvdXJjZUxldmVsX3NvdXJjZU9yaWdpbl9zb3VyY2VTaXpl
X3RvVGV4dHVyZV9kZXN0aW5hdGlvblNsaWNlX2Rlc3RpbmF0aW9uTGV2ZWxfZGVzdGluYXRpb25P
cmlnaW5fLAorICAgICJjb3B5RnJvbVRleHR1cmU6c291cmNlU2xpY2U6c291cmNlTGV2ZWw6c291
cmNlT3JpZ2luOnNvdXJjZVNpemU6dG9UZXh0dXJlOmRlc3RpbmF0aW9uU2xpY2U6ZGVzdGluYXRp
b25MZXZlbDpkZXN0aW5hdGlvbk9yaWdpbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvcHlG
cm9tVGV4dHVyZV9zb3VyY2VTbGljZV9zb3VyY2VMZXZlbF90b1RleHR1cmVfZGVzdGluYXRpb25T
bGljZV9kZXN0aW5hdGlvbkxldmVsX3NsaWNlQ291bnRfbGV2ZWxDb3VudF8sCisgICAgImNvcHlG
cm9tVGV4dHVyZTpzb3VyY2VTbGljZTpzb3VyY2VMZXZlbDp0b1RleHR1cmU6ZGVzdGluYXRpb25T
bGljZTpkZXN0aW5hdGlvbkxldmVsOnNsaWNlQ291bnQ6bGV2ZWxDb3VudDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGNvcHlGcm9tVGV4dHVyZV90b1RleHR1cmVfLAorICAgICJjb3B5RnJvbVRl
eHR1cmU6dG9UZXh0dXJlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weUluZGlyZWN0Q29t
bWFuZEJ1ZmZlcl9zb3VyY2VSYW5nZV9kZXN0aW5hdGlvbl9kZXN0aW5hdGlvbkluZGV4XywKKyAg
ICAiY29weUluZGlyZWN0Q29tbWFuZEJ1ZmZlcjpzb3VyY2VSYW5nZTpkZXN0aW5hdGlvbjpkZXN0
aW5hdGlvbkluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoY29weVBhcmFtZXRlckRhdGFU
b0J1ZmZlcl9vZmZzZXRfLAorICAgICJjb3B5UGFyYW1ldGVyRGF0YVRvQnVmZmVyOm9mZnNldDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGNvdW50ZXJTZXQsCisgICAgImNvdW50ZXJTZXQiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGNvdW50ZXJTZXRzLAorICAgICJjb3VudGVyU2V0cyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoY291bnRlcnMsCisgICAgImNvdW50ZXJzIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChjcHVDYWNoZU1vZGUsCisgICAgImNwdUNhY2hlTW9kZSIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoY3VycmVudEFsbG9jYXRlZFNpemUsCisgICAgImN1cnJlbnRBbGxvY2F0
ZWRTaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkYXRhLAorICAgICJkYXRhIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChkYXRhU2l6ZSwKKyAgICAiZGF0YVNpemUiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGRhdGFUeXBlLAorICAgICJkYXRhVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZGVhbGxvYywKKyAgICAiZGVhbGxvYyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVidWdM
b2NhdGlvbiwKKyAgICAiZGVidWdMb2NhdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVi
dWdTaWducG9zdHMsCisgICAgImRlYnVnU2lnbnBvc3RzIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChkZWZhdWx0Q2FwdHVyZVNjb3BlLAorICAgICJkZWZhdWx0Q2FwdHVyZVNjb3BlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQsCisgICAgImRlZmF1bHRS
YXN0ZXJTYW1wbGVDb3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVwdGgsCisgICAgImRl
cHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0aEF0dGFjaG1lbnQsCisgICAgImRlcHRo
QXR0YWNobWVudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVwdGhBdHRhY2htZW50UGl4ZWxG
b3JtYXQsCisgICAgImRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChkZXB0aENvbXBhcmVGdW5jdGlvbiwKKyAgICAiZGVwdGhDb21wYXJlRnVuY3Rpb24i
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRlcHRoRmFpbHVyZU9wZXJhdGlvbiwKKyAgICAiZGVw
dGhGYWlsdXJlT3BlcmF0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0aFBsYW5lLAor
ICAgICJkZXB0aFBsYW5lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkZXB0aFJlc29sdmVGaWx0
ZXIsCisgICAgImRlcHRoUmVzb2x2ZUZpbHRlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVw
dGhTdGVuY2lsUGFzc09wZXJhdGlvbiwKKyAgICAiZGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVzY3JpcHRvciwKKyAgICAiZGVzY3JpcHRvciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZGVzdGluYXRpb24sCisgICAgImRlc3RpbmF0aW9uIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChkZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IsCisgICAgImRl
c3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZGVzdGlu
YXRpb25SR0JCbGVuZEZhY3RvciwKKyAgICAiZGVzdGluYXRpb25SR0JCbGVuZEZhY3RvciIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoZGV2aWNlLAorICAgICJkZXZpY2UiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGRpZE1vZGlmeVJhbmdlXywKKyAgICAiZGlkTW9kaWZ5UmFuZ2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChkaXNwYXRjaFF1ZXVlLAorICAgICJkaXNwYXRjaFF1ZXVlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChkaXNwYXRjaFRocmVhZGdyb3Vwc190aHJlYWRzUGVyVGhyZWFk
Z3JvdXBfLAorICAgICJkaXNwYXRjaFRocmVhZGdyb3Vwczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkaXNwYXRjaFRocmVhZGdyb3Vwc1dpdGhJbmRpcmVj
dEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF90aHJlYWRzUGVyVGhyZWFkZ3JvdXBfLAorICAg
ICJkaXNwYXRjaFRocmVhZGdyb3Vwc1dpdGhJbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9m
ZnNldDp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChkaXNw
YXRjaFRocmVhZHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXywKKyAgICAiZGlzcGF0Y2hUaHJlYWRz
OnRocmVhZHNQZXJUaHJlYWRncm91cDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRpc3BhdGNo
VGhyZWFkc1BlclRpbGVfLAorICAgICJkaXNwYXRjaFRocmVhZHNQZXJUaWxlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZGlzcGF0Y2hUeXBlLAorICAgICJkaXNwYXRjaFR5cGUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRjaEluZGV4QnVmZmVyX3BhdGNo
SW5kZXhCdWZmZXJPZmZzZXRfY29udHJvbFBvaW50SW5kZXhCdWZmZXJfY29udHJvbFBvaW50SW5k
ZXhCdWZmZXJPZmZzZXRfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAg
ICJkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zm
c2V0OmNvbnRyb2xQb2ludEluZGV4QnVmZmVyOmNvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0
OmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoZHJhd0luZGV4ZWRQYXRjaGVzX3BhdGNoU3RhcnRfcGF0Y2hDb3VudF9wYXRjaEluZGV4
QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfY29udHJvbFBvaW50SW5kZXhCdWZmZXJfY29u
dHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfLAor
ICAgICJkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENvdW50OnBhdGNoSW5kZXhC
dWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1ZmZlcjpjb250
cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VJbnN0YW5jZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNo
Q291bnRfcGF0Y2hJbmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQb2lu
dEluZGV4QnVmZmVyX2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRf
YmFzZUluc3RhbmNlX3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcl90ZXNzZWxsYXRpb25GYWN0b3JC
dWZmZXJPZmZzZXRfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVySW5zdGFuY2VTdHJpZGVfLAorICAg
ICJkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENvdW50OnBhdGNoSW5kZXhCdWZm
ZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJbmRleEJ1ZmZlcjpjb250cm9s
UG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VJbnN0YW5jZTp0ZXNzZWxs
YXRpb25GYWN0b3JCdWZmZXI6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0OnRlc3NlbGxh
dGlvbkZhY3RvckJ1ZmZlckluc3RhbmNlU3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
ZHJhd0luZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5kZXhUeXBlX2luZGV4QnVmZmVyX2lu
ZGV4QnVmZmVyT2Zmc2V0XywKKyAgICAiZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4Q291bnQ6
aW5kZXhUeXBlOmluZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoZHJhd0luZGV4ZWRQcmltaXRpdmVzX2luZGV4Q291bnRfaW5kZXhUeXBlX2luZGV4
QnVmZmVyX2luZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfLAorICAgICJkcmF3SW5kZXhl
ZFByaW1pdGl2ZXM6aW5kZXhDb3VudDppbmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJP
ZmZzZXQ6aW5zdGFuY2VDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdJbmRleGVk
UHJpbWl0aXZlc19pbmRleENvdW50X2luZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9m
ZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VWZXJ0ZXhfYmFzZUluc3RhbmNlXywKKyAgICAiZHJhd0lu
ZGV4ZWRQcmltaXRpdmVzOmluZGV4Q291bnQ6aW5kZXhUeXBlOmluZGV4QnVmZmVyOmluZGV4QnVm
ZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZVZlcnRleDpiYXNlSW5zdGFuY2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhUeXBlX2luZGV4QnVm
ZmVyX2luZGV4QnVmZmVyT2Zmc2V0X2luZGlyZWN0QnVmZmVyX2luZGlyZWN0QnVmZmVyT2Zmc2V0
XywKKyAgICAiZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4VHlwZTppbmRleEJ1ZmZlcjppbmRl
eEJ1ZmZlck9mZnNldDppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGRyYXdQYXRjaGVzX3BhdGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRl
eEJ1ZmZlck9mZnNldF9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8sCisgICAg
ImRyYXdQYXRjaGVzOnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDppbmRp
cmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGRyYXdQYXRjaGVzX3BhdGNoU3RhcnRfcGF0Y2hDb3VudF9wYXRjaEluZGV4QnVmZmVyX3BhdGNo
SW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfLAorICAgICJkcmF3
UGF0Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4
QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoZHJhd1BhdGNoZXNfcGF0Y2hTdGFydF9wYXRjaENvdW50X3BhdGNoSW5kZXhCdWZm
ZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV90ZXNz
ZWxsYXRpb25GYWN0b3JCdWZmZXJfdGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0X3Rlc3Nl
bGxhdGlvbkZhY3RvckJ1ZmZlckluc3RhbmNlU3RyaWRlXywKKyAgICAiZHJhd1BhdGNoZXM6cGF0
Y2hTdGFydDpwYXRjaENvdW50OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNl
dDppbnN0YW5jZUNvdW50OmJhc2VJbnN0YW5jZTp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXI6dGVz
c2VsbGF0aW9uRmFjdG9yQnVmZmVyT2Zmc2V0OnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlckluc3Rh
bmNlU3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZHJhd1ByaW1pdGl2ZXNfaW5kaXJl
Y3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfLAorICAgICJkcmF3UHJpbWl0aXZlczppbmRp
cmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGRyYXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50XywKKyAgICAiZHJhd1ByaW1p
dGl2ZXM6dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChk
cmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0ZXhDb3VudF9pbnN0YW5jZUNvdW50XywKKyAg
ICAiZHJhd1ByaW1pdGl2ZXM6dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6aW5zdGFuY2VDb3VudDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGRyYXdQcmltaXRpdmVzX3ZlcnRleFN0YXJ0X3ZlcnRl
eENvdW50X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNlXywKKyAgICAiZHJhd1ByaW1pdGl2ZXM6
dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6aW5zdGFuY2VDb3VudDpiYXNlSW5zdGFuY2U6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChkcmF3YWJsZUlELAorICAgICJkcmF3YWJsZUlEIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChlbGVtZW50QXJyYXlUeXBlLAorICAgICJlbGVtZW50QXJyYXlUeXBl
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbGVtZW50SXNBcmd1bWVudEJ1ZmZlciwKKyAgICAi
ZWxlbWVudElzQXJndW1lbnRCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVsZW1lbnRQ
b2ludGVyVHlwZSwKKyAgICAiZWxlbWVudFBvaW50ZXJUeXBlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChlbGVtZW50U3RydWN0VHlwZSwKKyAgICAiZWxlbWVudFN0cnVjdFR5cGUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGVsZW1lbnRUZXh0dXJlUmVmZXJlbmNlVHlwZSwKKyAgICAiZWxlbWVu
dFRleHR1cmVSZWZlcmVuY2VUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbGVtZW50VHlw
ZSwKKyAgICAiZWxlbWVudFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVuY29kZVNpZ25h
bEV2ZW50X3ZhbHVlXywKKyAgICAiZW5jb2RlU2lnbmFsRXZlbnQ6dmFsdWU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChlbmNvZGVXYWl0Rm9yRXZlbnRfdmFsdWVfLAorICAgICJlbmNvZGVXYWl0
Rm9yRXZlbnQ6dmFsdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmNvZGVkTGVuZ3RoLAor
ICAgICJlbmNvZGVkTGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmNvZGVyTGFiZWws
CisgICAgImVuY29kZXJMYWJlbCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZW5kRW5jb2Rpbmcs
CisgICAgImVuZEVuY29kaW5nIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmRPZkVuY29kZXJT
YW1wbGVJbmRleCwKKyAgICAiZW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXgiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCwKKyAgICAiZW5kT2ZGcmFnbWVudFNh
bXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlbmRPZlZlcnRleFNhbXBsZUluZGV4
LAorICAgICJlbmRPZlZlcnRleFNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChl
bnF1ZXVlLAorICAgICJlbnF1ZXVlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlcnJvciwKKyAg
ICAiZXJyb3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGVycm9yT3B0aW9ucywKKyAgICAiZXJy
b3JPcHRpb25zIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChlcnJvclN0YXRlLAorICAgICJlcnJv
clN0YXRlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcl9p
bmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9mZnNldF8sCisgICAgImV4ZWN1dGVDb21tYW5k
c0luQnVmZmVyOmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXJfd2l0aFJhbmdlXywKKyAgICAi
ZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXI6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZmFzdE1hdGhFbmFibGVkLAorICAgICJmYXN0TWF0aEVuYWJsZWQiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGZpbGxCdWZmZXJfcmFuZ2VfdmFsdWVfLAorICAgICJmaWxsQnVmZmVyOnJhbmdl
OnZhbHVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZmlyc3RNaXBtYXBJblRhaWwsCisgICAg
ImZpcnN0TWlwbWFwSW5UYWlsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmb3JtYXQsCisgICAg
ImZvcm1hdCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5
RnVuY3Rpb25zLAorICAgICJmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGZyYWdtZW50QXJndW1lbnRzLAorICAgICJmcmFnbWVudEFyZ3Vt
ZW50cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnJhZ21lbnRCdWZmZXJzLAorICAgICJmcmFn
bWVudEJ1ZmZlcnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZyYWdtZW50RnVuY3Rpb24sCisg
ICAgImZyYWdtZW50RnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZyYWdtZW50TGlu
a2VkRnVuY3Rpb25zLAorICAgICJmcmFnbWVudExpbmtlZEZ1bmN0aW9ucyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMsCisgICAgImZyYWdtZW50UHJl
bG9hZGVkTGlicmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmcm9udEZhY2VTdGVuY2ls
LAorICAgICJmcm9udEZhY2VTdGVuY2lsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmdW5jdGlv
biwKKyAgICAiZnVuY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1bmN0aW9uQ29uc3Rh
bnRzRGljdGlvbmFyeSwKKyAgICAiZnVuY3Rpb25Db25zdGFudHNEaWN0aW9uYXJ5Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbkNvdW50LAorICAgICJmdW5jdGlvbkNvdW50Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbkRlc2NyaXB0b3IsCisgICAgImZ1bmN0aW9uRGVz
Y3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZnVuY3Rpb25HcmFwaHMsCisgICAgImZ1
bmN0aW9uR3JhcGhzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChmdW5jdGlvbkhhbmRsZVdpdGhG
dW5jdGlvbl8sCisgICAgImZ1bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb25fc3RhZ2VfLAorICAgICJmdW5j
dGlvbkhhbmRsZVdpdGhGdW5jdGlvbjpzdGFnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGZ1
bmN0aW9uTmFtZSwKKyAgICAiZnVuY3Rpb25OYW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChm
dW5jdGlvbk5hbWVzLAorICAgICJmdW5jdGlvbk5hbWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChmdW5jdGlvblR5cGUsCisgICAgImZ1bmN0aW9uVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoZnVuY3Rpb25zLAorICAgICJmdW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdl
bmVyYXRlTWlwbWFwc0ZvclRleHR1cmVfLAorICAgICJnZW5lcmF0ZU1pcG1hcHNGb3JUZXh0dXJl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZ2VvbWV0cnlEZXNjcmlwdG9ycywKKyAgICAiZ2Vv
bWV0cnlEZXNjcmlwdG9ycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZ2V0Qnl0ZXNfYnl0ZXNQ
ZXJSb3dfYnl0ZXNQZXJJbWFnZV9mcm9tUmVnaW9uX21pcG1hcExldmVsX3NsaWNlXywKKyAgICAi
Z2V0Qnl0ZXM6Ynl0ZXNQZXJSb3c6Ynl0ZXNQZXJJbWFnZTpmcm9tUmVnaW9uOm1pcG1hcExldmVs
OnNsaWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoZ2V0Qnl0ZXNfYnl0ZXNQZXJSb3dfZnJv
bVJlZ2lvbl9taXBtYXBMZXZlbF8sCisgICAgImdldEJ5dGVzOmJ5dGVzUGVyUm93OmZyb21SZWdp
b246bWlwbWFwTGV2ZWw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChnZXREZWZhdWx0U2FtcGxl
UG9zaXRpb25zX2NvdW50XywKKyAgICAiZ2V0RGVmYXVsdFNhbXBsZVBvc2l0aW9uczpjb3VudDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdldFNhbXBsZVBvc2l0aW9uc19jb3VudF8sCisgICAg
ImdldFNhbXBsZVBvc2l0aW9uczpjb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdldFRl
eHR1cmVBY2Nlc3NDb3VudGVyc19yZWdpb25fbWlwTGV2ZWxfc2xpY2VfcmVzZXRDb3VudGVyc19j
b3VudGVyc0J1ZmZlcl9jb3VudGVyc0J1ZmZlck9mZnNldF8sCisgICAgImdldFRleHR1cmVBY2Nl
c3NDb3VudGVyczpyZWdpb246bWlwTGV2ZWw6c2xpY2U6cmVzZXRDb3VudGVyczpjb3VudGVyc0J1
ZmZlcjpjb3VudGVyc0J1ZmZlck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGdyb3Vw
cywKKyAgICAiZ3JvdXBzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChoYXNVbmlmaWVkTWVtb3J5
LAorICAgICJoYXNVbmlmaWVkTWVtb3J5Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChoYXphcmRU
cmFja2luZ01vZGUsCisgICAgImhhemFyZFRyYWNraW5nTW9kZSIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoaGVhcCwKKyAgICAiaGVhcCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaGVhcEJ1ZmZl
clNpemVBbmRBbGlnbldpdGhMZW5ndGhfb3B0aW9uc18sCisgICAgImhlYXBCdWZmZXJTaXplQW5k
QWxpZ25XaXRoTGVuZ3RoOm9wdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChoZWFwT2Zm
c2V0LAorICAgICJoZWFwT2Zmc2V0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChoZWFwVGV4dHVy
ZVNpemVBbmRBbGlnbldpdGhEZXNjcmlwdG9yXywKKyAgICAiaGVhcFRleHR1cmVTaXplQW5kQWxp
Z25XaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGhlaWdodCwKKyAgICAi
aGVpZ2h0Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChob3Jpem9udGFsLAorICAgICJob3Jpem9u
dGFsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChob3Jpem9udGFsU2FtcGxlU3RvcmFnZSwKKyAg
ICAiaG9yaXpvbnRhbFNhbXBsZVN0b3JhZ2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGltYWdl
YmxvY2tNZW1vcnlMZW5ndGhGb3JEaW1lbnNpb25zXywKKyAgICAiaW1hZ2VibG9ja01lbW9yeUxl
bmd0aEZvckRpbWVuc2lvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbWFnZWJsb2NrU2Ft
cGxlTGVuZ3RoLAorICAgICJpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChpbmRleCwKKyAgICAiaW5kZXgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGV4
QnVmZmVyLAorICAgICJpbmRleEJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5kZXhC
dWZmZXJJbmRleCwKKyAgICAiaW5kZXhCdWZmZXJJbmRleCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoaW5kZXhCdWZmZXJPZmZzZXQsCisgICAgImluZGV4QnVmZmVyT2Zmc2V0Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChpbmRleFR5cGUsCisgICAgImluZGV4VHlwZSIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoaW5kaXJlY3RDb21wdXRlQ29tbWFuZEF0SW5kZXhfLAorICAgICJpbmRpcmVjdENv
bXB1dGVDb21tYW5kQXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluZGlyZWN0UmVu
ZGVyQ29tbWFuZEF0SW5kZXhfLAorICAgICJpbmRpcmVjdFJlbmRlckNvbW1hbmRBdEluZGV4OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5oZXJpdEJ1ZmZlcnMsCisgICAgImluaGVyaXRCdWZm
ZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbmhlcml0UGlwZWxpbmVTdGF0ZSwKKyAgICAi
aW5oZXJpdFBpcGVsaW5lU3RhdGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXQsCisgICAg
ImluaXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoQXJndW1lbnRJbmRleF8sCisg
ICAgImluaXRXaXRoQXJndW1lbnRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXRX
aXRoRGlzcGF0Y2hRdWV1ZV8sCisgICAgImluaXRXaXRoRGlzcGF0Y2hRdWV1ZToiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGluaXRXaXRoRnVuY3Rpb25OYW1lX25vZGVzX291dHB1dE5vZGVfYXR0
cmlidXRlc18sCisgICAgImluaXRXaXRoRnVuY3Rpb25OYW1lOm5vZGVzOm91dHB1dE5vZGU6YXR0
cmlidXRlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoTmFtZV9hcmd1bWVudHNf
Y29udHJvbERlcGVuZGVuY2llc18sCisgICAgImluaXRXaXRoTmFtZTphcmd1bWVudHM6Y29udHJv
bERlcGVuZGVuY2llczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluaXRXaXRoU2FtcGxlQ291
bnRfLAorICAgICJpbml0V2l0aFNhbXBsZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aW5pdFdpdGhTYW1wbGVDb3VudF9ob3Jpem9udGFsX3ZlcnRpY2FsXywKKyAgICAiaW5pdFdpdGhT
YW1wbGVDb3VudDpob3Jpem9udGFsOnZlcnRpY2FsOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
aW5wdXRQcmltaXRpdmVUb3BvbG9neSwKKyAgICAiaW5wdXRQcmltaXRpdmVUb3BvbG9neSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoaW5zZXJ0RGVidWdDYXB0dXJlQm91bmRhcnksCisgICAgImlu
c2VydERlYnVnQ2FwdHVyZUJvdW5kYXJ5Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnNlcnRE
ZWJ1Z1NpZ25wb3N0XywKKyAgICAiaW5zZXJ0RGVidWdTaWducG9zdDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGluc2VydExpYnJhcmllcywKKyAgICAiaW5zZXJ0TGlicmFyaWVzIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChpbnN0YWxsTmFtZSwKKyAgICAiaW5zdGFsbE5hbWUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGluc3RhbmNlQ291bnQsCisgICAgImluc3RhbmNlQ291bnQiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlciwKKyAgICAiaW5zdGFu
Y2VEZXNjcmlwdG9yQnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpbnN0YW5jZURlc2Ny
aXB0b3JCdWZmZXJPZmZzZXQsCisgICAgImluc3RhbmNlRGVzY3JpcHRvckJ1ZmZlck9mZnNldCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlLAorICAgICJp
bnN0YW5jZURlc2NyaXB0b3JTdHJpZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGluc3RhbmNl
RGVzY3JpcHRvclR5cGUsCisgICAgImluc3RhbmNlRGVzY3JpcHRvclR5cGUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGluc3RhbmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMsCisgICAgImluc3Rh
bmNlZEFjY2VsZXJhdGlvblN0cnVjdHVyZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yLAorICAgICJpbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlRGVzY3JpcHRvciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaW50ZXJzZWN0aW9uRnVu
Y3Rpb25UYWJsZU9mZnNldCwKKyAgICAiaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZU9mZnNldCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaW9zdXJmYWNlLAorICAgICJpb3N1cmZhY2UiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGlvc3VyZmFjZVBsYW5lLAorICAgICJpb3N1cmZhY2VQbGFuZSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNBY3RpdmUsCisgICAgImlzQWN0aXZlIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChpc0FsaWFzYWJsZSwKKyAgICAiaXNBbGlhc2FibGUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKGlzQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCwKKyAgICAiaXNBbHBoYVRv
Q292ZXJhZ2VFbmFibGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0FscGhhVG9PbmVFbmFi
bGVkLAorICAgICJpc0FscGhhVG9PbmVFbmFibGVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChp
c0JsZW5kaW5nRW5hYmxlZCwKKyAgICAiaXNCbGVuZGluZ0VuYWJsZWQiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKGlzQ2FwdHVyaW5nLAorICAgICJpc0NhcHR1cmluZyIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoaXNEZXB0aDI0U3RlbmNpbDhQaXhlbEZvcm1hdFN1cHBvcnRlZCwKKyAgICAiaXNE
ZXB0aDI0U3RlbmNpbDhQaXhlbEZvcm1hdFN1cHBvcnRlZCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoaXNEZXB0aFRleHR1cmUsCisgICAgImlzRGVwdGhUZXh0dXJlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChpc0RlcHRoV3JpdGVFbmFibGVkLAorICAgICJpc0RlcHRoV3JpdGVFbmFibGVkIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc0ZyYW1lYnVmZmVyT25seSwKKyAgICAiaXNGcmFtZWJ1
ZmZlck9ubHkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzSGVhZGxlc3MsCisgICAgImlzSGVh
ZGxlc3MiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzTG93UG93ZXIsCisgICAgImlzTG93UG93
ZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGlzUGF0Y2hDb250cm9sUG9pbnREYXRhLAorICAg
ICJpc1BhdGNoQ29udHJvbFBvaW50RGF0YSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoaXNQYXRj
aERhdGEsCisgICAgImlzUGF0Y2hEYXRhIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChpc1Jhc3Rl
cml6YXRpb25FbmFibGVkLAorICAgICJpc1Jhc3Rlcml6YXRpb25FbmFibGVkIik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChpc1JlbW92YWJsZSwKKyAgICAiaXNSZW1vdmFibGUiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKGlzU2hhcmVhYmxlLAorICAgICJpc1NoYXJlYWJsZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoaXNTcGFyc2UsCisgICAgImlzU3BhcnNlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChpc1Rlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZCwKKyAgICAiaXNUZXNzZWxsYXRp
b25GYWN0b3JTY2FsZUVuYWJsZWQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGtlcm5lbEVuZFRp
bWUsCisgICAgImtlcm5lbEVuZFRpbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGtlcm5lbFN0
YXJ0VGltZSwKKyAgICAia2VybmVsU3RhcnRUaW1lIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChs
YWJlbCwKKyAgICAibGFiZWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxhbmd1YWdlVmVyc2lv
biwKKyAgICAibGFuZ3VhZ2VWZXJzaW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsYXllckF0
SW5kZXhfLAorICAgICJsYXllckF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsYXll
ckNvdW50LAorICAgICJsYXllckNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsYXllcnMs
CisgICAgImxheWVycyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGF5b3V0cywKKyAgICAibGF5
b3V0cyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGVuZ3RoLAorICAgICJsZW5ndGgiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKGxldmVsLAorICAgICJsZXZlbCIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobGlicmFyaWVzLAorICAgICJsaWJyYXJpZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KGxpYnJhcnlUeXBlLAorICAgICJsaWJyYXJ5VHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bGluZSwKKyAgICAibGluZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobGlua2VkRnVuY3Rpb25z
LAorICAgICJsaW5rZWRGdW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxvYWRBY3Rp
b24sCisgICAgImxvYWRBY3Rpb24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxvY2F0aW9uLAor
ICAgICJsb2NhdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobG9jYXRpb25OdW1iZXIsCisg
ICAgImxvY2F0aW9uTnVtYmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsb2RBdmVyYWdlLAor
ICAgICJsb2RBdmVyYWdlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChsb2RNYXhDbGFtcCwKKyAg
ICAibG9kTWF4Q2xhbXAiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKGxvZE1pbkNsYW1wLAorICAg
ICJsb2RNaW5DbGFtcCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobG9ncywKKyAgICAibG9ncyIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobWFnRmlsdGVyLAorICAgICJtYWdGaWx0ZXIiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKG1ha2VBbGlhc2FibGUsCisgICAgIm1ha2VBbGlhc2FibGUiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG1hcFBoeXNpY2FsVG9TY3JlZW5Db29yZGluYXRlc19mb3JM
YXllcl8sCisgICAgIm1hcFBoeXNpY2FsVG9TY3JlZW5Db29yZGluYXRlczpmb3JMYXllcjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG1hcFNjcmVlblRvUGh5c2ljYWxDb29yZGluYXRlc19mb3JM
YXllcl8sCisgICAgIm1hcFNjcmVlblRvUGh5c2ljYWxDb29yZGluYXRlczpmb3JMYXllcjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG1heEFuaXNvdHJvcHksCisgICAgIm1heEFuaXNvdHJvcHki
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heEFyZ3VtZW50QnVmZmVyU2FtcGxlckNvdW50LAor
ICAgICJtYXhBcmd1bWVudEJ1ZmZlclNhbXBsZXJDb3VudCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobWF4QXZhaWxhYmxlU2l6ZVdpdGhBbGlnbm1lbnRfLAorICAgICJtYXhBdmFpbGFibGVTaXpl
V2l0aEFsaWdubWVudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heEJ1ZmZlckxlbmd0aCwK
KyAgICAibWF4QnVmZmVyTGVuZ3RoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtYXhDYWxsU3Rh
Y2tEZXB0aCwKKyAgICAibWF4Q2FsbFN0YWNrRGVwdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG1heEZyYWdtZW50QnVmZmVyQmluZENvdW50LAorICAgICJtYXhGcmFnbWVudEJ1ZmZlckJpbmRD
b3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aCwK
KyAgICAibWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bWF4S2VybmVsQnVmZmVyQmluZENvdW50LAorICAgICJtYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFNhbXBsZUNvdW50LAorICAgICJtYXhTYW1wbGVD
b3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VGVzc2VsbGF0aW9uRmFjdG9yLAorICAg
ICJtYXhUZXNzZWxsYXRpb25GYWN0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFRocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoLAorICAgICJtYXhUaHJlYWRncm91cE1lbW9yeUxlbmd0aCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobWF4VGhyZWFkc1BlclRocmVhZGdyb3VwLAorICAgICJtYXhU
aHJlYWRzUGVyVGhyZWFkZ3JvdXAiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFRvdGFsVGhy
ZWFkc1BlclRocmVhZGdyb3VwLAorICAgICJtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VHJhbnNmZXJSYXRlLAorICAgICJtYXhUcmFuc2Zl
clJhdGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1heFZlcnRleEFtcGxpZmljYXRpb25Db3Vu
dCwKKyAgICAibWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChtYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQsCisgICAgIm1heFZlcnRleEJ1ZmZlckJpbmRD
b3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgsCisg
ICAgIm1heFZlcnRleENhbGxTdGFja0RlcHRoIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtZW1i
ZXJCeU5hbWVfLAorICAgICJtZW1iZXJCeU5hbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCht
ZW1iZXJzLAorICAgICJtZW1iZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtZW1vcnlCYXJy
aWVyV2l0aFJlc291cmNlc19jb3VudF8sCisgICAgIm1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2Vz
OmNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWVtb3J5QmFycmllcldpdGhSZXNvdXJj
ZXNfY291bnRfYWZ0ZXJTdGFnZXNfYmVmb3JlU3RhZ2VzXywKKyAgICAibWVtb3J5QmFycmllcldp
dGhSZXNvdXJjZXM6Y291bnQ6YWZ0ZXJTdGFnZXM6YmVmb3JlU3RhZ2VzOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobWVtb3J5QmFycmllcldpdGhTY29wZV8sCisgICAgIm1lbW9yeUJhcnJpZXJX
aXRoU2NvcGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChtZW1vcnlCYXJyaWVyV2l0aFNjb3Bl
X2FmdGVyU3RhZ2VzX2JlZm9yZVN0YWdlc18sCisgICAgIm1lbW9yeUJhcnJpZXJXaXRoU2NvcGU6
YWZ0ZXJTdGFnZXM6YmVmb3JlU3RhZ2VzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWluRmls
dGVyLAorICAgICJtaW5GaWx0ZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG1pbmltdW1MaW5l
YXJUZXh0dXJlQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXRfLAorICAgICJtaW5pbXVtTGluZWFyVGV4
dHVyZUFsaWdubWVudEZvclBpeGVsRm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobWlu
aW11bVRleHR1cmVCdWZmZXJBbGlnbm1lbnRGb3JQaXhlbEZvcm1hdF8sCisgICAgIm1pbmltdW1U
ZXh0dXJlQnVmZmVyQWxpZ25tZW50Rm9yUGl4ZWxGb3JtYXQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChtaXBGaWx0ZXIsCisgICAgIm1pcEZpbHRlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bWlwbWFwTGV2ZWxDb3VudCwKKyAgICAibWlwbWFwTGV2ZWxDb3VudCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobW90aW9uRW5kQm9yZGVyTW9kZSwKKyAgICAibW90aW9uRW5kQm9yZGVyTW9kZSIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwobW90aW9uRW5kVGltZSwKKyAgICAibW90aW9uRW5kVGlt
ZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobW90aW9uS2V5ZnJhbWVDb3VudCwKKyAgICAibW90
aW9uS2V5ZnJhbWVDb3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobW90aW9uU3RhcnRCb3Jk
ZXJNb2RlLAorICAgICJtb3Rpb25TdGFydEJvcmRlck1vZGUiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG1vdGlvblN0YXJ0VGltZSwKKyAgICAibW90aW9uU3RhcnRUaW1lIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChtb3Rpb25UcmFuc2Zvcm1CdWZmZXIsCisgICAgIm1vdGlvblRyYW5zZm9ybUJ1
ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0
LAorICAgICJtb3Rpb25UcmFuc2Zvcm1CdWZmZXJPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKG1vdGlvblRyYW5zZm9ybUNvdW50LAorICAgICJtb3Rpb25UcmFuc2Zvcm1Db3VudCIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobXV0YWJpbGl0eSwKKyAgICAibXV0YWJpbGl0eSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmFtZSwKKyAgICAibmFtZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3QWNjZWxlcmF0aW9uU3RydWN0dXJlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG5ld0FjY2VsZXJhdGlvblN0cnVjdHVyZVdpdGhTaXplXywKKyAgICAibmV3QWNjZWxlcmF0aW9u
U3RydWN0dXJlV2l0aFNpemU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdBcmd1bWVudEVu
Y29kZXJGb3JCdWZmZXJBdEluZGV4XywKKyAgICAibmV3QXJndW1lbnRFbmNvZGVyRm9yQnVmZmVy
QXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0FyZ3VtZW50RW5jb2RlcldpdGhB
cmd1bWVudHNfLAorICAgICJuZXdBcmd1bWVudEVuY29kZXJXaXRoQXJndW1lbnRzOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4XywKKyAg
ICAibmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobmV3QXJndW1lbnRFbmNvZGVyV2l0aEJ1ZmZlckluZGV4X3JlZmxlY3Rpb25fLAorICAg
ICJuZXdBcmd1bWVudEVuY29kZXJXaXRoQnVmZmVySW5kZXg6cmVmbGVjdGlvbjoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG5ld0JpbmFyeUFyY2hpdmVXaXRoRGVzY3JpcHRvcl9lcnJvcl8sCisg
ICAgIm5ld0JpbmFyeUFyY2hpdmVXaXRoRGVzY3JpcHRvcjplcnJvcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld0J1ZmZlcldpdGhCeXRlc19sZW5ndGhfb3B0aW9uc18sCisgICAgIm5ld0J1
ZmZlcldpdGhCeXRlczpsZW5ndGg6b3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d0J1ZmZlcldpdGhCeXRlc05vQ29weV9sZW5ndGhfb3B0aW9uc19kZWFsbG9jYXRvcl8sCisgICAg
Im5ld0J1ZmZlcldpdGhCeXRlc05vQ29weTpsZW5ndGg6b3B0aW9uczpkZWFsbG9jYXRvcjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9uc18sCisgICAg
Im5ld0J1ZmZlcldpdGhMZW5ndGg6b3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d0J1ZmZlcldpdGhMZW5ndGhfb3B0aW9uc19vZmZzZXRfLAorICAgICJuZXdCdWZmZXJXaXRoTGVu
Z3RoOm9wdGlvbnM6b2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q2FwdHVyZVNj
b3BlV2l0aENvbW1hbmRRdWV1ZV8sCisgICAgIm5ld0NhcHR1cmVTY29wZVdpdGhDb21tYW5kUXVl
dWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDYXB0dXJlU2NvcGVXaXRoRGV2aWNlXywK
KyAgICAibmV3Q2FwdHVyZVNjb3BlV2l0aERldmljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG5ld0NvbW1hbmRRdWV1ZSwKKyAgICAibmV3Q29tbWFuZFF1ZXVlIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdDb21tYW5kUXVldWVXaXRoTWF4Q29tbWFuZEJ1ZmZlckNvdW50XywKKyAgICAi
bmV3Q29tbWFuZFF1ZXVlV2l0aE1heENvbW1hbmRCdWZmZXJDb3VudDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5hcnlGdW5j
dGlvbnNfZXJyb3JfLAorICAgICJuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhBZGRpdGlvbmFs
QmluYXJ5RnVuY3Rpb25zOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0
ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX2NvbXBsZXRpb25IYW5kbGVyXywK
KyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjpvcHRpb25zOmNvbXBs
ZXRpb25IYW5kbGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3Q29tcHV0ZVBpcGVsaW5l
U3RhdGVXaXRoRGVzY3JpcHRvcl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfLAorICAgICJuZXdD
b21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm9wdGlvbnM6cmVmbGVjdGlvbjplcnJv
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1
bmN0aW9uX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVX
aXRoRnVuY3Rpb246Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChu
ZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9lcnJvcl8sCisgICAgIm5ld0NvbXB1
dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwobmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRnVuY3Rpb25fb3B0aW9uc19jb21wbGV0aW9u
SGFuZGxlcl8sCisgICAgIm5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOm9wdGlv
bnM6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb21wdXRl
UGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbl9vcHRpb25zX3JlZmxlY3Rpb25fZXJyb3JfLAorICAg
ICJuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpvcHRpb25zOnJlZmxlY3Rpb246
ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdDb3VudGVyU2FtcGxlQnVmZmVyV2l0
aERlc2NyaXB0b3JfZXJyb3JfLAorICAgICJuZXdDb3VudGVyU2FtcGxlQnVmZmVyV2l0aERlc2Ny
aXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdEZWZhdWx0TGlicmFyeSwK
KyAgICAibmV3RGVmYXVsdExpYnJhcnkiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0RlZmF1
bHRMaWJyYXJ5V2l0aEJ1bmRsZV9lcnJvcl8sCisgICAgIm5ld0RlZmF1bHRMaWJyYXJ5V2l0aEJ1
bmRsZTplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0RlcHRoU3RlbmNpbFN0YXRl
V2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9y
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RHluYW1pY0xpYnJhcnlfZXJyb3JfLAorICAg
ICJuZXdEeW5hbWljTGlicmFyeTplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0R5
bmFtaWNMaWJyYXJ5V2l0aFVSTF9lcnJvcl8sCisgICAgIm5ld0R5bmFtaWNMaWJyYXJ5V2l0aFVS
TDplcnJvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0V2ZW50LAorICAgICJuZXdFdmVu
dCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3RmVuY2UsCisgICAgIm5ld0ZlbmNlIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChuZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yX2NvbXBsZXRpb25I
YW5kbGVyXywKKyAgICAibmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpjb21wbGV0aW9uSGFuZGxl
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0b3JfZXJy
b3JfLAorICAgICJuZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yOmVycm9yOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwobmV3RnVuY3Rpb25XaXRoTmFtZV8sCisgICAgIm5ld0Z1bmN0aW9uV2l0aE5h
bWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdGdW5jdGlvbldpdGhOYW1lX2NvbnN0YW50
VmFsdWVzX2NvbXBsZXRpb25IYW5kbGVyXywKKyAgICAibmV3RnVuY3Rpb25XaXRoTmFtZTpjb25z
dGFudFZhbHVlczpjb21wbGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5l
d0Z1bmN0aW9uV2l0aE5hbWVfY29uc3RhbnRWYWx1ZXNfZXJyb3JfLAorICAgICJuZXdGdW5jdGlv
bldpdGhOYW1lOmNvbnN0YW50VmFsdWVzOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3SGVhcFdpdGhEZXNjcmlwdG9yXywKKyAgICAibmV3SGVhcFdpdGhEZXNjcmlwdG9yOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobmV3SW5kaXJlY3RDb21tYW5kQnVmZmVyV2l0aERlc2NyaXB0
b3JfbWF4Q29tbWFuZENvdW50X29wdGlvbnNfLAorICAgICJuZXdJbmRpcmVjdENvbW1hbmRCdWZm
ZXJXaXRoRGVzY3JpcHRvcjptYXhDb21tYW5kQ291bnQ6b3B0aW9uczoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcl8sCisg
ICAgIm5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRv
cl9zdGFnZV8sCisgICAgIm5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRv
cjpzdGFnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9u
V2l0aERlc2NyaXB0b3JfY29tcGxldGlvbkhhbmRsZXJfLAorICAgICJuZXdJbnRlcnNlY3Rpb25G
dW5jdGlvbldpdGhEZXNjcmlwdG9yOmNvbXBsZXRpb25IYW5kbGVyOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9lcnJvcl8sCisg
ICAgIm5ld0ludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aERlc2NyaXB0b3I6ZXJyb3I6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0aERhdGFfZXJyb3JfLAorICAgICJuZXdMaWJy
YXJ5V2l0aERhdGE6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0
aEZpbGVfZXJyb3JfLAorICAgICJuZXdMaWJyYXJ5V2l0aEZpbGU6ZXJyb3I6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0aFNvdXJjZV9vcHRpb25zX2NvbXBsZXRpb25IYW5k
bGVyXywKKyAgICAibmV3TGlicmFyeVdpdGhTb3VyY2U6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxl
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlXaXRoU291cmNlX29wdGlvbnNf
ZXJyb3JfLAorICAgICJuZXdMaWJyYXJ5V2l0aFNvdXJjZTpvcHRpb25zOmVycm9yOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3TGlicmFyeVdpdGhTdGl0Y2hlZERlc2NyaXB0b3JfY29tcGxl
dGlvbkhhbmRsZXJfLAorICAgICJuZXdMaWJyYXJ5V2l0aFN0aXRjaGVkRGVzY3JpcHRvcjpjb21w
bGV0aW9uSGFuZGxlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld0xpYnJhcnlXaXRoU3Rp
dGNoZWREZXNjcmlwdG9yX2Vycm9yXywKKyAgICAibmV3TGlicmFyeVdpdGhTdGl0Y2hlZERlc2Ny
aXB0b3I6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdMaWJyYXJ5V2l0aFVSTF9l
cnJvcl8sCisgICAgIm5ld0xpYnJhcnlXaXRoVVJMOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobmV3UmFzdGVyaXphdGlvblJhdGVNYXBXaXRoRGVzY3JpcHRvcl8sCisgICAgIm5ld1Jh
c3Rlcml6YXRpb25SYXRlTWFwV2l0aERlc2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChuZXdSZW1vdGVCdWZmZXJWaWV3Rm9yRGV2aWNlXywKKyAgICAibmV3UmVtb3RlQnVmZmVyVmll
d0ZvckRldmljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1JlbW90ZVRleHR1cmVWaWV3
Rm9yRGV2aWNlXywKKyAgICAibmV3UmVtb3RlVGV4dHVyZVZpZXdGb3JEZXZpY2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aEFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnNfZXJyb3JfLAorICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aEFkZGl0
aW9uYWxCaW5hcnlGdW5jdGlvbnM6ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3JfY29tcGxldGlvbkhhbmRsZXJfLAorICAg
ICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6Y29tcGxldGlvbkhhbmRsZXI6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2Ny
aXB0b3JfZXJyb3JfLAorICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6
ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0
aERlc2NyaXB0b3Jfb3B0aW9uc19jb21wbGV0aW9uSGFuZGxlcl8sCisgICAgIm5ld1JlbmRlclBp
cGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9y
X29wdGlvbnNfcmVmbGVjdGlvbl9lcnJvcl8sCisgICAgIm5ld1JlbmRlclBpcGVsaW5lU3RhdGVX
aXRoRGVzY3JpcHRvcjpvcHRpb25zOnJlZmxlY3Rpb246ZXJyb3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yX29wdGlvbnNf
Y29tcGxldGlvbkhhbmRsZXJfLAorICAgICJuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVE
ZXNjcmlwdG9yOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aFRpbGVEZXNjcmlwdG9yX29wdGlvbnNfcmVm
bGVjdGlvbl9lcnJvcl8sCisgICAgIm5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoVGlsZURlc2Ny
aXB0b3I6b3B0aW9uczpyZWZsZWN0aW9uOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
bmV3U2FtcGxlclN0YXRlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdTYW1wbGVyU3RhdGVXaXRo
RGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1NoYXJlZEV2ZW50LAorICAg
ICJuZXdTaGFyZWRFdmVudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3U2hhcmVkRXZlbnRI
YW5kbGUsCisgICAgIm5ld1NoYXJlZEV2ZW50SGFuZGxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChuZXdTaGFyZWRFdmVudFdpdGhIYW5kbGVfLAorICAgICJuZXdTaGFyZWRFdmVudFdpdGhIYW5k
bGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdTaGFyZWRUZXh0dXJlSGFuZGxlLAorICAg
ICJuZXdTaGFyZWRUZXh0dXJlSGFuZGxlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdTaGFy
ZWRUZXh0dXJlV2l0aERlc2NyaXB0b3JfLAorICAgICJuZXdTaGFyZWRUZXh0dXJlV2l0aERlc2Ny
aXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdTaGFyZWRUZXh0dXJlV2l0aEhhbmRs
ZV8sCisgICAgIm5ld1NoYXJlZFRleHR1cmVXaXRoSGFuZGxlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwobmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXRfLAorICAgICJuZXdUZXh0dXJlVmll
d1dpdGhQaXhlbEZvcm1hdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVWaWV3
V2l0aFBpeGVsRm9ybWF0X3RleHR1cmVUeXBlX2xldmVsc19zbGljZXNfLAorICAgICJuZXdUZXh0
dXJlVmlld1dpdGhQaXhlbEZvcm1hdDp0ZXh0dXJlVHlwZTpsZXZlbHM6c2xpY2VzOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwobmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXRfdGV4dHVyZVR5
cGVfbGV2ZWxzX3NsaWNlc19zd2l6emxlXywKKyAgICAibmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxG
b3JtYXQ6dGV4dHVyZVR5cGU6bGV2ZWxzOnNsaWNlczpzd2l6emxlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yXywKKyAgICAibmV3VGV4dHVyZVdpdGhE
ZXNjcmlwdG9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3VGV4dHVyZVdpdGhEZXNjcmlw
dG9yX2lvc3VyZmFjZV9wbGFuZV8sCisgICAgIm5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjppb3N1
cmZhY2U6cGxhbmU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdUZXh0dXJlV2l0aERlc2Ny
aXB0b3Jfb2Zmc2V0XywKKyAgICAibmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOm9mZnNldDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcl9vZmZzZXRfYnl0
ZXNQZXJSb3dfLAorICAgICJuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6b2Zmc2V0OmJ5dGVzUGVy
Um93OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwobmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRo
RGVzY3JpcHRvcl8sCisgICAgIm5ld1Zpc2libGVGdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3I6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChuZXdWaXNpYmxlRnVuY3Rpb25UYWJsZVdpdGhEZXNj
cmlwdG9yX3N0YWdlXywKKyAgICAibmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRv
cjpzdGFnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5vZGVzLAorICAgICJub2RlcyIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwobm9ybWFsaXplZENvb3JkaW5hdGVzLAorICAgICJub3JtYWxp
emVkQ29vcmRpbmF0ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG5vdGlmeUxpc3RlbmVyX2F0
VmFsdWVfYmxvY2tfLAorICAgICJub3RpZnlMaXN0ZW5lcjphdFZhbHVlOmJsb2NrOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XywKKyAgICAib2JqZWN0
QXRJbmRleGVkU3Vic2NyaXB0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwob2Zmc2V0LAorICAg
ICJvZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wYXF1ZSwKKyAgICAib3BhcXVlIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzXywKKyAg
ICAib3B0aW1pemVDb250ZW50c0ZvckNQVUFjY2VzczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KG9wdGltaXplQ29udGVudHNGb3JDUFVBY2Nlc3Nfc2xpY2VfbGV2ZWxfLAorICAgICJvcHRpbWl6
ZUNvbnRlbnRzRm9yQ1BVQWNjZXNzOnNsaWNlOmxldmVsOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwob3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vzc18sCisgICAgIm9wdGltaXplQ29udGVudHNG
b3JHUFVBY2Nlc3M6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChvcHRpbWl6ZUNvbnRlbnRzRm9y
R1BVQWNjZXNzX3NsaWNlX2xldmVsXywKKyAgICAib3B0aW1pemVDb250ZW50c0ZvckdQVUFjY2Vz
czpzbGljZTpsZXZlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wdGltaXplSW5kaXJlY3RD
b21tYW5kQnVmZmVyX3dpdGhSYW5nZV8sCisgICAgIm9wdGltaXplSW5kaXJlY3RDb21tYW5kQnVm
ZmVyOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG9wdGlvbnMsCisgICAgIm9w
dGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG91dHB1dE5vZGUsCisgICAgIm91dHB1dE5v
ZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKG91dHB1dFVSTCwKKyAgICAib3V0cHV0VVJMIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChwYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERl
c2NyaXB0b3JfLAorICAgICJwYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0
b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwYXJhbWV0ZXJCdWZmZXJTaXplQW5kQWxpZ24s
CisgICAgInBhcmFtZXRlckJ1ZmZlclNpemVBbmRBbGlnbiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocGFyZW50UmVsYXRpdmVMZXZlbCwKKyAgICAicGFyZW50UmVsYXRpdmVMZXZlbCIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocGFyZW50UmVsYXRpdmVTbGljZSwKKyAgICAicGFyZW50UmVsYXRp
dmVTbGljZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGFyZW50VGV4dHVyZSwKKyAgICAicGFy
ZW50VGV4dHVyZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocGF0Y2hDb250cm9sUG9pbnRDb3Vu
dCwKKyAgICAicGF0Y2hDb250cm9sUG9pbnRDb3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
cGF0Y2hUeXBlLAorICAgICJwYXRjaFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBlZXJD
b3VudCwKKyAgICAicGVlckNvdW50Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwZWVyR3JvdXBJ
RCwKKyAgICAicGVlckdyb3VwSUQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHBlZXJJbmRleCwK
KyAgICAicGVlckluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwaHlzaWNhbEdyYW51bGFy
aXR5LAorICAgICJwaHlzaWNhbEdyYW51bGFyaXR5Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChw
aHlzaWNhbFNpemVGb3JMYXllcl8sCisgICAgInBoeXNpY2FsU2l6ZUZvckxheWVyOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocGl4ZWxGb3JtYXQsCisgICAgInBpeGVsRm9ybWF0Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChwb2ludGVyVHlwZSwKKyAgICAicG9pbnRlclR5cGUiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHBvcERlYnVnR3JvdXAsCisgICAgInBvcERlYnVnR3JvdXAiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHByZWxvYWRlZExpYnJhcmllcywKKyAgICAicHJlbG9hZGVkTGli
cmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwcmVwcm9jZXNzb3JNYWNyb3MsCisgICAg
InByZXByb2Nlc3Nvck1hY3JvcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudCwKKyAg
ICAicHJlc2VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocHJlc2VudEFmdGVyTWluaW11bUR1
cmF0aW9uXywKKyAgICAicHJlc2VudEFmdGVyTWluaW11bUR1cmF0aW9uOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwocHJlc2VudEF0VGltZV8sCisgICAgInByZXNlbnRBdFRpbWU6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChwcmVzZW50RHJhd2FibGVfLAorICAgICJwcmVzZW50RHJhd2FibGU6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChwcmVzZW50RHJhd2FibGVfYWZ0ZXJNaW5pbXVtRHVy
YXRpb25fLAorICAgICJwcmVzZW50RHJhd2FibGU6YWZ0ZXJNaW5pbXVtRHVyYXRpb246Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChwcmVzZW50RHJhd2FibGVfYXRUaW1lXywKKyAgICAicHJlc2Vu
dERyYXdhYmxlOmF0VGltZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlbnRlZFRpbWUs
CisgICAgInByZXNlbnRlZFRpbWUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHByZXNlcnZlSW52
YXJpYW5jZSwKKyAgICAicHJlc2VydmVJbnZhcmlhbmNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChwcml2YXRlRnVuY3Rpb25zLAorICAgICJwcml2YXRlRnVuY3Rpb25zIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChwdXNoRGVidWdHcm91cF8sCisgICAgInB1c2hEZWJ1Z0dyb3VwOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwockFkZHJlc3NNb2RlLAorICAgICJyQWRkcmVzc01vZGUiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHJhc3RlclNhbXBsZUNvdW50LAorICAgICJyYXN0ZXJTYW1wbGVD
b3VudCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmFzdGVyaXphdGlvblJhdGVNYXAsCisgICAg
InJhc3Rlcml6YXRpb25SYXRlTWFwIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyYXN0ZXJpemF0
aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZV8sCisgICAgInJhc3Rlcml6YXRpb25S
YXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
cmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yV2l0aFNjcmVlblNpemVfbGF5ZXJfLAorICAg
ICJyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVuU2l6ZTpsYXllcjoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhT
Y3JlZW5TaXplX2xheWVyQ291bnRfbGF5ZXJzXywKKyAgICAicmFzdGVyaXphdGlvblJhdGVNYXBE
ZXNjcmlwdG9yV2l0aFNjcmVlblNpemU6bGF5ZXJDb3VudDpsYXllcnM6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChyZWFkTWFzaywKKyAgICAicmVhZE1hc2siKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHJlYWRXcml0ZVRleHR1cmVTdXBwb3J0LAorICAgICJyZWFkV3JpdGVUZXh0dXJlU3VwcG9y
dCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVjb21tZW5kZWRNYXhXb3JraW5nU2V0U2l6ZSwK
KyAgICAicmVjb21tZW5kZWRNYXhXb3JraW5nU2V0U2l6ZSIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocmVmaXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfZGVzY3JpcHRvcl9kZXN0aW5hdGlvbl9zY3Jh
dGNoQnVmZmVyX3NjcmF0Y2hCdWZmZXJPZmZzZXRfLAorICAgICJyZWZpdEFjY2VsZXJhdGlvblN0
cnVjdHVyZTpkZXNjcmlwdG9yOmRlc3RpbmF0aW9uOnNjcmF0Y2hCdWZmZXI6c2NyYXRjaEJ1ZmZl
ck9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlZ2lzdHJ5SUQsCisgICAgInJlZ2lz
dHJ5SUQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbW90ZVN0b3JhZ2VCdWZmZXIsCisgICAg
InJlbW90ZVN0b3JhZ2VCdWZmZXIiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbW90ZVN0b3Jh
Z2VUZXh0dXJlLAorICAgICJyZW1vdGVTdG9yYWdlVGV4dHVyZSIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwocmVtb3ZlQWxsRGVidWdNYXJrZXJzLAorICAgICJyZW1vdmVBbGxEZWJ1Z01hcmtlcnMi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbmRlckNvbW1hbmRFbmNvZGVyLAorICAgICJyZW5k
ZXJDb21tYW5kRW5jb2RlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVuZGVyQ29tbWFuZEVu
Y29kZXJXaXRoRGVzY3JpcHRvcl8sCisgICAgInJlbmRlckNvbW1hbmRFbmNvZGVyV2l0aERlc2Ny
aXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZW5kZXJQYXNzRGVzY3JpcHRvciwKKyAg
ICAicmVuZGVyUGFzc0Rlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbmRlclRh
cmdldEFycmF5TGVuZ3RoLAorICAgICJyZW5kZXJUYXJnZXRBcnJheUxlbmd0aCIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwocmVuZGVyVGFyZ2V0SGVpZ2h0LAorICAgICJyZW5kZXJUYXJnZXRIZWln
aHQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlbmRlclRhcmdldFdpZHRoLAorICAgICJyZW5k
ZXJUYXJnZXRXaWR0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVwbGFjZVJlZ2lvbl9taXBt
YXBMZXZlbF9zbGljZV93aXRoQnl0ZXNfYnl0ZXNQZXJSb3dfYnl0ZXNQZXJJbWFnZV8sCisgICAg
InJlcGxhY2VSZWdpb246bWlwbWFwTGV2ZWw6c2xpY2U6d2l0aEJ5dGVzOmJ5dGVzUGVyUm93OmJ5
dGVzUGVySW1hZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXBsYWNlUmVnaW9uX21pcG1h
cExldmVsX3dpdGhCeXRlc19ieXRlc1BlclJvd18sCisgICAgInJlcGxhY2VSZWdpb246bWlwbWFw
TGV2ZWw6d2l0aEJ5dGVzOmJ5dGVzUGVyUm93OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVx
dWlyZWQsCisgICAgInJlcXVpcmVkIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyZXNldCwKKyAg
ICAicmVzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc2V0Q29tbWFuZHNJbkJ1ZmZlcl93
aXRoUmFuZ2VfLAorICAgICJyZXNldENvbW1hbmRzSW5CdWZmZXI6d2l0aFJhbmdlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwocmVzZXRUZXh0dXJlQWNjZXNzQ291bnRlcnNfcmVnaW9uX21pcExl
dmVsX3NsaWNlXywKKyAgICAicmVzZXRUZXh0dXJlQWNjZXNzQ291bnRlcnM6cmVnaW9uOm1pcExl
dmVsOnNsaWNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzZXRXaXRoUmFuZ2VfLAorICAg
ICJyZXNldFdpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc29sdmVDb3VudGVy
UmFuZ2VfLAorICAgICJyZXNvbHZlQ291bnRlclJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwocmVzb2x2ZUNvdW50ZXJzX2luUmFuZ2VfZGVzdGluYXRpb25CdWZmZXJfZGVzdGluYXRpb25P
ZmZzZXRfLAorICAgICJyZXNvbHZlQ291bnRlcnM6aW5SYW5nZTpkZXN0aW5hdGlvbkJ1ZmZlcjpk
ZXN0aW5hdGlvbk9mZnNldDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc29sdmVEZXB0aFBs
YW5lLAorICAgICJyZXNvbHZlRGVwdGhQbGFuZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVz
b2x2ZUxldmVsLAorICAgICJyZXNvbHZlTGV2ZWwiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJl
c29sdmVTbGljZSwKKyAgICAicmVzb2x2ZVNsaWNlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChy
ZXNvbHZlVGV4dHVyZSwKKyAgICAicmVzb2x2ZVRleHR1cmUiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHJlc291cmNlT3B0aW9ucywKKyAgICAicmVzb3VyY2VPcHRpb25zIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChyZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIsCisgICAgInJlc291cmNlU3Rh
dGVDb21tYW5kRW5jb2RlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmVzb3VyY2VTdGF0ZUNv
bW1hbmRFbmNvZGVyV2l0aERlc2NyaXB0b3JfLAorICAgICJyZXNvdXJjZVN0YXRlQ29tbWFuZEVu
Y29kZXJXaXRoRGVzY3JpcHRvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHJlc291cmNlU3Rh
dGVQYXNzRGVzY3JpcHRvciwKKyAgICAicmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChyZXRhaW5lZFJlZmVyZW5jZXMsCisgICAgInJldGFpbmVkUmVm
ZXJlbmNlcyIpOworX01UTF9QUklWQVRFX0RFRl9TRUwocmdiQmxlbmRPcGVyYXRpb24sCisgICAg
InJnYkJsZW5kT3BlcmF0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChyb290UmVzb3VyY2Us
CisgICAgInJvb3RSZXNvdXJjZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc0FkZHJlc3NNb2Rl
LAorICAgICJzQWRkcmVzc01vZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNhbXBsZUJ1ZmZl
ciwKKyAgICAic2FtcGxlQnVmZmVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzYW1wbGVCdWZm
ZXJBdHRhY2htZW50cywKKyAgICAic2FtcGxlQnVmZmVyQXR0YWNobWVudHMiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNhbXBsZUNvdW50LAorICAgICJzYW1wbGVDb3VudCIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2FtcGxlQ291bnRlcnNJbkJ1ZmZlcl9hdFNhbXBsZUluZGV4X3dpdGhCYXJy
aWVyXywKKyAgICAic2FtcGxlQ291bnRlcnNJbkJ1ZmZlcjphdFNhbXBsZUluZGV4OndpdGhCYXJy
aWVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2FtcGxlVGltZXN0YW1wc19ncHVUaW1lc3Rh
bXBfLAorICAgICJzYW1wbGVUaW1lc3RhbXBzOmdwdVRpbWVzdGFtcDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNjcmVlblNpemUsCisgICAgInNjcmVlblNpemUiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNlcmlhbGl6ZVRvVVJMX2Vycm9yXywKKyAgICAic2VyaWFsaXplVG9VUkw6ZXJyb3I6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZm
ZXJJbmRleF8sCisgICAgInNldEFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0SW5kZXhf
LAorICAgICJzZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldEFjY2Vzc18sCisgICAgInNldEFjY2VzczoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEFsbG93RHVwbGljYXRlSW50ZXJzZWN0aW9uRnVuY3Rpb25JbnZvY2F0aW9uXywK
KyAgICAic2V0QWxsb3dEdXBsaWNhdGVJbnRlcnNlY3Rpb25GdW5jdGlvbkludm9jYXRpb246Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRBbGxvd0dQVU9wdGltaXplZENvbnRlbnRzXywKKyAg
ICAic2V0QWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50czoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldEFscGhhQmxlbmRPcGVyYXRpb25fLAorICAgICJzZXRBbHBoYUJsZW5kT3BlcmF0aW9uOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QWxwaGFUb0NvdmVyYWdlRW5hYmxlZF8sCisgICAg
InNldEFscGhhVG9Db3ZlcmFnZUVuYWJsZWQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRB
bHBoYVRvT25lRW5hYmxlZF8sCisgICAgInNldEFscGhhVG9PbmVFbmFibGVkOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0QXJndW1lbnRCdWZmZXJfb2Zmc2V0XywKKyAgICAic2V0QXJndW1l
bnRCdWZmZXI6b2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QXJndW1lbnRCdWZm
ZXJfc3RhcnRPZmZzZXRfYXJyYXlFbGVtZW50XywKKyAgICAic2V0QXJndW1lbnRCdWZmZXI6c3Rh
cnRPZmZzZXQ6YXJyYXlFbGVtZW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QXJndW1l
bnRJbmRleF8sCisgICAgInNldEFyZ3VtZW50SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRBcmd1bWVudHNfLAorICAgICJzZXRBcmd1bWVudHM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRBcnJheUxlbmd0aF8sCisgICAgInNldEFycmF5TGVuZ3RoOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0QXR0cmlidXRlc18sCisgICAgInNldEF0dHJpYnV0ZXM6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRCYWNrRmFjZVN0ZW5jaWxfLAorICAgICJzZXRCYWNrRmFjZVN0
ZW5jaWw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCYXJyaWVyLAorICAgICJzZXRCYXJy
aWVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCaW5hcnlBcmNoaXZlc18sCisgICAgInNl
dEJpbmFyeUFyY2hpdmVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QmluYXJ5RnVuY3Rp
b25zXywKKyAgICAic2V0QmluYXJ5RnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0QmxlbmRDb2xvclJlZF9ncmVlbl9ibHVlX2FscGhhXywKKyAgICAic2V0QmxlbmRDb2xvclJl
ZDpncmVlbjpibHVlOmFscGhhOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QmxlbmRpbmdF
bmFibGVkXywKKyAgICAic2V0QmxlbmRpbmdFbmFibGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0Qm9yZGVyQ29sb3JfLAorICAgICJzZXRCb3JkZXJDb2xvcjoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldEJvdW5kaW5nQm94QnVmZmVyXywKKyAgICAic2V0Qm91bmRpbmdCb3hCdWZm
ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCb3VuZGluZ0JveEJ1ZmZlck9mZnNldF8s
CisgICAgInNldEJvdW5kaW5nQm94QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0Qm91bmRpbmdCb3hCdWZmZXJzXywKKyAgICAic2V0Qm91bmRpbmdCb3hCdWZmZXJzOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Qm91bmRpbmdCb3hDb3VudF8sCisgICAgInNldEJv
dW5kaW5nQm94Q291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRCb3VuZGluZ0JveFN0
cmlkZV8sCisgICAgInNldEJvdW5kaW5nQm94U3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0QnVmZmVyXywKKyAgICAic2V0QnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0QnVmZmVyX29mZnNldF9hdEluZGV4XywKKyAgICAic2V0QnVmZmVyOm9mZnNldDphdEluZGV4
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0QnVmZmVySW5kZXhfLAorICAgICJzZXRCdWZm
ZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJ1ZmZlck9mZnNldF9hdEluZGV4
XywKKyAgICAic2V0QnVmZmVyT2Zmc2V0OmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXywKKyAgICAic2V0QnVmZmVyczpvZmZzZXRz
OndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEJ5dGVzX2xlbmd0aF9hdElu
ZGV4XywKKyAgICAic2V0Qnl0ZXM6bGVuZ3RoOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRDYXB0dXJlT2JqZWN0XywKKyAgICAic2V0Q2FwdHVyZU9iamVjdDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldENsZWFyQ29sb3JfLAorICAgICJzZXRDbGVhckNvbG9yOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q2xlYXJEZXB0aF8sCisgICAgInNldENsZWFyRGVwdGg6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDbGVhclN0ZW5jaWxfLAorICAgICJzZXRDbGVh
clN0ZW5jaWw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb2xvclN0b3JlQWN0aW9uX2F0
SW5kZXhfLAorICAgICJzZXRDb2xvclN0b3JlQWN0aW9uOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9uc19hdEluZGV4XywKKyAgICAic2V0
Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnM6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldENvbW1hbmRUeXBlc18sCisgICAgInNldENvbW1hbmRUeXBlczoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldENvbXBhcmVGdW5jdGlvbl8sCisgICAgInNldENvbXBhcmVGdW5jdGlvbjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbXB1dGVGdW5jdGlvbl8sCisgICAgInNldENv
bXB1dGVGdW5jdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbXB1dGVQaXBlbGlu
ZVN0YXRlXywKKyAgICAic2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZV9hdEluZGV4XywKKyAgICAic2V0Q29tcHV0
ZVBpcGVsaW5lU3RhdGU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbXB1
dGVQaXBlbGluZVN0YXRlc193aXRoUmFuZ2VfLAorICAgICJzZXRDb21wdXRlUGlwZWxpbmVTdGF0
ZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29uc3RhbnRCbG9ja0Fs
aWdubWVudF8sCisgICAgInNldENvbnN0YW50QmxvY2tBbGlnbm1lbnQ6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRDb25zdGFudFZhbHVlX3R5cGVfYXRJbmRleF8sCisgICAgInNldENvbnN0
YW50VmFsdWU6dHlwZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29uc3Rh
bnRWYWx1ZV90eXBlX3dpdGhOYW1lXywKKyAgICAic2V0Q29uc3RhbnRWYWx1ZTp0eXBlOndpdGhO
YW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Q29uc3RhbnRWYWx1ZXNfLAorICAgICJz
ZXRDb25zdGFudFZhbHVlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENvbnN0YW50VmFs
dWVzX3R5cGVfd2l0aFJhbmdlXywKKyAgICAic2V0Q29uc3RhbnRWYWx1ZXM6dHlwZTp3aXRoUmFu
Z2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRDb250cm9sRGVwZW5kZW5jaWVzXywKKyAg
ICAic2V0Q29udHJvbERlcGVuZGVuY2llczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldENv
dW50ZXJTZXRfLAorICAgICJzZXRDb3VudGVyU2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0Q3B1Q2FjaGVNb2RlXywKKyAgICAic2V0Q3B1Q2FjaGVNb2RlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0Q3VsbE1vZGVfLAorICAgICJzZXRDdWxsTW9kZToiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldERhdGFUeXBlXywKKyAgICAic2V0RGF0YVR5cGU6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXREZWZhdWx0Q2FwdHVyZVNjb3BlXywKKyAgICAic2V0RGVmYXVsdENhcHR1
cmVTY29wZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlZmF1bHRSYXN0ZXJTYW1wbGVD
b3VudF8sCisgICAgInNldERlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldERlcHRoXywKKyAgICAic2V0RGVwdGg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXREZXB0aEF0dGFjaG1lbnRfLAorICAgICJzZXREZXB0aEF0dGFjaG1lbnQ6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdF8sCisgICAg
InNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RGVwdGhCaWFzX3Nsb3BlU2NhbGVfY2xhbXBfLAorICAgICJzZXREZXB0aEJpYXM6c2xvcGVT
Y2FsZTpjbGFtcDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoQ2xpcE1vZGVfLAor
ICAgICJzZXREZXB0aENsaXBNb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhD
b21wYXJlRnVuY3Rpb25fLAorICAgICJzZXREZXB0aENvbXBhcmVGdW5jdGlvbjoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldERlcHRoRmFpbHVyZU9wZXJhdGlvbl8sCisgICAgInNldERlcHRo
RmFpbHVyZU9wZXJhdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERlcHRoUGxhbmVf
LAorICAgICJzZXREZXB0aFBsYW5lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RGVwdGhS
ZXNvbHZlRmlsdGVyXywKKyAgICAic2V0RGVwdGhSZXNvbHZlRmlsdGVyOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0RGVwdGhTdGVuY2lsUGFzc09wZXJhdGlvbl8sCisgICAgInNldERlcHRo
U3RlbmNpbFBhc3NPcGVyYXRpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aFN0
ZW5jaWxTdGF0ZV8sCisgICAgInNldERlcHRoU3RlbmNpbFN0YXRlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0RGVwdGhTdG9yZUFjdGlvbl8sCisgICAgInNldERlcHRoU3RvcmVBY3Rpb246
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9uc18sCisg
ICAgInNldERlcHRoU3RvcmVBY3Rpb25PcHRpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0RGVwdGhXcml0ZUVuYWJsZWRfLAorICAgICJzZXREZXB0aFdyaXRlRW5hYmxlZDoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldERlc3RpbmF0aW9uXywKKyAgICAic2V0RGVzdGluYXRpb246
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXREZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3Jf
LAorICAgICJzZXREZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3I6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXREZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yXywKKyAgICAic2V0RGVzdGluYXRp
b25SR0JCbGVuZEZhY3RvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldERpc3BhdGNoVHlw
ZV8sCisgICAgInNldERpc3BhdGNoVHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEVu
ZE9mRW5jb2RlclNhbXBsZUluZGV4XywKKyAgICAic2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5kZXg6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRFbmRPZkZyYWdtZW50U2FtcGxlSW5kZXhfLAor
ICAgICJzZXRFbmRPZkZyYWdtZW50U2FtcGxlSW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRFbmRPZlZlcnRleFNhbXBsZUluZGV4XywKKyAgICAic2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJ
bmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEVycm9yT3B0aW9uc18sCisgICAgInNl
dEVycm9yT3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZhc3RNYXRoRW5hYmxl
ZF8sCisgICAgInNldEZhc3RNYXRoRW5hYmxlZDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dEZvcm1hdF8sCisgICAgInNldEZvcm1hdDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZy
YWdtZW50QWNjZWxlcmF0aW9uU3RydWN0dXJlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRGcmFn
bWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0RnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zXywKKyAgICAic2V0
RnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0RnJhZ21lbnRCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudEJ1
ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50
QnVmZmVyT2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudEJ1ZmZlck9mZnNldDphdElu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRCdWZmZXJzX29mZnNldHNf
d2l0aFJhbmdlXywKKyAgICAic2V0RnJhZ21lbnRCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRCeXRlc19sZW5ndGhfYXRJbmRleF8s
CisgICAgInNldEZyYWdtZW50Qnl0ZXM6bGVuZ3RoOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRGcmFnbWVudEZ1bmN0aW9uXywKKyAgICAic2V0RnJhZ21lbnRGdW5jdGlvbjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZV9hdEJ1ZmZlckluZGV4XywKKyAgICAic2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVu
dEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldEZy
YWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnNfLAorICAgICJzZXRG
cmFnbWVudExpbmtlZEZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdt
ZW50UHJlbG9hZGVkTGlicmFyaWVzXywKKyAgICAic2V0RnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJp
ZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZV9hdElu
ZGV4XywKKyAgICAic2V0RnJhZ21lbnRTYW1wbGVyU3RhdGU6YXRJbmRleDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEZyYWdtZW50U2FtcGxlclN0YXRlX2xvZE1pbkNsYW1wX2xvZE1heENs
YW1wX2F0SW5kZXhfLAorICAgICJzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDps
b2RNYXhDbGFtcDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRT
YW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNfd2l0aFJhbmdlXywKKyAgICAi
c2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RNYXhDbGFtcHM6d2l0aFJh
bmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGVzX3dp
dGhSYW5nZV8sCisgICAgInNldEZyYWdtZW50U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRGcmFnbWVudFRleHR1cmVfYXRJbmRleF8sCisgICAgInNl
dEZyYWdtZW50VGV4dHVyZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJh
Z21lbnRUZXh0dXJlc193aXRoUmFuZ2VfLAorICAgICJzZXRGcmFnbWVudFRleHR1cmVzOndpdGhS
YW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9u
VGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9uVGFi
bGU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEZyYWdtZW50Vmlz
aWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldEZyYWdtZW50Vmlz
aWJsZUZ1bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldEZyb250RmFjZVN0ZW5jaWxfLAorICAgICJzZXRGcm9udEZhY2VTdGVuY2lsOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnJvbnRGYWNpbmdXaW5kaW5nXywKKyAgICAic2V0RnJv
bnRGYWNpbmdXaW5kaW5nOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0RnVuY3Rpb25fYXRJ
bmRleF8sCisgICAgInNldEZ1bmN0aW9uOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRGdW5jdGlvbkNvdW50XywKKyAgICAic2V0RnVuY3Rpb25Db3VudDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEZ1bmN0aW9uR3JhcGhzXywKKyAgICAic2V0RnVuY3Rpb25HcmFwaHM6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGdW5jdGlvbk5hbWVfLAorICAgICJzZXRGdW5j
dGlvbk5hbWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGdW5jdGlvbnNfLAorICAgICJz
ZXRGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRGdW5jdGlvbnNfd2l0aFJh
bmdlXywKKyAgICAic2V0RnVuY3Rpb25zOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldEdlb21ldHJ5RGVzY3JpcHRvcnNfLAorICAgICJzZXRHZW9tZXRyeURlc2NyaXB0b3Jz
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0R3JvdXBzXywKKyAgICAic2V0R3JvdXBzOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SGF6YXJkVHJhY2tpbmdNb2RlXywKKyAgICAic2V0
SGF6YXJkVHJhY2tpbmdNb2RlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SGVpZ2h0XywK
KyAgICAic2V0SGVpZ2h0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW1hZ2VibG9ja1Nh
bXBsZUxlbmd0aF8sCisgICAgInNldEltYWdlYmxvY2tTYW1wbGVMZW5ndGg6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRJbWFnZWJsb2NrV2lkdGhfaGVpZ2h0XywKKyAgICAic2V0SW1hZ2Vi
bG9ja1dpZHRoOmhlaWdodDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluZGV4XywKKyAg
ICAic2V0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRJbmRleEJ1ZmZlcl8sCisg
ICAgInNldEluZGV4QnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kZXhCdWZm
ZXJJbmRleF8sCisgICAgInNldEluZGV4QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRJbmRleEJ1ZmZlck9mZnNldF8sCisgICAgInNldEluZGV4QnVmZmVyT2Zmc2V0OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kZXhUeXBlXywKKyAgICAic2V0SW5kZXhUeXBl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyX2F0SW5k
ZXhfLAorICAgICJzZXRJbmRpcmVjdENvbW1hbmRCdWZmZXI6YXRJbmRleDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnNfd2l0aFJhbmdlXywKKyAgICAi
c2V0SW5kaXJlY3RDb21tYW5kQnVmZmVyczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRJbmhlcml0QnVmZmVyc18sCisgICAgInNldEluaGVyaXRCdWZmZXJzOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0SW5oZXJpdFBpcGVsaW5lU3RhdGVfLAorICAgICJzZXRJbmhl
cml0UGlwZWxpbmVTdGF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldElucHV0UHJpbWl0
aXZlVG9wb2xvZ3lfLAorICAgICJzZXRJbnB1dFByaW1pdGl2ZVRvcG9sb2d5OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0SW5zZXJ0TGlicmFyaWVzXywKKyAgICAic2V0SW5zZXJ0TGlicmFy
aWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFsbE5hbWVfLAorICAgICJzZXRJ
bnN0YWxsTmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldEluc3RhbmNlQ291bnRfLAor
ICAgICJzZXRJbnN0YW5jZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFu
Y2VEZXNjcmlwdG9yQnVmZmVyXywKKyAgICAic2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0
XywKKyAgICAic2V0SW5zdGFuY2VEZXNjcmlwdG9yQnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0SW5zdGFuY2VEZXNjcmlwdG9yU3RyaWRlXywKKyAgICAic2V0SW5zdGFu
Y2VEZXNjcmlwdG9yU3RyaWRlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0SW5zdGFuY2VE
ZXNjcmlwdG9yVHlwZV8sCisgICAgInNldEluc3RhbmNlRGVzY3JpcHRvclR5cGU6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRJbnN0YW5jZWRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzXywKKyAg
ICAic2V0SW5zdGFuY2VkQWNjZWxlcmF0aW9uU3RydWN0dXJlczoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisgICAg
InNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRJbmRleF8sCisgICAg
InNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVPZmZzZXRfLAorICAgICJzZXRJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXywKKyAgICAic2V0SW50
ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aFJhbmdlXywKKyAgICAi
c2V0SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0S2VybmVsQnVmZmVyX29mZnNldF9hdEluZGV4XywKKyAgICAic2V0S2VybmVs
QnVmZmVyOm9mZnNldDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TGFiZWxf
LAorICAgICJzZXRMYWJlbDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldExhbmd1YWdlVmVy
c2lvbl8sCisgICAgInNldExhbmd1YWdlVmVyc2lvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldExheWVyX2F0SW5kZXhfLAorICAgICJzZXRMYXllcjphdEluZGV4OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0TGV2ZWxfLAorICAgICJzZXRMZXZlbDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldExpYnJhcmllc18sCisgICAgInNldExpYnJhcmllczoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldExpYnJhcnlUeXBlXywKKyAgICAic2V0TGlicmFyeVR5cGU6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRMaW5rZWRGdW5jdGlvbnNfLAorICAgICJzZXRMaW5rZWRGdW5j
dGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRMb2FkQWN0aW9uXywKKyAgICAic2V0
TG9hZEFjdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldExvZEF2ZXJhZ2VfLAorICAg
ICJzZXRMb2RBdmVyYWdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TG9kTWF4Q2xhbXBf
LAorICAgICJzZXRMb2RNYXhDbGFtcDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldExvZE1p
bkNsYW1wXywKKyAgICAic2V0TG9kTWluQ2xhbXA6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRNYWdGaWx0ZXJfLAorICAgICJzZXRNYWdGaWx0ZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRNYXhBbmlzb3Ryb3B5XywKKyAgICAic2V0TWF4QW5pc290cm9weToiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldE1heENhbGxTdGFja0RlcHRoXywKKyAgICAic2V0TWF4Q2FsbFN0YWNr
RGVwdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhGcmFnbWVudEJ1ZmZlckJpbmRD
b3VudF8sCisgICAgInNldE1heEZyYWdtZW50QnVmZmVyQmluZENvdW50OiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0TWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aF8sCisgICAgInNldE1heEZy
YWdtZW50Q2FsbFN0YWNrRGVwdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhLZXJu
ZWxCdWZmZXJCaW5kQ291bnRfLAorICAgICJzZXRNYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQ6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhUZXNzZWxsYXRpb25GYWN0b3JfLAorICAgICJz
ZXRNYXhUZXNzZWxsYXRpb25GYWN0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRNYXhU
b3RhbFRocmVhZHNQZXJUaHJlYWRncm91cF8sCisgICAgInNldE1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4VmVydGV4QW1wbGlmaWNh
dGlvbkNvdW50XywKKyAgICAic2V0TWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4VmVydGV4QnVmZmVyQmluZENvdW50XywKKyAgICAic2V0
TWF4VmVydGV4QnVmZmVyQmluZENvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TWF4
VmVydGV4Q2FsbFN0YWNrRGVwdGhfLAorICAgICJzZXRNYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1pbkZpbHRlcl8sCisgICAgInNldE1pbkZpbHRl
cjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1pcEZpbHRlcl8sCisgICAgInNldE1pcEZp
bHRlcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1pcG1hcExldmVsQ291bnRfLAorICAg
ICJzZXRNaXBtYXBMZXZlbENvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9u
RW5kQm9yZGVyTW9kZV8sCisgICAgInNldE1vdGlvbkVuZEJvcmRlck1vZGU6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRNb3Rpb25FbmRUaW1lXywKKyAgICAic2V0TW90aW9uRW5kVGltZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE1vdGlvbktleWZyYW1lQ291bnRfLAorICAgICJz
ZXRNb3Rpb25LZXlmcmFtZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9u
U3RhcnRCb3JkZXJNb2RlXywKKyAgICAic2V0TW90aW9uU3RhcnRCb3JkZXJNb2RlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9uU3RhcnRUaW1lXywKKyAgICAic2V0TW90aW9uU3Rh
cnRUaW1lOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9uVHJhbnNmb3JtQnVmZmVy
XywKKyAgICAic2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0TW90aW9uVHJhbnNmb3JtQnVmZmVyT2Zmc2V0XywKKyAgICAic2V0TW90aW9uVHJhbnNm
b3JtQnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0TW90aW9uVHJhbnNm
b3JtQ291bnRfLAorICAgICJzZXRNb3Rpb25UcmFuc2Zvcm1Db3VudDoiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHNldE11dGFiaWxpdHlfLAorICAgICJzZXRNdXRhYmlsaXR5OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0TmFtZV8sCisgICAgInNldE5hbWU6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXROb2Rlc18sCisgICAgInNldE5vZGVzOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0Tm9ybWFsaXplZENvb3JkaW5hdGVzXywKKyAgICAic2V0Tm9ybWFsaXplZENvb3JkaW5h
dGVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlw
dF8sCisgICAgInNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRPZmZzZXRfLAorICAgICJzZXRPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRPcGFxdWVfLAorICAgICJzZXRPcGFxdWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aFNpZ25hdHVyZV9hdElu
ZGV4XywKKyAgICAic2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWdu
YXR1cmU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE9wYXF1ZVRyaWFuZ2xl
SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJlX3dpdGhSYW5nZV8sCisgICAgInNldE9w
YXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoU2lnbmF0dXJlOndpdGhSYW5nZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldE9wdGlvbnNfLAorICAgICJzZXRPcHRpb25zOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0T3V0cHV0Tm9kZV8sCisgICAgInNldE91dHB1dE5v
ZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRPdXRwdXRVUkxfLAorICAgICJzZXRPdXRw
dXRVUkw6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRQaXhlbEZvcm1hdF8sCisgICAgInNl
dFBpeGVsRm9ybWF0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UHJlbG9hZGVkTGlicmFy
aWVzXywKKyAgICAic2V0UHJlbG9hZGVkTGlicmFyaWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0UHJlcHJvY2Vzc29yTWFjcm9zXywKKyAgICAic2V0UHJlcHJvY2Vzc29yTWFjcm9zOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UHJlc2VydmVJbnZhcmlhbmNlXywKKyAgICAic2V0
UHJlc2VydmVJbnZhcmlhbmNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UHJpdmF0ZUZ1
bmN0aW9uc18sCisgICAgInNldFByaXZhdGVGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzZXRQdXJnZWFibGVTdGF0ZV8sCisgICAgInNldFB1cmdlYWJsZVN0YXRlOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0UkFkZHJlc3NNb2RlXywKKyAgICAic2V0UkFkZHJlc3NNb2Rl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmFzdGVyU2FtcGxlQ291bnRfLAorICAgICJz
ZXRSYXN0ZXJTYW1wbGVDb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJhc3Rlcml6
YXRpb25FbmFibGVkXywKKyAgICAic2V0UmFzdGVyaXphdGlvbkVuYWJsZWQ6Iik7CitfTVRMX1BS
SVZBVEVfREVGX1NFTChzZXRSYXN0ZXJpemF0aW9uUmF0ZU1hcF8sCisgICAgInNldFJhc3Rlcml6
YXRpb25SYXRlTWFwOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVhZE1hc2tfLAorICAg
ICJzZXRSZWFkTWFzazoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlbmRlclBpcGVsaW5l
U3RhdGVfLAorICAgICJzZXRSZW5kZXJQaXBlbGluZVN0YXRlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZV9hdEluZGV4XywKKyAgICAic2V0UmVuZGVyUGlw
ZWxpbmVTdGF0ZTphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVuZGVyUGlw
ZWxpbmVTdGF0ZXNfd2l0aFJhbmdlXywKKyAgICAic2V0UmVuZGVyUGlwZWxpbmVTdGF0ZXM6d2l0
aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVuZGVyVGFyZ2V0QXJyYXlMZW5n
dGhfLAorICAgICJzZXRSZW5kZXJUYXJnZXRBcnJheUxlbmd0aDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFJlbmRlclRhcmdldEhlaWdodF8sCisgICAgInNldFJlbmRlclRhcmdldEhlaWdo
dDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlbmRlclRhcmdldFdpZHRoXywKKyAgICAi
c2V0UmVuZGVyVGFyZ2V0V2lkdGg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRSZXNvbHZl
RGVwdGhQbGFuZV8sCisgICAgInNldFJlc29sdmVEZXB0aFBsYW5lOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0UmVzb2x2ZUxldmVsXywKKyAgICAic2V0UmVzb2x2ZUxldmVsOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0UmVzb2x2ZVNsaWNlXywKKyAgICAic2V0UmVzb2x2ZVNsaWNl
OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0UmVzb2x2ZVRleHR1cmVfLAorICAgICJzZXRS
ZXNvbHZlVGV4dHVyZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFJlc291cmNlT3B0aW9u
c18sCisgICAgInNldFJlc291cmNlT3B0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFJldGFpbmVkUmVmZXJlbmNlc18sCisgICAgInNldFJldGFpbmVkUmVmZXJlbmNlczoiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFJnYkJsZW5kT3BlcmF0aW9uXywKKyAgICAic2V0UmdiQmxl
bmRPcGVyYXRpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTQWRkcmVzc01vZGVfLAor
ICAgICJzZXRTQWRkcmVzc01vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTYW1wbGVC
dWZmZXJfLAorICAgICJzZXRTYW1wbGVCdWZmZXI6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
ZXRTYW1wbGVDb3VudF8sCisgICAgInNldFNhbXBsZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0U2FtcGxlUG9zaXRpb25zX2NvdW50XywKKyAgICAic2V0U2FtcGxlUG9zaXRpb25z
OmNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2FtcGxlclN0YXRlX2F0SW5kZXhf
LAorICAgICJzZXRTYW1wbGVyU3RhdGU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhDbGFtcF9hdEluZGV4XywKKyAgICAi
c2V0U2FtcGxlclN0YXRlOmxvZE1pbkNsYW1wOmxvZE1heENsYW1wOmF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTYW1wbGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFt
cHNfd2l0aFJhbmdlXywKKyAgICAic2V0U2FtcGxlclN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4
Q2xhbXBzOndpdGhSYW5nZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNhbXBsZXJTdGF0
ZXNfd2l0aFJhbmdlXywKKyAgICAic2V0U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRTY2lzc29yUmVjdF8sCisgICAgInNldFNjaXNzb3JSZWN0OiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2Npc3NvclJlY3RzX2NvdW50XywKKyAgICAic2V0
U2Npc3NvclJlY3RzOmNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U2NyZWVuU2l6
ZV8sCisgICAgInNldFNjcmVlblNpemU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTaWdu
YWxlZFZhbHVlXywKKyAgICAic2V0U2lnbmFsZWRWYWx1ZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFNpemVfLAorICAgICJzZXRTaXplOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
U2xpY2VfLAorICAgICJzZXRTbGljZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNvdXJj
ZUFscGhhQmxlbmRGYWN0b3JfLAorICAgICJzZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U291cmNlUkdCQmxlbmRGYWN0b3JfLAorICAgICJzZXRT
b3VyY2VSR0JCbGVuZEZhY3RvcjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFNwZWNpYWxp
emVkTmFtZV8sCisgICAgInNldFNwZWNpYWxpemVkTmFtZToiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFN0YWdlSW5SZWdpb25fLAorICAgICJzZXRTdGFnZUluUmVnaW9uOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0U3RhZ2VJblJlZ2lvbldpdGhJbmRpcmVjdEJ1ZmZlcl9pbmRpcmVj
dEJ1ZmZlck9mZnNldF8sCisgICAgInNldFN0YWdlSW5SZWdpb25XaXRoSW5kaXJlY3RCdWZmZXI6
aW5kaXJlY3RCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGFnZUlu
cHV0RGVzY3JpcHRvcl8sCisgICAgInNldFN0YWdlSW5wdXREZXNjcmlwdG9yOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0U3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleF8sCisgICAgInNldFN0
YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGFy
dE9mRnJhZ21lbnRTYW1wbGVJbmRleF8sCisgICAgInNldFN0YXJ0T2ZGcmFnbWVudFNhbXBsZUlu
ZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RhcnRPZlZlcnRleFNhbXBsZUluZGV4
XywKKyAgICAic2V0U3RhcnRPZlZlcnRleFNhbXBsZUluZGV4OiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0U3RlbmNpbEF0dGFjaG1lbnRfLAorICAgICJzZXRTdGVuY2lsQXR0YWNobWVudDoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXRf
LAorICAgICJzZXRTdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U3RlbmNpbENvbXBhcmVGdW5jdGlvbl8sCisgICAgInNldFN0ZW5jaWxDb21w
YXJlRnVuY3Rpb246Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdGVuY2lsRmFpbHVyZU9w
ZXJhdGlvbl8sCisgICAgInNldFN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0U3RlbmNpbEZyb250UmVmZXJlbmNlVmFsdWVfYmFja1JlZmVyZW5jZVZh
bHVlXywKKyAgICAic2V0U3RlbmNpbEZyb250UmVmZXJlbmNlVmFsdWU6YmFja1JlZmVyZW5jZVZh
bHVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RlbmNpbFJlZmVyZW5jZVZhbHVlXywK
KyAgICAic2V0U3RlbmNpbFJlZmVyZW5jZVZhbHVlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0U3RlbmNpbFJlc29sdmVGaWx0ZXJfLAorICAgICJzZXRTdGVuY2lsUmVzb2x2ZUZpbHRlcjoi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxTdG9yZUFjdGlvbl8sCisgICAgInNl
dFN0ZW5jaWxTdG9yZUFjdGlvbjoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0ZW5jaWxT
dG9yZUFjdGlvbk9wdGlvbnNfLAorICAgICJzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RlcEZ1bmN0aW9uXywKKyAgICAic2V0U3RlcEZ1
bmN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RlcFJhdGVfLAorICAgICJzZXRT
dGVwUmF0ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN0b3JhZ2VNb2RlXywKKyAgICAi
c2V0U3RvcmFnZU1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdG9yZUFjdGlvbl8s
CisgICAgInNldFN0b3JlQWN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0U3RvcmVB
Y3Rpb25PcHRpb25zXywKKyAgICAic2V0U3RvcmVBY3Rpb25PcHRpb25zOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0U3RyaWRlXywKKyAgICAic2V0U3RyaWRlOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0U3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9uc18sCisgICAgInNldFN1cHBv
cnRBZGRpbmdCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdXBw
b3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnNfLAorICAgICJzZXRTdXBwb3J0QWRkaW5n
RnJhZ21lbnRCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRTdXBw
b3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zXywKKyAgICAic2V0U3VwcG9ydEFkZGluZ1Zl
cnRleEJpbmFyeUZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFN1cHBvcnRB
cmd1bWVudEJ1ZmZlcnNfLAorICAgICJzZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzOiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnNfLAorICAg
ICJzZXRTdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVyczoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFN3aXp6bGVfLAorICAgICJzZXRTd2l6emxlOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0VEFkZHJlc3NNb2RlXywKKyAgICAic2V0VEFkZHJlc3NNb2RlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc2V0VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlXywKKyAgICAi
c2V0VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlOiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyX29mZnNldF9pbnN0YW5jZVN0cmlkZV8s
CisgICAgInNldFRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcjpvZmZzZXQ6aW5zdGFuY2VTdHJpZGU6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXRfLAor
ICAgICJzZXRUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZV8sCisgICAgInNldFRlc3NlbGxhdGlvbkZhY3Rv
clNjYWxlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU2Nh
bGVFbmFibGVkXywKKyAgICAic2V0VGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkOiIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uXywK
KyAgICAic2V0VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0VGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyXywKKyAgICAic2V0VGVz
c2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZV8sCisgICAgInNldFRlc3NlbGxhdGlvblBhcnRpdGlv
bk1vZGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUZXh0dXJlXywKKyAgICAic2V0VGV4
dHVyZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRleHR1cmVfYXRJbmRleF8sCisgICAg
InNldFRleHR1cmU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRleHR1cmVU
eXBlXywKKyAgICAic2V0VGV4dHVyZVR5cGU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRU
ZXh0dXJlc193aXRoUmFuZ2VfLAorICAgICJzZXRUZXh0dXJlczp3aXRoUmFuZ2U6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRUaHJlYWRHcm91cFNpemVJc011bHRpcGxlT2ZUaHJlYWRFeGVj
dXRpb25XaWR0aF8sCisgICAgInNldFRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4
ZWN1dGlvbldpZHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGhyZWFkZ3JvdXBNZW1v
cnlMZW5ndGhfLAorICAgICJzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aDoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHNldFRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoX2F0SW5kZXhfLAorICAgICJz
ZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGhfb2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRU
aHJlYWRncm91cE1lbW9yeUxlbmd0aDpvZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZV8sCisgICAgInNldFRocmVh
ZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRp
bGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRCdWZmZXJJbmRleF8sCisgICAgInNldFRpbGVBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHNldFRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zXywKKyAgICAic2V0VGlsZUFkZGl0aW9u
YWxCaW5hcnlGdW5jdGlvbnM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQnVmZmVy
X29mZnNldF9hdEluZGV4XywKKyAgICAic2V0VGlsZUJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVCdWZmZXJPZmZzZXRfYXRJbmRleF8sCisgICAg
InNldFRpbGVCdWZmZXJPZmZzZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNl
dFRpbGVCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXywKKyAgICAic2V0VGlsZUJ1ZmZlcnM6b2Zm
c2V0czp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlQnl0ZXNfbGVu
Z3RoX2F0SW5kZXhfLAorICAgICJzZXRUaWxlQnl0ZXM6bGVuZ3RoOmF0SW5kZXg6Iik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzZXRUaWxlRnVuY3Rpb25fLAorICAgICJzZXRUaWxlRnVuY3Rpb246
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlSGVpZ2h0XywKKyAgICAic2V0VGlsZUhl
aWdodDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlX2F0QnVmZmVySW5kZXhfLAorICAgICJzZXRUaWxlSW50ZXJzZWN0aW9uRnVuY3Rpb25U
YWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZUludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8sCisgICAgInNldFRpbGVJbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRUaWxlU2FtcGxlclN0YXRlX2F0SW5kZXhfLAorICAgICJzZXRUaWxlU2FtcGxl
clN0YXRlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlU2FtcGxlclN0
YXRlX2xvZE1pbkNsYW1wX2xvZE1heENsYW1wX2F0SW5kZXhfLAorICAgICJzZXRUaWxlU2FtcGxl
clN0YXRlOmxvZE1pbkNsYW1wOmxvZE1heENsYW1wOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzZXRUaWxlU2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBzX3dp
dGhSYW5nZV8sCisgICAgInNldFRpbGVTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RNYXhD
bGFtcHM6d2l0aFJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVNhbXBsZXJT
dGF0ZXNfd2l0aFJhbmdlXywKKyAgICAic2V0VGlsZVNhbXBsZXJTdGF0ZXM6d2l0aFJhbmdlOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVRleHR1cmVfYXRJbmRleF8sCisgICAgInNl
dFRpbGVUZXh0dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlVGV4
dHVyZXNfd2l0aFJhbmdlXywKKyAgICAic2V0VGlsZVRleHR1cmVzOndpdGhSYW5nZToiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlcklu
ZGV4XywKKyAgICAic2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUaWxlVmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhC
dWZmZXJSYW5nZV8sCisgICAgInNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZl
clJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VGlsZVdpZHRoXywKKyAgICAic2V0
VGlsZVdpZHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VHJpYW5nbGVDb3VudF8sCisg
ICAgInNldFRyaWFuZ2xlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRUcmlhbmds
ZUZpbGxNb2RlXywKKyAgICAic2V0VHJpYW5nbGVGaWxsTW9kZToiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHNldFR5cGVfLAorICAgICJzZXRUeXBlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0VXJsXywKKyAgICAic2V0VXJsOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VXNhZ2Vf
LAorICAgICJzZXRVc2FnZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZV9hdEJ1ZmZlckluZGV4XywKKyAgICAic2V0VmVydGV4QWNjZWxlcmF0
aW9uU3RydWN0dXJlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRW
ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zXywKKyAgICAic2V0VmVydGV4QWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEFtcGxp
ZmljYXRpb25Db3VudF92aWV3TWFwcGluZ3NfLAorICAgICJzZXRWZXJ0ZXhBbXBsaWZpY2F0aW9u
Q291bnQ6dmlld01hcHBpbmdzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4QnVm
ZmVyXywKKyAgICAic2V0VmVydGV4QnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VmVydGV4QnVmZmVyX29mZnNldF9hdEluZGV4XywKKyAgICAic2V0VmVydGV4QnVmZmVyOm9mZnNl
dDphdEluZGV4OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4QnVmZmVyT2Zmc2V0
XywKKyAgICAic2V0VmVydGV4QnVmZmVyT2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c2V0VmVydGV4QnVmZmVyT2Zmc2V0X2F0SW5kZXhfLAorICAgICJzZXRWZXJ0ZXhCdWZmZXJPZmZz
ZXQ6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleEJ1ZmZlcnNfLAor
ICAgICJzZXRWZXJ0ZXhCdWZmZXJzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4
QnVmZmVyc19vZmZzZXRzX3dpdGhSYW5nZV8sCisgICAgInNldFZlcnRleEJ1ZmZlcnM6b2Zmc2V0
czp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhCeXRlc19sZW5n
dGhfYXRJbmRleF8sCisgICAgInNldFZlcnRleEJ5dGVzOmxlbmd0aDphdEluZGV4OiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4RGVzY3JpcHRvcl8sCisgICAgInNldFZlcnRleERl
c2NyaXB0b3I6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhGdW5jdGlvbl8sCisg
ICAgInNldFZlcnRleEZ1bmN0aW9uOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XywKKyAgICAic2V0VmVydGV4
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTphdEJ1ZmZlckluZGV4OiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJh
bmdlXywKKyAgICAic2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZl
clJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4TGlua2VkRnVuY3Rpb25z
XywKKyAgICAic2V0VmVydGV4TGlua2VkRnVuY3Rpb25zOiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc2V0VmVydGV4UHJlbG9hZGVkTGlicmFyaWVzXywKKyAgICAic2V0VmVydGV4UHJlbG9hZGVk
TGlicmFyaWVzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRl
X2F0SW5kZXhfLAorICAgICJzZXRWZXJ0ZXhTYW1wbGVyU3RhdGU6YXRJbmRleDoiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZV9sb2RNaW5DbGFtcF9sb2RNYXhD
bGFtcF9hdEluZGV4XywKKyAgICAic2V0VmVydGV4U2FtcGxlclN0YXRlOmxvZE1pbkNsYW1wOmxv
ZE1heENsYW1wOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhTYW1w
bGVyU3RhdGVzX2xvZE1pbkNsYW1wc19sb2RNYXhDbGFtcHNfd2l0aFJhbmdlXywKKyAgICAic2V0
VmVydGV4U2FtcGxlclN0YXRlczpsb2RNaW5DbGFtcHM6bG9kTWF4Q2xhbXBzOndpdGhSYW5nZToi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZXNfd2l0aFJhbmdl
XywKKyAgICAic2V0VmVydGV4U2FtcGxlclN0YXRlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRWZXJ0ZXhTdHJpZGVfLAorICAgICJzZXRWZXJ0ZXhTdHJpZGU6Iik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhUZXh0dXJlX2F0SW5kZXhfLAorICAgICJzZXRW
ZXJ0ZXhUZXh0dXJlOmF0SW5kZXg6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhU
ZXh0dXJlc193aXRoUmFuZ2VfLAorICAgICJzZXRWZXJ0ZXhUZXh0dXJlczp3aXRoUmFuZ2U6Iik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1
ZmZlckluZGV4XywKKyAgICAic2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJ
bmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZlcnRleFZpc2libGVGdW5jdGlvblRh
Ymxlc193aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJs
ZXM6d2l0aEJ1ZmZlclJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0Vmlld3BvcnRf
LAorICAgICJzZXRWaWV3cG9ydDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZpZXdwb3J0
c19jb3VudF8sCisgICAgInNldFZpZXdwb3J0czpjb3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHNldFZpc2liaWxpdHlSZXN1bHRCdWZmZXJfLAorICAgICJzZXRWaXNpYmlsaXR5UmVzdWx0
QnVmZmVyOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0VmlzaWJpbGl0eVJlc3VsdE1vZGVf
b2Zmc2V0XywKKyAgICAic2V0VmlzaWJpbGl0eVJlc3VsdE1vZGU6b2Zmc2V0OiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVfYXRCdWZmZXJJbmRleF8sCisg
ICAgInNldFZpc2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6Iik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEluZGV4XywKKyAgICAic2V0Vmlz
aWJsZUZ1bmN0aW9uVGFibGU6YXRJbmRleDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNldFZp
c2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfLAorICAgICJzZXRWaXNpYmxlRnVu
Y3Rpb25UYWJsZXM6d2l0aEJ1ZmZlclJhbmdlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0
VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhSYW5nZV8sCisgICAgInNldFZpc2libGVGdW5jdGlv
blRhYmxlczp3aXRoUmFuZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzZXRXaWR0aF8sCisg
ICAgInNldFdpZHRoOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2V0V3JpdGVNYXNrXywKKyAg
ICAic2V0V3JpdGVNYXNrOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc2hhcmVkQ2FwdHVyZU1h
bmFnZXIsCisgICAgInNoYXJlZENhcHR1cmVNYW5hZ2VyIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzaWduYWxlZFZhbHVlLAorICAgICJzaWduYWxlZFZhbHVlIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzaXplLAorICAgICJzaXplIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzbGljZSwKKyAg
ICAic2xpY2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNvdXJjZUFscGhhQmxlbmRGYWN0b3Is
CisgICAgInNvdXJjZUFscGhhQmxlbmRGYWN0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNv
dXJjZVJHQkJsZW5kRmFjdG9yLAorICAgICJzb3VyY2VSR0JCbGVuZEZhY3RvciIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwoc3BhcnNlVGlsZVNpemVJbkJ5dGVzLAorICAgICJzcGFyc2VUaWxlU2l6
ZUluQnl0ZXMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHNwYXJzZVRpbGVTaXplV2l0aFRleHR1
cmVUeXBlX3BpeGVsRm9ybWF0X3NhbXBsZUNvdW50XywKKyAgICAic3BhcnNlVGlsZVNpemVXaXRo
VGV4dHVyZVR5cGU6cGl4ZWxGb3JtYXQ6c2FtcGxlQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzcGVjaWFsaXplZE5hbWUsCisgICAgInNwZWNpYWxpemVkTmFtZSIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc3RhZ2VJbnB1dEF0dHJpYnV0ZXMsCisgICAgInN0YWdlSW5wdXRBdHRyaWJ1
dGVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFnZUlucHV0RGVzY3JpcHRvciwKKyAgICAi
c3RhZ2VJbnB1dERlc2NyaXB0b3IiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YWdlSW5wdXRP
dXRwdXREZXNjcmlwdG9yLAorICAgICJzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvciIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwoc3RhcnRDYXB0dXJlV2l0aENvbW1hbmRRdWV1ZV8sCisgICAgInN0
YXJ0Q2FwdHVyZVdpdGhDb21tYW5kUXVldWU6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFy
dENhcHR1cmVXaXRoRGVzY3JpcHRvcl9lcnJvcl8sCisgICAgInN0YXJ0Q2FwdHVyZVdpdGhEZXNj
cmlwdG9yOmVycm9yOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RhcnRDYXB0dXJlV2l0aERl
dmljZV8sCisgICAgInN0YXJ0Q2FwdHVyZVdpdGhEZXZpY2U6Iik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTChzdGFydENhcHR1cmVXaXRoU2NvcGVfLAorICAgICJzdGFydENhcHR1cmVXaXRoU2NvcGU6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4LAorICAg
ICJzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGFy
dE9mRnJhZ21lbnRTYW1wbGVJbmRleCwKKyAgICAic3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCwKKyAgICAi
c3RhcnRPZlZlcnRleFNhbXBsZUluZGV4Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdGF0aWNU
aHJlYWRncm91cE1lbW9yeUxlbmd0aCwKKyAgICAic3RhdGljVGhyZWFkZ3JvdXBNZW1vcnlMZW5n
dGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0YXR1cywKKyAgICAic3RhdHVzIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzdGVuY2lsQXR0YWNobWVudCwKKyAgICAic3RlbmNpbEF0dGFjaG1l
bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQs
CisgICAgInN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHN0ZW5jaWxDb21wYXJlRnVuY3Rpb24sCisgICAgInN0ZW5jaWxDb21wYXJlRnVuY3Rpb24i
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN0ZW5jaWxGYWlsdXJlT3BlcmF0aW9uLAorICAgICJz
dGVuY2lsRmFpbHVyZU9wZXJhdGlvbiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3RlbmNpbFJl
c29sdmVGaWx0ZXIsCisgICAgInN0ZW5jaWxSZXNvbHZlRmlsdGVyIik7CitfTVRMX1BSSVZBVEVf
REVGX1NFTChzdGVwRnVuY3Rpb24sCisgICAgInN0ZXBGdW5jdGlvbiIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwoc3RlcFJhdGUsCisgICAgInN0ZXBSYXRlIik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TChzdG9wQ2FwdHVyZSwKKyAgICAic3RvcENhcHR1cmUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHN0b3JhZ2VNb2RlLAorICAgICJzdG9yYWdlTW9kZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
c3RvcmVBY3Rpb24sCisgICAgInN0b3JlQWN0aW9uIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dG9yZUFjdGlvbk9wdGlvbnMsCisgICAgInN0b3JlQWN0aW9uT3B0aW9ucyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc3RyaWRlLAorICAgICJzdHJpZGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHN0cnVjdFR5cGUsCisgICAgInN0cnVjdFR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1
cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMsCisgICAgInN1cHBvcnRBZGRpbmdCaW5hcnlGdW5j
dGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFy
eUZ1bmN0aW9ucywKKyAgICAic3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25z
LAorICAgICJzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zIik7CitfTVRMX1BSSVZB
VEVfREVGX1NFTChzdXBwb3J0QXJndW1lbnRCdWZmZXJzLAorICAgICJzdXBwb3J0QXJndW1lbnRC
dWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVm
ZmVycywKKyAgICAic3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMiKTsKK19NVExfUFJJVkFU
RV9ERUZfU0VMKHN1cHBvcnRzMzJCaXRGbG9hdEZpbHRlcmluZywKKyAgICAic3VwcG9ydHMzMkJp
dEZsb2F0RmlsdGVyaW5nIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0czMyQml0TVNB
QSwKKyAgICAic3VwcG9ydHMzMkJpdE1TQUEiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBv
cnRzQkNUZXh0dXJlQ29tcHJlc3Npb24sCisgICAgInN1cHBvcnRzQkNUZXh0dXJlQ29tcHJlc3Np
b24iKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzQ291bnRlclNhbXBsaW5nXywKKyAg
ICAic3VwcG9ydHNDb3VudGVyU2FtcGxpbmc6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBw
b3J0c0Rlc3RpbmF0aW9uXywKKyAgICAic3VwcG9ydHNEZXN0aW5hdGlvbjoiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHN1cHBvcnRzRHluYW1pY0xpYnJhcmllcywKKyAgICAic3VwcG9ydHNEeW5h
bWljTGlicmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c0ZhbWlseV8sCisg
ICAgInN1cHBvcnRzRmFtaWx5OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNGZWF0
dXJlU2V0XywKKyAgICAic3VwcG9ydHNGZWF0dXJlU2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwoc3VwcG9ydHNGdW5jdGlvblBvaW50ZXJzLAorICAgICJzdXBwb3J0c0Z1bmN0aW9uUG9pbnRl
cnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzRnVuY3Rpb25Qb2ludGVyc0Zyb21S
ZW5kZXIsCisgICAgInN1cHBvcnRzRnVuY3Rpb25Qb2ludGVyc0Zyb21SZW5kZXIiKTsKK19NVExf
UFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzUHJpbWl0aXZlTW90aW9uQmx1ciwKKyAgICAic3VwcG9y
dHNQcmltaXRpdmVNb3Rpb25CbHVyIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c1B1
bGxNb2RlbEludGVycG9sYXRpb24sCisgICAgInN1cHBvcnRzUHVsbE1vZGVsSW50ZXJwb2xhdGlv
biIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNRdWVyeVRleHR1cmVMT0QsCisgICAg
InN1cHBvcnRzUXVlcnlUZXh0dXJlTE9EIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChzdXBwb3J0
c1Jhc3Rlcml6YXRpb25SYXRlTWFwV2l0aExheWVyQ291bnRfLAorICAgICJzdXBwb3J0c1Jhc3Rl
cml6YXRpb25SYXRlTWFwV2l0aExheWVyQ291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTChz
dXBwb3J0c1JheXRyYWNpbmcsCisgICAgInN1cHBvcnRzUmF5dHJhY2luZyIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwoc3VwcG9ydHNSYXl0cmFjaW5nRnJvbVJlbmRlciwKKyAgICAic3VwcG9ydHNS
YXl0cmFjaW5nRnJvbVJlbmRlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNSZW5k
ZXJEeW5hbWljTGlicmFyaWVzLAorICAgICJzdXBwb3J0c1JlbmRlckR5bmFtaWNMaWJyYXJpZXMi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN1cHBvcnRzU2hhZGVyQmFyeWNlbnRyaWNDb29yZGlu
YXRlcywKKyAgICAic3VwcG9ydHNTaGFkZXJCYXJ5Y2VudHJpY0Nvb3JkaW5hdGVzIik7CitfTVRM
X1BSSVZBVEVfREVGX1NFTChzdXBwb3J0c1RleHR1cmVTYW1wbGVDb3VudF8sCisgICAgInN1cHBv
cnRzVGV4dHVyZVNhbXBsZUNvdW50OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3VwcG9ydHNW
ZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnRfLAorICAgICJzdXBwb3J0c1ZlcnRleEFtcGxpZmljYXRp
b25Db3VudDoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN3aXp6bGUsCisgICAgInN3aXp6bGUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHN5bmNocm9uaXplUmVzb3VyY2VfLAorICAgICJzeW5j
aHJvbml6ZVJlc291cmNlOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwoc3luY2hyb25pemVUZXh0
dXJlX3NsaWNlX2xldmVsXywKKyAgICAic3luY2hyb25pemVUZXh0dXJlOnNsaWNlOmxldmVsOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwodEFkZHJlc3NNb2RlLAorICAgICJ0QWRkcmVzc01vZGUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRhaWxTaXplSW5CeXRlcywKKyAgICAidGFpbFNpemVJ
bkJ5dGVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJ
bmRleFR5cGUsCisgICAgInRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwodGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0LAorICAgICJ0ZXNzZWxs
YXRpb25GYWN0b3JGb3JtYXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRlc3NlbGxhdGlvbkZh
Y3RvclN0ZXBGdW5jdGlvbiwKKyAgICAidGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIsCisg
ICAgInRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlciIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwodGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSwKKyAgICAidGVzc2VsbGF0aW9uUGFydGl0aW9u
TW9kZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZSwKKyAgICAidGV4dHVyZSIpOwor
X01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZTJERGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdF93
aWR0aF9oZWlnaHRfbWlwbWFwcGVkXywKKyAgICAidGV4dHVyZTJERGVzY3JpcHRvcldpdGhQaXhl
bEZvcm1hdDp3aWR0aDpoZWlnaHQ6bWlwbWFwcGVkOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwo
dGV4dHVyZUJhcnJpZXIsCisgICAgInRleHR1cmVCYXJyaWVyIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTCh0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdF93aWR0aF9yZXNvdXJj
ZU9wdGlvbnNfdXNhZ2VfLAorICAgICJ0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvcldpdGhQaXhlbEZv
cm1hdDp3aWR0aDpyZXNvdXJjZU9wdGlvbnM6dXNhZ2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TCh0ZXh0dXJlQ3ViZURlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXRfc2l6ZV9taXBtYXBwZWRfLAor
ICAgICJ0ZXh0dXJlQ3ViZURlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6c2l6ZTptaXBtYXBwZWQ6
Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXh0dXJlRGF0YVR5cGUsCisgICAgInRleHR1cmVE
YXRhVHlwZSIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGV4dHVyZVJlZmVyZW5jZVR5cGUsCisg
ICAgInRleHR1cmVSZWZlcmVuY2VUeXBlIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0ZXh0dXJl
VHlwZSwKKyAgICAidGV4dHVyZVR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRocmVhZEV4
ZWN1dGlvbldpZHRoLAorICAgICJ0aHJlYWRFeGVjdXRpb25XaWR0aCIpOworX01UTF9QUklWQVRF
X0RFRl9TRUwodGhyZWFkR3JvdXBTaXplSXNNdWx0aXBsZU9mVGhyZWFkRXhlY3V0aW9uV2lkdGgs
CisgICAgInRocmVhZEdyb3VwU2l6ZUlzTXVsdGlwbGVPZlRocmVhZEV4ZWN1dGlvbldpZHRoIik7
CitfTVRMX1BSSVZBVEVfREVGX1NFTCh0aHJlYWRncm91cE1lbW9yeUFsaWdubWVudCwKKyAgICAi
dGhyZWFkZ3JvdXBNZW1vcnlBbGlnbm1lbnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRocmVh
ZGdyb3VwTWVtb3J5RGF0YVNpemUsCisgICAgInRocmVhZGdyb3VwTWVtb3J5RGF0YVNpemUiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoLAorICAgICJ0aHJl
YWRncm91cE1lbW9yeUxlbmd0aCIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodGhyZWFkZ3JvdXBT
aXplTWF0Y2hlc1RpbGVTaXplLAorICAgICJ0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUi
KTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLAor
ICAgICJ0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwodGlsZUFyZ3VtZW50cywKKyAgICAidGlsZUFyZ3VtZW50cyIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodGlsZUJ1ZmZlcnMsCisgICAgInRpbGVCdWZmZXJzIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTCh0aWxlRnVuY3Rpb24sCisgICAgInRpbGVGdW5jdGlvbiIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodGlsZUhlaWdodCwKKyAgICAidGlsZUhlaWdodCIpOworX01UTF9QUklWQVRFX0RFRl9T
RUwodGlsZVdpZHRoLAorICAgICJ0aWxlV2lkdGgiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHRy
aWFuZ2xlQ291bnQsCisgICAgInRyaWFuZ2xlQ291bnQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHR5cGUsCisgICAgInR5cGUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVwZGF0ZUZlbmNlXywK
KyAgICAidXBkYXRlRmVuY2U6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1cGRhdGVGZW5jZV9h
ZnRlclN0YWdlc18sCisgICAgInVwZGF0ZUZlbmNlOmFmdGVyU3RhZ2VzOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwodXBkYXRlVGV4dHVyZU1hcHBpbmdfbW9kZV9pbmRpcmVjdEJ1ZmZlcl9pbmRp
cmVjdEJ1ZmZlck9mZnNldF8sCisgICAgInVwZGF0ZVRleHR1cmVNYXBwaW5nOm1vZGU6aW5kaXJl
Y3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1
cGRhdGVUZXh0dXJlTWFwcGluZ19tb2RlX3JlZ2lvbl9taXBMZXZlbF9zbGljZV8sCisgICAgInVw
ZGF0ZVRleHR1cmVNYXBwaW5nOm1vZGU6cmVnaW9uOm1pcExldmVsOnNsaWNlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodXBkYXRlVGV4dHVyZU1hcHBpbmdzX21vZGVfcmVnaW9uc19taXBMZXZl
bHNfc2xpY2VzX251bVJlZ2lvbnNfLAorICAgICJ1cGRhdGVUZXh0dXJlTWFwcGluZ3M6bW9kZTpy
ZWdpb25zOm1pcExldmVsczpzbGljZXM6bnVtUmVnaW9uczoiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHVybCwKKyAgICAidXJsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1c2FnZSwKKyAgICAi
dXNhZ2UiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZUhlYXBfLAorICAgICJ1c2VIZWFwOiIp
OworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlSGVhcF9zdGFnZXNfLAorICAgICJ1c2VIZWFwOnN0
YWdlczoiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHVzZUhlYXBzX2NvdW50XywKKyAgICAidXNl
SGVhcHM6Y291bnQ6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1c2VIZWFwc19jb3VudF9zdGFn
ZXNfLAorICAgICJ1c2VIZWFwczpjb3VudDpzdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NF
TCh1c2VSZXNvdXJjZV91c2FnZV8sCisgICAgInVzZVJlc291cmNlOnVzYWdlOiIpOworX01UTF9Q
UklWQVRFX0RFRl9TRUwodXNlUmVzb3VyY2VfdXNhZ2Vfc3RhZ2VzXywKKyAgICAidXNlUmVzb3Vy
Y2U6dXNhZ2U6c3RhZ2VzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodXNlUmVzb3VyY2VzX2Nv
dW50X3VzYWdlXywKKyAgICAidXNlUmVzb3VyY2VzOmNvdW50OnVzYWdlOiIpOworX01UTF9QUklW
QVRFX0RFRl9TRUwodXNlUmVzb3VyY2VzX2NvdW50X3VzYWdlX3N0YWdlc18sCisgICAgInVzZVJl
c291cmNlczpjb3VudDp1c2FnZTpzdGFnZXM6Iik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh1c2Vk
U2l6ZSwKKyAgICAidXNlZFNpemUiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleEFkZGl0
aW9uYWxCaW5hcnlGdW5jdGlvbnMsCisgICAgInZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleEFyZ3VtZW50cywKKyAgICAidmVydGV4
QXJndW1lbnRzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhBdHRyaWJ1dGVzLAorICAg
ICJ2ZXJ0ZXhBdHRyaWJ1dGVzIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2ZXJ0ZXhCdWZmZXIs
CisgICAgInZlcnRleEJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmVydGV4QnVmZmVy
T2Zmc2V0LAorICAgICJ2ZXJ0ZXhCdWZmZXJPZmZzZXQiKTsKK19NVExfUFJJVkFURV9ERUZfU0VM
KHZlcnRleEJ1ZmZlcnMsCisgICAgInZlcnRleEJ1ZmZlcnMiKTsKK19NVExfUFJJVkFURV9ERUZf
U0VMKHZlcnRleERlc2NyaXB0b3IsCisgICAgInZlcnRleERlc2NyaXB0b3IiKTsKK19NVExfUFJJ
VkFURV9ERUZfU0VMKHZlcnRleEZ1bmN0aW9uLAorICAgICJ2ZXJ0ZXhGdW5jdGlvbiIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwodmVydGV4TGlua2VkRnVuY3Rpb25zLAorICAgICJ2ZXJ0ZXhMaW5r
ZWRGdW5jdGlvbnMiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHZlcnRleFByZWxvYWRlZExpYnJh
cmllcywKKyAgICAidmVydGV4UHJlbG9hZGVkTGlicmFyaWVzIik7CitfTVRMX1BSSVZBVEVfREVG
X1NFTCh2ZXJ0ZXhTdHJpZGUsCisgICAgInZlcnRleFN0cmlkZSIpOworX01UTF9QUklWQVRFX0RF
Rl9TRUwodmVydGljYWwsCisgICAgInZlcnRpY2FsIik7CitfTVRMX1BSSVZBVEVfREVGX1NFTCh2
ZXJ0aWNhbFNhbXBsZVN0b3JhZ2UsCisgICAgInZlcnRpY2FsU2FtcGxlU3RvcmFnZSIpOworX01U
TF9QUklWQVRFX0RFRl9TRUwodmlzaWJpbGl0eVJlc3VsdEJ1ZmZlciwKKyAgICAidmlzaWJpbGl0
eVJlc3VsdEJ1ZmZlciIpOworX01UTF9QUklWQVRFX0RFRl9TRUwodmlzaWJsZUZ1bmN0aW9uVGFi
bGVEZXNjcmlwdG9yLAorICAgICJ2aXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IiKTsKK19N
VExfUFJJVkFURV9ERUZfU0VMKHdhaXRGb3JGZW5jZV8sCisgICAgIndhaXRGb3JGZW5jZToiKTsK
K19NVExfUFJJVkFURV9ERUZfU0VMKHdhaXRGb3JGZW5jZV9iZWZvcmVTdGFnZXNfLAorICAgICJ3
YWl0Rm9yRmVuY2U6YmVmb3JlU3RhZ2VzOiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwod2FpdFVu
dGlsQ29tcGxldGVkLAorICAgICJ3YWl0VW50aWxDb21wbGV0ZWQiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHdhaXRVbnRpbFNjaGVkdWxlZCwKKyAgICAid2FpdFVudGlsU2NoZWR1bGVkIik7Citf
TVRMX1BSSVZBVEVfREVGX1NFTCh3aWR0aCwKKyAgICAid2lkdGgiKTsKK19NVExfUFJJVkFURV9E
RUZfU0VMKHdyaXRlQ29tcGFjdGVkQWNjZWxlcmF0aW9uU3RydWN0dXJlU2l6ZV90b0J1ZmZlcl9v
ZmZzZXRfLAorICAgICJ3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemU6dG9C
dWZmZXI6b2Zmc2V0OiIpOworX01UTF9QUklWQVRFX0RFRl9TRUwod3JpdGVDb21wYWN0ZWRBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVTaXplX3RvQnVmZmVyX29mZnNldF9zaXplRGF0YVR5cGVfLAorICAg
ICJ3cml0ZUNvbXBhY3RlZEFjY2VsZXJhdGlvblN0cnVjdHVyZVNpemU6dG9CdWZmZXI6b2Zmc2V0
OnNpemVEYXRhVHlwZToiKTsKK19NVExfUFJJVkFURV9ERUZfU0VMKHdyaXRlTWFzaywKKyAgICAi
d3JpdGVNYXNrIik7CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9NZXRhbC9NVExIZWFwLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExIZWFwLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjJjM2UxMmZlNDgwNzliZTk0MGFiODNlMjY5
ZDhiYmYxNWU1OWMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL01ldGFsL01UTEhlYXAuaHBwCkBAIC0wLDAgKzEsMjgyIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExIZWFwLmhw
cAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisj
aW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaHBwPgorCisjaW5jbHVkZSAiTVRMSGVhcC5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2Uu
aHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OkludGVnZXIsIEhlYXBUeXBl
KSB7CisgICAgSGVhcFR5cGVBdXRvbWF0aWMgPSAwLAorICAgIEhlYXBUeXBlUGxhY2VtZW50ID0g
MSwKKyAgICBIZWFwVHlwZVNwYXJzZSA9IDIsCit9OworCitjbGFzcyBIZWFwRGVzY3JpcHRvciA6
IHB1YmxpYyBOUzo6Q29weWluZzxIZWFwRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgSGVhcERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBIZWFwRGVzY3Jp
cHRvciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAg
c2l6ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2l6ZShO
Uzo6VUludGVnZXIgc2l6ZSk7CisKKyAgICBNVEw6OlN0b3JhZ2VNb2RlICAgICAgICAgICAgIHN0
b3JhZ2VNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRT
dG9yYWdlTW9kZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKTsKKworICAgIE1UTDo6Q1BV
Q2FjaGVNb2RlICAgICAgICAgICAgY3B1Q2FjaGVNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRDcHVDYWNoZU1vZGUoTVRMOjpDUFVDYWNoZU1vZGUgY3B1
Q2FjaGVNb2RlKTsKKworICAgIE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlICAgICAgaGF6YXJkVHJh
Y2tpbmdNb2RlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRI
YXphcmRUcmFja2luZ01vZGUoTVRMOjpIYXphcmRUcmFja2luZ01vZGUgaGF6YXJkVHJhY2tpbmdN
b2RlKTsKKworICAgIE1UTDo6UmVzb3VyY2VPcHRpb25zICAgICAgICAgcmVzb3VyY2VPcHRpb25z
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNvdXJjZU9w
dGlvbnMoTVRMOjpSZXNvdXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zKTsKKworICAgIE1UTDo6
SGVhcFR5cGUgICAgICAgICAgICAgICAgdHlwZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0VHlwZShNVEw6OkhlYXBUeXBlIHR5cGUpOworfTsKKworY2xhc3Mg
SGVhcCA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8SGVhcD4KK3sKK3B1YmxpYzoKKyAgICBOUzo6
U3RyaW5nKiAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgIHNldExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERl
dmljZSogICAgICAgICAgIGRldmljZSgpIGNvbnN0OworCisgICAgTVRMOjpTdG9yYWdlTW9kZSAg
ICAgICAgc3RvcmFnZU1vZGUoKSBjb25zdDsKKworICAgIE1UTDo6Q1BVQ2FjaGVNb2RlICAgICAg
IGNwdUNhY2hlTW9kZSgpIGNvbnN0OworCisgICAgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgaGF6
YXJkVHJhY2tpbmdNb2RlKCkgY29uc3Q7CisKKyAgICBNVEw6OlJlc291cmNlT3B0aW9ucyAgICBy
ZXNvdXJjZU9wdGlvbnMoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgIHNp
emUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgIHVzZWRTaXplKCkgY29u
c3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICBjdXJyZW50QWxsb2NhdGVkU2l6ZSgp
IGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgbWF4QXZhaWxhYmxlU2l6ZShO
Uzo6VUludGVnZXIgYWxpZ25tZW50KTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAgICAgIG5l
d0J1ZmZlcihOUzo6VUludGVnZXIgbGVuZ3RoLCBNVEw6OlJlc291cmNlT3B0aW9ucyBvcHRpb25z
KTsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgIG5ld1RleHR1cmUoY29uc3QgY2xhc3Mg
VGV4dHVyZURlc2NyaXB0b3IqIGRlc2MpOworCisgICAgTVRMOjpQdXJnZWFibGVTdGF0ZSAgICAg
c2V0UHVyZ2VhYmxlU3RhdGUoTVRMOjpQdXJnZWFibGVTdGF0ZSBzdGF0ZSk7CisKKyAgICBNVEw6
OkhlYXBUeXBlICAgICAgICAgICB0eXBlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBCdWZmZXIqICAg
ICAgICAgICBuZXdCdWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlv
bnMgb3B0aW9ucywgTlM6OlVJbnRlZ2VyIG9mZnNldCk7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAg
ICAgICAgICBuZXdUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yLCBOUzo6VUludGVnZXIgb2Zmc2V0KTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDog
YWxsb2MKK19NVExfSU5MSU5FIE1UTDo6SGVhcERlc2NyaXB0b3IqIE1UTDo6SGVhcERlc2NyaXB0
b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpIZWFwRGVz
Y3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExIZWFwRGVzY3JpcHRvcikpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6SGVhcERlc2NyaXB0b3IqIE1UTDo6SGVhcERl
c2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6SGVh
cERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBzaXplCitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNpemUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXBEZXNjcmlwdG9yOjpzZXRT
aXplKE5TOjpVSW50ZWdlciBzaXplKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTaXplXyksIHNpemUpOworfQorCisvLyBwcm9wZXJ0
eTogc3RvcmFnZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6U3RvcmFnZU1vZGUgTVRMOjpIZWFwRGVz
Y3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6U3RvcmFnZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RvcmFnZU1v
ZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkhlYXBEZXNjcmlwdG9yOjpzZXRTdG9y
YWdlTW9kZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdG9yYWdlTW9kZV8pLCBz
dG9yYWdlTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBjcHVDYWNoZU1vZGUKK19NVExfSU5MSU5F
IE1UTDo6Q1BVQ2FjaGVNb2RlIE1UTDo6SGVhcERlc2NyaXB0b3I6OmNwdUNhY2hlTW9kZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDUFVDYWNoZU1vZGU+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY3B1Q2FjaGVNb2RlKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0Q3B1Q2FjaGVNb2RlKE1UTDo6Q1BVQ2FjaGVN
b2RlIGNwdUNhY2hlTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0Q3B1Q2FjaGVNb2RlXyksIGNwdUNhY2hlTW9kZSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBoYXphcmRUcmFja2luZ01vZGUKK19NVExfSU5MSU5FIE1UTDo6SGF6YXJk
VHJhY2tpbmdNb2RlIE1UTDo6SGVhcERlc2NyaXB0b3I6OmhhemFyZFRyYWNraW5nTW9kZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpIYXphcmRUcmFja2lu
Z01vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaGF6YXJkVHJhY2tpbmdNb2RlKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpIZWFwRGVzY3JpcHRvcjo6c2V0SGF6YXJkVHJhY2tpbmdN
b2RlKE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9kZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SGF6YXJk
VHJhY2tpbmdNb2RlXyksIGhhemFyZFRyYWNraW5nTW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBy
ZXNvdXJjZU9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VPcHRpb25zIE1UTDo6SGVh
cERlc2NyaXB0b3I6OnJlc291cmNlT3B0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZU9wdGlvbnM+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocmVzb3VyY2VPcHRpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpIZWFwRGVz
Y3JpcHRvcjo6c2V0UmVzb3VyY2VPcHRpb25zKE1UTDo6UmVzb3VyY2VPcHRpb25zIHJlc291cmNl
T3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0UmVzb3VyY2VPcHRpb25zXyksIHJlc291cmNlT3B0aW9ucyk7Cit9CisKKy8v
IHByb3BlcnR5OiB0eXBlCitfTVRMX0lOTElORSBNVEw6OkhlYXBUeXBlIE1UTDo6SGVhcERlc2Ny
aXB0b3I6OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6SGVhcFR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHlwZSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6SGVhcERlc2NyaXB0b3I6OnNldFR5cGUoTVRMOjpIZWFwVHlwZSB0eXBl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRUeXBlXyksIHR5cGUpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5F
IE5TOjpTdHJpbmcqIE1UTDo6SGVhcDo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVs
KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpIZWFwOjpzZXRMYWJlbChjb25zdCBOUzo6
U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogZGV2
aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpIZWFwOjpkZXZpY2UoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IHN0b3JhZ2VNb2RlCitf
TVRMX0lOTElORSBNVEw6OlN0b3JhZ2VNb2RlIE1UTDo6SGVhcDo6c3RvcmFnZU1vZGUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U3RvcmFnZU1vZGU+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc3RvcmFnZU1vZGUpKTsKK30KKworLy8gcHJvcGVydHk6IGNw
dUNhY2hlTW9kZQorX01UTF9JTkxJTkUgTVRMOjpDUFVDYWNoZU1vZGUgTVRMOjpIZWFwOjpjcHVD
YWNoZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
Q1BVQ2FjaGVNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNwdUNhY2hlTW9kZSkpOworfQor
CisvLyBwcm9wZXJ0eTogaGF6YXJkVHJhY2tpbmdNb2RlCitfTVRMX0lOTElORSBNVEw6OkhhemFy
ZFRyYWNraW5nTW9kZSBNVEw6OkhlYXA6OmhhemFyZFRyYWNraW5nTW9kZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpIYXphcmRUcmFja2luZ01vZGU+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoaGF6YXJkVHJhY2tpbmdNb2RlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiByZXNvdXJjZU9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VPcHRpb25zIE1U
TDo6SGVhcDo6cmVzb3VyY2VPcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlT3B0aW9ucz4odGhpcywgX01UTF9QUklWQVRFX1NFTChy
ZXNvdXJjZU9wdGlvbnMpKTsKK30KKworLy8gcHJvcGVydHk6IHNpemUKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OkhlYXA6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChzaXplKSk7
Cit9CisKKy8vIHByb3BlcnR5OiB1c2VkU2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6SGVhcDo6dXNlZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VkU2l6ZSkpOworfQor
CisvLyBwcm9wZXJ0eTogY3VycmVudEFsbG9jYXRlZFNpemUKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OkhlYXA6OmN1cnJlbnRBbGxvY2F0ZWRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoY3VycmVudEFsbG9jYXRlZFNpemUpKTsKK30KKworLy8gbWV0aG9kOiBtYXhBdmFpbGFibGVT
aXplV2l0aEFsaWdubWVudDoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkhlYXA6Om1h
eEF2YWlsYWJsZVNpemUoTlM6OlVJbnRlZ2VyIGFsaWdubWVudCkKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4
QXZhaWxhYmxlU2l6ZVdpdGhBbGlnbm1lbnRfKSwgYWxpZ25tZW50KTsKK30KKworLy8gbWV0aG9k
OiBuZXdCdWZmZXJXaXRoTGVuZ3RoOm9wdGlvbnM6CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciog
TVRMOjpIZWFwOjpuZXdCdWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9w
dGlvbnMgb3B0aW9ucykKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJ1
ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QnVmZmVyV2l0aExlbmd0aF9vcHRpb25z
XyksIGxlbmd0aCwgb3B0aW9ucyk7Cit9CisKKy8vIG1ldGhvZDogbmV3VGV4dHVyZVdpdGhEZXNj
cmlwdG9yOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OkhlYXA6Om5ld1RleHR1cmUo
Y29uc3QgTVRMOjpUZXh0dXJlRGVzY3JpcHRvciogZGVzYykKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1Rl
eHR1cmVXaXRoRGVzY3JpcHRvcl8pLCBkZXNjKTsKK30KKworLy8gbWV0aG9kOiBzZXRQdXJnZWFi
bGVTdGF0ZToKK19NVExfSU5MSU5FIE1UTDo6UHVyZ2VhYmxlU3RhdGUgTVRMOjpIZWFwOjpzZXRQ
dXJnZWFibGVTdGF0ZShNVEw6OlB1cmdlYWJsZVN0YXRlIHN0YXRlKQoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UHVyZ2VhYmxlU3RhdGU+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0UHVyZ2VhYmxlU3RhdGVfKSwgc3RhdGUpOworfQorCisvLyBwcm9wZXJ0eTogdHlw
ZQorX01UTF9JTkxJTkUgTVRMOjpIZWFwVHlwZSBNVEw6OkhlYXA6OnR5cGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGVhcFR5cGU+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodHlwZSkpOworfQorCisvLyBtZXRob2Q6IG5ld0J1ZmZlcldpdGhMZW5ndGg6
b3B0aW9uczpvZmZzZXQ6CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlciogTVRMOjpIZWFwOjpuZXdC
dWZmZXIoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgb3B0aW9ucywg
TlM6OlVJbnRlZ2VyIG9mZnNldCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxN
VEw6OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3QnVmZmVyV2l0aExlbmd0aF9v
cHRpb25zX29mZnNldF8pLCBsZW5ndGgsIG9wdGlvbnMsIG9mZnNldCk7Cit9CisKKy8vIG1ldGhv
ZDogbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOm9mZnNldDoKK19NVExfSU5MSU5FIE1UTDo6VGV4
dHVyZSogTVRMOjpIZWFwOjpuZXdUZXh0dXJlKGNvbnN0IE1UTDo6VGV4dHVyZURlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IsIE5TOjpVSW50ZWdlciBvZmZzZXQpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0
dXJlV2l0aERlc2NyaXB0b3Jfb2Zmc2V0XyksIGRlc2NyaXB0b3IsIG9mZnNldCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RD
b21tYW5kQnVmZmVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExJbmRpcmVjdENvbW1hbmRCdWZmZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhYTNhMzU5NzdiMDFlMmIw
MGIyNmExOGE5NTI3MzRkNTUzN2FkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcApAQCAt
MCwwICsxLDE4OSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLworLy8gTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcAorLy8KKy8vIENv
cHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
Ly8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERl
ZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRM
UHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCisj
aW5jbHVkZSAiTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVyLmhwcCIKKyNpbmNsdWRlICJNVExSZXNv
dXJjZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIs
IEluZGlyZWN0Q29tbWFuZFR5cGUpIHsKKyAgICBJbmRpcmVjdENvbW1hbmRUeXBlRHJhdyA9IDEs
CisgICAgSW5kaXJlY3RDb21tYW5kVHlwZURyYXdJbmRleGVkID0gMiwKKyAgICBJbmRpcmVjdENv
bW1hbmRUeXBlRHJhd1BhdGNoZXMgPSA0LAorICAgIEluZGlyZWN0Q29tbWFuZFR5cGVEcmF3SW5k
ZXhlZFBhdGNoZXMgPSA4LAorICAgIEluZGlyZWN0Q29tbWFuZFR5cGVDb25jdXJyZW50RGlzcGF0
Y2ggPSAzMiwKKyAgICBJbmRpcmVjdENvbW1hbmRUeXBlQ29uY3VycmVudERpc3BhdGNoVGhyZWFk
cyA9IDY0LAorfTsKKworc3RydWN0IEluZGlyZWN0Q29tbWFuZEJ1ZmZlckV4ZWN1dGlvblJhbmdl
Cit7CisgICAgdWludDMyX3QgbG9jYXRpb247CisgICAgdWludDMyX3QgbGVuZ3RoOworfSBfTVRM
X1BBQ0tFRDsKKworY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvciA6IHB1Ymxp
YyBOUzo6Q29weWluZzxJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgSW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvciogICAgICAg
IGluaXQoKTsKKworICAgIE1UTDo6SW5kaXJlY3RDb21tYW5kVHlwZSAgICAgICAgICAgICAgICAg
ICAgICBjb21tYW5kVHlwZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0Q29tbWFuZFR5cGVzKE1UTDo6SW5kaXJlY3RDb21tYW5k
VHlwZSBjb21tYW5kVHlwZXMpOworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluaGVyaXRQaXBlbGluZVN0YXRlKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluaGVyaXRQaXBlbGlu
ZVN0YXRlKGJvb2wgaW5oZXJpdFBpcGVsaW5lU3RhdGUpOworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRCdWZmZXJzKCkgY29uc3Q7Cisg
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluaGVy
aXRCdWZmZXJzKGJvb2wgaW5oZXJpdEJ1ZmZlcnMpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFZlcnRleEJ1ZmZlckJpbmRDb3VudCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRNYXhWZXJ0ZXhCdWZmZXJCaW5kQ291bnQoTlM6OlVJbnRlZ2VyIG1heFZlcnRleEJ1ZmZlckJp
bmRDb3VudCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4RnJhZ21lbnRCdWZmZXJC
aW5kQ291bnQoTlM6OlVJbnRlZ2VyIG1heEZyYWdtZW50QnVmZmVyQmluZENvdW50KTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhLZXJuZWxC
dWZmZXJCaW5kQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0TWF4S2VybmVsQnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdl
ciBtYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQpOworfTsKKworY2xhc3MgSW5kaXJlY3RDb21tYW5k
QnVmZmVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxJbmRpcmVjdENvbW1hbmRCdWZmZXIsIFJl
c291cmNlPgoreworcHVibGljOgorICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgIHNp
emUoKSBjb25zdDsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0KE5T
OjpSYW5nZSByYW5nZSk7CisKKyAgICBjbGFzcyBJbmRpcmVjdFJlbmRlckNvbW1hbmQqICBpbmRp
cmVjdFJlbmRlckNvbW1hbmQoTlM6OlVJbnRlZ2VyIGNvbW1hbmRJbmRleCk7CisKKyAgICBjbGFz
cyBJbmRpcmVjdENvbXB1dGVDb21tYW5kKiBpbmRpcmVjdENvbXB1dGVDb21tYW5kKE5TOjpVSW50
ZWdlciBjb21tYW5kSW5kZXgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYwor
X01UTF9JTkxJTkUgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKiBNVEw6Oklu
ZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6
Ok9iamVjdDo6YWxsb2M8TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPihfTVRM
X1BSSVZBVEVfQ0xTKE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IpKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRl
c2NyaXB0b3IqIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6aW5pdCgpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJE
ZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogY29tbWFuZFR5cGVzCitfTVRMX0lOTElO
RSBNVEw6OkluZGlyZWN0Q29tbWFuZFR5cGUgTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yOjpjb21tYW5kVHlwZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6SW5kaXJlY3RDb21tYW5kVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChj
b21tYW5kVHlwZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3I6OnNldENvbW1hbmRUeXBlcyhNVEw6OkluZGlyZWN0Q29tbWFuZFR5
cGUgY29tbWFuZFR5cGVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRDb21tYW5kVHlwZXNfKSwgY29tbWFuZFR5cGVzKTsKK30KKwor
Ly8gcHJvcGVydHk6IGluaGVyaXRQaXBlbGluZVN0YXRlCitfTVRMX0lOTElORSBib29sIE1UTDo6
SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6aW5oZXJpdFBpcGVsaW5lU3RhdGUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaW5oZXJpdFBpcGVsaW5lU3RhdGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNldEluaGVyaXRQaXBlbGlu
ZVN0YXRlKGJvb2wgaW5oZXJpdFBpcGVsaW5lU3RhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluaGVyaXRQaXBlbGluZVN0YXRl
XyksIGluaGVyaXRQaXBlbGluZVN0YXRlKTsKK30KKworLy8gcHJvcGVydHk6IGluaGVyaXRCdWZm
ZXJzCitfTVRMX0lOTElORSBib29sIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRv
cjo6aW5oZXJpdEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5oZXJpdEJ1ZmZlcnMpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6OnNl
dEluaGVyaXRCdWZmZXJzKGJvb2wgaW5oZXJpdEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEluaGVyaXRCdWZmZXJzXyks
IGluaGVyaXRCdWZmZXJzKTsKK30KKworLy8gcHJvcGVydHk6IG1heFZlcnRleEJ1ZmZlckJpbmRD
b3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVy
RGVzY3JpcHRvcjo6bWF4VmVydGV4QnVmZmVyQmluZENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobWF4VmVydGV4QnVmZmVyQmluZENvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpJbmRpcmVjdENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOjpzZXRNYXhWZXJ0ZXhCdWZmZXJCaW5k
Q291bnQoTlM6OlVJbnRlZ2VyIG1heFZlcnRleEJ1ZmZlckJpbmRDb3VudCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4VmVydGV4
QnVmZmVyQmluZENvdW50XyksIG1heFZlcnRleEJ1ZmZlckJpbmRDb3VudCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRl
Z2VyIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6bWF4RnJhZ21lbnRCdWZm
ZXJCaW5kQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5T
OjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhGcmFnbWVudEJ1ZmZlckJpbmRD
b3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVy
RGVzY3JpcHRvcjo6c2V0TWF4RnJhZ21lbnRCdWZmZXJCaW5kQ291bnQoTlM6OlVJbnRlZ2VyIG1h
eEZyYWdtZW50QnVmZmVyQmluZENvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRNYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudF8p
LCBtYXhGcmFnbWVudEJ1ZmZlckJpbmRDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhLZXJu
ZWxCdWZmZXJCaW5kQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkluZGlyZWN0
Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I6Om1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKG1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjo6c2V0TWF4S2Vy
bmVsQnVmZmVyQmluZENvdW50KE5TOjpVSW50ZWdlciBtYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE1heEtlcm5lbEJ1ZmZlckJpbmRDb3VudF8pLCBtYXhLZXJuZWxCdWZmZXJCaW5kQ291bnQp
OworfQorCisvLyBwcm9wZXJ0eTogc2l6ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
SW5kaXJlY3RDb21tYW5kQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2l6ZSkp
OworfQorCisvLyBtZXRob2Q6IHJlc2V0V2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkluZGlyZWN0Q29tbWFuZEJ1ZmZlcjo6cmVzZXQoTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldFdpdGhS
YW5nZV8pLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogaW5kaXJlY3RSZW5kZXJDb21tYW5kQXRJ
bmRleDoKK19NVExfSU5MSU5FIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kKiBNVEw6OkluZGly
ZWN0Q29tbWFuZEJ1ZmZlcjo6aW5kaXJlY3RSZW5kZXJDb21tYW5kKE5TOjpVSW50ZWdlciBjb21t
YW5kSW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpJbmRpcmVj
dFJlbmRlckNvbW1hbmQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGlyZWN0UmVuZGVyQ29t
bWFuZEF0SW5kZXhfKSwgY29tbWFuZEluZGV4KTsKK30KKworLy8gbWV0aG9kOiBpbmRpcmVjdENv
bXB1dGVDb21tYW5kQXRJbmRleDoKK19NVExfSU5MSU5FIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29t
bWFuZCogTVRMOjpJbmRpcmVjdENvbW1hbmRCdWZmZXI6OmluZGlyZWN0Q29tcHV0ZUNvbW1hbmQo
TlM6OlVJbnRlZ2VyIGNvbW1hbmRJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGluZGlyZWN0Q29tcHV0ZUNvbW1hbmRBdEluZGV4XyksIGNvbW1hbmRJbmRleCk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW5kaXJlY3RD
b21tYW5kRW5jb2Rlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwv
TVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZkNTJmZDdkY2UxMjE2
ZmE0NzBlZjI5OGJhZDAxZmQzMGE2MTc0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExJbmRpcmVjdENvbW1hbmRFbmNvZGVyLmhwcApA
QCAtMCwwICsxLDE4NyBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLworLy8gTWV0YWwvTVRMSW5kaXJlY3RDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJN
VExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUg
Ik1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4K
KworI2luY2x1ZGUgIk1UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExT
dGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgor
CituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBJbmRpcmVjdFJlbmRlckNvbW1hbmQgOiBwdWJsaWMg
TlM6OlJlZmVyZW5jaW5nPEluZGlyZWN0UmVuZGVyQ29tbWFuZD4KK3sKK3B1YmxpYzoKKyAgICB2
b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgY2xhc3MgUmVuZGVyUGlwZWxpbmVTdGF0
ZSogcGlwZWxpbmVTdGF0ZSk7CisKKyAgICB2b2lkIHNldFZlcnRleEJ1ZmZlcihjb25zdCBjbGFz
cyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4
KTsKKworICAgIHZvaWQgc2V0RnJhZ21lbnRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZm
ZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lk
IGRyYXdQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6
OlVJbnRlZ2VyIHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBjbGFz
cyBCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVy
T2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0
YW5jZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5T
OjpVSW50ZWdlciBpbnN0YW5jZVN0cmlkZSk7CisKKyAgICB2b2lkIGRyYXdJbmRleGVkUGF0Y2hl
cyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBw
YXRjaFN0YXJ0LCBOUzo6VUludGVnZXIgcGF0Y2hDb3VudCwgY29uc3QgY2xhc3MgQnVmZmVyKiBw
YXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29u
c3QgY2xhc3MgQnVmZmVyKiBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGNv
bnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwg
TlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSwgY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5T
OjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZVN0cmlkZSk7CisKKyAgICB2
b2lkIGRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBOUzo6
VUludGVnZXIgdmVydGV4U3RhcnQsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhDb3VudCwgTlM6OlVJbnRl
Z2VyIGluc3RhbmNlQ291bnQsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisgICAgdm9p
ZCBkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUs
IE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0
IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpJbnRlZ2VyIGJhc2VWZXJ0ZXgsIE5T
OjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisgICAgdm9pZCByZXNldCgpOworfTsKKworY2xh
c3MgSW5kaXJlY3RDb21wdXRlQ29tbWFuZCA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8SW5kaXJl
Y3RDb21wdXRlQ29tbWFuZD4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIHNldENvbXB1dGVQaXBlbGlu
ZVN0YXRlKGNvbnN0IGNsYXNzIENvbXB1dGVQaXBlbGluZVN0YXRlKiBwaXBlbGluZVN0YXRlKTsK
KworICAgIHZvaWQgc2V0S2VybmVsQnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBO
Uzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBjb25j
dXJyZW50RGlzcGF0Y2hUaHJlYWRncm91cHMoTVRMOjpTaXplIHRocmVhZGdyb3Vwc1BlckdyaWQs
IE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApOworCisgICAgdm9pZCBjb25jdXJyZW50
RGlzcGF0Y2hUaHJlYWRzKE1UTDo6U2l6ZSB0aHJlYWRzUGVyR3JpZCwgTVRMOjpTaXplIHRocmVh
ZHNQZXJUaHJlYWRncm91cCk7CisKKyAgICB2b2lkIHNldEJhcnJpZXIoKTsKKworICAgIHZvaWQg
Y2xlYXJCYXJyaWVyKCk7CisKKyAgICB2b2lkIHNldEltYWdlYmxvY2tXaWR0aChOUzo6VUludGVn
ZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQpOworCisgICAgdm9pZCByZXNldCgpOworCisg
ICAgdm9pZCBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aChOUzo6VUludGVnZXIgbGVuZ3RoLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBzZXRTdGFnZUluUmVnaW9uKE1UTDo6UmVn
aW9uIHJlZ2lvbik7Cit9OworCit9CisKKy8vIG1ldGhvZDogc2V0UmVuZGVyUGlwZWxpbmVTdGF0
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQ6OnNldFJlbmRl
clBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlKiBwaXBlbGluZVN0
YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRSZW5kZXJQaXBlbGluZVN0YXRlXyksIHBpcGVsaW5lU3RhdGUpOworfQorCisvLyBt
ZXRob2Q6IHNldFZlcnRleEJ1ZmZlcjpvZmZzZXQ6YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQ6OnNldFZlcnRleEJ1ZmZlcihjb25zdCBNVEw6OkJ1
ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7
CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNl
dFZlcnRleEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOwor
fQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50QnVmZmVyOm9mZnNldDphdEluZGV4OgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6c2V0RnJhZ21lbnRCdWZmZXIo
Y29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRl
Z2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRGcmFnbWVudEJ1ZmZlcl9vZmZzZXRfYXRJbmRleF8pLCBidWZmZXIsIG9m
ZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IGRyYXdQYXRjaGVzOnBhdGNoU3RhcnQ6cGF0
Y2hDb3VudDpwYXRjaEluZGV4QnVmZmVyOnBhdGNoSW5kZXhCdWZmZXJPZmZzZXQ6aW5zdGFuY2VD
b3VudDpiYXNlSW5zdGFuY2U6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyOnRlc3NlbGxhdGlvbkZh
Y3RvckJ1ZmZlck9mZnNldDp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlkZToK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbmRpcmVjdFJlbmRlckNvbW1hbmQ6OmRyYXdQYXRjaGVz
KE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRlZ2VyIHBh
dGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBNVEw6OkJ1ZmZlciogcGF0
Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpV
SW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlLCBjb25zdCBN
VEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5z
dGFuY2VTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGRyYXdQYXRjaGVzX3BhdGNoU3RhcnRfcGF0Y2hDb3VudF9wYXRjaEluZGV4
QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2Vf
dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVyX3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlck9mZnNldF90
ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJJbnN0YW5jZVN0cmlkZV8pLCBudW1iZXJPZlBhdGNoQ29u
dHJvbFBvaW50cywgcGF0Y2hTdGFydCwgcGF0Y2hDb3VudCwgcGF0Y2hJbmRleEJ1ZmZlciwgcGF0
Y2hJbmRleEJ1ZmZlck9mZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZUluc3RhbmNlLCBidWZmZXIs
IG9mZnNldCwgaW5zdGFuY2VTdHJpZGUpOworfQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUGF0
Y2hlczpwYXRjaFN0YXJ0OnBhdGNoQ291bnQ6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVm
ZmVyT2Zmc2V0OmNvbnRyb2xQb2ludEluZGV4QnVmZmVyOmNvbnRyb2xQb2ludEluZGV4QnVmZmVy
T2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOnRlc3NlbGxhdGlvbkZhY3RvckJ1ZmZl
cjp0ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXQ6dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVy
SW5zdGFuY2VTdHJpZGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21t
YW5kOjpkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0Y2hDb250cm9s
UG9pbnRzLCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBhdGNoQ291bnQs
IGNvbnN0IE1UTDo6QnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJ
bmRleEJ1ZmZlck9mZnNldCwgY29uc3QgTVRMOjpCdWZmZXIqIGNvbnRyb2xQb2ludEluZGV4QnVm
ZmVyLCBOUzo6VUludGVnZXIgY29udHJvbFBvaW50SW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpVSW50
ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUluc3RhbmNlLCBjb25zdCBNVEw6
OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5zdGFu
Y2VTdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGRyYXdJbmRleGVkUGF0Y2hlc19wYXRjaFN0YXJ0X3BhdGNoQ291bnRfcGF0Y2hJ
bmRleEJ1ZmZlcl9wYXRjaEluZGV4QnVmZmVyT2Zmc2V0X2NvbnRyb2xQb2ludEluZGV4QnVmZmVy
X2NvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0X2luc3RhbmNlQ291bnRfYmFzZUluc3RhbmNl
X3Rlc3NlbGxhdGlvbkZhY3RvckJ1ZmZlcl90ZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJPZmZzZXRf
dGVzc2VsbGF0aW9uRmFjdG9yQnVmZmVySW5zdGFuY2VTdHJpZGVfKSwgbnVtYmVyT2ZQYXRjaENv
bnRyb2xQb2ludHMsIHBhdGNoU3RhcnQsIHBhdGNoQ291bnQsIHBhdGNoSW5kZXhCdWZmZXIsIHBh
dGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBjb250cm9sUG9p
bnRJbmRleEJ1ZmZlck9mZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZUluc3RhbmNlLCBidWZmZXIs
IG9mZnNldCwgaW5zdGFuY2VTdHJpZGUpOworfQorCisvLyBtZXRob2Q6IGRyYXdQcmltaXRpdmVz
OnZlcnRleFN0YXJ0OnZlcnRleENvdW50Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6ZHJhd1ByaW1pdGl2ZXMo
TVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdGFy
dCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwg
TlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVy
dGV4Q291bnRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfKSwgcHJpbWl0aXZlVHlwZSwgdmVy
dGV4U3RhcnQsIHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBiYXNlSW5zdGFuY2UpOworfQor
CisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUHJpbWl0aXZlczppbmRleENvdW50OmluZGV4VHlwZTpp
bmRleEJ1ZmZlcjppbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJhc2VWZXJ0ZXg6YmFz
ZUluc3RhbmNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0UmVuZGVyQ29tbWFuZDo6
ZHJhd0luZGV4ZWRQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRpdmVUeXBlLCBO
Uzo6VUludGVnZXIgaW5kZXhDb3VudCwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBN
VEw6OkJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwg
TlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5TOjpJbnRlZ2VyIGJhc2VWZXJ0ZXgsIE5TOjpV
SW50ZWdlciBiYXNlSW5zdGFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdJbmRleGVkUHJpbWl0aXZlc19pbmRleENvdW50X2lu
ZGV4VHlwZV9pbmRleEJ1ZmZlcl9pbmRleEJ1ZmZlck9mZnNldF9pbnN0YW5jZUNvdW50X2Jhc2VW
ZXJ0ZXhfYmFzZUluc3RhbmNlXyksIHByaW1pdGl2ZVR5cGUsIGluZGV4Q291bnQsIGluZGV4VHlw
ZSwgaW5kZXhCdWZmZXIsIGluZGV4QnVmZmVyT2Zmc2V0LCBpbnN0YW5jZUNvdW50LCBiYXNlVmVy
dGV4LCBiYXNlSW5zdGFuY2UpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6SW5kaXJlY3RSZW5kZXJDb21tYW5kOjpyZXNldCgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9CisKKy8v
IG1ldGhvZDogc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgTVRM
OjpDb21wdXRlUGlwZWxpbmVTdGF0ZSogcGlwZWxpbmVTdGF0ZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29tcHV0ZVBpcGVsaW5l
U3RhdGVfKSwgcGlwZWxpbmVTdGF0ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0S2VybmVsQnVmZmVy
Om9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNv
bW1hbmQ6OnNldEtlcm5lbEJ1ZmZlcihjb25zdCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUlu
dGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEtlcm5lbEJ1ZmZlcl9vZmZzZXRf
YXRJbmRleF8pLCBidWZmZXIsIG9mZnNldCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IGNvbmN1
cnJlbnREaXNwYXRjaFRocmVhZGdyb3Vwczp0aHJlYWRzUGVyVGhyZWFkZ3JvdXA6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6Y29uY3VycmVudERpc3BhdGNo
VGhyZWFkZ3JvdXBzKE1UTDo6U2l6ZSB0aHJlYWRncm91cHNQZXJHcmlkLCBNVEw6OlNpemUgdGhy
ZWFkc1BlclRocmVhZGdyb3VwKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChjb25jdXJyZW50RGlzcGF0Y2hUaHJlYWRncm91cHNfdGhyZWFk
c1BlclRocmVhZGdyb3VwXyksIHRocmVhZGdyb3Vwc1BlckdyaWQsIHRocmVhZHNQZXJUaHJlYWRn
cm91cCk7Cit9CisKKy8vIG1ldGhvZDogY29uY3VycmVudERpc3BhdGNoVGhyZWFkczp0aHJlYWRz
UGVyVGhyZWFkZ3JvdXA6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW5kaXJlY3RDb21wdXRlQ29t
bWFuZDo6Y29uY3VycmVudERpc3BhdGNoVGhyZWFkcyhNVEw6OlNpemUgdGhyZWFkc1BlckdyaWQs
IE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbmN1cnJlbnREaXNwYXRjaFRocmVh
ZHNfdGhyZWFkc1BlclRocmVhZGdyb3VwXyksIHRocmVhZHNQZXJHcmlkLCB0aHJlYWRzUGVyVGhy
ZWFkZ3JvdXApOworfQorCisvLyBtZXRob2Q6IHNldEJhcnJpZXIKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpJbmRpcmVjdENvbXB1dGVDb21tYW5kOjpzZXRCYXJyaWVyKCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmFycmllcikpOwor
fQorCisvLyBtZXRob2Q6IGNsZWFyQmFycmllcgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGly
ZWN0Q29tcHV0ZUNvbW1hbmQ6OmNsZWFyQmFycmllcigpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNsZWFyQmFycmllcikpOworfQorCisv
LyBtZXRob2Q6IHNldEltYWdlYmxvY2tXaWR0aDpoZWlnaHQ6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6SW5kaXJlY3RDb21wdXRlQ29tbWFuZDo6c2V0SW1hZ2VibG9ja1dpZHRoKE5TOjpVSW50ZWdl
ciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdodCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW1hZ2VibG9ja1dpZHRoX2hlaWdodF8p
LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworLy8gbWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnJlc2V0KCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzZXQpKTsKK30KKworLy8g
bWV0aG9kOiBzZXRUaHJlYWRncm91cE1lbW9yeUxlbmd0aDphdEluZGV4OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0ZUNvbW1hbmQ6OnNldFRocmVhZGdyb3VwTWVtb3J5TGVu
Z3RoKE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGhyZWFkZ3Jv
dXBNZW1vcnlMZW5ndGhfYXRJbmRleF8pLCBsZW5ndGgsIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBzZXRTdGFnZUluUmVnaW9uOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkluZGlyZWN0Q29tcHV0
ZUNvbW1hbmQ6OnNldFN0YWdlSW5SZWdpb24oTVRMOjpSZWdpb24gcmVnaW9uKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGFnZUlu
UmVnaW9uXyksIHJlZ2lvbik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTIzODM1ZDFkYjc4YWQ4MmRmNDc2ZDI2MGMzMmRiZDljYmU4MTM2
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcApAQCAtMCwwICsxLDE1NyBAQAorLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwv
TVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0y
MDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNp
bmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgor
CisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEJ1
ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25IYW5kbGUuaHBwIgorI2luY2x1ZGUgIk1U
TEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlLmhw
cCIKKyNpbmNsdWRlICJNVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAiCisKK25hbWVzcGFjZSBN
VEwKK3sKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIEludGVyc2VjdGlvbkZ1bmN0aW9uU2ln
bmF0dXJlKSB7CisgICAgSW50ZXJzZWN0aW9uRnVuY3Rpb25TaWduYXR1cmVOb25lID0gMCwKKyAg
ICBJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZUluc3RhbmNpbmcgPSAxLAorICAgIEludGVy
c2VjdGlvbkZ1bmN0aW9uU2lnbmF0dXJlVHJpYW5nbGVEYXRhID0gMiwKKyAgICBJbnRlcnNlY3Rp
b25GdW5jdGlvblNpZ25hdHVyZVdvcmxkU3BhY2VEYXRhID0gNCwKKyAgICBJbnRlcnNlY3Rpb25G
dW5jdGlvblNpZ25hdHVyZUluc3RhbmNlTW90aW9uID0gOCwKKyAgICBJbnRlcnNlY3Rpb25GdW5j
dGlvblNpZ25hdHVyZVByaW1pdGl2ZU1vdGlvbiA9IDE2LAorICAgIEludGVyc2VjdGlvbkZ1bmN0
aW9uU2lnbmF0dXJlRXh0ZW5kZWRMaW1pdHMgPSAzMiwKK307CisKK2NsYXNzIEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPEludGVyc2VjdGlv
bkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNz
IEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisg
ICAgc3RhdGljIGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBpbnRl
cnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcigpOworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbkNvdW50KCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRGdW5jdGlvbkNvdW50KE5TOjpVSW50ZWdlciBmdW5jdGlvbkNvdW50KTsKK307CisKK2NsYXNz
IEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGUsIFJlc291cmNlPgoreworcHVibGljOgorICAgIHZvaWQgc2V0
QnVmZmVyKGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCBzZXRCdWZmZXJzKGNvbnN0IGNsYXNzIEJ1
ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFuZ2Ug
cmFuZ2UpOworCisgICAgdm9pZCBzZXRGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbkhhbmRs
ZSogZnVuY3Rpb24sIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkIHNldEZ1bmN0aW9u
cyhjb25zdCBjbGFzcyBGdW5jdGlvbkhhbmRsZSogZnVuY3Rpb25zW10sIE5TOjpSYW5nZSByYW5n
ZSk7CisKKyAgICB2b2lkIHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb24oTVRM
OjpJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZSBzaWduYXR1cmUsIE5TOjpVSW50ZWdlciBp
bmRleCk7CisKKyAgICB2b2lkIHNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb24o
TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblNpZ25hdHVyZSBzaWduYXR1cmUsIE5TOjpSYW5nZSBy
YW5nZSk7CisKKyAgICB2b2lkIHNldFZpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZp
c2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5k
ZXgpOworCisgICAgdm9pZCBzZXRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgY2xhc3MgVmlz
aWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSBidWZmZXJSYW5n
ZSk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6
OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6
OmFsbG9jPE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I+KF9NVExfUFJJ
VkFURV9DTFMoTVRMSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVEZXNjcmlwdG9yKiBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yOjpp
bml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGVEZXNjcmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBpbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpJbnRlcnNlY3Rp
b25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
RGVzY3JpcHRvcjo6aW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IoKQoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTChpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
RGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0eTogZnVuY3Rpb25Db3VudAorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6
OmZ1bmN0aW9uQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbkNvdW50KSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3Jp
cHRvcjo6c2V0RnVuY3Rpb25Db3VudChOUzo6VUludGVnZXIgZnVuY3Rpb25Db3VudCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnVu
Y3Rpb25Db3VudF8pLCBmdW5jdGlvbkNvdW50KTsKK30KKworLy8gbWV0aG9kOiBzZXRCdWZmZXI6
b2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZTo6c2V0QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdl
ciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyX29mZnNldF9hdEluZGV4Xyks
IGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0QnVmZmVyczpvZmZz
ZXRzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlOjpzZXRCdWZmZXJzKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5T
OjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QnVmZmVyc19vZmZzZXRz
X3dpdGhSYW5nZV8pLCBidWZmZXJzLCBvZmZzZXRzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDog
c2V0RnVuY3Rpb246YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpJbnRlcnNlY3Rpb25G
dW5jdGlvblRhYmxlOjpzZXRGdW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBmdW5j
dGlvbiwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGdW5jdGlvbl9hdEluZGV4XyksIGZ1bmN0aW9u
LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnVuY3Rpb25zOndpdGhSYW5nZToKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOjpzZXRGdW5jdGlvbnMo
Y29uc3QgTVRMOjpGdW5jdGlvbkhhbmRsZSogZnVuY3Rpb25zW10sIE5TOjpSYW5nZSByYW5nZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0RnVuY3Rpb25zX3dpdGhSYW5nZV8pLCBmdW5jdGlvbnMsIHJhbmdlKTsKK30KKworLy8gbWV0
aG9kOiBzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0aFNpZ25hdHVyZTph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGU6
OnNldE9wYXF1ZVRyaWFuZ2xlSW50ZXJzZWN0aW9uRnVuY3Rpb24oTVRMOjpJbnRlcnNlY3Rpb25G
dW5jdGlvblNpZ25hdHVyZSBzaWduYXR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T3BhcXVl
VHJpYW5nbGVJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhTaWduYXR1cmVfYXRJbmRleF8pLCBzaWdu
YXR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPcGFxdWVUcmlhbmdsZUludGVyc2Vj
dGlvbkZ1bmN0aW9uV2l0aFNpZ25hdHVyZTp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTo6c2V0T3BhcXVlVHJpYW5nbGVJbnRlcnNlY3Rp
b25GdW5jdGlvbihNVEw6OkludGVyc2VjdGlvbkZ1bmN0aW9uU2lnbmF0dXJlIHNpZ25hdHVyZSwg
TlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRPcGFxdWVUcmlhbmdsZUludGVyc2VjdGlvbkZ1bmN0aW9uV2l0
aFNpZ25hdHVyZV93aXRoUmFuZ2VfKSwgc2lnbmF0dXJlLCByYW5nZSk7Cit9CisKKy8vIG1ldGhv
ZDogc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlOjpzZXRWaXNpYmxlRnVuY3Rpb25UYWJs
ZShjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUlu
dGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFZpc2libGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhf
KSwgZnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZpc2li
bGVGdW5jdGlvblRhYmxlczp3aXRoQnVmZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZTo6c2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0
IE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSBi
dWZmZXJSYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0VmlzaWJsZUZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBm
dW5jdGlvblRhYmxlcywgYnVmZmVyUmFuZ2UpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpYnJhcnkuaHBwIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTExpYnJhcnkuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNTI2N2Ex
NmZjMTlkNDE5NjFhZWZmOWMwOWZhYzdkMDEwOTcyYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlicmFyeS5ocHAKQEAgLTAsMCAr
MSw2MjEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8KKy8vIE1ldGFsL01UTExpYnJhcnkuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBB
cHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8v
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVk
ZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2lu
Y2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExBcmd1bWVu
dC5ocHAiCisjaW5jbHVkZSAiTVRMRnVuY3Rpb25EZXNjcmlwdG9yLmhwcCIKKyNpbmNsdWRlICJN
VExMaWJyYXJ5LmhwcCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorCituYW1lc3BhY2UgTVRMCit7
CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQYXRjaFR5cGUpIHsKKyAgICBQYXRjaFR5cGVOb25l
ID0gMCwKKyAgICBQYXRjaFR5cGVUcmlhbmdsZSA9IDEsCisgICAgUGF0Y2hUeXBlUXVhZCA9IDIs
Cit9OworCitjbGFzcyBWZXJ0ZXhBdHRyaWJ1dGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFZl
cnRleEF0dHJpYnV0ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4QXR0cmli
dXRlKiBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4QXR0cmlidXRlKiAgICAgICAgaW5pdCgp
OworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworCisg
ICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgYXR0cmlidXRlSW5kZXgoKSBjb25zdDsK
KworICAgIE1UTDo6RGF0YVR5cGUgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVR5cGUoKSBjb25z
dDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSgpIGNvbnN0Owor
CisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hEYXRhKCkgY29uc3Q7CisK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaENvbnRyb2xQb2ludERhdGEo
KSBjb25zdDsKK307CisKK2NsYXNzIEF0dHJpYnV0ZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8
QXR0cmlidXRlPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBBdHRyaWJ1dGUqIGFsbG9j
KCk7CisKKyAgICBjbGFzcyBBdHRyaWJ1dGUqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6U3Ry
aW5nKiAgICAgICAgICAgICBuYW1lKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAg
ICAgICBhdHRyaWJ1dGVJbmRleCgpIGNvbnN0OworCisgICAgTVRMOjpEYXRhVHlwZSAgICAgICAg
ICAgYXR0cmlidXRlVHlwZSgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAgICAgICAgICAg
YWN0aXZlKCkgY29uc3Q7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICBwYXRjaERhdGEo
KSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIHBhdGNoQ29udHJvbFBvaW50
RGF0YSgpIGNvbnN0OworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgRnVuY3Rpb25UeXBl
KSB7CisgICAgRnVuY3Rpb25UeXBlVmVydGV4ID0gMSwKKyAgICBGdW5jdGlvblR5cGVGcmFnbWVu
dCA9IDIsCisgICAgRnVuY3Rpb25UeXBlS2VybmVsID0gMywKKyAgICBGdW5jdGlvblR5cGVWaXNp
YmxlID0gNSwKKyAgICBGdW5jdGlvblR5cGVJbnRlcnNlY3Rpb24gPSA2LAorfTsKKworY2xhc3Mg
RnVuY3Rpb25Db25zdGFudCA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8RnVuY3Rpb25Db25zdGFu
dD4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgRnVuY3Rpb25Db25zdGFudCogYWxsb2Mo
KTsKKworICAgIGNsYXNzIEZ1bmN0aW9uQ29uc3RhbnQqICAgICAgICBpbml0KCk7CisKKyAgICBO
Uzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgbmFtZSgpIGNvbnN0OworCisgICAgTVRMOjpE
YXRhVHlwZSAgICAgICAgICAgICAgICAgIHR5cGUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdl
ciAgICAgICAgICAgICAgICAgICBpbmRleCgpIGNvbnN0OworCisgICAgYm9vbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVpcmVkKCkgY29uc3Q7Cit9OworCit1c2luZyBBdXRvcmVsZWFz
ZWRBcmd1bWVudCA9IGNsYXNzIEFyZ3VtZW50KjsKKworY2xhc3MgRnVuY3Rpb24gOiBwdWJsaWMg
TlM6OlJlZmVyZW5jaW5nPEZ1bmN0aW9uPgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAg
ICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgIHNldExh
YmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERldmljZSogICAgICAg
ICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBNVEw6OkZ1bmN0aW9uVHlwZSAgICAgIGZ1bmN0aW9u
VHlwZSgpIGNvbnN0OworCisgICAgTVRMOjpQYXRjaFR5cGUgICAgICAgICBwYXRjaFR5cGUoKSBj
b25zdDsKKworICAgIE5TOjpJbnRlZ2VyICAgICAgICAgICAgcGF0Y2hDb250cm9sUG9pbnRDb3Vu
dCgpIGNvbnN0OworCisgICAgTlM6OkFycmF5KiAgICAgICAgICAgICB2ZXJ0ZXhBdHRyaWJ1dGVz
KCkgY29uc3Q7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgIHN0YWdlSW5wdXRBdHRyaWJ1
dGVzKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgIG5hbWUoKSBjb25zdDsK
KworICAgIE5TOjpEaWN0aW9uYXJ5KiAgICAgICAgZnVuY3Rpb25Db25zdGFudHNEaWN0aW9uYXJ5
KCkgY29uc3Q7CisKKyAgICBjbGFzcyBBcmd1bWVudEVuY29kZXIqIG5ld0FyZ3VtZW50RW5jb2Rl
cihOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVy
KiBuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4LCBjb25zdCBNVEw6
OkF1dG9yZWxlYXNlZEFyZ3VtZW50KiByZWZsZWN0aW9uKTsKKworICAgIE1UTDo6RnVuY3Rpb25P
cHRpb25zICAgb3B0aW9ucygpIGNvbnN0OworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwg
TGFuZ3VhZ2VWZXJzaW9uKSB7CisgICAgTGFuZ3VhZ2VWZXJzaW9uMV8wID0gNjU1MzYsCisgICAg
TGFuZ3VhZ2VWZXJzaW9uMV8xID0gNjU1MzcsCisgICAgTGFuZ3VhZ2VWZXJzaW9uMV8yID0gNjU1
MzgsCisgICAgTGFuZ3VhZ2VWZXJzaW9uMl8wID0gMTMxMDcyLAorICAgIExhbmd1YWdlVmVyc2lv
bjJfMSA9IDEzMTA3MywKKyAgICBMYW5ndWFnZVZlcnNpb24yXzIgPSAxMzEwNzQsCisgICAgTGFu
Z3VhZ2VWZXJzaW9uMl8zID0gMTMxMDc1LAorICAgIExhbmd1YWdlVmVyc2lvbjJfNCA9IDEzMTA3
NiwKK307CisKK19NVExfRU5VTShOUzo6SW50ZWdlciwgTGlicmFyeVR5cGUpIHsKKyAgICBMaWJy
YXJ5VHlwZUV4ZWN1dGFibGUgPSAwLAorICAgIExpYnJhcnlUeXBlRHluYW1pYyA9IDEsCit9Owor
CitjbGFzcyBDb21waWxlT3B0aW9ucyA6IHB1YmxpYyBOUzo6Q29weWluZzxDb21waWxlT3B0aW9u
cz4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQ29tcGlsZU9wdGlvbnMqIGFsbG9jKCk7
CisKKyAgICBjbGFzcyBDb21waWxlT3B0aW9ucyogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpE
aWN0aW9uYXJ5KiAgICAgICAgICAgICAgcHJlcHJvY2Vzc29yTWFjcm9zKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcmVwcm9jZXNzb3JNYWNyb3MoY29uc3Qg
TlM6OkRpY3Rpb25hcnkqIHByZXByb2Nlc3Nvck1hY3Jvcyk7CisKKyAgICBib29sICAgICAgICAg
ICAgICAgICAgICAgICAgIGZhc3RNYXRoRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0RmFzdE1hdGhFbmFibGVkKGJvb2wgZmFzdE1hdGhFbmFibGVk
KTsKKworICAgIE1UTDo6TGFuZ3VhZ2VWZXJzaW9uICAgICAgICAgbGFuZ3VhZ2VWZXJzaW9uKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMYW5ndWFnZVZlcnNp
b24oTVRMOjpMYW5ndWFnZVZlcnNpb24gbGFuZ3VhZ2VWZXJzaW9uKTsKKworICAgIE1UTDo6TGli
cmFyeVR5cGUgICAgICAgICAgICAgbGlicmFyeVR5cGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldExpYnJhcnlUeXBlKE1UTDo6TGlicmFyeVR5cGUgbGlicmFy
eVR5cGUpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICBpbnN0YWxsTmFtZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5zdGFsbE5hbWUo
Y29uc3QgTlM6OlN0cmluZyogaW5zdGFsbE5hbWUpOworCisgICAgTlM6OkFycmF5KiAgICAgICAg
ICAgICAgICAgICBsaWJyYXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIGxpYnJhcmllcyk7CisKKyAgICBi
b29sICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlSW52YXJpYW5jZSgpIGNvbnN0Owor
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJlc2VydmVJbnZhcmlhbmNlKGJv
b2wgcHJlc2VydmVJbnZhcmlhbmNlKTsKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIExp
YnJhcnlFcnJvcikgeworICAgIExpYnJhcnlFcnJvclVuc3VwcG9ydGVkID0gMSwKKyAgICBMaWJy
YXJ5RXJyb3JDb21waWxlRmFpbHVyZSA9IDMsCisgICAgTGlicmFyeUVycm9yQ29tcGlsZVdhcm5p
bmcgPSA0LAorICAgIExpYnJhcnlFcnJvckZ1bmN0aW9uTm90Rm91bmQgPSA1LAorICAgIExpYnJh
cnlFcnJvckZpbGVOb3RGb3VuZCA9IDYsCit9OworCitjbGFzcyBMaWJyYXJ5IDogcHVibGljIE5T
OjpSZWZlcmVuY2luZzxMaWJyYXJ5PgoreworcHVibGljOgorICAgIHZvaWQgICAgICAgICAgICAg
bmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0cmluZyogcEZ1bmN0aW9uTmFtZSwgY29uc3QgY2xhc3Mg
RnVuY3Rpb25Db25zdGFudFZhbHVlcyogcENvbnN0YW50VmFsdWVzLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoRnVuY3Rpb24qIHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpPiYgY29tcGxl
dGlvbkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICBuZXdGdW5jdGlvbihjb25zdCBj
bGFzcyBGdW5jdGlvbkRlc2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoRnVuY3Rpb24qIHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpPiYgY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgdm9pZCAgICAgICAgICAgICBuZXdJbnRlcnNlY3Rpb25GdW5jdGlv
bihjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIHBEZXNjcmlwdG9y
LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb24qIHBGdW5jdGlvbiwgTlM6OkVycm9y
KiBwRXJyb3IpPiYgY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgTlM6OlN0cmluZyogICAgICBs
YWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6OlN0
cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRGV2aWNlKiAgICBkZXZpY2UoKSBjb25zdDsKKwor
ICAgIGNsYXNzIEZ1bmN0aW9uKiAgbmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0cmluZyogZnVuY3Rp
b25OYW1lKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uKiAgbmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0
cmluZyogbmFtZSwgY29uc3QgY2xhc3MgRnVuY3Rpb25Db25zdGFudFZhbHVlcyogY29uc3RhbnRW
YWx1ZXMsIE5TOjpFcnJvcioqIGVycm9yKTsKKworICAgIHZvaWQgICAgICAgICAgICAgbmV3RnVu
Y3Rpb24oY29uc3QgTlM6OlN0cmluZyogbmFtZSwgY29uc3QgY2xhc3MgRnVuY3Rpb25Db25zdGFu
dFZhbHVlcyogY29uc3RhbnRWYWx1ZXMsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpG
dW5jdGlvbiosIE5TOjpFcnJvciopKTsKKworICAgIHZvaWQgICAgICAgICAgICAgbmV3RnVuY3Rp
b24oY29uc3QgY2xhc3MgRnVuY3Rpb25EZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6RXJyb3IqKSk7CisKKyAgICBjbGFz
cyBGdW5jdGlvbiogIG5ld0Z1bmN0aW9uKGNvbnN0IGNsYXNzIEZ1bmN0aW9uRGVzY3JpcHRvciog
ZGVzY3JpcHRvciwgTlM6OkVycm9yKiogZXJyb3IpOworCisgICAgdm9pZCAgICAgICAgICAgICBu
ZXdJbnRlcnNlY3Rpb25GdW5jdGlvbihjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvbkRl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpGdW5j
dGlvbiosIE5TOjpFcnJvciopKTsKKworICAgIGNsYXNzIEZ1bmN0aW9uKiAgbmV3SW50ZXJzZWN0
aW9uRnVuY3Rpb24oY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcik7CisKKyAgICBOUzo6QXJyYXkqICAgICAgIGZ1
bmN0aW9uTmFtZXMoKSBjb25zdDsKKworICAgIE1UTDo6TGlicmFyeVR5cGUgdHlwZSgpIGNvbnN0
OworCisgICAgTlM6OlN0cmluZyogICAgICBpbnN0YWxsTmFtZSgpIGNvbnN0OworfTsKKworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1
dGUqIE1UTDo6VmVydGV4QXR0cmlidXRlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6VmVydGV4QXR0cmlidXRlPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRl
eEF0dHJpYnV0ZSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VmVy
dGV4QXR0cmlidXRlKiBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGU+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBuYW1lCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6
bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmlu
Zyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBwcm9wZXJ0eTogYXR0
cmlidXRlSW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlZlcnRleEF0dHJpYnV0
ZTo6YXR0cmlidXRlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChhdHRyaWJ1dGVJbmRleCkp
OworfQorCisvLyBwcm9wZXJ0eTogYXR0cmlidXRlVHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRh
VHlwZSBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6YXR0cmlidXRlVHlwZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEYXRhVHlwZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChhdHRyaWJ1dGVUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhY3RpdmUKK19NVExf
SU5MSU5FIGJvb2wgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGU6OmFjdGl2ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChp
c0FjdGl2ZSkpOworfQorCisvLyBwcm9wZXJ0eTogcGF0Y2hEYXRhCitfTVRMX0lOTElORSBib29s
IE1UTDo6VmVydGV4QXR0cmlidXRlOjpwYXRjaERhdGEoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNQYXRjaERh
dGEpKTsKK30KKworLy8gcHJvcGVydHk6IHBhdGNoQ29udHJvbFBvaW50RGF0YQorX01UTF9JTkxJ
TkUgYm9vbCBNVEw6OlZlcnRleEF0dHJpYnV0ZTo6cGF0Y2hDb250cm9sUG9pbnREYXRhKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGlzUGF0Y2hDb250cm9sUG9pbnREYXRhKSk7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZSogTVRMOjpBdHRyaWJ1dGU6OmFs
bG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBdHRyaWJ1dGU+KF9N
VExfUFJJVkFURV9DTFMoTVRMQXR0cmlidXRlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGUqIE1UTDo6QXR0cmlidXRlOjppbml0KCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OkF0dHJpYnV0ZT4oKTsKK30KKworLy8gcHJvcGVy
dHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6QXR0cmlidXRlOjpuYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChuYW1lKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhdHRyaWJ1dGVJ
bmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXR0cmlidXRlOjphdHRyaWJ1dGVJ
bmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0ZUluZGV4KSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBhdHRyaWJ1dGVUeXBlCitfTVRMX0lOTElORSBNVEw6OkRhdGFUeXBlIE1UTDo6QXR0
cmlidXRlOjphdHRyaWJ1dGVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OkRhdGFUeXBlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGF0dHJpYnV0ZVR5
cGUpKTsKK30KKworLy8gcHJvcGVydHk6IGFjdGl2ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OkF0
dHJpYnV0ZTo6YWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzQWN0aXZlKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBwYXRjaERhdGEKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpBdHRyaWJ1dGU6OnBhdGNoRGF0
YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChpc1BhdGNoRGF0YSkpOworfQorCisvLyBwcm9wZXJ0eTogcGF0Y2hD
b250cm9sUG9pbnREYXRhCitfTVRMX0lOTElORSBib29sIE1UTDo6QXR0cmlidXRlOjpwYXRjaENv
bnRyb2xQb2ludERhdGEoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNQYXRjaENvbnRyb2xQb2ludERhdGEpKTsK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25D
b25zdGFudCogTVRMOjpGdW5jdGlvbkNvbnN0YW50OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6RnVuY3Rpb25Db25zdGFudD4oX01UTF9QUklWQVRFX0NMUyhN
VExGdW5jdGlvbkNvbnN0YW50KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUg
TVRMOjpGdW5jdGlvbkNvbnN0YW50KiBNVEw6OkZ1bmN0aW9uQ29uc3RhbnQ6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6RnVuY3Rpb25Db25zdGFudD4oKTsKK30K
KworLy8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rp
b25Db25zdGFudDo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmFtZSkpOworfQorCisvLyBw
cm9wZXJ0eTogdHlwZQorX01UTF9JTkxJTkUgTVRMOjpEYXRhVHlwZSBNVEw6OkZ1bmN0aW9uQ29u
c3RhbnQ6OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6RGF0YVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHlwZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogaW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkZ1bmN0aW9uQ29uc3Rh
bnQ6OmluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5kZXgpKTsKK30KKworLy8gcHJvcGVy
dHk6IHJlcXVpcmVkCitfTVRMX0lOTElORSBib29sIE1UTDo6RnVuY3Rpb25Db25zdGFudDo6cmVx
dWlyZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwocmVxdWlyZWQpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVs
CitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OkZ1bmN0aW9uOjpsYWJlbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkZ1bmN0aW9u
OjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOwor
fQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpG
dW5jdGlvbjo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBmdW5jdGlvblR5cGUKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25UeXBlIE1U
TDo6RnVuY3Rpb246OmZ1bmN0aW9uVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvblR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVu
Y3Rpb25UeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXRjaFR5cGUKK19NVExfSU5MSU5FIE1U
TDo6UGF0Y2hUeXBlIE1UTDo6RnVuY3Rpb246OnBhdGNoVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQYXRjaFR5cGU+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwocGF0Y2hUeXBlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXRjaENvbnRyb2xQb2ludENv
dW50CitfTVRMX0lOTElORSBOUzo6SW50ZWdlciBNVEw6OkZ1bmN0aW9uOjpwYXRjaENvbnRyb2xQ
b2ludENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChwYXRjaENvbnRyb2xQb2ludENvdW50KSk7
Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhBdHRyaWJ1dGVzCitfTVRMX0lOTElORSBOUzo6QXJy
YXkqIE1UTDo6RnVuY3Rpb246OnZlcnRleEF0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
dmVydGV4QXR0cmlidXRlcykpOworfQorCisvLyBwcm9wZXJ0eTogc3RhZ2VJbnB1dEF0dHJpYnV0
ZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpGdW5jdGlvbjo6c3RhZ2VJbnB1dEF0dHJp
YnV0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJh
eSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhZ2VJbnB1dEF0dHJpYnV0ZXMpKTsKK30KKwor
Ly8gcHJvcGVydHk6IG5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6RnVuY3Rpb246
Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpTdHJp
bmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5hbWUpKTsKK30KKworLy8gcHJvcGVydHk6IGZ1
bmN0aW9uQ29uc3RhbnRzRGljdGlvbmFyeQorX01UTF9JTkxJTkUgTlM6OkRpY3Rpb25hcnkqIE1U
TDo6RnVuY3Rpb246OmZ1bmN0aW9uQ29uc3RhbnRzRGljdGlvbmFyeSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkRpY3Rpb25hcnkqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGZ1bmN0aW9uQ29uc3RhbnRzRGljdGlvbmFyeSkpOworfQorCisvLyBtZXRob2Q6
IG5ld0FyZ3VtZW50RW5jb2RlcldpdGhCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIE1UTDo6QXJn
dW1lbnRFbmNvZGVyKiBNVEw6OkZ1bmN0aW9uOjpuZXdBcmd1bWVudEVuY29kZXIoTlM6OlVJbnRl
Z2VyIGJ1ZmZlckluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
QXJndW1lbnRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdBcmd1bWVudEVuY29k
ZXJXaXRoQnVmZmVySW5kZXhfKSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IG5ld0Fy
Z3VtZW50RW5jb2RlcldpdGhCdWZmZXJJbmRleDpyZWZsZWN0aW9uOgorX01UTF9JTkxJTkUgTVRM
OjpBcmd1bWVudEVuY29kZXIqIE1UTDo6RnVuY3Rpb246Om5ld0FyZ3VtZW50RW5jb2RlcihOUzo6
VUludGVnZXIgYnVmZmVySW5kZXgsIGNvbnN0IE1UTDo6QXV0b3JlbGVhc2VkQXJndW1lbnQqIHJl
ZmxlY3Rpb24pCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBcmd1bWVu
dEVuY29kZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0FyZ3VtZW50RW5jb2RlcldpdGhC
dWZmZXJJbmRleF9yZWZsZWN0aW9uXyksIGJ1ZmZlckluZGV4LCByZWZsZWN0aW9uKTsKK30KKwor
Ly8gcHJvcGVydHk6IG9wdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb25PcHRpb25zIE1U
TDo6RnVuY3Rpb246Om9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6RnVuY3Rpb25PcHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9wdGlv
bnMpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6Q29t
cGlsZU9wdGlvbnMqIE1UTDo6Q29tcGlsZU9wdGlvbnM6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpDb21waWxlT3B0aW9ucz4oX01UTF9QUklWQVRFX0NMUyhN
VExDb21waWxlT3B0aW9ucykpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1U
TDo6Q29tcGlsZU9wdGlvbnMqIE1UTDo6Q29tcGlsZU9wdGlvbnM6OmluaXQoKQoreworICAgIHJl
dHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6Q29tcGlsZU9wdGlvbnM+KCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBwcmVwcm9jZXNzb3JNYWNyb3MKK19NVExfSU5MSU5FIE5TOjpEaWN0aW9uYXJ5KiBN
VEw6OkNvbXBpbGVPcHRpb25zOjpwcmVwcm9jZXNzb3JNYWNyb3MoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpEaWN0aW9uYXJ5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTChwcmVwcm9jZXNzb3JNYWNyb3MpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbXBpbGVPcHRpb25zOjpzZXRQcmVwcm9jZXNzb3JNYWNyb3MoY29uc3QgTlM6OkRpY3Rpb25h
cnkqIHByZXByb2Nlc3Nvck1hY3JvcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UHJlcHJvY2Vzc29yTWFjcm9zXyksIHByZXByb2Nl
c3Nvck1hY3Jvcyk7Cit9CisKKy8vIHByb3BlcnR5OiBmYXN0TWF0aEVuYWJsZWQKK19NVExfSU5M
SU5FIGJvb2wgTVRMOjpDb21waWxlT3B0aW9uczo6ZmFzdE1hdGhFbmFibGVkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGZhc3RNYXRoRW5hYmxlZCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcGls
ZU9wdGlvbnM6OnNldEZhc3RNYXRoRW5hYmxlZChib29sIGZhc3RNYXRoRW5hYmxlZCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RmFz
dE1hdGhFbmFibGVkXyksIGZhc3RNYXRoRW5hYmxlZCk7Cit9CisKKy8vIHByb3BlcnR5OiBsYW5n
dWFnZVZlcnNpb24KK19NVExfSU5MSU5FIE1UTDo6TGFuZ3VhZ2VWZXJzaW9uIE1UTDo6Q29tcGls
ZU9wdGlvbnM6Omxhbmd1YWdlVmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpMYW5ndWFnZVZlcnNpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bGFuZ3VhZ2VWZXJzaW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpDb21waWxlT3B0
aW9uczo6c2V0TGFuZ3VhZ2VWZXJzaW9uKE1UTDo6TGFuZ3VhZ2VWZXJzaW9uIGxhbmd1YWdlVmVy
c2lvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0TGFuZ3VhZ2VWZXJzaW9uXyksIGxhbmd1YWdlVmVyc2lvbik7Cit9CisKKy8vIHBy
b3BlcnR5OiBsaWJyYXJ5VHlwZQorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5VHlwZSBNVEw6OkNv
bXBpbGVPcHRpb25zOjpsaWJyYXJ5VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpMaWJyYXJ5VHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChsaWJy
YXJ5VHlwZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6Q29tcGlsZU9wdGlvbnM6OnNl
dExpYnJhcnlUeXBlKE1UTDo6TGlicmFyeVR5cGUgbGlicmFyeVR5cGUpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExpYnJhcnlUeXBl
XyksIGxpYnJhcnlUeXBlKTsKK30KKworLy8gcHJvcGVydHk6IGluc3RhbGxOYW1lCitfTVRMX0lO
TElORSBOUzo6U3RyaW5nKiBNVEw6OkNvbXBpbGVPcHRpb25zOjppbnN0YWxsTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoaW5zdGFsbE5hbWUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OkNvbXBpbGVPcHRpb25zOjpzZXRJbnN0YWxsTmFtZShjb25zdCBOUzo6U3RyaW5nKiBpbnN0YWxs
TmFtZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0SW5zdGFsbE5hbWVfKSwgaW5zdGFsbE5hbWUpOworfQorCisvLyBwcm9wZXJ0eTog
bGlicmFyaWVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6Q29tcGlsZU9wdGlvbnM6Omxp
YnJhcmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsaWJyYXJpZXMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OkNvbXBpbGVPcHRpb25zOjpzZXRMaWJyYXJpZXMoY29uc3QgTlM6OkFycmF5
KiBsaWJyYXJpZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldExpYnJhcmllc18pLCBsaWJyYXJpZXMpOworfQorCisvLyBwcm9wZXJ0
eTogcHJlc2VydmVJbnZhcmlhbmNlCitfTVRMX0lOTElORSBib29sIE1UTDo6Q29tcGlsZU9wdGlv
bnM6OnByZXNlcnZlSW52YXJpYW5jZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwcmVzZXJ2ZUludmFyaWFuY2Up
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkNvbXBpbGVPcHRpb25zOjpzZXRQcmVzZXJ2
ZUludmFyaWFuY2UoYm9vbCBwcmVzZXJ2ZUludmFyaWFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFByZXNlcnZlSW52YXJpYW5j
ZV8pLCBwcmVzZXJ2ZUludmFyaWFuY2UpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGli
cmFyeTo6bmV3RnVuY3Rpb24oY29uc3QgTlM6OlN0cmluZyogcEZ1bmN0aW9uTmFtZSwgY29uc3Qg
RnVuY3Rpb25Db25zdGFudFZhbHVlcyogcENvbnN0YW50VmFsdWVzLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoRnVuY3Rpb24qIHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpPiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgX19ibG9jayBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb24g
KiBwRnVuY3Rpb24sIE5TOjpFcnJvciAqIHBFcnJvcik+IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIg
PSBjb21wbGV0aW9uSGFuZGxlcjsKKworICAgIG5ld0Z1bmN0aW9uKHBGdW5jdGlvbk5hbWUsIHBD
b25zdGFudFZhbHVlcywgXihGdW5jdGlvbiogcEZ1bmN0aW9uLCBOUzo6RXJyb3IqIHBFcnJvcikg
eyBibG9ja0NvbXBsZXRpb25IYW5kbGVyKHBGdW5jdGlvbiwgcEVycm9yKTsgfSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpMaWJyYXJ5OjpuZXdGdW5jdGlvbihjb25zdCBGdW5jdGlvbkRl
c2NyaXB0b3IqIHBEZXNjcmlwdG9yLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb24q
IHBGdW5jdGlvbiwgTlM6OkVycm9yKiBwRXJyb3IpPiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgX19ibG9jayBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb24gKiBwRnVuY3Rpb24sIE5TOjpF
cnJvciAqIHBFcnJvcik+IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxl
cjsKKworICAgIG5ld0Z1bmN0aW9uKHBEZXNjcmlwdG9yLCBeKEZ1bmN0aW9uKiBwRnVuY3Rpb24s
IE5TOjpFcnJvciogcEVycm9yKSB7IGJsb2NrQ29tcGxldGlvbkhhbmRsZXIocEZ1bmN0aW9uLCBw
RXJyb3IpOyB9KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0ludGVy
c2VjdGlvbkZ1bmN0aW9uKGNvbnN0IEludGVyc2VjdGlvbkZ1bmN0aW9uRGVzY3JpcHRvciogcERl
c2NyaXB0b3IsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChGdW5jdGlvbiogcEZ1bmN0aW9uLCBO
Uzo6RXJyb3IqIHBFcnJvcik+JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBfX2Jsb2NrIHN0
ZDo6ZnVuY3Rpb248dm9pZChGdW5jdGlvbiAqIHBGdW5jdGlvbiwgTlM6OkVycm9yICogcEVycm9y
KT4gYmxvY2tDb21wbGV0aW9uSGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyOworCisgICAgbmV3
SW50ZXJzZWN0aW9uRnVuY3Rpb24ocERlc2NyaXB0b3IsIF4oRnVuY3Rpb24qIHBGdW5jdGlvbiwg
TlM6OkVycm9yKiBwRXJyb3IpIHsgYmxvY2tDb21wbGV0aW9uSGFuZGxlcihwRnVuY3Rpb24sIHBF
cnJvcik7IH0pOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJp
bmcqIE1UTDo6TGlicmFyeTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpMaWJyYXJ5OjpzZXRMYWJlbChjb25zdCBOUzo6U3Ry
aW5nKiBsYWJlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0TGFiZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNl
CitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpMaWJyYXJ5OjpkZXZpY2UoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChkZXZpY2UpKTsKK30KKworLy8gbWV0aG9kOiBuZXdGdW5jdGlvbldpdGhO
YW1lOgorX01UTF9JTkxJTkUgTVRMOjpGdW5jdGlvbiogTVRMOjpMaWJyYXJ5OjpuZXdGdW5jdGlv
bihjb25zdCBOUzo6U3RyaW5nKiBmdW5jdGlvbk5hbWUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3RnVu
Y3Rpb25XaXRoTmFtZV8pLCBmdW5jdGlvbk5hbWUpOworfQorCisvLyBtZXRob2Q6IG5ld0Z1bmN0
aW9uV2l0aE5hbWU6Y29uc3RhbnRWYWx1ZXM6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkZ1bmN0
aW9uKiBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpTdHJpbmcqIG5hbWUsIGNv
bnN0IE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlcyogY29uc3RhbnRWYWx1ZXMsIE5TOjpFcnJv
cioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rp
b24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Z1bmN0aW9uV2l0aE5hbWVfY29uc3RhbnRW
YWx1ZXNfZXJyb3JfKSwgbmFtZSwgY29uc3RhbnRWYWx1ZXMsIGVycm9yKTsKK30KKworLy8gbWV0
aG9kOiBuZXdGdW5jdGlvbldpdGhOYW1lOmNvbnN0YW50VmFsdWVzOmNvbXBsZXRpb25IYW5kbGVy
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IE5TOjpT
dHJpbmcqIG5hbWUsIGNvbnN0IE1UTDo6RnVuY3Rpb25Db25zdGFudFZhbHVlcyogY29uc3RhbnRW
YWx1ZXMsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTVRMOjpGdW5jdGlvbiosIE5TOjpFcnJv
ciopKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChuZXdGdW5jdGlvbldpdGhOYW1lX2NvbnN0YW50VmFsdWVzX2NvbXBsZXRpb25IYW5kbGVy
XyksIG5hbWUsIGNvbnN0YW50VmFsdWVzLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1l
dGhvZDogbmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpjb21wbGV0aW9uSGFuZGxlcjoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpMaWJyYXJ5OjpuZXdGdW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9u
RGVzY3JpcHRvciogZGVzY3JpcHRvciwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShNVEw6OkZ1
bmN0aW9uKiwgTlM6OkVycm9yKikpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0b3JfY29tcGxldGlv
bkhhbmRsZXJfKSwgZGVzY3JpcHRvciwgY29tcGxldGlvbkhhbmRsZXIpOworfQorCisvLyBtZXRo
b2Q6IG5ld0Z1bmN0aW9uV2l0aERlc2NyaXB0b3I6ZXJyb3I6CitfTVRMX0lOTElORSBNVEw6OkZ1
bmN0aW9uKiBNVEw6OkxpYnJhcnk6Om5ld0Z1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb25EZXNj
cmlwdG9yKiBkZXNjcmlwdG9yLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChu
ZXdGdW5jdGlvbldpdGhEZXNjcmlwdG9yX2Vycm9yXyksIGRlc2NyaXB0b3IsIGVycm9yKTsKK30K
KworLy8gbWV0aG9kOiBuZXdJbnRlcnNlY3Rpb25GdW5jdGlvbldpdGhEZXNjcmlwdG9yOmNvbXBs
ZXRpb25IYW5kbGVyOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpYnJhcnk6Om5ld0ludGVyc2Vj
dGlvbkZ1bmN0aW9uKGNvbnN0IE1UTDo6SW50ZXJzZWN0aW9uRnVuY3Rpb25EZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE1UTDo6RnVuY3Rpb24qLCBOUzo6
RXJyb3IqKSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcl9jb21wbGV0aW9u
SGFuZGxlcl8pLCBkZXNjcmlwdG9yLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy8vIG1ldGhv
ZDogbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25XaXRoRGVzY3JpcHRvcjplcnJvcjoKK19NVExfSU5M
SU5FIE1UTDo6RnVuY3Rpb24qIE1UTDo6TGlicmFyeTo6bmV3SW50ZXJzZWN0aW9uRnVuY3Rpb24o
Y29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIE5T
OjpFcnJvcioqIGVycm9yKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld0ludGVyc2VjdGlvbkZ1bmN0aW9u
V2l0aERlc2NyaXB0b3JfZXJyb3JfKSwgZGVzY3JpcHRvciwgZXJyb3IpOworfQorCisvLyBwcm9w
ZXJ0eTogZnVuY3Rpb25OYW1lcworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBNVEw6OkxpYnJhcnk6
OmZ1bmN0aW9uTmFtZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25OYW1lcykpOworfQor
CisvLyBwcm9wZXJ0eTogdHlwZQorX01UTF9JTkxJTkUgTVRMOjpMaWJyYXJ5VHlwZSBNVEw6Okxp
YnJhcnk6OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6TGlicmFyeVR5cGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodHlwZSkpOworfQorCisvLyBw
cm9wZXJ0eTogaW5zdGFsbE5hbWUKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6TGlicmFy
eTo6aW5zdGFsbE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpTdHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluc3RhbGxOYW1lKSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMTGlua2Vk
RnVuY3Rpb25zLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExM
aW5rZWRGdW5jdGlvbnMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MzE5YTVhOTQxYmZkODM4N2E2Mjc3NjEw
ODZlYzk2YzI2MGVlY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9t
ZXRhbC1jcHAvTWV0YWwvTVRMTGlua2VkRnVuY3Rpb25zLmhwcApAQCAtMCwwICsxLDExNSBAQAor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0
YWwvTVRMTGlua2VkRnVuY3Rpb25zLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBw
bGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUg
Ik1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNs
dWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1lc3BhY2UgTVRMCit7CitjbGFz
cyBMaW5rZWRGdW5jdGlvbnMgOiBwdWJsaWMgTlM6OkNvcHlpbmc8TGlua2VkRnVuY3Rpb25zPgor
eworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMg
Y2xhc3MgTGlua2VkRnVuY3Rpb25zKiBsaW5rZWRGdW5jdGlvbnMoKTsKKworICAgIE5TOjpBcnJh
eSogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIGZ1bmN0aW9u
cyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICBiaW5hcnlGdW5jdGlvbnMo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCaW5hcnlGdW5j
dGlvbnMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlGdW5jdGlvbnMpOworCisgICAgTlM6OkFycmF5
KiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0R3JvdXBzKGNvbnN0IE5TOjpBcnJheSogZ3JvdXBzKTsKKworICAg
IE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgIHByaXZhdGVGdW5jdGlvbnMoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcml2YXRlRnVuY3Rpb25zKGNv
bnN0IE5TOjpBcnJheSogcHJpdmF0ZUZ1bmN0aW9ucyk7Cit9OworCit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogTVRMOjpMaW5r
ZWRGdW5jdGlvbnM6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpMaW5rZWRGdW5jdGlvbnM+KF9NVExfUFJJVkFURV9DTFMoTVRMTGlua2VkRnVuY3Rpb25zKSk7
Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpMaW5rZWRGdW5jdGlvbnMq
IE1UTDo6TGlua2VkRnVuY3Rpb25zOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OkxpbmtlZEZ1bmN0aW9ucz4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogbGlu
a2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogTVRMOjpMaW5r
ZWRGdW5jdGlvbnM6OmxpbmtlZEZ1bmN0aW9ucygpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpMaW5rZWRGdW5jdGlvbnMqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTExpbmtl
ZEZ1bmN0aW9ucyksIF9NVExfUFJJVkFURV9TRUwobGlua2VkRnVuY3Rpb25zKSk7Cit9CisKKy8v
IHByb3BlcnR5OiBmdW5jdGlvbnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpMaW5rZWRG
dW5jdGlvbnM6OmZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmdW5jdGlvbnMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6c2V0RnVuY3Rpb25zKGNv
bnN0IE5TOjpBcnJheSogZnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGdW5jdGlvbnNfKSwgZnVuY3Rpb25zKTsKK30K
KworLy8gcHJvcGVydHk6IGJpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUgTlM6OkFycmF5KiBN
VEw6OkxpbmtlZEZ1bmN0aW9uczo6YmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGJpbmFyeUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6TGlua2VkRnVu
Y3Rpb25zOjpzZXRCaW5hcnlGdW5jdGlvbnMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlGdW5jdGlv
bnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldEJpbmFyeUZ1bmN0aW9uc18pLCBiaW5hcnlGdW5jdGlvbnMpOworfQorCisvLyBwcm9w
ZXJ0eTogZ3JvdXBzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6TGlua2VkRnVuY3Rpb25z
Ojpncm91cHMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpB
cnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZ3JvdXBzKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpMaW5rZWRGdW5jdGlvbnM6OnNldEdyb3Vwcyhjb25zdCBOUzo6QXJyYXkqIGdy
b3VwcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0R3JvdXBzXyksIGdyb3Vwcyk7Cit9CisKKy8vIHByb3BlcnR5OiBwcml2YXRlRnVu
Y3Rpb25zCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6TGlua2VkRnVuY3Rpb25zOjpwcml2
YXRlRnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHByaXZhdGVGdW5jdGlvbnMpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OkxpbmtlZEZ1bmN0aW9uczo6c2V0UHJpdmF0ZUZ1bmN0
aW9ucyhjb25zdCBOUzo6QXJyYXkqIHByaXZhdGVGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFByaXZhdGVGdW5jdGlv
bnNfKSwgcHJpdmF0ZUZ1bmN0aW9ucyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGFyYWxsZWxSZW5kZXJD
b21tYW5kRW5jb2Rlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQzN2I0YzhjOTdkMTUyZGNiNjJhMDAxMmQ0
ZWY2NTQ4YmQ1YTQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcApAQCAtMCww
ICsxLDk0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vCisvLyBNZXRhbC9NVExQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcAorLy8KKy8v
IENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8v
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1U
TERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAi
TVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgor
CisjaW5jbHVkZSAiTVRMQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlclBh
c3MuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitjbGFzcyBQYXJhbGxlbFJlbmRlckNvbW1hbmRF
bmNvZGVyIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNv
ZGVyLCBDb21tYW5kRW5jb2Rlcj4KK3sKK3B1YmxpYzoKKyAgICBjbGFzcyBSZW5kZXJDb21tYW5k
RW5jb2RlciogcmVuZGVyQ29tbWFuZEVuY29kZXIoKTsKKworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRDb2xvclN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rp
b24sIE5TOjpVSW50ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0RGVwdGhTdG9yZUFjdGlvbihNVEw6OlN0b3JlQWN0aW9uIHN0
b3JlQWN0aW9uKTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVuY2ls
U3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbik7CisKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9y
ZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25zLCBOUzo6VUludGVnZXIgY29sb3JBdHRh
Y2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIHNldERlcHRo
U3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0
aW9ucyk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RlbmNpbFN0b3Jl
QWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9wdGlvbnMp
OworfTsKKworfQorCisvLyBtZXRob2Q6IHJlbmRlckNvbW1hbmRFbmNvZGVyCitfTVRMX0lOTElO
RSBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyKiBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnJlbmRlckNvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChyZW5kZXJDb21tYW5kRW5jb2RlcikpOworfQorCisvLyBtZXRob2Q6IHNldENvbG9yU3RvcmVB
Y3Rpb246YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQYXJhbGxlbFJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRDb2xvclN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rp
b24sIE5TOjpVSW50ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q29sb3JTdG9yZUFjdGlv
bl9hdEluZGV4XyksIHN0b3JlQWN0aW9uLCBjb2xvckF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0RGVwdGhTdG9yZUFjdGlvbjoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQYXJh
bGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0aFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVB
Y3Rpb24gc3RvcmVBY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoU3RvcmVBY3Rpb25fKSwgc3RvcmVBY3Rpb24pOwor
fQorCisvLyBtZXRob2Q6IHNldFN0ZW5jaWxTdG9yZUFjdGlvbjoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpQYXJhbGxlbFJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVuY2lsU3RvcmVBY3Rpb24o
TVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFN0b3JlQWN0aW9uXyksIHN0
b3JlQWN0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9uczph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldENvbG9yU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0
b3JlQWN0aW9uT3B0aW9ucywgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRD
b2xvclN0b3JlQWN0aW9uT3B0aW9uc19hdEluZGV4XyksIHN0b3JlQWN0aW9uT3B0aW9ucywgY29s
b3JBdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoU3RvcmVBY3Rpb25P
cHRpb25zOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldERlcHRoU3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0
b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnNfKSwgc3RvcmVBY3Rp
b25PcHRpb25zKTsKK30KKworLy8gbWV0aG9kOiBzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25z
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXI6OnNl
dFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVB
Y3Rpb25PcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zXyksIHN0b3JlQWN0aW9u
T3B0aW9ucyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
TWV0YWwvTVRMUGlwZWxpbmUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFBpcGVsaW5lLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTNjOTQ3NzM5NmFkN2MzMTZkNmI2Y2Ri
ZWYyYTIwOGM0Zjk4Nzg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFBpcGVsaW5lLmhwcApAQCAtMCwwICsxLDEwOSBAQAorLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRM
UGlwZWxpbmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJp
ZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExQaXBlbGluZS5ocHAiCisKK25hbWVz
cGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIE11dGFiaWxpdHkpIHsKKyAgICBN
dXRhYmlsaXR5RGVmYXVsdCA9IDAsCisgICAgTXV0YWJpbGl0eU11dGFibGUgPSAxLAorICAgIE11
dGFiaWxpdHlJbW11dGFibGUgPSAyLAorfTsKKworY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcj4KK3sKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiBhbGxvYygp
OworCisgICAgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOwor
CisgICAgTVRMOjpNdXRhYmlsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgbXV0YWJpbGl0eSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE11
dGFiaWxpdHkoTVRMOjpNdXRhYmlsaXR5IG11dGFiaWxpdHkpOworfTsKKworY2xhc3MgUGlwZWxp
bmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFBpcGVsaW5l
QnVmZmVyRGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBQaXBl
bGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFBpcGVsaW5l
QnVmZmVyRGVzY3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgUGlwZWxp
bmVCdWZmZXJEZXNjcmlwdG9yKiAgICAgICAgICAgICBvYmplY3QoTlM6OlVJbnRlZ2VyIGJ1ZmZl
ckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvciogYnVmZmVy
LCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworfTsKKworfQorCisvLyBzdGF0aWMgbWV0aG9k
OiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3IqIE1UTDo6
UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmpl
Y3Q6OmFsbG9jPE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19N
VExfSU5MSU5FIE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKiBNVEw6OlBpcGVsaW5lQnVm
ZmVyRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRM
OjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBtdXRhYmls
aXR5CitfTVRMX0lOTElORSBNVEw6Ok11dGFiaWxpdHkgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2Ny
aXB0b3I6Om11dGFiaWxpdHkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6TXV0YWJpbGl0eT4odGhpcywgX01UTF9QUklWQVRFX1NFTChtdXRhYmlsaXR5KSk7
Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3I6OnNl
dE11dGFiaWxpdHkoTVRMOjpNdXRhYmlsaXR5IG11dGFiaWxpdHkpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE11dGFiaWxpdHlfKSwg
bXV0YWJpbGl0eSk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBN
VEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBNVEw6OlBpcGVsaW5lQnVmZmVyRGVz
Y3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1U
TDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUGlw
ZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiBNVEw6OlBpcGVsaW5l
QnVmZmVyRGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRo
b2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UGlwZWxpbmVC
dWZmZXJEZXNjcmlwdG9yKiBNVEw6OlBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5OjpvYmpl
Y3QoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYnVmZmVySW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXk6OnNldE9iamVjdChjb25zdCBNVEw6OlBp
cGVsaW5lQnVmZmVyRGVzY3JpcHRvciogYnVmZmVyLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYnVmZmVyLCBidWZmZXJJbmRleCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUGl4
ZWxGb3JtYXQuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFBp
eGVsRm9ybWF0LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzIwYzgyOWViYTA1MjI3YzVjOTQ1OTNmNDdiYmI3
NmYxMTI0MWNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01UTFBpeGVsRm9ybWF0LmhwcApAQCAtMCwwICsxLDE3MyBAQAorLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUGl4
ZWxGb3JtYXQuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJp
ZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5ocHA+CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUlu
dGVnZXIsIFBpeGVsRm9ybWF0KSB7CisgICAgUGl4ZWxGb3JtYXRJbnZhbGlkID0gMCwKKyAgICBQ
aXhlbEZvcm1hdEE4VW5vcm0gPSAxLAorICAgIFBpeGVsRm9ybWF0UjhVbm9ybSA9IDEwLAorICAg
IFBpeGVsRm9ybWF0UjhVbm9ybV9zUkdCID0gMTEsCisgICAgUGl4ZWxGb3JtYXRSOFNub3JtID0g
MTIsCisgICAgUGl4ZWxGb3JtYXRSOFVpbnQgPSAxMywKKyAgICBQaXhlbEZvcm1hdFI4U2ludCA9
IDE0LAorICAgIFBpeGVsRm9ybWF0UjE2VW5vcm0gPSAyMCwKKyAgICBQaXhlbEZvcm1hdFIxNlNu
b3JtID0gMjIsCisgICAgUGl4ZWxGb3JtYXRSMTZVaW50ID0gMjMsCisgICAgUGl4ZWxGb3JtYXRS
MTZTaW50ID0gMjQsCisgICAgUGl4ZWxGb3JtYXRSMTZGbG9hdCA9IDI1LAorICAgIFBpeGVsRm9y
bWF0Ukc4VW5vcm0gPSAzMCwKKyAgICBQaXhlbEZvcm1hdFJHOFVub3JtX3NSR0IgPSAzMSwKKyAg
ICBQaXhlbEZvcm1hdFJHOFNub3JtID0gMzIsCisgICAgUGl4ZWxGb3JtYXRSRzhVaW50ID0gMzMs
CisgICAgUGl4ZWxGb3JtYXRSRzhTaW50ID0gMzQsCisgICAgUGl4ZWxGb3JtYXRCNUc2UjVVbm9y
bSA9IDQwLAorICAgIFBpeGVsRm9ybWF0QTFCR1I1VW5vcm0gPSA0MSwKKyAgICBQaXhlbEZvcm1h
dEFCR1I0VW5vcm0gPSA0MiwKKyAgICBQaXhlbEZvcm1hdEJHUjVBMVVub3JtID0gNDMsCisgICAg
UGl4ZWxGb3JtYXRSMzJVaW50ID0gNTMsCisgICAgUGl4ZWxGb3JtYXRSMzJTaW50ID0gNTQsCisg
ICAgUGl4ZWxGb3JtYXRSMzJGbG9hdCA9IDU1LAorICAgIFBpeGVsRm9ybWF0UkcxNlVub3JtID0g
NjAsCisgICAgUGl4ZWxGb3JtYXRSRzE2U25vcm0gPSA2MiwKKyAgICBQaXhlbEZvcm1hdFJHMTZV
aW50ID0gNjMsCisgICAgUGl4ZWxGb3JtYXRSRzE2U2ludCA9IDY0LAorICAgIFBpeGVsRm9ybWF0
UkcxNkZsb2F0ID0gNjUsCisgICAgUGl4ZWxGb3JtYXRSR0JBOFVub3JtID0gNzAsCisgICAgUGl4
ZWxGb3JtYXRSR0JBOFVub3JtX3NSR0IgPSA3MSwKKyAgICBQaXhlbEZvcm1hdFJHQkE4U25vcm0g
PSA3MiwKKyAgICBQaXhlbEZvcm1hdFJHQkE4VWludCA9IDczLAorICAgIFBpeGVsRm9ybWF0UkdC
QThTaW50ID0gNzQsCisgICAgUGl4ZWxGb3JtYXRCR1JBOFVub3JtID0gODAsCisgICAgUGl4ZWxG
b3JtYXRCR1JBOFVub3JtX3NSR0IgPSA4MSwKKyAgICBQaXhlbEZvcm1hdFJHQjEwQTJVbm9ybSA9
IDkwLAorICAgIFBpeGVsRm9ybWF0UkdCMTBBMlVpbnQgPSA5MSwKKyAgICBQaXhlbEZvcm1hdFJH
MTFCMTBGbG9hdCA9IDkyLAorICAgIFBpeGVsRm9ybWF0UkdCOUU1RmxvYXQgPSA5MywKKyAgICBQ
aXhlbEZvcm1hdEJHUjEwQTJVbm9ybSA9IDk0LAorICAgIFBpeGVsRm9ybWF0UkczMlVpbnQgPSAx
MDMsCisgICAgUGl4ZWxGb3JtYXRSRzMyU2ludCA9IDEwNCwKKyAgICBQaXhlbEZvcm1hdFJHMzJG
bG9hdCA9IDEwNSwKKyAgICBQaXhlbEZvcm1hdFJHQkExNlVub3JtID0gMTEwLAorICAgIFBpeGVs
Rm9ybWF0UkdCQTE2U25vcm0gPSAxMTIsCisgICAgUGl4ZWxGb3JtYXRSR0JBMTZVaW50ID0gMTEz
LAorICAgIFBpeGVsRm9ybWF0UkdCQTE2U2ludCA9IDExNCwKKyAgICBQaXhlbEZvcm1hdFJHQkEx
NkZsb2F0ID0gMTE1LAorICAgIFBpeGVsRm9ybWF0UkdCQTMyVWludCA9IDEyMywKKyAgICBQaXhl
bEZvcm1hdFJHQkEzMlNpbnQgPSAxMjQsCisgICAgUGl4ZWxGb3JtYXRSR0JBMzJGbG9hdCA9IDEy
NSwKKyAgICBQaXhlbEZvcm1hdEJDMV9SR0JBID0gMTMwLAorICAgIFBpeGVsRm9ybWF0QkMxX1JH
QkFfc1JHQiA9IDEzMSwKKyAgICBQaXhlbEZvcm1hdEJDMl9SR0JBID0gMTMyLAorICAgIFBpeGVs
Rm9ybWF0QkMyX1JHQkFfc1JHQiA9IDEzMywKKyAgICBQaXhlbEZvcm1hdEJDM19SR0JBID0gMTM0
LAorICAgIFBpeGVsRm9ybWF0QkMzX1JHQkFfc1JHQiA9IDEzNSwKKyAgICBQaXhlbEZvcm1hdEJD
NF9SVW5vcm0gPSAxNDAsCisgICAgUGl4ZWxGb3JtYXRCQzRfUlNub3JtID0gMTQxLAorICAgIFBp
eGVsRm9ybWF0QkM1X1JHVW5vcm0gPSAxNDIsCisgICAgUGl4ZWxGb3JtYXRCQzVfUkdTbm9ybSA9
IDE0MywKKyAgICBQaXhlbEZvcm1hdEJDNkhfUkdCRmxvYXQgPSAxNTAsCisgICAgUGl4ZWxGb3Jt
YXRCQzZIX1JHQlVmbG9hdCA9IDE1MSwKKyAgICBQaXhlbEZvcm1hdEJDN19SR0JBVW5vcm0gPSAx
NTIsCisgICAgUGl4ZWxGb3JtYXRCQzdfUkdCQVVub3JtX3NSR0IgPSAxNTMsCisgICAgUGl4ZWxG
b3JtYXRQVlJUQ19SR0JfMkJQUCA9IDE2MCwKKyAgICBQaXhlbEZvcm1hdFBWUlRDX1JHQl8yQlBQ
X3NSR0IgPSAxNjEsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JfNEJQUCA9IDE2MiwKKyAgICBQ
aXhlbEZvcm1hdFBWUlRDX1JHQl80QlBQX3NSR0IgPSAxNjMsCisgICAgUGl4ZWxGb3JtYXRQVlJU
Q19SR0JBXzJCUFAgPSAxNjQsCisgICAgUGl4ZWxGb3JtYXRQVlJUQ19SR0JBXzJCUFBfc1JHQiA9
IDE2NSwKKyAgICBQaXhlbEZvcm1hdFBWUlRDX1JHQkFfNEJQUCA9IDE2NiwKKyAgICBQaXhlbEZv
cm1hdFBWUlRDX1JHQkFfNEJQUF9zUkdCID0gMTY3LAorICAgIFBpeGVsRm9ybWF0RUFDX1IxMVVu
b3JtID0gMTcwLAorICAgIFBpeGVsRm9ybWF0RUFDX1IxMVNub3JtID0gMTcyLAorICAgIFBpeGVs
Rm9ybWF0RUFDX1JHMTFVbm9ybSA9IDE3NCwKKyAgICBQaXhlbEZvcm1hdEVBQ19SRzExU25vcm0g
PSAxNzYsCisgICAgUGl4ZWxGb3JtYXRFQUNfUkdCQTggPSAxNzgsCisgICAgUGl4ZWxGb3JtYXRF
QUNfUkdCQThfc1JHQiA9IDE3OSwKKyAgICBQaXhlbEZvcm1hdEVUQzJfUkdCOCA9IDE4MCwKKyAg
ICBQaXhlbEZvcm1hdEVUQzJfUkdCOF9zUkdCID0gMTgxLAorICAgIFBpeGVsRm9ybWF0RVRDMl9S
R0I4QTEgPSAxODIsCisgICAgUGl4ZWxGb3JtYXRFVEMyX1JHQjhBMV9zUkdCID0gMTgzLAorICAg
IFBpeGVsRm9ybWF0QVNUQ180eDRfc1JHQiA9IDE4NiwKKyAgICBQaXhlbEZvcm1hdEFTVENfNXg0
X3NSR0IgPSAxODcsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzV4NV9zUkdCID0gMTg4LAorICAgIFBp
eGVsRm9ybWF0QVNUQ182eDVfc1JHQiA9IDE4OSwKKyAgICBQaXhlbEZvcm1hdEFTVENfNng2X3NS
R0IgPSAxOTAsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzh4NV9zUkdCID0gMTkyLAorICAgIFBpeGVs
Rm9ybWF0QVNUQ184eDZfc1JHQiA9IDE5MywKKyAgICBQaXhlbEZvcm1hdEFTVENfOHg4X3NSR0Ig
PSAxOTQsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDVfc1JHQiA9IDE5NSwKKyAgICBQaXhlbEZv
cm1hdEFTVENfMTB4Nl9zUkdCID0gMTk2LAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMHg4X3NSR0Ig
PSAxOTcsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDEwX3NSR0IgPSAxOTgsCisgICAgUGl4ZWxG
b3JtYXRBU1RDXzEyeDEwX3NSR0IgPSAxOTksCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEyeDEyX3NS
R0IgPSAyMDAsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzR4NF9MRFIgPSAyMDQsCisgICAgUGl4ZWxG
b3JtYXRBU1RDXzV4NF9MRFIgPSAyMDUsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzV4NV9MRFIgPSAy
MDYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzZ4NV9MRFIgPSAyMDcsCisgICAgUGl4ZWxGb3JtYXRB
U1RDXzZ4Nl9MRFIgPSAyMDgsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzh4NV9MRFIgPSAyMTAsCisg
ICAgUGl4ZWxGb3JtYXRBU1RDXzh4Nl9MRFIgPSAyMTEsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzh4
OF9MRFIgPSAyMTIsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDVfTERSID0gMjEzLAorICAgIFBp
eGVsRm9ybWF0QVNUQ18xMHg2X0xEUiA9IDIxNCwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4OF9M
RFIgPSAyMTUsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDEwX0xEUiA9IDIxNiwKKyAgICBQaXhl
bEZvcm1hdEFTVENfMTJ4MTBfTERSID0gMjE3LAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMngxMl9M
RFIgPSAyMTgsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzR4NF9IRFIgPSAyMjIsCisgICAgUGl4ZWxG
b3JtYXRBU1RDXzV4NF9IRFIgPSAyMjMsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzV4NV9IRFIgPSAy
MjQsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzZ4NV9IRFIgPSAyMjUsCisgICAgUGl4ZWxGb3JtYXRB
U1RDXzZ4Nl9IRFIgPSAyMjYsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzh4NV9IRFIgPSAyMjgsCisg
ICAgUGl4ZWxGb3JtYXRBU1RDXzh4Nl9IRFIgPSAyMjksCisgICAgUGl4ZWxGb3JtYXRBU1RDXzh4
OF9IRFIgPSAyMzAsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDVfSERSID0gMjMxLAorICAgIFBp
eGVsRm9ybWF0QVNUQ18xMHg2X0hEUiA9IDIzMiwKKyAgICBQaXhlbEZvcm1hdEFTVENfMTB4OF9I
RFIgPSAyMzMsCisgICAgUGl4ZWxGb3JtYXRBU1RDXzEweDEwX0hEUiA9IDIzNCwKKyAgICBQaXhl
bEZvcm1hdEFTVENfMTJ4MTBfSERSID0gMjM1LAorICAgIFBpeGVsRm9ybWF0QVNUQ18xMngxMl9I
RFIgPSAyMzYsCisgICAgUGl4ZWxGb3JtYXRHQkdSNDIyID0gMjQwLAorICAgIFBpeGVsRm9ybWF0
QkdSRzQyMiA9IDI0MSwKKyAgICBQaXhlbEZvcm1hdERlcHRoMTZVbm9ybSA9IDI1MCwKKyAgICBQ
aXhlbEZvcm1hdERlcHRoMzJGbG9hdCA9IDI1MiwKKyAgICBQaXhlbEZvcm1hdFN0ZW5jaWw4ID0g
MjUzLAorICAgIFBpeGVsRm9ybWF0RGVwdGgyNFVub3JtX1N0ZW5jaWw4ID0gMjU1LAorICAgIFBp
eGVsRm9ybWF0RGVwdGgzMkZsb2F0X1N0ZW5jaWw4ID0gMjYwLAorICAgIFBpeGVsRm9ybWF0WDMy
X1N0ZW5jaWw4ID0gMjYxLAorICAgIFBpeGVsRm9ybWF0WDI0X1N0ZW5jaWw4ID0gMjYyLAorICAg
IFBpeGVsRm9ybWF0QkdSQTEwX1hSID0gNTUyLAorICAgIFBpeGVsRm9ybWF0QkdSQTEwX1hSX3NS
R0IgPSA1NTMsCisgICAgUGl4ZWxGb3JtYXRCR1IxMF9YUiA9IDU1NCwKKyAgICBQaXhlbEZvcm1h
dEJHUjEwX1hSX3NSR0IgPSA1NTUsCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUHJpdmF0ZS5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUHJpdmF0ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FlNGQ3OWU0
ODcxNmNhMzY3YWRhODUxYTA1ZjVmNDZiMTUwZGMxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExQcml2YXRlLmhwcApAQCAtMCwwICsx
LDEzNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LworLy8gTWV0YWwvTVRMUHJpdmF0ZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFw
cGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8g
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisKKyNpbmNsdWRlIDxvYmpj
L3J1bnRpbWUuaD4KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyNkZWZpbmUgX01UTF9QUklWQVRFX0NMUyhzeW1ib2wpIChQcml2YXRlOjpDbGFzczo6
c19rIyNzeW1ib2wpCisjZGVmaW5lIF9NVExfUFJJVkFURV9TRUwoYWNjZXNzb3IpIChQcml2YXRl
OjpTZWxlY3Rvcjo6c19rIyNhY2Nlc3NvcikKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBkZWZpbmVkKE1UTF9QUklWQVRFX0lNUExFTUVOVEFU
SU9OKQorCisjZGVmaW5lIF9NVExfUFJJVkFURV9WSVNJQklMSVRZIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkoImhpZGRlbiIpKSkKKyNkZWZpbmUgX01UTF9QUklWQVRFX0lNUE9SVCBfX2F0dHJp
YnV0ZV9fKCh3ZWFrX2ltcG9ydCkpCisKKyNpZiBfX09CSkNfXworI2RlZmluZSBfTVRMX1BSSVZB
VEVfT0JKQ19MT09LVVBfQ0xBU1Moc3ltYm9sKSAoKF9fYnJpZGdlIHZvaWQqKW9iamNfbG9va1Vw
Q2xhc3MoI3N5bWJvbCkpCisjZWxzZQorI2RlZmluZSBfTVRMX1BSSVZBVEVfT0JKQ19MT09LVVBf
Q0xBU1Moc3ltYm9sKSBvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wpCisjZW5kaWYgLy8gX19PQkpD
X18KKworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX0NMUyhzeW1ib2wpIHZvaWQqIHNfayMjc3lt
Ym9sIF9NVExfUFJJVkFURV9WSVNJQklMSVRZID0gX01UTF9QUklWQVRFX09CSkNfTE9PS1VQX0NM
QVNTKHN5bWJvbCk7CisjZGVmaW5lIF9NVExfUFJJVkFURV9ERUZfUFJPKHN5bWJvbCkKKyNkZWZp
bmUgX01UTF9QUklWQVRFX0RFRl9TRUwoYWNjZXNzb3IsIHN5bWJvbCkgU0VMIHNfayMjYWNjZXNz
b3IgX01UTF9QUklWQVRFX1ZJU0lCSUxJVFkgPSBzZWxfcmVnaXN0ZXJOYW1lKHN5bWJvbCk7CisK
KyNpZiBkZWZpbmVkKF9fTUFDXzEwXzE2KSB8fCBkZWZpbmVkKF9fTUFDXzExXzApIHx8IGRlZmlu
ZWQoX19NQUNfMTJfMCkgfHwgZGVmaW5lZChfX0lQSE9ORV8xNF8wKSB8fCBkZWZpbmVkKF9fSVBI
T05FXzE1XzApIHx8IGRlZmluZWQoX19UVk9TXzE0XzApIHx8IGRlZmluZWQoX19UVk9TXzE1XzAp
CisKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9TVFIodHlwZSwgc3ltYm9sKSAgICAgICAgICAg
ICAgICAgIFwKKyAgICBfTVRMX0VYVEVSTiB0eXBlIGNvbnN0IE1UTCMjc3ltYm9sIF9NVExfUFJJ
VkFURV9JTVBPUlQ7IFwKKyAgICB0eXBlIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgIE1U
TDo6c3ltYm9sID0gKG51bGxwdHIgIT0gJk1UTCMjc3ltYm9sKSA/IE1UTCMjc3ltYm9sIDogbnVs
bHB0cjsKKworI2Vsc2UKKworI2luY2x1ZGUgPGRsZmNuLmg+CisKK25hbWVzcGFjZSBNVEwKK3sK
K25hbWVzcGFjZSBQcml2YXRlCit7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX1R5cGU+Cisg
ICAgaW5saW5lIF9UeXBlIGNvbnN0IExvYWRTeW1ib2woY29uc3QgY2hhciogcFN5bWJvbCkKKyAg
ICB7CisgICAgICAgIGNvbnN0IF9UeXBlKiBwQWRkcmVzcyA9IHN0YXRpY19jYXN0PF9UeXBlKj4o
ZGxzeW0oUlRMRF9ERUZBVUxULCBwU3ltYm9sKSk7CisKKyAgICAgICAgcmV0dXJuIHBBZGRyZXNz
ID8gKnBBZGRyZXNzIDogbnVsbHB0cjsKKyAgICB9CisKK30gLy8gUHJpdmF0ZQorfSAvLyBNVEwK
KworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVGX1NUUih0eXBlLCBzeW1ib2wpIFwKKyAgICBfTVRM
X0VYVEVSTiB0eXBlIGNvbnN0IE1UTCMjc3ltYm9sOyAgICBcCisgICAgdHlwZSBjb25zdCAgICAg
ICAgICAgICBNVEw6OnN5bWJvbCA9IFByaXZhdGU6OkxvYWRTeW1ib2w8dHlwZT4oIk1UTCIgI3N5
bWJvbCk7CisKKyNlbmRpZiAvLyBkZWZpbmVkKF9fTUFDXzEwXzE2KSB8fCBkZWZpbmVkKF9fTUFD
XzExXzApIHx8IGRlZmluZWQoX19NQUNfMTJfMCkgfHwgZGVmaW5lZChfX0lQSE9ORV8xNF8wKSB8
fCBkZWZpbmVkKF9fSVBIT05FXzE1XzApIHx8IGRlZmluZWQoX19UVk9TXzE0XzApIHx8IGRlZmlu
ZWQoX19UVk9TXzE1XzApCisKKyNlbHNlCisKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9DTFMo
c3ltYm9sKSBleHRlcm4gdm9pZCogc19rIyNzeW1ib2w7CisjZGVmaW5lIF9NVExfUFJJVkFURV9E
RUZfUFJPKHN5bWJvbCkKKyNkZWZpbmUgX01UTF9QUklWQVRFX0RFRl9TRUwoYWNjZXNzb3IsIHN5
bWJvbCkgZXh0ZXJuIFNFTCBzX2sjI2FjY2Vzc29yOworI2RlZmluZSBfTVRMX1BSSVZBVEVfREVG
X1NUUih0eXBlLCBzeW1ib2wpCisKKyNlbmRpZiAvLyBNVExfUFJJVkFURV9JTVBMRU1FTlRBVElP
TgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFt
ZXNwYWNlIE1UTAoreworbmFtZXNwYWNlIFByaXZhdGUKK3sKKyAgICBuYW1lc3BhY2UgQ2xhc3MK
KyAgICB7CisKKyAgICB9IC8vIENsYXNzCit9IC8vIFByaXZhdGUKK30gLy8gTVRMCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCituYW1lc3BhY2UgTVRM
Cit7CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBQcm90b2NvbAorICAgIHsK
KworICAgIH0gLy8gUHJvdG9jb2wKK30gLy8gUHJpdmF0ZQorfSAvLyBNVEwKKworLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBNVEwKK3sK
K25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFtZXNwYWNlIFNlbGVjdG9yCisgICAgeworCisg
ICAgICAgIF9NVExfUFJJVkFURV9ERUZfU0VMKGJlZ2luU2NvcGUsCisgICAgICAgICAgICAiYmVn
aW5TY29wZSIpOworICAgICAgICBfTVRMX1BSSVZBVEVfREVGX1NFTChlbmRTY29wZSwKKyAgICAg
ICAgICAgICJlbmRTY29wZSIpOworICAgIH0gLy8gQ2xhc3MKK30gLy8gUHJpdmF0ZQorfSAvLyBN
VEwKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmFzdGVyaXph
dGlvblJhdGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJh
c3Rlcml6YXRpb25SYXRlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODY2OTU0NWNiMmM4ZWEzMzA5MWNmZTVh
OWY4ZWMxODZiYmExMmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01UTFJhc3Rlcml6YXRpb25SYXRlLmhwcApAQCAtMCwwICsxLDM4NiBA
QAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8g
TWV0YWwvTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAy
MSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
Ky8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5j
bHVkZSAiTVRMSGVhZGVyQnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKwor
I2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExEZXZp
Y2UuaHBwIgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworY2xh
c3MgUmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8
UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xh
c3MgUmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFJh
c3Rlcml6YXRpb25SYXRlU2FtcGxlQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6TnVt
YmVyKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBp
bmRleCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0T2JqZWN0KGNvbnN0IE5TOjpOdW1iZXIqIHZhbHVlLCBOUzo6VUludGVnZXIgaW5kZXgpOwor
fTsKKworY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6
OkNvcHlpbmc8UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I+Cit7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBhbGxvYygp
OworCisgICAgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogICAgICAgICBp
bml0KCk7CisKKyAgICBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiAgICAg
ICAgIGluaXQoTVRMOjpTaXplIHNhbXBsZUNvdW50KTsKKworICAgIE1UTDo6UmFzdGVyaXphdGlv
blJhdGVMYXllckRlc2NyaXB0b3IqICAgICAgICAgaW5pdChNVEw6OlNpemUgc2FtcGxlQ291bnQs
IGNvbnN0IGZsb2F0KiBob3Jpem9udGFsLCBjb25zdCBmbG9hdCogdmVydGljYWwpOworCisgICAg
TVRMOjpTaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVDb3Vu
dCgpIGNvbnN0OworCisgICAgTVRMOjpTaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhTYW1wbGVDb3VudCgpIGNvbnN0OworCisgICAgZmxvYXQqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsU2FtcGxlU3RvcmFnZSgpIGNv
bnN0OworCisgICAgZmxvYXQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2ZXJ0aWNhbFNhbXBsZVN0b3JhZ2UoKSBjb25zdDsKKworICAgIGNsYXNzIFJhc3Rlcml6YXRp
b25SYXRlU2FtcGxlQXJyYXkqICAgICAgICAgICAgaG9yaXpvbnRhbCgpIGNvbnN0OworCisgICAg
Y2xhc3MgUmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogICAgICAgICAgICB2ZXJ0aWNhbCgp
IGNvbnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTYW1wbGVDb3VudChNVEw6OlNpemUgc2FtcGxlQ291bnQpOworfTsKKworY2xhc3Mg
UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSYXN0
ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJh
c3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFJhc3Rlcml6
YXRpb25SYXRlTGF5ZXJBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIFJhc3Rlcml6
YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiAgIG9iamVjdChOUzo6VUludGVnZXIgbGF5ZXJJbmRl
eCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRP
YmplY3QoY29uc3QgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3IqIGxheWVy
LCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCk7Cit9OworCitjbGFzcyBSYXN0ZXJpemF0aW9uUmF0
ZU1hcERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmFzdGVyaXphdGlvblJhdGVNYXBE
ZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0
ZU1hcERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1h
cERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xhc3MgUmFzdGVyaXph
dGlvblJhdGVNYXBEZXNjcmlwdG9yKiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IoTVRM
OjpTaXplIHNjcmVlblNpemUpOworCisgICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRl
TWFwRGVzY3JpcHRvciogcmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKE1UTDo6U2l6ZSBz
Y3JlZW5TaXplLCBjb25zdCBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciog
bGF5ZXIpOworCisgICAgc3RhdGljIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRv
ciogcmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKE1UTDo6U2l6ZSBzY3JlZW5TaXplLCBO
Uzo6VUludGVnZXIgbGF5ZXJDb3VudCwgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3Jp
cHRvciogY29uc3QqIGxheWVycyk7CisKKyAgICBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVy
RGVzY3JpcHRvciogICAgICBsYXllcihOUzo6VUludGVnZXIgbGF5ZXJJbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMYXllcihjb25z
dCBjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogbGF5ZXIsIE5TOjpVSW50
ZWdlciBsYXllckluZGV4KTsKKworICAgIGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJh
eSogICAgICAgICAgIGxheWVycygpIGNvbnN0OworCisgICAgTVRMOjpTaXplICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuU2l6ZSgpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNjcmVlblNpemUoTVRMOjpT
aXplIHNjcmVlblNpemUpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCk7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckNv
dW50KCkgY29uc3Q7Cit9OworCitjbGFzcyBSYXN0ZXJpemF0aW9uUmF0ZU1hcCA6IHB1YmxpYyBO
Uzo6UmVmZXJlbmNpbmc8UmFzdGVyaXphdGlvblJhdGVNYXA+Cit7CitwdWJsaWM6CisgICAgY2xh
c3MgRGV2aWNlKiAgICAgZGV2aWNlKCkgY29uc3Q7CisKKyAgICBOUzo6U3RyaW5nKiAgICAgICBs
YWJlbCgpIGNvbnN0OworCisgICAgTVRMOjpTaXplICAgICAgICAgc2NyZWVuU2l6ZSgpIGNvbnN0
OworCisgICAgTVRMOjpTaXplICAgICAgICAgcGh5c2ljYWxHcmFudWxhcml0eSgpIGNvbnN0Owor
CisgICAgTlM6OlVJbnRlZ2VyICAgICAgbGF5ZXJDb3VudCgpIGNvbnN0OworCisgICAgTVRMOjpT
aXplQW5kQWxpZ24gcGFyYW1ldGVyQnVmZmVyU2l6ZUFuZEFsaWduKCkgY29uc3Q7CisKKyAgICB2
b2lkICAgICAgICAgICAgICBjb3B5UGFyYW1ldGVyRGF0YVRvQnVmZmVyKGNvbnN0IGNsYXNzIEJ1
ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIE1UTDo6U2l6ZSAgICAg
ICAgIHBoeXNpY2FsU2l6ZShOUzo6VUludGVnZXIgbGF5ZXJJbmRleCk7CisKKyAgICBNVEw6OkNv
b3JkaW5hdGUyRCBtYXBTY3JlZW5Ub1BoeXNpY2FsQ29vcmRpbmF0ZXMoTVRMOjpDb29yZGluYXRl
MkQgc2NyZWVuQ29vcmRpbmF0ZXMsIE5TOjpVSW50ZWdlciBsYXllckluZGV4KTsKKworICAgIE1U
TDo6Q29vcmRpbmF0ZTJEIG1hcFBoeXNpY2FsVG9TY3JlZW5Db29yZGluYXRlcyhNVEw6OkNvb3Jk
aW5hdGUyRCBwaHlzaWNhbENvb3JkaW5hdGVzLCBOUzo6VUludGVnZXIgbGF5ZXJJbmRleCk7Cit9
OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlU2FtcGxlQXJyYXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJh
eTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJhc3Rlcml6
YXRpb25SYXRlU2FtcGxlQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJh
dGVTYW1wbGVBcnJheSkpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6
UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBs
ZUFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJhc3Rl
cml6YXRpb25SYXRlU2FtcGxlQXJyYXk+KCk7Cit9CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRl
eGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTlM6Ok51bWJlciogTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZVNhbXBsZUFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpOdW1iZXIqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0
T2JqZWN0OmF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZVNhbXBsZUFycmF5OjpzZXRPYmplY3QoY29uc3QgTlM6Ok51bWJlciogdmFsdWUs
IE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0T2JqZWN0X2F0SW5kZXhlZFN1YnNjcmlwdF8pLCB2YWx1
ZSwgaW5kZXgpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRM
OjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZUxheWVyRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxv
YzxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xT
KE1UTFJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDog
aW5pdAorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciog
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRv
cj4oKTsKK30KKworLy8gbWV0aG9kOiBpbml0V2l0aFNhbXBsZUNvdW50OgorX01UTF9JTkxJTkUg
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZUxheWVyRGVzY3JpcHRvcjo6aW5pdChNVEw6OlNpemUgc2FtcGxlQ291bnQpCit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVz
Y3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5pdFdpdGhTYW1wbGVDb3VudF8pLCBz
YW1wbGVDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogaW5pdFdpdGhTYW1wbGVDb3VudDpob3Jpem9u
dGFsOnZlcnRpY2FsOgorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVz
Y3JpcHRvciogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6aW5pdChNVEw6
OlNpemUgc2FtcGxlQ291bnQsIGNvbnN0IGZsb2F0KiBob3Jpem9udGFsLCBjb25zdCBmbG9hdCog
dmVydGljYWwpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaW5pdFdp
dGhTYW1wbGVDb3VudF9ob3Jpem9udGFsX3ZlcnRpY2FsXyksIHNhbXBsZUNvdW50LCBob3Jpem9u
dGFsLCB2ZXJ0aWNhbCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVDb3VudAorX01UTF9JTkxJ
TkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckRlc2NyaXB0b3I6OnNhbXBs
ZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNp
emU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnQpKTsKK30KKworLy8gcHJvcGVy
dHk6IG1heFNhbXBsZUNvdW50CitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZUxheWVyRGVzY3JpcHRvcjo6bWF4U2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NF
TChtYXhTYW1wbGVDb3VudCkpOworfQorCisvLyBwcm9wZXJ0eTogaG9yaXpvbnRhbFNhbXBsZVN0
b3JhZ2UKK19NVExfSU5MSU5FIGZsb2F0KiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNj
cmlwdG9yOjpob3Jpem9udGFsU2FtcGxlU3RvcmFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGhvcml6b250
YWxTYW1wbGVTdG9yYWdlKSk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0aWNhbFNhbXBsZVN0b3Jh
Z2UKK19NVExfSU5MSU5FIGZsb2F0KiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlw
dG9yOjp2ZXJ0aWNhbFNhbXBsZVN0b3JhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPGZsb2F0Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0aWNhbFNhbXBs
ZVN0b3JhZ2UpKTsKK30KKworLy8gcHJvcGVydHk6IGhvcml6b250YWwKK19NVExfSU5MSU5FIE1U
TDo6UmFzdGVyaXphdGlvblJhdGVTYW1wbGVBcnJheSogTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxh
eWVyRGVzY3JpcHRvcjo6aG9yaXpvbnRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5Kj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChob3Jpem9udGFsKSk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0aWNhbAor
X01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5KiBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yOjp2ZXJ0aWNhbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZVNhbXBsZUFycmF5
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh2ZXJ0aWNhbCkpOworfQorCisvLyBtZXRob2Q6IHNl
dFNhbXBsZUNvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5
ZXJEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3VudChNVEw6OlNpemUgc2FtcGxlQ291bnQpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNh
bXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MK
K19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5KiBNVEw6OlJhc3Rl
cml6YXRpb25SYXRlTGF5ZXJBcnJheTo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheT4oX01UTF9QUklWQVRFX0NM
UyhNVExSYXN0ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0
CitfTVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJBcnJheSogTVRMOjpSYXN0
ZXJpemF0aW9uUmF0ZUxheWVyQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
Ojppbml0PE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5PigpOworfQorCisvLyBtZXRo
b2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXph
dGlvblJhdGVMYXllckRlc2NyaXB0b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5
OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGxheWVySW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvcio+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGxheWVySW5kZXgp
OworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXllckFycmF5OjpzZXRPYmplY3QoY29u
c3QgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogbGF5ZXIsIE5TOjpVSW50
ZWdlciBsYXllckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGxheWVyLCBs
YXllckluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRl
TWFwRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxN
VEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExS
YXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvciogTVRMOjpSYXN0
ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0Ojppbml0PE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yPigpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2NyZWVu
U2l6ZToKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKiBN
VEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6cmFzdGVyaXphdGlvblJhdGVNYXBE
ZXNjcmlwdG9yKE1UTDo6U2l6ZSBzY3JlZW5TaXplKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKj4oX01UTF9QUklW
QVRFX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVf
U0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplXyksIHNjcmVl
blNpemUpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiByYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2Ny
aXB0b3JXaXRoU2NyZWVuU2l6ZTpsYXllcjoKK19NVExfSU5MSU5FIE1UTDo6UmFzdGVyaXphdGlv
blJhdGVNYXBEZXNjcmlwdG9yKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6
cmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yKE1UTDo6U2l6ZSBzY3JlZW5TaXplLCBjb25z
dCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBsYXllcikKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3Jp
cHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMUmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9y
KSwgX01UTF9QUklWQVRFX1NFTChyYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3JXaXRoU2Ny
ZWVuU2l6ZV9sYXllcl8pLCBzY3JlZW5TaXplLCBsYXllcik7Cit9CisKKy8vIHN0YXRpYyBtZXRo
b2Q6IHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcldpdGhTY3JlZW5TaXplOmxheWVyQ291
bnQ6bGF5ZXJzOgorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0
b3IqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpyYXN0ZXJpemF0aW9uUmF0
ZU1hcERlc2NyaXB0b3IoTVRMOjpTaXplIHNjcmVlblNpemUsIE5TOjpVSW50ZWdlciBsYXllckNv
dW50LCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTGF5ZXJEZXNjcmlwdG9yKiBjb25zdCogbGF5ZXJz
KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJh
dGVNYXBEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExSYXN0ZXJpemF0aW9uUmF0ZU1h
cERlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3Jp
cHRvcldpdGhTY3JlZW5TaXplX2xheWVyQ291bnRfbGF5ZXJzXyksIHNjcmVlblNpemUsIGxheWVy
Q291bnQsIGxheWVycyk7Cit9CisKKy8vIG1ldGhvZDogbGF5ZXJBdEluZGV4OgorX01UTF9JTkxJ
TkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogTVRMOjpSYXN0ZXJpemF0
aW9uUmF0ZU1hcERlc2NyaXB0b3I6OmxheWVyKE5TOjpVSW50ZWdlciBsYXllckluZGV4KQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXphdGlvblJhdGVMYXll
ckRlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxheWVyQXRJbmRleF8pLCBsYXll
ckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRMYXllcjphdEluZGV4OgorX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6c2V0TGF5ZXIoY29uc3Qg
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZUxheWVyRGVzY3JpcHRvciogbGF5ZXIsIE5TOjpVSW50ZWdl
ciBsYXllckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRMYXllcl9hdEluZGV4XyksIGxheWVyLCBsYXllckluZGV4KTsKK30K
KworLy8gcHJvcGVydHk6IGxheWVycworX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJpemF0aW9uUmF0
ZUxheWVyQXJyYXkqIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXBEZXNjcmlwdG9yOjpsYXllcnMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFzdGVyaXph
dGlvblJhdGVMYXllckFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXllcnMpKTsKK30K
KworLy8gcHJvcGVydHk6IHNjcmVlblNpemUKK19NVExfSU5MSU5FIE1UTDo6U2l6ZSBNVEw6OlJh
c3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRvcjo6c2NyZWVuU2l6ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTaXplPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNjcmVlblNpemUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJhc3Rlcml6YXRp
b25SYXRlTWFwRGVzY3JpcHRvcjo6c2V0U2NyZWVuU2l6ZShNVEw6OlNpemUgc2NyZWVuU2l6ZSkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0U2NyZWVuU2l6ZV8pLCBzY3JlZW5TaXplKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitf
TVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwRGVzY3JpcHRv
cjo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpT
dHJpbmcqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGxhYmVsKSk7Cit9CisKK19NVExfSU5MSU5F
IHZvaWQgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcERlc2NyaXB0b3I6OnNldExhYmVsKGNvbnN0
IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHByb3BlcnR5
OiBsYXllckNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcERlc2NyaXB0b3I6OmxheWVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYXll
ckNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBkZXZpY2UKK19NVExfSU5MSU5FIE1UTDo6RGV2
aWNlKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpkZXZpY2UoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RGV2aWNlKj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChkZXZpY2UpKTsKK30KKworLy8gcHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6
U3RyaW5nKiBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IHNjcmVlblNpemUKK19NVExfSU5MSU5F
IE1UTDo6U2l6ZSBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjpzY3JlZW5TaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemU+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2NyZWVuU2l6ZSkpOworfQorCisvLyBwcm9wZXJ0eTogcGh5c2ljYWxHcmFu
dWxhcml0eQorX01UTF9JTkxJTkUgTVRMOjpTaXplIE1UTDo6UmFzdGVyaXphdGlvblJhdGVNYXA6
OnBoeXNpY2FsR3JhbnVsYXJpdHkoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaHlzaWNhbEdyYW51bGFy
aXR5KSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYXllckNvdW50CitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcDo6bGF5ZXJDb3VudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGxheWVyQ291bnQpKTsKK30KKworLy8gcHJvcGVydHk6IHBhcmFtZXRlckJ1ZmZl
clNpemVBbmRBbGlnbgorX01UTF9JTkxJTkUgTVRMOjpTaXplQW5kQWxpZ24gTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZU1hcDo6cGFyYW1ldGVyQnVmZmVyU2l6ZUFuZEFsaWduKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNpemVBbmRBbGlnbj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChwYXJhbWV0ZXJCdWZmZXJTaXplQW5kQWxpZ24pKTsKK30KKworLy8gbWV0
aG9kOiBjb3B5UGFyYW1ldGVyRGF0YVRvQnVmZmVyOm9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1hcDo6Y29weVBhcmFtZXRlckRhdGFUb0J1ZmZlcihjb25z
dCBNVEw6OkJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb3B5UGFyYW1ldGVy
RGF0YVRvQnVmZmVyX29mZnNldF8pLCBidWZmZXIsIG9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDog
cGh5c2ljYWxTaXplRm9yTGF5ZXI6CitfTVRMX0lOTElORSBNVEw6OlNpemUgTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZU1hcDo6cGh5c2ljYWxTaXplKE5TOjpVSW50ZWdlciBsYXllckluZGV4KQorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2l6ZT4odGhpcywgX01UTF9QUklW
QVRFX1NFTChwaHlzaWNhbFNpemVGb3JMYXllcl8pLCBsYXllckluZGV4KTsKK30KKworLy8gbWV0
aG9kOiBtYXBTY3JlZW5Ub1BoeXNpY2FsQ29vcmRpbmF0ZXM6Zm9yTGF5ZXI6CitfTVRMX0lOTElO
RSBNVEw6OkNvb3JkaW5hdGUyRCBNVEw6OlJhc3Rlcml6YXRpb25SYXRlTWFwOjptYXBTY3JlZW5U
b1BoeXNpY2FsQ29vcmRpbmF0ZXMoTVRMOjpDb29yZGluYXRlMkQgc2NyZWVuQ29vcmRpbmF0ZXMs
IE5TOjpVSW50ZWdlciBsYXllckluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6Q29vcmRpbmF0ZTJEPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1hcFNjcmVlblRv
UGh5c2ljYWxDb29yZGluYXRlc19mb3JMYXllcl8pLCBzY3JlZW5Db29yZGluYXRlcywgbGF5ZXJJ
bmRleCk7Cit9CisKKy8vIG1ldGhvZDogbWFwUGh5c2ljYWxUb1NjcmVlbkNvb3JkaW5hdGVzOmZv
ckxheWVyOgorX01UTF9JTkxJTkUgTVRMOjpDb29yZGluYXRlMkQgTVRMOjpSYXN0ZXJpemF0aW9u
UmF0ZU1hcDo6bWFwUGh5c2ljYWxUb1NjcmVlbkNvb3JkaW5hdGVzKE1UTDo6Q29vcmRpbmF0ZTJE
IHBoeXNpY2FsQ29vcmRpbmF0ZXMsIE5TOjpVSW50ZWdlciBsYXllckluZGV4KQoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29vcmRpbmF0ZTJEPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKG1hcFBoeXNpY2FsVG9TY3JlZW5Db29yZGluYXRlc19mb3JMYXllcl8pLCBwaHlz
aWNhbENvb3JkaW5hdGVzLCBsYXllckluZGV4KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29k
ZXIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhiZGE4NTYxMzVkOTdhYmQyZDg1NmYwNDZlOGM3MzYwMjMyYzZk
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwCkBAIC0wLDAgKzEsOTU4IEBACisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExS
ZW5kZXJDb21tYW5kRW5jb2Rlci5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJN
VExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVk
ZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1ZGUgIk1UTEJ1ZmZlci5ocHAi
CisjaW5jbHVkZSAiTVRMQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTEhlYXAuaHBw
IgorI2luY2x1ZGUgIk1UTEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUuaHBwIgorI2luY2x1ZGUg
Ik1UTFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQYXNzLmhw
cCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisjaW5jbHVkZSAiTVRMU2FtcGxlci5ocHAi
CisjaW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwIgorI2luY2x1ZGUg
Ik1UTFRleHR1cmUuaHBwIgorI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKyNpbmNsdWRlICJNVExW
aXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShO
Uzo6VUludGVnZXIsIFByaW1pdGl2ZVR5cGUpIHsKKyAgICBQcmltaXRpdmVUeXBlUG9pbnQgPSAw
LAorICAgIFByaW1pdGl2ZVR5cGVMaW5lID0gMSwKKyAgICBQcmltaXRpdmVUeXBlTGluZVN0cmlw
ID0gMiwKKyAgICBQcmltaXRpdmVUeXBlVHJpYW5nbGUgPSAzLAorICAgIFByaW1pdGl2ZVR5cGVU
cmlhbmdsZVN0cmlwID0gNCwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFZpc2liaWxp
dHlSZXN1bHRNb2RlKSB7CisgICAgVmlzaWJpbGl0eVJlc3VsdE1vZGVEaXNhYmxlZCA9IDAsCisg
ICAgVmlzaWJpbGl0eVJlc3VsdE1vZGVCb29sZWFuID0gMSwKKyAgICBWaXNpYmlsaXR5UmVzdWx0
TW9kZUNvdW50aW5nID0gMiwKK307CisKK3N0cnVjdCBTY2lzc29yUmVjdAoreworICAgIE5TOjpV
SW50ZWdlciB4OworICAgIE5TOjpVSW50ZWdlciB5OworICAgIE5TOjpVSW50ZWdlciB3aWR0aDsK
KyAgICBOUzo6VUludGVnZXIgaGVpZ2h0OworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFZpZXdw
b3J0Cit7CisgICAgZG91YmxlIG9yaWdpblg7CisgICAgZG91YmxlIG9yaWdpblk7CisgICAgZG91
YmxlIHdpZHRoOworICAgIGRvdWJsZSBoZWlnaHQ7CisgICAgZG91YmxlIHpuZWFyOworICAgIGRv
dWJsZSB6ZmFyOworfSBfTVRMX1BBQ0tFRDsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ3Vs
bE1vZGUpIHsKKyAgICBDdWxsTW9kZU5vbmUgPSAwLAorICAgIEN1bGxNb2RlRnJvbnQgPSAxLAor
ICAgIEN1bGxNb2RlQmFjayA9IDIsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBXaW5k
aW5nKSB7CisgICAgV2luZGluZ0Nsb2Nrd2lzZSA9IDAsCisgICAgV2luZGluZ0NvdW50ZXJDbG9j
a3dpc2UgPSAxLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgRGVwdGhDbGlwTW9kZSkg
eworICAgIERlcHRoQ2xpcE1vZGVDbGlwID0gMCwKKyAgICBEZXB0aENsaXBNb2RlQ2xhbXAgPSAx
LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVHJpYW5nbGVGaWxsTW9kZSkgeworICAg
IFRyaWFuZ2xlRmlsbE1vZGVGaWxsID0gMCwKKyAgICBUcmlhbmdsZUZpbGxNb2RlTGluZXMgPSAx
LAorfTsKKworc3RydWN0IERyYXdQcmltaXRpdmVzSW5kaXJlY3RBcmd1bWVudHMKK3sKKyAgICB1
aW50MzJfdCB2ZXJ0ZXhDb3VudDsKKyAgICB1aW50MzJfdCBpbnN0YW5jZUNvdW50OworICAgIHVp
bnQzMl90IHZlcnRleFN0YXJ0OworICAgIHVpbnQzMl90IGJhc2VJbnN0YW5jZTsKK30gX01UTF9Q
QUNLRUQ7CisKK3N0cnVjdCBEcmF3SW5kZXhlZFByaW1pdGl2ZXNJbmRpcmVjdEFyZ3VtZW50cwor
eworICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CisgICAgdWludDMyX3QgaW5zdGFuY2VDb3VudDsK
KyAgICB1aW50MzJfdCBpbmRleFN0YXJ0OworICAgIGludDMyX3QgIGJhc2VWZXJ0ZXg7CisgICAg
dWludDMyX3QgYmFzZUluc3RhbmNlOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFZlcnRleEFt
cGxpZmljYXRpb25WaWV3TWFwcGluZworeworICAgIHVpbnQzMl90IHZpZXdwb3J0QXJyYXlJbmRl
eE9mZnNldDsKKyAgICB1aW50MzJfdCByZW5kZXJUYXJnZXRBcnJheUluZGV4T2Zmc2V0OworfSBf
TVRMX1BBQ0tFRDsKKworc3RydWN0IERyYXdQYXRjaEluZGlyZWN0QXJndW1lbnRzCit7CisgICAg
dWludDMyX3QgcGF0Y2hDb3VudDsKKyAgICB1aW50MzJfdCBpbnN0YW5jZUNvdW50OworICAgIHVp
bnQzMl90IHBhdGNoU3RhcnQ7CisgICAgdWludDMyX3QgYmFzZUluc3RhbmNlOworfSBfTVRMX1BB
Q0tFRDsKKworc3RydWN0IFF1YWRUZXNzZWxsYXRpb25GYWN0b3JzSGFsZgoreworICAgIHVpbnQx
Nl90IGVkZ2VUZXNzZWxsYXRpb25GYWN0b3JbNF07CisgICAgdWludDE2X3QgaW5zaWRlVGVzc2Vs
bGF0aW9uRmFjdG9yWzJdOworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFRyaWFuZ2xlVGVzc2Vs
bGF0aW9uRmFjdG9yc0hhbGYKK3sKKyAgICB1aW50MTZfdCBlZGdlVGVzc2VsbGF0aW9uRmFjdG9y
WzNdOworICAgIHVpbnQxNl90IGluc2lkZVRlc3NlbGxhdGlvbkZhY3RvcjsKK30gX01UTF9QQUNL
RUQ7CisKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIFJlbmRlclN0YWdlcykgeworICAgIFJl
bmRlclN0YWdlVmVydGV4ID0gMSwKKyAgICBSZW5kZXJTdGFnZUZyYWdtZW50ID0gMiwKKyAgICBS
ZW5kZXJTdGFnZVRpbGUgPSA0LAorfTsKKworY2xhc3MgUmVuZGVyQ29tbWFuZEVuY29kZXIgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlbmRlckNvbW1hbmRFbmNvZGVyLCBDb21tYW5kRW5jb2Rl
cj4KK3sKK3B1YmxpYzoKKyAgICB2b2lkICAgICAgICAgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShj
b25zdCBjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlKiBwaXBlbGluZVN0YXRlKTsKKworICAgIHZv
aWQgICAgICAgICBzZXRWZXJ0ZXhCeXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJbnRlZ2Vy
IGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0
ZXhCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQs
IE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4QnVmZmVy
T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0VmVydGV4QnVmZmVycyhNVEw6OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25z
dCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAg
ICAgICAgIHNldFZlcnRleFRleHR1cmUoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgTlM6
OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhUZXh0dXJlcyhN
VEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0VmVydGV4U2FtcGxlclN0YXRlKGNvbnN0IGNsYXNzIFNhbXBsZXJTdGF0ZSogc2Ft
cGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhT
YW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBOUzo6UmFuZ2UgcmFu
Z2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleFNhbXBsZXJTdGF0ZShjb25zdCBjbGFz
cyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIGZsb2F0IGxvZE1pbkNsYW1wLCBmbG9hdCBsb2RNYXhD
bGFtcCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhT
YW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25zdCBmbG9hdCBs
b2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpSYW5nZSByYW5n
ZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29u
c3QgY2xhc3MgVmlzaWJsZUZ1bmN0aW9uVGFibGUqIGZ1bmN0aW9uVGFibGUsIE5TOjpVSW50ZWdl
ciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VmVydGV4VmlzaWJsZUZ1bmN0
aW9uVGFibGVzKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxl
c1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRleEludGVy
c2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJs
ZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsK
KworICAgIHZvaWQgICAgICAgICBzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcyhj
b25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldFZlcnRl
eEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUq
IGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAg
IHZvaWQgICAgICAgICBzZXRWaWV3cG9ydChNVEw6OlZpZXdwb3J0IHZpZXdwb3J0KTsKKworICAg
IHZvaWQgICAgICAgICBzZXRWaWV3cG9ydHMoY29uc3QgTVRMOjpWaWV3cG9ydCogdmlld3BvcnRz
LCBOUzo6VUludGVnZXIgY291bnQpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyb250RmFjaW5n
V2luZGluZyhNVEw6OldpbmRpbmcgZnJvbnRGYWNpbmdXaW5kaW5nKTsKKworICAgIHZvaWQgICAg
ICAgICBzZXRWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQoTlM6OlVJbnRlZ2VyIGNvdW50LCBjb25z
dCBNVEw6OlZlcnRleEFtcGxpZmljYXRpb25WaWV3TWFwcGluZyogdmlld01hcHBpbmdzKTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRDdWxsTW9kZShNVEw6OkN1bGxNb2RlIGN1bGxNb2RlKTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXREZXB0aENsaXBNb2RlKE1UTDo6RGVwdGhDbGlwTW9kZSBkZXB0
aENsaXBNb2RlKTsKKworICAgIHZvaWQgICAgICAgICBzZXREZXB0aEJpYXMoZmxvYXQgZGVwdGhC
aWFzLCBmbG9hdCBzbG9wZVNjYWxlLCBmbG9hdCBjbGFtcCk7CisKKyAgICB2b2lkICAgICAgICAg
c2V0U2Npc3NvclJlY3QoTVRMOjpTY2lzc29yUmVjdCByZWN0KTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRTY2lzc29yUmVjdHMoY29uc3QgTVRMOjpTY2lzc29yUmVjdCogc2Npc3NvclJlY3RzLCBO
Uzo6VUludGVnZXIgY291bnQpOworCisgICAgdm9pZCAgICAgICAgIHNldFRyaWFuZ2xlRmlsbE1v
ZGUoTVRMOjpUcmlhbmdsZUZpbGxNb2RlIGZpbGxNb2RlKTsKKworICAgIHZvaWQgICAgICAgICBz
ZXRGcmFnbWVudEJ5dGVzKGNvbnN0IHZvaWQqIGJ5dGVzLCBOUzo6VUludGVnZXIgbGVuZ3RoLCBO
Uzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50QnVmZmVy
KGNvbnN0IGNsYXNzIEJ1ZmZlciogYnVmZmVyLCBOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUlu
dGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50QnVmZmVyT2Zmc2V0
KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0RnJhZ21lbnRCdWZmZXJzKE1UTDo6QnVmZmVyKiBidWZmZXJzW10sIGNvbnN0IE5T
OjpVSW50ZWdlciBvZmZzZXRzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAg
ICAgc2V0RnJhZ21lbnRUZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUsIE5TOjpV
SW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0RnJhZ21lbnRUZXh0dXJlcyhN
VEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0RnJhZ21lbnRTYW1wbGVyU3RhdGUoY29uc3QgY2xhc3MgU2FtcGxlclN0YXRlKiBz
YW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdt
ZW50U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdl
IHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZShjb25z
dCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIGZsb2F0IGxvZE1pbkNsYW1wLCBmbG9hdCBs
b2RNYXhDbGFtcCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRG
cmFnbWVudFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIGNvbnN0
IGZsb2F0IGxvZE1pbkNsYW1wc1tdLCBjb25zdCBmbG9hdCBsb2RNYXhDbGFtcHNbXSwgTlM6OlJh
bmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRGcmFnbWVudFZpc2libGVGdW5jdGlv
blRhYmxlKGNvbnN0IGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlLCBO
Uzo6VUludGVnZXIgYnVmZmVySW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50
VmlzaWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0IFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlv
blRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdt
ZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5j
dGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVy
SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rp
b25UYWJsZXMoY29uc3QgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRGcmFnbWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25zdCBjbGFzcyBBY2NlbGVyYXRp
b25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlcklu
ZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRCbGVuZENvbG9yUmVkKGZsb2F0IHJlZCwgZmxv
YXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKTsKKworICAgIHZvaWQgICAgICAgICBz
ZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBjbGFzcyBEZXB0aFN0ZW5jaWxTdGF0ZSogZGVwdGhT
dGVuY2lsU3RhdGUpOworCisgICAgdm9pZCAgICAgICAgIHNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1
ZSh1aW50MzJfdCByZWZlcmVuY2VWYWx1ZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0U3RlbmNp
bEZyb250UmVmZXJlbmNlVmFsdWUodWludDMyX3QgZnJvbnRSZWZlcmVuY2VWYWx1ZSwgdWludDMy
X3QgYmFja1JlZmVyZW5jZVZhbHVlKTsKKworICAgIHZvaWQgICAgICAgICBzZXRWaXNpYmlsaXR5
UmVzdWx0TW9kZShNVEw6OlZpc2liaWxpdHlSZXN1bHRNb2RlIG1vZGUsIE5TOjpVSW50ZWdlciBv
ZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgIHNldENvbG9yU3RvcmVBY3Rpb24oTVRMOjpTdG9y
ZUFjdGlvbiBzdG9yZUFjdGlvbiwgTlM6OlVJbnRlZ2VyIGNvbG9yQXR0YWNobWVudEluZGV4KTsK
KworICAgIHZvaWQgICAgICAgICBzZXREZXB0aFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24g
c3RvcmVBY3Rpb24pOworCisgICAgdm9pZCAgICAgICAgIHNldFN0ZW5jaWxTdG9yZUFjdGlvbihN
VEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uKTsKKworICAgIHZvaWQgICAgICAgICBzZXRDb2xv
clN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBzdG9yZUFjdGlvbk9w
dGlvbnMsIE5TOjpVSW50ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCk7CisKKyAgICB2b2lkICAg
ICAgICAgc2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMg
c3RvcmVBY3Rpb25PcHRpb25zKTsKKworICAgIHZvaWQgICAgICAgICBzZXRTdGVuY2lsU3RvcmVB
Y3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucyk7
CisKKyAgICB2b2lkICAgICAgICAgZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHBy
aW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRl
eENvdW50LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCk7CisKKyAgICB2b2lkICAgICAgICAg
ZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50
ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50KTsKKworICAgIHZvaWQg
ICAgICAgICBkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2
ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUs
IGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZl
ck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQpOworCisgICAgdm9pZCAgICAgICAg
IGRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwg
TlM6OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3Qg
Y2xhc3MgQnVmZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0
KTsKKworICAgIHZvaWQgICAgICAgICBkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUg
cHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUludGVnZXIgdmVy
dGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6VUludGVnZXIgYmFzZUlu
c3RhbmNlKTsKKworICAgIHZvaWQgICAgICAgICBkcmF3SW5kZXhlZFByaW1pdGl2ZXMoTVRMOjpQ
cmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50ZWdlciBpbmRleENvdW50LCBNVEw6
OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kZXhCdWZmZXIsIE5T
OjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQs
IE5TOjpJbnRlZ2VyIGJhc2VWZXJ0ZXgsIE5TOjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpOworCisg
ICAgdm9pZCAgICAgICAgIGRyYXdQcmltaXRpdmVzKE1UTDo6UHJpbWl0aXZlVHlwZSBwcmltaXRp
dmVUeXBlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIg
aW5kaXJlY3RCdWZmZXJPZmZzZXQpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdJbmRleGVkUHJp
bWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTVRMOjpJbmRleFR5cGUg
aW5kZXhUeXBlLCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIg
aW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IGNsYXNzIEJ1ZmZlciogaW5kaXJlY3RCdWZmZXIsIE5T
OjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CisKKyAgICB2b2lkICAgICAgICAgdGV4
dHVyZUJhcnJpZXIoKTsKKworICAgIHZvaWQgICAgICAgICB1cGRhdGVGZW5jZShjb25zdCBjbGFz
cyBGZW5jZSogZmVuY2UsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcyk7CisKKyAgICB2b2lkICAg
ICAgICAgd2FpdEZvckZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBmZW5jZSwgTVRMOjpSZW5kZXJT
dGFnZXMgc3RhZ2VzKTsKKworICAgIHZvaWQgICAgICAgICBzZXRUZXNzZWxsYXRpb25GYWN0b3JC
dWZmZXIoY29uc3QgY2xhc3MgQnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5T
OjpVSW50ZWdlciBpbnN0YW5jZVN0cmlkZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGVzc2Vs
bGF0aW9uRmFjdG9yU2NhbGUoZmxvYXQgc2NhbGUpOworCisgICAgdm9pZCAgICAgICAgIGRyYXdQ
YXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgTlM6OlVJbnRl
Z2VyIHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25zdCBjbGFzcyBCdWZm
ZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5TOjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0
LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7
CisKKyAgICB2b2lkICAgICAgICAgZHJhd1BhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0
Y2hDb250cm9sUG9pbnRzLCBjb25zdCBjbGFzcyBCdWZmZXIqIHBhdGNoSW5kZXhCdWZmZXIsIE5T
OjpVSW50ZWdlciBwYXRjaEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBjbGFzcyBCdWZmZXIqIGlu
ZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworCisgICAg
dm9pZCAgICAgICAgIGRyYXdJbmRleGVkUGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRj
aENvbnRyb2xQb2ludHMsIE5TOjpVSW50ZWdlciBwYXRjaFN0YXJ0LCBOUzo6VUludGVnZXIgcGF0
Y2hDb3VudCwgY29uc3QgY2xhc3MgQnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVn
ZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgY2xhc3MgQnVmZmVyKiBjb250cm9sUG9p
bnRJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0
LCBOUzo6VUludGVnZXIgaW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSk7
CisKKyAgICB2b2lkICAgICAgICAgZHJhd0luZGV4ZWRQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1i
ZXJPZlBhdGNoQ29udHJvbFBvaW50cywgY29uc3QgY2xhc3MgQnVmZmVyKiBwYXRjaEluZGV4QnVm
ZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgY2xhc3MgQnVm
ZmVyKiBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvbnRyb2xQb2ludElu
ZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBjbGFzcyBCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6
VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworCisgICAgTlM6OlVJbnRlZ2VyIHRpbGVX
aWR0aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyIHRpbGVIZWlnaHQoKSBjb25zdDsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRUaWxlQnl0ZXMoY29uc3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50
ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0
VGlsZUJ1ZmZlcihjb25zdCBjbGFzcyBCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNl
dCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlQnVmZmVy
T2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0VGlsZUJ1ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnMsIGNvbnN0IE5T
OjpVSW50ZWdlciogb2Zmc2V0cywgTlM6OlJhbmdlIHJhbmdlKTsKKworICAgIHZvaWQgICAgICAg
ICBzZXRUaWxlVGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6VUludGVn
ZXIgaW5kZXgpOworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVUZXh0dXJlcyhNVEw6OlRleHR1
cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0
VGlsZVNhbXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIE5TOjpV
SW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZVNhbXBsZXJTdGF0ZXMo
TVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSk7CisKKyAgICB2
b2lkICAgICAgICAgc2V0VGlsZVNhbXBsZXJTdGF0ZShjb25zdCBjbGFzcyBTYW1wbGVyU3RhdGUq
IHNhbXBsZXIsIGZsb2F0IGxvZE1pbkNsYW1wLCBmbG9hdCBsb2RNYXhDbGFtcCwgTlM6OlVJbnRl
Z2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBzZXRUaWxlU2FtcGxlclN0YXRlcyhNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9kTWluQ2xhbXBzW10sIGNv
bnN0IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpOworCisgICAgdm9pZCAg
ICAgICAgIHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBWaXNpYmxlRnVu
Y3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKwor
ICAgIHZvaWQgICAgICAgICBzZXRUaWxlVmlzaWJsZUZ1bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNz
IFZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2Up
OworCisgICAgdm9pZCAgICAgICAgIHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNv
bnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGUsIE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7CisKKyAgICB2b2lkICAgICAgICAgc2V0
VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzKGNvbnN0IGNsYXNzIEludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5n
ZSk7CisKKyAgICB2b2lkICAgICAgICAgc2V0VGlsZUFjY2VsZXJhdGlvblN0cnVjdHVyZShjb25z
dCBjbGFzcyBBY2NlbGVyYXRpb25TdHJ1Y3R1cmUqIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6
OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KTsKKworICAgIHZvaWQgICAgICAgICBkaXNwYXRjaFRocmVh
ZHNQZXJUaWxlKE1UTDo6U2l6ZSB0aHJlYWRzUGVyVGlsZSk7CisKKyAgICB2b2lkICAgICAgICAg
c2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRl
Z2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICB1c2VS
ZXNvdXJjZShjb25zdCBjbGFzcyBSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3VyY2VVc2Fn
ZSB1c2FnZSk7CisKKyAgICB2b2lkICAgICAgICAgdXNlUmVzb3VyY2VzKE1UTDo6UmVzb3VyY2Uq
IHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVzb3VyY2VVc2FnZSB1c2Fn
ZSk7CisKKyAgICB2b2lkICAgICAgICAgdXNlUmVzb3VyY2UoY29uc3QgY2xhc3MgUmVzb3VyY2Uq
IHJlc291cmNlLCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0
YWdlcyk7CisKKyAgICB2b2lkICAgICAgICAgdXNlUmVzb3VyY2VzKE1UTDo6UmVzb3VyY2UqIHJl
c291cmNlcywgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2UsIE1U
TDo6UmVuZGVyU3RhZ2VzIHN0YWdlcyk7CisKKyAgICB2b2lkICAgICAgICAgdXNlSGVhcChjb25z
dCBjbGFzcyBIZWFwKiBoZWFwKTsKKworICAgIHZvaWQgICAgICAgICB1c2VIZWFwcyhNVEw6Okhl
YXAqIGhlYXBzW10sIE5TOjpVSW50ZWdlciBjb3VudCk7CisKKyAgICB2b2lkICAgICAgICAgdXNl
SGVhcChjb25zdCBjbGFzcyBIZWFwKiBoZWFwLCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpOwor
CisgICAgdm9pZCAgICAgICAgIHVzZUhlYXBzKE1UTDo6SGVhcCogaGVhcHNbXSwgTlM6OlVJbnRl
Z2VyIGNvdW50LCBNVEw6OlJlbmRlclN0YWdlcyBzdGFnZXMpOworCisgICAgdm9pZCAgICAgICAg
IGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyKGNvbnN0IGNsYXNzIEluZGlyZWN0Q29tbWFuZEJ1ZmZl
ciogaW5kaXJlY3RDb21tYW5kQnVmZmVyLCBOUzo6UmFuZ2UgZXhlY3V0aW9uUmFuZ2UpOworCisg
ICAgdm9pZCAgICAgICAgIGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyKGNvbnN0IGNsYXNzIEluZGly
ZWN0Q29tbWFuZEJ1ZmZlciogaW5kaXJlY3RDb21tYW5kYnVmZmVyLCBjb25zdCBjbGFzcyBCdWZm
ZXIqIGluZGlyZWN0UmFuZ2VCdWZmZXIsIE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNl
dCk7CisKKyAgICB2b2lkICAgICAgICAgbWVtb3J5QmFycmllcihNVEw6OkJhcnJpZXJTY29wZSBz
Y29wZSwgTVRMOjpSZW5kZXJTdGFnZXMgYWZ0ZXIsIE1UTDo6UmVuZGVyU3RhZ2VzIGJlZm9yZSk7
CisKKyAgICB2b2lkICAgICAgICAgbWVtb3J5QmFycmllcihNVEw6OlJlc291cmNlKiByZXNvdXJj
ZXNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlbmRlclN0YWdlcyBhZnRlciwgTVRMOjpS
ZW5kZXJTdGFnZXMgYmVmb3JlKTsKKworICAgIHZvaWQgICAgICAgICBzYW1wbGVDb3VudGVyc0lu
QnVmZmVyKGNvbnN0IGNsYXNzIENvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1ZmZlciwgTlM6
OlVJbnRlZ2VyIHNhbXBsZUluZGV4LCBib29sIGJhcnJpZXIpOworfTsKKworfQorCisvLyBtZXRo
b2Q6IHNldFJlbmRlclBpcGVsaW5lU3RhdGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVy
Q29tbWFuZEVuY29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgTVRMOjpSZW5kZXJQ
aXBlbGluZVN0YXRlKiBwaXBlbGluZVN0YXRlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZW5kZXJQaXBlbGluZVN0YXRlXyksIHBp
cGVsaW5lU3RhdGUpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleEJ5dGVzOmxlbmd0aDphdElu
ZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0
ZXhCeXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJbnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRl
Z2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRWZXJ0ZXhCeXRlc19sZW5ndGhfYXRJbmRleF8pLCBieXRlcywgbGVuZ3Ro
LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmVydGV4QnVmZmVyOm9mZnNldDphdEluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhC
dWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6
OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVy
LCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhCdWZmZXJPZmZzZXQ6
YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
VmVydGV4QnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpVSW50ZWdlciBpbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VmVydGV4QnVmZmVyT2Zmc2V0X2F0SW5kZXhfKSwgb2Zmc2V0LCBpbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0VmVydGV4QnVmZmVyczpvZmZzZXRzOndpdGhSYW5nZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVycyhNVEw6
OkJ1ZmZlciogYnVmZmVyc1tdLCBjb25zdCBOUzo6VUludGVnZXIgb2Zmc2V0c1tdLCBOUzo6UmFu
Z2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldFZlcnRleEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2VfKSwgYnVmZmVycywg
b2Zmc2V0cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFRleHR1cmU6YXRJbmRl
eDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4
VGV4dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0VmVydGV4VGV4dHVyZV9hdEluZGV4XyksIHRleHR1cmUsIGluZGV4KTsKK30KKworLy8gbWV0
aG9kOiBzZXRWZXJ0ZXhUZXh0dXJlczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleFRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4
dHVyZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhUZXh0dXJlc193aXRoUmFuZ2VfKSwg
dGV4dHVyZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhTYW1wbGVyU3RhdGU6
YXRJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
VmVydGV4U2FtcGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFNhbXBsZXJTdGF0ZV9hdEluZGV4XyksIHNhbXBsZXIs
IGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzOndpdGhSYW5n
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VmVydGV4
U2FtcGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJh
bmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFuZ2Up
OworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFNhbXBsZXJTdGF0ZTpsb2RNaW5DbGFtcDpsb2RN
YXhDbGFtcDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpzZXRWZXJ0ZXhTYW1wbGVyU3RhdGUoY29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBs
ZXIsIGZsb2F0IGxvZE1pbkNsYW1wLCBmbG9hdCBsb2RNYXhDbGFtcCwgTlM6OlVJbnRlZ2VyIGlu
ZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRl
eF8pLCBzYW1wbGVyLCBsb2RNaW5DbGFtcCwgbG9kTWF4Q2xhbXAsIGluZGV4KTsKK30KKworLy8g
bWV0aG9kOiBzZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzOmxvZE1pbkNsYW1wczpsb2RNYXhDbGFtcHM6
d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyc1tdLCBjb25z
dCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxvYXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpS
YW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc2V0VmVydGV4U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xh
bXBzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgbG9kTWluQ2xhbXBzLCBsb2RNYXhDbGFtcHMsIHJh
bmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZTphdEJ1
ZmZlckluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXRWZXJ0ZXhWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRh
YmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFZp
c2libGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgZnVuY3Rpb25UYWJsZSwgYnVmZmVy
SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxlczp3
aXRoQnVmZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldFZlcnRleFZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OlZpc2libGVGdW5j
dGlvblRhYmxlKiBmdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleFZp
c2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgZnVuY3Rpb25UYWJsZXMsIHJh
bmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
OmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpJbnRlcnNl
Y3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6VUludGVn
ZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVfYXRCdWZm
ZXJJbmRleF8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBidWZmZXJJbmRleCk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXM6d2l0aEJ1ZmZl
clJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRW
ZXJ0ZXhJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5n
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VmVydGV4SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXyks
IGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0
VmVydGV4QWNjZWxlcmF0aW9uU3RydWN0dXJlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFZlcnRleEFjY2VsZXJhdGlvblN0cnVj
dHVyZShjb25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0
dXJlLCBOUzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleEFjY2VsZXJhdGlvblN0cnVj
dHVyZV9hdEJ1ZmZlckluZGV4XyksIGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgYnVmZmVySW5kZXgp
OworfQorCisvLyBtZXRob2Q6IHNldFZpZXdwb3J0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWaWV3cG9ydChNVEw6OlZpZXdwb3J0IHZpZXdwb3J0KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRWaWV3cG9ydF8pLCB2aWV3cG9ydCk7Cit9CisKKy8vIG1ldGhvZDogc2V0Vmlld3BvcnRzOmNv
dW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWaWV3
cG9ydHMoY29uc3QgTVRMOjpWaWV3cG9ydCogdmlld3BvcnRzLCBOUzo6VUludGVnZXIgY291bnQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFZpZXdwb3J0c19jb3VudF8pLCB2aWV3cG9ydHMsIGNvdW50KTsKK30KKworLy8gbWV0aG9k
OiBzZXRGcm9udEZhY2luZ1dpbmRpbmc6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnNldEZyb250RmFjaW5nV2luZGluZyhNVEw6OldpbmRpbmcgZnJvbnRGYWNp
bmdXaW5kaW5nKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRGcm9udEZhY2luZ1dpbmRpbmdfKSwgZnJvbnRGYWNpbmdXaW5kaW5nKTsK
K30KKworLy8gbWV0aG9kOiBzZXRWZXJ0ZXhBbXBsaWZpY2F0aW9uQ291bnQ6dmlld01hcHBpbmdz
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhB
bXBsaWZpY2F0aW9uQ291bnQoTlM6OlVJbnRlZ2VyIGNvdW50LCBjb25zdCBNVEw6OlZlcnRleEFt
cGxpZmljYXRpb25WaWV3TWFwcGluZyogdmlld01hcHBpbmdzKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhBbXBsaWZpY2F0
aW9uQ291bnRfdmlld01hcHBpbmdzXyksIGNvdW50LCB2aWV3TWFwcGluZ3MpOworfQorCisvLyBt
ZXRob2Q6IHNldEN1bGxNb2RlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRF
bmNvZGVyOjpzZXRDdWxsTW9kZShNVEw6OkN1bGxNb2RlIGN1bGxNb2RlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDdWxsTW9kZV8p
LCBjdWxsTW9kZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0RGVwdGhDbGlwTW9kZToKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RGVwdGhDbGlwTW9kZShNVEw6
OkRlcHRoQ2xpcE1vZGUgZGVwdGhDbGlwTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhDbGlwTW9kZV8pLCBkZXB0aENs
aXBNb2RlKTsKK30KKworLy8gbWV0aG9kOiBzZXREZXB0aEJpYXM6c2xvcGVTY2FsZTpjbGFtcDoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RGVwdGhCaWFz
KGZsb2F0IGRlcHRoQmlhcywgZmxvYXQgc2xvcGVTY2FsZSwgZmxvYXQgY2xhbXApCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRo
Qmlhc19zbG9wZVNjYWxlX2NsYW1wXyksIGRlcHRoQmlhcywgc2xvcGVTY2FsZSwgY2xhbXApOwor
fQorCisvLyBtZXRob2Q6IHNldFNjaXNzb3JSZWN0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTY2lzc29yUmVjdChNVEw6OlNjaXNzb3JSZWN0IHJlY3Qp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFNjaXNzb3JSZWN0XyksIHJlY3QpOworfQorCisvLyBtZXRob2Q6IHNldFNjaXNzb3JSZWN0
czpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0
U2Npc3NvclJlY3RzKGNvbnN0IE1UTDo6U2Npc3NvclJlY3QqIHNjaXNzb3JSZWN0cywgTlM6OlVJ
bnRlZ2VyIGNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTY2lzc29yUmVjdHNfY291bnRfKSwgc2Npc3NvclJlY3RzLCBjb3Vu
dCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VHJpYW5nbGVGaWxsTW9kZToKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VHJpYW5nbGVGaWxsTW9kZShNVEw6OlRy
aWFuZ2xlRmlsbE1vZGUgZmlsbE1vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRyaWFuZ2xlRmlsbE1vZGVfKSwgZmlsbE1vZGUp
OworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50Qnl0ZXM6bGVuZ3RoOmF0SW5kZXg6CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50Qnl0ZXMo
Y29uc3Qgdm9pZCogYnl0ZXMsIE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBpbmRl
eCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0RnJhZ21lbnRCeXRlc19sZW5ndGhfYXRJbmRleF8pLCBieXRlcywgbGVuZ3RoLCBpbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRCdWZmZXI6b2Zmc2V0OmF0SW5kZXg6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50QnVm
ZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiBidWZmZXIsIE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpV
SW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRCdWZmZXJfb2Zmc2V0X2F0SW5kZXhfKSwgYnVmZmVy
LCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEJ1ZmZlck9mZnNl
dDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpz
ZXRGcmFnbWVudEJ1ZmZlck9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0LCBOUzo6VUludGVnZXIg
aW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldEZyYWdtZW50QnVmZmVyT2Zmc2V0X2F0SW5kZXhfKSwgb2Zmc2V0LCBpbmRleCk7
Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1
ZmZlcnMoTVRMOjpCdWZmZXIqIGJ1ZmZlcnNbXSwgY29uc3QgTlM6OlVJbnRlZ2VyIG9mZnNldHNb
XSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEJ1ZmZlcnNfb2Zmc2V0c193aXRoUmFuZ2Vf
KSwgYnVmZmVycywgb2Zmc2V0cywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50
VGV4dHVyZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpzZXRGcmFnbWVudFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBOUzo6
VUludGVnZXIgaW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50VGV4dHVyZV9hdEluZGV4XyksIHRleHR1cmUsIGlu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudFRleHR1cmVzOndpdGhSYW5nZToKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRUZXh0
dXJlcyhNVEw6OlRleHR1cmUqIHRleHR1cmVzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21l
bnRUZXh0dXJlc193aXRoUmFuZ2VfKSwgdGV4dHVyZXMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9k
OiBzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZTphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZShjb25zdCBNVEw6
OlNhbXBsZXJTdGF0ZSogc2FtcGxlciwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFNh
bXBsZXJTdGF0ZV9hdEluZGV4XyksIHNhbXBsZXIsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBz
ZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudFNhbXBsZXJTdGF0ZXMoTVRMOjpTYW1w
bGVyU3RhdGUqIHNhbXBsZXJzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRTYW1wbGVy
U3RhdGVzX3dpdGhSYW5nZV8pLCBzYW1wbGVycywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNl
dEZyYWdtZW50U2FtcGxlclN0YXRlOmxvZE1pbkNsYW1wOmxvZE1heENsYW1wOmF0SW5kZXg6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50U2Ft
cGxlclN0YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBmbG9hdCBsb2RNaW5D
bGFtcCwgZmxvYXQgbG9kTWF4Q2xhbXAsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnJhZ21lbnRT
YW1wbGVyU3RhdGVfbG9kTWluQ2xhbXBfbG9kTWF4Q2xhbXBfYXRJbmRleF8pLCBzYW1wbGVyLCBs
b2RNaW5DbGFtcCwgbG9kTWF4Q2xhbXAsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFn
bWVudFNhbXBsZXJTdGF0ZXM6bG9kTWluQ2xhbXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50U2Ft
cGxlclN0YXRlcyhNVEw6OlNhbXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgY29uc3QgZmxvYXQgbG9k
TWluQ2xhbXBzW10sIGNvbnN0IGZsb2F0IGxvZE1heENsYW1wc1tdLCBOUzo6UmFuZ2UgcmFuZ2Up
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldEZyYWdtZW50U2FtcGxlclN0YXRlc19sb2RNaW5DbGFtcHNfbG9kTWF4Q2xhbXBzX3dpdGhS
YW5nZV8pLCBzYW1wbGVycywgbG9kTWluQ2xhbXBzLCBsb2RNYXhDbGFtcHMsIHJhbmdlKTsKK30K
KworLy8gbWV0aG9kOiBzZXRGcmFnbWVudFZpc2libGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdt
ZW50VmlzaWJsZUZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSog
ZnVuY3Rpb25UYWJsZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFZpc2li
bGVGdW5jdGlvblRhYmxlX2F0QnVmZmVySW5kZXhfKSwgZnVuY3Rpb25UYWJsZSwgYnVmZmVySW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldEZyYWdtZW50VmlzaWJsZUZ1bmN0aW9uVGFibGVzOndp
dGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6c2V0RnJhZ21lbnRWaXNpYmxlRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpWaXNpYmxlRnVu
Y3Rpb25UYWJsZSogZnVuY3Rpb25UYWJsZXNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVu
dFZpc2libGVGdW5jdGlvblRhYmxlc193aXRoQnVmZmVyUmFuZ2VfKSwgZnVuY3Rpb25UYWJsZXMs
IHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6c2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKGNvbnN0IE1UTDo6
SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgTlM6
OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudEludGVyc2VjdGlvbkZ1bmN0aW9uVGFi
bGVfYXRCdWZmZXJJbmRleF8pLCBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBidWZmZXJJbmRl
eCk7Cit9CisKKy8vIG1ldGhvZDogc2V0RnJhZ21lbnRJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxl
czp3aXRoQnVmZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXMoY29uc3QgTVRMOjpJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlc1tdLCBO
Uzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZXNfd2l0
aEJ1ZmZlclJhbmdlXyksIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzLCByYW5nZSk7Cit9CisK
Ky8vIG1ldGhvZDogc2V0RnJhZ21lbnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRl
eDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21l
bnRBY2NlbGVyYXRpb25TdHJ1Y3R1cmUoY29uc3QgTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmUq
IGFjY2VsZXJhdGlvblN0cnVjdHVyZSwgTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFn
bWVudEFjY2VsZXJhdGlvblN0cnVjdHVyZV9hdEJ1ZmZlckluZGV4XyksIGFjY2VsZXJhdGlvblN0
cnVjdHVyZSwgYnVmZmVySW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldEJsZW5kQ29sb3JSZWQ6
Z3JlZW46Ymx1ZTphbHBoYToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5j
b2Rlcjo6c2V0QmxlbmRDb2xvclJlZChmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVl
LCBmbG9hdCBhbHBoYSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0QmxlbmRDb2xvclJlZF9ncmVlbl9ibHVlX2FscGhhXyksIHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhKTsKK30KKworLy8gbWV0aG9kOiBzZXREZXB0aFN0ZW5jaWxTdGF0
ZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RGVwdGhT
dGVuY2lsU3RhdGUoY29uc3QgTVRMOjpEZXB0aFN0ZW5jaWxTdGF0ZSogZGVwdGhTdGVuY2lsU3Rh
dGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldERlcHRoU3RlbmNpbFN0YXRlXyksIGRlcHRoU3RlbmNpbFN0YXRlKTsKK30KKworLy8g
bWV0aG9kOiBzZXRTdGVuY2lsUmVmZXJlbmNlVmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFN0ZW5jaWxSZWZlcmVuY2VWYWx1ZSh1aW50MzJfdCBy
ZWZlcmVuY2VWYWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFJlZmVyZW5jZVZhbHVlXyksIHJlZmVyZW5jZVZhbHVl
KTsKK30KKworLy8gbWV0aG9kOiBzZXRTdGVuY2lsRnJvbnRSZWZlcmVuY2VWYWx1ZTpiYWNrUmVm
ZXJlbmNlVmFsdWU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6
OnNldFN0ZW5jaWxGcm9udFJlZmVyZW5jZVZhbHVlKHVpbnQzMl90IGZyb250UmVmZXJlbmNlVmFs
dWUsIHVpbnQzMl90IGJhY2tSZWZlcmVuY2VWYWx1ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNz
YWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbEZyb250UmVmZXJlbmNl
VmFsdWVfYmFja1JlZmVyZW5jZVZhbHVlXyksIGZyb250UmVmZXJlbmNlVmFsdWUsIGJhY2tSZWZl
cmVuY2VWYWx1ZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VmlzaWJpbGl0eVJlc3VsdE1vZGU6b2Zm
c2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRWaXNp
YmlsaXR5UmVzdWx0TW9kZShNVEw6OlZpc2liaWxpdHlSZXN1bHRNb2RlIG1vZGUsIE5TOjpVSW50
ZWdlciBvZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFZpc2liaWxpdHlSZXN1bHRNb2RlX29mZnNldF8pLCBtb2RlLCBvZmZz
ZXQpOworfQorCisvLyBtZXRob2Q6IHNldENvbG9yU3RvcmVBY3Rpb246YXRJbmRleDoKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0Q29sb3JTdG9yZUFjdGlv
bihNVEw6OlN0b3JlQWN0aW9uIHN0b3JlQWN0aW9uLCBOUzo6VUludGVnZXIgY29sb3JBdHRhY2ht
ZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldENvbG9yU3RvcmVBY3Rpb25fYXRJbmRleF8pLCBzdG9yZUFjdGlvbiwgY29s
b3JBdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldERlcHRoU3RvcmVBY3Rpb246
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldERlcHRoU3Rv
cmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbikKK3sKKyAgICBPYmplY3Q6OnNl
bmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RGVwdGhTdG9yZUFjdGlv
bl8pLCBzdG9yZUFjdGlvbik7Cit9CisKKy8vIG1ldGhvZDogc2V0U3RlbmNpbFN0b3JlQWN0aW9u
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRTdGVuY2ls
U3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbFN0b3Jl
QWN0aW9uXyksIHN0b3JlQWN0aW9uKTsKK30KKworLy8gbWV0aG9kOiBzZXRDb2xvclN0b3JlQWN0
aW9uT3B0aW9uczphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRF
bmNvZGVyOjpzZXRDb2xvclN0b3JlQWN0aW9uT3B0aW9ucyhNVEw6OlN0b3JlQWN0aW9uT3B0aW9u
cyBzdG9yZUFjdGlvbk9wdGlvbnMsIE5TOjpVSW50ZWdlciBjb2xvckF0dGFjaG1lbnRJbmRleCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0Q29sb3JTdG9yZUFjdGlvbk9wdGlvbnNfYXRJbmRleF8pLCBzdG9yZUFjdGlvbk9wdGlvbnMs
IGNvbG9yQXR0YWNobWVudEluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXREZXB0aFN0b3JlQWN0
aW9uT3B0aW9uczoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
c2V0RGVwdGhTdG9yZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVB
Y3Rpb25PcHRpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXREZXB0aFN0b3JlQWN0aW9uT3B0aW9uc18pLCBzdG9yZUFjdGlvbk9w
dGlvbnMpOworfQorCisvLyBtZXRob2Q6IHNldFN0ZW5jaWxTdG9yZUFjdGlvbk9wdGlvbnM6Citf
TVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFN0ZW5jaWxTdG9y
ZUFjdGlvbk9wdGlvbnMoTVRMOjpTdG9yZUFjdGlvbk9wdGlvbnMgc3RvcmVBY3Rpb25PcHRpb25z
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRTdGVuY2lsU3RvcmVBY3Rpb25PcHRpb25zXyksIHN0b3JlQWN0aW9uT3B0aW9ucyk7Cit9
CisKKy8vIG1ldGhvZDogZHJhd1ByaW1pdGl2ZXM6dmVydGV4U3RhcnQ6dmVydGV4Q291bnQ6aW5z
dGFuY2VDb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
ZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50
ZWdlciB2ZXJ0ZXhTdGFydCwgTlM6OlVJbnRlZ2VyIHZlcnRleENvdW50LCBOUzo6VUludGVnZXIg
aW5zdGFuY2VDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZHJhd1ByaW1pdGl2ZXNfdmVydGV4U3RhcnRfdmVydGV4Q291bnRfaW5z
dGFuY2VDb3VudF8pLCBwcmltaXRpdmVUeXBlLCB2ZXJ0ZXhTdGFydCwgdmVydGV4Q291bnQsIGlu
c3RhbmNlQ291bnQpOworfQorCisvLyBtZXRob2Q6IGRyYXdQcmltaXRpdmVzOnZlcnRleFN0YXJ0
OnZlcnRleENvdW50OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVy
OjpkcmF3UHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJ
bnRlZ2VyIHZlcnRleFN0YXJ0LCBOUzo6VUludGVnZXIgdmVydGV4Q291bnQpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQcmltaXRp
dmVzX3ZlcnRleFN0YXJ0X3ZlcnRleENvdW50XyksIHByaW1pdGl2ZVR5cGUsIHZlcnRleFN0YXJ0
LCB2ZXJ0ZXhDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4ZWRQcmltaXRpdmVzOmlu
ZGV4Q291bnQ6aW5kZXhUeXBlOmluZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNl
Q291bnQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdJ
bmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJ
bnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgTVRMOjpC
dWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5TOjpV
SW50ZWdlciBpbnN0YW5jZUNvdW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9p
bmRleFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF8pLCBw
cmltaXRpdmVUeXBlLCBpbmRleENvdW50LCBpbmRleFR5cGUsIGluZGV4QnVmZmVyLCBpbmRleEJ1
ZmZlck9mZnNldCwgaW5zdGFuY2VDb3VudCk7Cit9CisKKy8vIG1ldGhvZDogZHJhd0luZGV4ZWRQ
cmltaXRpdmVzOmluZGV4Q291bnQ6aW5kZXhUeXBlOmluZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zm
c2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5k
ZXhlZFByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsIE5TOjpVSW50
ZWdlciBpbmRleENvdW50LCBNVEw6OkluZGV4VHlwZSBpbmRleFR5cGUsIGNvbnN0IE1UTDo6QnVm
ZmVyKiBpbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGV4QnVmZmVyT2Zmc2V0KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5k
ZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRleFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZm
ZXJPZmZzZXRfKSwgcHJpbWl0aXZlVHlwZSwgaW5kZXhDb3VudCwgaW5kZXhUeXBlLCBpbmRleEJ1
ZmZlciwgaW5kZXhCdWZmZXJPZmZzZXQpOworfQorCisvLyBtZXRob2Q6IGRyYXdQcmltaXRpdmVz
OnZlcnRleFN0YXJ0OnZlcnRleENvdW50Omluc3RhbmNlQ291bnQ6YmFzZUluc3RhbmNlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3UHJpbWl0aXZlcyhN
VEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6OlVJbnRlZ2VyIHZlcnRleFN0YXJ0
LCBOUzo6VUludGVnZXIgdmVydGV4Q291bnQsIE5TOjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBO
Uzo6VUludGVnZXIgYmFzZUluc3RhbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3UHJpbWl0aXZlc192ZXJ0ZXhTdGFydF92ZXJ0
ZXhDb3VudF9pbnN0YW5jZUNvdW50X2Jhc2VJbnN0YW5jZV8pLCBwcmltaXRpdmVUeXBlLCB2ZXJ0
ZXhTdGFydCwgdmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGJhc2VJbnN0YW5jZSk7Cit9CisK
Ky8vIG1ldGhvZDogZHJhd0luZGV4ZWRQcmltaXRpdmVzOmluZGV4Q291bnQ6aW5kZXhUeXBlOmlu
ZGV4QnVmZmVyOmluZGV4QnVmZmVyT2Zmc2V0Omluc3RhbmNlQ291bnQ6YmFzZVZlcnRleDpiYXNl
SW5zdGFuY2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRy
YXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwgTlM6
OlVJbnRlZ2VyIGluZGV4Q291bnQsIE1UTDo6SW5kZXhUeXBlIGluZGV4VHlwZSwgY29uc3QgTVRM
OjpCdWZmZXIqIGluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJPZmZzZXQsIE5T
OjpVSW50ZWdlciBpbnN0YW5jZUNvdW50LCBOUzo6SW50ZWdlciBiYXNlVmVydGV4LCBOUzo6VUlu
dGVnZXIgYmFzZUluc3RhbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChkcmF3SW5kZXhlZFByaW1pdGl2ZXNfaW5kZXhDb3VudF9pbmRl
eFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlVmVy
dGV4X2Jhc2VJbnN0YW5jZV8pLCBwcmltaXRpdmVUeXBlLCBpbmRleENvdW50LCBpbmRleFR5cGUs
IGluZGV4QnVmZmVyLCBpbmRleEJ1ZmZlck9mZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZVZlcnRl
eCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8gbWV0aG9kOiBkcmF3UHJpbWl0aXZlczppbmRpcmVj
dEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNldDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd1ByaW1pdGl2ZXMoTVRMOjpQcmltaXRpdmVUeXBlIHByaW1p
dGl2ZVR5cGUsIGNvbnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2Vy
IGluZGlyZWN0QnVmZmVyT2Zmc2V0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChkcmF3UHJpbWl0aXZlc19pbmRpcmVjdEJ1ZmZlcl9pbmRp
cmVjdEJ1ZmZlck9mZnNldF8pLCBwcmltaXRpdmVUeXBlLCBpbmRpcmVjdEJ1ZmZlciwgaW5kaXJl
Y3RCdWZmZXJPZmZzZXQpOworfQorCisvLyBtZXRob2Q6IGRyYXdJbmRleGVkUHJpbWl0aXZlczpp
bmRleFR5cGU6aW5kZXhCdWZmZXI6aW5kZXhCdWZmZXJPZmZzZXQ6aW5kaXJlY3RCdWZmZXI6aW5k
aXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OmRyYXdJbmRleGVkUHJpbWl0aXZlcyhNVEw6OlByaW1pdGl2ZVR5cGUgcHJpbWl0aXZl
VHlwZSwgTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlLCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kZXhC
dWZmZXIsIE5TOjpVSW50ZWdlciBpbmRleEJ1ZmZlck9mZnNldCwgY29uc3QgTVRMOjpCdWZmZXIq
IGluZGlyZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdJ
bmRleGVkUHJpbWl0aXZlc19pbmRleFR5cGVfaW5kZXhCdWZmZXJfaW5kZXhCdWZmZXJPZmZzZXRf
aW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgcHJpbWl0aXZlVHlwZSwgaW5k
ZXhUeXBlLCBpbmRleEJ1ZmZlciwgaW5kZXhCdWZmZXJPZmZzZXQsIGluZGlyZWN0QnVmZmVyLCBp
bmRpcmVjdEJ1ZmZlck9mZnNldCk7Cit9CisKKy8vIG1ldGhvZDogdGV4dHVyZUJhcnJpZXIKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dGV4dHVyZUJhcnJpZXIo
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh0ZXh0dXJlQmFycmllcikpOworfQorCisvLyBtZXRob2Q6IHVwZGF0ZUZlbmNlOmFmdGVyU3Rh
Z2VzOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1cGRhdGVG
ZW5jZShjb25zdCBNVEw6OkZlbmNlKiBmZW5jZSwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1
cGRhdGVGZW5jZV9hZnRlclN0YWdlc18pLCBmZW5jZSwgc3RhZ2VzKTsKK30KKworLy8gbWV0aG9k
OiB3YWl0Rm9yRmVuY2U6YmVmb3JlU3RhZ2VzOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjp3YWl0Rm9yRmVuY2UoY29uc3QgTVRMOjpGZW5jZSogZmVuY2UsIE1U
TDo6UmVuZGVyU3RhZ2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2FpdEZvckZlbmNlX2JlZm9yZVN0YWdlc18pLCBmZW5j
ZSwgc3RhZ2VzKTsKK30KKworLy8gbWV0aG9kOiBzZXRUZXNzZWxsYXRpb25GYWN0b3JCdWZmZXI6
b2Zmc2V0Omluc3RhbmNlU3RyaWRlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRUZXNzZWxsYXRpb25GYWN0b3JCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIq
IGJ1ZmZlciwgTlM6OlVJbnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlU3RyaWRl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRUZXNzZWxsYXRpb25GYWN0b3JCdWZmZXJfb2Zmc2V0X2luc3RhbmNlU3RyaWRlXyksIGJ1
ZmZlciwgb2Zmc2V0LCBpbnN0YW5jZVN0cmlkZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGVzc2Vs
bGF0aW9uRmFjdG9yU2NhbGU6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlKGZsb2F0IHNjYWxlKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUZXNzZWxs
YXRpb25GYWN0b3JTY2FsZV8pLCBzY2FsZSk7Cit9CisKKy8vIG1ldGhvZDogZHJhd1BhdGNoZXM6
cGF0Y2hTdGFydDpwYXRjaENvdW50OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9m
ZnNldDppbnN0YW5jZUNvdW50OmJhc2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZHJhd1BhdGNoZXMoTlM6OlVJbnRlZ2VyIG51bWJlck9mUGF0
Y2hDb250cm9sUG9pbnRzLCBOUzo6VUludGVnZXIgcGF0Y2hTdGFydCwgTlM6OlVJbnRlZ2VyIHBh
dGNoQ291bnQsIGNvbnN0IE1UTDo6QnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVn
ZXIgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgTlM6OlVJbnRlZ2VyIGluc3RhbmNlQ291bnQsIE5T
OjpVSW50ZWdlciBiYXNlSW5zdGFuY2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQYXRjaGVzX3BhdGNoU3RhcnRfcGF0Y2hDb3Vu
dF9wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZmZXJPZmZzZXRfaW5zdGFuY2VDb3VudF9i
YXNlSW5zdGFuY2VfKSwgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMsIHBhdGNoU3RhcnQsIHBh
dGNoQ291bnQsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGluc3Rh
bmNlQ291bnQsIGJhc2VJbnN0YW5jZSk7Cit9CisKKy8vIG1ldGhvZDogZHJhd1BhdGNoZXM6cGF0
Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVyT2Zmc2V0OmluZGlyZWN0QnVmZmVyOmluZGly
ZWN0QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpkcmF3UGF0Y2hlcyhOUzo6VUludGVnZXIgbnVtYmVyT2ZQYXRjaENvbnRyb2xQb2ludHMs
IGNvbnN0IE1UTDo6QnVmZmVyKiBwYXRjaEluZGV4QnVmZmVyLCBOUzo6VUludGVnZXIgcGF0Y2hJ
bmRleEJ1ZmZlck9mZnNldCwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGlyZWN0QnVmZmVyLCBOUzo6
VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRyYXdQYXRjaGVzX3BhdGNoSW5kZXhCdWZm
ZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVjdEJ1ZmZlck9m
ZnNldF8pLCBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgcGF0Y2hJbmRleEJ1ZmZlciwgcGF0
Y2hJbmRleEJ1ZmZlck9mZnNldCwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0
KTsKK30KKworLy8gbWV0aG9kOiBkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hTdGFydDpwYXRjaENv
dW50OnBhdGNoSW5kZXhCdWZmZXI6cGF0Y2hJbmRleEJ1ZmZlck9mZnNldDpjb250cm9sUG9pbnRJ
bmRleEJ1ZmZlcjpjb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldDppbnN0YW5jZUNvdW50OmJh
c2VJbnN0YW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6
ZHJhd0luZGV4ZWRQYXRjaGVzKE5TOjpVSW50ZWdlciBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50
cywgTlM6OlVJbnRlZ2VyIHBhdGNoU3RhcnQsIE5TOjpVSW50ZWdlciBwYXRjaENvdW50LCBjb25z
dCBNVEw6OkJ1ZmZlciogcGF0Y2hJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhC
dWZmZXJPZmZzZXQsIGNvbnN0IE1UTDo6QnVmZmVyKiBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwg
TlM6OlVJbnRlZ2VyIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0LCBOUzo6VUludGVnZXIg
aW5zdGFuY2VDb3VudCwgTlM6OlVJbnRlZ2VyIGJhc2VJbnN0YW5jZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0luZGV4ZWRQYXRj
aGVzX3BhdGNoU3RhcnRfcGF0Y2hDb3VudF9wYXRjaEluZGV4QnVmZmVyX3BhdGNoSW5kZXhCdWZm
ZXJPZmZzZXRfY29udHJvbFBvaW50SW5kZXhCdWZmZXJfY29udHJvbFBvaW50SW5kZXhCdWZmZXJP
ZmZzZXRfaW5zdGFuY2VDb3VudF9iYXNlSW5zdGFuY2VfKSwgbnVtYmVyT2ZQYXRjaENvbnRyb2xQ
b2ludHMsIHBhdGNoU3RhcnQsIHBhdGNoQ291bnQsIHBhdGNoSW5kZXhCdWZmZXIsIHBhdGNoSW5k
ZXhCdWZmZXJPZmZzZXQsIGNvbnRyb2xQb2ludEluZGV4QnVmZmVyLCBjb250cm9sUG9pbnRJbmRl
eEJ1ZmZlck9mZnNldCwgaW5zdGFuY2VDb3VudCwgYmFzZUluc3RhbmNlKTsKK30KKworLy8gbWV0
aG9kOiBkcmF3SW5kZXhlZFBhdGNoZXM6cGF0Y2hJbmRleEJ1ZmZlcjpwYXRjaEluZGV4QnVmZmVy
T2Zmc2V0OmNvbnRyb2xQb2ludEluZGV4QnVmZmVyOmNvbnRyb2xQb2ludEluZGV4QnVmZmVyT2Zm
c2V0OmluZGlyZWN0QnVmZmVyOmluZGlyZWN0QnVmZmVyT2Zmc2V0OgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkcmF3SW5kZXhlZFBhdGNoZXMoTlM6OlVJbnRl
Z2VyIG51bWJlck9mUGF0Y2hDb250cm9sUG9pbnRzLCBjb25zdCBNVEw6OkJ1ZmZlciogcGF0Y2hJ
bmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIHBhdGNoSW5kZXhCdWZmZXJPZmZzZXQsIGNvbnN0IE1U
TDo6QnVmZmVyKiBjb250cm9sUG9pbnRJbmRleEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGNvbnRyb2xQ
b2ludEluZGV4QnVmZmVyT2Zmc2V0LCBjb25zdCBNVEw6OkJ1ZmZlciogaW5kaXJlY3RCdWZmZXIs
IE5TOjpVSW50ZWdlciBpbmRpcmVjdEJ1ZmZlck9mZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZHJhd0luZGV4ZWRQYXRjaGVzX3Bh
dGNoSW5kZXhCdWZmZXJfcGF0Y2hJbmRleEJ1ZmZlck9mZnNldF9jb250cm9sUG9pbnRJbmRleEJ1
ZmZlcl9jb250cm9sUG9pbnRJbmRleEJ1ZmZlck9mZnNldF9pbmRpcmVjdEJ1ZmZlcl9pbmRpcmVj
dEJ1ZmZlck9mZnNldF8pLCBudW1iZXJPZlBhdGNoQ29udHJvbFBvaW50cywgcGF0Y2hJbmRleEJ1
ZmZlciwgcGF0Y2hJbmRleEJ1ZmZlck9mZnNldCwgY29udHJvbFBvaW50SW5kZXhCdWZmZXIsIGNv
bnRyb2xQb2ludEluZGV4QnVmZmVyT2Zmc2V0LCBpbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RCdWZm
ZXJPZmZzZXQpOworfQorCisvLyBwcm9wZXJ0eTogdGlsZVdpZHRoCitfTVRMX0lOTElORSBOUzo6
VUludGVnZXIgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dGlsZVdpZHRoKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwodGlsZVdpZHRoKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0aWxlSGVpZ2h0Citf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dGlsZUhl
aWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRpbGVIZWlnaHQpKTsKK30KKworLy8gbWV0aG9k
OiBzZXRUaWxlQnl0ZXM6bGVuZ3RoOmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVCeXRlcyhjb25zdCB2b2lkKiBieXRlcywgTlM6OlVJ
bnRlZ2VyIGxlbmd0aCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlQnl0ZXNfbGVuZ3RoX2F0
SW5kZXhfKSwgYnl0ZXMsIGxlbmd0aCwgaW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVC
dWZmZXI6b2Zmc2V0OmF0SW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFu
ZEVuY29kZXI6OnNldFRpbGVCdWZmZXIoY29uc3QgTVRMOjpCdWZmZXIqIGJ1ZmZlciwgTlM6OlVJ
bnRlZ2VyIG9mZnNldCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlQnVmZmVyX29mZnNldF9h
dEluZGV4XyksIGJ1ZmZlciwgb2Zmc2V0LCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGls
ZUJ1ZmZlck9mZnNldDphdEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRUaWxlQnVmZmVyT2Zmc2V0KE5TOjpVSW50ZWdlciBvZmZzZXQsIE5TOjpV
SW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0VGlsZUJ1ZmZlck9mZnNldF9hdEluZGV4XyksIG9mZnNldCwgaW5k
ZXgpOworfQorCisvLyBtZXRob2Q6IHNldFRpbGVCdWZmZXJzOm9mZnNldHM6d2l0aFJhbmdlOgor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlQnVmZmVy
cyhNVEw6OkJ1ZmZlciogYnVmZmVycywgY29uc3QgTlM6OlVJbnRlZ2VyKiBvZmZzZXRzLCBOUzo6
UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFRpbGVCdWZmZXJzX29mZnNldHNfd2l0aFJhbmdlXyksIGJ1ZmZlcnMs
IG9mZnNldHMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlVGV4dHVyZTphdEluZGV4
OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlVGV4
dHVyZShjb25zdCBNVEw6OlRleHR1cmUqIHRleHR1cmUsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
VGlsZVRleHR1cmVfYXRJbmRleF8pLCB0ZXh0dXJlLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDog
c2V0VGlsZVRleHR1cmVzOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0VGlsZVRleHR1cmVzKE1UTDo6VGV4dHVyZSogdGV4dHVyZXNbXSwg
TlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRUaWxlVGV4dHVyZXNfd2l0aFJhbmdlXyksIHRleHR1cmVzLCBy
YW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZVNhbXBsZXJTdGF0ZTphdEluZGV4OgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlU2FtcGxlclN0
YXRlKGNvbnN0IE1UTDo6U2FtcGxlclN0YXRlKiBzYW1wbGVyLCBOUzo6VUludGVnZXIgaW5kZXgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFRpbGVTYW1wbGVyU3RhdGVfYXRJbmRleF8pLCBzYW1wbGVyLCBpbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0VGlsZVNhbXBsZXJTdGF0ZXM6d2l0aFJhbmdlOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRUaWxlU2FtcGxlclN0YXRlcyhNVEw6OlNh
bXBsZXJTdGF0ZSogc2FtcGxlcnNbXSwgTlM6OlJhbmdlIHJhbmdlKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlU2FtcGxlclN0
YXRlc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIHJhbmdlKTsKK30KKworLy8gbWV0aG9kOiBzZXRU
aWxlU2FtcGxlclN0YXRlOmxvZE1pbkNsYW1wOmxvZE1heENsYW1wOmF0SW5kZXg6CitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVTYW1wbGVyU3RhdGUo
Y29uc3QgTVRMOjpTYW1wbGVyU3RhdGUqIHNhbXBsZXIsIGZsb2F0IGxvZE1pbkNsYW1wLCBmbG9h
dCBsb2RNYXhDbGFtcCwgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxlU2FtcGxlclN0YXRlX2xv
ZE1pbkNsYW1wX2xvZE1heENsYW1wX2F0SW5kZXhfKSwgc2FtcGxlciwgbG9kTWluQ2xhbXAsIGxv
ZE1heENsYW1wLCBpbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZVNhbXBsZXJTdGF0ZXM6
bG9kTWluQ2xhbXBzOmxvZE1heENsYW1wczp3aXRoUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVTYW1wbGVyU3RhdGVzKE1UTDo6U2FtcGxl
clN0YXRlKiBzYW1wbGVyc1tdLCBjb25zdCBmbG9hdCBsb2RNaW5DbGFtcHNbXSwgY29uc3QgZmxv
YXQgbG9kTWF4Q2xhbXBzW10sIE5TOjpSYW5nZSByYW5nZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRN
ZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZVNhbXBsZXJTdGF0ZXNf
bG9kTWluQ2xhbXBzX2xvZE1heENsYW1wc193aXRoUmFuZ2VfKSwgc2FtcGxlcnMsIGxvZE1pbkNs
YW1wcywgbG9kTWF4Q2xhbXBzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZVZpc2li
bGVGdW5jdGlvblRhYmxlOmF0QnVmZmVySW5kZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVu
ZGVyQ29tbWFuZEVuY29kZXI6OnNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZShjb25zdCBNVEw6
OlZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlLCBOUzo6VUludGVnZXIgYnVmZmVy
SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZV9hdEJ1ZmZlckluZGV4XyksIGZ1bmN0
aW9uVGFibGUsIGJ1ZmZlckluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRUaWxlVmlzaWJsZUZ1
bmN0aW9uVGFibGVzOndpdGhCdWZmZXJSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZVZpc2libGVGdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6
OlZpc2libGVGdW5jdGlvblRhYmxlKiBmdW5jdGlvblRhYmxlc1tdLCBOUzo6UmFuZ2UgcmFuZ2Up
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFRpbGVWaXNpYmxlRnVuY3Rpb25UYWJsZXNfd2l0aEJ1ZmZlclJhbmdlXyksIGZ1bmN0aW9u
VGFibGVzLCByYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogc2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0
aW9uVGFibGU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6c2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGUoY29uc3QgTVRMOjpJ
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKiBpbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLCBOUzo6
VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlX2F0
QnVmZmVySW5kZXhfKSwgaW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSwgYnVmZmVySW5kZXgpOwor
fQorCisvLyBtZXRob2Q6IHNldFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlczp3aXRoQnVm
ZmVyUmFuZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNl
dFRpbGVJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcyhjb25zdCBNVEw6OkludGVyc2VjdGlvbkZ1
bmN0aW9uVGFibGUqIGludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzW10sIE5TOjpSYW5nZSByYW5n
ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc2V0VGlsZUludGVyc2VjdGlvbkZ1bmN0aW9uVGFibGVzX3dpdGhCdWZmZXJSYW5nZV8pLCBp
bnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlcywgcmFuZ2UpOworfQorCisvLyBtZXRob2Q6IHNldFRp
bGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmU6YXRCdWZmZXJJbmRleDoKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0VGlsZUFjY2VsZXJhdGlvblN0cnVjdHVyZShj
b25zdCBNVEw6OkFjY2VsZXJhdGlvblN0cnVjdHVyZSogYWNjZWxlcmF0aW9uU3RydWN0dXJlLCBO
Uzo6VUludGVnZXIgYnVmZmVySW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVfYXRC
dWZmZXJJbmRleF8pLCBhY2NlbGVyYXRpb25TdHJ1Y3R1cmUsIGJ1ZmZlckluZGV4KTsKK30KKwor
Ly8gbWV0aG9kOiBkaXNwYXRjaFRocmVhZHNQZXJUaWxlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlckNvbW1hbmRFbmNvZGVyOjpkaXNwYXRjaFRocmVhZHNQZXJUaWxlKE1UTDo6U2l6ZSB0
aHJlYWRzUGVyVGlsZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZGlzcGF0Y2hUaHJlYWRzUGVyVGlsZV8pLCB0aHJlYWRzUGVyVGlsZSk7
Cit9CisKKy8vIG1ldGhvZDogc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGg6b2Zmc2V0OmF0SW5k
ZXg6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFRocmVh
ZGdyb3VwTWVtb3J5TGVuZ3RoKE5TOjpVSW50ZWdlciBsZW5ndGgsIE5TOjpVSW50ZWdlciBvZmZz
ZXQsIE5TOjpVSW50ZWdlciBpbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGhfb2Zmc2V0
X2F0SW5kZXhfKSwgbGVuZ3RoLCBvZmZzZXQsIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiB1c2VS
ZXNvdXJjZTp1c2FnZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rl
cjo6dXNlUmVzb3VyY2UoY29uc3QgTVRMOjpSZXNvdXJjZSogcmVzb3VyY2UsIE1UTDo6UmVzb3Vy
Y2VVc2FnZSB1c2FnZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwodXNlUmVzb3VyY2VfdXNhZ2VfKSwgcmVzb3VyY2UsIHVzYWdlKTsKK30K
KworLy8gbWV0aG9kOiB1c2VSZXNvdXJjZXM6Y291bnQ6dXNhZ2U6CitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OnVzZVJlc291cmNlcyhNVEw6OlJlc291cmNlKiBy
ZXNvdXJjZXNbXSwgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291cmNlVXNhZ2UgdXNhZ2Up
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHVzZVJlc291cmNlc19jb3VudF91c2FnZV8pLCByZXNvdXJjZXMsIGNvdW50LCB1c2FnZSk7Cit9
CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2U6dXNhZ2U6c3RhZ2VzOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjp1c2VSZXNvdXJjZShjb25zdCBNVEw6OlJlc291
cmNlKiByZXNvdXJjZSwgTVRMOjpSZXNvdXJjZVVzYWdlIHVzYWdlLCBNVEw6OlJlbmRlclN0YWdl
cyBzdGFnZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHVzZVJlc291cmNlX3VzYWdlX3N0YWdlc18pLCByZXNvdXJjZSwgdXNhZ2UsIHN0
YWdlcyk7Cit9CisKKy8vIG1ldGhvZDogdXNlUmVzb3VyY2VzOmNvdW50OnVzYWdlOnN0YWdlczoK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlUmVzb3VyY2Vz
KE1UTDo6UmVzb3VyY2UqIHJlc291cmNlcywgTlM6OlVJbnRlZ2VyIGNvdW50LCBNVEw6OlJlc291
cmNlVXNhZ2UgdXNhZ2UsIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlcykKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlUmVzb3VyY2VzX2Nv
dW50X3VzYWdlX3N0YWdlc18pLCByZXNvdXJjZXMsIGNvdW50LCB1c2FnZSwgc3RhZ2VzKTsKK30K
KworLy8gbWV0aG9kOiB1c2VIZWFwOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlckNvbW1h
bmRFbmNvZGVyOjp1c2VIZWFwKGNvbnN0IE1UTDo6SGVhcCogaGVhcCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXNlSGVhcF8pLCBoZWFw
KTsKK30KKworLy8gbWV0aG9kOiB1c2VIZWFwczpjb3VudDoKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJDb21tYW5kRW5jb2Rlcjo6dXNlSGVhcHMoTVRMOjpIZWFwKiBoZWFwc1tdLCBOUzo6
VUludGVnZXIgY291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHVzZUhlYXBzX2NvdW50XyksIGhlYXBzLCBjb3VudCk7Cit9CisKKy8v
IG1ldGhvZDogdXNlSGVhcDpzdGFnZXM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29t
bWFuZEVuY29kZXI6OnVzZUhlYXAoY29uc3QgTVRMOjpIZWFwKiBoZWFwLCBNVEw6OlJlbmRlclN0
YWdlcyBzdGFnZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHVzZUhlYXBfc3RhZ2VzXyksIGhlYXAsIHN0YWdlcyk7Cit9CisKKy8vIG1l
dGhvZDogdXNlSGVhcHM6Y291bnQ6c3RhZ2VzOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRl
ckNvbW1hbmRFbmNvZGVyOjp1c2VIZWFwcyhNVEw6OkhlYXAqIGhlYXBzW10sIE5TOjpVSW50ZWdl
ciBjb3VudCwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2VzKQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1c2VIZWFwc19jb3VudF9zdGFnZXNf
KSwgaGVhcHMsIGNvdW50LCBzdGFnZXMpOworfQorCisvLyBtZXRob2Q6IGV4ZWN1dGVDb21tYW5k
c0luQnVmZmVyOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6ZXhlY3V0ZUNvbW1hbmRzSW5CdWZmZXIoY29uc3QgTVRMOjpJbmRpcmVjdENvbW1h
bmRCdWZmZXIqIGluZGlyZWN0Q29tbWFuZEJ1ZmZlciwgTlM6OlJhbmdlIGV4ZWN1dGlvblJhbmdl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChleGVjdXRlQ29tbWFuZHNJbkJ1ZmZlcl93aXRoUmFuZ2VfKSwgaW5kaXJlY3RDb21tYW5kQnVm
ZmVyLCBleGVjdXRpb25SYW5nZSk7Cit9CisKKy8vIG1ldGhvZDogZXhlY3V0ZUNvbW1hbmRzSW5C
dWZmZXI6aW5kaXJlY3RCdWZmZXI6aW5kaXJlY3RCdWZmZXJPZmZzZXQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVuY29kZXI6OmV4ZWN1dGVDb21tYW5kc0luQnVmZmVyKGNv
bnN0IE1UTDo6SW5kaXJlY3RDb21tYW5kQnVmZmVyKiBpbmRpcmVjdENvbW1hbmRidWZmZXIsIGNv
bnN0IE1UTDo6QnVmZmVyKiBpbmRpcmVjdFJhbmdlQnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJl
Y3RCdWZmZXJPZmZzZXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGV4ZWN1dGVDb21tYW5kc0luQnVmZmVyX2luZGlyZWN0QnVmZmVyX2lu
ZGlyZWN0QnVmZmVyT2Zmc2V0XyksIGluZGlyZWN0Q29tbWFuZGJ1ZmZlciwgaW5kaXJlY3RSYW5n
ZUJ1ZmZlciwgaW5kaXJlY3RCdWZmZXJPZmZzZXQpOworfQorCisvLyBtZXRob2Q6IG1lbW9yeUJh
cnJpZXJXaXRoU2NvcGU6YWZ0ZXJTdGFnZXM6YmVmb3JlU3RhZ2VzOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjptZW1vcnlCYXJyaWVyKE1UTDo6QmFycmllclNj
b3BlIHNjb3BlLCBNVEw6OlJlbmRlclN0YWdlcyBhZnRlciwgTVRMOjpSZW5kZXJTdGFnZXMgYmVm
b3JlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtZW1vcnlCYXJyaWVyV2l0aFNjb3BlX2FmdGVyU3RhZ2VzX2JlZm9yZVN0YWdlc18pLCBz
Y29wZSwgYWZ0ZXIsIGJlZm9yZSk7Cit9CisKKy8vIG1ldGhvZDogbWVtb3J5QmFycmllcldpdGhS
ZXNvdXJjZXM6Y291bnQ6YWZ0ZXJTdGFnZXM6YmVmb3JlU3RhZ2VzOgorX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlckNvbW1hbmRFbmNvZGVyOjptZW1vcnlCYXJyaWVyKE1UTDo6UmVzb3VyY2Uq
IHJlc291cmNlc1tdLCBOUzo6VUludGVnZXIgY291bnQsIE1UTDo6UmVuZGVyU3RhZ2VzIGFmdGVy
LCBNVEw6OlJlbmRlclN0YWdlcyBiZWZvcmUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1lbW9yeUJhcnJpZXJXaXRoUmVzb3VyY2VzX2Nv
dW50X2FmdGVyU3RhZ2VzX2JlZm9yZVN0YWdlc18pLCByZXNvdXJjZXMsIGNvdW50LCBhZnRlciwg
YmVmb3JlKTsKK30KKworLy8gbWV0aG9kOiBzYW1wbGVDb3VudGVyc0luQnVmZmVyOmF0U2FtcGxl
SW5kZXg6d2l0aEJhcnJpZXI6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OnNhbXBsZUNvdW50ZXJzSW5CdWZmZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVm
ZmVyKiBzYW1wbGVCdWZmZXIsIE5TOjpVSW50ZWdlciBzYW1wbGVJbmRleCwgYm9vbCBiYXJyaWVy
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzYW1wbGVDb3VudGVyc0luQnVmZmVyX2F0U2FtcGxlSW5kZXhfd2l0aEJhcnJpZXJfKSwgc2Ft
cGxlQnVmZmVyLCBzYW1wbGVJbmRleCwgYmFycmllcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGFzcy5ocHAgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGFzcy5ocHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODU3NTFlYWFlNTVlMGQ4NGM5MDNmMzM3MWQyNWIxMjk5MjUzOTdkYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQYXNz
LmhwcApAQCAtMCwwICsxLDc4NiBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUmVuZGVyUGFzcy5ocHAKKy8vCisvLyBDb3B5
cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8v
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZp
bmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFBy
aXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2lu
Y2x1ZGUgIk1UTFJlbmRlclBhc3MuaHBwIgorCituYW1lc3BhY2UgTVRMCit7CitfTVRMX0VOVU0o
TlM6OlVJbnRlZ2VyLCBMb2FkQWN0aW9uKSB7CisgICAgTG9hZEFjdGlvbkRvbnRDYXJlID0gMCwK
KyAgICBMb2FkQWN0aW9uTG9hZCA9IDEsCisgICAgTG9hZEFjdGlvbkNsZWFyID0gMiwKK307CisK
K19NVExfRU5VTShOUzo6VUludGVnZXIsIFN0b3JlQWN0aW9uKSB7CisgICAgU3RvcmVBY3Rpb25E
b250Q2FyZSA9IDAsCisgICAgU3RvcmVBY3Rpb25TdG9yZSA9IDEsCisgICAgU3RvcmVBY3Rpb25N
dWx0aXNhbXBsZVJlc29sdmUgPSAyLAorICAgIFN0b3JlQWN0aW9uU3RvcmVBbmRNdWx0aXNhbXBs
ZVJlc29sdmUgPSAzLAorICAgIFN0b3JlQWN0aW9uVW5rbm93biA9IDQsCisgICAgU3RvcmVBY3Rp
b25DdXN0b21TYW1wbGVEZXB0aFN0b3JlID0gNSwKK307CisKK19NVExfT1BUSU9OUyhOUzo6VUlu
dGVnZXIsIFN0b3JlQWN0aW9uT3B0aW9ucykgeworICAgIFN0b3JlQWN0aW9uT3B0aW9uTm9uZSA9
IDAsCisgICAgU3RvcmVBY3Rpb25PcHRpb25WYWxpZE1hc2sgPSAxLAorICAgIFN0b3JlQWN0aW9u
T3B0aW9uQ3VzdG9tU2FtcGxlUG9zaXRpb25zID0gMSwKK307CisKK3N0cnVjdCBDbGVhckNvbG9y
Cit7CisgICAgc3RhdGljIENsZWFyQ29sb3IgTWFrZShkb3VibGUgcmVkLCBkb3VibGUgZ3JlZW4s
IGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpOworCisgICAgQ2xlYXJDb2xvcigpID0gZGVmYXVs
dDsKKworICAgIENsZWFyQ29sb3IoZG91YmxlIHJlZCwgZG91YmxlIGdyZWVuLCBkb3VibGUgYmx1
ZSwgZG91YmxlIGFscGhhKTsKKworICAgIGRvdWJsZSByZWQ7CisgICAgZG91YmxlIGdyZWVuOwor
ICAgIGRvdWJsZSBibHVlOworICAgIGRvdWJsZSBhbHBoYTsKK30gX01UTF9QQUNLRUQ7CisKK2Ns
YXNzIFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNz
IFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIGNs
YXNzIFRleHR1cmUqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRU
ZXh0dXJlKGNvbnN0IGNsYXNzIFRleHR1cmUqIHRleHR1cmUpOworCisgICAgTlM6OlVJbnRlZ2Vy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMZXZlbChOUzo6VUlu
dGVnZXIgbGV2ZWwpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2xpY2UoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRTbGljZShOUzo6VUludGVnZXIgc2xpY2UpOworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhQbGFuZSgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dERlcHRoUGxhbmUoTlM6OlVJbnRlZ2VyIGRlcHRoUGxhbmUpOworCisgICAgY2xhc3MgVGV4dHVy
ZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVRleHR1cmUoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXNv
bHZlVGV4dHVyZShjb25zdCBjbGFzcyBUZXh0dXJlKiByZXNvbHZlVGV4dHVyZSk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlTGV2ZWwo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRSZXNvbHZlTGV2ZWwoTlM6OlVJbnRlZ2VyIHJlc29sdmVMZXZlbCk7CisKKyAgICBOUzo6
VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlU2xpY2UoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRSZXNvbHZlU2xpY2UoTlM6OlVJbnRlZ2VyIHJlc29sdmVTbGljZSk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlRGVwdGhQbGFuZSgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFJlc29sdmVEZXB0aFBsYW5lKE5TOjpVSW50ZWdlciByZXNvbHZlRGVwdGhQbGFuZSk7CisK
KyAgICBNVEw6OkxvYWRBY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkQWN0
aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0TG9hZEFjdGlvbihNVEw6OkxvYWRBY3Rpb24gbG9hZEFjdGlvbik7CisKKyAgICBN
VEw6OlN0b3JlQWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUFjdGlvbigp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFN0b3JlQWN0aW9uKE1UTDo6U3RvcmVBY3Rpb24gc3RvcmVBY3Rpb24pOworCisgICAgTVRM
OjpTdG9yZUFjdGlvbk9wdGlvbnMgICAgICAgICAgICAgICAgICAgICAgc3RvcmVBY3Rpb25PcHRp
b25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3RvcmVBY3Rpb25PcHRpb25zKE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3Jl
QWN0aW9uT3B0aW9ucyk7Cit9OworCitjbGFzcyBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciwgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6
CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBh
bGxvYygpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iq
ICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OkNsZWFyQ29sb3IgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsZWFyQ29sb3IoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENsZWFyQ29sb3IoTVRMOjpDbGVh
ckNvbG9yIGNsZWFyQ29sb3IpOworfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgTXVsdGlz
YW1wbGVEZXB0aFJlc29sdmVGaWx0ZXIpIHsKKyAgICBNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZp
bHRlclNhbXBsZTAgPSAwLAorICAgIE11bHRpc2FtcGxlRGVwdGhSZXNvbHZlRmlsdGVyTWluID0g
MSwKKyAgICBNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlck1heCA9IDIsCit9OworCitjbGFz
cyBSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWlu
ZzxSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciwgTVRMOjpSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBkb3Vi
bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyRGVwdGgo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldENsZWFyRGVwdGgoZG91YmxlIGNsZWFyRGVwdGgpOworCisgICAgTVRMOjpNdWx0
aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlciAgICAgICAgICAgICAgICBkZXB0aFJlc29sdmVGaWx0
ZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldERlcHRoUmVzb2x2ZUZpbHRlcihNVEw6Ok11bHRpc2FtcGxlRGVwdGhSZXNv
bHZlRmlsdGVyIGRlcHRoUmVzb2x2ZUZpbHRlcik7Cit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRl
Z2VyLCBNdWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyKSB7CisgICAgTXVsdGlzYW1wbGVT
dGVuY2lsUmVzb2x2ZUZpbHRlclNhbXBsZTAgPSAwLAorICAgIE11bHRpc2FtcGxlU3RlbmNpbFJl
c29sdmVGaWx0ZXJEZXB0aFJlc29sdmVkU2FtcGxlID0gMSwKK307CisKK2NsYXNzIFJlbmRlclBh
c3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVy
UGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciwgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBhc3NTdGVu
Y2lsQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNz
U3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgdWludDMy
X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyU3RlbmNp
bCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRDbGVhclN0ZW5jaWwodWludDMyX3QgY2xlYXJTdGVuY2lsKTsKKworICAg
IE1UTDo6TXVsdGlzYW1wbGVTdGVuY2lsUmVzb2x2ZUZpbHRlciAgICAgICAgICAgICAgICBzdGVu
Y2lsUmVzb2x2ZUZpbHRlcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVuY2lsUmVzb2x2ZUZpbHRlcihNVEw6Ok11
bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXIgc3RlbmNpbFJlc29sdmVGaWx0ZXIpOworfTsK
KworY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSA6IHB1Ymxp
YyBOUzo6UmVmZXJlbmNpbmc8UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0KCk7CisKKyAgICBjbGFzcyBSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpV
SW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYXR0YWNobWVudCwgTlM6OlVJbnRlZ2Vy
IGF0dGFjaG1lbnRJbmRleCk7Cit9OworCitjbGFzcyBSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVyUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBS
ZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAg
ICBjbGFzcyBSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqICAgICAg
ICBpbml0KCk7CisKKyAgICBjbGFzcyBDb3VudGVyU2FtcGxlQnVmZmVyKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzYW1wbGVCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTYW1wbGVCdWZm
ZXIoY29uc3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogc2FtcGxlQnVmZmVyKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0T2ZWZXJ0ZXhT
YW1wbGVJbmRleChOUzo6VUludGVnZXIgc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4KTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuZE9mVmVydGV4U2FtcGxlSW5kZXgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFbmRPZlZlcnRleFNhbXBs
ZUluZGV4KE5TOjpVSW50ZWdlciBlbmRPZlZlcnRleFNhbXBsZUluZGV4KTsKKworICAgIE5TOjpV
SW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
T2ZGcmFnbWVudFNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRPZkZyYWdtZW50U2Ft
cGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4KTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuZE9mRnJhZ21lbnRT
YW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4KTsKK307CisK
K2NsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5IDog
cHVibGljIE5TOjpSZWZlcmVuY2luZzxSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGFzc1Nh
bXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFz
cyBSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAg
IGluaXQoKTsKKworICAgIGNsYXNzIFJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgUmVuZGVyUGFzc1NhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVu
dEluZGV4KTsKK307CisKK2NsYXNzIFJlbmRlclBhc3NEZXNjcmlwdG9yIDogcHVibGljIE5TOjpD
b3B5aW5nPFJlbmRlclBhc3NEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFz
cyBSZW5kZXJQYXNzRGVzY3JpcHRvciogICAgICAgICAgICAgICAgICAgICBhbGxvYygpOworCisg
ICAgY2xhc3MgUmVuZGVyUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQYXNzRGVzY3JpcHRvciogICAgICAg
ICAgICAgICAgICAgICByZW5kZXJQYXNzRGVzY3JpcHRvcigpOworCisgICAgY2xhc3MgUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGNvbG9yQXR0YWNobWVu
dHMoKSBjb25zdDsKKworICAgIGNsYXNzIFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yKiAgICAgICAgICAgICBkZXB0aEF0dGFjaG1lbnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RGVwdGhBdHRh
Y2htZW50KGNvbnN0IGNsYXNzIFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBk
ZXB0aEF0dGFjaG1lbnQpOworCisgICAgY2xhc3MgUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50
RGVzY3JpcHRvciogICAgICAgICAgIHN0ZW5jaWxBdHRhY2htZW50KCkgY29uc3Q7CisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0
ZW5jaWxBdHRhY2htZW50KGNvbnN0IGNsYXNzIFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERl
c2NyaXB0b3IqIHN0ZW5jaWxBdHRhY2htZW50KTsKKworICAgIGNsYXNzIEJ1ZmZlciogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5UmVzdWx0QnVmZmVy
KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFZpc2liaWxpdHlSZXN1bHRCdWZmZXIoY29uc3QgY2xhc3MgQnVmZmVy
KiB2aXNpYmlsaXR5UmVzdWx0QnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXRBcnJheUxlbmd0aCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRSZW5kZXJUYXJnZXRBcnJheUxlbmd0aChOUzo6VUludGVnZXIgcmVuZGVy
VGFyZ2V0QXJyYXlMZW5ndGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlYmxvY2tTYW1wbGVMZW5ndGgoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0SW1hZ2VibG9ja1NhbXBsZUxlbmd0aChOUzo6VUludGVnZXIgaW1hZ2VibG9ja1NhbXBs
ZUxlbmd0aCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgoKSBjb25zdDsKKyAgICB2b2lk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGhy
ZWFkZ3JvdXBNZW1vcnlMZW5ndGgoTlM6OlVJbnRlZ2VyIHRocmVhZGdyb3VwTWVtb3J5TGVuZ3Ro
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aWxlV2lkdGgoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlsZVdpZHRoKE5TOjpVSW50ZWdlciB0
aWxlV2lkdGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbGVIZWlnaHQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlsZUhlaWdodChOUzo6
VUludGVnZXIgdGlsZUhlaWdodCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFJhc3RlclNhbXBsZUNvdW50KCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldERlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudChOUzo6VUludGVnZXIgZGVmYXVsdFJh
c3RlclNhbXBsZUNvdW50KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXRXaWR0aCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRS
ZW5kZXJUYXJnZXRXaWR0aChOUzo6VUludGVnZXIgcmVuZGVyVGFyZ2V0V2lkdGgpOworCisgICAg
TlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
bmRlclRhcmdldEhlaWdodCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZW5kZXJUYXJnZXRIZWlnaHQoTlM6OlVJ
bnRlZ2VyIHJlbmRlclRhcmdldEhlaWdodCk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FtcGxlUG9zaXRpb25zKGNvbnN0
IE1UTDo6U2FtcGxlUG9zaXRpb24qIHBvc2l0aW9ucywgTlM6OlVJbnRlZ2VyIGNvdW50KTsKKwor
ICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZXRTYW1wbGVQb3NpdGlvbnMoTVRMOjpTYW1wbGVQb3NpdGlvbiogcG9zaXRpb25zLCBOUzo6
VUludGVnZXIgY291bnQpOworCisgICAgY2xhc3MgUmFzdGVyaXphdGlvblJhdGVNYXAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJhc3Rlcml6YXRpb25SYXRlTWFwKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFJhc3Rlcml6YXRpb25SYXRlTWFwKGNvbnN0IGNsYXNzIFJhc3Rlcml6YXRpb25SYXRlTWFwKiBy
YXN0ZXJpemF0aW9uUmF0ZU1hcCk7CisKKyAgICBjbGFzcyBSZW5kZXJQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogc2FtcGxlQnVmZmVyQXR0YWNobWVudHMoKSBjb25z
dDsKK307CisKK30KKworX01UTF9JTkxJTkUgTVRMOjpDbGVhckNvbG9yIE1UTDo6Q2xlYXJDb2xv
cjo6TWFrZShkb3VibGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxw
aGEpCit7CisgICAgcmV0dXJuIENsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwor
fQorCitfTVRMX0lOTElORSBNVEw6OkNsZWFyQ29sb3I6OkNsZWFyQ29sb3IoZG91YmxlIF9yZWQs
IGRvdWJsZSBfZ3JlZW4sIGRvdWJsZSBfYmx1ZSwgZG91YmxlIF9hbHBoYSkKKyAgICA6IHJlZChf
cmVkKQorICAgICwgZ3JlZW4oX2dyZWVuKQorICAgICwgYmx1ZShfYmx1ZSkKKyAgICAsIGFscGhh
KF9hbHBoYSkKK3sKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxN
VEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2Jq
ZWN0Ojppbml0PE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisv
LyBwcm9wZXJ0eTogdGV4dHVyZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OlJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6dGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh0ZXh0dXJlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3I6OnNldFRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRUZXh0dXJlXyksIHRleHR1cmUpOworfQorCisvLyBwcm9wZXJ0eTogbGV2ZWwKK19NVExfSU5M
SU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bGV2
ZWwoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsZXZlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRMZXZlbChOUzo6VUludGVn
ZXIgbGV2ZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHNldExldmVsXyksIGxldmVsKTsKK30KKworLy8gcHJvcGVydHk6IHNsaWNlCitf
TVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3I6OnNsaWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2xpY2UpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U2xpY2UoTlM6
OlVJbnRlZ2VyIHNsaWNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRTbGljZV8pLCBzbGljZSk7Cit9CisKKy8vIHByb3BlcnR5OiBk
ZXB0aFBsYW5lCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3I6OmRlcHRoUGxhbmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXB0aFBs
YW5lKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3I6OnNldERlcHRoUGxhbmUoTlM6OlVJbnRlZ2VyIGRlcHRoUGxhbmUpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRo
UGxhbmVfKSwgZGVwdGhQbGFuZSk7Cit9CisKKy8vIHByb3BlcnR5OiByZXNvbHZlVGV4dHVyZQor
X01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvcjo6cmVzb2x2ZVRleHR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmVzb2x2ZVRleHR1
cmUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcjo6c2V0UmVzb2x2ZVRleHR1cmUoY29uc3QgTVRMOjpUZXh0dXJlKiByZXNvbHZlVGV4
dHVyZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0UmVzb2x2ZVRleHR1cmVfKSwgcmVzb2x2ZVRleHR1cmUpOworfQorCisvLyBwcm9w
ZXJ0eTogcmVzb2x2ZUxldmVsCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnJlc29sdmVMZXZlbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHJlc29sdmVMZXZlbCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRSZXNvbHZlTGV2ZWwoTlM6OlVJbnRlZ2VyIHJlc29s
dmVMZXZlbCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0UmVzb2x2ZUxldmVsXyksIHJlc29sdmVMZXZlbCk7Cit9CisKKy8vIHByb3Bl
cnR5OiByZXNvbHZlU2xpY2UKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvcjo6cmVzb2x2ZVNsaWNlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwocmVzb2x2ZVNsaWNlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3I6OnNldFJlc29sdmVTbGljZShOUzo6VUludGVnZXIgcmVzb2x2
ZVNsaWNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRSZXNvbHZlU2xpY2VfKSwgcmVzb2x2ZVNsaWNlKTsKK30KKworLy8gcHJvcGVy
dHk6IHJlc29sdmVEZXB0aFBsYW5lCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnJlc29sdmVEZXB0aFBsYW5lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwocmVzb2x2ZURlcHRoUGxhbmUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0UmVzb2x2ZURlcHRoUGxhbmUo
TlM6OlVJbnRlZ2VyIHJlc29sdmVEZXB0aFBsYW5lKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRSZXNvbHZlRGVwdGhQbGFuZV8pLCBy
ZXNvbHZlRGVwdGhQbGFuZSk7Cit9CisKKy8vIHByb3BlcnR5OiBsb2FkQWN0aW9uCitfTVRMX0lO
TElORSBNVEw6OkxvYWRBY3Rpb24gTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6
OmxvYWRBY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6TG9hZEFjdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsb2FkQWN0aW9uKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNl
dExvYWRBY3Rpb24oTVRMOjpMb2FkQWN0aW9uIGxvYWRBY3Rpb24pCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExvYWRBY3Rpb25fKSwg
bG9hZEFjdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiBzdG9yZUFjdGlvbgorX01UTF9JTkxJTkUg
TVRMOjpTdG9yZUFjdGlvbiBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c3Rv
cmVBY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
U3RvcmVBY3Rpb24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RvcmVBY3Rpb24pKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0
U3RvcmVBY3Rpb24oTVRMOjpTdG9yZUFjdGlvbiBzdG9yZUFjdGlvbikKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RvcmVBY3Rpb25f
KSwgc3RvcmVBY3Rpb24pOworfQorCisvLyBwcm9wZXJ0eTogc3RvcmVBY3Rpb25PcHRpb25zCitf
TVRMX0lOTElORSBNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucyBNVEw6OlJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c3RvcmVBY3Rpb25PcHRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlN0b3JlQWN0aW9uT3B0aW9ucz4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzdG9yZUFjdGlvbk9wdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RvcmVBY3Rpb25PcHRpb25z
KE1UTDo6U3RvcmVBY3Rpb25PcHRpb25zIHN0b3JlQWN0aW9uT3B0aW9ucykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RvcmVBY3Rp
b25PcHRpb25zXyksIHN0b3JlQWN0aW9uT3B0aW9ucyk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yKiBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjphbGxvYygpCit7
CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisv
LyBwcm9wZXJ0eTogY2xlYXJDb2xvcgorX01UTF9JTkxJTkUgTVRMOjpDbGVhckNvbG9yIE1UTDo6
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyQ29sb3IoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q2xlYXJDb2xvcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChjbGVhckNvbG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJDb2xvcihNVEw6
OkNsZWFyQ29sb3IgY2xlYXJDb2xvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Q2xlYXJDb2xvcl8pLCBjbGVhckNvbG9yKTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGlu
aXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iq
IE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBjbGVhckRlcHRoCitfTVRMX0lOTElORSBk
b3VibGUgTVRMOjpSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6Y2xlYXJEZXB0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZG91YmxlPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKGNsZWFyRGVwdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRDbGVhckRlcHRoKGRv
dWJsZSBjbGVhckRlcHRoKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRDbGVhckRlcHRoXyksIGNsZWFyRGVwdGgpOworfQorCisvLyBw
cm9wZXJ0eTogZGVwdGhSZXNvbHZlRmlsdGVyCitfTVRMX0lOTElORSBNVEw6Ok11bHRpc2FtcGxl
RGVwdGhSZXNvbHZlRmlsdGVyIE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3I6OmRlcHRoUmVzb2x2ZUZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChkZXB0aFJlc29sdmVGaWx0ZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBN
VEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXREZXB0aFJlc29sdmVG
aWx0ZXIoTVRMOjpNdWx0aXNhbXBsZURlcHRoUmVzb2x2ZUZpbHRlciBkZXB0aFJlc29sdmVGaWx0
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldERlcHRoUmVzb2x2ZUZpbHRlcl8pLCBkZXB0aFJlc29sdmVGaWx0ZXIpOworfQorCisv
LyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzU3RlbmNp
bEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERl
c2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpS
ZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1U
TFJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9k
OiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3IqIE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjo6aW5pdCgp
Cit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0
dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogY2xlYXJTdGVuY2lsCitf
TVRMX0lOTElORSB1aW50MzJfdCBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3I6OmNsZWFyU3RlbmNpbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dWludDMyX3Q+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY2xlYXJTdGVuY2lsKSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNj
cmlwdG9yOjpzZXRDbGVhclN0ZW5jaWwodWludDMyX3QgY2xlYXJTdGVuY2lsKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRDbGVhclN0
ZW5jaWxfKSwgY2xlYXJTdGVuY2lsKTsKK30KKworLy8gcHJvcGVydHk6IHN0ZW5jaWxSZXNvbHZl
RmlsdGVyCitfTVRMX0lOTElORSBNVEw6Ok11bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXIg
TVRMOjpSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpzdGVuY2lsUmVzb2x2
ZUZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpN
dWx0aXNhbXBsZVN0ZW5jaWxSZXNvbHZlRmlsdGVyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0
ZW5jaWxSZXNvbHZlRmlsdGVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
YXNzU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTdGVuY2lsUmVzb2x2ZUZpbHRlcihN
VEw6Ok11bHRpc2FtcGxlU3RlbmNpbFJlc29sdmVGaWx0ZXIgc3RlbmNpbFJlc29sdmVGaWx0ZXIp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFN0ZW5jaWxSZXNvbHZlRmlsdGVyXyksIHN0ZW5jaWxSZXNvbHZlRmlsdGVyKTsKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9j
PE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklW
QVRFX0NMUyhNVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9
CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0
aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4KQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhl
ZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVj
dDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6UmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBh
dHRhY2htZW50SW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVu
dCwgYXR0YWNobWVudEluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExf
SU5MSU5FIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKiBN
VEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQYXNzU2Ft
cGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0Citf
TVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRv
ciogTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OmluaXQo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1
ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogc2FtcGxlQnVm
ZmVyCitfTVRMX0lOTElORSBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIE1UTDo6UmVuZGVyUGFz
c1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXIoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZl
cio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldFNhbXBsZUJ1ZmZlcihjb25zdCBNVEw6OkNvdW50ZXJTYW1wbGVCdWZmZXIqIHNhbXBsZUJ1
ZmZlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0U2FtcGxlQnVmZmVyXyksIHNhbXBsZUJ1ZmZlcik7Cit9CisKKy8vIHByb3BlcnR5
OiBzdGFydE9mVmVydGV4U2FtcGxlSW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6
OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZlZlcnRl
eFNhbXBsZUluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RhcnRPZlZlcnRleFNhbXBsZUlu
ZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVy
QXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0YXJ0T2ZWZXJ0ZXhTYW1wbGVJbmRleChOUzo6VUlu
dGVnZXIgc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGFydE9mVmVydGV4U2FtcGxlSW5k
ZXhfKSwgc3RhcnRPZlZlcnRleFNhbXBsZUluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IGVuZE9m
VmVydGV4U2FtcGxlSW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZWZXJ0ZXhTYW1wbGVJbmRl
eCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGVuZE9mVmVydGV4U2FtcGxlSW5kZXgpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvcjo6c2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZWZXJ0
ZXhTYW1wbGVJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0RW5kT2ZWZXJ0ZXhTYW1wbGVJbmRleF8pLCBlbmRPZlZlcnRleFNh
bXBsZUluZGV4KTsKK30KKworLy8gcHJvcGVydHk6IHN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4
CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I6OnN0YXJ0T2ZGcmFnbWVudFNhbXBsZUluZGV4KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoc3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6
c2V0U3RhcnRPZkZyYWdtZW50U2FtcGxlSW5kZXgoTlM6OlVJbnRlZ2VyIHN0YXJ0T2ZGcmFnbWVu
dFNhbXBsZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTdGFydE9mRnJhZ21lbnRTYW1wbGVJbmRleF8pLCBzdGFydE9mRnJh
Z21lbnRTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5OiBlbmRPZkZyYWdtZW50U2FtcGxl
SW5kZXgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZW5kT2ZGcmFnbWVudFNhbXBsZUluZGV4KSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldEVuZE9mRnJhZ21lbnRTYW1wbGVJbmRleChOUzo6VUludGVnZXIgZW5kT2ZGcmFnbWVudFNh
bXBsZUluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRFbmRPZkZyYWdtZW50U2FtcGxlSW5kZXhfKSwgZW5kT2ZGcmFnbWVudFNh
bXBsZUluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1U
TDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6
UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQ
YXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSkpOworfQorCisvLyBtZXRo
b2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1U
TDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KCk7Cit9
CisKKy8vIG1ldGhvZDogb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgTVRM
OjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVuZGVy
UGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUlu
dGVnZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE1UTDo6UmVuZGVyUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudElu
ZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3Jp
cHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpSZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5k
ZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYXR0YWNobWVudCwgYXR0YWNobWVu
dEluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6
UmVuZGVyUGFzc0Rlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRv
cj4oX01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQYXNzRGVzY3JpcHRvcikpOworfQorCisvLyBt
ZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3IqIE1UTDo6
UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojpp
bml0PE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6
IHJlbmRlclBhc3NEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NEZXNjcmlw
dG9yKiBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpyZW5kZXJQYXNzRGVzY3JpcHRvcigpCit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRv
cio+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IpLCBfTVRMX1BSSVZB
VEVfU0VMKHJlbmRlclBhc3NEZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjb2xvckF0
dGFjaG1lbnRzCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yQXJyYXkqIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OmNvbG9yQXR0YWNobWVudHMo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
Y29sb3JBdHRhY2htZW50cykpOworfQorCisvLyBwcm9wZXJ0eTogZGVwdGhBdHRhY2htZW50Citf
TVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6
OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpkZXB0aEF0dGFjaG1lbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRoQXR0YWNobWVudCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnNldERlcHRoQXR0
YWNobWVudChjb25zdCBNVEw6OlJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKiBk
ZXB0aEF0dGFjaG1lbnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldERlcHRoQXR0YWNobWVudF8pLCBkZXB0aEF0dGFjaG1lbnQpOwor
fQorCisvLyBwcm9wZXJ0eTogc3RlbmNpbEF0dGFjaG1lbnQKK19NVExfSU5MSU5FIE1UTDo6UmVu
ZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQYXNzRGVzY3Jp
cHRvcjo6c3RlbmNpbEF0dGFjaG1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcio+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc3RlbmNpbEF0dGFjaG1lbnQpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRTdGVuY2lsQXR0YWNobWVudChj
b25zdCBNVEw6OlJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IqIHN0ZW5jaWxB
dHRhY2htZW50KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChzZXRTdGVuY2lsQXR0YWNobWVudF8pLCBzdGVuY2lsQXR0YWNobWVudCk7Cit9
CisKKy8vIHByb3BlcnR5OiB2aXNpYmlsaXR5UmVzdWx0QnVmZmVyCitfTVRMX0lOTElORSBNVEw6
OkJ1ZmZlciogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dmlzaWJpbGl0eVJlc3VsdEJ1ZmZl
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXIq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZpc2liaWxpdHlSZXN1bHRCdWZmZXIpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRWaXNpYmlsaXR5
UmVzdWx0QnVmZmVyKGNvbnN0IE1UTDo6QnVmZmVyKiB2aXNpYmlsaXR5UmVzdWx0QnVmZmVyKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRWaXNpYmlsaXR5UmVzdWx0QnVmZmVyXyksIHZpc2liaWxpdHlSZXN1bHRCdWZmZXIpOworfQor
CisvLyBwcm9wZXJ0eTogcmVuZGVyVGFyZ2V0QXJyYXlMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpyZW5kZXJUYXJnZXRBcnJheUxlbmd0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlbmRlclRhcmdldEFycmF5TGVuZ3RoKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0UmVuZGVyVGFy
Z2V0QXJyYXlMZW5ndGgoTlM6OlVJbnRlZ2VyIHJlbmRlclRhcmdldEFycmF5TGVuZ3RoKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRS
ZW5kZXJUYXJnZXRBcnJheUxlbmd0aF8pLCByZW5kZXJUYXJnZXRBcnJheUxlbmd0aCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6aW1hZ2VibG9ja1NhbXBsZUxlbmd0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGltYWdlYmxvY2tTYW1wbGVMZW5ndGgpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRJbWFnZWJsb2NrU2Ft
cGxlTGVuZ3RoKE5TOjpVSW50ZWdlciBpbWFnZWJsb2NrU2FtcGxlTGVuZ3RoKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRJbWFnZWJs
b2NrU2FtcGxlTGVuZ3RoXyksIGltYWdlYmxvY2tTYW1wbGVMZW5ndGgpOworfQorCisvLyBwcm9w
ZXJ0eTogdGhyZWFkZ3JvdXBNZW1vcnlMZW5ndGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBN
VEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjp0aHJlYWRncm91cE1lbW9yeUxlbmd0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6c2V0VGhyZWFkZ3JvdXBNZW1vcnlM
ZW5ndGgoTlM6OlVJbnRlZ2VyIHRocmVhZGdyb3VwTWVtb3J5TGVuZ3RoKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaHJlYWRncm91
cE1lbW9yeUxlbmd0aF8pLCB0aHJlYWRncm91cE1lbW9yeUxlbmd0aCk7Cit9CisKKy8vIHByb3Bl
cnR5OiB0aWxlV2lkdGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NE
ZXNjcmlwdG9yOjp0aWxlV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0aWxlV2lkdGgpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRUaWxl
V2lkdGgoTlM6OlVJbnRlZ2VyIHRpbGVXaWR0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGlsZVdpZHRoXyksIHRpbGVXaWR0aCk7
Cit9CisKKy8vIHByb3BlcnR5OiB0aWxlSGVpZ2h0CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dGlsZUhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHRpbGVIZWlnaHQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NE
ZXNjcmlwdG9yOjpzZXRUaWxlSGVpZ2h0KE5TOjpVSW50ZWdlciB0aWxlSGVpZ2h0KQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRUaWxl
SGVpZ2h0XyksIHRpbGVIZWlnaHQpOworfQorCisvLyBwcm9wZXJ0eTogZGVmYXVsdFJhc3RlclNh
bXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3Jp
cHRvcjo6ZGVmYXVsdFJhc3RlclNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVm
YXVsdFJhc3RlclNhbXBsZUNvdW50KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJQYXNzRGVzY3JpcHRvcjo6c2V0RGVmYXVsdFJhc3RlclNhbXBsZUNvdW50KE5TOjpVSW50ZWdl
ciBkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2
b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlZmF1bHRSYXN0ZXJTYW1wbGVDb3VudF8p
LCBkZWZhdWx0UmFzdGVyU2FtcGxlQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogcmVuZGVyVGFy
Z2V0V2lkdGgKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBhc3NEZXNjcmlw
dG9yOjpyZW5kZXJUYXJnZXRXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlbmRlclRhcmdl
dFdpZHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRv
cjo6c2V0UmVuZGVyVGFyZ2V0V2lkdGgoTlM6OlVJbnRlZ2VyIHJlbmRlclRhcmdldFdpZHRoKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRSZW5kZXJUYXJnZXRXaWR0aF8pLCByZW5kZXJUYXJnZXRXaWR0aCk7Cit9CisKKy8vIHByb3Bl
cnR5OiByZW5kZXJUYXJnZXRIZWlnaHQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJl
bmRlclBhc3NEZXNjcmlwdG9yOjpyZW5kZXJUYXJnZXRIZWlnaHQoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChyZW5kZXJUYXJnZXRIZWlnaHQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJl
bmRlclBhc3NEZXNjcmlwdG9yOjpzZXRSZW5kZXJUYXJnZXRIZWlnaHQoTlM6OlVJbnRlZ2VyIHJl
bmRlclRhcmdldEhlaWdodCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc2V0UmVuZGVyVGFyZ2V0SGVpZ2h0XyksIHJlbmRlclRhcmdldEhl
aWdodCk7Cit9CisKKy8vIG1ldGhvZDogc2V0U2FtcGxlUG9zaXRpb25zOmNvdW50OgorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzZXRTYW1wbGVQb3NpdGlvbnMo
Y29uc3QgTVRMOjpTYW1wbGVQb3NpdGlvbiogcG9zaXRpb25zLCBOUzo6VUludGVnZXIgY291bnQp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFNhbXBsZVBvc2l0aW9uc19jb3VudF8pLCBwb3NpdGlvbnMsIGNvdW50KTsKK30KKworLy8g
bWV0aG9kOiBnZXRTYW1wbGVQb3NpdGlvbnM6Y291bnQ6CitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Z2V0U2FtcGxlUG9zaXRpb25zKE1UTDo6U2Ft
cGxlUG9zaXRpb24qIHBvc2l0aW9ucywgTlM6OlVJbnRlZ2VyIGNvdW50KQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChnZXRTYW1wbGVQb3NpdGlvbnNfY291bnRfKSwgcG9zaXRpb25zLCBjb3VudCk7Cit9CisKKy8v
IHByb3BlcnR5OiByYXN0ZXJpemF0aW9uUmF0ZU1hcAorX01UTF9JTkxJTkUgTVRMOjpSYXN0ZXJp
emF0aW9uUmF0ZU1hcCogTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRvcjo6cmFzdGVyaXphdGlvblJh
dGVNYXAoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6UmFz
dGVyaXphdGlvblJhdGVNYXAqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJhc3Rlcml6YXRpb25S
YXRlTWFwKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQYXNzRGVzY3JpcHRv
cjo6c2V0UmFzdGVyaXphdGlvblJhdGVNYXAoY29uc3QgTVRMOjpSYXN0ZXJpemF0aW9uUmF0ZU1h
cCogcmFzdGVyaXphdGlvblJhdGVNYXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJhc3Rlcml6YXRpb25SYXRlTWFwXyksIHJhc3Rl
cml6YXRpb25SYXRlTWFwKTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUJ1ZmZlckF0dGFjaG1l
bnRzCitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBhc3NEZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXJBdHRh
Y2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpS
ZW5kZXJQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2FtcGxlQnVmZmVyQXR0YWNobWVudHMpKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZW5kZXJQaXBlbGluZS5o
cHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVuZGVyUGlwZWxp
bmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFkMWRiNmY2YjM3ZTAyZmUzYjZhNmYwNmRiOTMwYTZmMjNjYWUx
YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMUmVuZGVyUGlwZWxpbmUuaHBwCkBAIC0wLDAgKzEsMTIxMiBAQAorLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMUmVuZGVy
UGlwZWxpbmUuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLwor
Ly8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVyQnJp
ZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExQaXhlbEZvcm1hdC5ocHAiCisjaW5j
bHVkZSAiTVRMUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFJlbmRlclBp
cGVsaW5lLmhwcCIKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sK
K19NVExfRU5VTShOUzo6VUludGVnZXIsIEJsZW5kRmFjdG9yKSB7CisgICAgQmxlbmRGYWN0b3Ja
ZXJvID0gMCwKKyAgICBCbGVuZEZhY3Rvck9uZSA9IDEsCisgICAgQmxlbmRGYWN0b3JTb3VyY2VD
b2xvciA9IDIsCisgICAgQmxlbmRGYWN0b3JPbmVNaW51c1NvdXJjZUNvbG9yID0gMywKKyAgICBC
bGVuZEZhY3RvclNvdXJjZUFscGhhID0gNCwKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzU291cmNl
QWxwaGEgPSA1LAorICAgIEJsZW5kRmFjdG9yRGVzdGluYXRpb25Db2xvciA9IDYsCisgICAgQmxl
bmRGYWN0b3JPbmVNaW51c0Rlc3RpbmF0aW9uQ29sb3IgPSA3LAorICAgIEJsZW5kRmFjdG9yRGVz
dGluYXRpb25BbHBoYSA9IDgsCisgICAgQmxlbmRGYWN0b3JPbmVNaW51c0Rlc3RpbmF0aW9uQWxw
aGEgPSA5LAorICAgIEJsZW5kRmFjdG9yU291cmNlQWxwaGFTYXR1cmF0ZWQgPSAxMCwKKyAgICBC
bGVuZEZhY3RvckJsZW5kQ29sb3IgPSAxMSwKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzQmxlbmRD
b2xvciA9IDEyLAorICAgIEJsZW5kRmFjdG9yQmxlbmRBbHBoYSA9IDEzLAorICAgIEJsZW5kRmFj
dG9yT25lTWludXNCbGVuZEFscGhhID0gMTQsCisgICAgQmxlbmRGYWN0b3JTb3VyY2UxQ29sb3Ig
PSAxNSwKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzU291cmNlMUNvbG9yID0gMTYsCisgICAgQmxl
bmRGYWN0b3JTb3VyY2UxQWxwaGEgPSAxNywKKyAgICBCbGVuZEZhY3Rvck9uZU1pbnVzU291cmNl
MUFscGhhID0gMTgsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBCbGVuZE9wZXJhdGlv
bikgeworICAgIEJsZW5kT3BlcmF0aW9uQWRkID0gMCwKKyAgICBCbGVuZE9wZXJhdGlvblN1YnRy
YWN0ID0gMSwKKyAgICBCbGVuZE9wZXJhdGlvblJldmVyc2VTdWJ0cmFjdCA9IDIsCisgICAgQmxl
bmRPcGVyYXRpb25NaW4gPSAzLAorICAgIEJsZW5kT3BlcmF0aW9uTWF4ID0gNCwKK307CisKK19N
VExfT1BUSU9OUyhOUzo6VUludGVnZXIsIENvbG9yV3JpdGVNYXNrKSB7CisgICAgQ29sb3JXcml0
ZU1hc2tOb25lID0gMCwKKyAgICBDb2xvcldyaXRlTWFza0FscGhhID0gMSwKKyAgICBDb2xvcldy
aXRlTWFza0JsdWUgPSAyLAorICAgIENvbG9yV3JpdGVNYXNrR3JlZW4gPSA0LAorICAgIENvbG9y
V3JpdGVNYXNrUmVkID0gOCwKKyAgICBDb2xvcldyaXRlTWFza0FsbCA9IDE1LAorfTsKKworX01U
TF9FTlVNKE5TOjpVSW50ZWdlciwgUHJpbWl0aXZlVG9wb2xvZ3lDbGFzcykgeworICAgIFByaW1p
dGl2ZVRvcG9sb2d5Q2xhc3NVbnNwZWNpZmllZCA9IDAsCisgICAgUHJpbWl0aXZlVG9wb2xvZ3lD
bGFzc1BvaW50ID0gMSwKKyAgICBQcmltaXRpdmVUb3BvbG9neUNsYXNzTGluZSA9IDIsCisgICAg
UHJpbWl0aXZlVG9wb2xvZ3lDbGFzc1RyaWFuZ2xlID0gMywKK307CisKK19NVExfRU5VTShOUzo6
VUludGVnZXIsIFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUpIHsKKyAgICBUZXNzZWxsYXRpb25Q
YXJ0aXRpb25Nb2RlUG93MiA9IDAsCisgICAgVGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZUludGVn
ZXIgPSAxLAorICAgIFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGVGcmFjdGlvbmFsT2RkID0gMiwK
KyAgICBUZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlRnJhY3Rpb25hbEV2ZW4gPSAzLAorfTsKKwor
X01UTF9FTlVNKE5TOjpVSW50ZWdlciwgVGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKSB7
CisgICAgVGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uQ29uc3RhbnQgPSAwLAorICAgIFRl
c3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvblBlclBhdGNoID0gMSwKKyAgICBUZXNzZWxsYXRp
b25GYWN0b3JTdGVwRnVuY3Rpb25QZXJJbnN0YW5jZSA9IDIsCisgICAgVGVzc2VsbGF0aW9uRmFj
dG9yU3RlcEZ1bmN0aW9uUGVyUGF0Y2hBbmRQZXJJbnN0YW5jZSA9IDMsCit9OworCitfTVRMX0VO
VU0oTlM6OlVJbnRlZ2VyLCBUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQpIHsKKyAgICBUZXNzZWxs
YXRpb25GYWN0b3JGb3JtYXRIYWxmID0gMCwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIs
IFRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSkgeworICAgIFRlc3NlbGxhdGlvbkNv
bnRyb2xQb2ludEluZGV4VHlwZU5vbmUgPSAwLAorICAgIFRlc3NlbGxhdGlvbkNvbnRyb2xQb2lu
dEluZGV4VHlwZVVJbnQxNiA9IDEsCisgICAgVGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5kZXhU
eXBlVUludDMyID0gMiwKK307CisKK2NsYXNzIFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAg
IE1UTDo6UGl4ZWxGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBp
eGVsRm9ybWF0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBibGVuZGluZ0VuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCbGVuZGluZ0VuYWJs
ZWQoYm9vbCBibGVuZGluZ0VuYWJsZWQpOworCisgICAgTVRMOjpCbGVuZEZhY3RvciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUkdCQmxlbmRGYWN0b3IoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTb3VyY2VSR0JCbGVuZEZhY3RvcihNVEw6OkJsZW5kRmFjdG9yIHNvdXJjZVJHQkJs
ZW5kRmFjdG9yKTsKKworICAgIE1UTDo6QmxlbmRGYWN0b3IgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0b3IoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRE
ZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKE1UTDo6QmxlbmRGYWN0b3IgZGVzdGluYXRpb25SR0JC
bGVuZEZhY3Rvcik7CisKKyAgICBNVEw6OkJsZW5kT3BlcmF0aW9uICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZ2JCbGVuZE9wZXJhdGlvbigpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJnYkJsZW5k
T3BlcmF0aW9uKE1UTDo6QmxlbmRPcGVyYXRpb24gcmdiQmxlbmRPcGVyYXRpb24pOworCisgICAg
TVRMOjpCbGVuZEZhY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291
cmNlQWxwaGFCbGVuZEZhY3RvcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNvdXJjZUFscGhhQmxlbmRGYWN0b3Io
TVRMOjpCbGVuZEZhY3RvciBzb3VyY2VBbHBoYUJsZW5kRmFjdG9yKTsKKworICAgIE1UTDo6Qmxl
bmRGYWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9u
QWxwaGFCbGVuZEZhY3RvcigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3Rv
cihNVEw6OkJsZW5kRmFjdG9yIGRlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3Rvcik7CisKKyAgICBN
VEw6OkJsZW5kT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBo
YUJsZW5kT3BlcmF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWxwaGFCbGVuZE9wZXJhdGlvbihNVEw6OkJs
ZW5kT3BlcmF0aW9uIGFscGhhQmxlbmRPcGVyYXRpb24pOworCisgICAgTVRMOjpDb2xvcldyaXRl
TWFzayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVNYXNrKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0V3JpdGVNYXNrKE1UTDo6Q29sb3JXcml0ZU1hc2sgd3JpdGVNYXNrKTsKK307CisKK2Ns
YXNzIFJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8UmVu
ZGVyUGlwZWxpbmVSZWZsZWN0aW9uPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb24qIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGlu
ZVJlZmxlY3Rpb24qICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ZXJ0ZXhBcmd1bWVudHMoKSBjb25zdDsKKworICAgIE5TOjpBcnJh
eSogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50QXJndW1lbnRzKCkgY29uc3Q7
CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlQXJndW1l
bnRzKCkgY29uc3Q7Cit9OworCitjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBwdWJs
aWMgTlM6OkNvcHlpbmc8UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAg
IHN0YXRpYyBjbGFzcyBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqICAgICAgICAgICAgICBhbGxv
YygpOworCisgICAgY2xhc3MgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiAgICAgICAgICAgICAg
ICAgICAgIGluaXQoKTsKKworICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5n
KiBsYWJlbCk7CisKKyAgICBjbGFzcyBGdW5jdGlvbiogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmVydGV4RnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4RnVuY3Rpb24oY29u
c3QgY2xhc3MgRnVuY3Rpb24qIHZlcnRleEZ1bmN0aW9uKTsKKworICAgIGNsYXNzIEZ1bmN0aW9u
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudEZ1bmN0aW9uKCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEZyYWdtZW50RnVuY3Rpb24oY29uc3QgY2xhc3MgRnVuY3Rpb24qIGZyYWdtZW50
RnVuY3Rpb24pOworCisgICAgY2xhc3MgVmVydGV4RGVzY3JpcHRvciogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZlcnRleERlc2NyaXB0b3IoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmVydGV4RGVzY3JpcHRv
cihjb25zdCBjbGFzcyBWZXJ0ZXhEZXNjcmlwdG9yKiB2ZXJ0ZXhEZXNjcmlwdG9yKTsKKworICAg
IE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1w
bGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRTYW1wbGVDb3VudChOUzo6VUludGVnZXIgc2FtcGxlQ291bnQp
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJhc3RlclNhbXBsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJhc3RlclNhbXBsZUNvdW50KE5TOjpV
SW50ZWdlciByYXN0ZXJTYW1wbGVDb3VudCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFUb0NvdmVyYWdlRW5hYmxlZCgpIGNv
bnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRBbHBoYVRvQ292ZXJhZ2VFbmFibGVkKGJvb2wgYWxwaGFUb0NvdmVyYWdlRW5hYmxl
ZCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWxwaGFUb09uZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWxwaGFUb09uZUVuYWJsZWQoYm9v
bCBhbHBoYVRvT25lRW5hYmxlZCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVyaXphdGlvbkVuYWJsZWQoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
UmFzdGVyaXphdGlvbkVuYWJsZWQoYm9vbCByYXN0ZXJpemF0aW9uRW5hYmxlZCk7CisKKyAgICBO
Uzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmVy
dGV4QW1wbGlmaWNhdGlvbkNvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1heFZlcnRleEFtcGxpZmljYXRpb25D
b3VudChOUzo6VUludGVnZXIgbWF4VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50KTsKKworICAgIGNs
YXNzIFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBjb2xvckF0
dGFjaG1lbnRzKCkgY29uc3Q7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdDsK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBkZXB0aEF0dGFj
aG1lbnRQaXhlbEZvcm1hdCk7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRTdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgc3RlbmNp
bEF0dGFjaG1lbnRQaXhlbEZvcm1hdCk7CisKKyAgICBNVEw6OlByaW1pdGl2ZVRvcG9sb2d5Q2xh
c3MgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRQcmltaXRpdmVUb3BvbG9neSgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRJbnB1dFByaW1pdGl2ZVRvcG9sb2d5KE1UTDo6UHJpbWl0aXZlVG9wb2xvZ3lDbGFzcyBp
bnB1dFByaW1pdGl2ZVRvcG9sb2d5KTsKKworICAgIE1UTDo6VGVzc2VsbGF0aW9uUGFydGl0aW9u
TW9kZSAgICAgICAgICAgICAgICAgICAgICB0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlKCkgY29u
c3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUoTVRMOjpUZXNzZWxsYXRpb25QYXJ0aXRp
b25Nb2RlIHRlc3NlbGxhdGlvblBhcnRpdGlvbk1vZGUpOworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFRlc3NlbGxhdGlvbkZhY3Rv
cigpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRNYXhUZXNzZWxsYXRpb25GYWN0b3IoTlM6OlVJbnRlZ2VyIG1heFRlc3Nl
bGxhdGlvbkZhY3Rvcik7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFRlc3NlbGxhdGlvbkZhY3RvclNjYWxlRW5hYmxlZChib29sIHRlc3NlbGxhdGlvbkZhY3Rv
clNjYWxlRW5hYmxlZCk7CisKKyAgICBNVEw6OlRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCAgICAg
ICAgICAgICAgICAgICAgICAgdGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRl
c3NlbGxhdGlvbkZhY3RvckZvcm1hdChNVEw6OlRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCB0ZXNz
ZWxsYXRpb25GYWN0b3JGb3JtYXQpOworCisgICAgTVRMOjpUZXNzZWxsYXRpb25Db250cm9sUG9p
bnRJbmRleFR5cGUgICAgICAgICAgICAgIHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlw
ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRUZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUoTVRMOjpUZXNz
ZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUgdGVzc2VsbGF0aW9uQ29udHJvbFBvaW50SW5k
ZXhUeXBlKTsKKworICAgIE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uICAgICAg
ICAgICAgICAgICB0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24oKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGVz
c2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uKE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1
bmN0aW9uIHRlc3NlbGxhdGlvbkZhY3RvclN0ZXBGdW5jdGlvbik7CisKKyAgICBNVEw6OldpbmRp
bmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzc2VsbGF0aW9uT3V0
cHV0V2luZGluZ09yZGVyKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRl
cihNVEw6OldpbmRpbmcgdGVzc2VsbGF0aW9uT3V0cHV0V2luZGluZ09yZGVyKTsKKworICAgIGNs
YXNzIFBpcGVsaW5lQnVmZmVyRGVzY3JpcHRvckFycmF5KiAgICAgICAgICAgICAgICB2ZXJ0ZXhC
dWZmZXJzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJh
eSogICAgICAgICAgICAgICAgZnJhZ21lbnRCdWZmZXJzKCkgY29uc3Q7CisKKyAgICBib29sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydEluZGly
ZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VwcG9ydEluZGlyZWN0Q29tbWFuZEJ1ZmZl
cnMoYm9vbCBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycyk7CisKKyAgICBOUzo6QXJyYXkq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5QXJjaGl2ZXMo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0QmluYXJ5QXJjaGl2ZXMoY29uc3QgTlM6OkFycmF5KiBiaW5hcnlBcmNoaXZl
cyk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmVydGV4UHJlbG9hZGVkTGlicmFyaWVzKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleFByZWxvYWRl
ZExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIHZlcnRleFByZWxvYWRlZExpYnJhcmllcyk7CisK
KyAgICBOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhZ21lbnRQcmVsb2FkZWRMaWJyYXJpZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnJhZ21lbnRQcmVsb2FkZWRM
aWJyYXJpZXMoY29uc3QgTlM6OkFycmF5KiBmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcyk7CisK
KyAgICBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmVydGV4TGlua2VkRnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZlcnRleExpbmtlZEZ1bmN0aW9ucyhj
b25zdCBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqIHZlcnRleExpbmtlZEZ1bmN0aW9ucyk7CisKKyAg
ICBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJh
Z21lbnRMaW5rZWRGdW5jdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMo
Y29uc3QgY2xhc3MgTGlua2VkRnVuY3Rpb25zKiBmcmFnbWVudExpbmtlZEZ1bmN0aW9ucyk7CisK
KyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdXBwb3J0QWRk
aW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zKGJvb2wgc3VwcG9ydEFkZGluZ1ZlcnRleEJpbmFyeUZ1
bmN0aW9ucyk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VwcG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRp
bmdGcmFnbWVudEJpbmFyeUZ1bmN0aW9ucyk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0TWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1heFZlcnRleENh
bGxTdGFja0RlcHRoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXhGcmFnbWVudENhbGxTdGFja0RlcHRoKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1h
eEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgoTlM6OlVJbnRlZ2VyIG1heEZyYWdtZW50Q2FsbFN0YWNr
RGVwdGgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc2V0KCk7Cit9OworCitjbGFzcyBSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rl
c2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNj
cmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBSZW5kZXJQaXBlbGluZUZ1bmN0
aW9uc0Rlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUZ1bmN0
aW9uc0Rlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6QXJyYXkqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rp
b25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0VmVydGV4QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJy
YXkqIHZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpOworCisgICAgTlM6OkFycmF5KiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRBZGRpdGlvbmFsQmlu
YXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0RnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNv
bnN0IE5TOjpBcnJheSogZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKTsKKworICAg
IE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVBZGRp
dGlvbmFsQmluYXJ5RnVuY3Rpb25zKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlsZUFkZGl0aW9uYWxCaW5hcnlGdW5jdGlv
bnMoY29uc3QgTlM6OkFycmF5KiB0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyk7Cit9Owor
CitjbGFzcyBSZW5kZXJQaXBlbGluZVN0YXRlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxSZW5k
ZXJQaXBlbGluZVN0YXRlPgoreworcHVibGljOgorICAgIE5TOjpTdHJpbmcqICAgICAgICAgICAg
ICAgICAgICAgIGxhYmVsKCkgY29uc3Q7CisKKyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgICAg
ICAgICAgICBkZXZpY2UoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgICAgIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKCkgY29uc3Q7CisKKyAgICBib29s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNp
emUoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgIGltYWdl
YmxvY2tTYW1wbGVMZW5ndGgoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAg
ICAgICAgICAgIGltYWdlYmxvY2tNZW1vcnlMZW5ndGgoTVRMOjpTaXplIGltYWdlYmxvY2tEaW1l
bnNpb25zKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRJ
bmRpcmVjdENvbW1hbmRCdWZmZXJzKCkgY29uc3Q7CisKKyAgICBjbGFzcyBGdW5jdGlvbkhhbmRs
ZSogICAgICAgICAgICBmdW5jdGlvbkhhbmRsZShjb25zdCBjbGFzcyBGdW5jdGlvbiogZnVuY3Rp
b24sIE1UTDo6UmVuZGVyU3RhZ2VzIHN0YWdlKTsKKworICAgIGNsYXNzIFZpc2libGVGdW5jdGlv
blRhYmxlKiAgICAgIG5ld1Zpc2libGVGdW5jdGlvblRhYmxlKGNvbnN0IGNsYXNzIFZpc2libGVG
dW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVzY3JpcHRvciwgTVRMOjpSZW5kZXJTdGFnZXMgc3Rh
Z2UpOworCisgICAgY2xhc3MgSW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZSogbmV3SW50ZXJzZWN0
aW9uRnVuY3Rpb25UYWJsZShjb25zdCBjbGFzcyBJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVz
Y3JpcHRvciogZGVzY3JpcHRvciwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2UpOworCisgICAgY2xh
c3MgUmVuZGVyUGlwZWxpbmVTdGF0ZSogICAgICAgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25z
dCBjbGFzcyBSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3IqIGFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnMsIE5TOjpFcnJvcioqIGVycm9yKTsKK307CisKK2NsYXNzIFJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheT4KK3sKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY2xhc3MgUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yQXJyYXkqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIFJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpV
SW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3Mg
UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6
VUludGVnZXIgYXR0YWNobWVudEluZGV4KTsKK307CisKK2NsYXNzIFRpbGVSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VGlsZVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogYWxs
b2MoKTsKKworICAgIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCk7Cit9OworCitjbGFz
cyBUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgOiBwdWJs
aWMgTlM6OlJlZmVyZW5jaW5nPFRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVGlsZVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3Mg
VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiAgICAgICAg
aW5pdCgpOworCisgICAgY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgp
OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0IGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2ht
ZW50SW5kZXgpOworfTsKKworY2xhc3MgVGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IHB1
YmxpYyBOUzo6Q29weWluZzxUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPgoreworcHVibGlj
OgorICAgIHN0YXRpYyBjbGFzcyBUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiAgICAgICAg
ICAgICAgYWxsb2MoKTsKKworICAgIGNsYXNzIFRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iq
ICAgICAgICAgICAgICAgICAgICAgaW5pdCgpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0OworICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
TGFiZWwoY29uc3QgTlM6OlN0cmluZyogbGFiZWwpOworCisgICAgY2xhc3MgRnVuY3Rpb24qICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlRnVuY3Rpb24oKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFRpbGVGdW5jdGlvbihjb25zdCBjbGFzcyBGdW5jdGlvbiogdGlsZUZ1bmN0aW9u
KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmFzdGVyU2FtcGxlQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJhc3RlclNhbXBsZUNv
dW50KE5TOjpVSW50ZWdlciByYXN0ZXJTYW1wbGVDb3VudCk7CisKKyAgICBjbGFzcyBUaWxlUmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIGNvbG9yQXR0YWNobWVu
dHMoKSBjb25zdDsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRUaHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUoYm9vbCB0aHJlYWRncm91cFNp
emVNYXRjaGVzVGlsZVNpemUpOworCisgICAgY2xhc3MgUGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9y
QXJyYXkqICAgICAgICAgICAgICAgICAgICB0aWxlQnVmZmVycygpIGNvbnN0OworCisgICAgTlM6
OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhU
b3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4VG90YWxUaHJlYWRz
UGVyVGhyZWFkZ3JvdXAoTlM6OlVJbnRlZ2VyIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3Vw
KTsKKworICAgIE5TOjpBcnJheSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYmluYXJ5QXJjaGl2ZXMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJpbmFyeUFyY2hpdmVzKGNv
bnN0IE5TOjpBcnJheSogYmluYXJ5QXJjaGl2ZXMpOworCisgICAgTlM6OkFycmF5KiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVsb2FkZWRMaWJyYXJpZXMo
KSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFByZWxvYWRlZExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIHByZWxv
YWRlZExpYnJhcmllcyk7CisKKyAgICBjbGFzcyBMaW5rZWRGdW5jdGlvbnMqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmtlZEZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGlu
a2VkRnVuY3Rpb25zKGNvbnN0IGNsYXNzIExpbmtlZEZ1bmN0aW9ucyogbGlua2VkRnVuY3Rpb25z
KTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VwcG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucygpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3Vw
cG9ydEFkZGluZ0JpbmFyeUZ1bmN0aW9ucyhib29sIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlv
bnMpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXhDYWxsU3RhY2tEZXB0aCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF4Q2FsbFN0YWNr
RGVwdGgoTlM6OlVJbnRlZ2VyIG1heENhbGxTdGFja0RlcHRoKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTsKK307
CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0
OjphbGxvYzxNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4oX01U
TF9QUklWQVRFX0NMUyhNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Ip
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciogTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1U
TDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPigpOworfQorCisvLyBw
cm9wZXJ0eTogcGl4ZWxGb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6UGl4ZWxGb3JtYXQgTVRMOjpS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnBpeGVsRm9ybWF0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBpeGVsRm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFBpeGVs
Rm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFBpeGVsRm9ybWF0XyksIHBp
eGVsRm9ybWF0KTsKK30KKworLy8gcHJvcGVydHk6IGJsZW5kaW5nRW5hYmxlZAorX01UTF9JTkxJ
TkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Ymxl
bmRpbmdFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxi
b29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzQmxlbmRpbmdFbmFibGVkKSk7Cit9CisKK19N
VExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3I6OnNldEJsZW5kaW5nRW5hYmxlZChib29sIGJsZW5kaW5nRW5hYmxlZCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QmxlbmRpbmdF
bmFibGVkXyksIGJsZW5kaW5nRW5hYmxlZCk7Cit9CisKKy8vIHByb3BlcnR5OiBzb3VyY2VSR0JC
bGVuZEZhY3RvcgorX01UTF9JTkxJTkUgTVRMOjpCbGVuZEZhY3RvciBNVEw6OlJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c291cmNlUkdCQmxlbmRGYWN0b3IoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxlbmRGYWN0b3I+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc291cmNlUkdCQmxlbmRGYWN0b3IpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6
c2V0U291cmNlUkdCQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBzb3VyY2VSR0JCbGVuZEZh
Y3RvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0U291cmNlUkdCQmxlbmRGYWN0b3JfKSwgc291cmNlUkdCQmxlbmRGYWN0b3IpOwor
fQorCisvLyBwcm9wZXJ0eTogZGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcgorX01UTF9JTkxJTkUg
TVRMOjpCbGVuZEZhY3RvciBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6ZGVzdGluYXRpb25SR0JCbGVuZEZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGVuZEZhY3Rvcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldERlc3RpbmF0aW9u
UkdCQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBkZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9y
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXREZXN0aW5hdGlvblJHQkJsZW5kRmFjdG9yXyksIGRlc3RpbmF0aW9uUkdCQmxlbmRGYWN0
b3IpOworfQorCisvLyBwcm9wZXJ0eTogcmdiQmxlbmRPcGVyYXRpb24KK19NVExfSU5MSU5FIE1U
TDo6QmxlbmRPcGVyYXRpb24gTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I6OnJnYkJsZW5kT3BlcmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OkJsZW5kT3BlcmF0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJn
YkJsZW5kT3BlcmF0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFJnYkJsZW5kT3BlcmF0aW9uKE1UTDo6
QmxlbmRPcGVyYXRpb24gcmdiQmxlbmRPcGVyYXRpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJnYkJsZW5kT3BlcmF0aW9uXyks
IHJnYkJsZW5kT3BlcmF0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHNvdXJjZUFscGhhQmxlbmRG
YWN0b3IKK19NVExfSU5MSU5FIE1UTDo6QmxlbmRGYWN0b3IgTVRMOjpSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNvdXJjZUFscGhhQmxlbmRGYWN0b3IoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QmxlbmRGYWN0b3I+KHRoaXMs
IF9NVExfUFJJVkFURV9TRUwoc291cmNlQWxwaGFCbGVuZEZhY3RvcikpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpz
ZXRTb3VyY2VBbHBoYUJsZW5kRmFjdG9yKE1UTDo6QmxlbmRGYWN0b3Igc291cmNlQWxwaGFCbGVu
ZEZhY3RvcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0U291cmNlQWxwaGFCbGVuZEZhY3Rvcl8pLCBzb3VyY2VBbHBoYUJsZW5kRmFj
dG9yKTsKK30KKworLy8gcHJvcGVydHk6IGRlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvcgorX01U
TF9JTkxJTkUgTVRMOjpCbGVuZEZhY3RvciBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6ZGVzdGluYXRpb25BbHBoYUJsZW5kRmFjdG9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkJsZW5kRmFjdG9yPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGRlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3RvcikpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpz
ZXREZXN0aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IoTVRMOjpCbGVuZEZhY3RvciBkZXN0aW5hdGlv
bkFscGhhQmxlbmRGYWN0b3IpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldERlc3RpbmF0aW9uQWxwaGFCbGVuZEZhY3Rvcl8pLCBkZXN0
aW5hdGlvbkFscGhhQmxlbmRGYWN0b3IpOworfQorCisvLyBwcm9wZXJ0eTogYWxwaGFCbGVuZE9w
ZXJhdGlvbgorX01UTF9JTkxJTkUgTVRMOjpCbGVuZE9wZXJhdGlvbiBNVEw6OlJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxwaGFCbGVuZE9wZXJhdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCbGVuZE9wZXJhdGlvbj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChhbHBoYUJsZW5kT3BlcmF0aW9uKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldEFscGhhQmxlbmRPcGVyYXRpb24oTVRMOjpCbGVuZE9wZXJhdGlvbiBhbHBoYUJsZW5kT3Bl
cmF0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRBbHBoYUJsZW5kT3BlcmF0aW9uXyksIGFscGhhQmxlbmRPcGVyYXRpb24pOwor
fQorCisvLyBwcm9wZXJ0eTogd3JpdGVNYXNrCitfTVRMX0lOTElORSBNVEw6OkNvbG9yV3JpdGVN
YXNrIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjp3cml0ZU1h
c2soKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6Q29sb3JX
cml0ZU1hc2s+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod3JpdGVNYXNrKSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
OnNldFdyaXRlTWFzayhNVEw6OkNvbG9yV3JpdGVNYXNrIHdyaXRlTWFzaykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0V3JpdGVNYXNr
XyksIHdyaXRlTWFzayk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElO
RSBNVEw6OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbiogTVRMOjpSZW5kZXJQaXBlbGluZVJlZmxl
Y3Rpb246OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb24+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGlwZWxpbmVS
ZWZsZWN0aW9uKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb24qIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uOjppbml0
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBpcGVsaW5lUmVm
bGVjdGlvbj4oKTsKK30KKworLy8gcHJvcGVydHk6IHZlcnRleEFyZ3VtZW50cworX01UTF9JTkxJ
TkUgTlM6OkFycmF5KiBNVEw6OlJlbmRlclBpcGVsaW5lUmVmbGVjdGlvbjo6dmVydGV4QXJndW1l
bnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleEFyZ3VtZW50cykpOworfQorCisvLyBwcm9w
ZXJ0eTogZnJhZ21lbnRBcmd1bWVudHMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5k
ZXJQaXBlbGluZVJlZmxlY3Rpb246OmZyYWdtZW50QXJndW1lbnRzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKGZyYWdtZW50QXJndW1lbnRzKSk7Cit9CisKKy8vIHByb3BlcnR5OiB0aWxlQXJndW1lbnRz
CitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVSZWZsZWN0aW9uOjp0
aWxlQXJndW1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRpbGVBcmd1bWVudHMpKTsKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4o
X01UTF9QUklWQVRFX0NMUyhNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpKTsKK30KKworLy8g
bWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciog
TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6
T2JqZWN0Ojppbml0PE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPigpOworfQorCisvLyBw
cm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1UTDo6UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TGFiZWwo
Y29uc3QgTlM6OlN0cmluZyogbGFiZWwpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExhYmVsXyksIGxhYmVsKTsKK30KKworLy8gcHJv
cGVydHk6IHZlcnRleEZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OkZ1bmN0aW9uKiBNVEw6OlJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dmVydGV4RnVuY3Rpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6RnVuY3Rpb24qPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHZlcnRleEZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFZlcnRleEZ1bmN0aW9uKGNvbnN0IE1UTDo6RnVuY3Rp
b24qIHZlcnRleEZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhGdW5jdGlvbl8pLCB2ZXJ0ZXhGdW5jdGlvbik7
Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudEZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OkZ1
bmN0aW9uKiBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZnJhZ21lbnRGdW5jdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbio+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnJhZ21lbnRGdW5jdGlvbikpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRGcmFnbWVudEZ1bmN0
aW9uKGNvbnN0IE1UTDo6RnVuY3Rpb24qIGZyYWdtZW50RnVuY3Rpb24pCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZyYWdtZW50RnVu
Y3Rpb25fKSwgZnJhZ21lbnRGdW5jdGlvbik7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhEZXNj
cmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlZlcnRleERlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjp2ZXJ0ZXhEZXNjcmlwdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZlcnRleERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKHZlcnRleERlc2NyaXB0b3IpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VmVydGV4RGVzY3JpcHRvcihjb25zdCBNVEw6
OlZlcnRleERlc2NyaXB0b3IqIHZlcnRleERlc2NyaXB0b3IpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFZlcnRleERlc2NyaXB0b3Jf
KSwgdmVydGV4RGVzY3JpcHRvcik7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVDb3VudAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzYW1w
bGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUNvdW50KSk7Cit9CisKK19NVExf
SU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50
KE5TOjpVSW50ZWdlciBzYW1wbGVDb3VudCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZv
aWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U2FtcGxlQ291bnRfKSwgc2FtcGxlQ291bnQp
OworfQorCisvLyBwcm9wZXJ0eTogcmFzdGVyU2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmFzdGVyU2FtcGxlQ291bnQo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChyYXN0ZXJTYW1wbGVDb3VudCkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRSYXN0ZXJTYW1wbGVD
b3VudChOUzo6VUludGVnZXIgcmFzdGVyU2FtcGxlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJhc3RlclNhbXBsZUNvdW50
XyksIHJhc3RlclNhbXBsZUNvdW50KTsKK30KKworLy8gcHJvcGVydHk6IGFscGhhVG9Db3ZlcmFn
ZUVuYWJsZWQKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OmFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNBbHBoYVRvQ292ZXJhZ2VF
bmFibGVkKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6OnNldEFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoYm9vbCBhbHBoYVRvQ292ZXJhZ2VFbmFi
bGVkKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRBbHBoYVRvQ292ZXJhZ2VFbmFibGVkXyksIGFscGhhVG9Db3ZlcmFnZUVuYWJsZWQp
OworfQorCisvLyBwcm9wZXJ0eTogYWxwaGFUb09uZUVuYWJsZWQKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmFscGhhVG9PbmVFbmFibGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKGlzQWxwaGFUb09uZUVuYWJsZWQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0QWxwaGFUb09uZUVuYWJsZWQoYm9vbCBhbHBo
YVRvT25lRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0QWxwaGFUb09uZUVuYWJsZWRfKSwgYWxwaGFUb09uZUVuYWJsZWQp
OworfQorCisvLyBwcm9wZXJ0eTogcmFzdGVyaXphdGlvbkVuYWJsZWQKK19NVExfSU5MSU5FIGJv
b2wgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnJhc3Rlcml6YXRpb25FbmFibGVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGlzUmFzdGVyaXphdGlvbkVuYWJsZWQpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0UmFzdGVyaXphdGlvbkVuYWJs
ZWQoYm9vbCByYXN0ZXJpemF0aW9uRW5hYmxlZCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmFzdGVyaXphdGlvbkVuYWJsZWRfKSwg
cmFzdGVyaXphdGlvbkVuYWJsZWQpOworfQorCisvLyBwcm9wZXJ0eTogbWF4VmVydGV4QW1wbGlm
aWNhdGlvbkNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6Om1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKG1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudCkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRNYXhWZXJ0ZXhBbXBsaWZpY2F0
aW9uQ291bnQoTlM6OlVJbnRlZ2VyIG1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4
VmVydGV4QW1wbGlmaWNhdGlvbkNvdW50XyksIG1heFZlcnRleEFtcGxpZmljYXRpb25Db3VudCk7
Cit9CisKKy8vIHByb3BlcnR5OiBjb2xvckF0dGFjaG1lbnRzCitfTVRMX0lOTElORSBNVEw6OlJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoY29sb3JBdHRhY2htZW50cykp
OworfQorCisvLyBwcm9wZXJ0eTogZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQKK19NVExfSU5M
SU5FIE1UTDo6UGl4ZWxGb3JtYXQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmRlcHRo
QXR0YWNobWVudFBpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRlcHRoQXR0
YWNobWVudFBpeGVsRm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KE1UTDo6UGl4
ZWxGb3JtYXQgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldERlcHRoQXR0YWNobWVudFBp
eGVsRm9ybWF0XyksIGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KTsKK30KKworLy8gcHJvcGVy
dHk6IHN0ZW5jaWxBdHRhY2htZW50UGl4ZWxGb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6UGl4ZWxG
b3JtYXQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnN0ZW5jaWxBdHRhY2htZW50UGl4
ZWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6
UGl4ZWxGb3JtYXQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlbmNpbEF0dGFjaG1lbnRQaXhl
bEZvcm1hdCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpzZXRTdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQg
c3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZvcm1hdCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0U3RlbmNpbEF0dGFjaG1lbnRQaXhlbEZv
cm1hdF8pLCBzdGVuY2lsQXR0YWNobWVudFBpeGVsRm9ybWF0KTsKK30KKworLy8gcHJvcGVydHk6
IGlucHV0UHJpbWl0aXZlVG9wb2xvZ3kKK19NVExfSU5MSU5FIE1UTDo6UHJpbWl0aXZlVG9wb2xv
Z3lDbGFzcyBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6aW5wdXRQcmltaXRpdmVUb3Bv
bG9neSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQcmlt
aXRpdmVUb3BvbG9neUNsYXNzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlucHV0UHJpbWl0aXZl
VG9wb2xvZ3kpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6c2V0SW5wdXRQcmltaXRpdmVUb3BvbG9neShNVEw6OlByaW1pdGl2ZVRvcG9sb2d5
Q2xhc3MgaW5wdXRQcmltaXRpdmVUb3BvbG9neSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5wdXRQcmltaXRpdmVUb3BvbG9neV8p
LCBpbnB1dFByaW1pdGl2ZVRvcG9sb2d5KTsKK30KKworLy8gcHJvcGVydHk6IHRlc3NlbGxhdGlv
blBhcnRpdGlvbk1vZGUKK19NVExfSU5MSU5FIE1UTDo6VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9k
ZSBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2VsbGF0aW9uUGFydGl0aW9uTW9k
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXNzZWxs
YXRpb25QYXJ0aXRpb25Nb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRlc3NlbGxhdGlvblBh
cnRpdGlvbk1vZGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6c2V0VGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZShNVEw6OlRlc3NlbGxhdGlv
blBhcnRpdGlvbk1vZGUgdGVzc2VsbGF0aW9uUGFydGl0aW9uTW9kZSkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0aW9u
UGFydGl0aW9uTW9kZV8pLCB0ZXNzZWxsYXRpb25QYXJ0aXRpb25Nb2RlKTsKK30KKworLy8gcHJv
cGVydHk6IG1heFRlc3NlbGxhdGlvbkZhY3RvcgorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1U
TDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhUZXNzZWxsYXRpb25GYWN0b3IoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChtYXhUZXNzZWxsYXRpb25GYWN0b3IpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TWF4VGVzc2VsbGF0aW9u
RmFjdG9yKE5TOjpVSW50ZWdlciBtYXhUZXNzZWxsYXRpb25GYWN0b3IpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heFRlc3NlbGxh
dGlvbkZhY3Rvcl8pLCBtYXhUZXNzZWxsYXRpb25GYWN0b3IpOworfQorCisvLyBwcm9wZXJ0eTog
dGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVkCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0ZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoaXNUZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWQpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGVzc2VsbGF0
aW9uRmFjdG9yU2NhbGVFbmFibGVkKGJvb2wgdGVzc2VsbGF0aW9uRmFjdG9yU2NhbGVFbmFibGVk
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRUZXNzZWxsYXRpb25GYWN0b3JTY2FsZUVuYWJsZWRfKSwgdGVzc2VsbGF0aW9uRmFjdG9y
U2NhbGVFbmFibGVkKTsKK30KKworLy8gcHJvcGVydHk6IHRlc3NlbGxhdGlvbkZhY3RvckZvcm1h
dAorX01UTF9JTkxJTkUgTVRMOjpUZXNzZWxsYXRpb25GYWN0b3JGb3JtYXQgTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXNzZWxsYXRpb25GYWN0b3JGb3Jt
YXQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGVzc2VsbGF0aW9uRmFjdG9yRm9ybWF0KSk7Cit9
CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFRl
c3NlbGxhdGlvbkZhY3RvckZvcm1hdChNVEw6OlRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdCB0ZXNz
ZWxsYXRpb25GYWN0b3JGb3JtYXQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRlc3NlbGxhdGlvbkZhY3RvckZvcm1hdF8pLCB0ZXNz
ZWxsYXRpb25GYWN0b3JGb3JtYXQpOworfQorCisvLyBwcm9wZXJ0eTogdGVzc2VsbGF0aW9uQ29u
dHJvbFBvaW50SW5kZXhUeXBlCitfTVRMX0lOTElORSBNVEw6OlRlc3NlbGxhdGlvbkNvbnRyb2xQ
b2ludEluZGV4VHlwZSBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGVzc2VsbGF0aW9u
Q29udHJvbFBvaW50SW5kZXhUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxNVEw6OlRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZT4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh0ZXNzZWxsYXRpb25Db250cm9sUG9pbnRJbmRleFR5cGUpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGVzc2Vs
bGF0aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlKE1UTDo6VGVzc2VsbGF0aW9uQ29udHJvbFBvaW50
SW5kZXhUeXBlIHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4VHlwZSkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0VGVzc2VsbGF0
aW9uQ29udHJvbFBvaW50SW5kZXhUeXBlXyksIHRlc3NlbGxhdGlvbkNvbnRyb2xQb2ludEluZGV4
VHlwZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24K
K19NVExfSU5MSU5FIE1UTDo6VGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0aW9uIE1UTDo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24oKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGVzc2VsbGF0aW9u
RmFjdG9yU3RlcEZ1bmN0aW9uPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRlc3NlbGxhdGlvbkZh
Y3RvclN0ZXBGdW5jdGlvbikpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzZXRUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24oTVRMOjpU
ZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb24gdGVzc2VsbGF0aW9uRmFjdG9yU3RlcEZ1bmN0
aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRUZXNzZWxsYXRpb25GYWN0b3JTdGVwRnVuY3Rpb25fKSwgdGVzc2VsbGF0aW9uRmFj
dG9yU3RlcEZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHRlc3NlbGxhdGlvbk91dHB1dFdp
bmRpbmdPcmRlcgorX01UTF9JTkxJTkUgTVRMOjpXaW5kaW5nIE1UTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOjp0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6V2luZGluZz4odGhpcywgX01UTF9QUklW
QVRFX1NFTCh0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3JkZXIpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VGVzc2VsbGF0aW9uT3V0
cHV0V2luZGluZ09yZGVyKE1UTDo6V2luZGluZyB0ZXNzZWxsYXRpb25PdXRwdXRXaW5kaW5nT3Jk
ZXIpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHNldFRlc3NlbGxhdGlvbk91dHB1dFdpbmRpbmdPcmRlcl8pLCB0ZXNzZWxsYXRpb25PdXRw
dXRXaW5kaW5nT3JkZXIpOworfQorCisvLyBwcm9wZXJ0eTogdmVydGV4QnVmZmVycworX01UTF9J
TkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogTVRMOjpSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OnZlcnRleEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPE1UTDo6UGlwZWxpbmVCdWZmZXJEZXNjcmlwdG9yQXJyYXkqPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHZlcnRleEJ1ZmZlcnMpKTsKK30KKworLy8gcHJvcGVydHk6IGZy
YWdtZW50QnVmZmVycworX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JB
cnJheSogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmZyYWdtZW50QnVmZmVycygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXBlbGluZUJ1ZmZl
ckRlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnJhZ21lbnRCdWZmZXJz
KSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycworX01U
TF9JTkxJTkUgYm9vbCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c3VwcG9ydEluZGly
ZWN0Q29tbWFuZEJ1ZmZlcnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRJbmRpcmVjdENvbW1h
bmRCdWZmZXJzKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKGJvb2wgc3VwcG9ydElu
ZGlyZWN0Q29tbWFuZEJ1ZmZlcnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzXyks
IHN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKTsKK30KKworLy8gcHJvcGVydHk6IGJpbmFy
eUFyY2hpdmVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yOjpiaW5hcnlBcmNoaXZlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChiaW5hcnlBcmNoaXZl
cykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
OjpzZXRCaW5hcnlBcmNoaXZlcyhjb25zdCBOUzo6QXJyYXkqIGJpbmFyeUFyY2hpdmVzKQorewor
ICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRC
aW5hcnlBcmNoaXZlc18pLCBiaW5hcnlBcmNoaXZlcyk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0
ZXhQcmVsb2FkZWRMaWJyYXJpZXMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnZlcnRleFByZWxvYWRlZExpYnJhcmllcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklW
QVRFX1NFTCh2ZXJ0ZXhQcmVsb2FkZWRMaWJyYXJpZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VmVydGV4UHJlbG9hZGVkTGlicmFy
aWVzKGNvbnN0IE5TOjpBcnJheSogdmVydGV4UHJlbG9hZGVkTGlicmFyaWVzKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0ZXhQ
cmVsb2FkZWRMaWJyYXJpZXNfKSwgdmVydGV4UHJlbG9hZGVkTGlicmFyaWVzKTsKK30KKworLy8g
cHJvcGVydHk6IGZyYWdtZW50UHJlbG9hZGVkTGlicmFyaWVzCitfTVRMX0lOTElORSBOUzo6QXJy
YXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpmcmFnbWVudFByZWxvYWRlZExpYnJh
cmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5
Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudFByZWxvYWRlZExpYnJhcmllcykpOwor
fQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRG
cmFnbWVudFByZWxvYWRlZExpYnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIGZyYWdtZW50UHJlbG9h
ZGVkTGlicmFyaWVzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRGcmFnbWVudFByZWxvYWRlZExpYnJhcmllc18pLCBmcmFnbWVudFBy
ZWxvYWRlZExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhMaW5rZWRGdW5jdGlv
bnMKK19NVExfSU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6dmVydGV4TGlua2VkRnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkxpbmtlZEZ1bmN0aW9ucyo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwodmVydGV4TGlua2VkRnVuY3Rpb25zKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFZlcnRleExpbmtlZEZ1bmN0aW9ucyhj
b25zdCBNVEw6OkxpbmtlZEZ1bmN0aW9ucyogdmVydGV4TGlua2VkRnVuY3Rpb25zKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRWZXJ0
ZXhMaW5rZWRGdW5jdGlvbnNfKSwgdmVydGV4TGlua2VkRnVuY3Rpb25zKTsKK30KKworLy8gcHJv
cGVydHk6IGZyYWdtZW50TGlua2VkRnVuY3Rpb25zCitfTVRMX0lOTElORSBNVEw6OkxpbmtlZEZ1
bmN0aW9ucyogTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmZyYWdtZW50TGlua2VkRnVu
Y3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6Okxp
bmtlZEZ1bmN0aW9ucyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnJhZ21lbnRMaW5rZWRGdW5j
dGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6c2V0RnJhZ21lbnRMaW5rZWRGdW5jdGlvbnMoY29uc3QgTVRMOjpMaW5rZWRGdW5jdGlv
bnMqIGZyYWdtZW50TGlua2VkRnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVudExpbmtlZEZ1bmN0aW9uc18p
LCBmcmFnbWVudExpbmtlZEZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBzdXBwb3J0QWRk
aW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFN1cHBv
cnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRkaW5nVmVydGV4Qmlu
YXJ5RnVuY3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01U
TF9QUklWQVRFX1NFTChzZXRTdXBwb3J0QWRkaW5nVmVydGV4QmluYXJ5RnVuY3Rpb25zXyksIHN1
cHBvcnRBZGRpbmdWZXJ0ZXhCaW5hcnlGdW5jdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogc3Vw
cG9ydEFkZGluZ0ZyYWdtZW50QmluYXJ5RnVuY3Rpb25zCitfTVRMX0lOTElORSBib29sIE1UTDo6
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5j
dGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29s
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN1cHBvcnRBZGRpbmdGcmFnbWVudEJpbmFyeUZ1bmN0
aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yOjpzZXRTdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0
QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN1cHBvcnRBZGRpbmdGcmFnbWVudEJp
bmFyeUZ1bmN0aW9uc18pLCBzdXBwb3J0QWRkaW5nRnJhZ21lbnRCaW5hcnlGdW5jdGlvbnMpOwor
fQorCisvLyBwcm9wZXJ0eTogbWF4VmVydGV4Q2FsbFN0YWNrRGVwdGgKK19NVExfSU5MSU5FIE5T
OjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bWF4VmVydGV4Q2FsbFN0
YWNrRGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpV
SW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpz
ZXRNYXhWZXJ0ZXhDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4VmVydGV4Q2FsbFN0YWNr
RGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldE1heFZlcnRleENhbGxTdGFja0RlcHRoXyksIG1heFZlcnRleENhbGxTdGFja0Rl
cHRoKTsKK30KKworLy8gcHJvcGVydHk6IG1heEZyYWdtZW50Q2FsbFN0YWNrRGVwdGgKK19NVExf
SU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6bWF4RnJh
Z21lbnRDYWxsU3RhY2tEZXB0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heEZyYWdtZW50Q2Fs
bFN0YWNrRGVwdGgpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6c2V0TWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aChOUzo6VUludGVnZXIgbWF4
RnJhZ21lbnRDYWxsU3RhY2tEZXB0aCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4RnJhZ21lbnRDYWxsU3RhY2tEZXB0aF8pLCBt
YXhGcmFnbWVudENhbGxTdGFja0RlcHRoKTsKK30KKworLy8gbWV0aG9kOiByZXNldAorX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmVzZXQoKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXNldCkp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpSZW5kZXJQ
aXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3IqIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNE
ZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6
UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJl
bmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yKiBNVEw6
OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6aW5pdCgpCit7CisgICAgcmV0dXJu
IE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpSZW5kZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I+
KCk7Cit9CisKKy8vIHByb3BlcnR5OiB2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zCitf
TVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlw
dG9yOjp2ZXJ0ZXhBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rpb25zRGVzY3JpcHRvcjo6c2V0VmVydGV4QWRkaXRp
b25hbEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIHZlcnRleEFkZGl0aW9uYWxCaW5h
cnlGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldFZlcnRleEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfKSwgdmVydGV4
QWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBmcmFnbWVudEFk
ZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnMKK19NVExfSU5MSU5FIE5TOjpBcnJheSogTVRMOjpSZW5k
ZXJQaXBlbGluZUZ1bmN0aW9uc0Rlc2NyaXB0b3I6OmZyYWdtZW50QWRkaXRpb25hbEJpbmFyeUZ1
bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFy
cmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NFTChmcmFnbWVudEFkZGl0aW9uYWxCaW5hcnlGdW5j
dGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlbmRlclBpcGVsaW5lRnVuY3Rp
b25zRGVzY3JpcHRvcjo6c2V0RnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKGNvbnN0
IE5TOjpBcnJheSogZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRGcmFnbWVu
dEFkZGl0aW9uYWxCaW5hcnlGdW5jdGlvbnNfKSwgZnJhZ21lbnRBZGRpdGlvbmFsQmluYXJ5RnVu
Y3Rpb25zKTsKK30KKworLy8gcHJvcGVydHk6IHRpbGVBZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25z
CitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNj
cmlwdG9yOjp0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh0aWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNjcmlwdG9yOjpzZXRUaWxlQWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9ucyhjb25zdCBOUzo6QXJyYXkqIHRpbGVBZGRpdGlvbmFsQmluYXJ5RnVu
Y3Rpb25zKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRUaWxlQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uc18pLCB0aWxlQWRkaXRpb25h
bEJpbmFyeUZ1bmN0aW9ucyk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUg
TlM6OlN0cmluZyogTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpsYWJlbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwobGFiZWwpKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUg
TVRMOjpEZXZpY2UqIE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZTo6ZGV2aWNlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhUb3RhbFRocmVhZHNQ
ZXJUaHJlYWRncm91cAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVuZGVyUGlwZWxp
bmVTdGF0ZTo6bWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRF
X1NFTChtYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cCkpOworfQorCisvLyBwcm9wZXJ0eTog
dGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplCitfTVRMX0lOTElORSBib29sIE1UTDo6UmVu
ZGVyUGlwZWxpbmVTdGF0ZTo6dGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSkpOworfQorCisvLyBwcm9wZXJ0
eTogaW1hZ2VibG9ja1NhbXBsZUxlbmd0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
UmVuZGVyUGlwZWxpbmVTdGF0ZTo6aW1hZ2VibG9ja1NhbXBsZUxlbmd0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGltYWdlYmxvY2tTYW1wbGVMZW5ndGgpKTsKK30KKworLy8gbWV0aG9kOiBpbWFn
ZWJsb2NrTWVtb3J5TGVuZ3RoRm9yRGltZW5zaW9uczoKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OmltYWdlYmxvY2tNZW1vcnlMZW5ndGgoTVRMOjpT
aXplIGltYWdlYmxvY2tEaW1lbnNpb25zKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChpbWFnZWJsb2NrTWVtb3J5
TGVuZ3RoRm9yRGltZW5zaW9uc18pLCBpbWFnZWJsb2NrRGltZW5zaW9ucyk7Cit9CisKKy8vIHBy
b3BlcnR5OiBzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycworX01UTF9JTkxJTkUgYm9vbCBN
VEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6OnN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZVNhZmU8Ym9vbD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzdXBwb3J0SW5kaXJlY3RDb21tYW5kQnVmZmVycykpOworfQorCisv
LyBtZXRob2Q6IGZ1bmN0aW9uSGFuZGxlV2l0aEZ1bmN0aW9uOnN0YWdlOgorX01UTF9JTkxJTkUg
TVRMOjpGdW5jdGlvbkhhbmRsZSogTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpmdW5jdGlvbkhh
bmRsZShjb25zdCBNVEw6OkZ1bmN0aW9uKiBmdW5jdGlvbiwgTVRMOjpSZW5kZXJTdGFnZXMgc3Rh
Z2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpGdW5jdGlvbkhhbmRs
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZnVuY3Rpb25IYW5kbGVXaXRoRnVuY3Rpb25fc3Rh
Z2VfKSwgZnVuY3Rpb24sIHN0YWdlKTsKK30KKworLy8gbWV0aG9kOiBuZXdWaXNpYmxlRnVuY3Rp
b25UYWJsZVdpdGhEZXNjcmlwdG9yOnN0YWdlOgorX01UTF9JTkxJTkUgTVRMOjpWaXNpYmxlRnVu
Y3Rpb25UYWJsZSogTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpuZXdWaXNpYmxlRnVuY3Rpb25U
YWJsZShjb25zdCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVzY3JpcHRv
ciwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
bmV3VmlzaWJsZUZ1bmN0aW9uVGFibGVXaXRoRGVzY3JpcHRvcl9zdGFnZV8pLCBkZXNjcmlwdG9y
LCBzdGFnZSk7Cit9CisKKy8vIG1ldGhvZDogbmV3SW50ZXJzZWN0aW9uRnVuY3Rpb25UYWJsZVdp
dGhEZXNjcmlwdG9yOnN0YWdlOgorX01UTF9JTkxJTkUgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlv
blRhYmxlKiBNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGU6Om5ld0ludGVyc2VjdGlvbkZ1bmN0aW9u
VGFibGUoY29uc3QgTVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlRGVzY3JpcHRvciogZGVz
Y3JpcHRvciwgTVRMOjpSZW5kZXJTdGFnZXMgc3RhZ2UpCit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChuZXdJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlV2l0aERlc2NyaXB0b3Jfc3Rh
Z2VfKSwgZGVzY3JpcHRvciwgc3RhZ2UpOworfQorCisvLyBtZXRob2Q6IG5ld1JlbmRlclBpcGVs
aW5lU3RhdGVXaXRoQWRkaXRpb25hbEJpbmFyeUZ1bmN0aW9uczplcnJvcjoKK19NVExfSU5MSU5F
IE1UTDo6UmVuZGVyUGlwZWxpbmVTdGF0ZSogTVRMOjpSZW5kZXJQaXBlbGluZVN0YXRlOjpuZXdS
ZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IE1UTDo6UmVuZGVyUGlwZWxpbmVGdW5jdGlvbnNEZXNj
cmlwdG9yKiBhZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLCBOUzo6RXJyb3IqKiBlcnJvcikKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBpcGVsaW5lU3RhdGUq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoQWRkaXRp
b25hbEJpbmFyeUZ1bmN0aW9uc19lcnJvcl8pLCBhZGRpdGlvbmFsQmluYXJ5RnVuY3Rpb25zLCBl
cnJvcik7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBNVEw6OlJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjphbGxvYygpCit7CisgICAgcmV0
dXJuIE5TOjpPYmplY3Q6OmFsbG9jPE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lO
TElORSBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBN
VEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5k
ZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yKiBNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVkU3Vi
c2NyaXB0XyksIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIG1ldGhvZDogc2V0T2JqZWN0OmF0
SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVn
ZXIgYXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhp
cywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFj
aG1lbnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitf
TVRMX0lOTElORSBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxs
b2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlRpbGVSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVGlsZVJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciogTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlRpbGVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5
OiBwaXhlbEZvcm1hdAorX01UTF9JTkxJTkUgTVRMOjpQaXhlbEZvcm1hdCBNVEw6OlRpbGVSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnBpeGVsRm9ybWF0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHBpeGVsRm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRQaXhl
bEZvcm1hdChNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRQaXhlbEZvcm1hdF8pLCBw
aXhlbEZvcm1hdCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBN
VEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRM
OjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMVGls
ZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8v
IG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6
aW5pdDxNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJh
eT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lO
TElORSBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IqIE1U
TDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckFycmF5OjpvYmpl
Y3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxNVEw6OlRpbGVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBh
dHRhY2htZW50SW5kZXgpOworfQorCisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJz
Y3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIg
YXR0YWNobWVudEluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1l
bnQsIGF0dGFjaG1lbnRJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRM
X0lOTElORSBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqIE1UTDo6VGlsZVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojph
bGxvYzxNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMo
TVRMVGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQK
K19NVExfSU5MSU5FIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogTVRMOjpUaWxl
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6aW5pdDxNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpUaWxlUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNl
dExhYmVsKGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisK
Ky8vIHByb3BlcnR5OiB0aWxlRnVuY3Rpb24KK19NVExfSU5MSU5FIE1UTDo6RnVuY3Rpb24qIE1U
TDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6dGlsZUZ1bmN0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkZ1bmN0aW9uKj4odGhpcywgX01U
TF9QUklWQVRFX1NFTCh0aWxlRnVuY3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFRpbGVGdW5jdGlvbihjb25zdCBNVEw6
OkZ1bmN0aW9uKiB0aWxlRnVuY3Rpb24pCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRpbGVGdW5jdGlvbl8pLCB0aWxlRnVuY3Rpb24p
OworfQorCisvLyBwcm9wZXJ0eTogcmFzdGVyU2FtcGxlQ291bnQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnJhc3RlclNhbXBsZUNv
dW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVn
ZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocmFzdGVyU2FtcGxlQ291bnQpKTsKK30KKworX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFJhc3Rl
clNhbXBsZUNvdW50KE5TOjpVSW50ZWdlciByYXN0ZXJTYW1wbGVDb3VudCkKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UmFzdGVyU2Ft
cGxlQ291bnRfKSwgcmFzdGVyU2FtcGxlQ291bnQpOworfQorCisvLyBwcm9wZXJ0eTogY29sb3JB
dHRhY2htZW50cworX01UTF9JTkxJTkUgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6
Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNvbG9yQXR0YWNobWVudHMpKTsKK30KKworLy8gcHJv
cGVydHk6IHRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZQorX01UTF9JTkxJTkUgYm9vbCBN
VEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRocmVhZGdyb3VwU2l6ZU1hdGNoZXNU
aWxlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTCh0aHJlYWRncm91cFNpemVNYXRjaGVzVGlsZVNpemUpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OnNldFRocmVhZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZShib29sIHRocmVhZGdyb3VwU2l6ZU1h
dGNoZXNUaWxlU2l6ZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoc2V0VGhyZWFkZ3JvdXBTaXplTWF0Y2hlc1RpbGVTaXplXyksIHRocmVh
ZGdyb3VwU2l6ZU1hdGNoZXNUaWxlU2l6ZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0aWxlQnVmZmVy
cworX01UTF9JTkxJTkUgTVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JBcnJheSogTVRMOjpU
aWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0aWxlQnVmZmVycygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpQaXBlbGluZUJ1ZmZlckRlc2NyaXB0b3JB
cnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGlsZUJ1ZmZlcnMpKTsKK30KKworLy8gcHJv
cGVydHk6IG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwCitfTVRMX0lOTElORSBOUzo6VUlu
dGVnZXIgTVRMOjpUaWxlUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjptYXhUb3RhbFRocmVhZHNQ
ZXJUaHJlYWRncm91cCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUaWxlUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpzZXRNYXhUb3RhbFRocmVhZHNQZXJUaHJlYWRncm91cChOUzo6VUludGVn
ZXIgbWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXApCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1heFRvdGFsVGhyZWFkc1BlclRo
cmVhZGdyb3VwXyksIG1heFRvdGFsVGhyZWFkc1BlclRocmVhZGdyb3VwKTsKK30KKworLy8gcHJv
cGVydHk6IGJpbmFyeUFyY2hpdmVzCitfTVRMX0lOTElORSBOUzo6QXJyYXkqIE1UTDo6VGlsZVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6YmluYXJ5QXJjaGl2ZXMoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoYmluYXJ5QXJjaGl2ZXMpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEJpbmFyeUFyY2hpdmVzKGNvbnN0IE5TOjpBcnJheSog
YmluYXJ5QXJjaGl2ZXMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldEJpbmFyeUFyY2hpdmVzXyksIGJpbmFyeUFyY2hpdmVzKTsKK30K
KworLy8gcHJvcGVydHk6IHByZWxvYWRlZExpYnJhcmllcworX01UTF9JTkxJTkUgTlM6OkFycmF5
KiBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnByZWxvYWRlZExpYnJhcmllcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OkFycmF5Kj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChwcmVsb2FkZWRMaWJyYXJpZXMpKTsKK30KKworX01UTF9JTkxJ
TkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFByZWxvYWRlZExp
YnJhcmllcyhjb25zdCBOUzo6QXJyYXkqIHByZWxvYWRlZExpYnJhcmllcykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UHJlbG9hZGVk
TGlicmFyaWVzXyksIHByZWxvYWRlZExpYnJhcmllcyk7Cit9CisKKy8vIHByb3BlcnR5OiBsaW5r
ZWRGdW5jdGlvbnMKK19NVExfSU5MSU5FIE1UTDo6TGlua2VkRnVuY3Rpb25zKiBNVEw6OlRpbGVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OmxpbmtlZEZ1bmN0aW9ucygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpMaW5rZWRGdW5jdGlvbnMqPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGxpbmtlZEZ1bmN0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lk
IE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0TGlua2VkRnVuY3Rpb25zKGNv
bnN0IE1UTDo6TGlua2VkRnVuY3Rpb25zKiBsaW5rZWRGdW5jdGlvbnMpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExpbmtlZEZ1bmN0
aW9uc18pLCBsaW5rZWRGdW5jdGlvbnMpOworfQorCisvLyBwcm9wZXJ0eTogc3VwcG9ydEFkZGlu
Z0JpbmFyeUZ1bmN0aW9ucworX01UTF9JTkxJTkUgYm9vbCBNVEw6OlRpbGVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3I6OnN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMoKSBjb25zdAoreworICAg
IHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlU2FmZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVf
U0VMKHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFN1cHBvcnRBZGRpbmdCaW5h
cnlGdW5jdGlvbnMoYm9vbCBzdXBwb3J0QWRkaW5nQmluYXJ5RnVuY3Rpb25zKQoreworICAgIE9i
amVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdXBwb3J0
QWRkaW5nQmluYXJ5RnVuY3Rpb25zXyksIHN1cHBvcnRBZGRpbmdCaW5hcnlGdW5jdGlvbnMpOwor
fQorCisvLyBwcm9wZXJ0eTogbWF4Q2FsbFN0YWNrRGVwdGgKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6Om1heENhbGxTdGFja0RlcHRo
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWF4Q2FsbFN0YWNrRGVwdGgpKTsKK30KKworX01UTF9J
TkxJTkUgdm9pZCBNVEw6OlRpbGVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldE1heENhbGxT
dGFja0RlcHRoKE5TOjpVSW50ZWdlciBtYXhDYWxsU3RhY2tEZXB0aCkKK3sKKyAgICBPYmplY3Q6
OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWF4Q2FsbFN0YWNr
RGVwdGhfKSwgbWF4Q2FsbFN0YWNrRGVwdGgpOworfQorCisvLyBtZXRob2Q6IHJlc2V0CitfTVRM
X0lOTElORSB2b2lkIE1UTDo6VGlsZVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmVzZXQoKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChy
ZXNldCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01l
dGFsL01UTFJlc291cmNlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRh
bC9NVExSZXNvdXJjZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNlMjY4YjE3OTQ4MjllMWE1MDE2ZjYzZDFk
YmQ0OTlhYzA1ZTlkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21l
dGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZS5ocHAKQEAgLTAsMCArMSwxNzggQEAKKy8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIE1ldGFsL01UTFJl
c291cmNlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8v
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
Ky8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRn
ZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaHBwPgorCisjaW5jbHVkZSAiTVRMUmVzb3VyY2UuaHBwIgorCituYW1lc3Bh
Y2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBQdXJnZWFibGVTdGF0ZSkgeworICAg
IFB1cmdlYWJsZVN0YXRlS2VlcEN1cnJlbnQgPSAxLAorICAgIFB1cmdlYWJsZVN0YXRlTm9uVm9s
YXRpbGUgPSAyLAorICAgIFB1cmdlYWJsZVN0YXRlVm9sYXRpbGUgPSAzLAorICAgIFB1cmdlYWJs
ZVN0YXRlRW1wdHkgPSA0LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgQ1BVQ2FjaGVN
b2RlKSB7CisgICAgQ1BVQ2FjaGVNb2RlRGVmYXVsdENhY2hlID0gMCwKKyAgICBDUFVDYWNoZU1v
ZGVXcml0ZUNvbWJpbmVkID0gMSwKK307CisKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFN0b3Jh
Z2VNb2RlKSB7CisgICAgU3RvcmFnZU1vZGVTaGFyZWQgPSAwLAorICAgIFN0b3JhZ2VNb2RlTWFu
YWdlZCA9IDEsCisgICAgU3RvcmFnZU1vZGVQcml2YXRlID0gMiwKKyAgICBTdG9yYWdlTW9kZU1l
bW9yeWxlc3MgPSAzLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgSGF6YXJkVHJhY2tp
bmdNb2RlKSB7CisgICAgSGF6YXJkVHJhY2tpbmdNb2RlRGVmYXVsdCA9IDAsCisgICAgSGF6YXJk
VHJhY2tpbmdNb2RlVW50cmFja2VkID0gMSwKKyAgICBIYXphcmRUcmFja2luZ01vZGVUcmFja2Vk
ID0gMiwKK307CisKK19NVExfT1BUSU9OUyhOUzo6VUludGVnZXIsIFJlc291cmNlT3B0aW9ucykg
eworICAgIFJlc291cmNlU3RvcmFnZU1vZGVTaGFyZWQgPSAwLAorICAgIFJlc291cmNlSGF6YXJk
VHJhY2tpbmdNb2RlRGVmYXVsdCA9IDAsCisgICAgUmVzb3VyY2VDUFVDYWNoZU1vZGVEZWZhdWx0
Q2FjaGUgPSAwLAorICAgIFJlc291cmNlT3B0aW9uQ1BVQ2FjaGVNb2RlRGVmYXVsdCA9IDAsCisg
ICAgUmVzb3VyY2VDUFVDYWNoZU1vZGVXcml0ZUNvbWJpbmVkID0gMSwKKyAgICBSZXNvdXJjZU9w
dGlvbkNQVUNhY2hlTW9kZVdyaXRlQ29tYmluZWQgPSAxLAorICAgIFJlc291cmNlU3RvcmFnZU1v
ZGVNYW5hZ2VkID0gMTYsCisgICAgUmVzb3VyY2VTdG9yYWdlTW9kZVByaXZhdGUgPSAzMiwKKyAg
ICBSZXNvdXJjZVN0b3JhZ2VNb2RlTWVtb3J5bGVzcyA9IDQ4LAorICAgIFJlc291cmNlSGF6YXJk
VHJhY2tpbmdNb2RlVW50cmFja2VkID0gMjU2LAorICAgIFJlc291cmNlSGF6YXJkVHJhY2tpbmdN
b2RlVHJhY2tlZCA9IDUxMiwKK307CisKK2NsYXNzIFJlc291cmNlIDogcHVibGljIE5TOjpSZWZl
cmVuY2luZzxSZXNvdXJjZT4KK3sKK3B1YmxpYzoKKyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAg
ICBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIHNldExhYmVsKGNv
bnN0IE5TOjpTdHJpbmcqIGxhYmVsKTsKKworICAgIGNsYXNzIERldmljZSogICAgICAgICAgIGRl
dmljZSgpIGNvbnN0OworCisgICAgTVRMOjpDUFVDYWNoZU1vZGUgICAgICAgY3B1Q2FjaGVNb2Rl
KCkgY29uc3Q7CisKKyAgICBNVEw6OlN0b3JhZ2VNb2RlICAgICAgICBzdG9yYWdlTW9kZSgpIGNv
bnN0OworCisgICAgTVRMOjpIYXphcmRUcmFja2luZ01vZGUgaGF6YXJkVHJhY2tpbmdNb2RlKCkg
Y29uc3Q7CisKKyAgICBNVEw6OlJlc291cmNlT3B0aW9ucyAgICByZXNvdXJjZU9wdGlvbnMoKSBj
b25zdDsKKworICAgIE1UTDo6UHVyZ2VhYmxlU3RhdGUgICAgIHNldFB1cmdlYWJsZVN0YXRlKE1U
TDo6UHVyZ2VhYmxlU3RhdGUgc3RhdGUpOworCisgICAgY2xhc3MgSGVhcCogICAgICAgICAgICAg
aGVhcCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgaGVhcE9mZnNldCgp
IGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgYWxsb2NhdGVkU2l6ZSgpIGNv
bnN0OworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgbWFrZUFsaWFzYWJsZSgpOworCisg
ICAgYm9vbCAgICAgICAgICAgICAgICAgICAgaXNBbGlhc2FibGUoKTsKK307CisKK30KKworLy8g
cHJvcGVydHk6IGxhYmVsCitfTVRMX0lOTElORSBOUzo6U3RyaW5nKiBNVEw6OlJlc291cmNlOjps
YWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmlu
Zyo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGFiZWwpKTsKK30KKworX01UTF9JTkxJTkUgdm9p
ZCBNVEw6OlJlc291cmNlOjpzZXRMYWJlbChjb25zdCBOUzo6U3RyaW5nKiBsYWJlbCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TGFi
ZWxfKSwgbGFiZWwpOworfQorCisvLyBwcm9wZXJ0eTogZGV2aWNlCitfTVRMX0lOTElORSBNVEw6
OkRldmljZSogTVRMOjpSZXNvdXJjZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGV2
aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBjcHVDYWNoZU1vZGUKK19NVExfSU5MSU5FIE1UTDo6
Q1BVQ2FjaGVNb2RlIE1UTDo6UmVzb3VyY2U6OmNwdUNhY2hlTW9kZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpDUFVDYWNoZU1vZGU+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoY3B1Q2FjaGVNb2RlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzdG9yYWdlTW9k
ZQorX01UTF9JTkxJTkUgTVRMOjpTdG9yYWdlTW9kZSBNVEw6OlJlc291cmNlOjpzdG9yYWdlTW9k
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdG9yYWdl
TW9kZT4odGhpcywgX01UTF9QUklWQVRFX1NFTChzdG9yYWdlTW9kZSkpOworfQorCisvLyBwcm9w
ZXJ0eTogaGF6YXJkVHJhY2tpbmdNb2RlCitfTVRMX0lOTElORSBNVEw6OkhhemFyZFRyYWNraW5n
TW9kZSBNVEw6OlJlc291cmNlOjpoYXphcmRUcmFja2luZ01vZGUoKSBjb25zdAoreworICAgIHJl
dHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKGhhemFyZFRyYWNraW5nTW9kZSkpOworfQorCisvLyBwcm9wZXJ0eTog
cmVzb3VyY2VPcHRpb25zCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlT3B0aW9ucyBNVEw6OlJl
c291cmNlOjpyZXNvdXJjZU9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UmVzb3VyY2VPcHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJl
c291cmNlT3B0aW9ucykpOworfQorCisvLyBtZXRob2Q6IHNldFB1cmdlYWJsZVN0YXRlOgorX01U
TF9JTkxJTkUgTVRMOjpQdXJnZWFibGVTdGF0ZSBNVEw6OlJlc291cmNlOjpzZXRQdXJnZWFibGVT
dGF0ZShNVEw6OlB1cmdlYWJsZVN0YXRlIHN0YXRlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6UHVyZ2VhYmxlU3RhdGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
UHVyZ2VhYmxlU3RhdGVfKSwgc3RhdGUpOworfQorCisvLyBwcm9wZXJ0eTogaGVhcAorX01UTF9J
TkxJTkUgTVRMOjpIZWFwKiBNVEw6OlJlc291cmNlOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkhlYXAqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGhlYXApKTsKK30KKworLy8gcHJvcGVydHk6IGhlYXBPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpV
SW50ZWdlciBNVEw6OlJlc291cmNlOjpoZWFwT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
aGVhcE9mZnNldCkpOworfQorCisvLyBwcm9wZXJ0eTogYWxsb2NhdGVkU2l6ZQorX01UTF9JTkxJ
TkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVzb3VyY2U6OmFsbG9jYXRlZFNpemUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChhbGxvY2F0ZWRTaXplKSk7Cit9CisKKy8vIG1ldGhvZDogbWFrZUFsaWFzYWJs
ZQorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlOjptYWtlQWxpYXNhYmxlKCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWFrZUFs
aWFzYWJsZSkpOworfQorCisvLyBtZXRob2Q6IGlzQWxpYXNhYmxlCitfTVRMX0lOTElORSBib29s
IE1UTDo6UmVzb3VyY2U6OmlzQWxpYXNhYmxlKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxib29sPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzQWxpYXNhYmxlKSk7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3Vy
Y2VTdGF0ZUNvbW1hbmRFbmNvZGVyLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNw
cC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXIuaHBwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2
ODNhYzFmOGIxNmJkNWU1YjFiYTNiN2JlMjJlZjc3OTRmNDliOTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMUmVzb3VyY2VTdGF0ZUNv
bW1hbmRFbmNvZGVyLmhwcApAQCAtMCwwICsxLDk0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExSZXNvdXJjZVN0YXRlQ29t
bWFuZEVuY29kZXIuaHBwCisvLworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisv
LworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKy8vCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisvLworLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisv
LworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMSGVhZGVy
QnJpZGdlLmhwcCIKKyNpbmNsdWRlICJNVExQcml2YXRlLmhwcCIKKworI2luY2x1ZGUgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHA+CisKKyNpbmNsdWRlICJNVExDb21tYW5kRW5jb2Rlci5ocHAi
CisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFNwYXJzZVRleHR1
cmVNYXBwaW5nTW9kZSkgeworICAgIFNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZU1hcCA9IDAsCisg
ICAgU3BhcnNlVGV4dHVyZU1hcHBpbmdNb2RlVW5tYXAgPSAxLAorfTsKKworc3RydWN0IE1hcElu
ZGlyZWN0QXJndW1lbnRzCit7CisgICAgdWludDMyX3QgcmVnaW9uT3JpZ2luWDsKKyAgICB1aW50
MzJfdCByZWdpb25PcmlnaW5ZOworICAgIHVpbnQzMl90IHJlZ2lvbk9yaWdpblo7CisgICAgdWlu
dDMyX3QgcmVnaW9uU2l6ZVdpZHRoOworICAgIHVpbnQzMl90IHJlZ2lvblNpemVIZWlnaHQ7Cisg
ICAgdWludDMyX3QgcmVnaW9uU2l6ZURlcHRoOworICAgIHVpbnQzMl90IG1pcE1hcExldmVsOwor
ICAgIHVpbnQzMl90IHNsaWNlSWQ7Cit9IF9NVExfUEFDS0VEOworCitjbGFzcyBSZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXIgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlc291cmNlU3RhdGVD
b21tYW5kRW5jb2RlciwgQ29tbWFuZEVuY29kZXI+Cit7CitwdWJsaWM6CisgICAgdm9pZCB1cGRh
dGVUZXh0dXJlTWFwcGluZ3MoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgTVRM
OjpTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUgbW9kZSwgY29uc3QgTVRMOjpSZWdpb24qIHJlZ2lv
bnMsIGNvbnN0IE5TOjpVSW50ZWdlciogbWlwTGV2ZWxzLCBjb25zdCBOUzo6VUludGVnZXIqIHNs
aWNlcywgTlM6OlVJbnRlZ2VyIG51bVJlZ2lvbnMpOworCisgICAgdm9pZCB1cGRhdGVUZXh0dXJl
TWFwcGluZyhjb25zdCBjbGFzcyBUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBNVEw6OlNwYXJzZVRl
eHR1cmVNYXBwaW5nTW9kZSBtb2RlLCBjb25zdCBNVEw6OlJlZ2lvbiByZWdpb24sIGNvbnN0IE5T
OjpVSW50ZWdlciBtaXBMZXZlbCwgY29uc3QgTlM6OlVJbnRlZ2VyIHNsaWNlKTsKKworICAgIHZv
aWQgdXBkYXRlVGV4dHVyZU1hcHBpbmcoY29uc3QgY2xhc3MgVGV4dHVyZSogdGV4dHVyZSwgY29u
c3QgTVRMOjpTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUgbW9kZSwgY29uc3QgY2xhc3MgQnVmZmVy
KiBpbmRpcmVjdEJ1ZmZlciwgTlM6OlVJbnRlZ2VyIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKKwor
ICAgIHZvaWQgdXBkYXRlRmVuY2UoY29uc3QgY2xhc3MgRmVuY2UqIGZlbmNlKTsKKworICAgIHZv
aWQgd2FpdEZvckZlbmNlKGNvbnN0IGNsYXNzIEZlbmNlKiBmZW5jZSk7Cit9OworCit9CisKKy8v
IG1ldGhvZDogdXBkYXRlVGV4dHVyZU1hcHBpbmdzOm1vZGU6cmVnaW9uczptaXBMZXZlbHM6c2xp
Y2VzOm51bVJlZ2lvbnM6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZUNvbW1h
bmRFbmNvZGVyOjp1cGRhdGVUZXh0dXJlTWFwcGluZ3MoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0
dXJlLCBjb25zdCBNVEw6OlNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZSBtb2RlLCBjb25zdCBNVEw6
OlJlZ2lvbiogcmVnaW9ucywgY29uc3QgTlM6OlVJbnRlZ2VyKiBtaXBMZXZlbHMsIGNvbnN0IE5T
OjpVSW50ZWdlciogc2xpY2VzLCBOUzo6VUludGVnZXIgbnVtUmVnaW9ucykKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodXBkYXRlVGV4dHVy
ZU1hcHBpbmdzX21vZGVfcmVnaW9uc19taXBMZXZlbHNfc2xpY2VzX251bVJlZ2lvbnNfKSwgdGV4
dHVyZSwgbW9kZSwgcmVnaW9ucywgbWlwTGV2ZWxzLCBzbGljZXMsIG51bVJlZ2lvbnMpOworfQor
CisvLyBtZXRob2Q6IHVwZGF0ZVRleHR1cmVNYXBwaW5nOm1vZGU6cmVnaW9uOm1pcExldmVsOnNs
aWNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcjo6
dXBkYXRlVGV4dHVyZU1hcHBpbmcoY29uc3QgTVRMOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBN
VEw6OlNwYXJzZVRleHR1cmVNYXBwaW5nTW9kZSBtb2RlLCBjb25zdCBNVEw6OlJlZ2lvbiByZWdp
b24sIGNvbnN0IE5TOjpVSW50ZWdlciBtaXBMZXZlbCwgY29uc3QgTlM6OlVJbnRlZ2VyIHNsaWNl
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TCh1cGRhdGVUZXh0dXJlTWFwcGluZ19tb2RlX3JlZ2lvbl9taXBMZXZlbF9zbGljZV8pLCB0ZXh0
dXJlLCBtb2RlLCByZWdpb24sIG1pcExldmVsLCBzbGljZSk7Cit9CisKKy8vIG1ldGhvZDogdXBk
YXRlVGV4dHVyZU1hcHBpbmc6bW9kZTppbmRpcmVjdEJ1ZmZlcjppbmRpcmVjdEJ1ZmZlck9mZnNl
dDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZVN0YXRlQ29tbWFuZEVuY29kZXI6OnVw
ZGF0ZVRleHR1cmVNYXBwaW5nKGNvbnN0IE1UTDo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgTVRM
OjpTcGFyc2VUZXh0dXJlTWFwcGluZ01vZGUgbW9kZSwgY29uc3QgTVRMOjpCdWZmZXIqIGluZGly
ZWN0QnVmZmVyLCBOUzo6VUludGVnZXIgaW5kaXJlY3RCdWZmZXJPZmZzZXQpCit7CisgICAgT2Jq
ZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVwZGF0ZVRleHR1
cmVNYXBwaW5nX21vZGVfaW5kaXJlY3RCdWZmZXJfaW5kaXJlY3RCdWZmZXJPZmZzZXRfKSwgdGV4
dHVyZSwgbW9kZSwgaW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0QnVmZmVyT2Zmc2V0KTsKK30KKwor
Ly8gbWV0aG9kOiB1cGRhdGVGZW5jZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJjZVN0
YXRlQ29tbWFuZEVuY29kZXI6OnVwZGF0ZUZlbmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh1
cGRhdGVGZW5jZV8pLCBmZW5jZSk7Cit9CisKKy8vIG1ldGhvZDogd2FpdEZvckZlbmNlOgorX01U
TF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlcjo6d2FpdEZvckZl
bmNlKGNvbnN0IE1UTDo6RmVuY2UqIGZlbmNlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTCh3YWl0Rm9yRmVuY2VfKSwgZmVuY2UpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFJlc291
cmNlU3RhdGVQYXNzLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExSZXNvdXJjZVN0YXRlUGFzcy5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM3NzBmNjQwMjEzMTdkMDI0OWNl
YWVlZjFiNWU2Y2I0NDhhY2FhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExSZXNvdXJjZVN0YXRlUGFzcy5ocHAKQEAgLTAsMCArMSwx
NjUgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIE1ldGFsL01UTFJlc291cmNlU3RhdGVQYXNzLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIw
LTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1UTERlZmluZXMuaHBwIgor
I2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAi
CisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPgorCituYW1lc3BhY2UgTVRM
Cit7CitjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlw
dG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0
YWNobWVudERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFJlc291cmNl
U3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAg
ICBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZUJ1ZmZlcigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTYW1wbGVCdWZmZXIoY29uc3QgY2xhc3MgQ291bnRlclNhbXBsZUJ1ZmZlciog
c2FtcGxlQnVmZmVyKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mRW5jb2RlclNhbXBsZUluZGV4KCkg
Y29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6OlVJbnRl
Z2VyIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mRW5jb2Rl
clNhbXBsZUluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuZE9mRW5jb2RlclNhbXBsZUlu
ZGV4KE5TOjpVSW50ZWdlciBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9OworCitjbGFzcyBS
ZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkgOiBw
dWJsaWMgTlM6OlJlZmVyZW5jaW5nPFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgUmVzb3Vy
Y2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KiBhbGxvYygp
OworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVz
Y3JpcHRvckFycmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgUmVzb3VyY2VTdGF0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvciogICAgICAgICAgICAgb2JqZWN0KE5T
OjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0
KGNvbnN0IGNsYXNzIFJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2Ny
aXB0b3IqIGF0dGFjaG1lbnQsIE5TOjpVSW50ZWdlciBhdHRhY2htZW50SW5kZXgpOworfTsKKwor
Y2xhc3MgUmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFJl
c291cmNlU3RhdGVQYXNzRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3Mg
UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yKiAgICAgICAgICAgICAgICAgICAgIGFsbG9jKCk7
CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBSZXNvdXJjZVN0YXRlUGFz
c0Rlc2NyaXB0b3IqICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlw
dG9yKCk7CisKKyAgICBjbGFzcyBSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yQXJyYXkqIHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKCkgY29uc3Q7Cit9Owor
Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNl
U3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqIE1UTDo6UmVzb3VyY2VT
dGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVzb3VyY2VTdGF0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRh
Y2htZW50RGVzY3JpcHRvciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3I+KCk7
Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXIKK19NVExfSU5MSU5FIE1UTDo6Q291bnRl
clNhbXBsZUJ1ZmZlciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1l
bnREZXNjcmlwdG9yOjpzYW1wbGVCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q291bnRlclNhbXBsZUJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2FtcGxlQnVmZmVyKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpSZXNvdXJj
ZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRTYW1wbGVCdWZm
ZXIoY29uc3QgTVRMOjpDb3VudGVyU2FtcGxlQnVmZmVyKiBzYW1wbGVCdWZmZXIpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBs
ZUJ1ZmZlcl8pLCBzYW1wbGVCdWZmZXIpOworfQorCisvLyBwcm9wZXJ0eTogc3RhcnRPZkVuY29k
ZXJTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6UmVzb3VyY2VTdGF0
ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c3RhcnRPZkVuY29kZXJTYW1w
bGVJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJ
bnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgp
KTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgoTlM6
OlVJbnRlZ2VyIHN0YXJ0T2ZFbmNvZGVyU2FtcGxlSW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0YXJ0T2ZFbmNvZGVyU2Ft
cGxlSW5kZXhfKSwgc3RhcnRPZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHByb3BlcnR5
OiBlbmRPZkVuY29kZXJTYW1wbGVJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6ZW5kT2ZF
bmNvZGVyU2FtcGxlSW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChlbmRPZkVuY29kZXJTYW1w
bGVJbmRleCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NT
YW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0RW5kT2ZFbmNvZGVyU2FtcGxlSW5k
ZXgoTlM6OlVJbnRlZ2VyIGVuZE9mRW5jb2RlclNhbXBsZUluZGV4KQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRFbmRPZkVuY29kZXJT
YW1wbGVJbmRleF8pLCBlbmRPZkVuY29kZXJTYW1wbGVJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBt
ZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVm
ZmVyQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVzb3VyY2VTdGF0ZVBh
c3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1ldGhv
ZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0
dGFjaG1lbnREZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZm
ZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNobWVudERl
c2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3Jp
cHQ6CitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3RhdGVQYXNzU2FtcGxlQnVmZmVyQXR0YWNo
bWVudERlc2NyaXB0b3IqIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2ht
ZW50RGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGF0dGFjaG1lbnRJbmRleCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlJlc291cmNlU3RhdGVQYXNz
U2FtcGxlQnVmZmVyQXR0YWNobWVudERlc2NyaXB0b3IqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdF8pLCBhdHRhY2htZW50SW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6UmVzb3VyY2VTdGF0ZVBhc3NTYW1wbGVCdWZmZXJBdHRhY2htZW50RGVzY3JpcHRvckFycmF5
OjpzZXRPYmplY3QoY29uc3QgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFj
aG1lbnREZXNjcmlwdG9yKiBhdHRhY2htZW50LCBOUzo6VUludGVnZXIgYXR0YWNobWVudEluZGV4
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dGFjaG1lbnQsIGF0dGFjaG1lbnRJ
bmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OlJl
c291cmNlU3RhdGVQYXNzRGVzY3JpcHRvciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0
b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpSZXNvdXJj
ZVN0YXRlUGFzc0Rlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMUmVzb3VyY2VTdGF0ZVBh
c3NEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpS
ZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlw
dG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxNVEw6OlJlc291cmNl
U3RhdGVQYXNzRGVzY3JpcHRvcj4oKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogcmVzb3VyY2VT
dGF0ZVBhc3NEZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlU3RhdGVQYXNzRGVz
Y3JpcHRvciogTVRMOjpSZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3I6OnJlc291cmNlU3RhdGVQ
YXNzRGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpS
ZXNvdXJjZVN0YXRlUGFzc0Rlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFJlc291cmNl
U3RhdGVQYXNzRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwocmVzb3VyY2VTdGF0ZVBhc3NE
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1wbGVCdWZmZXJBdHRhY2htZW50cwor
X01UTF9JTkxJTkUgTVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQXJyYXkqIE1UTDo6UmVzb3VyY2VTdGF0ZVBhc3NEZXNjcmlwdG9yOjpzYW1wbGVC
dWZmZXJBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpSZXNvdXJjZVN0YXRlUGFzc1NhbXBsZUJ1ZmZlckF0dGFjaG1lbnREZXNjcmlwdG9y
QXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRzKSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRM
U2FtcGxlci5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMU2Ft
cGxlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTBlNzkxNTJlMTVhODdhNGVhMjllMGNlNjllMmI0NmM5MDA0
NTIzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9N
ZXRhbC9NVExTYW1wbGVyLmhwcApAQCAtMCwwICsxLDMxMCBAQAorLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMU2FtcGxlci5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJNVExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2lu
Y2x1ZGUgIk1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
LmhwcD4KKworI2luY2x1ZGUgIk1UTERlcHRoU3RlbmNpbC5ocHAiCisjaW5jbHVkZSAiTVRMU2Ft
cGxlci5ocHAiCisKK25hbWVzcGFjZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFNh
bXBsZXJNaW5NYWdGaWx0ZXIpIHsKKyAgICBTYW1wbGVyTWluTWFnRmlsdGVyTmVhcmVzdCA9IDAs
CisgICAgU2FtcGxlck1pbk1hZ0ZpbHRlckxpbmVhciA9IDEsCit9OworCitfTVRMX0VOVU0oTlM6
OlVJbnRlZ2VyLCBTYW1wbGVyTWlwRmlsdGVyKSB7CisgICAgU2FtcGxlck1pcEZpbHRlck5vdE1p
cG1hcHBlZCA9IDAsCisgICAgU2FtcGxlck1pcEZpbHRlck5lYXJlc3QgPSAxLAorICAgIFNhbXBs
ZXJNaXBGaWx0ZXJMaW5lYXIgPSAyLAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgU2Ft
cGxlckFkZHJlc3NNb2RlKSB7CisgICAgU2FtcGxlckFkZHJlc3NNb2RlQ2xhbXBUb0VkZ2UgPSAw
LAorICAgIFNhbXBsZXJBZGRyZXNzTW9kZU1pcnJvckNsYW1wVG9FZGdlID0gMSwKKyAgICBTYW1w
bGVyQWRkcmVzc01vZGVSZXBlYXQgPSAyLAorICAgIFNhbXBsZXJBZGRyZXNzTW9kZU1pcnJvclJl
cGVhdCA9IDMsCisgICAgU2FtcGxlckFkZHJlc3NNb2RlQ2xhbXBUb1plcm8gPSA0LAorICAgIFNh
bXBsZXJBZGRyZXNzTW9kZUNsYW1wVG9Cb3JkZXJDb2xvciA9IDUsCit9OworCitfTVRMX0VOVU0o
TlM6OlVJbnRlZ2VyLCBTYW1wbGVyQm9yZGVyQ29sb3IpIHsKKyAgICBTYW1wbGVyQm9yZGVyQ29s
b3JUcmFuc3BhcmVudEJsYWNrID0gMCwKKyAgICBTYW1wbGVyQm9yZGVyQ29sb3JPcGFxdWVCbGFj
ayA9IDEsCisgICAgU2FtcGxlckJvcmRlckNvbG9yT3BhcXVlV2hpdGUgPSAyLAorfTsKKworY2xh
c3MgU2FtcGxlckRlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8U2FtcGxlckRlc2NyaXB0
b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFNhbXBsZXJEZXNjcmlwdG9yKiBhbGxv
YygpOworCisgICAgY2xhc3MgU2FtcGxlckRlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAg
ICBNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgICAgICAgIG1pbkZpbHRlcigpIGNvbnN0OworICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWluRmlsdGVyKE1UTDo6U2FtcGxl
ck1pbk1hZ0ZpbHRlciBtaW5GaWx0ZXIpOworCisgICAgTVRMOjpTYW1wbGVyTWluTWFnRmlsdGVy
ICAgICAgICBtYWdGaWx0ZXIoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldE1hZ0ZpbHRlcihNVEw6OlNhbXBsZXJNaW5NYWdGaWx0ZXIgbWFnRmlsdGVyKTsK
KworICAgIE1UTDo6U2FtcGxlck1pcEZpbHRlciAgICAgICAgICAgbWlwRmlsdGVyKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNaXBGaWx0ZXIoTVRMOjpT
YW1wbGVyTWlwRmlsdGVyIG1pcEZpbHRlcik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgIG1heEFuaXNvdHJvcHkoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1heEFuaXNvdHJvcHkoTlM6OlVJbnRlZ2VyIG1heEFuaXNvdHJvcHkp
OworCisgICAgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgICAgICAgICBzQWRkcmVzc01vZGUoKSBj
b25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNBZGRyZXNzTW9k
ZShNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZSBzQWRkcmVzc01vZGUpOworCisgICAgTVRMOjpTYW1w
bGVyQWRkcmVzc01vZGUgICAgICAgICB0QWRkcmVzc01vZGUoKSBjb25zdDsKKyAgICB2b2lkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRBZGRyZXNzTW9kZShNVEw6OlNhbXBsZXJBZGRy
ZXNzTW9kZSB0QWRkcmVzc01vZGUpOworCisgICAgTVRMOjpTYW1wbGVyQWRkcmVzc01vZGUgICAg
ICAgICByQWRkcmVzc01vZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFJBZGRyZXNzTW9kZShNVEw6OlNhbXBsZXJBZGRyZXNzTW9kZSByQWRkcmVzc01v
ZGUpOworCisgICAgTVRMOjpTYW1wbGVyQm9yZGVyQ29sb3IgICAgICAgICBib3JkZXJDb2xvcigp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Qm9yZGVyQ29s
b3IoTVRMOjpTYW1wbGVyQm9yZGVyQ29sb3IgYm9yZGVyQ29sb3IpOworCisgICAgYm9vbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkQ29vcmRpbmF0ZXMoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE5vcm1hbGl6ZWRDb29yZGluYXRl
cyhib29sIG5vcm1hbGl6ZWRDb29yZGluYXRlcyk7CisKKyAgICBmbG9hdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZE1pbkNsYW1wKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRMb2RNaW5DbGFtcChmbG9hdCBsb2RNaW5DbGFtcCk7CisKKyAgICBm
bG9hdCAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZE1heENsYW1wKCkgY29uc3Q7CisgICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMb2RNYXhDbGFtcChmbG9hdCBsb2RN
YXhDbGFtcCk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZEF2ZXJh
Z2UoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldExvZEF2
ZXJhZ2UoYm9vbCBsb2RBdmVyYWdlKTsKKworICAgIE1UTDo6Q29tcGFyZUZ1bmN0aW9uICAgICAg
ICAgICAgY29tcGFyZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRDb21wYXJlRnVuY3Rpb24oTVRMOjpDb21wYXJlRnVuY3Rpb24gY29tcGFy
ZUZ1bmN0aW9uKTsKKworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9y
dEFyZ3VtZW50QnVmZmVycygpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3VwcG9ydEFyZ3VtZW50QnVmZmVycyhib29sIHN1cHBvcnRBcmd1bWVudEJ1ZmZl
cnMpOworCisgICAgTlM6OlN0cmluZyogICAgICAgICAgICAgICAgICAgICBsYWJlbCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TGFiZWwoY29uc3QgTlM6
OlN0cmluZyogbGFiZWwpOworfTsKKworY2xhc3MgU2FtcGxlclN0YXRlIDogcHVibGljIE5TOjpS
ZWZlcmVuY2luZzxTYW1wbGVyU3RhdGU+Cit7CitwdWJsaWM6CisgICAgTlM6OlN0cmluZyogICBs
YWJlbCgpIGNvbnN0OworCisgICAgY2xhc3MgRGV2aWNlKiBkZXZpY2UoKSBjb25zdDsKK307CisK
K30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlckRl
c2NyaXB0b3IqIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpTYW1wbGVyRGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NM
UyhNVExTYW1wbGVyRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6U2FtcGxlckRlc2NyaXB0b3IqIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmluaXQo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U2FtcGxlckRlc2NyaXB0b3I+
KCk7Cit9CisKKy8vIHByb3BlcnR5OiBtaW5GaWx0ZXIKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxl
ck1pbk1hZ0ZpbHRlciBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjptaW5GaWx0ZXIoKSBjb25zdAor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtaW5GaWx0ZXIpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRNaW5GaWx0ZXIoTVRMOjpTYW1wbGVyTWlu
TWFnRmlsdGVyIG1pbkZpbHRlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRo
aXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWluRmlsdGVyXyksIG1pbkZpbHRlcik7Cit9CisKKy8v
IHByb3BlcnR5OiBtYWdGaWx0ZXIKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRl
ciBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjptYWdGaWx0ZXIoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlcj4odGhpcywgX01U
TF9QUklWQVRFX1NFTChtYWdGaWx0ZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNh
bXBsZXJEZXNjcmlwdG9yOjpzZXRNYWdGaWx0ZXIoTVRMOjpTYW1wbGVyTWluTWFnRmlsdGVyIG1h
Z0ZpbHRlcikKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0TWFnRmlsdGVyXyksIG1hZ0ZpbHRlcik7Cit9CisKKy8vIHByb3BlcnR5OiBt
aXBGaWx0ZXIKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlck1pcEZpbHRlciBNVEw6OlNhbXBsZXJE
ZXNjcmlwdG9yOjptaXBGaWx0ZXIoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6U2FtcGxlck1pcEZpbHRlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChtaXBG
aWx0ZXIpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpz
ZXRNaXBGaWx0ZXIoTVRMOjpTYW1wbGVyTWlwRmlsdGVyIG1pcEZpbHRlcikKK3sKKyAgICBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TWlwRmlsdGVy
XyksIG1pcEZpbHRlcik7Cit9CisKKy8vIHByb3BlcnR5OiBtYXhBbmlzb3Ryb3B5CitfTVRMX0lO
TElORSBOUzo6VUludGVnZXIgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bWF4QW5pc290cm9weSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1heEFuaXNvdHJvcHkpKTsKK30KKworX01UTF9JTkxJTkUg
dm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRNYXhBbmlzb3Ryb3B5KE5TOjpVSW50ZWdl
ciBtYXhBbmlzb3Ryb3B5KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRNYXhBbmlzb3Ryb3B5XyksIG1heEFuaXNvdHJvcHkpOworfQor
CisvLyBwcm9wZXJ0eTogc0FkZHJlc3NNb2RlCitfTVRMX0lOTElORSBNVEw6OlNhbXBsZXJBZGRy
ZXNzTW9kZSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpzQWRkcmVzc01vZGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNBZGRyZXNzTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldFNBZGRyZXNzTW9kZShNVEw6OlNhbXBsZXJB
ZGRyZXNzTW9kZSBzQWRkcmVzc01vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNBZGRyZXNzTW9kZV8pLCBzQWRkcmVzc01vZGUp
OworfQorCisvLyBwcm9wZXJ0eTogdEFkZHJlc3NNb2RlCitfTVRMX0lOTElORSBNVEw6OlNhbXBs
ZXJBZGRyZXNzTW9kZSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjp0QWRkcmVzc01vZGUoKSBjb25z
dAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2FtcGxlckFkZHJlc3NN
b2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHRBZGRyZXNzTW9kZSkpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldFRBZGRyZXNzTW9kZShNVEw6OlNh
bXBsZXJBZGRyZXNzTW9kZSB0QWRkcmVzc01vZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFRBZGRyZXNzTW9kZV8pLCB0QWRkcmVz
c01vZGUpOworfQorCisvLyBwcm9wZXJ0eTogckFkZHJlc3NNb2RlCitfTVRMX0lOTElORSBNVEw6
OlNhbXBsZXJBZGRyZXNzTW9kZSBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpyQWRkcmVzc01vZGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6U2FtcGxlckFk
ZHJlc3NNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJBZGRyZXNzTW9kZSkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldFJBZGRyZXNzTW9kZShN
VEw6OlNhbXBsZXJBZGRyZXNzTW9kZSByQWRkcmVzc01vZGUpCit7CisgICAgT2JqZWN0OjpzZW5k
TWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFJBZGRyZXNzTW9kZV8pLCBy
QWRkcmVzc01vZGUpOworfQorCisvLyBwcm9wZXJ0eTogYm9yZGVyQ29sb3IKK19NVExfSU5MSU5F
IE1UTDo6U2FtcGxlckJvcmRlckNvbG9yIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OmJvcmRlckNv
bG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNhbXBs
ZXJCb3JkZXJDb2xvcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChib3JkZXJDb2xvcikpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldEJvcmRlckNvbG9y
KE1UTDo6U2FtcGxlckJvcmRlckNvbG9yIGJvcmRlckNvbG9yKQoreworICAgIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCb3JkZXJDb2xvcl8pLCBi
b3JkZXJDb2xvcik7Cit9CisKKy8vIHByb3BlcnR5OiBub3JtYWxpemVkQ29vcmRpbmF0ZXMKK19N
VExfSU5MSU5FIGJvb2wgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bm9ybWFsaXplZENvb3JkaW5h
dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKG5vcm1hbGl6ZWRDb29yZGluYXRlcykpOworfQorCitfTVRMX0lO
TElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldE5vcm1hbGl6ZWRDb29yZGluYXRl
cyhib29sIG5vcm1hbGl6ZWRDb29yZGluYXRlcykKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0Tm9ybWFsaXplZENvb3JkaW5hdGVzXyks
IG5vcm1hbGl6ZWRDb29yZGluYXRlcyk7Cit9CisKKy8vIHByb3BlcnR5OiBsb2RNaW5DbGFtcAor
X01UTF9JTkxJTkUgZmxvYXQgTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6bG9kTWluQ2xhbXAoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPGZsb2F0Pih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGxvZE1pbkNsYW1wKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpT
YW1wbGVyRGVzY3JpcHRvcjo6c2V0TG9kTWluQ2xhbXAoZmxvYXQgbG9kTWluQ2xhbXApCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldExv
ZE1pbkNsYW1wXyksIGxvZE1pbkNsYW1wKTsKK30KKworLy8gcHJvcGVydHk6IGxvZE1heENsYW1w
CitfTVRMX0lOTElORSBmbG9hdCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpsb2RNYXhDbGFtcCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8ZmxvYXQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwobG9kTWF4Q2xhbXApKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlNhbXBsZXJEZXNjcmlwdG9yOjpzZXRMb2RNYXhDbGFtcChmbG9hdCBsb2RNYXhDbGFtcCkKK3sK
KyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0
TG9kTWF4Q2xhbXBfKSwgbG9kTWF4Q2xhbXApOworfQorCisvLyBwcm9wZXJ0eTogbG9kQXZlcmFn
ZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpsb2RBdmVyYWdlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKGxvZEF2ZXJhZ2UpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNh
bXBsZXJEZXNjcmlwdG9yOjpzZXRMb2RBdmVyYWdlKGJvb2wgbG9kQXZlcmFnZSkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0TG9kQXZl
cmFnZV8pLCBsb2RBdmVyYWdlKTsKK30KKworLy8gcHJvcGVydHk6IGNvbXBhcmVGdW5jdGlvbgor
X01UTF9JTkxJTkUgTVRMOjpDb21wYXJlRnVuY3Rpb24gTVRMOjpTYW1wbGVyRGVzY3JpcHRvcjo6
Y29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkNvbXBhcmVGdW5jdGlvbj4odGhpcywgX01UTF9QUklWQVRFX1NFTChjb21wYXJlRnVu
Y3Rpb24pKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlNhbXBsZXJEZXNjcmlwdG9yOjpz
ZXRDb21wYXJlRnVuY3Rpb24oTVRMOjpDb21wYXJlRnVuY3Rpb24gY29tcGFyZUZ1bmN0aW9uKQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRDb21wYXJlRnVuY3Rpb25fKSwgY29tcGFyZUZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6
IHN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMKK19NVExfSU5MSU5FIGJvb2wgTVRMOjpTYW1wbGVyRGVz
Y3JpcHRvcjo6c3VwcG9ydEFyZ3VtZW50QnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2VTYWZlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3VwcG9y
dEFyZ3VtZW50QnVmZmVycykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRl
c2NyaXB0b3I6OnNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnMoYm9vbCBzdXBwb3J0QXJndW1lbnRC
dWZmZXJzKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzXyksIHN1cHBvcnRBcmd1bWVudEJ1ZmZl
cnMpOworfQorCisvLyBwcm9wZXJ0eTogbGFiZWwKK19NVExfSU5MSU5FIE5TOjpTdHJpbmcqIE1U
TDo6U2FtcGxlckRlc2NyaXB0b3I6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0
OjpzZW5kTWVzc2FnZTxOUzo6U3RyaW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkp
OworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6U2FtcGxlckRlc2NyaXB0b3I6OnNldExhYmVs
KGNvbnN0IE5TOjpTdHJpbmcqIGxhYmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9p
ZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRMYWJlbF8pLCBsYWJlbCk7Cit9CisKKy8vIHBy
b3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6OlN0cmluZyogTVRMOjpTYW1wbGVyU3RhdGU6
OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6U3Ry
aW5nKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChsYWJlbCkpOworfQorCisvLyBwcm9wZXJ0eTog
ZGV2aWNlCitfTVRMX0lOTElORSBNVEw6OkRldmljZSogTVRMOjpTYW1wbGVyU3RhdGU6OmRldmlj
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpEZXZpY2Uq
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGRldmljZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlw
dG9yLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExTdGFnZUlu
cHV0T3V0cHV0RGVzY3JpcHRvci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc5MjQ0ZTI0ZTAyMTkzOTIzYTNj
NDE3M2QxNmQ5NTBjMWVlNDEyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvci5ocHAKQEAg
LTAsMCArMSwzODEgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8KKy8vIE1ldGFsL01UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8g
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
Ky8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisjaW5jbHVk
ZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBw
PgorCisjaW5jbHVkZSAiTVRMU3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IuaHBwIgorCituYW1l
c3BhY2UgTVRMCit7CitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBBdHRyaWJ1dGVGb3JtYXQpIHsK
KyAgICBBdHRyaWJ1dGVGb3JtYXRJbnZhbGlkID0gMCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVQ2hh
cjIgPSAxLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyMyA9IDIsCisgICAgQXR0cmlidXRlRm9y
bWF0VUNoYXI0ID0gMywKKyAgICBBdHRyaWJ1dGVGb3JtYXRDaGFyMiA9IDQsCisgICAgQXR0cmli
dXRlRm9ybWF0Q2hhcjMgPSA1LAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXI0ID0gNiwKKyAgICBB
dHRyaWJ1dGVGb3JtYXRVQ2hhcjJOb3JtYWxpemVkID0gNywKKyAgICBBdHRyaWJ1dGVGb3JtYXRV
Q2hhcjNOb3JtYWxpemVkID0gOCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVQ2hhcjROb3JtYWxpemVk
ID0gOSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRDaGFyMk5vcm1hbGl6ZWQgPSAxMCwKKyAgICBBdHRy
aWJ1dGVGb3JtYXRDaGFyM05vcm1hbGl6ZWQgPSAxMSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRDaGFy
NE5vcm1hbGl6ZWQgPSAxMiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnQyID0gMTMsCisgICAg
QXR0cmlidXRlRm9ybWF0VVNob3J0MyA9IDE0LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVTaG9ydDQg
PSAxNSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydDIgPSAxNiwKKyAgICBBdHRyaWJ1dGVGb3Jt
YXRTaG9ydDMgPSAxNywKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydDQgPSAxOCwKKyAgICBBdHRy
aWJ1dGVGb3JtYXRVU2hvcnQyTm9ybWFsaXplZCA9IDE5LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVT
aG9ydDNOb3JtYWxpemVkID0gMjAsCisgICAgQXR0cmlidXRlRm9ybWF0VVNob3J0NE5vcm1hbGl6
ZWQgPSAyMSwKKyAgICBBdHRyaWJ1dGVGb3JtYXRTaG9ydDJOb3JtYWxpemVkID0gMjIsCisgICAg
QXR0cmlidXRlRm9ybWF0U2hvcnQzTm9ybWFsaXplZCA9IDIzLAorICAgIEF0dHJpYnV0ZUZvcm1h
dFNob3J0NE5vcm1hbGl6ZWQgPSAyNCwKKyAgICBBdHRyaWJ1dGVGb3JtYXRIYWxmMiA9IDI1LAor
ICAgIEF0dHJpYnV0ZUZvcm1hdEhhbGYzID0gMjYsCisgICAgQXR0cmlidXRlRm9ybWF0SGFsZjQg
PSAyNywKKyAgICBBdHRyaWJ1dGVGb3JtYXRGbG9hdCA9IDI4LAorICAgIEF0dHJpYnV0ZUZvcm1h
dEZsb2F0MiA9IDI5LAorICAgIEF0dHJpYnV0ZUZvcm1hdEZsb2F0MyA9IDMwLAorICAgIEF0dHJp
YnV0ZUZvcm1hdEZsb2F0NCA9IDMxLAorICAgIEF0dHJpYnV0ZUZvcm1hdEludCA9IDMyLAorICAg
IEF0dHJpYnV0ZUZvcm1hdEludDIgPSAzMywKKyAgICBBdHRyaWJ1dGVGb3JtYXRJbnQzID0gMzQs
CisgICAgQXR0cmlidXRlRm9ybWF0SW50NCA9IDM1LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVJbnQg
PSAzNiwKKyAgICBBdHRyaWJ1dGVGb3JtYXRVSW50MiA9IDM3LAorICAgIEF0dHJpYnV0ZUZvcm1h
dFVJbnQzID0gMzgsCisgICAgQXR0cmlidXRlRm9ybWF0VUludDQgPSAzOSwKKyAgICBBdHRyaWJ1
dGVGb3JtYXRJbnQxMDEwMTAyTm9ybWFsaXplZCA9IDQwLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVJ
bnQxMDEwMTAyTm9ybWFsaXplZCA9IDQxLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyNE5vcm1h
bGl6ZWRfQkdSQSA9IDQyLAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyID0gNDUsCisgICAgQXR0
cmlidXRlRm9ybWF0Q2hhciA9IDQ2LAorICAgIEF0dHJpYnV0ZUZvcm1hdFVDaGFyTm9ybWFsaXpl
ZCA9IDQ3LAorICAgIEF0dHJpYnV0ZUZvcm1hdENoYXJOb3JtYWxpemVkID0gNDgsCisgICAgQXR0
cmlidXRlRm9ybWF0VVNob3J0ID0gNDksCisgICAgQXR0cmlidXRlRm9ybWF0U2hvcnQgPSA1MCwK
KyAgICBBdHRyaWJ1dGVGb3JtYXRVU2hvcnROb3JtYWxpemVkID0gNTEsCisgICAgQXR0cmlidXRl
Rm9ybWF0U2hvcnROb3JtYWxpemVkID0gNTIsCisgICAgQXR0cmlidXRlRm9ybWF0SGFsZiA9IDUz
LAorfTsKKworX01UTF9FTlVNKE5TOjpVSW50ZWdlciwgSW5kZXhUeXBlKSB7CisgICAgSW5kZXhU
eXBlVUludDE2ID0gMCwKKyAgICBJbmRleFR5cGVVSW50MzIgPSAxLAorfTsKKworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgU3RlcEZ1bmN0aW9uKSB7CisgICAgU3RlcEZ1bmN0aW9uQ29uc3RhbnQg
PSAwLAorICAgIFN0ZXBGdW5jdGlvblBlclZlcnRleCA9IDEsCisgICAgU3RlcEZ1bmN0aW9uUGVy
SW5zdGFuY2UgPSAyLAorICAgIFN0ZXBGdW5jdGlvblBlclBhdGNoID0gMywKKyAgICBTdGVwRnVu
Y3Rpb25QZXJQYXRjaENvbnRyb2xQb2ludCA9IDQsCisgICAgU3RlcEZ1bmN0aW9uVGhyZWFkUG9z
aXRpb25JbkdyaWRYID0gNSwKKyAgICBTdGVwRnVuY3Rpb25UaHJlYWRQb3NpdGlvbkluR3JpZFkg
PSA2LAorICAgIFN0ZXBGdW5jdGlvblRocmVhZFBvc2l0aW9uSW5HcmlkWEluZGV4ZWQgPSA3LAor
ICAgIFN0ZXBGdW5jdGlvblRocmVhZFBvc2l0aW9uSW5HcmlkWUluZGV4ZWQgPSA4LAorfTsKKwor
Y2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWluZzxCdWZmZXJM
YXlvdXREZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBCdWZmZXJMYXlv
dXREZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRv
ciogICAgICAgIGluaXQoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJpZGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3RyaWRlKE5TOjpVSW50ZWdlciBzdHJpZGUpOworCisgICAgTVRMOjpTdGVwRnVu
Y3Rpb24gICAgICAgICAgICAgICAgICAgIHN0ZXBGdW5jdGlvbigpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGVwRnVuY3Rpb24oTVRMOjpTdGVw
RnVuY3Rpb24gc3RlcEZ1bmN0aW9uKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGVwUmF0ZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRTdGVwUmF0ZShOUzo6VUludGVnZXIgc3RlcFJhdGUpOworfTsKKwor
Y2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2lu
ZzxCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNs
YXNzIEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIEJ1
ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIEJ1
ZmZlckxheW91dERlc2NyaXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgaW5k
ZXgpOworCisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
T2JqZWN0KGNvbnN0IGNsYXNzIEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIGJ1ZmZlckRlc2MsIE5T
OjpVSW50ZWdlciBpbmRleCk7Cit9OworCitjbGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9yIDogcHVi
bGljIE5TOjpDb3B5aW5nPEF0dHJpYnV0ZURlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNsYXNzIEF0dHJpYnV0ZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBBdHRy
aWJ1dGVEZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgTVRMOjpBdHRyaWJ1dGVGb3Jt
YXQgICAgICAgICAgICAgIGZvcm1hdCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRGb3JtYXQoTVRMOjpBdHRyaWJ1dGVGb3JtYXQgZm9ybWF0KTsKKwor
ICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQoKSBjb25zdDsKKyAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2Zmc2V0KE5TOjpVSW50ZWdl
ciBvZmZzZXQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZl
ckluZGV4KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEJ1ZmZlckluZGV4KE5TOjpVSW50ZWdlciBidWZmZXJJbmRleCk7Cit9OworCitjbGFzcyBBdHRy
aWJ1dGVEZXNjcmlwdG9yQXJyYXkgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPEF0dHJpYnV0ZURl
c2NyaXB0b3JBcnJheT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgQXR0cmlidXRlRGVz
Y3JpcHRvckFycmF5KiBhbGxvYygpOworCisgICAgY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvckFy
cmF5KiAgICAgICAgaW5pdCgpOworCisgICAgY2xhc3MgQXR0cmlidXRlRGVzY3JpcHRvciogICAg
ICAgICAgICAgb2JqZWN0KE5TOjpVSW50ZWdlciBpbmRleCk7CisKKyAgICB2b2lkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRPYmplY3QoY29uc3QgY2xhc3MgQXR0cmlidXRl
RGVzY3JpcHRvciogYXR0cmlidXRlRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KTsKK307CisKK2Ns
YXNzIFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yIDogcHVibGljIE5TOjpDb3B5aW5nPFN0YWdl
SW5wdXRPdXRwdXREZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFzcyBTdGFn
ZUlucHV0T3V0cHV0RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFN0YWdlSW5wdXRP
dXRwdXREZXNjcmlwdG9yKiAgICAgICAgaW5pdCgpOworCisgICAgc3RhdGljIGNsYXNzIFN0YWdl
SW5wdXRPdXRwdXREZXNjcmlwdG9yKiBzdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcigpOworCisg
ICAgY2xhc3MgQnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5KiAgICAgICBsYXlvdXRzKCkgY29u
c3Q7CisKKyAgICBjbGFzcyBBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqICAgICAgICAgIGF0dHJp
YnV0ZXMoKSBjb25zdDsKKworICAgIE1UTDo6SW5kZXhUeXBlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXhUeXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRJbmRleFR5cGUoTVRMOjpJbmRleFR5cGUgaW5kZXhUeXBlKTsKKwor
ICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhCdWZmZXJJ
bmRleCgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0SW5kZXhCdWZmZXJJbmRleChOUzo6VUludGVnZXIgaW5kZXhCdWZmZXJJbmRleCk7CisK
KyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0KCk7Cit9
OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkJ1ZmZl
ckxheW91dERlc2NyaXB0b3IqIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0
b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMQnVmZmVyTGF5b3V0RGVzY3JpcHRvcikpOworfQorCisv
LyBtZXRob2Q6IGluaXQKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvciog
TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3Bl
cnR5OiBzdHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OkJ1ZmZlckxheW91dERl
c2NyaXB0b3I6OnN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0cmlkZSkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c2V0U3RyaWRlKE5T
OjpVSW50ZWdlciBzdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0cmlkZV8pLCBzdHJpZGUpOworfQorCisvLyBwcm9wZXJ0
eTogc3RlcEZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OlN0ZXBGdW5jdGlvbiBNVEw6OkJ1ZmZl
ckxheW91dERlc2NyaXB0b3I6OnN0ZXBGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9i
amVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpTdGVwRnVuY3Rpb24+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwoc3RlcEZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpCdWZmZXJMYXlv
dXREZXNjcmlwdG9yOjpzZXRTdGVwRnVuY3Rpb24oTVRMOjpTdGVwRnVuY3Rpb24gc3RlcEZ1bmN0
aW9uKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRF
X1NFTChzZXRTdGVwRnVuY3Rpb25fKSwgc3RlcEZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6
IHN0ZXBSYXRlCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRMOjpCdWZmZXJMYXlvdXREZXNj
cmlwdG9yOjpzdGVwUmF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZXBSYXRlKSk7Cit9CisK
K19NVExfSU5MSU5FIHZvaWQgTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzZXRTdGVwUmF0
ZShOUzo6VUludGVnZXIgc3RlcFJhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0ZXBSYXRlXyksIHN0ZXBSYXRlKTsKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6QnVmZmVyTGF5b3V0RGVz
Y3JpcHRvckFycmF5KiBNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheTo6YWxsb2MoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OkJ1ZmZlckxheW91dERlc2NyaXB0
b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkp
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OkJ1ZmZlckxheW91dERl
c2NyaXB0b3JBcnJheSogTVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXk6OmluaXQoKQor
eworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRv
ckFycmF5PigpOworfQorCisvLyBtZXRob2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19N
VExfSU5MSU5FIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogTVRMOjpCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yQXJyYXk6Om9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJu
IE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yKj4odGhpcywg
X01UTF9QUklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgaW5kZXgpOworfQor
CisvLyBtZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2
b2lkIE1UTDo6QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRM
OjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBidWZmZXJEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYnVmZmVyRGVzYywgaW5kZXgpOworfQor
CisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNj
cmlwdG9yKiBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4g
TlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVf
Q0xTKE1UTEF0dHJpYnV0ZURlc2NyaXB0b3IpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRM
X0lOTElORSBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3IqIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRv
cjo6aW5pdCgpCit7CisgICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpBdHRyaWJ1dGVE
ZXNjcmlwdG9yPigpOworfQorCisvLyBwcm9wZXJ0eTogZm9ybWF0CitfTVRMX0lOTElORSBNVEw6
OkF0dHJpYnV0ZUZvcm1hdCBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3I6OmZvcm1hdCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpBdHRyaWJ1dGVGb3JtYXQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yOjpzZXRGb3JtYXQoTVRMOjpBdHRyaWJ1dGVGb3JtYXQg
Zm9ybWF0KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRGb3JtYXRfKSwgZm9ybWF0KTsKK30KKworLy8gcHJvcGVydHk6IG9mZnNldAor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6b2Zmc2V0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2Zmc2V0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yOjpzZXRPZmZzZXQoTlM6OlVJbnRlZ2VyIG9mZnNldCkK
K3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
c2V0T2Zmc2V0XyksIG9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJJbmRleAorX01U
TF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6YnVmZmVySW5k
ZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdl
cj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXJJbmRleCkpOworfQorCitfTVRMX0lOTElO
RSB2b2lkIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvcjo6c2V0QnVmZmVySW5kZXgoTlM6OlVJbnRl
Z2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywg
X01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJJbmRleF8pLCBidWZmZXJJbmRleCk7Cit9CisKKy8v
IHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0
b3JBcnJheSogTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICBy
ZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk+KF9N
VExfUFJJVkFURV9DTFMoTVRMQXR0cmlidXRlRGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1l
dGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRMOjpBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIE1U
TDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9i
amVjdDo6aW5pdDxNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8gbWV0
aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OkF0dHJpYnV0
ZURlc2NyaXB0b3IqIE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5OjpvYmplY3QoTlM6OlVJ
bnRlZ2VyIGluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6QXR0
cmlidXRlRGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2JqZWN0QXRJbmRleGVk
U3Vic2NyaXB0XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9kOiBzZXRPYmplY3Q6YXRJbmRleGVk
U3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJh
eTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6QXR0cmlidXRlRGVzY3JpcHRvciogYXR0cmlidXRlRGVz
YywgTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4o
dGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGF0
dHJpYnV0ZURlc2MsIGluZGV4KTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExf
SU5MSU5FIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIE1UTDo6U3RhZ2VJbnB1dE91
dHB1dERlc2NyaXB0b3I6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8
TVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExTdGFn
ZUlucHV0T3V0cHV0RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3IqIE1UTDo6U3RhZ2VJbnB1dE91dHB1
dERlc2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6
U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHN0
YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yCitfTVRMX0lOTElORSBNVEw6OlN0YWdlSW5wdXRPdXRw
dXREZXNjcmlwdG9yKiBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjpzdGFnZUlucHV0
T3V0cHV0RGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMU3RhZ2VJ
bnB1dE91dHB1dERlc2NyaXB0b3IpLCBfTVRMX1BSSVZBVEVfU0VMKHN0YWdlSW5wdXRPdXRwdXRE
ZXNjcmlwdG9yKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYXlvdXRzCitfTVRMX0lOTElORSBNVEw6
OkJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogTVRMOjpTdGFnZUlucHV0T3V0cHV0RGVzY3Jp
cHRvcjo6bGF5b3V0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TVRMOjpCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KGxheW91dHMpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJpYnV0ZXMKK19NVExfSU5MSU5FIE1U
TDo6QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlw
dG9yOjphdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxNVEw6OkF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
YXR0cmlidXRlcykpOworfQorCisvLyBwcm9wZXJ0eTogaW5kZXhUeXBlCitfTVRMX0lOTElORSBN
VEw6OkluZGV4VHlwZSBNVEw6OlN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjppbmRleFR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6SW5kZXhUeXBl
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGluZGV4VHlwZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OnNldEluZGV4VHlwZShNVEw6Oklu
ZGV4VHlwZSBpbmRleFR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlz
LCBfTVRMX1BSSVZBVEVfU0VMKHNldEluZGV4VHlwZV8pLCBpbmRleFR5cGUpOworfQorCisvLyBw
cm9wZXJ0eTogaW5kZXhCdWZmZXJJbmRleAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
U3RhZ2VJbnB1dE91dHB1dERlc2NyaXB0b3I6OmluZGV4QnVmZmVySW5kZXgoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChpbmRleEJ1ZmZlckluZGV4KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRM
OjpTdGFnZUlucHV0T3V0cHV0RGVzY3JpcHRvcjo6c2V0SW5kZXhCdWZmZXJJbmRleChOUzo6VUlu
dGVnZXIgaW5kZXhCdWZmZXJJbmRleCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SW5kZXhCdWZmZXJJbmRleF8pLCBpbmRleEJ1ZmZl
ckluZGV4KTsKK30KKworLy8gbWV0aG9kOiByZXNldAorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlN0
YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yOjpyZXNldCgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVGV4dHVyZS5ocHAgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVGV4dHVyZS5ocHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWEyYmE0OTBlN2FmODc1YzYyM2RmMTgwMDE4YzQwMTRjZTQwMDM5MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExUZXh0dXJl
LmhwcApAQCAtMCwwICsxLDY1OCBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLworLy8gTWV0YWwvTVRMVGV4dHVyZS5ocHAKKy8vCisvLyBDb3B5cmln
aHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVz
LmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZh
dGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1
ZGUgIk1UTFBpeGVsRm9ybWF0LmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisjaW5j
bHVkZSAiTVRMVGV4dHVyZS5ocHAiCisjaW5jbHVkZSAiTVRMVHlwZXMuaHBwIgorI2luY2x1ZGUg
PElPU3VyZmFjZS9JT1N1cmZhY2VSZWYuaD4KKworbmFtZXNwYWNlIE1UTAoreworX01UTF9FTlVN
KE5TOjpVSW50ZWdlciwgVGV4dHVyZVR5cGUpIHsKKyAgICBUZXh0dXJlVHlwZTFEID0gMCwKKyAg
ICBUZXh0dXJlVHlwZTFEQXJyYXkgPSAxLAorICAgIFRleHR1cmVUeXBlMkQgPSAyLAorICAgIFRl
eHR1cmVUeXBlMkRBcnJheSA9IDMsCisgICAgVGV4dHVyZVR5cGUyRE11bHRpc2FtcGxlID0gNCwK
KyAgICBUZXh0dXJlVHlwZUN1YmUgPSA1LAorICAgIFRleHR1cmVUeXBlQ3ViZUFycmF5ID0gNiwK
KyAgICBUZXh0dXJlVHlwZTNEID0gNywKKyAgICBUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGVBcnJh
eSA9IDgsCisgICAgVGV4dHVyZVR5cGVUZXh0dXJlQnVmZmVyID0gOSwKK307CisKK19NVExfRU5V
TSh1aW50OF90LCBUZXh0dXJlU3dpenpsZSkgeworICAgIFRleHR1cmVTd2l6emxlWmVybyA9IDAs
CisgICAgVGV4dHVyZVN3aXp6bGVPbmUgPSAxLAorICAgIFRleHR1cmVTd2l6emxlUmVkID0gMiwK
KyAgICBUZXh0dXJlU3dpenpsZUdyZWVuID0gMywKKyAgICBUZXh0dXJlU3dpenpsZUJsdWUgPSA0
LAorICAgIFRleHR1cmVTd2l6emxlQWxwaGEgPSA1LAorfTsKKworc3RydWN0IFRleHR1cmVTd2l6
emxlQ2hhbm5lbHMKK3sKKyAgICBNVEw6OlRleHR1cmVTd2l6emxlIHJlZDsKKyAgICBNVEw6OlRl
eHR1cmVTd2l6emxlIGdyZWVuOworICAgIE1UTDo6VGV4dHVyZVN3aXp6bGUgYmx1ZTsKKyAgICBN
VEw6OlRleHR1cmVTd2l6emxlIGFscGhhOworfSBfTVRMX1BBQ0tFRDsKKworY2xhc3MgU2hhcmVk
VGV4dHVyZUhhbmRsZSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNpbmc8U2hhcmVkVGV4dHVyZUhhbmRs
ZT4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgU2hhcmVkVGV4dHVyZUhhbmRsZSogYWxs
b2MoKTsKKworICAgIGNsYXNzIFNoYXJlZFRleHR1cmVIYW5kbGUqICAgICAgICBpbml0KCk7CisK
KyAgICBjbGFzcyBEZXZpY2UqICAgICAgICAgICAgICAgICAgICAgZGV2aWNlKCkgY29uc3Q7CisK
KyAgICBOUzo6U3RyaW5nKiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwoKSBjb25zdDsKK307
CisKK3N0cnVjdCBTaGFyZWRUZXh0dXJlSGFuZGxlUHJpdmF0ZQoreworfSBfTVRMX1BBQ0tFRDsK
KworX01UTF9PUFRJT05TKE5TOjpVSW50ZWdlciwgVGV4dHVyZVVzYWdlKSB7CisgICAgVGV4dHVy
ZVVzYWdlVW5rbm93biA9IDAsCisgICAgVGV4dHVyZVVzYWdlU2hhZGVyUmVhZCA9IDEsCisgICAg
VGV4dHVyZVVzYWdlU2hhZGVyV3JpdGUgPSAyLAorICAgIFRleHR1cmVVc2FnZVJlbmRlclRhcmdl
dCA9IDQsCisgICAgVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3ID0gMTYsCit9OworCitfTVRM
X0VOVU0oTlM6OkludGVnZXIsIFRleHR1cmVDb21wcmVzc2lvblR5cGUpIHsKKyAgICBUZXh0dXJl
Q29tcHJlc3Npb25UeXBlTG9zc2xlc3MgPSAwLAorICAgIFRleHR1cmVDb21wcmVzc2lvblR5cGVM
b3NzeSA9IDEsCit9OworCitjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29w
eWluZzxUZXh0dXJlRGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVGV4
dHVyZURlc2NyaXB0b3IqIGFsbG9jKCk7CisKKyAgICBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciog
ICAgICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciogdGV4
dHVyZTJERGVzY3JpcHRvcihNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBOUzo6VUludGVn
ZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKTsKKworICAgIHN0
YXRpYyBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvciogdGV4dHVyZUN1YmVEZXNjcmlwdG9yKE1UTDo6
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciBzaXplLCBib29sIG1pcG1hcHBl
ZCk7CisKKyAgICBzdGF0aWMgY2xhc3MgVGV4dHVyZURlc2NyaXB0b3IqIHRleHR1cmVCdWZmZXJE
ZXNjcmlwdG9yKE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciB3aWR0
aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zLCBNVEw6OlRleHR1cmVVc2Fn
ZSB1c2FnZSk7CisKKyAgICBNVEw6OlRleHR1cmVUeXBlICAgICAgICAgICAgICAgIHRleHR1cmVU
eXBlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZXh0
dXJlVHlwZShNVEw6OlRleHR1cmVUeXBlIHRleHR1cmVUeXBlKTsKKworICAgIE1UTDo6UGl4ZWxG
b3JtYXQgICAgICAgICAgICAgICAgcGl4ZWxGb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFBpeGVsRm9ybWF0KE1UTDo6UGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQpOworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgICAgICB3aWR0aCgp
IGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0V2lkdGgoTlM6
OlVJbnRlZ2VyIHdpZHRoKTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
aGVpZ2h0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRI
ZWlnaHQoTlM6OlVJbnRlZ2VyIGhlaWdodCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgIGRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXREZXB0aChOUzo6VUludGVnZXIgZGVwdGgpOworCisgICAgTlM6OlVJbnRlZ2VyICAg
ICAgICAgICAgICAgICAgICBtaXBtYXBMZXZlbENvdW50KCkgY29uc3Q7CisgICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRNaXBtYXBMZXZlbENvdW50KE5TOjpVSW50ZWdlciBt
aXBtYXBMZXZlbENvdW50KTsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICAgICAg
c2FtcGxlQ291bnQoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldFNhbXBsZUNvdW50KE5TOjpVSW50ZWdlciBzYW1wbGVDb3VudCk7CisKKyAgICBOUzo6VUlu
dGVnZXIgICAgICAgICAgICAgICAgICAgIGFycmF5TGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBcnJheUxlbmd0aChOUzo6VUludGVnZXIgYXJy
YXlMZW5ndGgpOworCisgICAgTVRMOjpSZXNvdXJjZU9wdGlvbnMgICAgICAgICAgICByZXNvdXJj
ZU9wdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFJlc291cmNlT3B0aW9ucyhNVEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMpOwor
CisgICAgTVRMOjpDUFVDYWNoZU1vZGUgICAgICAgICAgICAgICBjcHVDYWNoZU1vZGUoKSBjb25z
dDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENwdUNhY2hlTW9kZShN
VEw6OkNQVUNhY2hlTW9kZSBjcHVDYWNoZU1vZGUpOworCisgICAgTVRMOjpTdG9yYWdlTW9kZSAg
ICAgICAgICAgICAgICBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0U3RvcmFnZU1vZGUoTVRMOjpTdG9yYWdlTW9kZSBzdG9yYWdlTW9k
ZSk7CisKKyAgICBNVEw6OkhhemFyZFRyYWNraW5nTW9kZSAgICAgICAgIGhhemFyZFRyYWNraW5n
TW9kZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGF6
YXJkVHJhY2tpbmdNb2RlKE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIGhhemFyZFRyYWNraW5nTW9k
ZSk7CisKKyAgICBNVEw6OlRleHR1cmVVc2FnZSAgICAgICAgICAgICAgIHVzYWdlKCkgY29uc3Q7
CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRVc2FnZShNVEw6OlRleHR1
cmVVc2FnZSB1c2FnZSk7CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFs
bG93R1BVT3B0aW1pemVkQ29udGVudHMoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEFsbG93R1BVT3B0aW1pemVkQ29udGVudHMoYm9vbCBhbGxvd0dQVU9w
dGltaXplZENvbnRlbnRzKTsKKworICAgIE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyAgICAg
c3dpenpsZSgpIGNvbnN0OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
U3dpenpsZShNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgc3dpenpsZSk7Cit9OworCitjbGFz
cyBUZXh0dXJlIDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxUZXh0dXJlLCBSZXNvdXJjZT4KK3sK
K3B1YmxpYzoKKyAgICBjbGFzcyBSZXNvdXJjZSogICAgICAgICAgICAgcm9vdFJlc291cmNlKCkg
Y29uc3Q7CisKKyAgICBjbGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgcGFyZW50VGV4dHVyZSgp
IGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIHBhcmVudFJlbGF0aXZl
TGV2ZWwoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBwYXJlbnRS
ZWxhdGl2ZVNsaWNlKCkgY29uc3Q7CisKKyAgICBjbGFzcyBCdWZmZXIqICAgICAgICAgICAgICAg
YnVmZmVyKCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgYnVmZmVy
T2Zmc2V0KCkgY29uc3Q7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgYnVmZmVy
Qnl0ZXNQZXJSb3coKSBjb25zdDsKKworICAgIElPU3VyZmFjZVJlZiAgICAgICAgICAgICAgICBp
b3N1cmZhY2UoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICBpb3N1
cmZhY2VQbGFuZSgpIGNvbnN0OworCisgICAgTVRMOjpUZXh0dXJlVHlwZSAgICAgICAgICAgIHRl
eHR1cmVUeXBlKCkgY29uc3Q7CisKKyAgICBNVEw6OlBpeGVsRm9ybWF0ICAgICAgICAgICAgcGl4
ZWxGb3JtYXQoKSBjb25zdDsKKworICAgIE5TOjpVSW50ZWdlciAgICAgICAgICAgICAgICB3aWR0
aCgpIGNvbnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGhlaWdodCgpIGNv
bnN0OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGRlcHRoKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgbWlwbWFwTGV2ZWxDb3VudCgpIGNvbnN0
OworCisgICAgTlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50KCkgY29uc3Q7
CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgYXJyYXlMZW5ndGgoKSBjb25zdDsK
KworICAgIE1UTDo6VGV4dHVyZVVzYWdlICAgICAgICAgICB1c2FnZSgpIGNvbnN0OworCisgICAg
Ym9vbCAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlYWJsZSgpIGNvbnN0OworCisgICAgYm9v
bCAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyT25seSgpIGNvbnN0OworCisgICAg
TlM6OlVJbnRlZ2VyICAgICAgICAgICAgICAgIGZpcnN0TWlwbWFwSW5UYWlsKCkgY29uc3Q7CisK
KyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgdGFpbFNpemVJbkJ5dGVzKCkgY29uc3Q7
CisKKyAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgaXNTcGFyc2UoKSBjb25zdDsKKwor
ICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0dQVU9wdGltaXplZENvbnRlbnRz
KCkgY29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Qnl0ZXMoY29u
c3Qgdm9pZCogcGl4ZWxCeXRlcywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVyUm93LCBOUzo6VUludGVn
ZXIgYnl0ZXNQZXJJbWFnZSwgTVRMOjpSZWdpb24gcmVnaW9uLCBOUzo6VUludGVnZXIgbGV2ZWws
IE5TOjpVSW50ZWdlciBzbGljZSk7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
cmVwbGFjZVJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZlbCwgTlM6
OlVJbnRlZ2VyIHNsaWNlLCBjb25zdCB2b2lkKiBwaXhlbEJ5dGVzLCBOUzo6VUludGVnZXIgYnl0
ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBieXRlc1BlckltYWdlKTsKKworICAgIHZvaWQgICAgICAg
ICAgICAgICAgICAgICAgICBnZXRCeXRlcyhjb25zdCB2b2lkKiBwaXhlbEJ5dGVzLCBOUzo6VUlu
dGVnZXIgYnl0ZXNQZXJSb3csIE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVs
KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlUmVnaW9uKE1UTDo6
UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVsLCBjb25zdCB2b2lkKiBwaXhlbEJ5dGVz
LCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3cpOworCisgICAgY2xhc3MgVGV4dHVyZSogICAgICAg
ICAgICAgIG5ld1RleHR1cmVWaWV3KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpOworCisg
ICAgY2xhc3MgVGV4dHVyZSogICAgICAgICAgICAgIG5ld1RleHR1cmVWaWV3KE1UTDo6UGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQsIE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUsIE5TOjpSYW5n
ZSBsZXZlbFJhbmdlLCBOUzo6UmFuZ2Ugc2xpY2VSYW5nZSk7CisKKyAgICBjbGFzcyBTaGFyZWRU
ZXh0dXJlSGFuZGxlKiAgbmV3U2hhcmVkVGV4dHVyZUhhbmRsZSgpOworCisgICAgY2xhc3MgVGV4
dHVyZSogICAgICAgICAgICAgIHJlbW90ZVN0b3JhZ2VUZXh0dXJlKCkgY29uc3Q7CisKKyAgICBj
bGFzcyBUZXh0dXJlKiAgICAgICAgICAgICAgbmV3UmVtb3RlVGV4dHVyZVZpZXdGb3JEZXZpY2Uo
Y29uc3QgY2xhc3MgRGV2aWNlKiBkZXZpY2UpOworCisgICAgTVRMOjpUZXh0dXJlU3dpenpsZUNo
YW5uZWxzIHN3aXp6bGUoKSBjb25zdDsKKworICAgIGNsYXNzIFRleHR1cmUqICAgICAgICAgICAg
ICBuZXdUZXh0dXJlVmlldyhNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBNVEw6OlRleHR1
cmVUeXBlIHRleHR1cmVUeXBlLCBOUzo6UmFuZ2UgbGV2ZWxSYW5nZSwgTlM6OlJhbmdlIHNsaWNl
UmFuZ2UsIE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBzd2l6emxlKTsKK307CisKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6U2hhcmVkVGV4dHVyZUhh
bmRsZSogTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5T
OjpPYmplY3Q6OmFsbG9jPE1UTDo6U2hhcmVkVGV4dHVyZUhhbmRsZT4oX01UTF9QUklWQVRFX0NM
UyhNVExTaGFyZWRUZXh0dXJlSGFuZGxlKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9J
TkxJTkUgTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlKiBNVEw6OlNoYXJlZFRleHR1cmVIYW5kbGU6
OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6U2hhcmVkVGV4dHVy
ZUhhbmRsZT4oKTsKK30KKworLy8gcHJvcGVydHk6IGRldmljZQorX01UTF9JTkxJTkUgTVRMOjpE
ZXZpY2UqIE1UTDo6U2hhcmVkVGV4dHVyZUhhbmRsZTo6ZGV2aWNlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OkRldmljZSo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoZGV2aWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBsYWJlbAorX01UTF9JTkxJTkUgTlM6
OlN0cmluZyogTVRMOjpTaGFyZWRUZXh0dXJlSGFuZGxlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlN0cmluZyo+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwobGFiZWwpKTsKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5F
IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmFsbG9jKCkK
K3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpUZXh0dXJlRGVzY3JpcHRvcj4o
X01UTF9QUklWQVRFX0NMUyhNVExUZXh0dXJlRGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6
IGluaXQKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIE1UTDo6VGV4dHVyZURl
c2NyaXB0b3I6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VGV4
dHVyZURlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHRleHR1cmUyRERlc2Ny
aXB0b3JXaXRoUGl4ZWxGb3JtYXQ6d2lkdGg6aGVpZ2h0Om1pcG1hcHBlZDoKK19NVExfSU5MSU5F
IE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnRleHR1cmUy
RERlc2NyaXB0b3IoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJbnRlZ2VyIHdp
ZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVEZXNjcmlwdG9yKj4oX01UTF9QUklWQVRF
X0NMUyhNVExUZXh0dXJlRGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwodGV4dHVyZTJERGVz
Y3JpcHRvcldpdGhQaXhlbEZvcm1hdF93aWR0aF9oZWlnaHRfbWlwbWFwcGVkXyksIHBpeGVsRm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBtaXBtYXBwZWQpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiB0
ZXh0dXJlQ3ViZURlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6c2l6ZTptaXBtYXBwZWQ6CitfTVRM
X0lOTElORSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yKiBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjp0
ZXh0dXJlQ3ViZURlc2NyaXB0b3IoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTlM6OlVJ
bnRlZ2VyIHNpemUsIGJvb2wgbWlwbWFwcGVkKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6VGV4dHVyZURlc2NyaXB0b3IqPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFRleHR1
cmVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlQ3ViZURlc2NyaXB0b3JXaXRo
UGl4ZWxGb3JtYXRfc2l6ZV9taXBtYXBwZWRfKSwgcGl4ZWxGb3JtYXQsIHNpemUsIG1pcG1hcHBl
ZCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IHRleHR1cmVCdWZmZXJEZXNjcmlwdG9yV2l0aFBp
eGVsRm9ybWF0OndpZHRoOnJlc291cmNlT3B0aW9uczp1c2FnZToKK19NVExfSU5MSU5FIE1UTDo6
VGV4dHVyZURlc2NyaXB0b3IqIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnRleHR1cmVCdWZmZXJE
ZXNjcmlwdG9yKE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE5TOjpVSW50ZWdlciB3aWR0
aCwgTVRMOjpSZXNvdXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zLCBNVEw6OlRleHR1cmVVc2Fn
ZSB1c2FnZSkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlRleHR1cmVE
ZXNjcmlwdG9yKj4oX01UTF9QUklWQVRFX0NMUyhNVExUZXh0dXJlRGVzY3JpcHRvciksIF9NVExf
UFJJVkFURV9TRUwodGV4dHVyZUJ1ZmZlckRlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXRfd2lkdGhf
cmVzb3VyY2VPcHRpb25zX3VzYWdlXyksIHBpeGVsRm9ybWF0LCB3aWR0aCwgcmVzb3VyY2VPcHRp
b25zLCB1c2FnZSk7Cit9CisKKy8vIHByb3BlcnR5OiB0ZXh0dXJlVHlwZQorX01UTF9JTkxJTkUg
TVRMOjpUZXh0dXJlVHlwZSBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjp0ZXh0dXJlVHlwZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlVHlwZT4o
dGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlVHlwZSkpOworfQorCitfTVRMX0lOTElORSB2
b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNldFRleHR1cmVUeXBlKE1UTDo6VGV4dHVyZVR5
cGUgdGV4dHVyZVR5cGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFRleHR1cmVUeXBlXyksIHRleHR1cmVUeXBlKTsKK30KKworLy8g
cHJvcGVydHk6IHBpeGVsRm9ybWF0CitfTVRMX0lOTElORSBNVEw6OlBpeGVsRm9ybWF0IE1UTDo6
VGV4dHVyZURlc2NyaXB0b3I6OnBpeGVsRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlBpeGVsRm9ybWF0Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHBpeGVsRm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3Jp
cHRvcjo6c2V0UGl4ZWxGb3JtYXQoTVRMOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKK3sKKyAg
ICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0UGl4
ZWxGb3JtYXRfKSwgcGl4ZWxGb3JtYXQpOworfQorCisvLyBwcm9wZXJ0eTogd2lkdGgKK19NVExf
SU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjp3aWR0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHdpZHRoKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0
dXJlRGVzY3JpcHRvcjo6c2V0V2lkdGgoTlM6OlVJbnRlZ2VyIHdpZHRoKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRXaWR0aF8pLCB3
aWR0aCk7Cit9CisKKy8vIHByb3BlcnR5OiBoZWlnaHQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpoZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBP
YmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTCho
ZWlnaHQpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpz
ZXRIZWlnaHQoTlM6OlVJbnRlZ2VyIGhlaWdodCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdl
PHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0SGVpZ2h0XyksIGhlaWdodCk7Cit9CisK
Ky8vIHByb3BlcnR5OiBkZXB0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVy
ZURlc2NyaXB0b3I6OmRlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVz
c2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoZGVwdGgpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXREZXB0aChOUzo6VUlu
dGVnZXIgZGVwdGgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRM
X1BSSVZBVEVfU0VMKHNldERlcHRoXyksIGRlcHRoKTsKK30KKworLy8gcHJvcGVydHk6IG1pcG1h
cExldmVsQ291bnQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmVEZXNjcmlw
dG9yOjptaXBtYXBMZXZlbENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5k
TWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobWlwbWFwTGV2ZWxD
b3VudCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OnNl
dE1pcG1hcExldmVsQ291bnQoTlM6OlVJbnRlZ2VyIG1pcG1hcExldmVsQ291bnQpCit7CisgICAg
T2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldE1pcG1h
cExldmVsQ291bnRfKSwgbWlwbWFwTGV2ZWxDb3VudCk7Cit9CisKKy8vIHByb3BlcnR5OiBzYW1w
bGVDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6
OnNhbXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxO
Uzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2FtcGxlQ291bnQpKTsKK30KKwor
X01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3VudChO
Uzo6VUludGVnZXIgc2FtcGxlQ291bnQpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFNhbXBsZUNvdW50XyksIHNhbXBsZUNvdW50KTsK
K30KKworLy8gcHJvcGVydHk6IGFycmF5TGVuZ3RoCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIg
TVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6YXJyYXlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChhcnJheUxlbmd0aCkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2Ny
aXB0b3I6OnNldEFycmF5TGVuZ3RoKE5TOjpVSW50ZWdlciBhcnJheUxlbmd0aCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0QXJyYXlM
ZW5ndGhfKSwgYXJyYXlMZW5ndGgpOworfQorCisvLyBwcm9wZXJ0eTogcmVzb3VyY2VPcHRpb25z
CitfTVRMX0lOTElORSBNVEw6OlJlc291cmNlT3B0aW9ucyBNVEw6OlRleHR1cmVEZXNjcmlwdG9y
OjpyZXNvdXJjZU9wdGlvbnMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNz
YWdlPE1UTDo6UmVzb3VyY2VPcHRpb25zPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc291cmNl
T3B0aW9ucykpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6
OnNldFJlc291cmNlT3B0aW9ucyhNVEw6OlJlc291cmNlT3B0aW9ucyByZXNvdXJjZU9wdGlvbnMp
Cit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHNldFJlc291cmNlT3B0aW9uc18pLCByZXNvdXJjZU9wdGlvbnMpOworfQorCisvLyBwcm9wZXJ0
eTogY3B1Q2FjaGVNb2RlCitfTVRMX0lOTElORSBNVEw6OkNQVUNhY2hlTW9kZSBNVEw6OlRleHR1
cmVEZXNjcmlwdG9yOjpjcHVDYWNoZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6Q1BVQ2FjaGVNb2RlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGNw
dUNhY2hlTW9kZSkpOworfQorCitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4dHVyZURlc2NyaXB0
b3I6OnNldENwdUNhY2hlTW9kZShNVEw6OkNQVUNhY2hlTW9kZSBjcHVDYWNoZU1vZGUpCit7Cisg
ICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldENw
dUNhY2hlTW9kZV8pLCBjcHVDYWNoZU1vZGUpOworfQorCisvLyBwcm9wZXJ0eTogc3RvcmFnZU1v
ZGUKK19NVExfSU5MSU5FIE1UTDo6U3RvcmFnZU1vZGUgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6
c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1U
TDo6U3RvcmFnZU1vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RvcmFnZU1vZGUpKTsKK30K
KworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9yOjpzZXRTdG9yYWdlTW9k
ZShNVEw6OlN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKQoreworICAgIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdG9yYWdlTW9kZV8pLCBzdG9yYWdl
TW9kZSk7Cit9CisKKy8vIHByb3BlcnR5OiBoYXphcmRUcmFja2luZ01vZGUKK19NVExfSU5MSU5F
IE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIE1UTDo6VGV4dHVyZURlc2NyaXB0b3I6OmhhemFyZFRy
YWNraW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpIYXphcmRUcmFja2luZ01vZGU+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaGF6YXJkVHJhY2tp
bmdNb2RlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6
c2V0SGF6YXJkVHJhY2tpbmdNb2RlKE1UTDo6SGF6YXJkVHJhY2tpbmdNb2RlIGhhemFyZFRyYWNr
aW5nTW9kZSkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoc2V0SGF6YXJkVHJhY2tpbmdNb2RlXyksIGhhemFyZFRyYWNraW5nTW9kZSk7Cit9
CisKKy8vIHByb3BlcnR5OiB1c2FnZQorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlVXNhZ2UgTVRM
OjpUZXh0dXJlRGVzY3JpcHRvcjo6dXNhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6
OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVVzYWdlPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHVz
YWdlKSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0
VXNhZ2UoTVRMOjpUZXh0dXJlVXNhZ2UgdXNhZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFVzYWdlXyksIHVzYWdlKTsKK30KKwor
Ly8gcHJvcGVydHk6IGFsbG93R1BVT3B0aW1pemVkQ29udGVudHMKK19NVExfSU5MSU5FIGJvb2wg
TVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6YWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChhbGxvd0dQVU9wdGltaXplZENvbnRlbnRzKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpUZXh0dXJlRGVzY3JpcHRvcjo6c2V0QWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cyhi
b29sIGFsbG93R1BVT3B0aW1pemVkQ29udGVudHMpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2Fn
ZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEFsbG93R1BVT3B0aW1pemVkQ29udGVu
dHNfKSwgYWxsb3dHUFVPcHRpbWl6ZWRDb250ZW50cyk7Cit9CisKKy8vIHByb3BlcnR5OiBzd2l6
emxlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmVTd2l6emxlQ2hhbm5lbHMgTVRMOjpUZXh0dXJl
RGVzY3JpcHRvcjo6c3dpenpsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TVRMOjpUZXh0dXJlU3dpenpsZUNoYW5uZWxzPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VM
KHN3aXp6bGUpKTsKK30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlRleHR1cmVEZXNjcmlwdG9y
OjpzZXRTd2l6emxlKE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVscyBzd2l6emxlKQoreworICAg
IE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTd2l6
emxlXyksIHN3aXp6bGUpOworfQorCisvLyBwcm9wZXJ0eTogcm9vdFJlc291cmNlCitfTVRMX0lO
TElORSBNVEw6OlJlc291cmNlKiBNVEw6OlRleHR1cmU6OnJvb3RSZXNvdXJjZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpSZXNvdXJjZSo+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwocm9vdFJlc291cmNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBwYXJlbnRU
ZXh0dXJlCitfTVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6VGV4dHVyZTo6cGFyZW50VGV4
dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0
dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChwYXJlbnRUZXh0dXJlKSk7Cit9CisKKy8vIHBy
b3BlcnR5OiBwYXJlbnRSZWxhdGl2ZUxldmVsCitfTVRMX0lOTElORSBOUzo6VUludGVnZXIgTVRM
OjpUZXh0dXJlOjpwYXJlbnRSZWxhdGl2ZUxldmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2Jq
ZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwocGFy
ZW50UmVsYXRpdmVMZXZlbCkpOworfQorCisvLyBwcm9wZXJ0eTogcGFyZW50UmVsYXRpdmVTbGlj
ZQorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6cGFyZW50UmVsYXRpdmVT
bGljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRl
Z2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHBhcmVudFJlbGF0aXZlU2xpY2UpKTsKK30KKwor
Ly8gcHJvcGVydHk6IGJ1ZmZlcgorX01UTF9JTkxJTkUgTVRMOjpCdWZmZXIqIE1UTDo6VGV4dHVy
ZTo6YnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6
OkJ1ZmZlcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoYnVmZmVyKSk7Cit9CisKKy8vIHByb3Bl
cnR5OiBidWZmZXJPZmZzZXQKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6
OmJ1ZmZlck9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8
TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGJ1ZmZlck9mZnNldCkpOworfQor
CisvLyBwcm9wZXJ0eTogYnVmZmVyQnl0ZXNQZXJSb3cKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdl
ciBNVEw6OlRleHR1cmU6OmJ1ZmZlckJ5dGVzUGVyUm93KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
T2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwo
YnVmZmVyQnl0ZXNQZXJSb3cpKTsKK30KKworLy8gcHJvcGVydHk6IGlvc3VyZmFjZQorX01UTF9J
TkxJTkUgSU9TdXJmYWNlUmVmIE1UTDo6VGV4dHVyZTo6aW9zdXJmYWNlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxJT1N1cmZhY2VSZWY+KHRoaXMsIF9NVExfUFJJ
VkFURV9TRUwoaW9zdXJmYWNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBpb3N1cmZhY2VQbGFuZQor
X01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6aW9zdXJmYWNlUGxhbmUoKSBj
b25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhp
cywgX01UTF9QUklWQVRFX1NFTChpb3N1cmZhY2VQbGFuZSkpOworfQorCisvLyBwcm9wZXJ0eTog
dGV4dHVyZVR5cGUKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZVR5cGUgTVRMOjpUZXh0dXJlOjp0
ZXh0dXJlVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRM
OjpUZXh0dXJlVHlwZT4odGhpcywgX01UTF9QUklWQVRFX1NFTCh0ZXh0dXJlVHlwZSkpOworfQor
CisvLyBwcm9wZXJ0eTogcGl4ZWxGb3JtYXQKK19NVExfSU5MSU5FIE1UTDo6UGl4ZWxGb3JtYXQg
TVRMOjpUZXh0dXJlOjpwaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6
c2VuZE1lc3NhZ2U8TVRMOjpQaXhlbEZvcm1hdD4odGhpcywgX01UTF9QUklWQVRFX1NFTChwaXhl
bEZvcm1hdCkpOworfQorCisvLyBwcm9wZXJ0eTogd2lkdGgKK19NVExfSU5MSU5FIE5TOjpVSW50
ZWdlciBNVEw6OlRleHR1cmU6OndpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0Ojpz
ZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwod2lkdGgpKTsK
K30KKworLy8gcHJvcGVydHk6IGhlaWdodAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6
VGV4dHVyZTo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2Fn
ZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaGVpZ2h0KSk7Cit9CisKKy8v
IHByb3BlcnR5OiBkZXB0aAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6
ZGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50
ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChkZXB0aCkpOworfQorCisvLyBwcm9wZXJ0eTog
bWlwbWFwTGV2ZWxDb3VudAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6
bWlwbWFwTGV2ZWxDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG1pcG1hcExldmVsQ291bnQp
KTsKK30KKworLy8gcHJvcGVydHk6IHNhbXBsZUNvdW50CitfTVRMX0lOTElORSBOUzo6VUludGVn
ZXIgTVRMOjpUZXh0dXJlOjpzYW1wbGVDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNhbXBs
ZUNvdW50KSk7Cit9CisKKy8vIHByb3BlcnR5OiBhcnJheUxlbmd0aAorX01UTF9JTkxJTkUgTlM6
OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6YXJyYXlMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NF
TChhcnJheUxlbmd0aCkpOworfQorCisvLyBwcm9wZXJ0eTogdXNhZ2UKK19NVExfSU5MSU5FIE1U
TDo6VGV4dHVyZVVzYWdlIE1UTDo6VGV4dHVyZTo6dXNhZ2UoKSBjb25zdAoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVVzYWdlPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHVzYWdlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBzaGFyZWFibGUKK19NVExfSU5MSU5F
IGJvb2wgTVRMOjpUZXh0dXJlOjpzaGFyZWFibGUoKSBjb25zdAoreworICAgIHJldHVybiBPYmpl
Y3Q6OnNlbmRNZXNzYWdlPGJvb2w+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoaXNTaGFyZWFibGUp
KTsKK30KKworLy8gcHJvcGVydHk6IGZyYW1lYnVmZmVyT25seQorX01UTF9JTkxJTkUgYm9vbCBN
VEw6OlRleHR1cmU6OmZyYW1lYnVmZmVyT25seSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVj
dDo6c2VuZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChpc0ZyYW1lYnVmZmVy
T25seSkpOworfQorCisvLyBwcm9wZXJ0eTogZmlyc3RNaXBtYXBJblRhaWwKK19NVExfSU5MSU5F
IE5TOjpVSW50ZWdlciBNVEw6OlRleHR1cmU6OmZpcnN0TWlwbWFwSW5UYWlsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwoZmlyc3RNaXBtYXBJblRhaWwpKTsKK30KKworLy8gcHJvcGVydHk6IHRhaWxT
aXplSW5CeXRlcworX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VGV4dHVyZTo6dGFpbFNp
emVJbkJ5dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6
VUludGVnZXI+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwodGFpbFNpemVJbkJ5dGVzKSk7Cit9CisK
Ky8vIHByb3BlcnR5OiBpc1NwYXJzZQorX01UTF9JTkxJTkUgYm9vbCBNVEw6OlRleHR1cmU6Omlz
U3BhcnNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxib29sPih0
aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGlzU3BhcnNlKSk7Cit9CisKKy8vIHByb3BlcnR5OiBhbGxv
d0dQVU9wdGltaXplZENvbnRlbnRzCitfTVRMX0lOTElORSBib29sIE1UTDo6VGV4dHVyZTo6YWxs
b3dHUFVPcHRpbWl6ZWRDb250ZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8Ym9vbD4odGhpcywgX01UTF9QUklWQVRFX1NFTChhbGxvd0dQVU9wdGltaXplZENv
bnRlbnRzKSk7Cit9CisKKy8vIG1ldGhvZDogZ2V0Qnl0ZXM6Ynl0ZXNQZXJSb3c6Ynl0ZXNQZXJJ
bWFnZTpmcm9tUmVnaW9uOm1pcG1hcExldmVsOnNsaWNlOgorX01UTF9JTkxJTkUgdm9pZCBNVEw6
OlRleHR1cmU6OmdldEJ5dGVzKGNvbnN0IHZvaWQqIHBpeGVsQnl0ZXMsIE5TOjpVSW50ZWdlciBi
eXRlc1BlclJvdywgTlM6OlVJbnRlZ2VyIGJ5dGVzUGVySW1hZ2UsIE1UTDo6UmVnaW9uIHJlZ2lv
biwgTlM6OlVJbnRlZ2VyIGxldmVsLCBOUzo6VUludGVnZXIgc2xpY2UpCit7CisgICAgT2JqZWN0
OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGdldEJ5dGVzX2J5dGVz
UGVyUm93X2J5dGVzUGVySW1hZ2VfZnJvbVJlZ2lvbl9taXBtYXBMZXZlbF9zbGljZV8pLCBwaXhl
bEJ5dGVzLCBieXRlc1BlclJvdywgYnl0ZXNQZXJJbWFnZSwgcmVnaW9uLCBsZXZlbCwgc2xpY2Up
OworfQorCisvLyBtZXRob2Q6IHJlcGxhY2VSZWdpb246bWlwbWFwTGV2ZWw6c2xpY2U6d2l0aEJ5
dGVzOmJ5dGVzUGVyUm93OmJ5dGVzUGVySW1hZ2U6CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VGV4
dHVyZTo6cmVwbGFjZVJlZ2lvbihNVEw6OlJlZ2lvbiByZWdpb24sIE5TOjpVSW50ZWdlciBsZXZl
bCwgTlM6OlVJbnRlZ2VyIHNsaWNlLCBjb25zdCB2b2lkKiBwaXhlbEJ5dGVzLCBOUzo6VUludGVn
ZXIgYnl0ZXNQZXJSb3csIE5TOjpVSW50ZWdlciBieXRlc1BlckltYWdlKQoreworICAgIE9iamVj
dDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChyZXBsYWNlUmVnaW9u
X21pcG1hcExldmVsX3NsaWNlX3dpdGhCeXRlc19ieXRlc1BlclJvd19ieXRlc1BlckltYWdlXyks
IHJlZ2lvbiwgbGV2ZWwsIHNsaWNlLCBwaXhlbEJ5dGVzLCBieXRlc1BlclJvdywgYnl0ZXNQZXJJ
bWFnZSk7Cit9CisKKy8vIG1ldGhvZDogZ2V0Qnl0ZXM6Ynl0ZXNQZXJSb3c6ZnJvbVJlZ2lvbjpt
aXBtYXBMZXZlbDoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlOjpnZXRCeXRlcyhjb25z
dCB2b2lkKiBwaXhlbEJ5dGVzLCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3csIE1UTDo6UmVnaW9u
IHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVsKQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8
dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChnZXRCeXRlc19ieXRlc1BlclJvd19mcm9tUmVn
aW9uX21pcG1hcExldmVsXyksIHBpeGVsQnl0ZXMsIGJ5dGVzUGVyUm93LCByZWdpb24sIGxldmVs
KTsKK30KKworLy8gbWV0aG9kOiByZXBsYWNlUmVnaW9uOm1pcG1hcExldmVsOndpdGhCeXRlczpi
eXRlc1BlclJvdzoKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpUZXh0dXJlOjpyZXBsYWNlUmVnaW9u
KE1UTDo6UmVnaW9uIHJlZ2lvbiwgTlM6OlVJbnRlZ2VyIGxldmVsLCBjb25zdCB2b2lkKiBwaXhl
bEJ5dGVzLCBOUzo6VUludGVnZXIgYnl0ZXNQZXJSb3cpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlcGxhY2VSZWdpb25fbWlwbWFwTGV2
ZWxfd2l0aEJ5dGVzX2J5dGVzUGVyUm93XyksIHJlZ2lvbiwgbGV2ZWwsIHBpeGVsQnl0ZXMsIGJ5
dGVzUGVyUm93KTsKK30KKworLy8gbWV0aG9kOiBuZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1h
dDoKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRMOjpUZXh0dXJlOjpuZXdUZXh0dXJlVmll
dyhNVEw6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQoreworICAgIHJldHVybiBPYmplY3Q6OnNl
bmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3VGV4dHVy
ZVZpZXdXaXRoUGl4ZWxGb3JtYXRfKSwgcGl4ZWxGb3JtYXQpOworfQorCisvLyBtZXRob2Q6IG5l
d1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0OnRleHR1cmVUeXBlOmxldmVsczpzbGljZXM6Citf
TVRMX0lOTElORSBNVEw6OlRleHR1cmUqIE1UTDo6VGV4dHVyZTo6bmV3VGV4dHVyZVZpZXcoTVRM
OjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgTVRMOjpUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSwg
TlM6OlJhbmdlIGxldmVsUmFuZ2UsIE5TOjpSYW5nZSBzbGljZVJhbmdlKQoreworICAgIHJldHVy
biBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExfUFJJVkFURV9T
RUwobmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXRfdGV4dHVyZVR5cGVfbGV2ZWxzX3NsaWNl
c18pLCBwaXhlbEZvcm1hdCwgdGV4dHVyZVR5cGUsIGxldmVsUmFuZ2UsIHNsaWNlUmFuZ2UpOwor
fQorCisvLyBtZXRob2Q6IG5ld1NoYXJlZFRleHR1cmVIYW5kbGUKK19NVExfSU5MSU5FIE1UTDo6
U2hhcmVkVGV4dHVyZUhhbmRsZSogTVRMOjpUZXh0dXJlOjpuZXdTaGFyZWRUZXh0dXJlSGFuZGxl
KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlNoYXJlZFRleHR1cmVI
YW5kbGUqPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKG5ld1NoYXJlZFRleHR1cmVIYW5kbGUpKTsK
K30KKworLy8gcHJvcGVydHk6IHJlbW90ZVN0b3JhZ2VUZXh0dXJlCitfTVRMX0lOTElORSBNVEw6
OlRleHR1cmUqIE1UTDo6VGV4dHVyZTo6cmVtb3RlU3RvcmFnZVRleHR1cmUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZSo+KHRoaXMsIF9NVExf
UFJJVkFURV9TRUwocmVtb3RlU3RvcmFnZVRleHR1cmUpKTsKK30KKworLy8gbWV0aG9kOiBuZXdS
ZW1vdGVUZXh0dXJlVmlld0ZvckRldmljZToKK19NVExfSU5MSU5FIE1UTDo6VGV4dHVyZSogTVRM
OjpUZXh0dXJlOjpuZXdSZW1vdGVUZXh0dXJlVmlld0ZvckRldmljZShjb25zdCBNVEw6OkRldmlj
ZSogZGV2aWNlKQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVy
ZSo+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobmV3UmVtb3RlVGV4dHVyZVZpZXdGb3JEZXZpY2Vf
KSwgZGV2aWNlKTsKK30KKworLy8gcHJvcGVydHk6IHN3aXp6bGUKK19NVExfSU5MSU5FIE1UTDo6
VGV4dHVyZVN3aXp6bGVDaGFubmVscyBNVEw6OlRleHR1cmU6OnN3aXp6bGUoKSBjb25zdAorewor
ICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VGV4dHVyZVN3aXp6bGVDaGFubmVs
cz4odGhpcywgX01UTF9QUklWQVRFX1NFTChzd2l6emxlKSk7Cit9CisKKy8vIG1ldGhvZDogbmV3
VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6dGV4dHVyZVR5cGU6bGV2ZWxzOnNsaWNlczpzd2l6
emxlOgorX01UTF9JTkxJTkUgTVRMOjpUZXh0dXJlKiBNVEw6OlRleHR1cmU6Om5ld1RleHR1cmVW
aWV3KE1UTDo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIE1UTDo6VGV4dHVyZVR5cGUgdGV4dHVy
ZVR5cGUsIE5TOjpSYW5nZSBsZXZlbFJhbmdlLCBOUzo6UmFuZ2Ugc2xpY2VSYW5nZSwgTVRMOjpU
ZXh0dXJlU3dpenpsZUNoYW5uZWxzIHN3aXp6bGUpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9QUklWQVRFX1NFTChuZXdUZXh0dXJl
Vmlld1dpdGhQaXhlbEZvcm1hdF90ZXh0dXJlVHlwZV9sZXZlbHNfc2xpY2VzX3N3aXp6bGVfKSwg
cGl4ZWxGb3JtYXQsIHRleHR1cmVUeXBlLCBsZXZlbFJhbmdlLCBzbGljZVJhbmdlLCBzd2l6emxl
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9N
VExUeXBlcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVHlw
ZXMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc2OGM0ZDlhMmMzOGE1OWU1NDkzY2U4ODlkMGQ1ZTJkMzdhZWE4
ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0
YWwvTVRMVHlwZXMuaHBwCkBAIC0wLDAgKzEsMTYzIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExUeXBlcy5ocHAKKy8vCisv
LyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisv
LyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJN
VExEZWZpbmVzLmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUg
Ik1UTFByaXZhdGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4K
KworI2luY2x1ZGUgIk1UTFR5cGVzLmhwcCIKKworbmFtZXNwYWNlIE1UTAoreworc3RydWN0IE9y
aWdpbgoreworICAgIE9yaWdpbigpID0gZGVmYXVsdDsKKworICAgIE9yaWdpbihOUzo6VUludGVn
ZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6KTsKKworICAgIHN0YXRpYyBPcmln
aW4gTWFrZShOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6KTsK
KworICAgIE5TOjpVSW50ZWdlciAgeDsKKyAgICBOUzo6VUludGVnZXIgIHk7CisgICAgTlM6OlVJ
bnRlZ2VyICB6OworfSBfTVRMX1BBQ0tFRDsKKworc3RydWN0IFNpemUKK3sKKyAgICBTaXplKCkg
PSBkZWZhdWx0OworCisgICAgU2l6ZShOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBo
ZWlnaHQsIE5TOjpVSW50ZWdlciBkZXB0aCk7CisKKyAgICBzdGF0aWMgU2l6ZSAgTWFrZShOUzo6
VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIE5TOjpVSW50ZWdlciBkZXB0aCk7
CisKKyAgICBOUzo6VUludGVnZXIgd2lkdGg7CisgICAgTlM6OlVJbnRlZ2VyIGhlaWdodDsKKyAg
ICBOUzo6VUludGVnZXIgZGVwdGg7Cit9IF9NVExfUEFDS0VEOworCitzdHJ1Y3QgUmVnaW9uCit7
CisgICAgUmVnaW9uKCkgPSBkZWZhdWx0OworCisgICAgUmVnaW9uKE5TOjpVSW50ZWdlciB4LCBO
Uzo6VUludGVnZXIgd2lkdGgpOworCisgICAgUmVnaW9uKE5TOjpVSW50ZWdlciB4LCBOUzo6VUlu
dGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KTsKKworICAg
IFJlZ2lvbihOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6LCBO
Uzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIE5TOjpVSW50ZWdlciBkZXB0
aCk7CisKKyAgICBzdGF0aWMgUmVnaW9uIE1ha2UxRChOUzo6VUludGVnZXIgeCwgTlM6OlVJbnRl
Z2VyIHdpZHRoKTsKKworICAgIHN0YXRpYyBSZWdpb24gTWFrZTJEKE5TOjpVSW50ZWdlciB4LCBO
Uzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHdpZHRoLCBOUzo6VUludGVnZXIgaGVpZ2h0KTsK
KworICAgIHN0YXRpYyBSZWdpb24gTWFrZTNEKE5TOjpVSW50ZWdlciB4LCBOUzo6VUludGVnZXIg
eSwgTlM6OlVJbnRlZ2VyIHosIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2VyIGhlaWdo
dCwgTlM6OlVJbnRlZ2VyIGRlcHRoKTsKKworICAgIE1UTDo6T3JpZ2luICAgb3JpZ2luOworICAg
IE1UTDo6U2l6ZSAgICAgc2l6ZTsKK30gX01UTF9QQUNLRUQ7CisKK3N0cnVjdCBTYW1wbGVQb3Np
dGlvbjsKKwordXNpbmcgQ29vcmRpbmF0ZTJEID0gU2FtcGxlUG9zaXRpb247CisKK3N0cnVjdCBT
YW1wbGVQb3NpdGlvbgoreworICAgIFNhbXBsZVBvc2l0aW9uKCkgPSBkZWZhdWx0OworCisgICAg
U2FtcGxlUG9zaXRpb24oZmxvYXQgX3gsIGZsb2F0IF95KTsKKworICAgIHN0YXRpYyBTYW1wbGVQ
b3NpdGlvbiBNYWtlKGZsb2F0IHgsIGZsb2F0IHkpOworCisgICAgZmxvYXQgICAgICAgICAgICAg
ICAgIHg7CisgICAgZmxvYXQgICAgICAgICAgICAgICAgIHk7Cit9IF9NVExfUEFDS0VEOworCit9
CisKK19NVExfSU5MSU5FIE1UTDo6T3JpZ2luOjpPcmlnaW4oTlM6OlVJbnRlZ2VyIF94LCBOUzo6
VUludGVnZXIgX3ksIE5TOjpVSW50ZWdlciBfeikKKyAgICA6IHgoX3gpCisgICAgLCB5KF95KQor
ICAgICwgeihfeikKK3sKK30KKworX01UTF9JTkxJTkUgTVRMOjpPcmlnaW4gTVRMOjpPcmlnaW46
Ok1ha2UoTlM6OlVJbnRlZ2VyIHgsIE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgeikKK3sK
KyAgICByZXR1cm4gT3JpZ2luKHgsIHksIHopOworfQorCitfTVRMX0lOTElORSBNVEw6OlNpemU6
OlNpemUoTlM6OlVJbnRlZ2VyIF93aWR0aCwgTlM6OlVJbnRlZ2VyIF9oZWlnaHQsIE5TOjpVSW50
ZWdlciBfZGVwdGgpCisgICAgOiB3aWR0aChfd2lkdGgpCisgICAgLCBoZWlnaHQoX2hlaWdodCkK
KyAgICAsIGRlcHRoKF9kZXB0aCkKK3sKK30KKworX01UTF9JTkxJTkUgTVRMOjpTaXplIE1UTDo6
U2l6ZTo6TWFrZShOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQsIE5TOjpV
SW50ZWdlciBkZXB0aCkKK3sKKyAgICByZXR1cm4gU2l6ZSh3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7
Cit9CisKK19NVExfSU5MSU5FIE1UTDo6UmVnaW9uOjpSZWdpb24oTlM6OlVJbnRlZ2VyIHgsIE5T
OjpVSW50ZWdlciB3aWR0aCkKKyAgICA6IG9yaWdpbih4LCAwLCAwKQorICAgICwgc2l6ZSh3aWR0
aCwgMSwgMSkKK3sKK30KKworX01UTF9JTkxJTkUgTVRMOjpSZWdpb246OlJlZ2lvbihOUzo6VUlu
dGVnZXIgeCwgTlM6OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB3aWR0aCwgTlM6OlVJbnRlZ2Vy
IGhlaWdodCkKKyAgICA6IG9yaWdpbih4LCB5LCAwKQorICAgICwgc2l6ZSh3aWR0aCwgaGVpZ2h0
LCAxKQoreworfQorCitfTVRMX0lOTElORSBNVEw6OlJlZ2lvbjo6UmVnaW9uKE5TOjpVSW50ZWdl
ciB4LCBOUzo6VUludGVnZXIgeSwgTlM6OlVJbnRlZ2VyIHosIE5TOjpVSW50ZWdlciB3aWR0aCwg
TlM6OlVJbnRlZ2VyIGhlaWdodCwgTlM6OlVJbnRlZ2VyIGRlcHRoKQorICAgIDogb3JpZ2luKHgs
IHksIHopCisgICAgLCBzaXplKHdpZHRoLCBoZWlnaHQsIGRlcHRoKQoreworfQorCitfTVRMX0lO
TElORSBNVEw6OlJlZ2lvbiBNVEw6OlJlZ2lvbjo6TWFrZTFEKE5TOjpVSW50ZWdlciB4LCBOUzo6
VUludGVnZXIgd2lkdGgpCit7CisgICAgcmV0dXJuIFJlZ2lvbih4LCB3aWR0aCk7Cit9CisKK19N
VExfSU5MSU5FIE1UTDo6UmVnaW9uIE1UTDo6UmVnaW9uOjpNYWtlMkQoTlM6OlVJbnRlZ2VyIHgs
IE5TOjpVSW50ZWdlciB5LCBOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50ZWdlciBoZWlnaHQp
Cit7CisgICAgcmV0dXJuIFJlZ2lvbih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworX01UTF9J
TkxJTkUgTVRMOjpSZWdpb24gTVRMOjpSZWdpb246Ok1ha2UzRChOUzo6VUludGVnZXIgeCwgTlM6
OlVJbnRlZ2VyIHksIE5TOjpVSW50ZWdlciB6LCBOUzo6VUludGVnZXIgd2lkdGgsIE5TOjpVSW50
ZWdlciBoZWlnaHQsIE5TOjpVSW50ZWdlciBkZXB0aCkKK3sKKyAgICByZXR1cm4gUmVnaW9uKHgs
IHksIHosIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKK30KKworX01UTF9JTkxJTkUgTVRMOjpTYW1w
bGVQb3NpdGlvbjo6U2FtcGxlUG9zaXRpb24oZmxvYXQgX3gsIGZsb2F0IF95KQorICAgIDogeChf
eCkKKyAgICAsIHkoX3kpCit7Cit9CisKK19NVExfSU5MSU5FIE1UTDo6U2FtcGxlUG9zaXRpb24g
TVRMOjpTYW1wbGVQb3NpdGlvbjo6TWFrZShmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIHJldHVy
biBTYW1wbGVQb3NpdGlvbih4LCB5KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9NZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMTdmODIzYWEwYWY5NTMwYjI1YzMzMWE5ZjU2ZDEyNTY2NzYzODU1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZlcnRleERl
c2NyaXB0b3IuaHBwCkBAIC0wLDAgKzEsMzQ0IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NVExWZXJ0ZXhEZXNjcmlwdG9yLmhw
cAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
Ly8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Cisv
LworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8K
Ky8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1UTERlZmluZXMuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAiCisj
aW5jbHVkZSAiTVRMUHJpdmF0ZS5ocHAiCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaHBwPgorCisjaW5jbHVkZSAiTVRMVmVydGV4RGVzY3JpcHRvci5ocHAiCisKK25hbWVzcGFj
ZSBNVEwKK3sKK19NVExfRU5VTShOUzo6VUludGVnZXIsIFZlcnRleEZvcm1hdCkgeworICAgIFZl
cnRleEZvcm1hdEludmFsaWQgPSAwLAorICAgIFZlcnRleEZvcm1hdFVDaGFyMiA9IDEsCisgICAg
VmVydGV4Rm9ybWF0VUNoYXIzID0gMiwKKyAgICBWZXJ0ZXhGb3JtYXRVQ2hhcjQgPSAzLAorICAg
IFZlcnRleEZvcm1hdENoYXIyID0gNCwKKyAgICBWZXJ0ZXhGb3JtYXRDaGFyMyA9IDUsCisgICAg
VmVydGV4Rm9ybWF0Q2hhcjQgPSA2LAorICAgIFZlcnRleEZvcm1hdFVDaGFyMk5vcm1hbGl6ZWQg
PSA3LAorICAgIFZlcnRleEZvcm1hdFVDaGFyM05vcm1hbGl6ZWQgPSA4LAorICAgIFZlcnRleEZv
cm1hdFVDaGFyNE5vcm1hbGl6ZWQgPSA5LAorICAgIFZlcnRleEZvcm1hdENoYXIyTm9ybWFsaXpl
ZCA9IDEwLAorICAgIFZlcnRleEZvcm1hdENoYXIzTm9ybWFsaXplZCA9IDExLAorICAgIFZlcnRl
eEZvcm1hdENoYXI0Tm9ybWFsaXplZCA9IDEyLAorICAgIFZlcnRleEZvcm1hdFVTaG9ydDIgPSAx
MywKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQzID0gMTQsCisgICAgVmVydGV4Rm9ybWF0VVNob3J0
NCA9IDE1LAorICAgIFZlcnRleEZvcm1hdFNob3J0MiA9IDE2LAorICAgIFZlcnRleEZvcm1hdFNo
b3J0MyA9IDE3LAorICAgIFZlcnRleEZvcm1hdFNob3J0NCA9IDE4LAorICAgIFZlcnRleEZvcm1h
dFVTaG9ydDJOb3JtYWxpemVkID0gMTksCisgICAgVmVydGV4Rm9ybWF0VVNob3J0M05vcm1hbGl6
ZWQgPSAyMCwKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQ0Tm9ybWFsaXplZCA9IDIxLAorICAgIFZl
cnRleEZvcm1hdFNob3J0Mk5vcm1hbGl6ZWQgPSAyMiwKKyAgICBWZXJ0ZXhGb3JtYXRTaG9ydDNO
b3JtYWxpemVkID0gMjMsCisgICAgVmVydGV4Rm9ybWF0U2hvcnQ0Tm9ybWFsaXplZCA9IDI0LAor
ICAgIFZlcnRleEZvcm1hdEhhbGYyID0gMjUsCisgICAgVmVydGV4Rm9ybWF0SGFsZjMgPSAyNiwK
KyAgICBWZXJ0ZXhGb3JtYXRIYWxmNCA9IDI3LAorICAgIFZlcnRleEZvcm1hdEZsb2F0ID0gMjgs
CisgICAgVmVydGV4Rm9ybWF0RmxvYXQyID0gMjksCisgICAgVmVydGV4Rm9ybWF0RmxvYXQzID0g
MzAsCisgICAgVmVydGV4Rm9ybWF0RmxvYXQ0ID0gMzEsCisgICAgVmVydGV4Rm9ybWF0SW50ID0g
MzIsCisgICAgVmVydGV4Rm9ybWF0SW50MiA9IDMzLAorICAgIFZlcnRleEZvcm1hdEludDMgPSAz
NCwKKyAgICBWZXJ0ZXhGb3JtYXRJbnQ0ID0gMzUsCisgICAgVmVydGV4Rm9ybWF0VUludCA9IDM2
LAorICAgIFZlcnRleEZvcm1hdFVJbnQyID0gMzcsCisgICAgVmVydGV4Rm9ybWF0VUludDMgPSAz
OCwKKyAgICBWZXJ0ZXhGb3JtYXRVSW50NCA9IDM5LAorICAgIFZlcnRleEZvcm1hdEludDEwMTAx
MDJOb3JtYWxpemVkID0gNDAsCisgICAgVmVydGV4Rm9ybWF0VUludDEwMTAxMDJOb3JtYWxpemVk
ID0gNDEsCisgICAgVmVydGV4Rm9ybWF0VUNoYXI0Tm9ybWFsaXplZF9CR1JBID0gNDIsCisgICAg
VmVydGV4Rm9ybWF0VUNoYXIgPSA0NSwKKyAgICBWZXJ0ZXhGb3JtYXRDaGFyID0gNDYsCisgICAg
VmVydGV4Rm9ybWF0VUNoYXJOb3JtYWxpemVkID0gNDcsCisgICAgVmVydGV4Rm9ybWF0Q2hhck5v
cm1hbGl6ZWQgPSA0OCwKKyAgICBWZXJ0ZXhGb3JtYXRVU2hvcnQgPSA0OSwKKyAgICBWZXJ0ZXhG
b3JtYXRTaG9ydCA9IDUwLAorICAgIFZlcnRleEZvcm1hdFVTaG9ydE5vcm1hbGl6ZWQgPSA1MSwK
KyAgICBWZXJ0ZXhGb3JtYXRTaG9ydE5vcm1hbGl6ZWQgPSA1MiwKKyAgICBWZXJ0ZXhGb3JtYXRI
YWxmID0gNTMsCit9OworCitfTVRMX0VOVU0oTlM6OlVJbnRlZ2VyLCBWZXJ0ZXhTdGVwRnVuY3Rp
b24pIHsKKyAgICBWZXJ0ZXhTdGVwRnVuY3Rpb25Db25zdGFudCA9IDAsCisgICAgVmVydGV4U3Rl
cEZ1bmN0aW9uUGVyVmVydGV4ID0gMSwKKyAgICBWZXJ0ZXhTdGVwRnVuY3Rpb25QZXJJbnN0YW5j
ZSA9IDIsCisgICAgVmVydGV4U3RlcEZ1bmN0aW9uUGVyUGF0Y2ggPSAzLAorICAgIFZlcnRleFN0
ZXBGdW5jdGlvblBlclBhdGNoQ29udHJvbFBvaW50ID0gNCwKK307CisKK2NsYXNzIFZlcnRleEJ1
ZmZlckxheW91dERlc2NyaXB0b3IgOiBwdWJsaWMgTlM6OkNvcHlpbmc8VmVydGV4QnVmZmVyTGF5
b3V0RGVzY3JpcHRvcj4KK3sKK3B1YmxpYzoKKyAgICBzdGF0aWMgY2xhc3MgVmVydGV4QnVmZmVy
TGF5b3V0RGVzY3JpcHRvciogYWxsb2MoKTsKKworICAgIGNsYXNzIFZlcnRleEJ1ZmZlckxheW91
dERlc2NyaXB0b3IqICAgICAgICBpbml0KCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RyaWRlKCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0cmlkZShOUzo6VUludGVnZXIgc3RyaWRl
KTsKKworICAgIE1UTDo6VmVydGV4U3RlcEZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICBzdGVw
RnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0U3RlcEZ1bmN0aW9uKE1UTDo6VmVydGV4U3RlcEZ1bmN0aW9uIHN0ZXBGdW5j
dGlvbik7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RlcFJhdGUoKSBjb25zdDsKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0U3RlcFJhdGUoTlM6OlVJbnRlZ2VyIHN0ZXBSYXRlKTsKK307CisKK2NsYXNz
IFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSA6IHB1YmxpYyBOUzo6UmVmZXJlbmNp
bmc8VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5PgoreworcHVibGljOgorICAgIHN0
YXRpYyBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqIGFsbG9jKCk7CisK
KyAgICBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqICAgICAgICBpbml0
KCk7CisKKyAgICBjbGFzcyBWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiAgICAgICAgICAg
ICBvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4KTsKKworICAgIHZvaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE9iamVjdChjb25zdCBjbGFzcyBWZXJ0ZXhC
dWZmZXJMYXlvdXREZXNjcmlwdG9yKiBidWZmZXJEZXNjLCBOUzo6VUludGVnZXIgaW5kZXgpOwor
fTsKKworY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciA6IHB1YmxpYyBOUzo6Q29weWlu
ZzxWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yPgoreworcHVibGljOgorICAgIHN0YXRpYyBjbGFz
cyBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yKiBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4
QXR0cmlidXRlRGVzY3JpcHRvciogICAgICAgIGluaXQoKTsKKworICAgIE1UTDo6VmVydGV4Rm9y
bWF0ICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoKSBjb25zdDsKKyAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Rm9ybWF0KE1UTDo6VmVydGV4Rm9ybWF0
IGZvcm1hdCk7CisKKyAgICBOUzo6VUludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldE9mZnNldChOUzo6VUludGVnZXIgb2Zmc2V0KTsKKworICAgIE5TOjpVSW50ZWdlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJJbmRleCgpIGNvbnN0OworICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCdWZmZXJJbmRleChOUzo6VUlu
dGVnZXIgYnVmZmVySW5kZXgpOworfTsKKworY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
ckFycmF5IDogcHVibGljIE5TOjpSZWZlcmVuY2luZzxWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
QXJyYXk+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3JBcnJheSogYWxsb2MoKTsKKworICAgIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0
b3JBcnJheSogICAgICAgIGluaXQoKTsKKworICAgIGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2Ny
aXB0b3IqICAgICAgICAgICAgIG9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpOworCisgICAgdm9p
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0T2JqZWN0KGNvbnN0
IGNsYXNzIFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3IqIGF0dHJpYnV0ZURlc2MsIE5TOjpVSW50
ZWdlciBpbmRleCk7Cit9OworCitjbGFzcyBWZXJ0ZXhEZXNjcmlwdG9yIDogcHVibGljIE5TOjpD
b3B5aW5nPFZlcnRleERlc2NyaXB0b3I+Cit7CitwdWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFZl
cnRleERlc2NyaXB0b3IqICAgICAgICAgICBhbGxvYygpOworCisgICAgY2xhc3MgVmVydGV4RGVz
Y3JpcHRvciogICAgICAgICAgICAgICAgICBpbml0KCk7CisKKyAgICBzdGF0aWMgY2xhc3MgVmVy
dGV4RGVzY3JpcHRvciogICAgICAgICAgIHZlcnRleERlc2NyaXB0b3IoKTsKKworICAgIGNsYXNz
IFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogbGF5b3V0cygpIGNvbnN0OworCisg
ICAgY2xhc3MgVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiAgICBhdHRyaWJ1dGVzKCkg
Y29uc3Q7CisKKyAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c2V0KCk7Cit9OworCit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBN
VEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IqIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0
RGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6
OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I+KF9NVExfUFJJVkFURV9DTFMoTVRMVmVydGV4
QnVmZmVyTGF5b3V0RGVzY3JpcHRvcikpOworfQorCisvLyBtZXRob2Q6IGluaXQKK19NVExfSU5M
SU5FIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhCdWZmZXJM
YXlvdXREZXNjcmlwdG9yOjppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6aW5pdDxN
VEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I+KCk7Cit9CisKKy8vIHByb3BlcnR5OiBz
dHJpZGUKK19NVExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERl
c2NyaXB0b3I6OnN0cmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0cmlkZSkpOworfQorCitf
TVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvcjo6c2V0U3Ry
aWRlKE5TOjpVSW50ZWdlciBzdHJpZGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lk
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldFN0cmlkZV8pLCBzdHJpZGUpOworfQorCisvLyBw
cm9wZXJ0eTogc3RlcEZ1bmN0aW9uCitfTVRMX0lOTElORSBNVEw6OlZlcnRleFN0ZXBGdW5jdGlv
biBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3I6OnN0ZXBGdW5jdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhTdGVwRnVuY3Rp
b24+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc3RlcEZ1bmN0aW9uKSk7Cit9CisKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzZXRTdGVwRnVuY3Rp
b24oTVRMOjpWZXJ0ZXhTdGVwRnVuY3Rpb24gc3RlcEZ1bmN0aW9uKQoreworICAgIE9iamVjdDo6
c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRTdGVwRnVuY3Rpb25f
KSwgc3RlcEZ1bmN0aW9uKTsKK30KKworLy8gcHJvcGVydHk6IHN0ZXBSYXRlCitfTVRMX0lOTElO
RSBOUzo6VUludGVnZXIgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzdGVwUmF0
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TlM6OlVJbnRlZ2Vy
Pih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHN0ZXBSYXRlKSk7Cit9CisKK19NVExfSU5MSU5FIHZv
aWQgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yOjpzZXRTdGVwUmF0ZShOUzo6VUlu
dGVnZXIgc3RlcFJhdGUpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBf
TVRMX1BSSVZBVEVfU0VMKHNldFN0ZXBSYXRlXyksIHN0ZXBSYXRlKTsKK30KKworLy8gc3RhdGlj
IG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3Jp
cHRvckFycmF5KiBNVEw6OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheTo6YWxsb2Mo
KQoreworICAgIHJldHVybiBOUzo6T2JqZWN0OjphbGxvYzxNVEw6OlZlcnRleEJ1ZmZlckxheW91
dERlc2NyaXB0b3JBcnJheT4oX01UTF9QUklWQVRFX0NMUyhNVExWZXJ0ZXhCdWZmZXJMYXlvdXRE
ZXNjcmlwdG9yQXJyYXkpKTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6
OlZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhCdWZmZXJMYXlv
dXREZXNjcmlwdG9yQXJyYXk6OmluaXQoKQoreworICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0
PE1UTDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5PigpOworfQorCisvLyBtZXRo
b2Q6IG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDoKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4QnVm
ZmVyTGF5b3V0RGVzY3JpcHRvciogTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJy
YXk6Om9iamVjdChOUzo6VUludGVnZXIgaW5kZXgpCit7CisgICAgcmV0dXJuIE9iamVjdDo6c2Vu
ZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHRfKSwgaW5kZXgpOworfQorCisvLyBt
ZXRob2Q6IHNldE9iamVjdDphdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSB2b2lkIE1U
TDo6VmVydGV4QnVmZmVyTGF5b3V0RGVzY3JpcHRvckFycmF5OjpzZXRPYmplY3QoY29uc3QgTVRM
OjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yKiBidWZmZXJEZXNjLCBOUzo6VUludGVnZXIg
aW5kZXgpCit7CisgICAgT2JqZWN0OjpzZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZB
VEVfU0VMKHNldE9iamVjdF9hdEluZGV4ZWRTdWJzY3JpcHRfKSwgYnVmZmVyRGVzYywgaW5kZXgp
OworfQorCisvLyBzdGF0aWMgbWV0aG9kOiBhbGxvYworX01UTF9JTkxJTkUgTVRMOjpWZXJ0ZXhB
dHRyaWJ1dGVEZXNjcmlwdG9yKiBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OmFsbG9j
KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yPihfTVRMX1BSSVZBVEVfQ0xTKE1UTFZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3Ip
KTsKK30KKworLy8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEF0dHJpYnV0
ZURlc2NyaXB0b3IqIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6aW5pdCgpCit7Cisg
ICAgcmV0dXJuIE5TOjpPYmplY3Q6OmluaXQ8TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
PigpOworfQorCisvLyBwcm9wZXJ0eTogZm9ybWF0CitfTVRMX0lOTElORSBNVEw6OlZlcnRleEZv
cm1hdCBNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3I6OmZvcm1hdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpWZXJ0ZXhGb3JtYXQ+KHRoaXMsIF9N
VExfUFJJVkFURV9TRUwoZm9ybWF0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpWZXJ0
ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjpzZXRGb3JtYXQoTVRMOjpWZXJ0ZXhGb3JtYXQgZm9ybWF0
KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NF
TChzZXRGb3JtYXRfKSwgZm9ybWF0KTsKK30KKworLy8gcHJvcGVydHk6IG9mZnNldAorX01UTF9J
TkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6b2Zmc2V0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxOUzo6VUludGVnZXI+
KHRoaXMsIF9NVExfUFJJVkFURV9TRUwob2Zmc2V0KSk7Cit9CisKK19NVExfSU5MSU5FIHZvaWQg
TVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yOjpzZXRPZmZzZXQoTlM6OlVJbnRlZ2VyIG9m
ZnNldCkKK3sKKyAgICBPYmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwoc2V0T2Zmc2V0XyksIG9mZnNldCk7Cit9CisKKy8vIHByb3BlcnR5OiBidWZmZXJJbmRl
eAorX01UTF9JTkxJTkUgTlM6OlVJbnRlZ2VyIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRv
cjo6YnVmZmVySW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdl
PE5TOjpVSW50ZWdlcj4odGhpcywgX01UTF9QUklWQVRFX1NFTChidWZmZXJJbmRleCkpOworfQor
CitfTVRMX0lOTElORSB2b2lkIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcjo6c2V0QnVm
ZmVySW5kZXgoTlM6OlVJbnRlZ2VyIGJ1ZmZlckluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1l
c3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChzZXRCdWZmZXJJbmRleF8pLCBidWZm
ZXJJbmRleCk7Cit9CisKKy8vIHN0YXRpYyBtZXRob2Q6IGFsbG9jCitfTVRMX0lOTElORSBNVEw6
OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheSogTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNj
cmlwdG9yQXJyYXk6OmFsbG9jKCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVjdDo6YWxsb2M8TVRM
OjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXk+KF9NVExfUFJJVkFURV9DTFMoTVRMVmVy
dGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01U
TF9JTkxJTkUgTVRMOjpWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkqIE1UTDo6VmVydGV4
QXR0cmlidXRlRGVzY3JpcHRvckFycmF5Ojppbml0KCkKK3sKKyAgICByZXR1cm4gTlM6Ok9iamVj
dDo6aW5pdDxNVEw6OlZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheT4oKTsKK30KKworLy8g
bWV0aG9kOiBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6CitfTVRMX0lOTElORSBNVEw6OlZlcnRl
eEF0dHJpYnV0ZURlc2NyaXB0b3IqIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5
OjpvYmplY3QoTlM6OlVJbnRlZ2VyIGluZGV4KQoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcio+KHRoaXMsIF9NVExfUFJJVkFU
RV9TRUwob2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0XyksIGluZGV4KTsKK30KKworLy8gbWV0aG9k
OiBzZXRPYmplY3Q6YXRJbmRleGVkU3Vic2NyaXB0OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZl
cnRleEF0dHJpYnV0ZURlc2NyaXB0b3JBcnJheTo6c2V0T2JqZWN0KGNvbnN0IE1UTDo6VmVydGV4
QXR0cmlidXRlRGVzY3JpcHRvciogYXR0cmlidXRlRGVzYywgTlM6OlVJbnRlZ2VyIGluZGV4KQor
eworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklWQVRFX1NFTChz
ZXRPYmplY3RfYXRJbmRleGVkU3Vic2NyaXB0XyksIGF0dHJpYnV0ZURlc2MsIGluZGV4KTsKK30K
KworLy8gc3RhdGljIG1ldGhvZDogYWxsb2MKK19NVExfSU5MSU5FIE1UTDo6VmVydGV4RGVzY3Jp
cHRvciogTVRMOjpWZXJ0ZXhEZXNjcmlwdG9yOjphbGxvYygpCit7CisgICAgcmV0dXJuIE5TOjpP
YmplY3Q6OmFsbG9jPE1UTDo6VmVydGV4RGVzY3JpcHRvcj4oX01UTF9QUklWQVRFX0NMUyhNVExW
ZXJ0ZXhEZXNjcmlwdG9yKSk7Cit9CisKKy8vIG1ldGhvZDogaW5pdAorX01UTF9JTkxJTkUgTVRM
OjpWZXJ0ZXhEZXNjcmlwdG9yKiBNVEw6OlZlcnRleERlc2NyaXB0b3I6OmluaXQoKQoreworICAg
IHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VmVydGV4RGVzY3JpcHRvcj4oKTsKK30KKwor
Ly8gc3RhdGljIG1ldGhvZDogdmVydGV4RGVzY3JpcHRvcgorX01UTF9JTkxJTkUgTVRMOjpWZXJ0
ZXhEZXNjcmlwdG9yKiBNVEw6OlZlcnRleERlc2NyaXB0b3I6OnZlcnRleERlc2NyaXB0b3IoKQor
eworICAgIHJldHVybiBPYmplY3Q6OnNlbmRNZXNzYWdlPE1UTDo6VmVydGV4RGVzY3JpcHRvcio+
KF9NVExfUFJJVkFURV9DTFMoTVRMVmVydGV4RGVzY3JpcHRvciksIF9NVExfUFJJVkFURV9TRUwo
dmVydGV4RGVzY3JpcHRvcikpOworfQorCisvLyBwcm9wZXJ0eTogbGF5b3V0cworX01UTF9JTkxJ
TkUgTVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqIE1UTDo6VmVydGV4RGVz
Y3JpcHRvcjo6bGF5b3V0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TVRMOjpWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkqPih0aGlzLCBfTVRMX1BS
SVZBVEVfU0VMKGxheW91dHMpKTsKK30KKworLy8gcHJvcGVydHk6IGF0dHJpYnV0ZXMKK19NVExf
SU5MSU5FIE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5KiBNVEw6OlZlcnRleERl
c2NyaXB0b3I6OmF0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBPYmplY3Q6OnNlbmRN
ZXNzYWdlPE1UTDo6VmVydGV4QXR0cmlidXRlRGVzY3JpcHRvckFycmF5Kj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTChhdHRyaWJ1dGVzKSk7Cit9CisKKy8vIG1ldGhvZDogcmVzZXQKK19NVExfSU5M
SU5FIHZvaWQgTVRMOjpWZXJ0ZXhEZXNjcmlwdG9yOjpyZXNldCgpCit7CisgICAgT2JqZWN0Ojpz
ZW5kTWVzc2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHJlc2V0KSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvTWV0YWwvTVRMVmlzaWJsZUZ1
bmN0aW9uVGFibGUuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL01ldGFsL01U
TFZpc2libGVGdW5jdGlvblRhYmxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzRkM2ExYTZjZTEwYjkyNWNm
NjEyNTZmZWQ1MTZkYzMzMGJkZDExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL01ldGFsL01UTFZpc2libGVGdW5jdGlvblRhYmxlLmhwcApAQCAtMCww
ICsxLDk2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vCisvLyBNZXRhbC9NVExWaXNpYmxlRnVuY3Rpb25UYWJsZS5ocHAKKy8vCisvLyBDb3B5cmln
aHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisv
LyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNVExEZWZpbmVz
LmhwcCIKKyNpbmNsdWRlICJNVExIZWFkZXJCcmlkZ2UuaHBwIgorI2luY2x1ZGUgIk1UTFByaXZh
dGUuaHBwIgorCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcD4KKworI2luY2x1
ZGUgIk1UTEZ1bmN0aW9uSGFuZGxlLmhwcCIKKyNpbmNsdWRlICJNVExSZXNvdXJjZS5ocHAiCisK
K25hbWVzcGFjZSBNVEwKK3sKK2NsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciA6
IHB1YmxpYyBOUzo6Q29weWluZzxWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I+Cit7Citw
dWJsaWM6CisgICAgc3RhdGljIGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciog
YWxsb2MoKTsKKworICAgIGNsYXNzIFZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvciogICAg
ICAgIGluaXQoKTsKKworICAgIHN0YXRpYyBjbGFzcyBWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2Ny
aXB0b3IqIHZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcigpOworCisgICAgTlM6OlVJbnRl
Z2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25Db3VudCgpIGNvbnN0
OworICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZ1
bmN0aW9uQ291bnQoTlM6OlVJbnRlZ2VyIGZ1bmN0aW9uQ291bnQpOworfTsKKworY2xhc3MgVmlz
aWJsZUZ1bmN0aW9uVGFibGUgOiBwdWJsaWMgTlM6OlJlZmVyZW5jaW5nPFZpc2libGVGdW5jdGlv
blRhYmxlLCBSZXNvdXJjZT4KK3sKK3B1YmxpYzoKKyAgICB2b2lkIHNldEZ1bmN0aW9uKGNvbnN0
IGNsYXNzIEZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlvbiwgTlM6OlVJbnRlZ2VyIGluZGV4KTsKKwor
ICAgIHZvaWQgc2V0RnVuY3Rpb25zKGNvbnN0IGNsYXNzIEZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlv
bnNbXSwgTlM6OlJhbmdlIHJhbmdlKTsKK307CisKK30KKworLy8gc3RhdGljIG1ldGhvZDogYWxs
b2MKK19NVExfSU5MSU5FIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKiBNVEw6
OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6YWxsb2MoKQoreworICAgIHJldHVybiBO
Uzo6T2JqZWN0OjphbGxvYzxNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcj4oX01U
TF9QUklWQVRFX0NMUyhNVExWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3IpKTsKK30KKwor
Ly8gbWV0aG9kOiBpbml0CitfTVRMX0lOTElORSBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVz
Y3JpcHRvciogTVRMOjpWaXNpYmxlRnVuY3Rpb25UYWJsZURlc2NyaXB0b3I6OmluaXQoKQorewor
ICAgIHJldHVybiBOUzo6T2JqZWN0Ojppbml0PE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNj
cmlwdG9yPigpOworfQorCisvLyBzdGF0aWMgbWV0aG9kOiB2aXNpYmxlRnVuY3Rpb25UYWJsZURl
c2NyaXB0b3IKK19NVExfSU5MSU5FIE1UTDo6VmlzaWJsZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9y
KiBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcjo6dmlzaWJsZUZ1bmN0aW9uVGFi
bGVEZXNjcmlwdG9yKCkKK3sKKyAgICByZXR1cm4gT2JqZWN0OjpzZW5kTWVzc2FnZTxNVEw6OlZp
c2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRvcio+KF9NVExfUFJJVkFURV9DTFMoTVRMVmlzaWJs
ZUZ1bmN0aW9uVGFibGVEZXNjcmlwdG9yKSwgX01UTF9QUklWQVRFX1NFTCh2aXNpYmxlRnVuY3Rp
b25UYWJsZURlc2NyaXB0b3IpKTsKK30KKworLy8gcHJvcGVydHk6IGZ1bmN0aW9uQ291bnQKK19N
VExfSU5MSU5FIE5TOjpVSW50ZWdlciBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRv
cjo6ZnVuY3Rpb25Db3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3Nh
Z2U8TlM6OlVJbnRlZ2VyPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKGZ1bmN0aW9uQ291bnQpKTsK
K30KKworX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlRGVzY3JpcHRv
cjo6c2V0RnVuY3Rpb25Db3VudChOUzo6VUludGVnZXIgZnVuY3Rpb25Db3VudCkKK3sKKyAgICBP
YmplY3Q6OnNlbmRNZXNzYWdlPHZvaWQ+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwoc2V0RnVuY3Rp
b25Db3VudF8pLCBmdW5jdGlvbkNvdW50KTsKK30KKworLy8gbWV0aG9kOiBzZXRGdW5jdGlvbjph
dEluZGV4OgorX01UTF9JTkxJTkUgdm9pZCBNVEw6OlZpc2libGVGdW5jdGlvblRhYmxlOjpzZXRG
dW5jdGlvbihjb25zdCBNVEw6OkZ1bmN0aW9uSGFuZGxlKiBmdW5jdGlvbiwgTlM6OlVJbnRlZ2Vy
IGluZGV4KQoreworICAgIE9iamVjdDo6c2VuZE1lc3NhZ2U8dm9pZD4odGhpcywgX01UTF9QUklW
QVRFX1NFTChzZXRGdW5jdGlvbl9hdEluZGV4XyksIGZ1bmN0aW9uLCBpbmRleCk7Cit9CisKKy8v
IG1ldGhvZDogc2V0RnVuY3Rpb25zOndpdGhSYW5nZToKK19NVExfSU5MSU5FIHZvaWQgTVRMOjpW
aXNpYmxlRnVuY3Rpb25UYWJsZTo6c2V0RnVuY3Rpb25zKGNvbnN0IE1UTDo6RnVuY3Rpb25IYW5k
bGUqIGZ1bmN0aW9uc1tdLCBOUzo6UmFuZ2UgcmFuZ2UpCit7CisgICAgT2JqZWN0OjpzZW5kTWVz
c2FnZTx2b2lkPih0aGlzLCBfTVRMX1BSSVZBVEVfU0VMKHNldEZ1bmN0aW9uc193aXRoUmFuZ2Vf
KSwgZnVuY3Rpb25zLCByYW5nZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9tZXRhbC1jcHAvTWV0YWwvTWV0YWwuaHBwIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL01ldGFsL01ldGFsLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmEzNjA2NmI1OTI1M2RiZDdkYWNlYjc0
NmMwYzk0MTQzM2ZmY2RiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
bWV0YWwtY3BwL01ldGFsL01ldGFsLmhwcApAQCAtMCwwICsxLDgwIEBACisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBNZXRhbC9NZXRhbC5ocHAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4KKy8vCisvLyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKy8v
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorLy8K
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisv
LyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vCisvLy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaW5jbHVkZSAiTVRM
QWNjZWxlcmF0aW9uU3RydWN0dXJlLmhwcCIKKyNpbmNsdWRlICJNVExBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMQWNjZWxlcmF0aW9uU3RydWN0
dXJlVHlwZXMuaHBwIgorI2luY2x1ZGUgIk1UTEFyZ3VtZW50LmhwcCIKKyNpbmNsdWRlICJNVExB
cmd1bWVudEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTEJpbmFyeUFyY2hpdmUuaHBwIgorI2lu
Y2x1ZGUgIk1UTEJsaXRDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5jbHVkZSAiTVRMQmxpdFBhc3Mu
aHBwIgorI2luY2x1ZGUgIk1UTEJ1ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMQ2FwdHVyZU1hbmFn
ZXIuaHBwIgorI2luY2x1ZGUgIk1UTENhcHR1cmVTY29wZS5ocHAiCisjaW5jbHVkZSAiTVRMQ29t
bWFuZEJ1ZmZlci5ocHAiCisjaW5jbHVkZSAiTVRMQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1
ZGUgIk1UTENvbW1hbmRRdWV1ZS5ocHAiCisjaW5jbHVkZSAiTVRMQ29tcHV0ZUNvbW1hbmRFbmNv
ZGVyLmhwcCIKKyNpbmNsdWRlICJNVExDb21wdXRlUGFzcy5ocHAiCisjaW5jbHVkZSAiTVRMQ29t
cHV0ZVBpcGVsaW5lLmhwcCIKKyNpbmNsdWRlICJNVExDb3VudGVycy5ocHAiCisjaW5jbHVkZSAi
TVRMRGVmaW5lcy5ocHAiCisjaW5jbHVkZSAiTVRMRGVwdGhTdGVuY2lsLmhwcCIKKyNpbmNsdWRl
ICJNVExEZXZpY2UuaHBwIgorI2luY2x1ZGUgIk1UTERyYXdhYmxlLmhwcCIKKyNpbmNsdWRlICJN
VExEeW5hbWljTGlicmFyeS5ocHAiCisjaW5jbHVkZSAiTVRMRXZlbnQuaHBwIgorI2luY2x1ZGUg
Ik1UTEZlbmNlLmhwcCIKKyNpbmNsdWRlICJNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzLmhwcCIK
KyNpbmNsdWRlICJNVExGdW5jdGlvbkRlc2NyaXB0b3IuaHBwIgorI2luY2x1ZGUgIk1UTEZ1bmN0
aW9uSGFuZGxlLmhwcCIKKyNpbmNsdWRlICJNVExGdW5jdGlvbkxvZy5ocHAiCisjaW5jbHVkZSAi
TVRMRnVuY3Rpb25TdGl0Y2hpbmcuaHBwIgorI2luY2x1ZGUgIk1UTEhlYWRlckJyaWRnZS5ocHAi
CisjaW5jbHVkZSAiTVRMSGVhcC5ocHAiCisjaW5jbHVkZSAiTVRMSW5kaXJlY3RDb21tYW5kQnVm
ZmVyLmhwcCIKKyNpbmNsdWRlICJNVExJbmRpcmVjdENvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNs
dWRlICJNVExJbnRlcnNlY3Rpb25GdW5jdGlvblRhYmxlLmhwcCIKKyNpbmNsdWRlICJNVExMaWJy
YXJ5LmhwcCIKKyNpbmNsdWRlICJNVExMaW5rZWRGdW5jdGlvbnMuaHBwIgorI2luY2x1ZGUgIk1U
TFBhcmFsbGVsUmVuZGVyQ29tbWFuZEVuY29kZXIuaHBwIgorI2luY2x1ZGUgIk1UTFBpcGVsaW5l
LmhwcCIKKyNpbmNsdWRlICJNVExQaXhlbEZvcm1hdC5ocHAiCisjaW5jbHVkZSAiTVRMUHJpdmF0
ZS5ocHAiCisjaW5jbHVkZSAiTVRMUmFzdGVyaXphdGlvblJhdGUuaHBwIgorI2luY2x1ZGUgIk1U
TFJlbmRlckNvbW1hbmRFbmNvZGVyLmhwcCIKKyNpbmNsdWRlICJNVExSZW5kZXJQYXNzLmhwcCIK
KyNpbmNsdWRlICJNVExSZW5kZXJQaXBlbGluZS5ocHAiCisjaW5jbHVkZSAiTVRMUmVzb3VyY2Uu
aHBwIgorI2luY2x1ZGUgIk1UTFJlc291cmNlU3RhdGVDb21tYW5kRW5jb2Rlci5ocHAiCisjaW5j
bHVkZSAiTVRMUmVzb3VyY2VTdGF0ZVBhc3MuaHBwIgorI2luY2x1ZGUgIk1UTFNhbXBsZXIuaHBw
IgorI2luY2x1ZGUgIk1UTFN0YWdlSW5wdXRPdXRwdXREZXNjcmlwdG9yLmhwcCIKKyNpbmNsdWRl
ICJNVExUZXh0dXJlLmhwcCIKKyNpbmNsdWRlICJNVExUeXBlcy5ocHAiCisjaW5jbHVkZSAiTVRM
VmVydGV4RGVzY3JpcHRvci5ocHAiCisjaW5jbHVkZSAiTVRMVmlzaWJsZUZ1bmN0aW9uVGFibGUu
aHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBRGVm
aW5lcy5ocHAgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQURl
ZmluZXMuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZjdlZmZlM2ExODNlYjIyNmI3ZTBhOTA2ZTQyYjI5YWFm
ZDAxMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAv
UXVhcnR6Q29yZS9DQURlZmluZXMuaHBwCkBAIC0wLDAgKzEsNDEgQEAKKy8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8KKy8vIFF1YXJ0ekNvcmUvQ0FEZWZp
bmVzLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLgorLy8KKy8vIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8v
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8KKy8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjcHJhZ21hIG9uY2UK
KworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNs
dWRlICIuLi9Gb3VuZGF0aW9uL05TRGVmaW5lcy5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIF9DQV9FWFBPUlQgX05TX0VYUE9S
VAorI2RlZmluZSBfQ0FfRVhURVJOIF9OU19FWFRFUk4KKyNkZWZpbmUgX0NBX0lOTElORSBfTlNf
SU5MSU5FCisjZGVmaW5lIF9DQV9QQUNLRUQgX05TX1BBQ0tFRAorCisjZGVmaW5lIF9DQV9DT05T
VCh0eXBlLCBuYW1lKSBfTlNfQ09OU1QodHlwZSwgbmFtZSkKKyNkZWZpbmUgX0NBX0VOVU0odHlw
ZSwgbmFtZSkgX05TX0VOVU0odHlwZSwgbmFtZSkKKyNkZWZpbmUgX0NBX09QVElPTlModHlwZSwg
bmFtZSkgX05TX09QVElPTlModHlwZSwgbmFtZSkKKworI2RlZmluZSBfQ0FfVkFMSURBVEVfU0la
RShucywgbmFtZSkgX05TX1ZBTElEQVRFX1NJWkUobnMsIG5hbWUpCisjZGVmaW5lIF9DQV9WQUxJ
REFURV9FTlVNKG5zLCBuYW1lKSBfTlNfVkFMSURBVEVfRU5VTShucywgbmFtZSkKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9DQU1ldGFsRHJhd2FibGUuaHBw
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1YXJ0ekNvcmUvQ0FNZXRhbERyYXdh
YmxlLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZDA4NzU3MjFjYTk4MDRmZmRjMzRiYTQ1ZWY1OTU0MjMwOTc0
YTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1F1
YXJ0ekNvcmUvQ0FNZXRhbERyYXdhYmxlLmhwcApAQCAtMCwwICsxLDU3IEBACisvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBRdWFydHpDb3JlL0NB
TWV0YWxEcmF3YWJsZS5ocHAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxlIEluYy4K
Ky8vCisvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKy8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorLy8KKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
Ky8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3By
YWdtYSBvbmNlCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjaW5jbHVkZSAiLi4vTWV0YWwvTVRMRHJhd2FibGUuaHBwIgorI2luY2x1ZGUgIi4uL01l
dGFsL01UTFRleHR1cmUuaHBwIgorCisjaW5jbHVkZSAiQ0FEZWZpbmVzLmhwcCIKKyNpbmNsdWRl
ICJDQVByaXZhdGUuaHBwIgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworbmFtZXNwYWNlIENBCit7CitjbGFzcyBNZXRhbERyYXdhYmxlIDogcHVibGlj
IE5TOjpSZWZlcmVuY2luZzxNZXRhbERyYXdhYmxlLCBNVEw6OkRyYXdhYmxlPgoreworcHVibGlj
OgorICAgIGNsYXNzIE1ldGFsTGF5ZXIqIGxheWVyKCkgY29uc3Q7CisgICAgTVRMOjpUZXh0dXJl
KiAgICAgdGV4dHVyZSgpIGNvbnN0OworfTsKK30KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19DQV9JTkxJTkUgQ0E6Ok1ldGFsTGF5ZXIqIENBOjpN
ZXRhbERyYXdhYmxlOjpsYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE9iamVjdDo6c2VuZE1l
c3NhZ2U8TWV0YWxMYXllcio+KHRoaXMsIF9NVExfUFJJVkFURV9TRUwobGF5ZXIpKTsKK30KKwor
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK19DQV9JTkxJ
TkUgTVRMOjpUZXh0dXJlKiBDQTo6TWV0YWxEcmF3YWJsZTo6dGV4dHVyZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIE9iamVjdDo6c2VuZE1lc3NhZ2U8TVRMOjpUZXh0dXJlKj4odGhpcywgX01UTF9Q
UklWQVRFX1NFTCh0ZXh0dXJlKSk7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwt
Y3BwL1F1YXJ0ekNvcmUvQ0FQcml2YXRlLmhwcCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFs
LWNwcC9RdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODljNjAyNDcwMTUxZTE4
NzMxYTRmM2QzY2ViMWEzYmY3YjJiYWUxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL0NBUHJpdmF0ZS5ocHAKQEAgLTAsMCArMSwx
MDkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8K
Ky8vIFF1YXJ0ekNvcmUvQ0FQcml2YXRlLmhwcAorLy8KKy8vIENvcHlyaWdodCAyMDIwLTIwMjEg
QXBwbGUgSW5jLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisv
LyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjcHJhZ21hIG9uY2UKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJDQURlZmluZXMuaHBwIgorCisjaW5jbHVkZSA8b2Jq
Yy9ydW50aW1lLmg+CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjZGVmaW5lIF9DQV9QUklWQVRFX0NMUyhzeW1ib2wpIChQcml2YXRlOjpDbGFzczo6
c19rIyNzeW1ib2wpCisjZGVmaW5lIF9DQV9QUklWQVRFX1NFTChhY2Nlc3NvcikgKFByaXZhdGU6
OlNlbGVjdG9yOjpzX2sjI2FjY2Vzc29yKQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworI2lmIGRlZmluZWQoQ0FfUFJJVkFURV9JTVBMRU1FTlRBVElP
TikKKworI2RlZmluZSBfQ0FfUFJJVkFURV9WSVNJQklMSVRZIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkoImhpZGRlbiIpKSkKKyNkZWZpbmUgX0NBX1BSSVZBVEVfSU1QT1JUIF9fYXR0cmlidXRl
X18oKHdlYWtfaW1wb3J0KSkKKworI2lmIF9fT0JKQ19fCisjZGVmaW5lIF9DQV9QUklWQVRFX09C
SkNfTE9PS1VQX0NMQVNTKHN5bWJvbCkgKChfX2JyaWRnZSB2b2lkKilvYmpjX2xvb2tVcENsYXNz
KCNzeW1ib2wpKQorI2Vsc2UKKyNkZWZpbmUgX0NBX1BSSVZBVEVfT0JKQ19MT09LVVBfQ0xBU1Mo
c3ltYm9sKSBvYmpjX2xvb2tVcENsYXNzKCNzeW1ib2wpCisjZW5kaWYgLy8gX19PQkpDX18KKwor
I2RlZmluZSBfQ0FfUFJJVkFURV9ERUZfQ0xTKHN5bWJvbCkgdm9pZCogc19rIyNzeW1ib2wgX0NB
X1BSSVZBVEVfVklTSUJJTElUWSA9IF9DQV9QUklWQVRFX09CSkNfTE9PS1VQX0NMQVNTKHN5bWJv
bCk7CisjZGVmaW5lIF9DQV9QUklWQVRFX0RFRl9QUk8oc3ltYm9sKQorI2RlZmluZSBfQ0FfUFJJ
VkFURV9ERUZfU0VMKGFjY2Vzc29yLCBzeW1ib2wpIFNFTCBzX2sjI2FjY2Vzc29yIF9DQV9QUklW
QVRFX1ZJU0lCSUxJVFkgPSBzZWxfcmVnaXN0ZXJOYW1lKHN5bWJvbCk7CisjZGVmaW5lIF9DQV9Q
UklWQVRFX0RFRl9TVFIodHlwZSwgc3ltYm9sKSAgICAgICAgICAgICAgICBcCisgICAgX0NBX0VY
VEVSTiB0eXBlIGNvbnN0IENBIyNzeW1ib2wgX0NBX1BSSVZBVEVfSU1QT1JUOyBcCisgICAgdHlw
ZSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgQ0E6OnN5bWJvbCA9IChudWxscHRyICE9ICZD
QSMjc3ltYm9sKSA/IENBIyNzeW1ib2wgOiBudWxscHRyOworCisjZWxzZQorCisjZGVmaW5lIF9D
QV9QUklWQVRFX0RFRl9DTFMoc3ltYm9sKSBleHRlcm4gdm9pZCogc19rIyNzeW1ib2w7CisjZGVm
aW5lIF9DQV9QUklWQVRFX0RFRl9QUk8oc3ltYm9sKQorI2RlZmluZSBfQ0FfUFJJVkFURV9ERUZf
U0VMKGFjY2Vzc29yLCBzeW1ib2wpIGV4dGVybiBTRUwgc19rIyNhY2Nlc3NvcjsKKyNkZWZpbmUg
X0NBX1BSSVZBVEVfREVGX1NUUih0eXBlLCBzeW1ib2wpCisKKyNlbmRpZiAvLyBDQV9QUklWQVRF
X0lNUExFTUVOVEFUSU9OCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCituYW1lc3BhY2UgQ0EKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFt
ZXNwYWNlIENsYXNzCisgICAgeworCisgICAgfSAvLyBDbGFzcworfSAvLyBQcml2YXRlCit9IC8v
IENBCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitu
YW1lc3BhY2UgQ0EKK3sKK25hbWVzcGFjZSBQcml2YXRlCit7CisgICAgbmFtZXNwYWNlIFByb3Rv
Y29sCisgICAgeworCisgICAgICAgIF9DQV9QUklWQVRFX0RFRl9QUk8oQ0FNZXRhbERyYXdhYmxl
KTsKKworICAgIH0gLy8gUHJvdG9jb2wKK30gLy8gUHJpdmF0ZQorfSAvLyBDQQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIENBCit7
CituYW1lc3BhY2UgUHJpdmF0ZQoreworICAgIG5hbWVzcGFjZSBTZWxlY3RvcgorICAgIHsKKwor
ICAgICAgICBfQ0FfUFJJVkFURV9ERUZfU0VMKGxheWVyLAorICAgICAgICAgICAgImxheWVyIik7
CisgICAgICAgIF9DQV9QUklWQVRFX0RFRl9TRUwodGV4dHVyZSwKKyAgICAgICAgICAgICJ0ZXh0
dXJlIik7CisKKyAgICB9IC8vIENsYXNzCit9IC8vIFByaXZhdGUKK30gLy8gQ0EKKworLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9RdWFydHpDb3JlLmhwcCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9RdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJlMWViNDY3YjE2YmI4MGZkZmQxOTZhYThiOTNiZmVkYzU0NDcxOTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvUXVhcnR6Q29yZS9R
dWFydHpDb3JlLmhwcApAQCAtMCwwICsxLDI3IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vCisvLyBRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwCisv
LworLy8gQ29weXJpZ2h0IDIwMjAtMjAyMSBBcHBsZSBJbmMuCisvLworLy8gTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisv
LyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisvLworLy8g
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLy8gU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisvLworLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNwcmFnbWEgb25jZQorCisvLy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2luY2x1ZGUgIkNBTWV0
YWxEcmF3YWJsZS5ocHAiCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0YWwtY3BwL1JFQURN
RS5tZCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9SRUFETUUubWQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTk1MDcxNTVlYjc3ZmMyNDdmNDYzYjU0MmFmOWJlZjBlZWQ3Mzg1NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL21ldGFsLWNwcC9SRUFETUUubWQKQEAgLTAsMCAr
MSwyNDUgQEAKKyMjIEFib3V0CisKKyoqbWV0YWwtY3BwKiogaXMgYSBsb3cgb3ZlcmhlYWQgYW5k
IGhlYWRlciBvbmx5IEMrKyBpbnRlcmZhY2UgZm9yIE1ldGFsIHRoYXQgaGVscHMgZGV2ZWxvcGVy
cyBhZGQgTWV0YWwgZnVuY3Rpb25hbGl0eSB0byBncmFwaGljcyBhcHBsaWNhdGlvbnMgdGhhdCBh
cmUgd3JpdHRlbiBpbiBDKysgKHN1Y2ggYXMgZ2FtZSBlbmdpbmVzKS4gKiptZXRhbC1jcHAqKiBy
ZW1vdmVzIHRoZSBuZWVkIHRvIGNyZWF0ZSBhIHNoaW0gYW5kIGFsbG93cyBkZXZlbG9wZXJzIHRv
IGNhbGwgTWV0YWwgZnVuY3Rpb25zIGRpcmVjdGx5IGZyb20gYW55d2hlcmUgaW4gdGhlaXIgZXhp
c3RpbmcgQysrIGNvZGUuCisKKworIyMgSGlnaGxpZ2h0cworCistIERyb3AgaW4gQysrIGFsdGVy
bmF0aXZlIGludGVyZmFjZSB0byB0aGUgTWV0YWwgT2JqZWN0aXZlLUMgaGVhZGVycy4KKy0gRGly
ZWN0IG1hcHBpbmcgb2YgYWxsIE1ldGFsIE9iamVjdGl2ZS1DIGNsYXNzZXMsIGNvbnN0YW50cyBh
bmQgZW51bXMgdG8gQysrIGluIHRoZSBNVEwgQysrIG5hbWVzcGFjZS4KKy0gTm8gbWVhc3VyYWJs
ZSBvdmVyaGVhZCBjb21wYXJlZCB0byBjYWxsaW5nIE1ldGFsIE9iamVjdGl2ZS1DIGhlYWRlcnMs
IGR1ZSB0byBpbmxpbmluZyBvZiBDKysgZnVuY3Rpb24gY2FsbHMuCistIE5vIHVzYWdlIG9mIHdy
YXBwZXIgY29udGFpbmVycyB0aGF0IHJlcXVpcmUgYWRkaXRpb25hbCBhbGxvY2F0aW9ucy4KKy0g
UmVxdWlyZXMgQysrMTcgZHVlIHRvIHRoZSB1c2FnZSBvZiBgY29uc3RleHByYCBpbiBgTlM6Ok9i
amVjdGAuCistIElkZW50aWNhbCBoZWFkZXIgZmlsZXMgYW5kIGZ1bmN0aW9uL2NvbnN0YW50L2Vu
dW0gYXZhaWxhYmlsaXR5IGZvciBpT1MsIG1hY09TIGFuZCB0dk9TLgorLSBCYWNrd2FyZHMgY29t
cGF0aWJpbGl0eTogQWxsIGBib29sIE1UTDo6RGV2aWNlOjpzdXBwb3J0cy4uLigpYCBmdW5jdGlv
bnMgY2hlY2sgaWYgdGhlaXIgcmVxdWlyZWQgc2VsZWN0b3JzIGV4aXN0IGFuZCBhdXRvbWF0aWNh
bGx5IHJldHVybiBgZmFsc2VgIGlmIG5vdC4KKy0gU3RyaW5nIChgRXJyb3JEb21haW5gKSBjb25z
dGFudHMgYXJlIHdlYWsgbGlua2VkIGFuZCBhdXRvbWF0aWNhbGx5IHNldCB0byBgbnVsbHB0cmAg
aWYgbm90IGF2YWlsYWJsZS4KKworIyMgTWVtb3J5IEFsbG9jYXRpb24gUG9saWN5CisKKyoqbWV0
YWwtY3BwKiogZm9sbG93cyB0aGUgb2JqZWN0IGFsbG9jYXRpb24gcG9saWNpZXMgb2YgQ29jb2Eg
YW5kIENvY29hIFRvdWNoLiBVbmRlcnN0YW5kaW5nIHRob3NlIHJ1bGVzIGlzIGVzcGVjaWFsbHkg
aW1wb3J0YW50IHdoZW4gdXNpbmcgbWV0YWwtY3BwLCBhcyBDKysgb2JqZWN0cyBhcmUgbm90IGVs
aWdpYmxlIGZvciBhdXRvbWF0aWMgcmVmZXJlbmNlIGNvdW50aW5nIChBUkMpLgorCisqKm1ldGFs
LWNwcCoqIG9iamVjdHMgYXJlIHJlZmVyZW5jZSBjb3VudGVkLiBUbyBoZWxwIGNvbnZleSBhbmQg
bWFuYWdlIG9iamVjdCBsaWZlY3ljbGVzLCB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb25zIGFyZSBv
YnNlcnZlZDoKKworMS4gKllvdSBvd24gYW55IG9iamVjdCByZXR1cm5lZCBieSBtZXRob2RzIHdo
b3NlIG5hbWUgYmVnaW5zIHdpdGgqIGBhbGxvY2AgKiwqIGBuZXdgICosKiBgY29weWAgKiwgb3Iq
IGBtdXRhYmxlQ29weWAuIFRoZSBtZXRob2QgcmV0dXJucyB0aGVzZSBvYmplY3RzIHdpdGggYHJl
dGFpbkNvdW50YCBlcXVhbHMgdG8gYDFgLgorMi4gKllvdSBjYW4gdGFrZSBvd25lcnNoaXAgb2Yg
YW4gb2JqZWN0IGJ5IGNhbGxpbmcgaXRzKiBgYGByZXRhaW4oKWBgYCAqbWV0aG9kKi4gQSByZWNl
aXZlZCBvYmplY3QgaXMgbm9ybWFsbHkgZ3VhcmFudGVlZCB0byByZW1haW4gdmFsaWQgd2l0aGlu
IHRoZSBtZXRob2QgaXQgd2FzIHJlY2VpdmVkIGluLiBZb3UgdXNlIGByZXRhaW5gIGluIHR3byBz
aXR1YXRpb25zOiAoMSkgSW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIGFuIGFjY2Vzc29yIG1ldGhv
ZCAoYSBzZXR0ZXIpIG9yIHRvIHRha2Ugb3duZXJzaGlwIG9mIGFuIG9iamVjdDsgYW5kICgyKSBU
byBwcmV2ZW50IGFuIG9iamVjdCBmcm9tIGJlaW5nIGRlYWxsb2NhdGVkIGFzIGEgc2lkZS1lZmZl
Y3Qgb2Ygc29tZSBvdGhlciBvcGVyYXRpb24uCiszLiAqV2hlbiB5b3Ugbm8gbG9uZ2VyIG5lZWQg
aXQsIHlvdSBtdXN0IHJlbGlucXVpc2ggb3duZXJzaGlwIG9mIGFuIG9iamVjdCB5b3Ugb3duKi4g
WW91IHJlbGlucXVpc2ggb3duZXJzaGlwIGJ5IGNhbGxpbmcgaXRzIGByZWxlYXNlKClgIG9yIGBh
dXRvcmVsZWFzZSgpYCBtZXRob2QuCis0LiAqWW91IG11c3Qgbm90IHJlbGlucXVpc2ggb3duZXJz
aGlwIG9mIGFuIG9iamVjdCB5b3UgZG8gbm90IG93biouCisKK1doZW4gYW4gb2JqZWN0J3MgYHJl
dGFpbkNvdW50YCByZWFjaGVzIGAwYCwgdGhlIG9iamVjdCBpcyBpbW1lZGlhdGVseSBkZWFsbG9j
YXRlZC4gSXQgaXMgaWxsZWdhbCB0byBjYWxsIG1ldGhvZHMgb24gYSBkZWFsbG9jYXRlZCBvYmpl
Y3QgYW5kIGl0IG1heSBsZWFkIHRvIGFuIGFwcGxpY2F0aW9uIGNyYXNoLgorCisjIyMgQXV0b3Jl
bGVhc2VQb29scyBhbmQgT2JqZWN0cworCitTZXZlcmFsIG1ldGhvZHMgdGhhdCBjcmVhdGUgdGVt
cG9yYXJ5IG9iamVjdHMgaW4gKiptZXRhbC1jcHAqKiBhZGQgdGhlbSB0byBhbiBgQXV0b3JlbGVh
c2VQb29sYCB0byBoZWxwIG1hbmFnZSB0aGVpciBsaWZldGltZXMuIEluIHRoZXNlIHNpdHVhdGlv
bnMsIGFmdGVyICoqbWV0YWwtY3BwKiogY3JlYXRlcyB0aGUgb2JqZWN0LCBpdCBhZGRzIGl0IHRv
IGFuIGBBdXRvcmVsZWFzZVBvb2xgLCB3aGljaCB3aWxsIHJlbGVhc2UgaXRzIG9iamVjdHMgd2hl
biB5b3UgcmVsZWFzZSAob3IgZHJhaW4pIGl0LgorCitCeSBhZGRpbmcgdGVtcG9yYXJ5IG9iamVj
dHMgdG8gYW4gQXV0b3JlbGVhc2VQb29sLCB5b3UgZG8gbm90IG5lZWQgdG8gZXhwbGljaXRseSBj
YWxsIGByZWxlYXNlKClgIHRvIGRlYWxsb2NhdGUgdGhlbS4gSW5zdGVhZCwgeW91IGNhbiByZWx5
IG9uIHRoZSBgQXV0b3JlbGVhc2VQb29sYCB0byBpbXBsaWNpdGx5IG1hbmFnZSB0aG9zZSBsaWZl
dGltZXMuCisKK0lmIHlvdSBjcmVhdGUgYW4gb2JqZWN0IHdpdGggYSBtZXRob2QgdGhhdCBkb2Vz
IG5vdCBiZWdpbiB3aXRoIGBhbGxvY2AsIGBuZXdgLCBgY29weWAsIG9yIGBtdXRhYmxlQ29weWAs
IHRoZSBjcmVhdGluZyBtZXRob2QgYWRkcyB0aGUgb2JqZWN0IHRvIGFuIGF1dG9yZWxlYXNlIHBv
b2wuCisKK1RoZSB0eXBpY2FsIHNjb3BlIG9mIGFuIGBBdXRvcmVsZWFzZVBvb2xgIGlzIG9uZSBm
cmFtZSBvZiByZW5kZXJpbmcgZm9yIHRoZSBtYWluIHRocmVhZCBvZiB0aGUgcHJvZ3JhbS4gV2hl
biB0aGUgdGhyZWFkIHJldHVybnMgY29udHJvbCB0byB0aGUgUnVuTG9vcCAoYW4gb2JqZWN0IHJl
c3BvbnNpYmxlIGZvciByZWNlaXZpbmcgaW5wdXQgYW5kIGV2ZW50cyBmcm9tIHRoZSB3aW5kb3dp
bmcgc3lzdGVtKSwgdGhlIHBvb2wgaXMgKmRyYWluZWQqLCByZWxlYXNpbmcgaXRzIG9iamVjdHMu
CisKK1lvdSBjYW4gY3JlYXRlIGFuZCBtYW5hZ2UgYWRkaXRpb25hbCBgQXV0b3JlbGVhc2VQb29s
YHMgYXQgc21hbGxlciBzY29wZXMgdG8gcmVkdWNlIHlvdXIgcHJvZ3JhbSdzIHdvcmtpbmcgc2V0
LCBhbmQgeW91IGFyZSByZXF1aXJlZCB0byBkbyBzbyBmb3IgYW55IGFkZGl0aW9uYWwgdGhyZWFk
cyB5b3VyIHByb2dyYW0gY3JlYXRlcy4KKworSWYgYW4gb2JqZWN0J3MgbGlmZWN5Y2xlIG5lZWRz
IHRvIGJlIGV4dGVuZGVkIGJleW9uZCB0aGUgYEF1dG9yZWxlYXNlUG9vbGAncyBzY29wZSwgeW91
IGNhbiBjbGFpbSBvd25lcnNoaXAgb2YgaXQgKGF2b2lkaW5nIGl0cyByZWxlYXNlIGJleW9uZCB0
aGUgcG9vbCdzIHNjb3BlKSBieSBjYWxsaW5nIGl0cyBgcmV0YWluKClgIG1ldGhvZCBiZWZvcmUg
aXRzIHBvb2wgaXMgZHJhaW5lZC4gSW4gdGhlc2UgY2FzZXMsIHlvdSB3aWxsIGJlIHJlc3BvbnNp
YmxlIGZvciBtYWtpbmcgdGhlIGFwcHJvcHJpYXRlIGByZWxlYXNlKClgIGNhbGwgb24gdGhlIG9i
amVjdCBhZnRlciB5b3Ugbm8gbG9uZ2VyIG5lZWQgaXQuIAorCitZb3UgY2FuIGZpbmQgYSBtb3Jl
LWRldGFpbGVkIGludHJvZHVjdGlvbiB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgcnVsZXMgaGVy
ZTogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvYXJjaGl2ZS9kb2N1bWVudGF0
aW9uL0NvY29hL0NvbmNlcHR1YWwvTWVtb3J5TWdtdC9BcnRpY2xlcy9tbVJ1bGVzLmh0bWwuCisK
K0ZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGFwcGxpY2F0aW9uJ3MgUnVuTG9vcCwgcGxlYXNl
IGZpbmQgaXRzIGRvY3VtZW50YXRpb24gaGVyZTogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29t
L2RvY3VtZW50YXRpb24vZm91bmRhdGlvbi9uc3J1bmxvb3AKKworIyMjIFVzZSBhbmQgZGVidWcg
QXV0b3JlbGVhc2VQb29scworCitXaGVuIHlvdSBjcmVhdGUgYW4gYXV0b3JlbGVhc2VkIG9iamVj
dCBhbmQgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIGBBdXRvcmVsZWFzZVBvb2xgLCB0aGUgb2JqZWN0
IGlzIGxlYWtlZC4KKworVG8gcHJldmVudCB0aGlzLCB5b3Ugbm9ybWFsbHkgY3JlYXRlIGFuIGBB
dXRvcmVsZWFzZVBvb2xgIGluIHlvdXIgcHJvZ3JhbSdzIGBtYWluYCBmdW5jdGlvbiwgYW5kIGlu
IHRoZSBlbnRyeSBmdW5jdGlvbiBmb3IgZXZlcnkgdGhyZWFkIHlvdSBjcmVhdGUuIFlvdSBtYXkg
YWxzbyBjcmVhdGUgYWRkaXRpb25hbCBgQXV0b3JlbGVhc2VQb29sYHMgdG8gYXZvaWQgZ3Jvd2lu
ZyB5b3VyIHByb2dyYW0ncyBoaWdoIG1lbW9yeSB3YXRlcm1hcmsgd2hlbiB5b3UgY3JlYXRlIHNl
dmVyYWwgYXV0b3JlbGVhc2VkIG9iamVjdHMsIHN1Y2ggYXMgd2hlbiByZW5kZXJpbmcuCisKK1Vz
ZSB0aGUgRW52aXJvbm1lbnQgVmFyaWFibGUgYE9CSkNfREVCVUdfTUlTU0lOR19QT09MUz1ZRVNg
IHRvIHByaW50IGEgcnVudGltZSB3YXJuaW5nIHdoZW4gYW4gYXV0b3JlbGVhc2VkIG9iamVjdCBp
cyBsZWFrZWQgYmVjYXVzZSBubyBlbmNsb3NpbmcgYEF1dG9yZWxlYXNlUG9vbGAgaXMgYXZhaWxh
YmxlIGZvciBpdHMgdGhyZWFkLgorCitZb3UgY2FuIGFsc28gcnVuIGBsZWFrcyAtLWF1dG9yZWxl
YXNlUG9vbHNgIG9uIGEgbWVtZ3JhcGggZmlsZSBvciBhIHByb2Nlc3MgSUQgKG1hY09TIG9ubHkp
IHRvIHZpZXcgYSBsaXN0aW5nIG9mIHlvdXIgcHJvZ3JhbSdzIGBBdXRvcmVsZWFzZVBvb2xgcyBh
bmQgYWxsIG9iamVjdHMgdGhleSBjb250YWluLgorCisjIyMgbnVsbHB0cgorCitTaW1pbGFyIHRv
IE9iamVjdGl2ZS1DLCBpdCBpcyBsZWdhbCB0byBjYWxsIGFueSBtZXRob2QsIGluY2x1ZGluZyBg
cmV0YWluKClgIGFuZCBgcmVsZWFzZSgpYCwgb24gYG51bGxwdHJgICJvYmplY3RzIi4gV2hpbGUg
Y2FsbGluZyBtZXRob2RzIG9uIGBudWxscHRyYCBzdGlsbCBkb2VzIGluY3VyIGluIGZ1bmN0aW9u
IGNhbGwgb3ZlcmhlYWQsIHRoZSBlZmZlY3RpdmUgcmVzdWx0IGlzIGVxdWl2YWxlbnQgb2YgYSBO
T1AuCisKK0NvbnZlcnNlbHksIGRvIG5vdCBhc3N1bWUgdGhhdCBiZWNhdXNlIGNhbGxpbmcgYSBt
ZXRob2Qgb24gYSBwb2ludGVyIGRpZCBub3QgcmVzdWx0IGluIGEgY3Jhc2gsIHRoYXQgdGhlIHBv
aW50ZWQtdG8gb2JqZWN0IGlzIHZhbGlkLgorCisjIyBBZGRpbmcgbWV0YWwtY3BwIHRvIGEgUHJv
amVjdAorCitTaW1wbHkgaW5jbHVkZSBgTWV0YWwvTWV0YWwuaHBwYC4gVG8gZW5zdXJlIHRoYXQg
dGhlIHNlbGVjdG9yIGFuZCBjbGFzcyBzeW1ib2xzIGFyZSBsaW5rZWQsIGFkZCB0byBvbmUgb2Yg
eW91ciBjcHAgZmlsZXM6CisKK2BgYGNwcAorI2RlZmluZSBOU19QUklWQVRFX0lNUExFTUVOVEFU
SU9OCisjZGVmaW5lIE1UTF9QUklWQVRFX0lNUExFTUVOVEFUSU9OCisKKyNpbmNsdWRlICJNZXRh
bC9NZXRhbC5ocHAiCitgYGAKKworSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBRdWFydHpDb3JlIHdy
YXBwZXIsIGFkZDoKKworYGBgY3BwCisjZGVmaW5lIENBX1BSSVZBVEVfSU1QTEVNRU5UQVRJT04K
KworI2luY2x1ZGUgIlF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5ocHAiCitgYGAKKworIyMgR2VuZXJh
dGluZyBhIFNpbmdsZSBIZWFkZXIgRmlsZQorCitQdXJlbHkgb3B0aW9uYWw6IFlvdSBjYW4gZ2Vu
ZXJhdGUgYSBzaW5nbGUgaGVhZGVyIGZpbGUgdGhhdCBjb250YWlucyBhbGwgKiptZXRhbC1jcHAq
KiBoZWFkZXJzIHZpYToKKworYGBgc2hlbGwKKy4vU2luZ2xlSGVhZGVyL01ha2VTaW5nbGVIZWFk
ZXIucHkgRm91bmRhdGlvbi9Gb3VuZGF0aW9uLmhwcCBRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBw
IE1ldGFsL01ldGFsLmhwcAorYGBgCisKK0J5IGRlZmF1bHQgdGhlIGdlbmVyYXRlZCBoZWFkZXIg
ZmlsZSB3aWxsIGJlIHdyaXR0ZW4gdG8gYC4vU2luZ2xlSGVhZGVyL01ldGFsLmhwcGAKKworIyMg
RXhhbXBsZXMKKworIyMjIyBDcmVhdGluZyB0aGUgZGV2aWNlCisKKyMjIyMjIyBPYmplY3RpdmUt
QyAod2l0aCBhdXRvbWF0aWMgcmVmZXJlbmNlIGNvdW50aW5nKQorCitgYGBvYmpjCitpZDwgTVRM
RGV2aWNlID4gZGV2aWNlID0gTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpOworCisvLyAu
Li4KK2BgYAorCisjIyMjIyMgT2JqZWN0aXZlLUMKKworYGBgb2JqYworaWQ8IE1UTERldmljZSA+
IGRldmljZSA9IE1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKTsKKworLy8gLi4uCisKK1tk
ZXZpY2UgcmVsZWFzZV07CitgYGAKKworIyMjIyMjIEMrKworCitgYGBjcHAKK01UTDo6RGV2aWNl
KiBwRGV2aWNlID0gTVRMOjpDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCk7CisKKy8vIC4uLgor
CitwRGV2aWNlLT5yZWxlYXNlKCk7CitgYGAKKworIyMjIyBNZXRhbCBmdW5jdGlvbiBjYWxscyBt
YXAgZGlyZWN0bHkgdG8gQysrCisKKyMjIyMjIyBPYmplY3RpdmUtQyAod2l0aCBhdXRvbWF0aWMg
cmVmZXJlbmNlIGNvdW50aW5nKQorCitgYGBvYmpjCitNVExTYW1wbGVyRGVzY3JpcHRvciogc2Ft
cGxlckRlc2NyaXB0b3IgPSBbW01UTFNhbXBsZXJEZXNjcmlwdG9yIGFsbG9jXSBpbml0XTsKKwor
W3NhbXBsZXJEZXNjcmlwdG9yIHNldFNBZGRyZXNzTW9kZTogTVRMU2FtcGxlckFkZHJlc3NNb2Rl
UmVwZWF0XTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRUQWRkcmVzc01vZGU6IE1UTFNhbXBsZXJB
ZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0UkFkZHJlc3NNb2RlOiBN
VExTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXRdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldE1hZ0Zp
bHRlcjogTVRMU2FtcGxlck1pbk1hZ0ZpbHRlckxpbmVhcl07Citbc2FtcGxlckRlc2NyaXB0b3Ig
c2V0TWluRmlsdGVyOiBNVExTYW1wbGVyTWluTWFnRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVz
Y3JpcHRvciBzZXRNaXBGaWx0ZXI6IE1UTFNhbXBsZXJNaXBGaWx0ZXJMaW5lYXJdOworW3NhbXBs
ZXJEZXNjcmlwdG9yIHNldFN1cHBvcnRBcmd1bWVudEJ1ZmZlcnM6IFlFU107CisKK2lkPCBNVExT
YW1wbGVyU3RhdGUgPiBzYW1wbGVyU3RhdGUgPSBbZGV2aWNlIG5ld1NhbXBsZXJTdGF0ZVdpdGhE
ZXNjcmlwdG9yOnNhbXBsZXJEZXNjcmlwdG9yXTsKK2BgYAorCisjIyMjIyMgT2JqZWN0aXZlLUMK
KworYGBgb2JqYworTVRMU2FtcGxlckRlc2NyaXB0b3IqIHNhbXBsZXJEZXNjcmlwdG9yID0gW1tN
VExTYW1wbGVyRGVzY3JpcHRvciBhbGxvY10gaW5pdF07CisKK1tzYW1wbGVyRGVzY3JpcHRvciBz
ZXRTQWRkcmVzc01vZGU6IE1UTFNhbXBsZXJBZGRyZXNzTW9kZVJlcGVhdF07Citbc2FtcGxlckRl
c2NyaXB0b3Igc2V0VEFkZHJlc3NNb2RlOiBNVExTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXRdOwor
W3NhbXBsZXJEZXNjcmlwdG9yIHNldFJBZGRyZXNzTW9kZTogTVRMU2FtcGxlckFkZHJlc3NNb2Rl
UmVwZWF0XTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRNYWdGaWx0ZXI6IE1UTFNhbXBsZXJNaW5N
YWdGaWx0ZXJMaW5lYXJdOworW3NhbXBsZXJEZXNjcmlwdG9yIHNldE1pbkZpbHRlcjogTVRMU2Ft
cGxlck1pbk1hZ0ZpbHRlckxpbmVhcl07Citbc2FtcGxlckRlc2NyaXB0b3Igc2V0TWlwRmlsdGVy
OiBNVExTYW1wbGVyTWlwRmlsdGVyTGluZWFyXTsKK1tzYW1wbGVyRGVzY3JpcHRvciBzZXRTdXBw
b3J0QXJndW1lbnRCdWZmZXJzOiBZRVNdOworCitpZDwgTVRMU2FtcGxlclN0YXRlID4gc2FtcGxl
clN0YXRlID0gW2RldmljZSBuZXdTYW1wbGVyU3RhdGVXaXRoRGVzY3JpcHRvcjpzYW1wbGVyRGVz
Y3JpcHRvcl07CisKK1tzYW1wbGVyRGVzY3JpcHRvciByZWxlYXNlXTsKKworLy8gLi4uCisKK1tz
YW1wbGVyU3RhdGUgcmVsZWFzZV07CitgYGAKKworIyMjIyMjIEMrKworCitgYGBjcHAKK01UTDo6
U2FtcGxlckRlc2NyaXB0b3IqIHBTYW1wbGVyRGVzY3JpcHRvciA9IE1UTDo6U2FtcGxlckRlc2Ny
aXB0b3I6OmFsbG9jKCktPmluaXQoKTsKKworcFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRTQWRkcmVz
c01vZGUoIE1UTDo6U2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0ICk7CitwU2FtcGxlckRlc2NyaXB0
b3ItPnNldFRBZGRyZXNzTW9kZSggTVRMOjpTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXQgKTsKK3BT
YW1wbGVyRGVzY3JpcHRvci0+c2V0UkFkZHJlc3NNb2RlKCBNVEw6OlNhbXBsZXJBZGRyZXNzTW9k
ZVJlcGVhdCApOworcFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRNYWdGaWx0ZXIoIE1UTDo6U2FtcGxl
ck1pbk1hZ0ZpbHRlckxpbmVhciApOworcFNhbXBsZXJEZXNjcmlwdG9yLT5zZXRNaW5GaWx0ZXIo
IE1UTDo6U2FtcGxlck1pbk1hZ0ZpbHRlckxpbmVhciApOworcFNhbXBsZXJEZXNjcmlwdG9yLT5z
ZXRNaXBGaWx0ZXIoIE1UTDo6U2FtcGxlck1pcEZpbHRlckxpbmVhciApOworcFNhbXBsZXJEZXNj
cmlwdG9yLT5zZXRTdXBwb3J0QXJndW1lbnRCdWZmZXJzKCB0cnVlICk7CisKK01UTDo6U2FtcGxl
clN0YXRlKiBwU2FtcGxlclN0YXRlID0gcERldmljZS0+bmV3U2FtcGxlclN0YXRlKCBwU2FtcGxl
ckRlc2NyaXB0b3IgKTsKKworcFNhbXBsZXJEZXNjcmlwdG9yLT5yZWxlYXNlKCk7CisKKy8vIC4u
LgorCitwU2FtcGxlclN0YXRlLT5yZWxlYXNlKCk7CitgYGAKKworIyMjIyBBIHN1YnNldCBvZiBi
aW5kaW5ncyBmb3IgRm91bmRhdGlvbiBjbGFzc2VzIGlzIHByb3ZpZGVkIGZvciBzZWFtbGVzcyBp
bnRlZ3JhdGlvbgorCisjIyMjIyMgT2JqZWN0aXZlLUMgKHdpdGggYXV0b21hdGljIHJlZmVyZW5j
ZSBjb3VudGluZykKKworYGBgb2JqYworTlNBdXRvcmVsZWFzZVBvb2wqICBwb29sICAgPSBbW05T
QXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKK05TU3RyaW5nKiAgICAgICAgICAgc3RyaW5n
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOiAiSGVsbG8gV29ybGQiIGVuY29kaW5nOiBO
U0FTQ0lJU3RyaW5nRW5jb2RpbmddOworCitwcmludGYoICJzdHJpbmcgPSBcIiVzXCJcbiIsIFtz
dHJpbmcgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVNDSUlTdHJpbmdFbmNvZGluZ10gKTsKK2Bg
YAorCisjIyMjIyMgT2JqZWN0aXZlLUMKKworYGBgb2JqYworTlNBdXRvcmVsZWFzZVBvb2wqIHBv
b2wgICA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworTlNTdHJpbmcqICAgICAg
ICAgIHN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzogIkhlbGxvIFdvcmxkIiBl
bmNvZGluZzogTlNBU0NJSVN0cmluZ0VuY29kaW5nXTsKKwkJCQkJCQkJCitwcmludGYoICJzdHJp
bmcgPSBcIiVzXCJcbiIsIFtzdHJpbmcgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6IE5TQVNDSUlTdHJp
bmdFbmNvZGluZ10gKTsKKworW3Bvb2wgcmVsZWFzZV07CitgYGAKKworIyMjIyMjIEMrKworCitg
YGBjcHAKK05TOjpBdXRvcmVsZWFzZVBvb2wqIHBQb29sICAgPSBOUzo6QXV0b3JlbGVhc2VQb29s
OjphbGxvYygpLT5pbml0KCk7CitOUzo6U3RyaW5nKiAgICAgICAgICBwU3RyaW5nID0gTlM6OlN0
cmluZzo6c3RyaW5nKCAiSGVsbG8gV29ybGQiLCBOUzo6QVNDSUlTdHJpbmdFbmNvZGluZyApOwor
CitwcmludGYoICJwU3RyaW5nID0gXCIlc1wiXG4iLCBwU3RyaW5nLT5jU3RyaW5nKCBOUzo6QVND
SUlTdHJpbmdFbmNvZGluZyApICk7CisKK3BQb29sLT5yZWxlYXNlKCk7CitgYGAKKworIyMjIyAg
SW50ZXJvcGVyYWJpbGl0eSB3aXRoIENvcmVGb3VuZGF0aW9uCisKK2BgYGNwcAorTVRMOjpBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRvciogcEdlb0Rlc2NyaXB0
b3IgID0gTVRMOjpBY2NlbGVyYXRpb25TdHJ1Y3R1cmVUcmlhbmdsZUdlb21ldHJ5RGVzY3JpcHRv
cjo6YWxsb2MoKS0+aW5pdCgpOworQ0ZUeXBlUmVmICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvcnNbXSAgID0geyAoIENGVHlwZVJlZiApKCBwR2Vv
RGVzY3JpcHRvciApIH07CitOUzo6QXJyYXkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwR2VvRGVzY3JpcHRvcnMgPSAoIE5TOjpBcnJheSogKSggQ0ZBcnJheUNy
ZWF0ZSgga0NGQWxsb2NhdG9yRGVmYXVsdCwgZGVzY3JpcHRvcnMsIFNJWkVPRl9BUlJBWSggZGVz
Y3JpcHRvcnMpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzICkgKTsKKworLy8gLi4uCisKK3BHZW9E
ZXNjcmlwdG9ycy0+cmVsZWFzZSgpOworYGBgCisKKyMjIyMgQWNjZXNzaW5nIGEgQ0FNZXRhbERy
YXdhYmxlCisKK2BgYG9iamMKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FNZXRhbExheWVyLmg+Cisj
aW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaHBwPgorCisvLyAuLi4KKworQ0FNZXRhbExh
eWVyKiAgICAgICAgIG1ldGFsTGF5ZXIgICAgICAgICA9IC8qIGdldCB5b3VyIGxheWVyIGZyb20g
eW91ciB2aWV3ICovOworaWQ8IENBTWV0YWxEcmF3YWJsZSA+IG1ldGFsRHJhd2FibGUgICAgICA9
IFttZXRhbExheWVyIG5leHREcmF3YWJsZV07CitDQTo6TWV0YWxEcmF3YWJsZSogICAgcE1ldGFs
Q3BwRHJhd2FibGUgID0gKCBfX2JyaWRnZSBDQTo6TWV0YWxEcmF3YWJsZSogKSBtZXRhbERyYXdh
YmxlOworCisvLyAuLi4KK2BgYApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvbWV0
YWwtY3BwL1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5IGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvbWV0YWwtY3BwL1NpbmdsZUhlYWRlci9NYWtlU2luZ2xlSGVhZGVyLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU1OGU0OWVjNzc2YWM5OWY3MDkwNWY2YTUxZDc2OWQwNzUzOWU1NGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9tZXRhbC1jcHAvU2luZ2xlSGVhZGVyL01ha2VT
aW5nbGVIZWFkZXIucHkKQEAgLTAsMCArMSwyNzEgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisKKyMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBTaW5nbGVI
ZWFkZXIvTWFrZVNpbmdsZUhlYWRlci5weQorIworIyBDb3B5cmlnaHQgMjAyMC0yMDIxIEFwcGxl
IEluYy4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisjCisjICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMKKyMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbXBvcnQgYXJn
cGFyc2UKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0
IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCisjLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgSGVhZGVyUHJlZml4KCBvYmplY3Qg
KToKKwlfX3RlbXBsYXRlIAkJCT0gKCAnLy9cbicKKwkJCQkJCQknLy8ge2ZpbGV9XG4nCisJCQkJ
CQkJJy8vXG4nCisJCQkJCQkJJy8vIHttZXRhX2RhdGF9XG4nCisJCQkJCQkJJy8vXG4nCisJCQkJ
CQkJJy8vIENvcHlyaWdodCAyMDIwLTIwMjEgQXBwbGUgSW5jLlxuJworCQkJCQkJCScvL1xuJwor
CQkJCQkJCScvLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTtcbicKKwkJCQkJCQknLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuJworCQkJCQkJCScvLyBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbicKKwkJCQkJCQknLy9cbicK
KwkJCQkJCQknLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MFxuJworCQkJCQkJCScvL1xuJworCQkJCQkJCScvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4nCisJCQkJCQkJJy8v
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsXG4nCisJCQkJCQkJJy8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuJworCQkJCQkJCScvLyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kXG4nCisJCQkJCQkJJy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxu
JworCQkJCQkJCScvL1xuJworCQkJCQkJCSdcbicgKQorCisJX190ZW1wbGF0ZV9jb21taXQJPQkn
QXV0b2dlbmVyYXRlZCBmcm9tIGNvbW1pdCB7Y29tbWl0fS4nCisJX190ZW1wbGF0ZV9kYXRlCQk9
CSdBdXRvZ2VuZXJhdGVkIG9uICVCICVkLCAlWS4nCisKKwlkZWYgX19pbml0X18oIHNlbGYsIGZp
bGUgKToKKwkJc2VsZi5fX2ZpbGUgPSBmaWxlCisKKwlkZWYgX19zdHJfXyggc2VsZiApOgorCQly
ZXR1cm4gc2VsZi5fX3RlbXBsYXRlLmZvcm1hdCggZmlsZSA9IHNlbGYuX19maWxlLCBtZXRhX2Rh
dGEgPSBzZWxmLl9fbWV0YV9kYXRhX3N0cmluZygpICkKKworCWRlZiBfX2dldF9jb21taXRfaGFz
aCggc2VsZiApOgorCQlnaXRfY29tbWl0X2hhc2ggPSBOb25lCisKKwkJdHJ5OgorCQkJZ2l0X2Rp
cgkJCT0gb3MucGF0aC5kaXJuYW1lKCBvcy5wYXRoLnJlYWxwYXRoKCBfX2ZpbGVfXyApICkKKwkJ
CXByb2MgCQkJPSBzdWJwcm9jZXNzLlBvcGVuKCBbICdnaXQnLCAncmV2LXBhcnNlJywgJ0hFQUQn
IF0sIGN3ZCA9IGdpdF9kaXIsIHN0ZG91dCA9IHN1YnByb2Nlc3MuUElQRSwgc3RkZXJyID0gc3Vi
cHJvY2Vzcy5QSVBFICkKKwkJCWdpdF9jb21taXRfaGFzaCA9IHByb2Muc3Rkb3V0LnJlYWQoKS5k
ZWNvZGUoICd1dGYtOCcsICdyZXBsYWNlJyApLnN0cmlwKCkKKwkJZXhjZXB0OgorCQkJbG9nZ2lu
Zy5lcnJvciggJ0ZhaWxlZCB0byBkZXRlcm1pbmUgZ2l0IGNvbW1pdCBoYXNoIScgKQorCQkJcGFz
cworCisJCXJldHVybiBnaXRfY29tbWl0X2hhc2gKKworCWRlZiBfX2dldF9jb21taXRfc3RyaW5n
KCBzZWxmICk6CisJCW1ldGFfZGF0YQkJPSBOb25lCisJCWdpdF9jb21taXRfaGFzaAk9IHNlbGYu
X19nZXRfY29tbWl0X2hhc2goKQorCisJCWlmIGdpdF9jb21taXRfaGFzaDoKKwkJCW1ldGFfZGF0
YSA9IHNlbGYuX190ZW1wbGF0ZV9jb21taXQuZm9ybWF0KCBjb21taXQgPSBnaXRfY29tbWl0X2hh
c2ggKQorCisJCXJldHVybiBtZXRhX2RhdGEKKworCWRlZiBfX2dldF9kYXRlX3N0cmluZyggc2Vs
ZiApOgorCQl0b2RheSA9IGRhdGV0aW1lLmRhdGUudG9kYXkoKQorIAorCQlyZXR1cm4gdG9kYXku
c3RyZnRpbWUoIHNlbGYuX190ZW1wbGF0ZV9kYXRlICkKKworCWRlZiBfX21ldGFfZGF0YV9zdHJp
bmcoIHNlbGYgKToKKwkJbWV0YV9kYXRhID0gc2VsZi5fX2dldF9jb21taXRfc3RyaW5nKCkKKwor
CQlpZiBub3QgbWV0YV9kYXRhOgorCQkJbWV0YV9kYXRhID0gc2VsZi5fX2dldF9kYXRlX3N0cmlu
ZygpCisKKwkJcmV0dXJuIG1ldGFfZGF0YQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgU2luZ2xlSGVhZGVyKCBvYmplY3QgKToKKwlfX3By
YWdtYV9vbmNlID0gJyNwcmFnbWEgb25jZVxuXG4nCisKKwlkZWYgX19pbml0X18oIHNlbGYgKToK
KwkJc2VsZi5fX2hlYWRlcl9wYXRocyA9IGxpc3QoKQorCisJZGVmIF9fc3RyX18oIHNlbGYgKToK
KwkJcmV0dXJuIHNlbGYucHJvY2VzcygpCisKKwlkZWYgYXBwZW5kKCBzZWxmLCBoZWFkZXJfcGF0
aCApOgorCQlzZWxmLl9faGVhZGVyX3BhdGhzLmFwcGVuZCggaGVhZGVyX3BhdGggKQorCisJZGVm
IHByb2Nlc3MoIHNlbGYgKToKKwkJb3V0X2hlYWRlciAJCQkJPSBzZWxmLl9fcHJhZ21hX29uY2UK
KworCQlzZWxmLl9faW5jbHVkZWRfaGVhZGVycwk9IHNldCgpCisJCXNlbGYuX19iYXNlX3BhdGgg
CQk9IGxpc3QoKQorCisJCWZvciBoZWFkZXJfcGF0aCBpbiBzZWxmLl9faGVhZGVyX3BhdGhzOgor
CQkJb3V0X2hlYWRlciArPSBzZWxmLl9fcHJvY2Vzc19oZWFkZXIoIGhlYWRlcl9wYXRoICkKKwor
CQlyZXR1cm4gc2VsZi5fX3N0cmlwX2VtcHR5X2xpbmVzKCBvdXRfaGVhZGVyICkKKworCWRlZiBf
X3JlYWRfaGVhZGVyKCBzZWxmLCBwYXRoICk6CisJCXBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKCBw
YXRoICkKKworCQl0cnk6CisJCQlmID0gb3BlbiggcGF0aCwgJ3InICkKKwkJZXhjZXB0OgorCQkJ
cmFpc2UgUnVudGltZUVycm9yKCAnRmFpbGVkIHRvIG9wZW4gZmlsZSBcIicgKyBwYXRoICsgJ1wi
IGZvciByZWFkIScgKQorCisJCXJldHVybiBmLnJlYWQoKQorCisJZGVmIF9fc3RyaXBfcHJhZ21h
X29uY2UoIHNlbGYsIGhlYWRlciApOgorCQlyZXR1cm4gcmUuc3ViKCAnXFxzKiNwcmFnbWEgb25j
ZVxzKlxcL1xcLy0qXFxuJywgJycsIGhlYWRlciApCisKKwlkZWYgX19zdHJpcF9jb21tZW50cygg
c2VsZiwgaGVhZGVyICk6CisJCXJldHVybiByZS5zdWIoICdeLy8uKlxcbicsICcnLCBoZWFkZXIs
IGZsYWdzID0gcmUuTVVMVElMSU5FICkKKworCWRlZiBfX3N0cmlwX2VtcHR5X2xpbmVzKCBzZWxm
LCBoZWFkZXIgKToKKwkJcmV0dXJuIHJlLnN1YiggJ1xcblxcbisnLCAnXFxuXFxuJywgaGVhZGVy
LCBmbGFncyA9IHJlLk1VTFRJTElORSApCisKKwlkZWYgX19zdWJzdGl0dXRlX2luY2x1ZGVfZGly
ZWN0aXZlKCBzZWxmLCBtYXRjaCApOgorCQloZWFkZXJfcGF0aCA9IG1hdGNoLmdyb3VwKCAnSEVB
REVSX1BBVEgnICkKKworCQlsb2dnaW5nLmluZm8oICdcdFN1YnN0aXR1dGluZyBcIicgKyBoZWFk
ZXJfcGF0aCArICdcIi4uLicgKQorCisJCXJldHVybiBzZWxmLl9fcHJvY2Vzc19oZWFkZXIoIG9z
LnBhdGguam9pbiggc2VsZi5fX2Jhc2VfcGF0aFstMV0sIGhlYWRlcl9wYXRoICkgKQorCisJZGVm
IF9fcHJvY2Vzc19pbmNsdWRlX2RpcmVjdGl2ZXMoIHNlbGYsIGhlYWRlciApOgorCQlyZXR1cm4g
cmUuc3ViKCAnXlxccyojaW5jbHVkZVxcc1xcIig/UDxIRUFERVJfUEFUSD5cXFMqKVxcIicsIHNl
bGYuX19zdWJzdGl0dXRlX2luY2x1ZGVfZGlyZWN0aXZlLCBoZWFkZXIsIGZsYWdzID0gcmUuTVVM
VElMSU5FICkKKworCWRlZiBfX3Byb2Nlc3NfZm91bmRhdGlvbl9kaXJlY3RpdmVzKCBzZWxmLCBo
ZWFkZXIgKToKKwkJaWYgaGVhZGVyLmZpbmQoIiNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaHBwPiIpICE9IC0xOgorCQkJbG9nZ2luZy5pbmZvKCAnXHRTdWJzdGl0dXRpbmcgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5ocHA+Li4uJyApCisJCQlyZXR1cm4gaGVhZGVyLnJlcGxhY2UoIiNp
bmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaHBwPiIsIHNlbGYuX19wcm9jZXNzX2hlYWRl
ciggb3MucGF0aC5qb2luKCBzZWxmLl9fYmFzZV9wYXRoWy0xXSwgIi4uL0ZvdW5kYXRpb24vRm91
bmRhdGlvbi5ocHAiICkgKSApCisJCXJldHVybiBoZWFkZXIKKworCisJZGVmIF9fcHJvY2Vzc19o
ZWFkZXIoIHNlbGYsIGhlYWRlcl9wYXRoICk6CisJCW91dF9oZWFkZXIgPSAnJwkJCisKKwkJaGVh
ZGVyX3BhdGggPSBvcy5wYXRoLnJlYWxwYXRoKCBoZWFkZXJfcGF0aCApCisKKwkJaWYgbm90IGhl
YWRlcl9wYXRoIGluIHNlbGYuX19pbmNsdWRlZF9oZWFkZXJzOgorCQkJbG9nZ2luZy5pbmZvKCAn
UHJvY2Vzc2luZyBcIicgKyBoZWFkZXJfcGF0aCArICdcIi4uLicgKQorCisJCQlzZWxmLl9fYmFz
ZV9wYXRoLmFwcGVuZCggb3MucGF0aC5kaXJuYW1lKCBoZWFkZXJfcGF0aCApICkKKwkJCXNlbGYu
X19pbmNsdWRlZF9oZWFkZXJzLmFkZCggaGVhZGVyX3BhdGggKQorCQkJCisJCQlvdXRfaGVhZGVy
ID0gc2VsZi5fX3JlYWRfaGVhZGVyKCBoZWFkZXJfcGF0aCApCisJCQlvdXRfaGVhZGVyID0gc2Vs
Zi5fX3N0cmlwX3ByYWdtYV9vbmNlKCBvdXRfaGVhZGVyICkKKwkJCW91dF9oZWFkZXIgPSBzZWxm
Ll9fc3RyaXBfY29tbWVudHMoIG91dF9oZWFkZXIgKQorCQkJb3V0X2hlYWRlciA9IHNlbGYuX19w
cm9jZXNzX2luY2x1ZGVfZGlyZWN0aXZlcyggb3V0X2hlYWRlciApCisJCQlvdXRfaGVhZGVyID0g
c2VsZi5fX3Byb2Nlc3NfZm91bmRhdGlvbl9kaXJlY3RpdmVzKCBvdXRfaGVhZGVyICkKKworCQkJ
c2VsZi5fX2Jhc2VfcGF0aC5wb3AoKQorCQllbHNlOgorCQkJbG9nZ2luZy5pbmZvKCAnXHRTa2lw
cGluZyBcIicgKyBoZWFkZXJfcGF0aCArICdcIi4uLicgKQorCisJCXJldHVybiBvdXRfaGVhZGVy
CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitkZWYg
Y3JlYXRlX2FyZ3VtZW50X3BhcnNlcigpOgorCXBhcnNlciAJCQk9IGFyZ3BhcnNlLkFyZ3VtZW50
UGFyc2VyKCkKKwliYXNlX3BhdGggCQk9IG9zLnBhdGguZGlybmFtZSggb3MucGF0aC5yZWFscGF0
aCggX19maWxlX18gKSApCisJb3V0cHV0X3BhdGgJCT0gb3MucGF0aC5qb2luKCBiYXNlX3BhdGgs
ICdNZXRhbC5ocHAnICkKKworCXBhcnNlci5hZGRfYXJndW1lbnQoICctbycsICctLW91dHB1dCcs
ICBkZXN0ID0gJ291dHB1dF9wYXRoJywgbWV0YXZhciA9ICdQQVRIJywgZGVmYXVsdCA9IG91dHB1
dF9wYXRoLCBoZWxwID0gJ091dHB1dCBwYXRoIGZvciB0aGUgc2luZ2xlIGhlYWRlciBmaWxlLicg
KQorCXBhcnNlci5hZGRfYXJndW1lbnQoICctdicsICctLXZlcmJvc2UnLCBhY3Rpb24gPSAnc3Rv
cmVfdHJ1ZScsICBoZWxwID0gJ1Nob3cgdmVyYm9zZSBvdXRwdXQuJyApCisJcGFyc2VyLmFkZF9h
cmd1bWVudCggZGVzdCA9ICdoZWFkZXJfcGF0aHMnLCBtZXRhdmFyID0gJ0hFQURFUl9GSUxFJywg
bmFyZ3M9JysnLCBoZWxwID0gJ0lucHV0IGhlYWRlciBmaWxlLicgKQorCisJcmV0dXJuIHBhcnNl
cgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVm
IHBhcnNlX2FyZ3VtZW50cygpOgorCXBhcnNlcgk9IGNyZWF0ZV9hcmd1bWVudF9wYXJzZXIoKQor
CWFyZ3MJPSBwYXJzZXIucGFyc2VfYXJncygpCisKKwlpZiBhcmdzLnZlcmJvc2U6CisJCWxvZ2dp
bmcuZ2V0TG9nZ2VyKCkuc2V0TGV2ZWwoIGxvZ2dpbmcuSU5GTyApCisJZWxzZToKKwkJbG9nZ2lu
Zy5nZXRMb2dnZXIoKS5zZXRMZXZlbCggbG9nZ2luZy5FUlJPUiApCisKKwlyZXR1cm4gYXJncwor
CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVmIG1h
a2VfaGVhZGVyKCBhcmdzICk6CisJcHJlZml4ID0gSGVhZGVyUHJlZml4KCBvcy5wYXRoLmJhc2Vu
YW1lKCBhcmdzLm91dHB1dF9wYXRoICkgKQorCWhlYWRlciA9IFNpbmdsZUhlYWRlcigpCisJCisJ
Zm9yIGhlYWRlcl9wYXRoIGluIGFyZ3MuaGVhZGVyX3BhdGhzOgorCQloZWFkZXIuYXBwZW5kKCBo
ZWFkZXJfcGF0aCApCisKKwlyZXR1cm4gc3RyKCBwcmVmaXggKSArIHN0ciggaGVhZGVyICkKKwor
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlZiBtYWtl
X2RpciggcGF0aCApOgorCXRyeToKKwkJaWYgbm90IG9zLnBhdGguZXhpc3RzKCBwYXRoICk6CisJ
CQlvcy5tYWtlZGlycyggcGF0aCApCisJZXhjZXB0IG9zLmVycm9yOgorCQlwYXNzCisJZXhjZXB0
OgorCQlyYWlzZQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworZGVmIHdyaXRlX2hlYWRlciggYXJncywgY29udGVudCApOgorCXBhdGggPSBvcy5wYXRo
LnJlYWxwYXRoKCBhcmdzLm91dHB1dF9wYXRoICkKKworCWxvZ2dpbmcuaW5mbyggJ1dyaXRpbmcg
XCInICsgcGF0aCArICdcIi4uLicgKQorCisJbWFrZV9kaXIoIG9zLnBhdGguZGlybmFtZSggcGF0
aCApICkKKworCXRyeToKKwkJZiA9IG9wZW4oIHBhdGgsICd3JyApCisJZXhjZXB0OgorCQlyYWlz
ZSBSdW50aW1lRXJyb3IoICdGYWlsZWQgdG8gb3BlbiBmaWxlIFwiJyArIHBhdGggKyAnXCIgZm9y
IHdyaXRlIScgKQorCisJZi53cml0ZSggY29udGVudCApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
CXJlc3VsdCA9IC0xCisJCisJdHJ5OgorCQlpZiBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkubG93
ZXIoKSA9PSAnYXNjaWknOgorCQkJcmVsb2FkKCBzeXMgKQorCQkJc3lzLnNldGRlZmF1bHRlbmNv
ZGluZyggJ3V0Zi04JyApCisKKwkJYXJncyAJPSBwYXJzZV9hcmd1bWVudHMoKQorCQloZWFkZXIg
CT0gbWFrZV9oZWFkZXIoIGFyZ3MgKQorCisJCXdyaXRlX2hlYWRlciggYXJncywgaGVhZGVyICkK
KworCQlyZXN1bHQgPSAwCisKKwlleGNlcHQgKCBLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhp
dCApOgorCSAJcGFzcworCWV4Y2VwdDoKKwkgCXJhaXNlCisKKwlzeXMuZXhpdCggcmVzdWx0ICkK
KworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjNkYWQ5YmZmYmI4
MjkzZmNhNDY4YTg1N2FkZTllYzI4NTUxNjA1Yi4uNTAwZjExMzM4MGUzODBmMmEwN2FlZmE5M2Y4
NWJlNmMxN2M4NzRkZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTA1LTAyICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW50ZWdyYXRlIE1ldGFs
LWNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
Njk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIE1ldGFs
LWNwcCBmaWxlcyBzaG91bGQgbm90IGJlIHN0eWxlLWNoZWNrZWQuCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisKIDIwMjItMDQtMzAgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwaGlsbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW0dUS10gQnVpbHQgcHJv
ZHVjdCBhcmNoaXZlcyBpbmNsdWRlIG9sZCBsaWJyYXJ5IGZpbGVzCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggZjY1MTA3YTBlOTQyOTI3NjkzOWQyMzRkMjI1MzQ0
ZDA5ZmEwOTVjZS4uZmU2YWE2NzA0NmM4M2NmNmY5MzM1OTBmNTIwMGEwYmRmMWQwMDZjMyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtNDA5LDcgKzQwOSw4IEBA
IF9TS0lQUEVEX0ZJTEVTX1dJVEhfV0FSTklORyA9IFsKICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJj
ZScsICdXZWJLaXQnLCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnd3Bl
JywgJ3dlYmtpdC13ZWItZXh0ZW5zaW9uLmgnKSwKICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScs
ICdXZWJLaXQnLCAnV2ViUHJvY2VzcycsICdJbmplY3RlZEJ1bmRsZScsICdBUEknLCAnd3BlJywg
J0RPTScsICd3ZWJraXRkb20uaCcpLAogICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkdQ
VScsICdXZWJHUFUnLCAnV2ViR1BVLmgnKSwKLSAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdX
ZWJHUFUnLCAnV2ViR1BVJywgJ1dlYkdQVUV4dC5oJyldCisgICAgb3MucGF0aC5qb2luKCdTb3Vy
Y2UnLCAnV2ViR1BVJywgJ1dlYkdQVScsICdXZWJHUFVFeHQuaCcpLAorICAgIG9zLnBhdGguam9p
bignU291cmNlJywgJ1dlYkdQVScsICdXZWJHUFUnLCAnbWV0YWwtY3BwJywgJ1NpbmdsZUhlYWRl
cicsICdNYWtlU2luZ2xlSGVhZGVyLnB5JyldCiAKICMgRmlsZXMgdG8gc2tpcCB0aGF0IGFyZSBt
b3JlIGNvbW1vbiBvciBvYnZpb3VzLgogIwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>